From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=134.134.136.20; helo=mga02.intel.com; envelope-from=liming.gao@intel.com; receiver=edk2-devel@lists.01.org Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 23649201B041C for ; Tue, 12 Feb 2019 05:57:37 -0800 (PST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by orsmga101.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 12 Feb 2019 05:57:36 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.58,362,1544515200"; d="scan'208";a="132972877" Received: from fmsmsx103.amr.corp.intel.com ([10.18.124.201]) by FMSMGA003.fm.intel.com with ESMTP; 12 Feb 2019 05:57:36 -0800 Received: from fmsmsx158.amr.corp.intel.com (10.18.116.75) by FMSMSX103.amr.corp.intel.com (10.18.124.201) with Microsoft SMTP Server (TLS) id 14.3.408.0; Tue, 12 Feb 2019 05:57:36 -0800 Received: from shsmsx101.ccr.corp.intel.com (10.239.4.153) by fmsmsx158.amr.corp.intel.com (10.18.116.75) with Microsoft SMTP Server (TLS) id 14.3.408.0; Tue, 12 Feb 2019 05:57:34 -0800 Received: from shsmsx104.ccr.corp.intel.com ([169.254.5.102]) by SHSMSX101.ccr.corp.intel.com ([169.254.1.110]) with mapi id 14.03.0415.000; Tue, 12 Feb 2019 21:57:32 +0800 From: "Gao, Liming" To: Antoine Coeur , "edk2-devel@lists.01.org" Thread-Topic: [edk2] [PATCH] BaseTools: Various typo Thread-Index: AQHUvfIFzIBn7SYC+kqghzQQ9ya5eaXcObuw Date: Tue, 12 Feb 2019 13:57:31 +0000 Message-ID: <4A89E2EF3DFEDB4C8BFDE51014F606A14E3DBCBF@SHSMSX104.ccr.corp.intel.com> References: In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ctpclassification: CTP_NT x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiMmU0ZTA0NzEtNjVkYi00MTczLTg4OWMtYTljY2M2NjM5N2NlIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiMm5BOTU1NWJBRmpEYU50M2hqQ3BqZEExVmFUalA3QzEwN2JReFhobTM0OCtCVittRHZ3dThDN0FuXC9EM3dxb0wifQ== dlp-product: dlpe-windows dlp-version: 11.0.400.15 dlp-reaction: no-action x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Subject: Re: [PATCH] BaseTools: Various typo X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 12 Feb 2019 13:57:38 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 VGhhbmtzIGZvciB5b3VyIGdyZWF0IGVmZm9ydCB0byBjb3JyZWN0IHRoZW0gYWxsIGluIEJhc2VU b29scyBzb3VyY2UgZmlsZXMuIA0KDQpUaGUgY2hhbmdlIGlzIGdvb2QuIFJldmlld2VkLWJ5OiBM aW1pbmcgR2FvIDxsaW1pbmcuZ2FvQGludGVsLmNvbT4NCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3Nh Z2UtLS0tLQ0KPiBGcm9tOiBlZGsyLWRldmVsIFttYWlsdG86ZWRrMi1kZXZlbC1ib3VuY2VzQGxp c3RzLjAxLm9yZ10gT24gQmVoYWxmIE9mIEFudG9pbmUgQ29ldXINCj4gU2VudDogV2VkbmVzZGF5 LCBGZWJydWFyeSA2LCAyMDE5IDM6NDUgUE0NCj4gVG86IGVkazItZGV2ZWxAbGlzdHMuMDEub3Jn DQo+IFN1YmplY3Q6IFtlZGsyXSBbUEFUQ0hdIEJhc2VUb29sczogVmFyaW91cyB0eXBvDQo+IA0K PiBWYXJpb3VzIHR5cG8gaW4gQmFzZVRvb2xzLg0KPiANCj4gQ29udHJpYnV0ZWQtdW5kZXI6IFRp YW5vQ29yZSBDb250cmlidXRpb24gQWdyZWVtZW50IDEuMQ0KPiBTaWduZWQtb2ZmLWJ5OiBDb2V1 ciA8Y29ldXJAZ214LmZyPg0KPiAtLS0NCj4gIC4uLi9CaW4vQ1lHV0lOX05ULTUuMS1pNjg2L2Fy bWNjX3dyYXBwZXIucHkgICB8ICAyICstDQo+ICAuLi4vQ29uZi9YTUxTY2hlbWEvRGlzdHJpYnV0 aW9uUGFja2FnZS54c2QgICAgfCAxNiArKystLS0NCj4gIEJhc2VUb29scy9Db25mL2J1aWxkX3J1 bGUudGVtcGxhdGUgICAgICAgICAgICB8ICA0ICstDQo+ICBCYXNlVG9vbHMvQ29uZi90YXJnZXQu dGVtcGxhdGUgICAgICAgICAgICAgICAgfCAgMiArLQ0KPiAgQmFzZVRvb2xzL0NvbmYvdG9vbHNf ZGVmLnRlbXBsYXRlICAgICAgICAgICAgIHwgIDggKy0tDQo+ICBCYXNlVG9vbHMvUmVhZE1lLnR4 dCAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQ0KPiAgQmFzZVRvb2xzL1NjcmlwdHMv VXBkYXRlQnVpbGRWZXJzaW9ucy5weSAgICAgIHwgIDQgKy0NCj4gIEJhc2VUb29scy9Tb3VyY2Uv Qy9Db21tb24vQmFzZVBlQ29mZi5jICAgICAgICB8ICA2ICstLQ0KPiAgQmFzZVRvb2xzL1NvdXJj ZS9DL0NvbW1vbi9Db21tb25MaWIuYyAgICAgICAgIHwgIDQgKy0NCj4gIEJhc2VUb29scy9Tb3Vy Y2UvQy9Db21tb24vQ3JjMzIuYyAgICAgICAgICAgICB8ICA0ICstDQo+ICBCYXNlVG9vbHMvU291 cmNlL0MvQ29tbW9uL0NyYzMyLmggICAgICAgICAgICAgfCAgNCArLQ0KPiAgQmFzZVRvb2xzL1Nv dXJjZS9DL0NvbW1vbi9EZWNvbXByZXNzLmMgICAgICAgIHwgIDYgKy0tDQo+ICBCYXNlVG9vbHMv U291cmNlL0MvQ29tbW9uL0RlY29tcHJlc3MuaCAgICAgICAgfCAgNCArLQ0KPiAgQmFzZVRvb2xz L1NvdXJjZS9DL0NvbW1vbi9FZmlDb21wcmVzcy5jICAgICAgIHwgIDYgKy0tDQo+ICBCYXNlVG9v bHMvU291cmNlL0MvQ29tbW9uL0VmaVV0aWxpdHlNc2dzLmMgICAgfCAgOCArLS0NCj4gIEJhc2VU b29scy9Tb3VyY2UvQy9Db21tb24vRnZMaWIuYyAgICAgICAgICAgICB8ICA0ICstDQo+ICBCYXNl VG9vbHMvU291cmNlL0MvQ29tbW9uL09zUGF0aC5jICAgICAgICAgICAgfCAgMiArLQ0KPiAgQmFz ZVRvb2xzL1NvdXJjZS9DL0NvbW1vbi9Pc1BhdGguaCAgICAgICAgICAgIHwgIDIgKy0NCj4gIC4u Li9Tb3VyY2UvQy9Db21tb24vUGFyc2VHdWlkZWRTZWN0aW9uVG9vbHMuYyB8ICAyICstDQo+ICBC YXNlVG9vbHMvU291cmNlL0MvQ29tbW9uL1BhcnNlSW5mLmMgICAgICAgICAgfCAxNCArKy0tLQ0K PiAgQmFzZVRvb2xzL1NvdXJjZS9DL0NvbW1vbi9QYXJzZUluZi5oICAgICAgICAgIHwgIDIgKy0N Cj4gIEJhc2VUb29scy9Tb3VyY2UvQy9Db21tb24vUGNkVmFsdWVDb21tb24uYyAgICB8ICAyICst DQo+ICBCYXNlVG9vbHMvU291cmNlL0MvQ29tbW9uL1BlQ29mZkxpYi5oICAgICAgICAgfCAxMCAr Ky0tDQo+ICBCYXNlVG9vbHMvU291cmNlL0MvQ29tbW9uL1BlQ29mZkxvYWRlckV4LmMgICAgfCAx MiArKy0tLQ0KPiAgQmFzZVRvb2xzL1NvdXJjZS9DL0NvbW1vbi9TaW1wbGVGaWxlUGFyc2luZy5j IHwgIDQgKy0NCj4gIEJhc2VUb29scy9Tb3VyY2UvQy9Db21tb24vU3RyaW5nRnVuY3MuaCAgICAg ICB8ICAyICstDQo+ICBCYXNlVG9vbHMvU291cmNlL0MvQ29tbW9uL1RpYW5vQ29tcHJlc3MuYyAg ICAgfCAgNCArLQ0KPiAgQmFzZVRvb2xzL1NvdXJjZS9DL0NvbW1vbi9XaW5OdEluY2x1ZGUuaCAg ICAgIHwgIDIgKy0NCj4gIEJhc2VUb29scy9Tb3VyY2UvQy9EZXZpY2VQYXRoL0RldmljZVBhdGgu YyAgICB8ICAyICstDQo+ICAuLi4vU291cmNlL0MvRGV2aWNlUGF0aC9EZXZpY2VQYXRoVXRpbGl0 aWVzLmMgfCAgMiArLQ0KPiAgLi4uL1NvdXJjZS9DL0RldmljZVBhdGgvVWVmaURldmljZVBhdGhM aWIuYyAgIHwgIDIgKy0NCj4gIEJhc2VUb29scy9Tb3VyY2UvQy9FZmlSb20vRWZpUm9tLmMgICAg ICAgICAgICB8ICAyICstDQo+ICBCYXNlVG9vbHMvU291cmNlL0MvR2VuQ3JjMzIvR2VuQ3JjMzIu YyAgICAgICAgfCAgMiArLQ0KPiAgQmFzZVRvb2xzL1NvdXJjZS9DL0dlbkZ2L0dlbkZ2SW50ZXJu YWxMaWIuYyAgIHwgMjggKysrKystLS0tLQ0KPiAgQmFzZVRvb2xzL1NvdXJjZS9DL0dlbkZ2L0dl bkZ2SW50ZXJuYWxMaWIuaCAgIHwgIDIgKy0NCj4gIEJhc2VUb29scy9Tb3VyY2UvQy9HZW5Gdy9F bGYzMkNvbnZlcnQuYyAgICAgICB8IDEwICsrLS0NCj4gIEJhc2VUb29scy9Tb3VyY2UvQy9HZW5G dy9FbGY2NENvbnZlcnQuYyAgICAgICB8ICA4ICstLQ0KPiAgQmFzZVRvb2xzL1NvdXJjZS9DL0dl bkZ3L0VsZkNvbnZlcnQuaCAgICAgICAgIHwgIDIgKy0NCj4gIEJhc2VUb29scy9Tb3VyY2UvQy9H ZW5Gdy9HZW5Gdy5jICAgICAgICAgICAgICB8IDI2ICsrKysrLS0tLS0NCj4gIEJhc2VUb29scy9T b3VyY2UvQy9HZW5TZWMvR2VuU2VjLmMgICAgICAgICAgICB8IDI2ICsrKysrLS0tLS0NCj4gIC4u Li9Tb3VyY2UvQy9JbmNsdWRlL0FBcmNoNjQvUHJvY2Vzc29yQmluZC5oICB8ICAyICstDQo+ICAu Li4vU291cmNlL0MvSW5jbHVkZS9Bcm0vUHJvY2Vzc29yQmluZC5oICAgICAgfCAgMiArLQ0KPiAg QmFzZVRvb2xzL1NvdXJjZS9DL0luY2x1ZGUvQ29tbW9uL0Jhc2VUeXBlcy5oIHwgIDIgKy0NCj4g IC4uLi9Tb3VyY2UvQy9JbmNsdWRlL0NvbW1vbi9NZGVNb2R1bGVIaWkuaCAgICB8ICA2ICstLQ0K PiAgLi4uL0MvSW5jbHVkZS9Db21tb24vUGlGaXJtd2FyZVZvbHVtZS5oICAgICAgIHwgIDIgKy0N Cj4gIC4uLi9Tb3VyY2UvQy9JbmNsdWRlL0NvbW1vbi9VZWZpTXVsdGlQaGFzZS5oICB8ICAyICst DQo+ICAuLi4vU291cmNlL0MvSW5jbHVkZS9JYTMyL1Byb2Nlc3NvckJpbmQuaCAgICAgfCAgNCAr LQ0KPiAgLi4uL0MvSW5jbHVkZS9JbmR1c3RyeVN0YW5kYXJkL0FjcGkyXzAuaCAgICAgIHwgIDIg Ky0NCj4gIC4uLi9DL0luY2x1ZGUvSW5kdXN0cnlTdGFuZGFyZC9BY3BpM18wLmggICAgICB8ICAy ICstDQo+ICAuLi4vU291cmNlL0MvSW5jbHVkZS9JbmR1c3RyeVN0YW5kYXJkL3BjaTIyLmggfCAg NCArLQ0KPiAgLi4uL0MvSW5jbHVkZS9Qcm90b2NvbC9EZXZpY2VQYXRoVXRpbGl0aWVzLmggIHwg IDIgKy0NCj4gIC4uLi9DL0luY2x1ZGUvUHJvdG9jb2wvR3JhcGhpY3NPdXRwdXQuaCAgICAgICB8 ICA0ICstDQo+ICAuLi4vUHJvdG9jb2wvR3VpZGVkU2VjdGlvbkV4dHJhY3Rpb24uaCAgICAgICAg fCAgMiArLQ0KPiAgQmFzZVRvb2xzL1NvdXJjZS9DL0luY2x1ZGUvUHJvdG9jb2wvVWdhRHJhdy5o IHwgIDQgKy0NCj4gIC4uLi9Tb3VyY2UvQy9JbmNsdWRlL1g2NC9Qcm9jZXNzb3JCaW5kLmggICAg ICB8ICA4ICstLQ0KPiAgLi4uL1NvdXJjZS9DL0x6bWFDb21wcmVzcy9TZGsvQy9Mem1hRW5jLmgg ICAgIHwgIDIgKy0NCj4gIC4uLi9DL0x6bWFDb21wcmVzcy9TZGsvRE9DL2x6bWEtaGlzdG9yeS50 eHQgICB8ICAyICstDQo+ICAuLi4vQy9Mem1hQ29tcHJlc3MvU2RrL0RPQy9sem1hLXNkay50eHQg ICAgICAgfCAgMiArLQ0KPiAgQmFzZVRvb2xzL1NvdXJjZS9DL1NwbGl0L1NwbGl0LmMgICAgICAg ICAgICAgIHwgIDQgKy0NCj4gIC4uLi9Tb3VyY2UvQy9UaWFub0NvbXByZXNzL1RpYW5vQ29tcHJl c3MuYyAgICB8IDEwICsrLS0NCj4gIC4uLi9DL1ZmckNvbXBpbGUvUGNjdHMvQ0hBTkdFU19GUk9N XzEzMy50eHQgICB8IDI0ICsrKystLS0tLQ0KPiAgLi4uL1BjY3RzL0NIQU5HRVNfRlJPTV8xMzNf QkVGT1JFX01SMTMudHh0ICAgIHwgMzAgKysrKystLS0tLS0NCj4gIC4uLi9DL1ZmckNvbXBpbGUv UGNjdHMvQ0hBTkdFU19TVU1NQVJZLnR4dCAgICB8ICA4ICstLQ0KPiAgLi4uL0MvVmZyQ29tcGls ZS9QY2N0cy9LTk9XTl9QUk9CTEVNUy50eHQgICAgIHwgIDQgKy0NCj4gIC4uLi9Tb3VyY2UvQy9W ZnJDb21waWxlL1BjY3RzL2FudGxyL2FudGxyLmMgICB8ICA0ICstDQo+ICAuLi4vU291cmNlL0Mv VmZyQ29tcGlsZS9QY2N0cy9hbnRsci9hbnRsci5nICAgfCAgNCArLQ0KPiAgLi4uL1NvdXJjZS9D L1ZmckNvbXBpbGUvUGNjdHMvYW50bHIvYW50bHIuciAgIHwgIDIgKy0NCj4gIC4uLi9Tb3VyY2Uv Qy9WZnJDb21waWxlL1BjY3RzL2FudGxyL2VnbWFuLmMgICB8ICAyICstDQo+ICAuLi4vU291cmNl L0MvVmZyQ29tcGlsZS9QY2N0cy9hbnRsci9mc2V0LmMgICAgfCAgOCArLS0NCj4gIC4uLi9Tb3Vy Y2UvQy9WZnJDb21waWxlL1BjY3RzL2FudGxyL2ZzZXQyLmMgICB8ICAyICstDQo+ICAuLi4vU291 cmNlL0MvVmZyQ29tcGlsZS9QY2N0cy9hbnRsci9nZW4uYyAgICAgfCAxMCArKy0tDQo+ICAuLi4v U291cmNlL0MvVmZyQ29tcGlsZS9QY2N0cy9hbnRsci9nZW5lcmljLmggfCAgMiArLQ0KPiAgLi4u L1NvdXJjZS9DL1ZmckNvbXBpbGUvUGNjdHMvYW50bHIvbGV4LmMgICAgIHwgIDQgKy0NCj4gIC4u Li9Tb3VyY2UvQy9WZnJDb21waWxlL1BjY3RzL2FudGxyL21yaG9pc3QuYyB8ICAyICstDQo+ICAu Li4vU291cmNlL0MvVmZyQ29tcGlsZS9QY2N0cy9kbGcvYXV0b21hdGEuYyAgfCAgNiArLS0NCj4g IEJhc2VUb29scy9Tb3VyY2UvQy9WZnJDb21waWxlL1BjY3RzL2RsZy9kbGcuaCB8ICA0ICstDQo+ ICBCYXNlVG9vbHMvU291cmNlL0MvVmZyQ29tcGlsZS9QY2N0cy9kbGcvZGxnLnIgfCA1MSArKysr KysrKystLS0tLS0tLS0tDQo+ICAuLi4vU291cmNlL0MvVmZyQ29tcGlsZS9QY2N0cy9kbGcvZGxn X3AuYyAgICAgfCAgMiArLQ0KPiAgLi4uL1NvdXJjZS9DL1ZmckNvbXBpbGUvUGNjdHMvZGxnL2Rs Z19wLmcgICAgIHwgIDIgKy0NCj4gIC4uLi9Tb3VyY2UvQy9WZnJDb21waWxlL1BjY3RzL2RsZy9y ZWxhYmVsLmMgICB8ICAyICstDQo+ICAuLi4vU291cmNlL0MvVmZyQ29tcGlsZS9QY2N0cy9oL0FU b2tQdHJJbXBsLmggfCAgMiArLQ0KPiAgLi4uL0MvVmZyQ29tcGlsZS9QY2N0cy9oL0RMR19zdHJl YW1faW5wdXQuaCAgIHwgIDYgKy0tDQo+ICBCYXNlVG9vbHMvU291cmNlL0MvVmZyQ29tcGlsZS9Q Y2N0cy9oL2FudGxyLmggfCAgMiArLQ0KPiAgQmFzZVRvb2xzL1NvdXJjZS9DL1ZmckNvbXBpbGUv VmZyQ29tcGlsZXIuaCAgIHwgIDIgKy0NCj4gIEJhc2VUb29scy9Tb3VyY2UvQy9WZnJDb21waWxl L1ZmckVycm9yLmNwcCAgICB8ICAyICstDQo+ICBCYXNlVG9vbHMvU291cmNlL0MvVmZyQ29tcGls ZS9WZnJGb3JtUGtnLmNwcCAgfCAgNCArLQ0KPiAgQmFzZVRvb2xzL1NvdXJjZS9DL1ZmckNvbXBp bGUvVmZyU3ludGF4LmcgICAgIHwgIDggKy0tDQo+ICAuLi4vU291cmNlL0MvVmZyQ29tcGlsZS9W ZnJVdGlsaXR5TGliLmNwcCAgICAgfCAgNiArLS0NCj4gIEJhc2VUb29scy9Tb3VyY2UvUHl0aG9u L0F1dG9HZW4vQXV0b0dlbi5weSAgICB8IDM4ICsrKysrKystLS0tLS0tDQo+ICAuLi4vU291cmNl L1B5dGhvbi9BdXRvR2VuL0J1aWxkRW5naW5lLnB5ICAgICAgfCAxMiArKy0tLQ0KPiAgQmFzZVRv b2xzL1NvdXJjZS9QeXRob24vQXV0b0dlbi9HZW5NYWtlLnB5ICAgIHwgIDQgKy0NCj4gIEJhc2VU b29scy9Tb3VyY2UvUHl0aG9uL0F1dG9HZW4vR2VuUGNkRGIucHkgICB8ICA2ICstLQ0KPiAgLi4u L1NvdXJjZS9QeXRob24vQXV0b0dlbi9JbmZTZWN0aW9uUGFyc2VyLnB5IHwgMTAgKystLQ0KPiAg Li4uL1NvdXJjZS9QeXRob24vQXV0b0dlbi9VbmlDbGFzc09iamVjdC5weSAgIHwgIDQgKy0NCj4g IC4uLi9Tb3VyY2UvUHl0aG9uL0NvbW1vbi9CdWlsZFRvb2xFcnJvci5weSAgICB8ICAyICstDQo+ ICBCYXNlVG9vbHMvU291cmNlL1B5dGhvbi9Db21tb24vRWRrTG9nZ2VyLnB5ICAgfCAgNiArLS0N Cj4gIEJhc2VUb29scy9Tb3VyY2UvUHl0aG9uL0NvbW1vbi9NaXNjLnB5ICAgICAgICB8IDIwICsr KystLS0tDQo+ICAuLi4vU291cmNlL1B5dGhvbi9Db21tb24vTXVsdGlwbGVXb3Jrc3BhY2UucHkg fCAgNCArLQ0KPiAgQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vQ29tbW9uL1BhcnNpbmcucHkgICAg IHwgIDYgKy0tDQo+ICAuLi4vU291cmNlL1B5dGhvbi9Db21tb24vUmFuZ2VFeHByZXNzaW9uLnB5 ICAgfCAgNCArLQ0KPiAgQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vQ29tbW9uL1N0cmluZ1V0aWxz LnB5IHwgMTQgKystLS0NCj4gIC4uLi9QeXRob24vQ29tbW9uRGF0YUNsYXNzL0NvbW1vbkNsYXNz LnB5ICAgICB8ICAyICstDQo+ICAuLi4vUHl0aG9uL0NvbW1vbkRhdGFDbGFzcy9EYXRhQ2xhc3Mu cHkgICAgICAgfCAgNCArLQ0KPiAgQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vRWNjL0MuZyAgICAg ICAgICAgICAgIHwgIDggKy0tDQo+ICAuLi4vU291cmNlL1B5dGhvbi9FY2MvQ1BhcnNlcjMvQ0xl eGVyLnB5ICAgICAgfCAgMiArLQ0KPiAgLi4uL1NvdXJjZS9QeXRob24vRWNjL0NQYXJzZXIzL0NQ YXJzZXIucHkgICAgIHwgIDIgKy0NCj4gIEJhc2VUb29scy9Tb3VyY2UvUHl0aG9uL0VjYy9DaGVj ay5weSAgICAgICAgICB8IDE0ICsrLS0tDQo+ICBCYXNlVG9vbHMvU291cmNlL1B5dGhvbi9FY2Mv RGF0YWJhc2UucHkgICAgICAgfCAgOCArLS0NCj4gIEJhc2VUb29scy9Tb3VyY2UvUHl0aG9uL0Vj Yy9FY2NNYWluLnB5ICAgICAgICB8ICA0ICstDQo+ICBCYXNlVG9vbHMvU291cmNlL1B5dGhvbi9F Y2MvRWNjVG9vbEVycm9yLnB5ICAgfCAgNCArLQ0KPiAgQmFzZVRvb2xzL1NvdXJjZS9QeXRob24v RWNjL01ldGFEYXRhUGFyc2VyLnB5IHwgIDIgKy0NCj4gIEJhc2VUb29scy9Tb3VyY2UvUHl0aG9u L0VjYy9jLnB5ICAgICAgICAgICAgICB8ICA4ICstLQ0KPiAgLi4uL1NvdXJjZS9QeXRob24vRW90 L0NQYXJzZXIzL0NMZXhlci5weSAgICAgIHwgIDIgKy0NCj4gIC4uLi9Tb3VyY2UvUHl0aG9uL0Vv dC9DUGFyc2VyMy9DUGFyc2VyLnB5ICAgICB8ICAyICstDQo+ICAuLi4vUHl0aG9uL0VvdC9Db2Rl RnJhZ21lbnRDb2xsZWN0b3IucHkgICAgICAgfCAgNiArLS0NCj4gIEJhc2VUb29scy9Tb3VyY2Uv UHl0aG9uL0VvdC9EYXRhYmFzZS5weSAgICAgICB8ICA2ICstLQ0KPiAgQmFzZVRvb2xzL1NvdXJj ZS9QeXRob24vRW90L0VvdEdsb2JhbERhdGEucHkgIHwgIDIgKy0NCj4gIEJhc2VUb29scy9Tb3Vy Y2UvUHl0aG9uL0VvdC9Fb3RNYWluLnB5ICAgICAgICB8ICAyICstDQo+ICBCYXNlVG9vbHMvU291 cmNlL1B5dGhvbi9Fb3QvSW5mUGFyc2VyTGl0ZS5weSAgfCAgNCArLQ0KPiAgQmFzZVRvb2xzL1Nv dXJjZS9QeXRob24vRW90L1BhcnNlci5weSAgICAgICAgIHwgIDQgKy0NCj4gIEJhc2VUb29scy9T b3VyY2UvUHl0aG9uL0VvdC9SZXBvcnQucHkgICAgICAgICB8ICAyICstDQo+ICBCYXNlVG9vbHMv U291cmNlL1B5dGhvbi9HZW5GZHMvRmRmUGFyc2VyLnB5ICAgfCAzMCArKysrKy0tLS0tLQ0KPiAg Li4uL1NvdXJjZS9QeXRob24vR2VuRmRzL0Zmc0luZlN0YXRlbWVudC5weSAgIHwgIDQgKy0NCj4g IEJhc2VUb29scy9Tb3VyY2UvUHl0aG9uL0dlbkZkcy9Gdi5weSAgICAgICAgICB8ICAyICstDQo+ ICAuLi4vUnNhMjA0OFNoYTI1NlNpZ24vUnNhMjA0OFNoYTI1NlNpZ24ucHkgICAgfCAgMiArLQ0K PiAgQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vVGFibGUvVGFibGUucHkgICAgICAgIHwgIDIgKy0N Cj4gIC4uLi9Tb3VyY2UvUHl0aG9uL1RhYmxlL1RhYmxlRnVuY3Rpb24ucHkgICAgICB8ICA0ICst DQo+ICBCYXNlVG9vbHMvU291cmNlL1B5dGhvbi9UYWJsZS9UYWJsZVF1ZXJ5LnB5ICAgfCAgMiAr LQ0KPiAgLi4uL1NvdXJjZS9QeXRob24vVGFyZ2V0VG9vbC9UYXJnZXRUb29sLnB5ICAgIHwgIDQg Ky0NCj4gIEJhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1RyaW0vVHJpbS5weSAgICAgICAgICB8ICAy ICstDQo+ICAuLi4vU291cmNlL1B5dGhvbi9VUFQvQ29yZS9EZXBlbmRlbmN5UnVsZXMucHkgfCAg MiArLQ0KPiAgQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vVVBUL0NvcmUvSXBpRGIucHkgICAgIHwg MTYgKysrLS0tDQo+ICAuLi4vUHl0aG9uL1VQVC9HZW5NZXRhRmlsZS9HZW5EZWNGaWxlLnB5ICAg ICAgfCAgNCArLQ0KPiAgLi4uL1B5dGhvbi9VUFQvR2VuTWV0YUZpbGUvR2VuSW5mRmlsZS5weSAg ICAgIHwgIDQgKy0NCj4gIEJhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1VQVC9JbnN0YWxsUGtnLnB5 ICAgICB8IDIwICsrKystLS0tDQo+ICAuLi4vUHl0aG9uL1VQVC9MaWJyYXJ5L0NvbW1lbnRQYXJz aW5nLnB5ICAgICAgfCAxNCArKy0tLQ0KPiAgLi4uL1NvdXJjZS9QeXRob24vVVBUL0xpYnJhcnkv RGF0YVR5cGUucHkgICAgIHwgIDIgKy0NCj4gIC4uLi9Tb3VyY2UvUHl0aG9uL1VQVC9MaWJyYXJ5 L0dsb2JhbERhdGEucHkgICB8ICAyICstDQo+ICBCYXNlVG9vbHMvU291cmNlL1B5dGhvbi9VUFQv TGlicmFyeS9NaXNjLnB5ICAgfCAgOCArLS0NCj4gIC4uLi9QeXRob24vVVBUL0xpYnJhcnkvUGFy c2VyVmFsaWRhdGUucHkgICAgICB8IDE0ICsrLS0tDQo+ICAuLi4vU291cmNlL1B5dGhvbi9VUFQv TGlicmFyeS9QYXJzaW5nLnB5ICAgICAgfCAgMiArLQ0KPiAgLi4uL1NvdXJjZS9QeXRob24vVVBU L0xpYnJhcnkvU3RyaW5nVXRpbHMucHkgIHwgMTIgKystLS0NCj4gIC4uLi9QeXRob24vVVBUL0xp YnJhcnkvVW5pQ2xhc3NPYmplY3QucHkgICAgICB8IDIwICsrKystLS0tDQo+ICBCYXNlVG9vbHMv U291cmNlL1B5dGhvbi9VUFQvTG9nZ2VyL0xvZy5weSAgICAgfCAgNiArLS0NCj4gIC4uLi9Tb3Vy Y2UvUHl0aG9uL1VQVC9Mb2dnZXIvU3RyaW5nVGFibGUucHkgICB8IDEyICsrLS0tDQo+ICAuLi4v U291cmNlL1B5dGhvbi9VUFQvTG9nZ2VyL1Rvb2xFcnJvci5weSAgICAgfCAgMiArLQ0KPiAgQmFz ZVRvb2xzL1NvdXJjZS9QeXRob24vVVBUL01rUGtnLnB5ICAgICAgICAgIHwgIDIgKy0NCj4gIC4u Li9QeXRob24vVVBUL09iamVjdC9QYXJzZXIvRGVjT2JqZWN0LnB5ICAgICB8ICA0ICstDQo+ICAu Li4vU291cmNlL1B5dGhvbi9VUFQvUGFyc2VyL0RlY1BhcnNlci5weSAgICAgfCAgNCArLQ0KPiAg Li4uL1B5dGhvbi9VUFQvUGFyc2VyL0luZkFzQnVpbHRQcm9jZXNzLnB5ICAgIHwgIDQgKy0NCj4g IC4uLi9QeXRob24vVVBUL1BvbUFkYXB0ZXIvRGVjUG9tQWxpZ25tZW50LnB5ICB8ICA0ICstDQo+ ICAuLi4vUHl0aG9uL1VQVC9Qb21BZGFwdGVyL0luZlBvbUFsaWdubWVudC5weSAgfCAgMiArLQ0K PiAgLi4uL1VQVC9Qb21BZGFwdGVyL0luZlBvbUFsaWdubWVudE1pc2MucHkgICAgIHwgIDQgKy0N Cj4gIEJhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1VQVC9SbVBrZy5weSAgICAgICAgICB8ICA0ICst DQo+ICAuLi4vUHl0aG9uL1VQVC9Vbml0VGVzdC9EZWNQYXJzZXJVbml0VGVzdC5weSAgfCAgNiAr LS0NCj4gIC4uLi9QeXRob24vV29ya3NwYWNlL0J1aWxkQ2xhc3NPYmplY3QucHkgICAgICB8ICAy ICstDQo+ICAuLi4vU291cmNlL1B5dGhvbi9Xb3Jrc3BhY2UvRGVjQnVpbGREYXRhLnB5ICAgfCAg OCArLS0NCj4gIC4uLi9Tb3VyY2UvUHl0aG9uL1dvcmtzcGFjZS9Ec2NCdWlsZERhdGEucHkgICB8 ICAyICstDQo+ICAuLi4vU291cmNlL1B5dGhvbi9Xb3Jrc3BhY2UvSW5mQnVpbGREYXRhLnB5ICAg fCAgNCArLQ0KPiAgLi4uL1NvdXJjZS9QeXRob24vV29ya3NwYWNlL01ldGFGaWxlUGFyc2VyLnB5 IHwgIDIgKy0NCj4gIC4uLi9QeXRob24vV29ya3NwYWNlL1dvcmtzcGFjZUNvbW1vbi5weSAgICAg ICB8ICAyICstDQo+ICAuLi4vUHl0aG9uL1dvcmtzcGFjZS9Xb3Jrc3BhY2VEYXRhYmFzZS5weSAg ICAgfCAgOCArLS0NCj4gIEJhc2VUb29scy9Tb3VyY2UvUHl0aG9uL2J1aWxkL2J1aWxkLnB5ICAg ICAgICB8ICA4ICstLQ0KPiAgQmFzZVRvb2xzL1Rlc3RzL1RpYW5vQ29tcHJlc3MucHkgICAgICAg ICAgICAgIHwgIDIgKy0NCj4gIC4uLi9Vc2VyTWFudWFscy9HZW5GZHNfVXRpbGl0eV9NYW5fUGFn ZS5ydGYgICB8ICA2ICstLQ0KPiAgLi4uL1VzZXJNYW51YWxzL0dlbkZ3X1V0aWxpdHlfTWFuX1Bh Z2UucnRmICAgIHwgIDIgKy0NCj4gIEJhc2VUb29scy9idWlsZGluZy1nY2MudHh0ICAgICAgICAg ICAgICAgICAgICB8ICA0ICstDQo+ICBCYXNlVG9vbHMvZ2NjL21pbmd3LWdjYy1idWlsZC5weSAg ICAgICAgICAgICAgfCAgMiArLQ0KPiAgQmFzZVRvb2xzL3Rvb2xzZXR1cC5iYXQgICAgICAgICAg ICAgICAgICAgICAgIHwgIDIgKy0NCj4gIEJ1aWxkTm90ZXMyLnR4dCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8ICAyICstDQo+ICBDb250cmlidXRpb25zLnR4dCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAgMiArLQ0KPiAgZWRrc2V0dXAuYmF0ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgIDIgKy0NCj4gIDE3MiBmaWxlcyBjaGFuZ2VkLCA1MTMgaW5zZXJ0 aW9ucygrKSwgNTE4IGRlbGV0aW9ucygtKQ0KPiANCj4gZGlmZiAtLWdpdCBhL0Jhc2VUb29scy9C aW4vQ1lHV0lOX05ULTUuMS1pNjg2L2FybWNjX3dyYXBwZXIucHkgYi9CYXNlVG9vbHMvQmluL0NZ R1dJTl9OVC01LjEtaTY4Ni9hcm1jY193cmFwcGVyLnB5DQo+IGluZGV4IDY2YjllOWRjOGMuLmNh MzczZDQwYWIgMTAwNzU1DQo+IC0tLSBhL0Jhc2VUb29scy9CaW4vQ1lHV0lOX05ULTUuMS1pNjg2 L2FybWNjX3dyYXBwZXIucHkNCj4gKysrIGIvQmFzZVRvb2xzL0Jpbi9DWUdXSU5fTlQtNS4xLWk2 ODYvYXJtY2Nfd3JhcHBlci5weQ0KPiBAQCAtMTgsNyArMTgsNyBAQA0KPiAgIw0KPiAgIyBhcm1j Y193cmFwcGVyLnB5IFRvb2xUb0V4ZWMgW2NvbW1hbmQgbGluZSB0byBjb252ZXJ0XQ0KPiAgIw0K PiAtIyBhbnRoaW5nIHdpdGggdGhlIC8gd2lsbCBiZSBjb252ZXJ0ZWQgdmlhIGN5Z3BhdGggY3ln d2luIGNhbGwgb3IgbWFudWFsbHkuDQo+ICsjIGFueXRoaW5nIHdpdGggdGhlIC8gd2lsbCBiZSBj b252ZXJ0ZWQgdmlhIGN5Z3BhdGggY3lnd2luIGNhbGwgb3IgbWFudWFsbHkuDQo+ICAjIC1JL2N5 Z3BhdGgvYy9leGFtcGxlIGlzIGEgc3BlY2lhbCBjYXNlIGFzIHlvdSBjYW4gbm90IHBhc3MgLUkg dG8gY3lncGF0aA0KPiAgIw0KPiAgIyBFeGNlcHRpb25MaXN0IGlmIGEgdG9vbCB0YWtlcyBhbiBh cmd1bWVudCB3aXRoIGEgLyBhZGQgaXQgdG8gdGhlIGV4Y2VwdGlvbiBsaXN0DQo+IGRpZmYgLS1n aXQgYS9CYXNlVG9vbHMvQ29uZi9YTUxTY2hlbWEvRGlzdHJpYnV0aW9uUGFja2FnZS54c2QgYi9C YXNlVG9vbHMvQ29uZi9YTUxTY2hlbWEvRGlzdHJpYnV0aW9uUGFja2FnZS54c2QNCj4gaW5kZXgg NmUzMWQyZGVmMS4uNzJlMzkzNmUzMSAxMDA2NDQNCj4gLS0tIGEvQmFzZVRvb2xzL0NvbmYvWE1M U2NoZW1hL0Rpc3RyaWJ1dGlvblBhY2thZ2UueHNkDQo+ICsrKyBiL0Jhc2VUb29scy9Db25mL1hN TFNjaGVtYS9EaXN0cmlidXRpb25QYWNrYWdlLnhzZA0KPiBAQCAtMTQ1LDcgKzE0NSw3IEBAIFdJ VEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUiBF WFBSRVNTIE9SIElNUExJRUQuDQo+ICAgICAgICAgICAgICA8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6 bGFuZz0iZW4tdXMiPg0KPiAgICAgICAgICAgICAgICBUaGUgVXNlckV4dGVuc2lvbnMgc2VjdGlv biBpcyB1c2VkIHRvIGRpc3NlbWluYXRlIHByb2Nlc3NpbmcNCj4gICAgICAgICAgICAgICAgaW5z dHJ1Y3Rpb25zIHRoYXQgbWF5IGJlIGN1c3RvbSB0byB0aGUgY29udGVudCBwcm92aWRlZCBieSB0 aGUgZGlzdHJpYnV0aW9uLiBUaGlzIHNlY3Rpb24NCj4gLSAgICAgICAgICAgICAgY29udGFpbnMg aW5mb3JtYXRpb24gdGhhdCBpcyBjb21tb24gdG8gYWxsIGFzcGVjdHMgb2YgdGhpcyBkaXNyaWJ1 dGlvbi4NCj4gKyAgICAgICAgICAgICAgY29udGFpbnMgaW5mb3JtYXRpb24gdGhhdCBpcyBjb21t b24gdG8gYWxsIGFzcGVjdHMgb2YgdGhpcyBkaXN0cmlidXRpb24uDQo+ICAgICAgICAgICAgICA8 L3hzOmRvY3VtZW50YXRpb24+DQo+ICAgICAgICAgICAgPC94czphbm5vdGF0aW9uPg0KPiAgICAg ICAgICA8L3hzOmVsZW1lbnQ+DQo+IEBAIC0zMjgsNyArMzI4LDcgQEAgV0lUSE9VVCBXQVJSQU5U SUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSIEVYUFJFU1MgT1IgSU1Q TElFRC4NCj4gICAgICAgICAgICAgICAgaW1wb3J0YW50IHRvIHJlZmxlY3QgdGhlIHByZXNlbnQg c3RhdGUgb2YgdGhlIG1hdHRlcg0KPiAgICAgICAgICAgICAgPC94czpkb2N1bWVudGF0aW9uPg0K PiAgICAgICAgICAgICAgPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuLXVzIj4NCj4gLSAg ICAgICAgICAgICAgIzIgQWRkZWQgZGVmaW5pdGlvbi9lbnVtZXJhdGlvbiBvZiBVTkRFRklORCB0 eXBlIDIgaXMNCj4gKyAgICAgICAgICAgICAgIzIgQWRkZWQgZGVmaW5pdGlvbi9lbnVtZXJhdGlv biBvZiBVTkRFRklORUQgdHlwZSAyIGlzDQo+ICAgICAgICAgICAgICAgIGltcG9ydGFudCBzaW5j ZSB0aGVyZSBpcyBhIGxhcmdlIGJvZHkgb2YgbGVnYWN5IGNvZGUgZm9yIHdoaWNoIHRoZSBHVUlE 4oCaw4TDtHMgYW5kIG90aGVyDQo+ICAgICAgICAgICAgICAgIGNvZGUvZGF0YSBvYmplY3RzIHdl cmUgbm90IGRlY29yYXRlZCB3aXRoIHRoZWlyIHVzYWdlLiBUaGlzIGRvY3VtZW50IHdpbGwgYWxs b3cgZm9yDQo+ICAgICAgICAgICAgICAgIGltcG9ydGluZyB0b2RheeKAmsOEw7RzIHNvdXJjZSBh cnRpZmFjdHMgYW5kIHByb2R1Y2luZyBkZWNvcmF0aW9ucyB1c2luZyB0aGUg4oCaw4TDslVuZGVm aW5lZOKAmsOEw7QgdmVyc3VzDQo+IEBAIC02OTYsNyArNjk2LDcgQEAgV0lUSE9VVCBXQVJSQU5U SUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSIEVYUFJFU1MgT1IgSU1Q TElFRC4NCj4gICAgICAgICAgICAgIDwveHM6c2VxdWVuY2U+DQo+ICAgICAgICAgICAgPC94czpj b21wbGV4VHlwZT4NCj4gICAgICAgICAgPC94czplbGVtZW50Pg0KPiAtICAgICAgICA8IS0tIEVu ZCBvZiBQYWNrYWdlU3VyZmFjZUFyZWEgUGFja2FnZUluY2x1Y2VzIGVsZW1lbnQuICAtLT4NCj4g KyAgICAgICAgPCEtLSBFbmQgb2YgUGFja2FnZVN1cmZhY2VBcmVhIFBhY2thZ2VJbmNsdWRlcyBl bGVtZW50LiAgLS0+DQo+IA0KPiAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1h eE9jY3Vycz0iMSIgbmFtZT0iTW9kdWxlcyI+DQo+ICAgICAgICAgICAgPHhzOmNvbXBsZXhUeXBl Pg0KPiBAQCAtOTYyLDggKzk2Miw4IEBAIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRB VElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICA8eHM6YW5ub3RhdGlvbj4NCj4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuLXVzIj4NCj4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgUENEIG11c3QgYmUgd2l0aGlu IGENCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZlZCByYW5nZSBv ZiBudW1lcmljIHZhbHVlcy4gUmVzdHJpY3RlZCB0byBDIHN0eWxlDQo+IC0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUmVsYXRpb25hbCwgRXF1YWxpdHkgYW5kIExvZ2ljaWFsIE9w ZXJhdG9ycyBhbmQgcGFyZW50aGVzaXMNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzcGVjaWZpZWQgcmFuZ2Ugb2YgbnVtZXJpYyB2YWx1ZXMuIFJlc3RyaWN0ZWQgdG8gQyBz dHlsZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbGF0aW9uYWwsIEVx dWFsaXR5IGFuZCBMb2dpY2FsIE9wZXJhdG9ycyBhbmQgcGFyZW50aGVzaXMNCj4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBhcmUgdmFsaWQuIE9ubHkgdGhlIENOYW1lIGZvciB0 aGlzIFBDRCBpcyBwZXJtaXR0ZWQgaW4gdGhlDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgVmFsaWRWYWx1ZVJhbmdlIGV4cHJlc3Npb24uIEFsbCBvdGhlciB2YWx1ZXMgbXVz dCBiZQ0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bWVyaWMuDQo+IEBA IC0xMDA2LDcgKzEwMDYsNyBAQCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05T IE9GIEFOWSBLSU5ELCBFSVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVELg0KPiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuLXVzIj4NCj4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBzdHJpbmcgc2hvdWxkIGJlDQo+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZWQgYnkgc3BlY2lmaWNhdGlv bnMuIFRoZXJlIGFyZSBwcmUtZGVmaW5lZCBlcnJvcg0KPiAtICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBudW1iZXIgcmFuZ2VzIGluIHRoZSBVRUZJL1BJIHNwZWNpZmljYWl0b24uDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlciByYW5nZXMgaW4gdGhlIFVF RkkvUEkgc3BlY2lmaWNhdGlvbi4NCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwv eHM6ZG9jdW1lbnRhdGlvbj4NCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3hzOmFu bm90YXRpb24+DQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzOmNvbXBsZXhUeXBl Pg0KPiBAQCAtMTQ1Miw3ICsxNDUyLDcgQEAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VO VEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSIEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgPHhzOmFubm90YXRpb24+DQo+ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuLXVzIj4NCj4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBtb2R1bGUgd2lsbCBjaGFuZ2UgdGhlDQo+IC0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib290IG1vZGUgb24gc29tZSBleGVjdGlvbiBw YXRocy4NCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb3QgbW9kZSBvbiBzb21l IGV4ZWN1dGlvbiBwYXRocy4NCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3hzOmRv Y3VtZW50YXRpb24+DQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwveHM6YW5ub3RhdGlv bj4NCj4gICAgICAgICAgICAgICAgICAgICAgICAgIDwveHM6ZW51bWVyYXRpb24+DQo+IEBAIC0y ODM1LDcgKzI4MzUsNyBAQCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9G IEFOWSBLSU5ELCBFSVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVELg0KPiAgICAgICAgPHhzOmFueUF0 dHJpYnV0ZSBwcm9jZXNzQ29udGVudHM9ImxheCIvPg0KPiAgICAgIDwveHM6Y29tcGxleFR5cGU+ DQo+ICAgIDwveHM6ZWxlbWVudD4NCj4gLSAgPCEtLSBUaGUgZm9sbG93aW5nIGVsc2VtZW50cyBh cmUgY29tbW9uIGRlZmluaXRpb25zIHVzZWQgd2l0aCB0aGUgcmVmIGF0dHJpYnV0ZSBmb3IgZWxl bWVudHMuIC0tPg0KPiArICA8IS0tIFRoZSBmb2xsb3dpbmcgZWxlbWVudHMgYXJlIGNvbW1vbiBk ZWZpbml0aW9ucyB1c2VkIHdpdGggdGhlIHJlZiBhdHRyaWJ1dGUgZm9yIGVsZW1lbnRzLiAtLT4N Cj4gDQo+ICAgIDx4czplbGVtZW50IG5hbWU9IkhlbHBUZXh0Ij4NCj4gICAgICA8eHM6Y29tcGxl eFR5cGU+DQo+IGRpZmYgLS1naXQgYS9CYXNlVG9vbHMvQ29uZi9idWlsZF9ydWxlLnRlbXBsYXRl IGIvQmFzZVRvb2xzL0NvbmYvYnVpbGRfcnVsZS50ZW1wbGF0ZQ0KPiBpbmRleCAyYTUzZDdlZDYz Li43NjBiZmFlODEyIDEwMDc1NQ0KPiAtLS0gYS9CYXNlVG9vbHMvQ29uZi9idWlsZF9ydWxlLnRl bXBsYXRlDQo+ICsrKyBiL0Jhc2VUb29scy9Db25mL2J1aWxkX3J1bGUudGVtcGxhdGUNCj4gQEAg LTYzLDcgKzYzLDcgQEANCj4gICMgICAkKEZWX0RJUikgICAgICAgICAgIERpcmVjdG9yeSB0byBz dG9yZSBmbGFzaCBpbWFnZSBmaWxlcw0KPiAgIyAgICQoSU5DKSAgICAgICAgICAgICAgU2VhcmNo IHBhdGggb2YgY3VycmVudCBtb2R1bGUNCj4gICMgICAkKE5BU01fSU5DKSAgICAgICAgIFNlYXJj aCBuYXNtIGZpbGUgcGF0aCBvZiBjdXJyZW50IG1vZHVsZQ0KPiAtIyAgICQoSU5DX0xJU1QpICAg ICAgICAgQSBmaWxlIGNvbnRhaW5pbmcgc2VhcmNoIHBhdGhlcyBvZiBjdXJyZW50IG1vZHVsZQ0K PiArIyAgICQoSU5DX0xJU1QpICAgICAgICAgQSBmaWxlIGNvbnRhaW5pbmcgc2VhcmNoIHBhdGhz IG9mIGN1cnJlbnQgbW9kdWxlDQo+ICAjICAgJChMSUJTKSAgICAgICAgICAgICBTdGF0aWMgbGli cmFyeSBmaWxlcyBvZiBjdXJyZW50IG1vZHVsZQ0KPiAgIyAgICQoPHRvb2w+X0ZMQUdTKSAgICAg VG9vbHMgZmxhZ3Mgb2YgY3VycmVudCBtb2R1bGUNCj4gICMgICAkKE1PRFVMRV9OQU1FKSAgICAg IEN1cnJlbnQgbW9kdWxlIG5hbWUNCj4gQEAgLTM3OSw3ICszNzksNyBAQA0KPiAgICAgICAgICAk KE9CSkNPUFkpIC0tc3RyaXAtdW5uZWVkZWQgLVIgLmVoX2ZyYW1lICR7c3JjfQ0KPiANCj4gICAg ICAgICAgIw0KPiAtICAgICAgICAjVGhlIGJlbG93IDIgbGluZXMgYXJlIG9ubHkgbmVlZGVkIGZv ciBVTklYR0NDIHRvb2wgY2hhaW4sIHdoaWNoIGdlbmVyZWF0ZXMgUEUgaW1hZ2UgZGlyZWN0bHkN Cj4gKyAgICAgICAgI1RoZSBiZWxvdyAyIGxpbmVzIGFyZSBvbmx5IG5lZWRlZCBmb3IgVU5JWEdD QyB0b29sIGNoYWluLCB3aGljaCBnZW5lcmF0ZXMgUEUgaW1hZ2UgZGlyZWN0bHkNCj4gICAgICAg ICAgIw0KPiAgICAgICAgICAtJChPQkpDT1BZKSAkKE9CSkNPUFlfQUREREVCVUdGTEFHKSAke3Ny Y30NCj4gICAgICAgICAgLSQoQ1ApICQoREVCVUdfRElSKSgrKSQoTU9EVUxFX05BTUUpLmRlYnVn ICQoQklOX0RJUikoKykkKE1PRFVMRV9OQU1FX0dVSUQpLmRlYnVnDQo+IGRpZmYgLS1naXQgYS9C YXNlVG9vbHMvQ29uZi90YXJnZXQudGVtcGxhdGUgYi9CYXNlVG9vbHMvQ29uZi90YXJnZXQudGVt cGxhdGUNCj4gaW5kZXggZTVjMzFmZTVhMC4uMTU1ZTZjNDBkMiAxMDA2NDQNCj4gLS0tIGEvQmFz ZVRvb2xzL0NvbmYvdGFyZ2V0LnRlbXBsYXRlDQo+ICsrKyBiL0Jhc2VUb29scy9Db25mL3Rhcmdl dC50ZW1wbGF0ZQ0KPiBAQCAtMzcsNyArMzcsNyBAQCBUQVJHRVQgICAgICAgICAgICAgICAgPSBE RUJVRw0KPiAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg T25lLCBvciBtb3JlLCBvZiB0aGUgZm9sbG93aW5nLCBJQTMyLCBJUEYsIFg2NCwgRUJDLCBBUk0N Cj4gICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yIEFB cmNoNjQuDQo+ICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBNdWx0aXBsZSB2YWx1ZXMgY2FuIGJlIHNwZWNpZmllZCBvbiBhIHNpbmdsZSBsaW5lLCB1c2lu Zw0KPiAtIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Bh Y2UgY2hhcmF0ZXJzIHRvIHNlcGFyYXRlIHRoZSB2YWx1ZXMuICBUaGVzZSBhcmUgdXNlZA0KPiAr IyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BhY2UgY2hh cmFjdGVycyB0byBzZXBhcmF0ZSB0aGUgdmFsdWVzLiAgVGhlc2UgYXJlIHVzZWQNCj4gICMgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR1cmluZyB0aGUgcGFy c2luZyBvZiBhIHBsYXRmb3JtIGRlc2NyaXB0aW9uIGZpbGUsDQo+ICAjICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN0cmljdGluZyB0aGUgYnVpbGQgb3V0 cHV0IHRhcmdldChzLikNCj4gICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFRoZSBCdWlsZCBUYXJnZXQgQVJDSCBpcyBkZXRlcm1pbmVkIGJ5IChwcmVjZWRl bmNlIGhpZ2ggdG8gbG93KToNCj4gZGlmZiAtLWdpdCBhL0Jhc2VUb29scy9Db25mL3Rvb2xzX2Rl Zi50ZW1wbGF0ZSBiL0Jhc2VUb29scy9Db25mL3Rvb2xzX2RlZi50ZW1wbGF0ZQ0KPiBpbmRleCAy YmQwOTgyODcyLi4xY2VjOGRlY2EyIDEwMDc1NQ0KPiAtLS0gYS9CYXNlVG9vbHMvQ29uZi90b29s c19kZWYudGVtcGxhdGUNCj4gKysrIGIvQmFzZVRvb2xzL0NvbmYvdG9vbHNfZGVmLnRlbXBsYXRl DQo+IEBAIC0xMzgsNyArMTM4LDcgQEAgREVGSU5FIElDQ19CSU42NHg4NiAgICAgPSBDOlxQcm9n cmFtIEZpbGVzICh4ODYpXEludGVsXENvbXBpbGVyXEMrK1xERUYoSUNDX1ZFUlMNCj4gDQo+IA0K PiAgIyBOb3RlOiBUaGUgSW50ZWwgQysrIENvbXBpbGVyIDExLjEgdXNlcyBkaWZmZXJlbnQgaW5z dGFsbGF0aW9uIHBhdGggZnJvbSBwcmV2aW91cyB2ZXJzaW9ucw0KPiAtIyAgICAgICBXZSB1c2Ug IklDQzExIiB0YWcgZm9yIElDQyAxMS4xIHdoaWxlICJJQ0MiIHRhZyBpcyBkZWRpY2F0ZWQgZm9y IGVhcmlsZXIgdmVyc2lvbnMNCj4gKyMgICAgICAgV2UgdXNlICJJQ0MxMSIgdGFnIGZvciBJQ0Mg MTEuMSB3aGlsZSAiSUNDIiB0YWcgaXMgZGVkaWNhdGVkIGZvciBlYXJsaWVyIHZlcnNpb25zDQo+ ICAjDQo+ICBERUZJTkUgSUNDMTFfVkVSU0lPTiAgICAgID0gMTEuMQ0KPiAgREVGSU5FIElDQzEx X0JVSUxEICAgICAgICA9IDA3Mg0KPiBAQCAtNjUwNyw3ICs2NTA3LDcgQEAgUkVMRUFTRV9SVkNU Q1lHV0lOX0FSTV9DQ19GTEFHUyAgPSAiJChDQ1BBVEhfRkxBRykiICQoQVJDSENDX0ZMQUdTKSAk KFBMQVRGT1JNX0YNCj4gICpfUlZDVENZR1dJTl9BUk1fRlJPTUVMRl9QQVRIICAgID0gRU5WKFdP UktTUEFDRSkvQmFzZVRvb2xzL0Jpbi9DWUdXSU5fTlQtNS4xLWk2ODYvYXJtY2Nfd3JhcHBlci5w eQ0KPiANCj4gICMjIyMjIyMjIyMjIyMjIyMjDQo+IC0jIEFTTSAxNiBsaW5rZXIgZGVmaW50aW9u cw0KPiArIyBBU00gMTYgbGlua2VyIGRlZmluaXRpb25zDQo+ICAjIyMjIyMjIyMjIyMjIyMjIw0K PiAgKl8qXypfQVNNTElOS19QQVRIICAgICAgICAgICAgICAgICA9IERFRihXSU5EREtfQklOMTYp XGxpbmsxNi5leGUNCj4gICpfKl8qX0FTTUxJTktfRkxBR1MgICAgICAgICAgICAgICAgPSAvbm9s b2dvIC90aW55DQo+IEBAIC02NTQ3LDExICs2NTQ3LDExIEBAIFJFTEVBU0VfUlZDVENZR1dJTl9B Uk1fQ0NfRkxBR1MgID0gIiQoQ0NQQVRIX0ZMQUcpIiAkKEFSQ0hDQ19GTEFHUykgJChQTEFURk9S TV9GDQo+ICAjIyMjIyMjIyMjIyMjIyMjIyMNCj4gICMgUnNhMjA0OFNoYTI1NlNpZ24gdG9vbCBk ZWZpbml0aW9ucw0KPiAgIw0KPiAtIyBOb3RlczogVGhpcyB0b29sIGRlZmludGlvbiB1c2VzIGEg dGVzdCBzaWduaW5nIGtleSBmb3IgZGV2ZWxvcG1lbnQgcHVycG9zZXMgb25seS4NCj4gKyMgTm90 ZXM6IFRoaXMgdG9vbCBkZWZpbml0aW9uIHVzZXMgYSB0ZXN0IHNpZ25pbmcga2V5IGZvciBkZXZl bG9wbWVudCBwdXJwb3NlcyBvbmx5Lg0KPiAgIyAgICAgICAgVGhlIHRvb2wgUnNhMjA0OFNoYTI1 NkdlbmVyYXRlS2V5cyBjYW4gYmUgdXNlZCB0byBnZW5lcmF0ZSBhIG5ldyBwcml2YXRlL3B1Ymxp YyBrZXkNCj4gICMgICAgICAgIGFuZCB0aGUgZ0VmaVNlY3VyaXR5UGtnVG9rZW5TcGFjZUd1aWQu UGNkUnNhMjA0OFNoYTI1NlB1YmxpY0tleUJ1ZmZlciBQQ0QgdmFsdWUuDQo+ICAjICAgICAgICBB IGN1c3RvbSB0b29sL3NjcmlwdCBjYW4gYmUgaW1wbGVtZW50ZWQgdXNpbmcgdGhlIG5ldyBwcml2 YXRlL3B1YmxpYyBrZXkgd2l0aA0KPiAtIyAgICAgICAgdGhlIFJzYTIwNDhTaGEyNTZTaWduIHRv b2wgYW5kIHRoaXMgdG9vbCBkZWZpbnRpaW9uIGNhbiBiZSB1cGRhdGVkIHRvIHVzZSBhDQo+ICsj ICAgICAgICB0aGUgUnNhMjA0OFNoYTI1NlNpZ24gdG9vbCBhbmQgdGhpcyB0b29sIGRlZmluaXRp b24gY2FuIGJlIHVwZGF0ZWQgdG8gdXNlIGENCj4gICMgICAgICAgIGN1c3RvbSB0b29sL3Njcmlw dC4NCj4gICMNCj4gICMgICBHZW5lcmF0ZSBuZXcgcHJpdmF0ZS9wdWJsaWMga2V5IGFuZCBnRWZp U2VjdXJpdHlQa2dUb2tlblNwYWNlR3VpZC5QY2RSc2EyMDQ4U2hhMjU2UHVibGljS2V5QnVmZmVy IFBDRCB2YWx1ZQ0KPiBkaWZmIC0tZ2l0IGEvQmFzZVRvb2xzL1JlYWRNZS50eHQgYi9CYXNlVG9v bHMvUmVhZE1lLnR4dA0KPiBpbmRleCA3ZDA0ODZiOTVhLi5iODFiZDkwNWZhIDEwMDY0NA0KPiAt LS0gYS9CYXNlVG9vbHMvUmVhZE1lLnR4dA0KPiArKysgYi9CYXNlVG9vbHMvUmVhZE1lLnR4dA0K PiBAQCAtMSw3ICsxLDcgQEANCj4gIFRoaXMgZGlyZWN0b3J5IGNvbnRhaW5zIHRoZSBuZXh0IGdl bmVyYXRpb24gb2YgRURLIElJIGJ1aWxkIHRvb2xzIGFuZCB0ZW1wbGF0ZSBmaWxlcy4NCj4gIFRl bXBsYXRlcyBhcmUgbG9jYXRlZCBpbiB0aGUgQ29uZiBkaXJlY3RvcnksIHdoaWxlIHRoZSB0b29s cyBleGVjdXRhYmxlcyBmb3INCj4gIE1pY3Jvc29mdCBXaW5kb3dzIDMyLWJpdCBPcGVyYXRpbmcg U3lzdGVtcyBhcmUgbG9jYXRlZCBpbiB0aGUgQmluXFdpbjMyIGRpcmVjdG9yeSwgb3RoZXINCj4g LWRpcmVjdG9yeSBjb250YXRpbnMgdG9vbHMgc291cmNlLg0KPiArZGlyZWN0b3J5IGNvbnRhaW5z IHRvb2xzIHNvdXJjZS4NCj4gDQo+ICAxLiBCdWlsZCBzdGVwIHRvIGdlbmVyYXRlIHRoZSBiaW5h cnkgdG9vbHMuDQo+IA0KPiBkaWZmIC0tZ2l0IGEvQmFzZVRvb2xzL1NjcmlwdHMvVXBkYXRlQnVp bGRWZXJzaW9ucy5weSBiL0Jhc2VUb29scy9TY3JpcHRzL1VwZGF0ZUJ1aWxkVmVyc2lvbnMucHkN Cj4gaW5kZXggMjY5NDM1YmZhNC4uNWE1ODNkYjZjMCAxMDA3NTUNCj4gLS0tIGEvQmFzZVRvb2xz L1NjcmlwdHMvVXBkYXRlQnVpbGRWZXJzaW9ucy5weQ0KPiArKysgYi9CYXNlVG9vbHMvU2NyaXB0 cy9VcGRhdGVCdWlsZFZlcnNpb25zLnB5DQo+IEBAIC00LDcgKzQsNyBAQA0KPiAgIyBUaGlzIHNj cmlwdCB3aWxsIG1vZGlmZSB0aGUgQy9JbmNsdWRlL0NvbW1vbi9CdWlsZFZlcnNpb24uaCBmaWxl IGFuZCB0aGUgdHdvDQo+ICAjIFB5dGhvbiBzY3JpcHRzLCBQeXRob24vQ29tbW9uL0J1aWxkVmVy c2lvbi5weSBhbmQgUHl0aG9uL1VQVC9CdWlsZFZlcnNpb24ucHkuDQo+ICAjIElmIFNWTiBpcyBh dmFpbGFibGUsIHRoZSB0b29sIHdpbGwgb2J0YWluIHRoZSBjdXJyZW50IGNoZWNrZWQgb3V0IHZl cnNpb24gb2YNCj4gLSMgdGhlIHNvdXJjZSB0cmVlIGZvciBpbmNsdWRpbmcgdGhlIHRoZSAtLXZl cnNpb24gY29tbWFuZHMuDQo+ICsjIHRoZSBzb3VyY2UgdHJlZSBmb3IgaW5jbHVkaW5nIHRoZSAt LXZlcnNpb24gY29tbWFuZHMuDQo+IA0KPiAgIyAgQ29weXJpZ2h0IChjKSAyMDE0IC0gMjAxNSwg SW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiAgIw0KPiBAQCAt NzMsNyArNzMsNyBAQCBkZWYgUGFyc2VPcHRpb25zKCk6DQo+IA0KPiANCj4gIGRlZiBTaGVsbENv bW1hbmRSZXN1bHRzKENtZExpbmUsIE9wdCk6DQo+IC0gICAgIiIiIEV4ZWN1dGUgdGhlIGNvbWFu ZCwgcmV0dXJuaW5nIHRoZSBvdXRwdXQgY29udGVudCAiIiINCj4gKyAgICAiIiIgRXhlY3V0ZSB0 aGUgY29tbWFuZCwgcmV0dXJuaW5nIHRoZSBvdXRwdXQgY29udGVudCAiIiINCj4gICAgICBmaWxl X2xpc3QgPSBOYW1lZFRlbXBvcmFyeUZpbGUoZGVsZXRlPUZhbHNlKQ0KPiAgICAgIGZpbGVuYW1l ID0gZmlsZV9saXN0Lm5hbWUNCj4gICAgICBSZXN1bHRzID0gW10NCj4gZGlmZiAtLWdpdCBhL0Jh c2VUb29scy9Tb3VyY2UvQy9Db21tb24vQmFzZVBlQ29mZi5jIGIvQmFzZVRvb2xzL1NvdXJjZS9D L0NvbW1vbi9CYXNlUGVDb2ZmLmMNCj4gaW5kZXggZDVjZWZiZDBiMC4uOTExMmQwMTMxYyAxMDA2 NDQNCj4gLS0tIGEvQmFzZVRvb2xzL1NvdXJjZS9DL0NvbW1vbi9CYXNlUGVDb2ZmLmMNCj4gKysr IGIvQmFzZVRvb2xzL1NvdXJjZS9DL0NvbW1vbi9CYXNlUGVDb2ZmLmMNCj4gQEAgLTIxNyw3ICsy MTcsNyBAQCBSZXR1cm5zOg0KPiAgICAgICAgSW1hZ2VDb250ZXh0LT5JbWFnZVR5cGUgIT0gRUZJ X0lNQUdFX1NVQlNZU1RFTV9FRklfUlVOVElNRV9EUklWRVIgJiYgXA0KPiAgICAgICAgSW1hZ2VD b250ZXh0LT5JbWFnZVR5cGUgIT0gRUZJX0lNQUdFX1NVQlNZU1RFTV9TQUxfUlVOVElNRV9EUklW RVIpIHsNCj4gICAgICAvLw0KPiAtICAgIC8vIHVwc3VwcG9ydGVkIFBlSW1hZ2Ugc3Vic3lzdGVt IHR5cGUNCj4gKyAgICAvLyB1bnN1cHBvcnRlZCBQZUltYWdlIHN1YnN5c3RlbSB0eXBlDQo+ICAg ICAgLy8NCj4gICAgICByZXR1cm4gUkVUVVJOX1VOU1VQUE9SVEVEOw0KPiAgICB9DQo+IEBAIC00 ODMsNyArNDgzLDcgQEAgUmV0dXJuczoNCj4gICAgICAgIC8vIEluIFRlIGltYWdlIGhlYWRlciB0 aGVyZSBpcyBub3QgYSBmaWVsZCB0byBkZXNjcmliZSB0aGUgSW1hZ2VTaXplLg0KPiAgICAgICAg Ly8gQWN0dWFsbHksIHRoZSBJbWFnZVNpemUgZXF1YWxzIHRoZSBSVkEgcGx1cyB0aGUgVmlydHVh bFNpemUgb2YNCj4gICAgICAgIC8vIHRoZSBsYXN0IHNlY3Rpb24gbWFwcGVkIGludG8gbWVtb3J5 IChNdXN0IGJlIHJvdW5kZWQgdXAgdG8NCj4gLSAgICAgIC8vIGEgbXVsaXRwbGUgb2YgU2VjdGlv biBBbGlnbm1lbnQpLiBQZXIgdGhlIFBFL0NPRkYgc3BlY2lmaWNhdGlvbiwgdGhlDQo+ICsgICAg ICAvLyBhIG11bHRpcGxlIG9mIFNlY3Rpb24gQWxpZ25tZW50KS4gUGVyIHRoZSBQRS9DT0ZGIHNw ZWNpZmljYXRpb24sIHRoZQ0KPiAgICAgICAgLy8gc2VjdGlvbiBoZWFkZXJzIGluIHRoZSBTZWN0 aW9uIFRhYmxlIG11c3QgYXBwZWFyIGluIG9yZGVyIG9mIHRoZSBSVkENCj4gICAgICAgIC8vIHZh bHVlcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgc2VjdGlvbnMuIFNvIHRoZSBJbWFnZVNpemUgY2Fu IGJlIGRldGVybWluZWQNCj4gICAgICAgIC8vIGJ5IHRoZSBSVkEgYW5kIHRoZSBWaXJ0dWFsU2l6 ZSBvZiB0aGUgbGFzdCBzZWN0aW9uIGhlYWRlciBpbiB0aGUNCj4gQEAgLTEzMTUsNyArMTMxNSw3 IEBAIFBlQ29mZkxvYWRlckdldFBkYlBvaW50ZXIgKA0KPiAgICAgICAgYnJlYWs7DQo+ICAgICAg ZGVmYXVsdDoNCj4gICAgICAgIC8vDQo+IC0gICAgICAvLyBGb3IgdW5rbm93IE1hY2hpbmUgZmll bGQsIHVzZSBNYWdpYyBpbiBvcHRpb25hbCBIZWFkZXINCj4gKyAgICAgIC8vIEZvciB1bmtub3du IE1hY2hpbmUgZmllbGQsIHVzZSBNYWdpYyBpbiBvcHRpb25hbCBIZWFkZXINCj4gICAgICAgIC8v DQo+ICAgICAgICBNYWdpYyA9IEhkci5QZTMyLT5PcHRpb25hbEhlYWRlci5NYWdpYzsNCj4gICAg ICB9DQo+IGRpZmYgLS1naXQgYS9CYXNlVG9vbHMvU291cmNlL0MvQ29tbW9uL0NvbW1vbkxpYi5j IGIvQmFzZVRvb2xzL1NvdXJjZS9DL0NvbW1vbi9Db21tb25MaWIuYw0KPiBpbmRleCA1YzQwZmRi NWZkLi41MTc5YzcwMWNjIDEwMDY0NA0KPiAtLS0gYS9CYXNlVG9vbHMvU291cmNlL0MvQ29tbW9u L0NvbW1vbkxpYi5jDQo+ICsrKyBiL0Jhc2VUb29scy9Tb3VyY2UvQy9Db21tb24vQ29tbW9uTGli LmMNCj4gQEAgLTIwNTcsMTMgKzIwNTcsMTMgQEAgSXNIZXhTdHIgKA0KPiAgICApDQo+ICB7DQo+ ICAgIC8vDQo+IC0gIC8vIHNraXAgcHJlY2VlZGluZyB3aGl0ZSBzcGFjZQ0KPiArICAvLyBza2lw IHByZWNlZGluZyB3aGl0ZSBzcGFjZQ0KPiAgICAvLw0KPiAgICB3aGlsZSAoKCpTdHIgIT0gMCkg JiYgKlN0ciA9PSBMJyAnKSB7DQo+ICAgICAgU3RyICsrOw0KPiAgICB9DQo+ICAgIC8vDQo+IC0g IC8vIHNraXAgcHJlY2VlZGluZyB6ZXJvcw0KPiArICAvLyBza2lwIHByZWNlZGluZyB6ZXJvcw0K PiAgICAvLw0KPiAgICB3aGlsZSAoKCpTdHIgIT0gMCkgJiYgKlN0ciA9PSBMJzAnKSB7DQo+ICAg ICAgU3RyICsrOw0KPiBkaWZmIC0tZ2l0IGEvQmFzZVRvb2xzL1NvdXJjZS9DL0NvbW1vbi9DcmMz Mi5jIGIvQmFzZVRvb2xzL1NvdXJjZS9DL0NvbW1vbi9DcmMzMi5jDQo+IGluZGV4IGRjMTU4ODcx MjQuLmNiZDEwZTA5MGMgMTAwNjQ0DQo+IC0tLSBhL0Jhc2VUb29scy9Tb3VyY2UvQy9Db21tb24v Q3JjMzIuYw0KPiArKysgYi9CYXNlVG9vbHMvU291cmNlL0MvQ29tbW9uL0NyYzMyLmMNCj4gQEAg LTEsNSArMSw1IEBADQo+ICAvKiogQGZpbGUNCj4gLUNhbGN1YXRlQ3JjMzIgcm91dGluZS4NCj4g K0NhbGN1bGF0ZUNyYzMyIHJvdXRpbmUuDQo+IA0KPiAgQ29weXJpZ2h0IChjKSAyMDA0IC0gMjAx OCwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiAgVGhpcyBw cm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiBAQCAtMjg4LDcgKzI4OCw3 IEBAIFJvdXRpbmUgRGVzY3JpcHRpb246DQo+IA0KPiAgQXJndW1lbnRzOg0KPiANCj4gLSAgRGF0 YSAgICAgICAgLSBUaGUgYnVmZmVyIGNvbnRhbmluZyB0aGUgZGF0YSB0byBiZSBwcm9jZXNzZWQN Cj4gKyAgRGF0YSAgICAgICAgLSBUaGUgYnVmZmVyIGNvbnRhaW5pbmcgdGhlIGRhdGEgdG8gYmUg cHJvY2Vzc2VkDQo+ICAgIERhdGFTaXplICAgIC0gVGhlIHNpemUgb2YgZGF0YSB0byBiZSBwcm9j ZXNzZWQNCj4gICAgQ3JjT3V0ICAgICAgLSBBIHBvaW50ZXIgdG8gdGhlIGNhbGxlciBhbGxvY2F0 ZWQgVUlOVDMyIHRoYXQgb24NCj4gICAgICAgICAgICAgICAgICBjb250YWlucyB0aGUgQ1JDMzIg Y2hlY2tzdW0gb2YgRGF0YQ0KPiBkaWZmIC0tZ2l0IGEvQmFzZVRvb2xzL1NvdXJjZS9DL0NvbW1v bi9DcmMzMi5oIGIvQmFzZVRvb2xzL1NvdXJjZS9DL0NvbW1vbi9DcmMzMi5oDQo+IGluZGV4IDc2 NmY0NDM5MDguLjUyMDcyZWUzMjQgMTAwNjQ0DQo+IC0tLSBhL0Jhc2VUb29scy9Tb3VyY2UvQy9D b21tb24vQ3JjMzIuaA0KPiArKysgYi9CYXNlVG9vbHMvU291cmNlL0MvQ29tbW9uL0NyYzMyLmgN Cj4gQEAgLTEsNSArMSw1IEBADQo+ICAvKiogQGZpbGUNCj4gLUhlYWRlciBmaWxlIGZvciBDYWxj dWF0ZUNyYzMyIHJvdXRpbmUNCj4gK0hlYWRlciBmaWxlIGZvciBDYWxjdWxhdGVDcmMzMiByb3V0 aW5lDQo+IA0KPiAgQ29weXJpZ2h0IChjKSAyMDA0IC0gMjAxOCwgSW50ZWwgQ29ycG9yYXRpb24u IEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21w YW55aW5nIG1hdGVyaWFscw0KPiBAQCAtMzEsNyArMzEsNyBAQCBSb3V0aW5lIERlc2NyaXB0aW9u Og0KPiANCj4gIEFyZ3VtZW50czoNCj4gDQo+IC0gIERhdGEgICAgICAgIC0gVGhlIGJ1ZmZlciBj b250YW5pbmcgdGhlIGRhdGEgdG8gYmUgcHJvY2Vzc2VkDQo+ICsgIERhdGEgICAgICAgIC0gVGhl IGJ1ZmZlciBjb250YWluaW5nIHRoZSBkYXRhIHRvIGJlIHByb2Nlc3NlZA0KPiAgICBEYXRhU2l6 ZSAgICAtIFRoZSBzaXplIG9mIGRhdGEgdG8gYmUgcHJvY2Vzc2VkDQo+ICAgIENyY091dCAgICAg IC0gQSBwb2ludGVyIHRvIHRoZSBjYWxsZXIgYWxsb2NhdGVkIFVJTlQzMiB0aGF0IG9uDQo+ICAg ICAgICAgICAgICAgICAgY29udGFpbnMgdGhlIENSQzMyIGNoZWNrc3VtIG9mIERhdGENCj4gZGlm ZiAtLWdpdCBhL0Jhc2VUb29scy9Tb3VyY2UvQy9Db21tb24vRGVjb21wcmVzcy5jIGIvQmFzZVRv b2xzL1NvdXJjZS9DL0NvbW1vbi9EZWNvbXByZXNzLmMNCj4gaW5kZXggMzNlMGYwZDE2MC4uMGU5 YmEwYTk4MiAxMDA2NDQNCj4gLS0tIGEvQmFzZVRvb2xzL1NvdXJjZS9DL0NvbW1vbi9EZWNvbXBy ZXNzLmMNCj4gKysrIGIvQmFzZVRvb2xzL1NvdXJjZS9DL0NvbW1vbi9EZWNvbXByZXNzLmMNCj4g QEAgLTc0Nyw3ICs3NDcsNyBAQCBBcmd1bWVudHM6DQo+IA0KPiAgUmV0dXJuczoNCj4gDQo+IC0g IEVGSV9TVUNDRVNTICAgICAgICAgICAtIERlY29tcHJlc3Npb24gaXMgc3VjY2Vzc2Z1bGwNCj4g KyAgRUZJX1NVQ0NFU1MgICAgICAgICAgIC0gRGVjb21wcmVzc2lvbiBpcyBzdWNjZXNzZnVsDQo+ ICAgIEVGSV9JTlZBTElEX1BBUkFNRVRFUiAtIFRoZSBzb3VyY2UgZGF0YSBpcyBjb3JydXB0ZWQN Cj4gDQo+ICAtLSovDQo+IEBAIC05MDIsNyArOTAyLDcgQEAgQXJndW1lbnRzOg0KPiANCj4gIFJl dHVybnM6DQo+IA0KPiAtICBFRklfU1VDQ0VTUyAgICAgICAgICAgLSBEZWNvbXByZXNzaW9uIGlz IHN1Y2Nlc3NmdWxsDQo+ICsgIEVGSV9TVUNDRVNTICAgICAgICAgICAtIERlY29tcHJlc3Npb24g aXMgc3VjY2Vzc2Z1bA0KPiAgICBFRklfSU5WQUxJRF9QQVJBTUVURVIgLSBUaGUgc291cmNlIGRh dGEgaXMgY29ycnVwdGVkDQo+IA0KPiAgLS0qLw0KPiBAQCAtOTM3LDcgKzkzNyw3IEBAIEFyZ3Vt ZW50czoNCj4gDQo+ICBSZXR1cm5zOg0KPiANCj4gLSAgRUZJX1NVQ0NFU1MgICAgICAgICAgIC0g RGVjb21wcmVzc2lvbiBpcyBzdWNjZXNzZnVsbA0KPiArICBFRklfU1VDQ0VTUyAgICAgICAgICAg LSBEZWNvbXByZXNzaW9uIGlzIHN1Y2Nlc3NmdWwNCj4gICAgRUZJX0lOVkFMSURfUEFSQU1FVEVS IC0gVGhlIHNvdXJjZSBkYXRhIGlzIGNvcnJ1cHRlZA0KPiANCj4gIC0tKi8NCj4gZGlmZiAtLWdp dCBhL0Jhc2VUb29scy9Tb3VyY2UvQy9Db21tb24vRGVjb21wcmVzcy5oIGIvQmFzZVRvb2xzL1Nv dXJjZS9DL0NvbW1vbi9EZWNvbXByZXNzLmgNCj4gaW5kZXggMjJhYzFkZjFmOS4uYTQ0ZTBhZTc2 YSAxMDA2NDQNCj4gLS0tIGEvQmFzZVRvb2xzL1NvdXJjZS9DL0NvbW1vbi9EZWNvbXByZXNzLmgN Cj4gKysrIGIvQmFzZVRvb2xzL1NvdXJjZS9DL0NvbW1vbi9EZWNvbXByZXNzLmgNCj4gQEAgLTcw LDcgKzcwLDcgQEAgQXJndW1lbnRzOg0KPiANCj4gIFJldHVybnM6DQo+IA0KPiAtICBFRklfU1VD Q0VTUyAgICAgICAgICAgLSBEZWNvbXByZXNzaW9uIGlzIHN1Y2Nlc3NmdWxsDQo+ICsgIEVGSV9T VUNDRVNTICAgICAgICAgICAtIERlY29tcHJlc3Npb24gaXMgc3VjY2Vzc2Z1bA0KPiAgICBFRklf SU5WQUxJRF9QQVJBTUVURVIgLSBUaGUgc291cmNlIGRhdGEgaXMgY29ycnVwdGVkDQo+IA0KPiAg KiovDQo+IEBAIC0xMjgsNyArMTI4LDcgQEAgQXJndW1lbnRzOg0KPiANCj4gIFJldHVybnM6DQo+ IA0KPiAtICBFRklfU1VDQ0VTUyAgICAgICAgICAgLSBEZWNvbXByZXNzaW9uIGlzIHN1Y2Nlc3Nm dWxsDQo+ICsgIEVGSV9TVUNDRVNTICAgICAgICAgICAtIERlY29tcHJlc3Npb24gaXMgc3VjY2Vz c2Z1bA0KPiAgICBFRklfSU5WQUxJRF9QQVJBTUVURVIgLSBUaGUgc291cmNlIGRhdGEgaXMgY29y cnVwdGVkDQo+IA0KPiAgKiovDQo+IGRpZmYgLS1naXQgYS9CYXNlVG9vbHMvU291cmNlL0MvQ29t bW9uL0VmaUNvbXByZXNzLmMgYi9CYXNlVG9vbHMvU291cmNlL0MvQ29tbW9uL0VmaUNvbXByZXNz LmMNCj4gaW5kZXggMzNkNGM1ZWVjMS4uMGY2YjI4NmM3ZSAxMDA2NDQNCj4gLS0tIGEvQmFzZVRv b2xzL1NvdXJjZS9DL0NvbW1vbi9FZmlDb21wcmVzcy5jDQo+ICsrKyBiL0Jhc2VUb29scy9Tb3Vy Y2UvQy9Db21tb24vRWZpQ29tcHJlc3MuYw0KPiBAQCAtMzk2LDcgKzM5Niw3IEBAIFJvdXRpbmUg RGVzY3JpcHRpb246DQo+IA0KPiAgICBBbGxvY2F0ZSBtZW1vcnkgc3BhY2VzIGZvciBkYXRhIHN0 cnVjdHVyZXMgdXNlZCBpbiBjb21wcmVzc2lvbiBwcm9jZXNzDQo+IA0KPiAtQXJnZW1lbnRzOiAo Vk9JRCkNCj4gK0FyZ3VtZW50czogKFZPSUQpDQo+IA0KPiAgUmV0dXJuczoNCj4gDQo+IEBAIC02 NTIsNyArNjUyLDcgQEAgUmV0dXJuczogKFZPSUQpDQo+IA0KPiAgICAgIC8vDQo+ICAgICAgLy8g V2UgaGF2ZSBqdXN0IGdvdCBhIGxvbmcgbWF0Y2gsIHRoZSB0YXJnZXQgdHJlZQ0KPiAtICAgIC8v IGNhbiBiZSBsb2NhdGVkIGJ5IE1hdGNoUG9zICsgMS4gVHJhdmVzZSB0aGUgdHJlZQ0KPiArICAg IC8vIGNhbiBiZSBsb2NhdGVkIGJ5IE1hdGNoUG9zICsgMS4gVHJhdmVyc2UgdGhlIHRyZWUNCj4g ICAgICAvLyBmcm9tIGJvdHRvbSB1cCB0byBnZXQgdG8gYSBwcm9wZXIgc3RhcnRpbmcgcG9pbnQu DQo+ICAgICAgLy8gVGhlIHVzYWdlIG9mIFBFUkNfRkxBRyBlbnN1cmVzIHByb3BlciBub2RlIGRl bGV0aW9uDQo+ICAgICAgLy8gaW4gRGVsZXRlTm9kZSgpIGxhdGVyLg0KPiBAQCAtMTI4MSw3ICsx MjgxLDcgQEAgUm91dGluZSBEZXNjcmlwdGlvbjoNCj4gDQo+ICAgIE91dHB1dHMgcmlnaHRtb3N0 IG4gYml0cyBvZiB4DQo+IA0KPiAtQXJnbWVudHM6DQo+ICtBcmd1bWVudHM6DQo+IA0KPiAgICBu ICAgLSB0aGUgcmlnaHRtb3N0IG4gYml0cyBvZiB0aGUgZGF0YSBpcyB1c2VkDQo+ICAgIHggICAt IHRoZSBkYXRhDQo+IGRpZmYgLS1naXQgYS9CYXNlVG9vbHMvU291cmNlL0MvQ29tbW9uL0VmaVV0 aWxpdHlNc2dzLmMgYi9CYXNlVG9vbHMvU291cmNlL0MvQ29tbW9uL0VmaVV0aWxpdHlNc2dzLmMN Cj4gaW5kZXggNDQ5MjVjNjQyYi4uYjMyYWZkMzhhNiAxMDA2NDQNCj4gLS0tIGEvQmFzZVRvb2xz L1NvdXJjZS9DL0NvbW1vbi9FZmlVdGlsaXR5TXNncy5jDQo+ICsrKyBiL0Jhc2VUb29scy9Tb3Vy Y2UvQy9Db21tb24vRWZpVXRpbGl0eU1zZ3MuYw0KPiBAQCAtMjEsNyArMjEsNyBAQCBXSVRIT1VU IFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVIgRVhQUkVT UyBPUiBJTVBMSUVELg0KPiAgI2luY2x1ZGUgIkVmaVV0aWxpdHlNc2dzLmgiDQo+IA0KPiAgLy8N Cj4gLS8vIERlY2xhcmUgbW9kdWxlIGdsb2JhbHMgZm9yIGtlZXBpbmcgdHJhY2sgb2YgdGhlIHRo ZSB1dGlsaXR5J3MNCj4gKy8vIERlY2xhcmUgbW9kdWxlIGdsb2JhbHMgZm9yIGtlZXBpbmcgdHJh Y2sgb2YgdGhlIHV0aWxpdHkncw0KPiAgLy8gbmFtZSBhbmQgb3RoZXIgc2V0dGluZ3MuDQo+ICAv Lw0KPiAgU1RBVElDIFNUQVRVUyBtU3RhdHVzICAgICAgICAgICAgICAgICA9IFNUQVRVU19TVUND RVNTOw0KPiBAQCAtNjEsNyArNjEsNyBAQCBBcmd1bWVudHM6DQo+ICAgIGF0IGxlYXN0IHNvbWV0 aGluZyB2YWxpZCBpcyBub3Qgc3BlY2lmaWVkLg0KPiANCj4gICAgRmlsZU5hbWUgLSBuYW1lIG9m IHRoZSBmaWxlIG9yIGFwcGxpY2F0aW9uLiBJZiBub3Qgc3BlY2lmaWVkLCB0aGVuIHRoZQ0KPiAt ICAgICAgICAgICAgIHV0aWx0eSBuYW1lIChhcyBzZXQgYnkgdGhlIHV0aWxpdHkgY2FsbGluZyBT ZXRVdGlsaXR5TmFtZSgpDQo+ICsgICAgICAgICAgICAgdXRpbGl0eSBuYW1lIChhcyBzZXQgYnkg dGhlIHV0aWxpdHkgY2FsbGluZyBTZXRVdGlsaXR5TmFtZSgpDQo+ICAgICAgICAgICAgICAgZWFy bGllcikgaXMgdXNlZC4gT3RoZXJ3aXNlICJVbmtub3duIHV0aWxpdHkiIGlzIHVzZWQuDQo+IA0K PiAgICBMaW5lTnVtYmVyIC0gdGhlIGxpbmUgbnVtYmVyIG9mIGVycm9yLCB0eXBpY2FsbHkgdXNl ZCBieSBwYXJzZXJzLiBJZiB0aGUNCj4gQEAgLTM4NCw3ICszODQsNyBAQCBSb3V0aW5lIERlc2Ny aXB0aW9uOg0KPiAgQXJndW1lbnRzOg0KPiAgICBUeXBlICAgICAgICAtICJ3YXJuaW5nIiBvciAi ZXJyb3IiIHN0cmluZyB0byBpbnNlcnQgaW50byB0aGUgbWVzc2FnZSB0byBiZQ0KPiAgICAgICAg ICAgICAgICAgIHByaW50ZWQuIFRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgdGhpcyBzdHJpbmcgKGNv bnZlcnRlZCB0byB1cHBlcmNhc2UpDQo+IC0gICAgICAgICAgICAgICAgaXMgdXNlZCB0byBwcmVj ZWVkIHRoZSBNZXNzYWdlQ29kZSB2YWx1ZSBpbiB0aGUgb3V0cHV0IHN0cmluZy4NCj4gKyAgICAg ICAgICAgICAgICBpcyB1c2VkIHRvIHByZWNlZGUgdGhlIE1lc3NhZ2VDb2RlIHZhbHVlIGluIHRo ZSBvdXRwdXQgc3RyaW5nLg0KPiANCj4gICAgRmlsZU5hbWUgICAgLSBuYW1lIG9mIHRoZSBmaWxl IHdoZXJlIHRoZSB3YXJuaW5nIHdhcyBkZXRlY3RlZCwgb3IgdGhlIG5hbWUNCj4gICAgICAgICAg ICAgICAgICBvZiB0aGUgYXBwbGljYXRpb24gdGhhdCBkZXRlY3RlZCB0aGUgd2FybmluZw0KPiBA QCAtNTk3LDcgKzU5Nyw3IEBAIFJvdXRpbmUgRGVzY3JpcHRpb246DQo+IA0KPiAgQXJndW1lbnRz Og0KPiAgICBVdGlsaXR5TmFtZSAgLSAgbmFtZSBvZiB0aGUgdXRpbGl0eSwgd2hpY2ggd2lsbCBi ZSBwcmludGVkIHdpdGggYWxsDQo+IC0gICAgICAgICAgICAgICAgICBlcnJvci93YXJuaW5nL2Rl YnVnIG1lc3NhZ3MuDQo+ICsgICAgICAgICAgICAgICAgICBlcnJvci93YXJuaW5nL2RlYnVnIG1l c3NhZ2VzLg0KPiANCj4gIFJldHVybnM6DQo+ICAgIE5BDQo+IGRpZmYgLS1naXQgYS9CYXNlVG9v bHMvU291cmNlL0MvQ29tbW9uL0Z2TGliLmMgYi9CYXNlVG9vbHMvU291cmNlL0MvQ29tbW9uL0Z2 TGliLmMNCj4gaW5kZXggYjVhZTQ1ZGUwOS4uZDUzYTc0MzE3OCAxMDA2NDQNCj4gLS0tIGEvQmFz ZVRvb2xzL1NvdXJjZS9DL0NvbW1vbi9GdkxpYi5jDQo+ICsrKyBiL0Jhc2VUb29scy9Tb3VyY2Uv Qy9Db21tb24vRnZMaWIuYw0KPiBAQCAtMzE4LDcgKzMxOCw3IEBAIFJvdXRpbmUgRGVzY3JpcHRp b246DQo+ICBBcmd1bWVudHM6DQo+IA0KPiAgICBGaWxlVHlwZSAgICBUeXBlIG9mIGZpbGUgdG8g c2VhcmNoIGZvci4NCj4gLSAgSW5zdGFuY2UgICAgSW5zdGFjZSBvZiB0aGUgZmlsZSB0eXBlIHRv IHJldHVybi4NCj4gKyAgSW5zdGFuY2UgICAgSW5zdGFuY2Ugb2YgdGhlIGZpbGUgdHlwZSB0byBy ZXR1cm4uDQo+ICAgIEZpbGUgICAgICAgIFJldHVybiBwb2ludGVyLiAgSW4gdGhlIGNhc2Ugb2Yg YW4gZXJyb3IsIGNvbnRlbnRzIGFyZSB1bmRlZmluZWQuDQo+IA0KPiAgUmV0dXJuczoNCj4gQEAg LTUwNSw3ICs1MDUsNyBAQCBBcmd1bWVudHM6DQo+IA0KPiAgICBGaWxlICAgICAgICBUaGUgZmls ZSB0byBzZWFyY2guDQo+ICAgIFNlY3Rpb25UeXBlIFR5cGUgb2YgZmlsZSB0byBzZWFyY2ggZm9y Lg0KPiAtICBJbnN0YW5jZSAgICBJbnN0YWNlIG9mIHRoZSBzZWN0aW9uIHRvIHJldHVybi4NCj4g KyAgSW5zdGFuY2UgICAgSW5zdGFuY2Ugb2YgdGhlIHNlY3Rpb24gdG8gcmV0dXJuLg0KPiAgICBT ZWN0aW9uICAgICBSZXR1cm4gcG9pbnRlci4gIEluIHRoZSBjYXNlIG9mIGFuIGVycm9yLCBjb250 ZW50cyBhcmUgdW5kZWZpbmVkLg0KPiANCj4gIFJldHVybnM6DQo+IGRpZmYgLS1naXQgYS9CYXNl VG9vbHMvU291cmNlL0MvQ29tbW9uL09zUGF0aC5jIGIvQmFzZVRvb2xzL1NvdXJjZS9DL0NvbW1v bi9Pc1BhdGguYw0KPiBpbmRleCBiNDY1MTZkMjkyLi5iNDUwNGEzOWVmIDEwMDY0NA0KPiAtLS0g YS9CYXNlVG9vbHMvU291cmNlL0MvQ29tbW9uL09zUGF0aC5jDQo+ICsrKyBiL0Jhc2VUb29scy9T b3VyY2UvQy9Db21tb24vT3NQYXRoLmMNCj4gQEAgLTIyOCw3ICsyMjgsNyBAQCBSb3V0aW5lIERl c2NyaXB0aW9uOg0KPiAgQXJndW1lbnRzOg0KPiANCj4gICAgT2xkUGF0aCAgICAgUGF0aCBuYW1l IG9mIHJlcGxhY2UgdGhlIGZpbmFsIHNlZ21lbnQNCj4gLSAgUGVlciAgICAgICAgVGhlIG5ldyBw YXRoIG5hbWUgdG8gY29uY2F0aW5hdGUgdG8gYmVjb21lIHRoZSBwZWVyIHBhdGgNCj4gKyAgUGVl ciAgICAgICAgVGhlIG5ldyBwYXRoIG5hbWUgdG8gY29uY2F0ZW5hdGUgdG8gYmVjb21lIHRoZSBw ZWVyIHBhdGgNCj4gDQo+ICBSZXR1cm5zOg0KPiANCj4gZGlmZiAtLWdpdCBhL0Jhc2VUb29scy9T b3VyY2UvQy9Db21tb24vT3NQYXRoLmggYi9CYXNlVG9vbHMvU291cmNlL0MvQ29tbW9uL09zUGF0 aC5oDQo+IGluZGV4IGQzZDc1ZWE1ZGMuLjNiMDRjZmVjYmUgMTAwNjQ0DQo+IC0tLSBhL0Jhc2VU b29scy9Tb3VyY2UvQy9Db21tb24vT3NQYXRoLmgNCj4gKysrIGIvQmFzZVRvb2xzL1NvdXJjZS9D L0NvbW1vbi9Pc1BhdGguaA0KPiBAQCAtMTA0LDcgKzEwNCw3IEBAIFJvdXRpbmUgRGVzY3JpcHRp b246DQo+ICBBcmd1bWVudHM6DQo+IA0KPiAgICBPbGRQYXRoICAgICBQYXRoIG5hbWUgb2YgcmVw bGFjZSB0aGUgZmluYWwgc2VnbWVudA0KPiAtICBQZWVyICAgICAgICBUaGUgbmV3IHBhdGggbmFt ZSB0byBjb25jYXRpbmF0ZSB0byBiZWNvbWUgdGhlIHBlZXIgcGF0aA0KPiArICBQZWVyICAgICAg ICBUaGUgbmV3IHBhdGggbmFtZSB0byBjb25jYXRlbmF0ZSB0byBiZWNvbWUgdGhlIHBlZXIgcGF0 aA0KPiANCj4gIFJldHVybnM6DQo+IA0KPiBkaWZmIC0tZ2l0IGEvQmFzZVRvb2xzL1NvdXJjZS9D L0NvbW1vbi9QYXJzZUd1aWRlZFNlY3Rpb25Ub29scy5jIGIvQmFzZVRvb2xzL1NvdXJjZS9DL0Nv bW1vbi9QYXJzZUd1aWRlZFNlY3Rpb25Ub29scy5jDQo+IGluZGV4IDVhZmU5NjM4NDEuLjRjYzNm Y2FlOTYgMTAwNjQ0DQo+IC0tLSBhL0Jhc2VUb29scy9Tb3VyY2UvQy9Db21tb24vUGFyc2VHdWlk ZWRTZWN0aW9uVG9vbHMuYw0KPiArKysgYi9CYXNlVG9vbHMvU291cmNlL0MvQ29tbW9uL1BhcnNl R3VpZGVkU2VjdGlvblRvb2xzLmMNCj4gQEAgLTM2LDcgKzM2LDcgQEAgdHlwZWRlZiBzdHJ1Y3Qg X0dVSURfU0VDX1RPT0xfRU5UUlkgew0KPiAgfSBHVUlEX1NFQ19UT09MX0VOVFJZOw0KPiANCj4g IC8vDQo+IC0vLyBGdW5jdGluIEltcGxlbWVudGF0aW9uDQo+ICsvLyBGdW5jdGlvbiBJbXBsZW1l bnRhdGlvbg0KPiAgLy8NCj4gDQo+ICBFRklfSEFORExFDQo+IGRpZmYgLS1naXQgYS9CYXNlVG9v bHMvU291cmNlL0MvQ29tbW9uL1BhcnNlSW5mLmMgYi9CYXNlVG9vbHMvU291cmNlL0MvQ29tbW9u L1BhcnNlSW5mLmMNCj4gaW5kZXggNGQxMGZmOGIwYy4uMzkwN2Y0NDMzMSAxMDA2NDQNCj4gLS0t IGEvQmFzZVRvb2xzL1NvdXJjZS9DL0NvbW1vbi9QYXJzZUluZi5jDQo+ICsrKyBiL0Jhc2VUb29s cy9Tb3VyY2UvQy9Db21tb24vUGFyc2VJbmYuYw0KPiBAQCAtMjMzLDcgKzIzMyw3IEBAIFJldHVy bnM6DQo+ICAgIENIQVI4ICAgKkRlbGltaXRlcjsNCj4gICAgQk9PTEVBTiBQYXJzZUVycm9yOw0K PiAgICBCT09MRUFOIFJlYWRFcnJvcjsNCj4gLSAgVUlOVE4gICBPY2N1cnJhbmNlOw0KPiArICBV SU5UTiAgIE9jY3VycmVuY2U7DQo+IA0KPiAgICAvLw0KPiAgICAvLyBDaGVjayBpbnB1dCBwYXJh bWV0ZXJzDQo+IEBAIC0yNTgsNyArMjU4LDcgQEAgUmV0dXJuczoNCj4gICAgLy8NCj4gICAgLy8g SW5pdGlhbGl6ZSBvdXIgaW5zdGFuY2UgY291bnRlciBmb3IgdGhlIHNlYXJjaCB0b2tlbg0KPiAg ICAvLw0KPiAtICBPY2N1cnJhbmNlID0gMDsNCj4gKyAgT2NjdXJyZW5jZSA9IDA7DQo+IA0KPiAg ICBpZiAoRmluZFNlY3Rpb24gKElucHV0RmlsZSwgU2VjdGlvbikpIHsNCj4gICAgICAvLw0KPiBA QCAtMzA3LDcgKzMwNyw3IEBAIFJldHVybnM6DQo+ICAgICAgICAgIC8vDQo+ICAgICAgICAgIC8v IENoZWNrIGlmIGl0IGlzIHRoZSBjb3JyZWN0IGluc3RhbmNlDQo+ICAgICAgICAgIC8vDQo+IC0g ICAgICAgIGlmIChJbnN0YW5jZSA9PSBPY2N1cnJhbmNlKSB7DQo+ICsgICAgICAgIGlmIChJbnN0 YW5jZSA9PSBPY2N1cnJlbmNlKSB7DQo+ICAgICAgICAgICAgLy8NCj4gICAgICAgICAgICAvLyBD b3B5IHRoZSBjb250ZW50cyBmb2xsb3dpbmcgdGhlID0NCj4gICAgICAgICAgICAvLw0KPiBAQCAt MzM4LDkgKzMzOCw5IEBAIFJldHVybnM6DQo+ICAgICAgICAgICAgfQ0KPiAgICAgICAgICB9IGVs c2Ugew0KPiAgICAgICAgICAgIC8vDQo+IC0gICAgICAgICAgLy8gSW5jcmVtZW50IHRoZSBvY2N1 cnJhbmNlIGZvdW5kDQo+ICsgICAgICAgICAgLy8gSW5jcmVtZW50IHRoZSBvY2N1cnJlbmNlIGZv dW5kDQo+ICAgICAgICAgICAgLy8NCj4gLSAgICAgICAgICBPY2N1cnJhbmNlKys7DQo+ICsgICAg ICAgICAgT2NjdXJyZW5jZSsrOw0KPiAgICAgICAgICB9DQo+ICAgICAgICB9DQo+ICAgICAgfSB3 aGlsZSAoDQo+IEBAIC0zNDgsNyArMzQ4LDcgQEAgUmV0dXJuczoNCj4gICAgICAgICFSZWFkRXJy b3IgJiYNCj4gICAgICAgIElucHV0RmlsZS0+Q3VycmVudEZpbGVQb2ludGVyIDwgSW5wdXRGaWxl LT5Fb2YgJiYNCj4gICAgICAgIEN1cnJlbnRUb2tlblswXSAhPSAnWycgJiYNCj4gLSAgICAgIE9j Y3VycmFuY2UgPD0gSW5zdGFuY2UNCj4gKyAgICAgIE9jY3VycmVuY2UgPD0gSW5zdGFuY2UNCj4g ICAgICApOw0KPiAgICB9DQo+ICAgIC8vDQo+IEBAIC00NzgsNyArNDc4LDcgQEAgQXNjaWlTdHJp bmdUb1VpbnQ2NCAoDQo+ICBSb3V0aW5lIERlc2NyaXB0aW9uOg0KPiANCj4gICAgQ29udmVydHMg YSBudWxsIHRlcm1pbmF0ZWQgYXNjaWkgc3RyaW5nIHRoYXQgcmVwcmVzZW50cyBhIG51bWJlciBp bnRvIGENCj4gLSAgVUlOVDY0IHZhbHVlLiAgQSBoZXggbnVtYmVyIG1heSBiZSBwcmVjZWVkZWQg YnkgYSAweCwgYnV0IG1heSBub3QgYmUNCj4gKyAgVUlOVDY0IHZhbHVlLiAgQSBoZXggbnVtYmVy IG1heSBiZSBwcmVjZWRlZCBieSBhIDB4LCBidXQgbWF5IG5vdCBiZQ0KPiAgICBzdWNjZWVkZWQg YnkgYW4gaC4gIEEgbnVtYmVyIHdpdGhvdXQgMHggb3IgMFggaXMgY29uc2lkZXJlZCB0byBiZSBi YXNlIDEwDQo+ICAgIHVubGVzcyB0aGUgSXNIZXggaW5wdXQgaXMgdHJ1ZS4NCj4gDQo+IGRpZmYg LS1naXQgYS9CYXNlVG9vbHMvU291cmNlL0MvQ29tbW9uL1BhcnNlSW5mLmggYi9CYXNlVG9vbHMv U291cmNlL0MvQ29tbW9uL1BhcnNlSW5mLmgNCj4gaW5kZXggOTAzY2U3MWEwNC4uYThmZGU3NDlj ZCAxMDA2NDQNCj4gLS0tIGEvQmFzZVRvb2xzL1NvdXJjZS9DL0NvbW1vbi9QYXJzZUluZi5oDQo+ ICsrKyBiL0Jhc2VUb29scy9Tb3VyY2UvQy9Db21tb24vUGFyc2VJbmYuaA0KPiBAQCAtMTUzLDcg KzE1Myw3IEBAIEFzY2lpU3RyaW5nVG9VaW50NjQgKA0KPiAgUm91dGluZSBEZXNjcmlwdGlvbjoN Cj4gDQo+ICAgIENvbnZlcnRzIGEgbnVsbCB0ZXJtaW5hdGVkIGFzY2lpIHN0cmluZyB0aGF0IHJl cHJlc2VudHMgYSBudW1iZXIgaW50byBhDQo+IC0gIFVJTlQ2NCB2YWx1ZS4gIEEgaGV4IG51bWJl ciBtYXkgYmUgcHJlY2VlZGVkIGJ5IGEgMHgsIGJ1dCBtYXkgbm90IGJlDQo+ICsgIFVJTlQ2NCB2 YWx1ZS4gIEEgaGV4IG51bWJlciBtYXkgYmUgcHJlY2VkZWQgYnkgYSAweCwgYnV0IG1heSBub3Qg YmUNCj4gICAgc3VjY2VlZGVkIGJ5IGFuIGguICBBIG51bWJlciB3aXRob3V0IDB4IG9yIDBYIGlz IGNvbnNpZGVyZWQgdG8gYmUgYmFzZSAxMA0KPiAgICB1bmxlc3MgdGhlIElzSGV4IGlucHV0IGlz IHRydWUuDQo+IA0KPiBkaWZmIC0tZ2l0IGEvQmFzZVRvb2xzL1NvdXJjZS9DL0NvbW1vbi9QY2RW YWx1ZUNvbW1vbi5jIGIvQmFzZVRvb2xzL1NvdXJjZS9DL0NvbW1vbi9QY2RWYWx1ZUNvbW1vbi5j DQo+IGluZGV4IGZhMTI4NjllZGEuLmI5NWE3YTg1OWYgMTAwNjQ0DQo+IC0tLSBhL0Jhc2VUb29s cy9Tb3VyY2UvQy9Db21tb24vUGNkVmFsdWVDb21tb24uYw0KPiArKysgYi9CYXNlVG9vbHMvU291 cmNlL0MvQ29tbW9uL1BjZFZhbHVlQ29tbW9uLmMNCj4gQEAgLTcxNSw3ICs3MTUsNyBAQCBSZXR1 cm5zOg0KPiAgICB9DQo+IA0KPiAgICAvLw0KPiAtICAvLyBDaGVjayBJbnB1dCBwYXJhbXRlcnMN Cj4gKyAgLy8gQ2hlY2sgSW5wdXQgcGFyYW1ldGVycw0KPiAgICAvLw0KPiAgICBpZiAoKklucHV0 RmlsZU5hbWUgPT0gTlVMTCkgew0KPiAgICAgIGZwcmludGYgKHN0ZGVyciwgIk1pc3Npbmcgb3B0 aW9uLiAgSW5wdXQgZmlsZXMgaXMgbm90IHNwZWNpZmllZFxuIik7DQo+IGRpZmYgLS1naXQgYS9C YXNlVG9vbHMvU291cmNlL0MvQ29tbW9uL1BlQ29mZkxpYi5oIGIvQmFzZVRvb2xzL1NvdXJjZS9D L0NvbW1vbi9QZUNvZmZMaWIuaA0KPiBpbmRleCA4MGM4YzMzYzc2Li5jMjUwNDcxMTkyIDEwMDY0 NA0KPiAtLS0gYS9CYXNlVG9vbHMvU291cmNlL0MvQ29tbW9uL1BlQ29mZkxpYi5oDQo+ICsrKyBi L0Jhc2VUb29scy9Tb3VyY2UvQy9Db21tb24vUGVDb2ZmTGliLmgNCj4gQEAgLTE0OCw3ICsxNDgs NyBAQCBQZUNvZmZMb2FkZXJHZXRFbnRyeVBvaW50ICgNCj4gIC8vDQo+IA0KPiAgLyoqDQo+IC0g IFBhc3MgaW4gYSBwb2ludGVyIHRvIGFuIEFSTSBNT1ZUIG9yIE1PVlcgaW1tZWRpYXRlIGluc3Ry dWNpdG9uIGFuZA0KPiArICBQYXNzIGluIGEgcG9pbnRlciB0byBhbiBBUk0gTU9WVCBvciBNT1ZX IGltbWVkaWF0ZSBpbnN0cnVjdGlvbiBhbmQNCj4gICAgcmV0dXJuIHRoZSBpbW1lZGlhdGUgZGF0 YSBlbmNvZGVkIGluIHRoZSBpbnN0cnVjdGlvbg0KPiANCj4gICAgQHBhcmFtICBJbnN0cnVjdGlv biAgIFBvaW50ZXIgdG8gQVJNIE1PVlQgb3IgTU9WVyBpbW1lZGlhdGUgaW5zdHJ1Y3Rpb24NCj4g QEAgLTE2Niw3ICsxNjYsNyBAQCBUaHVtYk1vdnRJbW1lZGlhdGVBZGRyZXNzICgNCj4gICAgVXBk YXRlIGFuIEFSTSBNT1ZUIG9yIE1PVlcgaW1tZWRpYXRlIGluc3RydWN0aW9uIGltbWVkaWF0ZSBk YXRhLg0KPiANCj4gICAgQHBhcmFtICBJbnN0cnVjdGlvbiAgIFBvaW50ZXIgdG8gQVJNIE1PVlQg b3IgTU9WVyBpbW1lZGlhdGUgaW5zdHJ1Y3Rpb24NCj4gLSAgQHBhcmFtICBBZGRyZXNzICAgICAg IE5ldyBhZGRyZXMgdG8gcGF0Y2ggaW50byB0aGUgaW5zdHJ1Y3Rpb24NCj4gKyAgQHBhcmFtICBB ZGRyZXNzICAgICAgIE5ldyBhZGRyZXNzIHRvIHBhdGNoIGludG8gdGhlIGluc3RydWN0aW9uDQo+ IA0KPiAgKiovDQo+ICBWT0lEDQo+IEBAIC0xNzgsMTAgKzE3OCwxMCBAQCBUaHVtYk1vdnRJbW1l ZGlhdGVQYXRjaCAoDQo+IA0KPiANCj4gIC8qKg0KPiAtICBQYXNzIGluIGEgcG9pbnRlciB0byBh biBBUk0gTU9WVy9NT1ZUIGluc3RydWNpdG9uIHBhaXIgYW5kDQo+ICsgIFBhc3MgaW4gYSBwb2lu dGVyIHRvIGFuIEFSTSBNT1ZXL01PVlQgaW5zdHJ1Y3Rpb24gcGFpciBhbmQNCj4gICAgcmV0dXJu IHRoZSBpbW1lZGlhdGUgZGF0YSBlbmNvZGVkIGluIHRoZSB0d29gIGluc3RydWN0aW9uDQo+IA0K PiAtICBAcGFyYW0gIEluc3RydWN0aW9ucyAgUG9pbnRlciB0byBBUk0gTU9WVy9NT1ZUIGluc3R1 cmN0aW9uIHBhaXINCj4gKyAgQHBhcmFtICBJbnN0cnVjdGlvbnMgIFBvaW50ZXIgdG8gQVJNIE1P VlcvTU9WVCBpbnN0cnVjdGlvbiBwYWlyDQo+IA0KPiAgICBAcmV0dXJuIEltbWVkaWF0ZSBhZGRy ZXNzIGVuY29kZWQgaW4gdGhlIGluc3RydWN0aW9ucw0KPiANCj4gQEAgLTE5Niw3ICsxOTYsNyBA QCBUaHVtYk1vdndNb3Z0SW1tZWRpYXRlQWRkcmVzcyAoDQo+ICAgIFVwZGF0ZSBhbiBBUk0gTU9W Vy9NT1ZUIGltbWVkaWF0ZSBpbnN0cnVjdGlvbiBpbnN0cnVjdGlvbiBwYWlyLg0KPiANCj4gICAg QHBhcmFtICBJbnN0cnVjdGlvbnMgIFBvaW50ZXIgdG8gQVJNIE1PVlcvTU9WVCBpbnN0cnVjdGlv biBwYWlyDQo+IC0gIEBwYXJhbSAgQWRkcmVzcyAgICAgICBOZXcgYWRkcmVzIHRvIHBhdGNoIGlu dG8gdGhlIGluc3RydWN0aW9ucw0KPiArICBAcGFyYW0gIEFkZHJlc3MgICAgICAgTmV3IGFkZHJl c3MgdG8gcGF0Y2ggaW50byB0aGUgaW5zdHJ1Y3Rpb25zDQo+ICAqKi8NCj4gIFZPSUQNCj4gIEVG SUFQSQ0KPiBkaWZmIC0tZ2l0IGEvQmFzZVRvb2xzL1NvdXJjZS9DL0NvbW1vbi9QZUNvZmZMb2Fk ZXJFeC5jIGIvQmFzZVRvb2xzL1NvdXJjZS9DL0NvbW1vbi9QZUNvZmZMb2FkZXJFeC5jDQo+IGlu ZGV4IGZhOGM3ZTNkMTcuLjQzZTY2ZTc5MjUgMTAwNjQ0DQo+IC0tLSBhL0Jhc2VUb29scy9Tb3Vy Y2UvQy9Db21tb24vUGVDb2ZmTG9hZGVyRXguYw0KPiArKysgYi9CYXNlVG9vbHMvU291cmNlL0Mv Q29tbW9uL1BlQ29mZkxvYWRlckV4LmMNCj4gQEAgLTEwMSw3ICsxMDEsNyBAQCBSZXR1cm5zOg0K PiANCj4gDQo+ICAvKioNCj4gLSAgUGFzcyBpbiBhIHBvaW50ZXIgdG8gYW4gQVJNIE1PVlQgb3Ig TU9WVyBpbW1lZGlhdGUgaW5zdHJ1Y2l0b24gYW5kDQo+ICsgIFBhc3MgaW4gYSBwb2ludGVyIHRv IGFuIEFSTSBNT1ZUIG9yIE1PVlcgaW1tZWRpYXRlIGluc3RydWN0aW9uIGFuZA0KPiAgICByZXR1 cm4gdGhlIGltbWVkaWF0ZSBkYXRhIGVuY29kZWQgaW4gdGhlIGluc3RydWN0aW9uDQo+IA0KPiAg ICBAcGFyYW0gIEluc3RydWN0aW9uICAgUG9pbnRlciB0byBBUk0gTU9WVCBvciBNT1ZXIGltbWVk aWF0ZSBpbnN0cnVjdGlvbg0KPiBAQCAtMTM3LDcgKzEzNyw3IEBAIFRodW1iTW92dEltbWVkaWF0 ZUFkZHJlc3MgKA0KPiAgICBVcGRhdGUgYW4gQVJNIE1PVlQgb3IgTU9WVyBpbW1lZGlhdGUgaW5z dHJ1Y3Rpb24gaW1tZWRpYXRlIGRhdGEuDQo+IA0KPiAgICBAcGFyYW0gIEluc3RydWN0aW9uICAg UG9pbnRlciB0byBBUk0gTU9WVCBvciBNT1ZXIGltbWVkaWF0ZSBpbnN0cnVjdGlvbg0KPiAtICBA cGFyYW0gIEFkZHJlc3MgICAgICAgTmV3IGFkZHJlcyB0byBwYXRjaCBpbnRvIHRoZSBpbnN0cnVj dGlvbg0KPiArICBAcGFyYW0gIEFkZHJlc3MgICAgICAgTmV3IGFkZHJlc3MgdG8gcGF0Y2ggaW50 byB0aGUgaW5zdHJ1Y3Rpb24NCj4gICoqLw0KPiAgVk9JRA0KPiAgVGh1bWJNb3Z0SW1tZWRpYXRl UGF0Y2ggKA0KPiBAQCAtMTQ3LDcgKzE0Nyw3IEBAIFRodW1iTW92dEltbWVkaWF0ZVBhdGNoICgN Cj4gIHsNCj4gICAgVUlOVDE2ICBQYXRjaDsNCj4gDQo+IC0gIC8vIEZpcnN0IDE2LWJpdCBjaHVu ayBvZiBpbnN0cnVjaXRvbg0KPiArICAvLyBGaXJzdCAxNi1iaXQgY2h1bmsgb2YgaW5zdHJ1Y3Rp b24NCj4gICAgUGF0Y2ggID0gKChBZGRyZXNzID4+IDEyKSAmIDB4MDAwZik7ICAgICAgICAgICAg IC8vIGltbTQNCj4gICAgUGF0Y2ggfD0gKCgoQWRkcmVzcyAmIEJJVDExKSAhPSAwKSA/IEJJVDEw IDogMCk7IC8vIGkNCj4gICAgKkluc3RydWN0aW9uID0gKCpJbnN0cnVjdGlvbiAmIH4weDA0MGYp IHwgUGF0Y2g7DQo+IEBAIC0xNjAsMTAgKzE2MCwxMCBAQCBUaHVtYk1vdnRJbW1lZGlhdGVQYXRj aCAoDQo+ICB9DQo+IA0KPiAgLyoqDQo+IC0gIFBhc3MgaW4gYSBwb2ludGVyIHRvIGFuIEFSTSBN T1ZXL01PVlQgaW5zdHJ1Y2l0b24gcGFpciBhbmQNCj4gKyAgUGFzcyBpbiBhIHBvaW50ZXIgdG8g YW4gQVJNIE1PVlcvTU9WVCBpbnN0cnVjdGlvbiBwYWlyIGFuZA0KPiAgICByZXR1cm4gdGhlIGlt bWVkaWF0ZSBkYXRhIGVuY29kZWQgaW4gdGhlIHR3b2AgaW5zdHJ1Y3Rpb24NCj4gDQo+IC0gIEBw YXJhbSAgSW5zdHJ1Y3Rpb25zICBQb2ludGVyIHRvIEFSTSBNT1ZXL01PVlQgaW5zdHVyY3Rpb24g cGFpcg0KPiArICBAcGFyYW0gIEluc3RydWN0aW9ucyAgUG9pbnRlciB0byBBUk0gTU9WVy9NT1ZU IGluc3RydWN0aW9uIHBhaXINCj4gDQo+ICAgIEByZXR1cm4gSW1tZWRpYXRlIGFkZHJlc3MgZW5j b2RlZCBpbiB0aGUgaW5zdHJ1Y3Rpb25zDQo+IA0KPiBAQCAtMTg4LDcgKzE4OCw3IEBAIFRodW1i TW92d01vdnRJbW1lZGlhdGVBZGRyZXNzICgNCj4gICAgVXBkYXRlIGFuIEFSTSBNT1ZXL01PVlQg aW1tZWRpYXRlIGluc3RydWN0aW9uIGluc3RydWN0aW9uIHBhaXIuDQo+IA0KPiAgICBAcGFyYW0g IEluc3RydWN0aW9ucyAgUG9pbnRlciB0byBBUk0gTU9WVy9NT1ZUIGluc3RydWN0aW9uIHBhaXIN Cj4gLSAgQHBhcmFtICBBZGRyZXNzICAgICAgIE5ldyBhZGRyZXMgdG8gcGF0Y2ggaW50byB0aGUg aW5zdHJ1Y3Rpb25zDQo+ICsgIEBwYXJhbSAgQWRkcmVzcyAgICAgICBOZXcgYWRkcmVzcyB0byBw YXRjaCBpbnRvIHRoZSBpbnN0cnVjdGlvbnMNCj4gICoqLw0KPiAgVk9JRA0KPiAgRUZJQVBJDQo+ IGRpZmYgLS1naXQgYS9CYXNlVG9vbHMvU291cmNlL0MvQ29tbW9uL1NpbXBsZUZpbGVQYXJzaW5n LmMgYi9CYXNlVG9vbHMvU291cmNlL0MvQ29tbW9uL1NpbXBsZUZpbGVQYXJzaW5nLmMNCj4gaW5k ZXggZTdkYTA0NDI0NC4uMjNlZjljOGNlYiAxMDA2NDQNCj4gLS0tIGEvQmFzZVRvb2xzL1NvdXJj ZS9DL0NvbW1vbi9TaW1wbGVGaWxlUGFyc2luZy5jDQo+ICsrKyBiL0Jhc2VUb29scy9Tb3VyY2Uv Qy9Db21tb24vU2ltcGxlRmlsZVBhcnNpbmcuYw0KPiBAQCAtMzU2LDcgKzM1Niw3IEBAIFJldHVy bnM6DQo+ICAgIEZBTFNFIC0gb3RoZXJ3aXNlDQo+IA0KPiAgTm90ZXM6DQo+IC0gIFByZWNlZWRp bmcgd2hpdGUgc3BhY2UgaXMgaWdub3JlZC4NCj4gKyAgUHJlY2VkaW5nIHdoaXRlIHNwYWNlIGlz IGlnbm9yZWQuDQo+ICAgIFRoZSBwYXJzZXIncyBidWZmZXIgcG9pbnRlciBpcyBhZHZhbmNlZCBw YXN0IHRoZSBlbmQgb2YgdGhlDQo+ICAgIHRva2VuLg0KPiANCj4gQEAgLTYzNiw3ICs2MzYsNyBA QCBSZXR1cm5zOg0KPiAgICAvLyBNYWtlIHN1cmUgd2UgZGlkbid0IGV4Y2VlZCBvdXIgbWF4aW11 bSBuZXN0aW5nIGRlcHRoDQo+ICAgIC8vDQo+ICAgIGlmIChOZXN0RGVwdGggPiBNQVhfTkVTVF9E RVBUSCkgew0KPiAtICAgIEVycm9yIChOVUxMLCAwLCAzMDAxLCAiTm90IFN1cHBvcnRlZCIsICIl cyBleGNlZWVkcyBtYXggbmVzdGluZyBkZXB0aCAoJXUpIiwgU291cmNlRmlsZS0+RmlsZU5hbWUs ICh1bnNpZ25lZCkgTmVzdERlcHRoKTsNCj4gKyAgICBFcnJvciAoTlVMTCwgMCwgMzAwMSwgIk5v dCBTdXBwb3J0ZWQiLCAiJXMgZXhjZWVkcyBtYXggbmVzdGluZyBkZXB0aCAoJXUpIiwgU291cmNl RmlsZS0+RmlsZU5hbWUsICh1bnNpZ25lZCkgTmVzdERlcHRoKTsNCj4gICAgICBTdGF0dXMgPSBT VEFUVVNfRVJST1I7DQo+ICAgICAgZ290byBGaW5pc2g7DQo+ICAgIH0NCj4gZGlmZiAtLWdpdCBh L0Jhc2VUb29scy9Tb3VyY2UvQy9Db21tb24vU3RyaW5nRnVuY3MuaCBiL0Jhc2VUb29scy9Tb3Vy Y2UvQy9Db21tb24vU3RyaW5nRnVuY3MuaA0KPiBpbmRleCAwNjc1Y2I5ZjFkLi5lY2E5NjcwODVl IDEwMDY0NA0KPiAtLS0gYS9CYXNlVG9vbHMvU291cmNlL0MvQ29tbW9uL1N0cmluZ0Z1bmNzLmgN Cj4gKysrIGIvQmFzZVRvb2xzL1NvdXJjZS9DL0NvbW1vbi9TdHJpbmdGdW5jcy5oDQo+IEBAIC03 MCw3ICs3MCw3IEBAIFJvdXRpbmUgRGVzY3JpcHRpb246DQo+IA0KPiAgQXJndW1lbnRzOg0KPiAN Cj4gLSAgU3RyaW4gICAgICAgICAgVGhlIHN0cmluZyB0byAnc3RyaXAnDQo+ICsgIFN0cmluZyAg ICAgICAgICBUaGUgc3RyaW5nIHRvICdzdHJpcCcNCj4gDQo+ICBSZXR1cm5zOg0KPiANCj4gZGlm ZiAtLWdpdCBhL0Jhc2VUb29scy9Tb3VyY2UvQy9Db21tb24vVGlhbm9Db21wcmVzcy5jIGIvQmFz ZVRvb2xzL1NvdXJjZS9DL0NvbW1vbi9UaWFub0NvbXByZXNzLmMNCj4gaW5kZXggOGIxZWE3Zjc2 MS4uMWY3MGI3NTE3NCAxMDA2NDQNCj4gLS0tIGEvQmFzZVRvb2xzL1NvdXJjZS9DL0NvbW1vbi9U aWFub0NvbXByZXNzLmMNCj4gKysrIGIvQmFzZVRvb2xzL1NvdXJjZS9DL0NvbW1vbi9UaWFub0Nv bXByZXNzLmMNCj4gQEAgLTQwNCw3ICs0MDQsNyBAQCBSb3V0aW5lIERlc2NyaXB0aW9uOg0KPiAN Cj4gICAgQWxsb2NhdGUgbWVtb3J5IHNwYWNlcyBmb3IgZGF0YSBzdHJ1Y3R1cmVzIHVzZWQgaW4g Y29tcHJlc3Npb24gcHJvY2Vzcw0KPiANCj4gLUFyZ2VtZW50czoNCj4gK0FyZ3VtZW50czoNCj4g ICAgVk9JRA0KPiANCj4gIFJldHVybnM6DQo+IEBAIC02ODAsNyArNjgwLDcgQEAgUmV0dXJuczog KFZPSUQpDQo+ICAgIGlmIChtTWF0Y2hMZW4gPj0gNCkgew0KPiAgICAgIC8vDQo+ICAgICAgLy8g V2UgaGF2ZSBqdXN0IGdvdCBhIGxvbmcgbWF0Y2gsIHRoZSB0YXJnZXQgdHJlZQ0KPiAtICAgIC8v IGNhbiBiZSBsb2NhdGVkIGJ5IE1hdGNoUG9zICsgMS4gVHJhdmVzZSB0aGUgdHJlZQ0KPiArICAg IC8vIGNhbiBiZSBsb2NhdGVkIGJ5IE1hdGNoUG9zICsgMS4gVHJhdmVyc2UgdGhlIHRyZWUNCj4g ICAgICAvLyBmcm9tIGJvdHRvbSB1cCB0byBnZXQgdG8gYSBwcm9wZXIgc3RhcnRpbmcgcG9pbnQu DQo+ICAgICAgLy8gVGhlIHVzYWdlIG9mIFBFUkNfRkxBRyBlbnN1cmVzIHByb3BlciBub2RlIGRl bGV0aW9uDQo+ICAgICAgLy8gaW4gRGVsZXRlTm9kZSgpIGxhdGVyLg0KPiBkaWZmIC0tZ2l0IGEv QmFzZVRvb2xzL1NvdXJjZS9DL0NvbW1vbi9XaW5OdEluY2x1ZGUuaCBiL0Jhc2VUb29scy9Tb3Vy Y2UvQy9Db21tb24vV2luTnRJbmNsdWRlLmgNCj4gaW5kZXggNmI2YWYyZTcyNy4uZjY2ZTAzODUx ZCAxMDA2NDQNCj4gLS0tIGEvQmFzZVRvb2xzL1NvdXJjZS9DL0NvbW1vbi9XaW5OdEluY2x1ZGUu aA0KPiArKysgYi9CYXNlVG9vbHMvU291cmNlL0MvQ29tbW9uL1dpbk50SW5jbHVkZS5oDQo+IEBA IC0zNCw3ICszNCw3IEBAIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0Yg QU5ZIEtJTkQsIEVJVEhFUiBFWFBSRVNTIE9SIElNUExJRUQuDQo+IA0KPiAgLy8NCj4gIC8vIFdp bjMyIGluY2x1ZGUgZmlsZXMgZG8gbm90IGNvbXBpbGUgY2xlYW4gd2l0aCAvVzQsIHNvIHdlIHVz ZSB0aGUgd2FybmluZw0KPiAtLy8gcHJhZ21hIHRvIHN1cHByZXNzIHRoZSB3YXJuaW5ncyBmb3Ig V2luMzIgb25seS4gVGhpcyB3YXkgb3VyIGNvZGUgY2FuIHN0aWwNCj4gKy8vIHByYWdtYSB0byBz dXBwcmVzcyB0aGUgd2FybmluZ3MgZm9yIFdpbjMyIG9ubHkuIFRoaXMgd2F5IG91ciBjb2RlIGNh biBzdGlsbA0KPiAgLy8gY29tcGlsZSBhdCAvVzQgKGhpZ2hlc3Qgd2FybmluZyBsZXZlbCkgd2l0 aCAvV1ggKHdhcm5pbmdzIGNhdXNlIGJ1aWxkDQo+ICAvLyBlcnJvcnMpLg0KPiAgLy8NCj4gZGlm ZiAtLWdpdCBhL0Jhc2VUb29scy9Tb3VyY2UvQy9EZXZpY2VQYXRoL0RldmljZVBhdGguYyBiL0Jh c2VUb29scy9Tb3VyY2UvQy9EZXZpY2VQYXRoL0RldmljZVBhdGguYw0KPiBpbmRleCAzNTZmNWY3 ZTI0Li45NTgzYTNmM2E0IDEwMDY0NA0KPiAtLS0gYS9CYXNlVG9vbHMvU291cmNlL0MvRGV2aWNl UGF0aC9EZXZpY2VQYXRoLmMNCj4gKysrIGIvQmFzZVRvb2xzL1NvdXJjZS9DL0RldmljZVBhdGgv RGV2aWNlUGF0aC5jDQo+IEBAIC0xNzgsNyArMTc4LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIENI QVI4ICphcmd2W10pDQo+ICAgIH0NCj4gICAgU3RyMTYgPSAoQ0hBUjE2ICopbWFsbG9jKDEwMjQp Ow0KPiAgICBpZiAoU3RyMTYgPT0gTlVMTCkgew0KPiAtICAgIGZwcmludGYoc3RkZXJyLCAiUmVz b3VyY2UsIG1lbW9yeSBjYW5ub3QgYmUgYWxsY29hdGVkIik7DQo+ICsgICAgZnByaW50ZihzdGRl cnIsICJSZXNvdXJjZSwgbWVtb3J5IGNhbm5vdCBiZSBhbGxvY2F0ZWQiKTsNCj4gICAgICByZXR1 cm4gU1RBVFVTX0VSUk9SOw0KPiAgICB9DQo+ICAgIEFzY2lpMlVuaWNvZGVTdHJpbmcoU3RyLCBT dHIxNik7DQo+IGRpZmYgLS1naXQgYS9CYXNlVG9vbHMvU291cmNlL0MvRGV2aWNlUGF0aC9EZXZp Y2VQYXRoVXRpbGl0aWVzLmMgYi9CYXNlVG9vbHMvU291cmNlL0MvRGV2aWNlUGF0aC9EZXZpY2VQ YXRoVXRpbGl0aWVzLmMNCj4gaW5kZXggM2IzYWJjNjdlYS4uNTllMDhlOTYwZSAxMDA2NDQNCj4g LS0tIGEvQmFzZVRvb2xzL1NvdXJjZS9DL0RldmljZVBhdGgvRGV2aWNlUGF0aFV0aWxpdGllcy5j DQo+ICsrKyBiL0Jhc2VUb29scy9Tb3VyY2UvQy9EZXZpY2VQYXRoL0RldmljZVBhdGhVdGlsaXRp ZXMuYw0KPiBAQCAtNSw3ICs1LDcgQEANCj4gICAgYWxsIG92ZXIgdGhpcyBmaWxlLg0KPiANCj4g ICAgVGhlIG9ubHkgcGxhY2Ugd2hlcmUgbXVsdGktaW5zdGFuY2UgZGV2aWNlIHBhdGhzIGFyZSBz dXBwb3J0ZWQgaXMgaW4NCj4gLSAgZW52aXJvbm1lbnQgdmFyaWJsZXMuIE11bHRpLWluc3RhbmNl IGRldmljZSBwYXRocyBzaG91bGQgbmV2ZXIgYmUgcGxhY2VkDQo+ICsgIGVudmlyb25tZW50IHZh cmlhYmxlcy4gTXVsdGktaW5zdGFuY2UgZGV2aWNlIHBhdGhzIHNob3VsZCBuZXZlciBiZSBwbGFj ZWQNCj4gICAgb24gYSBIYW5kbGUuDQo+IA0KPiAgICBDb3B5cmlnaHQgKGMpIDIwMTcsIEludGVs IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gZGlmZiAtLWdpdCBhL0Jh c2VUb29scy9Tb3VyY2UvQy9EZXZpY2VQYXRoL1VlZmlEZXZpY2VQYXRoTGliLmMgYi9CYXNlVG9v bHMvU291cmNlL0MvRGV2aWNlUGF0aC9VZWZpRGV2aWNlUGF0aExpYi5jDQo+IGluZGV4IGEyZTAz MjJlMjcuLmE1MDAxNDhhNzkgMTAwNjQ0DQo+IC0tLSBhL0Jhc2VUb29scy9Tb3VyY2UvQy9EZXZp Y2VQYXRoL1VlZmlEZXZpY2VQYXRoTGliLmMNCj4gKysrIGIvQmFzZVRvb2xzL1NvdXJjZS9DL0Rl dmljZVBhdGgvVWVmaURldmljZVBhdGhMaWIuYw0KPiBAQCAtNSw3ICs1LDcgQEANCj4gICAgYWxs IG92ZXIgdGhpcyBmaWxlLg0KPiANCj4gICAgVGhlIG9ubHkgcGxhY2Ugd2hlcmUgbXVsdGktaW5z dGFuY2UgZGV2aWNlIHBhdGhzIGFyZSBzdXBwb3J0ZWQgaXMgaW4NCj4gLSAgZW52aXJvbm1lbnQg dmFyaWJsZXMuIE11bHRpLWluc3RhbmNlIGRldmljZSBwYXRocyBzaG91bGQgbmV2ZXIgYmUgcGxh Y2VkDQo+ICsgIGVudmlyb25tZW50IHZhcmlhYmxlcy4gTXVsdGktaW5zdGFuY2UgZGV2aWNlIHBh dGhzIHNob3VsZCBuZXZlciBiZSBwbGFjZWQNCj4gICAgb24gYSBIYW5kbGUuDQo+IA0KPiAgICBD b3B5cmlnaHQgKGMpIDIwMTcsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVk LjxCUj4NCj4gZGlmZiAtLWdpdCBhL0Jhc2VUb29scy9Tb3VyY2UvQy9FZmlSb20vRWZpUm9tLmMg Yi9CYXNlVG9vbHMvU291cmNlL0MvRWZpUm9tL0VmaVJvbS5jDQo+IGluZGV4IGNiNGVjZWEyYzQu LjBjNTJlYjc0ODQgMTAwNjQ0DQo+IC0tLSBhL0Jhc2VUb29scy9Tb3VyY2UvQy9FZmlSb20vRWZp Um9tLmMNCj4gKysrIGIvQmFzZVRvb2xzL1NvdXJjZS9DL0VmaVJvbS9FZmlSb20uYw0KPiBAQCAt MTQzMiw3ICsxNDMyLDcgQEAgUmV0dXJuczoNCj4gICAgSW1hZ2VDb3VudCA9IDA7DQo+ICAgIGZv ciAoOzspIHsNCj4gICAgICAvLw0KPiAtICAgIC8vIFNhdmUgb3VyIHBvc3RpdGlvbiBpbiB0aGUg ZmlsZSwgc2luY2Ugb2Zmc2V0cyBpbiB0aGUgaGVhZGVycw0KPiArICAgIC8vIFNhdmUgb3VyIHBv c2l0aW9uIGluIHRoZSBmaWxlLCBzaW5jZSBvZmZzZXRzIGluIHRoZSBoZWFkZXJzDQo+ICAgICAg Ly8gYXJlIHJlbGF0aXZlIHRvIHRoZSBwYXJ0aWN1bGFyIGltYWdlLg0KPiAgICAgIC8vDQo+ICAg ICAgSW1hZ2VTdGFydCA9IGZ0ZWxsIChJbkZwdHIpOw0KPiBkaWZmIC0tZ2l0IGEvQmFzZVRvb2xz L1NvdXJjZS9DL0dlbkNyYzMyL0dlbkNyYzMyLmMgYi9CYXNlVG9vbHMvU291cmNlL0MvR2VuQ3Jj MzIvR2VuQ3JjMzIuYw0KPiBpbmRleCAzNjlmNGFmZmE5Li5kMmUyY2MxYmY4IDEwMDY0NA0KPiAt LS0gYS9CYXNlVG9vbHMvU291cmNlL0MvR2VuQ3JjMzIvR2VuQ3JjMzIuYw0KPiArKysgYi9CYXNl VG9vbHMvU291cmNlL0MvR2VuQ3JjMzIvR2VuQ3JjMzIuYw0KPiBAQCAtMjg4LDcgKzI4OCw3IEBA IFJldHVybnM6DQo+IA0KPiAgICBGaWxlQnVmZmVyID0gKFVJTlQ4ICopIG1hbGxvYyAoRmlsZVNp emUpOw0KPiAgICBpZiAoRmlsZUJ1ZmZlciA9PSBOVUxMKSB7DQo+IC0gICAgRXJyb3IgKE5VTEws IDAsIDQwMDEsICJSZXNvdXJjZSIsICJtZW1vcnkgY2Fubm90IGJlIGFsbGNvYXRlZCEiKTsNCj4g KyAgICBFcnJvciAoTlVMTCwgMCwgNDAwMSwgIlJlc291cmNlIiwgIm1lbW9yeSBjYW5ub3QgYmUg YWxsb2NhdGVkISIpOw0KPiAgICAgIGZjbG9zZSAoSW5GaWxlKTsNCj4gICAgICBnb3RvIEZpbmlz aDsNCj4gICAgfQ0KPiBkaWZmIC0tZ2l0IGEvQmFzZVRvb2xzL1NvdXJjZS9DL0dlbkZ2L0dlbkZ2 SW50ZXJuYWxMaWIuYyBiL0Jhc2VUb29scy9Tb3VyY2UvQy9HZW5Gdi9HZW5GdkludGVybmFsTGli LmMNCj4gaW5kZXggNGQwMzM5ZTFmOS4uODE4YzQ2NDA3YiAxMDA2NDQNCj4gLS0tIGEvQmFzZVRv b2xzL1NvdXJjZS9DL0dlbkZ2L0dlbkZ2SW50ZXJuYWxMaWIuYw0KPiArKysgYi9CYXNlVG9vbHMv U291cmNlL0MvR2VuRnYvR2VuRnZJbnRlcm5hbExpYi5jDQo+IEBAIC0xMTAsNyArMTEwLDcgQEAg Q0hBUjggICAgICAqbUZ2YkFsaWdubWVudE5hbWVbXSA9IHsNCj4gIC8vIFRoaXMgZGF0YSBhcnJh eSB3aWxsIGJlIGxvY2F0ZWQgYXQgdGhlIGJhc2Ugb2YgdGhlIEZpcm13YXJlIFZvbHVtZSBIZWFk ZXIgKEZWSCkNCj4gIC8vIGluIHRoZSBib290IGJsb2NrLiAgSXQgbXVzdCBub3QgZXhjZWVkIDE0 IGJ5dGVzIG9mIGNvZGUuICBUaGUgbGFzdCAyIGJ5dGVzDQo+ICAvLyB3aWxsIGJlIHVzZWQgdG8g a2VlcCB0aGUgRlZIIGNoZWNrc3VtIGNvbnNpc3RlbnQuDQo+IC0vLyBUaGlzIGNvZGUgd2lsbCBi ZSBydW4gaW4gcmVzcG9uc2UgdG8gYSBzdGFydXRwIElQSSBmb3IgSFQtZW5hYmxlZCBzeXN0ZW1z Lg0KPiArLy8gVGhpcyBjb2RlIHdpbGwgYmUgcnVuIGluIHJlc3BvbnNlIHRvIGEgc3RhcnR1cCBJ UEkgZm9yIEhULWVuYWJsZWQgc3lzdGVtcy4NCj4gIC8vDQo+ICAjZGVmaW5lIFNJWkVPRl9TVEFS VFVQX0RBVEFfQVJSQVkgMHgxMA0KPiANCj4gQEAgLTQ2NSw3ICs0NjUsNyBAQCBSZXR1cm5zOg0K PiAgICBjYXNlIDA6DQo+ICAgICAgLy8NCj4gICAgICAvLyAxIGJ5dGUgYWxpZ25tZW50DQo+IC0g ICAgLy9pZiBiaXQgMSBoYXZlIHNldCwgMTI4SyBieXRlIGFsaWdubW5ldA0KPiArICAgIC8vaWYg Yml0IDEgaGF2ZSBzZXQsIDEyOEsgYnl0ZSBhbGlnbm1lbnQNCj4gICAgICAvLw0KPiAgICAgIGlm IChGZnNGaWxlLT5BdHRyaWJ1dGVzICYgRkZTX0FUVFJJQl9EQVRBX0FMSUdOTUVOVDIpIHsNCj4g ICAgICAgICpBbGlnbm1lbnQgPSAxNzsNCj4gQEAgLTcyNCw3ICs3MjQsNyBAQCBSZXR1cm5zOg0K PiAgICAgIG1lbWNweSAoKFVJTlQ4ICopUGFkRmlsZSArIEN1ckZmc0hlYWRlclNpemUsIEV4dEhl YWRlciwgRXh0SGVhZGVyLT5FeHRIZWFkZXJTaXplKTsNCj4gICAgICAoKEVGSV9GSVJNV0FSRV9W T0xVTUVfSEVBREVSICopIEZ2SW1hZ2UtPkZpbGVJbWFnZSktPkV4dEhlYWRlck9mZnNldCA9IChV SU5UMTYpICgoVUlOVE4pICgoVUlOVDggKilQYWRGaWxlICsNCj4gQ3VyRmZzSGVhZGVyU2l6ZSkg LSAoVUlOVE4pIEZ2SW1hZ2UtPkZpbGVJbWFnZSk7DQo+ICAgICAgLy8NCj4gLSAgICAvLyBNYWtl IG5leHQgZmlsZSBzdGFydCBhdCBRV29yZCBCb3VuZHJ5DQo+ICsgICAgLy8gTWFrZSBuZXh0IGZp bGUgc3RhcnQgYXQgUVdvcmQgQm91bmRhcnkNCj4gICAgICAvLw0KPiAgICAgIHdoaWxlICgoKFVJ TlROKSBGdkltYWdlLT5DdXJyZW50RmlsZVBvaW50ZXIgJiAoRUZJX0ZGU19GSUxFX0hFQURFUl9B TElHTk1FTlQgLSAxKSkgIT0gMCkgew0KPiAgICAgICAgRnZJbWFnZS0+Q3VycmVudEZpbGVQb2lu dGVyKys7DQo+IEBAIC0xMjE4LDcgKzEyMTgsNyBAQCBSZXR1cm5zOg0KPiAgICBGaWxlQnVmZmVy ID0gbWFsbG9jIChGaWxlU2l6ZSk7DQo+ICAgIGlmIChGaWxlQnVmZmVyID09IE5VTEwpIHsNCj4g ICAgICBmY2xvc2UgKE5ld0ZpbGUpOw0KPiAtICAgIEVycm9yIChOVUxMLCAwLCA0MDAxLCAiUmVz b3VjZSIsICJtZW1vcnkgY2Fubm90IGJlIGFsbG9jYXRlZCEiKTsNCj4gKyAgICBFcnJvciAoTlVM TCwgMCwgNDAwMSwgIlJlc291cmNlIiwgIm1lbW9yeSBjYW5ub3QgYmUgYWxsb2NhdGVkISIpOw0K PiAgICAgIHJldHVybiBFRklfT1VUX09GX1JFU09VUkNFUzsNCj4gICAgfQ0KPiANCj4gQEAgLTEz ODcsNyArMTM4Nyw3IEBAIFJldHVybnM6DQo+ICAgICAgcmV0dXJuIEVGSV9BQk9SVEVEOw0KPiAg ICB9DQo+ICAgIC8vDQo+IC0gIC8vIE1ha2UgbmV4dCBmaWxlIHN0YXJ0IGF0IFFXb3JkIEJvdW5k cnkNCj4gKyAgLy8gTWFrZSBuZXh0IGZpbGUgc3RhcnQgYXQgUVdvcmQgQm91bmRhcnkNCj4gICAg Ly8NCj4gICAgd2hpbGUgKCgoVUlOVE4pIEZ2SW1hZ2UtPkN1cnJlbnRGaWxlUG9pbnRlciAmIChF RklfRkZTX0ZJTEVfSEVBREVSX0FMSUdOTUVOVCAtIDEpKSAhPSAwKSB7DQo+ICAgICAgRnZJbWFn ZS0+Q3VycmVudEZpbGVQb2ludGVyKys7DQo+IEBAIC0yMTk2LDE0ICsyMTk2LDE0IEBAIFJldHVy bnM6DQo+ICAgICAgICAgIHJldHVybiBFRklfQUJPUlRFRDsNCj4gICAgICAgIH0NCj4gDQo+IC0g ICAgICAvLyBBZGQgb3Bjb2RlIGZvciBhbiB1bmNvbmRpb25hbCBicmFuY2ggd2l0aCBubyBsaW5r LiBpLmUuOiAiIEIgU2VjRW50cnlQb2ludCINCj4gKyAgICAgIC8vIEFkZCBvcGNvZGUgZm9yIGFu IHVuY29uZGl0aW9uYWwgYnJhbmNoIHdpdGggbm8gbGluay4gaS5lLjogIiBCIFNlY0VudHJ5UG9p bnQiDQo+ICAgICAgICBSZXNldFZlY3RvclswXSB8PSBBUk1UX1VOQ09ORElUSU9OQUxfSlVNUF9J TlNUUlVDVElPTjsNCj4gDQo+ICAgICAgICAvLyBTV0kgaGFuZGxlciBtb3ZzICAgcGMsbHIuIEp1 c3QgaW4gY2FzZSBhIGRlYnVnZ2VyIHVzZXMgU1dJDQo+ICAgICAgICBSZXNldFZlY3RvclsyXSA9 IDB4RTFCMEYwN0U7DQo+IA0KPiAgICAgICAgLy8gUGxhY2UgaG9sZGVyIHRvIHN1cHBvcnQgYSBj b21tb24gaW50ZXJydXB0IGhhbmRsZXIgZnJvbSBST00uDQo+IC0gICAgICAvLyBDdXJyZW50bHkg bm90IHN1cHBwcnRlZC4gRm9yIHRoaXMgdG8gYmUgdXNlZCB0aGUgcmVzZXQgdmVjdG9yIHdvdWxk IG5vdCBiZSBpbiB0aGlzIEZWDQo+ICsgICAgICAvLyBDdXJyZW50bHkgbm90IHN1cHBvcnRlZC4g Rm9yIHRoaXMgdG8gYmUgdXNlZCB0aGUgcmVzZXQgdmVjdG9yIHdvdWxkIG5vdCBiZSBpbiB0aGlz IEZWDQo+ICAgICAgICAvLyBhbmQgdGhlIGV4Y2VwdGlvbiB2ZWN0b3JzIHdvdWxkIGJlIGhhcmQg Y29kZWQgaW4gdGhlIFJPTSBhbmQganVzdCB0aHJvdWdoIHRoaXMgYWRkcmVzcw0KPiAgICAgICAg Ly8gdG8gZmluZCBhIGNvbW1vbiBoYW5kbGVyIGluIHRoZSBhIG1vZHVsZSBpbiB0aGUgRlYuDQo+ ICAgICAgICBSZXNldFZlY3RvclszXSA9IDA7DQo+IEBAIC0yMjM1LDcgKzIyMzUsNyBAQCBSZXR1 cm5zOg0KPiAgICAgIEFSTVQgYWJvdmUgaGFzIGFuIGVudHJ5IGluIFJlc2V0VmVjdG9yWzJdIGZv ciBTV0kuIFRoZSB3YXkgd2UgYXJlIHVzaW5nIHRoZSBSZXNldFZlY3Rvcg0KPiAgICAgIGFycmF5 IGF0IHRoZSBtb21lbnQsIGZvciBBQXJjaDY0LCBkb2VzIG5vdCBhbGxvdyB1cyBzcGFjZSBmb3Ig dGhpcyBhcyB0aGUgaGVhZGVyIG9ubHkNCj4gICAgICBhbGxvd3MgZm9yIGEgZml4ZWQgYW1vdW50 IG9mIGJ5dGVzIGF0IHRoZSBzdGFydC4gSWYgd2UgYXJlIHN1cmUgdGhhdCBVRUZJIHdpbGwgbGl2 ZQ0KPiAtICAgIHdpdGhpbiB0aGUgZmlyc3QgNEdCIG9mIGFkZHJlc3NhYmxlIFJBTSB3ZSBjb3Vs ZCBwb3RlbnNpb2FsbHkgYWRvcHQgdGhlIHNhbWUgUmVzZXRWZWN0b3INCj4gKyAgICB3aXRoaW4g dGhlIGZpcnN0IDRHQiBvZiBhZGRyZXNzYWJsZSBSQU0gd2UgY291bGQgcG90ZW50aWFsbHkgYWRv cHQgdGhlIHNhbWUgUmVzZXRWZWN0b3INCj4gICAgICBsYXlvdXQgYXMgYWJvdmUuIEJ1dCBmb3Ig dGhlIG1vbWVudCB3ZSByZXBsYWNlIHRoZSBmb3VyIDMyYml0IHZlY3RvcnMgd2l0aCB0d28gNjRi aXQNCj4gICAgICB2ZWN0b3JzIGluIHRoZSBzYW1lIGFyZWEgb2YgdGhlIEltYWdlIGhlYXNkZXIu IFRoaXMgYWxsb3dzIFVFRkkgdG8gc3RhcnQgZnJvbSBhIDY0Yml0DQo+ICAgICAgYmFzZS4NCj4g QEAgLTIyNTMsNyArMjI1Myw3IEBAIFJldHVybnM6DQo+ICAgICAgICAgIEVycm9yKE5VTEwsIDAs IDMwMDAsICJJbnZhbGlkIiwgIlNFQyBFbnRyeSBwb2ludCBtdXN0IGJlIHdpdGhpbiAxMjhNQiBv ZiB0aGUgc3RhcnQgb2YgdGhlIEZWIik7DQo+ICAgICAgICAgIHJldHVybiBFRklfQUJPUlRFRDsN Cj4gICAgICAgIH0NCj4gLSAgICAgIC8vIEFkZCBvcGNvZGUgZm9yIGFuIHVuY29uZGlvbmFsIGJy YW5jaCB3aXRoIG5vIGxpbmsuIGkuZS46ICIgQiBTZWNFbnRyeVBvaW50Ig0KPiArICAgICAgLy8g QWRkIG9wY29kZSBmb3IgYW4gdW5jb25kaXRpb25hbCBicmFuY2ggd2l0aCBubyBsaW5rLiBpLmUu OiAiIEIgU2VjRW50cnlQb2ludCINCj4gICAgICAgIFJlc2V0VmVjdG9yWzBdIHw9IEFSTTY0X1VO Q09ORElUSU9OQUxfSlVNUF9JTlNUUlVDVElPTjsNCj4gICAgICB9DQo+IA0KPiBAQCAtMzA2OCw3 ICszMDY4LDcgQEAgUmV0dXJuczoNCj4gICAgfQ0KPiANCj4gICAgLy8NCj4gLSAgLy8gQWNjdW1s YXRlIGV2ZXJ5IEZGUyBmaWxlIHNpemUuDQo+ICsgIC8vIEFjY3VtdWxhdGUgZXZlcnkgRkZTIGZp bGUgc2l6ZS4NCj4gICAgLy8NCj4gICAgZm9yIChJbmRleCA9IDA7IEZ2SW5mb1B0ci0+RnZGaWxl c1tJbmRleF1bMF0gIT0gMDsgSW5kZXgrKykgew0KPiAgICAgIC8vDQo+IEBAIC0zMTQzLDcgKzMx NDMsNyBAQCBSZXR1cm5zOg0KPiAgICAgIH0NCj4gDQo+ICAgICAgLy8NCj4gLSAgICAvLyBNYWtl IG5leHQgZmZzIGZpbGUgc3RhcnQgYXQgUVdvcmQgQm91bmRyeQ0KPiArICAgIC8vIE1ha2UgbmV4 dCBmZnMgZmlsZSBzdGFydCBhdCBRV29yZCBCb3VuZGFyeQ0KPiAgICAgIC8vDQo+ICAgICAgaWYg KEZ2SW5mb1B0ci0+SXNQaUZ2SW1hZ2UpIHsNCj4gICAgICAgIEN1cnJlbnRPZmZzZXQgPSAoQ3Vy cmVudE9mZnNldCArIEVGSV9GRlNfRklMRV9IRUFERVJfQUxJR05NRU5UIC0gMSkgJiB+KEVGSV9G RlNfRklMRV9IRUFERVJfQUxJR05NRU5UIC0gMSk7DQo+IEBAIC0zMjM0LDcgKzMyMzQsNyBAQCBS b3V0aW5lIERlc2NyaXB0aW9uOg0KPiAgICB0aGVpciBiYXNlIGFkZHJlc3MgdG8gdGhlIHBhcmVu dCBpbWFnZS4NCj4gDQo+ICBBcmd1bWVudHM6DQo+IC0gIEZ2SW5mbyAgICAgICAgICAgIEEgcG9p bnRlciB0byBGVl9JTkZPIHN0cnV0dXJlLg0KPiArICBGdkluZm8gICAgICAgICAgICBBIHBvaW50 ZXIgdG8gRlZfSU5GTyBzdHJ1Y3R1cmUuDQo+ICAgIEZmc0ZpbGUgICAgICAgICAgIEEgcG9pbnRl ciB0byBGZnMgZmlsZSBpbWFnZSB0aGF0IG1heSBjb250YWluIEZ2SW1hZ2UuDQo+ICAgIFhpcE9m ZnNldCAgICAgICAgIFRoZSBvZmZzZXQgYWRkcmVzcyB0byB0aGUgcGFyZW50IEZ2SW1hZ2UgYmFz ZS4NCj4gDQo+IEBAIC0zMjc3LDcgKzMyNzcsNyBAQCBSZXR1cm5zOg0KPiAgICAgICAgICByZXR1 cm4gRUZJX0FCT1JURUQ7DQo+ICAgICAgICB9DQo+IA0KPiAtICAgICAgLy8gbWFjaGluZSB0eXBl IGlzIEFSTSwgc2V0IGEgZmxhZyBzbyBBUk0gcmVzZXQgdmVjdG9yIHByb2Nlc2luZyBvY2N1cnMN Cj4gKyAgICAgIC8vIG1hY2hpbmUgdHlwZSBpcyBBUk0sIHNldCBhIGZsYWcgc28gQVJNIHJlc2V0 IHZlY3RvciBwcm9jZXNzaW5nIG9jY3Vycw0KPiAgICAgICAgaWYgKChNYWNoaW5lVHlwZSA9PSBF RklfSU1BR0VfTUFDSElORV9BUk1UKSB8fCAoTWFjaGluZVR5cGUgPT0gRUZJX0lNQUdFX01BQ0hJ TkVfQUFSQ0g2NCkpIHsNCj4gICAgICAgICAgVmVyYm9zZU1zZygiTG9jYXRlZCBBUk0vQUFyY2g2 NCBTRUMvUEVJIGNvcmUgaW4gY2hpbGQgRlYiKTsNCj4gICAgICAgICAgbUFybSA9IFRSVUU7DQo+ IEBAIC0zMzExLDcgKzMzMTEsNyBAQCBSb3V0aW5lIERlc2NyaXB0aW9uOg0KPiANCj4gIEFyZ3Vt ZW50czoNCj4gDQo+IC0gIEZ2SW5mbyAgICAgICAgICAgIEEgcG9pbnRlciB0byBGVl9JTkZPIHN0 cnV0dXJlLg0KPiArICBGdkluZm8gICAgICAgICAgICBBIHBvaW50ZXIgdG8gRlZfSU5GTyBzdHJ1 Y3R1cmUuDQo+ICAgIEZpbGVOYW1lICAgICAgICAgIEZmcyBGaWxlIFBhdGhOYW1lDQo+ICAgIEZm c0ZpbGUgICAgICAgICAgIEEgcG9pbnRlciB0byBGZnMgZmlsZSBpbWFnZS4NCj4gICAgWGlwT2Zm c2V0ICAgICAgICAgVGhlIG9mZnNldCBhZGRyZXNzIHRvIHVzZSBmb3IgcmViYXNpbmcgdGhlIFhJ UCBmaWxlIGltYWdlLg0KPiBkaWZmIC0tZ2l0IGEvQmFzZVRvb2xzL1NvdXJjZS9DL0dlbkZ2L0dl bkZ2SW50ZXJuYWxMaWIuaCBiL0Jhc2VUb29scy9Tb3VyY2UvQy9HZW5Gdi9HZW5GdkludGVybmFs TGliLmgNCj4gaW5kZXggNDQ3NmIwNmEyMy4uY2M3MTg0MGJhYyAxMDA2NDQNCj4gLS0tIGEvQmFz ZVRvb2xzL1NvdXJjZS9DL0dlbkZ2L0dlbkZ2SW50ZXJuYWxMaWIuaA0KPiArKysgYi9CYXNlVG9v bHMvU291cmNlL0MvR2VuRnYvR2VuRnZJbnRlcm5hbExpYi5oDQo+IEBAIC0zNCw3ICszNCw3IEBA IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhF UiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ICAjaW5jbHVkZSAiRWZpVXRpbGl0eU1zZ3MuaCINCj4g DQo+ICAvLw0KPiAtLy8gRGlmZmVyZW50IGZpbGUgc2VwYXJhdGVyIGZvciBMaW51eCBhbmQgV2lu ZG93cw0KPiArLy8gRGlmZmVyZW50IGZpbGUgc2VwYXJhdG9yIGZvciBMaW51eCBhbmQgV2luZG93 cw0KPiAgLy8NCj4gICNkZWZpbmUgRklMRV9TRVBfQ0hBUiAnLycNCj4gDQo+IGRpZmYgLS1naXQg YS9CYXNlVG9vbHMvU291cmNlL0MvR2VuRncvRWxmMzJDb252ZXJ0LmMgYi9CYXNlVG9vbHMvU291 cmNlL0MvR2VuRncvRWxmMzJDb252ZXJ0LmMNCj4gaW5kZXggMjNlODA2NTc1Ni4uNjJjZGIzMGNm NSAxMDA2NDQNCj4gLS0tIGEvQmFzZVRvb2xzL1NvdXJjZS9DL0dlbkZ3L0VsZjMyQ29udmVydC5j DQo+ICsrKyBiL0Jhc2VUb29scy9Tb3VyY2UvQy9HZW5Gdy9FbGYzMkNvbnZlcnQuYw0KPiBAQCAt NzQsNyArNzQsNyBAQCBDbGVhblVwMzIgKA0KPiAgICApOw0KPiANCj4gIC8vDQo+IC0vLyBSZW5h bWUgRUxGMzIgc3RydWN1dHJlcyB0byBjb21tb24gbmFtZXMgdG8gaGVscCB3aGVuIHBvcnRpbmcg dG8gRUxGNjQuDQo+ICsvLyBSZW5hbWUgRUxGMzIgc3RydWN0dXJlcyB0byBjb21tb24gbmFtZXMg dG8gaGVscCB3aGVuIHBvcnRpbmcgdG8gRUxGNjQuDQo+ICAvLw0KPiAgdHlwZWRlZiBFbGYzMl9T aGRyIEVsZl9TaGRyOw0KPiAgdHlwZWRlZiBFbGYzMl9FaGRyIEVsZl9FaGRyOw0KPiBAQCAtNDUw LDcgKzQ1MCw3IEBAIFNjYW5TZWN0aW9uczMyICgNCj4gICAgbUNvZmZPZmZzZXQgPSBDb2ZmQWxp Z24obUNvZmZPZmZzZXQpOw0KPiANCj4gICAgaWYgKFNlY3Rpb25Db3VudCA+IDEgJiYgbU91dElt YWdlVHlwZSA9PSBGV19FRklfSU1BR0UpIHsNCj4gLSAgICBXYXJuaW5nIChOVUxMLCAwLCAwLCBO VUxMLCAiTXVsaXRwbGUgc2VjdGlvbnMgaW4gJXMgYXJlIG1lcmdlZCBpbnRvIDEgdGV4dCBzZWN0 aW9uLiBTb3VyY2UgbGV2ZWwgZGVidWcgbWlnaHQgbm90IHdvcmsgY29ycmVjdGx5LiIsDQo+IG1J bkltYWdlTmFtZSk7DQo+ICsgICAgV2FybmluZyAoTlVMTCwgMCwgMCwgTlVMTCwgIk11bHRpcGxl IHNlY3Rpb25zIGluICVzIGFyZSBtZXJnZWQgaW50byAxIHRleHQgc2VjdGlvbi4gU291cmNlIGxl dmVsIGRlYnVnIG1pZ2h0IG5vdCB3b3JrIGNvcnJlY3RseS4iLA0KPiBtSW5JbWFnZU5hbWUpOw0K PiAgICB9DQo+IA0KPiAgICAvLw0KPiBAQCAtNDg3LDcgKzQ4Nyw3IEBAIFNjYW5TZWN0aW9uczMy ICgNCj4gICAgfQ0KPiANCj4gICAgaWYgKFNlY3Rpb25Db3VudCA+IDEgJiYgbU91dEltYWdlVHlw ZSA9PSBGV19FRklfSU1BR0UpIHsNCj4gLSAgICBXYXJuaW5nIChOVUxMLCAwLCAwLCBOVUxMLCAi TXVsaXRwbGUgc2VjdGlvbnMgaW4gJXMgYXJlIG1lcmdlZCBpbnRvIDEgZGF0YSBzZWN0aW9uLiBT b3VyY2UgbGV2ZWwgZGVidWcgbWlnaHQgbm90IHdvcmsgY29ycmVjdGx5LiIsDQo+IG1JbkltYWdl TmFtZSk7DQo+ICsgICAgV2FybmluZyAoTlVMTCwgMCwgMCwgTlVMTCwgIk11bHRpcGxlIHNlY3Rp b25zIGluICVzIGFyZSBtZXJnZWQgaW50byAxIGRhdGEgc2VjdGlvbi4gU291cmNlIGxldmVsIGRl YnVnIG1pZ2h0IG5vdCB3b3JrIGNvcnJlY3RseS4iLA0KPiBtSW5JbWFnZU5hbWUpOw0KPiAgICB9 DQo+IA0KPiAgICAvLw0KPiBAQCAtNjg4LDcgKzY4OCw3IEBAIFdyaXRlU2VjdGlvbnMzMiAoDQo+ IA0KPiAgICAgICAgZGVmYXVsdDoNCj4gICAgICAgICAgLy8NCj4gLSAgICAgICAgLy8gIElnbm9y ZSBmb3IgdW5rb3duIHNlY3Rpb24gdHlwZS4NCj4gKyAgICAgICAgLy8gIElnbm9yZSBmb3IgdW5r bm93biBzZWN0aW9uIHR5cGUuDQo+ICAgICAgICAgIC8vDQo+ICAgICAgICAgIFZlcmJvc2VNc2cg KCIlcyB1bmtub3duIHNlY3Rpb24gdHlwZSAleC4gV2UgaWdub3JlIHRoaXMgdW5rbm93biBzZWN0 aW9uIHR5cGUuIiwgbUluSW1hZ2VOYW1lLCAodW5zaWduZWQpU2hkci0+c2hfdHlwZSk7DQo+ICAg ICAgICAgIGJyZWFrOw0KPiBAQCAtMTA5MCw3ICsxMDkwLDcgQEAgV3JpdGVSZWxvY2F0aW9uczMy ICgNCj4gICAgICAgICAgICAgIGJyZWFrOw0KPiANCj4gICAgICAgICAgICBkZWZhdWx0Og0KPiAt ICAgICAgICAgICAgRXJyb3IgKE5VTEwsIDAsIDMwMDAsICJJbnZhbGlkIiwgIiVzIGJhZCBBUk0g ZHluYW1pYyByZWxvY2F0aW9ucywgdW5rb3duIHR5cGUgJWQuIiwgbUluSW1hZ2VOYW1lLCBFTEYz Ml9SX1RZUEUNCj4gKFJlbC0+cl9pbmZvKSk7DQo+ICsgICAgICAgICAgICBFcnJvciAoTlVMTCwg MCwgMzAwMCwgIkludmFsaWQiLCAiJXMgYmFkIEFSTSBkeW5hbWljIHJlbG9jYXRpb25zLCB1bmtu b3duIHR5cGUgJWQuIiwgbUluSW1hZ2VOYW1lLCBFTEYzMl9SX1RZUEUNCj4gKFJlbC0+cl9pbmZv KSk7DQo+ICAgICAgICAgICAgICBicmVhazsNCj4gICAgICAgICAgICB9DQo+ICAgICAgICAgIH0N Cj4gZGlmZiAtLWdpdCBhL0Jhc2VUb29scy9Tb3VyY2UvQy9HZW5Gdy9FbGY2NENvbnZlcnQuYyBi L0Jhc2VUb29scy9Tb3VyY2UvQy9HZW5Gdy9FbGY2NENvbnZlcnQuYw0KPiBpbmRleCAwYTUyMzdk ZDE0Li4yOGYyN2FiOTdiIDEwMDY0NA0KPiAtLS0gYS9CYXNlVG9vbHMvU291cmNlL0MvR2VuRncv RWxmNjRDb252ZXJ0LmMNCj4gKysrIGIvQmFzZVRvb2xzL1NvdXJjZS9DL0dlbkZ3L0VsZjY0Q29u dmVydC5jDQo+IEBAIC03NCw3ICs3NCw3IEBAIENsZWFuVXA2NCAoDQo+ICAgICk7DQo+IA0KPiAg Ly8NCj4gLS8vIFJlbmFtZSBFTEYzMiBzdHJ1Y3V0cmVzIHRvIGNvbW1vbiBuYW1lcyB0byBoZWxw IHdoZW4gcG9ydGluZyB0byBFTEY2NC4NCj4gKy8vIFJlbmFtZSBFTEYzMiBzdHJ1Y3R1cmVzIHRv IGNvbW1vbiBuYW1lcyB0byBoZWxwIHdoZW4gcG9ydGluZyB0byBFTEY2NC4NCj4gIC8vDQo+ICB0 eXBlZGVmIEVsZjY0X1NoZHIgRWxmX1NoZHI7DQo+ICB0eXBlZGVmIEVsZjY0X0VoZHIgRWxmX0Vo ZHI7DQo+IEBAIC01ODAsNyArNTgwLDcgQEAgU2NhblNlY3Rpb25zNjQgKA0KPiAgICBtQ29mZk9m ZnNldCA9IENvZmZBbGlnbihtQ29mZk9mZnNldCk7DQo+IA0KPiAgICBpZiAoU2VjdGlvbkNvdW50 ID4gMSAmJiBtT3V0SW1hZ2VUeXBlID09IEZXX0VGSV9JTUFHRSkgew0KPiAtICAgIFdhcm5pbmcg KE5VTEwsIDAsIDAsIE5VTEwsICJNdWxpdHBsZSBzZWN0aW9ucyBpbiAlcyBhcmUgbWVyZ2VkIGlu dG8gMSB0ZXh0IHNlY3Rpb24uIFNvdXJjZSBsZXZlbCBkZWJ1ZyBtaWdodCBub3Qgd29yayBjb3Jy ZWN0bHkuIiwNCj4gbUluSW1hZ2VOYW1lKTsNCj4gKyAgICBXYXJuaW5nIChOVUxMLCAwLCAwLCBO VUxMLCAiTXVsdGlwbGUgc2VjdGlvbnMgaW4gJXMgYXJlIG1lcmdlZCBpbnRvIDEgdGV4dCBzZWN0 aW9uLiBTb3VyY2UgbGV2ZWwgZGVidWcgbWlnaHQgbm90IHdvcmsgY29ycmVjdGx5LiIsDQo+IG1J bkltYWdlTmFtZSk7DQo+ICAgIH0NCj4gDQo+ICAgIC8vDQo+IEBAIC02MzQsNyArNjM0LDcgQEAg U2NhblNlY3Rpb25zNjQgKA0KPiAgICB9DQo+IA0KPiAgICBpZiAoU2VjdGlvbkNvdW50ID4gMSAm JiBtT3V0SW1hZ2VUeXBlID09IEZXX0VGSV9JTUFHRSkgew0KPiAtICAgIFdhcm5pbmcgKE5VTEws IDAsIDAsIE5VTEwsICJNdWxpdHBsZSBzZWN0aW9ucyBpbiAlcyBhcmUgbWVyZ2VkIGludG8gMSBk YXRhIHNlY3Rpb24uIFNvdXJjZSBsZXZlbCBkZWJ1ZyBtaWdodCBub3Qgd29yayBjb3JyZWN0bHku IiwNCj4gbUluSW1hZ2VOYW1lKTsNCj4gKyAgICBXYXJuaW5nIChOVUxMLCAwLCAwLCBOVUxMLCAi TXVsdGlwbGUgc2VjdGlvbnMgaW4gJXMgYXJlIG1lcmdlZCBpbnRvIDEgZGF0YSBzZWN0aW9uLiBT b3VyY2UgbGV2ZWwgZGVidWcgbWlnaHQgbm90IHdvcmsgY29ycmVjdGx5LiIsDQo+IG1JbkltYWdl TmFtZSk7DQo+ICAgIH0NCj4gDQo+ICAgIC8vDQo+IEBAIC04MTcsNyArODE3LDcgQEAgV3JpdGVT ZWN0aW9uczY0ICgNCj4gDQo+ICAgICAgICBkZWZhdWx0Og0KPiAgICAgICAgICAvLw0KPiAtICAg ICAgICAvLyAgSWdub3JlIGZvciB1bmtvd24gc2VjdGlvbiB0eXBlLg0KPiArICAgICAgICAvLyAg SWdub3JlIGZvciB1bmtub3duIHNlY3Rpb24gdHlwZS4NCj4gICAgICAgICAgLy8NCj4gICAgICAg ICAgVmVyYm9zZU1zZyAoIiVzIHVua25vd24gc2VjdGlvbiB0eXBlICV4LiBXZSBpZ25vcmUgdGhp cyB1bmtub3duIHNlY3Rpb24gdHlwZS4iLCBtSW5JbWFnZU5hbWUsICh1bnNpZ25lZClTaGRyLT5z aF90eXBlKTsNCj4gICAgICAgICAgYnJlYWs7DQo+IGRpZmYgLS1naXQgYS9CYXNlVG9vbHMvU291 cmNlL0MvR2VuRncvRWxmQ29udmVydC5oIGIvQmFzZVRvb2xzL1NvdXJjZS9DL0dlbkZ3L0VsZkNv bnZlcnQuaA0KPiBpbmRleCAxYzBmMjRlNmMyLi5lMGY5ZTI5MzMzIDEwMDY0NA0KPiAtLS0gYS9C YXNlVG9vbHMvU291cmNlL0MvR2VuRncvRWxmQ29udmVydC5oDQo+ICsrKyBiL0Jhc2VUb29scy9T b3VyY2UvQy9HZW5Gdy9FbGZDb252ZXJ0LmgNCj4gQEAgLTQ5LDcgKzQ5LDcgQEAgdHlwZWRlZiBl bnVtIHsNCj4gIH0gU0VDVElPTl9GSUxURVJfVFlQRVM7DQo+IA0KPiAgLy8NCj4gLS8vIEZ1bmN0 aW9uVGFsYmUNCj4gKy8vIEZ1bmN0aW9uVGFibGUNCj4gIC8vDQo+ICB0eXBlZGVmIHN0cnVjdCB7 DQo+ICAgIFZPSUQgICAgKCpTY2FuU2VjdGlvbnMpICgpOw0KPiBkaWZmIC0tZ2l0IGEvQmFzZVRv b2xzL1NvdXJjZS9DL0dlbkZ3L0dlbkZ3LmMgYi9CYXNlVG9vbHMvU291cmNlL0MvR2VuRncvR2Vu RncuYw0KPiBpbmRleCBhZjJjOTA5ODY2Li5mZWE3ZDViNGRlIDEwMDY0NA0KPiAtLS0gYS9CYXNl VG9vbHMvU291cmNlL0MvR2VuRncvR2VuRncuYw0KPiArKysgYi9CYXNlVG9vbHMvU291cmNlL0Mv R2VuRncvR2VuRncuYw0KPiBAQCAtMTc2LDcgKzE3Niw3IEBAIFJldHVybnM6DQo+ICAgIC8vDQo+ ICAgIGZwcmludGYgKHN0ZG91dCwgIk9wdGlvbnM6XG4iKTsNCj4gICAgZnByaW50ZiAoc3Rkb3V0 LCAiICAtbyBGaWxlTmFtZSwgLS1vdXRwdXRmaWxlIEZpbGVOYW1lXG5cDQo+IC0gICAgICAgICAg ICAgICAgICAgICAgICBGaWxlIHdpbGwgYmUgY3JlYXRlZCB0byBzdG9yZSB0aGUgb3VwdXQgY29u dGVudC5cbiIpOw0KPiArICAgICAgICAgICAgICAgICAgICAgICAgRmlsZSB3aWxsIGJlIGNyZWF0 ZWQgdG8gc3RvcmUgdGhlIG91dHB1dCBjb250ZW50LlxuIik7DQo+ICAgIGZwcmludGYgKHN0ZG91 dCwgIiAgLWUgRUZJX0ZJTEVUWVBFLCAtLWVmaUltYWdlIEVGSV9GSUxFVFlQRVxuXA0KPiAgICAg ICAgICAgICAgICAgICAgICAgICAgQ3JlYXRlIEVmaSBJbWFnZS4gRUZJX0ZJTEVUWVBFIGlzIG9u ZSBvZiBCQVNFLFNNTV9DT1JFLFxuXA0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgUEVJX0NP UkUsIFBFSU0sIERYRV9DT1JFLCBEWEVfRFJJVkVSLCBVRUZJX0FQUExJQ0FUSU9OLFxuXA0KPiBA QCAtMjYxLDEzICsyNjEsMTMgQEAgUmV0dXJuczoNCj4gICAgICAgICAgICAgICAgICAgICAgICAg IEd1aWQgaXMgdXNlZCB0byBzcGVjaWZ5IGhpaSBwYWNrYWdlIGxpc3QgZ3VpZC5cblwNCj4gICAg ICAgICAgICAgICAgICAgICAgICAgIEl0cyBmb3JtYXQgaXMgeHh4eHh4eHgteHh4eC14eHh4LXh4 eHgteHh4eHh4eHh4eHh4XG5cDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICBJZiBub3Qgc3Bl Y2lmaWVkLCB0aGUgZmlyc3QgRm9ybSBGb3JtU2V0IGd1aWQgaXMgdXNlZC5cbiIpOw0KPiAtICBm cHJpbnRmIChzdGRvdXQsICIgIC0taGlpcGFja2FnZSAgICAgICAgICBDb21iaW5lIGFsbCBpbnB1 dCBiaW5hcnkgaGlpIHBhY2FrZ2VzIGludG8gXG5cDQo+ICsgIGZwcmludGYgKHN0ZG91dCwgIiAg LS1oaWlwYWNrYWdlICAgICAgICAgIENvbWJpbmUgYWxsIGlucHV0IGJpbmFyeSBoaWkgcGFja2Fn ZXMgaW50byBcblwNCj4gICAgICAgICAgICAgICAgICAgICAgICAgIGEgc2luZ2xlIHBhY2thZ2Ug bGlzdCBhcyB0aGUgdGV4dCByZXNvdXJjZSBkYXRhKFJDKS5cblwNCj4gICAgICAgICAgICAgICAg ICAgICAgICAgIEl0IGNhbid0IGJlIGNvbWJpbmVkIHdpdGggb3RoZXIgYWN0aW9uIG9wdGlvbnNc blwNCj4gICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBmb3IgLW8gb3B0aW9uLiBJdCBp cyBhIGFjdGlvbiBvcHRpb24uXG5cDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICBJZiBpdCBp cyBjb21iaW5lZCB3aXRoIG90aGVyIGFjdGlvbiBvcHRpb25zLCB0aGUgbGF0ZXJcblwNCj4gICAg ICAgICAgICAgICAgICAgICAgICAgIGlucHV0IGFjdGlvbiBvcHRpb24gd2lsbCBvdmVycmlkZSB0 aGUgcHJldmlvdXMgb25lLlxuIik7DQo+IC0gIGZwcmludGYgKHN0ZG91dCwgIiAgLS1oaWliaW5w YWNrYWdlICAgICAgIENvbWJpbmUgYWxsIGlucHV0IGJpbmFyeSBoaWkgcGFjYWtnZXMgaW50byBc blwNCj4gKyAgZnByaW50ZiAoc3Rkb3V0LCAiICAtLWhpaWJpbnBhY2thZ2UgICAgICAgQ29tYmlu ZSBhbGwgaW5wdXQgYmluYXJ5IGhpaSBwYWNrYWdlcyBpbnRvIFxuXA0KPiAgICAgICAgICAgICAg ICAgICAgICAgICAgYSBzaW5nbGUgcGFja2FnZSBsaXN0IGFzIHRoZSBiaW5hcnkgcmVzb3VyY2Ug c2VjdGlvbi5cblwNCj4gICAgICAgICAgICAgICAgICAgICAgICAgIEl0IGNhbid0IGJlIGNvbWJp bmVkIHdpdGggb3RoZXIgYWN0aW9uIG9wdGlvbnNcblwNCj4gICAgICAgICAgICAgICAgICAgICAg ICAgIGV4Y2VwdCBmb3IgLW8gb3B0aW9uLiBJdCBpcyBhIGFjdGlvbiBvcHRpb24uXG5cDQo+IEBA IC01NTksNyArNTU5LDcgQEAgUGVDb2ZmQ29udmVydEltYWdlVG9YaXAgKA0KPiAgICBpZiAoUGVI ZHItPlBlMzIuT3B0aW9uYWxIZWFkZXIuU2VjdGlvbkFsaWdubWVudCAhPSBQZUhkci0+UGUzMi5P cHRpb25hbEhlYWRlci5GaWxlQWxpZ25tZW50KSB7DQo+ICAgICAgLy8NCj4gICAgICAvLyBUaGUg b25seSByZWFzb24gdG8gZXhwYW5kIHplcm8gZmlsbCBzZWN0aW9ucyBpcyB0byBtYWtlIHRoZW0g Y29tcGF0aWJsZSB3aXRoIFhJUCBpbWFnZXMuDQo+IC0gICAgLy8gSWYgU2VjdGlvbkFsaWdubWVu dCBpcyBub3QgZXF1YWwgdG8gRmlsZUFsZ2lubWVudCB0aGVuIGl0IGlzIG5vdCBhbiBYSVAgdHlw ZSBpbWFnZS4NCj4gKyAgICAvLyBJZiBTZWN0aW9uQWxpZ25tZW50IGlzIG5vdCBlcXVhbCB0byBG aWxlQWxpZ25tZW50IHRoZW4gaXQgaXMgbm90IGFuIFhJUCB0eXBlIGltYWdlLg0KPiAgICAgIC8v DQo+ICAgICAgcmV0dXJuOw0KPiAgICB9DQo+IEBAIC0xMzkwLDcgKzEzOTAsNyBAQCBSZXR1cm5z Og0KPiAgICAgICAgICBnb3RvIEZpbmlzaDsNCj4gICAgICAgIH0NCj4gICAgICAgIGlmIChMb2dM ZXZlbCA+IDkpIHsNCj4gLSAgICAgICAgRXJyb3IgKE5VTEwsIDAsIDEwMDMsICJJbnZhbGlkIG9w dGlvbiB2YWx1ZSIsICJEZWJ1ZyBMZXZlbCByYW5nZSBpcyAwLTksIGN1cnJudCBpbnB1dCBsZXZl bCBpcyAlZCIsIChpbnQpIExvZ0xldmVsKTsNCj4gKyAgICAgICAgRXJyb3IgKE5VTEwsIDAsIDEw MDMsICJJbnZhbGlkIG9wdGlvbiB2YWx1ZSIsICJEZWJ1ZyBMZXZlbCByYW5nZSBpcyAwLTksIGN1 cnJlbnQgaW5wdXQgbGV2ZWwgaXMgJWQiLCAoaW50KSBMb2dMZXZlbCk7DQo+ICAgICAgICAgIGdv dG8gRmluaXNoOw0KPiAgICAgICAgfQ0KPiAgICAgICAgU2V0UHJpbnRMZXZlbCAoTG9nTGV2ZWwp Ow0KPiBAQCAtMTUzNiwxNiArMTUzNiwxNiBAQCBSZXR1cm5zOg0KPiAgICAgIFZlcmJvc2VNc2cg KCJEdW1wIHRoZSBURSBoZWFkZXIgaW5mb3JtYXRpb24gb2YgdGhlIGlucHV0IFRFIGltYWdlLiIp Ow0KPiAgICAgIGJyZWFrOw0KPiAgICBjYXNlIEZXX01DSV9JTUFHRToNCj4gLSAgICBWZXJib3Nl TXNnICgiQ29udmVyIGlucHV0IE1pY3JvQ29kZS50eHQgZmlsZSB0byBNaWNyb0NvZGUuYmluIGZp bGUuIik7DQo+ICsgICAgVmVyYm9zZU1zZyAoIkNvbnZlcnQgaW5wdXQgTWljcm9Db2RlLnR4dCBm aWxlIHRvIE1pY3JvQ29kZS5iaW4gZmlsZS4iKTsNCj4gICAgICBicmVhazsNCj4gICAgY2FzZSBG V19NRVJHRV9JTUFHRToNCj4gICAgICBWZXJib3NlTXNnICgiQ29tYmluZSB0aGUgaW5wdXQgbXVs dGkgbWljcm9jb2RlIGJpbiBmaWxlcyB0byBvbmUgYmluIGZpbGUuIik7DQo+ICAgICAgYnJlYWs7 DQo+ICAgIGNhc2UgRldfSElJX1BBQ0tBR0VfTElTVF9SQ0lNQUdFOg0KPiAtICAgIFZlcmJvc2VN c2cgKCJDb21iaW5lIHRoZSBpbnB1dCBtdWx0aSBoaWkgYmluIHBhY2thZ2VzIHRvIG9uZSB0ZXh0 IHBhY2FrZ2UgbGlzdCBSQyBmaWxlLiIpOw0KPiArICAgIFZlcmJvc2VNc2cgKCJDb21iaW5lIHRo ZSBpbnB1dCBtdWx0aSBoaWkgYmluIHBhY2thZ2VzIHRvIG9uZSB0ZXh0IHBhY2thZ2UgbGlzdCBS QyBmaWxlLiIpOw0KPiAgICAgIGJyZWFrOw0KPiAgICBjYXNlIEZXX0hJSV9QQUNLQUdFX0xJU1Rf QklOSU1BR0U6DQo+IC0gICAgVmVyYm9zZU1zZyAoIkNvbWJpbmUgdGhlIGlucHV0IG11bHRpIGhp aSBiaW4gcGFja2FnZXMgdG8gb25lIGJpbmFyeSBwYWNha2dlIGxpc3QgZmlsZS4iKTsNCj4gKyAg ICBWZXJib3NlTXNnICgiQ29tYmluZSB0aGUgaW5wdXQgbXVsdGkgaGlpIGJpbiBwYWNrYWdlcyB0 byBvbmUgYmluYXJ5IHBhY2thZ2UgbGlzdCBmaWxlLiIpOw0KPiAgICAgIGJyZWFrOw0KPiAgICBj YXNlIEZXX1JFQkFTRV9JTUFHRToNCj4gICAgICBWZXJib3NlTXNnICgiUmViYXNlIHRoZSBpbnB1 dCBpbWFnZSB0byBuZXcgYmFzZSBhZGRyZXNzLiIpOw0KPiBAQCAtMTYzMyw3ICsxNjMzLDcgQEAg UmV0dXJuczoNCj4gICAgICAgIGdvdG8gRmluaXNoOw0KPiAgICAgIH0NCj4gICAgICAvLw0KPiAt ICAgIC8vIEdldCBoaWkgcGFja2FnZSBsaXN0IGxlbmdodA0KPiArICAgIC8vIEdldCBoaWkgcGFj a2FnZSBsaXN0IGxlbmd0aA0KPiAgICAgIC8vDQo+ICAgICAgSGlpUGFja2FnZUxpc3RIZWFkZXIu UGFja2FnZUxlbmd0aCA9IHNpemVvZiAoRUZJX0hJSV9QQUNLQUdFX0xJU1RfSEVBREVSKTsNCj4g ICAgICBmb3IgKEluZGV4ID0gMDsgSW5kZXggPCBJbnB1dEZpbGVOdW07IEluZGV4ICsrKSB7DQo+ IEBAIC0xNjY4LDcgKzE2NjgsNyBAQCBSZXR1cm5zOg0KPiAgICAgICAgZ290byBGaW5pc2g7DQo+ ICAgICAgfQ0KPiAgICAgIGlmIChtZW1jbXAgKCZIaWlQYWNrYWdlTGlzdEd1aWQsICZtWmVyb0d1 aWQsIHNpemVvZiAoRUZJX0dVSUQpKSA9PSAwKSB7DQo+IC0gICAgICBFcnJvciAoTlVMTCwgMCwg MzAwMCwgIkludmFsaWQiLCAiSElJIHBhY2FrZ2UgbGlzdCBndWlkIGlzIG5vdCBzcGVjaWZpZWQh Iik7DQo+ICsgICAgICBFcnJvciAoTlVMTCwgMCwgMzAwMCwgIkludmFsaWQiLCAiSElJIHBhY2th Z2UgbGlzdCBndWlkIGlzIG5vdCBzcGVjaWZpZWQhIik7DQo+ICAgICAgICBnb3RvIEZpbmlzaDsN Cj4gICAgICB9DQo+ICAgICAgbWVtY3B5ICgmSGlpUGFja2FnZUxpc3RIZWFkZXIuUGFja2FnZUxp c3RHdWlkLCAmSGlpUGFja2FnZUxpc3RHdWlkLCBzaXplb2YgKEVGSV9HVUlEKSk7DQo+IEBAIC0y MTcyLDcgKzIxNzIsNyBAQCBSZXR1cm5zOg0KPiANCj4gICAgaWYgKFBlSGRyLT5QZTMyLkZpbGVI ZWFkZXIuTWFjaGluZSA9PSBJTUFHRV9GSUxFX01BQ0hJTkVfQVJNKSB7DQo+ICAgICAgLy8gU29t ZSB0b29scyBraWNrIG91dCBJTUFHRV9GSUxFX01BQ0hJTkVfQVJNICgweDFjMCkgdnMgSU1BR0Vf RklMRV9NQUNISU5FX0FSTVQgKDB4MWMyKQ0KPiAtICAgIC8vIHNvIHBhdGNoIGJhY2sgdG8gdGhl IG9mZmljYWwgVUVGSSB2YWx1ZS4NCj4gKyAgICAvLyBzbyBwYXRjaCBiYWNrIHRvIHRoZSBvZmZp Y2lhbCBVRUZJIHZhbHVlLg0KPiAgICAgIFBlSGRyLT5QZTMyLkZpbGVIZWFkZXIuTWFjaGluZSA9 IElNQUdFX0ZJTEVfTUFDSElORV9BUk1UOw0KPiAgICB9DQo+IA0KPiBAQCAtMjM3Miw3ICsyMzcy LDcgQEAgUmV0dXJuczoNCj4gICAgICAgICAgICAgIC8vDQo+ICAgICAgICAgICAgICBtZW1zZXQg KFNlY3Rpb25IZWFkZXItPk5hbWUsIDAsIHNpemVvZiAoU2VjdGlvbkhlYWRlci0+TmFtZSkpOw0K PiAgICAgICAgICAgICAgLy8NCj4gLSAgICAgICAgICAgIC8vIFplcm8gRXhlY3B0aW9uIFRhYmxl DQo+ICsgICAgICAgICAgICAvLyBaZXJvIEV4Y2VwdGlvbiBUYWJsZQ0KPiAgICAgICAgICAgICAg Ly8NCj4gICAgICAgICAgICAgIE9wdGlvbmFsMzItPkRhdGFEaXJlY3RvcnlbRUZJX0lNQUdFX0RJ UkVDVE9SWV9FTlRSWV9FWENFUFRJT05dLlZpcnR1YWxBZGRyZXNzID0gMDsNCj4gICAgICAgICAg ICAgIE9wdGlvbmFsMzItPkRhdGFEaXJlY3RvcnlbRUZJX0lNQUdFX0RJUkVDVE9SWV9FTlRSWV9F WENFUFRJT05dLlNpemUgICAgICAgICAgID0gMDsNCj4gQEAgLTI0NzksNyArMjQ3OSw3IEBAIFJl dHVybnM6DQo+ICAgICAgICAgICAgICAgICAgbWVtc2V0IChSdW50aW1lRnVuY3Rpb24sIDAsIHNp emVvZiAoUlVOVElNRV9GVU5DVElPTikpOw0KPiAgICAgICAgICAgICAgICB9DQo+ICAgICAgICAg ICAgICAgIC8vDQo+IC0gICAgICAgICAgICAgIC8vIFplcm8gRXhlY3B0aW9uIFRhYmxlDQo+ICsg ICAgICAgICAgICAgIC8vIFplcm8gRXhjZXB0aW9uIFRhYmxlDQo+ICAgICAgICAgICAgICAgIC8v DQo+ICAgICAgICAgICAgICAgIE9wdGlvbmFsNjQtPkRhdGFEaXJlY3RvcnlbRUZJX0lNQUdFX0RJ UkVDVE9SWV9FTlRSWV9FWENFUFRJT05dLlNpemUgPSAwOw0KPiAgICAgICAgICAgICAgICBPcHRp b25hbDY0LT5EYXRhRGlyZWN0b3J5W0VGSV9JTUFHRV9ESVJFQ1RPUllfRU5UUllfRVhDRVBUSU9O XS5WaXJ0dWFsQWRkcmVzcyA9IDA7DQo+IGRpZmYgLS1naXQgYS9CYXNlVG9vbHMvU291cmNlL0Mv R2VuU2VjL0dlblNlYy5jIGIvQmFzZVRvb2xzL1NvdXJjZS9DL0dlblNlYy9HZW5TZWMuYw0KPiBp bmRleCBmM2RmYWY2M2JhLi5lOTA2NGRlNDM5IDEwMDY0NA0KPiAtLS0gYS9CYXNlVG9vbHMvU291 cmNlL0MvR2VuU2VjL0dlblNlYy5jDQo+ICsrKyBiL0Jhc2VUb29scy9Tb3VyY2UvQy9HZW5TZWMv R2VuU2VjLmMNCj4gQEAgLTMyMyw3ICszMjMsNyBAQCBSZXR1cm5zOg0KPiAgICAvLw0KPiAgICBC dWZmZXIgPSAoVUlOVDggKikgbWFsbG9jICgoc2l6ZV90KSBUb3RhbExlbmd0aCk7DQo+ICAgIGlm IChCdWZmZXIgPT0gTlVMTCkgew0KPiAtICAgIEVycm9yIChOVUxMLCAwLCA0MDAxLCAiUmVzb3Vy Y2UiLCAibWVtb3J5IGNhbm5vdCBiZSBhbGxjb2F0ZWQiKTsNCj4gKyAgICBFcnJvciAoTlVMTCwg MCwgNDAwMSwgIlJlc291cmNlIiwgIm1lbW9yeSBjYW5ub3QgYmUgYWxsb2NhdGVkIik7DQo+ICAg ICAgZ290byBEb25lOw0KPiAgICB9DQo+ICAgIENvbW1vblNlY3QgPSAoRUZJX0NPTU1PTl9TRUNU SU9OX0hFQURFUiAqKSBCdWZmZXI7DQo+IEBAIC02NTgsNyArNjU4LDcgQEAgUmV0dXJuczoNCj4g ICAgaWYgKFN0YXR1cyA9PSBFRklfQlVGRkVSX1RPT19TTUFMTCkgew0KPiAgICAgIEZpbGVCdWZm ZXIgPSAoVUlOVDggKikgbWFsbG9jIChJbnB1dExlbmd0aCk7DQo+ICAgICAgaWYgKEZpbGVCdWZm ZXIgPT0gTlVMTCkgew0KPiAtICAgICAgRXJyb3IgKE5VTEwsIDAsIDQwMDEsICJSZXNvdXJjZSIs ICJtZW1vcnkgY2Fubm90IGJlIGFsbGNvYXRlZCIpOw0KPiArICAgICAgRXJyb3IgKE5VTEwsIDAs IDQwMDEsICJSZXNvdXJjZSIsICJtZW1vcnkgY2Fubm90IGJlIGFsbG9jYXRlZCIpOw0KPiAgICAg ICAgcmV0dXJuIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTOw0KPiAgICAgIH0NCj4gICAgICAvLw0KPiBA QCAtODg3LDcgKzg4Nyw3IEBAIFJldHVybnM6DQo+IA0KPiAgICAgIEZpbGVCdWZmZXIgPSAoVUlO VDggKikgbWFsbG9jIChJbnB1dExlbmd0aCArIE9mZnNldCk7DQo+ICAgICAgaWYgKEZpbGVCdWZm ZXIgPT0gTlVMTCkgew0KPiAtICAgICAgRXJyb3IgKE5VTEwsIDAsIDQwMDEsICJSZXNvdXJjZSIs ICJtZW1vcnkgY2Fubm90IGJlIGFsbGNvYXRlZCIpOw0KPiArICAgICAgRXJyb3IgKE5VTEwsIDAs IDQwMDEsICJSZXNvdXJjZSIsICJtZW1vcnkgY2Fubm90IGJlIGFsbG9jYXRlZCIpOw0KPiAgICAg ICAgcmV0dXJuIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTOw0KPiAgICAgIH0NCj4gICAgICAvLw0KPiBA QCAtOTIyLDcgKzkyMiw3IEBAIFJldHVybnM6DQo+ICAgIC8vIElucHV0TGVuZ3RoICE9IDAsIGJ1 dCBGaWxlQnVmZmVyID09IE5VTEwgbWVhbnMgb3V0IG9mIHJlc291cmNlcy4NCj4gICAgLy8NCj4g ICAgaWYgKEZpbGVCdWZmZXIgPT0gTlVMTCkgew0KPiAtICAgIEVycm9yIChOVUxMLCAwLCA0MDAx LCAiUmVzb3VyY2UiLCAibWVtb3J5IGNhbm5vdCBiZSBhbGxjb2F0ZWQiKTsNCj4gKyAgICBFcnJv ciAoTlVMTCwgMCwgNDAwMSwgIlJlc291cmNlIiwgIm1lbW9yeSBjYW5ub3QgYmUgYWxsb2NhdGVk Iik7DQo+ICAgICAgcmV0dXJuIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTOw0KPiAgICB9DQo+IA0KPiBA QCAtMTM0Miw3ICsxMzQyLDcgQEAgUmV0dXJuczoNCj4gICAgICAgICAgZ290byBGaW5pc2g7DQo+ ICAgICAgICB9DQo+ICAgICAgICBpZiAoTG9nTGV2ZWwgPiA5KSB7DQo+IC0gICAgICAgIEVycm9y IChOVUxMLCAwLCAxMDAzLCAiSW52YWxpZCBvcHRpb24gdmFsdWUiLCAiRGVidWcgTGV2ZWwgcmFu Z2UgaXMgMH45LCBjdXJybnQgaW5wdXQgbGV2ZWwgaXMgJWQiLCAoaW50KSBMb2dMZXZlbCk7DQo+ ICsgICAgICAgIEVycm9yIChOVUxMLCAwLCAxMDAzLCAiSW52YWxpZCBvcHRpb24gdmFsdWUiLCAi RGVidWcgTGV2ZWwgcmFuZ2UgaXMgMH45LCBjdXJyZW50IGlucHV0IGxldmVsIGlzICVkIiwgKGlu dCkgTG9nTGV2ZWwpOw0KPiAgICAgICAgICBnb3RvIEZpbmlzaDsNCj4gICAgICAgIH0NCj4gICAg ICAgIFNldFByaW50TGV2ZWwgKExvZ0xldmVsKTsNCj4gQEAgLTEzOTYsNyArMTM5Niw3IEBAIFJl dHVybnM6DQo+ICAgICAgaWYgKChJbnB1dEZpbGVOdW0gPT0gMCkgJiYgKElucHV0RmlsZU5hbWUg PT0gTlVMTCkpIHsNCj4gICAgICAgIElucHV0RmlsZU5hbWUgPSAoQ0hBUjggKiopIG1hbGxvYyAo TUFYSU1VTV9JTlBVVF9GSUxFX05VTSAqIHNpemVvZiAoQ0hBUjggKikpOw0KPiAgICAgICAgaWYg KElucHV0RmlsZU5hbWUgPT0gTlVMTCkgew0KPiAtICAgICAgICBFcnJvciAoTlVMTCwgMCwgNDAw MSwgIlJlc291cmNlIiwgIm1lbW9yeSBjYW5ub3QgYmUgYWxsY29hdGVkIik7DQo+ICsgICAgICAg IEVycm9yIChOVUxMLCAwLCA0MDAxLCAiUmVzb3VyY2UiLCAibWVtb3J5IGNhbm5vdCBiZSBhbGxv Y2F0ZWQiKTsNCj4gICAgICAgICAgZ290byBGaW5pc2g7DQo+ICAgICAgICB9DQo+ICAgICAgICBt ZW1zZXQgKElucHV0RmlsZU5hbWUsIDAsIChNQVhJTVVNX0lOUFVUX0ZJTEVfTlVNICogc2l6ZW9m IChDSEFSOCAqKSkpOw0KPiBAQCAtMTQxMCw3ICsxNDEwLDcgQEAgUmV0dXJuczoNCj4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOw0KPiANCj4gICAgICAgIGlmIChJbnB1dEZp bGVOYW1lID09IE5VTEwpIHsNCj4gLSAgICAgICAgRXJyb3IgKE5VTEwsIDAsIDQwMDEsICJSZXNv dXJjZSIsICJtZW1vcnkgY2Fubm90IGJlIGFsbGNvYXRlZCIpOw0KPiArICAgICAgICBFcnJvciAo TlVMTCwgMCwgNDAwMSwgIlJlc291cmNlIiwgIm1lbW9yeSBjYW5ub3QgYmUgYWxsb2NhdGVkIik7 DQo+ICAgICAgICAgIGdvdG8gRmluaXNoOw0KPiAgICAgICAgfQ0KPiAgICAgICAgbWVtc2V0ICgm KElucHV0RmlsZU5hbWVbSW5wdXRGaWxlTnVtXSksIDAsIChNQVhJTVVNX0lOUFVUX0ZJTEVfTlVN ICogc2l6ZW9mIChDSEFSOCAqKSkpOw0KPiBAQCAtMTQ1NCw3ICsxNDU0LDcgQEAgUmV0dXJuczoN Cj4gICAgICAgIER1bW15RmlsZUJ1ZmZlciA9IChVSU5UOCAqKSBtYWxsb2MgKER1bW15RmlsZVNp emUpOw0KPiAgICAgICAgaWYgKER1bW15RmlsZUJ1ZmZlciA9PSBOVUxMKSB7DQo+ICAgICAgICAg IGZjbG9zZShEdW1teUZpbGUpOw0KPiAtICAgICAgICBFcnJvciAoTlVMTCwgMCwgNDAwMSwgIlJl c291cmNlIiwgIm1lbW9yeSBjYW5ub3QgYmUgYWxsY29hdGVkIik7DQo+ICsgICAgICAgIEVycm9y IChOVUxMLCAwLCA0MDAxLCAiUmVzb3VyY2UiLCAibWVtb3J5IGNhbm5vdCBiZSBhbGxvY2F0ZWQi KTsNCj4gICAgICAgICAgZ290byBGaW5pc2g7DQo+ICAgICAgICB9DQo+IA0KPiBAQCAtMTQ2Myw3 ICsxNDYzLDcgQEAgUmV0dXJuczoNCj4gICAgICAgIERlYnVnTXNnIChOVUxMLCAwLCA5LCAiRHVt bXkgZmlsZXMiLCAidGhlIGR1bW15IGZpbGUgbmFtZSBpcyAlcyBhbmQgdGhlIHNpemUgaXMgJXUg Ynl0ZXMiLCBEdW1teUZpbGVOYW1lLCAodW5zaWduZWQpDQo+IER1bW15RmlsZVNpemUpOw0KPiAN Cj4gICAgICAgIGlmIChJbnB1dEZpbGVOYW1lID09IE5VTEwpIHsNCj4gLSAgICAgICAgRXJyb3Ig KE5VTEwsIDAsIDQwMDEsICJSZXNvdXJjZSIsICJtZW1vcnkgY2Fubm90IGJlIGFsbGNvYXRlZCIp Ow0KPiArICAgICAgICBFcnJvciAoTlVMTCwgMCwgNDAwMSwgIlJlc291cmNlIiwgIm1lbW9yeSBj YW5ub3QgYmUgYWxsb2NhdGVkIik7DQo+ICAgICAgICAgIGdvdG8gRmluaXNoOw0KPiAgICAgICAg fQ0KPiAgICAgICAgSW5GaWxlID0gZm9wZW4oTG9uZ0ZpbGVQYXRoKElucHV0RmlsZU5hbWVbMF0p LCAicmIiKTsNCj4gQEAgLTE0NzgsNyArMTQ3OCw3IEBAIFJldHVybnM6DQo+ICAgICAgICBJbkZp bGVCdWZmZXIgPSAoVUlOVDggKikgbWFsbG9jIChJbkZpbGVTaXplKTsNCj4gICAgICAgIGlmIChJ bkZpbGVCdWZmZXIgPT0gTlVMTCkgew0KPiAgICAgICAgICBmY2xvc2UoSW5GaWxlKTsNCj4gLSAg ICAgICAgRXJyb3IgKE5VTEwsIDAsIDQwMDEsICJSZXNvdXJjZSIsICJtZW1vcnkgY2Fubm90IGJl IGFsbGNvYXRlZCIpOw0KPiArICAgICAgICBFcnJvciAoTlVMTCwgMCwgNDAwMSwgIlJlc291cmNl IiwgIm1lbW9yeSBjYW5ub3QgYmUgYWxsb2NhdGVkIik7DQo+ICAgICAgICAgIGdvdG8gRmluaXNo Ow0KPiAgICAgICAgfQ0KPiANCj4gQEAgLTE2ODUsNyArMTY4NSw3IEBAIFJldHVybnM6DQo+ICAg ICAgSW5kZXggKz0gKHN0cmxlbiAoU3RyaW5nQnVmZmVyKSAqIDIpICsgMjsNCj4gICAgICBPdXRG aWxlQnVmZmVyID0gKFVJTlQ4ICopIG1hbGxvYyAoSW5kZXgpOw0KPiAgICAgIGlmIChPdXRGaWxl QnVmZmVyID09IE5VTEwpIHsNCj4gLSAgICAgIEVycm9yIChOVUxMLCAwLCA0MDAxLCAiUmVzb3Vy Y2UiLCAibWVtb3J5IGNhbm5vdCBiZSBhbGxjb2F0ZWQiKTsNCj4gKyAgICAgIEVycm9yIChOVUxM LCAwLCA0MDAxLCAiUmVzb3VyY2UiLCAibWVtb3J5IGNhbm5vdCBiZSBhbGxvY2F0ZWQiKTsNCj4g ICAgICAgIGdvdG8gRmluaXNoOw0KPiAgICAgIH0NCj4gICAgICBWZXJzaW9uU2VjdCA9IChFRklf VkVSU0lPTl9TRUNUSU9OICopIE91dEZpbGVCdWZmZXI7DQo+IEBAIC0xNzA2LDcgKzE3MDYsNyBA QCBSZXR1cm5zOg0KPiAgICAgIEluZGV4ICs9IChzdHJsZW4gKFN0cmluZ0J1ZmZlcikgKiAyKSAr IDI7DQo+ICAgICAgT3V0RmlsZUJ1ZmZlciA9IChVSU5UOCAqKSBtYWxsb2MgKEluZGV4KTsNCj4g ICAgICBpZiAoT3V0RmlsZUJ1ZmZlciA9PSBOVUxMKSB7DQo+IC0gICAgICBFcnJvciAoTlVMTCwg MCwgNDAwMSwgIlJlc291cmNlIiwgIm1lbW9yeSBjYW5ub3QgYmUgYWxsY29hdGVkIik7DQo+ICsg ICAgICBFcnJvciAoTlVMTCwgMCwgNDAwMSwgIlJlc291cmNlIiwgIm1lbW9yeSBjYW5ub3QgYmUg YWxsb2NhdGVkIik7DQo+ICAgICAgICBnb3RvIEZpbmlzaDsNCj4gICAgICB9DQo+ICAgICAgVWlT ZWN0ID0gKEVGSV9VU0VSX0lOVEVSRkFDRV9TRUNUSU9OICopIE91dEZpbGVCdWZmZXI7DQo+IEBA IC0xNzM0LDcgKzE3MzQsNyBAQCBSZXR1cm5zOg0KPiAgICAgIGlmIChTdGF0dXMgPT0gRUZJX0JV RkZFUl9UT09fU01BTEwpIHsNCj4gICAgICAgIE91dEZpbGVCdWZmZXIgPSAoVUlOVDggKikgbWFs bG9jIChJbnB1dExlbmd0aCk7DQo+ICAgICAgICBpZiAoT3V0RmlsZUJ1ZmZlciA9PSBOVUxMKSB7 DQo+IC0gICAgICAgIEVycm9yIChOVUxMLCAwLCA0MDAxLCAiUmVzb3VyY2UiLCAibWVtb3J5IGNh bm5vdCBiZSBhbGxjb2F0ZWQiKTsNCj4gKyAgICAgICAgRXJyb3IgKE5VTEwsIDAsIDQwMDEsICJS ZXNvdXJjZSIsICJtZW1vcnkgY2Fubm90IGJlIGFsbG9jYXRlZCIpOw0KPiAgICAgICAgICBnb3Rv IEZpbmlzaDsNCj4gICAgICAgIH0NCj4gICAgICAgIC8vDQo+IGRpZmYgLS1naXQgYS9CYXNlVG9v bHMvU291cmNlL0MvSW5jbHVkZS9BQXJjaDY0L1Byb2Nlc3NvckJpbmQuaCBiL0Jhc2VUb29scy9T b3VyY2UvQy9JbmNsdWRlL0FBcmNoNjQvUHJvY2Vzc29yQmluZC5oDQo+IGluZGV4IGY5NTZjYWI0 NTMuLmIyMWZiODk0ZTYgMTAwNjQ0DQo+IC0tLSBhL0Jhc2VUb29scy9Tb3VyY2UvQy9JbmNsdWRl L0FBcmNoNjQvUHJvY2Vzc29yQmluZC5oDQo+ICsrKyBiL0Jhc2VUb29scy9Tb3VyY2UvQy9JbmNs dWRlL0FBcmNoNjQvUHJvY2Vzc29yQmluZC5oDQo+IEBAIC0zMiw3ICszMiw3IEBADQo+IA0KPiAg I2lmIF9NU0NfRVhURU5TSU9OUw0KPiAgICAvLw0KPiAtICAvLyB1c2UgTWljcm9zb2Z0KiBDIGNv bXBsaWVyIGRlcGVuZGVudCBpbnRlZ2VyIHdpZHRoIHR5cGVzDQo+ICsgIC8vIHVzZSBNaWNyb3Nv ZnQqIEMgY29tcGlsZXIgZGVwZW5kZW50IGludGVnZXIgd2lkdGggdHlwZXMNCj4gICAgLy8NCj4g ICAgdHlwZWRlZiB1bnNpZ25lZCBfX2ludDY0ICAgIFVJTlQ2NDsNCj4gICAgdHlwZWRlZiBfX2lu dDY0ICAgICAgICAgICAgIElOVDY0Ow0KPiBkaWZmIC0tZ2l0IGEvQmFzZVRvb2xzL1NvdXJjZS9D L0luY2x1ZGUvQXJtL1Byb2Nlc3NvckJpbmQuaCBiL0Jhc2VUb29scy9Tb3VyY2UvQy9JbmNsdWRl L0FybS9Qcm9jZXNzb3JCaW5kLmgNCj4gaW5kZXggODU2ZDJiZDllZi4uNThkODg5MDE0YiAxMDA2 NDQNCj4gLS0tIGEvQmFzZVRvb2xzL1NvdXJjZS9DL0luY2x1ZGUvQXJtL1Byb2Nlc3NvckJpbmQu aA0KPiArKysgYi9CYXNlVG9vbHMvU291cmNlL0MvSW5jbHVkZS9Bcm0vUHJvY2Vzc29yQmluZC5o DQo+IEBAIC0zMCw3ICszMCw3IEBADQo+IA0KPiAgI2lmIF9NU0NfRVhURU5TSU9OUw0KPiAgICAv Lw0KPiAtICAvLyB1c2UgTWljcm9zb2Z0KiBDIGNvbXBsaWVyIGRlcGVuZGVudCBpbnRlZ2VyIHdp ZHRoIHR5cGVzDQo+ICsgIC8vIHVzZSBNaWNyb3NvZnQqIEMgY29tcGlsZXIgZGVwZW5kZW50IGlu dGVnZXIgd2lkdGggdHlwZXMNCj4gICAgLy8NCj4gICAgdHlwZWRlZiB1bnNpZ25lZCBfX2ludDY0 ICAgIFVJTlQ2NDsNCj4gICAgdHlwZWRlZiBfX2ludDY0ICAgICAgICAgICAgIElOVDY0Ow0KPiBk aWZmIC0tZ2l0IGEvQmFzZVRvb2xzL1NvdXJjZS9DL0luY2x1ZGUvQ29tbW9uL0Jhc2VUeXBlcy5o IGIvQmFzZVRvb2xzL1NvdXJjZS9DL0luY2x1ZGUvQ29tbW9uL0Jhc2VUeXBlcy5oDQo+IGluZGV4 IDc1MWI2ZjFiM2IuLmI4NzdlMDAyYzggMTAwNjQ0DQo+IC0tLSBhL0Jhc2VUb29scy9Tb3VyY2Uv Qy9JbmNsdWRlL0NvbW1vbi9CYXNlVHlwZXMuaA0KPiArKysgYi9CYXNlVG9vbHMvU291cmNlL0Mv SW5jbHVkZS9Db21tb24vQmFzZVR5cGVzLmgNCj4gQEAgLTUwLDcgKzUwLDcgQEANCj4gICNpZm5k ZWYgVFJVRQ0KPiAgLy8NCj4gIC8vIEJ1Z0J1ZzogVUVGSSBzcGVjaWZpY2F0aW9uIGNsYWltcyAx IGFuZCAwLiBXZSBhcmUgY29uY2VybmVkIGFib3V0IHRoZQ0KPiAtLy8gIGNvbXBsaWVyIHBvcnRh YmlsaXR5IHNvIHdlIGRpZCBpdCB0aGlzIHdheS4NCj4gKy8vICBjb21waWxlciBwb3J0YWJpbGl0 eSBzbyB3ZSBkaWQgaXQgdGhpcyB3YXkuDQo+ICAvLw0KPiAgI2RlZmluZSBUUlVFICAoKEJPT0xF QU4pKDE9PTEpKQ0KPiAgI2VuZGlmDQo+IGRpZmYgLS1naXQgYS9CYXNlVG9vbHMvU291cmNlL0Mv SW5jbHVkZS9Db21tb24vTWRlTW9kdWxlSGlpLmggYi9CYXNlVG9vbHMvU291cmNlL0MvSW5jbHVk ZS9Db21tb24vTWRlTW9kdWxlSGlpLmgNCj4gaW5kZXggZTY1MzhlMmZkZC4uMThhNzkwMTU2ZiAx MDA2NDQNCj4gLS0tIGEvQmFzZVRvb2xzL1NvdXJjZS9DL0luY2x1ZGUvQ29tbW9uL01kZU1vZHVs ZUhpaS5oDQo+ICsrKyBiL0Jhc2VUb29scy9Tb3VyY2UvQy9JbmNsdWRlL0NvbW1vbi9NZGVNb2R1 bGVIaWkuaA0KPiBAQCAtMjA3LDE5ICsyMDcsMTkgQEAgdHlwZWRlZiBzdHJ1Y3QgX0VGSV9JRlJf R1VJRF9WQVJFUU5BTUUgew0KPiAgICAvLy8gRm9yIHZhcmVxdmFsICgweDEwMCksIE5hbWVJZCBp cyAweDEwMC4NCj4gICAgLy8vIFRoaXMgdmFsdWUgd2lsbCBjb252ZXJ0IHRvIGEgVW5pY29kZSBT dHJpbmcgZm9sbG93aW5nIHRoaXMgcnVsZTsNCj4gICAgLy8vICAgICAgICAgICAgc3ByaW50ZihT dHJpbmdCdWZmZXIsICIlZCIsIE5hbWVJZCkgLg0KPiAtICAvLy8gVGhlIHRoZSBVbmljb2RlIFN0 cmluZyB3aWxsIGJlIHVzZWQgYXMgYSBFRkkgVmFyaWFibGUgTmFtZS4NCj4gKyAgLy8vIFRoZSBV bmljb2RlIFN0cmluZyB3aWxsIGJlIHVzZWQgYXMgYSBFRkkgVmFyaWFibGUgTmFtZS4NCj4gICAg Ly8vDQo+ICAgIFVJTlQxNiAgICAgICAgICAgICAgTmFtZUlkOw0KPiAgfSBFRklfSUZSX0dVSURf VkFSRVFOQU1FOw0KPiANCj4gIC8vLw0KPiAtLy8vIEVES0lJIGltcGxlbWVudGF0aW9uIGV4dGVu c2lvbiBHVUlELCB1c2VkIHRvIGluZGFpY2F0ZSB0aGVyZSBhcmUgYml0IGZpZWxkcyBpbiB0aGUg dmFyc3RvcmUuDQo+ICsvLy8gRURLSUkgaW1wbGVtZW50YXRpb24gZXh0ZW5zaW9uIEdVSUQsIHVz ZWQgdG8gaW5kaWNhdGUgdGhlcmUgYXJlIGJpdCBmaWVsZHMgaW4gdGhlIHZhcnN0b3JlLg0KPiAg Ly8vDQo+ICAjZGVmaW5lIEVES0lJX0lGUl9CSVRfVkFSU1RPUkVfR1VJRCBcDQo+ICAgIHsgMHg4 MkRERDY4QiwgMHg5MTYzLCAweDQxODcsIHsweDlCLCAweDI3LCAweDIwLCAweEE4LCAweEZELCAw eDYwICwweEE3LCAweDFEfX0NCj4gDQo+ICAvLy8NCj4gLS8vLyBFREtJSSBpbXBsZW1lbnRhdGlv biBleHRlbnNpb24gZmxhZ3MsIHVzZWQgdG8gaW5kYWljYXRlIHRoZSBkaXNwbHkgc3R5bGUgYW5k IGJpdCB3aWR0aCBmb3IgYml0IGZpbGVkIHN0b3JhZ2UuDQo+ICsvLy8gRURLSUkgaW1wbGVtZW50 YXRpb24gZXh0ZW5zaW9uIGZsYWdzLCB1c2VkIHRvIGluZGljYXRlIHRoZSBkaXNwbGF5IHN0eWxl IGFuZCBiaXQgd2lkdGggZm9yIGJpdCBmaWxlZCBzdG9yYWdlLg0KPiAgLy8vIFR3byBoaWdoIGJp dHMgZm9yIGRpc3BsYXkgc3R5bGUgYW5kIHRoZSBsb3cgc2l4IGJpdHMgZm9yIGJpdCB3aWR0aC4N Cj4gIC8vLw0KPiAgI2RlZmluZSBFREtJSV9JRlJfRElTUExBWV9CSVQgICAgICAgICAgICAweEMw DQo+IGRpZmYgLS1naXQgYS9CYXNlVG9vbHMvU291cmNlL0MvSW5jbHVkZS9Db21tb24vUGlGaXJt d2FyZVZvbHVtZS5oIGIvQmFzZVRvb2xzL1NvdXJjZS9DL0luY2x1ZGUvQ29tbW9uL1BpRmlybXdh cmVWb2x1bWUuaA0KPiBpbmRleCBkY2M1MmNkNWU0Li5jNDk1YzFiMmZmIDEwMDY0NA0KPiAtLS0g YS9CYXNlVG9vbHMvU291cmNlL0MvSW5jbHVkZS9Db21tb24vUGlGaXJtd2FyZVZvbHVtZS5oDQo+ ICsrKyBiL0Jhc2VUb29scy9Tb3VyY2UvQy9JbmNsdWRlL0NvbW1vbi9QaUZpcm13YXJlVm9sdW1l LmgNCj4gQEAgLTE0OCw3ICsxNDgsNyBAQCB0eXBlZGVmIHN0cnVjdCB7DQo+ICAgIEVGSV9HVUlE ICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXRUeXBlOw0KPiANCj4gICAgLy8NCj4gLSAg Ly8gQW4gYXJyeSBvZiBieXRlcyBvZiBsZW5ndGggTGVuZ3RoLg0KPiArICAvLyBBbiBhcnJheSBv ZiBieXRlcyBvZiBsZW5ndGggTGVuZ3RoLg0KPiAgICAvLw0KPiAgICAvLyBVSU5UOCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgRGF0YVsxXTsNCj4gICAgLy8NCj4gZGlmZiAtLWdpdCBhL0Jh c2VUb29scy9Tb3VyY2UvQy9JbmNsdWRlL0NvbW1vbi9VZWZpTXVsdGlQaGFzZS5oIGIvQmFzZVRv b2xzL1NvdXJjZS9DL0luY2x1ZGUvQ29tbW9uL1VlZmlNdWx0aVBoYXNlLmgNCj4gaW5kZXggMDk4 MmRhNDk5OC4uMDc1M2RkMmU5ZCAxMDA2NDQNCj4gLS0tIGEvQmFzZVRvb2xzL1NvdXJjZS9DL0lu Y2x1ZGUvQ29tbW9uL1VlZmlNdWx0aVBoYXNlLmgNCj4gKysrIGIvQmFzZVRvb2xzL1NvdXJjZS9D L0luY2x1ZGUvQ29tbW9uL1VlZmlNdWx0aVBoYXNlLmgNCj4gQEAgLTIwMSw3ICsyMDEsNyBAQCB0 eXBlZGVmIHN0cnVjdCBfV0lOX0NFUlRJRklDQVRFX0VGSV9QS0NTMV8xNSB7DQo+ICAgIEVGSV9D RVJUX1RZUEVfUlNBMjA0OF9TSEEyNTYuIElmIHRoZSBhdHRyaWJ1dGUgc3BlY2lmaWVzDQo+ICAg IGF1dGhlbnRpY2F0ZWQgYWNjZXNzLCB0aGVuIHRoZSBEYXRhIGJ1ZmZlciBzaG91bGQgYmVnaW4g d2l0aCBhbg0KPiAgICBhdXRoZW50aWNhdGlvbiBkZXNjcmlwdG9yIHByaW9yIHRvIHRoZSBkYXRh IHBheWxvYWQgYW5kIERhdGFTaXplDQo+IC0gIHNob3VsZCByZWZsZWN0IHRoZSB0aGUgZGF0YS5h bmQgZGVzY3JpcHRvciBzaXplLiBUaGUgY2FsbGVyDQo+ICsgIHNob3VsZCByZWZsZWN0IHRoZSBk YXRhLmFuZCBkZXNjcmlwdG9yIHNpemUuIFRoZSBjYWxsZXINCj4gICAgc2hhbGwgZGlnZXN0IHRo ZSBNb25vdG9uaWMgQ291bnQgdmFsdWUgYW5kIHRoZSBhc3NvY2lhdGVkIGRhdGENCj4gICAgZm9y IHRoZSB2YXJpYWJsZSB1cGRhdGUgdXNpbmcgdGhlIFNIQS0yNTYgMS13YXkgaGFzaCBhbGdvcml0 aG0uDQo+ICAgIFRoZSBlbnN1aW5nIHRoZSAzMi1ieXRlIGRpZ2VzdCB3aWxsIGJlIHNpZ25lZCB1 c2luZyB0aGUgcHJpdmF0ZQ0KPiBkaWZmIC0tZ2l0IGEvQmFzZVRvb2xzL1NvdXJjZS9DL0luY2x1 ZGUvSWEzMi9Qcm9jZXNzb3JCaW5kLmggYi9CYXNlVG9vbHMvU291cmNlL0MvSW5jbHVkZS9JYTMy L1Byb2Nlc3NvckJpbmQuaA0KPiBpbmRleCA5NmFjNjkxZGYwLi43MmEyMmY3NjVjIDEwMDY0NA0K PiAtLS0gYS9CYXNlVG9vbHMvU291cmNlL0MvSW5jbHVkZS9JYTMyL1Byb2Nlc3NvckJpbmQuaA0K PiArKysgYi9CYXNlVG9vbHMvU291cmNlL0MvSW5jbHVkZS9JYTMyL1Byb2Nlc3NvckJpbmQuaA0K PiBAQCAtNjgsNyArNjgsNyBAQA0KPiAgICAjaWYgX01TQ19FWFRFTlNJT05TDQo+IA0KPiAgICAg IC8vDQo+IC0gICAgLy8gdXNlIE1pY3Jvc29mdCogQyBjb21wbGllciBkZXBlbmRlbnQgaW50ZWdl ciB3aWR0aCB0eXBlcw0KPiArICAgIC8vIHVzZSBNaWNyb3NvZnQqIEMgY29tcGlsZXIgZGVwZW5k ZW50IGludGVnZXIgd2lkdGggdHlwZXMNCj4gICAgICAvLw0KPiAgICAgIHR5cGVkZWYgdW5zaWdu ZWQgX19pbnQ2NCAgICBVSU5UNjQ7DQo+ICAgICAgdHlwZWRlZiBfX2ludDY0ICAgICAgICAgICAg IElOVDY0Ow0KPiBAQCAtMTM4LDcgKzEzOCw3IEBAIHR5cGVkZWYgSU5UMzIgICBJTlROOw0KPiAg Ly8NCj4gICNpZiBfTVNDX0VYVEVOU0lPTlMNCj4gICAgLy8NCj4gLSAgLy8gTWljcm9zb2Z0KiBj b21waWxlciByZXF1aXJlcyBfRUZJQVBJIHVzZWFnZSwgX19jZGVjbCBpcyBNaWNyb3NvZnQqIHNw ZWNpZmljIEMuDQo+ICsgIC8vIE1pY3Jvc29mdCogY29tcGlsZXIgcmVxdWlyZXMgX0VGSUFQSSB1 c2FnZSwgX19jZGVjbCBpcyBNaWNyb3NvZnQqIHNwZWNpZmljIEMuDQo+ICAgIC8vDQo+ICAgICNk ZWZpbmUgRUZJQVBJIF9fY2RlY2wNCj4gICNlbmRpZg0KPiBkaWZmIC0tZ2l0IGEvQmFzZVRvb2xz L1NvdXJjZS9DL0luY2x1ZGUvSW5kdXN0cnlTdGFuZGFyZC9BY3BpMl8wLmggYi9CYXNlVG9vbHMv U291cmNlL0MvSW5jbHVkZS9JbmR1c3RyeVN0YW5kYXJkL0FjcGkyXzAuaA0KPiBpbmRleCAzYTEw OWZmYTA4Li4zOTY5MWUxZDU1IDEwMDY0NA0KPiAtLS0gYS9CYXNlVG9vbHMvU291cmNlL0MvSW5j bHVkZS9JbmR1c3RyeVN0YW5kYXJkL0FjcGkyXzAuaA0KPiArKysgYi9CYXNlVG9vbHMvU291cmNl L0MvSW5jbHVkZS9JbmR1c3RyeVN0YW5kYXJkL0FjcGkyXzAuaA0KPiBAQCAtNDk3LDcgKzQ5Nyw3 IEBAIHR5cGVkZWYgc3RydWN0IHsNCj4gICNkZWZpbmUgRUZJX0FDUElfMl8wX1NZU1RFTV9MT0NB TElUWV9JTkZPUk1BVElPTl9UQUJMRV9TSUdOQVRVUkUgIDB4NTQ0OTRDNTMNCj4gDQo+ICAvLw0K PiAtLy8gIlNQQ1IiIFNlcmlhbCBQb3J0IENvbmNvbGUgUmVkaXJlY3Rpb24gVGFibGUNCj4gKy8v ICJTUENSIiBTZXJpYWwgUG9ydCBDb25zb2xlIFJlZGlyZWN0aW9uIFRhYmxlDQo+ICAvLw0KPiAg I2RlZmluZSBFRklfQUNQSV8yXzBfU0VSSUFMX1BPUlRfQ09OU09MRV9SRURJUkVDVElPTl9UQUJM RV9TSUdOQVRVUkUgIDB4NTI0MzUwNTMNCj4gDQo+IGRpZmYgLS1naXQgYS9CYXNlVG9vbHMvU291 cmNlL0MvSW5jbHVkZS9JbmR1c3RyeVN0YW5kYXJkL0FjcGkzXzAuaCBiL0Jhc2VUb29scy9Tb3Vy Y2UvQy9JbmNsdWRlL0luZHVzdHJ5U3RhbmRhcmQvQWNwaTNfMC5oDQo+IGluZGV4IGFkNjM1ZWZj NzQuLmFjNmRiYzU5MDUgMTAwNjQ0DQo+IC0tLSBhL0Jhc2VUb29scy9Tb3VyY2UvQy9JbmNsdWRl L0luZHVzdHJ5U3RhbmRhcmQvQWNwaTNfMC5oDQo+ICsrKyBiL0Jhc2VUb29scy9Tb3VyY2UvQy9J bmNsdWRlL0luZHVzdHJ5U3RhbmRhcmQvQWNwaTNfMC5oDQo+IEBAIC02NTAsNyArNjUwLDcgQEAg dHlwZWRlZiBzdHJ1Y3Qgew0KPiAgI2RlZmluZSBFRklfQUNQSV8zXzBfUENJX0VYUFJFU1NfTUVN T1JZX01BUFBFRF9DT05GSUdVUkFUSU9OX1NQQUNFX0JBU0VfQUREUkVTU19ERVNDUklQVElPTl9U QUJMRV9TSUdOQVRVUkUNCj4gMHg0NzQ2NDM0RA0KPiANCj4gIC8vDQo+IC0vLyAiU1BDUiIgU2Vy aWFsIFBvcnQgQ29uY29sZSBSZWRpcmVjdGlvbiBUYWJsZQ0KPiArLy8gIlNQQ1IiIFNlcmlhbCBQ b3J0IENvbnNvbGUgUmVkaXJlY3Rpb24gVGFibGUNCj4gIC8vDQo+ICAjZGVmaW5lIEVGSV9BQ1BJ XzNfMF9TRVJJQUxfUE9SVF9DT05TT0xFX1JFRElSRUNUSU9OX1RBQkxFX1NJR05BVFVSRSAgMHg1 MjQzNTA1Mw0KPiANCj4gZGlmZiAtLWdpdCBhL0Jhc2VUb29scy9Tb3VyY2UvQy9JbmNsdWRlL0lu ZHVzdHJ5U3RhbmRhcmQvcGNpMjIuaCBiL0Jhc2VUb29scy9Tb3VyY2UvQy9JbmNsdWRlL0luZHVz dHJ5U3RhbmRhcmQvcGNpMjIuaA0KPiBpbmRleCBkN2M1ZjBjODU4Li41MjE4ZDI0Y2U3IDEwMDY0 NA0KPiAtLS0gYS9CYXNlVG9vbHMvU291cmNlL0MvSW5jbHVkZS9JbmR1c3RyeVN0YW5kYXJkL3Bj aTIyLmgNCj4gKysrIGIvQmFzZVRvb2xzL1NvdXJjZS9DL0luY2x1ZGUvSW5kdXN0cnlTdGFuZGFy ZC9wY2kyMi5oDQo+IEBAIC05OCw3ICs5OCw3IEBAIHR5cGVkZWYgdW5pb24gew0KPiAgfSBQQ0lf VFlQRV9HRU5FUklDOw0KPiANCj4gIHR5cGVkZWYgc3RydWN0IHsNCj4gLSAgVUlOVDMyICBDYXJk QnVzU29ja2V0UmVnOyAvLyBDYXJkdXMgU29ja2V0L0V4Q0EgQmFzZQ0KPiArICBVSU5UMzIgIENh cmRCdXNTb2NrZXRSZWc7IC8vIENhcmRidXMgU29ja2V0L0V4Q0EgQmFzZQ0KPiAgICAvLyBBZGRy ZXNzIFJlZ2lzdGVyDQo+ICAgIC8vDQo+ICAgIFVJTlQxNiAgUmVzZXJ2ZWQ7DQo+IEBAIC0xOTcs NyArMTk3LDcgQEAgdHlwZWRlZiBzdHJ1Y3Qgew0KPiAgI2RlZmluZSBQQ0lfSUZfODI1OV9QSUMg ICAgICAgICAgICAgICAweDAwDQo+ICAjZGVmaW5lIFBDSV9JRl9JU0FfUElDICAgICAgICAgICAg ICAgIDB4MDENCj4gICNkZWZpbmUgUENJX0lGX0VJU0FfUElDICAgICAgICAgICAgICAgMHgwMg0K PiAtI2RlZmluZSBQQ0lfSUZfQVBJQ19DT05UUk9MTEVSICAgICAgICAweDEwIC8vIEkvTyBBUElD IGludGVycnVwdCBjb250cm9sbGVyICwgMzIgYnllIG5vbmUtcHJlZmVjdGFibGUgbWVtb3J5Lg0K PiArI2RlZmluZSBQQ0lfSUZfQVBJQ19DT05UUk9MTEVSICAgICAgICAweDEwIC8vIEkvTyBBUElD IGludGVycnVwdCBjb250cm9sbGVyICwgMzIgYnl0ZSBub25lLXByZWZldGNoYWJsZSBtZW1vcnku DQo+ICAjZGVmaW5lIFBDSV9JRl9BUElDX0NPTlRST0xMRVIyICAgICAgIDB4MjANCj4gICNkZWZp bmUgUENJX1NVQkNMQVNTX1RJTUVSICAgICAgICAgICAgMHgwMg0KPiAgI2RlZmluZSBQQ0lfSUZf ODI1NF9USU1FUiAgICAgICAgICAgICAweDAwDQo+IGRpZmYgLS1naXQgYS9CYXNlVG9vbHMvU291 cmNlL0MvSW5jbHVkZS9Qcm90b2NvbC9EZXZpY2VQYXRoVXRpbGl0aWVzLmggYi9CYXNlVG9vbHMv U291cmNlL0MvSW5jbHVkZS9Qcm90b2NvbC9EZXZpY2VQYXRoVXRpbGl0aWVzLmgNCj4gaW5kZXgg ZDA0NmM4NjQ1My4uZjI3ZmIxMTBiZSAxMDA2NDQNCj4gLS0tIGEvQmFzZVRvb2xzL1NvdXJjZS9D L0luY2x1ZGUvUHJvdG9jb2wvRGV2aWNlUGF0aFV0aWxpdGllcy5oDQo+ICsrKyBiL0Jhc2VUb29s cy9Tb3VyY2UvQy9JbmNsdWRlL1Byb3RvY29sL0RldmljZVBhdGhVdGlsaXRpZXMuaA0KPiBAQCAt MTI1LDcgKzEyNSw3IEBAIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCoNCj4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIElmIE5VTEwsIHRoZW4gdGhlIGluc3RhbmNlIHNpemUgaXMg bm90IG91dHB1dC4NCj4gDQo+ICAgIEByZXR2YWwgUG9pbnRlciAgICAgICAgICAgICAgICBBIHBv aW50ZXIgdG8gdGhlIGNvcHkgb2YgdGhlIGN1cnJlbnQgZGV2aWNlIHBhdGggaW5zdGFuY2UuDQo+ IC0gIEByZXR2YWwgTlVMTCAgICAgICAgICAgICAgICAgICBEZXZpY2VQYXRoSW5zdGFjZSB3YXMg TlVMTCBvbiBlbnRyeSBvciB0aGVyZSB3YXMgaW5zdWZmaWNpZW50IG1lbW9yeS4NCj4gKyAgQHJl dHZhbCBOVUxMICAgICAgICAgICAgICAgICAgIERldmljZVBhdGhJbnN0YW5jZSB3YXMgTlVMTCBv biBlbnRyeSBvciB0aGVyZSB3YXMgaW5zdWZmaWNpZW50IG1lbW9yeS4NCj4gDQo+ICAqKi8NCj4g IHR5cGVkZWYNCj4gZGlmZiAtLWdpdCBhL0Jhc2VUb29scy9Tb3VyY2UvQy9JbmNsdWRlL1Byb3Rv Y29sL0dyYXBoaWNzT3V0cHV0LmggYi9CYXNlVG9vbHMvU291cmNlL0MvSW5jbHVkZS9Qcm90b2Nv bC9HcmFwaGljc091dHB1dC5oDQo+IGluZGV4IGUwM2JkYTgwYzguLjBiZDYwYzBiNjUgMTAwNjQ0 DQo+IC0tLSBhL0Jhc2VUb29scy9Tb3VyY2UvQy9JbmNsdWRlL1Byb3RvY29sL0dyYXBoaWNzT3V0 cHV0LmgNCj4gKysrIGIvQmFzZVRvb2xzL1NvdXJjZS9DL0luY2x1ZGUvUHJvdG9jb2wvR3JhcGhp Y3NPdXRwdXQuaA0KPiBAQCAtMTQ5LDEyICsxNDksMTIgQEAgdHlwZWRlZiBlbnVtIHsNCj4gICAg QHBhcmFtICBEZXN0aW5hdGlvblggWCBjb29yZGluYXRlIG9mIGRlc3RpbmF0aW9uIGZvciB0aGUg Qmx0QnVmZmVyLg0KPiAgICBAcGFyYW0gIERlc3RpbmF0aW9uWSBZIGNvb3JkaW5hdGUgb2YgZGVz dGluYXRpb24gZm9yIHRoZSBCbHRCdWZmZXIuDQo+ICAgIEBwYXJhbSAgV2lkdGggICAgICAgIFdp ZHRoIG9mIHJlY3RhbmdsZSBpbiBCbHRCdWZmZXIgaW4gcGl4ZWxzLg0KPiAtICBAcGFyYW0gIEhl aWdodCAgICAgICBIaWdodCBvZiByZWN0YW5nbGUgaW4gQmx0QnVmZmVyIGluIHBpeGVscy4NCj4g KyAgQHBhcmFtICBIZWlnaHQgICAgICAgSGVpZ2h0IG9mIHJlY3RhbmdsZSBpbiBCbHRCdWZmZXIg aW4gcGl4ZWxzLg0KPiAgICBAcGFyYW0gIERlbHRhICAgICAgICBPUFRJT05BTA0KPiANCj4gICAg QHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhlIEJsdCBvcGVyYXRpb24gY29tcGxldGVk Lg0KPiAgICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiBCbHRPcGVyYXRpb24gaXMgbm90 IHZhbGlkLg0KPiAtICBAcmV0dmFsIEVGSV9ERVZJQ0VfRVJST1IgICAgICBBIGhhcmR3YXJlIGVy cm9yIG9jY3VyZWQgd3JpdHRpbmcgdG8gdGhlIHZpZGVvIGJ1ZmZlci4NCj4gKyAgQHJldHZhbCBF RklfREVWSUNFX0VSUk9SICAgICAgQSBoYXJkd2FyZSBlcnJvciBvY2N1cnJlZCB3cml0aW5nIHRv IHRoZSB2aWRlbyBidWZmZXIuDQo+IA0KPiAgKiovDQo+ICB0eXBlZGVmDQo+IGRpZmYgLS1naXQg YS9CYXNlVG9vbHMvU291cmNlL0MvSW5jbHVkZS9Qcm90b2NvbC9HdWlkZWRTZWN0aW9uRXh0cmFj dGlvbi5oDQo+IGIvQmFzZVRvb2xzL1NvdXJjZS9DL0luY2x1ZGUvUHJvdG9jb2wvR3VpZGVkU2Vj dGlvbkV4dHJhY3Rpb24uaA0KPiBpbmRleCA4M2Q3NDY2NTg2Li5jYjllYTEyNGI5IDEwMDY0NA0K PiAtLS0gYS9CYXNlVG9vbHMvU291cmNlL0MvSW5jbHVkZS9Qcm90b2NvbC9HdWlkZWRTZWN0aW9u RXh0cmFjdGlvbi5oDQo+ICsrKyBiL0Jhc2VUb29scy9Tb3VyY2UvQy9JbmNsdWRlL1Byb3RvY29s L0d1aWRlZFNlY3Rpb25FeHRyYWN0aW9uLmgNCj4gQEAgLTI1LDcgKzI1LDcgQEANCj4gICNkZWZp bmUgX19FRklfR1VJREVEX1NFQ1RJT05fRVhUUkFDVElPTl9QUk9UT0NPTF9IX18NCj4gDQo+ICAv Lw0KPiAtLy8gRm9yd2FyZCByZWZlcmVuY2UgZm9yIHB1cmUgQU5TSSBjb21wYXRhYmlsaXR5DQo+ ICsvLyBGb3J3YXJkIHJlZmVyZW5jZSBmb3IgcHVyZSBBTlNJIGNvbXBhdGliaWxpdHkNCj4gDQo+ ICB0eXBlZGVmIHN0cnVjdCBfRUZJX0dVSURFRF9TRUNUSU9OX0VYVFJBQ1RJT05fUFJPVE9DT0wg RUZJX0dVSURFRF9TRUNUSU9OX0VYVFJBQ1RJT05fUFJPVE9DT0w7DQo+IA0KPiBkaWZmIC0tZ2l0 IGEvQmFzZVRvb2xzL1NvdXJjZS9DL0luY2x1ZGUvUHJvdG9jb2wvVWdhRHJhdy5oIGIvQmFzZVRv b2xzL1NvdXJjZS9DL0luY2x1ZGUvUHJvdG9jb2wvVWdhRHJhdy5oDQo+IGluZGV4IGE4OWE4Njdh YzMuLjBlMzNiYWE0ZjcgMTAwNjQ0DQo+IC0tLSBhL0Jhc2VUb29scy9Tb3VyY2UvQy9JbmNsdWRl L1Byb3RvY29sL1VnYURyYXcuaA0KPiArKysgYi9CYXNlVG9vbHMvU291cmNlL0MvSW5jbHVkZS9Q cm90b2NvbC9VZ2FEcmF3LmgNCj4gQEAgLTEzMywxMiArMTMzLDEyIEBAIHR5cGVkZWYgZW51bSB7 DQo+ICAgICAgQHBhcmFtW2luXSBEZXN0aW5hdGlvblggIC0gWCBjb29yZGluYXRlIG9mIGRlc3Rp bmF0aW9uIGZvciB0aGUgQmx0QnVmZmVyLg0KPiAgICAgIEBwYXJhbVtpbl0gRGVzdGluYXRpb25Z ICAtIFkgY29vcmRpbmF0ZSBvZiBkZXN0aW5hdGlvbiBmb3IgdGhlIEJsdEJ1ZmZlci4NCj4gICAg ICBAcGFyYW1baW5dIFdpZHRoICAgICAgICAgLSBXaWR0aCBvZiByZWN0YW5nbGUgaW4gQmx0QnVm ZmVyIGluIHBpeGVscy4NCj4gLSAgICBAcGFyYW1baW5dIEhlaWdodCAgICAgICAgLSBIaWdodCBv ZiByZWN0YW5nbGUgaW4gQmx0QnVmZmVyIGluIHBpeGVscy4NCj4gKyAgICBAcGFyYW1baW5dIEhl aWdodCAgICAgICAgLSBIZWlnaHQgb2YgcmVjdGFuZ2xlIGluIEJsdEJ1ZmZlciBpbiBwaXhlbHMu DQo+ICAgICAgQHBhcmFtW2luXSBEZWx0YSAgICAgICAgIC0gT1BUSU9OQUwNCj4gDQo+ICAgICAg QHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgLSBUaGUgQmx0IG9wZXJhdGlvbiBjb21wbGV0 ZWQuDQo+ICAgICAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgLSBCbHRPcGVyYXRpb24g aXMgbm90IHZhbGlkLg0KPiAtICAgIEByZXR2YWwgRUZJX0RFVklDRV9FUlJPUiAgICAgIC0gQSBo YXJkd2FyZSBlcnJvciBvY2N1cmVkIHdyaXR0aW5nIHRvIHRoZSB2aWRlbyBidWZmZXIuDQo+ICsg ICAgQHJldHZhbCBFRklfREVWSUNFX0VSUk9SICAgICAgLSBBIGhhcmR3YXJlIGVycm9yIG9jY3Vy cmVkIHdyaXRpbmcgdG8gdGhlIHZpZGVvIGJ1ZmZlci4NCj4gDQo+ICAtLSovDQo+ICB0eXBlZGVm DQo+IGRpZmYgLS1naXQgYS9CYXNlVG9vbHMvU291cmNlL0MvSW5jbHVkZS9YNjQvUHJvY2Vzc29y QmluZC5oIGIvQmFzZVRvb2xzL1NvdXJjZS9DL0luY2x1ZGUvWDY0L1Byb2Nlc3NvckJpbmQuaA0K PiBpbmRleCA5ODc3Mzg1MDgzLi5kYTVjZDlhY2Q0IDEwMDY0NA0KPiAtLS0gYS9CYXNlVG9vbHMv U291cmNlL0MvSW5jbHVkZS9YNjQvUHJvY2Vzc29yQmluZC5oDQo+ICsrKyBiL0Jhc2VUb29scy9T b3VyY2UvQy9JbmNsdWRlL1g2NC9Qcm9jZXNzb3JCaW5kLmgNCj4gQEAgLTcxLDcgKzcxLDcgQEAN Cj4gDQo+IA0KPiAgICAgIC8vDQo+IC0gICAgLy8gdXNlIE1pY3Jvc29mdCBDIGNvbXBsaWVyIGRl cGVuZGVudCBpbnRlZ2VyIHdpZHRoIHR5cGVzDQo+ICsgICAgLy8gdXNlIE1pY3Jvc29mdCBDIGNv bXBpbGVyIGRlcGVuZGVudCBpbnRlZ2VyIHdpZHRoIHR5cGVzDQo+ICAgICAgLy8NCj4gICAgICB0 eXBlZGVmIHVuc2lnbmVkIF9faW50NjQgICAgVUlOVDY0Ow0KPiAgICAgIHR5cGVkZWYgX19pbnQ2 NCAgICAgICAgICAgICBJTlQ2NDsNCj4gQEAgLTE1MywxNyArMTUzLDE3IEBAIHR5cGVkZWYgSU5U NjQgICBJTlROOw0KPiAgLy8NCj4gIC8vIE1vZGlmaWVyIHRvIGVuc3VyZSB0aGF0IGFsbCBwcm90 b2NvbCBtZW1iZXIgZnVuY3Rpb25zIGFuZCBFRkkgaW50cmluc2ljcw0KPiAgLy8gdXNlIHRoZSBj b3JyZWN0IEMgY2FsbGluZyBjb252ZW50aW9uLiBBbGwgcHJvdG9jb2wgbWVtYmVyIGZ1bmN0aW9u cyBhbmQNCj4gLS8vIEVGSSBpbnRyaW5zaWNzIGFyZSByZXF1aXJlZCB0byBtb2RpZnkgdGhpZXIg bWVtYmVyIGZ1bmN0aW9ucyB3aXRoIEVGSUFQSS4NCj4gKy8vIEVGSSBpbnRyaW5zaWNzIGFyZSBy ZXF1aXJlZCB0byBtb2RpZnkgdGhlaXIgbWVtYmVyIGZ1bmN0aW9ucyB3aXRoIEVGSUFQSS4NCj4g IC8vDQo+ICAjaWYgX01TQ19FWFRFTlNJT05TDQo+ICAgIC8vLw0KPiAtICAvLy8gRGVmaW5lIHRo ZSBzdGFuZGFyZCBjYWxsaW5nIGNvbnZlbnRpb24gcmVndWFyZGxlc3Mgb2Ygb3B0aW1pemF0aW9u IGxldmVsLg0KPiArICAvLy8gRGVmaW5lIHRoZSBzdGFuZGFyZCBjYWxsaW5nIGNvbnZlbnRpb24g cmVnYXJkbGVzcyBvZiBvcHRpbWl6YXRpb24gbGV2ZWwuDQo+ICAgIC8vLyBfX2NkZWNsIGlzIE1p Y3Jvc29mdCogc3BlY2lmaWMgQyBleHRlbnNpb24uDQo+ICAgIC8vLw0KPiAgICAjZGVmaW5lIEVG SUFQSSBfX2NkZWNsDQo+ICAjZWxpZiBfX0dOVUNfXw0KPiAgICAvLy8NCj4gLSAgLy8vIERlZmlu ZSB0aGUgc3RhbmRhcmQgY2FsbGluZyBjb252ZW50aW9uIHJlZ3VhcmRsZXNzIG9mIG9wdGltaXph dGlvbiBsZXZlbC4NCj4gKyAgLy8vIERlZmluZSB0aGUgc3RhbmRhcmQgY2FsbGluZyBjb252ZW50 aW9uIHJlZ2FyZGxlc3Mgb2Ygb3B0aW1pemF0aW9uIGxldmVsLg0KPiAgICAvLy8gZWZpZGVjbCBp cyBhbiBleHRlbnNpb24gdG8gR0NDIHRoYXQgc3VwcG9ydHMgdGhlIGRpZmZlcm5lY2UgYmV0d2Vl biB4NjQNCj4gICAgLy8vIEdDQyBBQkkgYW5kIHg2NCBNaWNyb3NvZnQqIEFCSS4gRUZJIGlzIGNs b3NlciB0byB0aGUgTWljcm9zb2Z0KiBBQkkgYW5kDQo+ICAgIC8vLyBFRklBUEkgbWFrZXMgc3Vy ZSB0aGUgcmlnaHQgQUJJIGlzIHVzZWQgZm9yIHB1YmxpYyBpbnRlcmZhY2VzLg0KPiBkaWZmIC0t Z2l0IGEvQmFzZVRvb2xzL1NvdXJjZS9DL0x6bWFDb21wcmVzcy9TZGsvQy9Mem1hRW5jLmggYi9C YXNlVG9vbHMvU291cmNlL0MvTHptYUNvbXByZXNzL1Nkay9DL0x6bWFFbmMuaA0KPiBpbmRleCBj OTkzOGYwNGJjLi4wZWM5NWI1MGMzIDEwMDY0NA0KPiAtLS0gYS9CYXNlVG9vbHMvU291cmNlL0Mv THptYUNvbXByZXNzL1Nkay9DL0x6bWFFbmMuaA0KPiArKysgYi9CYXNlVG9vbHMvU291cmNlL0Mv THptYUNvbXByZXNzL1Nkay9DL0x6bWFFbmMuaA0KPiBAQCAtNDIsNyArNDIsNyBAQCBVSW50MzIg THptYUVuY1Byb3BzX0dldERpY3RTaXplKGNvbnN0IENMem1hRW5jUHJvcHMgKnByb3BzMik7DQo+ ICBTUmVzOg0KPiAgICBTWl9PSyAgICAgICAgICAgLSBPSw0KPiAgICBTWl9FUlJPUl9NRU0gICAg LSBNZW1vcnkgYWxsb2NhdGlvbiBlcnJvcg0KPiAtICBTWl9FUlJPUl9QQVJBTSAgLSBJbmNvcnJl Y3QgcGFyYW1hdGVyIGluIHByb3BzDQo+ICsgIFNaX0VSUk9SX1BBUkFNICAtIEluY29ycmVjdCBw YXJhbWV0ZXIgaW4gcHJvcHMNCj4gICAgU1pfRVJST1JfV1JJVEUgIC0gSVNlcU91dFN0cmVhbSB3 cml0ZSBjYWxsYmFjayBlcnJvcg0KPiAgICBTWl9FUlJPUl9PVVRQVVRfRU9GIC0gb3V0cHV0IGJ1 ZmZlciBvdmVyZmxvdyAtIHZlcnNpb24gd2l0aCAoQnl0ZSAqKSBvdXRwdXQNCj4gICAgU1pfRVJS T1JfUFJPR1JFU1MgLSBzb21lIGJyZWFrIGZyb20gcHJvZ3Jlc3MgY2FsbGJhY2sNCj4gZGlmZiAt LWdpdCBhL0Jhc2VUb29scy9Tb3VyY2UvQy9Mem1hQ29tcHJlc3MvU2RrL0RPQy9sem1hLWhpc3Rv cnkudHh0IGIvQmFzZVRvb2xzL1NvdXJjZS9DL0x6bWFDb21wcmVzcy9TZGsvRE9DL2x6bWEtaGlz dG9yeS50eHQNCj4gaW5kZXggZjQ3OTMyNjRhNS4uZDc0MjZkMzhhNCAxMDA2NDQNCj4gLS0tIGEv QmFzZVRvb2xzL1NvdXJjZS9DL0x6bWFDb21wcmVzcy9TZGsvRE9DL2x6bWEtaGlzdG9yeS50eHQN Cj4gKysrIGIvQmFzZVRvb2xzL1NvdXJjZS9DL0x6bWFDb21wcmVzcy9TZGsvRE9DL2x6bWEtaGlz dG9yeS50eHQNCj4gQEAgLTE0Miw3ICsxNDIsNyBAQCBISVNUT1JZIG9mIHRoZSBMWk1BIFNESw0K PiAgOS4zNSBiZXRhICAgICAgMjAxNC0xMi0wNw0KPiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQ0KPiAgLSA3enIuZXhlIG5vdyBzdXBwb3J0IEFFUyBlbmNyeXB0aW9uLg0KPiAtLSBTRlggbXVk dWxlcyB3ZXJlIGFkZGVkIHRvIExaTUEgU0RLDQo+ICstIFNGWCBtb2R1bGVzIHdlcmUgYWRkZWQg dG8gTFpNQSBTREsNCj4gIC0gU29tZSBidWdzIHdlcmUgZml4ZWQuDQo+IA0KPiANCj4gZGlmZiAt LWdpdCBhL0Jhc2VUb29scy9Tb3VyY2UvQy9Mem1hQ29tcHJlc3MvU2RrL0RPQy9sem1hLXNkay50 eHQgYi9CYXNlVG9vbHMvU291cmNlL0MvTHptYUNvbXByZXNzL1Nkay9ET0MvbHptYS1zZGsudHh0 DQo+IGluZGV4IDAxNTIxZTkzOTguLmEzZGViMjA5NDMgMTAwNjQ0DQo+IC0tLSBhL0Jhc2VUb29s cy9Tb3VyY2UvQy9Mem1hQ29tcHJlc3MvU2RrL0RPQy9sem1hLXNkay50eHQNCj4gKysrIGIvQmFz ZVRvb2xzL1NvdXJjZS9DL0x6bWFDb21wcmVzcy9TZGsvRE9DL2x6bWEtc2RrLnR4dA0KPiBAQCAt NTQsNyArNTQsNyBAQCBMWk1BIFNESyBDb250ZW50cw0KPiAgICAgIC0gQyAgICAgICAgICAgICAg ICAgICAgIC0gc21hbGwgU0ZYcyBmb3IgaW5zdGFsbGVycyAoN3ogZGVjb21wcmVzc2lvbikNCj4g ICAgICAtICAgICBDKysgICAgICAgICAgICAgICAtIFNGWHMgYW5kIFNGWHMgZm9yIGluc3RhbGxl cnMgKDd6IGRlY29tcHJlc3Npb24pDQo+IA0KPiAtICBQcmVjb21pbGVkIGJpbmFyaWVzOg0KPiAr ICBQcmVjb21waWxlZCBiaW5hcmllczoNCj4gDQo+ICAgICAgLSBjb25zb2xlIHByb2dyYW1zIGZv ciBsem1hIC8gN3ogLyB4eiBjb21wcmVzc2lvbiBhbmQgZGVjb21wcmVzc2lvbg0KPiAgICAgIC0g U0ZYIG1vZHVsZXMgZm9yIGluc3RhbGxlcnMuDQo+IGRpZmYgLS1naXQgYS9CYXNlVG9vbHMvU291 cmNlL0MvU3BsaXQvU3BsaXQuYyBiL0Jhc2VUb29scy9Tb3VyY2UvQy9TcGxpdC9TcGxpdC5jDQo+ IGluZGV4IDZiMGEzMjM3NmQuLmZmNGE0MzM1NDEgMTAwNjQ0DQo+IC0tLSBhL0Jhc2VUb29scy9T b3VyY2UvQy9TcGxpdC9TcGxpdC5jDQo+ICsrKyBiL0Jhc2VUb29scy9Tb3VyY2UvQy9TcGxpdC9T cGxpdC5jDQo+IEBAIC0zMjgsNyArMzI4LDcgQEAgUmV0dXJuczoNCj4gICAgICAgIGlmIChzdHJs ZW4oYXJndlswXSkgPiAyKSB7DQo+ICAgICAgICAgIFN0YXR1cyA9IENvdW50VmVyYm9zZUxldmVs ICgmYXJndlswXVsyXSwgc3RybGVuKGFyZ3ZbMF0pIC0gMiwgJlZlcmJvc2VMZXZlbCk7DQo+ICAg ICAgICAgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gLSAgICAgICAgICBFcnJvciAoTlVM TCwgMCwgMHgxMDAzLCBOVUxMLCAiJXMgaXMgaW52YWlsZCBwYXJhbWV0ZXIhIiwgYXJndlswXSk7 DQo+ICsgICAgICAgICAgRXJyb3IgKE5VTEwsIDAsIDB4MTAwMywgTlVMTCwgIiVzIGlzIGludmFs aWQgcGFyYW1ldGVyISIsIGFyZ3ZbMF0pOw0KPiAgICAgICAgICAgIHJldHVybiBTVEFUVVNfRVJS T1I7DQo+ICAgICAgICAgIH0NCj4gICAgICAgIH0NCj4gQEAgLTM1MSw3ICszNTEsNyBAQCBSZXR1 cm5zOg0KPiAgICAgIC8vDQo+ICAgICAgLy8gRG9uJ3QgcmVjb2duaXplIHRoZSBwYXJhbWV0ZXIu DQo+ICAgICAgLy8NCj4gLSAgICBFcnJvciAoTlVMTCwgMCwgMHgxMDAzLCBOVUxMLCAiJXMgaXMg aW52YWlsZCBwYXJhbWV0ZXIhIiwgYXJndlswXSk7DQo+ICsgICAgRXJyb3IgKE5VTEwsIDAsIDB4 MTAwMywgTlVMTCwgIiVzIGlzIGludmFsaWQgcGFyYW1ldGVyISIsIGFyZ3ZbMF0pOw0KPiAgICAg IHJldHVybiBTVEFUVVNfRVJST1I7DQo+ICAgIH0NCj4gDQo+IGRpZmYgLS1naXQgYS9CYXNlVG9v bHMvU291cmNlL0MvVGlhbm9Db21wcmVzcy9UaWFub0NvbXByZXNzLmMgYi9CYXNlVG9vbHMvU291 cmNlL0MvVGlhbm9Db21wcmVzcy9UaWFub0NvbXByZXNzLmMNCj4gaW5kZXggYTc3ZjY3OThlYy4u MjliMTFjNTk3ZiAxMDA2NDQNCj4gLS0tIGEvQmFzZVRvb2xzL1NvdXJjZS9DL1RpYW5vQ29tcHJl c3MvVGlhbm9Db21wcmVzcy5jDQo+ICsrKyBiL0Jhc2VUb29scy9Tb3VyY2UvQy9UaWFub0NvbXBy ZXNzL1RpYW5vQ29tcHJlc3MuYw0KPiBAQCAtMjI5LDcgKzIyOSw3IEBAIFJvdXRpbmUgRGVzY3Jp cHRpb246DQo+IA0KPiAgICBBbGxvY2F0ZSBtZW1vcnkgc3BhY2VzIGZvciBkYXRhIHN0cnVjdHVy ZXMgdXNlZCBpbiBjb21wcmVzc2lvbiBwcm9jZXNzDQo+IA0KPiAtQXJnZW1lbnRzOg0KPiArQXJn dW1lbnRzOg0KPiAgICBWT0lEDQo+IA0KPiAgUmV0dXJuczoNCj4gQEAgLTUwNyw3ICs1MDcsNyBA QCBSZXR1cm5zOiAoVk9JRCkNCj4gICAgaWYgKG1NYXRjaExlbiA+PSA0KSB7DQo+ICAgICAgLy8N Cj4gICAgICAvLyBXZSBoYXZlIGp1c3QgZ290IGEgbG9uZyBtYXRjaCwgdGhlIHRhcmdldCB0cmVl DQo+IC0gICAgLy8gY2FuIGJlIGxvY2F0ZWQgYnkgTWF0Y2hQb3MgKyAxLiBUcmF2ZXNlIHRoZSB0 cmVlDQo+ICsgICAgLy8gY2FuIGJlIGxvY2F0ZWQgYnkgTWF0Y2hQb3MgKyAxLiBUcmF2ZXJzZSB0 aGUgdHJlZQ0KPiAgICAgIC8vIGZyb20gYm90dG9tIHVwIHRvIGdldCB0byBhIHByb3BlciBzdGFy dGluZyBwb2ludC4NCj4gICAgICAvLyBUaGUgdXNhZ2Ugb2YgUEVSQ19GTEFHIGVuc3VyZXMgcHJv cGVyIG5vZGUgZGVsZXRpb24NCj4gICAgICAvLyBpbiBEZWxldGVOb2RlKCkgbGF0ZXIuDQo+IEBA IC0xNzA4LDcgKzE3MDgsNyBAQCBSZXR1cm5zOg0KPiAgICBmcHJpbnRmIChzdGRvdXQsICIgIC0t dWVmaVxuXA0KPiAgICAgICAgICAgICAgRW5hYmxlIFVlZmlDb21wcmVzcywgdXNlIFRpYW5vQ29t cHJlc3Mgd2hlbiB3aXRob3V0IHRoaXMgb3B0aW9uXG4iKTsNCj4gICAgZnByaW50ZiAoc3Rkb3V0 LCAiICAtbyBGaWxlTmFtZSwgLS1vdXRwdXQgRmlsZU5hbWVcblwNCj4gLSAgICAgICAgICAgIEZp bGUgd2lsbCBiZSBjcmVhdGVkIHRvIHN0b3JlIHRoZSBvdXB1dCBjb250ZW50LlxuIik7DQo+ICsg ICAgICAgICAgICBGaWxlIHdpbGwgYmUgY3JlYXRlZCB0byBzdG9yZSB0aGUgb3V0cHV0IGNvbnRl bnQuXG4iKTsNCj4gICAgZnByaW50ZiAoc3Rkb3V0LCAiICAtdiwgLS12ZXJib3NlXG5cDQo+ICAg ICAgICAgICAgIFR1cm4gb24gdmVyYm9zZSBvdXRwdXQgd2l0aCBpbmZvcm1hdGlvbmFsIG1lc3Nh Z2VzLlxuIik7DQo+ICAgIGZwcmludGYgKHN0ZG91dCwgIiAgLXEsIC0tcXVpZXRcblwNCj4gQEAg LTI3MTQsMTEgKzI3MTQsMTEgQEAgQXJndW1lbnRzOg0KPiAgICBTb3VyY2UgICAgICAgICAgLSBU aGUgc291cmNlIGJ1ZmZlciBjb250YWluaW5nIHRoZSBjb21wcmVzc2VkIGRhdGEuDQo+ICAgIERl c3RpbmF0aW9uICAgICAtIFRoZSBkZXN0aW5hdGlvbiBidWZmZXIgdG8gc3RvcmUgdGhlIGRlY29t cHJlc3NlZCBkYXRhDQo+ICAgIFNjcmF0Y2ggICAgICAgICAtIFRoZSBidWZmZXIgdXNlZCBpbnRl cm5hbGx5IGJ5IHRoZSBkZWNvbXByZXNzIHJvdXRpbmUuIFRoaXMgIGJ1ZmZlciBpcyBuZWVkZWQg dG8gc3RvcmUgaW50ZXJtZWRpYXRlIGRhdGEuDQo+IC0gIFZlcnNpb24gICAgICAgICAtIDEgZm9y IEVGSTEuMSBEZWNvbXByZXNzIGFsZ29ydXRobSwgMiBmb3IgVGlhbm8gRGVjb21wcmVzcyBhbGdv cml0aG0NCj4gKyAgVmVyc2lvbiAgICAgICAgIC0gMSBmb3IgRUZJMS4xIERlY29tcHJlc3MgYWxn b3JpdGhtLCAyIGZvciBUaWFubyBEZWNvbXByZXNzIGFsZ29yaXRobQ0KPiANCj4gIFJldHVybnM6 DQo+IA0KPiAtICBSRVRVUk5fU1VDQ0VTUyAgICAgICAgICAgLSBEZWNvbXByZXNzaW9uIGlzIHN1 Y2Nlc3NmdWxsDQo+ICsgIFJFVFVSTl9TVUNDRVNTICAgICAgICAgICAtIERlY29tcHJlc3Npb24g aXMgc3VjY2Vzc2Z1bA0KPiAgICBSRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIgLSBUaGUgc291cmNl IGRhdGEgaXMgY29ycnVwdGVkDQo+IA0KPiAgLS0qLw0KPiBkaWZmIC0tZ2l0IGEvQmFzZVRvb2xz L1NvdXJjZS9DL1ZmckNvbXBpbGUvUGNjdHMvQ0hBTkdFU19GUk9NXzEzMy50eHQNCj4gYi9CYXNl VG9vbHMvU291cmNlL0MvVmZyQ29tcGlsZS9QY2N0cy9DSEFOR0VTX0ZST01fMTMzLnR4dA0KPiBp bmRleCAyMTI4YzRmZjI1Li4wODZhZjUwOTdmIDEwMDY0NA0KPiAtLS0gYS9CYXNlVG9vbHMvU291 cmNlL0MvVmZyQ29tcGlsZS9QY2N0cy9DSEFOR0VTX0ZST01fMTMzLnR4dA0KPiArKysgYi9CYXNl VG9vbHMvU291cmNlL0MvVmZyQ29tcGlsZS9QY2N0cy9DSEFOR0VTX0ZST01fMTMzLnR4dA0KPiBA QCAtNDAsNyArNDAsNyBAQCBMaXN0IG9mIEltcGxlbWVudGVkIEZpeGVzIGFuZCBDaGFuZ2VzIGZv ciBNYWludGVuYW5jZSBSZWxlYXNlcyBvZiBQQ0NUUw0KPiAgIzMwOS4gKENoYW5nZWQgaW4gTVIz MikgUmVuYW1lZCBiYXNlTmFtZSBiZWNhdXNlIG9mIFZNUyBuYW1lIGNvbmZsaWN0DQo+IA0KPiAg ICAgIFJlbmFtZWQgYmFzZU5hbWUgdG8gcGNjdHNCYXNlTmFtZSB0byBhdm9pZCBsaWJyYXJ5IG5h bWUgY29uZmxpY3Qgd2l0aA0KPiAtICAgIFZNUyBsaWJyYXJ5IHJvdXRpbmUuICBSZXBvcnRlZCBi eSBKZWFuLUZyYW7DgW9pcyBQSeKAplJPTk5FLg0KPiArICAgIFZNUyBsaWJyYXJ5IHJvdXRpbmUu ICBSZXBvcnRlZCBieSBKZWFuLUZyYW7DlMO4zqlvaXMgUEnDlMO4zqlST05ORS4NCj4gDQo+ICAj MzA4LiAoQ2hhbmdlZCBpbiBNUjMyKSBVc2VkICJ0ZW1wbGF0ZSIgYXMgbmFtZSBvZiBmb3JtYWwg aW4gQyByb3V0aW5lDQo+IA0KPiBAQCAtMjEwLDcgKzIxMCw3IEBAIExpc3Qgb2YgSW1wbGVtZW50 ZWQgRml4ZXMgYW5kIENoYW5nZXMgZm9yIE1haW50ZW5hbmNlIFJlbGVhc2VzIG9mIFBDQ1RTDQo+ IA0KPiAgICAgIFNvcmNlcmVyIGdlbmVyYXRlZCBjb2RlIG1heSBjb250YWluIG1hbnkgY2FsbHMg dG8gX3QtPnR5cGUoKSBpbiBhDQo+ICAgICAgc2luZ2xlIHN0YXRlbWVudC4gIFRoaXMgY2hhbmdl IGludHJvZHVjZXMgYSB0ZW1wb3JhcnkgdmFyaWFibGUNCj4gLSAgICB0byBlbGltaW5hdGUgdW5u bmVjZXNhcnkgZnVuY3Rpb24gY2FsbHMuDQo+ICsgICAgdG8gZWxpbWluYXRlIHVubmVjZXNhcnkg ZnVuY3Rpb24gY2FsbHMuDQo+IA0KPiAgICAgIENoYW5nZSBpbXBsZW1lbnRlZCBieSBUb20gTW9s dGVubyAodGltIHZpZGVvc2NyaXB0LmNvbSkuDQo+IA0KPiBAQCAtNTI1LDExICs1MjUsMTEgQEAg TGlzdCBvZiBJbXBsZW1lbnRlZCBGaXhlcyBhbmQgQ2hhbmdlcyBmb3IgTWFpbnRlbmFuY2UgUmVs ZWFzZXMgb2YgUENDVFMNCj4gICMyNzUuIChDaGFuZ2VkIGluIE1SMjMpIEFkZGl0aW9uIG9mIC1u b3B1cmlmeSBvcHRpb24gdG8gYW50bHINCj4gDQo+ICAgICAgQSBsb25nIHRpbWUgYWdvIHRoZSBQ VVJJRlkgbWFjcm8gd2FzIGludHJvZHVjZWQgdG8gaW5pdGlhbGl6ZQ0KPiAtICAgIHJldHVybiB2 YWx1ZSBhcmd1bWVudHMgYW5kIGdldCByaWQgb2YgYW5ueWluZyBtZXNzYWdlcyBmcm9tIHByb2dy YW0NCj4gLSAgICB0aGF0IGNoZWNrZWQgZm9yIHVuaXRpYWxpemVkIHZhcmlhYmxlcy4NCj4gKyAg ICByZXR1cm4gdmFsdWUgYXJndW1lbnRzIGFuZCBnZXQgcmlkIG9mIGFubm95aW5nIG1lc3NhZ2Vz IGZyb20gcHJvZ3JhbQ0KPiArICAgIHRoYXQgY2hlY2tlZCBmb3IgdW5pbml0aWFsaXplZCB2YXJp YWJsZXMuDQo+IA0KPiAgICAgIFRoaXMgaGFzIGNhdXNlZCBzaWduaWZpY2FudCBhbm5veWFuY2Ug Zm9yIEMrKyB1c2VycyB0aGF0IGhhZA0KPiAtICAgIGNsYXNzZXMgd2l0aCB2aXJ0dWFsIGZ1bmN0 aW9ucyBvciBub24tdHJpdmlhbCBjb250cnVjdG9ycyBiZWNhdXNlDQo+ICsgICAgY2xhc3NlcyB3 aXRoIHZpcnR1YWwgZnVuY3Rpb25zIG9yIG5vbi10cml2aWFsIGNvbnN0cnVjdG9ycyBiZWNhdXNl DQo+ICAgICAgaXQgd291bGQgemVybyB0aGUgb2JqZWN0LCBpbmNsdWRpbmcgdGhlIHBvaW50ZXIg dG8gdGhlIHZpcnR1YWwNCj4gICAgICBmdW5jdGlvbiB0YWJsZS4gIFRoaXMgY291bGQgYmUgZGVm ZWF0ZWQgYnkgcmVkZWZpbmluZw0KPiAgICAgIHRoZSBQVVJJRlkgbWFjcm8gdG8gYmUgZW1wdHks IGJ1dCBpdCB3YXMgYSBjb25zdGFudCBzdXJwcmlzZSB0bw0KPiBAQCAtNjU2LDEyICs2NTYsMTIg QEAgTGlzdCBvZiBJbXBsZW1lbnRlZCBGaXhlcyBhbmQgQ2hhbmdlcyBmb3IgTWFpbnRlbmFuY2Ug UmVsZWFzZXMgb2YgUENDVFMNCj4gICMyNjYuIChDaGFuZ2VkIGluIE1SMjMpIHZpcnR1YWwgZnVu Y3Rpb24gcHJpbnRNZXNzYWdlKCkNCj4gDQo+ICAgICAgQmlsbCBNZW5lZXMgKGJpbGwubWVuZWVz IGdvZ2FsbGFnaGVyLmNvbSkgaGFzIGNvbXBsZXRlZCB0aGUNCj4gLSAgICB0ZWRpb3VzIHRha3Mg b2YgcmVwbGFjaW5nIGFsbCBjYWxscyB0byBmcHJpbnRmKCkgd2l0aCBjYWxscw0KPiArICAgIHRl ZGlvdXMgdGFza3Mgb2YgcmVwbGFjaW5nIGFsbCBjYWxscyB0byBmcHJpbnRmKCkgd2l0aCBjYWxs cw0KPiAgICAgIHRvIHRoZSB2aXJ0dWFsIGZ1bmN0aW9uIHByaW50TWVzc2FnZSgpLiAgRm9yIGNs YXNzZXMgd2hpY2gNCj4gICAgICBoYXZlIGEgcG9pbnRlciB0byB0aGUgcGFyc2VyIGl0IGZvcndh cmRzIHRoZSBwcmludE1lc3NhZ2UoKQ0KPiAgICAgIGNhbGwgdG8gdGhlIHBhcnNlcidzIHByaW50 TWVzc2FnZSgpIHJvdXRpbmUuDQo+IA0KPiAtICAgIFRoaXMgc2hvdWxkIG1ha2UgaXQgc2lnbmlm aWNhbmx5IGVhc2llciB0byByZWRpcmVjdCBwY2N0cw0KPiArICAgIFRoaXMgc2hvdWxkIG1ha2Ug aXQgc2lnbmlmaWNhbnRseSBlYXNpZXIgdG8gcmVkaXJlY3QgcGNjdHMNCj4gICAgICBlcnJvciBh bmQgd2FybmluZyBtZXNzYWdlcy4NCj4gDQo+ICAjMjY1LiAoQ2hhbmdlZCBpbiBNUjIzKSBSZW1v dmUgImxhYmFzZSsrIiBpbiBDKysgbW9kZQ0KPiBAQCAtOTc1LDcgKzk3NSw3IEBAIExpc3Qgb2Yg SW1wbGVtZW50ZWQgRml4ZXMgYW5kIENoYW5nZXMgZm9yIE1haW50ZW5hbmNlIFJlbGVhc2VzIG9m IFBDQ1RTDQo+IA0KPiAgIzI0OS4gKE1SMjEpIENoYW5nZXMgZm9yIERFQy9WTVMgc3lzdGVtcw0K PiANCj4gLSAgICBKZWFuLUZyYW7DgW9pcyBQacOIcm9ubmUgKGpmcCBhbHRhdmlzdGEubmV0KSBo YXMgdXBkYXRlZCBzb21lDQo+ICsgICAgSmVhbi1GcmFuw5TDuM6pb2lzIFBpw5TDuM6pcm9ubmUg KGpmcCBhbHRhdmlzdGEubmV0KSBoYXMgdXBkYXRlZCBzb21lDQo+ICAgICAgVk1TIHJlbGF0ZWQg Y29tbWFuZCBmaWxlcyBhbmQgZml4ZWQgc29tZSBtaW5vciBwcm9ibGVtcyByZWxhdGVkDQo+ICAg ICAgdG8gYnVpbGRpbmcgcGNjdHMgdW5kZXIgdGhlIERFQy9WTVMgb3BlcmF0aW5nIHN5c3RlbS4g IEZvciBERUMvVk1TDQo+ICAgICAgdXNlcnMgdGhlIG1vc3QgaW1wb3J0YW50IGRpZmZlcmVuY2Vz IGFyZToNCj4gQEAgLTEyNTMsNyArMTI1Myw3IEBAIExpc3Qgb2YgSW1wbGVtZW50ZWQgRml4ZXMg YW5kIENoYW5nZXMgZm9yIE1haW50ZW5hbmNlIFJlbGVhc2VzIG9mIFBDQ1RTDQo+IA0KPiAgIzIy OC4gKENoYW5nZWQgaW4gTVIyMCkgZGxnIGNyYXNoZXMgb24gIigpIg0KPiANCj4gLSAgICBUaGUg Zm9sbG93aW5nIHRva2VuIGRlZmludGlvbiB3aWxsIGNhdXNlIERMRyB0byBjcmFzaC4NCj4gKyAg ICBUaGUgZm9sbG93aW5nIHRva2VuIGRlZmluaXRpb24gd2lsbCBjYXVzZSBETEcgdG8gY3Jhc2gu DQo+IA0KPiAgICAgICAgICAjdG9rZW4gIigpIg0KPiANCj4gQEAgLTE3NDcsMTAgKzE3NDcsMTAg QEAgTGlzdCBvZiBJbXBsZW1lbnRlZCBGaXhlcyBhbmQgQ2hhbmdlcyBmb3IgTWFpbnRlbmFuY2Ug UmVsZWFzZXMgb2YgUENDVFMNCj4gDQo+ICAjMTk1LiAoQ2hhbmdlZCBpbiBNUjE0KSAjbGluZSBk aXJlY3RpdmUgbm90IGF0IGNvbHVtbiAxDQo+IA0KPiAtICAgICAgVW5kZXIgY2VydGFpbiBjaXJj dW5zdGFuY2VzIGEgcHJlZGljYXRlIHRlc3QgY291bGQgZ2VuZXJhdGUNCj4gKyAgICAgIFVuZGVy IGNlcnRhaW4gY2lyY3Vtc3RhbmNlcyBhIHByZWRpY2F0ZSB0ZXN0IGNvdWxkIGdlbmVyYXRlDQo+ ICAgICAgICBhICNsaW5lIGRpcmVjdGl2ZSB3aGljaCB3YXMgbm90IGF0IGNvbHVtbiAxLg0KPiAN Cj4gLSAgICAgIFJlcG9ydGVkIHdpdGggZml4IGJ5IERhdmlkIEvDgmdlZGFsICAoZGF2aWRrIGx5 c2F0b3IubGl1LnNlKQ0KPiArICAgICAgUmVwb3J0ZWQgd2l0aCBmaXggYnkgRGF2aWQgS8OUw7jO qWdlZGFsICAoZGF2aWRrIGx5c2F0b3IubGl1LnNlKQ0KPiAgICAgICAgKGh0dHA6Ly93d3cubHlz YXRvci5saXUuc2UvfmRhdmlkay8pLg0KPiANCj4gICMxOTQuIChDaGFuZ2VkIGluIE1SMTQpIChD IE1vZGUgb25seSkgRGVtYW5kIGxvb2thaGVhZCB3aXRoICN0b2tjbGFzcw0KPiBAQCAtMjMxOSw3 ICsyMzE5LDcgQEAgTGlzdCBvZiBJbXBsZW1lbnRlZCBGaXhlcyBhbmQgQ2hhbmdlcyBmb3IgTWFp bnRlbmFuY2UgUmVsZWFzZXMgb2YgUENDVFMNCj4gICMxNjQuIChDaGFuZ2VkIGluIE1SMTMpIFVu dXNlZCB2YXJpYWJsZSBfYXN0cA0KPiANCj4gICAgICAgIEZvciBtYW55IGNvbXBpbGF0aW9ucywg d2UgaGF2ZSBsaXZlZCB3aXRoIHdhcm5pbmdzIGFib3V0DQo+IC0gICAgICB0aGUgdW51c2VkIHZh cmlhYmxlIF9hc3RwLiAgSXQgdHVybnMgb3V0IHRoYXQgdGhpcyB2YXJpYmxlDQo+ICsgICAgICB0 aGUgdW51c2VkIHZhcmlhYmxlIF9hc3RwLiAgSXQgdHVybnMgb3V0IHRoYXQgdGhpcyB2YXJpYWJs ZQ0KPiAgICAgICAgY2FuICpuZXZlciogYmUgdXNlZCBiZWNhdXNlIHRoZSBjb2RlIHdoaWNoIHJl ZmVyZW5jZXMgaXQgd2FzDQo+ICAgICAgICBjb21tZW50ZWQgb3V0Lg0KPiANCj4gZGlmZiAtLWdp dCBhL0Jhc2VUb29scy9Tb3VyY2UvQy9WZnJDb21waWxlL1BjY3RzL0NIQU5HRVNfRlJPTV8xMzNf QkVGT1JFX01SMTMudHh0DQo+IGIvQmFzZVRvb2xzL1NvdXJjZS9DL1ZmckNvbXBpbGUvUGNjdHMv Q0hBTkdFU19GUk9NXzEzM19CRUZPUkVfTVIxMy50eHQNCj4gaW5kZXggYmJhNWVjZGQ2NC4uMzNk N2QyMGE2YSAxMDA2NDQNCj4gLS0tIGEvQmFzZVRvb2xzL1NvdXJjZS9DL1ZmckNvbXBpbGUvUGNj dHMvQ0hBTkdFU19GUk9NXzEzM19CRUZPUkVfTVIxMy50eHQNCj4gKysrIGIvQmFzZVRvb2xzL1Nv dXJjZS9DL1ZmckNvbXBpbGUvUGNjdHMvQ0hBTkdFU19GUk9NXzEzM19CRUZPUkVfTVIxMy50eHQN Cj4gQEAgLTY5MCw3ICs2OTAsNyBAQA0KPiANCj4gICAgICAgIFRoZSBmaXJzdCBsaW5lIG9mIHRo ZSBtYWtlZmlsZXMgcmVxdWlyZSBhIGRlZmluaXRpb24gb2YgUENDVFNfSE9NRS4NCj4gDQo+IC0g ICAgICBUaGVzZSBhcmUgaW4gYWRkaXRpaW9uIHRvIHRoZSBBbnRsck1TVkM1MC4qIGFuZCBEbGdN U1ZDNTAuKg0KPiArICAgICAgVGhlc2UgYXJlIGluIGFkZGl0aW9uIHRvIHRoZSBBbnRsck1TVkM1 MC4qIGFuZCBEbGdNU1ZDNTAuKg0KPiAgICAgICAgc3VwcGxpZWQgYnkgSmVmZiBWaW5jZW50IChK VmluY2VudEBub3ZlbGwuY29tKS4NCj4gDQo+ICAjMTM3LiAoQ2hhbmdlZCBpbiBNUjExKSBUb2tl biBnZXRUeXBlKCksIGdldFRleHQoKSwgZ2V0TGluZSgpIGNvbnN0IG1lbWJlcnMNCj4gQEAgLTE2 ODEsNyArMTY4MSw3IEBADQo+ICAgICAgICB0aGUgdmFyaWFibGUgW3p6XXRyYWNlT3B0aW9uVmFs dWVEZWZhdWx0IGlzIHNldCB0byAwIG9yIDEuICBXaGVuDQo+ICAgICAgICB0aGUgcGFyc2VyIGlz IGluaXRpYWxpemVkIG9yIFt6el10cmFjZVJlc2V0KCkgaXMgY2FsbGVkIHRoZQ0KPiAgICAgICAg dmFsdWUgb2YgW3p6XXRyYWNlT3B0aW9uVmFsdWVEZWZhdWx0IGlzIGNvcGllZCB0byBbenpddHJh Y2VPcHRpb25WYWx1ZS4NCj4gLSAgICAgIFRoZSB2YWx1ZSBvZiBbenpddHJhY2VHdWVzc09wdGlv blZhbHVlIGlzIGFsd2F5cyBpbml0aWFsemVkIHRvIDEsDQo+ICsgICAgICBUaGUgdmFsdWUgb2Yg W3p6XXRyYWNlR3Vlc3NPcHRpb25WYWx1ZSBpcyBhbHdheXMgaW5pdGlhbGl6ZWQgdG8gMSwNCj4g ICAgICAgIGJ1dCwgYXMgbm90ZWQgZWFybGllciwgbm90aGluZyB3aWxsIGJlIHJlcG9ydGVkIHVu bGVzcw0KPiAgICAgICAgW3p6XXRyYWNlT3B0aW9uVmFsdWUgaXMgYWxzbyBwb3NpdGl2ZS4NCj4g DQo+IEBAIC0yMDI4LDcgKzIwMjgsNyBAQA0KPiANCj4gICAgICAgIFRoZSBzeW50YXggb2YgdGhl IGNsYXNzIHN0YXRlbWVudCAoImNsYXNzIHBhcnNlci1uYW1lIHsiKQ0KPiAgICAgICAgaGFzIGJl ZW4gZXh0ZW5kZWQgdG8gYWxsb3cgZm9yIHRoZSBzcGVjaWZpY2F0aW9uIG9mIGJhc2UNCj4gLSAg ICAgIGNsYXNzZXMuICBBbiBhcmJpcnRyYXJ5IG51bWJlciBvZiB0b2tlbnMgbWF5IG5vdyBhcHBl YXINCj4gKyAgICAgIGNsYXNzZXMuICBBbiBhcmJpdHJhcnkgbnVtYmVyIG9mIHRva2VucyBtYXkg bm93IGFwcGVhcg0KPiAgICAgICAgYmV0d2VlbiB0aGUgY2xhc3MgbmFtZSBhbmQgdGhlICJ7Ii4g IFRoZXkgYXJlIG91dHB1dA0KPiAgICAgICAgYWdhaW4gd2hlbiB0aGUgY2xhc3MgZGVjbGFyYXRp b24gaXMgZ2VuZXJhdGVkLiAgRm9yDQo+ICAgICAgICBleGFtcGxlOg0KPiBAQCAtMjIyNSw3ICsy MjI1LDcgQEANCj4gICAgICAgICAgVGhpcyBpcyBlc3BlY2lhbGx5IGltcG9ydGFudCBmb3IgcHJl ZGljYXRlcyBmb3JtZWQgYnkgcnVsZXMNCj4gICAgICAgICAgbGlrZSB0aGUgZm9sbG93aW5nOg0K PiANCj4gLSAgICAgICAgICAgIHVwcHBlckNhc2VWb3dlbCA6IDw8aXNVcHBlckNhc2UoTEFURVhU KDEpKT4+PyAgdm93ZWw7DQo+ICsgICAgICAgICAgICB1cHBlckNhc2VWb3dlbCAgOiA8PGlzVXBw ZXJDYXNlKExBVEVYVCgxKSk+Pj8gIHZvd2VsOw0KPiAgICAgICAgICAgICAgdm93ZWw6ICAgICAg ICAgIDogPDxpc1Zvd2VsKExBVEVYVCgxKSk+Pj8gTEVUVEVSUzsNCj4gDQo+ICAgICAgICAgIFRo ZXNlIHByZWRpY2F0ZXMgYXJlIGNvbWJpbmVkIHVzaW5nIEFORCBzaW5jZSBib3RoIG11c3QgYmUN Cj4gQEAgLTI0OTIsNyArMjQ5Miw3IEBADQo+ICAgICAgICBhIHByZWRpY2F0ZSBleHByZXNzaW9u IHRyZWUuICBQcmlvciB0byAxLjMzTVIxMCB0aGlzIGxpbmsgd2FzIG5ldmVyDQo+ICAgICAgICBj bGVhcmVkIGFuZCB0aGUgbmV4dCB0aW1lIHRoZSBndWFyZCB3YXMgdXNlZCB0byBjb25zdHJ1Y3Qg YSBuZXcNCj4gICAgICAgIHRyZWUgdGhlIGxpbmsgY291bGQgY29udGFpbiBhIHNwdXJpb3VzIHJl ZmVyZW5jZSB0byBhbm90aGVyIGVsZW1lbnQNCj4gLSAgICAgIHdoaWNoIGhhZCBwcmV2aW9zbHkg YmVlbiBqb2luZWQgdG8gaXQgaW4gdGhlIHNlbWFudGljIHByZWRpY2F0ZSB0cmVlLg0KPiArICAg ICAgd2hpY2ggaGFkIHByZXZpb3VzbHkgYmVlbiBqb2luZWQgdG8gaXQgaW4gdGhlIHNlbWFudGlj IHByZWRpY2F0ZSB0cmVlLg0KPiANCj4gICAgICAgIEZvciBleGFtcGxlOg0KPiANCj4gQEAgLTI1 NjUsNyArMjU2NSw3IEBADQo+ICAgICAgICB0b2tlbnMuICBUaGV5IG1heSBub3QgY29udGFpbiBy ZWZlcmVuY2VzIHRvICguLi4pKyBhbmQNCj4gICAgICAgICguLi4pKiBibG9ja3MuICBUaGlzIGlz IG5vdyBjaGVja2VkLiAgVGhpcyByZXBsYWNlcyB0aGUNCj4gICAgICAgIGZhdGFsIGVycm9yIG1l c3NhZ2UgaW4gaXRlbSAjNzggd2l0aCBhbiBhcHByb3ByaWF0ZQ0KPiAtICAgICAgKG5vbi1mYXRh bCkgZXJyb3IgbWVzc2dlLg0KPiArICAgICAgKG5vbi1mYXRhbCkgZXJyb3IgbWVzc2FnZS4NCj4g DQo+ICAgICAgICBJbiB0aGVvcnksIGNvbnRleHQgZ3VhcmRzIHNob3VsZCBiZSBhbGxvd2VkIHRv IHJlZmVyZW5jZQ0KPiAgICAgICAgcnVsZXMuICBIb3dldmVyLCBJIGhhdmUgbm90IGhhZCB0aW1l IHRvIGZpeCB0aGlzLg0KPiBAQCAtMjU4MSw3ICsyNTgxLDcgQEANCj4gICAgICAgIGNvcnJlY3Rs eSB3aGVuIHRoZSBzZXRzIHdlcmUgb2YgdW5lcXVhbCBzaXplcy4gIFJld3JvdGUNCj4gICAgICAg IHNldF9lcXUgdG8gbWFrZSBpdCBzaW1wbGVyIGFuZCByZW1vdmUgdW5uZWNlc3NhcnkgYW5kDQo+ ICAgICAgICBleHBlbnNpdmUgY2FsbHMgdG8gc2V0X2RlZygpLiAgVGhpcyByb3V0aW5lIHdhcyBu b3QgdXNlZA0KPiAtICAgICAgaW4gMS4zMyB2YW5pbGEuDQo+ICsgICAgICBpbiAxLjMzIHZhbmls bGEuDQo+IA0KPiAgIzg1LiAgKENoYW5nZWQgaW4gMS4zM01SMTApIEFsbG93IHJlZGVmaW5pdGlv biBvZiBNYXhOdW1GaWxlcw0KPiANCj4gQEAgLTI2MTcsNyArMjYxNyw3IEBADQo+IA0KPiAgICAg ICAgVGhlcmUgd2VyZSBubyBjaGFuZ2VzIGluIGFudGxyIG9yIGRsZyBvdXRwdXQgZnJvbSB0aGUg cmV2aXNlZCB2ZXJzaW9uLg0KPiANCj4gLSAgICAgIFRoZSBmb2xsb3dpbmcgZnJhZ21lbnQgZGVt b25zdGF0ZXMgdGhlIHByb2JsZW0gYnkgZ2l2aW5nIGRpZmZlcmVudA0KPiArICAgICAgVGhlIGZv bGxvd2luZyBmcmFnbWVudCBkZW1vbnN0cmF0ZXMgdGhlIHByb2JsZW0gYnkgZ2l2aW5nIGRpZmZl cmVudA0KPiAgICAgICAgZm9sbG93IHNldHMgKG9wdGlvbiAtcGEpIGZvciB2YXJfYWNjZXNzIHdo ZW4gYnVpbHQgd2l0aCBrPTEgYW5kIGNrPTIgb24NCj4gICAgICAgIDEuMzMgdmFuaWxsYSBhbmQg MS4zM01SMTA6DQo+IA0KPiBAQCAtMjY1OCw3ICsyNjU4LDcgQEANCj4gDQo+ICAgICAgICAgICAx LiBzdGFydCA6IHI6cnVsZSB0OlRva2VuIDw8JHN0YXJ0PSRyOz4+DQo+IA0KPiAtICAgICAgICAg ICAgICAgIFRoZSAkciByZWZyZW5jZSB3aWxsIG5vdCB3b3JrIHdoZW4gY29tYmluZWQgd2l0aA0K PiArICAgICAgICAgICAgICAgIFRoZSAkciByZWZlcmVuY2Ugd2lsbCBub3Qgd29yayB3aGVuIGNv bWJpbmVkIHdpdGgNCj4gICAgICAgICAgICAgICAgICB0aGUgLWd0IG9wdGlvbi4NCj4gDQo+ICAg ICAgICAgICAyLiBzdGFydCA6IHQ6VG9rZW4gICAgICAgICA8PCRzdGFydD0kdDs+Pg0KPiBAQCAt MzAxMCw3ICszMDEwLDcgQEANCj4gICAgICAgICAgICAgIHBhcnNlIGJ5ICJmYWxsaW5nIHRocm91 Z2giLiAgVGhlIHBhcnNlIGNhbiBzdGlsbCBiZSBlYXNpbHkNCj4gICAgICAgICAgICAgIHJlc3Vt ZWQgaW4gb3RoZXIgd2F5cywgYnV0IG5vdCBpbiB0aGUgbW9zdCBuYXR1cmFsIGZhc2hpb24uDQo+ IA0KPiAtICAgICAgICAgICAgVGhpcyByZXN1bHRzIGluIGFuIGluY29uc2lzdGVudGN5IGJldHdl ZW4gbmFtZWQgZXhjZXB0aW9uDQo+ICsgICAgICAgICAgICBUaGlzIHJlc3VsdHMgaW4gYW4gaW5j b25zaXN0ZW5jeSBiZXR3ZWVuIG5hbWVkIGV4Y2VwdGlvbg0KPiAgICAgICAgICAgICAgaGFuZGxl cnMgYW5kIGV4Y2VwdGlvbiBoYW5kbGVycyBmb3IgYWx0ZXJuYXRpdmVzLiAgV2hlbg0KPiAgICAg ICAgICAgICAgYW4gZXhjZXB0aW9uIGhhbmRsZXIgZm9yIGFuIGFsdGVybmF0aXZlICJmYWxscyB0 aHJvdWdoIg0KPiAgICAgICAgICAgICAgaXQgZ29lcyB0byB0aGUgbmV4dG1vc3Qgb3V0ZXIgaGFu ZGxlciAtIG5vdCB0aGUgIm5vcm1hbA0KPiBAQCAtMzA2Miw3ICszMDYyLDcgQEANCj4gICAgICAg ICAgICAgIHp6Y29uc3VtZVVudGlsKCkNCj4gICAgICAgICAgICAgIHp6Y29uc3VtZVVudGlsVG9r ZW4oKQ0KPiANCj4gLSM1OC4gIChDaGFuZ2VkIGluIDEuMzNNUjcpIEFkZGVkIGRlZmludGlvbiBv ZiB6emJ1ZnNpemUgdG8gZGxnYXV0by5oDQo+ICsjNTguICAoQ2hhbmdlZCBpbiAxLjMzTVI3KSBB ZGRlZCBkZWZpbml0aW9uIG9mIHp6YnVmc2l6ZSB0byBkbGdhdXRvLmgNCj4gDQo+ICAjNTcuICAo Q2hhbmdlZCBpbiAxLjMzTVI3KSBGb3JtYXQgb2YgI2xpbmUgZGlyZWN0aXZlDQo+IA0KPiBAQCAt MzA3Myw5ICszMDczLDkgQEANCj4gDQo+ICAjNTYuICAoQWRkZWQgaW4gMS4zM01SNykgSmFuIE1p a2tlbHNlbiA8amFubUB6ZXRhLm9yZy5hdT4NCj4gDQo+IC0gICAgICAgIE1vdmUgUFVSSUZZIG1h Y3JvIGludm9jYXRvbiB0byBhZnRlciBydWxlJ3MgaW5pdCBhY3Rpb24uDQo+ICsgICAgICAgIE1v dmUgUFVSSUZZIG1hY3JvIGludm9jYXRpb24gdG8gYWZ0ZXIgcnVsZSdzIGluaXQgYWN0aW9uLg0K PiANCj4gLSM1NS4gIChGaXhlZCBpbiAxLjMzTVI3KSBVbml0aWFsaXplZCB2YXJpYWJsZXMgaW4g QU5UTFJQYXJzZXINCj4gKyM1NS4gIChGaXhlZCBpbiAxLjMzTVI3KSBVbmluaXRpYWxpemVkIHZh cmlhYmxlcyBpbiBBTlRMUlBhcnNlcg0KPiANCj4gICAgICAgICAgTWVtYmVyIHZhcmlhYmxlcyBp bmZfbGFiYXNlIGFuZCBpbmZfbGFzdCB3ZXJlIG5vdCBpbml0aWFsaXplZC4NCj4gICAgICAgICAg KFNlZSBpdGVtICM1MC4pDQo+IEBAIC0zMTE1LDcgKzMxMTUsNyBAQA0KPiAgICAgICAgICBUaGUg cmVhc29uIGZvciAiTm9ybWFsIEFjdGlvbiIgaXMgdGhhdCB0aGUgbm9ybWFsIGZsb3cgb2YgdGhl DQo+ICAgICAgICAgIHByb2dyYW0gYWZ0ZXIgYSB1c2VyLXdyaXR0ZW4gZXhjZXB0aW9uIGhhbmRs ZXIgaXMgdG8gImRyb3AgdGhyb3VnaCIuDQo+ICAgICAgICAgIEluIHRoZSBjYXNlIG9mIGFuIGV4 Y2VwdGlvbiBoYW5kbGVyIGZvciBhIHJ1bGUgdGhpcyByZXN1bHRzIGluDQo+IC0gICAgICAgIHRo ZSBleGVjdGlvbiBvZiBhICJyZXR1cm4iIHN0YXRlbWVudC4gIEluIHRoZSBjYXNlIG9mIGFuDQo+ ICsgICAgICAgIHRoZSBleGVjdXRpb24gb2YgYSAicmV0dXJuIiBzdGF0ZW1lbnQuICBJbiB0aGUg Y2FzZSBvZiBhbg0KPiAgICAgICAgICBleGNlcHRpb24gaGFuZGxlciBhdHRhY2hlZCB0byBhbiBh bHRlcm5hdGl2ZSwgcnVsZSwgb3IgdG9rZW4NCj4gICAgICAgICAgdGhpcyBpcyB0aGUgY29kZSB0 aGF0IHdvdWxkIGhhdmUgZXhlY3V0ZWQgaGFkIHRoZXJlIGJlZW4gbm8NCj4gICAgICAgICAgZXhj ZXB0aW9uLg0KPiBAQCAtMzMzMiw3ICszMzMyLDcgQEANCj4gDQo+ICAgICAgICAgIFJlcGFpciBi dWcgaW50cm9kdWNlZCBieSAxLjMzTVIxIGZvciAjdG9rZGVmcy4gIFRoZSBvcmlnaW5hbCBmaXgN Cj4gICAgICAgICAgcGxhY2VkICJETEdtYXhUb2tlbj05OTk5IiBhbmQgIkRMR21pblRva2VuPTAi IGluIHRoZSBUb2tlblR5cGUgZW51bQ0KPiAtICAgICAgICBpbiBvcmRlciB0byBmaXggYSBwcm9i bGVtIHdpdGggYW4gYWdncmVzaXZlIGNvbXBpbGVyIGFzc2lnbmluZyBhbiA4DQo+ICsgICAgICAg IGluIG9yZGVyIHRvIGZpeCBhIHByb2JsZW0gd2l0aCBhbiBhZ2dyZXNzaXZlIGNvbXBpbGVyIGFz c2lnbmluZyBhbiA4DQo+ICAgICAgICAgIGJpdCBlbnVtIHdoaWNoIG1pZ2h0IGJlIHRvbyBuYXJy b3cuICBUaGlzIGNhdXNlZCAjdG9rZGVmcyB0byBhc3N1bWUNCj4gICAgICAgICAgdGhhdCB0aGVy ZSB3ZXJlIDk5OTkgcmVhbCB0b2tlbnMuICBUaGUgcmVwYWlyIHRvIHRoZSBmaXggY2F1c2VzIGFu dGxyIHRvDQo+ICAgICAgICAgIGlnbm9yZSBUb2tlblR5cGVzICJETEdtYXhUb2tlbiIgYW5kICJE TEdtaW5Ub2tlbiIgaW4gYSAjdG9rZGVmcyBmaWxlLg0KPiBkaWZmIC0tZ2l0IGEvQmFzZVRvb2xz L1NvdXJjZS9DL1ZmckNvbXBpbGUvUGNjdHMvQ0hBTkdFU19TVU1NQVJZLnR4dA0KPiBiL0Jhc2VU b29scy9Tb3VyY2UvQy9WZnJDb21waWxlL1BjY3RzL0NIQU5HRVNfU1VNTUFSWS50eHQNCj4gaW5k ZXggOTFkZWZhZTE2OS4uNzEzNDUwMGUyZiAxMDA2NDQNCj4gLS0tIGEvQmFzZVRvb2xzL1NvdXJj ZS9DL1ZmckNvbXBpbGUvUGNjdHMvQ0hBTkdFU19TVU1NQVJZLnR4dA0KPiArKysgYi9CYXNlVG9v bHMvU291cmNlL0MvVmZyQ29tcGlsZS9QY2N0cy9DSEFOR0VTX1NVTU1BUlkudHh0DQo+IEBAIC0x MzUwLDcgKzEzNTAsNyBAQA0KPiAgICAgICAgdGhlIHZhcmlhYmxlIFt6el10cmFjZU9wdGlvblZh bHVlRGVmYXVsdCBpcyBzZXQgdG8gMCBvciAxLiAgV2hlbg0KPiAgICAgICAgdGhlIHBhcnNlciBp cyBpbml0aWFsaXplZCBvciBbenpddHJhY2VSZXNldCgpIGlzIGNhbGxlZCB0aGUNCj4gICAgICAg IHZhbHVlIG9mIFt6el10cmFjZU9wdGlvblZhbHVlRGVmYXVsdCBpcyBjb3BpZWQgdG8gW3p6XXRy YWNlT3B0aW9uVmFsdWUuDQo+IC0gICAgICBUaGUgdmFsdWUgb2YgW3p6XXRyYWNlR3Vlc3NPcHRp b25WYWx1ZSBpcyBhbHdheXMgaW5pdGlhbHplZCB0byAxLA0KPiArICAgICAgVGhlIHZhbHVlIG9m IFt6el10cmFjZUd1ZXNzT3B0aW9uVmFsdWUgaXMgYWx3YXlzIGluaXRpYWxpemVkIHRvIDEsDQo+ ICAgICAgICBidXQsIGFzIG5vdGVkIGVhcmxpZXIsIG5vdGhpbmcgd2lsbCBiZSByZXBvcnRlZCB1 bmxlc3MNCj4gICAgICAgIFt6el10cmFjZU9wdGlvblZhbHVlIGlzIGFsc28gcG9zaXRpdmUuDQo+ IA0KPiBAQCAtMTc2Niw3ICsxNzY2LDcgQEANCj4gICAgICAgICAgVGhpcyBpcyBlc3BlY2lhbGx5 IGltcG9ydGFudCBmb3IgcHJlZGljYXRlcyBmb3JtZWQgYnkgcnVsZXMNCj4gICAgICAgICAgbGlr ZSB0aGUgZm9sbG93aW5nOg0KPiANCj4gLSAgICAgICAgICAgIHVwcHBlckNhc2VWb3dlbCA6IDw8 aXNVcHBlckNhc2UoTEFURVhUKDEpKT4+PyAgdm93ZWw7DQo+ICsgICAgICAgICAgICB1cHBlckNh c2VWb3dlbCAgOiA8PGlzVXBwZXJDYXNlKExBVEVYVCgxKSk+Pj8gIHZvd2VsOw0KPiAgICAgICAg ICAgICAgdm93ZWw6ICAgICAgICAgIDogPDxpc1Zvd2VsKExBVEVYVCgxKSk+Pj8gTEVUVEVSUzsN Cj4gDQo+ICAgICAgICAgIFRoZXNlIHByZWRpY2F0ZXMgYXJlIGNvbWJpbmVkIHVzaW5nIEFORCBz aW5jZSBib3RoIG11c3QgYmUNCj4gQEAgLTE5MjgsNyArMTkyOCw3IEBADQo+ICAgICAgICAgICAg ICBwYXJzZSBieSAiZmFsbGluZyB0aHJvdWdoIi4gIFRoZSBwYXJzZSBjYW4gc3RpbGwgYmUgZWFz aWx5DQo+ICAgICAgICAgICAgICByZXN1bWVkIGluIG90aGVyIHdheXMsIGJ1dCBub3QgaW4gdGhl IG1vc3QgbmF0dXJhbCBmYXNoaW9uLg0KPiANCj4gLSAgICAgICAgICAgIFRoaXMgcmVzdWx0cyBp biBhbiBpbmNvbnNpc3RlbnRjeSBiZXR3ZWVuIG5hbWVkIGV4Y2VwdGlvbg0KPiArICAgICAgICAg ICAgVGhpcyByZXN1bHRzIGluIGFuIGluY29uc2lzdGVuY3kgYmV0d2VlbiBuYW1lZCBleGNlcHRp b24NCj4gICAgICAgICAgICAgIGhhbmRsZXJzIGFuZCBleGNlcHRpb24gaGFuZGxlcnMgZm9yIGFs dGVybmF0aXZlcy4gIFdoZW4NCj4gICAgICAgICAgICAgIGFuIGV4Y2VwdGlvbiBoYW5kbGVyIGZv ciBhbiBhbHRlcm5hdGl2ZSAiZmFsbHMgdGhyb3VnaCINCj4gICAgICAgICAgICAgIGl0IGdvZXMg dG8gdGhlIG5leHRtb3N0IG91dGVyIGhhbmRsZXIgLSBub3QgdGhlICJub3JtYWwNCj4gQEAgLTE5 OTAsNyArMTk5MCw3IEBADQo+ICAgICAgICAgIFRoZSByZWFzb24gZm9yICJOb3JtYWwgQWN0aW9u IiBpcyB0aGF0IHRoZSBub3JtYWwgZmxvdyBvZiB0aGUNCj4gICAgICAgICAgcHJvZ3JhbSBhZnRl ciBhIHVzZXItd3JpdHRlbiBleGNlcHRpb24gaGFuZGxlciBpcyB0byAiZHJvcCB0aHJvdWdoIi4N Cj4gICAgICAgICAgSW4gdGhlIGNhc2Ugb2YgYW4gZXhjZXB0aW9uIGhhbmRsZXIgZm9yIGEgcnVs ZSB0aGlzIHJlc3VsdHMgaW4NCj4gLSAgICAgICAgdGhlIGV4ZWN0aW9uIG9mIGEgInJldHVybiIg c3RhdGVtZW50LiAgSW4gdGhlIGNhc2Ugb2YgYW4NCj4gKyAgICAgICAgdGhlIGV4ZWN1dGlvbiBv ZiBhICJyZXR1cm4iIHN0YXRlbWVudC4gIEluIHRoZSBjYXNlIG9mIGFuDQo+ICAgICAgICAgIGV4 Y2VwdGlvbiBoYW5kbGVyIGF0dGFjaGVkIHRvIGFuIGFsdGVybmF0aXZlLCBydWxlLCBvciB0b2tl bg0KPiAgICAgICAgICB0aGlzIGlzIHRoZSBjb2RlIHRoYXQgd291bGQgaGF2ZSBleGVjdXRlZCBo YWQgdGhlcmUgYmVlbiBubw0KPiAgICAgICAgICBleGNlcHRpb24uDQo+IGRpZmYgLS1naXQgYS9C YXNlVG9vbHMvU291cmNlL0MvVmZyQ29tcGlsZS9QY2N0cy9LTk9XTl9QUk9CTEVNUy50eHQgYi9C YXNlVG9vbHMvU291cmNlL0MvVmZyQ29tcGlsZS9QY2N0cy9LTk9XTl9QUk9CTEVNUy50eHQNCj4g aW5kZXggNWE5YjIyZTFiZC4uNTM5Y2Y3NzUyNSAxMDA2NDQNCj4gLS0tIGEvQmFzZVRvb2xzL1Nv dXJjZS9DL1ZmckNvbXBpbGUvUGNjdHMvS05PV05fUFJPQkxFTVMudHh0DQo+ICsrKyBiL0Jhc2VU b29scy9Tb3VyY2UvQy9WZnJDb21waWxlL1BjY3RzL0tOT1dOX1BST0JMRU1TLnR4dA0KPiBAQCAt MjIsNyArMjIsNyBAQA0KPiAgICAgIElmIHRoZSBjb250ZXh0IGd1YXJkIGcgaXMgbm90IGEgc3Vi c2V0IG9mIHRoZSBsb29rYWhlYWQgY29udGV4dCBmb3IgcjENCj4gICAgICAoaW4gb3RoZXIgd29y ZHMgZyBpcyBuZWl0aGVyIEEgbm9yIEIpIHRoZW4gdGhlIGNvZGUgbWF5IGV4ZWN1dGUgcjENCj4g ICAgICBldmVuIHdoZW4gdGhlIGxvb2thaGVhZCBjb250ZXh0IGlzIG5vdCBzYXRpc2ZpZWQuICBU aGlzIGlzIGFuIGVycm9yDQo+IC0gICAgYnkgdGhlIHBlcnNvbiBjb2RpbmcgdGhlIGdyYW1tZXIs IGFuZCB0aGUgZXJyb3Igc2hvdWxkIGJlIHJlcG9ydGVkIHRvDQo+ICsgICAgYnkgdGhlIHBlcnNv biBjb2RpbmcgdGhlIGdyYW1tYXIsIGFuZCB0aGUgZXJyb3Igc2hvdWxkIGJlIHJlcG9ydGVkIHRv DQo+ICAgICAgdGhlIHVzZXIsIGJ1dCBpdCBpc24ndC4gZXhwZWN0LiAgU29tZSBleGFtcGxlcyBJ J3ZlIHJ1biBzZWVtIHRvDQo+ICAgICAgaW5kaWNhdGUgdGhhdCBzdWNoIGFuIGVycm9yIGFjdHVh bGx5IHJlc3VsdHMgaW4gdGhlIHJ1bGUgYmVjb21pbmcNCj4gICAgICB1bnJlYWNoYWJsZS4NCj4g QEAgLTE4NCw3ICsxODQsNyBAQA0KPiANCj4gICAgICBUSE06ICBJbiBNUjIwIGhhdmUgZml4ZWQg dGhlIG1vc3QgY29tbW9uIGNhc2VzLg0KPiANCj4gLSAgICBUaGUgZm9sbG93aW5nIHRva2VuIGRl ZmludGlvbiB3aWxsIGNhdXNlIERMRyB0byBjcmFzaC4NCj4gKyAgICBUaGUgZm9sbG93aW5nIHRv a2VuIGRlZmluaXRpb24gd2lsbCBjYXVzZSBETEcgdG8gY3Jhc2guDQo+IA0KPiAgICAgICAgICAj dG9rZW4gIigpIg0KPiANCj4gZGlmZiAtLWdpdCBhL0Jhc2VUb29scy9Tb3VyY2UvQy9WZnJDb21w aWxlL1BjY3RzL2FudGxyL2FudGxyLmMgYi9CYXNlVG9vbHMvU291cmNlL0MvVmZyQ29tcGlsZS9Q Y2N0cy9hbnRsci9hbnRsci5jDQo+IGluZGV4IDgwODhiM2MyNTcuLjU4ZDBiMTM0YjkgMTAwNjQ0 DQo+IC0tLSBhL0Jhc2VUb29scy9Tb3VyY2UvQy9WZnJDb21waWxlL1BjY3RzL2FudGxyL2FudGxy LmMNCj4gKysrIGIvQmFzZVRvb2xzL1NvdXJjZS9DL1ZmckNvbXBpbGUvUGNjdHMvYW50bHIvYW50 bHIuYw0KPiBAQCAtMTM5NCw3ICsxMzk0LDcgQEAgdGNsYXNzKCkNCj4gICAgLyogTVIyMyAqLyAg ICAgICAgIGlmIChwIT0gTlVMTCAmJiBha2FTdHJpbmcgIT0gTlVMTCkgew0KPiAgICAgIC8qIE1S MjMgKi8gICAgICAgICAgIGlmIChwLT5ha2FTdHJpbmcgIT0gTlVMTCkgew0KPiAgICAgICAgLyog TVIyMyAqLyAgICAgICAgICAgICBpZiAoc3RyY21wKHAtPmFrYVN0cmluZyxha2FTdHJpbmcpICE9 IDApIHsNCj4gLSAgICAgICAgLyogTVIyMyAqLyAgICAgICAgICAgICAgICB3YXJuRkwoZU1zZzIo InRoaXMgI3Rva2NsYXNzIHN0YXRtZW50IGNvbmZsaWN0cyB3aXRoIGEgcHJldmlvdXMgI3Rva2Ns YXNzICVzKFwiJXNcIikgc3RhdGVtZW50IiwNCj4gKyAgICAgICAgLyogTVIyMyAqLyAgICAgICAg ICAgICAgICB3YXJuRkwoZU1zZzIoInRoaXMgI3Rva2NsYXNzIHN0YXRlbWVudCBjb25mbGljdHMg d2l0aCBhIHByZXZpb3VzICN0b2tjbGFzcyAlcyhcIiVzXCIpDQo+IHN0YXRlbWVudCIsDQo+ICAg ICAgICAgIC8qIE1SMjMgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LHAtPmFrYVN0 cmluZyksDQo+ICAgICAgICAgIC8qIE1SMjMgKi8JCQkgICAgICAgICAgICAgICAgICAgIEZpbGVT dHJbc2F2ZV9maWxlXSxzYXZlX2xpbmUpOw0KPiAgICAgICAgICAvKiBNUjIzICovICAgICAgICAg ICAgIH07DQo+IEBAIC0xNjM1LDcgKzE2MzUsNyBAQCB0b2tlbigpDQo+ICAgICAgaWYgKHRlICE9 IE5VTEwgJiYgYWthU3RyaW5nICE9IE5VTEwpIHsNCj4gICAgICAgIGlmICh0ZS0+YWthU3RyaW5n ICE9IE5VTEwpIHsNCj4gICAgICAgICAgaWYgKHN0cmNtcCh0ZS0+YWthU3RyaW5nLGFrYVN0cmlu ZykgIT0gMCkgew0KPiAtICAgICAgICAgIHdhcm5GTChlTXNnMigidGhpcyAjdG9rZW4gc3RhdG1l bnQgY29uZmxpY3RzIHdpdGggYSBwcmV2aW91cyAjdG9rZW4gJXMoXCIlc1wiKSBzdGF0ZW1lbnQi LA0KPiArICAgICAgICAgIHdhcm5GTChlTXNnMigidGhpcyAjdG9rZW4gc3RhdGVtZW50IGNvbmZs aWN0cyB3aXRoIGEgcHJldmlvdXMgI3Rva2VuICVzKFwiJXNcIikgc3RhdGVtZW50IiwNCj4gICAg ICAgICAgICB0LHRlLT5ha2FTdHJpbmcpLA0KPiAgICAgICAgICAgIEZpbGVTdHJbc2F2ZV9maWxl XSxzYXZlX2xpbmUpOw0KPiAgICAgICAgICB9Ow0KPiBkaWZmIC0tZ2l0IGEvQmFzZVRvb2xzL1Nv dXJjZS9DL1ZmckNvbXBpbGUvUGNjdHMvYW50bHIvYW50bHIuZyBiL0Jhc2VUb29scy9Tb3VyY2Uv Qy9WZnJDb21waWxlL1BjY3RzL2FudGxyL2FudGxyLmcNCj4gaW5kZXggZTAxNzI4YTEwMi4uYzQ0 YjAzNmM2ZiAxMDA2NDQNCj4gLS0tIGEvQmFzZVRvb2xzL1NvdXJjZS9DL1ZmckNvbXBpbGUvUGNj dHMvYW50bHIvYW50bHIuZw0KPiArKysgYi9CYXNlVG9vbHMvU291cmNlL0MvVmZyQ29tcGlsZS9Q Y2N0cy9hbnRsci9hbnRsci5nDQo+IEBAIC0xMzMxLDcgKzEzMzEsNyBAQCB0Y2xhc3MJOgk8PGNo YXIgKnQ9TlVMTDsgVENub2RlICplOyBpbnQgZ289MSx0b2ssdG90b2s7IFRlcm1FbnRyeSAqcCwg KnRlcm0sICp0bw0KPiAgLyogTVIyMyAqLyAgICAgICAgIGlmIChwIT0gTlVMTCAmJiBha2FTdHJp bmcgIT0gTlVMTCkgew0KPiAgLyogTVIyMyAqLyAgICAgICAgICAgaWYgKHAtPmFrYVN0cmluZyAh PSBOVUxMKSB7DQo+ICAvKiBNUjIzICovICAgICAgICAgICAgIGlmIChzdHJjbXAocC0+YWthU3Ry aW5nLGFrYVN0cmluZykgIT0gMCkgew0KPiAtLyogTVIyMyAqLyAgICAgICAgICAgICAgICB3YXJu RkwoZU1zZzIoInRoaXMgI3Rva2NsYXNzIHN0YXRtZW50IGNvbmZsaWN0cyB3aXRoIGEgcHJldmlv dXMgI3Rva2NsYXNzICVzKFwiJXNcIikgc3RhdGVtZW50IiwNCj4gKy8qIE1SMjMgKi8gICAgICAg ICAgICAgICAgd2FybkZMKGVNc2cyKCJ0aGlzICN0b2tjbGFzcyBzdGF0ZW1lbnQgY29uZmxpY3Rz IHdpdGggYSBwcmV2aW91cyAjdG9rY2xhc3MgJXMoXCIlc1wiKSBzdGF0ZW1lbnQiLA0KPiAgLyog TVIyMyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQscC0+YWthU3RyaW5nKSwNCj4g IC8qIE1SMjMgKi8JCQkgICAgICAgICAgICAgICAgICAgIEZpbGVTdHJbc2F2ZV9maWxlXSxzYXZl X2xpbmUpOw0KPiAgLyogTVIyMyAqLyAgICAgICAgICAgICB9Ow0KPiBAQCAtMTQzOSw3ICsxNDM5 LDcgQEAgdG9rZW4JOgk8PGNoYXIgKnQ9TlVMTCwgKmU9TlVMTCwgKmE9TlVMTDsgaW50IHRudW09 MDs+Pg0KPiAgICAgICAgICAgICAgICAgIGlmICh0ZSAhPSBOVUxMICYmIGFrYVN0cmluZyAhPSBO VUxMKSB7DQo+ICAgICAgICAgICAgICAgICAgICBpZiAodGUtPmFrYVN0cmluZyAhPSBOVUxMKSB7 DQo+ICAgICAgICAgICAgICAgICAgICAgIGlmIChzdHJjbXAodGUtPmFrYVN0cmluZyxha2FTdHJp bmcpICE9IDApIHsNCj4gLSAgICAgICAgICAgICAgICAgICAgICB3YXJuRkwoZU1zZzIoInRoaXMg I3Rva2VuIHN0YXRtZW50IGNvbmZsaWN0cyB3aXRoIGEgcHJldmlvdXMgI3Rva2VuICVzKFwiJXNc Iikgc3RhdGVtZW50IiwNCj4gKyAgICAgICAgICAgICAgICAgICAgICB3YXJuRkwoZU1zZzIoInRo aXMgI3Rva2VuIHN0YXRlbWVudCBjb25mbGljdHMgd2l0aCBhIHByZXZpb3VzICN0b2tlbiAlcyhc IiVzXCIpIHN0YXRlbWVudCIsDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB0LHRlLT5ha2FTdHJpbmcpLA0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsZVN0cltz YXZlX2ZpbGVdLHNhdmVfbGluZSk7DQo+ICAgICAgICAgICAgICAgICAgICAgIH07DQo+IGRpZmYg LS1naXQgYS9CYXNlVG9vbHMvU291cmNlL0MvVmZyQ29tcGlsZS9QY2N0cy9hbnRsci9hbnRsci5y IGIvQmFzZVRvb2xzL1NvdXJjZS9DL1ZmckNvbXBpbGUvUGNjdHMvYW50bHIvYW50bHIucg0KPiBp bmRleCBlM2RlMzg3NTlmLi5hOGQxODNjNGViIDEwMDY0NA0KPiAtLS0gYS9CYXNlVG9vbHMvU291 cmNlL0MvVmZyQ29tcGlsZS9QY2N0cy9hbnRsci9hbnRsci5yDQo+ICsrKyBiL0Jhc2VUb29scy9T b3VyY2UvQy9WZnJDb21waWxlL1BjY3RzL2FudGxyL2FudGxyLnINCj4gQEAgLTI4Niw3ICsyODYs NyBAQCByZXNvdXJjZSAnY21kbycgKDEyOCwgIkFudGxyIikgew0KPiAgCQkJCSJJZiB0aGlzIG9w dGlvbiBpcyBjaGVja2VkLCBBTlRMUiB3aWxsIGdlIg0KPiAgCQkJCSJuZXJhdGUgYSBjcm9zcyBy ZWZlcmVuY2UgZm9yIGFsbCBydWxlcy4gIg0KPiAgCQkJCSJGb3IgZWFjaCBydWxlIGl0IHdpbGwg cHJpbnQgYSBsaXN0IG9mIGFsIg0KPiAtCQkJCSJsIG90aGVyIHJ1bGVzIHRoYXQgcmVmcmVuY2Ug aXQuIg0KPiArCQkJCSJsIG90aGVyIHJ1bGVzIHRoYXQgcmVmZXJlbmNlIGl0LiINCj4gIAkJCX0s DQo+ICAJCQkvKiBbMTBdICovDQo+ICAJCQlOb3REZXBlbmRlbnQgew0KPiBkaWZmIC0tZ2l0IGEv QmFzZVRvb2xzL1NvdXJjZS9DL1ZmckNvbXBpbGUvUGNjdHMvYW50bHIvZWdtYW4uYyBiL0Jhc2VU b29scy9Tb3VyY2UvQy9WZnJDb21waWxlL1BjY3RzL2FudGxyL2VnbWFuLmMNCj4gaW5kZXggYzhh NjMzZmMwNi4uYmExMzg0ZGFiZSAxMDA2NDQNCj4gLS0tIGEvQmFzZVRvb2xzL1NvdXJjZS9DL1Zm ckNvbXBpbGUvUGNjdHMvYW50bHIvZWdtYW4uYw0KPiArKysgYi9CYXNlVG9vbHMvU291cmNlL0Mv VmZyQ29tcGlsZS9QY2N0cy9hbnRsci9lZ21hbi5jDQo+IEBAIC0xNjYsNyArMTY2LDcgQEAgRXhj ZXB0aW9uR3JvdXAgKmVnOw0KPiAgICAgICAgICB9Ow0KPiAgICAgICAgfTsNCj4gDQo+IC0gICAg ICAvKiAgb2N1cnMgYXQgYSBsYXRlciBwYXNzIHRoZW4gZm9yIHRoZSBleGNlcHRpb25fbGFiZWwg ICAgICAgKi8NCj4gKyAgICAgIC8qICBvY2N1cnMgYXQgYSBsYXRlciBwYXNzIHRoZW4gZm9yIHRo ZSBleGNlcHRpb25fbGFiZWwgICAgICAqLw0KPiAgICAgICAgLyogIGlmIGFuIG91dGVyRUcgaGFz IGJlZW4gZm91bmQgdGhlbiBmaWxsIGluIHRoZSBvdXRlciBFRyAgICovDQo+ICAgICAgICAvKiAg cmVtb3ZlIGlmIGZyb20gdGhlIGxpc3Qgd2hlbiB0aGUgQmxrTGV2ZWwgZ2V0cyBzbWFsbGVyICAg Ki8NCj4gDQo+IGRpZmYgLS1naXQgYS9CYXNlVG9vbHMvU291cmNlL0MvVmZyQ29tcGlsZS9QY2N0 cy9hbnRsci9mc2V0LmMgYi9CYXNlVG9vbHMvU291cmNlL0MvVmZyQ29tcGlsZS9QY2N0cy9hbnRs ci9mc2V0LmMNCj4gaW5kZXggZTFhNzZlYzYyMC4uZTNmYWMwOWYyYSAxMDA2NDQNCj4gLS0tIGEv QmFzZVRvb2xzL1NvdXJjZS9DL1ZmckNvbXBpbGUvUGNjdHMvYW50bHIvZnNldC5jDQo+ICsrKyBi L0Jhc2VUb29scy9Tb3VyY2UvQy9WZnJDb21waWxlL1BjY3RzL2FudGxyL2ZzZXQuYw0KPiBAQCAt MzUzLDcgKzM1Myw3IEBAIHNldCAqcmtfb3V0Ow0KPiAgCQlzZXRfb3JpbigmYSwgYik7DQo+ICAJ CXNldF9mcmVlKGIpOw0KPiAgCX0NCj4gLQlzZXRfZnJlZShyayk7CQkJCS8qIHRoaXMgaGFzIG5v IG1lbWJlcnMsIGJ1dCBmcmVlIGl0J3MgbWVtb3J5ICovDQo+ICsJc2V0X2ZyZWUocmspOwkJCQkv KiB0aGlzIGhhcyBubyBtZW1iZXJzLCBidXQgZnJlZSBpdHMgbWVtb3J5ICovDQo+ICAJc2V0X29y aW4ocmtfb3V0LCByazIpOwkJLyogcmVtZW1iZXIgd2hhdCB3ZSBjb3VsZG4ndCBkbyAqLw0KPiAg CXNldF9mcmVlKHJrMik7DQo+ICAgICAgaWYgKE1SX01haW50YWluQmFja1RyYWNlKSBNUl9wb2lu dGVyU3RhY2tQb3AoJk1SX0JhY2tUcmFjZVN0YWNrKTsNCj4gQEAgLTkzNyw3ICs5MzcsNyBAQCBp bnQganR5cGU7DQo+ICAgICAgbG9uZyAgICBuOw0KPiAgICAgIGludCAgICAgdGhpc092ZXJmbG93 PTA7ICAgICAgICAgICAgIC8qIE1SOSAqLw0KPiAgICAgIGxvbmcgICAgc2V0X2RlZ192YWx1ZTsg ICAgICAgICAgICAgIC8qIE1SMTAgKi8NCj4gLSAgICBsb25nICAgIHRocmVzaGhvbGQ7ICAgICAg ICAgICAgICAgICAvKiBNUjEwICovDQo+ICsgICAgbG9uZyAgICB0aHJlc2hvbGQ7ICAgICAgICAg ICAgICAgICAvKiBNUjEwICovDQo+IA0KPiAgCXJlcXVpcmUoYmxvY2shPU5VTEwsICJOVUxMIGJs b2NrIik7DQo+ICAJcmVxdWlyZShibG9jay0+bnR5cGU9PW5KdW5jdGlvbiwgImludmFsaWQgYmxv Y2siKTsNCj4gQEAgLTk1NCw4ICs5NTQsOCBAQCBpbnQganR5cGU7DQo+ICAgICAgICAgICAJCWIg PSBzZXRfYW5kKGFsdDEtPmZzZXRbaV0sIGFsdDItPmZzZXRbaV0pOw0KPiAgLyogTVI5ICovICAg ICAgIHNldF9kZWdfdmFsdWUgPSBzZXRfZGVnKGIpOw0KPiAgLyogTVIxMCAqLyAgICAgIGlmIChu ID4gMCkgew0KPiAtLyogTVIxMCAqLyAgICAgICAgdGhyZXNoaG9sZCA9IExPTkdfTUFYIC8gbjsN Cj4gLS8qIE1SMTAgKi8gICAgICAgIGlmIChzZXRfZGVnX3ZhbHVlIDw9IHRocmVzaGhvbGQpIHsN Cj4gKy8qIE1SMTAgKi8gICAgICAgIHRocmVzaG9sZCA9IExPTkdfTUFYIC8gbjsNCj4gKy8qIE1S MTAgKi8gICAgICAgIGlmIChzZXRfZGVnX3ZhbHVlIDw9IHRocmVzaG9sZCkgew0KPiAgLyogTVIx MCAqLyAgICAgICAJbiAqPSBzZXRfZGVnX3ZhbHVlOw0KPiAgLyogTVIxMCAqLyAgICAgICAgfSBl bHNlIHsNCj4gIC8qIE1SMTAgKi8gICAgICAgICAgbj1MT05HX01BWDsNCj4gZGlmZiAtLWdpdCBh L0Jhc2VUb29scy9Tb3VyY2UvQy9WZnJDb21waWxlL1BjY3RzL2FudGxyL2ZzZXQyLmMgYi9CYXNl VG9vbHMvU291cmNlL0MvVmZyQ29tcGlsZS9QY2N0cy9hbnRsci9mc2V0Mi5jDQo+IGluZGV4IGZl MWI0ZDYyNDIuLjhhNDgyM2EwNTQgMTAwNjQ0DQo+IC0tLSBhL0Jhc2VUb29scy9Tb3VyY2UvQy9W ZnJDb21waWxlL1BjY3RzL2FudGxyL2ZzZXQyLmMNCj4gKysrIGIvQmFzZVRvb2xzL1NvdXJjZS9D L1ZmckNvbXBpbGUvUGNjdHMvYW50bHIvZnNldDIuYw0KPiBAQCAtNzM5LDcgKzczOSw3IEBAIHNl dCAqcmtfb3V0Ow0KPiAgCQl0ID0gdGxpbmsodCwgdSwgazIpOwkvKiBhbnkgYWx0cyBtaXNzaW5n IGsyIHRva3MsIGFkZCB1IG9udG8gZW5kICovDQo+ICAgICAgICAgIFRmcmVlKHUpOyAgICAgICAg ICAgICAgIC8qIE1SMTAgKi8NCj4gIAl9DQo+IC0Jc2V0X2ZyZWUocmspOwkJCQkvKiByayBpcyBl bXB0eSwgYnV0IGZyZWUgaXQncyBtZW1vcnkgKi8NCj4gKwlzZXRfZnJlZShyayk7CQkJCS8qIHJr IGlzIGVtcHR5LCBidXQgZnJlZSBpdHMgbWVtb3J5ICovDQo+ICAJc2V0X29yaW4ocmtfb3V0LCBy azIpOwkJLyogcmVtZW1iZXIgd2hhdCB3ZSBjb3VsZG4ndCBkbyAqLw0KPiAgCXNldF9mcmVlKHJr Mik7DQo+ICAJcmV0dXJuIHQ7DQo+IGRpZmYgLS1naXQgYS9CYXNlVG9vbHMvU291cmNlL0MvVmZy Q29tcGlsZS9QY2N0cy9hbnRsci9nZW4uYyBiL0Jhc2VUb29scy9Tb3VyY2UvQy9WZnJDb21waWxl L1BjY3RzL2FudGxyL2dlbi5jDQo+IGluZGV4IDk3NTU1OGYwZGQuLjhlNDEyMzlmNDcgMTAwNjQ0 DQo+IC0tLSBhL0Jhc2VUb29scy9Tb3VyY2UvQy9WZnJDb21waWxlL1BjY3RzL2FudGxyL2dlbi5j DQo+ICsrKyBiL0Jhc2VUb29scy9Tb3VyY2UvQy9WZnJDb21waWxlL1BjY3RzL2FudGxyL2dlbi5j DQo+IEBAIC0xNTkwLDcgKzE1OTAsNyBAQCBpbnQgKmxhc3RBbHRFbXB0eTsgLyogTVIyMyAqLw0K PiAgCQkgICB3aXRoIGlucHV0ICJDIg0KPiANCj4gICAgIEJlZm9yZSBNUjIxIHRoZSBlcnJvciBt ZXNzYWdlIHdvdWxkIGJlICJleHBlY3RpbmcgQiAtIGZvdW5kIEMiLiAgQWZ0ZXIgTVIyMQ0KPiAt ICAgdGhlIGVycm9yIG1lc3NhZ2Ugd291bGQgYmUgImV4cGNlY3QgQSwgQiAtIGZvdW5kIEMiLiAg VGhpcyB3YXMgZ29vZCwgYnV0IGl0DQo+ICsgICB0aGUgZXJyb3IgbWVzc2FnZSB3b3VsZCBiZSAi ZXhwZWN0IEEsIEIgLSBmb3VuZCBDIi4gIFRoaXMgd2FzIGdvb2QsIGJ1dCBpdA0KPiAgICAgY2F1 c2VkIHByb2JsZW1zIGZvciB0aG9zZSB1c2luZyBwYXJzZXIgZXhjZXB0aW9ucyBiZWNhdXNlIHRo ZSByZWZlcmVuY2UgdG8NCj4gICAgIEIgd2FzIGdlbmVyYXRlZCBpbnNpZGUgdGhlIHsuLi59IHdo ZXJlIEIgcmVhbGx5IHdhc24ndCBwYXJ0IG9mIHRoZSBibG9jay4NCj4gDQo+IEBAIC0xNzgxLDcg KzE3ODEsNyBAQCBKdW5jdGlvbiAqcTsNCj4gIAkJZm9sbG93ZWQgYnkgYSBsb29wQmxvY2sgd2hl cmVhcyB0aGUgc3RhcnQgb2YgYSAoLi4uKSsgYmxvY2sgaXMNCj4gIAkJcmVwcmVzZW50ZWQgYXMg YSBzaW5nbGUgbm9kZTogYSBwbHVzQmxvY2suICBTbyBpZiBmaXJzdF9pdGVtX2lzX2d1ZXNzX2Js b2NrDQo+ICAJCWlzIGNhbGxlZCB3aGVuIHRoZSBjdXJyZW50IG5vZGUgaXMgYSBsb29wQmVnaW4g aXQgc3RhcnRzIHdpdGggdGhlDQo+IC0JCWxvb3AgYmxvY2sgcmF0aGVyIHRoYW4gdGhlIHRoZSBz dWIgYmxvY2sgd2hpY2ggZm9sbG93cyB0aGUgbG9vcCBibG9jay4NCj4gKwkJbG9vcCBibG9jayBy YXRoZXIgdGhhbiB0aGUgc3ViIGJsb2NrIHdoaWNoIGZvbGxvd3MgdGhlIGxvb3AgYmxvY2suDQo+ ICAJCUhvd2V2ZXIsIHdlIGNhbid0IGp1c3Qgc2tpcCBwYXN0IHRoZSBsb29wIGJsb2NrIGJlY2F1 c2Ugc29tZSByb3V0aW5lcw0KPiAgCQlkZXBlbmQgb24gdGhlIG9sZCBpbXBsZW1lbnRhdGlvbi4g IFNvLCB3ZSBwcm92aWRlIGEgbmV3IGltcGxlbWVudGF0aW9uDQo+ICAJCXdoaWNoIGRvZXMgc2tp cCB0aGUgbG9vcEJsb2NrLiAgSG93ZXZlciwgd2hpY2ggc2hvdWxkIGJlIGNhbGxlZCB3aGVuID8N Cj4gQEAgLTM0OTYsNyArMzQ5Niw3IEBAIGRvIHsgICAgLyogTVIxMCAgICAgQ2hhbmdlIHJlY3Vy c2lvbiBpbnRvIGl0ZXJhdGlvbiAgICAgICAgICovDQo+ICAJCQkvKiBNUjIzDQo+ICAJCQkgICBJ ZiB0aGVyZSB3ZXJlIG9ubHkgb25lIHJldHVybiB2YWx1ZSBvcGVyYW5kIGFuZA0KPiAgCQkJICAg aXQgaGFkIGFuIGluaXRpYWxpemVyIHRoZW4gaXQgd291bGQgaGF2ZSBiZWVuDQo+IC0JCQkgICBp bml0aWFpbGl6ZWQgaW4gdGhlIGRlY2xhcmF0aW9uLg0KPiArCQkJICAgaW5pdGlhbGl6ZWQgaW4g dGhlIGRlY2xhcmF0aW9uLg0KPiAgCQkJKi8NCj4gDQo+ICAJCQlyZXR1cm5WYWx1ZUluaXRpYWxp emVyID0gZ2V0SW5pdGlhbGl6ZXIocS0+cmV0KTsgICAgICAgICAvKiBNUjIzICovDQo+IEBAIC0z NzQwLDcgKzM3NDAsNyBAQCBSdWxlRW50cnkgKnI7DQo+ICAgICAgICAgIC8qIE5PVElDRTogdGhp cyBpcyBkb25lIG9ubHkgaGVyZSwgZm9yIHRoZSBtZXRob2QgZGVmaW5pdGlvbiwgYnV0ICAqLw0K PiAgICAgICAgICAvKiAgICAgICAgIG5vdCBmb3IgdGhlIG1ldGhvZCBkZWNsYXJhdGlvbiBpbnNp ZGUgdGhlIGNsYXNzICAgICAgICAgKi8NCj4gICAgICAgICAgLyogICAgICAgICBkZWZpbml0aW9u LiBUaGlzIGlzIGV4YWN0bHkgdGhlIGJlaGF2aW91ciBkZWZpbmVkIGluICAgICovDQo+IC0gICAg ICAgIC8qICAgICAgICAgQysrIHN0YW5kYXJkIGZvciBkZWZhdWx0IHBhcmFtdGVycy4gICAgICAg ICAgICAgICAgICAgICAqLw0KPiArICAgICAgICAvKiAgICAgICAgIEMrKyBzdGFuZGFyZCBmb3Ig ZGVmYXVsdCBwYXJhbWV0ZXJzLiAgICAgICAgICAgICAgICAgICAgKi8NCj4gDQo+ICAJRHVtcEFO U0lGdW5jdGlvbkFyZ0RlZihvdXRwdXQscSwgMCAvKiBlbWl0IGluaXRpYWxpemVycyA/ICovKTsN Cj4gIAlfZ2VuKCJcbiIpOw0KPiBAQCAtNDcyNiw3ICs0NzI2LDcgQEAgaW50IGJJbml0aWFsaXpl cjsNCj4gIAkJYmxvY2tzIHRvIGxvb2sgbGlrZSAoLi4ufC4uLnwgZXBzaWxvbikgc2luY2UgdGhl cmUgd2VyZQ0KPiAgCQlpbnRlcnZlbmluZyBnZW5lcmljcy4gIFRoaXMgZml4ZXMgdGhlIHByb2Js ZW0gZm9yIHRoaXMNCj4gIAkJcGFydGljdWxhciBjYXNlLiAgVGhpbmdzIGxpa2UgYWN0aW9ucyBv ciBlbXB0eSBibG9ja3Mgb2YNCj4gLQkJdmFyaW91cyBraW5kcyB3aWxsIHN0aWxsIGNhdXNlIHBy b2JsZW1zLCBidXQgSSB3YXNudCd0DQo+ICsJCXZhcmlvdXMga2luZHMgd2lsbCBzdGlsbCBjYXVz ZSBwcm9ibGVtcywgYnV0IEkgd2Fzbid0DQo+ICAJCXByZXBhcmVkIHRvIGhhbmRsZSBwYXRob2xv Z2ljYWwgY2FzZXMgbGlrZSAoQXwoKSopLiBJdA0KPiAgCQlkb2VzIGhhbmRsZSAoQSB8ICgpKSwg d2hpY2ggaXMgYSByZWNvbW1lbmRlZCBpZGlvbSBmb3INCj4gIAkJZXBzaWxvbi4NCj4gZGlmZiAt LWdpdCBhL0Jhc2VUb29scy9Tb3VyY2UvQy9WZnJDb21waWxlL1BjY3RzL2FudGxyL2dlbmVyaWMu aCBiL0Jhc2VUb29scy9Tb3VyY2UvQy9WZnJDb21waWxlL1BjY3RzL2FudGxyL2dlbmVyaWMuaA0K PiBpbmRleCA4ZDczNmQ1MjAwLi4zMGNjOGI2MDMxIDEwMDY0NA0KPiAtLS0gYS9CYXNlVG9vbHMv U291cmNlL0MvVmZyQ29tcGlsZS9QY2N0cy9hbnRsci9nZW5lcmljLmgNCj4gKysrIGIvQmFzZVRv b2xzL1NvdXJjZS9DL1ZmckNvbXBpbGUvUGNjdHMvYW50bHIvZ2VuZXJpYy5oDQo+IEBAIC0yMTUs NyArMjE1LDcgQEAgdHlwZWRlZiBHcmFwaCBBdHRyaWI7DQo+IA0KPiAgCQkJCQkJLyogTSBhIHgg aSBtIHUgbSBzICovDQo+IA0KPiAtLyogTVIyMCBOb3RlIEcuIEhvYmJlbHQgVGhlc2UgdmFsdWVz IGFyZSBzdXBlcmNlZGVkIGJ5IHZhbHVlcyBpbiBoYXNoLmggKi8NCj4gKy8qIE1SMjAgTm90ZSBH LiBIb2JiZWx0IFRoZXNlIHZhbHVlcyBhcmUgc3VwZXJzZWRlZCBieSB2YWx1ZXMgaW4gaGFzaC5o ICovDQo+IA0KPiAgI2lmbmRlZiBIYXNoVGFibGVTaXplDQo+ICAjZGVmaW5lIEhhc2hUYWJsZVNp emUJMjUzDQo+IGRpZmYgLS1naXQgYS9CYXNlVG9vbHMvU291cmNlL0MvVmZyQ29tcGlsZS9QY2N0 cy9hbnRsci9sZXguYyBiL0Jhc2VUb29scy9Tb3VyY2UvQy9WZnJDb21waWxlL1BjY3RzL2FudGxy L2xleC5jDQo+IGluZGV4IGE0ZTdmNjliMzYuLjM1N2I4YWNlMDEgMTAwNjQ0DQo+IC0tLSBhL0Jh c2VUb29scy9Tb3VyY2UvQy9WZnJDb21waWxlL1BjY3RzL2FudGxyL2xleC5jDQo+ICsrKyBiL0Jh c2VUb29scy9Tb3VyY2UvQy9WZnJDb21waWxlL1BjY3RzL2FudGxyL2xleC5jDQo+IEBAIC02NDAs NyArNjQwLDcgQEAgSnVuY3Rpb24gKnE7DQo+ICAgKg0KPiAgICovDQo+IA0KPiAtLyogTVI1IAlK YW4gTWlra2Vsc2VuIDI2LU1heS05NyAtIGFkZGVkIGluaXRhbENvbW1hIHBhcmFtZXRlciAgICAg ICAgICAgICAgKi8NCj4gKy8qIE1SNSAJSmFuIE1pa2tlbHNlbiAyNi1NYXktOTcgLSBhZGRlZCBp bml0aWFsQ29tbWEgcGFyYW1ldGVyICAgICAgICAgICAgICAqLw0KPiANCj4gIHZvaWQNCj4gICNp ZmRlZiBfX1VTRV9QUk9UT1MNCj4gQEAgLTY5Niw3ICs2OTYsNyBAQCBGSUxFICpvdXRwdXQ7DQo+ ICAJCQkJICAmcFNlcGFyYXRvciwNCj4gIAkJCQkgICZuZXN0KTsNCj4gDQo+IC0gICAgLyogTVIy NiBIYW5kbGUgcnVsZSBhcmd1bWVudHMgc3VjaCBhczogSUlSX0Jvb2wgKElJUl9EZWNsOjoqY29u dHN0cmFpbnQpKCkNCj4gKyAgICAvKiBNUjI2IEhhbmRsZSBydWxlIGFyZ3VtZW50cyBzdWNoIGFz OiBJSVJfQm9vbCAoSUlSX0RlY2w6Oipjb25zdHJhaW50KSgpDQo+ICAgICAgICAgRm9yIHRoaXMg d2UgbmVlZCB0byBzdHJpcCBvZmYgYW55dGhpbmcgd2hpY2ggZm9sbG93cyB0aGUgc3ltYm9sLg0K PiAgICAgICAqLw0KPiANCj4gZGlmZiAtLWdpdCBhL0Jhc2VUb29scy9Tb3VyY2UvQy9WZnJDb21w aWxlL1BjY3RzL2FudGxyL21yaG9pc3QuYyBiL0Jhc2VUb29scy9Tb3VyY2UvQy9WZnJDb21waWxl L1BjY3RzL2FudGxyL21yaG9pc3QuYw0KPiBpbmRleCAxMTBiZjU5OTZmLi5iNTdmNWRlZDg0IDEw MDY0NA0KPiAtLS0gYS9CYXNlVG9vbHMvU291cmNlL0MvVmZyQ29tcGlsZS9QY2N0cy9hbnRsci9t cmhvaXN0LmMNCj4gKysrIGIvQmFzZVRvb2xzL1NvdXJjZS9DL1ZmckNvbXBpbGUvUGNjdHMvYW50 bHIvbXJob2lzdC5jDQo+IEBAIC0yMzU3LDcgKzIzNTcsNyBAQCBORVhUX1A6DQo+ICAgKiAgICAg IGV4cHJlc3Npb24sIHN1Y2ggYXMgIiNwcmVkIE5vdEEgIUEiIG9yICIjcHJlZCBOb3RYWSAhIChY ICYmIFkpIG9yDQo+ICAgKiAgICAgICIjcHJlZCBYYmFyWSAhKFggJiYgWSkiLiAgSW4gcGFydGlj dWxhciwgaXQgY2Fubm90IGJlIHNldCBieSBhbnkNCj4gICAqICAgICAgcHJlZGljYXRlIGV4cHJl c3Npb24gb2NjdXJyaW5nIHVuZGVyIGFueSBvdGhlciBjaXJjdW1zdGFuY2VzLg0KPiAtICogICAg ICBUaGUgI3ByZWQgcHJlZGljYXRlIGV4cHJlc3NzaW9ucyBhcmUgc3RvcmVkIHdpdGggaW4gcHJl ZEVudHJ5LT5wcmVkDQo+ICsgKiAgICAgIFRoZSAjcHJlZCBwcmVkaWNhdGUgZXhwcmVzc2lvbnMg YXJlIHN0b3JlZCB3aXRoIGluIHByZWRFbnRyeS0+cHJlZA0KPiAgICogICAgICBhbmQgZG8gbm90 IG5vcm1hbGx5IGFwcGVhciBhbnl3aGVyZSBlbHNlIHVudGlsIHRoZSBwcmVkaWNhdGVzIGFyZQ0K PiAgICogICAgICAidW5mb2xkZWQiIGluIG9yZGVyIHRvIHJlY29nbml6ZSByZWR1bmRhbmNpZXMs IGNvbmZsaWN0cywgYW5kDQo+ICAgKiAgICAgIHRhdXRvbG9naWVzLg0KPiBkaWZmIC0tZ2l0IGEv QmFzZVRvb2xzL1NvdXJjZS9DL1ZmckNvbXBpbGUvUGNjdHMvZGxnL2F1dG9tYXRhLmMgYi9CYXNl VG9vbHMvU291cmNlL0MvVmZyQ29tcGlsZS9QY2N0cy9kbGcvYXV0b21hdGEuYw0KPiBpbmRleCBk NmQ1ZDc4MDlkLi4yZDQ3M2VjOGI2IDEwMDY0NA0KPiAtLS0gYS9CYXNlVG9vbHMvU291cmNlL0Mv VmZyQ29tcGlsZS9QY2N0cy9kbGcvYXV0b21hdGEuYw0KPiArKysgYi9CYXNlVG9vbHMvU291cmNl L0MvVmZyQ29tcGlsZS9QY2N0cy9kbGcvYXV0b21hdGEuYw0KPiBAQCAtOTAsNyArOTAsNyBAQCBz ZXQgbmZhX3N0YXRlczsNCj4gIAlpZiAoZGZhX3NpemU8PWRmYV9hbGxvY2F0ZWQpew0KPiAgCQkv KiBuZWVkIHRvIHJlZG8gYXJyYXkgKi8NCj4gIAkJaWYgKCFkZmFfYXJyYXkpew0KPiAtCQkJLyog bmVlZCBzb21lIHRvIGRvIGluaXRhbCBhbGxvY2F0aW9uICovDQo+ICsJCQkvKiBuZWVkIHNvbWUg dG8gZG8gaW5pdGlhbCBhbGxvY2F0aW9uICovDQo+ICAJCQlkZmFfc2l6ZT1kZmFfYWxsb2NhdGVk K0RGQV9NSU47DQo+ICAJCQlkZmFfYXJyYXk9KGRmYV9ub2RlICoqKSBtYWxsb2Moc2l6ZW9mKGRm YV9ub2RlKikqDQo+ICAJCQkJZGZhX3NpemUpOw0KPiBAQCAtMTEzLDcgKzExMyw3IEBAIHNldCBu ZmFfc3RhdGVzOw0KPiAgfQ0KPiANCj4gDQo+IC0vKiBwYXN0IGEgcG9pbnRlciB0byB0aGUgc3Rh cnQgc3RhcnQgb2YgdGhlIG5mYSBncmFwaA0KPiArLyogcGFzdCBhIHBvaW50ZXIgdG8gdGhlIHN0 YXJ0IG9mIHRoZSBuZmEgZ3JhcGgNCj4gICAqIG5mYV90b19kZmEgY29udmVycyB0aGlzIGdyYXBo IHRvIGRmYS4gIFRoZSBmdW5jdGlvbiByZXR1cm5zDQo+ICAgKiBhIHBvaW50ZXIgdG8gdGhlIGZp cnN0IGRmYSBzdGF0ZS4NCj4gICAqIE5PVEU6ICBUaGUgZnVuY3Rpb24gdGhhdCBwcmludHMgb3V0 IHRoZSB0YWJsZSB3aWxsIGhhdmUgdG8gZmlndXJlIG91dCBob3cNCj4gQEAgLTIxOSw3ICsyMTks NyBAQCBGSUxFICpmOw0KPiAgI2VuZGlmDQo+IA0KPiAgLyogUmV0dXJucyBhIHBvaW50ZXIgdG8g YSBkZmEgbm9kZSB0aGF0IGhhcyB0aGUgc2FtZSBuZmEgbm9kZXMgaW4gaXQuDQo+IC0gKiBUaGlz IG1heSBvciBtYXlub3QgYmUgYSBuZXdseSBjcmVhdGVkIG5vZGUuDQo+ICsgKiBUaGlzIG1heSBv ciBtYXkgbm90IGJlIGEgbmV3bHkgY3JlYXRlZCBub2RlLg0KPiAgICovDQo+ICBkZmFfbm9kZSAq DQo+ICAjaWZkZWYgX19VU0VfUFJPVE9TDQo+IGRpZmYgLS1naXQgYS9CYXNlVG9vbHMvU291cmNl L0MvVmZyQ29tcGlsZS9QY2N0cy9kbGcvZGxnLmggYi9CYXNlVG9vbHMvU291cmNlL0MvVmZyQ29t cGlsZS9QY2N0cy9kbGcvZGxnLmgNCj4gaW5kZXggOWYzODdjMGExYy4uOTdkMTcxOGM3MCAxMDA2 NDQNCj4gLS0tIGEvQmFzZVRvb2xzL1NvdXJjZS9DL1ZmckNvbXBpbGUvUGNjdHMvZGxnL2RsZy5o DQo+ICsrKyBiL0Jhc2VUb29scy9Tb3VyY2UvQy9WZnJDb21waWxlL1BjY3RzL2RsZy9kbGcuaA0K PiBAQCAtMTE3LDcgKzExNyw3IEBAIHR5cGVkZWYgc3RydWN0IHsNCj4gIGV4dGVybiBjaGFyCXBy b2dyYW1bXTsJLyogdGVsbHMgd2hhdCBwcm9ncmFtIHRoaXMgaXMgKi8NCj4gIGV4dGVybiBjaGFy CXZlcnNpb25bXTsJLyogdGVsbHMgd2hhdCB2ZXJzaW9uIHRoaXMgaXMgKi8NCj4gIGV4dGVybiBj aGFyCSpmaWxlX3N0cltdOwkvKiBmaWxlIG5hbWVzIGJlaW5nIHVzZWQgKi8NCj4gLWV4dGVybiBp bnQJZXJyX2ZvdW5kOwkvKiBmbGFnIHRvIGluZGljYXRlIGVycm9yIG9jY3VyZWQgKi8NCj4gK2V4 dGVybiBpbnQJZXJyX2ZvdW5kOwkvKiBmbGFnIHRvIGluZGljYXRlIGVycm9yIG9jY3VycmVkICov DQo+ICBleHRlcm4gaW50CWFjdGlvbl9ubzsJLyogbGFzdCBhY3Rpb24gZnVuY3Rpb24gcHJpbnRl ZCAqLw0KPiAgZXh0ZXJuIGludAlmdW5jX2FjdGlvbjsJLyogc2hvdWxkIGFjdGlvbnMgYmUgdHVy bmVkIGludG8gZnVuY3Rpb25zPyovDQo+ICBleHRlcm4gc2V0CXVzZWRfY2hhcnM7CS8qIHVzZWQg dG8gbGFiZWwgdHJhbnMuIGFyY3MgKi8NCj4gQEAgLTEyOSw3ICsxMjksNyBAQCBleHRlcm4gaW50 CWNvbXBfbGV2ZWw7CS8qIHdoYXQgY29tcHJlc3Npb24gbGV2ZWwgdG8gdXNlICovDQo+ICBleHRl cm4gaW50CWludGVyYWN0aXZlOwkvKiBpbnRlcmFjdGl2ZSBzY2FubmVyIChhdm9pZCBsb29rYWhl YWQpKi8NCj4gIGV4dGVybiBpbnQJbW9kZV9jb3VudGVyOwkvKiBrZWVwcyB0cmFjayBvZiB0aGUg bnVtYmVyIG9mICUlbmFtZSAqLw0KPiAgZXh0ZXJuIGludAlkZmFfYmFzZXBbXTsJLyogc3RhcnQg b2YgZWFjaCBncm91cCBvZiBkZmEgKi8NCj4gLWV4dGVybiBpbnQJZGZhX2NsYXNzX25vcFtdOy8q IG51bWJlciBvZiB0cmFuc2lzdGlvbiBhcmNzIGluICovDQo+ICtleHRlcm4gaW50CWRmYV9jbGFz c19ub3BbXTsvKiBudW1iZXIgb2YgdHJhbnNpdGlvbiBhcmNzIGluICovDQo+ICAJCQkJLyogZWFj aCBkZmEgaW4gZWFjaCBtb2RlICovDQo+ICBleHRlcm4gaW50CW5mYV9hbGxvY2F0ZWQ7DQo+ICBl eHRlcm4gaW50CWRmYV9hbGxvY2F0ZWQ7DQo+IGRpZmYgLS1naXQgYS9CYXNlVG9vbHMvU291cmNl L0MvVmZyQ29tcGlsZS9QY2N0cy9kbGcvZGxnLnIgYi9CYXNlVG9vbHMvU291cmNlL0MvVmZyQ29t cGlsZS9QY2N0cy9kbGcvZGxnLnINCj4gaW5kZXggYzUzMTFmYTFiOC4uYzg4YzE1MTMxOCAxMDA2 NDQNCj4gLS0tIGEvQmFzZVRvb2xzL1NvdXJjZS9DL1ZmckNvbXBpbGUvUGNjdHMvZGxnL2RsZy5y DQo+ICsrKyBiL0Jhc2VUb29scy9Tb3VyY2UvQy9WZnJDb21waWxlL1BjY3RzL2RsZy9kbGcucg0K PiBAQCAtMjMsOSArMjMsOSBAQCByZXNvdXJjZSAnY21kbycgKDEyOCwgIkRsZyIpIHsNCj4gIAkJ CQl7MzUsIDE3NSwgNTAsIDIyNX0sDQo+ICAJCQkJIk9uIiwNCj4gIAkJCQkiLUNDIiwNCj4gLQkJ CQkiV2hlbiB0aGlzIGNvbnRyb2wgaXMgY2hlY2tlZCwgRExHIGdlbmVyYSINCj4gLQkJCQkidGVz IGEgc2Nhbm5lciB1c2luZyBDKysgY2xhc3NlcyByYXRoZXIgdCINCj4gLQkJCQkiaGFuIEMgZnVu Y3Rpb25zLiINCj4gKwkJCQkiV2hlbiB0aGlzIGNvbnRyb2wgaXMgY2hlY2tlZCwgRExHIGdlbmVy YXRlcyAiDQo+ICsJCQkJImEgc2Nhbm5lciB1c2luZyBDKysgY2xhc3NlcyByYXRoZXIgdGhhbiAi DQo+ICsJCQkJIkMgZnVuY3Rpb25zLiINCj4gIAkJCX0sDQo+ICAJCQkvKiBbMl0gKi8NCj4gIAkJ CU9yIHsNCj4gQEAgLTQxLDggKzQxLDcgQEAgcmVzb3VyY2UgJ2NtZG8nICgxMjgsICJEbGciKSB7 DQo+ICAJCQkJIkRMR0xleGVyIiwNCj4gIAkJCQlrZWVwQ2FzZSwNCj4gIAkJCQkiLWNsIiwNCj4g LQkJCQkiVGhpcyBlbnRyeSBzcGVjaWZpZXMgdGhlIG5hbWUgRExHIHVzZXMgZiINCj4gLQkJCQki b3IgdGhlIEMrKyBsZXhlciBjbGFzcy4iDQo+ICsJCQkJIlRoaXMgZW50cnkgc3BlY2lmaWVzIHRo ZSBuYW1lIERMRyB1c2VzIGZvciB0aGUgQysrIGxleGVyIGNsYXNzLiINCj4gIAkJCX0sDQo+ICAJ CQkvKiBbM10gKi8NCj4gIAkJCU5vdERlcGVuZGVudCB7DQo+IEBAIC05MCw4ICs4OSw3IEBAIHJl c291cmNlICdjbWRvJyAoMTI4LCAiRGxnIikgew0KPiAgCQkJCQl7NjYsIDI1LCA4NSwgMTM1fSwN Cj4gIAkJCQkJIk91dHB1dCBGaWxlIiwNCj4gIAkJCQkJIiIsDQo+IC0JCQkJCSJDaG9vc2UgdGhl IG5hbWUgb2YgdGhlIGZpbGUgdGhhdCB3aWxsIGhvIg0KPiAtCQkJCQkibGQgdGhlIERMRy1wcm9k dWNlZCBzY2FubmVyLiINCj4gKwkJCQkJIkNob29zZSB0aGUgbmFtZSBvZiB0aGUgZmlsZSB0aGF0 IHdpbGwgaG9sZCB0aGUgRExHLXByb2R1Y2VkIHNjYW5uZXIuIg0KPiAgCQkJCX0sDQo+ICAJCQkJ Tm9Nb3JlIHsNCj4gDQo+IEBAIC0xNjEsOCArMTU5LDcgQEAgcmVzb3VyY2UgJ2NtZG8nICgxMjgs ICJEbGciKSB7DQo+ICAJCQkJIm1vZGUuaCIsDQo+ICAJCQkJa2VlcENhc2UsDQo+ICAJCQkJIi1t IiwNCj4gLQkJCQkiVGhpcyBlbnRyeSBzcGVjaWZpZXMgdGhlIG5hbWUgRExHIHVzZXMgZiINCj4g LQkJCQkib3IgaXRzIGxleGljYWwgbW9kZSBvdXRwdXQgZmlsZS4iDQo+ICsJCQkJIlRoaXMgZW50 cnkgc3BlY2lmaWVzIHRoZSBuYW1lIERMRyB1c2VzIGZvciBpdHMgbGV4aWNhbCBtb2RlIG91dHB1 dCBmaWxlLiINCj4gIAkJCX0sDQo+ICAJCQkvKiBbMTFdICovDQo+ICAJCQlOb3REZXBlbmRlbnQg ew0KPiBAQCAtMTcxLDE1ICsxNjgsMTQgQEAgcmVzb3VyY2UgJ2NtZG8nICgxMjgsICJEbGciKSB7 DQo+ICAJCQlSYWRpb0J1dHRvbnMgew0KPiAgCQkJCXsJLyogYXJyYXkgcmFkaW9BcnJheTogMyBl bGVtZW50cyAqLw0KPiAgCQkJCQkvKiBbMV0gKi8NCj4gLQkJCQkJezEzNCwgMTc1LCAxNDksIDI1 NX0sICJOb25lIiwgIiIsIFNldCwgIldoZW4gdGhpcyBvcHRpb24gaXMgc2VsZWN0ZWQsIERMRyB3 aWxsIG4iDQo+IC0JCQkJCSJvdCBjb21wcmVzcyBpdHMgdGFibGVzLiIsDQo+ICsJCQkJCXsxMzQs IDE3NSwgMTQ5LCAyNTV9LCAiTm9uZSIsICIiLCBTZXQsICJXaGVuIHRoaXMgb3B0aW9uIGlzIHNl bGVjdGVkLCBETEcgd2lsbCBub3QgIg0KPiArCQkJCQkiY29tcHJlc3MgaXRzIHRhYmxlcy4iLA0K PiAgCQkJCQkvKiBbMl0gKi8NCj4gLQkJCQkJezEzNCwgMjY1LCAxNDksIDM0NX0sICJMZXZlbCAx IiwgIi1DMSIsIE5vdFNldCwgIldoZW4gdGhpcyBvcHRpb24gaXMgc2VsZWN0ZWQsIERMRyB3aWxs IHIiDQo+IC0JCQkJCSJlbW92ZSBhbGwgdW51c2VkIGNoYXJhY3RlcnMgZnJvbSB0aGUgdHJhIg0K PiAtCQkJCQkibnNpdGlvbi1mcm9tIHRhYmxlLiIsDQo+ICsJCQkJCXsxMzQsIDI2NSwgMTQ5LCAz NDV9LCAiTGV2ZWwgMSIsICItQzEiLCBOb3RTZXQsICJXaGVuIHRoaXMgb3B0aW9uIGlzIHNlbGVj dGVkLCBETEcgd2lsbCAiDQo+ICsJCQkJCSJyZW1vdmUgYWxsIHVudXNlZCBjaGFyYWN0ZXJzIGZy b20gdGhlIHRyYW5zaXRpb24tZnJvbSB0YWJsZS4iLA0KPiAgCQkJCQkvKiBbM10gKi8NCj4gLQkJ CQkJezEzNCwgMzYwLCAxNDksIDQ1MH0sICJMZXZlbCAyIiwgIi1DMiIsIE5vdFNldCwgIldoZW4g dGhpcyBvcHRpb24gaXMgc2VsZWN0ZWQsIERMRyB3aWxsIHAiDQo+IC0JCQkJCSJlcmZvcm0gbGV2 ZWwgMSBjb21wcmVzc2lvbiBwbHVzIGl0IHdpbGwgIg0KPiArCQkJCQl7MTM0LCAzNjAsIDE0OSwg NDUwfSwgIkxldmVsIDIiLCAiLUMyIiwgTm90U2V0LCAiV2hlbiB0aGlzIG9wdGlvbiBpcyBzZWxl Y3RlZCwgRExHIHdpbGwgIg0KPiArCQkJCQkicGVyZm9ybSBsZXZlbCAxIGNvbXByZXNzaW9uIHBs dXMgaXQgd2lsbCAiDQo+ICAJCQkJCSJtYXAgZXF1aXZhbGVudCBjaGFyYWN0ZXJzIGludG8gdGhl IHNhbWUgIg0KPiAgCQkJCQkiY2hhcmFjdGVyIGNsYXNzZXMuIg0KPiAgCQkJCX0NCj4gQEAgLTIw Miw4ICsxOTgsOCBAQCByZXNvdXJjZSAnY21kbycgKDEyOCwgIkRsZyIpIHsNCj4gIAkJCQl7MTY1 LCAyMCwgMTgwLCAxNDV9LA0KPiAgCQkJCSJDYXNlIFNlbnNpdGl2ZSIsDQo+ICAJCQkJIi1jaSIs DQo+IC0JCQkJIldoZW4gdGhpcyBjb250cm9sIGlzIGNoZWNrZWQsIHRoZSBETEcgYXUiDQo+IC0J CQkJInRvbWF0b24gd2lsbCB0cmVhdCB1cHBlciBhbmQgbG93ZXIgY2FzZSAiDQo+ICsJCQkJIldo ZW4gdGhpcyBjb250cm9sIGlzIGNoZWNrZWQsIHRoZSBETEcgYXV0b21hdG9uICINCj4gKwkJCQki d2lsbCB0cmVhdCB1cHBlciBhbmQgbG93ZXIgY2FzZSAiDQo+ICAJCQkJImNoYXJhY3RlcnMgaWRl bnRpY2FsbHkuIg0KPiAgCQkJfSwNCj4gIAkJCS8qIFsxNF0gKi8NCj4gQEAgLTIxNSw5ICsyMTEs OCBAQCByZXNvdXJjZSAnY21kbycgKDEyOCwgIkRsZyIpIHsNCj4gIAkJCQl7MTY1LCAxNTAsIDE4 MCwgMzAwfSwNCj4gIAkJCQkiSW50ZXJhY3RpdmUgU2Nhbm5lciIsDQo+ICAJCQkJIi1pIiwNCj4g LQkJCQkiV2hlbiB0aGlzIGNvbnRyb2wgaXMgY2hlY2tlZCwgRExHIHdpbGwgZyINCj4gLQkJCQki ZW5lcmF0ZSBhcyBpbnRlcmFjdGl2ZSBhIHNjYW5uZXIgYXMgcG9zcyINCj4gLQkJCQkiaWJsZS4i DQo+ICsJCQkJIldoZW4gdGhpcyBjb250cm9sIGlzIGNoZWNrZWQsIERMRyB3aWxsIGdlbmVyYXRl ICINCj4gKwkJCQkiYXMgaW50ZXJhY3RpdmUgYSBzY2FubmVyIGFzIHBvc3NpYmxlLiINCj4gIAkJ CX0sDQo+ICAJCQkvKiBbMTVdICovDQo+ICAJCQlOb3REZXBlbmRlbnQgew0KPiBAQCAtMjI5LDgg KzIyNCw4IEBAIHJlc291cmNlICdjbWRvJyAoMTI4LCAiRGxnIikgew0KPiAgCQkJCSJBbWJpZ3Vp dHkgV2FybmluZ3MiLA0KPiAgCQkJCSItV2FtYmlndWl0eSIsDQo+ICAJCQkJIldoZW4gdGhpcyBj b250cm9sIGlzIGNoZWNrZWQsIERMRyB3YXJucyAiDQo+IC0JCQkJImlmIG1vcmUgdGhhbiBvbmUg cmVndWxhciBleHByZXNzaW9uIGNvdWwiDQo+IC0JCQkJImQgbWF0Y2ggdGhlIHNhbWUgY2hhcmFj dGVyIHNlcXVlbmNlLiINCj4gKwkJCQkiaWYgbW9yZSB0aGFuIG9uZSByZWd1bGFyIGV4cHJlc3Np b24gY291bGQgIg0KPiArCQkJCSJtYXRjaCB0aGUgc2FtZSBjaGFyYWN0ZXIgc2VxdWVuY2UuIg0K PiAgCQkJfSwNCj4gIAkJCS8qIFsxNl0gKi8NCj4gIAkJCU5vdERlcGVuZGVudCB7DQo+IEBAIC0y NDAsOSArMjM1LDkgQEAgcmVzb3VyY2UgJ2NtZG8nICgxMjgsICJEbGciKSB7DQo+ICAJCQkJVmVy c2lvblN0cmluZyB7DQo+ICAJCQkJCSIxLjMzTVIiDQo+ICAJCQkJfSwNCj4gLQkJCQkiUENDVFMg d2FzIHdyaXR0ZW4gYnkgVGVyZW5jZSBQYXJyLCBSdXNzZSINCj4gLQkJCQkibGwgUXVvbmcsIFdp bGwgQ29oZW4sIGFuZCBIYW5rIERpZXR6OiAxOSINCj4gLQkJCQkiODktMTk5OC4gTVBXIHBvcnQg YnkgU2NvdHQgSGFuZXkuIiwNCj4gKwkJCQkiUENDVFMgd2FzIHdyaXR0ZW4gYnkgVGVyZW5jZSBQ YXJyLCBSdXNzZWxsICINCj4gKwkJCQkiUXVvbmcsIFdpbGwgQ29oZW4sIGFuZCBIYW5rIERpZXR6 OiAxOTg5LTE5OTguICINCj4gKwkJCQkiTVBXIHBvcnQgYnkgU2NvdHQgSGFuZXkuIiwNCj4gIAkJ CQlub0RpYWxvZw0KPiAgCQkJfSwNCj4gIAkJCS8qIFsxN10gKi8NCj4gQEAgLTI2Niw4ICsyNjEs OCBAQCByZXNvdXJjZSAnY21kbycgKDEyOCwgIkRsZyIpIHsNCj4gIAkJCQl7MTQyLCAyMCwgMTU3 LCAxNDh9LA0KPiAgCQkJCSJHZW5lcmF0ZSBBTlNJIEMiLA0KPiAgCQkJCSItZ2EiLA0KPiAtCQkJ CSJXaGVuIHRoaXMgY29udHJvbCBpcyBjaGVja2VkLCBETEcgZ2VuZXJhIg0KPiAtCQkJCSJ0ZXMg QU5TSSBDIGNvbXBhdGlibGUgY29kZS4iDQo+ICsJCQkJIldoZW4gdGhpcyBjb250cm9sIGlzIGNo ZWNrZWQsIERMRyBnZW5lcmF0ZXMgIg0KPiArCQkJCSJBTlNJIEMgY29tcGF0aWJsZSBjb2RlLiIN Cj4gIAkJCX0NCj4gIAkJfQ0KPiAgCX0NCj4gZGlmZiAtLWdpdCBhL0Jhc2VUb29scy9Tb3VyY2Uv Qy9WZnJDb21waWxlL1BjY3RzL2RsZy9kbGdfcC5jIGIvQmFzZVRvb2xzL1NvdXJjZS9DL1ZmckNv bXBpbGUvUGNjdHMvZGxnL2RsZ19wLmMNCj4gaW5kZXggNTFmNzk3NTlmYi4uZmJhZjkzYWZjNiAx MDA2NDQNCj4gLS0tIGEvQmFzZVRvb2xzL1NvdXJjZS9DL1ZmckNvbXBpbGUvUGNjdHMvZGxnL2Rs Z19wLmMNCj4gKysrIGIvQmFzZVRvb2xzL1NvdXJjZS9DL1ZmckNvbXBpbGUvUGNjdHMvZGxnL2Rs Z19wLmMNCj4gQEAgLTgxMyw3ICs4MTMsNyBAQCBuZXdfbmZhX25vZGUoKQ0KPiAgICBpZiAobmZh X3NpemU8PW5mYV9hbGxvY2F0ZWQpew0KPiAgICAgIC8qIG5lZWQgdG8gcmVkbyBhcnJheSAqLw0K PiAgICAgIGlmICghbmZhX2FycmF5KXsNCj4gLSAgICAgIC8qIG5lZWQgc29tZSB0byBkbyBpbml0 YWwgYWxsb2NhdGlvbiAqLw0KPiArICAgICAgLyogbmVlZCBzb21lIHRvIGRvIGluaXRpYWwgYWxs b2NhdGlvbiAqLw0KPiAgICAgICAgbmZhX3NpemU9bmZhX2FsbG9jYXRlZCtORkFfTUlOOw0KPiAg ICAgICAgbmZhX2FycmF5PShuZmFfbm9kZSAqKikgbWFsbG9jKHNpemVvZihuZmFfbm9kZSopKg0K PiAgICAgICAgbmZhX3NpemUpOw0KPiBkaWZmIC0tZ2l0IGEvQmFzZVRvb2xzL1NvdXJjZS9DL1Zm ckNvbXBpbGUvUGNjdHMvZGxnL2RsZ19wLmcgYi9CYXNlVG9vbHMvU291cmNlL0MvVmZyQ29tcGls ZS9QY2N0cy9kbGcvZGxnX3AuZw0KPiBpbmRleCAwZTNmZTZkOWQ3Li42NTdmMzI1MWE2IDEwMDY0 NA0KPiAtLS0gYS9CYXNlVG9vbHMvU291cmNlL0MvVmZyQ29tcGlsZS9QY2N0cy9kbGcvZGxnX3Au Zw0KPiArKysgYi9CYXNlVG9vbHMvU291cmNlL0MvVmZyQ29tcGlsZS9QY2N0cy9kbGcvZGxnX3Au Zw0KPiBAQCAtNDYzLDcgKzQ2Myw3IEBAIG5ld19uZmFfbm9kZSgpDQo+ICAJaWYgKG5mYV9zaXpl PD1uZmFfYWxsb2NhdGVkKXsNCj4gIAkJLyogbmVlZCB0byByZWRvIGFycmF5ICovDQo+ICAJCWlm ICghbmZhX2FycmF5KXsNCj4gLQkJCS8qIG5lZWQgc29tZSB0byBkbyBpbml0YWwgYWxsb2NhdGlv biAqLw0KPiArCQkJLyogbmVlZCBzb21lIHRvIGRvIGluaXRpYWwgYWxsb2NhdGlvbiAqLw0KPiAg CQkJbmZhX3NpemU9bmZhX2FsbG9jYXRlZCtORkFfTUlOOw0KPiAgCQkJbmZhX2FycmF5PShuZmFf bm9kZSAqKikgbWFsbG9jKHNpemVvZihuZmFfbm9kZSopKg0KPiAgCQkJCW5mYV9zaXplKTsNCj4g ZGlmZiAtLWdpdCBhL0Jhc2VUb29scy9Tb3VyY2UvQy9WZnJDb21waWxlL1BjY3RzL2RsZy9yZWxh YmVsLmMgYi9CYXNlVG9vbHMvU291cmNlL0MvVmZyQ29tcGlsZS9QY2N0cy9kbGcvcmVsYWJlbC5j DQo+IGluZGV4IDBiOGJjMTYzZDEuLmYyZGNlMzBmNWYgMTAwNjQ0DQo+IC0tLSBhL0Jhc2VUb29s cy9Tb3VyY2UvQy9WZnJDb21waWxlL1BjY3RzL2RsZy9yZWxhYmVsLmMNCj4gKysrIGIvQmFzZVRv b2xzL1NvdXJjZS9DL1ZmckNvbXBpbGUvUGNjdHMvZGxnL3JlbGFiZWwuYw0KPiBAQCAtMTM0LDcg KzEzNCw3IEBAIGludAkJbGV2ZWw7CS8qIGNvbXByZXNzaW9uIGxldmVsIHRvIHVzZXMgKi8NCj4g DQo+IA0KPiAgLyogZ2l2ZW4gcG9pbnRlciB0byBiZWdpbm5pbmcgb2YgZ3JhcGggYW5kIHJlY3Vy c2l2ZWx5IHdhbGtzIGl0IHRyeWluZw0KPiAtICogdG8gZmluZCBhIG1heGltYWwgcGFydGl0aW9u LiAgVGhpcyBwYXJ0aW9uIGluIHJldHVybmVkIGluIG1heGltYWxfY2xhc3MNCj4gKyAqIHRvIGZp bmQgYSBtYXhpbWFsIHBhcnRpdGlvbi4gIFRoaXMgcGFydGl0aW9uIGluIHJldHVybmVkIGluIG1h eGltYWxfY2xhc3MNCj4gICAqLw0KPiAgI2lmZGVmIF9fVVNFX1BST1RPUw0KPiAgdm9pZCBpbnRl cnNlY3RfbmZhX2xhYmVscyhuZmFfbm9kZSogc3RhcnQsc2V0KiBtYXhpbWFsX2NsYXNzKQ0KPiBk aWZmIC0tZ2l0IGEvQmFzZVRvb2xzL1NvdXJjZS9DL1ZmckNvbXBpbGUvUGNjdHMvaC9BVG9rUHRy SW1wbC5oIGIvQmFzZVRvb2xzL1NvdXJjZS9DL1ZmckNvbXBpbGUvUGNjdHMvaC9BVG9rUHRySW1w bC5oDQo+IGluZGV4IGExZWZjM2IzYjkuLjRkNjgyYTVlZjcgMTAwNjQ0DQo+IC0tLSBhL0Jhc2VU b29scy9Tb3VyY2UvQy9WZnJDb21waWxlL1BjY3RzL2gvQVRva1B0ckltcGwuaA0KPiArKysgYi9C YXNlVG9vbHMvU291cmNlL0MvVmZyQ29tcGlsZS9QY2N0cy9oL0FUb2tQdHJJbXBsLmgNCj4gQEAg LTY5LDcgKzY5LDcgQEAgQU5UTFJUb2tlblB0cjo6fkFOVExSVG9rZW5QdHIoKQ0KPiANCj4gIC8v DQo+ICAvLyAgOC1BcHItOTcJTVIxCU1ha2Ugb3BlcmF0b3IgLT4gYSBjb25zdCBtZW1iZXIgZnVu Y3Rpb24NCj4gLS8vCQkJICBhcyB3ZWFsbCBhcyBzb21lIG90aGVyIG1lbWJlciBmdW5jdGlvbnMN Cj4gKy8vCQkJICBhcyB3ZWxsIGFzIHNvbWUgb3RoZXIgbWVtYmVyIGZ1bmN0aW9ucw0KPiAgLy8N Cj4gIEFOVExSVG9rZW5QdHImIEFOVExSVG9rZW5QdHI6Om9wZXJhdG9yID0gKGNvbnN0IEFOVExS VG9rZW5QdHIgJiBsaHMpICAgIC8vIE1SMQ0KPiAgew0KPiBkaWZmIC0tZ2l0IGEvQmFzZVRvb2xz L1NvdXJjZS9DL1ZmckNvbXBpbGUvUGNjdHMvaC9ETEdfc3RyZWFtX2lucHV0LmggYi9CYXNlVG9v bHMvU291cmNlL0MvVmZyQ29tcGlsZS9QY2N0cy9oL0RMR19zdHJlYW1faW5wdXQuaA0KPiBpbmRl eCBkMjE0N2Y1MjE3Li5mM2I0Yjc5ZThhIDEwMDY0NA0KPiAtLS0gYS9CYXNlVG9vbHMvU291cmNl L0MvVmZyQ29tcGlsZS9QY2N0cy9oL0RMR19zdHJlYW1faW5wdXQuaA0KPiArKysgYi9CYXNlVG9v bHMvU291cmNlL0MvVmZyQ29tcGlsZS9QY2N0cy9oL0RMR19zdHJlYW1faW5wdXQuaA0KPiBAQCAt Niw3ICs2LDcgQEANCj4gIC8qIEJ5IEh1YmVydCBIb2xpbiAoSHViZXJ0LkhvbGluQEJpZ2Zvb3Qu Y29tKSwgMTk5OC4JCSovDQo+ICAvKgkJCQkJCQkJCQkJCQkJCSovDQo+ICAvKiBUaGlzIGlzIGNv bXBsZXRlbHkgZnJlZSBzdHVmZiwgZG8gd2hhdGV2ZXIgeW91IHdhbnQgd2l0aAkqLw0KPiAtLyog aXQgKGJ1dCB0aGVuLCBJIHdpbGwgdGFrZSBubyByZXNwb25zYWJpbGl0eSBmb3Igd2hhdGV2ZXIJ Ki8NCj4gKy8qIGl0IChidXQgdGhlbiwgSSB3aWxsIHRha2Ugbm8gcmVzcG9uc2liaWxpdHkgZm9y IHdoYXRldmVyCSovDQo+ICAvKiBtYXkgaGFwcGVuIGlmIHlvdSBkbyBlaXRoZXIuLi4gY2F2ZWF0 IGVtcHRvciEpLgkJCSovDQo+ICAvKgkJCQkJCQkJCQkJCQkJCSovDQo+ICAvKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KPiBAQCAt MjQsMTIgKzI0LDEyIEBAIFBDQ1RTX05BTUVTUEFDRV9TVEQNCj4gDQo+IA0KPiAgLy8gTk9URVM6 CVRoZSBzZW1hbnRpY3Mgb2YgdGhlIGNvcHkgY29uc3RydWN0b3INCj4gLS8vCQkJYW5kIHRoZSBh ZmZlY3RhdGlvbiBvcGVyYXRvciBtYXkgYmUgdW53YXJhbnRlZC4uLg0KPiArLy8JCQlhbmQgdGhl IGFmZmVjdGF0aW9uIG9wZXJhdG9yIG1heSBiZSB1bndhcnJhbnRlZC4uLg0KPiAgLy8JCQlhbmQg dGhlIHN0cmVhbSBtYXkgbm90IGJlIHJlc2V0Lg0KPiAgLy8NCj4gIC8vCQkJSXQgd291bGQgaGF2 ZSBiZWVuIHNvIG11Y2ggbmljZXIgZm9yIG5leHRDaGFyKCkNCj4gIC8vCQkJdG8gdGhyb3cgKG9m IGZvciB0aGUgRExHSW5wdXRTdHJlYW0gdG8gY2hhbmdlIHN0YXR1cykNCj4gLS8vCQkJdXBvbiBo aXRpbmcgRU9GIHRoYW4gdG8gcmV0dXJuIGFuICJpbnQiLi4uDQo+ICsvLwkJCXVwb24gaGl0dGlu ZyBFT0YgdGhhbiB0byByZXR1cm4gYW4gImludCIuLi4NCj4gDQo+ICB0ZW1wbGF0ZQk8DQo+ICAJ CQkJY2xhc3MgRSwNCj4gZGlmZiAtLWdpdCBhL0Jhc2VUb29scy9Tb3VyY2UvQy9WZnJDb21waWxl L1BjY3RzL2gvYW50bHIuaCBiL0Jhc2VUb29scy9Tb3VyY2UvQy9WZnJDb21waWxlL1BjY3RzL2gv YW50bHIuaA0KPiBpbmRleCA4MDY2NDUzNWQzLi4yN2EzMjQyNzQyIDEwMDY0NA0KPiAtLS0gYS9C YXNlVG9vbHMvU291cmNlL0MvVmZyQ29tcGlsZS9QY2N0cy9oL2FudGxyLmgNCj4gKysrIGIvQmFz ZVRvb2xzL1NvdXJjZS9DL1ZmckNvbXBpbGUvUGNjdHMvaC9hbnRsci5oDQo+IEBAIC03OTcsNyAr Nzk3LDcgQEAgZXh0ZXJuIGludCB6emd1ZXNzaW5nOw0KPiAgZXh0ZXJuIHp6am1wX2J1ZiB6emd1 ZXNzX3N0YXJ0Ow0KPiAgI2VuZGlmDQo+IA0KPiAtLyogRGVmaW5lIGdsb2JhbCB2ZXJpYWJsZXMg dGhhdCByZWZlciB0byB2YWx1ZXMgZXhwb3J0ZWQgYnkgdGhlIHNjYW5uZXIuDQo+ICsvKiBEZWZp bmUgZ2xvYmFsIHZhcmlhYmxlcyB0aGF0IHJlZmVyIHRvIHZhbHVlcyBleHBvcnRlZCBieSB0aGUg c2Nhbm5lci4NCj4gICAqIFRoZXNlIGRlY2xhcmF0aW9ucyBkdXBsaWNhdGUgdGhvc2UgaW4gZGxn ZGVmLmgsIGJ1dCBhcmUgbmVlZGVkDQo+ICAgKiBpZiBBTlRMUiBpcyBub3QgdG8gZ2VuZXJhdGUg YSAuZGxnIGZpbGUgKC1neCk7IFBTLCB0aGlzIGlzIGEgaGFjay4NCj4gICAqLw0KPiBkaWZmIC0t Z2l0IGEvQmFzZVRvb2xzL1NvdXJjZS9DL1ZmckNvbXBpbGUvVmZyQ29tcGlsZXIuaCBiL0Jhc2VU b29scy9Tb3VyY2UvQy9WZnJDb21waWxlL1ZmckNvbXBpbGVyLmgNCj4gaW5kZXggMzUzMzlkMDFj NS4uZjk2NzA3ZGViZiAxMDA2NDQNCj4gLS0tIGEvQmFzZVRvb2xzL1NvdXJjZS9DL1ZmckNvbXBp bGUvVmZyQ29tcGlsZXIuaA0KPiArKysgYi9CYXNlVG9vbHMvU291cmNlL0MvVmZyQ29tcGlsZS9W ZnJDb21waWxlci5oDQo+IEBAIC0xLDYgKzEsNiBAQA0KPiAgLyoqIEBmaWxlDQo+IA0KPiAtICBW ZnJDb21waWxlciBpbnRlcm5hbCBkZWZpbnRpb25zLg0KPiArICBWZnJDb21waWxlciBpbnRlcm5h bCBkZWZpbml0aW9ucy4NCj4gDQo+ICBDb3B5cmlnaHQgKGMpIDIwMDQgLSAyMDE4LCBJbnRlbCBD b3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ICBUaGlzIHByb2dyYW0gYW5k IHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+IGRpZmYgLS1naXQgYS9CYXNlVG9vbHMvU291 cmNlL0MvVmZyQ29tcGlsZS9WZnJFcnJvci5jcHAgYi9CYXNlVG9vbHMvU291cmNlL0MvVmZyQ29t cGlsZS9WZnJFcnJvci5jcHANCj4gaW5kZXggYzEwNWQ3M2JlYS4uN2RmZWEzYWZkYSAxMDA2NDQN Cj4gLS0tIGEvQmFzZVRvb2xzL1NvdXJjZS9DL1ZmckNvbXBpbGUvVmZyRXJyb3IuY3BwDQo+ICsr KyBiL0Jhc2VUb29scy9Tb3VyY2UvQy9WZnJDb21waWxlL1ZmckVycm9yLmNwcA0KPiBAQCAtNDUs NyArNDUsNyBAQCBzdGF0aWMgU1ZGUl9FUlJPUl9IQU5ETEUgVkZSX0VSUk9SX0hBTkRMRV9UQUJM RSBbXSA9IHsNCj4gICAgeyBWRlJfUkVUVVJOX0RBVEFfU1RSSU5HX0VSUk9SLCAiOiBkYXRhIGZp ZWxkIHN0cmluZyBlcnJvciBvciBub3Qgc3VwcG9ydCJ9LA0KPiAgICB7IFZGUl9SRVRVUk5fREVG QVVMVF9WQUxVRV9SRURFRklORUQsICI6IGRlZmF1bHQgdmFsdWUgcmUtZGVmaW5lZCB3aXRoIGRp ZmZlcmVudCB2YWx1ZSJ9LA0KPiAgICB7IFZGUl9SRVRVUk5fQ09OU1RBTlRfT05MWSwgIjogb25s eSBjb25zdGFudCBpcyBhbGxvd2VkIGluIHRoZSBleHByZXNzaW9uIn0sDQo+IC0gIHsgVkZSX1JF VFVSTl9WQVJTVE9SRV9OQU1FX1JFREVGSU5FRF9FUlJPUiwgIjogVmFyc3RvcmUgbmFtZSBpcyBk ZWZpbmVkIGJ5IG1vcmUgdGhhbiBvbmUgdmFyc3RvcmVzLCBpdCBjYW4ndCBiZSByZWZlcnJlZCBh cw0KPiB2YXJzdG9yZSwgb25seSB2YXJzdG9yZSBzdHJ1Y3VyZSBuYW1lIGNvdWxkIGJlIHVzZWQu In0sDQo+ICsgIHsgVkZSX1JFVFVSTl9WQVJTVE9SRV9OQU1FX1JFREVGSU5FRF9FUlJPUiwgIjog VmFyc3RvcmUgbmFtZSBpcyBkZWZpbmVkIGJ5IG1vcmUgdGhhbiBvbmUgdmFyc3RvcmVzLCBpdCBj YW4ndCBiZSByZWZlcnJlZCBhcw0KPiB2YXJzdG9yZSwgb25seSB2YXJzdG9yZSBzdHJ1Y3R1cmUg bmFtZSBjb3VsZCBiZSB1c2VkLiJ9LA0KPiAgICB7IFZGUl9SRVRVUk5fQklUX1dJRFRIX0VSUk9S LCAiOiBiaXQgd2lkdGggbXVzdCBiZSA8PSBzaXplb2YgKHR5cGUpICogOCBhbmQgdGhlIG1heCB3 aWR0aCBjYW4gbm90ID4gMzIiIH0sDQo+ICAgIHsgVkZSX1JFVFVSTl9TVFJJTkdfVE9fVUlOVF9P VkVSRkxPVywgIjogU3RyaW5nIHRvIFVJTlQqIE92ZXJmbG93In0sDQo+ICAgIHsgVkZSX1JFVFVS Tl9DT0RFVU5ERUZJTkVELCAiOiB1bmRlZmluZWQgRXJyb3IgQ29kZSIgfQ0KPiBkaWZmIC0tZ2l0 IGEvQmFzZVRvb2xzL1NvdXJjZS9DL1ZmckNvbXBpbGUvVmZyRm9ybVBrZy5jcHAgYi9CYXNlVG9v bHMvU291cmNlL0MvVmZyQ29tcGlsZS9WZnJGb3JtUGtnLmNwcA0KPiBpbmRleCAyOTQ0ZmZjNzZi Li42ZTYzYjY5ODI0IDEwMDY0NA0KPiAtLS0gYS9CYXNlVG9vbHMvU291cmNlL0MvVmZyQ29tcGls ZS9WZnJGb3JtUGtnLmNwcA0KPiArKysgYi9CYXNlVG9vbHMvU291cmNlL0MvVmZyQ29tcGlsZS9W ZnJGb3JtUGtnLmNwcA0KPiBAQCAtOTQ1LDcgKzk0NSw3IEBAIENGb3JtUGtnOjpEZWNsYXJlUGVu ZGluZ1F1ZXN0aW9uICgNCj4gICAgICAgICAgfQ0KPiAgICAgICAgICBDTk9iai5TZXRGbGFncyAo MCwgSW5mby5tVmFyVHlwZSk7DQo+ICAgICAgICAgIC8vDQo+IC0gICAgICAgIC8vIFVzZSBtYXhp bXVtIHZhbHVlIG5vdCB0byBsaW1pdCB0aGUgdmFpbGQgdmFsdWUgZm9yIHRoZSB1bmRlZmluZWQg cXVlc3Rpb24uDQo+ICsgICAgICAgIC8vIFVzZSBtYXhpbXVtIHZhbHVlIG5vdCB0byBsaW1pdCB0 aGUgdmFsaWQgdmFsdWUgZm9yIHRoZSB1bmRlZmluZWQgcXVlc3Rpb24uDQo+ICAgICAgICAgIC8v DQo+ICAgICAgICAgIHN3aXRjaCAoSW5mby5tVmFyVHlwZSkgew0KPiAgICAgICAgICBjYXNlIEVG SV9JRlJfVFlQRV9OVU1fU0laRV82NDoNCj4gQEAgLTE1MTUsNyArMTUxNSw3IEBAIENJZnJSZWNv cmRJbmZvREI6OklmclJlY29yZEFkanVzdCAoDQo+ICAgICAgICB9DQo+ICAgICAgICAvLw0KPiAg ICAgICAgLy8gZXh0cmFjdCBpbmNvbnNpc3RlbnQgb3Bjb2RlIGxpc3QNCj4gLSAgICAgIC8vIHBO b2RlIGlzIEluY29zaXN0ZW50IG9wY29kZSwgdE5vZGUgaXMgRW5kIE9wY29kZQ0KPiArICAgICAg Ly8gcE5vZGUgaXMgSW5jb25zaXN0ZW50IG9wY29kZSwgdE5vZGUgaXMgRW5kIE9wY29kZQ0KPiAg ICAgICAgLy8NCj4gDQo+ICAgICAgICAvLw0KPiBkaWZmIC0tZ2l0IGEvQmFzZVRvb2xzL1NvdXJj ZS9DL1ZmckNvbXBpbGUvVmZyU3ludGF4LmcgYi9CYXNlVG9vbHMvU291cmNlL0MvVmZyQ29tcGls ZS9WZnJTeW50YXguZw0KPiBpbmRleCBjNzJhNjJhZTkxLi5mODQ2NWQ0N2Q0IDEwMDY0NA0KPiAt LS0gYS9CYXNlVG9vbHMvU291cmNlL0MvVmZyQ29tcGlsZS9WZnJTeW50YXguZw0KPiArKysgYi9C YXNlVG9vbHMvU291cmNlL0MvVmZyQ29tcGlsZS9WZnJTeW50YXguZw0KPiBAQCAtNjQsNyArNjQs NyBAQCBWZnJQYXJzZXJTdGFydCAoDQo+ICAvLw0KPiAgLy8gRGVmaW5lIGEgbGV4aWNhbCBjbGFz cyBmb3IgcGFyc2luZyBxdW90ZWQgc3RyaW5ncy4gQmFzaWNhbGx5DQo+ICAvLyBzdGFydHMgd2l0 aCBhIGRvdWJsZSBxdW90ZSwgYW5kIGVuZHMgd2l0aCBhIGRvdWJsZSBxdW90ZSB0aGF0DQo+IC0v LyBpcyBub3QgcHJlY2VlZGVkIHdpdGggYSBiYWNrc2xhc2guDQo+ICsvLyBpcyBub3QgcHJlY2Vk ZWQgd2l0aCBhIGJhY2tzbGFzaC4NCj4gIC8vDQo+ICAjbGV4Y2xhc3MgUVVPVEVEX1NUUklORw0K PiAgI3Rva2VuIFRoZVN0cmluZyAgICAgICAgICAgICJ+W1wiXSpcIiIgPDwgbW9kZSAoU1RBUlQp OyA+Pg0KPiBAQCAtMTIxNCw3ICsxMjE0LDcgQEAgdmZyU3RhdGVtZW50VmFyU3RvcmVOYW1lVmFs dWUgOg0KPiAgICA7DQo+IA0KPiAgLy8NCj4gLS8vIGtlZXAgY2xhc3NEZWluaXRpb24gYW5kIHZh bGlkQ2xhc3NOYW1lcyBmb3IgY29tcGF0aWJpbGl0eSBidXQgbm90IGdlbmVyYXRlDQo+ICsvLyBr ZWVwIGNsYXNzRGVmaW5pdGlvbiBhbmQgdmFsaWRDbGFzc05hbWVzIGZvciBjb21wYXRpYmlsaXR5 IGJ1dCBub3QgZ2VuZXJhdGUNCj4gIC8vIGFueSBJRlIgb2JqZWN0DQo+ICAvLw0KPiAgY2xhc3NE ZWZpbml0aW9uW1VJTlQxNiAmIENsYXNzXSA6DQo+IEBAIC00MTIxLDcgKzQxMjEsNyBAQCB2ZnJT dGF0ZW1lbnRFeHByZXNzaW9uIFtVSU5UMzIgUm9vdExldmVsLCBVSU5UMzIgRXhwT3BDb3VudCA9 IDBdIDoNCj4gDQo+ICAvLw0KPiAgLy8gQWRkIG5ldyBzdWIgZnVuY3Rpb24gZm9yIHRoZSBzdWIg ZXhwcmVzc2lvbiBleHRlbnNpb24gdG8gcmVtZW1iZXIgdGhlIEV4cE9wQ291bnQNCj4gLS8vIFRo aXMgZnVuY2l0b24gaXMgb25seSBjYWxsZWQgYnkgc3ViIGV4cHJlc3Npb24uDQo+ICsvLyBUaGlz IGZ1bmN0aW9uIGlzIG9ubHkgY2FsbGVkIGJ5IHN1YiBleHByZXNzaW9uLg0KPiAgLy8NCj4gIHZm clN0YXRlbWVudEV4cHJlc3Npb25TdWIgW1VJTlQzMiBSb290TGV2ZWwsIFVJTlQzMiAmIEV4cE9w Q291bnRdIDoNCj4gICAgYW5kVGVybVskUm9vdExldmVsLCAkRXhwT3BDb3VudF0NCj4gQEAgLTU2 MTUsNyArNTYxNSw3IEBAIEVmaVZmclBhcnNlcjo6X0RlY2xhcmVEZWZhdWx0RnJhbWV3b3JrVmFy U3RvcmUgKA0KPiAgICAgICAgVlNFT2JqLlNldEF0dHJpYnV0ZXMgKDB4MDAwMDAwMDIpOyAvL2hh cmRjb2RlIEVGSV9WQVJJQUJMRV9CT09UU0VSVklDRV9BQ0NFU1MgYXR0cmlidXRlDQo+ICAgICAg ICBWU0VPYmouU2V0R3VpZCAoJnBOb2RlLT5tR3VpZCk7DQo+ICAgICAgICBWU0VPYmouU2V0VmFy U3RvcmVJZCAocE5vZGUtPm1WYXJTdG9yZUlkKTsNCj4gLSAgICAgIC8vIEdlbmVyYXRlIG9sZCBl ZmkgdmFyc3RvcmUgc3RvcmFnZSBzdHJ1Y3R1cmUgZm9yIGNvbXBhdGlhYmxlIHdpdGggb2xkICJW YXJFcVZhbCIgb3Bjb2RlLA0KPiArICAgICAgLy8gR2VuZXJhdGUgb2xkIGVmaSB2YXJzdG9yZSBz dG9yYWdlIHN0cnVjdHVyZSBmb3IgY29tcGF0aWJsZSB3aXRoIG9sZCAiVmFyRXFWYWwiIG9wY29k ZSwNCj4gICAgICAgIC8vIHdoaWNoIGlzIDMgYnl0ZXMgbGVzcyB0aGFuIG5ldyBzdHJ1Y3R1cmUg ZGVmaW5lIGluIFVFRkkgU3BlYyAyLjMuMS4NCj4gICAgICAgIFZTRU9iai5TZXRCaW5hcnlMZW5n dGggKHNpemVvZiAoRUZJX0lGUl9WQVJTVE9SRV9FRkkpIC0gMyk7DQo+ICAjaWZkZWYgVkZSRVhQ X0RFQlVHDQo+IGRpZmYgLS1naXQgYS9CYXNlVG9vbHMvU291cmNlL0MvVmZyQ29tcGlsZS9WZnJV dGlsaXR5TGliLmNwcCBiL0Jhc2VUb29scy9Tb3VyY2UvQy9WZnJDb21waWxlL1ZmclV0aWxpdHlM aWIuY3BwDQo+IGluZGV4IDJlYmFmNThmMTcuLjBkMGY5MjZmODIgMTAwNjQ0DQo+IC0tLSBhL0Jh c2VUb29scy9Tb3VyY2UvQy9WZnJDb21waWxlL1ZmclV0aWxpdHlMaWIuY3BwDQo+ICsrKyBiL0Jh c2VUb29scy9Tb3VyY2UvQy9WZnJDb21waWxlL1ZmclV0aWxpdHlMaWIuY3BwDQo+IEBAIC0xMTc3 LDcgKzExNzcsNyBAQCBDVmZyVmFyRGF0YVR5cGVEQjo6RGF0YVR5cGVBZGRCaXRGaWVsZCAoDQo+ ICAgICAgfQ0KPiAgICB9IGVsc2Ugew0KPiAgICAgIC8vDQo+IC0gICAgLy8gQ2hlY2sgd2hldGhl ciB0aGUgYml0IGZpbGVkcyBjYW4gYmUgY29udGFpbmVkIHdpdGhpbiBvbmUgRmllbGRUeXBlLg0K PiArICAgIC8vIENoZWNrIHdoZXRoZXIgdGhlIGJpdCBmaWVsZHMgY2FuIGJlIGNvbnRhaW5lZCB3 aXRoaW4gb25lIEZpZWxkVHlwZS4NCj4gICAgICAvLw0KPiAgICAgIGlmIChwVG1wICE9IE5VTEwg JiYgcFRtcC0+bUlzQml0RmllbGQgJiYgc3RyY21wIChwVG1wLT5tRmllbGRUeXBlLT5tVHlwZU5h bWUsIHBOZXdGaWVsZC0+bUZpZWxkVHlwZS0+bVR5cGVOYW1lKSA9PSAwDQo+ICYmDQo+ICAgICAg ICAgKHBUbXAtPm1CaXRPZmZzZXQgLSBwVG1wLT5tT2Zmc2V0ICogOCkgKyBwVG1wLT5tQml0V2lk dGggKyBwTmV3RmllbGQtPm1CaXRXaWR0aCA8PSBwTmV3RmllbGQtPm1GaWVsZFR5cGUtPm1Ub3Rh bFNpemUgKg0KPiA4KSB7DQo+IEBAIC0yMDU4LDcgKzIwNTgsNyBAQCBDVmZyRGF0YVN0b3JhZ2U6 OkdldFZhclN0b3JlSWQgKA0KPiAgICAqVmFyU3RvcmVJZCAgICAgICAgID0gRUZJX1ZBUlNUT1JF X0lEX0lOVkFMSUQ7DQo+IA0KPiAgICAvLw0KPiAtICAvLyBBc3N1bWUgdGhhdCBEYXRhIHN0cnVj dXRyZSBuYW1lIGlzIHVzZWQgYXMgU3RvcmVOYW1lLCBhbmQgY2hlY2sgYWdhaW4uDQo+ICsgIC8v IEFzc3VtZSB0aGF0IERhdGEgc3RydWN0dXJlIG5hbWUgaXMgdXNlZCBhcyBTdG9yZU5hbWUsIGFu ZCBjaGVjayBhZ2Fpbi4NCj4gICAgLy8NCj4gICAgUmV0dXJuQ29kZSA9IEdldFZhclN0b3JlQnlE YXRhVHlwZSAoU3RvcmVOYW1lLCAmcE5vZGUsIFN0b3JlR3VpZCk7DQo+ICAgIGlmIChwTm9kZSAh PSBOVUxMKSB7DQo+IEBAIC0yODQzLDcgKzI4NDMsNyBAQCBDVmZyUXVlc3Rpb25EQjo6UHJpbnRB bGxRdWVzdGlvbiAoDQo+ICAgIFNWZnJRdWVzdGlvbk5vZGUgKnBOb2RlID0gTlVMTDsNCj4gDQo+ ICAgIGZvciAocE5vZGUgPSBtUXVlc3Rpb25MaXN0OyBwTm9kZSAhPSBOVUxMOyBwTm9kZSA9IHBO b2RlLT5tTmV4dCkgew0KPiAtICAgIHByaW50ZiAoIlF1ZXN0aW9uIFZhcklkIGlzICVzIGFuZCBR dWVzaXRvbklkIGlzIDB4JXhcbiIsIHBOb2RlLT5tVmFySWRTdHIsIHBOb2RlLT5tUXVlc3Rpb25J ZCk7DQo+ICsgICAgcHJpbnRmICgiUXVlc3Rpb24gVmFySWQgaXMgJXMgYW5kIFF1ZXN0aW9uSWQg aXMgMHgleFxuIiwgcE5vZGUtPm1WYXJJZFN0ciwgcE5vZGUtPm1RdWVzdGlvbklkKTsNCj4gICAg fQ0KPiAgfQ0KPiANCj4gZGlmZiAtLWdpdCBhL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL0F1dG9H ZW4vQXV0b0dlbi5weSBiL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL0F1dG9HZW4vQXV0b0dlbi5w eQ0KPiBpbmRleCBhOTVkMmM3MTBlLi42MjBmNDlhZGY4IDEwMDY0NA0KPiAtLS0gYS9CYXNlVG9v bHMvU291cmNlL1B5dGhvbi9BdXRvR2VuL0F1dG9HZW4ucHkNCj4gKysrIGIvQmFzZVRvb2xzL1Nv dXJjZS9QeXRob24vQXV0b0dlbi9BdXRvR2VuLnB5DQo+IEBAIC0xMTg3LDcgKzExODcsNyBAQCBj bGFzcyBQbGF0Zm9ybUF1dG9HZW4oQXV0b0dlbik6DQo+ICAgICAgIw0KPiAgICAgIEBjYWNoZWRf Y2xhc3NfZnVuY3Rpb24NCj4gICAgICBkZWYgQ3JlYXRlQ29kZUZpbGUoc2VsZiwgQ3JlYXRlTW9k dWxlQ29kZUZpbGU9RmFsc2UpOg0KPiAtICAgICAgICAjIG9ubHkgbW9kdWxlIGhhcyBjb2RlIHRv IGJlIGdyZWF0ZWQsIHNvIGRvIG5vdGhpbmcgaWYgQ3JlYXRlTW9kdWxlQ29kZUZpbGUgaXMgRmFs c2UNCj4gKyAgICAgICAgIyBvbmx5IG1vZHVsZSBoYXMgY29kZSB0byBiZSBjcmVhdGVkLCBzbyBk byBub3RoaW5nIGlmIENyZWF0ZU1vZHVsZUNvZGVGaWxlIGlzIEZhbHNlDQo+ICAgICAgICAgIGlm IG5vdCBDcmVhdGVNb2R1bGVDb2RlRmlsZToNCj4gICAgICAgICAgICAgIHJldHVybg0KPiANCj4g QEAgLTE4NDksNyArMTg0OSw3IEBAIGNsYXNzIFBsYXRmb3JtQXV0b0dlbihBdXRvR2VuKToNCj4g DQo+ICAgICAgIyMgR2V0IHRvb2wgY2hhaW4gZGVmaW5pdGlvbg0KPiAgICAgICMNCj4gLSAgICAj ICBHZXQgZWFjaCB0b29sIGRlZml0aW9uIGZvciBnaXZlbiB0b29sIGNoYWluIGZyb20gdG9vbHNf ZGVmLnR4dCBhbmQgcGxhdGZvcm0NCj4gKyAgICAjICBHZXQgZWFjaCB0b29sIGRlZmluaXRpb24g Zm9yIGdpdmVuIHRvb2wgY2hhaW4gZnJvbSB0b29sc19kZWYudHh0IGFuZCBwbGF0Zm9ybQ0KPiAg ICAgICMNCj4gICAgICBAY2FjaGVkX3Byb3BlcnR5DQo+ICAgICAgZGVmIFRvb2xEZWZpbml0aW9u KHNlbGYpOg0KPiBAQCAtMjEzMCw4ICsyMTMwLDggQEAgY2xhc3MgUGxhdGZvcm1BdXRvR2VuKEF1 dG9HZW4pOg0KPiANCj4gICAgICAjIyBPdmVycmlkZSBQQ0Qgc2V0dGluZyAodHlwZSwgdmFsdWUs IC4uLikNCj4gICAgICAjDQo+IC0gICAgIyAgIEBwYXJhbSAgVG9QY2QgICAgICAgVGhlIFBDRCB0 byBiZSBvdmVycmlkZWQNCj4gLSAgICAjICAgQHBhcmFtICBGcm9tUGNkICAgICBUaGUgUENEIG92 ZXJyaWRlaW5nIGZyb20NCj4gKyAgICAjICAgQHBhcmFtICBUb1BjZCAgICAgICBUaGUgUENEIHRv IGJlIG92ZXJyaWRkZW4NCj4gKyAgICAjICAgQHBhcmFtICBGcm9tUGNkICAgICBUaGUgUENEIG92 ZXJyaWRpbmcgZnJvbQ0KPiAgICAgICMNCj4gICAgICBkZWYgX092ZXJyaWRlUGNkKHNlbGYsIFRv UGNkLCBGcm9tUGNkLCBNb2R1bGU9IiIsIE1zZz0iIiwgTGlicmFyeT0iIik6DQo+ICAgICAgICAg ICMNCj4gQEAgLTIyMTgsNyArMjIxOCw3IEBAIGNsYXNzIFBsYXRmb3JtQXV0b0dlbihBdXRvR2Vu KToNCj4gDQo+ICAgICAgIyMgQXBwbHkgUENEIHNldHRpbmcgZGVmaW5lZCBwbGF0Zm9ybSB0byBh IG1vZHVsZQ0KPiAgICAgICMNCj4gLSAgICAjICAgQHBhcmFtICBNb2R1bGUgIFRoZSBtb2R1bGUg ZnJvbSB3aGljaCB0aGUgUENEIHNldHRpbmcgd2lsbCBiZSBvdmVycmlkZWQNCj4gKyAgICAjICAg QHBhcmFtICBNb2R1bGUgIFRoZSBtb2R1bGUgZnJvbSB3aGljaCB0aGUgUENEIHNldHRpbmcgd2ls bCBiZSBvdmVycmlkZGVuDQo+ICAgICAgIw0KPiAgICAgICMgICBAcmV0dmFsIFBDRF9saXN0ICAg IFRoZSBsaXN0IFBDRHMgd2l0aCBzZXR0aW5ncyBmcm9tIHBsYXRmb3JtDQo+ICAgICAgIw0KPiBA QCAtMjQ1MCw3ICsyNDUwLDcgQEAgY2xhc3MgUGxhdGZvcm1BdXRvR2VuKEF1dG9HZW4pOg0KPiAN Cj4gICAgICAjIyBBcHBlbmQgYnVpbGQgb3B0aW9ucyBpbiBwbGF0Zm9ybSB0byBhIG1vZHVsZQ0K PiAgICAgICMNCj4gLSAgICAjICAgQHBhcmFtICBNb2R1bGUgIFRoZSBtb2R1bGUgdG8gd2hpY2gg dGhlIGJ1aWxkIG9wdGlvbnMgd2lsbCBiZSBhcHBlbmVkDQo+ICsgICAgIyAgIEBwYXJhbSAgTW9k dWxlICBUaGUgbW9kdWxlIHRvIHdoaWNoIHRoZSBidWlsZCBvcHRpb25zIHdpbGwgYmUgYXBwZW5k ZWQNCj4gICAgICAjDQo+ICAgICAgIyAgIEByZXR2YWwgb3B0aW9ucyAgICAgVGhlIG9wdGlvbnMg YXBwZW5kZWQgd2l0aCBidWlsZCBvcHRpb25zIGluIHBsYXRmb3JtDQo+ICAgICAgIw0KPiBAQCAt MjU2MCw3ICsyNTYwLDcgQEAgY2xhc3MgTW9kdWxlQXV0b0dlbihBdXRvR2VuKToNCj4gICAgICAg ICAgc2VsZi5Tb3VyY2VEaXIgPSBtd3MucmVscGF0aChzZWxmLlNvdXJjZURpciwgc2VsZi5Xb3Jr c3BhY2VEaXIpDQo+IA0KPiAgICAgICAgICBzZWxmLlNvdXJjZU92ZXJyaWRlRGlyID0gTm9uZQ0K PiAtICAgICAgICAjIHVzZSBvdmVycmlkZWQgcGF0aCBkZWZpbmVkIGluIERTQyBmaWxlDQo+ICsg ICAgICAgICMgdXNlIG92ZXJyaWRkZW4gcGF0aCBkZWZpbmVkIGluIERTQyBmaWxlDQo+ICAgICAg ICAgIGlmIHNlbGYuTWV0YUZpbGUuS2V5IGluIEdsb2JhbERhdGEuZ092ZXJyaWRlRGlyOg0KPiAg ICAgICAgICAgICAgc2VsZi5Tb3VyY2VPdmVycmlkZURpciA9IEdsb2JhbERhdGEuZ092ZXJyaWRl RGlyW3NlbGYuTWV0YUZpbGUuS2V5XQ0KPiANCj4gQEAgLTI2ODUsNyArMjY4NSw3IEBAIGNsYXNz IE1vZHVsZUF1dG9HZW4oQXV0b0dlbik6DQo+ICAgICAgZGVmIEd1aWQoc2VsZik6DQo+ICAgICAg ICAgICMNCj4gICAgICAgICAgIyBUbyBidWlsZCBzYW1lIG1vZHVsZSBtb3JlIHRoYW4gb25jZSwg dGhlIG1vZHVsZSBwYXRoIHdpdGggRklMRV9HVUlEIG92ZXJyaWRkZW4gaGFzDQo+IC0gICAgICAg ICMgdGhlIGZpbGUgbmFtZSBGSUxFX0dVSURtb2R1bGUuaW5mLCBidXQgdGhlIHJlbGF0aXZlIHBh dGggKHNlbGYuTWV0YUZpbGUuRmlsZSkgaXMgdGhlIHJlYWx5IHBhdGgNCj4gKyAgICAgICAgIyB0 aGUgZmlsZSBuYW1lIEZJTEVfR1VJRG1vZHVsZS5pbmYsIGJ1dCB0aGUgcmVsYXRpdmUgcGF0aCAo c2VsZi5NZXRhRmlsZS5GaWxlKSBpcyB0aGUgcmVhbCBwYXRoDQo+ICAgICAgICAgICMgaW4gRFND LiBUaGUgb3ZlcnJpZGRlbiBHVUlEIGNhbiBiZSByZXRyaWV2ZWQgZnJvbSBmaWxlIG5hbWUNCj4g ICAgICAgICAgIw0KPiAgICAgICAgICBpZiBvcy5wYXRoLmJhc2VuYW1lKHNlbGYuTWV0YUZpbGUu RmlsZSkgIT0gb3MucGF0aC5iYXNlbmFtZShzZWxmLk1ldGFGaWxlLlBhdGgpOg0KPiBAQCAtMjc0 NSw3ICsyNzQ1LDcgQEAgY2xhc3MgTW9kdWxlQXV0b0dlbihBdXRvR2VuKToNCj4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuTWV0YUZpbGUuQmFzZU5hbWUNCj4gICAg ICAgICAgICAgICkpDQo+IA0KPiAtICAgICMjIFJldHVybiB0aGUgZGlyZWN0b3J5IHRvIHN0b3Jl IHRoZSBpbnRlcm1lZGlhdGUgb2JqZWN0IGZpbGVzIG9mIHRoZSBtZG91bGUNCj4gKyAgICAjIyBS ZXR1cm4gdGhlIGRpcmVjdG9yeSB0byBzdG9yZSB0aGUgaW50ZXJtZWRpYXRlIG9iamVjdCBmaWxl cyBvZiB0aGUgbW9kdWxlDQo+ICAgICAgQGNhY2hlZF9wcm9wZXJ0eQ0KPiAgICAgIGRlZiBPdXRw dXREaXIoc2VsZik6DQo+ICAgICAgICAgIHJldHVybiBfTWFrZURpcigoc2VsZi5CdWlsZERpciwg Ik9VVFBVVCIpKQ0KPiBAQCAtMjc1Nyw3ICsyNzU3LDcgQEAgY2xhc3MgTW9kdWxlQXV0b0dlbihB dXRvR2VuKToNCj4gICAgICAgICAgICAgIHJldHVybiBwYXRoLmpvaW4oc2VsZi5QbGF0Zm9ybUlu Zm8uQnVpbGREaXIsIFRBQl9GVl9ESVJFQ1RPUlksICJGZnMiLCBzZWxmLkd1aWQgKyBzZWxmLk5h bWUpDQo+ICAgICAgICAgIHJldHVybiAnJw0KPiANCj4gLSAgICAjIyBSZXR1cm4gdGhlIGRpcmVj dG9yeSB0byBzdG9yZSBhdXRvLWdlbmVkIHNvdXJjZSBmaWxlcyBvZiB0aGUgbWRvdWxlDQo+ICsg ICAgIyMgUmV0dXJuIHRoZSBkaXJlY3RvcnkgdG8gc3RvcmUgYXV0by1nZW5lZCBzb3VyY2UgZmls ZXMgb2YgdGhlIG1vZHVsZQ0KPiAgICAgIEBjYWNoZWRfcHJvcGVydHkNCj4gICAgICBkZWYgRGVi dWdEaXIoc2VsZik6DQo+ICAgICAgICAgIHJldHVybiBfTWFrZURpcigoc2VsZi5CdWlsZERpciwg IkRFQlVHIikpDQo+IEBAIC0yODA5LDcgKzI4MDksNyBAQCBjbGFzcyBNb2R1bGVBdXRvR2VuKEF1 dG9HZW4pOg0KPiANCj4gICAgICAjIyBHZXQgdGhlIGRlcGV4IHN0cmluZw0KPiAgICAgICMNCj4g LSAgICAjIEByZXR1cm4gOiBhIHN0cmluZyBjb250YWluIGFsbCBkZXBleCBleHByZXNpb24uDQo+ ICsgICAgIyBAcmV0dXJuIDogYSBzdHJpbmcgY29udGFpbiBhbGwgZGVwZXggZXhwcmVzc2lvbi4N Cj4gICAgICBkZWYgX0dldERlcGV4RXhwcmVzaW9uU3RyaW5nKHNlbGYpOg0KPiAgICAgICAgICBE ZXBleFN0ciA9ICcnDQo+ICAgICAgICAgIERlcGV4TGlzdCA9IFtdDQo+IEBAIC0yODE5LDExICsy ODE5LDExIEBAIGNsYXNzIE1vZHVsZUF1dG9HZW4oQXV0b0dlbik6DQo+ICAgICAgICAgIGZvciBN IGluIFtzZWxmLk1vZHVsZV0gKyBzZWxmLkRlcGVuZGVudExpYnJhcnlMaXN0Og0KPiAgICAgICAg ICAgICAgRmlsZW5hbWUgPSBNLk1ldGFGaWxlLlBhdGgNCj4gICAgICAgICAgICAgIEluZk9iaiA9 IEluZlNlY3Rpb25QYXJzZXIuSW5mU2VjdGlvblBhcnNlcihGaWxlbmFtZSkNCj4gLSAgICAgICAg ICAgIERlcGV4RXhwcmVzaW9uTGlzdCA9IEluZk9iai5HZXREZXBleEV4cHJlc2lvbkxpc3QoKQ0K PiAtICAgICAgICAgICAgZm9yIERlcGV4RXhwcmVzaW9uIGluIERlcGV4RXhwcmVzaW9uTGlzdDoN Cj4gLSAgICAgICAgICAgICAgICBmb3Iga2V5IGluIERlcGV4RXhwcmVzaW9uOg0KPiArICAgICAg ICAgICAgRGVwZXhFeHByZXNzaW9uTGlzdCA9IEluZk9iai5HZXREZXBleEV4cHJlc2lvbkxpc3Qo KQ0KPiArICAgICAgICAgICAgZm9yIERlcGV4RXhwcmVzc2lvbiBpbiBEZXBleEV4cHJlc3Npb25M aXN0Og0KPiArICAgICAgICAgICAgICAgIGZvciBrZXkgaW4gRGVwZXhFeHByZXNzaW9uOg0KPiAg ICAgICAgICAgICAgICAgICAgICBBcmNoLCBNb2R1bGVUeXBlID0ga2V5DQo+IC0gICAgICAgICAg ICAgICAgICAgIERlcGV4RXhwciA9IFt4IGZvciB4IGluIERlcGV4RXhwcmVzaW9uW2tleV0gaWYg bm90IHN0cih4KS5zdGFydHN3aXRoKCcjJyldDQo+ICsgICAgICAgICAgICAgICAgICAgIERlcGV4 RXhwciA9IFt4IGZvciB4IGluIERlcGV4RXhwcmVzc2lvbltrZXldIGlmIG5vdCBzdHIoeCkuc3Rh cnRzd2l0aCgnIycpXQ0KPiAgICAgICAgICAgICAgICAgICAgICAjIHRoZSB0eXBlIG9mIGJ1aWxk IG1vZHVsZSBpcyBVU0VSX0RFRklORUQuDQo+ICAgICAgICAgICAgICAgICAgICAgICMgQWxsIGRp ZmZlcmVudCBERVBFWCBzZWN0aW9uIHRhZ3Mgd291bGQgYmUgY29waWVkIGludG8gdGhlIEFzIEJ1 aWx0IElORiBmaWxlDQo+ICAgICAgICAgICAgICAgICAgICAgICMgYW5kIHRoZXJlIHdvdWxkIGJl IHNlcGFyYXRlIERFUEVYIHNlY3Rpb24gdGFncw0KPiBAQCAtMjg3OCw3ICsyODc4LDcgQEAgY2xh c3MgTW9kdWxlQXV0b0dlbihBdXRvR2VuKToNCj4gDQo+ICAgICAgICAgIERlcGV4TGlzdCA9IFtd DQo+ICAgICAgICAgICMNCj4gLSAgICAgICAgIyBBcHBlbmQgZGVwZXggZnJvbSBkZXBlbmRlbnQg bGlicmFyaWVzLCBpZiBub3QgIkJFRk9SRSIsICJBRlRFUiIgZXhwcmVzaW9uDQo+ICsgICAgICAg ICMgQXBwZW5kIGRlcGV4IGZyb20gZGVwZW5kZW50IGxpYnJhcmllcywgaWYgbm90ICJCRUZPUkUi LCAiQUZURVIiIGV4cHJlc3Npb24NCj4gICAgICAgICAgIw0KPiAgICAgICAgICBmb3IgTSBpbiBb c2VsZi5Nb2R1bGVdICsgc2VsZi5EZXBlbmRlbnRMaWJyYXJ5TGlzdDoNCj4gICAgICAgICAgICAg IEluaGVyaXRlZCA9IEZhbHNlDQo+IEBAIC0zMzIzLDcgKzMzMjMsNyBAQCBjbGFzcyBNb2R1bGVB dXRvR2VuKEF1dG9HZW4pOg0KPiAgICAgICAgICAgICAgSWRmR2VuQmluQnVmZmVyLmNsb3NlKCkN Cj4gICAgICAgICAgcmV0dXJuIFJldFZhbA0KPiANCj4gLSAgICAjIyBSZXR1cm4gdGhlIGxpc3Qg b2YgbGlicmFyeSBtb2R1bGVzIGV4cGxpY2l0bHkgb3IgaW1wbGljaXR5bHkgdXNlZCBieSB0aGlz IG1vZHVsZQ0KPiArICAgICMjIFJldHVybiB0aGUgbGlzdCBvZiBsaWJyYXJ5IG1vZHVsZXMgZXhw bGljaXRseSBvciBpbXBsaWNpdGx5IHVzZWQgYnkgdGhpcyBtb2R1bGUNCj4gICAgICBAY2FjaGVk X3Byb3BlcnR5DQo+ICAgICAgZGVmIERlcGVuZGVudExpYnJhcnlMaXN0KHNlbGYpOg0KPiAgICAg ICAgICAjIG9ubHkgbWVyZ2UgbGlicmFyeSBjbGFzc2VzIGFuZCBQQ0QgZm9yIG5vbi1saWJyYXJ5 IG1vZHVsZQ0KPiBAQCAtMzg5NCw4ICszODk0LDggQEAgY2xhc3MgTW9kdWxlQXV0b0dlbihBdXRv R2VuKToNCj4gICAgICAgICAgQXNCdWlsdEluZkRpY3RbJ3VzZXJleHRlbnNpb25fdGlhbm9jb3Jl X2l0ZW0nXSA9IFVzZXJFeHRTdHINCj4gDQo+ICAgICAgICAgICMgR2VuZXJhdGVkIGRlcGV4IGV4 cHJlc3Npb24gc2VjdGlvbiBpbiBjb21tZW50cy4NCj4gLSAgICAgICAgRGVwZXhFeHByZXNpb24g PSBzZWxmLl9HZXREZXBleEV4cHJlc2lvblN0cmluZygpDQo+IC0gICAgICAgIEFzQnVpbHRJbmZE aWN0WydkZXBleHNlY3Rpb25faXRlbSddID0gRGVwZXhFeHByZXNpb24gaWYgRGVwZXhFeHByZXNp b24gZWxzZSAnJw0KPiArICAgICAgICBEZXBleEV4cHJlc3Npb24gPSBzZWxmLl9HZXREZXBleEV4 cHJlc2lvblN0cmluZygpDQo+ICsgICAgICAgIEFzQnVpbHRJbmZEaWN0WydkZXBleHNlY3Rpb25f aXRlbSddID0gRGVwZXhFeHByZXNzaW9uIGlmIERlcGV4RXhwcmVzc2lvbiBlbHNlICcnDQo+IA0K PiAgICAgICAgICBBc0J1aWx0SW5mID0gVGVtcGxhdGVTdHJpbmcoKQ0KPiAgICAgICAgICBBc0J1 aWx0SW5mLkFwcGVuZChnQXNCdWlsdEluZkhlYWRlclN0cmluZy5SZXBsYWNlKEFzQnVpbHRJbmZE aWN0KSkNCj4gZGlmZiAtLWdpdCBhL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL0F1dG9HZW4vQnVp bGRFbmdpbmUucHkgYi9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9BdXRvR2VuL0J1aWxkRW5naW5l LnB5DQo+IGluZGV4IGY5ZTNhYzNhMWQuLjJjZWE5N2FlMTAgMTAwNjQ0DQo+IC0tLSBhL0Jhc2VU b29scy9Tb3VyY2UvUHl0aG9uL0F1dG9HZW4vQnVpbGRFbmdpbmUucHkNCj4gKysrIGIvQmFzZVRv b2xzL1NvdXJjZS9QeXRob24vQXV0b0dlbi9CdWlsZEVuZ2luZS5weQ0KPiBAQCAtOTIsOCArOTIs OCBAQCBjbGFzcyBGaWxlQnVpbGRSdWxlOg0KPiANCj4gICAgICAjIyBjb25zdHJ1Y3Rvcg0KPiAg ICAgICMNCj4gLSAgICAjICAgQHBhcmFtICBJbnB1dCAgICAgICBUaGUgZGljdGlvbmFyeSByZXBy ZXNldGluZyBpbnB1dCBmaWxlKHMpIGZvciBhIHJ1bGUNCj4gLSAgICAjICAgQHBhcmFtICBPdXRw dXQgICAgICBUaGUgbGlzdCByZXByZXNldGluZyBvdXRwdXQgZmlsZShzKSBmb3IgYSBydWxlDQo+ ICsgICAgIyAgIEBwYXJhbSAgSW5wdXQgICAgICAgVGhlIGRpY3Rpb25hcnkgcmVwcmVzZW50aW5n IGlucHV0IGZpbGUocykgZm9yIGEgcnVsZQ0KPiArICAgICMgICBAcGFyYW0gIE91dHB1dCAgICAg IFRoZSBsaXN0IHJlcHJlc2VudGluZyBvdXRwdXQgZmlsZShzKSBmb3IgYSBydWxlDQo+ICAgICAg IyAgIEBwYXJhbSAgQ29tbWFuZCAgICAgVGhlIGxpc3QgY29udGFpbmluZyBjb21tYW5kcyB0byBn ZW5lcmF0ZSB0aGUgb3V0cHV0IGZyb20gaW5wdXQNCj4gICAgICAjDQo+ICAgICAgZGVmIF9faW5p dF9fKHNlbGYsIFR5cGUsIElucHV0LCBPdXRwdXQsIENvbW1hbmQsIEV4dHJhRGVwZW5kZW5jeT1O b25lKToNCj4gQEAgLTE5Myw3ICsxOTMsNyBAQCBjbGFzcyBGaWxlQnVpbGRSdWxlOg0KPiAgICAg ICMgICBAcGFyYW0gIFJlbGF0aXZlVG9EaXIgICBUaGUgcmVsYXRpdmUgcGF0aCBvZiB0aGUgc291 cmNlIGZpbGUNCj4gICAgICAjICAgQHBhcmFtICBQYXRoU2VwYXJhdG9yICAgUGF0aCBzZXBhcmF0 b3INCj4gICAgICAjDQo+IC0gICAgIyAgIEByZXR2YWwgICAgIHR1cGxlICAgICAgIChTb3VyY2Ug ZmlsZSBpbiBmdWxsIHBhdGgsIExpc3Qgb2YgaW5kaXZpZHVhbCBzb3VyY2VmaWxlcywgRGVzdGlv bmF0aW9uIGZpbGUsIExpc3Qgb2YgYnVpbGQgY29tbWFuZHMpDQo+ICsgICAgIyAgIEByZXR2YWwg ICAgIHR1cGxlICAgICAgIChTb3VyY2UgZmlsZSBpbiBmdWxsIHBhdGgsIExpc3Qgb2YgaW5kaXZp ZHVhbCBzb3VyY2VmaWxlcywgRGVzdGluYXRpb24gZmlsZSwgTGlzdCBvZiBidWlsZCBjb21tYW5k cykNCj4gICAgICAjDQo+ICAgICAgZGVmIEFwcGx5KHNlbGYsIFNvdXJjZUZpbGUsIEJ1aWxkUnVs ZU9yZGVyPU5vbmUpOg0KPiAgICAgICAgICBpZiBub3Qgc2VsZi5Db21tYW5kTGlzdCBvciBub3Qg c2VsZi5EZXN0RmlsZUxpc3Q6DQo+IEBAIC0zOTYsNyArMzk2LDcgQEAgY2xhc3MgQnVpbGRSdWxl Og0KPiAgICAgICMgICBAcGFyYW0gIExpbmVJbmRleCAgIFRoZSBsaW5lIGluZGV4IG9mIGJ1aWxk IHJ1bGUgdGV4dA0KPiAgICAgICMNCj4gICAgICBkZWYgUGFyc2VTdWJTZWN0aW9uKHNlbGYsIExp bmVJbmRleCk6DQo+IC0gICAgICAgICMgY3VycmVubHkgbm90aGluZyBoZXJlDQo+ICsgICAgICAg ICMgY3VycmVudGx5IG5vdGhpbmcgaGVyZQ0KPiAgICAgICAgICBwYXNzDQo+IA0KPiAgICAgICMj IFBsYWNlaG9sZGVyIGZvciBub3Qgc3VwcG9ydGVkIHNlY3Rpb25zDQo+IEBAIC00MDksNyArNDA5 LDcgQEAgY2xhc3MgQnVpbGRSdWxlOg0KPiAgICAgICMjIE1lcmdlIHNlY3Rpb24gaW5mb3JtYXRp b24ganVzdCBnb3QgaW50byBydWxlIGRhdGFiYXNlDQo+ICAgICAgZGVmIEVuZE9mU2VjdGlvbihz ZWxmKToNCj4gICAgICAgICAgRGF0YWJhc2UgPSBzZWxmLlJ1bGVEYXRhYmFzZQ0KPiAtICAgICAg ICAjIGlmIHRoZXJlJ3Mgc3BlY2lmaWMgdG9vY2hhaW4gZmFtaWx5LCAnQ09NTU9OJyBkb2Vzbid0 IG1ha2Ugc2Vuc2UgYW55IG1vcmUNCj4gKyAgICAgICAgIyBpZiB0aGVyZSdzIHNwZWNpZmljIHRv b2xjaGFpbiBmYW1pbHksICdDT01NT04nIGRvZXNuJ3QgbWFrZSBzZW5zZSBhbnkgbW9yZQ0KPiAg ICAgICAgICBpZiBsZW4oc2VsZi5fVG90YWxUb29sQ2hhaW5GYW1pbHlTZXQpID4gMSBhbmQgVEFC X0NPTU1PTiBpbiBzZWxmLl9Ub3RhbFRvb2xDaGFpbkZhbWlseVNldDoNCj4gICAgICAgICAgICAg IHNlbGYuX1RvdGFsVG9vbENoYWluRmFtaWx5U2V0LnJlbW92ZShUQUJfQ09NTU9OKQ0KPiAgICAg ICAgICBmb3IgRmFtaWx5IGluIHNlbGYuX1RvdGFsVG9vbENoYWluRmFtaWx5U2V0Og0KPiBAQCAt NTU0LDcgKzU1NCw3IEBAIGNsYXNzIEJ1aWxkUnVsZToNCj4gICAgICAjICAgQHBhcmFtICBGaWxl RXh0ICAgICAgICAgICAgIFRoZSBleHRlbnNpb24gb2YgYSBmaWxlDQo+ICAgICAgIyAgIEBwYXJh bSAgVG9vbENoYWluRmFtaWx5ICAgICBUaGUgdG9vbCBjaGFpbiBmYW1pbHkgbmFtZQ0KPiAgICAg ICMgICBAcGFyYW0gIEJ1aWxkVmVyc2lvbiAgICAgICAgVGhlIGJ1aWxkIHZlcnNpb24gbnVtYmVy LiBUQUJfU1RBUiBtZWFucyBhbnkgcnVsZQ0KPiAtICAgICMgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaXMgYXBwbGljYWxiZS4NCj4gKyAgICAjICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGlzIGFwcGxpY2FibGUuDQo+ICAgICAgIw0KPiAgICAgICMgICBAcmV0dmFsIEZpbGVU eXBlICAgICAgICBUaGUgZmlsZSB0eXBlIHN0cmluZw0KPiAgICAgICMgICBAcmV0dmFsIEZpbGVC dWlsZFJ1bGUgICBUaGUgb2JqZWN0IG9mIEZpbGVCdWlsZFJ1bGUNCj4gZGlmZiAtLWdpdCBhL0Jh c2VUb29scy9Tb3VyY2UvUHl0aG9uL0F1dG9HZW4vR2VuTWFrZS5weSBiL0Jhc2VUb29scy9Tb3Vy Y2UvUHl0aG9uL0F1dG9HZW4vR2VuTWFrZS5weQ0KPiBpbmRleCBkYzRjZDY4OGY0Li41M2M1Yjg1 NzdkIDEwMDY0NA0KPiAtLS0gYS9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9BdXRvR2VuL0dlbk1h a2UucHkNCj4gKysrIGIvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vQXV0b0dlbi9HZW5NYWtlLnB5 DQo+IEBAIC05NTksNyArOTU5LDcgQEAgY2xlYW5saWI6DQo+ICAgICAgICAgICAgICAgICAgICAg IE5ld0ZpbGUgPSBzZWxmLlBsYWNlTWFjcm8oc3RyKEYpLCBzZWxmLk1hY3JvcykNCj4gICAgICAg ICAgICAgICAgICAgICAgIyBJbiBvcmRlciB0byB1c2UgZmlsZSBsaXN0IG1hY3JvIGFzIGRlcGVu ZGVuY3kNCj4gICAgICAgICAgICAgICAgICAgICAgaWYgVC5HZW5MaXN0RmlsZToNCj4gLSAgICAg ICAgICAgICAgICAgICAgICAgICMgZ251IHRvb2xzIG5lZWQgZm9yd2FyZCBzbGFzaCBwYXRoIHNl cGFyYXRlciwgZXZlbiBvbiBXaW5kb3dzDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAjIGdu dSB0b29scyBuZWVkIGZvcndhcmQgc2xhc2ggcGF0aCBzZXBhcmF0b3IsIGV2ZW4gb24gV2luZG93 cw0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5MaXN0RmlsZU1hY3Jvc1tULkxpc3RG aWxlTWFjcm9dLmFwcGVuZChzdHIoRikucmVwbGFjZSAoJ1xcJywgJy8nKSkNCj4gICAgICAgICAg ICAgICAgICAgICAgICAgIHNlbGYuRmlsZUxpc3RNYWNyb3NbVC5GaWxlTGlzdE1hY3JvXS5hcHBl bmQoTmV3RmlsZSkNCj4gICAgICAgICAgICAgICAgICAgICAgZWxpZiBULkdlbkZpbGVMaXN0TWFj cm86DQo+IEBAIC0xMDAzLDcgKzEwMDMsNyBAQCBjbGVhbmxpYjoNCj4gICAgICAjIyBGaW5kIGRl cGVuZGVuY2llcyBmb3Igb25lIHNvdXJjZSBmaWxlDQo+ICAgICAgIw0KPiAgICAgICMgIEJ5IHNl YXJjaGluZyByZWN1cnNpdmVseSAiI2luY2x1ZGUiIGRpcmVjdGl2ZSBpbiBmaWxlLCBmaW5kIG91 dCBhbGwgdGhlDQo+IC0gICAgIyAgZmlsZXMgbmVlZGVkIGJ5IGdpdmVuIHNvdXJjZSBmaWxlLiBU aGUgZGVwZW5kZWNpZXMgd2lsbCBiZSBvbmx5IHNlYXJjaGVkDQo+ICsgICAgIyAgZmlsZXMgbmVl ZGVkIGJ5IGdpdmVuIHNvdXJjZSBmaWxlLiBUaGUgZGVwZW5kZW5jaWVzIHdpbGwgYmUgb25seSBz ZWFyY2hlZA0KPiAgICAgICMgIGluIGdpdmVuIHNlYXJjaCBwYXRoIGxpc3QuDQo+ICAgICAgIw0K PiAgICAgICMgICBAcGFyYW0gICAgICBGaWxlICAgICAgICAgICAgVGhlIHNvdXJjZSBmaWxlDQo+ IGRpZmYgLS1naXQgYS9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9BdXRvR2VuL0dlblBjZERiLnB5 IGIvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vQXV0b0dlbi9HZW5QY2REYi5weQ0KPiBpbmRleCBj YmY3YTM5ZGQ1Li5iM2Y0Y2NmNGY0IDEwMDY0NA0KPiAtLS0gYS9CYXNlVG9vbHMvU291cmNlL1B5 dGhvbi9BdXRvR2VuL0dlblBjZERiLnB5DQo+ICsrKyBiL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9u L0F1dG9HZW4vR2VuUGNkRGIucHkNCj4gQEAgLTM0Miw3ICszNDIsNyBAQCBjbGFzcyBEYkNvbUl0 ZW1MaXN0IChEYkl0ZW1MaXN0KToNCj4gICAgICAgICAgT2Zmc2V0ID0gMA0KPiAgICAgICAgICBp ZiBzZWxmLkl0ZW1TaXplID09IDA6DQo+ICAgICAgICAgICAgICAjDQo+IC0gICAgICAgICAgICAj IFZhcmlhYmxlIGxlbmd0aCwgbmVlZCB0byBjYWxjdWx0ZSBvbmUgYnkgb25lDQo+ICsgICAgICAg ICAgICAjIFZhcmlhYmxlIGxlbmd0aCwgbmVlZCB0byBjYWxjdWxhdGUgb25lIGJ5IG9uZQ0KPiAg ICAgICAgICAgICAgIyBUaGUgb25seSB2YXJpYWJsZSB0YWJsZSBpcyBzdHJpbmd0YWJsZSwgaXQg aXMgbm90IENvbXBvc2l0ZSBpdGVtLCBzaG91bGQgbm90IHJlYWNoIGhlcmUNCj4gICAgICAgICAg ICAgICMNCj4gICAgICAgICAgICAgIGFzc2VydChGYWxzZSkNCj4gQEAgLTYzMSw3ICs2MzEsNyBA QCBkZWYgQnVpbGRFeERhdGFCYXNlKERpY3QpOg0KPiAgICAgIERpY3RbJ1NUUklOR19UQUJMRV9E Ql9WQUxVRSddID0gW1N0cmluZ0FycmF5VG9MaXN0KHgpIGZvciB4IGluIERpY3RbJ1NUUklOR19U QUJMRV9WQUxVRSddXQ0KPiANCj4gICAgICBTdHJpbmdUYWJsZVZhbHVlID0gRGljdFsnU1RSSU5H X1RBQkxFX0RCX1ZBTFVFJ10NCj4gLSAgICAjIHdoZW4gY2FsY3V0ZSB0aGUgb2Zmc2V0LCBzaG91 bGQgdXNlIFN0cmluZ1RhYmxlTGVuIGluc3RlYWQgb2YgU3RyaW5nVGFibGVWYWx1ZSwgYXMgc3Ry aW5nIG1heGl1bSBsZW4gbWF5IGJlIGRpZmZlcmVudCB3aXRoIGFjdHVhbA0KPiBsZW4NCj4gKyAg ICAjIHdoZW4gY2FsY3V0ZSB0aGUgb2Zmc2V0LCBzaG91bGQgdXNlIFN0cmluZ1RhYmxlTGVuIGlu c3RlYWQgb2YgU3RyaW5nVGFibGVWYWx1ZSwgYXMgc3RyaW5nIG1heGltdW0gbGVuIG1heSBiZSBk aWZmZXJlbnQgd2l0aCBhY3R1YWwNCj4gbGVuDQo+ICAgICAgU3RyaW5nVGFibGVMZW4gPSBEaWN0 WydTVFJJTkdfVEFCTEVfTEVOR1RIJ10NCj4gICAgICBEYlN0cmluZ1RhYmxlTGVuID0gRGJTdHJp bmdJdGVtTGlzdCgwLCBSYXdEYXRhTGlzdCA9IFN0cmluZ1RhYmxlVmFsdWUsIExlbkxpc3QgPSBT dHJpbmdUYWJsZUxlbikNCj4gDQo+IEBAIC0xMDExLDcgKzEwMTEsNyBAQCBkZWYgQ3JlYXRlUGNk RGF0YWJhc2VQaGFzZVNwZWNpZmljQXV0b0dlbiAoUGxhdGZvcm0sIER5bmFtaWNQY2RMaXN0LCBQ aGFzZSk6DQo+ICAgICAgICAgICdTS1VJRF9UQUJMRV9FTVBUWScgICAgICAgICAgICAgOiAnVFJV RScsDQo+ICAgICAgICAgICdEQVRBQkFTRV9FTVBUWScgICAgICAgICAgICAgICAgOiAnVFJVRScs DQo+ICAgICAgICAgICdFWE1BUF9UQUJMRV9FTVBUWScgICAgICAgICAgICAgOiAnVFJVRScsDQo+ IC0gICAgICAgICdQQ0RfREFUQUJBU0VfVU5JTklUX0VNUFRZJyAgICAgOiAnICBVSU5UOCAgZHVt bXk7IC8qIFBDRF9EQVRBQkFTRV9VTklOSVQgaXMgZW1wdHJ5ICovJywNCj4gKyAgICAgICAgJ1BD RF9EQVRBQkFTRV9VTklOSVRfRU1QVFknICAgICA6ICcgIFVJTlQ4ICBkdW1teTsgLyogUENEX0RB VEFCQVNFX1VOSU5JVCBpcyBlbXB0eSAqLycsDQo+ICAgICAgICAgICdTWVNURU1fU0tVX0lEJyAg ICAgICAgICAgICAgICAgOiAnICBTS1VfSUQgICAgICAgICAgICAgU3lzdGVtU2t1SWQ7JywNCj4g ICAgICAgICAgJ1NZU1RFTV9TS1VfSURfVkFMVUUnICAgICAgICAgICA6ICcwVScNCj4gICAgICB9 DQo+IGRpZmYgLS1naXQgYS9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9BdXRvR2VuL0luZlNlY3Rp b25QYXJzZXIucHkgYi9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9BdXRvR2VuL0luZlNlY3Rpb25Q YXJzZXIucHkNCj4gaW5kZXggMDllOWFmM2ZiNC4uMzg4YjY3ODBkZiAxMDA2NDQNCj4gLS0tIGEv QmFzZVRvb2xzL1NvdXJjZS9QeXRob24vQXV0b0dlbi9JbmZTZWN0aW9uUGFyc2VyLnB5DQo+ICsr KyBiL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL0F1dG9HZW4vSW5mU2VjdGlvblBhcnNlci5weQ0K PiBAQCAtODAsMTMgKzgwLDEzIEBAIGNsYXNzIEluZlNlY3Rpb25QYXJzZXIoKToNCj4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBVc2VyRXh0ZW5zaW9uVGlhbm9Db3JlLmFwcGVuZCh7U3Vi U2VjdGlvbjogU2VjdGlvbkRhdGFEaWN0W2tleV19KQ0KPiAgICAgICAgICByZXR1cm4gVXNlckV4 dGVuc2lvblRpYW5vQ29yZQ0KPiANCj4gLSAgICAjIEdldCBkZXBleCBleHByZXNpb24NCj4gKyAg ICAjIEdldCBkZXBleCBleHByZXNzaW9uDQo+ICAgICAgIw0KPiAgICAgICMgQHJldHVybjogYSBs aXN0IGluY2x1ZGUgc29tZSBkaWN0aW9uYXJ5IHRoYXQga2V5IGlzIHNlY3Rpb24gYW5kIHZhbHVl IGlzIGEgbGlzdCBjb250YWluIGFsbCBkYXRhLg0KPiAgICAgIGRlZiBHZXREZXBleEV4cHJlc2lv bkxpc3Qoc2VsZik6DQo+IC0gICAgICAgIERlcGV4RXhwcmVzaW9uTGlzdCA9IFtdDQo+ICsgICAg ICAgIERlcGV4RXhwcmVzc2lvbkxpc3QgPSBbXQ0KPiAgICAgICAgICBpZiBub3Qgc2VsZi5fRmls ZVNlY3Rpb25EYXRhTGlzdDoNCj4gLSAgICAgICAgICAgIHJldHVybiBEZXBleEV4cHJlc2lvbkxp c3QNCj4gKyAgICAgICAgICAgIHJldHVybiBEZXBleEV4cHJlc3Npb25MaXN0DQo+ICAgICAgICAg IGZvciBTZWN0aW9uRGF0YURpY3QgaW4gc2VsZi5fRmlsZVNlY3Rpb25EYXRhTGlzdDoNCj4gICAg ICAgICAgICAgIGZvciBrZXkgaW4gU2VjdGlvbkRhdGFEaWN0Og0KPiAgICAgICAgICAgICAgICAg IGlmIGtleS5sb3dlcigpID09ICJbZGVwZXhdIiBvciBrZXkubG93ZXIoKS5zdGFydHN3aXRoKCJb ZGVwZXguIik6DQo+IEBAIC0xMDUsOCArMTA1LDggQEAgY2xhc3MgSW5mU2VjdGlvblBhcnNlcigp Og0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN1YktleSA9IChTZWN0aW9uTGlzdFsx XSwgU2VjdGlvbkxpc3RbMl0pDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOg0KPiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVka0xvZ2dlci5lcnJvcigiYnVpbGQiLCBBVVRP R0VOX0VSUk9SLCAnU2VjdGlvbiAlcyBpcyBpbnZhbGlkLicgJSBrZXkpDQo+IC0gICAgICAgICAg ICAgICAgICAgICAgICBEZXBleEV4cHJlc2lvbkxpc3QuYXBwZW5kKHtTdWJLZXk6IFNlY3Rpb25E YXRhRGljdFtrZXldfSkNCj4gLSAgICAgICAgcmV0dXJuIERlcGV4RXhwcmVzaW9uTGlzdA0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgRGVwZXhFeHByZXNzaW9uTGlzdC5hcHBlbmQoe1N1Yktl eTogU2VjdGlvbkRhdGFEaWN0W2tleV19KQ0KPiArICAgICAgICByZXR1cm4gRGVwZXhFeHByZXNz aW9uTGlzdA0KPiANCj4gDQo+IA0KPiBkaWZmIC0tZ2l0IGEvQmFzZVRvb2xzL1NvdXJjZS9QeXRo b24vQXV0b0dlbi9VbmlDbGFzc09iamVjdC5weSBiL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL0F1 dG9HZW4vVW5pQ2xhc3NPYmplY3QucHkNCj4gaW5kZXggZDE2MjM4N2NjNS4uNTY3NGFkZjNiOCAx MDA2NDQNCj4gLS0tIGEvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vQXV0b0dlbi9VbmlDbGFzc09i amVjdC5weQ0KPiArKysgYi9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9BdXRvR2VuL1VuaUNsYXNz T2JqZWN0LnB5DQo+IEBAIC05OSwxMiArOTksMTIgQEAgTGFuZ0NvbnZUYWJsZSA9IHsnZW5nJzon ZW4nLCAnZnJhJzonZnInLCBcDQo+ICAjIyBHZXRMYW5ndWFnZUNvZGUNCj4gICMNCj4gICMgQ2hl Y2sgdGhlIGxhbmd1YWdlIGNvZGUgcmVhZCBmcm9tIC5VTkkgZmlsZSBhbmQgY29udmVydCBJU08g NjM5LTIgY29kZXMgdG8gUkZDIDQ2NDYgY29kZXMgaWYgYXBwcm9wcmlhdGUNCj4gLSMgSVNPIDYz OS0yIGxhbmd1YWdlIGNvZGVzIHN1cHBvcnRlZCBpbiBjb21wYXRpYmxpdHkgbW9kZQ0KPiArIyBJ U08gNjM5LTIgbGFuZ3VhZ2UgY29kZXMgc3VwcG9ydGVkIGluIGNvbXBhdGliaWxpdHkgbW9kZQ0K PiAgIyBSRkMgNDY0NiBsYW5ndWFnZSBjb2RlcyBzdXBwb3J0ZWQgaW4gbmF0aXZlIG1vZGUNCj4g ICMNCj4gICMgQHBhcmFtIExhbmdOYW1lOiAgIExhbmd1YWdlIGNvZGVzIHJlYWQgZnJvbSAuVU5J IGZpbGUNCj4gICMNCj4gLSMgQHJldHZhbCBMYW5nTmFtZTogIFZhbGlkIGxhbnVnYWdlIGNvZGUg aW4gUkZDIDQ2NDYgZm9ybWF0IG9yIE5vbmUNCj4gKyMgQHJldHZhbCBMYW5nTmFtZTogIFZhbGlk IGxhbmd1YWdlIGNvZGUgaW4gUkZDIDQ2NDYgZm9ybWF0IG9yIE5vbmUNCj4gICMNCj4gIGRlZiBH ZXRMYW5ndWFnZUNvZGUoTGFuZ05hbWUsIElzQ29tcGF0aWJsZU1vZGUsIEZpbGUpOg0KPiAgICAg IGxlbmd0aCA9IGxlbihMYW5nTmFtZSkNCj4gZGlmZiAtLWdpdCBhL0Jhc2VUb29scy9Tb3VyY2Uv UHl0aG9uL0NvbW1vbi9CdWlsZFRvb2xFcnJvci5weSBiL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9u L0NvbW1vbi9CdWlsZFRvb2xFcnJvci5weQ0KPiBpbmRleCBmYzI1MDNlYTgwLi4wOTU4MmI5MzJh IDEwMDY0NA0KPiAtLS0gYS9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9Db21tb24vQnVpbGRUb29s RXJyb3IucHkNCj4gKysrIGIvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vQ29tbW9uL0J1aWxkVG9v bEVycm9yLnB5DQo+IEBAIC0xLDUgKzEsNSBAQA0KPiAgIyMgQGZpbGUNCj4gLSMgU3RhbmRhcmRp emVkIEVycm9yIEhhbmxkaW5nIGluZnJhc3RydWN0dXJlcy4NCj4gKyMgU3RhbmRhcmRpemVkIEVy cm9yIEhhbmRsaW5nIGluZnJhc3RydWN0dXJlcy4NCj4gICMNCj4gICMgQ29weXJpZ2h0IChjKSAy MDA3IC0gMjAxNiwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0K PiAgIyBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+IGRpZmYg LS1naXQgYS9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9Db21tb24vRWRrTG9nZ2VyLnB5IGIvQmFz ZVRvb2xzL1NvdXJjZS9QeXRob24vQ29tbW9uL0Vka0xvZ2dlci5weQ0KPiBpbmRleCBhZjc3MDc0 ODJjLi43N2MwZDJhMjhlIDEwMDY0NA0KPiAtLS0gYS9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9D b21tb24vRWRrTG9nZ2VyLnB5DQo+ICsrKyBiL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL0NvbW1v bi9FZGtMb2dnZXIucHkNCj4gQEAgLTE0NSw3ICsxNDUsNyBAQCBkZWYgd2FybihUb29sTmFtZSwg TWVzc2FnZSwgRmlsZT1Ob25lLCBMaW5lPU5vbmUsIEV4dHJhRGF0YT1Ob25lKToNCj4gDQo+ICAg ICAgX0luZm9Mb2dnZXIubG9nKFdBUk4sIExvZ1RleHQpDQo+IA0KPiAtICAgICMgUmFpc2UgYW4g ZXhlY3B0aW9uIGlmIGluZGljYXRlZA0KPiArICAgICMgUmFpc2UgYW4gZXhjZXB0aW9uIGlmIGlu ZGljYXRlZA0KPiAgICAgIGlmIF9XYXJuaW5nQXNFcnJvciA9PSBUcnVlOg0KPiAgICAgICAgICBy YWlzZSBGYXRhbEVycm9yKFdBUk5JTkdfQVNfRVJST1IpDQo+IA0KPiBAQCAtMTU1LDcgKzE1NSw3 IEBAIGluZm8gICAgPSBfSW5mb0xvZ2dlci5pbmZvDQo+ICAjIyBMb2cgRVJST1IgbWVzc2FnZQ0K PiAgIw0KPiAgIyAgIE9uY2UgYW4gZXJyb3IgbWVzc2FnZXMgaXMgbG9nZ2VkLCB0aGUgdG9vbCdz IGV4ZWN1dGlvbiB3aWxsIGJlIGJyb2tlbiBieSByYWlzaW5nDQo+IC0jIGFuIGV4ZWNwdGlvbi4g SWYgeW91IGRvbid0IHdhbnQgdG8gYnJlYWsgdGhlIGV4ZWN1dGlvbiBsYXRlciwgeW91IGNhbiBn aXZlDQo+ICsjIGFuIGV4Y2VwdGlvbi4gSWYgeW91IGRvbid0IHdhbnQgdG8gYnJlYWsgdGhlIGV4 ZWN1dGlvbiBsYXRlciwgeW91IGNhbiBnaXZlDQo+ICAjICJSYWlzZUVycm9yIiB3aXRoICJGYWxz ZSIgdmFsdWUuDQo+ICAjDQo+ICAjICAgQHBhcmFtICBUb29sTmFtZSAgICBUaGUgbmFtZSBvZiB0 aGUgdG9vbC4gSWYgbm90IGdpdmVuLCB0aGUgbmFtZSBvZiBjYWxsZXINCj4gQEAgLTE2NSw3ICsx NjUsNyBAQCBpbmZvICAgID0gX0luZm9Mb2dnZXIuaW5mbw0KPiAgIyAgIEBwYXJhbSAgRmlsZSAg ICAgICAgVGhlIG5hbWUgb2YgZmlsZSB3aGljaCBjYXVzZWQgdGhlIGVycm9yLg0KPiAgIyAgIEBw YXJhbSAgTGluZSAgICAgICAgVGhlIGxpbmUgbnVtYmVyIGluIHRoZSAiRmlsZSIgd2hpY2ggY2F1 c2VkIHRoZSB3YXJuaW5nLg0KPiAgIyAgIEBwYXJhbSAgRXh0cmFEYXRhICAgTW9yZSBpbmZvcm1h dGlvbiBhc3NvY2lhdGVkIHdpdGggIk1lc3NhZ2UiDQo+IC0jICAgQHBhcmFtICBSYWlzZUVycm9y ICBSYWlzZSBhbiBleGNlcHRpb24gdG8gYnJlYWsgdGhlIHRvb2wncyBleGVjdXR1aW9uIGlmDQo+ ICsjICAgQHBhcmFtICBSYWlzZUVycm9yICBSYWlzZSBhbiBleGNlcHRpb24gdG8gYnJlYWsgdGhl IHRvb2wncyBleGVjdXRpb24gaWYNCj4gICMgICAgICAgICAgICAgICAgICAgICAgIGl0J3MgVHJ1 ZS4gVGhpcyBpcyB0aGUgZGVmYXVsdCBiZWhhdmlvci4NCj4gICMNCj4gIGRlZiBlcnJvcihUb29s TmFtZSwgRXJyb3JDb2RlLCBNZXNzYWdlPU5vbmUsIEZpbGU9Tm9uZSwgTGluZT1Ob25lLCBFeHRy YURhdGE9Tm9uZSwgUmFpc2VFcnJvcj1Jc1JhaXNlRXJyb3IpOg0KPiBkaWZmIC0tZ2l0IGEvQmFz ZVRvb2xzL1NvdXJjZS9QeXRob24vQ29tbW9uL01pc2MucHkgYi9CYXNlVG9vbHMvU291cmNlL1B5 dGhvbi9Db21tb24vTWlzYy5weQ0KPiBpbmRleCA2YjNjNGY3OTM3Li41NjVhNWFkNDBiIDEwMDY0 NA0KPiAtLS0gYS9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9Db21tb24vTWlzYy5weQ0KPiArKysg Yi9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9Db21tb24vTWlzYy5weQ0KPiBAQCAtNzc1LDEwICs3 NzUsMTAgQEAgY2xhc3MgUHJvZ3Jlc3NvcjoNCj4gDQo+ICAgICAgIyMgQ29uc3RydWN0b3INCj4g ICAgICAjDQo+IC0gICAgIyAgIEBwYXJhbSAgICAgIE9wZW5NZXNzYWdlICAgICBUaGUgc3RyaW5n IHByaW50ZWQgYmVmb3JlIHByb2dyZXNzIGNoYXJhdGVycw0KPiAtICAgICMgICBAcGFyYW0gICAg ICBDbG9zZU1lc3NhZ2UgICAgVGhlIHN0cmluZyBwcmludGVkIGFmdGVyIHByb2dyZXNzIGNoYXJh dGVycw0KPiAtICAgICMgICBAcGFyYW0gICAgICBQcm9ncmVzc0NoYXIgICAgVGhlIGNoYXJhdGVy IHVzZWQgdG8gaW5kaWNhdGUgdGhlIHByb2dyZXNzDQo+IC0gICAgIyAgIEBwYXJhbSAgICAgIElu dGVydmFsICAgICAgICBUaGUgaW50ZXJ2YWwgaW4gc2Vjb25kcyBiZXR3ZWVuIHR3byBwcm9ncmVz cyBjaGFyYXRlcnMNCj4gKyAgICAjICAgQHBhcmFtICAgICAgT3Blbk1lc3NhZ2UgICAgIFRoZSBz dHJpbmcgcHJpbnRlZCBiZWZvcmUgcHJvZ3Jlc3MgY2hhcmFjdGVycw0KPiArICAgICMgICBAcGFy YW0gICAgICBDbG9zZU1lc3NhZ2UgICAgVGhlIHN0cmluZyBwcmludGVkIGFmdGVyIHByb2dyZXNz IGNoYXJhY3RlcnMNCj4gKyAgICAjICAgQHBhcmFtICAgICAgUHJvZ3Jlc3NDaGFyICAgIFRoZSBj aGFyYWN0ZXIgdXNlZCB0byBpbmRpY2F0ZSB0aGUgcHJvZ3Jlc3MNCj4gKyAgICAjICAgQHBhcmFt ICAgICAgSW50ZXJ2YWwgICAgICAgIFRoZSBpbnRlcnZhbCBpbiBzZWNvbmRzIGJldHdlZW4gdHdv IHByb2dyZXNzIGNoYXJhY3RlcnMNCj4gICAgICAjDQo+ICAgICAgZGVmIF9faW5pdF9fKHNlbGYs IE9wZW5NZXNzYWdlPSIiLCBDbG9zZU1lc3NhZ2U9IiIsIFByb2dyZXNzQ2hhcj0nLicsIEludGVy dmFsPTEuMCk6DQo+ICAgICAgICAgIHNlbGYuUHJvbXB0TWVzc2FnZSA9IE9wZW5NZXNzYWdlDQo+ IEBAIC03ODgsOSArNzg4LDkgQEAgY2xhc3MgUHJvZ3Jlc3NvcjoNCj4gICAgICAgICAgaWYgUHJv Z3Jlc3Nvci5fU3RvcEZsYWcgaXMgTm9uZToNCj4gICAgICAgICAgICAgIFByb2dyZXNzb3IuX1N0 b3BGbGFnID0gdGhyZWFkaW5nLkV2ZW50KCkNCj4gDQo+IC0gICAgIyMgU3RhcnQgdG8gcHJpbnQg cHJvZ3Jlc3MgY2hhcmF0ZXINCj4gKyAgICAjIyBTdGFydCB0byBwcmludCBwcm9ncmVzcyBjaGFy YWN0ZXINCj4gICAgICAjDQo+IC0gICAgIyAgIEBwYXJhbSAgICAgIE9wZW5NZXNzYWdlICAgICBU aGUgc3RyaW5nIHByaW50ZWQgYmVmb3JlIHByb2dyZXNzIGNoYXJhdGVycw0KPiArICAgICMgICBA cGFyYW0gICAgICBPcGVuTWVzc2FnZSAgICAgVGhlIHN0cmluZyBwcmludGVkIGJlZm9yZSBwcm9n cmVzcyBjaGFyYWN0ZXJzDQo+ICAgICAgIw0KPiAgICAgIGRlZiBTdGFydChzZWxmLCBPcGVuTWVz c2FnZT1Ob25lKToNCj4gICAgICAgICAgaWYgT3Blbk1lc3NhZ2UgaXMgbm90IE5vbmU6DQo+IEBA IC04MDEsOSArODAxLDkgQEAgY2xhc3MgUHJvZ3Jlc3NvcjoNCj4gICAgICAgICAgICAgIFByb2dy ZXNzb3IuX1Byb2dyZXNzVGhyZWFkLnNldERhZW1vbihGYWxzZSkNCj4gICAgICAgICAgICAgIFBy b2dyZXNzb3IuX1Byb2dyZXNzVGhyZWFkLnN0YXJ0KCkNCj4gDQo+IC0gICAgIyMgU3RvcCBwcmlu dGluZyBwcm9ncmVzcyBjaGFyYXRlcg0KPiArICAgICMjIFN0b3AgcHJpbnRpbmcgcHJvZ3Jlc3Mg Y2hhcmFjdGVyDQo+ICAgICAgIw0KPiAtICAgICMgICBAcGFyYW0gICAgICBDbG9zZU1lc3NhZ2Ug ICAgVGhlIHN0cmluZyBwcmludGVkIGFmdGVyIHByb2dyZXNzIGNoYXJhdGVycw0KPiArICAgICMg ICBAcGFyYW0gICAgICBDbG9zZU1lc3NhZ2UgICAgVGhlIHN0cmluZyBwcmludGVkIGFmdGVyIHBy b2dyZXNzIGNoYXJhY3RlcnMNCj4gICAgICAjDQo+ICAgICAgZGVmIFN0b3Aoc2VsZiwgQ2xvc2VN ZXNzYWdlPU5vbmUpOg0KPiAgICAgICAgICBPcmlnaW5hbENvZGFNZXNzYWdlID0gc2VsZi5Db2Rh TWVzc2FnZQ0KPiBAQCAtMTQyMiw3ICsxNDIyLDcgQEAgY2xhc3MgUGF0aENsYXNzKG9iamVjdCk6 DQo+IA0KPiAgICAgICMjIE92ZXJyaWRlIF9fY21wX18gZnVuY3Rpb24NCj4gICAgICAjDQo+IC0g ICAgIyBDdXN0b21pemUgdGhlIGNvbXBhcnNpb24gb3BlcmF0aW9uIG9mIHR3byBQYXRoQ2xhc3MN Cj4gKyAgICAjIEN1c3RvbWl6ZSB0aGUgY29tcGFyaXNvbiBvcGVyYXRpb24gb2YgdHdvIFBhdGhD bGFzcw0KPiAgICAgICMNCj4gICAgICAjIEByZXR2YWwgMCAgICAgVGhlIHR3byBQYXRoQ2xhc3Mg YXJlIGRpZmZlcmVudA0KPiAgICAgICMgQHJldHZhbCAtMSAgICBUaGUgZmlyc3QgUGF0aENsYXNz IGlzIGxlc3MgdGhhbiB0aGUgc2Vjb25kIFBhdGhDbGFzcw0KPiBAQCAtMTUxNyw3ICsxNTE3LDcg QEAgY2xhc3MgUGF0aENsYXNzKG9iamVjdCk6DQo+ICAgICAgICAgICAgICBzZWxmLlBhdGggPSBv cy5wYXRoLmpvaW4oUmVhbFJvb3QsIFJlYWxGaWxlKQ0KPiAgICAgICAgICByZXR1cm4gRXJyb3JD b2RlLCBFcnJvckluZm8NCj4gDQo+IC0jIyBQYXJzZSBQRSBpbWFnZSB0byBnZXQgdGhlIHJlcXVp cmVkIFBFIGluZm9ybWFpb24uDQo+ICsjIyBQYXJzZSBQRSBpbWFnZSB0byBnZXQgdGhlIHJlcXVp cmVkIFBFIGluZm9ybWF0aW9uLg0KPiAgIw0KPiAgY2xhc3MgUGVJbWFnZUNsYXNzKCk6DQo+ICAg ICAgIyMgQ29uc3RydWN0b3INCj4gZGlmZiAtLWdpdCBhL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9u L0NvbW1vbi9NdWx0aXBsZVdvcmtzcGFjZS5weSBiL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL0Nv bW1vbi9NdWx0aXBsZVdvcmtzcGFjZS5weQ0KPiBpbmRleCA4MTU5NGUyMmNkLi44YWQ5MGFlZmFm IDEwMDY0NA0KPiAtLS0gYS9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9Db21tb24vTXVsdGlwbGVX b3Jrc3BhY2UucHkNCj4gKysrIGIvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vQ29tbW9uL011bHRp cGxlV29ya3NwYWNlLnB5DQo+IEBAIC0yNCw3ICsyNCw3IEBAIGZyb20gQ29tbW9uLkRhdGFUeXBl IGltcG9ydCBUQUJfV09SS1NQQUNFDQo+ICAjIEBwYXJhbSBjbGFzczoNCj4gICMNCj4gICMgQHZh ciBXT1JLU1BBQ0U6ICAgICAgZGVmaW5lZCB0aGUgY3VycmVudCBXT1JLU1BBQ0UNCj4gLSMgQHZh ciBQQUNLQUdFU19QQVRIOiAgZGVmaW5lZCB0aGUgb3RoZXIgV09SS1NBUENFLCBpZiBjdXJyZW50 IFdPUktTUEFDRSBpcyBpbnZhbGlkLCBzZWFyY2ggdmFsaWQgV09SS1NQQUNFIGZyb20NCj4gUEFD S0FHRVNfUEFUSA0KPiArIyBAdmFyIFBBQ0tBR0VTX1BBVEg6ICBkZWZpbmVkIHRoZSBvdGhlciBX T1JLU1BBQ0UsIGlmIGN1cnJlbnQgV09SS1NQQUNFIGlzIGludmFsaWQsIHNlYXJjaCB2YWxpZCBX T1JLU1BBQ0UgZnJvbQ0KPiBQQUNLQUdFU19QQVRIDQo+ICAjDQo+ICBjbGFzcyBNdWx0aXBsZVdv cmtzcGFjZShvYmplY3QpOg0KPiAgICAgIFdPUktTUEFDRSA9ICcnDQo+IEBAIC0xNDYsNyArMTQ2 LDcgQEAgY2xhc3MgTXVsdGlwbGVXb3Jrc3BhY2Uob2JqZWN0KToNCj4gDQo+ICAgICAgIyMgZ2V0 UGtnUGF0aCgpDQo+ICAgICAgIw0KPiAtICAgICMgICBnZXQgYWxsIHBhY2thZ2UgcGF0aGVzLg0K PiArICAgICMgICBnZXQgYWxsIHBhY2thZ2UgcGF0aHMuDQo+ICAgICAgIw0KPiAgICAgICMgICBA cGFyYW0gIGNscyAgICAgICBUaGUgY2xhc3MgcG9pbnRlcg0KPiAgICAgICMNCj4gZGlmZiAtLWdp dCBhL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL0NvbW1vbi9QYXJzaW5nLnB5IGIvQmFzZVRvb2xz L1NvdXJjZS9QeXRob24vQ29tbW9uL1BhcnNpbmcucHkNCj4gaW5kZXggODg5MjUxYjY5OS4uZDg1 ODUwMWFmNiAxMDA2NDQNCj4gLS0tIGEvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vQ29tbW9uL1Bh cnNpbmcucHkNCj4gKysrIGIvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vQ29tbW9uL1BhcnNpbmcu cHkNCj4gQEAgLTM2LDcgKzM2LDcgQEAgZGVmIFBhcnNlRGVmaW5lTWFjcm8yKFRhYmxlLCBSZWNv cmRTZXRzLCBHbG9iYWxNYWNybyk6DQo+ICAgICAgICAgIE1hY3Jvc1tSZWNvcmRbMF1dID0gUmVj b3JkWzFdDQo+IA0KPiAgICAgICMNCj4gLSAgICAjIE92ZXJyaWRlZCBieSBHbG9iYWwgTWFjcm9z DQo+ICsgICAgIyBPdmVycmlkZGVuIGJ5IEdsb2JhbCBNYWNyb3MNCj4gICAgICAjDQo+ICAgICAg TWFjcm9zLnVwZGF0ZShHbG9iYWxNYWNybykNCj4gDQo+IEBAIC03Niw3ICs3Niw3IEBAIGRlZiBQ YXJzZURlZmluZU1hY3JvKFRhYmxlLCBHbG9iYWxNYWNybyk6DQo+ICAgICAgICAgIE1hY3Jvc1tS ZWNvcmRbMF1dID0gUmVjb3JkWzFdDQo+IA0KPiAgICAgICMNCj4gLSAgICAjIE92ZXJyaWRlZCBi eSBHbG9iYWwgTWFjcm9zDQo+ICsgICAgIyBPdmVycmlkZGVuIGJ5IEdsb2JhbCBNYWNyb3MNCj4g ICAgICAjDQo+ICAgICAgTWFjcm9zLnVwZGF0ZShHbG9iYWxNYWNybykNCj4gDQo+IEBAIC04MzAs NyArODMwLDcgQEAgZGVmIEluc2VydFNlY3Rpb25JdGVtcyhNb2RlbCwgQ3VycmVudFNlY3Rpb24s IFNlY3Rpb25JdGVtTGlzdCwgQXJjaExpc3QsIFRoaXJkTGkNCj4gICMgQHBhcmFtIFRhYmxlOiAg ICAgICAgICAgIFRoZSBUYWJsZSB0byBiZSBpbnNlcnRlZA0KPiAgIyBAcGFyYW0gRmlsZUlEOiAg ICAgICAgICAgVGhlIElEIG9mIGJlbG9uZ2luZyBmaWxlDQo+ICAjIEBwYXJhbSBGaWxlbmFtZTog ICAgICAgICBUaGUgbmFtZSBvZiBiZWxvbmdpbmcgZmlsZQ0KPiAtIyBAcGFyYW0gQ3VycmVudFNl Y3Rpb246ICAgVGhlIG5hbWUgb2YgY3VycmVjdCBzZWN0aW9uDQo+ICsjIEBwYXJhbSBDdXJyZW50 U2VjdGlvbjogICBUaGUgbmFtZSBvZiBjdXJyZW50IHNlY3Rpb24NCj4gICMgQHBhcmFtIFNlY3Rp b25JdGVtTGlzdDogIEEgbGlzdCBvZiBpdGVtcyBvZiB0aGUgc2VjdGlvbg0KPiAgIyBAcGFyYW0g QXJjaExpc3Q6ICAgICAgICAgQSBsaXN0IG9mIGFyY2hlcw0KPiAgIyBAcGFyYW0gVGhpcmRMaXN0 OiAgICAgICAgQSBsaXN0IG9mIHRoaXJkIHBhcmFtZXRlcnMsIE1vZHVsZVR5cGUgZm9yIExpYnJh cnlDbGFzcyBhbmQgU2t1SWQgZm9yIER5bmFtaWMgUGNkcw0KPiBkaWZmIC0tZ2l0IGEvQmFzZVRv b2xzL1NvdXJjZS9QeXRob24vQ29tbW9uL1JhbmdlRXhwcmVzc2lvbi5weSBiL0Jhc2VUb29scy9T b3VyY2UvUHl0aG9uL0NvbW1vbi9SYW5nZUV4cHJlc3Npb24ucHkNCj4gaW5kZXggNDA5NTg0NTFk Mi4uMWM1MmU4Mzc5MiAxMDA2NDQNCj4gLS0tIGEvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vQ29t bW9uL1JhbmdlRXhwcmVzc2lvbi5weQ0KPiArKysgYi9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9D b21tb24vUmFuZ2VFeHByZXNzaW9uLnB5DQo+IEBAIC0yOTAsNyArMjkwLDcgQEAgY2xhc3MgUmFu Z2VFeHByZXNzaW9uKEJhc2VFeHByZXNzaW9uKToNCj4gICAgICAgICAgcmV0dXJuIHJhbmdlaWQN Cj4gDQo+IA0KPiAtICAgIGRlZiBOZWd0aXZlUmFuZ2Uoc2VsZiwgT3ByYW5kMSk6DQo+ICsgICAg ZGVmIE5lZ2F0aXZlUmFuZ2Uoc2VsZiwgT3ByYW5kMSk6DQo+ICAgICAgICAgIHJhbmdlQ29udGFp bmVyMSA9IHNlbGYub3BlcmFuZGRpY3RbT3ByYW5kMV0NCj4gDQo+IA0KPiBAQCAtMzMyLDcgKzMz Miw3IEBAIGNsYXNzIFJhbmdlRXhwcmVzc2lvbihCYXNlRXhwcmVzc2lvbik6DQo+ICAgICAgICAg IGlmIE9wZXJhdG9yIGluIFsiISIsICJOT1QiLCAibm90Il06DQo+ICAgICAgICAgICAgICBpZiBu b3QgZ0d1aWRQYXR0ZXJuLm1hdGNoKE9wcmFuZDEuc3RyaXAoKSk6DQo+ICAgICAgICAgICAgICAg ICAgcmFpc2UgQmFkRXhwcmVzc2lvbihFUlJfU1RSSU5HX0VYUFIgJSBPcGVyYXRvcikNCj4gLSAg ICAgICAgICAgIHJldHVybiBzZWxmLk5lZ3RpdmVSYW5nZShPcHJhbmQxKQ0KPiArICAgICAgICAg ICAgcmV0dXJuIHNlbGYuTmVnYXRpdmVSYW5nZShPcHJhbmQxKQ0KPiAgICAgICAgICBlbHNlOg0K PiAgICAgICAgICAgICAgaWYgT3BlcmF0b3IgaW4gWyI9PSIsICI+PSIsICI8PSIsICI+IiwgIjwi LCAnXiddOg0KPiAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLkV2YWxSYW5nZShPcGVyYXRv ciwgT3ByYW5kMSkNCj4gZGlmZiAtLWdpdCBhL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL0NvbW1v bi9TdHJpbmdVdGlscy5weSBiL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL0NvbW1vbi9TdHJpbmdV dGlscy5weQ0KPiBpbmRleCBjNjIyNzI3MWE0Li5hMmU4ZjBmOWU3IDEwMDY0NA0KPiAtLS0gYS9C YXNlVG9vbHMvU291cmNlL1B5dGhvbi9Db21tb24vU3RyaW5nVXRpbHMucHkNCj4gKysrIGIvQmFz ZVRvb2xzL1NvdXJjZS9QeXRob24vQ29tbW9uL1N0cmluZ1V0aWxzLnB5DQo+IEBAIC0zMiw3ICsz Miw3IEBAIGdIdW1hblJlYWRhYmxlVmVyUGF0dCA9IHJlLmNvbXBpbGUocicoWzEtOV1bMC05XSp8 MClcLlswLTldezEsMn0kJykNCj4gDQo+ICAjIyBHZXRTcGxpdFZhbHVlTGlzdA0KPiAgIw0KPiAt IyBHZXQgYSB2YWx1ZSBsaXN0IGZyb20gYSBzdHJpbmcgd2l0aCBtdWx0aXBsZSB2YWx1ZXMgc3Bs aXRlZCB3aXRoIFNwbGl0VGFnDQo+ICsjIEdldCBhIHZhbHVlIGxpc3QgZnJvbSBhIHN0cmluZyB3 aXRoIG11bHRpcGxlIHZhbHVlcyBzcGxpdCB3aXRoIFNwbGl0VGFnDQo+ICAjIFRoZSBkZWZhdWx0 IFNwbGl0VGFnIGlzIERhdGFUeXBlLlRBQl9WQUxVRV9TUExJVA0KPiAgIyAnQUFBfEJCQnxDQ0Mn IC0+IFsnQUFBJywgJ0JCQicsICdDQ0MnXQ0KPiAgIw0KPiBAQCAtODgsNyArODgsNyBAQCBkZWYg R2V0U3BsaXRWYWx1ZUxpc3QoU3RyaW5nLCBTcGxpdFRhZz1EYXRhVHlwZS5UQUJfVkFMVUVfU1BM SVQsIE1heFNwbGl0PSAtMSk6DQo+IA0KPiAgIyMgR2V0U3BsaXRMaXN0DQo+ICAjDQo+IC0jIEdl dCBhIHZhbHVlIGxpc3QgZnJvbSBhIHN0cmluZyB3aXRoIG11bHRpcGxlIHZhbHVlcyBzcGxpdGVk IHdpdGggU3BsaXRTdHJpbmcNCj4gKyMgR2V0IGEgdmFsdWUgbGlzdCBmcm9tIGEgc3RyaW5nIHdp dGggbXVsdGlwbGUgdmFsdWVzIHNwbGl0IHdpdGggU3BsaXRTdHJpbmcNCj4gICMgVGhlIGRlZmF1 bHQgU3BsaXRUYWcgaXMgRGF0YVR5cGUuVEFCX1ZBTFVFX1NQTElUDQo+ICAjICdBQUF8QkJCfEND QycgLT4gWydBQUEnLCAnQkJCJywgJ0NDQyddDQo+ICAjDQo+IEBAIC0xMjMsNyArMTIzLDcgQEAg ZGVmIE1lcmdlQXJjaGVzKERpY3QsIEtleSwgQXJjaCk6DQo+ICAjIFJldHVybiBGYWxzZSBpZiBp bnZhbGlkIGZvcm1hdA0KPiAgIw0KPiAgIyBAcGFyYW0gU3RyaW5nOiAgIFN0cmluZyB3aXRoIERF RklORSBzdGF0ZW1lbnQNCj4gLSMgQHBhcmFtIEFyY2g6ICAgICBTdXBwb3J0dGVkIEFyY2gNCj4g KyMgQHBhcmFtIEFyY2g6ICAgICBTdXBwb3J0ZWQgQXJjaA0KPiAgIyBAcGFyYW0gRGVmaW5lczog IERFRklORSBzdGF0ZW1lbnQgdG8gYmUgcGFyc2VkDQo+ICAjDQo+ICAjIEByZXR2YWwgMCAgIERF RklORSBzdGF0ZW1lbnQgZm91bmQsIGFuZCB2YWxpZA0KPiBAQCAtMTQ5LDcgKzE0OSw3IEBAIGRl ZiBHZW5EZWZpbmVzKFN0cmluZywgQXJjaCwgRGVmaW5lcyk6DQo+ICAjDQo+ICAjIEBwYXJhbSBT dHJpbmc6ICAgICAgICBTdHJpbmcgd2l0aCBJTkNMVURFIHN0YXRlbWVudA0KPiAgIyBAcGFyYW0g SW5jbHVkZUZpbGVzOiAgSU5DTFVERSBzdGF0ZW1lbnQgdG8gYmUgcGFyc2VkDQo+IC0jIEBwYXJh bSBBcmNoOiAgICAgICAgICBTdXBwb3J0dGVkIEFyY2gNCj4gKyMgQHBhcmFtIEFyY2g6ICAgICAg ICAgIFN1cHBvcnRlZCBBcmNoDQo+ICAjDQo+ICAjIEByZXR2YWwgVHJ1ZQ0KPiAgIyBAcmV0dmFs IEZhbHNlDQo+IEBAIC0yOTcsNyArMjk3LDcgQEAgZGVmIFJlcGxhY2VNYWNybyhTdHJpbmcsIE1h Y3JvRGVmaW5pdGlvbnM9e30sIFNlbGZSZXBsYWNlbWVudD1GYWxzZSwgUmFpc2VFcnJvcj0NCj4g ICMjIE5vcm1QYXRoDQo+ICAjDQo+ICAjIENyZWF0ZSBhIG5vcm1hbCBwYXRoDQo+IC0jIEFuZCBy ZXBsYWNlIERGRUlORSBpbiB0aGUgcGF0aA0KPiArIyBBbmQgcmVwbGFjZSBERUZJTkUgaW4gdGhl IHBhdGgNCj4gICMNCj4gICMgQHBhcmFtIFBhdGg6ICAgICBUaGUgaW5wdXQgdmFsdWUgZm9yIFBh dGggdG8gYmUgY29udmVydGVkDQo+ICAjIEBwYXJhbSBEZWZpbmVzOiAgQSBzZXQgZm9yIERFRklO RSBzdGF0ZW1lbnQNCj4gQEAgLTczMCw5ICs3MzAsOSBAQCBkZWYgV29ya3NwYWNlRmlsZShXb3Jr c3BhY2VEaXIsIEZpbGVuYW1lKToNCj4gDQo+ICAjIyBTcGxpdCBzdHJpbmcNCj4gICMNCj4gLSMg UmV2bW92ZSAnIicgd2hpY2ggc3RhcnRzd2l0aCBhbmQgZW5kc3dpdGggc3RyaW5nDQo+ICsjIFJl bW92ZSAnIicgd2hpY2ggc3RhcnRzd2l0aCBhbmQgZW5kc3dpdGggc3RyaW5nDQo+ICAjDQo+IC0j IEBwYXJhbSBTdHJpbmc6ICBUaGUgc3RyaW5nIG5lZWQgdG8gYmUgc3BsaXRlZA0KPiArIyBAcGFy YW0gU3RyaW5nOiAgVGhlIHN0cmluZyBuZWVkIHRvIGJlIHNwbGl0DQo+ICAjDQo+ICAjIEByZXR2 YWwgU3RyaW5nOiBUaGUgc3RyaW5nIGFmdGVyIHJlbW92ZWQgJyIiJw0KPiAgIw0KPiBkaWZmIC0t Z2l0IGEvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vQ29tbW9uRGF0YUNsYXNzL0NvbW1vbkNsYXNz LnB5DQo+IGIvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vQ29tbW9uRGF0YUNsYXNzL0NvbW1vbkNs YXNzLnB5DQo+IGluZGV4IDMzNmJiMTE2NzEuLjMzZjMwNmM4NDIgMTAwNjQ0DQo+IC0tLSBhL0Jh c2VUb29scy9Tb3VyY2UvUHl0aG9uL0NvbW1vbkRhdGFDbGFzcy9Db21tb25DbGFzcy5weQ0KPiAr KysgYi9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9Db21tb25EYXRhQ2xhc3MvQ29tbW9uQ2xhc3Mu cHkNCj4gQEAgLTY2LDcgKzY2LDcgQEAgY2xhc3MgU2t1SW5mb0NsYXNzKG9iamVjdCk6DQo+ICAg ICAgIyMgQ29udmVydCB0aGUgY2xhc3MgdG8gYSBzdHJpbmcNCj4gICAgICAjDQo+ICAgICAgIyAg Q29udmVydCBlYWNoIG1lbWJlciBvZiB0aGUgY2xhc3MgdG8gc3RyaW5nDQo+IC0gICAgIyAgT3Jn YW5pemUgdG8gYSBzaWdubGUgbGluZSBmb3JtYXQgc3RyaW5nDQo+ICsgICAgIyAgT3JnYW5pemUg dG8gYSBzaW5nbGUgbGluZSBmb3JtYXQgc3RyaW5nDQo+ICAgICAgIw0KPiAgICAgICMgIEByZXR2 YWwgUnRuIEZvcm1hdHRlZCBTdHJpbmcNCj4gICAgICAjDQo+IGRpZmYgLS1naXQgYS9CYXNlVG9v bHMvU291cmNlL1B5dGhvbi9Db21tb25EYXRhQ2xhc3MvRGF0YUNsYXNzLnB5IGIvQmFzZVRvb2xz L1NvdXJjZS9QeXRob24vQ29tbW9uRGF0YUNsYXNzL0RhdGFDbGFzcy5weQ0KPiBpbmRleCAzMWVk NDZjN2VjLi4yZDkzZjc5YjA5IDEwMDY0NA0KPiAtLS0gYS9CYXNlVG9vbHMvU291cmNlL1B5dGhv bi9Db21tb25EYXRhQ2xhc3MvRGF0YUNsYXNzLnB5DQo+ICsrKyBiL0Jhc2VUb29scy9Tb3VyY2Uv UHl0aG9uL0NvbW1vbkRhdGFDbGFzcy9EYXRhQ2xhc3MucHkNCj4gQEAgLTE5NCw3ICsxOTQsNyBA QCBNT0RFTF9MSVNUID0gWygnTU9ERUxfVU5LTk9XTicsIE1PREVMX1VOS05PV04pLA0KPiAgIyBA cGFyYW0gSGVhZGVyOiAgICAgICAgICAgSGVhZGVyIG9mIGEgRnVuY3Rpb24NCj4gICMgQHBhcmFt IE1vZGlmaWVyOiAgICAgICAgIE1vZGlmaWVyIG9mIGEgRnVuY3Rpb24NCj4gICMgQHBhcmFtIE5h bWU6ICAgICAgICAgICAgIE5hbWUgb2YgYSBGdW5jdGlvbg0KPiAtIyBAcGFyYW0gUmV0dXJuU3Rh dGVtZW50OiAgUmV0dXJuU3RhdGVtZW50IG9mIGEgRnVuY2lvbnQNCj4gKyMgQHBhcmFtIFJldHVy blN0YXRlbWVudDogIFJldHVyblN0YXRlbWVudCBvZiBhIEZ1bmN0aW9uDQo+ICAjIEBwYXJhbSBT dGFydExpbmU6ICAgICAgICBTdGFydExpbmUgb2YgYSBGdW5jdGlvbg0KPiAgIyBAcGFyYW0gU3Rh cnRDb2x1bW46ICAgICAgU3RhcnRDb2x1bW4gb2YgYSBGdW5jdGlvbg0KPiAgIyBAcGFyYW0gRW5k TGluZTogICAgICAgICAgRW5kTGluZSBvZiBhIEZ1bmN0aW9uDQo+IEBAIC0yMDksNyArMjA5LDcg QEAgTU9ERUxfTElTVCA9IFsoJ01PREVMX1VOS05PV04nLCBNT0RFTF9VTktOT1dOKSwNCj4gICMg QHZhciBIZWFkZXI6ICAgICAgICAgICAgIEhlYWRlciBvZiBhIEZ1bmN0aW9uDQo+ICAjIEB2YXIg TW9kaWZpZXI6ICAgICAgICAgICBNb2RpZmllciBvZiBhIEZ1bmN0aW9uDQo+ICAjIEB2YXIgTmFt ZTogICAgICAgICAgICAgICBOYW1lIG9mIGEgRnVuY3Rpb24NCj4gLSMgQHZhciBSZXR1cm5TdGF0 ZW1lbnQ6ICAgIFJldHVyblN0YXRlbWVudCBvZiBhIEZ1bmNpb250DQo+ICsjIEB2YXIgUmV0dXJu U3RhdGVtZW50OiAgICBSZXR1cm5TdGF0ZW1lbnQgb2YgYSBGdW5jdGlvbg0KPiAgIyBAdmFyIFN0 YXJ0TGluZTogICAgICAgICAgU3RhcnRMaW5lIG9mIGEgRnVuY3Rpb24NCj4gICMgQHZhciBTdGFy dENvbHVtbjogICAgICAgIFN0YXJ0Q29sdW1uIG9mIGEgRnVuY3Rpb24NCj4gICMgQHZhciBFbmRM aW5lOiAgICAgICAgICAgIEVuZExpbmUgb2YgYSBGdW5jdGlvbg0KPiBkaWZmIC0tZ2l0IGEvQmFz ZVRvb2xzL1NvdXJjZS9QeXRob24vRWNjL0MuZyBiL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL0Vj Yy9DLmcNCj4gaW5kZXggZTM0NDA4OGYzNi4uNGFmZmQ2MWVjYyAxMDA2NDQNCj4gLS0tIGEvQmFz ZVRvb2xzL1NvdXJjZS9QeXRob24vRWNjL0MuZw0KPiArKysgYi9CYXNlVG9vbHMvU291cmNlL1B5 dGhvbi9FY2MvQy5nDQo+IEBAIC0yMyw3ICsyMyw3IEBAIG9wdGlvbnMgew0KPiAgIyMgQGZpbGUN Cj4gICMgVGhlIGZpbGUgZGVmaW5lcyB0aGUgTGV4ZXIgZm9yIEMgc291cmNlIGZpbGVzLg0KPiAg Iw0KPiAtIyBUSElTIEZJTEUgSVMgQVVUTy1HRU5FTkVSQVRFRC4gUExFQVNFIERPTiBOT1QgTU9E SUZZIFRISVMgRklMRS4NCj4gKyMgVEhJUyBGSUxFIElTIEFVVE8tR0VORVJBVEVELiBQTEVBU0Ug RE8gTk9UIE1PRElGWSBUSElTIEZJTEUuDQo+ICAjIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgYnkg cnVubmluZzoNCj4gICMgamF2YSBvcmcuYW50bHIuVG9vbCBDLmcNCj4gICMNCj4gQEAgLTQ0LDcg KzQ0LDcgQEAgb3B0aW9ucyB7DQo+ICAjIyBAZmlsZQ0KPiAgIyBUaGUgZmlsZSBkZWZpbmVzIHRo ZSBwYXJzZXIgZm9yIEMgc291cmNlIGZpbGVzLg0KPiAgIw0KPiAtIyBUSElTIEZJTEUgSVMgQVVU Ty1HRU5FTkVSQVRFRC4gUExFQVNFIERPTiBOT1QgTU9ESUZZIFRISVMgRklMRS4NCj4gKyMgVEhJ UyBGSUxFIElTIEFVVE8tR0VORVJBVEVELiBQTEVBU0UgRE8gTk9UIE1PRElGWSBUSElTIEZJTEUu DQo+ICAjIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgYnkgcnVubmluZzoNCj4gICMgamF2YSBvcmcu YW50bHIuVG9vbCBDLmcNCj4gICMNCj4gQEAgLTY1MywxMSArNjUzLDExIEBAIFVuaWNvZGVFc2Nh cGUNCj4gIFdTICA6ICAoJyAnfCdccid8J1x0J3wnXHUwMDBDJ3wnXG4nKSB7JGNoYW5uZWw9SElE REVOO30NCj4gICAgICA7DQo+IA0KPiAtLy8gaW5nb3JlICdcJyBvZiBsaW5lIGNvbmNhdGVuYXRp b24NCj4gKy8vIGlnbm9yZSAnXCcgb2YgbGluZSBjb25jYXRlbmF0aW9uDQo+ICBCUyAgOiAoJ1xc JykgeyRjaGFubmVsPUhJRERFTjt9DQo+ICAgICAgOw0KPiANCj4gLS8vIGluZ29yZSBmdW5jdGlv biBtb2RpZmllcnMNCj4gKy8vIGlnbm9yZSBmdW5jdGlvbiBtb2RpZmllcnMNCj4gIC8vRlVOQ19N T0RJRklFUlMgIDogJ0VGSUFQSScgeyRjaGFubmVsPUhJRERFTjt9DQo+ICAvLyAgICA7DQo+IA0K PiBkaWZmIC0tZ2l0IGEvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vRWNjL0NQYXJzZXIzL0NMZXhl ci5weSBiL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL0VjYy9DUGFyc2VyMy9DTGV4ZXIucHkNCj4g aW5kZXggYjllNTdjMWI1NS4uMTdjMWFmNjExMyAxMDA2NDQNCj4gLS0tIGEvQmFzZVRvb2xzL1Nv dXJjZS9QeXRob24vRWNjL0NQYXJzZXIzL0NMZXhlci5weQ0KPiArKysgYi9CYXNlVG9vbHMvU291 cmNlL1B5dGhvbi9FY2MvQ1BhcnNlcjMvQ0xleGVyLnB5DQo+IEBAIC02LDcgKzYsNyBAQCBmcm9t IGFudGxyMy5jb21wYXQgaW1wb3J0IHNldCwgZnJvemVuc2V0DQo+ICAjIyBAZmlsZQ0KPiAgIyBU aGUgZmlsZSBkZWZpbmVzIHRoZSBMZXhlciBmb3IgQyBzb3VyY2UgZmlsZXMuDQo+ICAjDQo+IC0j IFRISVMgRklMRSBJUyBBVVRPLUdFTkVORVJBVEVELiBQTEVBU0UgRE9OIE5PVCBNT0RJRlkgVEhJ UyBGSUxFLg0KPiArIyBUSElTIEZJTEUgSVMgQVVUTy1HRU5FUkFURUQuIFBMRUFTRSBETyBOT1Qg TU9ESUZZIFRISVMgRklMRS4NCj4gICMgVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBieSBydW5uaW5n Og0KPiAgIyBqYXZhIG9yZy5hbnRsci5Ub29sIEMuZw0KPiAgIw0KPiBkaWZmIC0tZ2l0IGEvQmFz ZVRvb2xzL1NvdXJjZS9QeXRob24vRWNjL0NQYXJzZXIzL0NQYXJzZXIucHkgYi9CYXNlVG9vbHMv U291cmNlL1B5dGhvbi9FY2MvQ1BhcnNlcjMvQ1BhcnNlci5weQ0KPiBpbmRleCBhM2FiOGU3YmY0 Li5jNjNiMGE1NTZmIDEwMDY0NA0KPiAtLS0gYS9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9FY2Mv Q1BhcnNlcjMvQ1BhcnNlci5weQ0KPiArKysgYi9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9FY2Mv Q1BhcnNlcjMvQ1BhcnNlci5weQ0KPiBAQCAtOCw3ICs4LDcgQEAgZnJvbSBhbnRscjMuY29tcGF0 IGltcG9ydCBzZXQsIGZyb3plbnNldA0KPiAgIyMgQGZpbGUNCj4gICMgVGhlIGZpbGUgZGVmaW5l cyB0aGUgcGFyc2VyIGZvciBDIHNvdXJjZSBmaWxlcy4NCj4gICMNCj4gLSMgVEhJUyBGSUxFIElT IEFVVE8tR0VORU5FUkFURUQuIFBMRUFTRSBET04gTk9UIE1PRElGWSBUSElTIEZJTEUuDQo+ICsj IFRISVMgRklMRSBJUyBBVVRPLUdFTkVSQVRFRC4gUExFQVNFIERPIE5PVCBNT0RJRlkgVEhJUyBG SUxFLg0KPiAgIyBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGJ5IHJ1bm5pbmc6DQo+ICAjIGphdmEg b3JnLmFudGxyLlRvb2wgQy5nDQo+ICAjDQo+IGRpZmYgLS1naXQgYS9CYXNlVG9vbHMvU291cmNl L1B5dGhvbi9FY2MvQ2hlY2sucHkgYi9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9FY2MvQ2hlY2su cHkNCj4gaW5kZXggYTZjNjIzNTlkMC4uNmU1YmNlZTg0NiAxMDA2NDQNCj4gLS0tIGEvQmFzZVRv b2xzL1NvdXJjZS9QeXRob24vRWNjL0NoZWNrLnB5DQo+ICsrKyBiL0Jhc2VUb29scy9Tb3VyY2Uv UHl0aG9uL0VjYy9DaGVjay5weQ0KPiBAQCAtMTQwMyw3ICsxNDAzLDcgQEAgY2xhc3MgQ2hlY2so b2JqZWN0KToNCj4gICAgICAjIENoZWNrIHdoZXRoZXIgb25seSBjYXBpdGFsIGxldHRlcnMgYXJl IHVzZWQgZm9yICNkZWZpbmUgZGVjbGFyYXRpb25zDQo+ICAgICAgZGVmIE5hbWluZ0NvbnZlbnRp b25DaGVja0RlZmluZVN0YXRlbWVudChzZWxmLCBGaWxlVGFibGUpOg0KPiAgICAgICAgICBpZiBF Y2NHbG9iYWxEYXRhLmdDb25maWcuTmFtaW5nQ29udmVudGlvbkNoZWNrRGVmaW5lU3RhdGVtZW50 ID09ICcxJyBvciBFY2NHbG9iYWxEYXRhLmdDb25maWcuTmFtaW5nQ29udmVudGlvbkNoZWNrQWxs DQo+ID09ICcxJyBvciBFY2NHbG9iYWxEYXRhLmdDb25maWcuQ2hlY2tBbGwgPT0gJzEnOg0KPiAt ICAgICAgICAgICAgRWRrTG9nZ2VyLnF1aWV0KCJDaGVja2luZyBuYW1pbmcgY292ZW50aW9uIG9m ICNkZWZpbmUgc3RhdGVtZW50IC4uLiIpDQo+ICsgICAgICAgICAgICBFZGtMb2dnZXIucXVpZXQo IkNoZWNraW5nIG5hbWluZyBjb252ZW50aW9uIG9mICNkZWZpbmUgc3RhdGVtZW50IC4uLiIpDQo+ IA0KPiAgICAgICAgICAgICAgU3FsQ29tbWFuZCA9ICIiInNlbGVjdCBJRCwgVmFsdWUgZnJvbSAl cyB3aGVyZSBNb2RlbCA9ICVzIiIiICUgKEZpbGVUYWJsZSwgTU9ERUxfSURFTlRJRklFUl9NQUNS T19ERUZJTkUpDQo+ICAgICAgICAgICAgICBSZWNvcmRTZXQgPSBFY2NHbG9iYWxEYXRhLmdEYi5U YmxGaWxlLkV4ZWMoU3FsQ29tbWFuZCkNCj4gQEAgLTE0MTgsNyArMTQxOCw3IEBAIGNsYXNzIENo ZWNrKG9iamVjdCk6DQo+ICAgICAgIyBDaGVjayB3aGV0aGVyIG9ubHkgY2FwaXRhbCBsZXR0ZXJz IGFyZSB1c2VkIGZvciB0eXBlZGVmIGRlY2xhcmF0aW9ucw0KPiAgICAgIGRlZiBOYW1pbmdDb252 ZW50aW9uQ2hlY2tUeXBlZGVmU3RhdGVtZW50KHNlbGYsIEZpbGVUYWJsZSk6DQo+ICAgICAgICAg IGlmIEVjY0dsb2JhbERhdGEuZ0NvbmZpZy5OYW1pbmdDb252ZW50aW9uQ2hlY2tUeXBlZGVmU3Rh dGVtZW50ID09ICcxJyBvcg0KPiBFY2NHbG9iYWxEYXRhLmdDb25maWcuTmFtaW5nQ29udmVudGlv bkNoZWNrQWxsID09ICcxJyBvciBFY2NHbG9iYWxEYXRhLmdDb25maWcuQ2hlY2tBbGwgPT0gJzEn Og0KPiAtICAgICAgICAgICAgRWRrTG9nZ2VyLnF1aWV0KCJDaGVja2luZyBuYW1pbmcgY292ZW50 aW9uIG9mICN0eXBlZGVmIHN0YXRlbWVudCAuLi4iKQ0KPiArICAgICAgICAgICAgRWRrTG9nZ2Vy LnF1aWV0KCJDaGVja2luZyBuYW1pbmcgY29udmVudGlvbiBvZiAjdHlwZWRlZiBzdGF0ZW1lbnQg Li4uIikNCj4gDQo+ICAgICAgICAgICAgICBTcWxDb21tYW5kID0gIiIic2VsZWN0IElELCBOYW1l IGZyb20gJXMgd2hlcmUgTW9kZWwgPSAlcyIiIiAlIChGaWxlVGFibGUsIE1PREVMX0lERU5USUZJ RVJfVFlQRURFRikNCj4gICAgICAgICAgICAgIFJlY29yZFNldCA9IEVjY0dsb2JhbERhdGEuZ0Ri LlRibEZpbGUuRXhlYyhTcWxDb21tYW5kKQ0KPiBAQCAtMTQzOCw3ICsxNDM4LDcgQEAgY2xhc3Mg Q2hlY2sob2JqZWN0KToNCj4gICAgICAjIENoZWNrIHdoZXRoZXIgdGhlICNpZm5kZWYgYXQgdGhl IHN0YXJ0IG9mIGFuIGluY2x1ZGUgZmlsZSB1c2VzIGJvdGggcHJlZml4IGFuZCBwb3N0Zml4IHVu ZGVyc2NvcmUgY2hhcmFjdGVycywgJ18nLg0KPiAgICAgIGRlZiBOYW1pbmdDb252ZW50aW9uQ2hl Y2tJZm5kZWZTdGF0ZW1lbnQoc2VsZiwgRmlsZVRhYmxlKToNCj4gICAgICAgICAgaWYgRWNjR2xv YmFsRGF0YS5nQ29uZmlnLk5hbWluZ0NvbnZlbnRpb25DaGVja0lmbmRlZlN0YXRlbWVudCA9PSAn MScgb3IgRWNjR2xvYmFsRGF0YS5nQ29uZmlnLk5hbWluZ0NvbnZlbnRpb25DaGVja0FsbA0KPiA9 PSAnMScgb3IgRWNjR2xvYmFsRGF0YS5nQ29uZmlnLkNoZWNrQWxsID09ICcxJzoNCj4gLSAgICAg ICAgICAgIEVka0xvZ2dlci5xdWlldCgiQ2hlY2tpbmcgbmFtaW5nIGNvdmVudGlvbiBvZiAjaWZu ZGVmIHN0YXRlbWVudCAuLi4iKQ0KPiArICAgICAgICAgICAgRWRrTG9nZ2VyLnF1aWV0KCJDaGVj a2luZyBuYW1pbmcgY29udmVudGlvbiBvZiAjaWZuZGVmIHN0YXRlbWVudCAuLi4iKQ0KPiANCj4g ICAgICAgICAgICAgIFNxbENvbW1hbmQgPSAiIiJzZWxlY3QgSUQsIFZhbHVlIGZyb20gJXMgd2hl cmUgTW9kZWwgPSAlcyIiIiAlIChGaWxlVGFibGUsIE1PREVMX0lERU5USUZJRVJfTUFDUk9fSUZO REVGKQ0KPiAgICAgICAgICAgICAgUmVjb3JkU2V0ID0gRWNjR2xvYmFsRGF0YS5nRGIuVGJsRmls ZS5FeGVjKFNxbENvbW1hbmQpDQo+IEBAIC0xNDU1LDcgKzE0NTUsNyBAQCBjbGFzcyBDaGVjayhv YmplY3QpOg0KPiAgICAgICMgQ2hlY2sgd2hldGhlciB0aGUgcGF0aCBuYW1lIGZvbGxvd2VkIHRo ZSBydWxlDQo+ICAgICAgZGVmIE5hbWluZ0NvbnZlbnRpb25DaGVja1BhdGhOYW1lKHNlbGYpOg0K PiAgICAgICAgICBpZiBFY2NHbG9iYWxEYXRhLmdDb25maWcuTmFtaW5nQ29udmVudGlvbkNoZWNr UGF0aE5hbWUgPT0gJzEnIG9yIEVjY0dsb2JhbERhdGEuZ0NvbmZpZy5OYW1pbmdDb252ZW50aW9u Q2hlY2tBbGwgPT0gJzEnDQo+IG9yIEVjY0dsb2JhbERhdGEuZ0NvbmZpZy5DaGVja0FsbCA9PSAn MSc6DQo+IC0gICAgICAgICAgICBFZGtMb2dnZXIucXVpZXQoIkNoZWNraW5nIG5hbWluZyBjb3Zl bnRpb24gb2YgZmlsZSBwYXRoIG5hbWUgLi4uIikNCj4gKyAgICAgICAgICAgIEVka0xvZ2dlci5x dWlldCgiQ2hlY2tpbmcgbmFtaW5nIGNvbnZlbnRpb24gb2YgZmlsZSBwYXRoIG5hbWUgLi4uIikN Cj4gICAgICAgICAgICAgIFBhdHRlcm4gPSByZS5jb21waWxlKHInXltBLVpdK1xTKlthLXpdXFMq JCcpDQo+ICAgICAgICAgICAgICBTcWxDb21tYW5kID0gIiIic2VsZWN0IElELCBOYW1lIGZyb20g RmlsZSIiIg0KPiAgICAgICAgICAgICAgUmVjb3JkU2V0ID0gRWNjR2xvYmFsRGF0YS5nRGIuVGJs RmlsZS5FeGVjKFNxbENvbW1hbmQpDQo+IEBAIC0xNDcyLDcgKzE0NzIsNyBAQCBjbGFzcyBDaGVj ayhvYmplY3QpOg0KPiAgICAgICMgQ2hlY2sgd2hldGhlciB0aGUgdmFyaWFibGUgbmFtZSBmb2xs b3dlZCB0aGUgcnVsZQ0KPiAgICAgIGRlZiBOYW1pbmdDb252ZW50aW9uQ2hlY2tWYXJpYWJsZU5h bWUoc2VsZiwgRmlsZVRhYmxlKToNCj4gICAgICAgICAgaWYgRWNjR2xvYmFsRGF0YS5nQ29uZmln Lk5hbWluZ0NvbnZlbnRpb25DaGVja1ZhcmlhYmxlTmFtZSA9PSAnMScgb3IgRWNjR2xvYmFsRGF0 YS5nQ29uZmlnLk5hbWluZ0NvbnZlbnRpb25DaGVja0FsbCA9PQ0KPiAnMScgb3IgRWNjR2xvYmFs RGF0YS5nQ29uZmlnLkNoZWNrQWxsID09ICcxJzoNCj4gLSAgICAgICAgICAgIEVka0xvZ2dlci5x dWlldCgiQ2hlY2tpbmcgbmFtaW5nIGNvdmVudGlvbiBvZiB2YXJpYWJsZSBuYW1lIC4uLiIpDQo+ ICsgICAgICAgICAgICBFZGtMb2dnZXIucXVpZXQoIkNoZWNraW5nIG5hbWluZyBjb252ZW50aW9u IG9mIHZhcmlhYmxlIG5hbWUgLi4uIikNCj4gICAgICAgICAgICAgIFBhdHRlcm4gPSByZS5jb21w aWxlKHInXltBLVpnbV0rXFMqW2Etel1cUyokJykNCj4gDQo+ICAgICAgICAgICAgICBTcWxDb21t YW5kID0gIiIic2VsZWN0IElELCBOYW1lIGZyb20gJXMgd2hlcmUgTW9kZWwgPSAlcyIiIiAlIChG aWxlVGFibGUsIE1PREVMX0lERU5USUZJRVJfVkFSSUFCTEUpDQo+IEBAIC0xNDkyLDcgKzE0OTIs NyBAQCBjbGFzcyBDaGVjayhvYmplY3QpOg0KPiAgICAgICMgQ2hlY2sgd2hldGhlciB0aGUgZnVu Y3Rpb24gbmFtZSBmb2xsb3dlZCB0aGUgcnVsZQ0KPiAgICAgIGRlZiBOYW1pbmdDb252ZW50aW9u Q2hlY2tGdW5jdGlvbk5hbWUoc2VsZik6DQo+ICAgICAgICAgIGlmIEVjY0dsb2JhbERhdGEuZ0Nv bmZpZy5OYW1pbmdDb252ZW50aW9uQ2hlY2tGdW5jdGlvbk5hbWUgPT0gJzEnIG9yIEVjY0dsb2Jh bERhdGEuZ0NvbmZpZy5OYW1pbmdDb252ZW50aW9uQ2hlY2tBbGwNCj4gPT0gJzEnIG9yIEVjY0ds b2JhbERhdGEuZ0NvbmZpZy5DaGVja0FsbCA9PSAnMSc6DQo+IC0gICAgICAgICAgICBFZGtMb2dn ZXIucXVpZXQoIkNoZWNraW5nIG5hbWluZyBjb3ZlbnRpb24gb2YgZnVuY3Rpb24gbmFtZSAuLi4i KQ0KPiArICAgICAgICAgICAgRWRrTG9nZ2VyLnF1aWV0KCJDaGVja2luZyBuYW1pbmcgY29udmVu dGlvbiBvZiBmdW5jdGlvbiBuYW1lIC4uLiIpDQo+ICAgICAgICAgICAgICBQYXR0ZXJuID0gcmUu Y29tcGlsZShyJ15bQS1aXStcUypbYS16XVxTKiQnKQ0KPiAgICAgICAgICAgICAgU3FsQ29tbWFu ZCA9ICIiInNlbGVjdCBJRCwgTmFtZSBmcm9tIEZ1bmN0aW9uIiIiDQo+ICAgICAgICAgICAgICBS ZWNvcmRTZXQgPSBFY2NHbG9iYWxEYXRhLmdEYi5UYmxGaWxlLkV4ZWMoU3FsQ29tbWFuZCkNCj4g QEAgLTE1MDQsNyArMTUwNCw3IEBAIGNsYXNzIENoZWNrKG9iamVjdCk6DQo+ICAgICAgIyBDaGVj ayB3aGV0aGVyIE5PIHVzZSBzaG9ydCB2YXJpYWJsZSBuYW1lIHdpdGggc2luZ2xlIGNoYXJhY3Rl cg0KPiAgICAgIGRlZiBOYW1pbmdDb252ZW50aW9uQ2hlY2tTaW5nbGVDaGFyYWN0ZXJWYXJpYWJs ZShzZWxmLCBGaWxlVGFibGUpOg0KPiAgICAgICAgICBpZiBFY2NHbG9iYWxEYXRhLmdDb25maWcu TmFtaW5nQ29udmVudGlvbkNoZWNrU2luZ2xlQ2hhcmFjdGVyVmFyaWFibGUgPT0gJzEnIG9yDQo+ IEVjY0dsb2JhbERhdGEuZ0NvbmZpZy5OYW1pbmdDb252ZW50aW9uQ2hlY2tBbGwgPT0gJzEnIG9y IEVjY0dsb2JhbERhdGEuZ0NvbmZpZy5DaGVja0FsbCA9PSAnMSc6DQo+IC0gICAgICAgICAgICBF ZGtMb2dnZXIucXVpZXQoIkNoZWNraW5nIG5hbWluZyBjb3ZlbnRpb24gb2Ygc2luZ2xlIGNoYXJh Y3RlciB2YXJpYWJsZSBuYW1lIC4uLiIpDQo+ICsgICAgICAgICAgICBFZGtMb2dnZXIucXVpZXQo IkNoZWNraW5nIG5hbWluZyBjb252ZW50aW9uIG9mIHNpbmdsZSBjaGFyYWN0ZXIgdmFyaWFibGUg bmFtZSAuLi4iKQ0KPiANCj4gICAgICAgICAgICAgIFNxbENvbW1hbmQgPSAiIiJzZWxlY3QgSUQs IE5hbWUgZnJvbSAlcyB3aGVyZSBNb2RlbCA9ICVzIiIiICUgKEZpbGVUYWJsZSwgTU9ERUxfSURF TlRJRklFUl9WQVJJQUJMRSkNCj4gICAgICAgICAgICAgIFJlY29yZFNldCA9IEVjY0dsb2JhbERh dGEuZ0RiLlRibEZpbGUuRXhlYyhTcWxDb21tYW5kKQ0KPiBkaWZmIC0tZ2l0IGEvQmFzZVRvb2xz L1NvdXJjZS9QeXRob24vRWNjL0RhdGFiYXNlLnB5IGIvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24v RWNjL0RhdGFiYXNlLnB5DQo+IGluZGV4IDlkNGFjYWM3YjcuLjJhNmIxMTk4ZDggMTAwNjQ0DQo+ IC0tLSBhL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL0VjYy9EYXRhYmFzZS5weQ0KPiArKysgYi9C YXNlVG9vbHMvU291cmNlL1B5dGhvbi9FY2MvRGF0YWJhc2UucHkNCj4gQEAgLTM5LDcgKzM5LDcg QEAgREFUQUJBU0VfUEFUSCA9ICJFY2MuZGIiDQo+IA0KPiAgIyMgRGF0YWJhc2UNCj4gICMNCj4g LSMgVGhpcyBjbGFzcyBkZWZpbmVkIHRoZSBFQ0MgZGF0YWJzZQ0KPiArIyBUaGlzIGNsYXNzIGRl ZmluZWQgdGhlIEVDQyBkYXRhYmFzZQ0KPiAgIyBEdXJpbmcgdGhlIHBoYXNlIG9mIGluaXRpYWxp emF0aW9uLCB0aGUgZGF0YWJhc2Ugd2lsbCBjcmVhdGUgYWxsIHRhYmxlcyBhbmQNCj4gICMgaW5z ZXJ0IGFsbCByZWNvcmRzIG9mIHRhYmxlIERhdGFNb2RlbA0KPiAgIw0KPiBAQCAtODMsNyArODMs NyBAQCBjbGFzcyBEYXRhYmFzZShvYmplY3QpOg0KPiAgICAgICAgICBzZWxmLkNvbm4gPSBzcWxp dGUzLmNvbm5lY3Qoc2VsZi5EYlBhdGgsIGlzb2xhdGlvbl9sZXZlbCA9ICdERUZFUlJFRCcpDQo+ ICAgICAgICAgIHNlbGYuQ29ubi5leGVjdXRlKCJQUkFHTUEgcGFnZV9zaXplPTQwOTYiKQ0KPiAg ICAgICAgICBzZWxmLkNvbm4uZXhlY3V0ZSgiUFJBR01BIHN5bmNocm9ub3VzPU9GRiIpDQo+IC0g ICAgICAgICMgdG8gYXZvaWQgbm9uLWFzY2lpIGNoYXJhdGVyIGNvbnZlcnNpb24gZXJyb3INCj4g KyAgICAgICAgIyB0byBhdm9pZCBub24tYXNjaWkgY2hhcmFjdGVyIGNvbnZlcnNpb24gZXJyb3IN Cj4gICAgICAgICAgc2VsZi5Db25uLnRleHRfZmFjdG9yeSA9IHN0cg0KPiAgICAgICAgICBzZWxm LkN1ciA9IHNlbGYuQ29ubi5jdXJzb3IoKQ0KPiANCj4gQEAgLTIxNCw3ICsyMTQsNyBAQCBjbGFz cyBEYXRhYmFzZShvYmplY3QpOg0KPiANCj4gICAgICAjIyBVcGRhdGVJZGVudGlmaWVyQmVsb25n c1RvRnVuY3Rpb24NCj4gICAgICAjDQo+IC0gICAgIyBVcGRhdGUgdGhlIGZpZWxkICJCZWxvbmdz VG9GdW5jdGlvbiIgZm9yIGVhY2ggSW5kZW50aWZpZXINCj4gKyAgICAjIFVwZGF0ZSB0aGUgZmll bGQgIkJlbG9uZ3NUb0Z1bmN0aW9uIiBmb3IgZWFjaCBJZGVudGlmaWVyDQo+ICAgICAgIw0KPiAg ICAgICMNCj4gICAgICBkZWYgVXBkYXRlSWRlbnRpZmllckJlbG9uZ3NUb0Z1bmN0aW9uX2Rpc2Fi bGVkKHNlbGYpOg0KPiBAQCAtMjY3LDcgKzI2Nyw3IEBAIGNsYXNzIERhdGFiYXNlKG9iamVjdCk6 DQo+IA0KPiAgICAgICMjIFVwZGF0ZUlkZW50aWZpZXJCZWxvbmdzVG9GdW5jdGlvbg0KPiAgICAg ICMNCj4gLSAgICAjIFVwZGF0ZSB0aGUgZmllbGQgIkJlbG9uZ3NUb0Z1bmN0aW9uIiBmb3IgZWFj aCBJbmRlbnRpZmllcg0KPiArICAgICMgVXBkYXRlIHRoZSBmaWVsZCAiQmVsb25nc1RvRnVuY3Rp b24iIGZvciBlYWNoIElkZW50aWZpZXINCj4gICAgICAjDQo+ICAgICAgIw0KPiAgICAgIGRlZiBV cGRhdGVJZGVudGlmaWVyQmVsb25nc1RvRnVuY3Rpb24oc2VsZik6DQo+IGRpZmYgLS1naXQgYS9C YXNlVG9vbHMvU291cmNlL1B5dGhvbi9FY2MvRWNjTWFpbi5weSBiL0Jhc2VUb29scy9Tb3VyY2Uv UHl0aG9uL0VjYy9FY2NNYWluLnB5DQo+IGluZGV4IGVkYjZjNmQ3ZDQuLmYwNjE4M2Q2NDYgMTAw NjQ0DQo+IC0tLSBhL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL0VjYy9FY2NNYWluLnB5DQo+ICsr KyBiL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL0VjYy9FY2NNYWluLnB5DQo+IEBAIC0yMDksNyAr MjA5LDcgQEAgY2xhc3MgRWNjKG9iamVjdCk6DQo+ICAgICAgICAgICAgICAgICAgICAgICAgICBP cC53cml0ZSgiJXNcciIgJSBGaWxlbmFtZSkNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICNE c2MoRmlsZW5hbWUsIFRydWUsIFRydWUsIEVjY0dsb2JhbERhdGEuZ1dvcmtzcGFjZSwgRWNjR2xv YmFsRGF0YS5nRGIpDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLk1ldGFGaWxlID0g RHNjUGFyc2VyKFBhdGhDbGFzcyhGaWxlbmFtZSwgUm9vdCksIE1PREVMX0ZJTEVfRFNDLA0KPiBN ZXRhRmlsZVN0b3JhZ2UoRWNjR2xvYmFsRGF0YS5nRGIuVGJsRHNjLkN1ciwgRmlsZW5hbWUsIE1P REVMX0ZJTEVfRFNDLCBUcnVlKSkNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICMgYWx3YXN5 IGRvIHBvc3QtcHJvY2VzcywgaW4gY2FzZSBvZiBtYWNyb3MgY2hhbmdlDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAjIGFsd2F5cyBkbyBwb3N0LXByb2Nlc3MsIGluIGNhc2Ugb2YgbWFjcm9z IGNoYW5nZQ0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5NZXRhRmlsZS5Eb1Bvc3RQ cm9jZXNzKCkNCj4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuTWV0YUZpbGUuU3RhcnQo KQ0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5NZXRhRmlsZS5fUG9zdFByb2Nlc3Mo KQ0KPiBAQCAtMzA3LDcgKzMwNyw3IEBAIGNsYXNzIEVjYyhvYmplY3QpOg0KPiAgICAgICAgICBp ZiBPcHRpb25zLldvcmtzcGFjZToNCj4gICAgICAgICAgICAgIG9zLmVudmlyb25bIldPUktTUEFD RSJdID0gT3B0aW9ucy5Xb3Jrc3BhY2UNCj4gDQo+IC0gICAgICAgICMgQ2hlY2sgd29ya3NwYWNl IGVudmlybm9tZW50DQo+ICsgICAgICAgICMgQ2hlY2sgd29ya3NwYWNlIGVudmlyb25tZW50DQo+ ICAgICAgICAgIGlmICJXT1JLU1BBQ0UiIG5vdCBpbiBvcy5lbnZpcm9uOg0KPiAgICAgICAgICAg ICAgRWRrTG9nZ2VyLmVycm9yKCJFQ0MiLCBCdWlsZFRvb2xFcnJvci5BVFRSSUJVVEVfTk9UX0FW QUlMQUJMRSwgIkVudmlyb25tZW50IHZhcmlhYmxlIG5vdCBmb3VuZCIsDQo+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgRXh0cmFEYXRhPSJXT1JLU1BBQ0UiKQ0KPiBkaWZmIC0tZ2l0IGEv QmFzZVRvb2xzL1NvdXJjZS9QeXRob24vRWNjL0VjY1Rvb2xFcnJvci5weSBiL0Jhc2VUb29scy9T b3VyY2UvUHl0aG9uL0VjYy9FY2NUb29sRXJyb3IucHkNCj4gaW5kZXggYWUwYTMxYWY4YS4uM2Yx YTQ0YzFmNyAxMDA2NDQNCj4gLS0tIGEvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vRWNjL0VjY1Rv b2xFcnJvci5weQ0KPiArKysgYi9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9FY2MvRWNjVG9vbEVy cm9yLnB5DQo+IEBAIC0xLDUgKzEsNSBAQA0KPiAgIyMgQGZpbGUNCj4gLSMgU3RhbmRhcmRpemVk IEVycm9yIEhhbmxkaW5nIGluZnJhc3RydWN0dXJlcy4NCj4gKyMgU3RhbmRhcmRpemVkIEVycm9y IEhhbmRsaW5nIGluZnJhc3RydWN0dXJlcy4NCj4gICMNCj4gICMgQ29weXJpZ2h0IChjKSAyMDA4 IC0gMjAxOCwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiAg IyBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+IEBAIC0xNTIs NyArMTUyLDcgQEAgZ0VjY0Vycm9yTWVzc2FnZSA9IHsNCj4gICAgICBFUlJPUl9JTkNMVURFX0ZJ TEVfQ0hFQ0tfSUZOREVGX1NUQVRFTUVOVF8yIDogIlRoZSAjaWZuZGVmIG11c3QgYmUgdGhlIGZp cnN0IGxpbmUgb2YgY29kZSBmb2xsb3dpbmcgdGhlIGZpbGUgaGVhZGVyDQo+IGNvbW1lbnQiLA0K PiAgICAgIEVSUk9SX0lOQ0xVREVfRklMRV9DSEVDS19JRk5ERUZfU1RBVEVNRU5UXzMgOiAiVGhl ICNlbmRpZiBtdXN0IGFwcGVhciBvbiB0aGUgbGFzdCBsaW5lIGluIHRoZSBmaWxlIiwNCj4gICAg ICBFUlJPUl9JTkNMVURFX0ZJTEVfQ0hFQ0tfREFUQSA6ICJJbmNsdWRlIGZpbGVzIHNob3VsZCBj b250YWluIG9ubHkgcHVibGljIG9yIG9ubHkgcHJpdmF0ZSBkYXRhIGFuZCBjYW5ub3QgY29udGFp biBjb2RlIG9yIGRlZmluZQ0KPiBkYXRhIHZhcmlhYmxlcyIsDQo+IC0gICAgRVJST1JfSU5DTFVE RV9GSUxFX0NIRUNLX05BTUUgOiAiTm8gcGVybWlzc2lvbiBmb3IgdGhlIGlubGN1ZGUgZmlsZSB3 aXRoIHNhbWUgbmFtZXMiLA0KPiArICAgIEVSUk9SX0lOQ0xVREVfRklMRV9DSEVDS19OQU1FIDog Ik5vIHBlcm1pc3Npb24gZm9yIHRoZSBpbmNsdWRlIGZpbGUgd2l0aCBzYW1lIG5hbWVzIiwNCj4g DQo+ICAgICAgRVJST1JfREVDTEFSQVRJT05fREFUQV9UWVBFX0NIRUNLX0FMTCA6ICIiLA0KPiAg ICAgIEVSUk9SX0RFQ0xBUkFUSU9OX0RBVEFfVFlQRV9DSEVDS19OT19VU0VfQ19UWVBFIDogIlRo ZXJlIHNob3VsZCBiZSBubyB1c2Ugb2YgaW50LCB1bnNpZ25lZCwgY2hhciwgdm9pZCwgc3RhdGlj LCBsb25nIGluDQo+IGFueSAuYywgLmggb3IgLmFzbCBmaWxlcyIsDQo+IGRpZmYgLS1naXQgYS9C YXNlVG9vbHMvU291cmNlL1B5dGhvbi9FY2MvTWV0YURhdGFQYXJzZXIucHkgYi9CYXNlVG9vbHMv U291cmNlL1B5dGhvbi9FY2MvTWV0YURhdGFQYXJzZXIucHkNCj4gaW5kZXggNDU5NDcxNjg4Ni4u YWFiMmU5MmVhNyAxMDA2NDQNCj4gLS0tIGEvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vRWNjL01l dGFEYXRhUGFyc2VyLnB5DQo+ICsrKyBiL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL0VjYy9NZXRh RGF0YVBhcnNlci5weQ0KPiBAQCAtMTgsNyArMTgsNyBAQCBmcm9tIEVjYy5FY2NUb29sRXJyb3Ig aW1wb3J0ICoNCj4gIGZyb20gQ29tbW9uLk11bHRpcGxlV29ya3NwYWNlIGltcG9ydCBNdWx0aXBs ZVdvcmtzcGFjZSBhcyBtd3MNCj4gIGZyb20gRWNjIGltcG9ydCBFY2NHbG9iYWxEYXRhDQo+ICBp bXBvcnQgcmUNCj4gLSMjIEdldCB0aGUgaW5sY3VkZSBwYXRoIGxpc3QgZm9yIGEgc291cmNlIGZp bGUNCj4gKyMjIEdldCB0aGUgaW5jbHVkZSBwYXRoIGxpc3QgZm9yIGEgc291cmNlIGZpbGUNCj4g ICMNCj4gICMgMS4gRmluZCB0aGUgc291cmNlIGZpbGUgYmVsb25ncyB0byB3aGljaCBpbmYgZmls ZQ0KPiAgIyAyLiBGaW5kIHRoZSBpbmYncyBwYWNrYWdlDQo+IGRpZmYgLS1naXQgYS9CYXNlVG9v bHMvU291cmNlL1B5dGhvbi9FY2MvYy5weSBiL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL0VjYy9j LnB5DQo+IGluZGV4IDBjMzc3YzZjNGEuLjdiNjQ1ZmYwNTMgMTAwNjQ0DQo+IC0tLSBhL0Jhc2VU b29scy9Tb3VyY2UvUHl0aG9uL0VjYy9jLnB5DQo+ICsrKyBiL0Jhc2VUb29scy9Tb3VyY2UvUHl0 aG9uL0VjYy9jLnB5DQo+IEBAIC03MzMsNyArNzMzLDcgQEAgZGVmIFNwbGl0UHJlZGljYXRlQnlP cChTdHIsIE9wLCBJc0Z1bmNDYWxsaW5nPUZhbHNlKToNCj4gDQo+ICAgICAgICAgICAgICB3aGls ZSBub3QgTEJGb3VuZCBhbmQgKFN0cltJbmRleF0uaXNhbG51bSgpIG9yIFN0cltJbmRleF0gPT0g J18nKToNCj4gICAgICAgICAgICAgICAgICBJbmRleCArPSAxDQo+IC0gICAgICAgICAgICAjIG1h eWJlIHR5cGUtY2FzdCBhdCB0aGUgYmVnaW5pbmcsIHNraXAgaXQuDQo+ICsgICAgICAgICAgICAj IG1heWJlIHR5cGUtY2FzdCBhdCB0aGUgYmVnaW5uaW5nLCBza2lwIGl0Lg0KPiAgICAgICAgICAg ICAgUmVtYWluaW5nU3RyID0gU3RyW0luZGV4Ol0ubHN0cmlwKCkNCj4gICAgICAgICAgICAgIGlm IFJlbWFpbmluZ1N0ci5zdGFydHN3aXRoKCcpJykgYW5kIG5vdCBMQkZvdW5kOg0KPiAgICAgICAg ICAgICAgICAgIEluZGV4ICs9IDENCj4gQEAgLTgzNCw3ICs4MzQsNyBAQCBkZWYgR2V0RGF0YVR5 cGVGcm9tTW9kaWZpZXIoTW9kaWZpZXJTdHIpOg0KPiAgICAgIGZvciBNIGluIE1MaXN0Og0KPiAg ICAgICAgICBpZiBNIGluIEVjY0dsb2JhbERhdGEuZ0NvbmZpZy5Nb2RpZmllclNldDoNCj4gICAg ICAgICAgICAgIGNvbnRpbnVlDQo+IC0gICAgICAgICMgcmVtb3ZlIGFycmF5IHN1Zml4DQo+ICsg ICAgICAgICMgcmVtb3ZlIGFycmF5IHN1ZmZpeA0KPiAgICAgICAgICBpZiBNLnN0YXJ0c3dpdGgo J1snKSBvciBNLmVuZHN3aXRoKCddJyk6DQo+ICAgICAgICAgICAgICBjb250aW51ZQ0KPiAgICAg ICAgICBSZXR1cm5UeXBlICs9IE0gKyAnICcNCj4gQEAgLTEwMTksNyArMTAxOSw3IEBAIGRlZiBH ZXRGaW5hbFR5cGVWYWx1ZShUeXBlLCBGaWVsZE5hbWUsIFR5cGVkZWZEaWN0LCBTVURpY3QpOg0K PiAgICAgICAgICAgICAgICAgIFR5cGUgPSBHZXREYXRhVHlwZUZyb21Nb2RpZmllcihGaWVsZFsw OkluZGV4XSkNCj4gICAgICAgICAgICAgICAgICByZXR1cm4gVHlwZS5zdHJpcCgpDQo+ICAgICAg ICAgICAgICBlbHNlOg0KPiAtICAgICAgICAgICAgIyBGb3IgdGhlIGNvbmRpdGlvbiB0aGF0IHRo ZSBmaWVsZCBpbiBzdHJ1Y3QgaXMgYW4gYXJyYXkgd2l0aCBbXSBzdWZpeGVzLi4uDQo+ICsgICAg ICAgICAgICAjIEZvciB0aGUgY29uZGl0aW9uIHRoYXQgdGhlIGZpZWxkIGluIHN0cnVjdCBpcyBh biBhcnJheSB3aXRoIFtdIHN1ZmZpeGVzLi4uDQo+ICAgICAgICAgICAgICAgICAgaWYgbm90IEZp ZWxkW0luZGV4ICsgbGVuKEZpZWxkTmFtZSldLmlzYWxudW0oKToNCj4gICAgICAgICAgICAgICAg ICAgICAgVHlwZSA9IEdldERhdGFUeXBlRnJvbU1vZGlmaWVyKEZpZWxkWzA6SW5kZXhdKQ0KPiAg ICAgICAgICAgICAgICAgICAgICByZXR1cm4gVHlwZS5zdHJpcCgpDQo+IEBAIC0xNjI5LDcgKzE2 MjksNyBAQCBkZWYgQ2hlY2tNZW1iZXJWYXJpYWJsZUZvcm1hdChOYW1lLCBWYWx1ZSwgRmlsZVRh YmxlLCBUZElkLCBNb2RlbElkKToNCj4gICAgICAgICAgRmllbGQgPSBGaWVsZC5zdHJpcCgpDQo+ ICAgICAgICAgIGlmIEZpZWxkID09ICcnOg0KPiAgICAgICAgICAgICAgY29udGludWUNCj4gLSAg ICAgICAgIyBGb3IgdGhlIGNvbmRpdGlvbiB0aGF0IHRoZSBmaWVsZCBpbiBzdHJ1Y3QgaXMgYW4g YXJyYXkgd2l0aCBbXSBzdWZpeGVzLi4uDQo+ICsgICAgICAgICMgRm9yIHRoZSBjb25kaXRpb24g dGhhdCB0aGUgZmllbGQgaW4gc3RydWN0IGlzIGFuIGFycmF5IHdpdGggW10gc3VmZml4ZXMuLi4N Cj4gICAgICAgICAgaWYgRmllbGRbLTFdID09ICddJzoNCj4gICAgICAgICAgICAgIExCUG9zID0g RmllbGQuZmluZCgnWycpDQo+ICAgICAgICAgICAgICBGaWVsZCA9IEZpZWxkWzA6TEJQb3NdDQo+ IGRpZmYgLS1naXQgYS9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9Fb3QvQ1BhcnNlcjMvQ0xleGVy LnB5IGIvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vRW90L0NQYXJzZXIzL0NMZXhlci5weQ0KPiBp bmRleCBiOWU1N2MxYjU1Li4xN2MxYWY2MTEzIDEwMDY0NA0KPiAtLS0gYS9CYXNlVG9vbHMvU291 cmNlL1B5dGhvbi9Fb3QvQ1BhcnNlcjMvQ0xleGVyLnB5DQo+ICsrKyBiL0Jhc2VUb29scy9Tb3Vy Y2UvUHl0aG9uL0VvdC9DUGFyc2VyMy9DTGV4ZXIucHkNCj4gQEAgLTYsNyArNiw3IEBAIGZyb20g YW50bHIzLmNvbXBhdCBpbXBvcnQgc2V0LCBmcm96ZW5zZXQNCj4gICMjIEBmaWxlDQo+ICAjIFRo ZSBmaWxlIGRlZmluZXMgdGhlIExleGVyIGZvciBDIHNvdXJjZSBmaWxlcy4NCj4gICMNCj4gLSMg VEhJUyBGSUxFIElTIEFVVE8tR0VORU5FUkFURUQuIFBMRUFTRSBET04gTk9UIE1PRElGWSBUSElT IEZJTEUuDQo+ICsjIFRISVMgRklMRSBJUyBBVVRPLUdFTkVSQVRFRC4gUExFQVNFIERPIE5PVCBN T0RJRlkgVEhJUyBGSUxFLg0KPiAgIyBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGJ5IHJ1bm5pbmc6 DQo+ICAjIGphdmEgb3JnLmFudGxyLlRvb2wgQy5nDQo+ICAjDQo+IGRpZmYgLS1naXQgYS9CYXNl VG9vbHMvU291cmNlL1B5dGhvbi9Fb3QvQ1BhcnNlcjMvQ1BhcnNlci5weSBiL0Jhc2VUb29scy9T b3VyY2UvUHl0aG9uL0VvdC9DUGFyc2VyMy9DUGFyc2VyLnB5DQo+IGluZGV4IDBiNzRiNTNhZTcu Ljk3M2U3YTgyYjcgMTAwNjQ0DQo+IC0tLSBhL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL0VvdC9D UGFyc2VyMy9DUGFyc2VyLnB5DQo+ICsrKyBiL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL0VvdC9D UGFyc2VyMy9DUGFyc2VyLnB5DQo+IEBAIC04LDcgKzgsNyBAQCBmcm9tIGFudGxyMy5jb21wYXQg aW1wb3J0IHNldCwgZnJvemVuc2V0DQo+ICAjIyBAZmlsZQ0KPiAgIyBUaGUgZmlsZSBkZWZpbmVz IHRoZSBwYXJzZXIgZm9yIEMgc291cmNlIGZpbGVzLg0KPiAgIw0KPiAtIyBUSElTIEZJTEUgSVMg QVVUTy1HRU5FTkVSQVRFRC4gUExFQVNFIERPTiBOT1QgTU9ESUZZIFRISVMgRklMRS4NCj4gKyMg VEhJUyBGSUxFIElTIEFVVE8tR0VORVJBVEVELiBQTEVBU0UgRE8gTk9UIE1PRElGWSBUSElTIEZJ TEUuDQo+ICAjIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgYnkgcnVubmluZzoNCj4gICMgamF2YSBv cmcuYW50bHIuVG9vbCBDLmcNCj4gICMNCj4gZGlmZiAtLWdpdCBhL0Jhc2VUb29scy9Tb3VyY2Uv UHl0aG9uL0VvdC9Db2RlRnJhZ21lbnRDb2xsZWN0b3IucHkgYi9CYXNlVG9vbHMvU291cmNlL1B5 dGhvbi9Fb3QvQ29kZUZyYWdtZW50Q29sbGVjdG9yLnB5DQo+IGluZGV4IGIxZTc3YTY5MGEuLmVj MWZhYTY2NWUgMTAwNjQ0DQo+IC0tLSBhL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL0VvdC9Db2Rl RnJhZ21lbnRDb2xsZWN0b3IucHkNCj4gKysrIGIvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vRW90 L0NvZGVGcmFnbWVudENvbGxlY3Rvci5weQ0KPiBAQCAtMzkwLDEwICszOTAsMTAgQEAgY2xhc3Mg Q29kZUZyYWdtZW50Q29sbGVjdG9yOg0KPiAgICAgICAgICBwcmludCgnIyMjIyMjIyMjIyMjIyMj IyMgJyArIHNlbGYuRmlsZU5hbWUgKyAnIyMjIyMjIyMjIyMjIyMjIyMjIyMjJykNCj4gDQo+ICAg ICAgICAgIHByaW50KCcvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8n KQ0KPiAtICAgICAgICBwcmludCgnLyoqKioqKioqKioqKioqKiBBU1NJR05NRU5UUyAqKioqKioq KioqKioqKiovJykNCj4gKyAgICAgICAgcHJpbnQoJy8qKioqKioqKioqKioqKiBBU1NJR05NRU5U UyAqKioqKioqKioqKioqLycpDQo+ICAgICAgICAgIHByaW50KCcvKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKi8nKQ0KPiAtICAgICAgICBmb3IgYXNpZ24gaW4gRmlsZVBy b2ZpbGUuQXNzaWdubWVudEV4cHJlc3Npb25MaXN0Og0KPiAtICAgICAgICAgICAgcHJpbnQoc3Ry KGFzaWduLlN0YXJ0UG9zKSArIGFzaWduLk5hbWUgKyBhc2lnbi5PcGVyYXRvciArIGFzaWduLlZh bHVlKQ0KPiArICAgICAgICBmb3IgYXNzaWduIGluIEZpbGVQcm9maWxlLkFzc2lnbm1lbnRFeHBy ZXNzaW9uTGlzdDoNCj4gKyAgICAgICAgICAgIHByaW50KHN0cihhc3NpZ24uU3RhcnRQb3MpICsg YXNzaWduLk5hbWUgKyBhc3NpZ24uT3BlcmF0b3IgKyBhc3NpZ24uVmFsdWUpDQo+IA0KPiAgICAg ICAgICBwcmludCgnLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovJykN Cj4gICAgICAgICAgcHJpbnQoJy8qKioqKioqKiogUFJFUFJPQ0VTUyBESVJFQ1RJVkVTICoqKioq KioqLycpDQo+IGRpZmYgLS1naXQgYS9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9Fb3QvRGF0YWJh c2UucHkgYi9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9Fb3QvRGF0YWJhc2UucHkNCj4gaW5kZXgg NjViYWM5YzEyNy4uZjYxOTExNjFmMiAxMDA2NDQNCj4gLS0tIGEvQmFzZVRvb2xzL1NvdXJjZS9Q eXRob24vRW90L0RhdGFiYXNlLnB5DQo+ICsrKyBiL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL0Vv dC9EYXRhYmFzZS5weQ0KPiBAQCAtMzgsNyArMzgsNyBAQCBEQVRBQkFTRV9QQVRIID0gIkVvdC5k YiINCj4gDQo+ICAjIyBEYXRhYmFzZSBjbGFzcw0KPiAgIw0KPiAtIyBUaGlzIGNsYXNzIGRlZmlu ZWQgdGhlIEVPVCBkYXRhYnNlDQo+ICsjIFRoaXMgY2xhc3MgZGVmaW5lZCB0aGUgRU9UIGRhdGFi YXNlDQo+ICAjIER1cmluZyB0aGUgcGhhc2Ugb2YgaW5pdGlhbGl6YXRpb24sIHRoZSBkYXRhYmFz ZSB3aWxsIGNyZWF0ZSBhbGwgdGFibGVzIGFuZA0KPiAgIyBpbnNlcnQgYWxsIHJlY29yZHMgb2Yg dGFibGUgRGF0YU1vZGVsDQo+ICAjDQo+IEBAIC04Myw3ICs4Myw3IEBAIGNsYXNzIERhdGFiYXNl KG9iamVjdCk6DQo+ICAgICAgICAgIHNlbGYuQ29ubiA9IHNxbGl0ZTMuY29ubmVjdChzZWxmLkRi UGF0aCwgaXNvbGF0aW9uX2xldmVsID0gJ0RFRkVSUkVEJykNCj4gICAgICAgICAgc2VsZi5Db25u LmV4ZWN1dGUoIlBSQUdNQSBwYWdlX3NpemU9ODE5MiIpDQo+ICAgICAgICAgIHNlbGYuQ29ubi5l eGVjdXRlKCJQUkFHTUEgc3luY2hyb25vdXM9T0ZGIikNCj4gLSAgICAgICAgIyB0byBhdm9pZCBu b24tYXNjaWkgY2hhcmF0ZXIgY29udmVyc2lvbiBlcnJvcg0KPiArICAgICAgICAjIHRvIGF2b2lk IG5vbi1hc2NpaSBjaGFyYWN0ZXIgY29udmVyc2lvbiBlcnJvcg0KPiAgICAgICAgICBzZWxmLkNv bm4udGV4dF9mYWN0b3J5ID0gc3RyDQo+ICAgICAgICAgIHNlbGYuQ3VyID0gc2VsZi5Db25uLmN1 cnNvcigpDQo+IA0KPiBAQCAtMTk4LDcgKzE5OCw3IEBAIGNsYXNzIERhdGFiYXNlKG9iamVjdCk6 DQo+IA0KPiAgICAgICMjIFVwZGF0ZUlkZW50aWZpZXJCZWxvbmdzVG9GdW5jdGlvbigpIG1ldGhv ZA0KPiAgICAgICMNCj4gLSAgICAjICBVcGRhdGUgdGhlIGZpZWxkICJCZWxvbmdzVG9GdW5jdGlv biIgZm9yIGVhY2ggSW5kZW50aWZpZXINCj4gKyAgICAjICBVcGRhdGUgdGhlIGZpZWxkICJCZWxv bmdzVG9GdW5jdGlvbiIgZm9yIGVhY2ggSWRlbnRpZmllcg0KPiAgICAgICMNCj4gICAgICAjICBA cGFyYW0gc2VsZjogVGhlIG9iamVjdCBwb2ludGVyDQo+ICAgICAgIw0KPiBkaWZmIC0tZ2l0IGEv QmFzZVRvb2xzL1NvdXJjZS9QeXRob24vRW90L0VvdEdsb2JhbERhdGEucHkgYi9CYXNlVG9vbHMv U291cmNlL1B5dGhvbi9Fb3QvRW90R2xvYmFsRGF0YS5weQ0KPiBpbmRleCBjYjZhOTQwYWI4Li43 MjliOWY3Yzc3IDEwMDY0NA0KPiAtLS0gYS9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9Fb3QvRW90 R2xvYmFsRGF0YS5weQ0KPiArKysgYi9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9Fb3QvRW90R2xv YmFsRGF0YS5weQ0KPiBAQCAtOTIsNyArOTIsNyBAQCBnQ29uc3VtZWRQcm90b2NvbExpYnJhcnlb J0VmaUxvY2F0ZVByb3RvY29sSGFuZGxlQnVmZmVycyddID0gMA0KPiAgZ0NvbnN1bWVkUHJvdG9j b2xMaWJyYXJ5WydFZmlMb2NhdGVQcm90b2NvbEludGVyZmFjZSddID0gMA0KPiAgZ0NvbnN1bWVk UHJvdG9jb2xMaWJyYXJ5WydFZmlIYW5kbGVQcm90b2NvbCddID0gMQ0KPiANCj4gLSMgRGljdCBm b3IgY2FsbGJhY2sgUFJPVE9DT0wgZnVuY3Rpb24gY2FsbGxpbmcNCj4gKyMgRGljdCBmb3IgY2Fs bGJhY2sgUFJPVE9DT0wgZnVuY3Rpb24gY2FsbGluZw0KPiAgZ0NhbGxiYWNrUHJvdG9jb2xMaWJy YXJ5ID0gT3JkZXJlZERpY3QoKQ0KPiAgZ0NhbGxiYWNrUHJvdG9jb2xMaWJyYXJ5WydFZmlSZWdp c3RlclByb3RvY29sQ2FsbGJhY2snXSA9IDINCj4gDQo+IGRpZmYgLS1naXQgYS9CYXNlVG9vbHMv U291cmNlL1B5dGhvbi9Fb3QvRW90TWFpbi5weSBiL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL0Vv dC9Fb3RNYWluLnB5DQo+IGluZGV4IGZkNGJlZTZmOTAuLmU0MzU5YzUwMTUgMTAwNjQ0DQo+IC0t LSBhL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL0VvdC9Fb3RNYWluLnB5DQo+ICsrKyBiL0Jhc2VU b29scy9Tb3VyY2UvUHl0aG9uL0VvdC9Fb3RNYWluLnB5DQo+IEBAIC0xNTE0LDcgKzE1MTQsNyBA QCBjbGFzcyBFb3Qob2JqZWN0KToNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChJ ZGVudGlmaWVyLCAnLk5vdGlmeVBwaScsICctPk5vdGlmeVBwaScsIE1PREVMX0lERU5USUZJRVJf RlVOQ1RJT05fQ0FMTElORykNCj4gICAgICAgICAgICAgIFNlYXJjaFBwaShTcWxDb21tYW5kLCBJ ZGVudGlmaWVyLCBTb3VyY2VGaWxlSUQsIFNvdXJjZUZpbGVGdWxsUGF0aCwgSXRlbU1vZGUpDQo+ IA0KPiAtICAgICAgICAgICAgIyBGaW5kIFByb2NvdG9scw0KPiArICAgICAgICAgICAgIyBGaW5k IFByb3RvY29scw0KPiAgICAgICAgICAgICAgSXRlbU1vZGUgPSAnUHJvZHVjZWQnDQo+ICAgICAg ICAgICAgICBTcWxDb21tYW5kID0gIiIic2VsZWN0IFZhbHVlLCBOYW1lLCBCZWxvbmdzVG9GaWxl LCBTdGFydExpbmUsIEVuZExpbmUgZnJvbSAlcw0KPiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHdoZXJlIChOYW1lIGxpa2UgJyUlJXMlJScgb3IgTmFtZSBsaWtlICclJSVzJSUnIG9yIE5h bWUgbGlrZSAnJSUlcyUlJyBvciBOYW1lIGxpa2UgJyUlJXMlJScpDQo+IGFuZCBNb2RlbCA9ICVz IiIiIFwNCj4gZGlmZiAtLWdpdCBhL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL0VvdC9JbmZQYXJz ZXJMaXRlLnB5IGIvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vRW90L0luZlBhcnNlckxpdGUucHkN Cj4gaW5kZXggMGNmZTAzOThmMC4uY2VjMDgzMzMwYiAxMDA2NDQNCj4gLS0tIGEvQmFzZVRvb2xz L1NvdXJjZS9QeXRob24vRW90L0luZlBhcnNlckxpdGUucHkNCj4gKysrIGIvQmFzZVRvb2xzL1Nv dXJjZS9QeXRob24vRW90L0luZlBhcnNlckxpdGUucHkNCj4gQEAgLTQxLDggKzQxLDggQEAgY2xh c3MgRWRrSW5mUGFyc2VyKG9iamVjdCk6DQo+ICAgICAgIyAgQHBhcmFtICBEYXRhYmFzZTogRW90 IGRhdGFiYXNlDQo+ICAgICAgIyAgQHBhcmFtICBTb3VyY2VGaWxlTGlzdDogQSBsaXN0IGZvciBh bGwgc291cmNlIGZpbGUgYmVsb25naW5nIHRoaXMgSU5GIGZpbGUNCj4gICAgICAjICBAcGFyYW0g IFNvdXJjZU92ZXJyaWRlUGF0aDogT3ZlcnJpZGUgcGF0aCBmb3Igc291cmNlIGZpbGUNCj4gLSAg ICAjICBAcGFyYW0gIEVka19Tb3VyY2U6IEVudmlybm9tZW50IHZhcmlhYmxlIEVES19TT1VSQ0UN Cj4gLSAgICAjICBAcGFyYW0gIEVmaV9Tb3VyY2U6IEVudmlybm9tZW50IHZhcmlhYmxlIEVGSV9T T1VSQ0UNCj4gKyAgICAjICBAcGFyYW0gIEVka19Tb3VyY2U6IEVudmlyb25tZW50IHZhcmlhYmxl IEVES19TT1VSQ0UNCj4gKyAgICAjICBAcGFyYW0gIEVmaV9Tb3VyY2U6IEVudmlyb25tZW50IHZh cmlhYmxlIEVGSV9TT1VSQ0UNCj4gICAgICAjDQo+ICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIEZp bGVuYW1lID0gTm9uZSwgRGF0YWJhc2UgPSBOb25lLCBTb3VyY2VGaWxlTGlzdCA9IE5vbmUsIFNv dXJjZU92ZXJyaWRlUGF0aCA9IE5vbmUsIEVka19Tb3VyY2UgPSBOb25lLA0KPiBFZmlfU291cmNl ID0gTm9uZSk6DQo+ICAgICAgICAgIHNlbGYuSWRlbnRpZmljYXRpb24gPSBJZGVudGlmaWNhdGlv bigpDQo+IGRpZmYgLS1naXQgYS9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9Fb3QvUGFyc2VyLnB5 IGIvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vRW90L1BhcnNlci5weQ0KPiBpbmRleCA2NzMwODhk NDFkLi42YjQ3NDA5YzlkIDEwMDY0NA0KPiAtLS0gYS9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9F b3QvUGFyc2VyLnB5DQo+ICsrKyBiL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL0VvdC9QYXJzZXIu cHkNCj4gQEAgLTYyLDcgKzYyLDcgQEAgZGVmIERlQ29tcHJlc3MoTWV0aG9kLCBJbnB1dCk6DQo+ ICAjICBAcGFyYW0gIE1lcmdlTXVsdGlwbGVMaW5lczogU3dpdGNoIGZvciBpZiBtZXJnZSBtdWx0 aXBsZSBsaW5lcw0KPiAgIyAgQHBhcmFtICBMaW5lTm86IERlZmF1bHQgbGluZSBubw0KPiAgIw0K PiAtIyAgQHJldHVybiBMaW5lczogVGhlIGZpbGUgY29udGVudHMgYWZ0ZXIgcmVtdm9pbmcgY29t bWVudHMNCj4gKyMgIEByZXR1cm4gTGluZXM6IFRoZSBmaWxlIGNvbnRlbnRzIGFmdGVyIHJlbW92 aW5nIGNvbW1lbnRzDQo+ICAjDQo+ICBkZWYgUHJlUHJvY2VzcyhGaWxlbmFtZSwgTWVyZ2VNdWx0 aXBsZUxpbmVzID0gVHJ1ZSwgTGluZU5vID0gLTEpOg0KPiAgICAgIExpbmVzID0gW10NCj4gQEAg LTc3MCw3ICs3NzAsNyBAQCBkZWYgR2V0UGFyYW1ldGVyTmFtZShQYXJhbWV0ZXIpOg0KPiAgIyAg QHBhcmFtIFRhYmxlOiBUYWJsZSB0byBiZSBzZWFyY2hlZA0KPiAgIyAgQHBhcmFtIEtleTogVGhl IGtleXdvcmQNCj4gICMNCj4gLSMgIEByZXR1cm4gVmFsdWU6IFRoZSB2YWx1ZSBvZiB0aGUgdGhl IGtleXdvcmQNCj4gKyMgIEByZXR1cm4gVmFsdWU6IFRoZSB2YWx1ZSBvZiB0aGUga2V5d29yZA0K PiAgIw0KPiAgZGVmIEZpbmRLZXlWYWx1ZShEYiwgVGFibGUsIEtleSk6DQo+ICAgICAgU3FsQ29t bWFuZCA9ICIiInNlbGVjdCBWYWx1ZSBmcm9tICVzIHdoZXJlIE5hbWUgPSAnJXMnIGFuZCAoTW9k ZWwgPSAlcyBvciBNb2RlbCA9ICVzKSIiIiAlIChUYWJsZSwgS2V5LA0KPiBNT0RFTF9JREVOVElG SUVSX1ZBUklBQkxFLCBNT0RFTF9JREVOVElGSUVSX0FTU0lHTk1FTlRfRVhQUkVTU0lPTikNCj4g ZGlmZiAtLWdpdCBhL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL0VvdC9SZXBvcnQucHkgYi9CYXNl VG9vbHMvU291cmNlL1B5dGhvbi9Fb3QvUmVwb3J0LnB5DQo+IGluZGV4IDAxYWQ4NmFkM2UuLjNl NzFjMTIzOTMgMTAwNjQ0DQo+IC0tLSBhL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL0VvdC9SZXBv cnQucHkNCj4gKysrIGIvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vRW90L1JlcG9ydC5weQ0KPiBA QCAtMzMyLDcgKzMzMiw3IEBAIGNsYXNzIFJlcG9ydChvYmplY3QpOg0KPiAgICAgICAgICAgICAg ICAgIENvbnRlbnQgPSAiIiIgICAgICAgICAgICA8L3RhYmxlPjwvdGQ+DQo+ICAgICAgICAgICAg PC90cj4iIiINCj4gICAgICAgICAgICAgICAgICBzZWxmLldyaXRlTG4oQ29udGVudCkNCj4gLSAg ICAgICAgICAgICNFbmQgb2YgQ29uc3VtZWQgUHBpL1BvcnRvY29sDQo+ICsgICAgICAgICAgICAj RW5kIG9mIENvbnN1bWVkIFBwaS9Qcm90b2NvbA0KPiANCj4gICAgICAgICAgICAgICMgRmluZCBQ cm9kdWNlZCBQcGkvUHJvdG9jb2wNCj4gICAgICAgICAgICAgIFNxbENvbW1hbmQgPSAiIiJzZWxl Y3QgTW9kdWxlTmFtZSwgSXRlbVR5cGUsIEd1aWROYW1lLCBHdWlkVmFsdWUsIEd1aWRNYWNybyBm cm9tIFJlcG9ydA0KPiBkaWZmIC0tZ2l0IGEvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vR2VuRmRz L0ZkZlBhcnNlci5weSBiL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL0dlbkZkcy9GZGZQYXJzZXIu cHkNCj4gaW5kZXggNjNlZGY4MTZlYy4uNTYyOTRlZDBkOSAxMDA2NDQNCj4gLS0tIGEvQmFzZVRv b2xzL1NvdXJjZS9QeXRob24vR2VuRmRzL0ZkZlBhcnNlci5weQ0KPiArKysgYi9CYXNlVG9vbHMv U291cmNlL1B5dGhvbi9HZW5GZHMvRmRmUGFyc2VyLnB5DQo+IEBAIC03MTYsMTMgKzcxNiwxMyBA QCBjbGFzcyBGZGZQYXJzZXI6DQo+ICAgICAgICAgICAgICAgICAgICAgIEVuZFBvcyA9IEN1ckxp bmUuZmluZCgnKScsIFN0YXJ0UG9zKzIpDQo+ICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIFN0 YXJ0UG9zICE9IC0xIGFuZCBFbmRQb3MgIT0gLTEgYW5kIHNlbGYuX1Rva2VuIG5vdCBpbiB7VEFC X0lGX0RFRiwgVEFCX0lGX05fREVGLCBUQUJfSUYsIFRBQl9FTFNFX0lGfToNCj4gICAgICAgICAg ICAgICAgICAgICAgICAgIE1hY3JvTmFtZSA9IEN1ckxpbmVbU3RhcnRQb3MrMjogRW5kUG9zXQ0K PiAtICAgICAgICAgICAgICAgICAgICAgICAgTWFjb3JWYWx1ZSA9IHNlbGYuX0dldE1hY3JvVmFs dWUoTWFjcm9OYW1lKQ0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgaWYgTWFjb3JWYWx1ZSBp cyBub3QgTm9uZToNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdXJMaW5lID0gQ3Vy TGluZS5yZXBsYWNlKCckKCcgKyBNYWNyb05hbWUgKyAnKScsIE1hY29yVmFsdWUsIDEpDQo+IC0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgTWFjb3JWYWx1ZS5maW5kKCckKCcpICE9IC0x Og0KPiArICAgICAgICAgICAgICAgICAgICAgICAgTWFjcm9WYWx1ZSA9IHNlbGYuX0dldE1hY3Jv VmFsdWUoTWFjcm9OYW1lKQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgaWYgTWFjcm9WYWx1 ZSBpcyBub3QgTm9uZToNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdXJMaW5lID0g Q3VyTGluZS5yZXBsYWNlKCckKCcgKyBNYWNyb05hbWUgKyAnKScsIE1hY3JvVmFsdWUsIDEpDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgTWFjcm9WYWx1ZS5maW5kKCckKCcpICE9 IC0xOg0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmVJbmRleCA9IFN0YXJ0 UG9zDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToNCj4gLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUHJlSW5kZXggPSBTdGFydFBvcyArIGxlbihNYWNvclZhbHVl KQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmVJbmRleCA9IFN0YXJ0UG9z ICsgbGVuKE1hY3JvVmFsdWUpDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOg0KPiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByZUluZGV4ID0gRW5kUG9zICsgMQ0KPiAgICAg ICAgICAgICAgICAgICAgICAgICAgU3RhcnRQb3MgPSBDdXJMaW5lLmZpbmQoJyQoJywgUHJlSW5k ZXgpDQo+IEBAIC0xMDM3LDcgKzEwMzcsNyBAQCBjbGFzcyBGZGZQYXJzZXI6DQo+IA0KPiAgICAg ICMjIF9HZXROZXh0VG9rZW4oKSBtZXRob2QNCj4gICAgICAjDQo+IC0gICAgIyAgIEdldCBuZXh0 IHRva2VuIHVuaXQgYmVmb3JlIGEgc2VwZXJhdG9yDQo+ICsgICAgIyAgIEdldCBuZXh0IHRva2Vu IHVuaXQgYmVmb3JlIGEgc2VwYXJhdG9yDQo+ICAgICAgIyAgIElmIGZvdW5kLCB0aGUgc3RyaW5n IHZhbHVlIGlzIHB1dCBpbnRvIHNlbGYuX1Rva2VuDQo+ICAgICAgIw0KPiAgICAgICMgICBAcGFy YW0gIHNlbGYgICAgICAgIFRoZSBvYmplY3QgcG9pbnRlcg0KPiBAQCAtMTA1NCwxMiArMTA1NCwx MiBAQCBjbGFzcyBGZGZQYXJzZXI6DQo+ICAgICAgICAgIFN0YXJ0TGluZSA9IHNlbGYuQ3VycmVu dExpbmVOdW1iZXINCj4gICAgICAgICAgd2hpbGUgU3RhcnRMaW5lID09IHNlbGYuQ3VycmVudExp bmVOdW1iZXI6DQo+ICAgICAgICAgICAgICBUZW1wQ2hhciA9IHNlbGYuX0N1cnJlbnRDaGFyKCkN Cj4gLSAgICAgICAgICAgICMgVHJ5IHRvIGZpbmQgdGhlIGVuZCBjaGFyIHRoYXQgaXMgbm90IGEg c3BhY2UgYW5kIG5vdCBpbiBzZXBlcmF0b3IgdHVwbGUuDQo+ICsgICAgICAgICAgICAjIFRyeSB0 byBmaW5kIHRoZSBlbmQgY2hhciB0aGF0IGlzIG5vdCBhIHNwYWNlIGFuZCBub3QgaW4gc2VwYXJh dG9yIHR1cGxlLg0KPiAgICAgICAgICAgICAgIyBUaGF0IGlzLCB3aGVuIHdlIGdvdCBhIHNwYWNl IG9yIGFueSBjaGFyIGluIHRoZSB0dXBsZSwgd2UgZ290IHRoZSBlbmQgb2YgdG9rZW4uDQo+ICAg ICAgICAgICAgICBpZiBub3Qgc3RyKFRlbXBDaGFyKS5pc3NwYWNlKCkgYW5kIFRlbXBDaGFyIG5v dCBpbiBTRVBBUkFUT1JTOg0KPiAgICAgICAgICAgICAgICAgIHNlbGYuX0dldE9uZUNoYXIoKQ0K PiAtICAgICAgICAgICAgIyBpZiB3ZSBoYXBwZW4gdG8gbWVldCBhIHNlcGVyYXRvciBhcyB0aGUg Zmlyc3QgY2hhciwgd2UgbXVzdCBwcm9jZWVkIHRvIGdldCBpdC4NCj4gLSAgICAgICAgICAgICMg VGhhdCBpcywgd2UgZ2V0IGEgdG9rZW4gdGhhdCBpcyBhIHNlcGVyYXRvciBjaGFyLiBub21hbGx5 IGl0IGlzIHRoZSBib3VuZGFyeSBvZiBvdGhlciB0b2tlbnMuDQo+ICsgICAgICAgICAgICAjIGlm IHdlIGhhcHBlbiB0byBtZWV0IGEgc2VwYXJhdG9yIGFzIHRoZSBmaXJzdCBjaGFyLCB3ZSBtdXN0 IHByb2NlZWQgdG8gZ2V0IGl0Lg0KPiArICAgICAgICAgICAgIyBUaGF0IGlzLCB3ZSBnZXQgYSB0 b2tlbiB0aGF0IGlzIGEgc2VwYXJhdG9yIGNoYXIuIG5vcm1hbGx5IGl0IGlzIHRoZSBib3VuZGFy eSBvZiBvdGhlciB0b2tlbnMuDQo+ICAgICAgICAgICAgICBlbGlmIFN0YXJ0UG9zID09IHNlbGYu Q3VycmVudE9mZnNldFdpdGhpbkxpbmUgYW5kIFRlbXBDaGFyIGluIFNFUEFSQVRPUlM6DQo+ICAg ICAgICAgICAgICAgICAgc2VsZi5fR2V0T25lQ2hhcigpDQo+ICAgICAgICAgICAgICAgICAgYnJl YWsNCj4gQEAgLTEwODEsNyArMTA4MSw3IEBAIGNsYXNzIEZkZlBhcnNlcjoNCj4gDQo+ICAgICAg IyMgX0dldE5leHRHdWlkKCkgbWV0aG9kDQo+ICAgICAgIw0KPiAtICAgICMgICBHZXQgbmV4dCB0 b2tlbiB1bml0IGJlZm9yZSBhIHNlcGVyYXRvcg0KPiArICAgICMgICBHZXQgbmV4dCB0b2tlbiB1 bml0IGJlZm9yZSBhIHNlcGFyYXRvcg0KPiAgICAgICMgICBJZiBmb3VuZCwgdGhlIEdVSUQgc3Ry aW5nIGlzIHB1dCBpbnRvIHNlbGYuX1Rva2VuDQo+ICAgICAgIw0KPiAgICAgICMgICBAcGFyYW0g IHNlbGYgICAgICAgIFRoZSBvYmplY3QgcG9pbnRlcg0KPiBAQCAtMTEzMywxMyArMTEzMywxMyBA QCBjbGFzcyBGZGZQYXJzZXI6DQo+ICAgICAgICAgIHdoaWxlIEN1cnJlbnRMaW5lID09IHNlbGYu Q3VycmVudExpbmVOdW1iZXI6DQo+IA0KPiAgICAgICAgICAgICAgVGVtcENoYXIgPSBzZWxmLl9D dXJyZW50Q2hhcigpDQo+IC0gICAgICAgICAgICAjIFRyeSB0byBmaW5kIHRoZSBlbmQgY2hhciB0 aGF0IGlzIG5vdCBhIHNwYWNlIGFuZCBub3QgaW4gc2VwZXJhdG9yIHR1cGxlLg0KPiArICAgICAg ICAgICAgIyBUcnkgdG8gZmluZCB0aGUgZW5kIGNoYXIgdGhhdCBpcyBub3QgYSBzcGFjZSBhbmQg bm90IGluIHNlcGFyYXRvciB0dXBsZS4NCj4gICAgICAgICAgICAgICMgVGhhdCBpcywgd2hlbiB3 ZSBnb3QgYSBzcGFjZSBvciBhbnkgY2hhciBpbiB0aGUgdHVwbGUsIHdlIGdvdCB0aGUgZW5kIG9m IHRva2VuLg0KPiAgICAgICAgICAgICAgaWYgbm90IHN0cihUZW1wQ2hhcikuaXNzcGFjZSgpIGFu ZCBub3QgVGVtcENoYXIgaW4gU0VQQVJBVE9SUzoNCj4gICAgICAgICAgICAgICAgICBpZiBub3Qg c2VsZi5fVW5kb09uZUNoYXIoKToNCj4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuDQo+IC0g ICAgICAgICAgICAjIGlmIHdlIGhhcHBlbiB0byBtZWV0IGEgc2VwZXJhdG9yIGFzIHRoZSBmaXJz dCBjaGFyLCB3ZSBtdXN0IHByb2NlZWQgdG8gZ2V0IGl0Lg0KPiAtICAgICAgICAgICAgIyBUaGF0 IGlzLCB3ZSBnZXQgYSB0b2tlbiB0aGF0IGlzIGEgc2VwZXJhdG9yIGNoYXIuIG5vbWFsbHkgaXQg aXMgdGhlIGJvdW5kYXJ5IG9mIG90aGVyIHRva2Vucy4NCj4gKyAgICAgICAgICAgICMgaWYgd2Ug aGFwcGVuIHRvIG1lZXQgYSBzZXBhcmF0b3IgYXMgdGhlIGZpcnN0IGNoYXIsIHdlIG11c3QgcHJv Y2VlZCB0byBnZXQgaXQuDQo+ICsgICAgICAgICAgICAjIFRoYXQgaXMsIHdlIGdldCBhIHRva2Vu IHRoYXQgaXMgYSBzZXBhcmF0b3IgY2hhci4gbm9ybWFsbHkgaXQgaXMgdGhlIGJvdW5kYXJ5IG9m IG90aGVyIHRva2Vucy4NCj4gICAgICAgICAgICAgIGVsaWYgU3RhcnRQb3MgPT0gc2VsZi5DdXJy ZW50T2Zmc2V0V2l0aGluTGluZSBhbmQgVGVtcENoYXIgaW4gU0VQQVJBVE9SUzoNCj4gICAgICAg ICAgICAgICAgICByZXR1cm4NCj4gICAgICAgICAgICAgIGVsc2U6DQo+IEBAIC0xMTQ5LDcgKzEx NDksNyBAQCBjbGFzcyBGZGZQYXJzZXI6DQo+IA0KPiAgICAgICMjIF9HZXROZXh0SGV4TnVtYmVy KCkgbWV0aG9kDQo+ICAgICAgIw0KPiAtICAgICMgICBHZXQgbmV4dCBIRVggZGF0YSBiZWZvcmUg YSBzZXBlcmF0b3INCj4gKyAgICAjICAgR2V0IG5leHQgSEVYIGRhdGEgYmVmb3JlIGEgc2VwYXJh dG9yDQo+ICAgICAgIyAgIElmIGZvdW5kLCB0aGUgSEVYIGRhdGEgaXMgcHV0IGludG8gc2VsZi5f VG9rZW4NCj4gICAgICAjDQo+ICAgICAgIyAgIEBwYXJhbSAgc2VsZiAgICAgICAgVGhlIG9iamVj dCBwb2ludGVyDQo+IEBAIC0xMTY3LDcgKzExNjcsNyBAQCBjbGFzcyBGZGZQYXJzZXI6DQo+IA0K PiAgICAgICMjIF9HZXROZXh0RGVjaW1hbE51bWJlcigpIG1ldGhvZA0KPiAgICAgICMNCj4gLSAg ICAjICAgR2V0IG5leHQgZGVjaW1hbCBkYXRhIGJlZm9yZSBhIHNlcGVyYXRvcg0KPiArICAgICMg ICBHZXQgbmV4dCBkZWNpbWFsIGRhdGEgYmVmb3JlIGEgc2VwYXJhdG9yDQo+ICAgICAgIyAgIElm IGZvdW5kLCB0aGUgZGVjaW1hbCBkYXRhIGlzIHB1dCBpbnRvIHNlbGYuX1Rva2VuDQo+ICAgICAg Iw0KPiAgICAgICMgICBAcGFyYW0gIHNlbGYgICAgICAgIFRoZSBvYmplY3QgcG9pbnRlcg0KPiBk aWZmIC0tZ2l0IGEvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vR2VuRmRzL0Zmc0luZlN0YXRlbWVu dC5weSBiL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL0dlbkZkcy9GZnNJbmZTdGF0ZW1lbnQucHkN Cj4gaW5kZXggNmRjYjU3ZGVlZC4uODQ1MDZlZDcwZSAxMDA2NDQNCj4gLS0tIGEvQmFzZVRvb2xz L1NvdXJjZS9QeXRob24vR2VuRmRzL0Zmc0luZlN0YXRlbWVudC5weQ0KPiArKysgYi9CYXNlVG9v bHMvU291cmNlL1B5dGhvbi9HZW5GZHMvRmZzSW5mU3RhdGVtZW50LnB5DQo+IEBAIC0xOTAsNyAr MTkwLDcgQEAgY2xhc3MgRmZzSW5mU3RhdGVtZW50KEZmc0luZlN0YXRlbWVudENsYXNzT2JqZWN0 KToNCj4gDQo+ICAgICAgICAgICAgICBJbmYgPSBHZW5GZHNHbG9iYWxWYXJpYWJsZS5Xb3JrU3Bh Y2UuQnVpbGRPYmplY3RbUGF0aENsYXNzT2JqLCBzZWxmLkN1cnJlbnRBcmNoLCBHZW5GZHNHbG9i YWxWYXJpYWJsZS5UYXJnZXROYW1lLA0KPiBHZW5GZHNHbG9iYWxWYXJpYWJsZS5Ub29sQ2hhaW5U YWddDQo+ICAgICAgICAgICAgICAjDQo+IC0gICAgICAgICAgICAjIFNldCBGZnMgQmFzZU5hbWUs IE1kb3VsZUd1aWQsIE1vZHVsZVR5cGUsIFZlcnNpb24sIE91dHB1dFBhdGgNCj4gKyAgICAgICAg ICAgICMgU2V0IEZmcyBCYXNlTmFtZSwgTW9kdWxlR3VpZCwgTW9kdWxlVHlwZSwgVmVyc2lvbiwg T3V0cHV0UGF0aA0KPiAgICAgICAgICAgICAgIw0KPiAgICAgICAgICAgICAgc2VsZi5CYXNlTmFt ZSA9IEluZi5CYXNlTmFtZQ0KPiAgICAgICAgICAgICAgc2VsZi5Nb2R1bGVHdWlkID0gSW5mLkd1 aWQNCj4gQEAgLTM1Miw3ICszNTIsNyBAQCBjbGFzcyBGZnNJbmZTdGF0ZW1lbnQoRmZzSW5mU3Rh dGVtZW50Q2xhc3NPYmplY3QpOg0KPiAgICAgICAgICBHZW5GZHNHbG9iYWxWYXJpYWJsZS5WZXJi b3NlTG9nZ2VyKCJJbmZGaWxlTmFtZSA6JXMiICUgc2VsZi5JbmZGaWxlTmFtZSkNCj4gDQo+ICAg ICAgICAgICMNCj4gLSAgICAgICAgIyBTZXQgT3V0cHV0UGF0aCA9ICR7V29ya1NwYWNlfVxCdWls ZFxGdlxGZnNcJHtNb2R1bGVHdWlkfSsgJHtNZG91bGVOYW1lfVwNCj4gKyAgICAgICAgIyBTZXQg T3V0cHV0UGF0aCA9ICR7V29ya1NwYWNlfVxCdWlsZFxGdlxGZnNcJHtNb2R1bGVHdWlkfSsgJHtN b2R1bGVOYW1lfVwNCj4gICAgICAgICAgIw0KPiANCj4gICAgICAgICAgc2VsZi5PdXRwdXRQYXRo ID0gb3MucGF0aC5qb2luKEdlbkZkc0dsb2JhbFZhcmlhYmxlLkZmc0RpciwgXA0KPiBkaWZmIC0t Z2l0IGEvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vR2VuRmRzL0Z2LnB5IGIvQmFzZVRvb2xzL1Nv dXJjZS9QeXRob24vR2VuRmRzL0Z2LnB5DQo+IGluZGV4IDJhZTk5MTEyOGEuLjA2ZDg1M2I2MDcg MTAwNjQ0DQo+IC0tLSBhL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL0dlbkZkcy9Gdi5weQ0KPiAr KysgYi9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9HZW5GZHMvRnYucHkNCj4gQEAgLTI2Miw3ICsy NjIsNyBAQCBjbGFzcyBGViAob2JqZWN0KToNCj4gDQo+ICAgICAgIyMgX0luaXRpYWxpemVJbmYo KQ0KPiAgICAgICMNCj4gLSAgICAjICAgSW5pdGlsaXplIHRoZSBpbmYgZmlsZSB0byBjcmVhdGUg RlYNCj4gKyAgICAjICAgSW5pdGlhbGl6ZSB0aGUgaW5mIGZpbGUgdG8gY3JlYXRlIEZWDQo+ICAg ICAgIw0KPiAgICAgICMgICBAcGFyYW0gIHNlbGYgICAgICAgIFRoZSBvYmplY3QgcG9pbnRlcg0K PiAgICAgICMgICBAcGFyYW0gIEJhc2VBZGRyZXNzIGJhc2UgYWRkcmVzcyBvZiBGVg0KPiBkaWZm IC0tZ2l0IGEvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vUnNhMjA0OFNoYTI1NlNpZ24vUnNhMjA0 OFNoYTI1NlNpZ24ucHkNCj4gYi9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9Sc2EyMDQ4U2hhMjU2 U2lnbi9Sc2EyMDQ4U2hhMjU2U2lnbi5weQ0KPiBpbmRleCA2Y2VhODg1ODUzLi4zN2M3ZTkxZTgz IDEwMDY0NA0KPiAtLS0gYS9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9Sc2EyMDQ4U2hhMjU2U2ln bi9Sc2EyMDQ4U2hhMjU2U2lnbi5weQ0KPiArKysgYi9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9S c2EyMDQ4U2hhMjU2U2lnbi9Sc2EyMDQ4U2hhMjU2U2lnbi5weQ0KPiBAQCAtNDIsNyArNDIsNyBA QCBfX3VzYWdlX18gICAgID0gJyVzIC1lfC1kIFtvcHRpb25zXSA8aW5wdXRfZmlsZT4nICUgKF9f cHJvZ19fKQ0KPiAgRUZJX0hBU0hfQUxHT1JJVEhNX1NIQTI1Nl9HVUlEID0gdXVpZC5VVUlEKCd7 NTFhYTU5ZGUtZmRmMi00ZWEzLWJjNjMtODc1ZmI3ODQyZWU5fScpDQo+IA0KPiAgIw0KPiAtIyBT dHJ1Y3R1cmUgZGVmaW50aW9uIHRvIHVucGFjayBFRklfQ0VSVF9CTE9DS19SU0FfMjA0OF9TSEEy NTYgZnJvbSBVRUZJIDIuNCBTcGVjaWZpY2F0aW9uDQo+ICsjIFN0cnVjdHVyZSBkZWZpbml0aW9u IHRvIHVucGFjayBFRklfQ0VSVF9CTE9DS19SU0FfMjA0OF9TSEEyNTYgZnJvbSBVRUZJIDIuNCBT cGVjaWZpY2F0aW9uDQo+ICAjDQo+ICAjICAgdHlwZWRlZiBzdHJ1Y3QgX0VGSV9DRVJUX0JMT0NL X1JTQV8yMDQ4X1NIQTI1NiB7DQo+ICAjICAgICBFRklfR1VJRCBIYXNoVHlwZTsNCj4gZGlmZiAt LWdpdCBhL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1RhYmxlL1RhYmxlLnB5IGIvQmFzZVRvb2xz L1NvdXJjZS9QeXRob24vVGFibGUvVGFibGUucHkNCj4gaW5kZXggZTg5Yjk5MzIwZC4uZDhmZmM3 MmRhYiAxMDA2NDQNCj4gLS0tIGEvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vVGFibGUvVGFibGUu cHkNCj4gKysrIGIvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vVGFibGUvVGFibGUucHkNCj4gQEAg LTUyLDcgKzUyLDcgQEAgY2xhc3MgVGFibGUob2JqZWN0KToNCj4gICAgICAjIFF1ZXJ5IGFsbCBy ZWNvcmRzIG9mIHRoZSB0YWJsZQ0KPiAgICAgICMNCj4gICAgICBkZWYgUXVlcnkoc2VsZik6DQo+ IC0gICAgICAgIEVka0xvZ2dlci52ZXJib3NlKCJcblF1ZXJ5IHRhYmVsICVzIHN0YXJ0ZWQgLi4u IiAlIHNlbGYuVGFibGUpDQo+ICsgICAgICAgIEVka0xvZ2dlci52ZXJib3NlKCJcblF1ZXJ5IHRh YmxlICVzIHN0YXJ0ZWQgLi4uIiAlIHNlbGYuVGFibGUpDQo+ICAgICAgICAgIFNxbENvbW1hbmQg PSAiIiJzZWxlY3QgKiBmcm9tICVzIiIiICUgc2VsZi5UYWJsZQ0KPiAgICAgICAgICBzZWxmLkN1 ci5leGVjdXRlKFNxbENvbW1hbmQpDQo+ICAgICAgICAgIGZvciBScyBpbiBzZWxmLkN1cjoNCj4g ZGlmZiAtLWdpdCBhL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1RhYmxlL1RhYmxlRnVuY3Rpb24u cHkgYi9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9UYWJsZS9UYWJsZUZ1bmN0aW9uLnB5DQo+IGlu ZGV4IGVlNjc3Y2YxMDcuLjlkNDNmZjA5NDcgMTAwNjQ0DQo+IC0tLSBhL0Jhc2VUb29scy9Tb3Vy Y2UvUHl0aG9uL1RhYmxlL1RhYmxlRnVuY3Rpb24ucHkNCj4gKysrIGIvQmFzZVRvb2xzL1NvdXJj ZS9QeXRob24vVGFibGUvVGFibGVGdW5jdGlvbi5weQ0KPiBAQCAtMzgsNyArMzgsNyBAQCBjbGFz cyBUYWJsZUZ1bmN0aW9uKFRhYmxlKToNCj4gICAgICAjIEBwYXJhbSBIZWFkZXI6ICAgICAgICAg ICAgICBIZWFkZXIgb2YgYSBGdW5jdGlvbg0KPiAgICAgICMgQHBhcmFtIE1vZGlmaWVyOiAgICAg ICAgICAgIE1vZGlmaWVyIG9mIGEgRnVuY3Rpb24NCj4gICAgICAjIEBwYXJhbSBOYW1lOiAgICAg ICAgICAgICAgICBOYW1lIG9mIGEgRnVuY3Rpb24NCj4gLSAgICAjIEBwYXJhbSBSZXR1cm5TdGF0 ZW1lbnQ6ICAgICBSZXR1cm5TdGF0ZW1lbnQgb2YgYSBGdW5jaW9udA0KPiArICAgICMgQHBhcmFt IFJldHVyblN0YXRlbWVudDogICAgIFJldHVyblN0YXRlbWVudCBvZiBhIEZ1bmN0aW9uDQo+ICAg ICAgIyBAcGFyYW0gU3RhcnRMaW5lOiAgICAgICAgICAgU3RhcnRMaW5lIG9mIGEgRnVuY3Rpb24N Cj4gICAgICAjIEBwYXJhbSBTdGFydENvbHVtbjogICAgICAgICBTdGFydENvbHVtbiBvZiBhIEZ1 bmN0aW9uDQo+ICAgICAgIyBAcGFyYW0gRW5kTGluZTogICAgICAgICAgICAgRW5kTGluZSBvZiBh IEZ1bmN0aW9uDQo+IEBAIC03NSw3ICs3NSw3IEBAIGNsYXNzIFRhYmxlRnVuY3Rpb24oVGFibGUp Og0KPiAgICAgICMgQHBhcmFtIEhlYWRlcjogICAgICAgICAgICAgIEhlYWRlciBvZiBhIEZ1bmN0 aW9uDQo+ICAgICAgIyBAcGFyYW0gTW9kaWZpZXI6ICAgICAgICAgICAgTW9kaWZpZXIgb2YgYSBG dW5jdGlvbg0KPiAgICAgICMgQHBhcmFtIE5hbWU6ICAgICAgICAgICAgICAgIE5hbWUgb2YgYSBG dW5jdGlvbg0KPiAtICAgICMgQHBhcmFtIFJldHVyblN0YXRlbWVudDogICAgIFJldHVyblN0YXRl bWVudCBvZiBhIEZ1bmNpb250DQo+ICsgICAgIyBAcGFyYW0gUmV0dXJuU3RhdGVtZW50OiAgICAg UmV0dXJuU3RhdGVtZW50IG9mIGEgRnVuY3Rpb24NCj4gICAgICAjIEBwYXJhbSBTdGFydExpbmU6 ICAgICAgICAgICBTdGFydExpbmUgb2YgYSBGdW5jdGlvbg0KPiAgICAgICMgQHBhcmFtIFN0YXJ0 Q29sdW1uOiAgICAgICAgIFN0YXJ0Q29sdW1uIG9mIGEgRnVuY3Rpb24NCj4gICAgICAjIEBwYXJh bSBFbmRMaW5lOiAgICAgICAgICAgICBFbmRMaW5lIG9mIGEgRnVuY3Rpb24NCj4gZGlmZiAtLWdp dCBhL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1RhYmxlL1RhYmxlUXVlcnkucHkgYi9CYXNlVG9v bHMvU291cmNlL1B5dGhvbi9UYWJsZS9UYWJsZVF1ZXJ5LnB5DQo+IGluZGV4IDhlN2QzMTNjNzEu LmIyMDNiZjg4ZTggMTAwNjQ0DQo+IC0tLSBhL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1RhYmxl L1RhYmxlUXVlcnkucHkNCj4gKysrIGIvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vVGFibGUvVGFi bGVRdWVyeS5weQ0KPiBAQCAtMzcsNyArMzcsNyBAQCBjbGFzcyBUYWJsZVF1ZXJ5KFRhYmxlKToN Cj4gICAgICAjDQo+ICAgICAgIyBAcGFyYW0gSUQ6ICAgICAgICAgICAgICAgICBJRCBvZiBhIFF1 ZXJ5DQo+ICAgICAgIyBAcGFyYW0gTmFtZTogICAgICAgICAgICAgICBOYW1lIG9mIGEgUXVlcnkN Cj4gLSAgICAjIEBwYXJhbSBNb2RpZmVyOiAgICAgICAgICAgIE1vZGlmaWVyIG9mIGEgUXVlcnkN Cj4gKyAgICAjIEBwYXJhbSBNb2RpZmllcjogICAgICAgICAgIE1vZGlmaWVyIG9mIGEgUXVlcnkN Cj4gICAgICAjIEBwYXJhbSBWYWx1ZTogICAgICAgICAgICAgIFR5cGUgb2YgYSBRdWVyeQ0KPiAg ICAgICMgQHBhcmFtIE1vZGVsOiAgICAgICAgICAgICAgTW9kZWwgb2YgYSBRdWVyeQ0KPiAgICAg ICMNCj4gZGlmZiAtLWdpdCBhL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1RhcmdldFRvb2wvVGFy Z2V0VG9vbC5weSBiL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1RhcmdldFRvb2wvVGFyZ2V0VG9v bC5weQ0KPiBpbmRleCBhNDlhMDFmOWUzLi41ZmY1NDE2MGFhIDEwMDY0NA0KPiAtLS0gYS9CYXNl VG9vbHMvU291cmNlL1B5dGhvbi9UYXJnZXRUb29sL1RhcmdldFRvb2wucHkNCj4gKysrIGIvQmFz ZVRvb2xzL1NvdXJjZS9QeXRob24vVGFyZ2V0VG9vbC9UYXJnZXRUb29sLnB5DQo+IEBAIC0xNDMs MTQgKzE0MywxNCBAQCBkZWYgR2V0Q29uZmlndXJlS2V5VmFsdWUoc2VsZiwgS2V5KToNCj4gICAg ICAgICAgaWYgb3MucGF0aC5leGlzdHMoZHNjRnVsbFBhdGgpOg0KPiAgICAgICAgICAgICAgTGlu ZSA9ICIlLTMwcyA9ICVzXG4iICUgKEtleSwgc2VsZi5PcHQuRFNDRklMRSkNCj4gICAgICAgICAg ZWxzZToNCj4gLSAgICAgICAgICAgIEVka0xvZ2dlci5lcnJvcigiVGFnZXRUb29sIiwgQnVpbGRU b29sRXJyb3IuRklMRV9OT1RfRk9VTkQsDQo+ICsgICAgICAgICAgICBFZGtMb2dnZXIuZXJyb3Io IlRhcmdldFRvb2wiLCBCdWlsZFRvb2xFcnJvci5GSUxFX05PVF9GT1VORCwNCj4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAiRFNDIGZpbGUgJXMgZG9lcyBub3QgZXhpc3QhIiAlIHNlbGYu T3B0LkRTQ0ZJTEUsIFJhaXNlRXJyb3I9RmFsc2UpDQo+ICAgICAgZWxpZiBLZXkgPT0gVEFCX1RB VF9ERUZJTkVTX1RPT0xfQ0hBSU5fQ09ORiBhbmQgc2VsZi5PcHQuVE9PTF9ERUZJTklUSU9OX0ZJ TEUgaXMgbm90IE5vbmU6DQo+ICAgICAgICAgIHRvb2xkZWZGdWxsUGF0aCA9IG9zLnBhdGguam9p bihzZWxmLldvcmtTcGFjZSwgc2VsZi5PcHQuVE9PTF9ERUZJTklUSU9OX0ZJTEUpDQo+ICAgICAg ICAgIGlmIG9zLnBhdGguZXhpc3RzKHRvb2xkZWZGdWxsUGF0aCk6DQo+ICAgICAgICAgICAgICBM aW5lID0gIiUtMzBzID0gJXNcbiIgJSAoS2V5LCBzZWxmLk9wdC5UT09MX0RFRklOSVRJT05fRklM RSkNCj4gICAgICAgICAgZWxzZToNCj4gLSAgICAgICAgICAgIEVka0xvZ2dlci5lcnJvcigiVGFn ZXRUb29sIiwgQnVpbGRUb29sRXJyb3IuRklMRV9OT1RfRk9VTkQsDQo+ICsgICAgICAgICAgICBF ZGtMb2dnZXIuZXJyb3IoIlRhcmdldFRvb2wiLCBCdWlsZFRvb2xFcnJvci5GSUxFX05PVF9GT1VO RCwNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVG9vbGRlZiBmaWxlICVzIGRvZXMg bm90IGV4aXN0ISIgJSBzZWxmLk9wdC5UT09MX0RFRklOSVRJT05fRklMRSwgUmFpc2VFcnJvcj1G YWxzZSkNCj4gDQo+ICAgICAgZWxpZiBzZWxmLk9wdC5OVU0gPj0gMjoNCj4gZGlmZiAtLWdpdCBh L0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1RyaW0vVHJpbS5weSBiL0Jhc2VUb29scy9Tb3VyY2Uv UHl0aG9uL1RyaW0vVHJpbS5weQ0KPiBpbmRleCA0MjhiZjBkNjgxLi44MjVlZDNlNWQ1IDEwMDY0 NA0KPiAtLS0gYS9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9UcmltL1RyaW0ucHkNCj4gKysrIGIv QmFzZVRvb2xzL1NvdXJjZS9QeXRob24vVHJpbS9UcmltLnB5DQo+IEBAIC0xNjgsNyArMTY4LDcg QEAgZGVmIFRyaW1QcmVwcm9jZXNzZWRGaWxlKFNvdXJjZSwgVGFyZ2V0LCBDb252ZXJ0SGV4LCBU cmltTG9uZyk6DQo+ICAgICAgICAgICAgICAgICAgSW5qZWN0ZWRGaWxlID0gTWF0Y2hMaXN0WzFd DQo+ICAgICAgICAgICAgICAgICAgSW5qZWN0ZWRGaWxlID0gb3MucGF0aC5ub3JtcGF0aChJbmpl Y3RlZEZpbGUpDQo+ICAgICAgICAgICAgICAgICAgSW5qZWN0ZWRGaWxlID0gb3MucGF0aC5ub3Jt Y2FzZShJbmplY3RlZEZpbGUpDQo+IC0gICAgICAgICAgICAgICAgIyBUaGUgZmlyc3QgaW5qZXRj dGVkIGZpbGUgbXVzdCBiZSB0aGUgcHJlcHJvY2Vzc2VkIGZpbGUgaXRzZWxmDQo+ICsgICAgICAg ICAgICAgICAgIyBUaGUgZmlyc3QgaW5qZWN0ZWQgZmlsZSBtdXN0IGJlIHRoZSBwcmVwcm9jZXNz ZWQgZmlsZSBpdHNlbGYNCj4gICAgICAgICAgICAgICAgICBpZiBQcmVwcm9jZXNzZWRGaWxlID09 ICIiOg0KPiAgICAgICAgICAgICAgICAgICAgICBQcmVwcm9jZXNzZWRGaWxlID0gSW5qZWN0ZWRG aWxlDQo+ICAgICAgICAgICAgICBMaW5lQ29udHJvbERpcmVjdGl2ZUZvdW5kID0gVHJ1ZQ0KPiBk aWZmIC0tZ2l0IGEvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vVVBUL0NvcmUvRGVwZW5kZW5jeVJ1 bGVzLnB5IGIvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vVVBUL0NvcmUvRGVwZW5kZW5jeVJ1bGVz LnB5DQo+IGluZGV4IDljM2JhYTFiMTIuLjg5YjgxZjhiMWYgMTAwNjQ0DQo+IC0tLSBhL0Jhc2VU b29scy9Tb3VyY2UvUHl0aG9uL1VQVC9Db3JlL0RlcGVuZGVuY3lSdWxlcy5weQ0KPiArKysgYi9C YXNlVG9vbHMvU291cmNlL1B5dGhvbi9VUFQvQ29yZS9EZXBlbmRlbmN5UnVsZXMucHkNCj4gQEAg LTE1OSw3ICsxNTksNyBAQCBjbGFzcyBEZXBlbmRlbmN5UnVsZXMob2JqZWN0KToNCj4gICAgICAj DQo+ICAgICAgIyBAcGFyYW0gUGtnT2JqOiBBIHBhY2thZ2Ugb2JqZWN0DQo+ICAgICAgIyBAcGFy YW0gRHBPYmo6IEEgZGlzdHJpYnV0aW9uIG9iamVjdA0KPiAtICAgICMgQHJldHVybjogVHJ1ZSBp ZiBwYWNrYWdlIGRlcGV4IHNhdGlzaWZpZWQNCj4gKyAgICAjIEByZXR1cm46IFRydWUgaWYgcGFj a2FnZSBkZXBleCBzYXRpc2ZpZWQNCj4gICAgICAjICAgICAgICAgIEZhbHNlIGVsc2UNCj4gICAg ICAjDQo+ICAgICAgZGVmIENoZWNrUGFja2FnZURlcGV4U2F0aXNmaWVkKHNlbGYsIFBrZ09iaiwg RHBPYmo9Tm9uZSk6DQo+IGRpZmYgLS1naXQgYS9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9VUFQv Q29yZS9JcGlEYi5weSBiL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1VQVC9Db3JlL0lwaURiLnB5 DQo+IGluZGV4IDQ4ZGVmZWFjN2UuLmJlZGYyNjMyMWUgMTAwNjQ0DQo+IC0tLSBhL0Jhc2VUb29s cy9Tb3VyY2UvUHl0aG9uL1VQVC9Db3JlL0lwaURiLnB5DQo+ICsrKyBiL0Jhc2VUb29scy9Tb3Vy Y2UvUHl0aG9uL1VQVC9Db3JlL0lwaURiLnB5DQo+IEBAIC03MzUsOCArNzM1LDggQEAgY2xhc3Mg SXBpRGF0YWJhc2Uob2JqZWN0KToNCj4gDQo+ICAgICAgIyMgR2V0IGEgbGlzdCBvZiBtb2R1bGUg aW5mb3JtYXRpb24gdGhhdCBjb21lcyBmcm9tIERQLg0KPiAgICAgICMNCj4gLSAgICAjIEBwYXJh bSBEcEd1aWQ6IEEgRGlzdHJhYnV0aW9uIEd1aWQNCj4gLSAgICAjIEBwYXJhbSBEcFZlcnNpb246 IEEgRGlzdHJhYnV0aW9uIHZlcnNpb24NCj4gKyAgICAjIEBwYXJhbSBEcEd1aWQ6IEEgRGlzdHJp YnV0aW9uIEd1aWQNCj4gKyAgICAjIEBwYXJhbSBEcFZlcnNpb246IEEgRGlzdHJpYnV0aW9uIHZl cnNpb24NCj4gICAgICAjDQo+ICAgICAgZGVmIEdldFNNb2RJbnNQYXRoTGlzdEZyb21EcChzZWxm LCBEcEd1aWQsIERwVmVyc2lvbik6DQo+IA0KPiBAQCAtNzU0LDggKzc1NCw4IEBAIGNsYXNzIElw aURhdGFiYXNlKG9iamVjdCk6DQo+IA0KPiAgICAgICMjIEdldCBhIGxpc3Qgb2YgcGFja2FnZSBp bmZvcm1hdGlvbi4NCj4gICAgICAjDQo+IC0gICAgIyBAcGFyYW0gRHBHdWlkOiBBIERpc3RyYWJ1 dGlvbiBHdWlkDQo+IC0gICAgIyBAcGFyYW0gRHBWZXJzaW9uOiBBIERpc3RyYWJ1dGlvbiB2ZXJz aW9uDQo+ICsgICAgIyBAcGFyYW0gRHBHdWlkOiBBIERpc3RyaWJ1dGlvbiBHdWlkDQo+ICsgICAg IyBAcGFyYW0gRHBWZXJzaW9uOiBBIERpc3RyaWJ1dGlvbiB2ZXJzaW9uDQo+ICAgICAgIw0KPiAg ICAgIGRlZiBHZXRQYWNrYWdlTGlzdEZyb21EcChzZWxmLCBEcEd1aWQsIERwVmVyc2lvbik6DQo+ IA0KPiBAQCAtNzc0LDggKzc3NCw4IEBAIGNsYXNzIElwaURhdGFiYXNlKG9iamVjdCk6DQo+IA0K PiAgICAgICMjIEdldCBhIGxpc3Qgb2YgbW9kdWxlcyB0aGF0IGRlcGVuZHMgb24gcGFja2FnZSBp bmZvcm1hdGlvbiBmcm9tIGEgRFAuDQo+ICAgICAgIw0KPiAtICAgICMgQHBhcmFtIERwR3VpZDog QSBEaXN0cmFidXRpb24gR3VpZA0KPiAtICAgICMgQHBhcmFtIERwVmVyc2lvbjogQSBEaXN0cmFi dXRpb24gdmVyc2lvbg0KPiArICAgICMgQHBhcmFtIERwR3VpZDogQSBEaXN0cmlidXRpb24gR3Vp ZA0KPiArICAgICMgQHBhcmFtIERwVmVyc2lvbjogQSBEaXN0cmlidXRpb24gdmVyc2lvbg0KPiAg ICAgICMNCj4gICAgICBkZWYgR2V0RHBEZXBlbmRlbnRNb2R1bGVMaXN0KHNlbGYsIERwR3VpZCwg RHBWZXJzaW9uKToNCj4gDQo+IEBAIC04MzEsOCArODMxLDggQEAgY2xhc3MgSXBpRGF0YWJhc2Uo b2JqZWN0KToNCj4gDQo+ICAgICAgIyMgR2V0IERwJ3MgbGlzdCBvZiBtb2R1bGVzLg0KPiAgICAg ICMNCj4gLSAgICAjIEBwYXJhbSBEcEd1aWQ6IEEgRGlzdHJhYnV0aW9uIEd1aWQNCj4gLSAgICAj IEBwYXJhbSBEcFZlcnNpb246IEEgRGlzdHJhYnV0aW9uIHZlcnNpb24NCj4gKyAgICAjIEBwYXJh bSBEcEd1aWQ6IEEgRGlzdHJpYnV0aW9uIEd1aWQNCj4gKyAgICAjIEBwYXJhbSBEcFZlcnNpb246 IEEgRGlzdHJpYnV0aW9uIHZlcnNpb24NCj4gICAgICAjDQo+ICAgICAgZGVmIEdldERwTW9kdWxl TGlzdChzZWxmLCBEcEd1aWQsIERwVmVyc2lvbik6DQo+ICAgICAgICAgIE1vZExpc3QgPSBbXQ0K PiBkaWZmIC0tZ2l0IGEvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vVVBUL0dlbk1ldGFGaWxlL0dl bkRlY0ZpbGUucHkgYi9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9VUFQvR2VuTWV0YUZpbGUvR2Vu RGVjRmlsZS5weQ0KPiBpbmRleCBlMmRkNmEwMmRjLi42M2M2ZGEwZmVjIDEwMDY0NA0KPiAtLS0g YS9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9VUFQvR2VuTWV0YUZpbGUvR2VuRGVjRmlsZS5weQ0K PiArKysgYi9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9VUFQvR2VuTWV0YUZpbGUvR2VuRGVjRmls ZS5weQ0KPiBAQCAtNjQ2LDggKzY0Niw4IEBAIGRlZiBHZW5QYWNrYWdlVU5JRW5jb2RlRmlsZShQ YWNrYWdlT2JqZWN0LCBVbmlGaWxlSGVhZGVyID0gJycsIEVuY29kaW5nPVRBQl9FTkNPDQo+ICAg ICAgRmlsZSA9IGNvZGVjcy5vcGVuKENvbnRhaW5lckZpbGUsICd3JywgRW5jb2RpbmcpDQo+ICAg ICAgRmlsZS53cml0ZSh1J1x1RkVGRicgKyBDb250ZW50KQ0KPiAgICAgIEZpbGUuc3RyZWFtLmNs b3NlKCkNCj4gLSAgICBNZDVTaWdhdHVyZSA9IG1kNShfX0ZpbGVIb29rT3Blbl9fKHN0cihDb250 YWluZXJGaWxlKSwgJ3JiJykucmVhZCgpKQ0KPiAtICAgIE1kNVN1bSA9IE1kNVNpZ2F0dXJlLmhl eGRpZ2VzdCgpDQo+ICsgICAgTWQ1U2lnbmF0dXJlID0gbWQ1KF9fRmlsZUhvb2tPcGVuX18oc3Ry KENvbnRhaW5lckZpbGUpLCAncmInKS5yZWFkKCkpDQo+ICsgICAgTWQ1U3VtID0gTWQ1U2lnbmF0 dXJlLmhleGRpZ2VzdCgpDQo+ICAgICAgaWYgKENvbnRhaW5lckZpbGUsIE1kNVN1bSkgbm90IGlu IFBhY2thZ2VPYmplY3QuRmlsZUxpc3Q6DQo+ICAgICAgICAgIFBhY2thZ2VPYmplY3QuRmlsZUxp c3QuYXBwZW5kKChDb250YWluZXJGaWxlLCBNZDVTdW0pKQ0KPiANCj4gZGlmZiAtLWdpdCBhL0Jh c2VUb29scy9Tb3VyY2UvUHl0aG9uL1VQVC9HZW5NZXRhRmlsZS9HZW5JbmZGaWxlLnB5IGIvQmFz ZVRvb2xzL1NvdXJjZS9QeXRob24vVVBUL0dlbk1ldGFGaWxlL0dlbkluZkZpbGUucHkNCj4gaW5k ZXggMWY4YjNmMTYzZS4uNDAzNDZiMGIzYSAxMDA2NDQNCj4gLS0tIGEvQmFzZVRvb2xzL1NvdXJj ZS9QeXRob24vVVBUL0dlbk1ldGFGaWxlL0dlbkluZkZpbGUucHkNCj4gKysrIGIvQmFzZVRvb2xz L1NvdXJjZS9QeXRob24vVVBUL0dlbk1ldGFGaWxlL0dlbkluZkZpbGUucHkNCj4gQEAgLTI1NSw4 ICsyNTUsOCBAQCBkZWYgR2VuTW9kdWxlVU5JRW5jb2RlRmlsZShNb2R1bGVPYmplY3QsIFVuaUZp bGVIZWFkZXI9JycsIEVuY29kaW5nPURULlRBQl9FTkNPRA0KPiAgICAgICAgICBGaWxlID0gY29k ZWNzLm9wZW4oQ29udGFpbmVyRmlsZSwgJ3diJywgRW5jb2RpbmcpDQo+ICAgICAgICAgIEZpbGUu d3JpdGUodSdcdUZFRkYnICsgQ29udGVudCkNCj4gICAgICAgICAgRmlsZS5zdHJlYW0uY2xvc2Uo KQ0KPiAtICAgIE1kNVNpZ2F0dXJlID0gbWQ1KF9fRmlsZUhvb2tPcGVuX18oc3RyKENvbnRhaW5l ckZpbGUpLCAncmInKS5yZWFkKCkpDQo+IC0gICAgTWQ1U3VtID0gTWQ1U2lnYXR1cmUuaGV4ZGln ZXN0KCkNCj4gKyAgICBNZDVTaWduYXR1cmUgPSBtZDUoX19GaWxlSG9va09wZW5fXyhzdHIoQ29u dGFpbmVyRmlsZSksICdyYicpLnJlYWQoKSkNCj4gKyAgICBNZDVTdW0gPSBNZDVTaWduYXR1cmUu aGV4ZGlnZXN0KCkNCj4gICAgICBpZiAoQ29udGFpbmVyRmlsZSwgTWQ1U3VtKSBub3QgaW4gTW9k dWxlT2JqZWN0LkZpbGVMaXN0Og0KPiAgICAgICAgICBNb2R1bGVPYmplY3QuRmlsZUxpc3QuYXBw ZW5kKChDb250YWluZXJGaWxlLCBNZDVTdW0pKQ0KPiANCj4gZGlmZiAtLWdpdCBhL0Jhc2VUb29s cy9Tb3VyY2UvUHl0aG9uL1VQVC9JbnN0YWxsUGtnLnB5IGIvQmFzZVRvb2xzL1NvdXJjZS9QeXRo b24vVVBUL0luc3RhbGxQa2cucHkNCj4gaW5kZXggYzU1M2Q3MDdmZC4uY2JjNTRmOTQwNyAxMDA2 NDQNCj4gLS0tIGEvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vVVBUL0luc3RhbGxQa2cucHkNCj4g KysrIGIvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vVVBUL0luc3RhbGxQa2cucHkNCj4gQEAgLTE3 Niw4ICsxNzYsOCBAQCBkZWYgVW5aaXBEcChXb3Jrc3BhY2VEaXIsIERwUGtnRmlsZU5hbWUsIElu ZGV4PTEpOg0KPiAgICAgICMgdmVyaWZ5IE1ENSBzaWduYXR1cmUgd2hlbiBleGlzdGVkDQo+ICAg ICAgIw0KPiAgICAgIGlmIERpc3RQa2cuSGVhZGVyLlNpZ25hdHVyZSAhPSAnJzoNCj4gLSAgICAg ICAgTWQ1U2lnYXR1cmUgPSBtZDUoX19GaWxlSG9va09wZW5fXyhDb250ZW50RmlsZSwgJ3JiJyku cmVhZCgpKQ0KPiAtICAgICAgICBpZiBEaXN0UGtnLkhlYWRlci5TaWduYXR1cmUgIT0gTWQ1U2ln YXR1cmUuaGV4ZGlnZXN0KCk6DQo+ICsgICAgICAgIE1kNVNpZ25hdHVyZSA9IG1kNShfX0ZpbGVI b29rT3Blbl9fKENvbnRlbnRGaWxlLCAncmInKS5yZWFkKCkpDQo+ICsgICAgICAgIGlmIERpc3RQ a2cuSGVhZGVyLlNpZ25hdHVyZSAhPSBNZDVTaWduYXR1cmUuaGV4ZGlnZXN0KCk6DQo+ICAgICAg ICAgICAgICBDb250ZW50WmlwRmlsZS5DbG9zZSgpDQo+ICAgICAgICAgICAgICBMb2dnZXIuRXJy b3IoIkluc3RhbGxQa2ciLCBGSUxFX0NIRUNLU1VNX0ZBSUxVUkUsDQo+ICAgICAgICAgICAgICAg ICAgRXh0cmFEYXRhPUNvbnRlbnRGaWxlKQ0KPiBAQCAtMjE1LDggKzIxNSw4IEBAIGRlZiBHZXRQ YWNrYWdlTGlzdChEaXN0UGtnLCBEZXAsIFdvcmtzcGFjZURpciwgT3B0aW9ucywgQ29udGVudFpp cEZpbGUsIE1vZHVsZUxpDQo+ICAgICAgIw0KPiAgICAgIGZvciBQYWNrYWdlIGluIFBhY2thZ2VM aXN0Og0KPiAgICAgICAgICBGaWxlUGF0aCA9IFBhY2thZ2VUb0RlYyhQYWNrYWdlLCBEaXN0UGtn LkhlYWRlcikNCj4gLSAgICAgICAgTWQ1U2lnYXR1cmUgPSBtZDUoX19GaWxlSG9va09wZW5fXyhz dHIoRmlsZVBhdGgpLCAncmInKS5yZWFkKCkpDQo+IC0gICAgICAgIE1kNVN1bSA9IE1kNVNpZ2F0 dXJlLmhleGRpZ2VzdCgpDQo+ICsgICAgICAgIE1kNVNpZ25hdHVyZSA9IG1kNShfX0ZpbGVIb29r T3Blbl9fKHN0cihGaWxlUGF0aCksICdyYicpLnJlYWQoKSkNCj4gKyAgICAgICAgTWQ1U3VtID0g TWQ1U2lnbmF0dXJlLmhleGRpZ2VzdCgpDQo+ICAgICAgICAgIGlmIChGaWxlUGF0aCwgTWQ1U3Vt KSBub3QgaW4gUGFja2FnZS5GaWxlTGlzdDoNCj4gICAgICAgICAgICAgIFBhY2thZ2UuRmlsZUxp c3QuYXBwZW5kKChGaWxlUGF0aCwgTWQ1U3VtKSkNCj4gDQo+IEBAIC0yNzUsOCArMjc1LDggQEAg ZGVmIEdldE1vZHVsZUxpc3QoRGlzdFBrZywgRGVwLCBXb3Jrc3BhY2VEaXIsIENvbnRlbnRaaXBG aWxlLCBNb2R1bGVMaXN0KToNCj4gICAgICBmb3IgKE1vZHVsZSwgUGFja2FnZSkgaW4gTW9kdWxl TGlzdDoNCj4gICAgICAgICAgQ2hlY2tDTmFtZUluTW9kdWxlUmVkZWZpbmVkKE1vZHVsZSwgRGlz dFBrZykNCj4gICAgICAgICAgRmlsZVBhdGggPSBNb2R1bGVUb0luZihNb2R1bGUsIFBhY2thZ2Us IERpc3RQa2cuSGVhZGVyKQ0KPiAtICAgICAgICBNZDVTaWdhdHVyZSA9IG1kNShfX0ZpbGVIb29r T3Blbl9fKHN0cihGaWxlUGF0aCksICdyYicpLnJlYWQoKSkNCj4gLSAgICAgICAgTWQ1U3VtID0g TWQ1U2lnYXR1cmUuaGV4ZGlnZXN0KCkNCj4gKyAgICAgICAgTWQ1U2lnbmF0dXJlID0gbWQ1KF9f RmlsZUhvb2tPcGVuX18oc3RyKEZpbGVQYXRoKSwgJ3JiJykucmVhZCgpKQ0KPiArICAgICAgICBN ZDVTdW0gPSBNZDVTaWduYXR1cmUuaGV4ZGlnZXN0KCkNCj4gICAgICAgICAgaWYgUGFja2FnZToN Cj4gICAgICAgICAgICAgIGlmIChGaWxlUGF0aCwgTWQ1U3VtKSBub3QgaW4gUGFja2FnZS5GaWxl TGlzdDoNCj4gICAgICAgICAgICAgICAgICBQYWNrYWdlLkZpbGVMaXN0LmFwcGVuZCgoRmlsZVBh dGgsIE1kNVN1bSkpDQo+IEBAIC04MDMsOCArODAzLDggQEAgZGVmIEluc3RhbGxGaWxlKENvbnRl bnRaaXBGaWxlLCBGcm9tRmlsZSwgVG9GaWxlLCBSZWFkT25seSwgRXhlY3V0YWJsZT1GYWxzZSk6 DQo+ICAgICAgICAgIGVsc2U6DQo+ICAgICAgICAgICAgICBjaG1vZChUb0ZpbGUsIHN0YXQuU19J UlVTUiB8IHN0YXQuU19JUkdSUCB8IHN0YXQuU19JUk9USCB8IHN0YXQuU19JV1VTUiB8IHN0YXQu U19JV0dSUCB8IHN0YXQuU19JV09USCkNCj4gDQo+IC0gICAgTWQ1U2lnYXR1cmUgPSBtZDUoX19G aWxlSG9va09wZW5fXyhzdHIoVG9GaWxlKSwgJ3JiJykucmVhZCgpKQ0KPiAtICAgIE1kNVN1bSA9 IE1kNVNpZ2F0dXJlLmhleGRpZ2VzdCgpDQo+ICsgICAgTWQ1U2lnbmF0dXJlID0gbWQ1KF9fRmls ZUhvb2tPcGVuX18oc3RyKFRvRmlsZSksICdyYicpLnJlYWQoKSkNCj4gKyAgICBNZDVTdW0gPSBN ZDVTaWduYXR1cmUuaGV4ZGlnZXN0KCkNCj4gDQo+ICAgICAgcmV0dXJuIE1kNVN1bQ0KPiANCj4g QEAgLTg3Niw4ICs4NzYsOCBAQCBkZWYgSW5zdGFsbFBhY2thZ2VDb250ZW50KEZyb21QYXRoLCBU b1BhdGgsIFBhY2thZ2UsIENvbnRlbnRaaXBGaWxlLCBEZXAsDQo+ICAgICAgICAgICAgICBjaG1v ZChUb0ZpbGUsIHN0YXQuU19JUlVTUnxzdGF0LlNfSVJHUlB8c3RhdC5TX0lST1RIKQ0KPiAgICAg ICAgICBlbHNlOg0KPiAgICAgICAgICAgICAgY2htb2QoVG9GaWxlLCBzdGF0LlNfSVJVU1J8c3Rh dC5TX0lSR1JQfHN0YXQuU19JUk9USHxzdGF0LlNfSVdVU1J8c3RhdC5TX0lXR1JQfHN0YXQuU19J V09USCkNCj4gLSAgICAgICAgTWQ1U2lnYXR1cmUgPSBtZDUoX19GaWxlSG9va09wZW5fXyhzdHIo VG9GaWxlKSwgJ3JiJykucmVhZCgpKQ0KPiAtICAgICAgICBNZDVTdW0gPSBNZDVTaWdhdHVyZS5o ZXhkaWdlc3QoKQ0KPiArICAgICAgICBNZDVTaWduYXR1cmUgPSBtZDUoX19GaWxlSG9va09wZW5f XyhzdHIoVG9GaWxlKSwgJ3JiJykucmVhZCgpKQ0KPiArICAgICAgICBNZDVTdW0gPSBNZDVTaWdu YXR1cmUuaGV4ZGlnZXN0KCkNCj4gICAgICAgICAgaWYgKFRvRmlsZSwgTWQ1U3VtKSBub3QgaW4g UGFja2FnZS5GaWxlTGlzdDoNCj4gICAgICAgICAgICAgIFBhY2thZ2UuRmlsZUxpc3QuYXBwZW5k KChUb0ZpbGUsIE1kNVN1bSkpDQo+ICAgICAgUGFja2FnZS5TZXRJbmNsdWRlQXJjaExpc3QoUGFj a2FnZUluY2x1ZGVBcmNoTGlzdCkNCj4gZGlmZiAtLWdpdCBhL0Jhc2VUb29scy9Tb3VyY2UvUHl0 aG9uL1VQVC9MaWJyYXJ5L0NvbW1lbnRQYXJzaW5nLnB5IGIvQmFzZVRvb2xzL1NvdXJjZS9QeXRo b24vVVBUL0xpYnJhcnkvQ29tbWVudFBhcnNpbmcucHkNCj4gaW5kZXggYTA5YTUzMGZmYi4uMjUw YmEyZGQ1ZSAxMDA2NDQNCj4gLS0tIGEvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vVVBUL0xpYnJh cnkvQ29tbWVudFBhcnNpbmcucHkNCj4gKysrIGIvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vVVBU L0xpYnJhcnkvQ29tbWVudFBhcnNpbmcucHkNCj4gQEAgLTQyNiw3ICs0MjYsNyBAQCBkZWYgX0No ZWNrTGlzdEV4cHJlc3Npb24oRXhwcmVzc2lvbik6DQo+IA0KPiAgICAgIHJldHVybiBJc1ZhbGlk TGlzdEV4cHIoTGlzdEV4cHIpDQo+IA0KPiAtIyMgX0NoZWNrRXhwcmVlc2lvbg0KPiArIyMgX0No ZWNrRXhwcmVzc2lvbg0KPiAgIw0KPiAgIyBAcGFyYW0gRXhwcmVzc2lvbjogUGNkIHZhbHVlIGV4 cHJlc3Npb24NCj4gICMNCj4gQEAgLTQ3NiwxMSArNDc2LDExIEBAIGRlZiBfVmFsaWRhdGVDb3B5 cmlnaHQoTGluZSk6DQo+IA0KPiAgZGVmIEdlbmVyYXRlVG9rZW5MaXN0IChDb21tZW50KToNCj4g ICAgICAjDQo+IC0gICAgIyBUb2tlbml6ZSBDb21tZW50IHVzaW5nICcjJyBhbmQgJyAnIGFzIHRv a2VuIHNlcGVyYXRvcnMNCj4gKyAgICAjIFRva2VuaXplIENvbW1lbnQgdXNpbmcgJyMnIGFuZCAn ICcgYXMgdG9rZW4gc2VwYXJhdG9ycw0KPiAgICAgICMNCj4gLSAgICBSZWxwbGFjZWRDb21tZW50 ID0gTm9uZQ0KPiAtICAgIHdoaWxlIENvbW1lbnQgIT0gUmVscGxhY2VkQ29tbWVudDoNCj4gLSAg ICAgICAgUmVscGxhY2VkQ29tbWVudCA9IENvbW1lbnQNCj4gKyAgICBSZXBsYWNlZENvbW1lbnQg PSBOb25lDQo+ICsgICAgd2hpbGUgQ29tbWVudCAhPSBSZXBsYWNlZENvbW1lbnQ6DQo+ICsgICAg ICAgIFJlcGxhY2VkQ29tbWVudCA9IENvbW1lbnQNCj4gICAgICAgICAgQ29tbWVudCA9IENvbW1l bnQucmVwbGFjZSgnIyMnLCAnIycpLnJlcGxhY2UoJyAgJywgJyAnKS5yZXBsYWNlKCcgJywgJyMn KS5zdHJpcCgnIyAnKQ0KPiAgICAgIHJldHVybiBDb21tZW50LnNwbGl0KCcjJykNCj4gDQo+IEBA IC01MzgsMTMgKzUzOCwxMyBAQCBkZWYgUGFyc2VDb21tZW50IChDb21tZW50LCBVc2FnZVRva2Vu cywgVHlwZVRva2VucywgUmVtb3ZlVG9rZW5zLCBQYXJzZVZhcmlhYmxlKQ0KPiAgICAgICAgICAg ICAgICAgIE51bVRva2VucyA9IDENCj4gDQo+ICAgICAgIw0KPiAtICAgICMgSW5pdGlhbHplIEhl bHBUZXh0IHRvIENvbW1lbnQuDQo+ICsgICAgIyBJbml0aWFsaXplIEhlbHBUZXh0IHRvIENvbW1l bnQuDQo+ICAgICAgIyBDb250ZW50IHdpbGwgYmUgcmVtb3ZlIGZyb20gSGVscFRleHQgYXMgbWF0 Y2hpbmcgdG9rZW5zIGFyZSBmb3VuZA0KPiAgICAgICMNCj4gICAgICBIZWxwVGV4dCA9IENvbW1l bnQNCj4gDQo+ICAgICAgIw0KPiAtICAgICMgVG9rZW5pemUgQ29tbWVudCB1c2luZyAnIycgYW5k ICcgJyBhcyB0b2tlbiBzZXBlcmF0b3JzDQo+ICsgICAgIyBUb2tlbml6ZSBDb21tZW50IHVzaW5n ICcjJyBhbmQgJyAnIGFzIHRva2VuIHNlcGFyYXRvcnMNCj4gICAgICAjDQo+ICAgICAgTGlzdCA9 IEdlbmVyYXRlVG9rZW5MaXN0IChDb21tZW50KQ0KPiANCj4gZGlmZiAtLWdpdCBhL0Jhc2VUb29s cy9Tb3VyY2UvUHl0aG9uL1VQVC9MaWJyYXJ5L0RhdGFUeXBlLnB5IGIvQmFzZVRvb2xzL1NvdXJj ZS9QeXRob24vVVBUL0xpYnJhcnkvRGF0YVR5cGUucHkNCj4gaW5kZXggOTdjYTgzNTg4Mi4uMDc2 NzM2OTRiMiAxMDA2NDQNCj4gLS0tIGEvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vVVBUL0xpYnJh cnkvRGF0YVR5cGUucHkNCj4gKysrIGIvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vVVBUL0xpYnJh cnkvRGF0YVR5cGUucHkNCj4gQEAgLTkzLDcgKzkzLDcgQEAgVEFCX1NUUl9UT0tFTkhFTFAgPSAn SEVMUCcNCj4gIFRBQl9TVFJfVE9LRU5FUlIgPSAnRVJSJw0KPiANCj4gICMNCj4gLSMgRGljdGlv bmFyeSBvZiB1c2FnZSB0b2tlbnMgYW5kIHRoZWlyIHN5bm9ubXlzDQo+ICsjIERpY3Rpb25hcnkg b2YgdXNhZ2UgdG9rZW5zIGFuZCB0aGVpciBzeW5vbnltcw0KPiAgIw0KPiAgQUxMX1VTQUdFX1RP S0VOUyA9IHsNCj4gICAgIlBST0RVQ0VTIiAgICAgICAgICAgOiAiUFJPRFVDRVMiLA0KPiBkaWZm IC0tZ2l0IGEvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vVVBUL0xpYnJhcnkvR2xvYmFsRGF0YS5w eSBiL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1VQVC9MaWJyYXJ5L0dsb2JhbERhdGEucHkNCj4g aW5kZXggNDBiMTdjZjA4My4uNmIwOTM4NzNkZCAxMDA2NDQNCj4gLS0tIGEvQmFzZVRvb2xzL1Nv dXJjZS9QeXRob24vVVBUL0xpYnJhcnkvR2xvYmFsRGF0YS5weQ0KPiArKysgYi9CYXNlVG9vbHMv U291cmNlL1B5dGhvbi9VUFQvTGlicmFyeS9HbG9iYWxEYXRhLnB5DQo+IEBAIC00Myw3ICs0Myw3 IEBAIGdJTlZBTElEX01PRFVMRV9GSUxFID0gZ1VQVF9ESVIgKyByIkludmFsaWRfTW9kdWxlcy5s b2ciDQo+ICBnQ09OVEVOVF9GSUxFID0gImRpc3QuY29udGVudCINCj4gDQo+ICAjDQo+IC0jIEZp bGUgbmFtZSBmb3IgWE1MIGZpbGUgaW4gdGhlIGRpc3RpYnV0aW9uDQo+ICsjIEZpbGUgbmFtZSBm b3IgWE1MIGZpbGUgaW4gdGhlIGRpc3RyaWJ1dGlvbg0KPiAgIw0KPiAgZ0RFU0NfRklMRSA9ICdk aXN0LnBrZycNCj4gDQo+IGRpZmYgLS1naXQgYS9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9VUFQv TGlicmFyeS9NaXNjLnB5IGIvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vVVBUL0xpYnJhcnkvTWlz Yy5weQ0KPiBpbmRleCBkNjliMTYxNDIwLi5lN2VlMjdjYzUzIDEwMDY0NA0KPiAtLS0gYS9CYXNl VG9vbHMvU291cmNlL1B5dGhvbi9VUFQvTGlicmFyeS9NaXNjLnB5DQo+ICsrKyBiL0Jhc2VUb29s cy9Tb3VyY2UvUHl0aG9uL1VQVC9MaWJyYXJ5L01pc2MucHkNCj4gQEAgLTc4OCw3ICs3ODgsNyBA QCBkZWYgR2V0TGliSW5zdGFuY2VJbmZvKFN0cmluZywgV29ya1NwYWNlLCBMaW5lTm8pOg0KPiAg ICAgIEZpbGVHdWlkU3RyaW5nID0gIiINCj4gICAgICBWZXJTdHJpbmcgPSAiIg0KPiANCj4gLSAg ICBPcmlnbmFsU3RyaW5nID0gU3RyaW5nDQo+ICsgICAgT3JpZ2luYWxTdHJpbmcgPSBTdHJpbmcN Cj4gICAgICBTdHJpbmcgPSBTdHJpbmcuc3RyaXAoKQ0KPiAgICAgIGlmIG5vdCBTdHJpbmc6DQo+ ICAgICAgICAgIHJldHVybiBOb25lLCBOb25lDQo+IEBAIC04MDgsNyArODA4LDcgQEAgZGVmIEdl dExpYkluc3RhbmNlSW5mbyhTdHJpbmcsIFdvcmtTcGFjZSwgTGluZU5vKToNCj4gICAgICAgICAg ICAgICAgICAgICAgIFNULkVSUl9GSUxFTElTVF9FWElTVCAlIChTdHJpbmcpLA0KPiAgICAgICAg ICAgICAgICAgICAgICAgRmlsZT1HbG9iYWxEYXRhLmdJTkZfTU9EVUxFX05BTUUsDQo+ICAgICAg ICAgICAgICAgICAgICAgICBMaW5lPUxpbmVObywNCj4gLSAgICAgICAgICAgICAgICAgICAgIEV4 dHJhRGF0YT1PcmlnbmFsU3RyaW5nKQ0KPiArICAgICAgICAgICAgICAgICAgICAgRXh0cmFEYXRh PU9yaWdpbmFsU3RyaW5nKQ0KPiANCj4gICAgICAjDQo+ICAgICAgIyBWYWxpZGF0ZSBmaWxlIGV4 aXN0L2Zvcm1hdC4NCj4gQEAgLTgyMSw3ICs4MjEsNyBAQCBkZWYgR2V0TGliSW5zdGFuY2VJbmZv KFN0cmluZywgV29ya1NwYWNlLCBMaW5lTm8pOg0KPiAgICAgICAgICAgICAgICAgICAgICAgU1Qu RVJSX0lORl9QQVJTRVJfRklMRV9OT1RfRVhJU1RfT1JfTkFNRV9JTlZBTElEICUgKFN0cmluZyks DQo+ICAgICAgICAgICAgICAgICAgICAgICBGaWxlPUdsb2JhbERhdGEuZ0lORl9NT0RVTEVfTkFN RSwNCj4gICAgICAgICAgICAgICAgICAgICAgIExpbmU9TGluZU5vLA0KPiAtICAgICAgICAgICAg ICAgICAgICAgRXh0cmFEYXRhPU9yaWduYWxTdHJpbmcpDQo+ICsgICAgICAgICAgICAgICAgICAg ICBFeHRyYURhdGE9T3JpZ2luYWxTdHJpbmcpDQo+ICAgICAgICAgIHJldHVybiBGYWxzZQ0KPiAg ICAgIGlmIElzVmFsaWRGaWxlRmxhZzoNCj4gICAgICAgICAgRmlsZUxpbmVzTGlzdCA9IFtdDQo+ IEBAIC05NzMsNyArOTczLDcgQEAgZGVmIFZhbGlkYXRlVU5JRmlsZVBhdGgoUGF0aCk6DQo+ICAg ICAgICAgICAgICAgICAgICAgICAgICBFeHRyYURhdGE9UGF0aCkNCj4gDQo+ICAgICAgIw0KPiAt ICAgICMgQ2hlY2sgaWYgJy4uJyBpbiB0aGUgZmlsZSBuYW1lKHdpdGhvdXQgc3VmZml4ZSkNCj4g KyAgICAjIENoZWNrIGlmICcuLicgaW4gdGhlIGZpbGUgbmFtZSh3aXRob3V0IHN1ZmZpeCkNCj4g ICAgICAjDQo+ICAgICAgaWYgKFRBQl9TUExJVCArIFRBQl9TUExJVCkgaW4gUGF0aDoNCj4gICAg ICAgICAgTG9nZ2VyLkVycm9yKCJVbmljb2RlIEZpbGUgUGFyc2VyIiwNCj4gZGlmZiAtLWdpdCBh L0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1VQVC9MaWJyYXJ5L1BhcnNlclZhbGlkYXRlLnB5IGIv QmFzZVRvb2xzL1NvdXJjZS9QeXRob24vVVBUL0xpYnJhcnkvUGFyc2VyVmFsaWRhdGUucHkNCj4g aW5kZXggODdkMTU2ZmE0Yy4uMTQwOGFlYzI0MiAxMDA2NDQNCj4gLS0tIGEvQmFzZVRvb2xzL1Nv dXJjZS9QeXRob24vVVBUL0xpYnJhcnkvUGFyc2VyVmFsaWRhdGUucHkNCj4gKysrIGIvQmFzZVRv b2xzL1NvdXJjZS9QeXRob24vVVBUL0xpYnJhcnkvUGFyc2VyVmFsaWRhdGUucHkNCj4gQEAgLTEz LDcgKzEzLDcgQEANCj4gICMNCj4gDQo+ICAnJycNCj4gLVBhc2VyVmFsaWRhdGUNCj4gK1BhcnNl clZhbGlkYXRlDQo+ICAnJycNCj4gDQo+ICBpbXBvcnQgb3MucGF0aA0KPiBAQCAtNjgsNyArNjgs NyBAQCBkZWYgSXNWYWxpZEhleChIZXhTdHIpOg0KPiAgIw0KPiAgZGVmIElzVmFsaWRCb29sVHlw ZShCb29sU3RyaW5nKToNCj4gICAgICAjDQo+IC0gICAgIyBWYWxpZCBUdXJlDQo+ICsgICAgIyBW YWxpZCBUcnVlDQo+ICAgICAgIw0KPiAgICAgIGlmIEJvb2xTdHJpbmcgPT0gJ1RSVUUnIG9yIFwN Cj4gICAgICAgICBCb29sU3RyaW5nID09ICdUcnVlJyBvciBcDQo+IEBAIC0xMjQsMTEgKzEyNCwx MSBAQCBkZWYgSXNWYWxpZEluZkNvbXBvbmVudFR5cGUoQ29tcG9uZW50VHlwZSk6DQo+ICAjIyBJ cyB2YWxpZCBUb29sIEZhbWlseSBvciBub3QNCj4gICMNCj4gICMgQHBhcmFtICAgVG9vbEZhbWls eTogICBBIHN0cmluZyBjb250YWluIFRvb2wgRmFtaWx5IG5lZWQgdG8gYmUganVkZ2VkLg0KPiAt IyBGYW1saWx5IDo9IFtBLVpdKFthLXpBLVowLTldKSoNCj4gKyMgRmFtaWx5IDo9IFtBLVpdKFth LXpBLVowLTldKSoNCj4gICMNCj4gIGRlZiBJc1ZhbGlkVG9vbEZhbWlseShUb29sRmFtaWx5KToN Cj4gLSAgICBSZUlzVmFsaWVGYW1pbHkgPSByZS5jb21waWxlKHIiXltBLVpdK1tBLVphLXowLTld ezAsfSQiLCByZS5ET1RBTEwpDQo+IC0gICAgaWYgUmVJc1ZhbGllRmFtaWx5Lm1hdGNoKFRvb2xG YW1pbHkpIGlzIE5vbmU6DQo+ICsgICAgUmVJc1ZhbGlkRmFtaWx5ID0gcmUuY29tcGlsZShyIl5b QS1aXStbQS1aYS16MC05XXswLH0kIiwgcmUuRE9UQUxMKQ0KPiArICAgIGlmIFJlSXNWYWxpZEZh bWlseS5tYXRjaChUb29sRmFtaWx5KSBpcyBOb25lOg0KPiAgICAgICAgICByZXR1cm4gRmFsc2UN Cj4gICAgICByZXR1cm4gVHJ1ZQ0KPiANCj4gQEAgLTE1OCw4ICsxNTgsOCBAQCBkZWYgSXNWYWxp ZFRvb2xUYWdOYW1lKFRhZ05hbWUpOg0KPiAgZGVmIElzVmFsaWRBcmNoKEFyY2gpOg0KPiAgICAg IGlmIEFyY2ggPT0gJ2NvbW1vbic6DQo+ICAgICAgICAgIHJldHVybiBUcnVlDQo+IC0gICAgUmVJ c1ZhbGllQXJjaCA9IHJlLmNvbXBpbGUociJeW2EtekEtWl0rW2EtekEtWjAtOV17MCx9JCIsIHJl LkRPVEFMTCkNCj4gLSAgICBpZiBSZUlzVmFsaWVBcmNoLm1hdGNoKEFyY2gpIGlzIE5vbmU6DQo+ ICsgICAgUmVJc1ZhbGlkQXJjaCA9IHJlLmNvbXBpbGUociJeW2EtekEtWl0rW2EtekEtWjAtOV17 MCx9JCIsIHJlLkRPVEFMTCkNCj4gKyAgICBpZiBSZUlzVmFsaWRBcmNoLm1hdGNoKEFyY2gpIGlz IE5vbmU6DQo+ICAgICAgICAgIHJldHVybiBGYWxzZQ0KPiAgICAgIHJldHVybiBUcnVlDQo+IA0K PiBkaWZmIC0tZ2l0IGEvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vVVBUL0xpYnJhcnkvUGFyc2lu Zy5weSBiL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1VQVC9MaWJyYXJ5L1BhcnNpbmcucHkNCj4g aW5kZXggM2VjYThlMzg0OS4uZjdlOTk1YjkzZSAxMDA2NDQNCj4gLS0tIGEvQmFzZVRvb2xzL1Nv dXJjZS9QeXRob24vVVBUL0xpYnJhcnkvUGFyc2luZy5weQ0KPiArKysgYi9CYXNlVG9vbHMvU291 cmNlL1B5dGhvbi9VUFQvTGlicmFyeS9QYXJzaW5nLnB5DQo+IEBAIC05NTksNyArOTU5LDcgQEAg ZGVmIE1hY3JvUGFyc2VyKExpbmUsIEZpbGVOYW1lLCBTZWN0aW9uVHlwZSwgRmlsZUxvY2FsTWFj cm9zKToNCj4gICMgICAgICAgICAgICAgICAgICAgICAgIElORiwgREVDIHNwZWNzDQo+ICAjIEBw YXJhbSAgU2VjdGlvbkRpY3Q6ICBzZWN0aW9uIHN0YXRlbWVudCBkaWN0LCBrZXkgaXMgU2VjdGlv bkF0dHJzKGFyY2gsDQo+ICAjICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGV0eXBlIG9yIHBs YXRmb3JtIG1heSBleGlzdCBhcyBuZWVkZWQpIGxpc3QNCj4gLSMgICAgICAgICAgICAgICAgICAg ICAgIHNlcGVyYXRlZCBieSBzcGFjZSwNCj4gKyMgICAgICAgICAgICAgICAgICAgICAgIHNlcGFy YXRlZCBieSBzcGFjZSwNCj4gICMgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlIGlzIHN0YXRl bWVudA0KPiAgIw0KPiAgZGVmIEdlblNlY3Rpb24oU2VjdGlvbk5hbWUsIFNlY3Rpb25EaWN0LCBT cGxpdEFyY2g9VHJ1ZSwgTmVlZEJsYW5rTGluZT1GYWxzZSk6DQo+IGRpZmYgLS1naXQgYS9CYXNl VG9vbHMvU291cmNlL1B5dGhvbi9VUFQvTGlicmFyeS9TdHJpbmdVdGlscy5weSBiL0Jhc2VUb29s cy9Tb3VyY2UvUHl0aG9uL1VQVC9MaWJyYXJ5L1N0cmluZ1V0aWxzLnB5DQo+IGluZGV4IGEzMzkx ZGFhOTEuLjZmYTFlZTg5ZDQgMTAwNjQ0DQo+IC0tLSBhL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9u L1VQVC9MaWJyYXJ5L1N0cmluZ1V0aWxzLnB5DQo+ICsrKyBiL0Jhc2VUb29scy9Tb3VyY2UvUHl0 aG9uL1VQVC9MaWJyYXJ5L1N0cmluZ1V0aWxzLnB5DQo+IEBAIC0zMyw3ICszMyw3IEBAIGdNQUNS T19QQVRURVJOID0gcmUuY29tcGlsZSgiXCRcKChbX0EtWl1bX0EtWjAtOV0qKVwpIiwgcmUuVU5J Q09ERSkNCj4gDQo+ICAjIyBHZXRTcGxpdFZhbHVlTGlzdA0KPiAgIw0KPiAtIyBHZXQgYSB2YWx1 ZSBsaXN0IGZyb20gYSBzdHJpbmcgd2l0aCBtdWx0aXBsZSB2YWx1ZXMgc3BsaXRlZCB3aXRoIFNw bGl0VGFnDQo+ICsjIEdldCBhIHZhbHVlIGxpc3QgZnJvbSBhIHN0cmluZyB3aXRoIG11bHRpcGxl IHZhbHVlcyBzcGxpdCB3aXRoIFNwbGl0VGFnDQo+ICAjIFRoZSBkZWZhdWx0IFNwbGl0VGFnIGlz IERhdGFUeXBlLlRBQl9WQUxVRV9TUExJVA0KPiAgIyAnQUFBfEJCQnxDQ0MnIC0+IFsnQUFBJywg J0JCQicsICdDQ0MnXQ0KPiAgIw0KPiBAQCAtNjcsNyArNjcsNyBAQCBkZWYgTWVyZ2VBcmNoZXMo RGljdCwgS2V5LCBBcmNoKToNCj4gICMgUmV0dXJuIEZhbHNlIGlmIGludmFsaWQgZm9ybWF0DQo+ ICAjDQo+ICAjIEBwYXJhbSBTdHJpbmc6ICAgU3RyaW5nIHdpdGggREVGSU5FIHN0YXRlbWVudA0K PiAtIyBAcGFyYW0gQXJjaDogICAgIFN1cHBvcnR0ZWQgQXJjaA0KPiArIyBAcGFyYW0gQXJjaDog ICAgIFN1cHBvcnRlZCBBcmNoDQo+ICAjIEBwYXJhbSBEZWZpbmVzOiAgREVGSU5FIHN0YXRlbWVu dCB0byBiZSBwYXJzZWQNCj4gICMNCj4gIGRlZiBHZW5EZWZpbmVzKFN0cmluZywgQXJjaCwgRGVm aW5lcyk6DQo+IEBAIC0yMzYsNyArMjM2LDcgQEAgZGVmIFJlcGxhY2VNYWNybyhTdHJpbmcsIE1h Y3JvRGVmaW5pdGlvbnM9Tm9uZSwgU2VsZlJlcGxhY2VtZW50PUZhbHNlLCBMaW5lPU5vbmUNCj4g ICMjIE5vcm1QYXRoDQo+ICAjDQo+ICAjIENyZWF0ZSBhIG5vcm1hbCBwYXRoDQo+IC0jIEFuZCBy ZXBsYWNlIERGRUlORSBpbiB0aGUgcGF0aA0KPiArIyBBbmQgcmVwbGFjZSBERUZJTkUgaW4gdGhl IHBhdGgNCj4gICMNCj4gICMgQHBhcmFtIFBhdGg6ICAgICBUaGUgaW5wdXQgdmFsdWUgZm9yIFBh dGggdG8gYmUgY29udmVydGVkDQo+ICAjIEBwYXJhbSBEZWZpbmVzOiAgQSBzZXQgZm9yIERFRklO RSBzdGF0ZW1lbnQNCj4gQEAgLTYxMyw5ICs2MTMsOSBAQCBkZWYgV29ya3NwYWNlRmlsZShXb3Jr c3BhY2VEaXIsIEZpbGVuYW1lKToNCj4gDQo+ICAjIyBTcGxpdCBzdHJpbmcNCj4gICMNCj4gLSMg UmV2bW92ZSAnIicgd2hpY2ggc3RhcnRzd2l0aCBhbmQgZW5kc3dpdGggc3RyaW5nDQo+ICsjIFJl bW92ZSAnIicgd2hpY2ggc3RhcnRzd2l0aCBhbmQgZW5kc3dpdGggc3RyaW5nDQo+ICAjDQo+IC0j IEBwYXJhbSBTdHJpbmc6ICBUaGUgc3RyaW5nIG5lZWQgdG8gYmUgc3BsaXRlZA0KPiArIyBAcGFy YW0gU3RyaW5nOiAgVGhlIHN0cmluZyBuZWVkIHRvIGJlIHNwbGl0DQo+ICAjDQo+ICBkZWYgU3Bs aXRTdHJpbmcoU3RyaW5nKToNCj4gICAgICBpZiBTdHJpbmcuc3RhcnRzd2l0aCgnXCInKToNCj4g QEAgLTczNCw3ICs3MzQsNyBAQCBkZWYgSXNIZXhEaWdpdChTdHIpOg0KPiAgICAgICAgICAgICAg ICAgIHJldHVybiBGYWxzZQ0KPiAgICAgIHJldHVybiBGYWxzZQ0KPiANCj4gLSMjIENoZWNrIGlm IHRoZSBzdHJpbmcgaXMgSGV4RGdpdCBhbmQgaXRzIGludGVyZ2VyIHZhbHVlIHdpdGhpbiBsaW1p dCBvZiBVSU5UMzINCj4gKyMjIENoZWNrIGlmIHRoZSBzdHJpbmcgaXMgSGV4RGdpdCBhbmQgaXRz IGludGVnZXIgdmFsdWUgd2l0aGluIGxpbWl0IG9mIFVJTlQzMg0KPiAgIw0KPiAgIyBSZXR1cm4g dHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSBkaWdpdHMgYW5kIHRoZXJl IGlzIGF0DQo+ICAjIGxlYXN0IG9uZSBjaGFyYWN0ZXINCj4gZGlmZiAtLWdpdCBhL0Jhc2VUb29s cy9Tb3VyY2UvUHl0aG9uL1VQVC9MaWJyYXJ5L1VuaUNsYXNzT2JqZWN0LnB5IGIvQmFzZVRvb2xz L1NvdXJjZS9QeXRob24vVVBUL0xpYnJhcnkvVW5pQ2xhc3NPYmplY3QucHkNCj4gaW5kZXggYmQ3 ODA0Yjc1My4uZDU3NWM2YjFmOCAxMDA2NDQNCj4gLS0tIGEvQmFzZVRvb2xzL1NvdXJjZS9QeXRo b24vVVBUL0xpYnJhcnkvVW5pQ2xhc3NPYmplY3QucHkNCj4gKysrIGIvQmFzZVRvb2xzL1NvdXJj ZS9QeXRob24vVVBUL0xpYnJhcnkvVW5pQ2xhc3NPYmplY3QucHkNCj4gQEAgLTEzMCwxMiArMTMw LDEyIEBAIGRlZiBDb252ZXJ0U3BlY2lhbFVuaWNvZGVzKFVuaSk6DQo+ICAjIyBHZXRMYW5ndWFn ZUNvZGUxNzY2DQo+ICAjDQo+ICAjIENoZWNrIHRoZSBsYW5ndWFnZSBjb2RlIHJlYWQgZnJvbSAu VU5JIGZpbGUgYW5kIGNvbnZlcnQgUkZDIDQ2NDYgY29kZXMgdG8gUkZDIDE3NjYgY29kZXMNCj4g LSMgUkZDIDE3NjYgbGFuZ3VhZ2UgY29kZXMgc3VwcG9ydGVkIGluIGNvbXBhdGlibGl0eSBtb2Rl DQo+ICsjIFJGQyAxNzY2IGxhbmd1YWdlIGNvZGVzIHN1cHBvcnRlZCBpbiBjb21wYXRpYmlsaXR5 IG1vZGUNCj4gICMgUkZDIDQ2NDYgbGFuZ3VhZ2UgY29kZXMgc3VwcG9ydGVkIGluIG5hdGl2ZSBt b2RlDQo+ICAjDQo+ICAjIEBwYXJhbSBMYW5nTmFtZTogICBMYW5ndWFnZSBjb2RlcyByZWFkIGZy b20gLlVOSSBmaWxlDQo+ICAjDQo+IC0jIEByZXR2YWwgTGFuZ05hbWU6ICBWYWxpZCBsYW51Z2Fn ZSBjb2RlIGluIFJGQyAxNzY2IGZvcm1hdCBvciBOb25lDQo+ICsjIEByZXR2YWwgTGFuZ05hbWU6 ICBWYWxpZCBsYW5ndWFnZSBjb2RlIGluIFJGQyAxNzY2IGZvcm1hdCBvciBOb25lDQo+ICAjDQo+ ICBkZWYgR2V0TGFuZ3VhZ2VDb2RlMTc2NihMYW5nTmFtZSwgRmlsZT1Ob25lKToNCj4gICAgICBy ZXR1cm4gTGFuZ05hbWUNCj4gQEAgLTE3Nyw3ICsxNzcsNyBAQCBkZWYgR2V0TGFuZ3VhZ2VDb2Rl MTc2NihMYW5nTmFtZSwgRmlsZT1Ob25lKToNCj4gICMjIEdldExhbmd1YWdlQ29kZQ0KPiAgIw0K PiAgIyBDaGVjayB0aGUgbGFuZ3VhZ2UgY29kZSByZWFkIGZyb20gLlVOSSBmaWxlIGFuZCBjb252 ZXJ0IFJGQyAxNzY2IGNvZGVzIHRvIFJGQyA0NjQ2IGNvZGVzIGlmIGFwcHJvcHJpYXRlDQo+IC0j IFJGQyAxNzY2IGxhbmd1YWdlIGNvZGVzIHN1cHBvcnRlZCBpbiBjb21wYXRpYmxpdHkgbW9kZQ0K PiArIyBSRkMgMTc2NiBsYW5ndWFnZSBjb2RlcyBzdXBwb3J0ZWQgaW4gY29tcGF0aWJpbGl0eSBt b2RlDQo+ICAjIFJGQyA0NjQ2IGxhbmd1YWdlIGNvZGVzIHN1cHBvcnRlZCBpbiBuYXRpdmUgbW9k ZQ0KPiAgIw0KPiAgIyBAcGFyYW0gTGFuZ05hbWU6ICAgTGFuZ3VhZ2UgY29kZXMgcmVhZCBmcm9t IC5VTkkgZmlsZQ0KPiBAQCAtMjIxLDEzICsyMjEsMTMgQEAgZGVmIEdldExhbmd1YWdlQ29kZShM YW5nTmFtZSwgSXNDb21wYXRpYmxlTW9kZSwgRmlsZSk6DQo+IA0KPiAgIyMgRm9ybWF0VW5pRW50 cnkNCj4gICMNCj4gLSMgRm9ybWF0ZWQgdGhlIGVudHJ5IGluIFVuaSBmaWxlLg0KPiArIyBGb3Jt YXR0ZWQgdGhlIGVudHJ5IGluIFVuaSBmaWxlLg0KPiAgIw0KPiAgIyBAcGFyYW0gU3RyVG9rZW5O YW1lICAgIFN0clRva2VuTmFtZS4NCj4gICMgQHBhcmFtIFRva2VuVmFsdWVMaXN0ICBBIGxpc3Qg bmVlZCB0byBiZSBwcm9jZXNzZWQuDQo+ICAjIEBwYXJhbSBDb250YWluZXJGaWxlICAgQ29udGFp bmVyRmlsZS4NCj4gICMNCj4gLSMgQHJldHVybiBmb3JtYXRlZCBlbnRyeQ0KPiArIyBAcmV0dXJu IGZvcm1hdHRlZCBlbnRyeQ0KPiAgZGVmIEZvcm1hdFVuaUVudHJ5KFN0clRva2VuTmFtZSwgVG9r ZW5WYWx1ZUxpc3QsIENvbnRhaW5lckZpbGUpOg0KPiAgICAgIFN1YkNvbnRlbnQgPSAnJw0KPiAg ICAgIFByZUZvcm1hdExlbmd0aCA9IDQwDQo+IEBAIC00NzgsOCArNDc4LDggQEAgY2xhc3MgVW5p RmlsZUNsYXNzT2JqZWN0KG9iamVjdCk6DQo+ICAgICAgICAgIE11bHRpTGluZUZlZWRFeGl0cyA9 IEZhbHNlDQo+ICAgICAgICAgICMNCj4gICAgICAgICAgIyAwOiBpbml0aWFsIHZhbHVlDQo+IC0g ICAgICAgICMgMTogc2lnbmxlIFN0cmluZyBlbnRyeSBleGlzdA0KPiAtICAgICAgICAjIDI6IGxp bmUgZmVlZCBleGlzdCB1bmRlciB0aGUgc29tZSBzaWdubGUgU3RyaW5nIGVudHJ5DQo+ICsgICAg ICAgICMgMTogc2luZ2xlIFN0cmluZyBlbnRyeSBleGlzdA0KPiArICAgICAgICAjIDI6IGxpbmUg ZmVlZCBleGlzdCB1bmRlciB0aGUgc29tZSBzaW5nbGUgU3RyaW5nIGVudHJ5DQo+ICAgICAgICAg ICMNCj4gICAgICAgICAgU3RyaW5nRW50cnlFeGlzdHNGbGFnID0gMA0KPiAgICAgICAgICBmb3Ig TGluZSBpbiBGaWxlSW46DQo+IEBAIC00OTcsNyArNDk3LDcgQEAgY2xhc3MgVW5pRmlsZUNsYXNz T2JqZWN0KG9iamVjdCk6DQo+ICAgICAgICAgICAgICAgICAgICAgIFN0cmluZ0VudHJ5RXhpc3Rz RmxhZyA9IDINCj4gICAgICAgICAgICAgICAgICAjDQo+ICAgICAgICAgICAgICAgICAgIyBJZiB0 aGUgJyNzdHJpbmcnIGxpbmUgYW5kIHRoZSAnI2xhbmd1YWdlJyBsaW5lIGFyZSBub3QgaW4gdGhl IHNhbWUgbGluZSwNCj4gLSAgICAgICAgICAgICAgICAjIHRoZXJlIHNob3VsZCBiZSBvbmx5IG9u ZSBsaW5lIGZlZWQgY2hhcmFjdGVyIGJldHd3ZW4gdGhlbQ0KPiArICAgICAgICAgICAgICAgICMg dGhlcmUgc2hvdWxkIGJlIG9ubHkgb25lIGxpbmUgZmVlZCBjaGFyYWN0ZXIgYmV0d2VlbiB0aGVt DQo+ICAgICAgICAgICAgICAgICAgIw0KPiAgICAgICAgICAgICAgICAgIGlmIE11bHRpTGluZUZl ZWRFeGl0czoNCj4gICAgICAgICAgICAgICAgICAgICAgRWRrTG9nZ2VyLkVycm9yKCJVbmljb2Rl IEZpbGUgUGFyc2VyIiwgVG9vbEVycm9yLkZPUk1BVF9JTlZBTElELCBFeHRyYURhdGE9RmlsZS5Q YXRoKQ0KPiBAQCAtNTA1LDcgKzUwNSw3IEBAIGNsYXNzIFVuaUZpbGVDbGFzc09iamVjdChvYmpl Y3QpOg0KPiANCj4gICAgICAgICAgICAgIE11bHRpTGluZUZlZWRFeGl0cyA9IEZhbHNlDQo+ICAg ICAgICAgICAgICAjDQo+IC0gICAgICAgICAgICAjIFByb2Nlc3MgY29tbWVudCBlbWJlZGVkIGlu IHN0cmluZyBkZWZpbmUgbGluZXMNCj4gKyAgICAgICAgICAgICMgUHJvY2VzcyBjb21tZW50IGVt YmVkZGVkIGluIHN0cmluZyBkZWZpbmUgbGluZXMNCj4gICAgICAgICAgICAgICMNCj4gICAgICAg ICAgICAgIEZpbmRGbGFnID0gTGluZS5maW5kKHUnLy8nKQ0KPiAgICAgICAgICAgICAgaWYgRmlu ZEZsYWcgIT0gLTEgYW5kIExpbmUuZmluZCh1Jy8vJykgPCBMaW5lLmZpbmQodSciJyk6DQo+IEBA IC03NzEsNyArNzcxLDcgQEAgY2xhc3MgVW5pRmlsZUNsYXNzT2JqZWN0KG9iamVjdCk6DQo+IA0K PiAgICAgICAgICAjDQo+ICAgICAgICAgICMgQ2hlY2sgQWJzdHJhY3QsIERlc2NyaXB0aW9uLCBC aW5hcnlBYnN0cmFjdCBhbmQgQmluYXJ5RGVzY3JpcHRpb24gb3JkZXIsDQo+IC0gICAgICAgICMg c2hvdWxkIGJlIEFic3RyYWN0LCBEZXNjcmlwdGlvbiwgQmluYXJ5QWJzdHJhY3QsIEJpbmFyeURl c2N0aXB0aW9uDQo+ICsgICAgICAgICMgc2hvdWxkIGJlIEFic3RyYWN0LCBEZXNjcmlwdGlvbiwg QmluYXJ5QWJzdHJhY3QsIEJpbmFyeURlc2NyaXB0aW9uDQo+ICAgICAgICAgIEFic3RyYWN0UG9z aXRpb24gPSAtMQ0KPiAgICAgICAgICBEZXNjcmlwdGlvblBvc2l0aW9uID0gLTENCj4gICAgICAg ICAgQmluYXJ5QWJzdHJhY3RQb3NpdGlvbiA9IC0xDQo+IGRpZmYgLS1naXQgYS9CYXNlVG9vbHMv U291cmNlL1B5dGhvbi9VUFQvTG9nZ2VyL0xvZy5weSBiL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9u L1VQVC9Mb2dnZXIvTG9nLnB5DQo+IGluZGV4IGU4YzMxZjAwNzIuLjc2NzEyMDJiMzAgMTAwNjQ0 DQo+IC0tLSBhL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1VQVC9Mb2dnZXIvTG9nLnB5DQo+ICsr KyBiL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1VQVC9Mb2dnZXIvTG9nLnB5DQo+IEBAIC0xOTAs NyArMTkwLDcgQEAgZGVmIFdhcm4oVG9vbE5hbWUsIE1lc3NhZ2UsIEZpbGU9Tm9uZSwgTGluZT1O b25lLCBFeHRyYURhdGE9Tm9uZSk6DQo+IA0KPiAgICAgIF9JTkZPX0xPR0dFUi5sb2coV0FSTiwg TG9nVGV4dCkNCj4gICAgICAjDQo+IC0gICAgIyBSYWlzZSBhbiBleGVjcHRpb24gaWYgaW5kaWNh dGVkDQo+ICsgICAgIyBSYWlzZSBhbiBleGNlcHRpb24gaWYgaW5kaWNhdGVkDQo+ICAgICAgIw0K PiAgICAgIGlmIEdsb2JhbERhdGEuZ1dBUk5JTkdfQVNfRVJST1IgPT0gVHJ1ZToNCj4gICAgICAg ICAgcmFpc2UgRmF0YWxFcnJvcihXQVJOSU5HX0FTX0VSUk9SKQ0KPiBAQCAtMTk4LDcgKzE5OCw3 IEBAIGRlZiBXYXJuKFRvb2xOYW1lLCBNZXNzYWdlLCBGaWxlPU5vbmUsIExpbmU9Tm9uZSwgRXh0 cmFEYXRhPU5vbmUpOg0KPiAgIyMgTG9nIEVSUk9SIG1lc3NhZ2UNCj4gICMNCj4gICMgT25jZSBh biBlcnJvciBtZXNzYWdlcyBpcyBsb2dnZWQsIHRoZSB0b29sJ3MgZXhlY3V0aW9uIHdpbGwgYmUg YnJva2VuIGJ5DQo+IC0jIHJhaXNpbmcgYW4gZXhlY3B0aW9uLiBJZiB5b3UgZG9uJ3Qgd2FudCB0 byBicmVhayB0aGUgZXhlY3V0aW9uIGxhdGVyLCB5b3UNCj4gKyMgcmFpc2luZyBhbiBleGNlcHRp b24uIElmIHlvdSBkb24ndCB3YW50IHRvIGJyZWFrIHRoZSBleGVjdXRpb24gbGF0ZXIsIHlvdQ0K PiAgIyBjYW4gZ2l2ZSAiUmFpc2VFcnJvciIgd2l0aCAiRmFsc2UiIHZhbHVlLg0KPiAgIw0KPiAg IyAgIEBwYXJhbSAgVG9vbE5hbWUgICAgVGhlIG5hbWUgb2YgdGhlIHRvb2wuIElmIG5vdCBnaXZl biwgdGhlIG5hbWUgb2YgY2FsbGVyDQo+IEBAIC0yMDgsNyArMjA4LDcgQEAgZGVmIFdhcm4oVG9v bE5hbWUsIE1lc3NhZ2UsIEZpbGU9Tm9uZSwgTGluZT1Ob25lLCBFeHRyYURhdGE9Tm9uZSk6DQo+ ICAjICAgQHBhcmFtICBGaWxlICAgICAgICBUaGUgbmFtZSBvZiBmaWxlIHdoaWNoIGNhdXNlZCB0 aGUgZXJyb3IuDQo+ICAjICAgQHBhcmFtICBMaW5lICAgICAgICBUaGUgbGluZSBudW1iZXIgaW4g dGhlICJGaWxlIiB3aGljaCBjYXVzZWQgdGhlIHdhcm5pbmcuDQo+ICAjICAgQHBhcmFtICBFeHRy YURhdGEgICBNb3JlIGluZm9ybWF0aW9uIGFzc29jaWF0ZWQgd2l0aCAiTWVzc2FnZSINCj4gLSMg ICBAcGFyYW0gIFJhaXNlRXJyb3IgIFJhaXNlIGFuIGV4Y2VwdGlvbiB0byBicmVhayB0aGUgdG9v bCdzIGV4ZWN1dHVpb24gaWYNCj4gKyMgICBAcGFyYW0gIFJhaXNlRXJyb3IgIFJhaXNlIGFuIGV4 Y2VwdGlvbiB0byBicmVhayB0aGUgdG9vbCdzIGV4ZWN1dGlvbiBpZg0KPiAgIyAgICAgICAgICAg ICAgICAgICAgICAgaXQncyBUcnVlLiBUaGlzIGlzIHRoZSBkZWZhdWx0IGJlaGF2aW9yLg0KPiAg Iw0KPiAgZGVmIEVycm9yKFRvb2xOYW1lLCBFcnJvckNvZGUsIE1lc3NhZ2U9Tm9uZSwgRmlsZT1O b25lLCBMaW5lPU5vbmUsIFwNCj4gZGlmZiAtLWdpdCBhL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9u L1VQVC9Mb2dnZXIvU3RyaW5nVGFibGUucHkgYi9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9VUFQv TG9nZ2VyL1N0cmluZ1RhYmxlLnB5DQo+IGluZGV4IDA2MTk0MzkyNWEuLmQ4MTVkOWNmODkgMTAw NjQ0DQo+IC0tLSBhL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1VQVC9Mb2dnZXIvU3RyaW5nVGFi bGUucHkNCj4gKysrIGIvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vVVBUL0xvZ2dlci9TdHJpbmdU YWJsZS5weQ0KPiBAQCAtMTM1LDcgKzEzNSw3IEBAIEVSUl9JTkZfUEFSU0VSX0xJQlJBUllfU0VD VElPTl9DT05URU5UX0VSUk9SID0gXA0KPiAgRVJSX0lORl9QQVJTRVJfTElCUkFSWV9TRUNUSU9O X0xJQk5BTUVfTUlTU0lORyA9IFwNCj4gICAgICBfKCJGb3JtYXQgaW52YWxpZC4gUGxlYXNlIHNw ZWNpZnkgYSBsaWJyYXJ5IG5hbWUuIikNCj4gIEVSUl9JTkZfUEFSU0VSX1NPVVJDRVNfU0VDVElP Tl9DT05URU5UX0VSUk9SID0gXA0KPiAtICAgIF8oIlRoZSBmb3JtYXQgaXMgaW5jb3JyZWN0LiBJ dCBzaG91bGQgYmUgZm9ybWF0ZWQgYXMgZm9sbG93czogIg0KPiArICAgIF8oIlRoZSBmb3JtYXQg aXMgaW5jb3JyZWN0LiBJdCBzaG91bGQgYmUgZm9ybWF0dGVkIGFzIGZvbGxvd3M6ICINCj4gICAg ICAgICJGaWxlTmFtZSwgRmFtaWx5IHwgVGFnTmFtZSB8IFRvb2xDb2RlIHwgRmVhdHVyZUZsYWdF eHByLiIpDQo+ICBFUlJfSU5GX1BBUlNFUl9QQ0RfU0VDVElPTl9UWVBFX0VSUk9SID0gXA0KPiAg ICAgIF8oIlRoZSBQQ0Qgc2VjdGlvbiB0eXBlIGlzIGluY29ycmVjdC4gVGhlIHZhbHVlIHNob3Vs ZCBiZSB0aGlzIGxpc3Q6ICVzIikNCj4gQEAgLTE0NywxMCArMTQ3LDEwIEBAIEVSUl9JTkZfUEFS U0VSX1BDRF9OQU1FX0ZPUk1BVF9FUlJPUiA9IFwNCj4gICAgICAgICJTaG91bGQgbGlrZSBmb2xs b3dpbmc6IDxUb2tlblNwYWNlR3VpZENOYW1lPi48UGNkQ05hbWU+ICIpDQo+ICBFUlJfSU5GX1BB UlNFUl9HVUlEX1BQSV9QUk9UT0NPTF9TRUNUSU9OX0NPTlRFTlRfRVJST1IgPSBcDQo+ICAgICAg XygiVGhlIGZvcm1hdCBpcyBpbmNvcnJlY3QuICINCj4gLSAgICAgICJJdCBzaG91bGQgYmUgZm9y bWF0ZWQgYXMgZm9sbG93czogQ05hbWUgfCBGZWF0dXJlRmxhZy4iKQ0KPiArICAgICAgIkl0IHNo b3VsZCBiZSBmb3JtYXR0ZWQgYXMgZm9sbG93czogQ05hbWUgfCBGZWF0dXJlRmxhZy4iKQ0KPiAg RVJSX0lORl9QQVJTRVJfUEFDS0FHRV9TRUNUSU9OX0NPTlRFTlRfRVJST1IgPSBcDQo+ICAgICAg XygiVGhlIGZvcm1hdCBpcyBpbmNvcnJlY3QuICINCj4gLSAgICAgICJJdCBzaG91bGQgYmUgZm9y bWF0ZWQgYXMgZm9sbG93czogIDxUb2tlblNwYWNlR3VpZENOYW1lPi48UGNkQ05hbWU+IikNCj4g KyAgICAgICJJdCBzaG91bGQgYmUgZm9ybWF0dGVkIGFzIGZvbGxvd3M6ICA8VG9rZW5TcGFjZUd1 aWRDTmFtZT4uPFBjZENOYW1lPiIpDQo+ICBFUlJfSU5GX1BBUlNFUl9QQ0RfVEFJTF9DT01NRU5U U19JTlZBTElEID0gXA0KPiAgICAgIF8oIlRoZSBmb3JtYXQgaXMgaW5jb3JyZWN0LiAiDQo+ICAg ICAgICAiTXVsdGlwbGUgdXNhZ2UgZGVzY3JpcHRpb25zIG11c3QgYmUgZGVzY3JpYmVkIG9uIHN1 YnNlcXVlbnQgbGluZXMuIikNCj4gQEAgLTE5Nyw3ICsxOTcsNyBAQCBFUlJfSU5GX1BBUlNFUl9G SUxFX01JU1NfREVGSU5FID0gXA0KPiAgICAgIF8oIlRoZSBmb2xsb3dpbmcgZmlsZSBsaXN0ZWQg aW4gdGhlIG1vZHVsZSAiDQo+ICAgICAgICAiZGlyZWN0b3J5IGlzIG5vdCBsaXN0ZWQgaW4gdGhl IElORjogJXMiKQ0KPiAgRVJSX0lORl9QQVJTRVJfVkVSU0lPTl9OVU1CRVJfREVQUklDQVRFRCA9 IFwNCj4gLSAgICBfKCJWRVJTSU9OX05VTUJFUiBkZXByaWNhdGVkLiAgIg0KPiArICAgIF8oIlZF UlNJT05fTlVNQkVSIGRlcHJlY2F0ZWQuICAiDQo+ICAgICAgICAiVGhlIElORiBmaWxlICVzIHNo b3VsZCBiZSBtb2RpZmllZCB0byB1c2UgdGhlIFZFUlNJT05fU1RSSU5HIGluc3RlYWQuIikNCj4g IEVSUl9JTkZfUEFSU0VSX1ZFUl9FWElTVF9CT1RIX05VTV9TVFIgPSBcDQo+ICAgICAgXygiVGhl IElORiBmaWxlICVzIGRlZmluZXMgYm90aCBWRVJTSU9OX05VTUJFUiBhbmQgVkVSU0lPTl9TVFJJ TkcsICINCj4gQEAgLTU4NSw3ICs1ODUsNyBAQCBfKCJPbmx5IGEgZGlzdHJpYnV0aW9uIGZpbGUg bmFtZSB3aXRob3V0IGEgcGF0aCBpcyBhbGxvd2VkIGZvciAiDQo+ICAgICJ0aGUgZGlzdHJpYnV0 aW9uIHRvIGJlIHJlcGxhY2VkIGR1cmluZyByZXBsYWNlLiBDdXJyZW50IGdpdmVuOiAnJXMnLiIp DQo+ICBFUlJfVU5JUEFSU0VfREJMUVVPVEVfVU5NQVRDSEVEID0gXA0KPiAgXygiT25seSBMYW5n dWFnZSBlbnRyeSBjYW4gY29udGFpbiBhIGNvdXBsZSBvZiBtYXRjaGVkIHF1b3RlIGluIG9uZSBs aW5lIikNCj4gLUVSUl9VTklQQVJTRV9OT19TRUNUSU9OX0VYSVNUID0gXygiTm8gUGFrY2FnZURl ZiBvciBNb2R1bGVEZWYgc2VjdGlvbiBleGlzdHMgaW4gdGhlIFVOSSBmaWxlLiIpDQo+ICtFUlJf VU5JUEFSU0VfTk9fU0VDVElPTl9FWElTVCA9IF8oIk5vIFBhY2thZ2VEZWYgb3IgTW9kdWxlRGVm IHNlY3Rpb24gZXhpc3RzIGluIHRoZSBVTkkgZmlsZS4iKQ0KPiAgRVJSX1VOSVBBUlNFX1NUUk5B TUVfRk9STUFUX0VSUk9SID0gXygiVGhlIFN0cmluZyBUb2tlbiBOYW1lICVzIG11c3Qgc3RhcnQg d2l0aCBcIlNUUl9cIiIpDQo+ICBFUlJfVU5JUEFSU0VfU0VQX0xBTkdFTlRSWV9MSU5FID0gXygi RWFjaCA8TGFuZ0VudHJ5PiBzaG91bGQgYmUgaW4gYSBzZXBhcmF0ZSBsaW5lIDolcy4iKQ0KPiAg RVJSX1VOSVBBUlNFX01VTFRJX0VOVFJZX0VYSVNUID0gXA0KPiBAQCAtNzI0LDcgKzcyNCw3IEBA IF8oIkluY29ycmVjdCBHVUlEIHZhbHVlIGZvcm1hdCwgbXVzdCBiZSA8R3VpZFZhbHVlSW5DRm9y bWF0OiINCj4gIEVSUl9ERUNQQVJTRV9DR1VJRF9OT1RfRk9VTkQgPSBfKCJVbmFibGUgdG8gZmlu ZCB0aGUgR1VJRCB2YWx1ZSBvZiB0aGlzIEdVSUQgQ05hbWUgOiAnJXMnLiIpDQo+ICBFUlJfREVD UEFSU0VfRklMRU9QRU4gICAgICAgICAgICAgICA9IF8oIlVuYWJsZSB0byBvcGVuOiBbJXNdLiIp DQo+ICBFUlJfREVDUEFSU0VfU0VDVElPTl9FTVBUWSAgICAgICAgICA9IF8oIkVtcHR5IHNlY3Rp b25zIGFyZSBub3QgYWxsb3dlZC4iKQ0KPiAtRVJSX0RFQ1BBUlNFX1NFQ1RJT05fVUUgICAgICAg ICAgICAgPSBfKCJJbmNvcnJlY3QgVXNlckV4dGVudGlvbnMgZm9ybWF0LiAiDQo+ICtFUlJfREVD UEFSU0VfU0VDVElPTl9VRSAgICAgICAgICAgICA9IF8oIkluY29ycmVjdCBVc2VyRXh0ZW5zaW9u cyBmb3JtYXQuICINCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTXVzdCBiZSBVc2Vy RXh0ZW54aW9ucy5Vc2VySWQuSWRTdHJpbmdbLkFyY2hdKy4iKQ0KPiAgRVJSX0RFQ1BBUlNFX1NF Q1RJT05fVUVfVVNFUklEICAgICAgPSBfKCJJbnZhbGlkIFVzZXJJZCwgbXVzdCBiZSB1bmRlcnNj b3JlIg0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvciBhbHBo YW51bWVyaWMgY2hhcmFjdGVycy4iKQ0KPiBkaWZmIC0tZ2l0IGEvQmFzZVRvb2xzL1NvdXJjZS9Q eXRob24vVVBUL0xvZ2dlci9Ub29sRXJyb3IucHkgYi9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9V UFQvTG9nZ2VyL1Rvb2xFcnJvci5weQ0KPiBpbmRleCA3ZjdkZjljNmQ1Li5hMDc0ZWRjYThhIDEw MDY0NA0KPiAtLS0gYS9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9VUFQvTG9nZ2VyL1Rvb2xFcnJv ci5weQ0KPiArKysgYi9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9VUFQvTG9nZ2VyL1Rvb2xFcnJv ci5weQ0KPiBAQCAtMSw1ICsxLDUgQEANCj4gICMjIEBmaWxlDQo+IC0jIFN0YW5kYXJkaXplZCBF cnJvciBIYW5sZGluZyBpbmZyYXN0cnVjdHVyZXMuDQo+ICsjIFN0YW5kYXJkaXplZCBFcnJvciBI YW5kbGluZyBpbmZyYXN0cnVjdHVyZXMuDQo+ICAjDQo+ICAjIENvcHlyaWdodCAoYykgMjAxMSAt IDIwMTgsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gICMN Cj4gZGlmZiAtLWdpdCBhL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1VQVC9Na1BrZy5weSBiL0Jh c2VUb29scy9Tb3VyY2UvUHl0aG9uL1VQVC9Na1BrZy5weQ0KPiBpbmRleCAwNTNkMTE1NTQ3Li4z ZGMxOGFjNmViIDEwMDY0NA0KPiAtLS0gYS9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9VUFQvTWtQ a2cucHkNCj4gKysrIGIvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vVVBUL01rUGtnLnB5DQo+IEBA IC0xOTQsNyArMTk0LDcgQEAgZGVmIE1haW4oT3B0aW9ucyA9IE5vbmUpOg0KPiAgICAgICAgICBD b250ZW50RmlsZUNsb3NlZCA9IFRydWUNCj4gDQo+ICAgICAgICAgICMNCj4gLSAgICAgICAgIyBB ZGQgTWQ1U2lnYXR1cmUNCj4gKyAgICAgICAgIyBBZGQgTWQ1U2lnbmF0dXJlDQo+ICAgICAgICAg ICMNCj4gICAgICAgICAgRGlzdFBrZy5IZWFkZXIuU2lnbmF0dXJlID0gbWQ1KG9wZW4oc3RyKENv bnRlbnRGaWxlKSwgJ3JiJykucmVhZCgpKS5oZXhkaWdlc3QoKQ0KPiAgICAgICAgICAjDQo+IGRp ZmYgLS1naXQgYS9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9VUFQvT2JqZWN0L1BhcnNlci9EZWNP YmplY3QucHkgYi9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9VUFQvT2JqZWN0L1BhcnNlci9EZWNP YmplY3QucHkNCj4gaW5kZXggMzAyZDMwNTBhYS4uZmFiNGJlMzUxZiAxMDA2NDQNCj4gLS0tIGEv QmFzZVRvb2xzL1NvdXJjZS9QeXRob24vVVBUL09iamVjdC9QYXJzZXIvRGVjT2JqZWN0LnB5DQo+ ICsrKyBiL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1VQVC9PYmplY3QvUGFyc2VyL0RlY09iamVj dC5weQ0KPiBAQCAtMTcxLDcgKzE3MSw3IEBAIGNsYXNzIF9EZWNJdGVtQmFzZU9iamVjdChfRGVj Q29tbWVudHMpOg0KPiANCj4gICMjIERlY0RlZmluZU9iamVjdA0KPiAgIw0KPiAtIyBDbGFzcyB0 byBob2xkIGRlZmluZSBzZWN0aW9uIGluZm9tYXRpb24NCj4gKyMgQ2xhc3MgdG8gaG9sZCBkZWZp bmUgc2VjdGlvbiBpbmZvcm1hdGlvbg0KPiAgIw0KPiAgY2xhc3MgRGVjRGVmaW5lT2JqZWN0KF9E ZWNCYXNlT2JqZWN0KToNCj4gICAgICBkZWYgX19pbml0X18oc2VsZiwgUGtnRnVsbE5hbWUpOg0K PiBAQCAtNTIwLDcgKzUyMCw3IEBAIGNsYXNzIERlY0d1aWRPYmplY3QoRGVjR3VpZE9iamVjdEJh c2UpOg0KPiANCj4gICMjIERlY1BwaU9iamVjdA0KPiAgIw0KPiAtIyBDbGFzcyBmb3IgUFBJIHNl Y2lvbnQNCj4gKyMgQ2xhc3MgZm9yIFBQSSBzZWN0aW9uDQo+ICAjDQo+ICAjIEBwYXJhbSBEZWNH dWlkT2JqZWN0QmFzZTogRGVjIEd1aWQgT2JqZWN0IEJhc2UNCj4gICMNCj4gZGlmZiAtLWdpdCBh L0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1VQVC9QYXJzZXIvRGVjUGFyc2VyLnB5IGIvQmFzZVRv b2xzL1NvdXJjZS9QeXRob24vVVBUL1BhcnNlci9EZWNQYXJzZXIucHkNCj4gaW5kZXggZjdlZWI4 NDEyNy4uOTJiZDY0YjlkOSAxMDA2NDQNCj4gLS0tIGEvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24v VVBUL1BhcnNlci9EZWNQYXJzZXIucHkNCj4gKysrIGIvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24v VVBUL1BhcnNlci9EZWNQYXJzZXIucHkNCj4gQEAgLTcwNSw3ICs3MDUsNyBAQCBjbGFzcyBfRGVj R3VpZChfRGVjQmFzZSk6DQo+IA0KPiAgIyMgX0RlY1VzZXJFeHRlbnNpb24NCj4gICMNCj4gLSMg UGFyc2UgdXNlciBleHRlbnRpb24gc2VjdGlvbg0KPiArIyBQYXJzZSB1c2VyIGV4dGVuc2lvbiBz ZWN0aW9uDQo+ICAjDQo+ICBjbGFzcyBfRGVjVXNlckV4dGVuc2lvbihfRGVjQmFzZSk6DQo+ICAg ICAgZGVmIF9faW5pdF9fKHNlbGYsIFJhd0RhdGEpOg0KPiBAQCAtMTAzMyw3ICsxMDMzLDcgQEAg Y2xhc3MgRGVjKF9EZWNCYXNlLCBfRGVjQ29tbWVudHMpOg0KPiAgICAgICAgICAgICAgICAgIFNl Y3Rpb25OYW1lcy5hcHBlbmQoU2VjdGlvbk5hbWUpDQo+ICAgICAgICAgICAgICAjDQo+ICAgICAg ICAgICAgICAjIEluIERFQyBzcGVjaWZpY2F0aW9uLCBhbGwgc2VjdGlvbiBoZWFkZXJzIGhhdmUg YXQgbW9zdCB0d28gcGFydDoNCj4gLSAgICAgICAgICAgICMgU2VjdGlvbk5hbWUuQXJjaCBleGNl cHQgVXNlckV4dGVudGlvbg0KPiArICAgICAgICAgICAgIyBTZWN0aW9uTmFtZS5BcmNoIGV4Y2Vw dCBVc2VyRXh0ZW5zaW9uDQo+ICAgICAgICAgICAgICAjDQo+ICAgICAgICAgICAgICBpZiBsZW4o SXRlbUxpc3QpID4gMjoNCj4gICAgICAgICAgICAgICAgICBzZWxmLl9Mb2dnZXJFcnJvcihTVC5F UlJfREVDUEFSU0VfU0VDVElPTl9TVUJUT09NQU5ZICUgSXRlbSkNCj4gZGlmZiAtLWdpdCBhL0Jh c2VUb29scy9Tb3VyY2UvUHl0aG9uL1VQVC9QYXJzZXIvSW5mQXNCdWlsdFByb2Nlc3MucHkgYi9C YXNlVG9vbHMvU291cmNlL1B5dGhvbi9VUFQvUGFyc2VyL0luZkFzQnVpbHRQcm9jZXNzLnB5DQo+ IGluZGV4IGMzMTQ4OTJhZGYuLjUzYjYyNjIxZGMgMTAwNjQ0DQo+IC0tLSBhL0Jhc2VUb29scy9T b3VyY2UvUHl0aG9uL1VQVC9QYXJzZXIvSW5mQXNCdWlsdFByb2Nlc3MucHkNCj4gKysrIGIvQmFz ZVRvb2xzL1NvdXJjZS9QeXRob24vVVBUL1BhcnNlci9JbmZBc0J1aWx0UHJvY2Vzcy5weQ0KPiBA QCAtNDYsNyArNDYsNyBAQCBkZWYgR2V0TGliSW5zdGFuY2VJbmZvKFN0cmluZywgV29ya1NwYWNl LCBMaW5lTm8sIEN1cnJlbnRJbmZGaWxlTmFtZSk6DQo+ICAgICAgRmlsZUd1aWRTdHJpbmcgPSAi Ig0KPiAgICAgIFZlclN0cmluZyA9ICIiDQo+IA0KPiAtICAgIE9yaWduYWxTdHJpbmcgPSBTdHJp bmcNCj4gKyAgICBPcmlnaW5hbFN0cmluZyA9IFN0cmluZw0KPiAgICAgIFN0cmluZyA9IFN0cmlu Zy5zdHJpcCgpDQo+ICAgICAgaWYgbm90IFN0cmluZzoNCj4gICAgICAgICAgcmV0dXJuIE5vbmUs IE5vbmUNCj4gQEAgLTc4LDcgKzc4LDcgQEAgZGVmIEdldExpYkluc3RhbmNlSW5mbyhTdHJpbmcs IFdvcmtTcGFjZSwgTGluZU5vLCBDdXJyZW50SW5mRmlsZU5hbWUpOg0KPiAgICAgICMNCj4gICAg ICAjIFRvIGRlYWwgd2l0aCBsaWJyYXJ5IGluc3RhbmNlIHNwZWNpZmllZCBieSBmaWxlIG5hbWUN Cj4gICAgICAjDQo+IC0gICAgRmlsZUxpbmVzTGlzdCA9IEdldEZpbGVMaW5lQ29udGVudChTdHJp bmcsIFdvcmtTcGFjZSwgTGluZU5vLCBPcmlnbmFsU3RyaW5nKQ0KPiArICAgIEZpbGVMaW5lc0xp c3QgPSBHZXRGaWxlTGluZUNvbnRlbnQoU3RyaW5nLCBXb3JrU3BhY2UsIExpbmVObywgT3JpZ2lu YWxTdHJpbmcpDQo+IA0KPiANCj4gICAgICBSZUZpbmRGaWxlR3VpZFBhdHRlcm4gPSByZS5jb21w aWxlKCJeXHMqRklMRV9HVUlEXHMqPS4qJCIpDQo+IGRpZmYgLS1naXQgYS9CYXNlVG9vbHMvU291 cmNlL1B5dGhvbi9VUFQvUG9tQWRhcHRlci9EZWNQb21BbGlnbm1lbnQucHkNCj4gYi9CYXNlVG9v bHMvU291cmNlL1B5dGhvbi9VUFQvUG9tQWRhcHRlci9EZWNQb21BbGlnbm1lbnQucHkNCj4gaW5k ZXggNWRjMDBhZmZhZC4uYTdiNTlkOTU4YyAxMDA2NDQNCj4gLS0tIGEvQmFzZVRvb2xzL1NvdXJj ZS9QeXRob24vVVBUL1BvbUFkYXB0ZXIvRGVjUG9tQWxpZ25tZW50LnB5DQo+ICsrKyBiL0Jhc2VU b29scy9Tb3VyY2UvUHl0aG9uL1VQVC9Qb21BZGFwdGVyL0RlY1BvbUFsaWdubWVudC5weQ0KPiBA QCAtNDEzLDcgKzQxMyw3IEBAIGNsYXNzIERlY1BvbUFsaWdubWVudChQYWNrYWdlT2JqZWN0KToN Cj4gDQo+ICAgICAgICAgICMNCj4gICAgICAgICAgIyBnZXQgYSBub24tb3ZlcmxhcCBzZXQgb2Yg aW5jbHVkZSBwYXRoLCBJbmNsdWRlUGF0aExpc3Qgc2hvdWxkIGJlDQo+IC0gICAgICAgICMgc29y dGVkLCBhbmQgcGF0aCBzaG91bGQgYmUgZW5kIHdpdGggcGF0aCBzZXBlcmF0b3IgJ1wnDQo+ICsg ICAgICAgICMgc29ydGVkLCBhbmQgcGF0aCBzaG91bGQgYmUgZW5kIHdpdGggcGF0aCBzZXBhcmF0 b3IgJ1wnDQo+ICAgICAgICAgICMNCj4gICAgICAgICAgTm9uT3ZlckxhcExpc3QgPSBbXQ0KPiAg ICAgICAgICBmb3IgUGF0aDEgaW4gSW5jbHVkZVBhdGhMaXN0Og0KPiBAQCAtNDI0LDcgKzQyNCw3 IEBAIGNsYXNzIERlY1BvbUFsaWdubWVudChQYWNrYWdlT2JqZWN0KToNCj4gICAgICAgICAgICAg ICAgICBOb25PdmVyTGFwTGlzdC5hcHBlbmQoUGF0aDEpDQo+ICAgICAgICAgICMNCj4gICAgICAg ICAgIyByZXZlcnQgdGhlIGxpc3Qgc28gdGhlIGxvbmdlc3QgcGF0aCBzaG93biBmaXJzdCBpbiBs aXN0LCBhbHNvIG5lZWQNCj4gLSAgICAgICAgIyB0byByZW1vdmUgdGhlIGV4dHJhIHBhdGggc2Vw ZXJhdG9yICdcJw0KPiArICAgICAgICAjIHRvIHJlbW92ZSB0aGUgZXh0cmEgcGF0aCBzZXBhcmF0 b3IgJ1wnDQo+ICAgICAgICAgICMgYXMgdGhpcyBsaXN0IGlzIHVzZWQgdG8gc2VhcmNoIHRoZSBz dXBwb3J0ZWQgQXJjaCBpbmZvDQo+ICAgICAgICAgICMNCj4gICAgICAgICAgZm9yIEluZGV4TiBp biByYW5nZSAoMCwgbGVuKEluY2x1ZGVQYXRoTGlzdCkpOg0KPiBkaWZmIC0tZ2l0IGEvQmFzZVRv b2xzL1NvdXJjZS9QeXRob24vVVBUL1BvbUFkYXB0ZXIvSW5mUG9tQWxpZ25tZW50LnB5DQo+IGIv QmFzZVRvb2xzL1NvdXJjZS9QeXRob24vVVBUL1BvbUFkYXB0ZXIvSW5mUG9tQWxpZ25tZW50LnB5 DQo+IGluZGV4IDJlODNjMjQ3ZWQuLmQwMTQ4MTcyN2IgMTAwNjQ0DQo+IC0tLSBhL0Jhc2VUb29s cy9Tb3VyY2UvUHl0aG9uL1VQVC9Qb21BZGFwdGVyL0luZlBvbUFsaWdubWVudC5weQ0KPiArKysg Yi9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9VUFQvUG9tQWRhcHRlci9JbmZQb21BbGlnbm1lbnQu cHkNCj4gQEAgLTI5Myw3ICsyOTMsNyBAQCBjbGFzcyBJbmZQb21BbGlnbm1lbnQoTW9kdWxlT2Jq ZWN0KToNCj4gICAgICAgICAgICAgIHNlbGYuU2V0VXNlckV4dGVuc2lvbkxpc3Qoc2VsZi5HZXRV c2VyRXh0ZW5zaW9uTGlzdCgpICsgW1VzZXJFeHRlbnNpb25dKQ0KPiAgICAgICAgICAjDQo+ICAg ICAgICAgICMgR2V0IGFsbCBtZXRhLWZpbGUgaGVhZGVyIGluZm9ybWF0aW9uDQo+IC0gICAgICAg ICMgdGhlIHJlY29yZCBpcyBsaXN0IG9mIGl0ZW1zIGZvcm1hdGVkOg0KPiArICAgICAgICAjIHRo ZSByZWNvcmQgaXMgbGlzdCBvZiBpdGVtcyBmb3JtYXR0ZWQ6DQo+ICAgICAgICAgICMgW0xpbmVW YWx1ZSwgQXJjaCwgU3RhcnRMaW5lLCBJRCwgVGhpcmRdDQo+ICAgICAgICAgICMNCj4gICAgICAg ICAgSW5mSGVhZGVyT2JqID0gc2VsZi5QYXJzZXIuSW5mSGVhZGVyDQo+IGRpZmYgLS1naXQgYS9C YXNlVG9vbHMvU291cmNlL1B5dGhvbi9VUFQvUG9tQWRhcHRlci9JbmZQb21BbGlnbm1lbnRNaXNj LnB5DQo+IGIvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vVVBUL1BvbUFkYXB0ZXIvSW5mUG9tQWxp Z25tZW50TWlzYy5weQ0KPiBpbmRleCAyMzkwNzhkMDE5Li42OGYyODFiNTIxIDEwMDY0NA0KPiAt LS0gYS9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9VUFQvUG9tQWRhcHRlci9JbmZQb21BbGlnbm1l bnRNaXNjLnB5DQo+ICsrKyBiL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1VQVC9Qb21BZGFwdGVy L0luZlBvbUFsaWdubWVudE1pc2MucHkNCj4gQEAgLTE1NSwxMCArMTU1LDEwIEBAIGRlZiBHZW5N b2R1bGVIZWFkZXJVc2VyRXh0KERlZmluZU9iaiwgQXJjaFN0cmluZyk6DQo+ICAjIyBHZW5lcmF0 ZSB0aGUgZGVmaW5lIHN0YXRlbWVudCB0aGF0IHdpbGwgYmUgcHV0IGludG8gdXNlcmV4dGVuc2lv bg0KPiAgIyAgTm90IHN1cHBvcnQgY29tbWVudHMuDQo+ICAjDQo+IC0jIEBwYXJhbSBIZWFkZXJD b21tZW50OiB0aGUgb3JpZ2luYWwgaGVhZGVyIGNvbW1lbnQgKCMgbm90IHJlbXZvZWQpDQo+ICsj IEBwYXJhbSBIZWFkZXJDb21tZW50OiB0aGUgb3JpZ2luYWwgaGVhZGVyIGNvbW1lbnQgKCMgbm90 IHJlbW92ZWQpDQo+ICAjIEBwYXJhbSBOYW1lOiB0aGUgZGVmaW5pdGlvbiBrZXl3b3JkLCBzaG91 bGQgbm90IGJlIGVtcHR5IG9yIG5vbmUNCj4gICMgQHBhcmFtIFZhbHVlOiB0aGUgZGVmaW5pdGlv biBrZXl3b3JkIHZhbHVlDQo+IC0jIEBwYXJhbSBUYWlsQ29tbWVudDogdGhlIG9yaWdpbmFsIFRh aWwgY29tbWVudCAoIyBub3QgcmVtdm9lZCkNCj4gKyMgQHBhcmFtIFRhaWxDb21tZW50OiB0aGUg b3JpZ2luYWwgVGFpbCBjb21tZW50ICgjIG5vdCByZW1vdmVkKQ0KPiAgIw0KPiAgIyBAcmV0dXJu OiB0aGUgcmVnZW5lcmF0ZWQgZGVmaW5lIHN0YXRlbWVudA0KPiAgIw0KPiBkaWZmIC0tZ2l0IGEv QmFzZVRvb2xzL1NvdXJjZS9QeXRob24vVVBUL1JtUGtnLnB5IGIvQmFzZVRvb2xzL1NvdXJjZS9Q eXRob24vVVBUL1JtUGtnLnB5DQo+IGluZGV4IGYxZDE0MWM3MzYuLjNkOTcyOTUzNjIgMTAwNjQ0 DQo+IC0tLSBhL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1VQVC9SbVBrZy5weQ0KPiArKysgYi9C YXNlVG9vbHMvU291cmNlL1B5dGhvbi9VUFQvUm1Qa2cucHkNCj4gQEAgLTI0Miw4ICsyNDIsOCBA QCBkZWYgUmVtb3ZlRGlzdChHdWlkLCBWZXJzaW9uLCBTdG9yZWREaXN0RmlsZSwgRGF0YUJhc2Us IFdvcmtzcGFjZURpciwgRm9yY2VSZW1vdg0KPiAgICAgICAgICAgICAgICAgICMNCj4gICAgICAg ICAgICAgICAgICAjIGNoZWNrIHdoZXRoZXIgbW9kaWZpZWQgYnkgdXNlcnMNCj4gICAgICAgICAg ICAgICAgICAjDQo+IC0gICAgICAgICAgICAgICAgTWQ1U2lnYXR1cmUgPSBtZDUob3BlbihzdHIo UGF0aCksICdyYicpLnJlYWQoKSkNCj4gLSAgICAgICAgICAgICAgICBpZiBNZDVTdW0gIT0gTWQ1 U2lnYXR1cmUuaGV4ZGlnZXN0KCk6DQo+ICsgICAgICAgICAgICAgICAgTWQ1U2lnbmF0dXJlID0g bWQ1KG9wZW4oc3RyKFBhdGgpLCAncmInKS5yZWFkKCkpDQo+ICsgICAgICAgICAgICAgICAgaWYg TWQ1U3VtICE9IE1kNVNpZ25hdHVyZS5oZXhkaWdlc3QoKToNCj4gICAgICAgICAgICAgICAgICAg ICAgTG9nZ2VyLkluZm8oU1QuTVNHX0NPTkZJUk1fUkVNT1ZFMiAlIFBhdGgpDQo+ICAgICAgICAg ICAgICAgICAgICAgIElucHV0ID0gc3RkaW4ucmVhZGxpbmUoKQ0KPiAgICAgICAgICAgICAgICAg ICAgICBJbnB1dCA9IElucHV0LnJlcGxhY2UoJ1xyJywgJycpLnJlcGxhY2UoJ1xuJywgJycpDQo+ IGRpZmYgLS1naXQgYS9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9VUFQvVW5pdFRlc3QvRGVjUGFy c2VyVW5pdFRlc3QucHkgYi9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9VUFQvVW5pdFRlc3QvRGVj UGFyc2VyVW5pdFRlc3QucHkNCj4gaW5kZXggYWZlYTRhNDM4Yi4uNzUyYTllYTQ0NiAxMDA2NDQN Cj4gLS0tIGEvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vVVBUL1VuaXRUZXN0L0RlY1BhcnNlclVu aXRUZXN0LnB5DQo+ICsrKyBiL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1VQVC9Vbml0VGVzdC9E ZWNQYXJzZXJVbml0VGVzdC5weQ0KPiBAQCAtNjEsOSArNjEsOSBAQCBjbGFzcyBNYWNyb1BhcnNl clRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToNCj4gICAgICAgICAgc2VsZi5kZWMgPSBfRGVj QmFzZShGaWxlQ29udGVudCgnZHVtbXknLCBbXSkpDQo+IA0KPiAgICAgIGRlZiB0ZXN0Q29ycmVj dE1hY3JvKHNlbGYpOg0KPiAtICAgICAgICBzZWxmLmRlYy5fTWFjcm9QYXJzZXIoJ0RFRklORSBN QVJDUk8xID0gdGVzdDEnKQ0KPiAtICAgICAgICBzZWxmLmZhaWxJZignTUFSQ1JPMScgbm90IGlu IHNlbGYuZGVjLl9Mb2NhbE1hY3JvKQ0KPiAtICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYu ZGVjLl9Mb2NhbE1hY3JvWydNQVJDUk8xJ10sICd0ZXN0MScpDQo+ICsgICAgICAgIHNlbGYuZGVj Ll9NYWNyb1BhcnNlcignREVGSU5FIE1BQ1JPMSA9IHRlc3QxJykNCj4gKyAgICAgICAgc2VsZi5m YWlsSWYoJ01BQ1JPMScgbm90IGluIHNlbGYuZGVjLl9Mb2NhbE1hY3JvKQ0KPiArICAgICAgICBz ZWxmLmFzc2VydEVxdWFsKHNlbGYuZGVjLl9Mb2NhbE1hY3JvWydNQUNSTzEnXSwgJ3Rlc3QxJykN Cj4gDQo+ICAgICAgZGVmIHRlc3RFcnJvck1hY3JvMShzZWxmKToNCj4gICAgICAgICAgIyBSYWlz ZSBmYXRhbCBlcnJvciwgbWFjcm8gbmFtZSBtdXN0IGJlIHVwcGVyIGNhc2UgbGV0dGVyDQo+IGRp ZmYgLS1naXQgYS9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9Xb3Jrc3BhY2UvQnVpbGRDbGFzc09i amVjdC5weSBiL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1dvcmtzcGFjZS9CdWlsZENsYXNzT2Jq ZWN0LnB5DQo+IGluZGV4IGNmZjc3YTcxYWUuLjFkZjA0MmY0MWMgMTAwNjQ0DQo+IC0tLSBhL0Jh c2VUb29scy9Tb3VyY2UvUHl0aG9uL1dvcmtzcGFjZS9CdWlsZENsYXNzT2JqZWN0LnB5DQo+ICsr KyBiL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1dvcmtzcGFjZS9CdWlsZENsYXNzT2JqZWN0LnB5 DQo+IEBAIC0xNzYsNyArMTc2LDcgQEAgY2xhc3MgUGNkQ2xhc3NPYmplY3Qob2JqZWN0KToNCj4g ICAgICAjIyBDb252ZXJ0IHRoZSBjbGFzcyB0byBhIHN0cmluZw0KPiAgICAgICMNCj4gICAgICAj ICBDb252ZXJ0IGVhY2ggbWVtYmVyIG9mIHRoZSBjbGFzcyB0byBzdHJpbmcNCj4gLSAgICAjICBP cmdhbml6ZSB0byBhIHNpZ25sZSBsaW5lIGZvcm1hdCBzdHJpbmcNCj4gKyAgICAjICBPcmdhbml6 ZSB0byBhIHNpbmdsZSBsaW5lIGZvcm1hdCBzdHJpbmcNCj4gICAgICAjDQo+ICAgICAgIyAgQHJl dHZhbCBSdG4gRm9ybWF0dGVkIFN0cmluZw0KPiAgICAgICMNCj4gZGlmZiAtLWdpdCBhL0Jhc2VU b29scy9Tb3VyY2UvUHl0aG9uL1dvcmtzcGFjZS9EZWNCdWlsZERhdGEucHkgYi9CYXNlVG9vbHMv U291cmNlL1B5dGhvbi9Xb3Jrc3BhY2UvRGVjQnVpbGREYXRhLnB5DQo+IGluZGV4IDM2YjM5YmU1 ZDUuLjE0OWMwNTdiNzAgMTAwNjQ0DQo+IC0tLSBhL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1dv cmtzcGFjZS9EZWNCdWlsZERhdGEucHkNCj4gKysrIGIvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24v V29ya3NwYWNlL0RlY0J1aWxkRGF0YS5weQ0KPiBAQCAtMTIxLDcgKzEyMSw3IEBAIGNsYXNzIERl Y0J1aWxkRGF0YShQYWNrYWdlQnVpbGRDbGFzc09iamVjdCk6DQo+IA0KPiAgICAgICMjIFJldHJp ZXZlIGFsbCBpbmZvcm1hdGlvbiBpbiBbRGVmaW5lc10gc2VjdGlvbg0KPiAgICAgICMNCj4gLSAg ICAjICAgKFJldHJpdmluZyBhbGwgW0RlZmluZXNdIGluZm9ybWF0aW9uIGluIG9uZS1zaG90IGlz IGp1c3QgdG8gc2F2ZSB0aW1lLikNCj4gKyAgICAjICAgKFJldHJpZXZpbmcgYWxsIFtEZWZpbmVz XSBpbmZvcm1hdGlvbiBpbiBvbmUtc2hvdCBpcyBqdXN0IHRvIHNhdmUgdGltZS4pDQo+ICAgICAg Iw0KPiAgICAgIGRlZiBfR2V0SGVhZGVySW5mbyhzZWxmKToNCj4gICAgICAgICAgUmVjb3JkTGlz dCA9IHNlbGYuX1Jhd0RhdGFbTU9ERUxfTUVUQV9EQVRBX0hFQURFUiwgc2VsZi5fQXJjaF0NCj4g QEAgLTE2Nyw3ICsxNjcsNyBAQCBjbGFzcyBEZWNCdWlsZERhdGEoUGFja2FnZUJ1aWxkQ2xhc3NP YmplY3QpOg0KPiAgICAgICAgICBpZiBzZWxmLl9Qcm90b2NvbHMgaXMgTm9uZToNCj4gICAgICAg ICAgICAgICMNCj4gICAgICAgICAgICAgICMgdGRpY3QgaXMgYSBzcGVjaWFsIGtpbmQgb2YgZGlj dCwgdXNlZCBmb3Igc2VsZWN0aW5nIGNvcnJlY3QNCj4gLSAgICAgICAgICAgICMgcHJvdG9jb2wg ZGVmaXRpb24gZm9yIGdpdmVuIEFSQ0gNCj4gKyAgICAgICAgICAgICMgcHJvdG9jb2wgZGVmaW5p dGlvbiBmb3IgZ2l2ZW4gQVJDSA0KPiAgICAgICAgICAgICAgIw0KPiAgICAgICAgICAgICAgUHJv dG9jb2xEaWN0ID0gdGRpY3QoVHJ1ZSkNCj4gICAgICAgICAgICAgIFByaXZhdGVQcm90b2NvbERp Y3QgPSB0ZGljdChUcnVlKQ0KPiBAQCAtMjEwLDcgKzIxMCw3IEBAIGNsYXNzIERlY0J1aWxkRGF0 YShQYWNrYWdlQnVpbGRDbGFzc09iamVjdCk6DQo+ICAgICAgICAgIGlmIHNlbGYuX1BwaXMgaXMg Tm9uZToNCj4gICAgICAgICAgICAgICMNCj4gICAgICAgICAgICAgICMgdGRpY3QgaXMgYSBzcGVj aWFsIGtpbmQgb2YgZGljdCwgdXNlZCBmb3Igc2VsZWN0aW5nIGNvcnJlY3QNCj4gLSAgICAgICAg ICAgICMgUFBJIGRlZml0aW9uIGZvciBnaXZlbiBBUkNIDQo+ICsgICAgICAgICAgICAjIFBQSSBk ZWZpbml0aW9uIGZvciBnaXZlbiBBUkNIDQo+ICAgICAgICAgICAgICAjDQo+ICAgICAgICAgICAg ICBQcGlEaWN0ID0gdGRpY3QoVHJ1ZSkNCj4gICAgICAgICAgICAgIFByaXZhdGVQcGlEaWN0ID0g dGRpY3QoVHJ1ZSkNCj4gQEAgLTI1Myw3ICsyNTMsNyBAQCBjbGFzcyBEZWNCdWlsZERhdGEoUGFj a2FnZUJ1aWxkQ2xhc3NPYmplY3QpOg0KPiAgICAgICAgICBpZiBzZWxmLl9HdWlkcyBpcyBOb25l Og0KPiAgICAgICAgICAgICAgIw0KPiAgICAgICAgICAgICAgIyB0ZGljdCBpcyBhIHNwZWNpYWwg a2luZCBvZiBkaWN0LCB1c2VkIGZvciBzZWxlY3RpbmcgY29ycmVjdA0KPiAtICAgICAgICAgICAg IyBHVUlEIGRlZml0aW9uIGZvciBnaXZlbiBBUkNIDQo+ICsgICAgICAgICAgICAjIEdVSUQgZGVm aW5pdGlvbiBmb3IgZ2l2ZW4gQVJDSA0KPiAgICAgICAgICAgICAgIw0KPiAgICAgICAgICAgICAg R3VpZERpY3QgPSB0ZGljdChUcnVlKQ0KPiAgICAgICAgICAgICAgUHJpdmF0ZUd1aWREaWN0ID0g dGRpY3QoVHJ1ZSkNCj4gZGlmZiAtLWdpdCBhL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1dvcmtz cGFjZS9Ec2NCdWlsZERhdGEucHkgYi9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9Xb3Jrc3BhY2Uv RHNjQnVpbGREYXRhLnB5DQo+IGluZGV4IGY0NzJmYTE3N2YuLjFmZDE2MzlhYjYgMTAwNjQ0DQo+ IC0tLSBhL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1dvcmtzcGFjZS9Ec2NCdWlsZERhdGEucHkN Cj4gKysrIGIvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vV29ya3NwYWNlL0RzY0J1aWxkRGF0YS5w eQ0KPiBAQCAtMzQzLDcgKzM0Myw3IEBAIGNsYXNzIERzY0J1aWxkRGF0YShQbGF0Zm9ybUJ1aWxk Q2xhc3NPYmplY3QpOg0KPiANCj4gICAgICAjIyBSZXRyaWV2ZSBhbGwgaW5mb3JtYXRpb24gaW4g W0RlZmluZXNdIHNlY3Rpb24NCj4gICAgICAjDQo+IC0gICAgIyAgIChSZXRyaXZpbmcgYWxsIFtE ZWZpbmVzXSBpbmZvcm1hdGlvbiBpbiBvbmUtc2hvdCBpcyBqdXN0IHRvIHNhdmUgdGltZS4pDQo+ ICsgICAgIyAgIChSZXRyaWV2aW5nIGFsbCBbRGVmaW5lc10gaW5mb3JtYXRpb24gaW4gb25lLXNo b3QgaXMganVzdCB0byBzYXZlIHRpbWUuKQ0KPiAgICAgICMNCj4gICAgICBkZWYgX0dldEhlYWRl ckluZm8oc2VsZik6DQo+ICAgICAgICAgIFJlY29yZExpc3QgPSBzZWxmLl9SYXdEYXRhW01PREVM X01FVEFfREFUQV9IRUFERVIsIHNlbGYuX0FyY2hdDQo+IGRpZmYgLS1naXQgYS9CYXNlVG9vbHMv U291cmNlL1B5dGhvbi9Xb3Jrc3BhY2UvSW5mQnVpbGREYXRhLnB5IGIvQmFzZVRvb2xzL1NvdXJj ZS9QeXRob24vV29ya3NwYWNlL0luZkJ1aWxkRGF0YS5weQ0KPiBpbmRleCBmYzc3OWE5ZDI1Li42 MTQ4YWIwZDMwIDEwMDY0NA0KPiAtLS0gYS9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9Xb3Jrc3Bh Y2UvSW5mQnVpbGREYXRhLnB5DQo+ICsrKyBiL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1dvcmtz cGFjZS9JbmZCdWlsZERhdGEucHkNCj4gQEAgLTIwNSw3ICsyMDUsNyBAQCBjbGFzcyBJbmZCdWls ZERhdGEoTW9kdWxlQnVpbGRDbGFzc09iamVjdCk6DQo+IA0KPiAgICAgICMjIFJldHJpZXZlIGFs bCBpbmZvcm1hdGlvbiBpbiBbRGVmaW5lc10gc2VjdGlvbg0KPiAgICAgICMNCj4gLSAgICAjICAg KFJldHJpdmluZyBhbGwgW0RlZmluZXNdIGluZm9ybWF0aW9uIGluIG9uZS1zaG90IGlzIGp1c3Qg dG8gc2F2ZSB0aW1lLikNCj4gKyAgICAjICAgKFJldHJpZXZpbmcgYWxsIFtEZWZpbmVzXSBpbmZv cm1hdGlvbiBpbiBvbmUtc2hvdCBpcyBqdXN0IHRvIHNhdmUgdGltZS4pDQo+ICAgICAgIw0KPiAg ICAgIEBjYWNoZWRfY2xhc3NfZnVuY3Rpb24NCj4gICAgICBkZWYgX0dldEhlYWRlckluZm8oc2Vs Zik6DQo+IEBAIC04MTYsNyArODE2LDcgQEAgY2xhc3MgSW5mQnVpbGREYXRhKE1vZHVsZUJ1aWxk Q2xhc3NPYmplY3QpOg0KPiAgICAgICAgICAgICAgUmV0VmFsW0FyY2gsIE1vZHVsZVR5cGVdID0g VGVtcG9yYXJ5RGljdGlvbmFyeVtBcmNoLCBNb2R1bGVUeXBlXQ0KPiAgICAgICAgICByZXR1cm4g UmV0VmFsDQo+IA0KPiAtICAgICMjIFJldHJpZXZlIGRlcGVkZW5jeSBleHByZXNzaW9uDQo+ICsg ICAgIyMgUmV0cmlldmUgZGVwZW5kZW5jeSBleHByZXNzaW9uDQo+ICAgICAgQGNhY2hlZF9wcm9w ZXJ0eQ0KPiAgICAgIGRlZiBEZXBleEV4cHJlc3Npb24oc2VsZik6DQo+ICAgICAgICAgIFJldFZh bCA9IHRkaWN0KEZhbHNlLCAyKQ0KPiBkaWZmIC0tZ2l0IGEvQmFzZVRvb2xzL1NvdXJjZS9QeXRo b24vV29ya3NwYWNlL01ldGFGaWxlUGFyc2VyLnB5IGIvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24v V29ya3NwYWNlL01ldGFGaWxlUGFyc2VyLnB5DQo+IGluZGV4IDMxMWQwZmFmMzguLmEzZTMyMTYy MjEgMTAwNjQ0DQo+IC0tLSBhL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1dvcmtzcGFjZS9NZXRh RmlsZVBhcnNlci5weQ0KPiArKysgYi9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9Xb3Jrc3BhY2Uv TWV0YUZpbGVQYXJzZXIucHkNCj4gQEAgLTQzOCw3ICs0MzgsNyBAQCBjbGFzcyBNZXRhRmlsZVBh cnNlcihvYmplY3QpOg0KPiAgICAgICAgICBTY29wZUtleSA9IHR1cGxlKFNjb3BlS2V5KQ0KPiAg ICAgICAgICAjDQo+ICAgICAgICAgICMgRGVjUGFyc2VyIFNlY3Rpb25UeXBlIGlzIGEgbGlzdCwg d2lsbCBjb250YWluIG1vcmUgdGhhbiBvbmUgaXRlbSBvbmx5IGluIFBjZCBTZWN0aW9uDQo+IC0g ICAgICAgICMgQXMgUGNkIHNlY3Rpb24gbWFjcm8gdXNhZ2UgaXMgbm90IGFsbGxvd2VkLCBzbyBo ZXJlIGl0IGlzIHNhZmUNCj4gKyAgICAgICAgIyBBcyBQY2Qgc2VjdGlvbiBtYWNybyB1c2FnZSBp cyBub3QgYWxsb3dlZCwgc28gaGVyZSBpdCBpcyBzYWZlDQo+ICAgICAgICAgICMNCj4gICAgICAg ICAgaWYgaXNpbnN0YW5jZShzZWxmLCBEZWNQYXJzZXIpOg0KPiAgICAgICAgICAgICAgU2VjdGlv bkRpY3RLZXkgPSBzZWxmLl9TZWN0aW9uVHlwZVswXSwgU2NvcGVLZXkNCj4gZGlmZiAtLWdpdCBh L0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1dvcmtzcGFjZS9Xb3Jrc3BhY2VDb21tb24ucHkgYi9C YXNlVG9vbHMvU291cmNlL1B5dGhvbi9Xb3Jrc3BhY2UvV29ya3NwYWNlQ29tbW9uLnB5DQo+IGlu ZGV4IGVlMjM4ZTUxNDMuLmI3OTI4MGJjMmUgMTAwNjQ0DQo+IC0tLSBhL0Jhc2VUb29scy9Tb3Vy Y2UvUHl0aG9uL1dvcmtzcGFjZS9Xb3Jrc3BhY2VDb21tb24ucHkNCj4gKysrIGIvQmFzZVRvb2xz L1NvdXJjZS9QeXRob24vV29ya3NwYWNlL1dvcmtzcGFjZUNvbW1vbi5weQ0KPiBAQCAtMjQ3LDcg KzI0Nyw3IEBAIGRlZiBHZXRNb2R1bGVMaWJJbnN0YW5jZXMoTW9kdWxlLCBQbGF0Zm9ybSwgQnVp bGREYXRhYmFzZSwgQXJjaCwgVGFyZ2V0LCBUb29sY2hhDQo+ICAgICAgICAgICAgICBTb3J0ZWRM aWJyYXJ5TGlzdC5hcHBlbmQoSXRlbSkNCj4gDQo+ICAgICAgIw0KPiAtICAgICMgQnVpbGQgdGhl IGxpc3Qgb2YgY29uc3RydWN0b3IgYW5kIGRlc3RydWN0aXIgbmFtZXMNCj4gKyAgICAjIEJ1aWxk IHRoZSBsaXN0IG9mIGNvbnN0cnVjdG9yIGFuZCBkZXN0cnVjdG9yIG5hbWVzDQo+ICAgICAgIyBU aGUgREFHIFRvcG8gc29ydCBwcm9kdWNlcyB0aGUgZGVzdHJ1Y3RvciBvcmRlciwgc28gdGhlIGxp c3Qgb2YgY29uc3RydWN0b3JzIG11c3QgZ2VuZXJhdGVkIGluIHRoZSByZXZlcnNlIG9yZGVyDQo+ ICAgICAgIw0KPiAgICAgIFNvcnRlZExpYnJhcnlMaXN0LnJldmVyc2UoKQ0KPiBkaWZmIC0tZ2l0 IGEvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vV29ya3NwYWNlL1dvcmtzcGFjZURhdGFiYXNlLnB5 IGIvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vV29ya3NwYWNlL1dvcmtzcGFjZURhdGFiYXNlLnB5 DQo+IGluZGV4IGE2YTI5MmQxNWMuLjkyMWEyMjlhMWMgMTAwNjQ0DQo+IC0tLSBhL0Jhc2VUb29s cy9Tb3VyY2UvUHl0aG9uL1dvcmtzcGFjZS9Xb3Jrc3BhY2VEYXRhYmFzZS5weQ0KPiArKysgYi9C YXNlVG9vbHMvU291cmNlL1B5dGhvbi9Xb3Jrc3BhY2UvV29ya3NwYWNlRGF0YWJhc2UucHkNCj4g QEAgLTM3LDcgKzM3LDcgQEAgZnJvbSBXb3Jrc3BhY2UuSW5mQnVpbGREYXRhIGltcG9ydCBJbmZC dWlsZERhdGENCj4gICMNCj4gICMgQHBhcmFtIERiUGF0aCAgICAgICAgICAgICBQYXRoIG9mIGRh dGFiYXNlIGZpbGUNCj4gICMgQHBhcmFtIEdsb2JhbE1hY3JvcyAgICAgICBHbG9iYWwgbWFjcm9z IHVzZWQgZm9yIHJlcGxhY2VtZW50IGR1cmluZyBmaWxlIHBhcnNpbmcNCj4gLSMgQHByYXJtIFJl bmV3RGI9RmFsc2UgICAgICBDcmVhdGUgbmV3IGRhdGFiYXNlIGZpbGUgaWYgaXQncyBhbHJlYWR5 IHRoZXJlDQo+ICsjIEBwYXJhbSBSZW5ld0RiPUZhbHNlICAgICAgQ3JlYXRlIG5ldyBkYXRhYmFz ZSBmaWxlIGlmIGl0J3MgYWxyZWFkeSB0aGVyZQ0KPiAgIw0KPiAgY2xhc3MgV29ya3NwYWNlRGF0 YWJhc2Uob2JqZWN0KToNCj4gDQo+IEBAIC04Miw3ICs4Miw3IEBAIGNsYXNzIFdvcmtzcGFjZURh dGFiYXNlKG9iamVjdCk6DQo+ICAgICAgICAgICAgICAgICAgQXJjaCA9IE5vbmUNCj4gICAgICAg ICAgICAgIHJldHVybiAoRmlsZVBhdGgsIEFyY2gpIGluIHNlbGYuX0NBQ0hFXw0KPiANCj4gLSAg ICAgICAgIyBrZXkgPSAoRmlsZVBhdGgsIEFyY2g9Tm9uZSwgVGFyZ2V0PU5vbmUsIFRvb2NoYWlu PU5vbmUpDQo+ICsgICAgICAgICMga2V5ID0gKEZpbGVQYXRoLCBBcmNoPU5vbmUsIFRhcmdldD1O b25lLCBUb29sY2hhaW49Tm9uZSkNCj4gICAgICAgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIEtl eSk6DQo+ICAgICAgICAgICAgICBGaWxlUGF0aCA9IEtleVswXQ0KPiAgICAgICAgICAgICAgS2V5 TGVuZ3RoID0gbGVuKEtleSkNCj4gQEAgLTEyMyw3ICsxMjMsNyBAQCBjbGFzcyBXb3Jrc3BhY2VE YXRhYmFzZShvYmplY3QpOg0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcmNo LA0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXRhRmlsZVN0b3JhZ2Uoc2Vs Zi5Xb3Jrc3BhY2VEYiwgRmlsZVBhdGgsIEZpbGVUeXBlKQ0KPiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICApDQo+IC0gICAgICAgICAgICAjIGFsd2FzeSBkbyBwb3N0LXByb2Nlc3Ms IGluIGNhc2Ugb2YgbWFjcm9zIGNoYW5nZQ0KPiArICAgICAgICAgICAgIyBhbHdheXMgZG8gcG9z dC1wcm9jZXNzLCBpbiBjYXNlIG9mIG1hY3JvcyBjaGFuZ2UNCj4gICAgICAgICAgICAgIE1ldGFG aWxlLkRvUG9zdFByb2Nlc3MoKQ0KPiAgICAgICAgICAgICAgIyBvYmplY3QgdGhlIGJ1aWxkIGlz IGJhc2VkIG9uDQo+ICAgICAgICAgICAgICBCdWlsZE9iamVjdCA9IHNlbGYuX0dFTkVSQVRPUl9b RmlsZVR5cGVdKA0KPiBAQCAtMTQ5LDcgKzE0OSw3IEBAIGNsYXNzIFdvcmtzcGFjZURhdGFiYXNl KG9iamVjdCk6DQo+ICAgICAgIw0KPiAgICAgICMgQHBhcmFtIERiUGF0aCAgICAgICAgICAgICBQ YXRoIG9mIGRhdGFiYXNlIGZpbGUNCj4gICAgICAjIEBwYXJhbSBHbG9iYWxNYWNyb3MgICAgICAg R2xvYmFsIG1hY3JvcyB1c2VkIGZvciByZXBsYWNlbWVudCBkdXJpbmcgZmlsZSBwYXJzaW5nDQo+ IC0gICAgIyBAcHJhcm0gUmVuZXdEYj1GYWxzZSAgICAgIENyZWF0ZSBuZXcgZGF0YWJhc2UgZmls ZSBpZiBpdCdzIGFscmVhZHkgdGhlcmUNCj4gKyAgICAjIEBwYXJhbSBSZW5ld0RiPUZhbHNlICAg ICAgQ3JlYXRlIG5ldyBkYXRhYmFzZSBmaWxlIGlmIGl0J3MgYWxyZWFkeSB0aGVyZQ0KPiAgICAg ICMNCj4gICAgICBkZWYgX19pbml0X18oc2VsZik6DQo+ICAgICAgICAgIHNlbGYuREIgPSBkaWN0 KCkNCj4gZGlmZiAtLWdpdCBhL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL2J1aWxkL2J1aWxkLnB5 IGIvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vYnVpbGQvYnVpbGQucHkNCj4gaW5kZXggY2RlYTMx Mjg2NC4uOTllNzlkNGRjYSAxMDA2NDQNCj4gLS0tIGEvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24v YnVpbGQvYnVpbGQucHkNCj4gKysrIGIvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vYnVpbGQvYnVp bGQucHkNCj4gQEAgLTQ4OCw3ICs0ODgsNyBAQCBjbGFzcyBCdWlsZFRhc2s6DQo+ICAgICAgICAg ICAgICAgICAgdGltZS5zbGVlcCgwLjEpDQo+ICAgICAgICAgIGV4Y2VwdCBCYXNlRXhjZXB0aW9u IGFzIFg6DQo+ICAgICAgICAgICAgICAjDQo+IC0gICAgICAgICAgICAjIFRSSUNLOiBoaWRlIHRo ZSBvdXRwdXQgb2YgdGhyZWFkcyBsZWZ0IHJ1bmluZywgc28gdGhhdCB0aGUgdXNlciBjYW4NCj4g KyAgICAgICAgICAgICMgVFJJQ0s6IGhpZGUgdGhlIG91dHB1dCBvZiB0aHJlYWRzIGxlZnQgcnVu bmluZywgc28gdGhhdCB0aGUgdXNlciBjYW4NCj4gICAgICAgICAgICAgICMgICAgICAgIGNhdGNo IHRoZSBlcnJvciBtZXNzYWdlIGVhc2lseQ0KPiAgICAgICAgICAgICAgIw0KPiAgICAgICAgICAg ICAgRWRrTG9nZ2VyLlNldExldmVsKEVka0xvZ2dlci5FUlJPUikNCj4gQEAgLTYxMyw3ICs2MTMs NyBAQCBjbGFzcyBCdWlsZFRhc2s6DQo+ICAgICAgICAgICAgICBzZWxmLkNvbXBsZXRlRmxhZyA9 IFRydWUNCj4gICAgICAgICAgZXhjZXB0Og0KPiAgICAgICAgICAgICAgIw0KPiAtICAgICAgICAg ICAgIyBUUklDSzogaGlkZSB0aGUgb3V0cHV0IG9mIHRocmVhZHMgbGVmdCBydW5pbmcsIHNvIHRo YXQgdGhlIHVzZXIgY2FuDQo+ICsgICAgICAgICAgICAjIFRSSUNLOiBoaWRlIHRoZSBvdXRwdXQg b2YgdGhyZWFkcyBsZWZ0IHJ1bm5pbmcsIHNvIHRoYXQgdGhlIHVzZXIgY2FuDQo+ICAgICAgICAg ICAgICAjICAgICAgICBjYXRjaCB0aGUgZXJyb3IgbWVzc2FnZSBlYXNpbHkNCj4gICAgICAgICAg ICAgICMNCj4gICAgICAgICAgICAgIGlmIG5vdCBCdWlsZFRhc2suX0Vycm9yRmxhZy5pc1NldCgp Og0KPiBAQCAtMTM4MCw3ICsxMzgwLDcgQEAgY2xhc3MgQnVpbGQoKToNCj4gICAgICAgICAgICAg ICAgICBMYXVuY2hDb21tYW5kKFsiR2VuRnciLCAiLS1hZGRyZXNzIiwgc3RyKEJhc2VBZGRyZXNz KSwgIi1yIiwgTW9kdWxlT3V0cHV0SW1hZ2VdLCBNb2R1bGVJbmZvLk91dHB1dERpcikNCj4gICAg ICAgICAgICAgICAgICBMYXVuY2hDb21tYW5kKFsiR2VuRnciLCAiLS1hZGRyZXNzIiwgc3RyKEJh c2VBZGRyZXNzKSwgIi1yIiwgTW9kdWxlRGVidWdJbWFnZV0sIE1vZHVsZUluZm8uRGVidWdEaXIp DQo+ICAgICAgICAgICAgICAjDQo+IC0gICAgICAgICAgICAjIENvbGxlY3QgZnVudGlvbiBhZGRy ZXNzIGZyb20gTWFwIGZpbGUNCj4gKyAgICAgICAgICAgICMgQ29sbGVjdCBmdW5jdGlvbiBhZGRy ZXNzIGZyb20gTWFwIGZpbGUNCj4gICAgICAgICAgICAgICMNCj4gICAgICAgICAgICAgIEltYWdl TWFwVGFibGUgPSBNb2R1bGVPdXRwdXRJbWFnZS5yZXBsYWNlKCcuZWZpJywgJy5tYXAnKQ0KPiAg ICAgICAgICAgICAgRnVuY3Rpb25MaXN0ID0gW10NCj4gQEAgLTE0MzMsNyArMTQzMyw3IEBAIGNs YXNzIEJ1aWxkKCk6DQo+ICAgICAgICAgICAgICAjDQo+ICAgICAgICAgICAgICBNYXBCdWZmZXIu YXBwZW5kKCcoSU1BR0U9JXMpXG5cbicgJSAoTW9kdWxlRGVidWdJbWFnZSkpDQo+ICAgICAgICAg ICAgICAjDQo+IC0gICAgICAgICAgICAjIEFkZCBmdW50aW9uIGFkZHJlc3MNCj4gKyAgICAgICAg ICAgICMgQWRkIGZ1bmN0aW9uIGFkZHJlc3MNCj4gICAgICAgICAgICAgICMNCj4gICAgICAgICAg ICAgIGZvciBGdW5jdGlvbiBpbiBGdW5jdGlvbkxpc3Q6DQo+ICAgICAgICAgICAgICAgICAgaWYg QWRkcklzT2Zmc2V0Og0KPiBkaWZmIC0tZ2l0IGEvQmFzZVRvb2xzL1Rlc3RzL1RpYW5vQ29tcHJl c3MucHkgYi9CYXNlVG9vbHMvVGVzdHMvVGlhbm9Db21wcmVzcy5weQ0KPiBpbmRleCBmNmE0YTZh ZTljLi4xYmU1NTE4OGQ2IDEwMDY0NA0KPiAtLS0gYS9CYXNlVG9vbHMvVGVzdHMvVGlhbm9Db21w cmVzcy5weQ0KPiArKysgYi9CYXNlVG9vbHMvVGVzdHMvVGlhbm9Db21wcmVzcy5weQ0KPiBAQCAt NTcsNyArNTcsNyBAQCBjbGFzcyBUZXN0cyhUZXN0VG9vbHMuQmFzZVRvb2xzVGVzdCk6DQo+ICAg ICAgICAgICAgICBwcmludCgnT3JpZ2luYWwgZGF0YSBkaWQgbm90IG1hdGNoIGRlY29tcHJlc3Mo Y29tcHJlc3MoZGF0YSkpJykNCj4gICAgICAgICAgICAgIHNlbGYuRGlzcGxheUJpbmFyeURhdGEo J29yaWdpbmFsIGRhdGEnLCBzdGFydCkNCj4gICAgICAgICAgICAgIHNlbGYuRGlzcGxheUJpbmFy eURhdGEoJ2FmdGVyIGNvbXByZXNzaW9uJywgc2VsZi5SZWFkVG1wRmlsZSgnb3V0cHV0MScpKQ0K PiAtICAgICAgICAgICAgc2VsZi5EaXNwbGF5QmluYXJ5RGF0YSgnYWZ0ZXIgZGVjb21yZXNzaW9u JywgZmluaXNoKQ0KPiArICAgICAgICAgICAgc2VsZi5EaXNwbGF5QmluYXJ5RGF0YSgnYWZ0ZXIg ZGVjb21wcmVzc2lvbicsIGZpbmlzaCkNCj4gICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHN0YXJ0 RXF1YWxzRmluaXNoKQ0KPiANCj4gICAgICBkZWYgdGVzdFJhbmRvbURhdGFDeWNsZXMoc2VsZik6 DQo+IGRpZmYgLS1naXQgYS9CYXNlVG9vbHMvVXNlck1hbnVhbHMvR2VuRmRzX1V0aWxpdHlfTWFu X1BhZ2UucnRmIGIvQmFzZVRvb2xzL1VzZXJNYW51YWxzL0dlbkZkc19VdGlsaXR5X01hbl9QYWdl LnJ0Zg0KPiBpbmRleCA1ODdmNmZiNWI2Li45MTkyYmI2OTllIDEwMDY0NA0KPiAtLS0gYS9CYXNl VG9vbHMvVXNlck1hbnVhbHMvR2VuRmRzX1V0aWxpdHlfTWFuX1BhZ2UucnRmDQo+ICsrKyBiL0Jh c2VUb29scy9Vc2VyTWFudWFscy9HZW5GZHNfVXRpbGl0eV9NYW5fUGFnZS5ydGYNCj4gQEAgLTE1 OSw3ICsxNTksNyBAQCBvb2wgd2lsbCBnZW5lcmF0ZSBhIEZWIGRpcmVjdG9yeSB3aGljaCBpbmNs dWRlcyBhIEZGUyBkaXJlY3RvcnksIEZ2IGZpbGUsIEZ2IElOZg0KPiAgXGFmNDFcYWZzMTggXGx0 cmNoXGZjczAgXGZzMThcY2YxXGluc3JzaWQxMzI1MjEyMyBcaGljaFxhZjQxXGRiY2hcYWYxM1xs b2NoXGY0MSBkZXNjcmliZWQgfXtccnRsY2hcZmNzMSBcYWY0MVxhZnMxOCBcbHRyY2hcZmNzMA0K PiBcZnMxOFxjZjFcaW5zcnNpZDU1MTMzMjEgXGhpY2hcYWY0MVxkYmNoXGFmMTNcbG9jaFxmNDEg aW4gdGhlIEZERiBmaWxlIH17XHJ0bGNoXGZjczEgXGFmNDFcYWZzMTggXGx0cmNoXGZjczANCj4g IFxmczE4XGNmMVxpbnNyc2lkMTMyNTIxMjMgXGhpY2hcYWY0MVxkYmNoXGFmMTNcbG9jaFxmNDEg c3VjaCBhcyB9e1xydGxjaFxmY3MxIFxhZjQxXGFmczE4IFxsdHJjaFxmY3MwIFxmczE4XGNmMVxp bnNyc2lkNTUxMzMyMQ0KPiBcaGljaFxhZjQxXGRiY2hcYWYxM1xsb2NoXGY0MSB0aGUgXGhpY2hc ZjQxIFxscXVvdGUgXGxvY2hcZjQxIEluZkZJbGVcaGljaFxmNDEgXHJxdW90ZSBcbG9jaFxmNDEN Cj4gICBzdGF0ZW1lbnQgZm9ybWF0ICB0aGUgR2VuRmRzIHRvb2wgfXtccnRsY2hcZmNzMSBcYWY0 MVxhZnMxOCBcbHRyY2hcZmNzMCBcZnMxOFxjZjFcaW5zcnNpZDEzMjUyMTIzIFxoaWNoXGFmNDFc ZGJjaFxhZjEzXGxvY2hcZjQxIHdpbGwNCj4gZGV0ZXJtaW5nIHRoZSB9e1xydGxjaFxmY3MxIFxh ZjQxXGFmczE4IFxsdHJjaFxmY3MwIFxmczE4XGNmMVxpbnNyc2lkNTUxMzMyMSBcaGljaFxhZjQx XGRiY2hcYWYxM1xsb2NoXGY0MSBcaGljaFxmNDENCj4gLSBpbnB1dCBmaWxlcyBmcm9tIHRoZSBw YXRoIG9mICBcJzkzXGxvY2hcZjQxICAkKG91dHB1dERpcilcXCAkKEFyY2gpIFxcICQoQWN0aXZl UGxhdGZyb21OYW1lKSBcXCQoTW9kdWxlTmFtZSkgXFwkKE1vZHVsZU5hbWUpDQo+IFxcREVCVUcN Cj4gKyBpbnB1dCBmaWxlcyBmcm9tIHRoZSBwYXRoIG9mICBcJzkzXGxvY2hcZjQxICAkKG91dHB1 dERpcilcXCAkKEFyY2gpIFxcICQoQWN0aXZlUGxhdGZvcm1OYW1lKSBcXCQoTW9kdWxlTmFtZSkg XFwkKE1vZHVsZU5hbWUpDQo+IFxcREVCVUcNCj4gIFxwYXIgfVxwYXJkIFxsdHJwYXJccWwgXGZp LTM2MFxsaTQyMFxyaTBcc2IyMDBcbm93aWRjdGxwYXJcdHg0MjBcd3JhcGRlZmF1bHRcZmFhdXRv XHJpbjBcbGluNDIwXGl0YXAwIHtccnRsY2hcZmNzMSBcYWY0MVxhZnMxOA0KPiBcbHRyY2hcZmNz MCBcZnMxOFxjZjFcaW5zcnNpZDU1MTMzMjEgXGhpY2hcYWY0MVxkYmNoXGFmMTNcbG9jaFxmNDEg MS5cdGFiIElmIEFyY2ggbGlzdCB3YXMgfXtccnRsY2hcZmNzMSBcYWY0MVxhZnMxOCBcbHRyY2hc ZmNzMA0KPiAgXGZzMThcY2YxXGluc3JzaWQxMzI1MjEyMyBcaGljaFxhZjQxXGRiY2hcYWYxM1xs b2NoXGY0MSBzcGVjaWZpZWR9e1xydGxjaFxmY3MxIFxhZjQxXGFmczE4IFxsdHJjaFxmY3MwIFxm czE4XGNmMVxpbnNyc2lkNTUxMzMyMQ0KPiBcaGljaFxhZjQxXGRiY2hcYWYxM1xsb2NoXGY0MSAs IH17XHJ0bGNoXGZjczEgXGFmNDFcYWZzMTggXGx0cmNoXGZjczAgXGZzMThcY2YxXGluc3JzaWQx MzI1MjEyMyBcaGljaFxhZjQxXGRiY2hcYWYxM1xsb2NoXGY0MQ0KPiAgdGhlIH17XHJ0bGNoXGZj czEgXGFmNDFcYWZzMTggXGx0cmNoXGZjczAgXGZzMThcY2YxXGluc3JzaWQ1NTEzMzIxIFxoaWNo XGFmNDFcZGJjaFxhZjEzXGxvY2hcZjQxIEdlbkZkcyB0b29sIHdpbGwgdXNlIHRoaXMgQXJjaCBp bnN0ZWFkDQo+IG9mIEFyY2ggTGlzdCBpbiBUYXJnZXQudHh0IGZpbGUNCj4gQEAgLTI1OCwxMSAr MjU4LDExIEBAIEFSQ0hTIGlzIGEgY29tbWEgc2VwYXJhdGVkIChubyBzcGFjZSkgbGlzdCBjb250 YWluaW5nIG9uZSBvciBtb3JlIG9mOiBJQTMyLCBYNjQsDQo+ICBcZnMyNFxsYW5nMTAzM1xsYW5n ZmUxMDMzXGxvY2hcYWY0MVxoaWNoXGFmNDFcZGJjaFxhZjEzXGNncmlkXGxhbmducDEwMzNcbGFu Z2ZlbnAxMDMzIHtccnRsY2hcZmNzMSBcYWJcYWY0MVxhZnMyOCBcbHRyY2hcZmNzMA0KPiBcYlxm czI4XGNmMTdcaW5zcnNpZDU1MTMzMjEge1wqXGJrbWtlbmQgT0xFX0xJTkszfXtcKlxia21rZW5k IE9MRV9MSU5LNH17XCpcYmtta2VuZCBPTEVfTElOSzV9XGhpY2hcYWY0MVxkYmNoXGFmMTNcbG9j aFxmNDENCj4gIEV4YW1wbGUNCj4gIFxwYXIgfVxwYXJkXHBsYWluIFxsdHJwYXJccWwgXGxpNjBc cmkwXHNiMjAwXG5vd2lkY3RscGFyXHdyYXBkZWZhdWx0XGZhYXV0b1xyaW4wXGxpbjYwXGl0YXAw IFxydGxjaFxmY3MxIFxhZjBcYWZzMjRcYWxhbmcxMDI1DQo+IFxsdHJjaFxmY3MwIFxmczI0XGxh bmcxMDMzXGxhbmdmZTEwMzNcbG9jaFxhZjQxXGhpY2hcYWY0MVxkYmNoXGFmMTNcY2dyaWRcbGFu Z25wMTAzM1xsYW5nZmVucDEwMzMge1xydGxjaFxmY3MxIFxhZjQxXGFmczE4DQo+IC1cbHRyY2hc ZmNzMCBcZnMxOFxjZjFcaW5zcnNpZDU1MTMzMjEgXGhpY2hcYWY0MVxkYmNoXGFmMTNcbG9jaFxm NDEgMS4gV09SS1NBUENFIGhhcyBhbHJlYWR5IHNldC4gJChXT1JLU1BBQ0UpID0NCj4gYzpcXHdv cmtcXFxoaWNoXGFmNDFcZGJjaFxhZjEzXGxvY2hcZjQxIEVka0lJLiBUaGUgRmRmIGZpbGUgaXMg aW4gYzpcXHdvcmtcXEVka0lJXFxOdDMycGtnXFxOdDMycGtnLmZkZi4gT3V0cHV0IGRpcmVjdG9y eSBpcw0KPiBjOlxcd29ya1xcRWRrSUlcXA0KPiArXGx0cmNoXGZjczAgXGZzMThcY2YxXGluc3Jz aWQ1NTEzMzIxIFxoaWNoXGFmNDFcZGJjaFxhZjEzXGxvY2hcZjQxIDEuIFdPUktTUEFDRSBoYXMg YWxyZWFkeSBzZXQuICQoV09SS1NQQUNFKSA9DQo+IGM6XFx3b3JrXFxcaGljaFxhZjQxXGRiY2hc YWYxM1xsb2NoXGY0MSBFZGtJSS4gVGhlIEZkZiBmaWxlIGlzIGluIGM6XFx3b3JrXFxFZGtJSVxc TnQzMnBrZ1xcTnQzMnBrZy5mZGYuIE91dHB1dCBkaXJlY3RvcnkgaXMNCj4gYzpcXHdvcmtcXEVk a0lJXFwNCj4gIEJ1aWxkXFxOdDMyXFxEZWJ1Z19NeVRvb2xzLiAgQWN0aXZlUGxhdGZvcm0gaXMg QzpcXHdvcmtcXEVka0lJXFxOdDMyUGtnXFxOdDMyUGtnLmRzYw0KPiAgXHBhciBcaGljaFxhZjQx XGRiY2hcYWYxM1xsb2NoXGY0MSBHZW5GZHMgXGhpY2hcZjQxIFxlbmRhc2ggXGxvY2hcZjQxIGYg YzpcXHdvcmtcXEVka0lJXFxOdDMycGtnXFxOdDMycGtnLmZkZiBcaGljaFxmNDEgXGVuZGFzaA0K PiBcbG9jaFxmNDEgbyBjOlxcd29ya1xcRWRrSUlcXEJ1aWxkXFxOdDMyXFxEZWJ1Z19NeVRvXGhp Y2hcYWY0MVxkYmNoXGFmMTNcbG9jaFxmNDEgb2xzIFxoaWNoXGY0MSBcZW5kYXNoIFxsb2NoXGY0 MSBwIGM6XFx3b3JrXFxFZGtJSQ0KPiAgXFxOdDMycGtnXFxOdDMyUGtnLmRzYw0KPiAtXHBhciBc aGljaFxhZjQxXGRiY2hcYWYxM1xsb2NoXGY0MSBHZW5GZHMgXGhpY2hcZjQxIFxlbmRhc2ggXGxv Y2hcZjQxIGYgJChXT1JLU1BBQ0UpXFxOdDMyUGtnXFxOdDMyUGtnLmZkZiBcaGljaFxmNDEgXGVu ZGFzaA0KPiBcbG9jaFxmNDEgbyAkKFdPUlNQQUNFKVxcQnVpbGRcXE50MzJcXERlYnVnX015VG9v bHMgXGhpY2hcZjQxIFxlbmRhc2ggXGxvY2hcZjQxIHAgJChXT1JLU0FQQ0UpXFxOdDMyUGtnXFxO dDMyUGtnLmRzYw0KPiArXHBhciBcaGljaFxhZjQxXGRiY2hcYWYxM1xsb2NoXGY0MSBHZW5GZHMg XGhpY2hcZjQxIFxlbmRhc2ggXGxvY2hcZjQxIGYgJChXT1JLU1BBQ0UpXFxOdDMyUGtnXFxOdDMy UGtnLmZkZiBcaGljaFxmNDEgXGVuZGFzaA0KPiBcbG9jaFxmNDEgbyAkKFdPUlNQQUNFKVxcQnVp bGRcXE50MzJcXERlYnVnX015VG9vbHMgXGhpY2hcZjQxIFxlbmRhc2ggXGxvY2hcZjQxIHAgJChX T1JLU1BBQ0UpXFxOdDMyUGtnXFxOdDMyUGtnLmRzYw0KPiAgXHBhcg0KPiAgXHBhciBcaGljaFxh ZjQxXGRiY2hcYWYxM1xsb2NoXGY0MSBHZW5GZHMgXGhpY2hcZjQxIFxlbmRhc2ggXGxvY2hcZjQx IGYgTnQzMlBrZ1xcTnQzMlBrZy5mZGYgXGhpY2hcZjQxIFxlbmRhc2ggXGxvY2hcZjQxIG8NCj4g QnVpbGRcXE50MzJcXERlYnVnX015VG9vbHMgXGhpY2hcZjQxIFxlbmRhc2ggXGxvY2hcZjQxIHAg TnQzMlBrZ1xcTnQzMlBrZy5kc2MNCj4gIFxwYXIgXGhpY2hcYWY0MVxkYmNoXGFmMTNcbG9jaFxm NDEgMi4gR2VuZXJhdGUgb25caGljaFxhZjQxXGRiY2hcYWYxM1xsb2NoXGY0MSBlIEZEIHdoaWNo IGlzIGRlZmluZWQgaW4gRkRGIGZpbGUuIFVzZSBcaGljaFxmNDENCj4gXGxxdW90ZSBcbG9jaFxm NDEgLXJcaGljaFxmNDEgXHJxdW90ZSBcbG9jaFxmNDENCj4gZGlmZiAtLWdpdCBhL0Jhc2VUb29s cy9Vc2VyTWFudWFscy9HZW5Gd19VdGlsaXR5X01hbl9QYWdlLnJ0ZiBiL0Jhc2VUb29scy9Vc2Vy TWFudWFscy9HZW5Gd19VdGlsaXR5X01hbl9QYWdlLnJ0Zg0KPiBpbmRleCA0MDkzYmFiYTdhLi5m NDIzNWI3N2ZiIDEwMDY0NA0KPiAtLS0gYS9CYXNlVG9vbHMvVXNlck1hbnVhbHMvR2VuRndfVXRp bGl0eV9NYW5fUGFnZS5ydGYNCj4gKysrIGIvQmFzZVRvb2xzL1VzZXJNYW51YWxzL0dlbkZ3X1V0 aWxpdHlfTWFuX1BhZ2UucnRmDQo+IEBAIC0xMTEsNyArMTExLDcgQEAgdGFtcC4gSXQgY2FuIGFs c28gZXh0cmFjdCBQRTMyIGltYWdlIGRhdGEgdG8gY3JlYXRlIGJpbiBmaWxlLCBleHRyYWN0IFBF MzIgaW1hZ2UNCj4gIFxhYlxhZjQzXGFmczE4IFxsdHJjaFxmY3MwIFxiXGZzMThcY2YxXGluc3Jz aWQ0ODE1Nzk1DQo+ICBccGFyIH17XHJ0bGNoXGZjczEgXGFiXGFmNDNcYWZzMTggXGx0cmNoXGZj czAgXGJcZnMxOFxjZjFcaW5zcnNpZDg0NTkzMzkgXGhpY2hcYWY0M1xkYmNoXGFmMzE1MDVcbG9j aFxmNDMgRmlsZW5hbWUxIFtGaWxlbmFtZU5dDQo+ICBccGFyIH1ccGFyZCBcbHRycGFyXHFsIFxs aTM2MFxyaTBcc2IyMDBcbm93aWRjdGxwYXJcd3JhcGRlZmF1bHRcZmFhdXRvXHJpbjBcbGluMzYw XGl0YXAwIHtccnRsY2hcZmNzMSBcYWY0M1xhZnMxOCBcbHRyY2hcZmNzMA0KPiBcZnMxOFxjZjFc aW5zcnNpZDg0NTkzMzkgXGhpY2hcYWY0M1xkYmNoXGFmMzE1MDVcbG9jaFxmNDMNCj4gLUlucHV0 IFBFL1BFMzIrIGltYWdlLCBvciBURSBpbWFnZSwgb3IgTWljcm9Db2RlIFR4dCBmaWxlLCBvciBN aWNyb0NvZGUgYmluIGZpbGUsIG9yIGhpaSBiaW5hcnkgcGFrY2FnZXMuDQo+ICtJbnB1dCBQRS9Q RTMyKyBpbWFnZSwgb3IgVEUgaW1hZ2UsIG9yIE1pY3JvQ29kZSBUeHQgZmlsZSwgb3IgTWljcm9D b2RlIGJpbiBmaWxlLCBvciBoaWkgYmluYXJ5IHBhY2thZ2VzLg0KPiAgXHBhciB9XHBhcmQgXGx0 cnBhclxxbCBcbGkwXHJpMFxzYjIwMFxub3dpZGN0bHBhclx3cmFwZGVmYXVsdFxmYWF1dG9ccmlu MFxsaW4wXGl0YXAwIHtccnRsY2hcZmNzMSBcYWJcYWY0M1xhZnMxOCBcbHRyY2hcZmNzMA0KPiBc YlxmczE4XGNmMVxpbnNyc2lkODQ1OTMzOSBcaGljaFxhZjQzXGRiY2hcYWYzMTUwNVxsb2NoXGY0 MyAtbyBGaWxlTmFtZSwgLS1vdXRwdXRmaWxlIEZpbGVOYW1lDQo+ICBccGFyIH1ccGFyZCBcbHRy cGFyXHFsIFxsaTM2MFxyaTBcc2IyMDBcbm93aWRjdGxwYXJcd3JhcGRlZmF1bHRcZmFhdXRvXHJp bjBcbGluMzYwXGl0YXAwIHtccnRsY2hcZmNzMSBcYWY0M1xhZnMxOCBcbHRyY2hcZmNzMA0KPiBc ZnMxOFxjZjFcaW5zcnNpZDg0NTkzMzkgXGhpY2hcYWY0M1xkYmNoXGFmMzE1MDVcbG9jaFxmNDMN Cj4gIFRoZSBFRkkgaW1hZ2UsIFRlSW1hZ2UsIEFjcGlJbWFnZSwgTWljcm9CaW4sIGhpaSBwYWNr YWdlIGxpc3RzIGZpbGUgb3Igb3RoZXIgbW9kaWZpZWQgUEUgaW1hZ2VcaGljaFxhZjQzXGRiY2hc YWYzMTUwNVxsb2NoXGY0MyAgd2lsbCBiZQ0KPiBjcmVhdGVkLg0KPiBkaWZmIC0tZ2l0IGEvQmFz ZVRvb2xzL2J1aWxkaW5nLWdjYy50eHQgYi9CYXNlVG9vbHMvYnVpbGRpbmctZ2NjLnR4dA0KPiBp bmRleCAyYjJjZmY2MDU4Li4xM2I1Mzk1Zjk5IDEwMDY0NA0KPiAtLS0gYS9CYXNlVG9vbHMvYnVp bGRpbmctZ2NjLnR4dA0KPiArKysgYi9CYXNlVG9vbHMvYnVpbGRpbmctZ2NjLnR4dA0KPiBAQCAt OCw4ICs4LDggQEAgZmluZCBzY3JpcHRzIHRvIGhlbHAgYXV0b21hdGUgdGhlIGJ1aWxkIHByb2Nl c3MuKQ0KPiAgSWYgeW91IGRvIG5vdCBoYXZlIGEgdGlhbm9jb3JlLm9yZyBhY2NvdW50LCB5b3Ug Y2FuIG1ha2UgdXNlIG9mIHRoZSAnZ3Vlc3QnDQo+ICBhY2NvdW50IHdpdGggYW4gZW1wdHkgcGFz c3dvcmQuDQo+IA0KPiAtSW4gYSB3ZWIgYnJvd3NlciwgeW91IGNhbiAnYnJvd3NlJyB0aGUgcmVs YXZlbnQgc291cmNlIGF0IHRoaXMgbG9jYXRpb246DQo+ICtJbiBhIHdlYiBicm93c2VyLCB5b3Ug Y2FuICdicm93c2UnIHRoZSByZWxldmFudCBzb3VyY2UgYXQgdGhpcyBsb2NhdGlvbjoNCj4gICBo dHRwOi8vc291cmNlZm9yZ2UubmV0L3AvZWRrMi1idWlsZHRvb2xzL2NvZGUvSEVBRC90cmVlL3Ry dW5rL0Jhc2VUb29scy9nY2MNCj4gDQo+IC1Pciwgd2l0aCBzdWJ2ZXJzaW9uLCB5b3UgY2FuIGRv d25sb2FkIHRoZSByZWxhdmVudCBzb3VyY2Ugd2l0aCB0aGlzIGNvbW1hbmQ6DQo+ICtPciwgd2l0 aCBzdWJ2ZXJzaW9uLCB5b3UgY2FuIGRvd25sb2FkIHRoZSByZWxldmFudCBzb3VyY2Ugd2l0aCB0 aGlzIGNvbW1hbmQ6DQo+ICAgc3ZuIGNvIGh0dHBzOi8vc3ZuLmNvZGUuc2YubmV0L3AvZWRrMi1i dWlsZHRvb2xzL2NvZGUvdHJ1bmsvQmFzZVRvb2xzL2djYw0KPiBkaWZmIC0tZ2l0IGEvQmFzZVRv b2xzL2djYy9taW5ndy1nY2MtYnVpbGQucHkgYi9CYXNlVG9vbHMvZ2NjL21pbmd3LWdjYy1idWls ZC5weQ0KPiBpbmRleCAwNWZkYjA5MzJiLi45Mjc3OGQxZmNiIDEwMDc1NQ0KPiAtLS0gYS9CYXNl VG9vbHMvZ2NjL21pbmd3LWdjYy1idWlsZC5weQ0KPiArKysgYi9CYXNlVG9vbHMvZ2NjL21pbmd3 LWdjYy1idWlsZC5weQ0KPiBAQCAtNTU0LDcgKzU1NCw3IEBAIGNsYXNzIEFwcDoNCj4gICAgICAg ICAgaWYgcmVzdWx0Og0KPiAgICAgICAgICAgICAgcHJpbnQoJ0FsbCBmaWxlcyBoYXZlIGJlZW4g ZG93bmxvYWRlZCAmIHZlcmlmaWVkJykNCj4gICAgICAgICAgZWxzZToNCj4gLSAgICAgICAgICAg IHByaW50KCdBbiBlcnJvciBvY2N1cmVkIHdoaWxlIGRvd25sb2FkaW5nIGEgZmlsZScpDQo+ICsg ICAgICAgICAgICBwcmludCgnQW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgZG93bmxvYWRpbmcgYSBm aWxlJykNCj4gICAgICAgICAgICAgIHJldHVybg0KPiANCj4gICAgICAgICAgRXh0cmFjdGVyKHNv dXJjZXMsIGNvbmZpZykuRXh0cmFjdEFsbCgpDQo+IGRpZmYgLS1naXQgYS9CYXNlVG9vbHMvdG9v bHNldHVwLmJhdCBiL0Jhc2VUb29scy90b29sc2V0dXAuYmF0DQo+IGluZGV4IDZmZTYzZTRiYWEu LjU2MjliYmFhNDEgMTAwNzU1DQo+IC0tLSBhL0Jhc2VUb29scy90b29sc2V0dXAuYmF0DQo+ICsr KyBiL0Jhc2VUb29scy90b29sc2V0dXAuYmF0DQo+IEBAIC0yNzAsNyArMjcwLDcgQEAgZ290byBj aGVja19idWlsZF9lbnZpcm9ubWVudA0KPiANCj4gIDpjaGVja19jX3Rvb2xzDQo+ICAgIGVjaG8u DQo+IC0gIGVjaG8gISEhIEVSUk9SICEhISBCaW5hcnkgQyB0b29scyBhcmUgbWlzc2luZy4gVGhl eSBhcmUgcmVxdXJpZWQgdG8gYmUgYnVpbHQgZnJvbSBCYXNlVG9vbHMgU291cmNlLg0KPiArICBl Y2hvICEhISBFUlJPUiAhISEgQmluYXJ5IEMgdG9vbHMgYXJlIG1pc3NpbmcuIFRoZXkgYXJlIHJl cXVpcmVkIHRvIGJlIGJ1aWx0IGZyb20gQmFzZVRvb2xzIFNvdXJjZS4NCj4gICAgZWNoby4NCj4g DQo+ICA6Y2hlY2tfYnVpbGRfZW52aXJvbm1lbnQNCj4gZGlmZiAtLWdpdCBhL0J1aWxkTm90ZXMy LnR4dCBiL0J1aWxkTm90ZXMyLnR4dA0KPiBpbmRleCA0NTUyMDUzNmEyLi44YmY0ZjY5MzBhIDEw MDY0NA0KPiAtLS0gYS9CdWlsZE5vdGVzMi50eHQNCj4gKysrIGIvQnVpbGROb3RlczIudHh0DQo+ IEBAIC0xMzgsNyArMTM4LDcgQEAgVG9vbHMgaW4gUHl0aG9uDQo+ICAgICAgICAgIjxweXRob25f c291cmNlX2Rpcj4vYnVpbGQvYnVpbGQucHkiIGRpcmVjdGx5Lg0KPiANCj4gICogQ29udmVydCBQ eXRob24gc291cmNlIHRvIGV4ZSBmaWxlDQo+IC0gIFRoZSB0b29scyB3cml0dGVuIGluIFB5dGhv biBjYW4gYmUgY292ZXJ0ZWQgaW50byBleGVjdXRhYmxlIHByb2dyYW0gd2hpY2ggY2FuDQo+ICsg IFRoZSB0b29scyB3cml0dGVuIGluIFB5dGhvbiBjYW4gYmUgY29udmVydGVkIGludG8gZXhlY3V0 YWJsZSBwcm9ncmFtIHdoaWNoIGNhbg0KPiAgICBiZSBleGVjdXRlZCB3aXRob3V0IFB5dGhvbiBp bnRlcnByZXRlci4gT25lIG9mIHRoZSBjb252ZXJzaW9uIHRvb2xzIGlzIGNhbGxlZA0KPiAgICBj eF9GcmVlemUsIGF2YWlsYWJsZSBhdDoNCj4gDQo+IGRpZmYgLS1naXQgYS9Db250cmlidXRpb25z LnR4dCBiL0NvbnRyaWJ1dGlvbnMudHh0DQo+IGluZGV4IGYzNDYyNjkxMmEuLjE0NTQ3ZWJkYjcg MTAwNjQ0DQo+IC0tLSBhL0NvbnRyaWJ1dGlvbnMudHh0DQo+ICsrKyBiL0NvbnRyaWJ1dGlvbnMu dHh0DQo+IEBAIC0xNDQsNyArMTQ0LDcgQEAgdGl0bGUsIGFuZCBpbnRlcmVzdCBpbiBhbmQgdG8g WW91ciBDb250cmlidXRpb25zLg0KPiAgICBvZiBzdWNoIGVudGl0eS4NCj4gICogIkNvbnRyaWJ1 dGlvbiIgc2hhbGwgbWVhbiBhbnkgb3JpZ2luYWwgd29yayBvZiBhdXRob3JzaGlwLA0KPiAgICBp bmNsdWRpbmcgYW55IG1vZGlmaWNhdGlvbnMgb3IgYWRkaXRpb25zIHRvIGFuIGV4aXN0aW5nIHdv cmssDQo+IC0gIHRoYXQgaXMgaW50ZW50aW9uYWxseSBzdWJtaXR0ZWQgYnkgWW91IHRvIHRoZSBU aW5hb0NvcmUgc2l0ZSBmb3INCj4gKyAgdGhhdCBpcyBpbnRlbnRpb25hbGx5IHN1Ym1pdHRlZCBi eSBZb3UgdG8gdGhlIFRpYW5vQ29yZSBzaXRlIGZvcg0KPiAgICBpbmNsdXNpb24gaW4sIG9yIGRv Y3VtZW50YXRpb24gb2YsIGFueSBvZiB0aGUgQ29udGVudC4gRm9yIHRoZQ0KPiAgICBwdXJwb3Nl cyBvZiB0aGlzIGRlZmluaXRpb24sICJzdWJtaXR0ZWQiIG1lYW5zIGFueSBmb3JtIG9mDQo+ICAg IGVsZWN0cm9uaWMsIHZlcmJhbCwgb3Igd3JpdHRlbiBjb21tdW5pY2F0aW9uIHNlbnQgdG8gdGhl DQo+IGRpZmYgLS1naXQgYS9lZGtzZXR1cC5iYXQgYi9lZGtzZXR1cC5iYXQNCj4gaW5kZXggNTdi NWE4Yzg2OC4uYTQ5M2FmYTdjZSAxMDA3NTUNCj4gLS0tIGEvZWRrc2V0dXAuYmF0DQo+ICsrKyBi L2Vka3NldHVwLmJhdA0KPiBAQCAtODksNyArODksNyBAQCBpZiBleGlzdCAlRURLX0JBU0VUT09M UyUgKA0KPiAgOmNoZWNrTnQzMkZsYWcNCj4gIGlmIGV4aXN0ICVFREtfVE9PTFNfUEFUSCVcU291 cmNlIHNldCBCQVNFX1RPT0xTX1BBVEg9JUVES19UT09MU19QQVRIJQ0KPiANCj4gLUBSRU0gVGhl IE50MzIgRW1sdWF0aW9uIFBsYXRmb3JtIHJlcXVpcmVzIE1pY3Jvc29mdCBMaWJyYXJpZXMNCj4g K0BSRU0gVGhlIE50MzIgRW11bGF0aW9uIFBsYXRmb3JtIHJlcXVpcmVzIE1pY3Jvc29mdCBMaWJy YXJpZXMNCj4gIEBSRU0gYW5kIGhlYWRlcnMgdG8gaW50ZXJmYWNlIHdpdGggV2luZG93cy4NCj4g IGlmIC9JICIlMSI9PSItLW50MzIiICgNCj4gICAgaWYgL0kgIiUyIj09Ilg2NCIgKA0KPiAtLQ0K PiAyLjE3LjIgKEFwcGxlIEdpdC0xMTMpDQo+IA0KPiBfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXw0KPiBlZGsyLWRldmVsIG1haWxpbmcgbGlzdA0KPiBlZGsy LWRldmVsQGxpc3RzLjAxLm9yZw0KPiBodHRwczovL2xpc3RzLjAxLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2VkazItZGV2ZWwNCg==