From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek_=3Czbyszek=40in=2Ewaw=2Epl=3E?= To: git-commits@fedoraproject.org Subject: [rpms/fedora-packager] epel10.2: Merge separate "upstream" into this repository Date: Thu, 25 Jun 2026 13:20:43 GMT Message-ID: <178239364323.1.11088921639215501682.rpms-fedora-packager-411d7a36b2b9@fedoraproject.org> List-ID: X-Git-Repo: rpms/fedora-packager X-Git-Branch: epel10.2 X-Git-Rev: 411d7a36b2b9567628feb0a563a0c0295657f3b7 ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvZmVkb3JhLXBhY2thZ2VyCiAgICAgICAgICAgIEJyYW5jaCA6IGVwZWwxMC4y CiAgICAgICAgICAgIENvbW1pdCA6IDQxMWQ3YTM2YjJiOTU2NzYyOGZlYjBhNTYzYTBjMDI5NTY1 N2YzYjcKICAgICAgICAgICAgQXV0aG9yIDogWmJpZ25pZXcgSsSZZHJ6ZWpld3NraS1Tem1layA8 emJ5c3pla0Bpbi53YXcucGw+CiAgICAgICAgICAgIERhdGUgICA6IDIwMjQtMDgtMDlUMTE6MjU6 NDQtMDQ6MDAKICAgICAgICAgICAgU3RhdHMgIDogKzExMTIvLTMwIGluIDE1IGZpbGUocykKICAg ICAgICAgICAgVVJMICAgIDogaHR0cHM6Ly9zcmMuZmVkb3JhcHJvamVjdC5vcmcvcnBtcy9mZWRv cmEtcGFja2FnZXIvYy80MTFkN2EzNmIyYjk1Njc2MjhmZWIwYTU2M2EwYzAyOTU2NTdmM2I3P2Jy YW5jaD1lcGVsMTAuMgoKICAgICAgICAgICAgTG9nOgogICAgICAgICAgICBNZXJnZSBzZXBhcmF0 ZSAidXBzdHJlYW0iIGludG8gdGhpcyByZXBvc2l0b3J5CgpUaGVyZSBpcyBubyBwb2ludCBpbiBo YXZpbmcgYSBzZXBhcmF0ZSB1cHN0cmVhbSwgdGhlcmUgYXJlIG5vIG90aGVyCnVzZXJzIG9mIHRo YXQgcHJvamVjdCBleGNlcHQgZm9yIEZlZG9yYS4gTXkgbW92aW5nIHRoZSBmZXcgZmlsZXMgdGhh dAp3ZSBuZWVkIGhlcmUsIHdlIGNhbiBzaW1wbGlmeSB0aGUgd29ya2Zsb3cgcXVpdGUgYSBiaXQu CgpEaWZmZXJlbmNlIGluIGJ1aWxkIG91dHB1dHM6CiQgcnBtZGlmZiAtaVQgbm9hcmNoL2ZlZG9y YS1wYWNrYWdlci0wLjYuMC43LXsxMSwxMn0uZmM0MS5ub2FyY2gucnBtCnJlbW92ZWQgICAgIFJF UVVJUkVTIGNvbmZpZyhmZWRvcmEtcGFja2FnZXIpID0gMC42LjAuNy0xMS5mYzQxCmFkZGVkICAg ICAgIFJFUVVJUkVTIGNvbmZpZyhmZWRvcmEtcGFja2FnZXIpID0gMC42LjAuNy0xMi5mYzQxCnJl bW92ZWQgICAgIFBST1ZJREVTIGNvbmZpZyhmZWRvcmEtcGFja2FnZXIpID0gMC42LjAuNy0xMS5m YzQxCmFkZGVkICAgICAgIFBST1ZJREVTIGNvbmZpZyhmZWRvcmEtcGFja2FnZXIpID0gMC42LjAu Ny0xMi5mYzQxCnJlbW92ZWQgICAgIFBST1ZJREVTIGZlZG9yYS1wYWNrYWdlciA9IDAuNi4wLjct MTEuZmM0MQphZGRlZCAgICAgICBQUk9WSURFUyBmZWRvcmEtcGFja2FnZXIgPSAwLjYuMC43LTEy LmZjNDEKcmVtb3ZlZCAgICAgUkVRVUlSRVMgcnBtbGliKFBhcnRpYWxIYXJkbGlua1NldHMpIDw9 IDQuMC40LTEKcmVtb3ZlZCAgICAgL3Vzci9zaGFyZS9kb2MvZmVkb3JhLXBhY2thZ2VyCnJlbW92 ZWQgICAgIC91c3Ivc2hhcmUvZG9jL2ZlZG9yYS1wYWNrYWdlci9BVVRIT1JTCnJlbW92ZWQgICAg IC91c3Ivc2hhcmUvZG9jL2ZlZG9yYS1wYWNrYWdlci9DaGFuZ2VMb2cKcmVtb3ZlZCAgICAgL3Vz ci9zaGFyZS9kb2MvZmVkb3JhLXBhY2thZ2VyL1RPRE8KCiQgcnBtZGlmZiAtaVQgbm9hcmNoL2Zl ZG9yYS1wYWNrYWdlci1rZXJiZXJvcy0wLjYuMC43LXsxMSwxMn0uZmM0MS5ub2FyY2gucnBtCnJl bW92ZWQgICAgIFJFUVVJUkVTIGNvbmZpZyhmZWRvcmEtcGFja2FnZXIta2VyYmVyb3MpID0gMC42 LjAuNy0xMS5mYzQxCmFkZGVkICAgICAgIFJFUVVJUkVTIGNvbmZpZyhmZWRvcmEtcGFja2FnZXIt a2VyYmVyb3MpID0gMC42LjAuNy0xMi5mYzQxCnJlbW92ZWQgICAgIFBST1ZJREVTIGNvbmZpZyhm ZWRvcmEtcGFja2FnZXIta2VyYmVyb3MpID0gMC42LjAuNy0xMS5mYzQxCmFkZGVkICAgICAgIFBS T1ZJREVTIGNvbmZpZyhmZWRvcmEtcGFja2FnZXIta2VyYmVyb3MpID0gMC42LjAuNy0xMi5mYzQx CnJlbW92ZWQgICAgIFBST1ZJREVTIGZlZG9yYS1wYWNrYWdlci1rZXJiZXJvcyA9IDAuNi4wLjct MTEuZmM0MQphZGRlZCAgICAgICBQUk9WSURFUyBmZWRvcmEtcGFja2FnZXIta2VyYmVyb3MgPSAw LjYuMC43LTEyLmZjNDEKcmVtb3ZlZCAgICAgL3Vzci9zaGFyZS9saWNlbnNlcy9mZWRvcmEtcGFj a2FnZXIta2VyYmVyb3MKcmVtb3ZlZCAgICAgL3Vzci9zaGFyZS9saWNlbnNlcy9mZWRvcmEtcGFj a2FnZXIta2VyYmVyb3MvQ09QWUlORwphZGRlZCAgICAgICAvdXNyL3NoYXJlL2xpY2Vuc2VzL2Zl ZG9yYS1wYWNrYWdlcgphZGRlZCAgICAgICAvdXNyL3NoYXJlL2xpY2Vuc2VzL2ZlZG9yYS1wYWNr YWdlci9DT1BZSU5HCgpUaGUgdGhyZWUgZG9jIGZpbGVzIGFyZSBkcm9wcGVkIGJlY2F1c2UgdGhl eSBhcmUgY29tcGxldGVseSBvdXRkYXRlZAphbmQgaW5jb21wbGV0ZSBhbmQgaXQgZG9lc24ndCBt YWtlIHNlbnNlIHRvIGluc3RhbGwgdGhlbS4KVGhlIENPUFlJTkcgZmlsZXMgaXMgc2hhcmVkIGJl Y2F1c2UgdGhhdCdzIHNpbXBsZXIuCgotLS0KZGlmZiAtLWdpdCBhL0NPUFlJTkcgYi9DT1BZSU5H Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk0YTllZDAKLS0tIC9kZXYvbnVs bAorKysgYi9DT1BZSU5HCkBAIC0wLDAgKzEsNjc0IEBACisgICAgICAgICAgICAgICAgICAgIEdO VSBHRU5FUkFMIFBVQkxJQyBMSUNFTlNFCisgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb24g MywgMjkgSnVuZSAyMDA3CisKKyBDb3B5cmlnaHQgKEMpIDIwMDcgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBJbmMuIDxodHRwOi8vZnNmLm9yZy8+CisgRXZlcnlvbmUgaXMgcGVybWl0dGVkIHRv IGNvcHkgYW5kIGRpc3RyaWJ1dGUgdmVyYmF0aW0gY29waWVzCisgb2YgdGhpcyBsaWNlbnNlIGRv Y3VtZW50LCBidXQgY2hhbmdpbmcgaXQgaXMgbm90IGFsbG93ZWQuCisKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICBQcmVhbWJsZQorCisgIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBpcyBhIGZyZWUsIGNvcHlsZWZ0IGxpY2Vuc2UgZm9yCitzb2Z0d2FyZSBhbmQgb3RoZXIga2lu ZHMgb2Ygd29ya3MuCisKKyAgVGhlIGxpY2Vuc2VzIGZvciBtb3N0IHNvZnR3YXJlIGFuZCBvdGhl ciBwcmFjdGljYWwgd29ya3MgYXJlIGRlc2lnbmVkCit0byB0YWtlIGF3YXkgeW91ciBmcmVlZG9t IHRvIHNoYXJlIGFuZCBjaGFuZ2UgdGhlIHdvcmtzLiAgQnkgY29udHJhc3QsCit0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgaXMgaW50ZW5kZWQgdG8gZ3VhcmFudGVlIHlvdXIgZnJlZWRv bSB0bworc2hhcmUgYW5kIGNoYW5nZSBhbGwgdmVyc2lvbnMgb2YgYSBwcm9ncmFtLS10byBtYWtl IHN1cmUgaXQgcmVtYWlucyBmcmVlCitzb2Z0d2FyZSBmb3IgYWxsIGl0cyB1c2Vycy4gIFdlLCB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB1c2UgdGhlCitHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBmb3IgbW9zdCBvZiBvdXIgc29mdHdhcmU7IGl0IGFwcGxpZXMgYWxzbyB0bworYW55 IG90aGVyIHdvcmsgcmVsZWFzZWQgdGhpcyB3YXkgYnkgaXRzIGF1dGhvcnMuICBZb3UgY2FuIGFw cGx5IGl0IHRvCit5b3VyIHByb2dyYW1zLCB0b28uCisKKyAgV2hlbiB3ZSBzcGVhayBvZiBmcmVl IHNvZnR3YXJlLCB3ZSBhcmUgcmVmZXJyaW5nIHRvIGZyZWVkb20sIG5vdAorcHJpY2UuICBPdXIg R2VuZXJhbCBQdWJsaWMgTGljZW5zZXMgYXJlIGRlc2lnbmVkIHRvIG1ha2Ugc3VyZSB0aGF0IHlv dQoraGF2ZSB0aGUgZnJlZWRvbSB0byBkaXN0cmlidXRlIGNvcGllcyBvZiBmcmVlIHNvZnR3YXJl IChhbmQgY2hhcmdlIGZvcgordGhlbSBpZiB5b3Ugd2lzaCksIHRoYXQgeW91IHJlY2VpdmUgc291 cmNlIGNvZGUgb3IgY2FuIGdldCBpdCBpZiB5b3UKK3dhbnQgaXQsIHRoYXQgeW91IGNhbiBjaGFu Z2UgdGhlIHNvZnR3YXJlIG9yIHVzZSBwaWVjZXMgb2YgaXQgaW4gbmV3CitmcmVlIHByb2dyYW1z LCBhbmQgdGhhdCB5b3Uga25vdyB5b3UgY2FuIGRvIHRoZXNlIHRoaW5ncy4KKworICBUbyBwcm90 ZWN0IHlvdXIgcmlnaHRzLCB3ZSBuZWVkIHRvIHByZXZlbnQgb3RoZXJzIGZyb20gZGVueWluZyB5 b3UKK3RoZXNlIHJpZ2h0cyBvciBhc2tpbmcgeW91IHRvIHN1cnJlbmRlciB0aGUgcmlnaHRzLiAg VGhlcmVmb3JlLCB5b3UgaGF2ZQorY2VydGFpbiByZXNwb25zaWJpbGl0aWVzIGlmIHlvdSBkaXN0 cmlidXRlIGNvcGllcyBvZiB0aGUgc29mdHdhcmUsIG9yIGlmCit5b3UgbW9kaWZ5IGl0OiByZXNw b25zaWJpbGl0aWVzIHRvIHJlc3BlY3QgdGhlIGZyZWVkb20gb2Ygb3RoZXJzLgorCisgIEZvciBl eGFtcGxlLCBpZiB5b3UgZGlzdHJpYnV0ZSBjb3BpZXMgb2Ygc3VjaCBhIHByb2dyYW0sIHdoZXRo ZXIKK2dyYXRpcyBvciBmb3IgYSBmZWUsIHlvdSBtdXN0IHBhc3Mgb24gdG8gdGhlIHJlY2lwaWVu dHMgdGhlIHNhbWUKK2ZyZWVkb21zIHRoYXQgeW91IHJlY2VpdmVkLiAgWW91IG11c3QgbWFrZSBz dXJlIHRoYXQgdGhleSwgdG9vLCByZWNlaXZlCitvciBjYW4gZ2V0IHRoZSBzb3VyY2UgY29kZS4g IEFuZCB5b3UgbXVzdCBzaG93IHRoZW0gdGhlc2UgdGVybXMgc28gdGhleQora25vdyB0aGVpciBy aWdodHMuCisKKyAgRGV2ZWxvcGVycyB0aGF0IHVzZSB0aGUgR05VIEdQTCBwcm90ZWN0IHlvdXIg cmlnaHRzIHdpdGggdHdvIHN0ZXBzOgorKDEpIGFzc2VydCBjb3B5cmlnaHQgb24gdGhlIHNvZnR3 YXJlLCBhbmQgKDIpIG9mZmVyIHlvdSB0aGlzIExpY2Vuc2UKK2dpdmluZyB5b3UgbGVnYWwgcGVy bWlzc2lvbiB0byBjb3B5LCBkaXN0cmlidXRlIGFuZC9vciBtb2RpZnkgaXQuCisKKyAgRm9yIHRo ZSBkZXZlbG9wZXJzJyBhbmQgYXV0aG9ycycgcHJvdGVjdGlvbiwgdGhlIEdQTCBjbGVhcmx5IGV4 cGxhaW5zCit0aGF0IHRoZXJlIGlzIG5vIHdhcnJhbnR5IGZvciB0aGlzIGZyZWUgc29mdHdhcmUu ICBGb3IgYm90aCB1c2VycycgYW5kCithdXRob3JzJyBzYWtlLCB0aGUgR1BMIHJlcXVpcmVzIHRo YXQgbW9kaWZpZWQgdmVyc2lvbnMgYmUgbWFya2VkIGFzCitjaGFuZ2VkLCBzbyB0aGF0IHRoZWly IHByb2JsZW1zIHdpbGwgbm90IGJlIGF0dHJpYnV0ZWQgZXJyb25lb3VzbHkgdG8KK2F1dGhvcnMg b2YgcHJldmlvdXMgdmVyc2lvbnMuCisKKyAgU29tZSBkZXZpY2VzIGFyZSBkZXNpZ25lZCB0byBk ZW55IHVzZXJzIGFjY2VzcyB0byBpbnN0YWxsIG9yIHJ1bgorbW9kaWZpZWQgdmVyc2lvbnMgb2Yg dGhlIHNvZnR3YXJlIGluc2lkZSB0aGVtLCBhbHRob3VnaCB0aGUgbWFudWZhY3R1cmVyCitjYW4g ZG8gc28uICBUaGlzIGlzIGZ1bmRhbWVudGFsbHkgaW5jb21wYXRpYmxlIHdpdGggdGhlIGFpbSBv ZgorcHJvdGVjdGluZyB1c2VycycgZnJlZWRvbSB0byBjaGFuZ2UgdGhlIHNvZnR3YXJlLiAgVGhl IHN5c3RlbWF0aWMKK3BhdHRlcm4gb2Ygc3VjaCBhYnVzZSBvY2N1cnMgaW4gdGhlIGFyZWEgb2Yg cHJvZHVjdHMgZm9yIGluZGl2aWR1YWxzIHRvCit1c2UsIHdoaWNoIGlzIHByZWNpc2VseSB3aGVy ZSBpdCBpcyBtb3N0IHVuYWNjZXB0YWJsZS4gIFRoZXJlZm9yZSwgd2UKK2hhdmUgZGVzaWduZWQg dGhpcyB2ZXJzaW9uIG9mIHRoZSBHUEwgdG8gcHJvaGliaXQgdGhlIHByYWN0aWNlIGZvciB0aG9z ZQorcHJvZHVjdHMuICBJZiBzdWNoIHByb2JsZW1zIGFyaXNlIHN1YnN0YW50aWFsbHkgaW4gb3Ro ZXIgZG9tYWlucywgd2UKK3N0YW5kIHJlYWR5IHRvIGV4dGVuZCB0aGlzIHByb3Zpc2lvbiB0byB0 aG9zZSBkb21haW5zIGluIGZ1dHVyZSB2ZXJzaW9ucworb2YgdGhlIEdQTCwgYXMgbmVlZGVkIHRv IHByb3RlY3QgdGhlIGZyZWVkb20gb2YgdXNlcnMuCisKKyAgRmluYWxseSwgZXZlcnkgcHJvZ3Jh bSBpcyB0aHJlYXRlbmVkIGNvbnN0YW50bHkgYnkgc29mdHdhcmUgcGF0ZW50cy4KK1N0YXRlcyBz aG91bGQgbm90IGFsbG93IHBhdGVudHMgdG8gcmVzdHJpY3QgZGV2ZWxvcG1lbnQgYW5kIHVzZSBv Zgorc29mdHdhcmUgb24gZ2VuZXJhbC1wdXJwb3NlIGNvbXB1dGVycywgYnV0IGluIHRob3NlIHRo YXQgZG8sIHdlIHdpc2ggdG8KK2F2b2lkIHRoZSBzcGVjaWFsIGRhbmdlciB0aGF0IHBhdGVudHMg YXBwbGllZCB0byBhIGZyZWUgcHJvZ3JhbSBjb3VsZAorbWFrZSBpdCBlZmZlY3RpdmVseSBwcm9w cmlldGFyeS4gIFRvIHByZXZlbnQgdGhpcywgdGhlIEdQTCBhc3N1cmVzIHRoYXQKK3BhdGVudHMg Y2Fubm90IGJlIHVzZWQgdG8gcmVuZGVyIHRoZSBwcm9ncmFtIG5vbi1mcmVlLgorCisgIFRoZSBw cmVjaXNlIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvciBjb3B5aW5nLCBkaXN0cmlidXRpb24gYW5k Cittb2RpZmljYXRpb24gZm9sbG93LgorCisgICAgICAgICAgICAgICAgICAgICAgIFRFUk1TIEFO RCBDT05ESVRJT05TCisKKyAgMC4gRGVmaW5pdGlvbnMuCisKKyAgIlRoaXMgTGljZW5zZSIgcmVm ZXJzIHRvIHZlcnNpb24gMyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuCisKKyAg IkNvcHlyaWdodCIgYWxzbyBtZWFucyBjb3B5cmlnaHQtbGlrZSBsYXdzIHRoYXQgYXBwbHkgdG8g b3RoZXIga2luZHMgb2YKK3dvcmtzLCBzdWNoIGFzIHNlbWljb25kdWN0b3IgbWFza3MuCisKKyAg IlRoZSBQcm9ncmFtIiByZWZlcnMgdG8gYW55IGNvcHlyaWdodGFibGUgd29yayBsaWNlbnNlZCB1 bmRlciB0aGlzCitMaWNlbnNlLiAgRWFjaCBsaWNlbnNlZSBpcyBhZGRyZXNzZWQgYXMgInlvdSIu ICAiTGljZW5zZWVzIiBhbmQKKyJyZWNpcGllbnRzIiBtYXkgYmUgaW5kaXZpZHVhbHMgb3Igb3Jn YW5pemF0aW9ucy4KKworICBUbyAibW9kaWZ5IiBhIHdvcmsgbWVhbnMgdG8gY29weSBmcm9tIG9y IGFkYXB0IGFsbCBvciBwYXJ0IG9mIHRoZSB3b3JrCitpbiBhIGZhc2hpb24gcmVxdWlyaW5nIGNv cHlyaWdodCBwZXJtaXNzaW9uLCBvdGhlciB0aGFuIHRoZSBtYWtpbmcgb2YgYW4KK2V4YWN0IGNv cHkuICBUaGUgcmVzdWx0aW5nIHdvcmsgaXMgY2FsbGVkIGEgIm1vZGlmaWVkIHZlcnNpb24iIG9m IHRoZQorZWFybGllciB3b3JrIG9yIGEgd29yayAiYmFzZWQgb24iIHRoZSBlYXJsaWVyIHdvcmsu CisKKyAgQSAiY292ZXJlZCB3b3JrIiBtZWFucyBlaXRoZXIgdGhlIHVubW9kaWZpZWQgUHJvZ3Jh bSBvciBhIHdvcmsgYmFzZWQKK29uIHRoZSBQcm9ncmFtLgorCisgIFRvICJwcm9wYWdhdGUiIGEg d29yayBtZWFucyB0byBkbyBhbnl0aGluZyB3aXRoIGl0IHRoYXQsIHdpdGhvdXQKK3Blcm1pc3Np b24sIHdvdWxkIG1ha2UgeW91IGRpcmVjdGx5IG9yIHNlY29uZGFyaWx5IGxpYWJsZSBmb3IKK2lu ZnJpbmdlbWVudCB1bmRlciBhcHBsaWNhYmxlIGNvcHlyaWdodCBsYXcsIGV4Y2VwdCBleGVjdXRp bmcgaXQgb24gYQorY29tcHV0ZXIgb3IgbW9kaWZ5aW5nIGEgcHJpdmF0ZSBjb3B5LiAgUHJvcGFn YXRpb24gaW5jbHVkZXMgY29weWluZywKK2Rpc3RyaWJ1dGlvbiAod2l0aCBvciB3aXRob3V0IG1v ZGlmaWNhdGlvbiksIG1ha2luZyBhdmFpbGFibGUgdG8gdGhlCitwdWJsaWMsIGFuZCBpbiBzb21l IGNvdW50cmllcyBvdGhlciBhY3Rpdml0aWVzIGFzIHdlbGwuCisKKyAgVG8gImNvbnZleSIgYSB3 b3JrIG1lYW5zIGFueSBraW5kIG9mIHByb3BhZ2F0aW9uIHRoYXQgZW5hYmxlcyBvdGhlcgorcGFy dGllcyB0byBtYWtlIG9yIHJlY2VpdmUgY29waWVzLiAgTWVyZSBpbnRlcmFjdGlvbiB3aXRoIGEg dXNlciB0aHJvdWdoCithIGNvbXB1dGVyIG5ldHdvcmssIHdpdGggbm8gdHJhbnNmZXIgb2YgYSBj b3B5LCBpcyBub3QgY29udmV5aW5nLgorCisgIEFuIGludGVyYWN0aXZlIHVzZXIgaW50ZXJmYWNl IGRpc3BsYXlzICJBcHByb3ByaWF0ZSBMZWdhbCBOb3RpY2VzIgordG8gdGhlIGV4dGVudCB0aGF0 IGl0IGluY2x1ZGVzIGEgY29udmVuaWVudCBhbmQgcHJvbWluZW50bHkgdmlzaWJsZQorZmVhdHVy ZSB0aGF0ICgxKSBkaXNwbGF5cyBhbiBhcHByb3ByaWF0ZSBjb3B5cmlnaHQgbm90aWNlLCBhbmQg KDIpCit0ZWxscyB0aGUgdXNlciB0aGF0IHRoZXJlIGlzIG5vIHdhcnJhbnR5IGZvciB0aGUgd29y ayAoZXhjZXB0IHRvIHRoZQorZXh0ZW50IHRoYXQgd2FycmFudGllcyBhcmUgcHJvdmlkZWQpLCB0 aGF0IGxpY2Vuc2VlcyBtYXkgY29udmV5IHRoZQord29yayB1bmRlciB0aGlzIExpY2Vuc2UsIGFu ZCBob3cgdG8gdmlldyBhIGNvcHkgb2YgdGhpcyBMaWNlbnNlLiAgSWYKK3RoZSBpbnRlcmZhY2Ug cHJlc2VudHMgYSBsaXN0IG9mIHVzZXIgY29tbWFuZHMgb3Igb3B0aW9ucywgc3VjaCBhcyBhCitt ZW51LCBhIHByb21pbmVudCBpdGVtIGluIHRoZSBsaXN0IG1lZXRzIHRoaXMgY3JpdGVyaW9uLgor CisgIDEuIFNvdXJjZSBDb2RlLgorCisgIFRoZSAic291cmNlIGNvZGUiIGZvciBhIHdvcmsgbWVh bnMgdGhlIHByZWZlcnJlZCBmb3JtIG9mIHRoZSB3b3JrCitmb3IgbWFraW5nIG1vZGlmaWNhdGlv bnMgdG8gaXQuICAiT2JqZWN0IGNvZGUiIG1lYW5zIGFueSBub24tc291cmNlCitmb3JtIG9mIGEg d29yay4KKworICBBICJTdGFuZGFyZCBJbnRlcmZhY2UiIG1lYW5zIGFuIGludGVyZmFjZSB0aGF0 IGVpdGhlciBpcyBhbiBvZmZpY2lhbAorc3RhbmRhcmQgZGVmaW5lZCBieSBhIHJlY29nbml6ZWQg c3RhbmRhcmRzIGJvZHksIG9yLCBpbiB0aGUgY2FzZSBvZgoraW50ZXJmYWNlcyBzcGVjaWZpZWQg Zm9yIGEgcGFydGljdWxhciBwcm9ncmFtbWluZyBsYW5ndWFnZSwgb25lIHRoYXQKK2lzIHdpZGVs eSB1c2VkIGFtb25nIGRldmVsb3BlcnMgd29ya2luZyBpbiB0aGF0IGxhbmd1YWdlLgorCisgIFRo ZSAiU3lzdGVtIExpYnJhcmllcyIgb2YgYW4gZXhlY3V0YWJsZSB3b3JrIGluY2x1ZGUgYW55dGhp bmcsIG90aGVyCit0aGFuIHRoZSB3b3JrIGFzIGEgd2hvbGUsIHRoYXQgKGEpIGlzIGluY2x1ZGVk IGluIHRoZSBub3JtYWwgZm9ybSBvZgorcGFja2FnaW5nIGEgTWFqb3IgQ29tcG9uZW50LCBidXQg d2hpY2ggaXMgbm90IHBhcnQgb2YgdGhhdCBNYWpvcgorQ29tcG9uZW50LCBhbmQgKGIpIHNlcnZl cyBvbmx5IHRvIGVuYWJsZSB1c2Ugb2YgdGhlIHdvcmsgd2l0aCB0aGF0CitNYWpvciBDb21wb25l bnQsIG9yIHRvIGltcGxlbWVudCBhIFN0YW5kYXJkIEludGVyZmFjZSBmb3Igd2hpY2ggYW4KK2lt cGxlbWVudGF0aW9uIGlzIGF2YWlsYWJsZSB0byB0aGUgcHVibGljIGluIHNvdXJjZSBjb2RlIGZv cm0uICBBCisiTWFqb3IgQ29tcG9uZW50IiwgaW4gdGhpcyBjb250ZXh0LCBtZWFucyBhIG1ham9y IGVzc2VudGlhbCBjb21wb25lbnQKKyhrZXJuZWwsIHdpbmRvdyBzeXN0ZW0sIGFuZCBzbyBvbikg b2YgdGhlIHNwZWNpZmljIG9wZXJhdGluZyBzeXN0ZW0KKyhpZiBhbnkpIG9uIHdoaWNoIHRoZSBl eGVjdXRhYmxlIHdvcmsgcnVucywgb3IgYSBjb21waWxlciB1c2VkIHRvCitwcm9kdWNlIHRoZSB3 b3JrLCBvciBhbiBvYmplY3QgY29kZSBpbnRlcnByZXRlciB1c2VkIHRvIHJ1biBpdC4KKworICBU aGUgIkNvcnJlc3BvbmRpbmcgU291cmNlIiBmb3IgYSB3b3JrIGluIG9iamVjdCBjb2RlIGZvcm0g bWVhbnMgYWxsCit0aGUgc291cmNlIGNvZGUgbmVlZGVkIHRvIGdlbmVyYXRlLCBpbnN0YWxsLCBh bmQgKGZvciBhbiBleGVjdXRhYmxlCit3b3JrKSBydW4gdGhlIG9iamVjdCBjb2RlIGFuZCB0byBt b2RpZnkgdGhlIHdvcmssIGluY2x1ZGluZyBzY3JpcHRzIHRvCitjb250cm9sIHRob3NlIGFjdGl2 aXRpZXMuICBIb3dldmVyLCBpdCBkb2VzIG5vdCBpbmNsdWRlIHRoZSB3b3JrJ3MKK1N5c3RlbSBM aWJyYXJpZXMsIG9yIGdlbmVyYWwtcHVycG9zZSB0b29scyBvciBnZW5lcmFsbHkgYXZhaWxhYmxl IGZyZWUKK3Byb2dyYW1zIHdoaWNoIGFyZSB1c2VkIHVubW9kaWZpZWQgaW4gcGVyZm9ybWluZyB0 aG9zZSBhY3Rpdml0aWVzIGJ1dAord2hpY2ggYXJlIG5vdCBwYXJ0IG9mIHRoZSB3b3JrLiAgRm9y IGV4YW1wbGUsIENvcnJlc3BvbmRpbmcgU291cmNlCitpbmNsdWRlcyBpbnRlcmZhY2UgZGVmaW5p dGlvbiBmaWxlcyBhc3NvY2lhdGVkIHdpdGggc291cmNlIGZpbGVzIGZvcgordGhlIHdvcmssIGFu ZCB0aGUgc291cmNlIGNvZGUgZm9yIHNoYXJlZCBsaWJyYXJpZXMgYW5kIGR5bmFtaWNhbGx5Cits aW5rZWQgc3VicHJvZ3JhbXMgdGhhdCB0aGUgd29yayBpcyBzcGVjaWZpY2FsbHkgZGVzaWduZWQg dG8gcmVxdWlyZSwKK3N1Y2ggYXMgYnkgaW50aW1hdGUgZGF0YSBjb21tdW5pY2F0aW9uIG9yIGNv bnRyb2wgZmxvdyBiZXR3ZWVuIHRob3NlCitzdWJwcm9ncmFtcyBhbmQgb3RoZXIgcGFydHMgb2Yg dGhlIHdvcmsuCisKKyAgVGhlIENvcnJlc3BvbmRpbmcgU291cmNlIG5lZWQgbm90IGluY2x1ZGUg YW55dGhpbmcgdGhhdCB1c2VycworY2FuIHJlZ2VuZXJhdGUgYXV0b21hdGljYWxseSBmcm9tIG90 aGVyIHBhcnRzIG9mIHRoZSBDb3JyZXNwb25kaW5nCitTb3VyY2UuCisKKyAgVGhlIENvcnJlc3Bv bmRpbmcgU291cmNlIGZvciBhIHdvcmsgaW4gc291cmNlIGNvZGUgZm9ybSBpcyB0aGF0CitzYW1l IHdvcmsuCisKKyAgMi4gQmFzaWMgUGVybWlzc2lvbnMuCisKKyAgQWxsIHJpZ2h0cyBncmFudGVk IHVuZGVyIHRoaXMgTGljZW5zZSBhcmUgZ3JhbnRlZCBmb3IgdGhlIHRlcm0gb2YKK2NvcHlyaWdo dCBvbiB0aGUgUHJvZ3JhbSwgYW5kIGFyZSBpcnJldm9jYWJsZSBwcm92aWRlZCB0aGUgc3RhdGVk Citjb25kaXRpb25zIGFyZSBtZXQuICBUaGlzIExpY2Vuc2UgZXhwbGljaXRseSBhZmZpcm1zIHlv dXIgdW5saW1pdGVkCitwZXJtaXNzaW9uIHRvIHJ1biB0aGUgdW5tb2RpZmllZCBQcm9ncmFtLiAg VGhlIG91dHB1dCBmcm9tIHJ1bm5pbmcgYQorY292ZXJlZCB3b3JrIGlzIGNvdmVyZWQgYnkgdGhp cyBMaWNlbnNlIG9ubHkgaWYgdGhlIG91dHB1dCwgZ2l2ZW4gaXRzCitjb250ZW50LCBjb25zdGl0 dXRlcyBhIGNvdmVyZWQgd29yay4gIFRoaXMgTGljZW5zZSBhY2tub3dsZWRnZXMgeW91cgorcmln aHRzIG9mIGZhaXIgdXNlIG9yIG90aGVyIGVxdWl2YWxlbnQsIGFzIHByb3ZpZGVkIGJ5IGNvcHly aWdodCBsYXcuCisKKyAgWW91IG1heSBtYWtlLCBydW4gYW5kIHByb3BhZ2F0ZSBjb3ZlcmVkIHdv cmtzIHRoYXQgeW91IGRvIG5vdAorY29udmV5LCB3aXRob3V0IGNvbmRpdGlvbnMgc28gbG9uZyBh cyB5b3VyIGxpY2Vuc2Ugb3RoZXJ3aXNlIHJlbWFpbnMKK2luIGZvcmNlLiAgWW91IG1heSBjb252 ZXkgY292ZXJlZCB3b3JrcyB0byBvdGhlcnMgZm9yIHRoZSBzb2xlIHB1cnBvc2UKK29mIGhhdmlu ZyB0aGVtIG1ha2UgbW9kaWZpY2F0aW9ucyBleGNsdXNpdmVseSBmb3IgeW91LCBvciBwcm92aWRl IHlvdQord2l0aCBmYWNpbGl0aWVzIGZvciBydW5uaW5nIHRob3NlIHdvcmtzLCBwcm92aWRlZCB0 aGF0IHlvdSBjb21wbHkgd2l0aAordGhlIHRlcm1zIG9mIHRoaXMgTGljZW5zZSBpbiBjb252ZXlp bmcgYWxsIG1hdGVyaWFsIGZvciB3aGljaCB5b3UgZG8KK25vdCBjb250cm9sIGNvcHlyaWdodC4g IFRob3NlIHRodXMgbWFraW5nIG9yIHJ1bm5pbmcgdGhlIGNvdmVyZWQgd29ya3MKK2ZvciB5b3Ug bXVzdCBkbyBzbyBleGNsdXNpdmVseSBvbiB5b3VyIGJlaGFsZiwgdW5kZXIgeW91ciBkaXJlY3Rp b24KK2FuZCBjb250cm9sLCBvbiB0ZXJtcyB0aGF0IHByb2hpYml0IHRoZW0gZnJvbSBtYWtpbmcg YW55IGNvcGllcyBvZgoreW91ciBjb3B5cmlnaHRlZCBtYXRlcmlhbCBvdXRzaWRlIHRoZWlyIHJl bGF0aW9uc2hpcCB3aXRoIHlvdS4KKworICBDb252ZXlpbmcgdW5kZXIgYW55IG90aGVyIGNpcmN1 bXN0YW5jZXMgaXMgcGVybWl0dGVkIHNvbGVseSB1bmRlcgordGhlIGNvbmRpdGlvbnMgc3RhdGVk IGJlbG93LiAgU3VibGljZW5zaW5nIGlzIG5vdCBhbGxvd2VkOyBzZWN0aW9uIDEwCittYWtlcyBp dCB1bm5lY2Vzc2FyeS4KKworICAzLiBQcm90ZWN0aW5nIFVzZXJzJyBMZWdhbCBSaWdodHMgRnJv bSBBbnRpLUNpcmN1bXZlbnRpb24gTGF3LgorCisgIE5vIGNvdmVyZWQgd29yayBzaGFsbCBiZSBk ZWVtZWQgcGFydCBvZiBhbiBlZmZlY3RpdmUgdGVjaG5vbG9naWNhbAorbWVhc3VyZSB1bmRlciBh bnkgYXBwbGljYWJsZSBsYXcgZnVsZmlsbGluZyBvYmxpZ2F0aW9ucyB1bmRlciBhcnRpY2xlCisx MSBvZiB0aGUgV0lQTyBjb3B5cmlnaHQgdHJlYXR5IGFkb3B0ZWQgb24gMjAgRGVjZW1iZXIgMTk5 Niwgb3IKK3NpbWlsYXIgbGF3cyBwcm9oaWJpdGluZyBvciByZXN0cmljdGluZyBjaXJjdW12ZW50 aW9uIG9mIHN1Y2gKK21lYXN1cmVzLgorCisgIFdoZW4geW91IGNvbnZleSBhIGNvdmVyZWQgd29y aywgeW91IHdhaXZlIGFueSBsZWdhbCBwb3dlciB0byBmb3JiaWQKK2NpcmN1bXZlbnRpb24gb2Yg dGVjaG5vbG9naWNhbCBtZWFzdXJlcyB0byB0aGUgZXh0ZW50IHN1Y2ggY2lyY3VtdmVudGlvbgor aXMgZWZmZWN0ZWQgYnkgZXhlcmNpc2luZyByaWdodHMgdW5kZXIgdGhpcyBMaWNlbnNlIHdpdGgg cmVzcGVjdCB0bwordGhlIGNvdmVyZWQgd29yaywgYW5kIHlvdSBkaXNjbGFpbSBhbnkgaW50ZW50 aW9uIHRvIGxpbWl0IG9wZXJhdGlvbiBvcgorbW9kaWZpY2F0aW9uIG9mIHRoZSB3b3JrIGFzIGEg bWVhbnMgb2YgZW5mb3JjaW5nLCBhZ2FpbnN0IHRoZSB3b3JrJ3MKK3VzZXJzLCB5b3VyIG9yIHRo aXJkIHBhcnRpZXMnIGxlZ2FsIHJpZ2h0cyB0byBmb3JiaWQgY2lyY3VtdmVudGlvbiBvZgordGVj aG5vbG9naWNhbCBtZWFzdXJlcy4KKworICA0LiBDb252ZXlpbmcgVmVyYmF0aW0gQ29waWVzLgor CisgIFlvdSBtYXkgY29udmV5IHZlcmJhdGltIGNvcGllcyBvZiB0aGUgUHJvZ3JhbSdzIHNvdXJj ZSBjb2RlIGFzIHlvdQorcmVjZWl2ZSBpdCwgaW4gYW55IG1lZGl1bSwgcHJvdmlkZWQgdGhhdCB5 b3UgY29uc3BpY3VvdXNseSBhbmQKK2FwcHJvcHJpYXRlbHkgcHVibGlzaCBvbiBlYWNoIGNvcHkg YW4gYXBwcm9wcmlhdGUgY29weXJpZ2h0IG5vdGljZTsKK2tlZXAgaW50YWN0IGFsbCBub3RpY2Vz IHN0YXRpbmcgdGhhdCB0aGlzIExpY2Vuc2UgYW5kIGFueQorbm9uLXBlcm1pc3NpdmUgdGVybXMg YWRkZWQgaW4gYWNjb3JkIHdpdGggc2VjdGlvbiA3IGFwcGx5IHRvIHRoZSBjb2RlOwora2VlcCBp bnRhY3QgYWxsIG5vdGljZXMgb2YgdGhlIGFic2VuY2Ugb2YgYW55IHdhcnJhbnR5OyBhbmQgZ2l2 ZSBhbGwKK3JlY2lwaWVudHMgYSBjb3B5IG9mIHRoaXMgTGljZW5zZSBhbG9uZyB3aXRoIHRoZSBQ cm9ncmFtLgorCisgIFlvdSBtYXkgY2hhcmdlIGFueSBwcmljZSBvciBubyBwcmljZSBmb3IgZWFj aCBjb3B5IHRoYXQgeW91IGNvbnZleSwKK2FuZCB5b3UgbWF5IG9mZmVyIHN1cHBvcnQgb3Igd2Fy cmFudHkgcHJvdGVjdGlvbiBmb3IgYSBmZWUuCisKKyAgNS4gQ29udmV5aW5nIE1vZGlmaWVkIFNv dXJjZSBWZXJzaW9ucy4KKworICBZb3UgbWF5IGNvbnZleSBhIHdvcmsgYmFzZWQgb24gdGhlIFBy b2dyYW0sIG9yIHRoZSBtb2RpZmljYXRpb25zIHRvCitwcm9kdWNlIGl0IGZyb20gdGhlIFByb2dy YW0sIGluIHRoZSBmb3JtIG9mIHNvdXJjZSBjb2RlIHVuZGVyIHRoZQordGVybXMgb2Ygc2VjdGlv biA0LCBwcm92aWRlZCB0aGF0IHlvdSBhbHNvIG1lZXQgYWxsIG9mIHRoZXNlIGNvbmRpdGlvbnM6 CisKKyAgICBhKSBUaGUgd29yayBtdXN0IGNhcnJ5IHByb21pbmVudCBub3RpY2VzIHN0YXRpbmcg dGhhdCB5b3UgbW9kaWZpZWQKKyAgICBpdCwgYW5kIGdpdmluZyBhIHJlbGV2YW50IGRhdGUuCisK KyAgICBiKSBUaGUgd29yayBtdXN0IGNhcnJ5IHByb21pbmVudCBub3RpY2VzIHN0YXRpbmcgdGhh dCBpdCBpcworICAgIHJlbGVhc2VkIHVuZGVyIHRoaXMgTGljZW5zZSBhbmQgYW55IGNvbmRpdGlv bnMgYWRkZWQgdW5kZXIgc2VjdGlvbgorICAgIDcuICBUaGlzIHJlcXVpcmVtZW50IG1vZGlmaWVz IHRoZSByZXF1aXJlbWVudCBpbiBzZWN0aW9uIDQgdG8KKyAgICAia2VlcCBpbnRhY3QgYWxsIG5v dGljZXMiLgorCisgICAgYykgWW91IG11c3QgbGljZW5zZSB0aGUgZW50aXJlIHdvcmssIGFzIGEg d2hvbGUsIHVuZGVyIHRoaXMKKyAgICBMaWNlbnNlIHRvIGFueW9uZSB3aG8gY29tZXMgaW50byBw b3NzZXNzaW9uIG9mIGEgY29weS4gIFRoaXMKKyAgICBMaWNlbnNlIHdpbGwgdGhlcmVmb3JlIGFw cGx5LCBhbG9uZyB3aXRoIGFueSBhcHBsaWNhYmxlIHNlY3Rpb24gNworICAgIGFkZGl0aW9uYWwg dGVybXMsIHRvIHRoZSB3aG9sZSBvZiB0aGUgd29yaywgYW5kIGFsbCBpdHMgcGFydHMsCisgICAg cmVnYXJkbGVzcyBvZiBob3cgdGhleSBhcmUgcGFja2FnZWQuICBUaGlzIExpY2Vuc2UgZ2l2ZXMg bm8KKyAgICBwZXJtaXNzaW9uIHRvIGxpY2Vuc2UgdGhlIHdvcmsgaW4gYW55IG90aGVyIHdheSwg YnV0IGl0IGRvZXMgbm90CisgICAgaW52YWxpZGF0ZSBzdWNoIHBlcm1pc3Npb24gaWYgeW91IGhh dmUgc2VwYXJhdGVseSByZWNlaXZlZCBpdC4KKworICAgIGQpIElmIHRoZSB3b3JrIGhhcyBpbnRl cmFjdGl2ZSB1c2VyIGludGVyZmFjZXMsIGVhY2ggbXVzdCBkaXNwbGF5CisgICAgQXBwcm9wcmlh dGUgTGVnYWwgTm90aWNlczsgaG93ZXZlciwgaWYgdGhlIFByb2dyYW0gaGFzIGludGVyYWN0aXZl CisgICAgaW50ZXJmYWNlcyB0aGF0IGRvIG5vdCBkaXNwbGF5IEFwcHJvcHJpYXRlIExlZ2FsIE5v dGljZXMsIHlvdXIKKyAgICB3b3JrIG5lZWQgbm90IG1ha2UgdGhlbSBkbyBzby4KKworICBBIGNv bXBpbGF0aW9uIG9mIGEgY292ZXJlZCB3b3JrIHdpdGggb3RoZXIgc2VwYXJhdGUgYW5kIGluZGVw ZW5kZW50Cit3b3Jrcywgd2hpY2ggYXJlIG5vdCBieSB0aGVpciBuYXR1cmUgZXh0ZW5zaW9ucyBv ZiB0aGUgY292ZXJlZCB3b3JrLAorYW5kIHdoaWNoIGFyZSBub3QgY29tYmluZWQgd2l0aCBpdCBz dWNoIGFzIHRvIGZvcm0gYSBsYXJnZXIgcHJvZ3JhbSwKK2luIG9yIG9uIGEgdm9sdW1lIG9mIGEg c3RvcmFnZSBvciBkaXN0cmlidXRpb24gbWVkaXVtLCBpcyBjYWxsZWQgYW4KKyJhZ2dyZWdhdGUi IGlmIHRoZSBjb21waWxhdGlvbiBhbmQgaXRzIHJlc3VsdGluZyBjb3B5cmlnaHQgYXJlIG5vdAor dXNlZCB0byBsaW1pdCB0aGUgYWNjZXNzIG9yIGxlZ2FsIHJpZ2h0cyBvZiB0aGUgY29tcGlsYXRp b24ncyB1c2VycworYmV5b25kIHdoYXQgdGhlIGluZGl2aWR1YWwgd29ya3MgcGVybWl0LiAgSW5j bHVzaW9uIG9mIGEgY292ZXJlZCB3b3JrCitpbiBhbiBhZ2dyZWdhdGUgZG9lcyBub3QgY2F1c2Ug dGhpcyBMaWNlbnNlIHRvIGFwcGx5IHRvIHRoZSBvdGhlcgorcGFydHMgb2YgdGhlIGFnZ3JlZ2F0 ZS4KKworICA2LiBDb252ZXlpbmcgTm9uLVNvdXJjZSBGb3Jtcy4KKworICBZb3UgbWF5IGNvbnZl eSBhIGNvdmVyZWQgd29yayBpbiBvYmplY3QgY29kZSBmb3JtIHVuZGVyIHRoZSB0ZXJtcworb2Yg c2VjdGlvbnMgNCBhbmQgNSwgcHJvdmlkZWQgdGhhdCB5b3UgYWxzbyBjb252ZXkgdGhlCittYWNo aW5lLXJlYWRhYmxlIENvcnJlc3BvbmRpbmcgU291cmNlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGlz IExpY2Vuc2UsCitpbiBvbmUgb2YgdGhlc2Ugd2F5czoKKworICAgIGEpIENvbnZleSB0aGUgb2Jq ZWN0IGNvZGUgaW4sIG9yIGVtYm9kaWVkIGluLCBhIHBoeXNpY2FsIHByb2R1Y3QKKyAgICAoaW5j bHVkaW5nIGEgcGh5c2ljYWwgZGlzdHJpYnV0aW9uIG1lZGl1bSksIGFjY29tcGFuaWVkIGJ5IHRo ZQorICAgIENvcnJlc3BvbmRpbmcgU291cmNlIGZpeGVkIG9uIGEgZHVyYWJsZSBwaHlzaWNhbCBt ZWRpdW0KKyAgICBjdXN0b21hcmlseSB1c2VkIGZvciBzb2Z0d2FyZSBpbnRlcmNoYW5nZS4KKwor ICAgIGIpIENvbnZleSB0aGUgb2JqZWN0IGNvZGUgaW4sIG9yIGVtYm9kaWVkIGluLCBhIHBoeXNp Y2FsIHByb2R1Y3QKKyAgICAoaW5jbHVkaW5nIGEgcGh5c2ljYWwgZGlzdHJpYnV0aW9uIG1lZGl1 bSksIGFjY29tcGFuaWVkIGJ5IGEKKyAgICB3cml0dGVuIG9mZmVyLCB2YWxpZCBmb3IgYXQgbGVh c3QgdGhyZWUgeWVhcnMgYW5kIHZhbGlkIGZvciBhcworICAgIGxvbmcgYXMgeW91IG9mZmVyIHNw YXJlIHBhcnRzIG9yIGN1c3RvbWVyIHN1cHBvcnQgZm9yIHRoYXQgcHJvZHVjdAorICAgIG1vZGVs LCB0byBnaXZlIGFueW9uZSB3aG8gcG9zc2Vzc2VzIHRoZSBvYmplY3QgY29kZSBlaXRoZXIgKDEp IGEKKyAgICBjb3B5IG9mIHRoZSBDb3JyZXNwb25kaW5nIFNvdXJjZSBmb3IgYWxsIHRoZSBzb2Z0 d2FyZSBpbiB0aGUKKyAgICBwcm9kdWN0IHRoYXQgaXMgY292ZXJlZCBieSB0aGlzIExpY2Vuc2Us IG9uIGEgZHVyYWJsZSBwaHlzaWNhbAorICAgIG1lZGl1bSBjdXN0b21hcmlseSB1c2VkIGZvciBz b2Z0d2FyZSBpbnRlcmNoYW5nZSwgZm9yIGEgcHJpY2Ugbm8KKyAgICBtb3JlIHRoYW4geW91ciBy ZWFzb25hYmxlIGNvc3Qgb2YgcGh5c2ljYWxseSBwZXJmb3JtaW5nIHRoaXMKKyAgICBjb252ZXlp bmcgb2Ygc291cmNlLCBvciAoMikgYWNjZXNzIHRvIGNvcHkgdGhlCisgICAgQ29ycmVzcG9uZGlu ZyBTb3VyY2UgZnJvbSBhIG5ldHdvcmsgc2VydmVyIGF0IG5vIGNoYXJnZS4KKworICAgIGMpIENv bnZleSBpbmRpdmlkdWFsIGNvcGllcyBvZiB0aGUgb2JqZWN0IGNvZGUgd2l0aCBhIGNvcHkgb2Yg dGhlCisgICAgd3JpdHRlbiBvZmZlciB0byBwcm92aWRlIHRoZSBDb3JyZXNwb25kaW5nIFNvdXJj ZS4gIFRoaXMKKyAgICBhbHRlcm5hdGl2ZSBpcyBhbGxvd2VkIG9ubHkgb2NjYXNpb25hbGx5IGFu ZCBub25jb21tZXJjaWFsbHksIGFuZAorICAgIG9ubHkgaWYgeW91IHJlY2VpdmVkIHRoZSBvYmpl Y3QgY29kZSB3aXRoIHN1Y2ggYW4gb2ZmZXIsIGluIGFjY29yZAorICAgIHdpdGggc3Vic2VjdGlv biA2Yi4KKworICAgIGQpIENvbnZleSB0aGUgb2JqZWN0IGNvZGUgYnkgb2ZmZXJpbmcgYWNjZXNz IGZyb20gYSBkZXNpZ25hdGVkCisgICAgcGxhY2UgKGdyYXRpcyBvciBmb3IgYSBjaGFyZ2UpLCBh bmQgb2ZmZXIgZXF1aXZhbGVudCBhY2Nlc3MgdG8gdGhlCisgICAgQ29ycmVzcG9uZGluZyBTb3Vy Y2UgaW4gdGhlIHNhbWUgd2F5IHRocm91Z2ggdGhlIHNhbWUgcGxhY2UgYXQgbm8KKyAgICBmdXJ0 aGVyIGNoYXJnZS4gIFlvdSBuZWVkIG5vdCByZXF1aXJlIHJlY2lwaWVudHMgdG8gY29weSB0aGUK KyAgICBDb3JyZXNwb25kaW5nIFNvdXJjZSBhbG9uZyB3aXRoIHRoZSBvYmplY3QgY29kZS4gIElm IHRoZSBwbGFjZSB0bworICAgIGNvcHkgdGhlIG9iamVjdCBjb2RlIGlzIGEgbmV0d29yayBzZXJ2 ZXIsIHRoZSBDb3JyZXNwb25kaW5nIFNvdXJjZQorICAgIG1heSBiZSBvbiBhIGRpZmZlcmVudCBz ZXJ2ZXIgKG9wZXJhdGVkIGJ5IHlvdSBvciBhIHRoaXJkIHBhcnR5KQorICAgIHRoYXQgc3VwcG9y dHMgZXF1aXZhbGVudCBjb3B5aW5nIGZhY2lsaXRpZXMsIHByb3ZpZGVkIHlvdSBtYWludGFpbgor ICAgIGNsZWFyIGRpcmVjdGlvbnMgbmV4dCB0byB0aGUgb2JqZWN0IGNvZGUgc2F5aW5nIHdoZXJl IHRvIGZpbmQgdGhlCisgICAgQ29ycmVzcG9uZGluZyBTb3VyY2UuICBSZWdhcmRsZXNzIG9mIHdo YXQgc2VydmVyIGhvc3RzIHRoZQorICAgIENvcnJlc3BvbmRpbmcgU291cmNlLCB5b3UgcmVtYWlu IG9ibGlnYXRlZCB0byBlbnN1cmUgdGhhdCBpdCBpcworICAgIGF2YWlsYWJsZSBmb3IgYXMgbG9u ZyBhcyBuZWVkZWQgdG8gc2F0aXNmeSB0aGVzZSByZXF1aXJlbWVudHMuCisKKyAgICBlKSBDb252 ZXkgdGhlIG9iamVjdCBjb2RlIHVzaW5nIHBlZXItdG8tcGVlciB0cmFuc21pc3Npb24sIHByb3Zp ZGVkCisgICAgeW91IGluZm9ybSBvdGhlciBwZWVycyB3aGVyZSB0aGUgb2JqZWN0IGNvZGUgYW5k IENvcnJlc3BvbmRpbmcKKyAgICBTb3VyY2Ugb2YgdGhlIHdvcmsgYXJlIGJlaW5nIG9mZmVyZWQg dG8gdGhlIGdlbmVyYWwgcHVibGljIGF0IG5vCisgICAgY2hhcmdlIHVuZGVyIHN1YnNlY3Rpb24g NmQuCisKKyAgQSBzZXBhcmFibGUgcG9ydGlvbiBvZiB0aGUgb2JqZWN0IGNvZGUsIHdob3NlIHNv dXJjZSBjb2RlIGlzIGV4Y2x1ZGVkCitmcm9tIHRoZSBDb3JyZXNwb25kaW5nIFNvdXJjZSBhcyBh IFN5c3RlbSBMaWJyYXJ5LCBuZWVkIG5vdCBiZQoraW5jbHVkZWQgaW4gY29udmV5aW5nIHRoZSBv YmplY3QgY29kZSB3b3JrLgorCisgIEEgIlVzZXIgUHJvZHVjdCIgaXMgZWl0aGVyICgxKSBhICJj b25zdW1lciBwcm9kdWN0Iiwgd2hpY2ggbWVhbnMgYW55Cit0YW5naWJsZSBwZXJzb25hbCBwcm9w ZXJ0eSB3aGljaCBpcyBub3JtYWxseSB1c2VkIGZvciBwZXJzb25hbCwgZmFtaWx5LAorb3IgaG91 c2Vob2xkIHB1cnBvc2VzLCBvciAoMikgYW55dGhpbmcgZGVzaWduZWQgb3Igc29sZCBmb3IgaW5j b3Jwb3JhdGlvbgoraW50byBhIGR3ZWxsaW5nLiAgSW4gZGV0ZXJtaW5pbmcgd2hldGhlciBhIHBy b2R1Y3QgaXMgYSBjb25zdW1lciBwcm9kdWN0LAorZG91YnRmdWwgY2FzZXMgc2hhbGwgYmUgcmVz b2x2ZWQgaW4gZmF2b3Igb2YgY292ZXJhZ2UuICBGb3IgYSBwYXJ0aWN1bGFyCitwcm9kdWN0IHJl Y2VpdmVkIGJ5IGEgcGFydGljdWxhciB1c2VyLCAibm9ybWFsbHkgdXNlZCIgcmVmZXJzIHRvIGEK K3R5cGljYWwgb3IgY29tbW9uIHVzZSBvZiB0aGF0IGNsYXNzIG9mIHByb2R1Y3QsIHJlZ2FyZGxl c3Mgb2YgdGhlIHN0YXR1cworb2YgdGhlIHBhcnRpY3VsYXIgdXNlciBvciBvZiB0aGUgd2F5IGlu IHdoaWNoIHRoZSBwYXJ0aWN1bGFyIHVzZXIKK2FjdHVhbGx5IHVzZXMsIG9yIGV4cGVjdHMgb3Ig aXMgZXhwZWN0ZWQgdG8gdXNlLCB0aGUgcHJvZHVjdC4gIEEgcHJvZHVjdAoraXMgYSBjb25zdW1l ciBwcm9kdWN0IHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0aGUgcHJvZHVjdCBoYXMgc3Vic3RhbnRp YWwKK2NvbW1lcmNpYWwsIGluZHVzdHJpYWwgb3Igbm9uLWNvbnN1bWVyIHVzZXMsIHVubGVzcyBz dWNoIHVzZXMgcmVwcmVzZW50Cit0aGUgb25seSBzaWduaWZpY2FudCBtb2RlIG9mIHVzZSBvZiB0 aGUgcHJvZHVjdC4KKworICAiSW5zdGFsbGF0aW9uIEluZm9ybWF0aW9uIiBmb3IgYSBVc2VyIFBy b2R1Y3QgbWVhbnMgYW55IG1ldGhvZHMsCitwcm9jZWR1cmVzLCBhdXRob3JpemF0aW9uIGtleXMs IG9yIG90aGVyIGluZm9ybWF0aW9uIHJlcXVpcmVkIHRvIGluc3RhbGwKK2FuZCBleGVjdXRlIG1v ZGlmaWVkIHZlcnNpb25zIG9mIGEgY292ZXJlZCB3b3JrIGluIHRoYXQgVXNlciBQcm9kdWN0IGZy b20KK2EgbW9kaWZpZWQgdmVyc2lvbiBvZiBpdHMgQ29ycmVzcG9uZGluZyBTb3VyY2UuICBUaGUg aW5mb3JtYXRpb24gbXVzdAorc3VmZmljZSB0byBlbnN1cmUgdGhhdCB0aGUgY29udGludWVkIGZ1 bmN0aW9uaW5nIG9mIHRoZSBtb2RpZmllZCBvYmplY3QKK2NvZGUgaXMgaW4gbm8gY2FzZSBwcmV2 ZW50ZWQgb3IgaW50ZXJmZXJlZCB3aXRoIHNvbGVseSBiZWNhdXNlCittb2RpZmljYXRpb24gaGFz IGJlZW4gbWFkZS4KKworICBJZiB5b3UgY29udmV5IGFuIG9iamVjdCBjb2RlIHdvcmsgdW5kZXIg dGhpcyBzZWN0aW9uIGluLCBvciB3aXRoLCBvcgorc3BlY2lmaWNhbGx5IGZvciB1c2UgaW4sIGEg VXNlciBQcm9kdWN0LCBhbmQgdGhlIGNvbnZleWluZyBvY2N1cnMgYXMKK3BhcnQgb2YgYSB0cmFu c2FjdGlvbiBpbiB3aGljaCB0aGUgcmlnaHQgb2YgcG9zc2Vzc2lvbiBhbmQgdXNlIG9mIHRoZQor VXNlciBQcm9kdWN0IGlzIHRyYW5zZmVycmVkIHRvIHRoZSByZWNpcGllbnQgaW4gcGVycGV0dWl0 eSBvciBmb3IgYQorZml4ZWQgdGVybSAocmVnYXJkbGVzcyBvZiBob3cgdGhlIHRyYW5zYWN0aW9u IGlzIGNoYXJhY3Rlcml6ZWQpLCB0aGUKK0NvcnJlc3BvbmRpbmcgU291cmNlIGNvbnZleWVkIHVu ZGVyIHRoaXMgc2VjdGlvbiBtdXN0IGJlIGFjY29tcGFuaWVkCitieSB0aGUgSW5zdGFsbGF0aW9u IEluZm9ybWF0aW9uLiAgQnV0IHRoaXMgcmVxdWlyZW1lbnQgZG9lcyBub3QgYXBwbHkKK2lmIG5l aXRoZXIgeW91IG5vciBhbnkgdGhpcmQgcGFydHkgcmV0YWlucyB0aGUgYWJpbGl0eSB0byBpbnN0 YWxsCittb2RpZmllZCBvYmplY3QgY29kZSBvbiB0aGUgVXNlciBQcm9kdWN0IChmb3IgZXhhbXBs ZSwgdGhlIHdvcmsgaGFzCitiZWVuIGluc3RhbGxlZCBpbiBST00pLgorCisgIFRoZSByZXF1aXJl bWVudCB0byBwcm92aWRlIEluc3RhbGxhdGlvbiBJbmZvcm1hdGlvbiBkb2VzIG5vdCBpbmNsdWRl IGEKK3JlcXVpcmVtZW50IHRvIGNvbnRpbnVlIHRvIHByb3ZpZGUgc3VwcG9ydCBzZXJ2aWNlLCB3 YXJyYW50eSwgb3IgdXBkYXRlcworZm9yIGEgd29yayB0aGF0IGhhcyBiZWVuIG1vZGlmaWVkIG9y IGluc3RhbGxlZCBieSB0aGUgcmVjaXBpZW50LCBvciBmb3IKK3RoZSBVc2VyIFByb2R1Y3QgaW4g d2hpY2ggaXQgaGFzIGJlZW4gbW9kaWZpZWQgb3IgaW5zdGFsbGVkLiAgQWNjZXNzIHRvIGEKK25l dHdvcmsgbWF5IGJlIGRlbmllZCB3aGVuIHRoZSBtb2RpZmljYXRpb24gaXRzZWxmIG1hdGVyaWFs bHkgYW5kCithZHZlcnNlbHkgYWZmZWN0cyB0aGUgb3BlcmF0aW9uIG9mIHRoZSBuZXR3b3JrIG9y IHZpb2xhdGVzIHRoZSBydWxlcyBhbmQKK3Byb3RvY29scyBmb3IgY29tbXVuaWNhdGlvbiBhY3Jv c3MgdGhlIG5ldHdvcmsuCisKKyAgQ29ycmVzcG9uZGluZyBTb3VyY2UgY29udmV5ZWQsIGFuZCBJ bnN0YWxsYXRpb24gSW5mb3JtYXRpb24gcHJvdmlkZWQsCitpbiBhY2NvcmQgd2l0aCB0aGlzIHNl Y3Rpb24gbXVzdCBiZSBpbiBhIGZvcm1hdCB0aGF0IGlzIHB1YmxpY2x5Citkb2N1bWVudGVkIChh bmQgd2l0aCBhbiBpbXBsZW1lbnRhdGlvbiBhdmFpbGFibGUgdG8gdGhlIHB1YmxpYyBpbgorc291 cmNlIGNvZGUgZm9ybSksIGFuZCBtdXN0IHJlcXVpcmUgbm8gc3BlY2lhbCBwYXNzd29yZCBvciBr ZXkgZm9yCit1bnBhY2tpbmcsIHJlYWRpbmcgb3IgY29weWluZy4KKworICA3LiBBZGRpdGlvbmFs IFRlcm1zLgorCisgICJBZGRpdGlvbmFsIHBlcm1pc3Npb25zIiBhcmUgdGVybXMgdGhhdCBzdXBw bGVtZW50IHRoZSB0ZXJtcyBvZiB0aGlzCitMaWNlbnNlIGJ5IG1ha2luZyBleGNlcHRpb25zIGZy b20gb25lIG9yIG1vcmUgb2YgaXRzIGNvbmRpdGlvbnMuCitBZGRpdGlvbmFsIHBlcm1pc3Npb25z IHRoYXQgYXJlIGFwcGxpY2FibGUgdG8gdGhlIGVudGlyZSBQcm9ncmFtIHNoYWxsCitiZSB0cmVh dGVkIGFzIHRob3VnaCB0aGV5IHdlcmUgaW5jbHVkZWQgaW4gdGhpcyBMaWNlbnNlLCB0byB0aGUg ZXh0ZW50Cit0aGF0IHRoZXkgYXJlIHZhbGlkIHVuZGVyIGFwcGxpY2FibGUgbGF3LiAgSWYgYWRk aXRpb25hbCBwZXJtaXNzaW9ucworYXBwbHkgb25seSB0byBwYXJ0IG9mIHRoZSBQcm9ncmFtLCB0 aGF0IHBhcnQgbWF5IGJlIHVzZWQgc2VwYXJhdGVseQordW5kZXIgdGhvc2UgcGVybWlzc2lvbnMs IGJ1dCB0aGUgZW50aXJlIFByb2dyYW0gcmVtYWlucyBnb3Zlcm5lZCBieQordGhpcyBMaWNlbnNl IHdpdGhvdXQgcmVnYXJkIHRvIHRoZSBhZGRpdGlvbmFsIHBlcm1pc3Npb25zLgorCisgIFdoZW4g eW91IGNvbnZleSBhIGNvcHkgb2YgYSBjb3ZlcmVkIHdvcmssIHlvdSBtYXkgYXQgeW91ciBvcHRp b24KK3JlbW92ZSBhbnkgYWRkaXRpb25hbCBwZXJtaXNzaW9ucyBmcm9tIHRoYXQgY29weSwgb3Ig ZnJvbSBhbnkgcGFydCBvZgoraXQuICAoQWRkaXRpb25hbCBwZXJtaXNzaW9ucyBtYXkgYmUgd3Jp dHRlbiB0byByZXF1aXJlIHRoZWlyIG93bgorcmVtb3ZhbCBpbiBjZXJ0YWluIGNhc2VzIHdoZW4g eW91IG1vZGlmeSB0aGUgd29yay4pICBZb3UgbWF5IHBsYWNlCithZGRpdGlvbmFsIHBlcm1pc3Np b25zIG9uIG1hdGVyaWFsLCBhZGRlZCBieSB5b3UgdG8gYSBjb3ZlcmVkIHdvcmssCitmb3Igd2hp Y2ggeW91IGhhdmUgb3IgY2FuIGdpdmUgYXBwcm9wcmlhdGUgY29weXJpZ2h0IHBlcm1pc3Npb24u CisKKyAgTm90d2l0aHN0YW5kaW5nIGFueSBvdGhlciBwcm92aXNpb24gb2YgdGhpcyBMaWNlbnNl LCBmb3IgbWF0ZXJpYWwgeW91CithZGQgdG8gYSBjb3ZlcmVkIHdvcmssIHlvdSBtYXkgKGlmIGF1 dGhvcml6ZWQgYnkgdGhlIGNvcHlyaWdodCBob2xkZXJzIG9mCit0aGF0IG1hdGVyaWFsKSBzdXBw bGVtZW50IHRoZSB0ZXJtcyBvZiB0aGlzIExpY2Vuc2Ugd2l0aCB0ZXJtczoKKworICAgIGEpIERp c2NsYWltaW5nIHdhcnJhbnR5IG9yIGxpbWl0aW5nIGxpYWJpbGl0eSBkaWZmZXJlbnRseSBmcm9t IHRoZQorICAgIHRlcm1zIG9mIHNlY3Rpb25zIDE1IGFuZCAxNiBvZiB0aGlzIExpY2Vuc2U7IG9y CisKKyAgICBiKSBSZXF1aXJpbmcgcHJlc2VydmF0aW9uIG9mIHNwZWNpZmllZCByZWFzb25hYmxl IGxlZ2FsIG5vdGljZXMgb3IKKyAgICBhdXRob3IgYXR0cmlidXRpb25zIGluIHRoYXQgbWF0ZXJp YWwgb3IgaW4gdGhlIEFwcHJvcHJpYXRlIExlZ2FsCisgICAgTm90aWNlcyBkaXNwbGF5ZWQgYnkg d29ya3MgY29udGFpbmluZyBpdDsgb3IKKworICAgIGMpIFByb2hpYml0aW5nIG1pc3JlcHJlc2Vu dGF0aW9uIG9mIHRoZSBvcmlnaW4gb2YgdGhhdCBtYXRlcmlhbCwgb3IKKyAgICByZXF1aXJpbmcg dGhhdCBtb2RpZmllZCB2ZXJzaW9ucyBvZiBzdWNoIG1hdGVyaWFsIGJlIG1hcmtlZCBpbgorICAg IHJlYXNvbmFibGUgd2F5cyBhcyBkaWZmZXJlbnQgZnJvbSB0aGUgb3JpZ2luYWwgdmVyc2lvbjsg b3IKKworICAgIGQpIExpbWl0aW5nIHRoZSB1c2UgZm9yIHB1YmxpY2l0eSBwdXJwb3NlcyBvZiBu YW1lcyBvZiBsaWNlbnNvcnMgb3IKKyAgICBhdXRob3JzIG9mIHRoZSBtYXRlcmlhbDsgb3IKKwor ICAgIGUpIERlY2xpbmluZyB0byBncmFudCByaWdodHMgdW5kZXIgdHJhZGVtYXJrIGxhdyBmb3Ig dXNlIG9mIHNvbWUKKyAgICB0cmFkZSBuYW1lcywgdHJhZGVtYXJrcywgb3Igc2VydmljZSBtYXJr czsgb3IKKworICAgIGYpIFJlcXVpcmluZyBpbmRlbW5pZmljYXRpb24gb2YgbGljZW5zb3JzIGFu ZCBhdXRob3JzIG9mIHRoYXQKKyAgICBtYXRlcmlhbCBieSBhbnlvbmUgd2hvIGNvbnZleXMgdGhl IG1hdGVyaWFsIChvciBtb2RpZmllZCB2ZXJzaW9ucyBvZgorICAgIGl0KSB3aXRoIGNvbnRyYWN0 dWFsIGFzc3VtcHRpb25zIG9mIGxpYWJpbGl0eSB0byB0aGUgcmVjaXBpZW50LCBmb3IKKyAgICBh bnkgbGlhYmlsaXR5IHRoYXQgdGhlc2UgY29udHJhY3R1YWwgYXNzdW1wdGlvbnMgZGlyZWN0bHkg aW1wb3NlIG9uCisgICAgdGhvc2UgbGljZW5zb3JzIGFuZCBhdXRob3JzLgorCisgIEFsbCBvdGhl ciBub24tcGVybWlzc2l2ZSBhZGRpdGlvbmFsIHRlcm1zIGFyZSBjb25zaWRlcmVkICJmdXJ0aGVy CityZXN0cmljdGlvbnMiIHdpdGhpbiB0aGUgbWVhbmluZyBvZiBzZWN0aW9uIDEwLiAgSWYgdGhl IFByb2dyYW0gYXMgeW91CityZWNlaXZlZCBpdCwgb3IgYW55IHBhcnQgb2YgaXQsIGNvbnRhaW5z IGEgbm90aWNlIHN0YXRpbmcgdGhhdCBpdCBpcworZ292ZXJuZWQgYnkgdGhpcyBMaWNlbnNlIGFs b25nIHdpdGggYSB0ZXJtIHRoYXQgaXMgYSBmdXJ0aGVyCityZXN0cmljdGlvbiwgeW91IG1heSBy ZW1vdmUgdGhhdCB0ZXJtLiAgSWYgYSBsaWNlbnNlIGRvY3VtZW50IGNvbnRhaW5zCithIGZ1cnRo ZXIgcmVzdHJpY3Rpb24gYnV0IHBlcm1pdHMgcmVsaWNlbnNpbmcgb3IgY29udmV5aW5nIHVuZGVy IHRoaXMKK0xpY2Vuc2UsIHlvdSBtYXkgYWRkIHRvIGEgY292ZXJlZCB3b3JrIG1hdGVyaWFsIGdv dmVybmVkIGJ5IHRoZSB0ZXJtcworb2YgdGhhdCBsaWNlbnNlIGRvY3VtZW50LCBwcm92aWRlZCB0 aGF0IHRoZSBmdXJ0aGVyIHJlc3RyaWN0aW9uIGRvZXMKK25vdCBzdXJ2aXZlIHN1Y2ggcmVsaWNl bnNpbmcgb3IgY29udmV5aW5nLgorCisgIElmIHlvdSBhZGQgdGVybXMgdG8gYSBjb3ZlcmVkIHdv cmsgaW4gYWNjb3JkIHdpdGggdGhpcyBzZWN0aW9uLCB5b3UKK211c3QgcGxhY2UsIGluIHRoZSBy ZWxldmFudCBzb3VyY2UgZmlsZXMsIGEgc3RhdGVtZW50IG9mIHRoZQorYWRkaXRpb25hbCB0ZXJt cyB0aGF0IGFwcGx5IHRvIHRob3NlIGZpbGVzLCBvciBhIG5vdGljZSBpbmRpY2F0aW5nCit3aGVy ZSB0byBmaW5kIHRoZSBhcHBsaWNhYmxlIHRlcm1zLgorCisgIEFkZGl0aW9uYWwgdGVybXMsIHBl cm1pc3NpdmUgb3Igbm9uLXBlcm1pc3NpdmUsIG1heSBiZSBzdGF0ZWQgaW4gdGhlCitmb3JtIG9m IGEgc2VwYXJhdGVseSB3cml0dGVuIGxpY2Vuc2UsIG9yIHN0YXRlZCBhcyBleGNlcHRpb25zOwor dGhlIGFib3ZlIHJlcXVpcmVtZW50cyBhcHBseSBlaXRoZXIgd2F5LgorCisgIDguIFRlcm1pbmF0 aW9uLgorCisgIFlvdSBtYXkgbm90IHByb3BhZ2F0ZSBvciBtb2RpZnkgYSBjb3ZlcmVkIHdvcmsg ZXhjZXB0IGFzIGV4cHJlc3NseQorcHJvdmlkZWQgdW5kZXIgdGhpcyBMaWNlbnNlLiAgQW55IGF0 dGVtcHQgb3RoZXJ3aXNlIHRvIHByb3BhZ2F0ZSBvcgorbW9kaWZ5IGl0IGlzIHZvaWQsIGFuZCB3 aWxsIGF1dG9tYXRpY2FsbHkgdGVybWluYXRlIHlvdXIgcmlnaHRzIHVuZGVyCit0aGlzIExpY2Vu c2UgKGluY2x1ZGluZyBhbnkgcGF0ZW50IGxpY2Vuc2VzIGdyYW50ZWQgdW5kZXIgdGhlIHRoaXJk CitwYXJhZ3JhcGggb2Ygc2VjdGlvbiAxMSkuCisKKyAgSG93ZXZlciwgaWYgeW91IGNlYXNlIGFs bCB2aW9sYXRpb24gb2YgdGhpcyBMaWNlbnNlLCB0aGVuIHlvdXIKK2xpY2Vuc2UgZnJvbSBhIHBh cnRpY3VsYXIgY29weXJpZ2h0IGhvbGRlciBpcyByZWluc3RhdGVkIChhKQorcHJvdmlzaW9uYWxs eSwgdW5sZXNzIGFuZCB1bnRpbCB0aGUgY29weXJpZ2h0IGhvbGRlciBleHBsaWNpdGx5IGFuZAor ZmluYWxseSB0ZXJtaW5hdGVzIHlvdXIgbGljZW5zZSwgYW5kIChiKSBwZXJtYW5lbnRseSwgaWYg dGhlIGNvcHlyaWdodAoraG9sZGVyIGZhaWxzIHRvIG5vdGlmeSB5b3Ugb2YgdGhlIHZpb2xhdGlv biBieSBzb21lIHJlYXNvbmFibGUgbWVhbnMKK3ByaW9yIHRvIDYwIGRheXMgYWZ0ZXIgdGhlIGNl c3NhdGlvbi4KKworICBNb3Jlb3ZlciwgeW91ciBsaWNlbnNlIGZyb20gYSBwYXJ0aWN1bGFyIGNv cHlyaWdodCBob2xkZXIgaXMKK3JlaW5zdGF0ZWQgcGVybWFuZW50bHkgaWYgdGhlIGNvcHlyaWdo dCBob2xkZXIgbm90aWZpZXMgeW91IG9mIHRoZQordmlvbGF0aW9uIGJ5IHNvbWUgcmVhc29uYWJs ZSBtZWFucywgdGhpcyBpcyB0aGUgZmlyc3QgdGltZSB5b3UgaGF2ZQorcmVjZWl2ZWQgbm90aWNl IG9mIHZpb2xhdGlvbiBvZiB0aGlzIExpY2Vuc2UgKGZvciBhbnkgd29yaykgZnJvbSB0aGF0Citj b3B5cmlnaHQgaG9sZGVyLCBhbmQgeW91IGN1cmUgdGhlIHZpb2xhdGlvbiBwcmlvciB0byAzMCBk YXlzIGFmdGVyCit5b3VyIHJlY2VpcHQgb2YgdGhlIG5vdGljZS4KKworICBUZXJtaW5hdGlvbiBv ZiB5b3VyIHJpZ2h0cyB1bmRlciB0aGlzIHNlY3Rpb24gZG9lcyBub3QgdGVybWluYXRlIHRoZQor bGljZW5zZXMgb2YgcGFydGllcyB3aG8gaGF2ZSByZWNlaXZlZCBjb3BpZXMgb3IgcmlnaHRzIGZy b20geW91IHVuZGVyCit0aGlzIExpY2Vuc2UuICBJZiB5b3VyIHJpZ2h0cyBoYXZlIGJlZW4gdGVy bWluYXRlZCBhbmQgbm90IHBlcm1hbmVudGx5CityZWluc3RhdGVkLCB5b3UgZG8gbm90IHF1YWxp ZnkgdG8gcmVjZWl2ZSBuZXcgbGljZW5zZXMgZm9yIHRoZSBzYW1lCittYXRlcmlhbCB1bmRlciBz ZWN0aW9uIDEwLgorCisgIDkuIEFjY2VwdGFuY2UgTm90IFJlcXVpcmVkIGZvciBIYXZpbmcgQ29w aWVzLgorCisgIFlvdSBhcmUgbm90IHJlcXVpcmVkIHRvIGFjY2VwdCB0aGlzIExpY2Vuc2UgaW4g b3JkZXIgdG8gcmVjZWl2ZSBvcgorcnVuIGEgY29weSBvZiB0aGUgUHJvZ3JhbS4gIEFuY2lsbGFy eSBwcm9wYWdhdGlvbiBvZiBhIGNvdmVyZWQgd29yaworb2NjdXJyaW5nIHNvbGVseSBhcyBhIGNv bnNlcXVlbmNlIG9mIHVzaW5nIHBlZXItdG8tcGVlciB0cmFuc21pc3Npb24KK3RvIHJlY2VpdmUg YSBjb3B5IGxpa2V3aXNlIGRvZXMgbm90IHJlcXVpcmUgYWNjZXB0YW5jZS4gIEhvd2V2ZXIsCitu b3RoaW5nIG90aGVyIHRoYW4gdGhpcyBMaWNlbnNlIGdyYW50cyB5b3UgcGVybWlzc2lvbiB0byBw cm9wYWdhdGUgb3IKK21vZGlmeSBhbnkgY292ZXJlZCB3b3JrLiAgVGhlc2UgYWN0aW9ucyBpbmZy aW5nZSBjb3B5cmlnaHQgaWYgeW91IGRvCitub3QgYWNjZXB0IHRoaXMgTGljZW5zZS4gIFRoZXJl Zm9yZSwgYnkgbW9kaWZ5aW5nIG9yIHByb3BhZ2F0aW5nIGEKK2NvdmVyZWQgd29yaywgeW91IGlu ZGljYXRlIHlvdXIgYWNjZXB0YW5jZSBvZiB0aGlzIExpY2Vuc2UgdG8gZG8gc28uCisKKyAgMTAu IEF1dG9tYXRpYyBMaWNlbnNpbmcgb2YgRG93bnN0cmVhbSBSZWNpcGllbnRzLgorCisgIEVhY2gg dGltZSB5b3UgY29udmV5IGEgY292ZXJlZCB3b3JrLCB0aGUgcmVjaXBpZW50IGF1dG9tYXRpY2Fs bHkKK3JlY2VpdmVzIGEgbGljZW5zZSBmcm9tIHRoZSBvcmlnaW5hbCBsaWNlbnNvcnMsIHRvIHJ1 biwgbW9kaWZ5IGFuZAorcHJvcGFnYXRlIHRoYXQgd29yaywgc3ViamVjdCB0byB0aGlzIExpY2Vu c2UuICBZb3UgYXJlIG5vdCByZXNwb25zaWJsZQorZm9yIGVuZm9yY2luZyBjb21wbGlhbmNlIGJ5 IHRoaXJkIHBhcnRpZXMgd2l0aCB0aGlzIExpY2Vuc2UuCisKKyAgQW4gImVudGl0eSB0cmFuc2Fj dGlvbiIgaXMgYSB0cmFuc2FjdGlvbiB0cmFuc2ZlcnJpbmcgY29udHJvbCBvZiBhbgorb3JnYW5p emF0aW9uLCBvciBzdWJzdGFudGlhbGx5IGFsbCBhc3NldHMgb2Ygb25lLCBvciBzdWJkaXZpZGlu ZyBhbgorb3JnYW5pemF0aW9uLCBvciBtZXJnaW5nIG9yZ2FuaXphdGlvbnMuICBJZiBwcm9wYWdh dGlvbiBvZiBhIGNvdmVyZWQKK3dvcmsgcmVzdWx0cyBmcm9tIGFuIGVudGl0eSB0cmFuc2FjdGlv biwgZWFjaCBwYXJ0eSB0byB0aGF0Cit0cmFuc2FjdGlvbiB3aG8gcmVjZWl2ZXMgYSBjb3B5IG9m IHRoZSB3b3JrIGFsc28gcmVjZWl2ZXMgd2hhdGV2ZXIKK2xpY2Vuc2VzIHRvIHRoZSB3b3JrIHRo ZSBwYXJ0eSdzIHByZWRlY2Vzc29yIGluIGludGVyZXN0IGhhZCBvciBjb3VsZAorZ2l2ZSB1bmRl ciB0aGUgcHJldmlvdXMgcGFyYWdyYXBoLCBwbHVzIGEgcmlnaHQgdG8gcG9zc2Vzc2lvbiBvZiB0 aGUKK0NvcnJlc3BvbmRpbmcgU291cmNlIG9mIHRoZSB3b3JrIGZyb20gdGhlIHByZWRlY2Vzc29y IGluIGludGVyZXN0LCBpZgordGhlIHByZWRlY2Vzc29yIGhhcyBpdCBvciBjYW4gZ2V0IGl0IHdp dGggcmVhc29uYWJsZSBlZmZvcnRzLgorCisgIFlvdSBtYXkgbm90IGltcG9zZSBhbnkgZnVydGhl ciByZXN0cmljdGlvbnMgb24gdGhlIGV4ZXJjaXNlIG9mIHRoZQorcmlnaHRzIGdyYW50ZWQgb3Ig YWZmaXJtZWQgdW5kZXIgdGhpcyBMaWNlbnNlLiAgRm9yIGV4YW1wbGUsIHlvdSBtYXkKK25vdCBp bXBvc2UgYSBsaWNlbnNlIGZlZSwgcm95YWx0eSwgb3Igb3RoZXIgY2hhcmdlIGZvciBleGVyY2lz ZSBvZgorcmlnaHRzIGdyYW50ZWQgdW5kZXIgdGhpcyBMaWNlbnNlLCBhbmQgeW91IG1heSBub3Qg aW5pdGlhdGUgbGl0aWdhdGlvbgorKGluY2x1ZGluZyBhIGNyb3NzLWNsYWltIG9yIGNvdW50ZXJj bGFpbSBpbiBhIGxhd3N1aXQpIGFsbGVnaW5nIHRoYXQKK2FueSBwYXRlbnQgY2xhaW0gaXMgaW5m cmluZ2VkIGJ5IG1ha2luZywgdXNpbmcsIHNlbGxpbmcsIG9mZmVyaW5nIGZvcgorc2FsZSwgb3Ig aW1wb3J0aW5nIHRoZSBQcm9ncmFtIG9yIGFueSBwb3J0aW9uIG9mIGl0LgorCisgIDExLiBQYXRl bnRzLgorCisgIEEgImNvbnRyaWJ1dG9yIiBpcyBhIGNvcHlyaWdodCBob2xkZXIgd2hvIGF1dGhv cml6ZXMgdXNlIHVuZGVyIHRoaXMKK0xpY2Vuc2Ugb2YgdGhlIFByb2dyYW0gb3IgYSB3b3JrIG9u IHdoaWNoIHRoZSBQcm9ncmFtIGlzIGJhc2VkLiAgVGhlCit3b3JrIHRodXMgbGljZW5zZWQgaXMg Y2FsbGVkIHRoZSBjb250cmlidXRvcidzICJjb250cmlidXRvciB2ZXJzaW9uIi4KKworICBBIGNv bnRyaWJ1dG9yJ3MgImVzc2VudGlhbCBwYXRlbnQgY2xhaW1zIiBhcmUgYWxsIHBhdGVudCBjbGFp bXMKK293bmVkIG9yIGNvbnRyb2xsZWQgYnkgdGhlIGNvbnRyaWJ1dG9yLCB3aGV0aGVyIGFscmVh ZHkgYWNxdWlyZWQgb3IKK2hlcmVhZnRlciBhY3F1aXJlZCwgdGhhdCB3b3VsZCBiZSBpbmZyaW5n ZWQgYnkgc29tZSBtYW5uZXIsIHBlcm1pdHRlZAorYnkgdGhpcyBMaWNlbnNlLCBvZiBtYWtpbmcs IHVzaW5nLCBvciBzZWxsaW5nIGl0cyBjb250cmlidXRvciB2ZXJzaW9uLAorYnV0IGRvIG5vdCBp bmNsdWRlIGNsYWltcyB0aGF0IHdvdWxkIGJlIGluZnJpbmdlZCBvbmx5IGFzIGEKK2NvbnNlcXVl bmNlIG9mIGZ1cnRoZXIgbW9kaWZpY2F0aW9uIG9mIHRoZSBjb250cmlidXRvciB2ZXJzaW9uLiAg Rm9yCitwdXJwb3NlcyBvZiB0aGlzIGRlZmluaXRpb24sICJjb250cm9sIiBpbmNsdWRlcyB0aGUg cmlnaHQgdG8gZ3JhbnQKK3BhdGVudCBzdWJsaWNlbnNlcyBpbiBhIG1hbm5lciBjb25zaXN0ZW50 IHdpdGggdGhlIHJlcXVpcmVtZW50cyBvZgordGhpcyBMaWNlbnNlLgorCisgIEVhY2ggY29udHJp YnV0b3IgZ3JhbnRzIHlvdSBhIG5vbi1leGNsdXNpdmUsIHdvcmxkd2lkZSwgcm95YWx0eS1mcmVl CitwYXRlbnQgbGljZW5zZSB1bmRlciB0aGUgY29udHJpYnV0b3IncyBlc3NlbnRpYWwgcGF0ZW50 IGNsYWltcywgdG8KK21ha2UsIHVzZSwgc2VsbCwgb2ZmZXIgZm9yIHNhbGUsIGltcG9ydCBhbmQg b3RoZXJ3aXNlIHJ1biwgbW9kaWZ5IGFuZAorcHJvcGFnYXRlIHRoZSBjb250ZW50cyBvZiBpdHMg Y29udHJpYnV0b3IgdmVyc2lvbi4KKworICBJbiB0aGUgZm9sbG93aW5nIHRocmVlIHBhcmFncmFw aHMsIGEgInBhdGVudCBsaWNlbnNlIiBpcyBhbnkgZXhwcmVzcworYWdyZWVtZW50IG9yIGNvbW1p dG1lbnQsIGhvd2V2ZXIgZGVub21pbmF0ZWQsIG5vdCB0byBlbmZvcmNlIGEgcGF0ZW50Cisoc3Vj aCBhcyBhbiBleHByZXNzIHBlcm1pc3Npb24gdG8gcHJhY3RpY2UgYSBwYXRlbnQgb3IgY292ZW5h bnQgbm90IHRvCitzdWUgZm9yIHBhdGVudCBpbmZyaW5nZW1lbnQpLiAgVG8gImdyYW50IiBzdWNo IGEgcGF0ZW50IGxpY2Vuc2UgdG8gYQorcGFydHkgbWVhbnMgdG8gbWFrZSBzdWNoIGFuIGFncmVl bWVudCBvciBjb21taXRtZW50IG5vdCB0byBlbmZvcmNlIGEKK3BhdGVudCBhZ2FpbnN0IHRoZSBw YXJ0eS4KKworICBJZiB5b3UgY29udmV5IGEgY292ZXJlZCB3b3JrLCBrbm93aW5nbHkgcmVseWlu ZyBvbiBhIHBhdGVudCBsaWNlbnNlLAorYW5kIHRoZSBDb3JyZXNwb25kaW5nIFNvdXJjZSBvZiB0 aGUgd29yayBpcyBub3QgYXZhaWxhYmxlIGZvciBhbnlvbmUKK3RvIGNvcHksIGZyZWUgb2YgY2hh cmdlIGFuZCB1bmRlciB0aGUgdGVybXMgb2YgdGhpcyBMaWNlbnNlLCB0aHJvdWdoIGEKK3B1Ymxp Y2x5IGF2YWlsYWJsZSBuZXR3b3JrIHNlcnZlciBvciBvdGhlciByZWFkaWx5IGFjY2Vzc2libGUg bWVhbnMsCit0aGVuIHlvdSBtdXN0IGVpdGhlciAoMSkgY2F1c2UgdGhlIENvcnJlc3BvbmRpbmcg U291cmNlIHRvIGJlIHNvCithdmFpbGFibGUsIG9yICgyKSBhcnJhbmdlIHRvIGRlcHJpdmUgeW91 cnNlbGYgb2YgdGhlIGJlbmVmaXQgb2YgdGhlCitwYXRlbnQgbGljZW5zZSBmb3IgdGhpcyBwYXJ0 aWN1bGFyIHdvcmssIG9yICgzKSBhcnJhbmdlLCBpbiBhIG1hbm5lcgorY29uc2lzdGVudCB3aXRo IHRoZSByZXF1aXJlbWVudHMgb2YgdGhpcyBMaWNlbnNlLCB0byBleHRlbmQgdGhlIHBhdGVudAor bGljZW5zZSB0byBkb3duc3RyZWFtIHJlY2lwaWVudHMuICAiS25vd2luZ2x5IHJlbHlpbmciIG1l YW5zIHlvdSBoYXZlCithY3R1YWwga25vd2xlZGdlIHRoYXQsIGJ1dCBmb3IgdGhlIHBhdGVudCBs aWNlbnNlLCB5b3VyIGNvbnZleWluZyB0aGUKK2NvdmVyZWQgd29yayBpbiBhIGNvdW50cnksIG9y IHlvdXIgcmVjaXBpZW50J3MgdXNlIG9mIHRoZSBjb3ZlcmVkIHdvcmsKK2luIGEgY291bnRyeSwg d291bGQgaW5mcmluZ2Ugb25lIG9yIG1vcmUgaWRlbnRpZmlhYmxlIHBhdGVudHMgaW4gdGhhdAor Y291bnRyeSB0aGF0IHlvdSBoYXZlIHJlYXNvbiB0byBiZWxpZXZlIGFyZSB2YWxpZC4KKworICBJ ZiwgcHVyc3VhbnQgdG8gb3IgaW4gY29ubmVjdGlvbiB3aXRoIGEgc2luZ2xlIHRyYW5zYWN0aW9u IG9yCithcnJhbmdlbWVudCwgeW91IGNvbnZleSwgb3IgcHJvcGFnYXRlIGJ5IHByb2N1cmluZyBj b252ZXlhbmNlIG9mLCBhCitjb3ZlcmVkIHdvcmssIGFuZCBncmFudCBhIHBhdGVudCBsaWNlbnNl IHRvIHNvbWUgb2YgdGhlIHBhcnRpZXMKK3JlY2VpdmluZyB0aGUgY292ZXJlZCB3b3JrIGF1dGhv cml6aW5nIHRoZW0gdG8gdXNlLCBwcm9wYWdhdGUsIG1vZGlmeQorb3IgY29udmV5IGEgc3BlY2lm aWMgY29weSBvZiB0aGUgY292ZXJlZCB3b3JrLCB0aGVuIHRoZSBwYXRlbnQgbGljZW5zZQoreW91 IGdyYW50IGlzIGF1dG9tYXRpY2FsbHkgZXh0ZW5kZWQgdG8gYWxsIHJlY2lwaWVudHMgb2YgdGhl IGNvdmVyZWQKK3dvcmsgYW5kIHdvcmtzIGJhc2VkIG9uIGl0LgorCisgIEEgcGF0ZW50IGxpY2Vu c2UgaXMgImRpc2NyaW1pbmF0b3J5IiBpZiBpdCBkb2VzIG5vdCBpbmNsdWRlIHdpdGhpbgordGhl IHNjb3BlIG9mIGl0cyBjb3ZlcmFnZSwgcHJvaGliaXRzIHRoZSBleGVyY2lzZSBvZiwgb3IgaXMK K2NvbmRpdGlvbmVkIG9uIHRoZSBub24tZXhlcmNpc2Ugb2Ygb25lIG9yIG1vcmUgb2YgdGhlIHJp Z2h0cyB0aGF0IGFyZQorc3BlY2lmaWNhbGx5IGdyYW50ZWQgdW5kZXIgdGhpcyBMaWNlbnNlLiAg WW91IG1heSBub3QgY29udmV5IGEgY292ZXJlZAord29yayBpZiB5b3UgYXJlIGEgcGFydHkgdG8g YW4gYXJyYW5nZW1lbnQgd2l0aCBhIHRoaXJkIHBhcnR5IHRoYXQgaXMKK2luIHRoZSBidXNpbmVz cyBvZiBkaXN0cmlidXRpbmcgc29mdHdhcmUsIHVuZGVyIHdoaWNoIHlvdSBtYWtlIHBheW1lbnQK K3RvIHRoZSB0aGlyZCBwYXJ0eSBiYXNlZCBvbiB0aGUgZXh0ZW50IG9mIHlvdXIgYWN0aXZpdHkg b2YgY29udmV5aW5nCit0aGUgd29yaywgYW5kIHVuZGVyIHdoaWNoIHRoZSB0aGlyZCBwYXJ0eSBn cmFudHMsIHRvIGFueSBvZiB0aGUKK3BhcnRpZXMgd2hvIHdvdWxkIHJlY2VpdmUgdGhlIGNvdmVy ZWQgd29yayBmcm9tIHlvdSwgYSBkaXNjcmltaW5hdG9yeQorcGF0ZW50IGxpY2Vuc2UgKGEpIGlu IGNvbm5lY3Rpb24gd2l0aCBjb3BpZXMgb2YgdGhlIGNvdmVyZWQgd29yaworY29udmV5ZWQgYnkg eW91IChvciBjb3BpZXMgbWFkZSBmcm9tIHRob3NlIGNvcGllcyksIG9yIChiKSBwcmltYXJpbHkK K2ZvciBhbmQgaW4gY29ubmVjdGlvbiB3aXRoIHNwZWNpZmljIHByb2R1Y3RzIG9yIGNvbXBpbGF0 aW9ucyB0aGF0Citjb250YWluIHRoZSBjb3ZlcmVkIHdvcmssIHVubGVzcyB5b3UgZW50ZXJlZCBp bnRvIHRoYXQgYXJyYW5nZW1lbnQsCitvciB0aGF0IHBhdGVudCBsaWNlbnNlIHdhcyBncmFudGVk LCBwcmlvciB0byAyOCBNYXJjaCAyMDA3LgorCisgIE5vdGhpbmcgaW4gdGhpcyBMaWNlbnNlIHNo YWxsIGJlIGNvbnN0cnVlZCBhcyBleGNsdWRpbmcgb3IgbGltaXRpbmcKK2FueSBpbXBsaWVkIGxp Y2Vuc2Ugb3Igb3RoZXIgZGVmZW5zZXMgdG8gaW5mcmluZ2VtZW50IHRoYXQgbWF5CitvdGhlcndp c2UgYmUgYXZhaWxhYmxlIHRvIHlvdSB1bmRlciBhcHBsaWNhYmxlIHBhdGVudCBsYXcuCisKKyAg MTIuIE5vIFN1cnJlbmRlciBvZiBPdGhlcnMnIEZyZWVkb20uCisKKyAgSWYgY29uZGl0aW9ucyBh cmUgaW1wb3NlZCBvbiB5b3UgKHdoZXRoZXIgYnkgY291cnQgb3JkZXIsIGFncmVlbWVudCBvcgor b3RoZXJ3aXNlKSB0aGF0IGNvbnRyYWRpY3QgdGhlIGNvbmRpdGlvbnMgb2YgdGhpcyBMaWNlbnNl LCB0aGV5IGRvIG5vdAorZXhjdXNlIHlvdSBmcm9tIHRoZSBjb25kaXRpb25zIG9mIHRoaXMgTGlj ZW5zZS4gIElmIHlvdSBjYW5ub3QgY29udmV5IGEKK2NvdmVyZWQgd29yayBzbyBhcyB0byBzYXRp c2Z5IHNpbXVsdGFuZW91c2x5IHlvdXIgb2JsaWdhdGlvbnMgdW5kZXIgdGhpcworTGljZW5zZSBh bmQgYW55IG90aGVyIHBlcnRpbmVudCBvYmxpZ2F0aW9ucywgdGhlbiBhcyBhIGNvbnNlcXVlbmNl IHlvdSBtYXkKK25vdCBjb252ZXkgaXQgYXQgYWxsLiAgRm9yIGV4YW1wbGUsIGlmIHlvdSBhZ3Jl ZSB0byB0ZXJtcyB0aGF0IG9ibGlnYXRlIHlvdQordG8gY29sbGVjdCBhIHJveWFsdHkgZm9yIGZ1 cnRoZXIgY29udmV5aW5nIGZyb20gdGhvc2UgdG8gd2hvbSB5b3UgY29udmV5Cit0aGUgUHJvZ3Jh bSwgdGhlIG9ubHkgd2F5IHlvdSBjb3VsZCBzYXRpc2Z5IGJvdGggdGhvc2UgdGVybXMgYW5kIHRo aXMKK0xpY2Vuc2Ugd291bGQgYmUgdG8gcmVmcmFpbiBlbnRpcmVseSBmcm9tIGNvbnZleWluZyB0 aGUgUHJvZ3JhbS4KKworICAxMy4gVXNlIHdpdGggdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJs aWMgTGljZW5zZS4KKworICBOb3R3aXRoc3RhbmRpbmcgYW55IG90aGVyIHByb3Zpc2lvbiBvZiB0 aGlzIExpY2Vuc2UsIHlvdSBoYXZlCitwZXJtaXNzaW9uIHRvIGxpbmsgb3IgY29tYmluZSBhbnkg Y292ZXJlZCB3b3JrIHdpdGggYSB3b3JrIGxpY2Vuc2VkCit1bmRlciB2ZXJzaW9uIDMgb2YgdGhl IEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpbnRvIGEgc2luZ2xlCitjb21iaW5l ZCB3b3JrLCBhbmQgdG8gY29udmV5IHRoZSByZXN1bHRpbmcgd29yay4gIFRoZSB0ZXJtcyBvZiB0 aGlzCitMaWNlbnNlIHdpbGwgY29udGludWUgdG8gYXBwbHkgdG8gdGhlIHBhcnQgd2hpY2ggaXMg dGhlIGNvdmVyZWQgd29yaywKK2J1dCB0aGUgc3BlY2lhbCByZXF1aXJlbWVudHMgb2YgdGhlIEdO VSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwKK3NlY3Rpb24gMTMsIGNvbmNlcm5pbmcg aW50ZXJhY3Rpb24gdGhyb3VnaCBhIG5ldHdvcmsgd2lsbCBhcHBseSB0byB0aGUKK2NvbWJpbmF0 aW9uIGFzIHN1Y2guCisKKyAgMTQuIFJldmlzZWQgVmVyc2lvbnMgb2YgdGhpcyBMaWNlbnNlLgor CisgIFRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gbWF5IHB1Ymxpc2ggcmV2aXNlZCBhbmQv b3IgbmV3IHZlcnNpb25zIG9mCit0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZnJvbSB0 aW1lIHRvIHRpbWUuICBTdWNoIG5ldyB2ZXJzaW9ucyB3aWxsCitiZSBzaW1pbGFyIGluIHNwaXJp dCB0byB0aGUgcHJlc2VudCB2ZXJzaW9uLCBidXQgbWF5IGRpZmZlciBpbiBkZXRhaWwgdG8KK2Fk ZHJlc3MgbmV3IHByb2JsZW1zIG9yIGNvbmNlcm5zLgorCisgIEVhY2ggdmVyc2lvbiBpcyBnaXZl biBhIGRpc3Rpbmd1aXNoaW5nIHZlcnNpb24gbnVtYmVyLiAgSWYgdGhlCitQcm9ncmFtIHNwZWNp ZmllcyB0aGF0IGEgY2VydGFpbiBudW1iZXJlZCB2ZXJzaW9uIG9mIHRoZSBHTlUgR2VuZXJhbAor UHVibGljIExpY2Vuc2UgIm9yIGFueSBsYXRlciB2ZXJzaW9uIiBhcHBsaWVzIHRvIGl0LCB5b3Ug aGF2ZSB0aGUKK29wdGlvbiBvZiBmb2xsb3dpbmcgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIGVp dGhlciBvZiB0aGF0IG51bWJlcmVkCit2ZXJzaW9uIG9yIG9mIGFueSBsYXRlciB2ZXJzaW9uIHB1 Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQorRm91bmRhdGlvbi4gIElmIHRoZSBQcm9ncmFt IGRvZXMgbm90IHNwZWNpZnkgYSB2ZXJzaW9uIG51bWJlciBvZiB0aGUKK0dOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlLCB5b3UgbWF5IGNob29zZSBhbnkgdmVyc2lvbiBldmVyIHB1Ymxpc2hlZAor YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKworICBJZiB0aGUgUHJvZ3JhbSBzcGVj aWZpZXMgdGhhdCBhIHByb3h5IGNhbiBkZWNpZGUgd2hpY2ggZnV0dXJlCit2ZXJzaW9ucyBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgY2FuIGJlIHVzZWQsIHRoYXQgcHJveHkncwor cHVibGljIHN0YXRlbWVudCBvZiBhY2NlcHRhbmNlIG9mIGEgdmVyc2lvbiBwZXJtYW5lbnRseSBh dXRob3JpemVzIHlvdQordG8gY2hvb3NlIHRoYXQgdmVyc2lvbiBmb3IgdGhlIFByb2dyYW0uCisK KyAgTGF0ZXIgbGljZW5zZSB2ZXJzaW9ucyBtYXkgZ2l2ZSB5b3UgYWRkaXRpb25hbCBvciBkaWZm ZXJlbnQKK3Blcm1pc3Npb25zLiAgSG93ZXZlciwgbm8gYWRkaXRpb25hbCBvYmxpZ2F0aW9ucyBh cmUgaW1wb3NlZCBvbiBhbnkKK2F1dGhvciBvciBjb3B5cmlnaHQgaG9sZGVyIGFzIGEgcmVzdWx0 IG9mIHlvdXIgY2hvb3NpbmcgdG8gZm9sbG93IGEKK2xhdGVyIHZlcnNpb24uCisKKyAgMTUuIERp c2NsYWltZXIgb2YgV2FycmFudHkuCisKKyAgVEhFUkUgSVMgTk8gV0FSUkFOVFkgRk9SIFRIRSBQ Uk9HUkFNLCBUTyBUSEUgRVhURU5UIFBFUk1JVFRFRCBCWQorQVBQTElDQUJMRSBMQVcuICBFWENF UFQgV0hFTiBPVEhFUldJU0UgU1RBVEVEIElOIFdSSVRJTkcgVEhFIENPUFlSSUdIVAorSE9MREVS UyBBTkQvT1IgT1RIRVIgUEFSVElFUyBQUk9WSURFIFRIRSBQUk9HUkFNICJBUyBJUyIgV0lUSE9V VCBXQVJSQU5UWQorT0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBSRVNTRUQgT1IgSU1QTElFRCwgSU5D TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCitUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCitQVVJQT1NFLiAgVEhF IEVOVElSRSBSSVNLIEFTIFRPIFRIRSBRVUFMSVRZIEFORCBQRVJGT1JNQU5DRSBPRiBUSEUgUFJP R1JBTQorSVMgV0lUSCBZT1UuICBTSE9VTEQgVEhFIFBST0dSQU0gUFJPVkUgREVGRUNUSVZFLCBZ T1UgQVNTVU1FIFRIRSBDT1NUIE9GCitBTEwgTkVDRVNTQVJZIFNFUlZJQ0lORywgUkVQQUlSIE9S IENPUlJFQ1RJT04uCisKKyAgMTYuIExpbWl0YXRpb24gb2YgTGlhYmlsaXR5LgorCisgIElOIE5P IEVWRU5UIFVOTEVTUyBSRVFVSVJFRCBCWSBBUFBMSUNBQkxFIExBVyBPUiBBR1JFRUQgVE8gSU4g V1JJVElORworV0lMTCBBTlkgQ09QWVJJR0hUIEhPTERFUiwgT1IgQU5ZIE9USEVSIFBBUlRZIFdI TyBNT0RJRklFUyBBTkQvT1IgQ09OVkVZUworVEhFIFBST0dSQU0gQVMgUEVSTUlUVEVEIEFCT1ZF LCBCRSBMSUFCTEUgVE8gWU9VIEZPUiBEQU1BR0VTLCBJTkNMVURJTkcgQU5ZCitHRU5FUkFMLCBT UEVDSUFMLCBJTkNJREVOVEFMIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBBUklTSU5HIE9VVCBP RiBUSEUKK1VTRSBPUiBJTkFCSUxJVFkgVE8gVVNFIFRIRSBQUk9HUkFNIChJTkNMVURJTkcgQlVU IE5PVCBMSU1JVEVEIFRPIExPU1MgT0YKK0RBVEEgT1IgREFUQSBCRUlORyBSRU5ERVJFRCBJTkFD Q1VSQVRFIE9SIExPU1NFUyBTVVNUQUlORUQgQlkgWU9VIE9SIFRISVJECitQQVJUSUVTIE9SIEEg RkFJTFVSRSBPRiBUSEUgUFJPR1JBTSBUTyBPUEVSQVRFIFdJVEggQU5ZIE9USEVSIFBST0dSQU1T KSwKK0VWRU4gSUYgU1VDSCBIT0xERVIgT1IgT1RIRVIgUEFSVFkgSEFTIEJFRU4gQURWSVNFRCBP RiBUSEUgUE9TU0lCSUxJVFkgT0YKK1NVQ0ggREFNQUdFUy4KKworICAxNy4gSW50ZXJwcmV0YXRp b24gb2YgU2VjdGlvbnMgMTUgYW5kIDE2LgorCisgIElmIHRoZSBkaXNjbGFpbWVyIG9mIHdhcnJh bnR5IGFuZCBsaW1pdGF0aW9uIG9mIGxpYWJpbGl0eSBwcm92aWRlZAorYWJvdmUgY2Fubm90IGJl IGdpdmVuIGxvY2FsIGxlZ2FsIGVmZmVjdCBhY2NvcmRpbmcgdG8gdGhlaXIgdGVybXMsCityZXZp ZXdpbmcgY291cnRzIHNoYWxsIGFwcGx5IGxvY2FsIGxhdyB0aGF0IG1vc3QgY2xvc2VseSBhcHBy b3hpbWF0ZXMKK2FuIGFic29sdXRlIHdhaXZlciBvZiBhbGwgY2l2aWwgbGlhYmlsaXR5IGluIGNv bm5lY3Rpb24gd2l0aCB0aGUKK1Byb2dyYW0sIHVubGVzcyBhIHdhcnJhbnR5IG9yIGFzc3VtcHRp b24gb2YgbGlhYmlsaXR5IGFjY29tcGFuaWVzIGEKK2NvcHkgb2YgdGhlIFByb2dyYW0gaW4gcmV0 dXJuIGZvciBhIGZlZS4KKworICAgICAgICAgICAgICAgICAgICAgRU5EIE9GIFRFUk1TIEFORCBD T05ESVRJT05TCisKKyAgICAgICAgICAgIEhvdyB0byBBcHBseSBUaGVzZSBUZXJtcyB0byBZb3Vy IE5ldyBQcm9ncmFtcworCisgIElmIHlvdSBkZXZlbG9wIGEgbmV3IHByb2dyYW0sIGFuZCB5b3Ug d2FudCBpdCB0byBiZSBvZiB0aGUgZ3JlYXRlc3QKK3Bvc3NpYmxlIHVzZSB0byB0aGUgcHVibGlj LCB0aGUgYmVzdCB3YXkgdG8gYWNoaWV2ZSB0aGlzIGlzIHRvIG1ha2UgaXQKK2ZyZWUgc29mdHdh cmUgd2hpY2ggZXZlcnlvbmUgY2FuIHJlZGlzdHJpYnV0ZSBhbmQgY2hhbmdlIHVuZGVyIHRoZXNl IHRlcm1zLgorCisgIFRvIGRvIHNvLCBhdHRhY2ggdGhlIGZvbGxvd2luZyBub3RpY2VzIHRvIHRo ZSBwcm9ncmFtLiAgSXQgaXMgc2FmZXN0Cit0byBhdHRhY2ggdGhlbSB0byB0aGUgc3RhcnQgb2Yg ZWFjaCBzb3VyY2UgZmlsZSB0byBtb3N0IGVmZmVjdGl2ZWx5CitzdGF0ZSB0aGUgZXhjbHVzaW9u IG9mIHdhcnJhbnR5OyBhbmQgZWFjaCBmaWxlIHNob3VsZCBoYXZlIGF0IGxlYXN0Cit0aGUgImNv cHlyaWdodCIgbGluZSBhbmQgYSBwb2ludGVyIHRvIHdoZXJlIHRoZSBmdWxsIG5vdGljZSBpcyBm b3VuZC4KKworICAgIDxvbmUgbGluZSB0byBnaXZlIHRoZSBwcm9ncmFtJ3MgbmFtZSBhbmQgYSBi cmllZiBpZGVhIG9mIHdoYXQgaXQgZG9lcy4+CisgICAgQ29weXJpZ2h0IChDKSA8eWVhcj4gIDxu YW1lIG9mIGF1dGhvcj4KKworICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgICAgaXQgdW5kZXIgdGhlIHRlcm1z IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAgICB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNl bnNlLCBvcgorICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBU aGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w bGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w eSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMg cHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKwor QWxzbyBhZGQgaW5mb3JtYXRpb24gb24gaG93IHRvIGNvbnRhY3QgeW91IGJ5IGVsZWN0cm9uaWMg YW5kIHBhcGVyIG1haWwuCisKKyAgSWYgdGhlIHByb2dyYW0gZG9lcyB0ZXJtaW5hbCBpbnRlcmFj dGlvbiwgbWFrZSBpdCBvdXRwdXQgYSBzaG9ydAorbm90aWNlIGxpa2UgdGhpcyB3aGVuIGl0IHN0 YXJ0cyBpbiBhbiBpbnRlcmFjdGl2ZSBtb2RlOgorCisgICAgPHByb2dyYW0+ICBDb3B5cmlnaHQg KEMpIDx5ZWFyPiAgPG5hbWUgb2YgYXV0aG9yPgorICAgIFRoaXMgcHJvZ3JhbSBjb21lcyB3aXRo IEFCU09MVVRFTFkgTk8gV0FSUkFOVFk7IGZvciBkZXRhaWxzIHR5cGUgYHNob3cgdycuCisgICAg VGhpcyBpcyBmcmVlIHNvZnR3YXJlLCBhbmQgeW91IGFyZSB3ZWxjb21lIHRvIHJlZGlzdHJpYnV0 ZSBpdAorICAgIHVuZGVyIGNlcnRhaW4gY29uZGl0aW9uczsgdHlwZSBgc2hvdyBjJyBmb3IgZGV0 YWlscy4KKworVGhlIGh5cG90aGV0aWNhbCBjb21tYW5kcyBgc2hvdyB3JyBhbmQgYHNob3cgYycg c2hvdWxkIHNob3cgdGhlIGFwcHJvcHJpYXRlCitwYXJ0cyBvZiB0aGUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZS4gIE9mIGNvdXJzZSwgeW91ciBwcm9ncmFtJ3MgY29tbWFuZHMKK21pZ2h0IGJlIGRp ZmZlcmVudDsgZm9yIGEgR1VJIGludGVyZmFjZSwgeW91IHdvdWxkIHVzZSBhbiAiYWJvdXQgYm94 Ii4KKworICBZb3Ugc2hvdWxkIGFsc28gZ2V0IHlvdXIgZW1wbG95ZXIgKGlmIHlvdSB3b3JrIGFz IGEgcHJvZ3JhbW1lcikgb3Igc2Nob29sLAoraWYgYW55LCB0byBzaWduIGEgImNvcHlyaWdodCBk aXNjbGFpbWVyIiBmb3IgdGhlIHByb2dyYW0sIGlmIG5lY2Vzc2FyeS4KK0ZvciBtb3JlIGluZm9y bWF0aW9uIG9uIHRoaXMsIGFuZCBob3cgdG8gYXBwbHkgYW5kIGZvbGxvdyB0aGUgR05VIEdQTCwg c2VlCis8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisKKyAgVGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGRvZXMgbm90IHBlcm1pdCBpbmNvcnBvcmF0aW5nIHlvdXIgcHJvZ3Jh bQoraW50byBwcm9wcmlldGFyeSBwcm9ncmFtcy4gIElmIHlvdXIgcHJvZ3JhbSBpcyBhIHN1YnJv dXRpbmUgbGlicmFyeSwgeW91CittYXkgY29uc2lkZXIgaXQgbW9yZSB1c2VmdWwgdG8gcGVybWl0 IGxpbmtpbmcgcHJvcHJpZXRhcnkgYXBwbGljYXRpb25zIHdpdGgKK3RoZSBsaWJyYXJ5LiAgSWYg dGhpcyBpcyB3aGF0IHlvdSB3YW50IHRvIGRvLCB1c2UgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbAor UHVibGljIExpY2Vuc2UgaW5zdGVhZCBvZiB0aGlzIExpY2Vuc2UuICBCdXQgZmlyc3QsIHBsZWFz ZSByZWFkCis8aHR0cDovL3d3dy5nbnUub3JnL3BoaWxvc29waHkvd2h5LW5vdC1sZ3BsLmh0bWw+ LgoKZGlmZiAtLWdpdCBhL2ZlZG9yYS1idXJuLXl1YmlrZXkucHkgYi9mZWRvcmEtYnVybi15dWJp a2V5LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVlZmQ5OWUKLS0tIC9k ZXYvbnVsbAorKysgYi9mZWRvcmEtYnVybi15dWJpa2V5LnB5CkBAIC0wLDAgKzEsOTMgQEAKKyMh L3Vzci9iaW4vcHl0aG9uMworCisjIENvcHlyaWdodCAoQykgMjAxMCBSZWQgSGF0IEluYy4KKyMg QXV0aG9yOiBNaWtlIE1jR3JhdGggPG1tY2dyYXRoQHJlZGhhdC5jb20+CisjIAorIyBUaGlzIHBy b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeSBpdAorIyB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKKyMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo ZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91cgorIyBvcHRpb24pIGFueSBs YXRlciB2ZXJzaW9uLiAgU2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9jb3B5bGVmdC9ncGwuaHRtbCBm b3IKKyMgdGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZS4KKworIyB5a3BlcnNvbmFsaXplIC1v Zml4ZWQ9Y2NjY2NjY2NjY2NpIC1hZmNhYTBjNWJmMmU4M2VjMDQwZTRhZWI3Zjg1NjUyOTMgLW91 aWQ9MWU3ZjFkYTdkNmQxCitmcm9tIGZlZG9yYS5jbGllbnQgaW1wb3J0IEFjY291bnRTeXN0ZW0s IEF1dGhFcnJvcgorZnJvbSBnZXRwYXNzIGltcG9ydCBnZXRwYXNzCitpbXBvcnQgc3lzCitpbXBv cnQgZ2V0dGV4dAorZnJvbSBvcHRwYXJzZSBpbXBvcnQgT3B0aW9uUGFyc2VyCitpbXBvcnQgeXVi aWNvCisKK3QgPSBnZXR0ZXh0LnRyYW5zbGF0aW9uKCdmYXMnLCAnL3Vzci9zaGFyZS9sb2NhbGUn LCBmYWxsYmFjayA9IFRydWUpCitfID0gdC5nZXR0ZXh0CisKK3RyeToKKyAgICB5a2V5ID0geXVi aWNvLmZpbmRfeXViaWtleShGYWxzZSkKK2V4Y2VwdCB5dWJpY28ueXViaWtleS5ZdWJpS2V5RXJy b3IgYXMgZXg6CisgICAgcHJpbnQoJ1VuYWJsZSB0byBnZXQgYWNjZXNzIHRvIGEgeXViaWtleTog JXMnICUgZXgpCisgICAgc3lzLmV4aXQoMSkKKworcGFyc2VyID0gT3B0aW9uUGFyc2VyKHZlcnNp b24gPSAiMC4xIikKK3BhcnNlci5hZGRfb3B0aW9uKCctdScsICctLXVzZXJuYW1lJywKKyAgICAg ICAgICAgICAgICAgIGRlc3QgPSAndXNlcm5hbWUnLAorICAgICAgICAgICAgICAgICAgZGVmYXVs dCA9IE5vbmUsCisgICAgICAgICAgICAgICAgICBtZXRhdmFyID0gJ3VzZXJuYW1lJywKKyAgICAg ICAgICAgICAgICAgIGhlbHAgPSBfKCdGZWRvcmEgQWNjb3VudCBTeXN0ZW0gdXNlcm5hbWUnKSkK K3BhcnNlci5hZGRfb3B0aW9uKCctUycsICctLXNsb3QnLAorICAgICAgICAgICAgICAgICAgZGVz dCA9ICdzbG90JywKKyAgICAgICAgICAgICAgICAgIGRlZmF1bHQgPSAnMScsCisgICAgICAgICAg ICAgICAgICBtZXRhdmFyID0gJ3Nsb3QnLAorICAgICAgICAgICAgICAgICAgaGVscCA9IF8oJ1Ro ZSBZdWJpa2V5IHNsb3QgdG8gYmUgdXNlZCcpKQorcGFyc2VyLmFkZF9vcHRpb24oJy1VJywgJy0t dXJsJywKKyAgICAgICAgICAgICAgICAgIGRlc3QgPSAndXJsJywKKyAgICAgICAgICAgICAgICAg IGRlZmF1bHQgPSAnaHR0cHM6Ly9hZG1pbi5mZWRvcmFwcm9qZWN0Lm9yZy9hY2NvdW50cy8nLAor ICAgICAgICAgICAgICAgICAgbWV0YXZhciA9ICd1cmwnLAorICAgICAgICAgICAgICAgICAgaGVs cCA9IF8oJ0ZBUyBVUkwgKERlZmF1bHQ6IGh0dHBzOi8vYWRtaW4uZmVkb3JhcHJvamVjdC5vcmcv YWNjb3VudHMvJykpCisKKyhvcHRzLCBhcmdzKSA9IHBhcnNlci5wYXJzZV9hcmdzKCkKK3Nsb3Qg PSBvcHRzLnNsb3QKKworaWYgbm90IG9wdHMudXNlcm5hbWU6CisgICAgcHJpbnQoXygnUGxlYXNl IHByb3ZpZGUgYSB1c2VybmFtZS4nKSkKKyAgICBwYXJzZXIucHJpbnRfaGVscCgpCisgICAgc3lz LmV4aXQoMCkKKworcHJpbnQoXygKKycnJworQXR0ZW50aW9uOiBZb3UgYXJlIGFib3V0IHRvIHJl cHJvZ3JhbSB5b3VyIHl1YmlrZXkhICBQbGVhc2UgZW5zdXJlIGl0IGlzCitwbHVnZ2VkIGluIHRv IHlvdXIgVVNCIHNsb3QgYmVmb3JlIGNvbnRpbnVpbmcuICBUaGUgc2VjcmV0IGtleSBjdXJyZW50 bHkgb24KK3lvdXIgeXViaWtleSB3aWxsIGJlIGRlc3Ryb3llZCBhcyBwYXJ0IG9mIHRoaXMgb3Bl cmF0aW9uIQorCisnJycpKQorCitwcmludCgnQ29udGFjdGluZyAlcycgJSBvcHRzLnVybCkKK3Bh c3N3b3JkID0gZ2V0cGFzcygnUGFzc3dvcmQgZm9yICVzOiAnICUgb3B0cy51c2VybmFtZSkKKwor ZmFzID0gQWNjb3VudFN5c3RlbSh1c2VybmFtZT1vcHRzLnVzZXJuYW1lLCBwYXNzd29yZD1wYXNz d29yZCwgYmFzZV91cmw9b3B0cy51cmwpCit0cnk6CisgICAgbmV3X2tleSA9IGZhcy5zZW5kX3Jl cXVlc3QoJ3l1YmlrZXkvZ2Vua2V5JywgYXV0aD1UcnVlKQorZXhjZXB0IEF1dGhFcnJvciBhcyBl OgorICAgIHByaW50KGUpCisgICAgc3lzLmV4aXQoMSkKKworcHJpbnQoIiIpCitwcmludChfKCdO ZXcga2V5IGdlbmVyYXRlZCBpbiBGQVMsIGF0dGVtcHRpbmcgdG8gYnVybiB0byB5dWJpa2V5Jykp CitwcmludCgiIikKKworb3B0cyA9IG5ld19rZXlbJ2tleSddLnNwbGl0KCkKKwordHJ5OgorICAg IHlrY29uZmlnID0geWtleS5pbml0X2NvbmZpZygpCisgICAgeWtjb25maWcubW9kZV95dWJpa2V5 X290cChmJ2g6e29wdHNbMV19Jy5lbmNvZGUoKSwgZidoOntvcHRzWzJdfScuZW5jb2RlKCkpCisg ICAgeWtjb25maWcuZml4ZWRfc3RyaW5nKHN0cihmJ206e29wdHNbMF19JykpCisgICAgeWtjb25m aWcudGlja2V0X2ZsYWcoJ0FQUEVORF9DUicsIFRydWUpCisgICAgeWtjb25maWcuY29uZmlnX2Zs YWcoJ1NUQVRJQ19USUNLRVQnLCBGYWxzZSkKKyAgICBpZiB5a2V5LnZlcnNpb25fbnVtKCkgPj0g KDIsIDEpOgorICAgICAgICB5a2NvbmZpZy5jb25maWdfZmxhZygnU1RST05HX1BXMScsIEZhbHNl KQorICAgICAgICB5a2NvbmZpZy5jb25maWdfZmxhZygnU1RST05HX1BXMicsIEZhbHNlKQorICAg ICAgICB5a2NvbmZpZy5jb25maWdfZmxhZygnTUFOX1VQREFURScsIEZhbHNlKQorICAgIGlmIHlr ZXkudmVyc2lvbl9udW0oKSA+PSAoMiwgMik6CisgICAgICAgIHlrY29uZmlnLmV4dGVuZGVkX2Zs YWcoJ1NFUklBTF9BUElfVklTSUJMRScsIFRydWUpCisgICAgeWtleS53cml0ZV9jb25maWcoeWtj b25maWcsIHNsb3Q9aW50KHNsb3QpKQorICAgIHByaW50KCJTdWNjZXNzISAgWW91ciBZdWJpa2V5 IElEIGlzICVzIiAlIG9wdHNbMF0pCitleGNlcHQgeXViaWNvLnl1YmlrZXkuWXViaUtleUVycm9y IGFzIGV4OgorICAgIHByaW50KCdZdWJpa2V5IGVycm9yOiAlcycgJSBleCkKCmRpZmYgLS1naXQg YS9mZWRvcmEtZ2V0c3ZuIGIvZmVkb3JhLWdldHN2bgpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRl eCAwMDAwMDAwLi43MmYwOGFiCi0tLSAvZGV2L251bGwKKysrIGIvZmVkb3JhLWdldHN2bgpAQCAt MCwwICsxLDIyIEBACisjISAvYmluL3NoCisKK2lmIFsgJCMgLW5lIDMgXTsKK3RoZW4KKwllY2hv ICJVc2FnZTogJDAgPHByb2plY3Q+IDx1cmw+IDxyZXZpc2lvbj4iCisJZXhpdCAxCitmaQorCitw cm9qZWN0PSQxCit1cmw9JDIKK3Jldj0kMworCit0bXBkaXI9YG1rdGVtcCAtZGAKK2N1cmRpcj1g cHdkYAorCisoCisgICAgY2QgJHt0bXBkaXJ9CisgICAgTEFORz1DIFRaPUdNVCBzdm4gZXhwb3J0 ICR7dXJsfSAtciAke3Jldn0gJHtwcm9qZWN0fQorICAgIHRhciBjanZmICR7Y3VyZGlyfS8ke3By b2plY3R9LXN2biR7cmV2fS50YXIuYnoyICR7cHJvamVjdH0KKykKKworcm0gLXJmICR7dG1wZGly fQoKZGlmZiAtLWdpdCBhL2ZlZG9yYS1wYWNrYWdlci5zcGVjIGIvZmVkb3JhLXBhY2thZ2VyLnNw ZWMKaW5kZXggOTcwZTkxOS4uYTk3ZjE2MSAxMDA2NDQKLS0tIGEvZmVkb3JhLXBhY2thZ2VyLnNw ZWMKKysrIGIvZmVkb3JhLXBhY2thZ2VyLnNwZWMKQEAgLTEsNyArMSwzIEBACi0laWYgISAoMCV7 P2ZlZG9yYX0gPiAxMiB8fCAwJXs/cmhlbH0gPiA1KQotJXshP3B5dGhvbl9zaXRlbGliOiAlZ2xv YmFsIHB5dGhvbl9zaXRlbGliICUoJXtfX3B5dGhvbn0gLWMgImZyb20gZGlzdHV0aWxzLnN5c2Nv bmZpZyBpbXBvcnQgZ2V0X3B5dGhvbl9saWI7IHByaW50KGdldF9weXRob25fbGliKCkpIil9Ci0l ZW5kaWYKLQogTmFtZTogICAgICAgICAgIGZlZG9yYS1wYWNrYWdlcgogVmVyc2lvbjogICAgICAg IDAuNi4wLjcKIFJlbGVhc2U6ICAgICAgICAlYXV0b3JlbGVhc2UKQEAgLTEwLDExICs2LDI1IEBA IFN1bW1hcnk6ICAgICAgICBUb29scyBmb3Igc2V0dGluZyB1cCBhIGZlZG9yYSBtYWludGFpbmVy IGVudmlyb25tZW50CiAjIEF1dG9tYXRpY2FsbHkgY29udmVydGVkIGZyb20gb2xkIGZvcm1hdDog R1BMdjIrIC0gcmV2aWV3IGlzIGhpZ2hseSByZWNvbW1lbmRlZC4KIExpY2Vuc2U6ICAgICAgICBH UEwtMi4wLW9yLWxhdGVyCiBVUkw6ICAgICAgICAgICAgaHR0cHM6Ly9wYWd1cmUuaW8vZmVkb3Jh LXBhY2thZ2VyCi1Tb3VyY2UwOiAgICAgICAgaHR0cHM6Ly9yZWxlYXNlcy5wYWd1cmUub3JnL2Zl ZG9yYS1wYWNrYWdlci9mZWRvcmEtcGFja2FnZXItJXt2ZXJzaW9ufS50YXIuYnoyCisKK1NvdXJj ZTA6ICAgICAgICBDT1BZSU5HCitTb3VyY2UxOiAgICAgICAgZmVkb3JhLWdldHN2bgorU291cmNl MjogICAgICAgIHBrZ25hbWUucHkKK1NvdXJjZTM6ICAgICAgICBycG1idWlsZC1tZDUKK1NvdXJj ZTQ6ICAgICAgICBzZWNvbmRhcnkta29qaQorU291cmNlNTogICAgICAgIGZraW5pdAorU291cmNl NjogICAgICAgIGZlZG9yYS1idXJuLXl1YmlrZXkucHkKKworU291cmNlMTA6ICAgICAgIGZlZG9y YS5jb25mCitTb3VyY2UxMTogICAgICAgczM5MC5jb25mCitTb3VyY2UxMjogICAgICAgc3RnLmNv bmYKK1NvdXJjZTEzOiAgICAgICBmZWRvcmFwcm9qZWN0X29yZworU291cmNlMTQ6ICAgICAgIHN0 Z19mZWRvcmFwcm9qZWN0X29yZworU291cmNlMTU6ICAgICAgIGZlZG9yYXByb2plY3RfaXBhX2Nh LmNydAorU291cmNlMTY6ICAgICAgIHN0Z19mZWRvcmFwcm9qZWN0X2lwYV9jYS5jcnQKIAogQnVp bGRSZXF1aXJlczogIHB5dGhvbjMtZGV2ZWwKLUJ1aWxkUmVxdWlyZXM6ICBtYWtlCi1CdWlsZFJl cXVpcmVzOiAgYXV0b21ha2UKKwogUmVxdWlyZXM6ICAgICAgIGtvamkgPj0gMS4xMS4wCiBSZXF1 aXJlczogICAgICAgYm9kaGktY2xpZW50CiBSZXF1aXJlczogICAgICAgcnBtLWJ1aWxkIHJwbWRl dnRvb2xzIHJwbWxpbnQKQEAgLTM2LDUxICs0Niw1NiBAQCBTdW1tYXJ5OiAgICAgICAgZmlsZXMg Zm9yIGNvbm5lY3RpbmcgdmlhIGtlcmJlcm9zIHRvIEZlZG9yYQogIyBUaGlzIGlzIHRoZSB2ZXJz aW9uIGluIHdoaWNoIFNOSSB3YXMgZml4ZWQKICVpZiAwJXs/ZmVkb3JhfQogUmVxdWlyZXM6ICAg ICAgIGtyYjUtd29ya3N0YXRpb24gPj0gMS4xNC4zLTQKLSVlbHNlCi0laWYgMCV7P3JoZWx9ID49 IDcKKyVlbGlmIDAlez9yaGVsfSA+PSA3CiBSZXF1aXJlczogICAgICAga3JiNS13b3Jrc3RhdGlv biAgPj0gMS4xNC4xLTI0CiAlZWxzZQogIyBvbGRlciByaGVscyB3b250IGZ1bGx5IHdvcmsgd2l0 aG91dCBjb25maWd1cmF0aW9uLCBidXQgbGV0cyBtYWtlIHN1cmUgdGhleSBoYXZlIGtyYgogIyB3 ZSBzaG91bGQgYmUgYWJsZSB0byBhc3N1bWUgbmV3ZXIgUkhFTHMncyB3aWxsIGhhdmUgYSBuZXcg ZW5vdWdoIHZlcnNpb24KIFJlcXVpcmVzOiAgICAgICBrcmI1LXdvcmtzdGF0aW9uCiAlZW5kaWYK LSVlbmRpZgogUmVxdWlyZXM6ICAgICAgIGtyYjUtcGtpbml0CiAKLUJ1aWxkQXJjaDogICAgICBu b2FyY2gKLQogJWRlc2NyaXB0aW9uIGtlcmJlcm9zCiBGaWxlcyBmb3IgY29ubmVjdGluZyB2aWEg a2VyYmVyb3MgdG8gRmVkb3JhCiAKICVwcmVwCi0lc2V0dXAgLXEKKyMgbmFkYQogCiAlYnVpbGQK LSVjb25maWd1cmUgUFlUSE9OPSV7X19weXRob24zfQotJW1ha2VfYnVpbGQKKyMgbmFkYQogCiAl aW5zdGFsbAotJW1ha2VfaW5zdGFsbAotc2VkIC1pIC1yICdzfCMhL3Vzci9iaW4vcHl0aG9uJHwj ISV7X19weXRob24zfXwnICV7YnVpbGRyb290fS91c3IvKmJpbi8qCitpbnN0YWxsIC1EICV7U09V UkNFMH0gJXtidWlsZHJvb3R9JXtfbGljZW5zZWRpcn0vJXtuYW1lfS9DT1BZSU5HCitpbnN0YWxs IC1EICV7U09VUkNFMX0gJXtidWlsZHJvb3R9JXtfYmluZGlyfS9mZWRvcmEtZ2V0c3ZuCitpbnN0 YWxsIC1EICV7U09VUkNFMn0gJXtidWlsZHJvb3R9JXtfYmluZGlyfS9wa2duYW1lCitpbnN0YWxs IC1EICV7U09VUkNFM30gJXtidWlsZHJvb3R9JXtfYmluZGlyfS9ycG1idWlsZC1tZDUKK2luc3Rh bGwgLUQgJXtTT1VSQ0U0fSAle2J1aWxkcm9vdH0le19iaW5kaXJ9L3MzOTAta29qaQoraW5zdGFs bCAtRCAle1NPVVJDRTR9ICV7YnVpbGRyb290fSV7X2JpbmRpcn0vc3RnLWtvamkKK2luc3RhbGwg LUQgJXtTT1VSQ0U1fSAle2J1aWxkcm9vdH0le19iaW5kaXJ9L2ZraW5pdAoraW5zdGFsbCAtRCAl e1NPVVJDRTZ9ICV7YnVpbGRyb290fSV7X2JpbmRpcn0vZmVkb3JhLWJ1cm4teXViaWtleQorCitp bnN0YWxsIC1tMDY0NCAtRHQgJXtidWlsZHJvb3R9JXtfc3lzY29uZmRpcn0va29qaS5jb25mLmQv IFwKKyAgJXtTT1VSQ0UxMH0gJXtTT1VSQ0UxMX0gJXtTT1VSQ0UxMn0KK2luc3RhbGwgLW0wNjQ0 IC1EdCAle2J1aWxkcm9vdH0le19zeXNjb25mZGlyfS9rcmI1LmNvbmYuZC8gXAorICAle1NPVVJD RTEzfSAle1NPVVJDRTE0fQoraW5zdGFsbCAtbTA2NDQgLUR0ICV7YnVpbGRyb290fSV7X3N5c2Nv bmZkaXJ9L3BraS9pcGEvIFwKKyAgJXtTT1VSQ0UxNX0gJXtTT1VSQ0UxNn0KKwogIyBUaGUgZmVk b3JhLWJ1cm4teXViaWtleSB1dGlsaXR5IG9ubHkgd29ya2VkIHdpdGggZmFzMiwgd2hpY2ggaXMg bm93IHJldGlyZWQuCi1ybSAtZiAle2J1aWxkcm9vdH0vdXNyL3NiaW4vZmVkb3JhLWJ1cm4teXVi aWtleQorIyBybSAtZiAle2J1aWxkcm9vdH0vdXNyL3NiaW4vZmVkb3JhLWJ1cm4teXViaWtleQog CiAlZmlsZXMKLSVsaWNlbnNlIENPUFlJTkcKLSVkb2MgVE9ETyBBVVRIT1JTIENoYW5nZUxvZwot JXtfYmluZGlyfS8qCi0lZXhjbHVkZSAle19iaW5kaXJ9L2ZlZG9yYS1ob3N0ZWQKLSVleGNsdWRl ICV7X2JpbmRpcn0vZmVkb3JhLXBhY2thZ2VyLXNldHVwCi0lZXhjbHVkZSAle19iaW5kaXJ9L2Zl ZG9yYWRldi1wa2dvd25lcnMKLSVleGNsdWRlICV7X2JpbmRpcn0vZmVkb3JhLWNlcnQKLSVleGNs dWRlICV7X2JpbmRpcn0vZmtpbml0Ci0lZXhjbHVkZSAle3B5dGhvbjNfc2l0ZWxpYn0vZmVkb3Jh X2NlcnQKLQorJWxpY2Vuc2UgJXtfbGljZW5zZWRpcn0vJXtuYW1lfS8KKyV7X2JpbmRpcn0vZmVk b3JhLWdldHN2bgorJXtfYmluZGlyfS9wa2duYW1lCisle19iaW5kaXJ9L3JwbWJ1aWxkLW1kNQor JXtfYmluZGlyfS9zMzkwLWtvamkKKyV7X2JpbmRpcn0vc3RnLWtvamkKKyV7X2JpbmRpcn0vZmVk b3JhLWJ1cm4teXViaWtleQogJWNvbmZpZyhub3JlcGxhY2UpICV7X3N5c2NvbmZkaXJ9L2tvamku Y29uZi5kLyoKIAotCiAlZmlsZXMga2VyYmVyb3MKLSVsaWNlbnNlIENPUFlJTkcKKyVsaWNlbnNl ICV7X2xpY2Vuc2VkaXJ9LyV7bmFtZX0vCiAle19iaW5kaXJ9L2ZraW5pdAogJWNvbmZpZyAle19z eXNjb25mZGlyfS9rcmI1LmNvbmYuZC8qCiAle19zeXNjb25mZGlyfS9wa2kvaXBhLyoKCmRpZmYg LS1naXQgYS9mZWRvcmEuY29uZiBiL2ZlZG9yYS5jb25mCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAuLjQyOWQ2NzkKLS0tIC9kZXYvbnVsbAorKysgYi9mZWRvcmEuY29uZgpAQCAt MCwwICsxLDE2IEBACitbZmVkb3JhXQorCis7Y29uZmlndXJhdGlvbiBmb3Iga29qaSBjbGkgdG9v bAorCis7dXJsIG9mIFhNTFJQQyBzZXJ2ZXIKK3NlcnZlciA9IGh0dHBzOi8va29qaS5mZWRvcmFw cm9qZWN0Lm9yZy9rb2ppaHViCisKKzt1cmwgb2Ygd2ViIGludGVyZmFjZQord2VidXJsID0gaHR0 cHM6Ly9rb2ppLmZlZG9yYXByb2plY3Qub3JnL2tvamkKKworO3VybCBvZiBwYWNrYWdlIGRvd25s b2FkIHNpdGUKK3RvcHVybCA9IGh0dHBzOi8va29qaXBrZ3MuZmVkb3JhcHJvamVjdC5vcmcvCisK K2F1dGh0eXBlID0ga2VyYmVyb3MKKwordXNlX2Zhc3RfdXBsb2FkID0geWVzCgpkaWZmIC0tZ2l0 IGEvZmVkb3JhcHJvamVjdF9pcGFfY2EuY3J0IGIvZmVkb3JhcHJvamVjdF9pcGFfY2EuY3J0Cm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0YTFjN2IKLS0tIC9kZXYvbnVsbAor KysgYi9mZWRvcmFwcm9qZWN0X2lwYV9jYS5jcnQKQEAgLTAsMCArMSwyMiBAQAorLS0tLS1CRUdJ TiBDRVJUSUZJQ0FURS0tLS0tCitNSUlEcERDQ0FveWdBd0lCQWdJQkFUQU5CZ2txaGtpRzl3MEJB UXNGQURBOE1Sb3dHQVlEVlFRS0RCRkdSVVJQCitVa0ZRVWs5S1JVTlVMazlTUnpFZU1Cd0dBMVVF QXd3VlEyVnlkR2xtYVdOaGRHVWdRWFYwYUc5eWFYUjVNQjRYCitEVEUyTVRBeE16RXpNRFEwTmxv WERUTTJNVEF4TXpFek1EUTBObG93UERFYU1CZ0dBMVVFQ2d3UlJrVkVUMUpCCitVRkpQU2tWRFZD NVBVa2N4SGpBY0JnTlZCQU1NRlVObGNuUnBabWxqWVhSbElFRjFkR2h2Y21sMGVUQ0NBU0l3CitE UVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTExGQ1Byc1BEM1lXL3l6dklkN1Vz V0NxL0FjCitjRDdJT3RsdDQ2c2xUYTQ5MFR2ZnB3ekIxSXdBM0gwTFRFWVY3TE9OTUl4SklUOEg0 SDJQN0EvUzRlRHRBNnNaCitzMjZRcCszWUxqK2pIT3d2TmlPTkc1WUJJbjZ2Z1VLYzFTZHd5dVFz TndjR3NIMW5WMnZYcktZejRjY011ZDFQCit0enp3Uk1TV2d3WkxYY0x2TU1YWXBEQ3h1NHBWbWdF dFRuWXo3RGlpN01KMmFKc1dFdXNsempMNkhqYWVnZkdECitKalhDcnFtTktjZ2JnRDdmUXEwNXdp WXc4QWJBcmpoZk9iRE82MjZiNG5hQjBWeExiOXZHVERCYVJiSWVMN09yCituTTExQldWcVlBRkZS WlBMMWpYa2ViOUJwcjlvajRQZHVScTYrdFNaUGEzd2d0bm9vd0FOMkFxTEhLTUNBd0VBCitBYU9C c0RDQnJUQWZCZ05WSFNNRUdEQVdnQlFWcmlqQmhyTEI2eHdrd2pacm9BbFdKR0lwdkRBUEJnTlZI Uk1CCitBZjhFQlRBREFRSC9NQTRHQTFVZER3RUIvd1FFQXdJQnhqQWRCZ05WSFE0RUZnUVVGYTRv d1lheXdlc2NKTUkyCithNkFKVmlSaUtid3dTZ1lJS3dZQkJRVUhBUUVFUGpBOE1Eb0dDQ3NHQVFV RkJ6QUJoaTVvZEhSd09pOHZhWEJoCitNREV1Y0doNE1pNW1aV1J2Y21Gd2NtOXFaV04wTG05eVp6 bzRNQzlqWVM5dlkzTndNQTBHQ1NxR1NJYjNEUUVCCitDd1VBQTRJQkFRQVpFNVpWZjJNUk90UlIy TzAwZWNYd2wzdkJFNzJ4dzg3RVFkQVE2SjlzRGp1ZzVZclZXNk9VCitPZmFSb1ZMeUJTaTV1UGdq MlJaOVZlUGRHTlNEWjY2RGhzcFB0bWJXY1cwTTFYMlFQWHdXUS9JZGozTWZLRTMzCitiK1Y0QTZU NTVwMWt4WG5pTmwwS1pIbERWTUVDbHR3UkJrZDltanIzTGdXemsvRWdxeWlQNTZ4cldFc3ZLVXl2 CitaTXZveUZreTIvQmFOVE44S09wb3NqRFFad1I1c3FFL0NKem0vUUpQZy82elE0L3RrRkRPYzda cUlWa2ZJcW9ZCitzeWNOWUxMYWtxQ1Y1OXh1SjJ1RGJWOFNuOExiSDUrZTNQeDBtYXBuVnhuOGZK QVBjQ3FET21YSjVUVmtWWWxICituWVlPc2txRXc1c3RIWXVFd3VqUjJ1WG84dmZtSU1wWgorLS0t LS1FTkQgQ0VSVElGSUNBVEUtLS0tLQoKZGlmZiAtLWdpdCBhL2ZlZG9yYXByb2plY3Rfb3JnIGIv ZmVkb3JhcHJvamVjdF9vcmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGYy ZGQxMAotLS0gL2Rldi9udWxsCisrKyBiL2ZlZG9yYXByb2plY3Rfb3JnCkBAIC0wLDAgKzEsMTEg QEAKK1tyZWFsbXNdCisgRkVET1JBUFJPSkVDVC5PUkcgPSB7CisgICAgICAgIGtkYyA9IGh0dHBz Oi8vaWQuZmVkb3JhcHJvamVjdC5vcmcvS2RjUHJveHkKKyAgICAgICAgcGtpbml0X2FuY2hvcnMg PSBGSUxFOi9ldGMvcGtpL2lwYS9mZWRvcmFwcm9qZWN0X2lwYV9jYS5jcnQKKyB9CitbZG9tYWlu X3JlYWxtXQorIC5mZWRvcmFwcm9qZWN0Lm9yZyA9IEZFRE9SQVBST0pFQ1QuT1JHCisgZmVkb3Jh cHJvamVjdC5vcmcgPSBGRURPUkFQUk9KRUNULk9SRworIC5jZW50b3Mub3JnID0gRkVET1JBUFJP SkVDVC5PUkcKKyBjZW50b3Mub3JnID0gRkVET1JBUFJPSkVDVC5PUkcKKwoKZGlmZiAtLWdpdCBh L2ZraW5pdCBiL2ZraW5pdApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4zZTA5 ZGJjCi0tLSAvZGV2L251bGwKKysrIGIvZmtpbml0CkBAIC0wLDAgKzEsMTEyIEBACisjIS9iaW4v YmFzaAorCisjIENyZWF0ZWQgYnkgYXJnYmFzaC1pbml0IHYyLjEwLjAKKyMgQVJHX09QVElPTkFM X1NJTkdMRShbdXNlcl0sW3VdLFtGZWRvcmEgYWNjb3VudCBuYW1lXSxbJFVTRVJdKQorIyBBUkdf T1BUSU9OQUxfQk9PTEVBTihbc3RhZ2luZ10sW10sW1VzZSB0aGUgc3RhZ2luZyBpbmZyYXN0cnVj dHVyZV0pCisjIEFSR19IRUxQKFtBY3F1aXJlIGEgS2VyYmVyb3MgdGlja2V0LWdyYW50aW5nIHRp Y2tldCBmb3IgRmVkb3JhXSkKKyMgQVJHQkFTSF9HTygpCisjIG5lZWRlZCBiZWNhdXNlIG9mIEFy Z2Jhc2ggLS0+IG00X2lnbm9yZShbCisjIyMgU1RBUlQgT0YgQ09ERSBHRU5FUkFURUQgQlkgQXJn YmFzaCB2Mi4xMC4wIG9uZSBsaW5lIGFib3ZlICMjIworIyBBcmdiYXNoIGlzIGEgYmFzaCBjb2Rl IGdlbmVyYXRvciB1c2VkIHRvIGdldCBhcmd1bWVudHMgcGFyc2luZyByaWdodC4KKyMgQXJnYmFz aCBpcyBGUkVFIFNPRlRXQVJFLCBzZWUgaHR0cHM6Ly9hcmdiYXNoLmlvIGZvciBtb3JlIGluZm8K KworCitkaWUoKQoreworCWxvY2FsIF9yZXQ9IiR7MjotMX0iCisJdGVzdCAiJHtfUFJJTlRfSEVM UDotbm99IiA9IHllcyAmJiBwcmludF9oZWxwID4mMgorCWVjaG8gIiQxIiA+JjIKKwlleGl0ICIk e19yZXR9IgorfQorCisKK2JlZ2luc193aXRoX3Nob3J0X29wdGlvbigpCit7CisJbG9jYWwgZmly c3Rfb3B0aW9uIGFsbF9zaG9ydF9vcHRpb25zPSd1aCcKKwlmaXJzdF9vcHRpb249IiR7MTowOjF9 IgorCXRlc3QgIiRhbGxfc2hvcnRfb3B0aW9ucyIgPSAiJHthbGxfc2hvcnRfb3B0aW9ucy8kZmly c3Rfb3B0aW9uL30iICYmIHJldHVybiAxIHx8IHJldHVybiAwCit9CisKKyMgVEhFIERFRkFVTFRT IElOSVRJQUxJWkFUSU9OIC0gT1BUSU9OQUxTCitfYXJnX3VzZXI9IiRVU0VSIgorX2FyZ19zdGFn aW5nPSJvZmYiCisKKworcHJpbnRfaGVscCgpCit7CisJcHJpbnRmICclc1xuJyAiQWNxdWlyZSBh IEtlcmJlcm9zIHRpY2tldC1ncmFudGluZyB0aWNrZXQgZm9yIEZlZG9yYSIKKwlwcmludGYgJ1Vz YWdlOiAlcyBbLXV8LS11c2VyIDxhcmc+XSBbLS0obm8tKXN0YWdpbmddIFstaHwtLWhlbHBdXG4n ICIkMCIKKwlwcmludGYgJ1x0JXNcbicgIi11LCAtLXVzZXI6IEZlZG9yYSBhY2NvdW50IG5hbWUg KGRlZmF1bHQ6ICckVVNFUicpIgorCXByaW50ZiAnXHQlc1xuJyAiLS1zdGFnaW5nOiBVc2UgdGhl IHN0YWdpbmcgaW5mcmFzdHJ1Y3R1cmUgKG9mZiBieSBkZWZhdWx0KSIKKwlwcmludGYgJ1x0JXNc bicgIi1oLCAtLWhlbHA6IFByaW50cyBoZWxwIgorfQorCisKK3BhcnNlX2NvbW1hbmRsaW5lKCkK K3sKKwl3aGlsZSB0ZXN0ICQjIC1ndCAwCisJZG8KKwkJX2tleT0iJDEiCisJCWNhc2UgIiRfa2V5 IiBpbgorCQkJLXV8LS11c2VyKQorCQkJCXRlc3QgJCMgLWx0IDIgJiYgZGllICJNaXNzaW5nIHZh bHVlIGZvciB0aGUgb3B0aW9uYWwgYXJndW1lbnQgJyRfa2V5Jy4iIDEKKwkJCQlfYXJnX3VzZXI9 IiQyIgorCQkJCXNoaWZ0CisJCQkJOzsKKwkJCS0tdXNlcj0qKQorCQkJCV9hcmdfdXNlcj0iJHtf a2V5IyMtLXVzZXI9fSIKKwkJCQk7OworCQkJLXUqKQorCQkJCV9hcmdfdXNlcj0iJHtfa2V5IyMt dX0iCisJCQkJOzsKKwkJCS0tc3RhZ2luZykKKwkJCQlfYXJnX3N0YWdpbmc9Im9uIgorCQkJCTs7 CisJCQktaHwtLWhlbHApCisJCQkJcHJpbnRfaGVscAorCQkJCWV4aXQgMAorCQkJCTs7CisJCQkt aCopCisJCQkJcHJpbnRfaGVscAorCQkJCWV4aXQgMAorCQkJCTs7CisJCQkqKQorCQkJCV9QUklO VF9IRUxQPXllcyBkaWUgIkZBVEFMIEVSUk9SOiBHb3QgYW4gdW5leHBlY3RlZCBhcmd1bWVudCAn JDEnIiAxCisJCQkJOzsKKwkJZXNhYworCQlzaGlmdAorCWRvbmUKK30KKworcGFyc2VfY29tbWFu ZGxpbmUgIiRAIgorCisjIE9USEVSIFNUVUZGIEdFTkVSQVRFRCBCWSBBcmdiYXNoCisKKyMjIyBF TkQgT0YgQ09ERSBHRU5FUkFURUQgQlkgQXJnYmFzaCAoc29ydG9mKSAjIyMgXSkKKyMgWyA8LS0g bmVlZGVkIGJlY2F1c2Ugb2YgQXJnYmFzaAorCitmaW5hbGl6ZSgpCit7CisgIHJtIC1mICRhcm1v cmNhY2hlCit9CisKK3NldCAtZQorCithcm1vcmNhY2hlPSQobWt0ZW1wKQordHJhcCBmaW5hbGl6 ZSBFWElUCisKK2lmIFsgIiRfYXJnX3N0YWdpbmciID09ICJvbiIgXTsgdGhlbgorICAgIGRvbWFp bj1TVEcuRkVET1JBUFJPSkVDVC5PUkcKK2Vsc2UKKyAgICBkb21haW49RkVET1JBUFJPSkVDVC5P UkcKK2ZpCisKK2tpbml0IC1uIEAkZG9tYWluIC1jIEZJTEU6JGFybW9yY2FjaGUKKworZWNobyAi RW50ZXIgeW91ciBwYXNzd29yZCBhbmQgT1RQIGNvbmNhdGVuYXRlZC4gKElnbm9yZSB0aGF0IHRo ZSBwcm9tcHQgaXMgZm9yIG9ubHkgdGhlIHRva2VuKSIKK2tpbml0IC1UIEZJTEU6JGFybW9yY2Fj aGUgJF9hcmdfdXNlckAkZG9tYWluCisKKworIyBeXl4gIFRFUk1JTkFURSBZT1VSIENPREUgQkVG T1JFIFRIRSBCT1RUT00gQVJHQkFTSCBNQVJLRVIgIF5eXgorCisjIF0gPC0tIG5lZWRlZCBiZWNh dXNlIG9mIEFyZ2Jhc2gKCmRpZmYgLS1naXQgYS9wa2duYW1lLnB5IGIvcGtnbmFtZS5weQpuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYjBhZDNhCi0tLSAvZGV2L251bGwKKysr IGIvcGtnbmFtZS5weQpAQCAtMCwwICsxLDMyIEBACisjIS91c3IvYmluL3B5dGhvbjMKKyIiIgor UGlwZSBwYWNrYWdlIE5FVlJBcyBpbnRvIHRoaXMgc2NyaXB0IHRvIGdldCBwYWNrYWdlIG5hbWVz LgorCitORVZSQSBzdGFuZHMgZm9yIE5hbWUsIEVwb2NoLCBWZXJzaW9uLCBSZWxlYXNlLCBBcmNo aXRlY3R1cmUuIEUuZy46CisKKyAgICAkIGVjaG8gZmVkb3JhLXBhY2thZ2VyLTA6MC42LjAuNC0x LmZjMzIubm9hcmNoIHwgcGtnbmFtZQorICAgIGZlZG9yYS1wYWNrYWdlcgorCitZb3UgY2FuIG9t aXQgZXBvY2ggYW5kL29yIGFyY2hpdGVjdHVyZToKKworICAgICQgZWNobyBmZWRvcmEtcGFja2Fn ZXItMC42LjAuNC0xLmZjMzIgfCBwa2duYW1lCisgICAgZmVkb3JhLXBhY2thZ2VyCisKK0J1dCwg aWYgdmVyc2lvbiBhbmQgcmVsZWFzZSBpcyBvbWl0dGVkLCB0aGUgc2NyaXB0IGNhbiBwcm9kdWNl IGludmFsaWQgcmVzdWx0czoKKworICAgICQgZWNobyBmZWRvcmEtcGFja2FnZXIgfCBwa2duYW1l CisgICAgZmVkb3JhCisKK0NyZWF0ZWQgYnkgTWlybyBIcm9uxI1vaywgd2l0aCBzdWdnZXN0aW9u cyBmcm9tIEFkYW0gV2lsbGlhbXNvbi4KKworVGhpcyBzY3JpcHQgaXMgdHJpdmlhbCwgY29uc2lk ZXIgaXQgUHVibGljIERvbWFpbi4KKyIiIgoraW1wb3J0IGZpbGVpbnB1dAoraW1wb3J0IHN5cwor CisKK2lmIGxlbihzeXMuYXJndikgPiAxOgorICAgIHN5cy5leGl0KF9fZG9jX18uc3RyaXAoKSkK KworZm9yIGxpbmUgaW4gZmlsZWlucHV0LmlucHV0KCk6CisgICAgcHJpbnQobGluZS5yc3BsaXQo Ii0iLCAyKVswXSkKCmRpZmYgLS1naXQgYS9ycG1idWlsZC1tZDUgYi9ycG1idWlsZC1tZDUKbmV3 IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYWVmZTA0ZAotLS0gL2Rldi9udWxsCisr KyBiL3JwbWJ1aWxkLW1kNQpAQCAtMCwwICsxLDYgQEAKKyMhL2Jpbi9iYXNoCitycG1idWlsZCAt LWRlZmluZSAiX3NvdXJjZV9maWxlZGlnZXN0X2FsZ29yaXRobSAxIiBcCisgICAgICAgICAtLWRl ZmluZSAiX2JpbmFyeV9maWxlZGlnZXN0X2FsZ29yaXRobSAxIiBcCisgICAgICAgICAtLWRlZmlu ZSAiX2JpbmFyeV9wYXlsb2FkIHc5Lmd6ZGlvIiBcCisgICAgICAgICAtLWRlZmluZSAiX3NvdXJj ZV9wYXlsb2FkIHc5Lmd6ZGlvIiBcCisgICAgICAgICAtLWRlZmluZSAiX2RlZmF1bHRfcGF0Y2hf ZnV6eiAyIiAiJEAiCgpkaWZmIC0tZ2l0IGEvczM5MC5jb25mIGIvczM5MC5jb25mCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4OTBhYjgKLS0tIC9kZXYvbnVsbAorKysgYi9z MzkwLmNvbmYKQEAgLTAsMCArMSwxNiBAQAorW3MzOTBdCisKKztjb25maWd1cmF0aW9uIGZvciBr b2ppIGNsaSB0b29sCisKKzt1cmwgb2YgWE1MUlBDIHNlcnZlcgorc2VydmVyID0gaHR0cHM6Ly9z MzkwLmtvamkuZmVkb3JhcHJvamVjdC5vcmcva29qaWh1YgorCis7dXJsIG9mIHdlYiBpbnRlcmZh Y2UKK3dlYnVybCA9IGh0dHBzOi8vczM5MC5rb2ppLmZlZG9yYXByb2plY3Qub3JnL2tvamkKKwor O3VybCBvZiBwYWNrYWdlIGRvd25sb2FkIHNpdGUKK3RvcHVybCA9IGh0dHBzOi8vczM5MHBrZ3Mu ZmVkb3JhcHJvamVjdC5vcmcvCisKK2F1dGh0eXBlID0ga2VyYmVyb3MKKwordXNlX2Zhc3RfdXBs b2FkID0geWVzCgpkaWZmIC0tZ2l0IGEvc2Vjb25kYXJ5LWtvamkgYi9zZWNvbmRhcnkta29qaQpu ZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi44MTNlYjdlCi0tLSAvZGV2L251bGwK KysrIGIvc2Vjb25kYXJ5LWtvamkKQEAgLTAsMCArMSwxMiBAQAorIyEgL2Jpbi9zaAorCithcmNo PWBiYXNlbmFtZSAkMCB8IGN1dCAtZCAnLScgLWYgMWAKKworY29uZmlnPSIvZXRjL2tvamkuY29u Zi5kLyR7YXJjaH0uY29uZiIKKworaWYgWyAhIC1mICRjb25maWcgXTsgdGhlbgorICAgIGVjaG8g IkNvbmZpZyBmaWxlIGZvciAkYXJjaCBkb2Vzbid0IGV4aXN0IgorICAgIGV4aXQgMQorZmkKKwor a29qaSAtLXByb2ZpbGUgJHthcmNofSAiJEAiCgpkaWZmIC0tZ2l0IGEvc3RnLmNvbmYgYi9zdGcu Y29uZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZTFjNzMzCi0tLSAvZGV2 L251bGwKKysrIGIvc3RnLmNvbmYKQEAgLTAsMCArMSwxNiBAQAorW3N0Z10KKworO2NvbmZpZ3Vy YXRpb24gZm9yIGtvamkgY2xpIHRvb2wKKworO3VybCBvZiBYTUxSUEMgc2VydmVyCitzZXJ2ZXIg PSBodHRwczovL2tvamkuc3RnLmZlZG9yYXByb2plY3Qub3JnL2tvamlodWIKKworO3VybCBvZiB3 ZWIgaW50ZXJmYWNlCit3ZWJ1cmwgPSBodHRwczovL2tvamkuc3RnLmZlZG9yYXByb2plY3Qub3Jn L2tvamkKKworO3VybCBvZiBwYWNrYWdlIGRvd25sb2FkIHNpdGUKK3RvcHVybCA9IGh0dHBzOi8v a29qaXBrZ3Muc3RnLmZlZG9yYXByb2plY3Qub3JnLworCithdXRodHlwZSA9IGtlcmJlcm9zCisK K3VzZV9mYXN0X3VwbG9hZCA9IHllcwoKZGlmZiAtLWdpdCBhL3N0Z19mZWRvcmFwcm9qZWN0X2lw YV9jYS5jcnQgYi9zdGdfZmVkb3JhcHJvamVjdF9pcGFfY2EuY3J0Cm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLjQxYTNhYzYKLS0tIC9kZXYvbnVsbAorKysgYi9zdGdfZmVkb3Jh cHJvamVjdF9pcGFfY2EuY3J0CkBAIC0wLDAgKzEsMjcgQEAKKy0tLS0tQkVHSU4gQ0VSVElGSUNB VEUtLS0tLQorTUlJRXFUQ0NBeEdnQXdJQkFnSUJBVEFOQmdrcWhraUc5dzBCQVFzRkFEQkFNUjR3 SEFZRFZRUUtEQlZUVkVjdQorUmtWRVQxSkJVRkpQU2tWRFZDNVBVa2N4SGpBY0JnTlZCQU1NRlVO bGNuUnBabWxqWVhSbElFRjFkR2h2Y21sMAorZVRBZUZ3MHlNVEF5TVRFeE16RXhNREJhRncwME1U QXlNVEV4TXpFeE1EQmFNRUF4SGpBY0JnTlZCQW9NRlZOVQorUnk1R1JVUlBVa0ZRVWs5S1JVTlVM azlTUnpFZU1Cd0dBMVVFQXd3VlEyVnlkR2xtYVdOaGRHVWdRWFYwYUc5eQorYVhSNU1JSUJvakFO QmdrcWhraUc5dzBCQVFFRkFBT0NBWThBTUlJQmlnS0NBWUVBME16UTlPVmc0S1RFczJHbworQVN3 Y1cxei90SmM2MHg3SEc1VkZDNkVXZnQzTVBIMXA0QVBMSi9CWjRGLytDaEhiYkczNU5UaWcwcUsw U2lMWQorY3Q4R3l3NjZGb0IyS1F2a3MvMWtDWHVRcXVMbk1DbTlhRUZBamxORHRVaDlrY0dycmpD ZlA0ZHV3VDZwL2RsMAorSHVlOUovRnJDWGZyeG4zR1N3aXpqQzJaWlpWL3NMM2lEaDNwMmVCRGtz WHBqR2dRdUR1Mm4rMGc1VTBkc05oTQorOUVZUmtYMkovdmVFU1MzenBZRHdSVkhQd3hJcW1FR3JL MHdyb3FYd1JaVmYyNUhkc21QNEI2NUl6M2FRS2VYRQorcGxMdFo2UDk5WWZPUlF2dTlHTGhjZ0xQ bDVSUXB2UkJHYWNweXpHTGhYcXBBSWwzMVB5dXJDKzl5QXZMQU5GbAorTmN4Zjh5Y3ZIR29PdGlS UEFibVdXK1Ard2V1b25tZXNIbjhuM1BWNkpYY1VrR29TRmRmWHcwTURBaExIQ0dReAorOER5ck9a OHpza1dkQnpGeGRDT0lTL0NPbnZVV0JzakY2aHp1VWdJazNIbzg5THlCWUtabTFvQytJQ1RnOTRB dQorZEUxTU9aUTFBOVJsbE4zTFAxZEhQaUFkcnRCZHVXUHNDWWNubWdlaUhIK2pMcjJ0QWdNQkFB R2pnYTB3Z2FvdworSHdZRFZSMGpCQmd3Rm9BVVF5dW5FVUNPbHlTbzJ5MytzRnI3aXZNNXlHOHdE d1lEVlIwVEFRSC9CQVV3QXdFQgorL3pBT0JnTlZIUThCQWY4RUJBTUNBY1l3SFFZRFZSME9CQllF RkVNcnB4RkFqcGNrcU5zdC9yQmErNHJ6T2NodgorTUVjR0NDc0dBUVVGQndFQkJEc3dPVEEzQmdn ckJnRUZCUWN3QVlZcmFIUjBjRG92TDJsd1lTMWpZUzV6ZEdjdQorWm1Wa2IzSmhjSEp2YW1WamRD NXZjbWN2WTJFdmIyTnpjREFOQmdrcWhraUc5dzBCQVFzRkFBT0NBWUVBRFZYcworM2lUeERBN2NB NlRES2ZqczNHckhrOTRMbm5MeEFJS1R1YllFdzFVWm1WY3grK0pDeTJ1VWM3Wm9yZ3E1V2tOUAor eG1xcktxaEpUVjZCem9WVmhGeGRvZitybzNxVzgwZFJjQXRVbTloZXFyOEhCR2pvUk1hL21NbERz N25iLzBBSAorWExlN1VXWUdXM3FveHhVSWVNV0wxVTczNmFnV1ZGeFJTZTRuZzh1dnJHYWM3dEsw dFczb2lBa0lkM1B3TDZCTQorakxhb01zZlhGT0sxM0dBUDJQL1ZudUxETUpONnRhUjJCR1FrcWk3 b1o5RG1SNkhjcUc0TXRZQmlRZ0xodkg3NQorSnNLQy9ST0x0bEMvZ2JTaHN5NVdEeTNEYm8vRWk4 UU1xaHVkUXJ0TmxRZU5VWEFTbThyVXZrSm1lSXNwVHpQRAorZk95d2hWeWdZaXlJdmlnR09taXV3 dGZwUFFhUEhPV3Nvc2drd216cTEwNHdudjJJTGFROCtvWWY2MTdieGxkUgorOWQ2bDhPTU9pWXF0 MzRmTGJNU3cxNUcrT0VubDd0OTZVU3VDWElpaFZUVTFZa3FtcnVobi9PNEVlWGQ5UWlJcgorN3Fs R2NuS0pweHdMQ21IQnR3M2t2OFBnSzlFakdRcExQRlRQaUlQMHJTSFRWVFFGVWI4SVkrdEdHMGp6 CistLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCgpkaWZmIC0tZ2l0IGEvc3RnX2ZlZG9yYXByb2pl Y3Rfb3JnIGIvc3RnX2ZlZG9yYXByb2plY3Rfb3JnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLjk0MDQyMmUKLS0tIC9kZXYvbnVsbAorKysgYi9zdGdfZmVkb3JhcHJvamVjdF9v cmcKQEAgLTAsMCArMSw4IEBACitbcmVhbG1zXQorIFNURy5GRURPUkFQUk9KRUNULk9SRyA9IHsK KyAgICAgICAga2RjID0gaHR0cHM6Ly9pZC5zdGcuZmVkb3JhcHJvamVjdC5vcmcvS2RjUHJveHkK KyAgICAgICAgcGtpbml0X2FuY2hvcnMgPSBGSUxFOi9ldGMvcGtpL2lwYS9zdGdfZmVkb3JhcHJv amVjdF9pcGFfY2EuY3J0CisgfQorW2RvbWFpbl9yZWFsbV0KKyAuc3RnLmZlZG9yYXByb2plY3Qu b3JnID0gU1RHLkZFRE9SQVBST0pFQ1QuT1JHCisgc3RnLmZlZG9yYXByb2plY3Qub3JnID0gU1RH LkZFRE9SQVBST0pFQ1QuT1JHCg==