From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: intel.com, ip: 192.55.52.43, mailfrom: michael.a.kubacki@intel.com) Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by groups.io with SMTP; Mon, 26 Aug 2019 16:13:23 -0700 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmsmga105.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 26 Aug 2019 16:13:22 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.64,435,1559545200"; d="scan'208";a="264094834" Received: from orsmsx110.amr.corp.intel.com ([10.22.240.8]) by orsmga001.jf.intel.com with ESMTP; 26 Aug 2019 16:13:22 -0700 Received: from orsmsx160.amr.corp.intel.com (10.22.226.43) by ORSMSX110.amr.corp.intel.com (10.22.240.8) with Microsoft SMTP Server (TLS) id 14.3.439.0; Mon, 26 Aug 2019 16:13:21 -0700 Received: from orsmsx121.amr.corp.intel.com ([169.254.10.57]) by ORSMSX160.amr.corp.intel.com ([169.254.13.75]) with mapi id 14.03.0439.000; Mon, 26 Aug 2019 16:13:21 -0700 From: "Kubacki, Michael A" To: "Wei, David Y" , "devel@edk2.groups.io" CC: "Wu, Hao A" , "Gao, Liming" , "Sinha, Ankit" , "Agyeman, Prince" , "Desimone, Nathaniel L" , "Kinney, Michael D" Subject: Re: [edk2-platform patch 3/7] SimicsOpenBoardPkg: Add SimicsOpenBoardPkg and its modules Thread-Topic: [edk2-platform patch 3/7] SimicsOpenBoardPkg: Add SimicsOpenBoardPkg and its modules Thread-Index: AQHVTwRbNBQtNSGVkEmrTNKCArWbCqcDMtKQgAXSJhCABP/yAA== Date: Mon, 26 Aug 2019 23:13:20 +0000 Message-ID: <49AB4ACB9627B8468F29D589A27B745588A89A13@ORSMSX121.amr.corp.intel.com> References: <28fad95137c6aecfbf593a14191bdb4d0819951e.1565389186.git.david.y.wei@intel.com> <49AB4ACB9627B8468F29D589A27B745588A5001E@ORSMSX122.amr.corp.intel.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiMDYzYzAzYTUtZmE2Yi00ODU1LWJlNTctOWNmMmI2NjVkYzczIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiR01cL3ZHaEFRSEM3cndRWUF5RUNGU0oyVlpQekIrMkJPczlydTVoZHFsZ25YRlF5QWRVV2hqWDhqRVZ3N21RdXAifQ== x-ctpclassification: CTP_NT dlp-product: dlpe-windows dlp-version: 11.2.0.6 dlp-reaction: no-action x-originating-ip: [10.22.254.138] MIME-Version: 1.0 Return-Path: michael.a.kubacki@intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 PiAxMS4gTG9hZExpbnV4TGliLmluZjogTGlicmFyeSBuYW1lIGRvZXMgbm90IGZvbGxvd2luZyBu YW1pbmcgY29udmVudGlvbi4gSS5lLg0KPiBzaG91bGQgYmUgQmFzZUxvYWRMaW51eExpYi5pbmYu DQo+IFlkd2VpOiBUaGlzIGRyaXZlciBpcyBmcm9tIGVkazJcT3ZtZlBrZ1xMaWJyYXJ5XExvYWRM aW51eExpYi4gSSBkaWRuJ3QgbWFrZQ0KPiBjaGFuZ2UuDQptYWt1YmFja2k6IFdoaWxlIFNpbWlj c09wZW5Cb2FyZFBrZyBoYXMgYW4gaW5zdGFuY2Ugb2YgdGhlIGxpYnJhcnksIGl0IHNob3VsZCBm b2xsb3cgdGhlIG5hbWluZyBjb252ZW50aW9uIGV4cGVjdGVkIGluIHRoZSBwYWNrYWdlLiBZb3Ug ZG8gbm90IG5lZWQgdG8gY2hhbmdlIHRoZSBPdm1mUGtnIGluc3RhbmNlIGJ1dCBwbGVhc2UgdXBk YXRlIHRoaXMgaW5zdGFuY2UuDQoNCj4gMTIuIExvYWRMaW51eExpYi5pbmY6IFRoaXMgaXMgbm90 IHRydWx5IGEgQkFTRSBsaWJyYXJ5LiBGb3IgZXhhbXBsZSwgZ0JTIChib290DQo+IHNlcnZpY2Vz KSBhcmUgdW5hdmFpbGFibGUgaW4gUnVudGltZSBEWEUuDQo+IFlkd2VpOiBUaGlzIGRyaXZlciBp cyBmcm9tIGVkazJcT3ZtZlBrZ1xMaWJyYXJ5XExvYWRMaW51eExpYi4gSSB0aGluayBpdCBpcyBq dXN0DQo+IHVzZWQgYnkgTGludXggTG9hZGVyLg0KbWFrdWJhY2tpOiBDYW4gdGhlIGxpYnJhcnkg anVzdCBoYXZlIHR5cGUgRFhFX0RSSVZFUiB0aGVuPw0KDQo+IDE1LiBDbW9zLmM6IEl0IHNlZW1z IENtb3NBY2Nlc3NMaWIgaW4gQm9hcmRNb2R1bGVQa2cgY291bGQgYmUgdXNlZCBoZXJlIHRvDQo+ IGF2b2lkIGR1cGxpY2F0aW9uLg0KPiBZZHdlaTogSSB0cmllZCBDbW9zQWNjZXNzTGliIGluIEJv YXJkTW9kdWxlUGtnIGFuZCBpdCBjYXVzZSBidWlsZCBlcnJvci4gSQ0KPiBkaWRuJ3QgbWFrZSBj aGFuZ2UuDQptYWt1YmFja2k6IEknbGwgZmlsZSBhIEJaIHRvIGludmVzdGlnYXRlIGFuZCBjb25z b2xpZGF0ZSB0aGlzIGluIHRoZSBmdXR1cmUuDQoNCj4gMTYuIEZ2LmM6IEluIE1pblBsYXRmb3Jt LCBhIG1vcmUgaW50dWl0aXZlIHBsYWNlIHRvIG1hbmFnZSBGVnMgaXMgaW4gYSBib2FyZC0NCj4g c3BlY2lmaWMgaW5zdGFuY2Ugb2YgUGVpUmVwb3J0RnZMaWINCj4gWWR3ZWk6IEl0IGlzIHVzZWQg Zm9yIFNJTUlDUyBTMyByZXN1bWUuIERpZmZlcmVudCBwdXJwb3NlLg0KbWFrdWJhY2tpOiBCb290 IG1vZGUgY2FuIGJlIHJlYWQgaW4gUzMgcmVzdW1lLiBTZWU6DQpodHRwczovL2dpdGh1Yi5jb20v dGlhbm9jb3JlL2VkazItcGxhdGZvcm1zL2Jsb2IvbWFzdGVyL1BsYXRmb3JtL0ludGVsL01pblBs YXRmb3JtUGtnL1BsYXRmb3JtSW5pdC9MaWJyYXJ5L1BlaVJlcG9ydEZ2TGliL1BlaVJlcG9ydEZ2 TGliLmMNClJlcG9ydEZ2UGVpIGluIE1pblBsYXRmb3JtUGtnIGxpbmtzIGFnYWluc3QgYSBSZXBv cnRGdkxpYiBsaWJyYXJ5IGNsYXNzIHRvIGFsbG93IGN1c3RvbSBGViBpbnN0YWxsYXRpb24gYmVo YXZpb3IuIEluIHRoaXMgY2FzZSwgaXQgc2VlbXMgdGhlIFNpbWljc09wZW5Cb2FyZFBrZyBSZXBv cnRGdkxpYiBsaWJyYXJ5IGluc3RhbmNlIGp1c3QgbmVlZHMgdG8gcGVyZm9ybSB0aGUgbG9naWMg Y3VycmVudGx5IGluIFBlaUZ2SW5pdGlhbGl6YXRpb24gKCkuDQoNCj4gMTcuIEdlbmVyYWwgY29t bWVudDogVGhlIG1vZHVsZXMgIlBsYXRmb3JtUGVpIiBhbmQgIlBsYXRmb3JtRHhlIiBzaG91bGQg YmUNCj4gYXZvaWRlZCBpbiBhIE1pblBsYXRmb3JtLg0KPiAgICAgICAgIE1pblBsYXRmb3JtUGtn IGlzIGNvbnNpZGVyZWQgdGhlICJwbGF0Zm9ybSIgYW5kIFNpbWljc09wZW5Cb2FyZFBrZyBpcw0K PiBjb25zaWRlcmVkIHRoZSAiYm9hcmQiLCB0aGVyZWZvcmUgdGhpcw0KPiAgICAgICAgIGNvZGUg c2hvdWxkIGxpa2VseSBiZSBpbiBhIGJvYXJkIGxpYnJhcnkgbGlua2VkIGFnYWluc3QgYSBQbGF0 Zm9ybUluaXQgbW9kdWxlDQo+IGluIE1pblBsYXRmb3JtUGtnLiBTdWNoIGFzIEJvYXJkSW5pdExp Yg0KPiAgICAgICAgIHdoaWNoIGlzIHZlcnkgZW1wdHkgYXQgdGhlIG1vbWVudC4gQXQgYSBtaW5p bXVtLCBpZiBrZXB0IGFzIGEgbW9kdWxlIGZvcg0KPiBkaXNwYXRjaCwgdGhlIG5hbWUgc2hvdWxk IG5vdCBsZWFkIHRvIGNvbmZ1c2lvbg0KPiAgICAgICAgIHdpdGggcGxhdGZvcm0gbW9kdWxlcyBp biBNaW5QbGF0Zm9ybVBrZy4NCj4gWWR3ZWk6IFRoZXkgYXJlIFNJTUlDUyBzcGVjaWZpY2FsLiBT byBJIGNoYW5nZSB0aGVpciBuYW1lIGFzIFNpbWljc1BlaSBhbmQNCj4gU2ltaWNzRHhlDQptYWt1 YmFja2k6IFRoZSBuYW1lIGNoYW5nZSBpcyBnb29kIHRvIHJlZHVjZSBjb25mdXNpb24uIEJ1dCB0 aGUgY29kZSBzaG91bGQgYmUgbW92ZWQgdG8gdGhlIEJvYXJkSW5pdExpYiBiZWhpbmQgdGhlIHBy b3BlciBib2FyZCBBUElzLiBPbmUgb2YgdGhlIGdvYWxzIG9mIHRoZSBNaW5pbXVtIFBsYXRmb3Jt IGlzIGZvciBjb2RlIHRvIGJlIGluIHByZWRpY3RhYmxlIGxvY2F0aW9ucyB3aXRoIGEgY29uc2lz dGVudCBib290IGZsb3cuIElmIHRoZSBjb2RlIGlzIG5vdCBtb3ZlZCBub3csIGEgQlogd2lsbCBu ZWVkIHRvIGJlIGZpbGVkIHNvIHRoZSBjb2RlIGNhbiBiZSBtb3ZlZCB0byB0aGUgYXBwcm9wcmlh dGUgbG9jYXRpb25zIGluIGEgZm9sbG93IHVwIGNoYW5nZS4NCg0KPiAtLS0tLU9yaWdpbmFsIE1l c3NhZ2UtLS0tLQ0KPiBGcm9tOiBXZWksIERhdmlkIFkNCj4gU2VudDogRnJpZGF5LCBBdWd1c3Qg MjMsIDIwMTkgOTo1OCBBTQ0KPiBUbzogS3ViYWNraSwgTWljaGFlbCBBIDxtaWNoYWVsLmEua3Vi YWNraUBpbnRlbC5jb20+OyBkZXZlbEBlZGsyLmdyb3Vwcy5pbw0KPiBDYzogV3UsIEhhbyBBIDxo YW8uYS53dUBpbnRlbC5jb20+OyBHYW8sIExpbWluZyA8bGltaW5nLmdhb0BpbnRlbC5jb20+Ow0K PiBTaW5oYSwgQW5raXQgPGFua2l0LnNpbmhhQGludGVsLmNvbT47IEFneWVtYW4sIFByaW5jZQ0K PiA8cHJpbmNlLmFneWVtYW5AaW50ZWwuY29tPjsgRGVzaW1vbmUsIE5hdGhhbmllbCBMDQo+IDxu YXRoYW5pZWwubC5kZXNpbW9uZUBpbnRlbC5jb20+OyBLaW5uZXksIE1pY2hhZWwgRA0KPiA8bWlj aGFlbC5kLmtpbm5leUBpbnRlbC5jb20+DQo+IFN1YmplY3Q6IFJFOiBbZWRrMi1wbGF0Zm9ybSBw YXRjaCAzLzddIFNpbWljc09wZW5Cb2FyZFBrZzogQWRkDQo+IFNpbWljc09wZW5Cb2FyZFBrZyBh bmQgaXRzIG1vZHVsZXMNCj4gDQo+IEhpIE1pa2UsDQo+IFBsZWFzZSBzZWUgdGhlIHVwZGF0ZXMg b25saW5lIGJlbG93LiBQbGVhc2UgbGV0IG1lIGtub3cgaWYgeW91IGhhdmUgYW55IG1vcmUNCj4g Y29tbWVudHMuDQo+IA0KPiBUaGFua3MNCj4gRGF2aWQNCj4gDQo+IC0tLS0tT3JpZ2luYWwgTWVz c2FnZS0tLS0tDQo+IEZyb206IEt1YmFja2ksIE1pY2hhZWwgQQ0KPiBTZW50OiBNb25kYXksIEF1 Z3VzdCAxOSwgMjAxOSA2OjA0IFBNDQo+IFRvOiBXZWksIERhdmlkIFkgPGRhdmlkLnkud2VpQGlu dGVsLmNvbT47IGRldmVsQGVkazIuZ3JvdXBzLmlvDQo+IENjOiBXdSwgSGFvIEEgPGhhby5hLnd1 QGludGVsLmNvbT47IEdhbywgTGltaW5nIDxsaW1pbmcuZ2FvQGludGVsLmNvbT47DQo+IFNpbmhh LCBBbmtpdCA8YW5raXQuc2luaGFAaW50ZWwuY29tPjsgQWd5ZW1hbiwgUHJpbmNlDQo+IDxwcmlu Y2UuYWd5ZW1hbkBpbnRlbC5jb20+OyBEZXNpbW9uZSwgTmF0aGFuaWVsIEwNCj4gPG5hdGhhbmll bC5sLmRlc2ltb25lQGludGVsLmNvbT47IEtpbm5leSwgTWljaGFlbCBEDQo+IDxtaWNoYWVsLmQu a2lubmV5QGludGVsLmNvbT4NCj4gU3ViamVjdDogUkU6IFtlZGsyLXBsYXRmb3JtIHBhdGNoIDMv N10gU2ltaWNzT3BlbkJvYXJkUGtnOiBBZGQNCj4gU2ltaWNzT3BlbkJvYXJkUGtnIGFuZCBpdHMg bW9kdWxlcw0KPiANCj4gRmVlZGJhY2sgSSBjb3VsZCBub3QgZmluZCBhbHJlYWR5IGNvdmVyZWQg ZWxzZXdoZXJlOg0KPiANCj4gMS4gRHNkdC5hc2w6IENoYW5nZSAiT1ZNRiIgaW4gdGhlIGZvbGxv d2luZyBsaW5lIHRvIHNvbWV0aGluZyBlbHNlIHVuaXF1ZSB0byB0aGlzDQo+IGltcGxlbWVudGF0 aW9uOg0KPiAgICAgICJEZWZpbml0aW9uQmxvY2sgKCJEc2R0LmFtbCIsICJEU0RUIiwgMSwgIklO VEVMICIsICJPVk1GICAgICIsIDQpIHsiDQo+IFlkd2VpOiBkb25lDQo+IDIuIEJhc2VQY2hTcGlD b21tb25MaWIuaW5mOiBUaGlzIHNpbGljb24gcGFja2FnZSBzaG91bGQgbm90IGhhdmUgYQ0KPiBk ZXBlbmRlbmN5IG9uIFNpbWljc09wZW5Cb2FyZFBrZy5kZWMuDQo+IFlkd2VpOiBkb25lDQo+IDMu IFBsYXRmb3JtLmg6IFRoaXMgaGVhZGVyIGd1YXJkIGRlZmluaXRpb24gaXMgdW51c3VhbCBpbiBz dHlsZSBhbmQgY29udmVudGlvbiwNCj4gcGxlYXNlIGNvcnJlY3Q6ICJfUGxhdGZvcm1faF9JTkNM VURFRF8iDQo+IFlkd2VpOiBkb25lDQo+IDQuIFBsYXRmb3JtLmg6IFBsZWFzZSB1cGRhdGUgdXNh Z2Ugb2YgIk9WTUYiIGluIHZhcmlvdXMgc2lnbmF0dXJlcyB0aHJvdWdob3V0DQo+IHRoZSBmaWxl IHRvIHNvbWV0aGluZyBwYWNrYWdlIHVuaXF1ZS4NCj4gWWR3ZWk6IGRvbmUNCj4gNS4gU2ltaWNz WDU4UGxhdGZvcm1Db25maWcuaDogV2h5IGlzIHRoaXMgZmlsZSBub3QgaW4gU2ltaWNzWDU4U2t0 UGtnPw0KPiBZZHdlaTogZG9uZQ0KPiA2LiBTaW1pY3NYNThQbGF0Zm9ybUNvbmZpZy5oOiBDaGFu Z2UgIk9WTUYiIGluIGNvcHlyaWdodCBoZWFkZXIgdG8gIlNpbWljcw0KPiBYNTgiDQo+IFlkd2Vp OiBkb25lDQo+IDcuIFNpbWljc1BsYXRmb3Jtcy5oOiBDaGFuZ2UgIk9WTUYiIGluIGNvcHlyaWdo dCBoZWFkZXIgdG8gIlNpbWljcyINCj4gWWR3ZWk6IGRvbmUNCj4gOC4gU2ltaWNzUGxhdGZvcm1z LmggLSBMaW5lIDE2OiBGb2xsb3cgdXAgb24gVE9ETw0KPiBZZHdlaTogZG9uZQ0KPiA5LiBYNThJ Y2gxMC5oOiBXaHkgaXMgdGhpcyBmaWxlIGluIHRoZSBTaW1pY3MgYm9hcmQgcGFja2FnZT8gSXQg c2hvdWxkIGJlIGluIHRoZQ0KPiBzaWxpY29uIHBhY2thZ2UuDQo+IFlkd2VpOiBkb25lDQo+IDEw LiBMb2FkTGludXhMaWIuaW5mOiBUaGlzIHBhY2thZ2Ugc2hvdWxkIGF2b2lkIGEgZGVwZGVuY3kg b24gT3ZtZlBrZy5kZWMNCj4gWWR3ZWk6IGRvbmUNCj4gMTEuIExvYWRMaW51eExpYi5pbmY6IExp YnJhcnkgbmFtZSBkb2VzIG5vdCBmb2xsb3dpbmcgbmFtaW5nIGNvbnZlbnRpb24uIEkuZS4NCj4g c2hvdWxkIGJlIEJhc2VMb2FkTGludXhMaWIuaW5mLg0KPiBZZHdlaTogVGhpcyBkcml2ZXIgaXMg ZnJvbSBlZGsyXE92bWZQa2dcTGlicmFyeVxMb2FkTGludXhMaWIuIEkgZGlkbid0IG1ha2UNCj4g Y2hhbmdlLg0KPiAxMi4gTG9hZExpbnV4TGliLmluZjogVGhpcyBpcyBub3QgdHJ1bHkgYSBCQVNF IGxpYnJhcnkuIEZvciBleGFtcGxlLCBnQlMgKGJvb3QNCj4gc2VydmljZXMpIGFyZSB1bmF2YWls YWJsZSBpbiBSdW50aW1lIERYRS4NCj4gWWR3ZWk6IFRoaXMgZHJpdmVyIGlzIGZyb20gZWRrMlxP dm1mUGtnXExpYnJhcnlcTG9hZExpbnV4TGliLiBJIHRoaW5rIGl0IGlzIGp1c3QNCj4gdXNlZCBi eSBMaW51eCBMb2FkZXIuDQo+IDEzLiBQbGF0Zm9ybS5jOiBDaGFuZ2UgIk9WTUYiIHJlZmVyZW5j ZSBpbiBjb3B5cmlnaHQgaGVhZGVyLg0KPiBZZHdlaTogZG9uZQ0KPiAxNC4gUGxhdGZvcm0uaDog Q2hhbmdlICJPVk1GIiByZWZlcmVuY2UgaW4gY29weXJpZ2h0IGhlYWRlci4NCj4gWWR3ZWk6IGRv bmUNCj4gMTUuIENtb3MuYzogSXQgc2VlbXMgQ21vc0FjY2Vzc0xpYiBpbiBCb2FyZE1vZHVsZVBr ZyBjb3VsZCBiZSB1c2VkIGhlcmUgdG8NCj4gYXZvaWQgZHVwbGljYXRpb24uDQo+IFlkd2VpOiBJ IHRyaWVkIENtb3NBY2Nlc3NMaWIgaW4gQm9hcmRNb2R1bGVQa2cgYW5kIGl0IGNhdXNlIGJ1aWxk IGVycm9yLiBJDQo+IGRpZG4ndCBtYWtlIGNoYW5nZS4NCj4gMTYuIEZ2LmM6IEluIE1pblBsYXRm b3JtLCBhIG1vcmUgaW50dWl0aXZlIHBsYWNlIHRvIG1hbmFnZSBGVnMgaXMgaW4gYSBib2FyZC0N Cj4gc3BlY2lmaWMgaW5zdGFuY2Ugb2YgUGVpUmVwb3J0RnZMaWINCj4gWWR3ZWk6IEl0IGlzIHVz ZWQgZm9yIFNJTUlDUyBTMyByZXN1bWUuIERpZmZlcmVudCBwdXJwb3NlLg0KPiAxNy4gR2VuZXJh bCBjb21tZW50OiBUaGUgbW9kdWxlcyAiUGxhdGZvcm1QZWkiIGFuZCAiUGxhdGZvcm1EeGUiIHNo b3VsZCBiZQ0KPiBhdm9pZGVkIGluIGEgTWluUGxhdGZvcm0uDQo+ICAgICAgICAgTWluUGxhdGZv cm1Qa2cgaXMgY29uc2lkZXJlZCB0aGUgInBsYXRmb3JtIiBhbmQgU2ltaWNzT3BlbkJvYXJkUGtn IGlzDQo+IGNvbnNpZGVyZWQgdGhlICJib2FyZCIsIHRoZXJlZm9yZSB0aGlzDQo+ICAgICAgICAg Y29kZSBzaG91bGQgbGlrZWx5IGJlIGluIGEgYm9hcmQgbGlicmFyeSBsaW5rZWQgYWdhaW5zdCBh IFBsYXRmb3JtSW5pdCBtb2R1bGUNCj4gaW4gTWluUGxhdGZvcm1Qa2cuIFN1Y2ggYXMgQm9hcmRJ bml0TGliDQo+ICAgICAgICAgd2hpY2ggaXMgdmVyeSBlbXB0eSBhdCB0aGUgbW9tZW50LiBBdCBh IG1pbmltdW0sIGlmIGtlcHQgYXMgYSBtb2R1bGUgZm9yDQo+IGRpc3BhdGNoLCB0aGUgbmFtZSBz aG91bGQgbm90IGxlYWQgdG8gY29uZnVzaW9uDQo+ICAgICAgICAgd2l0aCBwbGF0Zm9ybSBtb2R1 bGVzIGluIE1pblBsYXRmb3JtUGtnLg0KPiBZZHdlaTogVGhleSBhcmUgU0lNSUNTIHNwZWNpZmlj YWwuIFNvIEkgY2hhbmdlIHRoZWlyIG5hbWUgYXMgU2ltaWNzUGVpIGFuZA0KPiBTaW1pY3NEeGUN Cj4gMTguIFBsYXRmb3JtUGVpLmluZjogVGhpcyBwYWNrYWdlIHNob3VsZCBhdm9pZCBhIGRlcGRl bmN5IG9uIE92bWZQa2cuZGVjDQo+IFlkd2VpOiBkb25lDQo+IDE5LiBYNThTbWFtU2F2ZVN0YXRl TWFwLmg6IElmIFg1OC1zcGVjaWZpYywgaXQgc2hvdWxkIGdvIHRvIFNpbWljc1g1OFNrdFBrZy4N Cj4gWWR3ZWk6IGRvbmUNCj4gMjAuIFNlcmlhbGl6ZVZhcmlhYmxlc0xpYi5pbmY6IFRoaXMgcGFj a2FnZSBzaG91bGQgYXZvaWQgYSBkZXBkZW5jeSBvbg0KPiBPdm1mUGtnLmRlYw0KPiBZZHdlaTog ZG9uZQ0KPiAyMS4gU2ltaWNzT3BlbkJvYXJkUGtnLmRlYzogUGNkcyBpbiB0aGUgZ1NpbWljc1g1 OFBrZ1Rva2VuU3BhY2VHdWlkIHRva2VuDQo+IHNwYWNlIHNob3VsZCBiZSBkZWNsYXJlZCBpbiBh IERFQyBmaWxlDQo+ICAgICAgICBpbiB0aGUgU2ltaWNzWDU4U2t0UGtnLiBTaW1pY3NPcGVuQm9h cmRQa2cgc2hvdWxkIG5vdCBiZSBoYXJkY29kZWQgdG8NCj4gdGhpcyBwYXJ0aWN1bGFyIHNpbGlj b24gZGVzaWduLg0KPiBZZHdlaTogZG9uZQ0KPiAyMi4gU2ltaWNzT3BlbkJvYXJkUGtnLmRlYzog Ilg1OCIgc2hvdWxkIGJlIHJlbW92ZWQgZnJvbSB0aGUgY29weXJpZ2h0DQo+IGhlYWRlciBhcyB0 aGUgREVDIGlzIGF0IHRoZSBwYWNrYWdlLWxldmVsDQo+ICAgICAgICBhbmQgbm90IHRoZSBib2Fy ZCBsZXZlbC4NCj4gWWR3ZWk6IGRvbmUNCj4gMjMuIFNpbWljc09wZW5Cb2FyZFBrZy5kZWM6IFRo ZSBQQUNLQUdFX05BTUUgc2hvdWxkIG5vdCBiZSAiDQo+IFNpbWljc1g1OFBrZyIgYXMgdGhlIERF QyBpcyBhdCBwYWNrYWdlLWxldmVsIGFuZA0KPiAgICAgICAgbm90IFNpbWljcyBib2FyZC1zcGVj aWZpYy4NCj4gWWR3ZWk6IGRvbmUNCj4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ IEZyb206IFdlaSwgRGF2aWQgWQ0KPiA+IFNlbnQ6IEZyaWRheSwgQXVndXN0IDksIDIwMTkgMzo0 NyBQTQ0KPiA+IFRvOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbw0KPiA+IENjOiBXdSwgSGFvIEEgPGhh by5hLnd1QGludGVsLmNvbT47IEdhbywgTGltaW5nIDxsaW1pbmcuZ2FvQGludGVsLmNvbT47DQo+ ID4gU2luaGEsIEFua2l0IDxhbmtpdC5zaW5oYUBpbnRlbC5jb20+OyBBZ3llbWFuLCBQcmluY2UN Cj4gPiA8cHJpbmNlLmFneWVtYW5AaW50ZWwuY29tPjsgS3ViYWNraSwgTWljaGFlbCBBDQo+ID4g PG1pY2hhZWwuYS5rdWJhY2tpQGludGVsLmNvbT47IERlc2ltb25lLCBOYXRoYW5pZWwgTA0KPiA+ IDxuYXRoYW5pZWwubC5kZXNpbW9uZUBpbnRlbC5jb20+OyBLaW5uZXksIE1pY2hhZWwgRA0KPiA+ IDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4NCj4gPiBTdWJqZWN0OiBbZWRrMi1wbGF0Zm9y bSBwYXRjaCAzLzddIFNpbWljc09wZW5Cb2FyZFBrZzogQWRkDQo+ID4gU2ltaWNzT3BlbkJvYXJk UGtnIGFuZCBpdHMgbW9kdWxlcw0KPiA+DQo+ID4gQWRkIG1vZHVsZXMgQWNwaVRhYmxlcywgSW5j bHVkZSwgTGlicmFyeSwgUGxhdGZvcm1EeGUsIFBsYXRmb3JtUGVpLCBQb2xpY3ksDQo+ID4gU21i aW9zUGxhdGZvcm1EeGUNCj4gPiBmb3IgU2ltaWNzIFFTUCBwbGF0Zm9ybSBzdXBwb3J0DQo+ID4N Cj4gPiBDYzogSGFvIFd1IDxoYW8uYS53dUBpbnRlbC5jb20+DQo+ID4gQ2M6IExpbWluZyBHYW8g PGxpbWluZy5nYW9AaW50ZWwuY29tPg0KPiA+IENjOiBBbmtpdCBTaW5oYSA8YW5raXQuc2luaGFA aW50ZWwuY29tPg0KPiA+IENjOiBBZ3llbWFuIFByaW5jZSA8cHJpbmNlLmFneWVtYW5AaW50ZWwu Y29tPg0KPiA+IENjOiBLdWJhY2tpIE1pY2hhZWwgQSA8bWljaGFlbC5hLmt1YmFja2lAaW50ZWwu Y29tPg0KPiA+IENjOiBOYXRlIERlU2ltb25lIDxuYXRoYW5pZWwubC5kZXNpbW9uZUBpbnRlbC5j b20+DQo+ID4gQ2M6IE1pY2hhZWwgRCBLaW5uZXkgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29t Pg0KPiA+IENvbnRyaWJ1dGVkLXVuZGVyOiBUaWFub0NvcmUgQ29udHJpYnV0aW9uIEFncmVlbWVu dCAxLjANCj4gPg0KPiA+IFNpZ25lZC1vZmYtYnk6IERhdmlkIFdlaSA8ZGF2aWQueS53ZWlAaW50 ZWwuY29tPg0KPiA+IC0tLQ0KPiA+ICAuLi4vTGlicmFyeS9Mb2FkTGludXhMaWIvTGludXguYyAg ICAgICAgICAgICAgICAgICB8IDY2MiArKysrKysrKysrKysrKysrDQo+ID4gIC4uLi9MaWJyYXJ5 L0xvYWRMaW51eExpYi9MaW51eEdkdC5jICAgICAgICAgICAgICAgIHwgMTc1ICsrKysrDQo+ID4g IC4uLi9MaWJyYXJ5L052VmFyc0ZpbGVMaWIvRnNBY2Nlc3MuYyAgICAgICAgICAgICAgIHwgNTA3 ICsrKysrKysrKysrKw0KPiA+ICAuLi4vTGlicmFyeS9OdlZhcnNGaWxlTGliL052VmFyc0ZpbGVM aWIuYyAgICAgICAgICB8ICA3NyArKw0KPiA+ICAuLi4vU2VyaWFsaXplVmFyaWFibGVzTGliL1Nl cmlhbGl6ZVZhcmlhYmxlc0xpYi5jICB8IDg2OQ0KPiA+ICsrKysrKysrKysrKysrKysrKysrKw0K PiA+ICAuLi4vU2ltaWNzT3BlbkJvYXJkUGtnL1BsYXRmb3JtRHhlL1BsYXRmb3JtLmMgICAgICB8 IDg2NQ0KPiA+ICsrKysrKysrKysrKysrKysrKysrDQo+ID4gIC4uLi9QbGF0Zm9ybUR4ZS9QbGF0 Zm9ybUNvbmZpZy5jICAgICAgICAgICAgICAgICAgIHwgMTIzICsrKw0KPiA+ICAuLi4vSW50ZWwv U2ltaWNzT3BlbkJvYXJkUGtnL1BsYXRmb3JtUGVpL0Ntb3MuYyAgICB8ICA1NyArKw0KPiA+ICAu Li4vUGxhdGZvcm1QZWkvRmVhdHVyZUNvbnRyb2wuYyAgICAgICAgICAgICAgICAgICB8IDExNCAr KysNCj4gPiAgUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL1BsYXRmb3JtUGVpL0Z2 LmMgfCAxMDAgKysrDQo+ID4gIC4uLi9TaW1pY3NPcGVuQm9hcmRQa2cvUGxhdGZvcm1QZWkvTWVt RGV0ZWN0LmMgICAgIHwgNTY4DQo+ICsrKysrKysrKysrKysrDQo+ID4gIC4uLi9TaW1pY3NPcGVu Qm9hcmRQa2cvUGxhdGZvcm1QZWkvUGxhdGZvcm0uYyAgICAgIHwgNjMxICsrKysrKysrKysrKysr Kw0KPiA+ICAuLi4vU2lsaWNvblBvbGljeUluaXRMaWIvU2lsaWNvblBvbGljeUluaXRMaWIuYyAg ICB8IDEwOCArKysNCj4gPiAgLi4uL1NpbGljb25Qb2xpY3lVcGRhdGVMaWIuYyAgICAgICAgICAg ICAgICAgICAgICAgfCAgNzAgKysNCj4gPiAgLi4uL1NtYmlvc1BsYXRmb3JtRHhlL1NtYmlvc1Bs YXRmb3JtRHhlLmMgICAgICAgICAgfCAxNDggKysrKw0KPiA+ICAuLi4vU2ltaWNzT3BlbkJvYXJk UGtnL0FjcGlUYWJsZXMvQWNwaVRhYmxlcy5pbmYgICB8ICAzMSArDQo+ID4gIC4uLi9JbnRlbC9T aW1pY3NPcGVuQm9hcmRQa2cvQWNwaVRhYmxlcy9Ec2R0LmFzbCAgIHwgODIxDQo+ID4gKysrKysr KysrKysrKysrKysrKw0KPiA+ICAuLi4vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL0FjcGlUYWJs ZXMvUGxhdGZvcm0uaCB8ICA3NSArKw0KPiA+ICAuLi4vSW5jbHVkZS9HdWlkL1NpbWljc1g1OFBs YXRmb3JtQ29uZmlnLmggICAgICAgICB8ICAxNyArDQo+ID4gIC4uLi9JbmNsdWRlL0luZHVzdHJ5 U3RhbmRhcmQvWDU4SWNoMTAuaCAgICAgICAgICAgIHwgMTA2ICsrKw0KPiA+ICAuLi4vU2ltaWNz T3BlbkJvYXJkUGtnL0luY2x1ZGUvUHJvdG9jb2wvSXNhQWNwaS5oICB8IDI5OCArKysrKysrDQo+ ID4gIC4uLi9TaW1pY3NPcGVuQm9hcmRQa2cvSW5jbHVkZS9Qcm90b2NvbC9Jc2FJby5oICAgIHwg MzU2ICsrKysrKysrKw0KPiA+ICAuLi4vSW5jbHVkZS9Qcm90b2NvbC9MZWdhY3k4MjU5LmggICAg ICAgICAgICAgICAgICB8IDI5MSArKysrKysrDQo+ID4gIC4uLi9JbmNsdWRlL1JlZ2lzdGVyL1g1 OFNtcmFtU2F2ZVN0YXRlTWFwLmggICAgICAgIHwgMTc4ICsrKysrDQo+ID4gIC4uLi9TaW1pY3NP cGVuQm9hcmRQa2cvSW5jbHVkZS9TaW1pY3NQbGF0Zm9ybXMuaCAgIHwgIDU0ICsrDQo+ID4gIC4u Li9MaWJyYXJ5L0xvYWRMaW51eExpYi9JYTMyL0p1bXBUb0tlcm5lbC5uYXNtICAgIHwgIDQxICsN Cj4gPiAgLi4uL0xpYnJhcnkvTG9hZExpbnV4TGliL0xvYWRMaW51eExpYi5oICAgICAgICAgICAg fCAgNTIgKysNCj4gPiAgLi4uL0xpYnJhcnkvTG9hZExpbnV4TGliL0xvYWRMaW51eExpYi5pbmYg ICAgICAgICAgfCAgNDIgKw0KPiA+ICAuLi4vTGlicmFyeS9Mb2FkTGludXhMaWIvWDY0L0p1bXBU b0tlcm5lbC5uYXNtICAgICB8ICA4NSArKw0KPiA+ICAuLi4vTGlicmFyeS9OdlZhcnNGaWxlTGli L052VmFyc0ZpbGVMaWIuaCAgICAgICAgICB8ICA1NSArKw0KPiA+ICAuLi4vTGlicmFyeS9OdlZh cnNGaWxlTGliL052VmFyc0ZpbGVMaWIuaW5mICAgICAgICB8ICA1MyArKw0KPiA+ICAuLi4vU2Vy aWFsaXplVmFyaWFibGVzTGliL1NlcmlhbGl6ZVZhcmlhYmxlc0xpYi5oICB8ICAzMyArDQo+ID4g IC4uLi9TZXJpYWxpemVWYXJpYWJsZXNMaWIuaW5mICAgICAgICAgICAgICAgICAgICAgIHwgIDM2 ICsNCj4gPiAgLi4uL1NpbWljc09wZW5Cb2FyZFBrZy9QbGF0Zm9ybUR4ZS9QbGF0Zm9ybS5oICAg ICAgfCAgMzcgKw0KPiA+ICAuLi4vU2ltaWNzT3BlbkJvYXJkUGtnL1BsYXRmb3JtRHhlL1BsYXRm b3JtLmluZiAgICB8ICA2NSArKw0KPiA+ICAuLi4vU2ltaWNzT3BlbkJvYXJkUGtnL1BsYXRmb3Jt RHhlL1BsYXRmb3JtLnVuaSAgICB8ICAzMSArDQo+ID4gIC4uLi9QbGF0Zm9ybUR4ZS9QbGF0Zm9y bUNvbmZpZy5oICAgICAgICAgICAgICAgICAgIHwgIDUxICsrDQo+ID4gIC4uLi9QbGF0Zm9ybUR4 ZS9QbGF0Zm9ybUZvcm1zLnZmciAgICAgICAgICAgICAgICAgIHwgIDY3ICsrDQo+ID4gIC4uLi9J bnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvUGxhdGZvcm1QZWkvQ21vcy5oICAgIHwgIDUwICsrDQo+ ID4gIC4uLi9TaW1pY3NPcGVuQm9hcmRQa2cvUGxhdGZvcm1QZWkvUGxhdGZvcm0uaCAgICAgIHwg IDkzICsrKw0KPiA+ICAuLi4vU2ltaWNzT3BlbkJvYXJkUGtnL1BsYXRmb3JtUGVpL1BsYXRmb3Jt UGVpLmluZiB8IDEwOSArKysNCj4gPiAgLi4uL1NpbGljb25Qb2xpY3lJbml0TGliL1NpbGljb25Q b2xpY3lJbml0TGliLmluZiAgfCAgMzggKw0KPiA+ICAuLi4vU2lsaWNvblBvbGljeVVwZGF0ZUxp Yi5pbmYgICAgICAgICAgICAgICAgICAgICB8ICAzNSArDQo+ID4gIC4uLi9TaW1pY3NPcGVuQm9h cmRQa2cvU2ltaWNzT3BlbkJvYXJkUGtnLmRlYyAgICAgIHwgMTY4ICsrKysNCj4gPiAgLi4uL1Nt Ymlvc1BsYXRmb3JtRHhlL1NtYmlvc1BsYXRmb3JtRHhlLmggICAgICAgICAgfCAgMzggKw0KPiA+ ICAuLi4vU21iaW9zUGxhdGZvcm1EeGUvU21iaW9zUGxhdGZvcm1EeGUuaW5mICAgICAgICB8ICA1 MSArKw0KPiA+ICA0NiBmaWxlcyBjaGFuZ2VkLCA4NTMxIGluc2VydGlvbnMoKykNCj4gPiAgY3Jl YXRlIG1vZGUgMTAwNjQ0DQo+ID4gUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL0xp YnJhcnkvTG9hZExpbnV4TGliL0xpbnV4LmMNCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0DQo+ID4g UGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL0xpYnJhcnkvTG9hZExpbnV4TGliL0xp bnV4R2R0LmMNCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0DQo+ID4gUGxhdGZvcm0vSW50ZWwvU2lt aWNzT3BlbkJvYXJkUGtnL0xpYnJhcnkvTnZWYXJzRmlsZUxpYi9Gc0FjY2Vzcy5jDQo+ID4gIGNy ZWF0ZSBtb2RlIDEwMDY0NA0KPiA+IFBsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9M aWJyYXJ5L052VmFyc0ZpbGVMaWIvTnZWYXJzRmlsZUxpYi5jDQo+ID4gIGNyZWF0ZSBtb2RlIDEw MDY0NA0KPiA+DQo+IFBsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9MaWJyYXJ5L1Nl cmlhbGl6ZVZhcmlhYmxlc0xpYi9TZXJpYWxpemVWYXJpYQ0KPiA+IGJsZXNMaWIuYw0KPiA+ICBj cmVhdGUgbW9kZSAxMDA2NDQNCj4gPiBQbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cv UGxhdGZvcm1EeGUvUGxhdGZvcm0uYw0KPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQNCj4gPiBQbGF0 Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvUGxhdGZvcm1EeGUvUGxhdGZvcm1Db25maWcu Yw0KPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQNCj4gUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJv YXJkUGtnL1BsYXRmb3JtUGVpL0Ntb3MuYw0KPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQNCj4gPiBQ bGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvUGxhdGZvcm1QZWkvRmVhdHVyZUNvbnRy b2wuYw0KPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJv YXJkUGtnL1BsYXRmb3JtUGVpL0Z2LmMNCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0DQo+ID4gUGxh dGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL1BsYXRmb3JtUGVpL01lbURldGVjdC5jDQo+ ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NA0KPiA+IFBsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2Fy ZFBrZy9QbGF0Zm9ybVBlaS9QbGF0Zm9ybS5jDQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NA0KPiA+ DQo+IFBsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9Qb2xpY3kvTGlicmFyeS9TaWxp Y29uUG9saWN5SW5pdExpYi9TaWxpY29uUA0KPiA+IG9saWN5SW5pdExpYi5jDQo+ID4gIGNyZWF0 ZSBtb2RlIDEwMDY0NA0KPiA+DQo+IFBsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9Q b2xpY3kvTGlicmFyeS9TaWxpY29uUG9saWN5VXBkYXRlTGliL1NpbGljDQo+ID4gb25Qb2xpY3lV cGRhdGVMaWIuYw0KPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQNCj4gPg0KPiBQbGF0Zm9ybS9JbnRl bC9TaW1pY3NPcGVuQm9hcmRQa2cvU21iaW9zUGxhdGZvcm1EeGUvU21iaW9zUGxhdGZvcm1EeGUu Yw0KPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQNCj4gPiBQbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVu Qm9hcmRQa2cvQWNwaVRhYmxlcy9BY3BpVGFibGVzLmluZg0KPiA+ICBjcmVhdGUgbW9kZSAxMDA2 NDQNCj4gUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL0FjcGlUYWJsZXMvRHNkdC5h c2wNCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0DQo+ID4gUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3Bl bkJvYXJkUGtnL0FjcGlUYWJsZXMvUGxhdGZvcm0uaA0KPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQN Cj4gPg0KPiBQbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvSW5jbHVkZS9HdWlkL1Np bWljc1g1OFBsYXRmb3JtQ29uZmlnLmgNCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0DQo+ID4gUGxh dGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL0luY2x1ZGUvSW5kdXN0cnlTdGFuZGFyZC9Y NThJY2gxMC5oDQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NA0KPiA+IFBsYXRmb3JtL0ludGVsL1Np bWljc09wZW5Cb2FyZFBrZy9JbmNsdWRlL1Byb3RvY29sL0lzYUFjcGkuaA0KPiA+ICBjcmVhdGUg bW9kZSAxMDA2NDQNCj4gPiBQbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvSW5jbHVk ZS9Qcm90b2NvbC9Jc2FJby5oDQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NA0KPiA+IFBsYXRmb3Jt L0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9JbmNsdWRlL1Byb3RvY29sL0xlZ2FjeTgyNTkuaA0K PiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQNCj4gPg0KPiBQbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVu Qm9hcmRQa2cvSW5jbHVkZS9SZWdpc3Rlci9YNThTbXJhbVNhdmVTdGF0ZU1hcA0KPiA+IC5oDQo+ ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NA0KPiA+IFBsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2Fy ZFBrZy9JbmNsdWRlL1NpbWljc1BsYXRmb3Jtcy5oDQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NA0K PiA+DQo+IFBsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9MaWJyYXJ5L0xvYWRMaW51 eExpYi9JYTMyL0p1bXBUb0tlcm5lbC4NCj4gPiBuYXNtDQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0 NA0KPiA+IFBsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9MaWJyYXJ5L0xvYWRMaW51 eExpYi9Mb2FkTGludXhMaWIuaA0KPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQNCj4gPiBQbGF0Zm9y bS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvTGlicmFyeS9Mb2FkTGludXhMaWIvTG9hZExpbnV4 TGliLmluZg0KPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQNCj4gPg0KPiBQbGF0Zm9ybS9JbnRlbC9T aW1pY3NPcGVuQm9hcmRQa2cvTGlicmFyeS9Mb2FkTGludXhMaWIvWDY0L0p1bXBUb0tlcm5lbC4N Cj4gPiBuYXNtDQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NA0KPiA+IFBsYXRmb3JtL0ludGVsL1Np bWljc09wZW5Cb2FyZFBrZy9MaWJyYXJ5L052VmFyc0ZpbGVMaWIvTnZWYXJzRmlsZUxpYi5oDQo+ ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NA0KPiA+IFBsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2Fy ZFBrZy9MaWJyYXJ5L052VmFyc0ZpbGVMaWIvTnZWYXJzRmlsZUxpYi5pbmYNCj4gPiAgY3JlYXRl IG1vZGUgMTAwNjQ0DQo+ID4NCj4gUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL0xp YnJhcnkvU2VyaWFsaXplVmFyaWFibGVzTGliL1NlcmlhbGl6ZVZhcmlhDQo+ID4gYmxlc0xpYi5o DQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NA0KPiA+DQo+IFBsYXRmb3JtL0ludGVsL1NpbWljc09w ZW5Cb2FyZFBrZy9MaWJyYXJ5L1NlcmlhbGl6ZVZhcmlhYmxlc0xpYi9TZXJpYWxpemVWYXJpYQ0K PiA+IGJsZXNMaWIuaW5mDQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NA0KPiA+IFBsYXRmb3JtL0lu dGVsL1NpbWljc09wZW5Cb2FyZFBrZy9QbGF0Zm9ybUR4ZS9QbGF0Zm9ybS5oDQo+ID4gIGNyZWF0 ZSBtb2RlIDEwMDY0NA0KPiA+IFBsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9QbGF0 Zm9ybUR4ZS9QbGF0Zm9ybS5pbmYNCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0DQo+ID4gUGxhdGZv cm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL1BsYXRmb3JtRHhlL1BsYXRmb3JtLnVuaQ0KPiA+ ICBjcmVhdGUgbW9kZSAxMDA2NDQNCj4gPiBQbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQ a2cvUGxhdGZvcm1EeGUvUGxhdGZvcm1Db25maWcuaA0KPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQN Cj4gPiBQbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvUGxhdGZvcm1EeGUvUGxhdGZv cm1Gb3Jtcy52ZnINCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0DQo+IFBsYXRmb3JtL0ludGVsL1Np bWljc09wZW5Cb2FyZFBrZy9QbGF0Zm9ybVBlaS9DbW9zLmgNCj4gPiAgY3JlYXRlIG1vZGUgMTAw NjQ0DQo+ID4gUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL1BsYXRmb3JtUGVpL1Bs YXRmb3JtLmgNCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0DQo+ID4gUGxhdGZvcm0vSW50ZWwvU2lt aWNzT3BlbkJvYXJkUGtnL1BsYXRmb3JtUGVpL1BsYXRmb3JtUGVpLmluZg0KPiA+ICBjcmVhdGUg bW9kZSAxMDA2NDQNCj4gPg0KPiBQbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvUG9s aWN5L0xpYnJhcnkvU2lsaWNvblBvbGljeUluaXRMaWIvU2lsaWNvblANCj4gPiBvbGljeUluaXRM aWIuaW5mDQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NA0KPiA+DQo+IFBsYXRmb3JtL0ludGVsL1Np bWljc09wZW5Cb2FyZFBrZy9Qb2xpY3kvTGlicmFyeS9TaWxpY29uUG9saWN5VXBkYXRlTGliL1Np bGljDQo+ID4gb25Qb2xpY3lVcGRhdGVMaWIuaW5mDQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NA0K PiA+IFBsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9TaW1pY3NPcGVuQm9hcmRQa2cu ZGVjDQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NA0KPiA+DQo+IFBsYXRmb3JtL0ludGVsL1NpbWlj c09wZW5Cb2FyZFBrZy9TbWJpb3NQbGF0Zm9ybUR4ZS9TbWJpb3NQbGF0Zm9ybUR4ZS5oDQo+ID4g IGNyZWF0ZSBtb2RlIDEwMDY0NA0KPiA+DQo+IFBsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2Fy ZFBrZy9TbWJpb3NQbGF0Zm9ybUR4ZS9TbWJpb3NQbGF0Zm9ybUR4ZS5pDQo+ID4gbmYNCj4gPg0K PiA+IGRpZmYgLS1naXQgYS9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvTGlicmFy eS9Mb2FkTGludXhMaWIvTGludXguYw0KPiA+IGIvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJv YXJkUGtnL0xpYnJhcnkvTG9hZExpbnV4TGliL0xpbnV4LmMNCj4gPiBuZXcgZmlsZSBtb2RlIDEw MDY0NA0KPiA+IGluZGV4IDAwMDAwMDAwMDAuLjQzYTJkZWU5ZjYNCj4gPiAtLS0gL2Rldi9udWxs DQo+ID4gKysrIGIvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL0xpYnJhcnkvTG9h ZExpbnV4TGliL0xpbnV4LmMNCj4gPiBAQCAtMCwwICsxLDY2MiBAQA0KPiA+ICsvKiogQGZpbGUN Cj4gPiArICBDb3B5cmlnaHQgKGMpIDIwMTEgLSAyMDE0IEludGVsIENvcnBvcmF0aW9uLiBBbGwg cmlnaHRzIHJlc2VydmVkLiA8QlI+DQo+ID4gKw0KPiA+ICsgIFNQRFgtTGljZW5zZS1JZGVudGlm aWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ID4gKyoqLw0KPiA+ICsNCj4gPiArI2luY2x1ZGUg IkxvYWRMaW51eExpYi5oIg0KPiA+ICsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIEEgc2ltcGxl IGNoZWNrIG9mIHRoZSBrZXJuZWwgc2V0dXAgaW1hZ2UNCj4gPiArDQo+ID4gKyAgQW4gYXNzdW1w dGlvbiBpcyBtYWRlIHRoYXQgdGhlIHNpemUgb2YgdGhlIGRhdGEgaXMgYXQgbGVhc3QgdGhlDQo+ ID4gKyAgc2l6ZSBvZiBzdHJ1Y3QgYm9vdF9wYXJhbXMuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtp bl0gICAgS2VybmVsU2V0dXAgLSBUaGUga2VybmVsIHNldHVwIGltYWdlDQo+ID4gKw0KPiA+ICsg IEByZXR2YWwgICAgRUZJX1NVQ0NFU1MgLSBUaGUga2VybmVsIHNldHVwIGxvb2tzIHZhbGlkIGFu ZCBzdXBwb3J0ZWQNCj4gPiArICBAcmV0dmFsICAgIEVGSV9JTlZBTElEX1BBUkFNRVRFUiAtIEtl cm5lbFNldHVwIHdhcyBOVUxMDQo+ID4gKyAgQHJldHZhbCAgICBFRklfVU5TVVBQT1JURUQgLSBU aGUga2VybmVsIHNldHVwIGlzIG5vdCB2YWxpZCBvciBzdXBwb3J0ZWQNCj4gPiArDQo+ID4gKyoq Lw0KPiA+ICtTVEFUSUMNCj4gPiArRUZJX1NUQVRVUw0KPiA+ICtFRklBUEkNCj4gPiArQmFzaWNL ZXJuZWxTZXR1cENoZWNrICgNCj4gPiArICBJTiBWT0lEICAgICAgICAqS2VybmVsU2V0dXANCj4g PiArICApDQo+ID4gK3sNCj4gPiArICByZXR1cm4gTG9hZExpbnV4Q2hlY2tLZXJuZWxTZXR1cChL ZXJuZWxTZXR1cCwgc2l6ZW9mIChzdHJ1Y3QNCj4gPiBib290X3BhcmFtcykpOw0KPiA+ICt9DQo+ ID4gKw0KPiA+ICsNCj4gPiArRUZJX1NUQVRVUw0KPiA+ICtFRklBUEkNCj4gPiArTG9hZExpbnV4 Q2hlY2tLZXJuZWxTZXR1cCAoDQo+ID4gKyAgSU4gVk9JRCAgICAgICAgKktlcm5lbFNldHVwLA0K PiA+ICsgIElOIFVJTlROICAgICAgIEtlcm5lbFNldHVwU2l6ZQ0KPiA+ICsgICkNCj4gPiArew0K PiA+ICsgIHN0cnVjdCBib290X3BhcmFtcyAgICAgICAgKkJwOw0KPiA+ICsNCj4gPiArICBpZiAo S2VybmVsU2V0dXAgPT0gTlVMTCkgew0KPiA+ICsgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFN RVRFUjsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIGlmIChLZXJuZWxTZXR1cFNpemUgPCBzaXpl b2YgKCpCcCkpIHsNCj4gPiArICAgIHJldHVybiBFRklfVU5TVVBQT1JURUQ7DQo+ID4gKyAgfQ0K PiA+ICsNCj4gPiArICBCcCA9IChzdHJ1Y3QgYm9vdF9wYXJhbXMqKSBLZXJuZWxTZXR1cDsNCj4g PiArDQo+ID4gKyAgaWYgKChCcC0+aGRyLnNpZ25hdHVyZSAhPSAweEFBNTUpIHx8IC8vIENoZWNr IGJvb3Qgc2VjdG9yIHNpZ25hdHVyZQ0KPiA+ICsgICAgICAoQnAtPmhkci5oZWFkZXIgIT0gU0VU VVBfSERSKSB8fA0KPiA+ICsgICAgICAoQnAtPmhkci52ZXJzaW9uIDwgMHgyMDUpIHx8IC8vIFdl IG9ubHkgc3VwcG9ydCByZWxvY2F0YWJsZSBrZXJuZWxzDQo+ID4gKyAgICAgICghQnAtPmhkci5y ZWxvY2F0YWJsZV9rZXJuZWwpDQo+ID4gKyAgICAgKSB7DQo+ID4gKyAgICByZXR1cm4gRUZJX1VO U1VQUE9SVEVEOw0KPiA+ICsgIH0gZWxzZSB7DQo+ID4gKyAgICByZXR1cm4gRUZJX1NVQ0NFU1M7 DQo+ID4gKyAgfQ0KPiA+ICt9DQo+ID4gKw0KPiA+ICsNCj4gPiArVUlOVE4NCj4gPiArRUZJQVBJ DQo+ID4gK0xvYWRMaW51eEdldEtlcm5lbFNpemUgKA0KPiA+ICsgIElOIFZPSUQgICAgICAgICpL ZXJuZWxTZXR1cCwNCj4gPiArICBJTiBVSU5UTiAgICAgICBLZXJuZWxTaXplDQo+ID4gKyAgKQ0K PiA+ICt7DQo+ID4gKyAgc3RydWN0IGJvb3RfcGFyYW1zICAgICAgICAqQnA7DQo+ID4gKw0KPiA+ ICsgIGlmIChFRklfRVJST1IgKEJhc2ljS2VybmVsU2V0dXBDaGVjayAoS2VybmVsU2V0dXApKSkg ew0KPiA+ICsgICAgcmV0dXJuIDA7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICBCcCA9IChzdHJ1 Y3QgYm9vdF9wYXJhbXMqKSBLZXJuZWxTZXR1cDsNCj4gPiArDQo+ID4gKyAgaWYgKEJwLT5oZHIu dmVyc2lvbiA+IDB4MjBhKSB7DQo+ID4gKyAgICByZXR1cm4gQnAtPmhkci5pbml0X3NpemU7DQo+ ID4gKyAgfSBlbHNlIHsNCj4gPiArICAgIC8vDQo+ID4gKyAgICAvLyBBZGQgZXh0cmEgc2l6ZSBm b3Iga2VybmVsIGRlY29tcHJlc3Npb24NCj4gPiArICAgIC8vDQo+ID4gKyAgICByZXR1cm4gMyAq IEtlcm5lbFNpemU7DQo+ID4gKyAgfQ0KPiA+ICt9DQo+ID4gKw0KPiA+ICsNCj4gPiArVk9JRCoN Cj4gPiArRUZJQVBJDQo+ID4gK0xvYWRMaW51eEFsbG9jYXRlS2VybmVsU2V0dXBQYWdlcyAoDQo+ ID4gKyAgSU4gVUlOVE4gICAgICAgICAgICAgICAgICBQYWdlcw0KPiA+ICsgICkNCj4gPiArew0K PiA+ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgU3RhdHVzOw0KPiA+ICsgIEVGSV9QSFlT SUNBTF9BRERSRVNTICAgICAgQWRkcmVzczsNCj4gPiArDQo+ID4gKyAgQWRkcmVzcyA9IEJBU0Vf MUdCOw0KPiA+ICsgIFN0YXR1cyA9IGdCUy0+QWxsb2NhdGVQYWdlcyAoDQo+ID4gKyAgICAgICAg ICAgICAgICAgIEFsbG9jYXRlTWF4QWRkcmVzcywNCj4gPiArICAgICAgICAgICAgICAgICAgRWZp TG9hZGVyRGF0YSwNCj4gPiArICAgICAgICAgICAgICAgICAgUGFnZXMsDQo+ID4gKyAgICAgICAg ICAgICAgICAgICZBZGRyZXNzDQo+ID4gKyAgICAgICAgICAgICAgICAgICk7DQo+ID4gKyAgaWYg KCFFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiArICAgIHJldHVybiAoVk9JRCopKFVJTlROKSBB ZGRyZXNzOw0KPiA+ICsgIH0gZWxzZSB7DQo+ID4gKyAgICByZXR1cm4gTlVMTDsNCj4gPiArICB9 DQo+ID4gK30NCj4gPiArDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArRUZJQVBJDQo+ID4gK0xvYWRM aW51eEluaXRpYWxpemVLZXJuZWxTZXR1cCAoDQo+ID4gKyAgSU4gVk9JRCAgICAgICAgKktlcm5l bFNldHVwDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgRUZJX1NUQVRVUyAgICAgICAgICAgICAg ICBTdGF0dXM7DQo+ID4gKyAgVUlOVE4gICAgICAgICAgICAgICAgICAgICBTZXR1cEVuZDsNCj4g PiArICBzdHJ1Y3QgYm9vdF9wYXJhbXMgICAgICAgICpCcDsNCj4gPiArDQo+ID4gKyAgU3RhdHVz ID0gQmFzaWNLZXJuZWxTZXR1cENoZWNrIChLZXJuZWxTZXR1cCk7DQo+ID4gKyAgaWYgKEVGSV9F UlJPUiAoU3RhdHVzKSkgew0KPiA+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4gPiArICB9DQo+ID4g Kw0KPiA+ICsgIEJwID0gKHN0cnVjdCBib290X3BhcmFtcyopIEtlcm5lbFNldHVwOw0KPiA+ICsN Cj4gPiArICBTZXR1cEVuZCA9IDB4MjAyICsgKEJwLT5oZHIuanVtcCAmIDB4ZmYpOw0KPiA+ICsN Cj4gPiArICAvLw0KPiA+ICsgIC8vIENsZWFyIGFsbCBidXQgdGhlIHNldHVwX2hlYWRlcg0KPiA+ ICsgIC8vDQo+ID4gKyAgWmVyb01lbSAoS2VybmVsU2V0dXAsIDB4MWYxKTsNCj4gPiArICBaZXJv TWVtICgoKFVJTlQ4ICopS2VybmVsU2V0dXApICsgU2V0dXBFbmQsIDQwOTYgLSBTZXR1cEVuZCk7 DQo+ID4gKyAgREVCVUcgKChFRklfRF9JTkZPLCAiQ2xlYXJlZCBrZXJuZWwgc2V0dXAgMC0weDFm MSwgMHglTHgtMHgxMDAwXG4iLA0KPiA+ICsgICAgKFVJTlQ2NClTZXR1cEVuZCkpOw0KPiA+ICsN Cj4gPiArICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ID4gK30NCj4gPiArDQo+ID4gK1ZPSUQqDQo+ ID4gK0VGSUFQSQ0KPiA+ICtMb2FkTGludXhBbGxvY2F0ZUtlcm5lbFBhZ2VzICgNCj4gPiArICBJ TiBWT0lEICAgICAgICAgICAgICAgICAgICpLZXJuZWxTZXR1cCwNCj4gPiArICBJTiBVSU5UTiAg ICAgICAgICAgICAgICAgIFBhZ2VzDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgRUZJX1NUQVRV UyAgICAgICAgICAgICAgICBTdGF0dXM7DQo+ID4gKyAgRUZJX1BIWVNJQ0FMX0FERFJFU1MgICAg ICBLZXJuZWxBZGRyZXNzOw0KPiA+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgTG9vcDsN Cj4gPiArICBzdHJ1Y3QgYm9vdF9wYXJhbXMgICAgICAgICpCcDsNCj4gPiArDQo+ID4gKyAgaWYg KEVGSV9FUlJPUiAoQmFzaWNLZXJuZWxTZXR1cENoZWNrIChLZXJuZWxTZXR1cCkpKSB7DQo+ID4g KyAgICByZXR1cm4gTlVMTDsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIEJwID0gKHN0cnVjdCBi b290X3BhcmFtcyopIEtlcm5lbFNldHVwOw0KPiA+ICsNCj4gPiArICBmb3IgKExvb3AgPSAxOyBM b29wIDwgNTEyOyBMb29wKyspIHsNCj4gPiArICAgIEtlcm5lbEFkZHJlc3MgPSBNdWx0VTY0eDMy ICgNCj4gPiArICAgICAgICAgICAgICAgICAgICAgIDIgKiBCcC0+aGRyLmtlcm5lbF9hbGlnbm1l bnQsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICBMb29wDQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICApOw0KPiA+ICsgICAgU3RhdHVzID0gZ0JTLT5BbGxvY2F0ZVBhZ2VzICgNCj4gPiAr ICAgICAgICAgICAgICAgICAgICBBbGxvY2F0ZUFkZHJlc3MsDQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgRWZpTG9hZGVyRGF0YSwNCj4gPiArICAgICAgICAgICAgICAgICAgICBQYWdlcywNCj4g PiArICAgICAgICAgICAgICAgICAgICAmS2VybmVsQWRkcmVzcw0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICk7DQo+ID4gKyAgICBpZiAoIUVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ICsgICAg ICByZXR1cm4gKFZPSUQqKShVSU5UTikgS2VybmVsQWRkcmVzczsNCj4gPiArICAgIH0NCj4gPiAr ICB9DQo+ID4gKw0KPiA+ICsgIHJldHVybiBOVUxMOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsNCj4g PiArVk9JRCoNCj4gPiArRUZJQVBJDQo+ID4gK0xvYWRMaW51eEFsbG9jYXRlQ29tbWFuZExpbmVQ YWdlcyAoDQo+ID4gKyAgSU4gVUlOVE4gICAgICAgICAgICAgICAgICBQYWdlcw0KPiA+ICsgICkN Cj4gPiArew0KPiA+ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgU3RhdHVzOw0KPiA+ICsg IEVGSV9QSFlTSUNBTF9BRERSRVNTICAgICAgQWRkcmVzczsNCj4gPiArDQo+ID4gKyAgQWRkcmVz cyA9IDB4YTAwMDA7DQo+ID4gKyAgU3RhdHVzID0gZ0JTLT5BbGxvY2F0ZVBhZ2VzICgNCj4gPiAr ICAgICAgICAgICAgICAgICAgQWxsb2NhdGVNYXhBZGRyZXNzLA0KPiA+ICsgICAgICAgICAgICAg ICAgICBFZmlMb2FkZXJEYXRhLA0KPiA+ICsgICAgICAgICAgICAgICAgICBQYWdlcywNCj4gPiAr ICAgICAgICAgICAgICAgICAgJkFkZHJlc3MNCj4gPiArICAgICAgICAgICAgICAgICAgKTsNCj4g PiArICBpZiAoIUVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ICsgICAgcmV0dXJuIChWT0lEKiko VUlOVE4pIEFkZHJlc3M7DQo+ID4gKyAgfSBlbHNlIHsNCj4gPiArICAgIHJldHVybiBOVUxMOw0K PiA+ICsgIH0NCj4gPiArfQ0KPiA+ICsNCj4gPiArDQo+ID4gK1ZPSUQqDQo+ID4gK0VGSUFQSQ0K PiA+ICtMb2FkTGludXhBbGxvY2F0ZUluaXRyZFBhZ2VzICgNCj4gPiArICBJTiBWT0lEICAgICAg ICAgICAgICAgICAgICpLZXJuZWxTZXR1cCwNCj4gPiArICBJTiBVSU5UTiAgICAgICAgICAgICAg ICAgIFBhZ2VzDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgRUZJX1NUQVRVUyAgICAgICAgICAg ICAgICBTdGF0dXM7DQo+ID4gKyAgRUZJX1BIWVNJQ0FMX0FERFJFU1MgICAgICBBZGRyZXNzOw0K PiA+ICsNCj4gPiArICBzdHJ1Y3QgYm9vdF9wYXJhbXMgICAgICAgICpCcDsNCj4gPiArDQo+ID4g KyAgaWYgKEVGSV9FUlJPUiAoQmFzaWNLZXJuZWxTZXR1cENoZWNrIChLZXJuZWxTZXR1cCkpKSB7 DQo+ID4gKyAgICByZXR1cm4gTlVMTDsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIEJwID0gKHN0 cnVjdCBib290X3BhcmFtcyopIEtlcm5lbFNldHVwOw0KPiA+ICsNCj4gPiArICBBZGRyZXNzID0g KEVGSV9QSFlTSUNBTF9BRERSRVNTKShVSU5UTikgQnAtPmhkci5yYW1kaXNrX21heDsNCj4gPiAr ICBTdGF0dXMgPSBnQlMtPkFsbG9jYXRlUGFnZXMgKA0KPiA+ICsgICAgICAgICAgICAgICAgICBB bGxvY2F0ZU1heEFkZHJlc3MsDQo+ID4gKyAgICAgICAgICAgICAgICAgIEVmaUxvYWRlckRhdGEs DQo+ID4gKyAgICAgICAgICAgICAgICAgIFBhZ2VzLA0KPiA+ICsgICAgICAgICAgICAgICAgICAm QWRkcmVzcw0KPiA+ICsgICAgICAgICAgICAgICAgICApOw0KPiA+ICsgIGlmICghRUZJX0VSUk9S IChTdGF0dXMpKSB7DQo+ID4gKyAgICByZXR1cm4gKFZPSUQqKShVSU5UTikgQWRkcmVzczsNCj4g PiArICB9IGVsc2Ugew0KPiA+ICsgICAgcmV0dXJuIE5VTEw7DQo+ID4gKyAgfQ0KPiA+ICt9DQo+ ID4gKw0KPiA+ICsNCj4gPiArU1RBVElDDQo+ID4gK1ZPSUQNCj4gPiArU2V0dXBMaW51eE1lbW1h cCAoDQo+ID4gKyAgSU4gT1VUIHN0cnVjdCBib290X3BhcmFtcyAgICAgICAgKkJwDQo+ID4gKyAg KQ0KPiA+ICt7DQo+ID4gKyAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0 YXR1czsNCj4gPiArICBVSU5UOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVG1wTWVt b3J5TWFwWzFdOw0KPiA+ICsgIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBN YXBLZXk7DQo+ID4gKyAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlc2Ny aXB0b3JTaXplOw0KPiA+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE ZXNjcmlwdG9yVmVyc2lvbjsNCj4gPiArICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgTWVtb3J5TWFwU2l6ZTsNCj4gPiArICBFRklfTUVNT1JZX0RFU0NSSVBUT1IgICAgICAg ICAgICAgICAgKk1lbW9yeU1hcDsNCj4gPiArICBFRklfTUVNT1JZX0RFU0NSSVBUT1IgICAgICAg ICAgICAgICAgKk1lbW9yeU1hcFB0cjsNCj4gPiArICBVSU5UTiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgSW5kZXg7DQo+ID4gKyAgc3RydWN0IGVmaV9pbmZvICAgICAgICAgICAgICAg ICAgICAgICpFZmk7DQo+ID4gKyAgc3RydWN0IGU4MjBfZW50cnkgICAgICAgICAgICAgICAgICAg ICpMYXN0RTgyMDsNCj4gPiArICBzdHJ1Y3QgZTgyMF9lbnRyeSAgICAgICAgICAgICAgICAgICAg KkU4MjA7DQo+ID4gKyAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEU4MjBF bnRyeUNvdW50Ow0KPiA+ICsgIEVGSV9QSFlTSUNBTF9BRERSRVNTICAgICAgICAgICAgICAgICBM YXN0RW5kQWRkcjsNCj4gPiArDQo+ID4gKyAgLy8NCj4gPiArICAvLyBHZXQgU3lzdGVtIE1lbW9y eU1hcFNpemUNCj4gPiArICAvLw0KPiA+ICsgIE1lbW9yeU1hcFNpemUgPSBzaXplb2YgKFRtcE1l bW9yeU1hcCk7DQo+ID4gKyAgU3RhdHVzID0gZ0JTLT5HZXRNZW1vcnlNYXAgKA0KPiA+ICsgICAg ICAgICAgICAgICAgICAmTWVtb3J5TWFwU2l6ZSwNCj4gPiArICAgICAgICAgICAgICAgICAgKEVG SV9NRU1PUllfREVTQ1JJUFRPUiAqKVRtcE1lbW9yeU1hcCwNCj4gPiArICAgICAgICAgICAgICAg ICAgJk1hcEtleSwNCj4gPiArICAgICAgICAgICAgICAgICAgJkRlc2NyaXB0b3JTaXplLA0KPiA+ ICsgICAgICAgICAgICAgICAgICAmRGVzY3JpcHRvclZlcnNpb24NCj4gPiArICAgICAgICAgICAg ICAgICAgKTsNCj4gPiArICBBU1NFUlQgKFN0YXR1cyA9PSBFRklfQlVGRkVSX1RPT19TTUFMTCk7 DQo+ID4gKyAgLy8NCj4gPiArICAvLyBFbmxhcmdlIHNwYWNlIGhlcmUsIGJlY2F1c2Ugd2Ugd2ls bCBhbGxvY2F0ZSBwb29sIG5vdy4NCj4gPiArICAvLw0KPiA+ICsgIE1lbW9yeU1hcFNpemUgKz0g RUZJX1BBR0VfU0laRTsNCj4gPiArICBTdGF0dXMgPSBnQlMtPkFsbG9jYXRlUG9vbCAoDQo+ID4g KyAgICAgICAgICAgICAgICAgIEVmaUxvYWRlckRhdGEsDQo+ID4gKyAgICAgICAgICAgICAgICAg IE1lbW9yeU1hcFNpemUsDQo+ID4gKyAgICAgICAgICAgICAgICAgIChWT0lEICoqKSAmTWVtb3J5 TWFwDQo+ID4gKyAgICAgICAgICAgICAgICAgICk7DQo+ID4gKyAgQVNTRVJUX0VGSV9FUlJPUiAo U3RhdHVzKTsNCj4gPiArDQo+ID4gKyAgLy8NCj4gPiArICAvLyBHZXQgU3lzdGVtIE1lbW9yeU1h cA0KPiA+ICsgIC8vDQo+ID4gKyAgU3RhdHVzID0gZ0JTLT5HZXRNZW1vcnlNYXAgKA0KPiA+ICsg ICAgICAgICAgICAgICAgICAmTWVtb3J5TWFwU2l6ZSwNCj4gPiArICAgICAgICAgICAgICAgICAg TWVtb3J5TWFwLA0KPiA+ICsgICAgICAgICAgICAgICAgICAmTWFwS2V5LA0KPiA+ICsgICAgICAg ICAgICAgICAgICAmRGVzY3JpcHRvclNpemUsDQo+ID4gKyAgICAgICAgICAgICAgICAgICZEZXNj cmlwdG9yVmVyc2lvbg0KPiA+ICsgICAgICAgICAgICAgICAgICApOw0KPiA+ICsgIEFTU0VSVF9F RklfRVJST1IgKFN0YXR1cyk7DQo+ID4gKw0KPiA+ICsgIExhc3RFODIwID0gTlVMTDsNCj4gPiAr ICBFODIwID0gJkJwLT5lODIwX21hcFswXTsNCj4gPiArICBFODIwRW50cnlDb3VudCA9IDA7DQo+ ID4gKyAgTGFzdEVuZEFkZHIgPSAwOw0KPiA+ICsgIE1lbW9yeU1hcFB0ciA9IE1lbW9yeU1hcDsN Cj4gPiArICBmb3IgKEluZGV4ID0gMDsgSW5kZXggPCAoTWVtb3J5TWFwU2l6ZSAvIERlc2NyaXB0 b3JTaXplKTsgSW5kZXgrKykgew0KPiA+ICsgICAgVUlOVE4gRTgyMFR5cGUgPSAwOw0KPiA+ICsN Cj4gPiArICAgIGlmIChNZW1vcnlNYXAtPk51bWJlck9mUGFnZXMgPT0gMCkgew0KPiA+ICsgICAg ICBjb250aW51ZTsNCj4gPiArICAgIH0NCj4gPiArDQo+ID4gKyAgICBzd2l0Y2goTWVtb3J5TWFw LT5UeXBlKSB7DQo+ID4gKyAgICBjYXNlIEVmaVJlc2VydmVkTWVtb3J5VHlwZToNCj4gPiArICAg IGNhc2UgRWZpUnVudGltZVNlcnZpY2VzQ29kZToNCj4gPiArICAgIGNhc2UgRWZpUnVudGltZVNl cnZpY2VzRGF0YToNCj4gPiArICAgIGNhc2UgRWZpTWVtb3J5TWFwcGVkSU86DQo+ID4gKyAgICBj YXNlIEVmaU1lbW9yeU1hcHBlZElPUG9ydFNwYWNlOg0KPiA+ICsgICAgY2FzZSBFZmlQYWxDb2Rl Og0KPiA+ICsgICAgICBFODIwVHlwZSA9IEU4MjBfUkVTRVJWRUQ7DQo+ID4gKyAgICAgIGJyZWFr Ow0KPiA+ICsNCj4gPiArICAgIGNhc2UgRWZpVW51c2FibGVNZW1vcnk6DQo+ID4gKyAgICAgIEU4 MjBUeXBlID0gRTgyMF9VTlVTQUJMRTsNCj4gPiArICAgICAgYnJlYWs7DQo+ID4gKw0KPiA+ICsg ICAgY2FzZSBFZmlBQ1BJUmVjbGFpbU1lbW9yeToNCj4gPiArICAgICAgRTgyMFR5cGUgPSBFODIw X0FDUEk7DQo+ID4gKyAgICAgIGJyZWFrOw0KPiA+ICsNCj4gPiArICAgIGNhc2UgRWZpTG9hZGVy Q29kZToNCj4gPiArICAgIGNhc2UgRWZpTG9hZGVyRGF0YToNCj4gPiArICAgIGNhc2UgRWZpQm9v dFNlcnZpY2VzQ29kZToNCj4gPiArICAgIGNhc2UgRWZpQm9vdFNlcnZpY2VzRGF0YToNCj4gPiAr ICAgIGNhc2UgRWZpQ29udmVudGlvbmFsTWVtb3J5Og0KPiA+ICsgICAgICBFODIwVHlwZSA9IEU4 MjBfUkFNOw0KPiA+ICsgICAgICBicmVhazsNCj4gPiArDQo+ID4gKyAgICBjYXNlIEVmaUFDUElN ZW1vcnlOVlM6DQo+ID4gKyAgICAgIEU4MjBUeXBlID0gRTgyMF9OVlM7DQo+ID4gKyAgICAgIGJy ZWFrOw0KPiA+ICsNCj4gPiArICAgIGRlZmF1bHQ6DQo+ID4gKyAgICAgIERFQlVHICgoDQo+ID4g KyAgICAgICAgRUZJX0RfRVJST1IsDQo+ID4gKyAgICAgICAgIkludmFsaWQgRUZJIG1lbW9yeSBk ZXNjcmlwdG9yIHR5cGUgKDB4JXgpIVxuIiwNCj4gPiArICAgICAgICBNZW1vcnlNYXAtPlR5cGUN Cj4gPiArICAgICAgICApKTsNCj4gPiArICAgICAgY29udGludWU7DQo+ID4gKyAgICB9DQo+ID4g Kw0KPiA+ICsgICAgaWYgKChMYXN0RTgyMCAhPSBOVUxMKSAmJg0KPiA+ICsgICAgICAgIChMYXN0 RTgyMC0+dHlwZSA9PSAoVUlOVDMyKSBFODIwVHlwZSkgJiYNCj4gPiArICAgICAgICAoTWVtb3J5 TWFwLT5QaHlzaWNhbFN0YXJ0ID09IExhc3RFbmRBZGRyKSkgew0KPiA+ICsgICAgICBMYXN0RTgy MC0+c2l6ZSArPSBFRklfUEFHRVNfVE9fU0laRSAoKFVJTlROKSBNZW1vcnlNYXAtDQo+ID4gPk51 bWJlck9mUGFnZXMpOw0KPiA+ICsgICAgICBMYXN0RW5kQWRkciArPSBFRklfUEFHRVNfVE9fU0la RSAoKFVJTlROKSBNZW1vcnlNYXAtDQo+ID4gPk51bWJlck9mUGFnZXMpOw0KPiA+ICsgICAgfSBl bHNlIHsNCj4gPiArICAgICAgaWYgKEU4MjBFbnRyeUNvdW50ID49IChzaXplb2YgKEJwLT5lODIw X21hcCkgLyBzaXplb2YgKEJwLQ0KPiA+ID5lODIwX21hcFswXSkpKSB7DQo+ID4gKyAgICAgICAg YnJlYWs7DQo+ID4gKyAgICAgIH0NCj4gPiArICAgICAgRTgyMC0+dHlwZSA9IChVSU5UMzIpIEU4 MjBUeXBlOw0KPiA+ICsgICAgICBFODIwLT5hZGRyID0gTWVtb3J5TWFwLT5QaHlzaWNhbFN0YXJ0 Ow0KPiA+ICsgICAgICBFODIwLT5zaXplID0gRUZJX1BBR0VTX1RPX1NJWkUgKChVSU5UTikgTWVt b3J5TWFwLQ0KPiA+ID5OdW1iZXJPZlBhZ2VzKTsNCj4gPiArICAgICAgTGFzdEU4MjAgPSBFODIw Ow0KPiA+ICsgICAgICBMYXN0RW5kQWRkciA9IEU4MjAtPmFkZHIgKyBFODIwLT5zaXplOw0KPiA+ ICsgICAgICBFODIwKys7DQo+ID4gKyAgICAgIEU4MjBFbnRyeUNvdW50Kys7DQo+ID4gKyAgICB9 DQo+ID4gKw0KPiA+ICsgICAgLy8NCj4gPiArICAgIC8vIEdldCBuZXh0IGl0ZW0NCj4gPiArICAg IC8vDQo+ID4gKyAgICBNZW1vcnlNYXAgPSAoRUZJX01FTU9SWV9ERVNDUklQVE9SICopKChVSU5U TilNZW1vcnlNYXAgKw0KPiA+IERlc2NyaXB0b3JTaXplKTsNCj4gPiArICB9DQo+ID4gKyAgQnAt PmU4MjBfZW50cmllcyA9IChVSU5UOCkgRTgyMEVudHJ5Q291bnQ7DQo+ID4gKw0KPiA+ICsgIEVm aSA9ICZCcC0+ZWZpX2luZm87DQo+ID4gKyAgRWZpLT5lZmlfc3lzdGFiID0gKFVJTlQzMikoVUlO VE4pIGdTVDsNCj4gPiArICBFZmktPmVmaV9tZW1kZXNjX3NpemUgPSAoVUlOVDMyKSBEZXNjcmlw dG9yU2l6ZTsNCj4gPiArICBFZmktPmVmaV9tZW1kZXNjX3ZlcnNpb24gPSBEZXNjcmlwdG9yVmVy c2lvbjsNCj4gPiArICBFZmktPmVmaV9tZW1tYXAgPSAoVUlOVDMyKShVSU5UTikgTWVtb3J5TWFw UHRyOw0KPiA+ICsgIEVmaS0+ZWZpX21lbW1hcF9zaXplID0gKFVJTlQzMikgTWVtb3J5TWFwU2l6 ZTsNCj4gPiArI2lmZGVmIE1ERV9DUFVfSUEzMg0KPiA+ICsgIEVmaS0+ZWZpX2xvYWRlcl9zaWdu YXR1cmUgPSBTSUdOQVRVUkVfMzIgKCdFJywgJ0wnLCAnMycsICcyJyk7DQo+ID4gKyNlbHNlDQo+ ID4gKyAgRWZpLT5lZmlfc3lzdGFiX2hpID0gKFVJTlQzMikgKCgoVUlOVDY0KShVSU5UTikgZ1NU KSA+PiAzMik7DQo+ID4gKyAgRWZpLT5lZmlfbWVtbWFwX2hpID0gKFVJTlQzMikgKCgoVUlOVDY0 KShVSU5UTikgTWVtb3J5TWFwUHRyKSA+Pg0KPiAzMik7DQo+ID4gKyAgRWZpLT5lZmlfbG9hZGVy X3NpZ25hdHVyZSA9IFNJR05BVFVSRV8zMiAoJ0UnLCAnTCcsICc2JywgJzQnKTsNCj4gPiArI2Vu ZGlmDQo+ID4gKw0KPiA+ICsgIGdCUy0+RXhpdEJvb3RTZXJ2aWNlcyAoZ0ltYWdlSGFuZGxlLCBN YXBLZXkpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsNCj4gPiArRUZJX1NUQVRVUw0KPiA+ICtFRklB UEkNCj4gPiArTG9hZExpbnV4U2V0Q29tbWFuZExpbmUgKA0KPiA+ICsgIElOIE9VVCBWT0lEICAg ICpLZXJuZWxTZXR1cCwNCj4gPiArICBJTiBDSEFSOCAgICAgICAqQ29tbWFuZExpbmUNCj4gPiAr ICApDQo+ID4gK3sNCj4gPiArICBFRklfU1RBVFVTICAgICAgICAgICAgIFN0YXR1czsNCj4gPiAr ICBzdHJ1Y3QgYm9vdF9wYXJhbXMgICAgICpCcDsNCj4gPiArDQo+ID4gKyAgU3RhdHVzID0gQmFz aWNLZXJuZWxTZXR1cENoZWNrIChLZXJuZWxTZXR1cCk7DQo+ID4gKyAgaWYgKEVGSV9FUlJPUiAo U3RhdHVzKSkgew0KPiA+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4gPiArICB9DQo+ID4gKw0KPiA+ ICsgIEJwID0gKHN0cnVjdCBib290X3BhcmFtcyopIEtlcm5lbFNldHVwOw0KPiA+ICsNCj4gPiAr ICBCcC0+aGRyLmNtZF9saW5lX3B0ciA9IChVSU5UMzIpKFVJTlROKSBDb21tYW5kTGluZTsNCj4g PiArDQo+ID4gKyAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsNCj4g PiArRUZJX1NUQVRVUw0KPiA+ICtFRklBUEkNCj4gPiArTG9hZExpbnV4U2V0SW5pdHJkICgNCj4g PiArICBJTiBPVVQgVk9JRCAgICAqS2VybmVsU2V0dXAsDQo+ID4gKyAgSU4gVk9JRCAgICAgICAg KkluaXRyZCwNCj4gPiArICBJTiBVSU5UTiAgICAgICBJbml0cmRTaXplDQo+ID4gKyAgKQ0KPiA+ ICt7DQo+ID4gKyAgRUZJX1NUQVRVUyAgICAgICAgICAgICBTdGF0dXM7DQo+ID4gKyAgc3RydWN0 IGJvb3RfcGFyYW1zICAgICAqQnA7DQo+ID4gKw0KPiA+ICsgIFN0YXR1cyA9IEJhc2ljS2VybmVs U2V0dXBDaGVjayAoS2VybmVsU2V0dXApOw0KPiA+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykp IHsNCj4gPiArICAgIHJldHVybiBTdGF0dXM7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICBCcCA9 IChzdHJ1Y3QgYm9vdF9wYXJhbXMqKSBLZXJuZWxTZXR1cDsNCj4gPiArDQo+ID4gKyAgQnAtPmhk ci5yYW1kaXNrX3N0YXJ0ID0gKFVJTlQzMikoVUlOVE4pIEluaXRyZDsNCj4gPiArICBCcC0+aGRy LnJhbWRpc2tfbGVuID0gKFVJTlQzMikgSW5pdHJkU2l6ZTsNCj4gPiArDQo+ID4gKyAgcmV0dXJu IEVGSV9TVUNDRVNTOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsNCj4gPiArU1RBVElDIFZPSUQNCj4g PiArRmluZEJpdHMgKA0KPiA+ICsgIHVuc2lnbmVkIGxvbmcgTWFzaywNCj4gPiArICBVSU5UOCAq UG9zLA0KPiA+ICsgIFVJTlQ4ICpTaXplDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgVUlOVDgg Rmlyc3QsIExlbjsNCj4gPiArDQo+ID4gKyAgRmlyc3QgPSAwOw0KPiA+ICsgIExlbiA9IDA7DQo+ ID4gKw0KPiA+ICsgIGlmIChNYXNrKSB7DQo+ID4gKyAgICB3aGlsZSAoIShNYXNrICYgMHgxKSkg ew0KPiA+ICsgICAgICBNYXNrID0gTWFzayA+PiAxOw0KPiA+ICsgICAgICBGaXJzdCsrOw0KPiA+ ICsgICAgfQ0KPiA+ICsNCj4gPiArICAgIHdoaWxlIChNYXNrICYgMHgxKSB7DQo+ID4gKyAgICAg IE1hc2sgPSBNYXNrID4+IDE7DQo+ID4gKyAgICAgIExlbisrOw0KPiA+ICsgICAgfQ0KPiA+ICsg IH0NCj4gPiArICAqUG9zID0gRmlyc3Q7DQo+ID4gKyAgKlNpemUgPSBMZW47DQo+ID4gK30NCj4g PiArDQo+ID4gKw0KPiA+ICtTVEFUSUMNCj4gPiArRUZJX1NUQVRVUw0KPiA+ICtTZXR1cEdyYXBo aWNzRnJvbUdvcCAoDQo+ID4gKyAgc3RydWN0IHNjcmVlbl9pbmZvICAgICAgICAgICAqU2ksDQo+ ID4gKyAgRUZJX0dSQVBISUNTX09VVFBVVF9QUk9UT0NPTCAqR29wDQo+ID4gKyAgKQ0KPiA+ICt7 DQo+ID4gKyAgRUZJX0dSQVBISUNTX09VVFBVVF9NT0RFX0lORk9STUFUSU9OICpJbmZvOw0KPiA+ ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0dXM7DQo+ID4gKyAg VUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpemU7DQo+ID4gKw0KPiA+ICsg IFN0YXR1cyA9IEdvcC0+UXVlcnlNb2RlKEdvcCwgR29wLT5Nb2RlLT5Nb2RlLCAmU2l6ZSwgJklu Zm8pOw0KPiA+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiArICAgIHJldHVybiBT dGF0dXM7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICAvKiBXZSBmb3VuZCBhIEdPUCAqLw0KPiA+ ICsNCj4gPiArICAvKiBFRkkgZnJhbWVidWZmZXIgKi8NCj4gPiArICBTaS0+b3JpZ192aWRlb19p c1ZHQSA9IDB4NzA7DQo+ID4gKw0KPiA+ICsgIFNpLT5vcmlnX3ggPSAwOw0KPiA+ICsgIFNpLT5v cmlnX3kgPSAwOw0KPiA+ICsgIFNpLT5vcmlnX3ZpZGVvX3BhZ2UgPSAwOw0KPiA+ICsgIFNpLT5v cmlnX3ZpZGVvX21vZGUgPSAwOw0KPiA+ICsgIFNpLT5vcmlnX3ZpZGVvX2NvbHMgPSAwOw0KPiA+ ICsgIFNpLT5vcmlnX3ZpZGVvX2xpbmVzID0gMDsNCj4gPiArICBTaS0+b3JpZ192aWRlb19lZ2Ff YnggPSAwOw0KPiA+ICsgIFNpLT5vcmlnX3ZpZGVvX3BvaW50cyA9IDA7DQo+ID4gKw0KPiA+ICsg IFNpLT5sZmJfYmFzZSA9IChVSU5UMzIpIEdvcC0+TW9kZS0+RnJhbWVCdWZmZXJCYXNlOw0KPiA+ ICsgIFNpLT5sZmJfc2l6ZSA9IChVSU5UMzIpIEdvcC0+TW9kZS0+RnJhbWVCdWZmZXJTaXplOw0K PiA+ICsgIFNpLT5sZmJfd2lkdGggPSAoVUlOVDE2KSBJbmZvLT5Ib3Jpem9udGFsUmVzb2x1dGlv bjsNCj4gPiArICBTaS0+bGZiX2hlaWdodCA9IChVSU5UMTYpIEluZm8tPlZlcnRpY2FsUmVzb2x1 dGlvbjsNCj4gPiArICBTaS0+cGFnZXMgPSAxOw0KPiA+ICsgIFNpLT52ZXNhcG1fc2VnID0gMDsN Cj4gPiArICBTaS0+dmVzYXBtX29mZiA9IDA7DQo+ID4gKw0KPiA+ICsgIGlmIChJbmZvLT5QaXhl bEZvcm1hdCA9PSBQaXhlbFJlZEdyZWVuQmx1ZVJlc2VydmVkOEJpdFBlckNvbG9yKSB7DQo+ID4g KyAgICBTaS0+bGZiX2RlcHRoID0gMzI7DQo+ID4gKyAgICBTaS0+cmVkX3NpemUgPSA4Ow0KPiA+ ICsgICAgU2ktPnJlZF9wb3MgPSAwOw0KPiA+ICsgICAgU2ktPmdyZWVuX3NpemUgPSA4Ow0KPiA+ ICsgICAgU2ktPmdyZWVuX3BvcyA9IDg7DQo+ID4gKyAgICBTaS0+Ymx1ZV9zaXplID0gODsNCj4g PiArICAgIFNpLT5ibHVlX3BvcyA9IDE2Ow0KPiA+ICsgICAgU2ktPnJzdmRfc2l6ZSA9IDg7DQo+ ID4gKyAgICBTaS0+cnN2ZF9wb3MgPSAyNDsNCj4gPiArICAgIFNpLT5sZmJfbGluZWxlbmd0aCA9 IChVSU5UMTYpIChJbmZvLT5QaXhlbHNQZXJTY2FuTGluZSAqIDQpOw0KPiA+ICsNCj4gPiArICB9 IGVsc2UgaWYgKEluZm8tPlBpeGVsRm9ybWF0ID09IFBpeGVsQmx1ZUdyZWVuUmVkUmVzZXJ2ZWQ4 Qml0UGVyQ29sb3IpIHsNCj4gPiArICAgIFNpLT5sZmJfZGVwdGggPSAzMjsNCj4gPiArICAgIFNp LT5yZWRfc2l6ZSA9IDg7DQo+ID4gKyAgICBTaS0+cmVkX3BvcyA9IDE2Ow0KPiA+ICsgICAgU2kt PmdyZWVuX3NpemUgPSA4Ow0KPiA+ICsgICAgU2ktPmdyZWVuX3BvcyA9IDg7DQo+ID4gKyAgICBT aS0+Ymx1ZV9zaXplID0gODsNCj4gPiArICAgIFNpLT5ibHVlX3BvcyA9IDA7DQo+ID4gKyAgICBT aS0+cnN2ZF9zaXplID0gODsNCj4gPiArICAgIFNpLT5yc3ZkX3BvcyA9IDI0Ow0KPiA+ICsgICAg U2ktPmxmYl9saW5lbGVuZ3RoID0gKFVJTlQxNikgKEluZm8tPlBpeGVsc1BlclNjYW5MaW5lICog NCk7DQo+ID4gKyAgfSBlbHNlIGlmIChJbmZvLT5QaXhlbEZvcm1hdCA9PSBQaXhlbEJpdE1hc2sp IHsNCj4gPiArICAgIEZpbmRCaXRzKEluZm8tPlBpeGVsSW5mb3JtYXRpb24uUmVkTWFzaywNCj4g PiArICAgICAgICAmU2ktPnJlZF9wb3MsICZTaS0+cmVkX3NpemUpOw0KPiA+ICsgICAgRmluZEJp dHMoSW5mby0+UGl4ZWxJbmZvcm1hdGlvbi5HcmVlbk1hc2ssDQo+ID4gKyAgICAgICAgJlNpLT5n cmVlbl9wb3MsICZTaS0+Z3JlZW5fc2l6ZSk7DQo+ID4gKyAgICBGaW5kQml0cyhJbmZvLT5QaXhl bEluZm9ybWF0aW9uLkJsdWVNYXNrLA0KPiA+ICsgICAgICAgICZTaS0+Ymx1ZV9wb3MsICZTaS0+ Ymx1ZV9zaXplKTsNCj4gPiArICAgIEZpbmRCaXRzKEluZm8tPlBpeGVsSW5mb3JtYXRpb24uUmVz ZXJ2ZWRNYXNrLA0KPiA+ICsgICAgICAgICZTaS0+cnN2ZF9wb3MsICZTaS0+cnN2ZF9zaXplKTsN Cj4gPiArICAgIFNpLT5sZmJfZGVwdGggPSBTaS0+cmVkX3NpemUgKyBTaS0+Z3JlZW5fc2l6ZSAr DQo+ID4gKyAgICAgIFNpLT5ibHVlX3NpemUgKyBTaS0+cnN2ZF9zaXplOw0KPiA+ICsgICAgU2kt PmxmYl9saW5lbGVuZ3RoID0gKFVJTlQxNikgKChJbmZvLT5QaXhlbHNQZXJTY2FuTGluZSAqIFNp LT5sZmJfZGVwdGgpIC8NCj4gOCk7DQo+ID4gKyAgfSBlbHNlIHsNCj4gPiArICAgIFNpLT5sZmJf ZGVwdGggPSA0Ow0KPiA+ICsgICAgU2ktPnJlZF9zaXplID0gMDsNCj4gPiArICAgIFNpLT5yZWRf cG9zID0gMDsNCj4gPiArICAgIFNpLT5ncmVlbl9zaXplID0gMDsNCj4gPiArICAgIFNpLT5ncmVl bl9wb3MgPSAwOw0KPiA+ICsgICAgU2ktPmJsdWVfc2l6ZSA9IDA7DQo+ID4gKyAgICBTaS0+Ymx1 ZV9wb3MgPSAwOw0KPiA+ICsgICAgU2ktPnJzdmRfc2l6ZSA9IDA7DQo+ID4gKyAgICBTaS0+cnN2 ZF9wb3MgPSAwOw0KPiA+ICsgICAgU2ktPmxmYl9saW5lbGVuZ3RoID0gU2ktPmxmYl93aWR0aCAv IDI7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICByZXR1cm4gU3RhdHVzOw0KPiA+ICt9DQo+ID4g Kw0KPiA+ICsNCj4gPiArU1RBVElDDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArU2V0dXBHcmFwaGlj cyAoDQo+ID4gKyAgSU4gT1VUIHN0cnVjdCBib290X3BhcmFtcyAqQnANCj4gPiArICApDQo+ID4g K3sNCj4gPiArICBFRklfU1RBVFVTICAgICAgICAgICAgICAgICAgICAgIFN0YXR1czsNCj4gPiAr ICBFRklfSEFORExFICAgICAgICAgICAgICAgICAgICAgICpIYW5kbGVCdWZmZXI7DQo+ID4gKyAg VUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgICBIYW5kbGVDb3VudDsNCj4gPiArICBVSU5U TiAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4Ow0KPiA+ICsgIEVGSV9HUkFQSElDU19P VVRQVVRfUFJPVE9DT0wgICAgKkdvcDsNCj4gPiArDQo+ID4gKyAgWmVyb01lbSAoKFZPSUQqKSZC cC0+c2NyZWVuX2luZm8sIHNpemVvZihCcC0+c2NyZWVuX2luZm8pKTsNCj4gPiArDQo+ID4gKyAg U3RhdHVzID0gZ0JTLT5Mb2NhdGVIYW5kbGVCdWZmZXIgKA0KPiA+ICsgICAgICAgICAgICAgICAg ICBCeVByb3RvY29sLA0KPiA+ICsgICAgICAgICAgICAgICAgICAmZ0VmaUdyYXBoaWNzT3V0cHV0 UHJvdG9jb2xHdWlkLA0KPiA+ICsgICAgICAgICAgICAgICAgICBOVUxMLA0KPiA+ICsgICAgICAg ICAgICAgICAgICAmSGFuZGxlQ291bnQsDQo+ID4gKyAgICAgICAgICAgICAgICAgICZIYW5kbGVC dWZmZXINCj4gPiArICAgICAgICAgICAgICAgICAgKTsNCj4gPiArICBpZiAoIUVGSV9FUlJPUiAo U3RhdHVzKSkgew0KPiA+ICsgICAgZm9yIChJbmRleCA9IDA7IEluZGV4IDwgSGFuZGxlQ291bnQ7 IEluZGV4KyspIHsNCj4gPiArICAgICAgU3RhdHVzID0gZ0JTLT5IYW5kbGVQcm90b2NvbCAoDQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICBIYW5kbGVCdWZmZXJbSW5kZXhdLA0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgJmdFZmlHcmFwaGljc091dHB1dFByb3RvY29sR3VpZCwNCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgIChWT0lEKikgJkdvcA0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgKTsNCj4gPiArICAgICAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ICsgICAg ICAgIGNvbnRpbnVlOw0KPiA+ICsgICAgICB9DQo+ID4gKw0KPiA+ICsgICAgICBTdGF0dXMgPSBT ZXR1cEdyYXBoaWNzRnJvbUdvcCAoJkJwLT5zY3JlZW5faW5mbywgR29wKTsNCj4gPiArICAgICAg aWYgKCFFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiArICAgICAgICBGcmVlUG9vbCAoSGFuZGxl QnVmZmVyKTsNCj4gPiArICAgICAgICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ID4gKyAgICAgIH0N Cj4gPiArICAgIH0NCj4gPiArDQo+ID4gKyAgICBGcmVlUG9vbCAoSGFuZGxlQnVmZmVyKTsNCj4g PiArICB9DQo+ID4gKw0KPiA+ICsgIHJldHVybiBFRklfTk9UX0ZPVU5EOw0KPiA+ICt9DQo+ID4g Kw0KPiA+ICsNCj4gPiArU1RBVElDDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArU2V0dXBMaW51eEJv b3RQYXJhbXMgKA0KPiA+ICsgIElOIE9VVCBzdHJ1Y3QgYm9vdF9wYXJhbXMgKkJwDQo+ID4gKyAg KQ0KPiA+ICt7DQo+ID4gKyAgU2V0dXBHcmFwaGljcyAoQnApOw0KPiA+ICsNCj4gPiArICBTZXR1 cExpbnV4TWVtbWFwIChCcCk7DQo+ID4gKw0KPiA+ICsgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4g PiArfQ0KPiA+ICsNCj4gPiArDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArRUZJQVBJDQo+ID4gK0xv YWRMaW51eCAoDQo+ID4gKyAgSU4gVk9JRCAgICAgICpLZXJuZWwsDQo+ID4gKyAgSU4gT1VUIFZP SUQgICpLZXJuZWxTZXR1cA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIEVGSV9TVEFUVVMgICAg ICAgICAgICAgU3RhdHVzOw0KPiA+ICsgIHN0cnVjdCBib290X3BhcmFtcyAgKkJwOw0KPiA+ICsN Cj4gPiArICBTdGF0dXMgPSBCYXNpY0tlcm5lbFNldHVwQ2hlY2sgKEtlcm5lbFNldHVwKTsNCj4g PiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gKyAgICByZXR1cm4gU3RhdHVzOw0K PiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgQnAgPSAoc3RydWN0IGJvb3RfcGFyYW1zICopIEtlcm5l bFNldHVwOw0KPiA+ICsNCj4gPiArICBpZiAoQnAtPmhkci52ZXJzaW9uIDwgMHgyMDUgfHwgIUJw LT5oZHIucmVsb2NhdGFibGVfa2VybmVsKSB7DQo+ID4gKyAgICAvLw0KPiA+ICsgICAgLy8gV2Ug b25seSBzdXBwb3J0IHJlbG9jYXRhYmxlIGtlcm5lbHMNCj4gPiArICAgIC8vDQo+ID4gKyAgICBy ZXR1cm4gRUZJX1VOU1VQUE9SVEVEOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgSW5pdExpbnV4 RGVzY3JpcHRvclRhYmxlcyAoKTsNCj4gPiArDQo+ID4gKyAgQnAtPmhkci5jb2RlMzJfc3RhcnQg PSAoVUlOVDMyKShVSU5UTikgS2VybmVsOw0KPiA+ICsgIGlmIChCcC0+aGRyLnZlcnNpb24gPj0g MHgyMGMgJiYgQnAtPmhkci5oYW5kb3Zlcl9vZmZzZXQgJiYNCj4gPiArICAgICAgKEJwLT5oZHIu eGxvYWRmbGFncyAmIChzaXplb2YgKFVJTlROKSA9PSA0ID8gQklUMiA6IEJJVDMpKSkgew0KPiA+ ICsgICAgREVCVUcgKChFRklfRF9JTkZPLCAiSnVtcGluZyB0byBrZXJuZWwgRUZJIGhhbmRvdmVy IHBvaW50IGF0IG9mcyAleFxuIiwNCj4gPiBCcC0+aGRyLmhhbmRvdmVyX29mZnNldCkpOw0KPiA+ ICsNCj4gPiArICAgIERpc2FibGVJbnRlcnJ1cHRzICgpOw0KPiA+ICsgICAgSnVtcFRvVWVmaUtl cm5lbCAoKFZPSUQqKSBnSW1hZ2VIYW5kbGUsIChWT0lEKikgZ1NULCBLZXJuZWxTZXR1cCwNCj4g PiBLZXJuZWwpOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgLy8NCj4gPiArICAvLyBPbGQga2Vy bmVscyB3aXRob3V0IEVGSSBoYW5kb3ZlciBwcm90b2NvbA0KPiA+ICsgIC8vDQo+ID4gKyAgU2V0 dXBMaW51eEJvb3RQYXJhbXMgKEtlcm5lbFNldHVwKTsNCj4gPiArDQo+ID4gKyAgREVCVUcgKChF RklfRF9JTkZPLCAiSnVtcGluZyB0byBrZXJuZWxcbiIpKTsNCj4gPiArICBEaXNhYmxlSW50ZXJy dXB0cyAoKTsNCj4gPiArICBTZXRMaW51eERlc2NyaXB0b3JUYWJsZXMgKCk7DQo+ID4gKyAgSnVt cFRvS2VybmVsIChLZXJuZWwsIChWT0lEKikgS2VybmVsU2V0dXApOw0KPiA+ICsNCj4gPiArICBy ZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ID4gK30NCj4gPiArDQo+ID4gZGlmZiAtLWdpdA0KPiA+IGEv UGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL0xpYnJhcnkvTG9hZExpbnV4TGliL0xp bnV4R2R0LmMNCj4gPiBiL1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9MaWJyYXJ5 L0xvYWRMaW51eExpYi9MaW51eEdkdC5jDQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBp bmRleCAwMDAwMDAwMDAwLi42MjRmYmMzN2NiDQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBi L1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9MaWJyYXJ5L0xvYWRMaW51eExpYi9M aW51eEdkdC5jDQo+ID4gQEAgLTAsMCArMSwxNzUgQEANCj4gPiArLyoqIEBmaWxlDQo+ID4gKyAg SW5pdGlhbGl6ZSBHRFQgZm9yIExpbnV4Lg0KPiA+ICsNCj4gPiArICBDb3B5cmlnaHQgKGMpIDIw MDYgLSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLiA8QlI+DQo+ ID4gKw0KPiA+ICsgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50 DQo+ID4gKyoqLw0KPiA+ICsNCj4gPiArI2luY2x1ZGUgIkxvYWRMaW51eExpYi5oIg0KPiA+ICsN Cj4gPiArDQo+ID4gKy8vDQo+ID4gKy8vIExvY2FsIHN0cnVjdHVyZSBkZWZpbml0aW9ucw0KPiA+ ICsvLw0KPiA+ICsNCj4gPiArI3ByYWdtYSBwYWNrICgxKQ0KPiA+ICsNCj4gPiArLy8NCj4gPiAr Ly8gR2xvYmFsIERlc2NyaXB0b3IgRW50cnkgc3RydWN0dXJlcw0KPiA+ICsvLw0KPiA+ICsNCj4g PiArdHlwZWRlZiBzdHJ1Y3QgX0dEVF9FTlRSWSB7DQo+ID4gKyAgVUlOVDE2IExpbWl0MTVfMDsN Cj4gPiArICBVSU5UMTYgQmFzZTE1XzA7DQo+ID4gKyAgVUlOVDggIEJhc2UyM18xNjsNCj4gPiAr ICBVSU5UOCAgVHlwZTsNCj4gPiArICBVSU5UOCAgTGltaXQxOV8xNl9hbmRfZmxhZ3M7DQo+ID4g KyAgVUlOVDggIEJhc2UzMV8yNDsNCj4gPiArfSBHRFRfRU5UUlk7DQo+ID4gKw0KPiA+ICt0eXBl ZGVmDQo+ID4gK3N0cnVjdCBfR0RUX0VOVFJJRVMgew0KPiA+ICsgIEdEVF9FTlRSWSBOdWxsOw0K PiA+ICsgIEdEVF9FTlRSWSBOdWxsMjsNCj4gPiArICBHRFRfRU5UUlkgTGluZWFyOw0KPiA+ICsg IEdEVF9FTlRSWSBMaW5lYXJDb2RlOw0KPiA+ICsgIEdEVF9FTlRSWSBUYXNrU2VnbWVudDsNCj4g PiArICBHRFRfRU5UUlkgU3BhcmU0Ow0KPiA+ICsgIEdEVF9FTlRSWSBTcGFyZTU7DQo+ID4gK30g R0RUX0VOVFJJRVM7DQo+ID4gKw0KPiA+ICsjcHJhZ21hIHBhY2sgKCkNCj4gPiArDQo+ID4gK1NU QVRJQyBHRFRfRU5UUklFUyAqbUdkdCA9IE5VTEw7DQo+ID4gKw0KPiA+ICsvLw0KPiA+ICsvLyBH bG9iYWwgZGVzY3JpcHRvciB0YWJsZSAoR0RUKSBUZW1wbGF0ZQ0KPiA+ICsvLw0KPiA+ICtTVEFU SUMgR0RUX0VOVFJJRVMgR2R0VGVtcGxhdGUgPSB7DQo+ID4gKyAgLy8NCj4gPiArICAvLyBOdWxs DQo+ID4gKyAgLy8NCj4gPiArICB7DQo+ID4gKyAgICAweDAsICAgICAgICAgICAgLy8gbGltaXQg MTU6MA0KPiA+ICsgICAgMHgwLCAgICAgICAgICAgIC8vIGJhc2UgMTU6MA0KPiA+ICsgICAgMHgw LCAgICAgICAgICAgIC8vIGJhc2UgMjM6MTYNCj4gPiArICAgIDB4MCwgICAgICAgICAgICAvLyB0 eXBlDQo+ID4gKyAgICAweDAsICAgICAgICAgICAgLy8gbGltaXQgMTk6MTYsIGZsYWdzDQo+ID4g KyAgICAweDAsICAgICAgICAgICAgLy8gYmFzZSAzMToyNA0KPiA+ICsgIH0sDQo+ID4gKyAgLy8N Cj4gPiArICAvLyBOdWxsMg0KPiA+ICsgIC8vDQo+ID4gKyAgew0KPiA+ICsgICAgMHgwLCAgICAg ICAgICAgIC8vIGxpbWl0IDE1OjANCj4gPiArICAgIDB4MCwgICAgICAgICAgICAvLyBiYXNlIDE1 OjANCj4gPiArICAgIDB4MCwgICAgICAgICAgICAvLyBiYXNlIDIzOjE2DQo+ID4gKyAgICAweDAs ICAgICAgICAgICAgLy8gdHlwZQ0KPiA+ICsgICAgMHgwLCAgICAgICAgICAgIC8vIGxpbWl0IDE5 OjE2LCBmbGFncw0KPiA+ICsgICAgMHgwLCAgICAgICAgICAgIC8vIGJhc2UgMzE6MjQNCj4gPiAr ICB9LA0KPiA+ICsgIC8vDQo+ID4gKyAgLy8gTGluZWFyDQo+ID4gKyAgLy8NCj4gPiArICB7DQo+ ID4gKyAgICAweDBGRkZGLCAgICAgICAgLy8gbGltaXQgMHhGRkZGRg0KPiA+ICsgICAgMHgwLCAg ICAgICAgICAgIC8vIGJhc2UgMA0KPiA+ICsgICAgMHgwLA0KPiA+ICsgICAgMHgwOUEsICAgICAg ICAgIC8vIHByZXNlbnQsIHJpbmcgMCwgZGF0YSwgZXhwYW5kLXVwLCB3cml0YWJsZQ0KPiA+ICsg ICAgMHgwQ0YsICAgICAgICAgIC8vIHBhZ2UtZ3JhbnVsYXIsIDMyLWJpdA0KPiA+ICsgICAgMHgw LA0KPiA+ICsgIH0sDQo+ID4gKyAgLy8NCj4gPiArICAvLyBMaW5lYXJDb2RlDQo+ID4gKyAgLy8N Cj4gPiArICB7DQo+ID4gKyAgICAweDBGRkZGLCAgICAgICAgLy8gbGltaXQgMHhGRkZGRg0KPiA+ ICsgICAgMHgwLCAgICAgICAgICAgIC8vIGJhc2UgMA0KPiA+ICsgICAgMHgwLA0KPiA+ICsgICAg MHgwOTIsICAgICAgICAgIC8vIHByZXNlbnQsIHJpbmcgMCwgZGF0YSwgZXhwYW5kLXVwLCB3cml0 YWJsZQ0KPiA+ICsgICAgMHgwQ0YsICAgICAgICAgIC8vIHBhZ2UtZ3JhbnVsYXIsIDMyLWJpdA0K PiA+ICsgICAgMHgwLA0KPiA+ICsgIH0sDQo+ID4gKyAgLy8NCj4gPiArICAvLyBUYXNrU2VnbWVu dA0KPiA+ICsgIC8vDQo+ID4gKyAgew0KPiA+ICsgICAgMHgwLCAgICAgICAgICAgIC8vIGxpbWl0 IDANCj4gPiArICAgIDB4MCwgICAgICAgICAgICAvLyBiYXNlIDANCj4gPiArICAgIDB4MCwNCj4g PiArICAgIDB4MDg5LCAgICAgICAgICAvLyA/DQo+ID4gKyAgICAweDA4MCwgICAgICAgICAgLy8g Pw0KPiA+ICsgICAgMHgwLA0KPiA+ICsgIH0sDQo+ID4gKyAgLy8NCj4gPiArICAvLyBTcGFyZTQN Cj4gPiArICAvLw0KPiA+ICsgIHsNCj4gPiArICAgIDB4MCwgICAgICAgICAgICAvLyBsaW1pdCAw DQo+ID4gKyAgICAweDAsICAgICAgICAgICAgLy8gYmFzZSAwDQo+ID4gKyAgICAweDAsDQo+ID4g KyAgICAweDAsICAgICAgICAgICAgLy8gcHJlc2VudCwgcmluZyAwLCBkYXRhLCBleHBhbmQtdXAs IHdyaXRhYmxlDQo+ID4gKyAgICAweDAsICAgICAgICAgICAgLy8gcGFnZS1ncmFudWxhciwgMzIt Yml0DQo+ID4gKyAgICAweDAsDQo+ID4gKyAgfSwNCj4gPiArICAvLw0KPiA+ICsgIC8vIFNwYXJl NQ0KPiA+ICsgIC8vDQo+ID4gKyAgew0KPiA+ICsgICAgMHgwLCAgICAgICAgICAgIC8vIGxpbWl0 IDANCj4gPiArICAgIDB4MCwgICAgICAgICAgICAvLyBiYXNlIDANCj4gPiArICAgIDB4MCwNCj4g PiArICAgIDB4MCwgICAgICAgICAgICAvLyBwcmVzZW50LCByaW5nIDAsIGRhdGEsIGV4cGFuZC11 cCwgd3JpdGFibGUNCj4gPiArICAgIDB4MCwgICAgICAgICAgICAvLyBwYWdlLWdyYW51bGFyLCAz Mi1iaXQNCj4gPiArICAgIDB4MCwNCj4gPiArICB9LA0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArLyoq DQo+ID4gKyAgSW5pdGlhbGl6ZSBHbG9iYWwgRGVzY3JpcHRvciBUYWJsZS4NCj4gPiArDQo+ID4g KyoqLw0KPiA+ICtWT0lEDQo+ID4gK0luaXRMaW51eERlc2NyaXB0b3JUYWJsZXMgKA0KPiA+ICsg IFZPSUQNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICAvLw0KPiA+ICsgIC8vIEFsbG9jYXRlIFJ1 bnRpbWUgRGF0YSBmb3IgdGhlIEdEVA0KPiA+ICsgIC8vDQo+ID4gKyAgbUdkdCA9IEFsbG9jYXRl UnVudGltZVBvb2wgKHNpemVvZiAoR2R0VGVtcGxhdGUpICsgOCk7DQo+ID4gKyAgQVNTRVJUICht R2R0ICE9IE5VTEwpOw0KPiA+ICsgIG1HZHQgPSBBTElHTl9QT0lOVEVSIChtR2R0LCA4KTsNCj4g PiArDQo+ID4gKyAgLy8NCj4gPiArICAvLyBJbml0aWFsaXplIGFsbCBHRFQgZW50cmllcw0KPiA+ ICsgIC8vDQo+ID4gKyAgQ29weU1lbSAobUdkdCwgJkdkdFRlbXBsYXRlLCBzaXplb2YgKEdkdFRl bXBsYXRlKSk7DQo+ID4gKw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBJbml0aWFs aXplIEdsb2JhbCBEZXNjcmlwdG9yIFRhYmxlLg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK1ZPSUQN Cj4gPiArU2V0TGludXhEZXNjcmlwdG9yVGFibGVzICgNCj4gPiArICBWT0lEDQo+ID4gKyAgKQ0K PiA+ICt7DQo+ID4gKyAgSUEzMl9ERVNDUklQVE9SIEdkdFB0cjsNCj4gPiArICBJQTMyX0RFU0NS SVBUT1IgSWR0UHRyOw0KPiA+ICsNCj4gPiArICAvLw0KPiA+ICsgIC8vIFdyaXRlIEdEVCByZWdp c3Rlcg0KPiA+ICsgIC8vDQo+ID4gKyAgR2R0UHRyLkJhc2UgPSAoVUlOVDMyKShVSU5UTikoVk9J RCopIG1HZHQ7DQo+ID4gKyAgR2R0UHRyLkxpbWl0ID0gKFVJTlQxNikgKHNpemVvZiAoR2R0VGVt cGxhdGUpIC0gMSk7DQo+ID4gKyAgQXNtV3JpdGVHZHRyICgmR2R0UHRyKTsNCj4gPiArDQo+ID4g KyAgSWR0UHRyLkJhc2UgPSAoVUlOVDMyKSAwOw0KPiA+ICsgIElkdFB0ci5MaW1pdCA9IChVSU5U MTYpIDA7DQo+ID4gKyAgQXNtV3JpdGVJZHRyICgmSWR0UHRyKTsNCj4gPiArfQ0KPiA+ICsNCj4g PiBkaWZmIC0tZ2l0DQo+ID4gYS9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvTGli cmFyeS9OdlZhcnNGaWxlTGliL0ZzQWNjZXNzLmMNCj4gPiBiL1BsYXRmb3JtL0ludGVsL1NpbWlj c09wZW5Cb2FyZFBrZy9MaWJyYXJ5L052VmFyc0ZpbGVMaWIvRnNBY2Nlc3MuYw0KPiA+IG5ldyBm aWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMDAwMC4uNmJhODc4NGNmMw0KPiA+IC0t LSAvZGV2L251bGwNCj4gPiArKysgYi9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cv TGlicmFyeS9OdlZhcnNGaWxlTGliL0ZzQWNjZXNzLmMNCj4gPiBAQCAtMCwwICsxLDUwNyBAQA0K PiA+ICsvKiogQGZpbGUNCj4gPiArICBGaWxlIFN5c3RlbSBBY2Nlc3MgZm9yIE52VmFyc0ZpbGVM aWINCj4gPiArDQo+ID4gKyAgQ29weXJpZ2h0IChjKSAyMDA0IC0gMjAxNCBJbnRlbCBDb3Jwb3Jh dGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gPEJSPg0KPiA+ICsNCj4gPiArICBTUERYLUxpY2Vu c2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiA+ICsqKi8NCj4gPiArDQo+ID4g KyNpbmNsdWRlICJOdlZhcnNGaWxlTGliLmgiDQo+ID4gKw0KPiA+ICsjaW5jbHVkZSA8TGlicmFy eS9CYXNlTWVtb3J5TGliLmg+DQo+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L0RlYnVnTGliLmg+DQo+ ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L01lbW9yeUFsbG9jYXRpb25MaWIuaD4NCj4gPiArDQo+ID4g Kw0KPiA+ICsvKioNCj4gPiArICBPcGVuIHRoZSBOdlZhcnMgZmlsZSBmb3IgcmVhZGluZyBvciB3 cml0aW5nDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtpbl0gIEZzSGFuZGxlIC0gSGFuZGxlIGZvciBh IGdFZmlTaW1wbGVGaWxlU3lzdGVtUHJvdG9jb2xHdWlkDQo+ID4gaW5zdGFuY2UNCj4gPiArICBA cGFyYW1baW5dICBSZWFkaW5nRmlsZSAtIFRSVUU6IG9wZW4gdGhlIGZpbGUgZm9yIHJlYWRpbmcu ICBGQUxTRTogd3JpdGluZw0KPiA+ICsgIEBwYXJhbVtvdXRdIE52VmFyc0ZpbGUgLSBJZiBFRklf U1VDQ0VTUyBpcyByZXR1cm5lZCwgdGhlbiB0aGlzIGlzIHVwZGF0ZWQNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgd2l0aCB0aGUgb3BlbmVkIE52VmFycyBmaWxlLg0KPiA+ICsNCj4g PiArICBAcmV0dXJuICAgICBFRklfU1VDQ0VTUyBpZiB0aGUgZmlsZSB3YXMgb3BlbmVkDQo+ID4g Kw0KPiA+ICsqKi8NCj4gPiArRUZJX1NUQVRVUw0KPiA+ICtHZXROdlZhcnNGaWxlICgNCj4gPiAr ICBJTiAgRUZJX0hBTkRMRSAgICAgICAgICAgIEZzSGFuZGxlLA0KPiA+ICsgIElOICBCT09MRUFO ICAgICAgICAgICAgICAgUmVhZGluZ0ZpbGUsDQo+ID4gKyAgT1VUIEVGSV9GSUxFX0hBTkRMRSAg ICAgICAqTnZWYXJzRmlsZQ0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIEVGSV9TVEFUVVMgICAg ICAgICAgICAgICAgICAgICAgICAgICAgU3RhdHVzOw0KPiA+ICsgIEVGSV9TSU1QTEVfRklMRV9T WVNURU1fUFJPVE9DT0wgICAgICAgKkZzOw0KPiA+ICsgIEVGSV9GSUxFX0hBTkRMRSAgICAgICAg ICAgICAgICAgICAgICAgUm9vdDsNCj4gPiArDQo+ID4gKyAgLy8NCj4gPiArICAvLyBHZXQgdGhl IEZpbGVTeXN0ZW0gcHJvdG9jb2wgb24gdGhhdCBoYW5kbGUNCj4gPiArICAvLw0KPiA+ICsgIFN0 YXR1cyA9IGdCUy0+SGFuZGxlUHJvdG9jb2wgKA0KPiA+ICsgICAgICAgICAgICAgICAgICBGc0hh bmRsZSwNCj4gPiArICAgICAgICAgICAgICAgICAgJmdFZmlTaW1wbGVGaWxlU3lzdGVtUHJvdG9j b2xHdWlkLA0KPiA+ICsgICAgICAgICAgICAgICAgICAoVk9JRCAqKikmRnMNCj4gPiArICAgICAg ICAgICAgICAgICAgKTsNCj4gPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gKyAg ICByZXR1cm4gU3RhdHVzOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgLy8NCj4gPiArICAvLyBH ZXQgdGhlIHZvbHVtZSAodGhlIHJvb3QgZGlyZWN0b3J5KQ0KPiA+ICsgIC8vDQo+ID4gKyAgU3Rh dHVzID0gRnMtPk9wZW5Wb2x1bWUgKEZzLCAmUm9vdCk7DQo+ID4gKyAgaWYgKEVGSV9FUlJPUiAo U3RhdHVzKSkgew0KPiA+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4gPiArICB9DQo+ID4gKw0KPiA+ ICsgIC8vDQo+ID4gKyAgLy8gQXR0ZW1wdCB0byBvcGVuIHRoZSBOdlZhcnMgZmlsZSBpbiB0aGUg cm9vdCBkaXJlY3RvcnkNCj4gPiArICAvLw0KPiA+ICsgIFN0YXR1cyA9IFJvb3QtPk9wZW4gKA0K PiA+ICsgICAgICAgICAgICAgICAgICAgUm9vdCwNCj4gPiArICAgICAgICAgICAgICAgICAgIE52 VmFyc0ZpbGUsDQo+ID4gKyAgICAgICAgICAgICAgICAgICBMIk52VmFycyIsDQo+ID4gKyAgICAg ICAgICAgICAgICAgICBSZWFkaW5nRmlsZSA/DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIEVG SV9GSUxFX01PREVfUkVBRCA6DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICgNCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICBFRklfRklMRV9NT0RFX0NSRUFURSB8DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgRUZJX0ZJTEVfTU9ERV9SRUFEIHwNCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICBFRklfRklMRV9NT0RFX1dSSVRFDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICks DQo+ID4gKyAgICAgICAgICAgICAgICAgICAwDQo+ID4gKyAgICAgICAgICAgICAgICAgICApOw0K PiA+ICsNCj4gPiArICByZXR1cm4gU3RhdHVzOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsNCj4gPiAr LyoqDQo+ID4gKyAgT3BlbiB0aGUgTnZWYXJzIGZpbGUgZm9yIHJlYWRpbmcgb3Igd3JpdGluZw0K PiA+ICsNCj4gPiArICBAcGFyYW1baW5dICBGaWxlIC0gVGhlIGZpbGUgdG8gaW5zcGVjdA0KPiA+ ICsgIEBwYXJhbVtvdXRdIEV4aXN0cyAtIFJldHVybnMgd2hldGhlciB0aGUgZmlsZSBleGlzdHMN Cj4gPiArICBAcGFyYW1bb3V0XSBTaXplIC0gUmV0dXJucyB0aGUgc2l6ZSBvZiB0aGUgZmlsZQ0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAoMCBpZiB0aGUgZmlsZSBkb2VzIG5vdCBleGlzdCkN Cj4gPiArDQo+ID4gKyoqLw0KPiA+ICtWT0lEDQo+ID4gK052VmFyc0ZpbGVSZWFkQ2hlY2t1cCAo DQo+ID4gKyAgSU4gIEVGSV9GSUxFX0hBTkRMRSAgICAgICAgRmlsZSwNCj4gPiArICBPVVQgQk9P TEVBTiAgICAgICAgICAgICAgICAqRXhpc3RzLA0KPiA+ICsgIE9VVCBVSU5UTiAgICAgICAgICAg ICAgICAgICpTaXplDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgRUZJX0ZJTEVfSU5GTyAgICAg ICAgICAgICAgICpGaWxlSW5mbzsNCj4gPiArDQo+ID4gKyAgKkV4aXN0cyA9IEZBTFNFOw0KPiA+ ICsgICpTaXplID0gMDsNCj4gPiArDQo+ID4gKyAgRmlsZUluZm8gPSBGaWxlSGFuZGxlR2V0SW5m byAoRmlsZSk7DQo+ID4gKyAgaWYgKEZpbGVJbmZvID09IE5VTEwpIHsNCj4gPiArICAgIHJldHVy bjsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIGlmICgoRmlsZUluZm8tPkF0dHJpYnV0ZSAmIEVG SV9GSUxFX0RJUkVDVE9SWSkgIT0gMCkgew0KPiA+ICsgICAgRnJlZVBvb2wgKEZpbGVJbmZvKTsN Cj4gPiArICAgIHJldHVybjsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgICpFeGlzdHMgPSBUUlVF Ow0KPiA+ICsgICpTaXplID0gKFVJTlROKSBGaWxlSW5mby0+RmlsZVNpemU7DQo+ID4gKw0KPiA+ ICsgIEZyZWVQb29sIChGaWxlSW5mbyk7DQo+ID4gK30NCj4gPiArDQo+ID4gKw0KPiA+ICsvKioN Cj4gPiArICBPcGVuIHRoZSBOdlZhcnMgZmlsZSBmb3IgcmVhZGluZyBvciB3cml0aW5nDQo+ID4g Kw0KPiA+ICsgIEBwYXJhbVtpbl0gIEZpbGUgLSBUaGUgZmlsZSB0byBpbnNwZWN0DQo+ID4gKyAg QHBhcmFtW291dF0gRXhpc3RzIC0gUmV0dXJucyB3aGV0aGVyIHRoZSBmaWxlIGV4aXN0cw0KPiA+ ICsgIEBwYXJhbVtvdXRdIFNpemUgLSBSZXR1cm5zIHRoZSBzaXplIG9mIHRoZSBmaWxlDQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICgwIGlmIHRoZSBmaWxlIGRvZXMgbm90IGV4aXN0KQ0KPiA+ ICsNCj4gPiArKiovDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArRmlsZUhhbmRsZUVtcHR5ICgNCj4g PiArICBJTiAgRUZJX0ZJTEVfSEFORExFICAgICAgICBGaWxlDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ ID4gKyAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICAgIFN0YXR1czsNCj4gPiArICBFRklfRklM RV9JTkZPICAgICAgICAgICAgICAgKkZpbGVJbmZvOw0KPiA+ICsNCj4gPiArICAvLw0KPiA+ICsg IC8vIFJldHJpZXZlIHRoZSBGaWxlSW5mbyBzdHJ1Y3R1cmUNCj4gPiArICAvLw0KPiA+ICsgIEZp bGVJbmZvID0gRmlsZUhhbmRsZUdldEluZm8gKEZpbGUpOw0KPiA+ICsgIGlmIChGaWxlSW5mbyA9 PSBOVUxMKSB7DQo+ID4gKyAgICByZXR1cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KPiA+ICsg IH0NCj4gPiArDQo+ID4gKyAgLy8NCj4gPiArICAvLyBJZiB0aGUgcGF0aCBpcyBhIGRpcmVjdG9y eSwgdGhlbiByZXR1cm4gYW4gZXJyb3INCj4gPiArICAvLw0KPiA+ICsgIGlmICgoRmlsZUluZm8t PkF0dHJpYnV0ZSAmIEVGSV9GSUxFX0RJUkVDVE9SWSkgIT0gMCkgew0KPiA+ICsgICAgRnJlZVBv b2wgKEZpbGVJbmZvKTsNCj4gPiArICAgIHJldHVybiBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+ ID4gKyAgfQ0KPiA+ICsNCj4gPiArICAvLw0KPiA+ICsgIC8vIElmIHRoZSBmaWxlIHNpemUgaXMg YWxyZWFkeSAwLCB0aGVuIGl0IGlzIGVtcHR5LCBzbw0KPiA+ICsgIC8vIHdlIGNhbiByZXR1cm4g c3VjY2Vzcy4NCj4gPiArICAvLw0KPiA+ICsgIGlmIChGaWxlSW5mby0+RmlsZVNpemUgPT0gMCkg ew0KPiA+ICsgICAgRnJlZVBvb2wgKEZpbGVJbmZvKTsNCj4gPiArICAgIHJldHVybiBFRklfU1VD Q0VTUzsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIC8vDQo+ID4gKyAgLy8gU2V0IHRoZSBmaWxl IHNpemUgdG8gMC4NCj4gPiArICAvLw0KPiA+ICsgIEZpbGVJbmZvLT5GaWxlU2l6ZSA9IDA7DQo+ ID4gKyAgU3RhdHVzID0gRmlsZUhhbmRsZVNldEluZm8gKEZpbGUsIEZpbGVJbmZvKTsNCj4gPiAr DQo+ID4gKyAgRnJlZVBvb2wgKEZpbGVJbmZvKTsNCj4gPiArDQo+ID4gKyAgcmV0dXJuIFN0YXR1 czsNCj4gPiArfQ0KPiA+ICsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFJlYWRzIGEgZmlsZSB0 byBhIG5ld2x5IGFsbG9jYXRlZCBidWZmZXINCj4gPiArDQo+ID4gKyAgQHBhcmFtW2luXSAgRmls ZSAtIFRoZSBmaWxlIHRvIHJlYWQNCj4gPiArICBAcGFyYW1baW5dICBSZWFkU2l6ZSAtIFRoZSBz aXplIG9mIGRhdGEgdG8gcmVhZCBmcm9tIHRoZSBmaWxlDQo+ID4gKw0KPiA+ICsgIEByZXR1cm4g ICAgIFBvaW50ZXIgdG8gYnVmZmVyIGFsbG9jYXRlZCB0byBob2xkIHRoZSBmaWxlDQo+ID4gKyAg ICAgICAgICAgICAgY29udGVudHMuICBOVUxMIGlmIGFuIGVycm9yIG9jY3VycmVkLg0KPiA+ICsN Cj4gPiArKiovDQo+ID4gK1ZPSUQqDQo+ID4gK0ZpbGVIYW5kbGVSZWFkVG9OZXdCdWZmZXIgKA0K PiA+ICsgIElOIEVGSV9GSUxFX0hBTkRMRSAgICAgICAgICAgIEZpbGVIYW5kbGUsDQo+ID4gKyAg SU4gVUlOVE4gICAgICAgICAgICAgICAgICAgICAgUmVhZFNpemUNCj4gPiArICApDQo+ID4gK3sN Cj4gPiArICBFRklfU1RBVFVTICAgICAgICAgICAgICAgICAgU3RhdHVzOw0KPiA+ICsgIFVJTlRO ICAgICAgICAgICAgICAgICAgICAgICBBY3R1YWxSZWFkU2l6ZTsNCj4gPiArICBWT0lEICAgICAg ICAgICAgICAgICAgICAgICAgKkZpbGVDb250ZW50czsNCj4gPiArDQo+ID4gKyAgQWN0dWFsUmVh ZFNpemUgPSBSZWFkU2l6ZTsNCj4gPiArICBGaWxlQ29udGVudHMgPSBBbGxvY2F0ZVBvb2wgKFJl YWRTaXplKTsNCj4gPiArICBpZiAoRmlsZUNvbnRlbnRzICE9IE5VTEwpIHsNCj4gPiArICAgIFN0 YXR1cyA9IEZpbGVIYW5kbGVSZWFkICgNCj4gPiArICAgICAgICAgICAgICAgRmlsZUhhbmRsZSwN Cj4gPiArICAgICAgICAgICAgICAgJlJlYWRTaXplLA0KPiA+ICsgICAgICAgICAgICAgICBGaWxl Q29udGVudHMNCj4gPiArICAgICAgICAgICAgICAgKTsNCj4gPiArICAgIGlmIChFRklfRVJST1Ig KFN0YXR1cykgfHwgKEFjdHVhbFJlYWRTaXplICE9IFJlYWRTaXplKSkgew0KPiA+ICsgICAgICBG cmVlUG9vbCAoRmlsZUNvbnRlbnRzKTsNCj4gPiArICAgICAgcmV0dXJuIE5VTEw7DQo+ID4gKyAg ICB9DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICByZXR1cm4gRmlsZUNvbnRlbnRzOw0KPiA+ICt9 DQo+ID4gKw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgUmVhZHMgdGhlIGNvbnRlbnRzIG9mIHRo ZSBOdlZhcnMgZmlsZSBvbiB0aGUgZmlsZSBzeXN0ZW0NCj4gPiArDQo+ID4gKyAgQHBhcmFtW2lu XSAgRnNIYW5kbGUgLSBIYW5kbGUgZm9yIGEgZ0VmaVNpbXBsZUZpbGVTeXN0ZW1Qcm90b2NvbEd1 aWQNCj4gPiBpbnN0YW5jZQ0KPiA+ICsNCj4gPiArICBAcmV0dXJuICAgICBFRklfU1RBVFVTIGJh c2VkIG9uIHRoZSBzdWNjZXNzIG9yIGZhaWx1cmUgb2YgdGhlIGZpbGUgcmVhZA0KPiA+ICsNCj4g PiArKiovDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArUmVhZE52VmFyc0ZpbGUgKA0KPiA+ICsgIElO ICBFRklfSEFORExFICAgICAgICAgICAgRnNIYW5kbGUNCj4gPiArICApDQo+ID4gK3sNCj4gPiAr ICBFRklfU1RBVFVTICAgICAgICAgICAgICAgICAgU3RhdHVzOw0KPiA+ICsgIEVGSV9GSUxFX0hB TkRMRSAgICAgICAgICAgICBGaWxlOw0KPiA+ICsgIFVJTlROICAgICAgICAgICAgICAgICAgICAg ICBGaWxlU2l6ZTsNCj4gPiArICBCT09MRUFOICAgICAgICAgICAgICAgICAgICAgRmlsZUV4aXN0 czsNCj4gPiArICBWT0lEICAgICAgICAgICAgICAgICAgICAgICAgKkZpbGVDb250ZW50czsNCj4g PiArICBFRklfSEFORExFICAgICAgICAgICAgICAgICAgU2VyaWFsaXplZFZhcmlhYmxlczsNCj4g PiArDQo+ID4gKyAgU3RhdHVzID0gR2V0TnZWYXJzRmlsZSAoRnNIYW5kbGUsIFRSVUUsICZGaWxl KTsNCj4gPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gKyAgICBERUJVRyAoKEVG SV9EX0lORk8sICJGc0FjY2Vzcy5jOiBDb3VsZCBub3Qgb3BlbiBOViBWYXJpYWJsZXMgZmlsZSBv biB0aGlzDQo+ID4gZmlsZSBzeXN0ZW1cbiIpKTsNCj4gPiArICAgIHJldHVybiBTdGF0dXM7DQo+ ID4gKyAgfQ0KPiA+ICsNCj4gPiArICBOdlZhcnNGaWxlUmVhZENoZWNrdXAgKEZpbGUsICZGaWxl RXhpc3RzLCAmRmlsZVNpemUpOw0KPiA+ICsgIGlmIChGaWxlU2l6ZSA9PSAwKSB7DQo+ID4gKyAg ICBGaWxlSGFuZGxlQ2xvc2UgKEZpbGUpOw0KPiA+ICsgICAgcmV0dXJuIEVGSV9VTlNVUFBPUlRF RDsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIEZpbGVDb250ZW50cyA9IEZpbGVIYW5kbGVSZWFk VG9OZXdCdWZmZXIgKEZpbGUsIEZpbGVTaXplKTsNCj4gPiArICBpZiAoRmlsZUNvbnRlbnRzID09 IE5VTEwpIHsNCj4gPiArICAgIEZpbGVIYW5kbGVDbG9zZSAoRmlsZSk7DQo+ID4gKyAgICByZXR1 cm4gRUZJX1VOU1VQUE9SVEVEOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgREVCVUcgKCgNCj4g PiArICAgIEVGSV9EX0lORk8sDQo+ID4gKyAgICAiRnNBY2Nlc3MuYzogUmVhZCAlTHUgYnl0ZXMg ZnJvbSBOViBWYXJpYWJsZXMgZmlsZVxuIiwNCj4gPiArICAgIChVSU5UNjQpRmlsZVNpemUNCj4g PiArICAgICkpOw0KPiA+ICsNCj4gPiArICBTdGF0dXMgPSBTZXJpYWxpemVWYXJpYWJsZXNOZXdJ bnN0YW5jZUZyb21CdWZmZXIgKA0KPiA+ICsgICAgICAgICAgICAgJlNlcmlhbGl6ZWRWYXJpYWJs ZXMsDQo+ID4gKyAgICAgICAgICAgICBGaWxlQ29udGVudHMsDQo+ID4gKyAgICAgICAgICAgICBG aWxlU2l6ZQ0KPiA+ICsgICAgICAgICAgICAgKTsNCj4gPiArICBpZiAoIVJFVFVSTl9FUlJPUiAo U3RhdHVzKSkgew0KPiA+ICsgICAgU3RhdHVzID0gU2VyaWFsaXplVmFyaWFibGVzU2V0U2VyaWFs aXplZFZhcmlhYmxlcyAoU2VyaWFsaXplZFZhcmlhYmxlcyk7DQo+ID4gKyAgfQ0KPiA+ICsNCj4g PiArICBGcmVlUG9vbCAoRmlsZUNvbnRlbnRzKTsNCj4gPiArICBGaWxlSGFuZGxlQ2xvc2UgKEZp bGUpOw0KPiA+ICsNCj4gPiArICByZXR1cm4gU3RhdHVzOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsN Cj4gPiArLyoqDQo+ID4gKyAgV3JpdGVzIGEgdmFyaWFibGUgdG8gaW5kaWNhdGUgdGhhdCB0aGUg TlYgdmFyaWFibGVzDQo+ID4gKyAgaGF2ZSBiZWVuIGxvYWRlZCBmcm9tIHRoZSBmaWxlIHN5c3Rl bS4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtTVEFUSUMNCj4gPiArVk9JRA0KPiA+ICtTZXROdlZh cnNWYXJpYWJsZSAoDQo+ID4gKyAgVk9JRA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIEJPT0xF QU4gICAgICAgICAgICAgICAgICAgICAgICBWYXJEYXRhOw0KPiA+ICsgIFVJTlROICAgICAgICAg ICAgICAgICAgICAgICAgICBTaXplOw0KPiA+ICsNCj4gPiArICAvLw0KPiA+ICsgIC8vIFdyaXRl IGEgdmFyaWFibGUgdG8gaW5kaWNhdGUgd2UndmUgYWxyZWFkeSBsb2FkZWQgdGhlDQo+ID4gKyAg Ly8gdmFyaWFibGUgZGF0YS4gIElmIGl0IGlzIGZvdW5kLCB3ZSBza2lwIHRoZSBsb2FkaW5nIG9u DQo+ID4gKyAgLy8gc3Vic2VxdWVudCBhdHRlbXB0cy4NCj4gPiArICAvLw0KPiA+ICsgIFNpemUg PSBzaXplb2YgKFZhckRhdGEpOw0KPiA+ICsgIFZhckRhdGEgPSBUUlVFOw0KPiA+ICsgIGdSVC0+ U2V0VmFyaWFibGUgKA0KPiA+ICsgICAgICAgICBMIk52VmFycyIsDQo+ID4gKyAgICAgICAgICZn RWZpU2ltcGxlRmlsZVN5c3RlbVByb3RvY29sR3VpZCwNCj4gPiArICAgICAgICAgRUZJX1ZBUklB QkxFX05PTl9WT0xBVElMRSB8DQo+ID4gKyAgICAgICAgICAgRUZJX1ZBUklBQkxFX0JPT1RTRVJW SUNFX0FDQ0VTUyB8DQo+ID4gKyAgICAgICAgICAgRUZJX1ZBUklBQkxFX1JVTlRJTUVfQUNDRVNT LA0KPiA+ICsgICAgICAgICBTaXplLA0KPiA+ICsgICAgICAgICAoVk9JRCopICZWYXJEYXRhDQo+ ID4gKyAgICAgICAgICk7DQo+ID4gK30NCj4gPiArDQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBM b2FkcyB0aGUgbm9uLXZvbGF0aWxlIHZhcmlhYmxlcyBmcm9tIHRoZSBOdlZhcnMgZmlsZSBvbiB0 aGUNCj4gPiArICBnaXZlbiBmaWxlIHN5c3RlbS4NCj4gPiArDQo+ID4gKyAgQHBhcmFtW2luXSAg RnNIYW5kbGUgLSBIYW5kbGUgZm9yIGEgZ0VmaVNpbXBsZUZpbGVTeXN0ZW1Qcm90b2NvbEd1aWQN Cj4gPiBpbnN0YW5jZQ0KPiA+ICsNCj4gPiArICBAcmV0dXJuICAgICBFRklfU1RBVFVTIGJhc2Vk IG9uIHRoZSBzdWNjZXNzIG9yIGZhaWx1cmUgb2YgbG9hZCBvcGVyYXRpb24NCj4gPiArDQo+ID4g KyoqLw0KPiA+ICtFRklfU1RBVFVTDQo+ID4gK0xvYWROdlZhcnNGcm9tRnMgKA0KPiA+ICsgIEVG SV9IQU5ETEUgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnNIYW5kbGUNCj4gPiArICApDQo+ ID4gK3sNCj4gPiArICBFRklfU1RBVFVTICAgICAgICAgICAgICAgICAgICAgU3RhdHVzOw0KPiA+ ICsgIEJPT0xFQU4gICAgICAgICAgICAgICAgICAgICAgICBWYXJEYXRhOw0KPiA+ICsgIFVJTlRO ICAgICAgICAgICAgICAgICAgICAgICAgICBTaXplOw0KPiA+ICsNCj4gPiArICBERUJVRyAoKEVG SV9EX0lORk8sICJGc0FjY2Vzcy5jOiBMb2FkTnZWYXJzRnJvbUZzXG4iKSk7DQo+ID4gKw0KPiA+ ICsgIC8vDQo+ID4gKyAgLy8gV2Ugd3JpdGUgYSB2YXJpYWJsZSB0byBpbmRpY2F0ZSB3ZSd2ZSBh bHJlYWR5IGxvYWRlZCB0aGUNCj4gPiArICAvLyB2YXJpYWJsZSBkYXRhLiAgSWYgaXQgaXMgZm91 bmQsIHdlIHNraXAgdGhlIGxvYWRpbmcuDQo+ID4gKyAgLy8NCj4gPiArICAvLyBUaGlzIGlzIHJl bGV2YW50IGlmIHRoZSBub24tdm9sYXRpbGUgdmFyaWFibGUgaGF2ZSBiZWVuDQo+ID4gKyAgLy8g YWJsZSB0byBzdXJ2aXZlIGEgcmVib290IG9wZXJhdGlvbi4gIEluIHRoYXQgY2FzZSwgd2UgZG9u J3QNCj4gPiArICAvLyB3YW50IHRvIHJlLWxvYWQgdGhlIGZpbGUgYXMgaXQgd291bGQgb3Zlcndy aXRlIG5ld2VyIGNoYW5nZXMNCj4gPiArICAvLyBtYWRlIHRvIHRoZSB2YXJpYWJsZXMuDQo+ID4g KyAgLy8NCj4gPiArICBTaXplID0gc2l6ZW9mIChWYXJEYXRhKTsNCj4gPiArICBWYXJEYXRhID0g VFJVRTsNCj4gPiArICBTdGF0dXMgPSBnUlQtPkdldFZhcmlhYmxlICgNCj4gPiArICAgICAgICAg ICAgICAgICAgTCJOdlZhcnMiLA0KPiA+ICsgICAgICAgICAgICAgICAgICAmZ0VmaVNpbXBsZUZp bGVTeXN0ZW1Qcm90b2NvbEd1aWQsDQo+ID4gKyAgICAgICAgICAgICAgICAgIE5VTEwsDQo+ID4g KyAgICAgICAgICAgICAgICAgICZTaXplLA0KPiA+ICsgICAgICAgICAgICAgICAgICAoVk9JRCop ICZWYXJEYXRhDQo+ID4gKyAgICAgICAgICAgICAgICAgICk7DQo+ID4gKyAgaWYgKFN0YXR1cyA9 PSBFRklfU1VDQ0VTUykgew0KPiA+ICsgICAgREVCVUcgKChFRklfRF9JTkZPLCAiTlYgVmFyaWFi bGVzIHdlcmUgYWxyZWFkeSBsb2FkZWRcbiIpKTsNCj4gPiArICAgIHJldHVybiBFRklfQUxSRUFE WV9TVEFSVEVEOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgLy8NCj4gPiArICAvLyBBdHRlbXB0 IHRvIHJlc3RvcmUgdGhlIHZhcmlhYmxlcyBmcm9tIHRoZSBOdlZhcnMgZmlsZS4NCj4gPiArICAv Lw0KPiA+ICsgIFN0YXR1cyA9IFJlYWROdlZhcnNGaWxlIChGc0hhbmRsZSk7DQo+ID4gKyAgaWYg KEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ICsgICAgREVCVUcgKChFRklfRF9JTkZPLCAiRXJy b3Igd2hpbGUgcmVzdG9yaW5nIE5WIHZhcmlhYmxlIGRhdGFcbiIpKTsNCj4gPiArICAgIHJldHVy biBTdGF0dXM7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICAvLw0KPiA+ICsgIC8vIFdyaXRlIGEg dmFyaWFibGUgdG8gaW5kaWNhdGUgd2UndmUgYWxyZWFkeSBsb2FkZWQgdGhlDQo+ID4gKyAgLy8g dmFyaWFibGUgZGF0YS4gIElmIGl0IGlzIGZvdW5kLCB3ZSBza2lwIHRoZSBsb2FkaW5nIG9uDQo+ ID4gKyAgLy8gc3Vic2VxdWVudCBhdHRlbXB0cy4NCj4gPiArICAvLw0KPiA+ICsgIFNldE52VmFy c1ZhcmlhYmxlKCk7DQo+ID4gKw0KPiA+ICsgIERFQlVHICgoDQo+ID4gKyAgICBFRklfRF9JTkZP LA0KPiA+ICsgICAgIkZzQWNjZXNzLmM6IFJlYWQgTlYgVmFyaWFibGVzIGZpbGUgKHNpemU9JUx1 KVxuIiwNCj4gPiArICAgIChVSU5UNjQpU2l6ZQ0KPiA+ICsgICAgKSk7DQo+ID4gKw0KPiA+ICsg IHJldHVybiBTdGF0dXM7DQo+ID4gK30NCj4gPiArDQo+ID4gKw0KPiA+ICtTVEFUSUMNCj4gPiAr UkVUVVJOX1NUQVRVUw0KPiA+ICtFRklBUEkNCj4gPiArSXRlcmF0ZVZhcmlhYmxlc0NhbGxiYWNr QWRkQWxsTnZWYXJpYWJsZXMgKA0KPiA+ICsgIElOICBWT0lEICAgICAgICAgICAgICAgICAgICAg ICAgICpDb250ZXh0LA0KPiA+ICsgIElOICBDSEFSMTYgICAgICAgICAgICAgICAgICAgICAgICpW YXJpYWJsZU5hbWUsDQo+ID4gKyAgSU4gIEVGSV9HVUlEICAgICAgICAgICAgICAgICAgICAgKlZl bmRvckd1aWQsDQo+ID4gKyAgSU4gIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAgQXR0cmli dXRlcywNCj4gPiArICBJTiAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICBEYXRhU2l6ZSwN Cj4gPiArICBJTiAgVk9JRCAgICAgICAgICAgICAgICAgICAgICAgICAqRGF0YQ0KPiA+ICsgICkN Cj4gPiArew0KPiA+ICsgIEVGSV9IQU5ETEUgIEluc3RhbmNlOw0KPiA+ICsNCj4gPiArICBJbnN0 YW5jZSA9IChFRklfSEFORExFKSBDb250ZXh0Ow0KPiA+ICsNCj4gPiArICAvLw0KPiA+ICsgIC8v IE9ubHkgc2F2ZSBub24tdm9sYXRpbGUgdmFyaWFibGVzDQo+ID4gKyAgLy8NCj4gPiArICBpZiAo KEF0dHJpYnV0ZXMgJiBFRklfVkFSSUFCTEVfTk9OX1ZPTEFUSUxFKSA9PSAwKSB7DQo+ID4gKyAg ICByZXR1cm4gUkVUVVJOX1NVQ0NFU1M7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICByZXR1cm4g U2VyaWFsaXplVmFyaWFibGVzQWRkVmFyaWFibGUgKA0KPiA+ICsgICAgICAgICAgIEluc3RhbmNl LA0KPiA+ICsgICAgICAgICAgIFZhcmlhYmxlTmFtZSwNCj4gPiArICAgICAgICAgICBWZW5kb3JH dWlkLA0KPiA+ICsgICAgICAgICAgIEF0dHJpYnV0ZXMsDQo+ID4gKyAgICAgICAgICAgRGF0YVNp emUsDQo+ID4gKyAgICAgICAgICAgRGF0YQ0KPiA+ICsgICAgICAgICAgICk7DQo+ID4gK30NCj4g PiArDQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBTYXZlcyB0aGUgbm9uLXZvbGF0aWxlIHZhcmlh YmxlcyBpbnRvIHRoZSBOdlZhcnMgZmlsZSBvbiB0aGUNCj4gPiArICBnaXZlbiBmaWxlIHN5c3Rl bS4NCj4gPiArDQo+ID4gKyAgQHBhcmFtW2luXSAgRnNIYW5kbGUgLSBIYW5kbGUgZm9yIGEgZ0Vm aVNpbXBsZUZpbGVTeXN0ZW1Qcm90b2NvbEd1aWQNCj4gPiBpbnN0YW5jZQ0KPiA+ICsNCj4gPiAr ICBAcmV0dXJuICAgICBFRklfU1RBVFVTIGJhc2VkIG9uIHRoZSBzdWNjZXNzIG9yIGZhaWx1cmUg b2YgbG9hZCBvcGVyYXRpb24NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtFRklfU1RBVFVTDQo+ID4g K1NhdmVOdlZhcnNUb0ZzICgNCj4gPiArICBFRklfSEFORExFICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEZzSGFuZGxlDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgRUZJX1NUQVRVUyAgICAg ICAgICAgICAgICAgIFN0YXR1czsNCj4gPiArICBFRklfRklMRV9IQU5ETEUgICAgICAgICAgICAg RmlsZTsNCj4gPiArICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgV3JpdGVTaXplOw0KPiA+ ICsgIFVJTlROICAgICAgICAgICAgICAgICAgICAgICBWYXJpYWJsZURhdGFTaXplOw0KPiA+ICsg IFZPSUQgICAgICAgICAgICAgICAgICAgICAgICAqVmFyaWFibGVEYXRhOw0KPiA+ICsgIEVGSV9I QU5ETEUgICAgICAgICAgICAgICAgICBTZXJpYWxpemVkVmFyaWFibGVzOw0KPiA+ICsNCj4gPiAr ICBTZXJpYWxpemVkVmFyaWFibGVzID0gTlVMTDsNCj4gPiArDQo+ID4gKyAgU3RhdHVzID0gU2Vy aWFsaXplVmFyaWFibGVzTmV3SW5zdGFuY2UgKCZTZXJpYWxpemVkVmFyaWFibGVzKTsNCj4gPiAr ICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gKyAgICByZXR1cm4gU3RhdHVzOw0KPiA+ ICsgIH0NCj4gPiArDQo+ID4gKyAgU3RhdHVzID0gU2VyaWFsaXplVmFyaWFibGVzSXRlcmF0ZVN5 c3RlbVZhcmlhYmxlcyAoDQo+ID4gKyAgICAgICAgICAgICBJdGVyYXRlVmFyaWFibGVzQ2FsbGJh Y2tBZGRBbGxOdlZhcmlhYmxlcywNCj4gPiArICAgICAgICAgICAgIChWT0lEKikgU2VyaWFsaXpl ZFZhcmlhYmxlcw0KPiA+ICsgICAgICAgICAgICAgKTsNCj4gPiArICBpZiAoRUZJX0VSUk9SIChT dGF0dXMpKSB7DQo+ID4gKyAgICByZXR1cm4gU3RhdHVzOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4g KyAgVmFyaWFibGVEYXRhID0gTlVMTDsNCj4gPiArICBWYXJpYWJsZURhdGFTaXplID0gMDsNCj4g PiArICBTdGF0dXMgPSBTZXJpYWxpemVWYXJpYWJsZXNUb0J1ZmZlciAoDQo+ID4gKyAgICAgICAg ICAgICBTZXJpYWxpemVkVmFyaWFibGVzLA0KPiA+ICsgICAgICAgICAgICAgTlVMTCwNCj4gPiAr ICAgICAgICAgICAgICZWYXJpYWJsZURhdGFTaXplDQo+ID4gKyAgICAgICAgICAgICApOw0KPiA+ ICsgIGlmIChTdGF0dXMgPT0gUkVUVVJOX0JVRkZFUl9UT09fU01BTEwpIHsNCj4gPiArICAgIFZh cmlhYmxlRGF0YSA9IEFsbG9jYXRlUG9vbCAoVmFyaWFibGVEYXRhU2l6ZSk7DQo+ID4gKyAgICBp ZiAoVmFyaWFibGVEYXRhID09IE5VTEwpIHsNCj4gPiArICAgICAgU3RhdHVzID0gRUZJX09VVF9P Rl9SRVNPVVJDRVM7DQo+ID4gKyAgICB9IGVsc2Ugew0KPiA+ICsgICAgICBTdGF0dXMgPSBTZXJp YWxpemVWYXJpYWJsZXNUb0J1ZmZlciAoDQo+ID4gKyAgICAgICAgICAgICAgICAgU2VyaWFsaXpl ZFZhcmlhYmxlcywNCj4gPiArICAgICAgICAgICAgICAgICBWYXJpYWJsZURhdGEsDQo+ID4gKyAg ICAgICAgICAgICAgICAgJlZhcmlhYmxlRGF0YVNpemUNCj4gPiArICAgICAgICAgICAgICAgICAp Ow0KPiA+ICsgICAgfQ0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgU2VyaWFsaXplVmFyaWFibGVz RnJlZUluc3RhbmNlIChTZXJpYWxpemVkVmFyaWFibGVzKTsNCj4gPiArDQo+ID4gKyAgaWYgKEVG SV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4gPiArICB9DQo+ ID4gKw0KPiA+ICsgIC8vDQo+ID4gKyAgLy8gT3BlbiB0aGUgTnZWYXJzIGZpbGUgZm9yIHdyaXRp bmcuDQo+ID4gKyAgLy8NCj4gPiArICBTdGF0dXMgPSBHZXROdlZhcnNGaWxlIChGc0hhbmRsZSwg RkFMU0UsICZGaWxlKTsNCj4gPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gKyAg ICBERUJVRyAoKEVGSV9EX0lORk8sICJGc0FjY2Vzcy5jOiBVbmFibGUgdG8gb3BlbiBmaWxlIHRv IHNhdmVkIE5WDQo+ID4gVmFyaWFibGVzXG4iKSk7DQo+ID4gKyAgICByZXR1cm4gU3RhdHVzOw0K PiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgLy8NCj4gPiArICAvLyBFbXB0eSB0aGUgc3RhcnRpbmcg ZmlsZSBjb250ZW50cy4NCj4gPiArICAvLw0KPiA+ICsgIFN0YXR1cyA9IEZpbGVIYW5kbGVFbXB0 eSAoRmlsZSk7DQo+ID4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ICsgICAgRmls ZUhhbmRsZUNsb3NlIChGaWxlKTsNCj4gPiArICAgIHJldHVybiBTdGF0dXM7DQo+ID4gKyAgfQ0K PiA+ICsNCj4gPiArICBXcml0ZVNpemUgPSBWYXJpYWJsZURhdGFTaXplOw0KPiA+ICsgIFN0YXR1 cyA9IEZpbGVIYW5kbGVXcml0ZSAoRmlsZSwgJldyaXRlU2l6ZSwgVmFyaWFibGVEYXRhKTsNCj4g PiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gKyAgICByZXR1cm4gU3RhdHVzOw0K PiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgRmlsZUhhbmRsZUNsb3NlIChGaWxlKTsNCj4gPiArDQo+ ID4gKyAgaWYgKCFFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiArICAgIC8vDQo+ID4gKyAgICAv LyBXcml0ZSBhIHZhcmlhYmxlIHRvIGluZGljYXRlIHdlJ3ZlIGFscmVhZHkgbG9hZGVkIHRoZQ0K PiA+ICsgICAgLy8gdmFyaWFibGUgZGF0YS4gIElmIGl0IGlzIGZvdW5kLCB3ZSBza2lwIHRoZSBs b2FkaW5nIG9uDQo+ID4gKyAgICAvLyBzdWJzZXF1ZW50IGF0dGVtcHRzLg0KPiA+ICsgICAgLy8N Cj4gPiArICAgIFNldE52VmFyc1ZhcmlhYmxlKCk7DQo+ID4gKw0KPiA+ICsJREVCVUcgKChFRklf RF9JTkZPLCAiU2F2ZWQgTlYgVmFyaWFibGVzIHRvIE52VmFycyBmaWxlXG4iKSk7DQo+ID4gKyAg fQ0KPiA+ICsNCj4gPiArICByZXR1cm4gU3RhdHVzOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsNCj4g PiBkaWZmIC0tZ2l0DQo+ID4gYS9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvTGli cmFyeS9OdlZhcnNGaWxlTGliL052VmFyc0ZpbGVMaWIuYw0KPiA+IGIvUGxhdGZvcm0vSW50ZWwv U2ltaWNzT3BlbkJvYXJkUGtnL0xpYnJhcnkvTnZWYXJzRmlsZUxpYi9OdlZhcnNGaWxlTGliLmMN Cj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAwMDAuLmY2MGZiYzYx MTINCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrDQo+ID4gYi9QbGF0Zm9ybS9JbnRlbC9TaW1p Y3NPcGVuQm9hcmRQa2cvTGlicmFyeS9OdlZhcnNGaWxlTGliL052VmFyc0ZpbGVMaWIuYw0KPiA+ IEBAIC0wLDAgKzEsNzcgQEANCj4gPiArLyoqIEBmaWxlDQo+ID4gKyAgU2F2ZSBOb24tVm9sYXRp bGUgVmFyaWFibGVzIHRvIGEgZmlsZSBzeXN0ZW0uDQo+ID4gKw0KPiA+ICsgIENvcHlyaWdodCAo YykgMjAwOSBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gPEJSPg0KPiA+ ICsNCj4gPiArICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0K PiA+ICsqKi8NCj4gPiArDQo+ID4gKyNpbmNsdWRlICJOdlZhcnNGaWxlTGliLmgiDQo+ID4gKyNp bmNsdWRlIDxMaWJyYXJ5L0RlYnVnTGliLmg+DQo+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L052VmFy c0ZpbGVMaWIuaD4NCj4gPiArDQo+ID4gK0VGSV9IQU5ETEUgICAgbU52VmFyc0ZpbGVMaWJGc0hh bmRsZSA9IE5VTEw7DQo+ID4gKw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgQXR0ZW1wdHMgdG8g Y29ubmVjdCB0aGUgTnZWYXJzRmlsZUxpYiB0byB0aGUgc3BlY2lmaWVkIGZpbGUgc3lzdGVtLg0K PiA+ICsNCj4gPiArICBAcGFyYW1baW5dICBGc0hhbmRsZSAtIEhhbmRsZSBmb3IgYSBnRWZpU2lt cGxlRmlsZVN5c3RlbVByb3RvY29sR3VpZA0KPiA+IGluc3RhbmNlDQo+ID4gKw0KPiA+ICsgIEBy ZXR1cm4gICAgIFRoZSBFRklfU1RBVFVTIHdoaWxlIGF0dGVtcHRpbmcgdG8gY29ubmVjdCB0aGUg TnZWYXJzRmlsZUxpYg0KPiA+ICsgICAgICAgICAgICAgIHRvIHRoZSBmaWxlIHN5c3RlbSBpbnN0 YW5jZS4NCj4gPiArICBAcmV0dmFsICAgICBFRklfU1VDQ0VTUyAtIFRoZSBnaXZlbiBmaWxlIHN5 c3RlbSB3YXMgY29ubmVjdGVkIHN1Y2Nlc3NmdWxseQ0KPiA+ICsNCj4gPiArKiovDQo+ID4gK0VG SV9TVEFUVVMNCj4gPiArRUZJQVBJDQo+ID4gK0Nvbm5lY3ROdlZhcnNUb0ZpbGVTeXN0ZW0gKA0K PiA+ICsgIElOIEVGSV9IQU5ETEUgICAgRnNIYW5kbGUNCj4gPiArICApDQo+ID4gK3sNCj4gPiAr ICBFRklfU1RBVFVTIFN0YXR1czsNCj4gPiArDQo+ID4gKyAgLy8NCj4gPiArICAvLyBXZSBtaWdo dCBmYWlsIHRvIGxvYWQgdGhlIHZhcmlhYmxlLCBzaW5jZSB0aGUgZmlsZSBzeXN0ZW0gaW5pdGlh bGx5DQo+ID4gKyAgLy8gd2lsbCBub3QgaGF2ZSB0aGUgTnZWYXJzIGZpbGUuDQo+ID4gKyAgLy8N Cj4gPiArICBMb2FkTnZWYXJzRnJvbUZzIChGc0hhbmRsZSk7DQo+ID4gKw0KPiA+ICsgIC8vDQo+ ID4gKyAgLy8gV2UgbXVzdCBiZSBhYmxlIHRvIHNhdmUgdGhlIHZhcmlhYmxlcyBzdWNjZXNzZnVs bHkgdG8gdGhlIGZpbGUgc3lzdGVtDQo+ID4gKyAgLy8gdG8gaGF2ZSBjb25uZWN0ZWQgc3VjY2Vz c2Z1bGx5Lg0KPiA+ICsgIC8vDQo+ID4gKyAgU3RhdHVzID0gU2F2ZU52VmFyc1RvRnMgKEZzSGFu ZGxlKTsNCj4gPiArICBpZiAoIUVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ICsgICAgbU52VmFy c0ZpbGVMaWJGc0hhbmRsZSA9IEZzSGFuZGxlOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgcmV0 dXJuIFN0YXR1czsNCj4gPiArfQ0KPiA+ICsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFVwZGF0 ZSBub24tdm9sYXRpbGUgdmFyaWFibGVzIHN0b3JlZCBvbiB0aGUgZmlsZSBzeXN0ZW0uDQo+ID4g Kw0KPiA+ICsgIEByZXR1cm4gICAgIFRoZSBFRklfU1RBVFVTIHdoaWxlIGF0dGVtcHRpbmcgdG8g dXBkYXRlIHRoZSB2YXJpYWJsZSBvbg0KPiA+ICsgICAgICAgICAgICAgIHRoZSBjb25uZWN0ZWQg ZmlsZSBzeXN0ZW0uDQo+ID4gKyAgQHJldHZhbCAgICAgRUZJX1NVQ0NFU1MgLSBUaGUgbm9uLXZv bGF0aWxlIHZhcmlhYmxlcyB3ZXJlIHNhdmVkIHRvIHRoZSBkaXNrDQo+ID4gKyAgQHJldHZhbCAg ICAgRUZJX05PVF9TVEFSVEVEIC0gQSBmaWxlIHN5c3RlbSBoYXMgbm90IGJlZW4gY29ubmVjdGVk DQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArRUZJX1NUQVRVUw0KPiA+ICtFRklBUEkNCj4gPiArVXBk YXRlTnZWYXJzT25GaWxlU3lzdGVtICgNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBpZiAobU52 VmFyc0ZpbGVMaWJGc0hhbmRsZSA9PSBOVUxMKSB7DQo+ID4gKyAgICAvLw0KPiA+ICsgICAgLy8g QSBmaWxlIHN5c3RlbSBoYWQgbm90IGJlZW4gY29ubmVjdGVkIHRvIHRoZSBsaWJyYXJ5Lg0KPiA+ ICsgICAgLy8NCj4gPiArICAgIHJldHVybiBFRklfTk9UX1NUQVJURUQ7DQo+ID4gKyAgfSBlbHNl IHsNCj4gPiArICAgIHJldHVybiBTYXZlTnZWYXJzVG9GcyAobU52VmFyc0ZpbGVMaWJGc0hhbmRs ZSk7DQo+ID4gKyAgfQ0KPiA+ICt9DQo+ID4gKw0KPiA+ICsNCj4gPiBkaWZmIC0tZ2l0DQo+ID4N Cj4gYS9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvTGlicmFyeS9TZXJpYWxpemVW YXJpYWJsZXNMaWIvU2VyaWFsaXplVmENCj4gPiByaWFibGVzTGliLmMNCj4gPg0KPiBiL1BsYXRm b3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9MaWJyYXJ5L1NlcmlhbGl6ZVZhcmlhYmxlc0xp Yi9TZXJpYWxpemVWYQ0KPiA+IHJpYWJsZXNMaWIuYw0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0 DQo+ID4gaW5kZXggMDAwMDAwMDAwMC4uYzMyYTk3ODU1MA0KPiA+IC0tLSAvZGV2L251bGwNCj4g PiArKysNCj4gPg0KPiBiL1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9MaWJyYXJ5 L1NlcmlhbGl6ZVZhcmlhYmxlc0xpYi9TZXJpYWxpemVWYQ0KPiA+IHJpYWJsZXNMaWIuYw0KPiA+ IEBAIC0wLDAgKzEsODY5IEBADQo+ID4gKy8qKiBAZmlsZQ0KPiA+ICsgIFNlcmlhbGl6ZSBWYXJp YWJsZXMgTGlicmFyeSBpbXBsZW1lbnRhdGlvbg0KPiA+ICsNCj4gPiArICBDb3B5cmlnaHQgKGMp IDIwMDQgLSAyMDExIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLiA8QlI+ DQo+ID4gKw0KPiA+ICsgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0 ZW50DQo+ID4gKyoqLw0KPiA+ICsNCj4gPiArI2luY2x1ZGUgIlNlcmlhbGl6ZVZhcmlhYmxlc0xp Yi5oIg0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgU2VyaWFsaXphdGlvbiBmb3JtYXQ6DQo+ID4g Kw0KPiA+ICsgIFRoZSBTZXJpYWxpemVWYXJpYWJsZXNMaWIgaW50ZXJmYWNlIGRvZXMgbm90IHNw ZWNpZnkgYSBmb3JtYXQNCj4gPiArICBmb3IgdGhlIHNlcmlhbGl6YXRpb24gb2YgdGhlIHZhcmlh YmxlIGRhdGEuICBUaGlzIGxpYnJhcnkgdXNlcw0KPiA+ICsgIGEgcGFja2VkIGFycmF5IG9mIGEg bm9uLXVuaWZvcm1seSBzaXplZCBkYXRhIHN0cnVjdHVyZSBlbGVtZW50cy4NCj4gPiArDQo+ID4g KyAgRWFjaCB2YXJpYWJsZSBpcyBzdG9yZWQgKHBhY2tlZCkgYXM6DQo+ID4gKyAgICBVSU5UMzIg ICBWZW5kb3JOYW1lU2l6ZTsgIC8vIE5hbWUgc2l6ZSBpbiBieXRlcw0KPiA+ICsgICAgQ0hBUjE2 ICAgVmVuZG9yTmFtZVs/XTsgICAvLyBUaGUgdmFyaWFibGUgdW5pY29kZSBuYW1lIGluY2x1ZGlu ZyB0aGUNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbnVsbCB0ZXJtaW5h dGluZyBjaGFyYWN0ZXIuDQo+ID4gKyAgICBFRklfR1VJRCBWZW5kb3JHdWlkOyAgICAgIC8vIFRo ZSB2YXJpYWJsZSBHVUlEDQo+ID4gKyAgICBVSU5UMzIgICBEYXRhU2l6ZTsgICAgICAgIC8vIFRo ZSBzaXplIG9mIHZhcmlhYmxlIGRhdGEgaW4gYnl0ZXMNCj4gPiArICAgIFVJTlQ4ICAgIERhdGFb P107ICAgICAgICAgLy8gVGhlIHZhcmlhYmxlIGRhdGENCj4gPiArDQo+ID4gKyoqLw0KPiA+ICsN Cj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFVucGFja3MgdGhlIG5leHQgdmFyaWFibGUgZnJvbSB0 aGUgYnVmZmVyDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtpbl0gIEJ1ZmZlciAtIEJ1ZmZlciBwb2lu dGluZyB0byB0aGUgbmV4dCB2YXJpYWJsZSBpbnN0YW5jZQ0KPiA+ICsgICAgICAgICAgICAgICAg T24gc3Vic2VxdWVudCBjYWxscywgdGhlIHBvaW50ZXIgc2hvdWxkIGJlIGluY3JlbWVudGVkDQo+ ID4gKyAgICAgICAgICAgICAgICBieSB0aGUgcmV0dXJuZWQgU2l6ZVVzZWQgdmFsdWUuDQo+ID4g KyAgQHBhcmFtW2luXSAgTWF4U2l6ZSAtIE1heCBhbGxvd2FibGUgc2l6ZSBmb3IgdGhlIHZhcmlh YmxlIGRhdGENCj4gPiArICAgICAgICAgICAgICAgIE9uIHN1YnNlcXVlbnQgY2FsbHMsIHRoaXMg c2hvdWxkIGJlIGRlY3JlbWVudGVkDQo+ID4gKyAgICAgICAgICAgICAgICBieSB0aGUgcmV0dXJu ZWQgU2l6ZVVzZWQgdmFsdWUuDQo+ID4gKyAgQHBhcmFtW291dF0gTmFtZSAtIFZhcmlhYmxlIG5h bWUgc3RyaW5nIChhZGRyZXNzIGluIEJ1ZmZlcikNCj4gPiArICBAcGFyYW1bb3V0XSBOYW1lU2l6 ZSAtIFNpemUgb2YgTmFtZSBpbiBieXRlcw0KPiA+ICsgIEBwYXJhbVtvdXRdIEd1aWQgLSBHVUlE IG9mIHZhcmlhYmxlIChhZGRyZXNzIGluIEJ1ZmZlcikNCj4gPiArICBAcGFyYW1bb3V0XSBBdHRy aWJ1dGVzIC0gQXR0cmlidXRlcyBvZiB2YXJpYWJsZQ0KPiA+ICsgIEBwYXJhbVtvdXRdIERhdGEg LSBCdWZmZXIgY29udGFpbmluZyBEYXRhIGZvciB2YXJpYWJsZSAoYWRkcmVzcyBpbiBCdWZmZXIp DQo+ID4gKyAgQHBhcmFtW291dF0gRGF0YVNpemUgLSBTaXplIG9mIERhdGEgaW4gYnl0ZXMNCj4g PiArICBAcGFyYW1bb3V0XSBTaXplVXNlZCAtIFRvdGFsIHNpemUgdXNlZCBmb3IgdGhpcyB2YXJp YWJsZSBpbnN0YW5jZSBpbiBCdWZmZXINCj4gPiArDQo+ID4gKyAgQHJldHVybiAgICAgRUZJX1NU QVRVUyBiYXNlZCBvbiB0aGUgc3VjY2VzcyBvciBmYWlsdXJlIG9mIHRoZSBvcGVyYXRpb24NCj4g PiArDQo+ID4gKyoqLw0KPiA+ICtTVEFUSUMNCj4gPiArRUZJX1NUQVRVUw0KPiA+ICtVbnBhY2tW YXJpYWJsZUZyb21CdWZmZXIgKA0KPiA+ICsgIElOICBWT0lEICAgICAqQnVmZmVyLA0KPiA+ICsg IElOICBVSU5UTiAgICBNYXhTaXplLA0KPiA+ICsgIE9VVCBDSEFSMTYgICAqKk5hbWUsDQo+ID4g KyAgT1VUIFVJTlQzMiAgICpOYW1lU2l6ZSwNCj4gPiArICBPVVQgRUZJX0dVSUQgKipHdWlkLA0K PiA+ICsgIE9VVCBVSU5UMzIgICAqQXR0cmlidXRlcywNCj4gPiArICBPVVQgVUlOVDMyICAgKkRh dGFTaXplLA0KPiA+ICsgIE9VVCBWT0lEICAgICAqKkRhdGEsDQo+ID4gKyAgT1VUIFVJTlROICAg ICpTaXplVXNlZA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIFVJTlQ4ICAqQnl0ZVB0cjsNCj4g PiArICBVSU5UTiAgT2Zmc2V0Ow0KPiA+ICsNCj4gPiArICBCeXRlUHRyID0gKFVJTlQ4KilCdWZm ZXI7DQo+ID4gKyAgT2Zmc2V0ID0gMDsNCj4gPiArDQo+ID4gKyAgKk5hbWVTaXplID0gKihVSU5U MzIqKSAoQnl0ZVB0ciArIE9mZnNldCk7DQo+ID4gKyAgT2Zmc2V0ID0gT2Zmc2V0ICsgc2l6ZW9m IChVSU5UMzIpOw0KPiA+ICsNCj4gPiArICBpZiAoT2Zmc2V0ID4gTWF4U2l6ZSkgew0KPiA+ICsg ICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsg ICpOYW1lID0gKENIQVIxNiopIChCeXRlUHRyICsgT2Zmc2V0KTsNCj4gPiArICBPZmZzZXQgPSBP ZmZzZXQgKyAqKFVJTlQzMiopQnl0ZVB0cjsNCj4gPiArICBpZiAoT2Zmc2V0ID4gTWF4U2l6ZSkg ew0KPiA+ICsgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCj4gPiArICB9DQo+ID4g Kw0KPiA+ICsgICpHdWlkID0gKEVGSV9HVUlEKikgKEJ5dGVQdHIgKyBPZmZzZXQpOw0KPiA+ICsg IE9mZnNldCA9IE9mZnNldCArIHNpemVvZiAoRUZJX0dVSUQpOw0KPiA+ICsgIGlmIChPZmZzZXQg PiBNYXhTaXplKSB7DQo+ID4gKyAgICByZXR1cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KPiA+ ICsgIH0NCj4gPiArDQo+ID4gKyAgKkF0dHJpYnV0ZXMgPSAqKFVJTlQzMiopIChCeXRlUHRyICsg T2Zmc2V0KTsNCj4gPiArICBPZmZzZXQgPSBPZmZzZXQgKyBzaXplb2YgKFVJTlQzMik7DQo+ID4g KyAgaWYgKE9mZnNldCA+IE1heFNpemUpIHsNCj4gPiArICAgIHJldHVybiBFRklfSU5WQUxJRF9Q QVJBTUVURVI7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICAqRGF0YVNpemUgPSAqKFVJTlQzMiop IChCeXRlUHRyICsgT2Zmc2V0KTsNCj4gPiArICBPZmZzZXQgPSBPZmZzZXQgKyBzaXplb2YgKFVJ TlQzMik7DQo+ID4gKyAgaWYgKE9mZnNldCA+IE1heFNpemUpIHsNCj4gPiArICAgIHJldHVybiBF RklfSU5WQUxJRF9QQVJBTUVURVI7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICAqRGF0YSA9IChW T0lEKikgKEJ5dGVQdHIgKyBPZmZzZXQpOw0KPiA+ICsgIE9mZnNldCA9IE9mZnNldCArICpEYXRh U2l6ZTsNCj4gPiArICBpZiAoT2Zmc2V0ID4gTWF4U2l6ZSkgew0KPiA+ICsgICAgcmV0dXJuIEVG SV9JTlZBTElEX1BBUkFNRVRFUjsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgICpTaXplVXNlZCA9 IE9mZnNldDsNCj4gPiArDQo+ID4gKyAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiA+ICt9DQo+ID4g Kw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgSXRlcmF0ZXMgdGhyb3VnaCB0aGUgdmFyaWFibGVz IGluIHRoZSBidWZmZXIsIGFuZCBjYWxscyBhIGNhbGxiYWNrDQo+ID4gKyAgZnVuY3Rpb24gZm9y IGVhY2ggdmFyaWFibGUgZm91bmQuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtpbl0gIENhbGxiYWNr RnVuY3Rpb24gLSBGdW5jdGlvbiBjYWxsZWQgZm9yIGVhY2ggdmFyaWFibGUgaW5zdGFuY2UNCj4g PiArICBAcGFyYW1baW5dICBDb250ZXh0IC0gUGFzc2VkIHRvIGVhY2ggY2FsbCBvZiBDYWxsYmFj a0Z1bmN0aW9uDQo+ID4gKyAgQHBhcmFtW2luXSAgQnVmZmVyIC0gQnVmZmVyIGNvbnRhaW5pbmcg c2VyaWFsaXplZCB2YXJpYWJsZXMNCj4gPiArICBAcGFyYW1baW5dICBNYXhTaXplIC0gU2l6ZSBv ZiBCdWZmZXIgaW4gYnl0ZXMNCj4gPiArDQo+ID4gKyAgQHJldHVybiAgICAgRUZJX1NUQVRVUyBi YXNlZCBvbiB0aGUgc3VjY2VzcyBvciBmYWlsdXJlIG9mIHRoZSBvcGVyYXRpb24NCj4gPiArDQo+ ID4gKyoqLw0KPiA+ICtTVEFUSUMNCj4gPiArRUZJX1NUQVRVUw0KPiA+ICtJdGVyYXRlVmFyaWFi bGVzSW5CdWZmZXIgKA0KPiA+ICsgIElOIFZBUklBQkxFX1NFUklBTElaQVRJT05fSVRFUkFUSU9O X0NBTExCQUNLICBDYWxsYmFja0Z1bmN0aW9uLA0KPiA+ICsgIElOIFZPSUQgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAqQ2FsbGJhY2tDb250ZXh0LA0KPiA+ICsgIElOIFZP SUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqQnVmZmVyLA0KPiA+ICsg IElOIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXhTaXplDQo+ ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgUkVUVVJOX1NUQVRVUyBTdGF0dXM7DQo+ID4gKyAgVUlO VE4gICAgICAgICBUb3RhbFNpemVVc2VkOw0KPiA+ICsgIFVJTlROICAgICAgICAgU2l6ZVVzZWQ7 DQo+ID4gKw0KPiA+ICsgIENIQVIxNiAgICAgICAgKk5hbWU7DQo+ID4gKyAgVUlOVDMyICAgICAg ICBOYW1lU2l6ZTsNCj4gPiArICBDSEFSMTYgICAgICAgICpBbGlnbmVkTmFtZTsNCj4gPiArICBV SU5UMzIgICAgICAgIEFsaWduZWROYW1lTWF4U2l6ZTsNCj4gPiArICBFRklfR1VJRCAgICAgICpH dWlkOw0KPiA+ICsgIFVJTlQzMiAgICAgICAgQXR0cmlidXRlczsNCj4gPiArICBVSU5UMzIgICAg ICAgIERhdGFTaXplOw0KPiA+ICsgIFZPSUQgICAgICAgICAgKkRhdGE7DQo+ID4gKw0KPiA+ICsg IFNpemVVc2VkID0gMDsNCj4gPiArICBBbGlnbmVkTmFtZSA9IE5VTEw7DQo+ID4gKyAgQWxpZ25l ZE5hbWVNYXhTaXplID0gMDsNCj4gPiArICBOYW1lID0gTlVMTDsNCj4gPiArICBHdWlkID0gTlVM TDsNCj4gPiArICBBdHRyaWJ1dGVzID0gMDsNCj4gPiArICBEYXRhU2l6ZSA9IDA7DQo+ID4gKyAg RGF0YSA9IE5VTEw7DQo+ID4gKw0KPiA+ICsgIGZvciAoDQo+ID4gKyAgICBTdGF0dXMgPSBFRklf U1VDQ0VTUywgVG90YWxTaXplVXNlZCA9IDA7DQo+ID4gKyAgICAhRUZJX0VSUk9SIChTdGF0dXMp ICYmIChUb3RhbFNpemVVc2VkIDwgTWF4U2l6ZSk7DQo+ID4gKyAgICApIHsNCj4gPiArICAgIFN0 YXR1cyA9IFVucGFja1ZhcmlhYmxlRnJvbUJ1ZmZlciAoDQo+ID4gKyAgICAgICAgICAgICAgIChW T0lEKikgKChVSU5UOCopIEJ1ZmZlciArIFRvdGFsU2l6ZVVzZWQpLA0KPiA+ICsgICAgICAgICAg ICAgICAoTWF4U2l6ZSAtIFRvdGFsU2l6ZVVzZWQpLA0KPiA+ICsgICAgICAgICAgICAgICAmTmFt ZSwNCj4gPiArICAgICAgICAgICAgICAgJk5hbWVTaXplLA0KPiA+ICsgICAgICAgICAgICAgICAm R3VpZCwNCj4gPiArICAgICAgICAgICAgICAgJkF0dHJpYnV0ZXMsDQo+ID4gKyAgICAgICAgICAg ICAgICZEYXRhU2l6ZSwNCj4gPiArICAgICAgICAgICAgICAgJkRhdGEsDQo+ID4gKyAgICAgICAg ICAgICAgICZTaXplVXNlZA0KPiA+ICsgICAgICAgICAgICAgICApOw0KPiA+ICsgICAgaWYgKEVG SV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ICsgICAgICByZXR1cm4gU3RhdHVzOw0KPiA+ICsgICAg fQ0KPiA+ICsNCj4gPiArICAgIC8vDQo+ID4gKyAgICAvLyBXZSBjb3B5IHRoZSBuYW1lIHRvIGEg c2VwYXJhdGVseSBhbGxvY2F0ZWQgYnVmZmVyLA0KPiA+ICsgICAgLy8gdG8gYmUgc3VyZSBpdCBp cyAxNi1iaXQgYWxpZ25lZC4NCj4gPiArICAgIC8vDQo+ID4gKyAgICBpZiAoTmFtZVNpemUgPiBB bGlnbmVkTmFtZU1heFNpemUpIHsNCj4gPiArICAgICAgaWYgKEFsaWduZWROYW1lICE9IE5VTEwp IHsNCj4gPiArICAgICAgICBGcmVlUG9vbCAoQWxpZ25lZE5hbWUpOw0KPiA+ICsgICAgICB9DQo+ ID4gKyAgICAgIEFsaWduZWROYW1lID0gQWxsb2NhdGVQb29sIChOYW1lU2l6ZSk7DQo+ID4gKyAg ICB9DQo+ID4gKyAgICBpZiAoQWxpZ25lZE5hbWUgPT0gTlVMTCkgew0KPiA+ICsgICAgICByZXR1 cm4gRUZJX09VVF9PRl9SRVNPVVJDRVM7DQo+ID4gKyAgICB9DQo+ID4gKyAgICBDb3B5TWVtIChB bGlnbmVkTmFtZSwgTmFtZSwgTmFtZVNpemUpOw0KPiA+ICsNCj4gPiArICAgIFRvdGFsU2l6ZVVz ZWQgPSBUb3RhbFNpemVVc2VkICsgU2l6ZVVzZWQ7DQo+ID4gKw0KPiA+ICsgICAgLy8NCj4gPiAr ICAgIC8vIFJ1biB0aGUgY2FsbGJhY2sgZnVuY3Rpb24NCj4gPiArICAgIC8vDQo+ID4gKyAgICBT dGF0dXMgPSAoKkNhbGxiYWNrRnVuY3Rpb24pICgNCj4gPiArICAgICAgICAgICAgICAgQ2FsbGJh Y2tDb250ZXh0LA0KPiA+ICsgICAgICAgICAgICAgICBBbGlnbmVkTmFtZSwNCj4gPiArICAgICAg ICAgICAgICAgR3VpZCwNCj4gPiArICAgICAgICAgICAgICAgQXR0cmlidXRlcywNCj4gPiArICAg ICAgICAgICAgICAgRGF0YVNpemUsDQo+ID4gKyAgICAgICAgICAgICAgIERhdGENCj4gPiArICAg ICAgICAgICAgICAgKTsNCj4gPiArDQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICBpZiAoQWxpZ25l ZE5hbWUgIT0gTlVMTCkgew0KPiA+ICsgICAgRnJlZVBvb2wgKEFsaWduZWROYW1lKTsNCj4gPiAr ICB9DQo+ID4gKw0KPiA+ICsgIC8vDQo+ID4gKyAgLy8gTWFrZSBzdXJlIHRoZSBlbnRpcmUgYnVm ZmVyIHdhcyB1c2VkLCBvciBlbHNlIHJldHVybiBhbiBlcnJvcg0KPiA+ICsgIC8vDQo+ID4gKyAg aWYgKFRvdGFsU2l6ZVVzZWQgIT0gTWF4U2l6ZSkgew0KPiA+ICsgICAgREVCVUcgKCgNCj4gPiAr ICAgICAgRUZJX0RfRVJST1IsDQo+ID4gKyAgICAgICJEZXNlcmlhbGl6ZSB2YXJpYWJsZXMgZXJy b3I6IFRvdGFsU2l6ZVVzZWQoJUx1KSAhPSBNYXhTaXplKCVMdSlcbiIsDQo+ID4gKyAgICAgIChV SU5UNjQpVG90YWxTaXplVXNlZCwNCj4gPiArICAgICAgKFVJTlQ2NClNYXhTaXplDQo+ID4gKyAg ICAgICkpOw0KPiA+ICsgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCj4gPiArICB9 DQo+ID4gKw0KPiA+ICsgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4gPiArfQ0KPiA+ICsNCj4gPiAr DQo+ID4gK1NUQVRJQw0KPiA+ICtSRVRVUk5fU1RBVFVTDQo+ID4gK0VGSUFQSQ0KPiA+ICtJdGVy YXRlVmFyaWFibGVzQ2FsbGJhY2tOb3AgKA0KPiA+ICsgIElOICBWT0lEICAgICAgICAgICAgICAg ICAgICAgICAgICpDb250ZXh0LA0KPiA+ICsgIElOICBDSEFSMTYgICAgICAgICAgICAgICAgICAg ICAgICpWYXJpYWJsZU5hbWUsDQo+ID4gKyAgSU4gIEVGSV9HVUlEICAgICAgICAgICAgICAgICAg ICAgKlZlbmRvckd1aWQsDQo+ID4gKyAgSU4gIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAg QXR0cmlidXRlcywNCj4gPiArICBJTiAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICBEYXRh U2l6ZSwNCj4gPiArICBJTiAgVk9JRCAgICAgICAgICAgICAgICAgICAgICAgICAqRGF0YQ0KPiA+ ICsgICkNCj4gPiArew0KPiA+ICsgIHJldHVybiBSRVRVUk5fU1VDQ0VTUzsNCj4gPiArfQ0KPiA+ ICsNCj4gPiArDQo+ID4gK1NUQVRJQw0KPiA+ICtSRVRVUk5fU1RBVFVTDQo+ID4gK0VGSUFQSQ0K PiA+ICtJdGVyYXRlVmFyaWFibGVzQ2FsbGJhY2tTZXRJbkluc3RhbmNlICgNCj4gPiArICBJTiAg Vk9JRCAgICAgICAgICAgICAgICAgICAgICAgICAqQ29udGV4dCwNCj4gPiArICBJTiAgQ0hBUjE2 ICAgICAgICAgICAgICAgICAgICAgICAqVmFyaWFibGVOYW1lLA0KPiA+ICsgIElOICBFRklfR1VJ RCAgICAgICAgICAgICAgICAgICAgICpWZW5kb3JHdWlkLA0KPiA+ICsgIElOICBVSU5UMzIgICAg ICAgICAgICAgICAgICAgICAgIEF0dHJpYnV0ZXMsDQo+ID4gKyAgSU4gIFVJTlROICAgICAgICAg ICAgICAgICAgICAgICAgRGF0YVNpemUsDQo+ID4gKyAgSU4gIFZPSUQgICAgICAgICAgICAgICAg ICAgICAgICAgKkRhdGENCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBFRklfSEFORExFICBJbnN0 YW5jZTsNCj4gPiArDQo+ID4gKyAgSW5zdGFuY2UgPSAoRUZJX0hBTkRMRSkgQ29udGV4dDsNCj4g PiArDQo+ID4gKyAgcmV0dXJuIFNlcmlhbGl6ZVZhcmlhYmxlc0FkZFZhcmlhYmxlICgNCj4gPiAr ICAgICAgICAgICBJbnN0YW5jZSwNCj4gPiArICAgICAgICAgICBWYXJpYWJsZU5hbWUsDQo+ID4g KyAgICAgICAgICAgVmVuZG9yR3VpZCwNCj4gPiArICAgICAgICAgICBBdHRyaWJ1dGVzLA0KPiA+ ICsgICAgICAgICAgIERhdGFTaXplLA0KPiA+ICsgICAgICAgICAgIERhdGENCj4gPiArICAgICAg ICAgICApOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsNCj4gPiArU1RBVElDDQo+ID4gK1JFVFVSTl9T VEFUVVMNCj4gPiArRUZJQVBJDQo+ID4gK0l0ZXJhdGVWYXJpYWJsZXNDYWxsYmFja1NldFN5c3Rl bVZhcmlhYmxlICgNCj4gPiArICBJTiAgVk9JRCAgICAgICAgICAgICAgICAgICAgICAgICAqQ29u dGV4dCwNCj4gPiArICBJTiAgQ0hBUjE2ICAgICAgICAgICAgICAgICAgICAgICAqVmFyaWFibGVO YW1lLA0KPiA+ICsgIElOICBFRklfR1VJRCAgICAgICAgICAgICAgICAgICAgICpWZW5kb3JHdWlk LA0KPiA+ICsgIElOICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgIEF0dHJpYnV0ZXMsDQo+ ID4gKyAgSU4gIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgRGF0YVNpemUsDQo+ID4gKyAg SU4gIFZPSUQgICAgICAgICAgICAgICAgICAgICAgICAgKkRhdGENCj4gPiArICApDQo+ID4gK3sN Cj4gPiArICBFRklfU1RBVFVTICAgICAgICAgIFN0YXR1czsNCj4gPiArICBTVEFUSUMgQ09OU1Qg VUlOVDMyIEF1dGhNYXNrID0NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgRUZJX1ZBUklB QkxFX0FVVEhFTlRJQ0FURURfV1JJVEVfQUNDRVNTIHwNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgRUZJX1ZBUklBQkxFX1RJTUVfQkFTRURfQVVUSEVOVElDQVRFRF9XUklURV9BQ0NFU1M7 DQo+ID4gKw0KPiA+ICsgIFN0YXR1cyA9IGdSVC0+U2V0VmFyaWFibGUgKA0KPiA+ICsgICAgICAg ICAgICAgVmFyaWFibGVOYW1lLA0KPiA+ICsgICAgICAgICAgICAgVmVuZG9yR3VpZCwNCj4gPiAr ICAgICAgICAgICAgIEF0dHJpYnV0ZXMsDQo+ID4gKyAgICAgICAgICAgICBEYXRhU2l6ZSwNCj4g PiArICAgICAgICAgICAgIERhdGENCj4gPiArICAgICAgICAgICAgICk7DQo+ID4gKw0KPiA+ICsg IGlmIChTdGF0dXMgPT0gRUZJX1NFQ1VSSVRZX1ZJT0xBVElPTiAmJiAoQXR0cmlidXRlcyAmIEF1 dGhNYXNrKSAhPSAwKSB7DQo+ID4gKyAgICBERUJVRyAoKERFQlVHX1dBUk4sICIlYTogc2V0dGlu ZyBhdXRoZW50aWNhdGVkIHZhcmlhYmxlIFwiJXNcIiAiDQo+ID4gKyAgICAgICAgICAgICJmYWls ZWQgd2l0aCBFRklfU0VDVVJJVFlfVklPTEFUSU9OLCBpZ25vcmluZ1xuIiwgX19GVU5DVElPTl9f LA0KPiA+ICsgICAgICAgICAgICBWYXJpYWJsZU5hbWUpKTsNCj4gPiArICAgIFN0YXR1cyA9IEVG SV9TVUNDRVNTOw0KPiA+ICsgIH0gZWxzZSBpZiAoU3RhdHVzID09IEVGSV9XUklURV9QUk9URUNU RUQpIHsNCj4gPiArICAgIERFQlVHICgoREVCVUdfV0FSTiwgIiVhOiBzZXR0aW5nIFJlYWRPbmx5 IHZhcmlhYmxlIFwiJXNcIiAiDQo+ID4gKyAgICAgICAgICAgICJmYWlsZWQgd2l0aCBFRklfV1JJ VEVfUFJPVEVDVEVELCBpZ25vcmluZ1xuIiwgX19GVU5DVElPTl9fLA0KPiA+ICsgICAgICAgICAg ICBWYXJpYWJsZU5hbWUpKTsNCj4gPiArICAgIFN0YXR1cyA9IEVGSV9TVUNDRVNTOw0KPiA+ICsg IH0NCj4gPiArICByZXR1cm4gU3RhdHVzOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsNCj4gPiArU1RB VElDDQo+ID4gK1JFVFVSTl9TVEFUVVMNCj4gPiArRW5zdXJlRXh0cmFCdWZmZXJTcGFjZSAoDQo+ ID4gKyAgSU4gIFNWX0lOU1RBTkNFICAqSW5zdGFuY2UsDQo+ID4gKyAgSU4gIFVJTlROICAgICAg ICBTaXplDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgVk9JRCAqTmV3QnVmZmVyOw0KPiA+ICsg IFVJTlROIE5ld1NpemU7DQo+ID4gKw0KPiA+ICsgIE5ld1NpemUgPSBJbnN0YW5jZS0+RGF0YVNp emUgKyBTaXplOw0KPiA+ICsgIGlmIChOZXdTaXplIDw9IEluc3RhbmNlLT5CdWZmZXJTaXplKSB7 DQo+ID4gKyAgICByZXR1cm4gUkVUVVJOX1NVQ0NFU1M7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiAr ICAvLw0KPiA+ICsgIC8vIERvdWJsZSB0aGUgcmVxdWlyZWQgc2l6ZSB0byBsZXNzZW4gdGhlIG5l ZWQgdG8gcmUtYWxsb2NhdGUgaW4gdGhlIGZ1dHVyZQ0KPiA+ICsgIC8vDQo+ID4gKyAgTmV3U2l6 ZSA9IDIgKiBOZXdTaXplOw0KPiA+ICsNCj4gPiArICBOZXdCdWZmZXIgPSBBbGxvY2F0ZVBvb2wg KE5ld1NpemUpOw0KPiA+ICsgIGlmIChOZXdCdWZmZXIgPT0gTlVMTCkgew0KPiA+ICsgICAgcmV0 dXJuIFJFVFVSTl9PVVRfT0ZfUkVTT1VSQ0VTOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgaWYg KEluc3RhbmNlLT5CdWZmZXJQdHIgIT0gTlVMTCkgew0KPiA+ICsgICAgQ29weU1lbSAoTmV3QnVm ZmVyLCBJbnN0YW5jZS0+QnVmZmVyUHRyLCBJbnN0YW5jZS0+RGF0YVNpemUpOw0KPiA+ICsgICAg RnJlZVBvb2wgKEluc3RhbmNlLT5CdWZmZXJQdHIpOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAg SW5zdGFuY2UtPkJ1ZmZlclB0ciA9IE5ld0J1ZmZlcjsNCj4gPiArICBJbnN0YW5jZS0+QnVmZmVy U2l6ZSA9IE5ld1NpemU7DQo+ID4gKw0KPiA+ICsgIHJldHVybiBSRVRVUk5fU1VDQ0VTUzsNCj4g PiArfQ0KPiA+ICsNCj4gPiArDQo+ID4gK1NUQVRJQw0KPiA+ICtWT0lEDQo+ID4gK0FwcGVuZFRv QnVmZmVyICgNCj4gPiArICBJTiAgU1ZfSU5TVEFOQ0UgICpJbnN0YW5jZSwNCj4gPiArICBJTiAg Vk9JRCAgICAgICAgICpEYXRhLA0KPiA+ICsgIElOICBVSU5UTiAgICAgICAgU2l6ZQ0KPiA+ICsg ICkNCj4gPiArew0KPiA+ICsgIFVJTlROIE5ld1NpemU7DQo+ID4gKw0KPiA+ICsgIEFTU0VSVCAo SW5zdGFuY2UgIT0gTlVMTCk7DQo+ID4gKyAgQVNTRVJUIChEYXRhICE9IE5VTEwpOw0KPiA+ICsN Cj4gPiArICBOZXdTaXplID0gSW5zdGFuY2UtPkRhdGFTaXplICsgU2l6ZTsNCj4gPiArICBBU1NF UlQgKChJbnN0YW5jZS0+RGF0YVNpemUgKyBTaXplKSA8PSBJbnN0YW5jZS0+QnVmZmVyU2l6ZSk7 DQo+ID4gKw0KPiA+ICsgIENvcHlNZW0gKA0KPiA+ICsgICAgKFZPSUQqKSAoKChVSU5UOCopIChJ bnN0YW5jZS0+QnVmZmVyUHRyKSkgKyBJbnN0YW5jZS0+RGF0YVNpemUpLA0KPiA+ICsgICAgRGF0 YSwNCj4gPiArICAgIFNpemUNCj4gPiArICAgICk7DQo+ID4gKw0KPiA+ICsgIEluc3RhbmNlLT5E YXRhU2l6ZSA9IE5ld1NpemU7DQo+ID4gK30NCj4gPiArDQo+ID4gKw0KPiA+ICsvKioNCj4gPiAr ICBDcmVhdGVzIGEgbmV3IHZhcmlhYmxlIHNlcmlhbGl6YXRpb24gaW5zdGFuY2UNCj4gPiArDQo+ ID4gKyAgQHBhcmFtW291dF0gIEhhbmRsZSAtIEhhbmRsZSBmb3IgYSB2YXJpYWJsZSBzZXJpYWxp emF0aW9uIGluc3RhbmNlDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgICAgICBSRVRVUk5fU1VDQ0VT UyAtIFRoZSB2YXJpYWJsZSBzZXJpYWxpemF0aW9uIGluc3RhbmNlIHdhcw0KPiA+ICsgICAgICAg ICAgICAgICAgIHN1Y2Nlc3NmdWxseSBjcmVhdGVkLg0KPiA+ICsgIEByZXR2YWwgICAgICBSRVRV Uk5fT1VUX09GX1JFU09VUkNFUyAtIFRoZXJlIHdlIG5vdCBlbm91Z2ggcmVzb3VyY2VzDQo+ID4g dG8NCj4gPiArICAgICAgICAgICAgICAgICBjcmVhdGUgdGhlIHZhcmlhYmxlIHNlcmlhbGl6YXRp b24gaW5zdGFuY2UuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArUkVUVVJOX1NUQVRVUw0KPiA+ICtF RklBUEkNCj4gPiArU2VyaWFsaXplVmFyaWFibGVzTmV3SW5zdGFuY2UgKA0KPiA+ICsgIE9VVCBF RklfSEFORExFICAgICAgICAgICAgICAgICAgICAgICpIYW5kbGUNCj4gPiArICApDQo+ID4gK3sN Cj4gPiArICBTVl9JTlNUQU5DRSAgKk5ldzsNCj4gPiArDQo+ID4gKyAgTmV3ID0gQWxsb2NhdGVa ZXJvUG9vbCAoc2l6ZW9mICgqTmV3KSk7DQo+ID4gKyAgaWYgKE5ldyA9PSBOVUxMKSB7DQo+ID4g KyAgICByZXR1cm4gUkVUVVJOX09VVF9PRl9SRVNPVVJDRVM7DQo+ID4gKyAgfQ0KPiA+ICsNCj4g PiArICBOZXctPlNpZ25hdHVyZSA9IFNWX1NJR05BVFVSRTsNCj4gPiArDQo+ID4gKyAgKkhhbmRs ZSA9IChFRklfSEFORExFKSBOZXc7DQo+ID4gKyAgcmV0dXJuIFJFVFVSTl9TVUNDRVNTOw0KPiA+ ICt9DQo+ID4gKw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgRnJlZSBtZW1vcnkgYXNzb2NpYXRl ZCB3aXRoIGEgdmFyaWFibGUgc2VyaWFsaXphdGlvbiBpbnN0YW5jZQ0KPiA+ICsNCj4gPiArICBA cGFyYW1baW5dICBIYW5kbGUgLSBIYW5kbGUgZm9yIGEgdmFyaWFibGUgc2VyaWFsaXphdGlvbiBp bnN0YW5jZQ0KPiA+ICsNCj4gPiArICBAcmV0dmFsICAgICAgUkVUVVJOX1NVQ0NFU1MgLSBUaGUg dmFyaWFibGUgc2VyaWFsaXphdGlvbiBpbnN0YW5jZSB3YXMNCj4gPiArICAgICAgICAgICAgICAg ICBzdWNjZXNzZnVsbHkgZnJlZWQuDQo+ID4gKyAgQHJldHZhbCAgICAgIFJFVFVSTl9JTlZBTElE X1BBUkFNRVRFUiAtIEhhbmRsZSB3YXMgbm90IGEgdmFsaWQNCj4gPiArICAgICAgICAgICAgICAg ICB2YXJpYWJsZSBzZXJpYWxpemF0aW9uIGluc3RhbmNlLg0KPiA+ICsNCj4gPiArKiovDQo+ID4g K1JFVFVSTl9TVEFUVVMNCj4gPiArRUZJQVBJDQo+ID4gK1NlcmlhbGl6ZVZhcmlhYmxlc0ZyZWVJ bnN0YW5jZSAoDQo+ID4gKyAgSU4gRUZJX0hBTkRMRSBIYW5kbGUNCj4gPiArICApDQo+ID4gK3sN Cj4gPiArICBTVl9JTlNUQU5DRSAgICAqSW5zdGFuY2U7DQo+ID4gKw0KPiA+ICsgIEluc3RhbmNl ID0gU1ZfRlJPTV9IQU5ETEUgKEhhbmRsZSk7DQo+ID4gKw0KPiA+ICsgIGlmIChJbnN0YW5jZS0+ U2lnbmF0dXJlICE9IFNWX1NJR05BVFVSRSkgew0KPiA+ICsgICAgcmV0dXJuIFJFVFVSTl9JTlZB TElEX1BBUkFNRVRFUjsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIEluc3RhbmNlLT5TaWduYXR1 cmUgPSAwOw0KPiA+ICsNCj4gPiArICBpZiAoSW5zdGFuY2UtPkJ1ZmZlclB0ciAhPSBOVUxMKSB7 DQo+ID4gKyAgICBGcmVlUG9vbCAoSW5zdGFuY2UtPkJ1ZmZlclB0cik7DQo+ID4gKyAgfQ0KPiA+ ICsNCj4gPiArICBGcmVlUG9vbCAoSW5zdGFuY2UpOw0KPiA+ICsNCj4gPiArICByZXR1cm4gUkVU VVJOX1NVQ0NFU1M7DQo+ID4gK30NCj4gPiArDQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBDcmVh dGVzIGEgbmV3IHZhcmlhYmxlIHNlcmlhbGl6YXRpb24gaW5zdGFuY2UgdXNpbmcgdGhlIGdpdmVu DQo+ID4gKyAgYmluYXJ5IHJlcHJlc2VudGF0aW9uIG9mIHRoZSB2YXJpYWJsZXMgdG8gZmlsbCB0 aGUgbmV3IGluc3RhbmNlDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtvdXRdIEhhbmRsZSAtIEhhbmRs ZSBmb3IgYSB2YXJpYWJsZSBzZXJpYWxpemF0aW9uIGluc3RhbmNlDQo+ID4gKyAgQHBhcmFtW2lu XSAgQnVmZmVyIC0gQSBidWZmZXIgd2l0aCB0aGUgc2VyaWFsaXplZCByZXByZXNlbnRhdGlvbg0K PiA+ICsgICAgICAgICAgICAgICAgb2YgdGhlIHZhcmlhYmxlcy4gIE11c3QgYmUgdGhlIHNhbWUg Zm9ybWF0IGFzIHByb2R1Y2VkDQo+ID4gKyAgICAgICAgICAgICAgICBieSBTZXJpYWxpemVWYXJp YWJsZXNUb0J1ZmZlci4NCj4gPiArICBAcGFyYW1baW5dICBTaXplIC0gVGhpcyBpcyB0aGUgc2l6 ZSBvZiB0aGUgYmluYXJ5IHJlcHJlc2VudGF0aW9uDQo+ID4gKyAgICAgICAgICAgICAgICBvZiB0 aGUgdmFyaWFibGVzLg0KPiA+ICsNCj4gPiArICBAcmV0dmFsICAgICAgUkVUVVJOX1NVQ0NFU1Mg LSBUaGUgYmluYXJ5IHJlcHJlc2VudGF0aW9uIHdhcyBzdWNjZXNzZnVsbHkNCj4gPiArICAgICAg ICAgICAgICAgICBpbXBvcnRlZCBpbnRvIGEgbmV3IHZhcmlhYmxlIHNlcmlhbGl6YXRpb24gaW5z dGFuY2UNCj4gPiArICBAcmV0dmFsICAgICAgUkVUVVJOX09VVF9PRl9SRVNPVVJDRVMgLSBUaGVy ZSB3ZSBub3QgZW5vdWdoIHJlc291cmNlcw0KPiA+IHRvDQo+ID4gKyAgICAgICAgICAgICAgICAg Y3JlYXRlIHRoZSBuZXcgdmFyaWFibGUgc2VyaWFsaXphdGlvbiBpbnN0YW5jZQ0KPiA+ICsNCj4g PiArKiovDQo+ID4gK1JFVFVSTl9TVEFUVVMNCj4gPiArRUZJQVBJDQo+ID4gK1NlcmlhbGl6ZVZh cmlhYmxlc05ld0luc3RhbmNlRnJvbUJ1ZmZlciAoDQo+ID4gKyAgT1VUIEVGSV9IQU5ETEUgICAg ICAgICAgICAgICAgICAgICAgICAgICpIYW5kbGUsDQo+ID4gKyAgSU4gIFZPSUQgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICpCdWZmZXIsDQo+ID4gKyAgSU4gIFVJTlROICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFNpemUNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBSRVRV Uk5fU1RBVFVTIFN0YXR1czsNCj4gPiArDQo+ID4gKyAgU3RhdHVzID0gU2VyaWFsaXplVmFyaWFi bGVzTmV3SW5zdGFuY2UgKEhhbmRsZSk7DQo+ID4gKyAgaWYgKFJFVFVSTl9FUlJPUiAoU3RhdHVz KSkgew0KPiA+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIFN0 YXR1cyA9IEl0ZXJhdGVWYXJpYWJsZXNJbkJ1ZmZlciAoDQo+ID4gKyAgICAgICAgICAgICBJdGVy YXRlVmFyaWFibGVzQ2FsbGJhY2tOb3AsDQo+ID4gKyAgICAgICAgICAgICBOVUxMLA0KPiA+ICsg ICAgICAgICAgICAgQnVmZmVyLA0KPiA+ICsgICAgICAgICAgICAgU2l6ZQ0KPiA+ICsgICAgICAg ICAgICAgKTsNCj4gPiArICBpZiAoUkVUVVJOX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gKyAgICBT ZXJpYWxpemVWYXJpYWJsZXNGcmVlSW5zdGFuY2UgKCpIYW5kbGUpOw0KPiA+ICsgICAgcmV0dXJu IFN0YXR1czsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIFN0YXR1cyA9IEl0ZXJhdGVWYXJpYWJs ZXNJbkJ1ZmZlciAoDQo+ID4gKyAgICAgICAgICAgICBJdGVyYXRlVmFyaWFibGVzQ2FsbGJhY2tT ZXRJbkluc3RhbmNlLA0KPiA+ICsgICAgICAgICAgICAgKFZPSUQqKSAqSGFuZGxlLA0KPiA+ICsg ICAgICAgICAgICAgQnVmZmVyLA0KPiA+ICsgICAgICAgICAgICAgU2l6ZQ0KPiA+ICsgICAgICAg ICAgICAgKTsNCj4gPiArICBpZiAoUkVUVVJOX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gKyAgICBT ZXJpYWxpemVWYXJpYWJsZXNGcmVlSW5zdGFuY2UgKCpIYW5kbGUpOw0KPiA+ICsgICAgcmV0dXJu IFN0YXR1czsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIHJldHVybiBTdGF0dXM7DQo+ID4gK30N Cj4gPiArDQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBJdGVyYXRlcyBhbGwgdmFyaWFibGVzIGZv dW5kIHdpdGggUnVudGltZVNlcnZpY2VzIEdldE5leHRWYXJpYWJsZU5hbWUNCj4gPiArDQo+ID4g KyAgQHBhcmFtW2luXSAgIENhbGxiYWNrRnVuY3Rpb24gLSBGdW5jdGlvbiBjYWxsZWQgZm9yIGVh Y2ggdmFyaWFibGUgaW5zdGFuY2UNCj4gPiArICBAcGFyYW1baW5dICAgQ29udGV4dCAtIFBhc3Nl ZCB0byBlYWNoIGNhbGwgb2YgQ2FsbGJhY2tGdW5jdGlvbg0KPiA+ICsNCj4gPiArICBAcmV0dmFs ICAgICAgUkVUVVJOX1NVQ0NFU1MgLSBBbGwgdmFyaWFibGVzIHdlcmUgaXRlcmF0ZWQgd2l0aG91 dCB0aGUNCj4gPiArICAgICAgICAgICAgICAgICBDYWxsYmFja0Z1bmN0aW9uIHJldHVybmluZyBh biBlcnJvcg0KPiA+ICsgIEByZXR2YWwgICAgICBSRVRVUk5fT1VUX09GX1JFU09VUkNFUyAtIFRo ZXJlIHdlIG5vdCBlbm91Z2ggcmVzb3VyY2VzDQo+ID4gdG8NCj4gPiArICAgICAgICAgICAgICAg ICBpdGVyYXRlIHRocm91Z2ggdGhlIHZhcmlhYmxlcw0KPiA+ICsgIEByZXR1cm4gICAgICBBbnkg b2YgUkVUVVJOX0VSUk9SIGluZGljYXRlcyBhbiBlcnJvciByZWFkaW5nIHRoZSB2YXJpYWJsZQ0K PiA+ICsgICAgICAgICAgICAgICAgIG9yIGFuIGVycm9yIHdhcyByZXR1cm5lZCBmcm9tIENhbGxi YWNrRnVuY3Rpb24NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtSRVRVUk5fU1RBVFVTDQo+ID4gK0VG SUFQSQ0KPiA+ICtTZXJpYWxpemVWYXJpYWJsZXNJdGVyYXRlU3lzdGVtVmFyaWFibGVzICgNCj4g PiArICBJTiBWQVJJQUJMRV9TRVJJQUxJWkFUSU9OX0lURVJBVElPTl9DQUxMQkFDSyBDYWxsYmFj a0Z1bmN0aW9uLA0KPiA+ICsgIElOIFZPSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICpDb250ZXh0DQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgUkVUVVJOX1NUQVRVUyAg ICAgICAgICAgICAgIFN0YXR1czsNCj4gPiArICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAg VmFyaWFibGVOYW1lQnVmZmVyU2l6ZTsNCj4gPiArICBVSU5UTiAgICAgICAgICAgICAgICAgICAg ICAgVmFyaWFibGVOYW1lU2l6ZTsNCj4gPiArICBDSEFSMTYgICAgICAgICAgICAgICAgICAgICAg KlZhcmlhYmxlTmFtZTsNCj4gPiArICBFRklfR1VJRCAgICAgICAgICAgICAgICAgICAgVmVuZG9y R3VpZDsNCj4gPiArICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgVmFyaWFibGVEYXRhQnVm ZmVyU2l6ZTsNCj4gPiArICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgVmFyaWFibGVEYXRh U2l6ZTsNCj4gPiArICBWT0lEICAgICAgICAgICAgICAgICAgICAgICAgKlZhcmlhYmxlRGF0YTsN Cj4gPiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgVmFyaWFibGVBdHRyaWJ1dGVzOw0K PiA+ICsgIFZPSUQgICAgICAgICAgICAgICAgICAgICAgICAqTmV3QnVmZmVyOw0KPiA+ICsNCj4g PiArICAvLw0KPiA+ICsgIC8vIEluaXRpYWxpemUgdGhlIHZhcmlhYmxlIG5hbWUgYW5kIGRhdGEg YnVmZmVyIHZhcmlhYmxlcy4NCj4gPiArICAvLw0KPiA+ICsgIFZhcmlhYmxlTmFtZUJ1ZmZlclNp emUgPSBzaXplb2YgKENIQVIxNik7DQo+ID4gKyAgVmFyaWFibGVOYW1lID0gQWxsb2NhdGVaZXJv UG9vbCAoVmFyaWFibGVOYW1lQnVmZmVyU2l6ZSk7DQo+ID4gKw0KPiA+ICsgIFZhcmlhYmxlRGF0 YUJ1ZmZlclNpemUgPSAwOw0KPiA+ICsgIFZhcmlhYmxlRGF0YSA9IE5VTEw7DQo+ID4gKw0KPiA+ ICsgIGZvciAoOzspIHsNCj4gPiArICAgIC8vDQo+ID4gKyAgICAvLyBHZXQgdGhlIG5leHQgdmFy aWFibGUgbmFtZSBhbmQgZ3VpZA0KPiA+ICsgICAgLy8NCj4gPiArICAgIFZhcmlhYmxlTmFtZVNp emUgPSBWYXJpYWJsZU5hbWVCdWZmZXJTaXplOw0KPiA+ICsgICAgU3RhdHVzID0gZ1JULT5HZXRO ZXh0VmFyaWFibGVOYW1lICgNCj4gPiArICAgICAgICAgICAgICAgICAgICAmVmFyaWFibGVOYW1l U2l6ZSwNCj4gPiArICAgICAgICAgICAgICAgICAgICBWYXJpYWJsZU5hbWUsDQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgJlZlbmRvckd1aWQNCj4gPiArICAgICAgICAgICAgICAgICAgICApOw0K PiA+ICsgICAgaWYgKFN0YXR1cyA9PSBFRklfQlVGRkVSX1RPT19TTUFMTCkgew0KPiA+ICsgICAg ICAvLw0KPiA+ICsgICAgICAvLyBUaGUgY3VycmVudGx5IGFsbG9jYXRlZCBWYXJpYWJsZU5hbWUg YnVmZmVyIGlzIHRvbyBzbWFsbCwNCj4gPiArICAgICAgLy8gc28gd2UgYWxsb2NhdGUgYSBsYXJn ZXIgYnVmZmVyLCBhbmQgY29weSB0aGUgb2xkIGJ1ZmZlcg0KPiA+ICsgICAgICAvLyB0byBpdC4N Cj4gPiArICAgICAgLy8NCj4gPiArICAgICAgTmV3QnVmZmVyID0gQWxsb2NhdGVQb29sIChWYXJp YWJsZU5hbWVTaXplKTsNCj4gPiArICAgICAgaWYgKE5ld0J1ZmZlciA9PSBOVUxMKSB7DQo+ID4g KyAgICAgICAgU3RhdHVzID0gRUZJX09VVF9PRl9SRVNPVVJDRVM7DQo+ID4gKyAgICAgICAgYnJl YWs7DQo+ID4gKyAgICAgIH0NCj4gPiArICAgICAgQ29weU1lbSAoTmV3QnVmZmVyLCBWYXJpYWJs ZU5hbWUsIFZhcmlhYmxlTmFtZUJ1ZmZlclNpemUpOw0KPiA+ICsgICAgICBpZiAoVmFyaWFibGVO YW1lICE9IE5VTEwpIHsNCj4gPiArICAgICAgICBGcmVlUG9vbCAoVmFyaWFibGVOYW1lKTsNCj4g PiArICAgICAgfQ0KPiA+ICsgICAgICBWYXJpYWJsZU5hbWUgPSBOZXdCdWZmZXI7DQo+ID4gKyAg ICAgIFZhcmlhYmxlTmFtZUJ1ZmZlclNpemUgPSBWYXJpYWJsZU5hbWVTaXplOw0KPiA+ICsNCj4g PiArICAgICAgLy8NCj4gPiArICAgICAgLy8gVHJ5IHRvIGdldCB0aGUgbmV4dCB2YXJpYWJsZSBu YW1lIGFnYWluIHdpdGggdGhlIGxhcmdlciBidWZmZXIuDQo+ID4gKyAgICAgIC8vDQo+ID4gKyAg ICAgIFN0YXR1cyA9IGdSVC0+R2V0TmV4dFZhcmlhYmxlTmFtZSAoDQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAmVmFyaWFibGVOYW1lU2l6ZSwNCj4gPiArICAgICAgICAgICAgICAgICAgICAg IFZhcmlhYmxlTmFtZSwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICZWZW5kb3JHdWlkDQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICApOw0KPiA+ICsgICAgfQ0KPiA+ICsNCj4gPiArICAg IGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiArICAgICAgaWYgKFN0YXR1cyA9PSBFRklf Tk9UX0ZPVU5EKSB7DQo+ID4gKyAgICAgICAgU3RhdHVzID0gRUZJX1NVQ0NFU1M7DQo+ID4gKyAg ICAgIH0NCj4gPiArICAgICAgYnJlYWs7DQo+ID4gKyAgICB9DQo+ID4gKw0KPiA+ICsgICAgLy8N Cj4gPiArICAgIC8vIEdldCB0aGUgdmFyaWFibGUgZGF0YSBhbmQgYXR0cmlidXRlcw0KPiA+ICsg ICAgLy8NCj4gPiArICAgIFZhcmlhYmxlRGF0YVNpemUgPSBWYXJpYWJsZURhdGFCdWZmZXJTaXpl Ow0KPiA+ICsgICAgU3RhdHVzID0gZ1JULT5HZXRWYXJpYWJsZSAoDQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgVmFyaWFibGVOYW1lLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICZWZW5kb3JH dWlkLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICZWYXJpYWJsZUF0dHJpYnV0ZXMsDQo+ID4g KyAgICAgICAgICAgICAgICAgICAgJlZhcmlhYmxlRGF0YVNpemUsDQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgVmFyaWFibGVEYXRhDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgKTsNCj4gPiAr ICAgIGlmIChTdGF0dXMgPT0gRUZJX0JVRkZFUl9UT09fU01BTEwpIHsNCj4gPiArICAgICAgLy8N Cj4gPiArICAgICAgLy8gVGhlIGN1cnJlbnRseSBhbGxvY2F0ZWQgVmFyaWFibGVEYXRhIGJ1ZmZl ciBpcyB0b28gc21hbGwsDQo+ID4gKyAgICAgIC8vIHNvIHdlIGFsbG9jYXRlIGEgbGFyZ2VyIGJ1 ZmZlci4NCj4gPiArICAgICAgLy8NCj4gPiArICAgICAgaWYgKFZhcmlhYmxlRGF0YUJ1ZmZlclNp emUgIT0gMCkgew0KPiA+ICsgICAgICAgIEZyZWVQb29sIChWYXJpYWJsZURhdGEpOw0KPiA+ICsg ICAgICAgIFZhcmlhYmxlRGF0YSA9IE5VTEw7DQo+ID4gKyAgICAgICAgVmFyaWFibGVEYXRhQnVm ZmVyU2l6ZSA9IDA7DQo+ID4gKyAgICAgIH0NCj4gPiArICAgICAgVmFyaWFibGVEYXRhID0gQWxs b2NhdGVQb29sIChWYXJpYWJsZURhdGFTaXplKTsNCj4gPiArICAgICAgaWYgKFZhcmlhYmxlRGF0 YSA9PSBOVUxMKSB7DQo+ID4gKyAgICAgICAgU3RhdHVzID0gRUZJX09VVF9PRl9SRVNPVVJDRVM7 DQo+ID4gKyAgICAgICAgYnJlYWs7DQo+ID4gKyAgICAgIH0NCj4gPiArICAgICAgVmFyaWFibGVE YXRhQnVmZmVyU2l6ZSA9IFZhcmlhYmxlRGF0YVNpemU7DQo+ID4gKw0KPiA+ICsgICAgICAvLw0K PiA+ICsgICAgICAvLyBUcnkgdG8gcmVhZCB0aGUgdmFyaWFibGUgYWdhaW4gd2l0aCB0aGUgbGFy Z2VyIGJ1ZmZlci4NCj4gPiArICAgICAgLy8NCj4gPiArICAgICAgU3RhdHVzID0gZ1JULT5HZXRW YXJpYWJsZSAoDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICBWYXJpYWJsZU5hbWUsDQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAmVmVuZG9yR3VpZCwNCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICZWYXJpYWJsZUF0dHJpYnV0ZXMsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAm VmFyaWFibGVEYXRhU2l6ZSwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgIFZhcmlhYmxlRGF0 YQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgKTsNCj4gPiArICAgIH0NCj4gPiArICAgIGlm IChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiArICAgICAgYnJlYWs7DQo+ID4gKyAgICB9DQo+ ID4gKw0KPiA+ICsgICAgLy8NCj4gPiArICAgIC8vIFJ1biB0aGUgY2FsbGJhY2sgZnVuY3Rpb24N Cj4gPiArICAgIC8vDQo+ID4gKyAgICBTdGF0dXMgPSAoKkNhbGxiYWNrRnVuY3Rpb24pICgNCj4g PiArICAgICAgICAgICAgICAgQ29udGV4dCwNCj4gPiArICAgICAgICAgICAgICAgVmFyaWFibGVO YW1lLA0KPiA+ICsgICAgICAgICAgICAgICAmVmVuZG9yR3VpZCwNCj4gPiArICAgICAgICAgICAg ICAgVmFyaWFibGVBdHRyaWJ1dGVzLA0KPiA+ICsgICAgICAgICAgICAgICBWYXJpYWJsZURhdGFT aXplLA0KPiA+ICsgICAgICAgICAgICAgICBWYXJpYWJsZURhdGENCj4gPiArICAgICAgICAgICAg ICAgKTsNCj4gPiArICAgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiArICAgICAgYnJl YWs7DQo+ID4gKyAgICB9DQo+ID4gKw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgaWYgKFZhcmlh YmxlTmFtZSAhPSBOVUxMKSB7DQo+ID4gKyAgICBGcmVlUG9vbCAoVmFyaWFibGVOYW1lKTsNCj4g PiArICB9DQo+ID4gKw0KPiA+ICsgIGlmIChWYXJpYWJsZURhdGEgIT0gTlVMTCkgew0KPiA+ICsg ICAgRnJlZVBvb2wgKFZhcmlhYmxlRGF0YSk7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICByZXR1 cm4gU3RhdHVzOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgSXRlcmF0 ZXMgYWxsIHZhcmlhYmxlcyBmb3VuZCBpbiB0aGUgdmFyaWFibGUgc2VyaWFsaXphdGlvbiBpbnN0 YW5jZQ0KPiA+ICsNCj4gPiArICBAcGFyYW1baW5dICAgSGFuZGxlIC0gSGFuZGxlIGZvciBhIHZh cmlhYmxlIHNlcmlhbGl6YXRpb24gaW5zdGFuY2UNCj4gPiArICBAcGFyYW1baW5dICAgQ2FsbGJh Y2tGdW5jdGlvbiAtIEZ1bmN0aW9uIGNhbGxlZCBmb3IgZWFjaCB2YXJpYWJsZSBpbnN0YW5jZQ0K PiA+ICsgIEBwYXJhbVtpbl0gICBDb250ZXh0IC0gUGFzc2VkIHRvIGVhY2ggY2FsbCBvZiBDYWxs YmFja0Z1bmN0aW9uDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgICAgICBSRVRVUk5fU1VDQ0VTUyAt IEFsbCB2YXJpYWJsZXMgd2VyZSBpdGVyYXRlZCB3aXRob3V0IHRoZQ0KPiA+ICsgICAgICAgICAg ICAgICAgIENhbGxiYWNrRnVuY3Rpb24gcmV0dXJuaW5nIGFuIGVycm9yDQo+ID4gKyAgQHJldHZh bCAgICAgIFJFVFVSTl9PVVRfT0ZfUkVTT1VSQ0VTIC0gVGhlcmUgd2Ugbm90IGVub3VnaCByZXNv dXJjZXMNCj4gPiB0bw0KPiA+ICsgICAgICAgICAgICAgICAgIGl0ZXJhdGUgdGhyb3VnaCB0aGUg dmFyaWFibGVzDQo+ID4gKyAgQHJldHVybiAgICAgIEFueSBvZiBSRVRVUk5fRVJST1IgaW5kaWNh dGVzIGFuIGVycm9yIHJlYWRpbmcgdGhlIHZhcmlhYmxlDQo+ID4gKyAgICAgICAgICAgICAgICAg b3IgYW4gZXJyb3Igd2FzIHJldHVybmVkIGZyb20gQ2FsbGJhY2tGdW5jdGlvbg0KPiA+ICsNCj4g PiArKiovDQo+ID4gK1JFVFVSTl9TVEFUVVMNCj4gPiArRUZJQVBJDQo+ID4gK1NlcmlhbGl6ZVZh cmlhYmxlc0l0ZXJhdGVJbnN0YW5jZVZhcmlhYmxlcyAoDQo+ID4gKyAgSU4gRUZJX0hBTkRMRSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSGFuZGxlLA0KPiA+ICsgIElOIFZBUklBQkxF X1NFUklBTElaQVRJT05fSVRFUkFUSU9OX0NBTExCQUNLIENhbGxiYWNrRnVuY3Rpb24sDQo+ID4g KyAgSU4gVk9JRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKkNvbnRleHQN Cj4gPiArICApDQo+ID4gK3sNCj4gPiArICBTVl9JTlNUQU5DRSAgICAqSW5zdGFuY2U7DQo+ID4g Kw0KPiA+ICsgIEluc3RhbmNlID0gU1ZfRlJPTV9IQU5ETEUgKEhhbmRsZSk7DQo+ID4gKw0KPiA+ ICsgIGlmICgoSW5zdGFuY2UtPkJ1ZmZlclB0ciAhPSBOVUxMKSAmJiAoSW5zdGFuY2UtPkRhdGFT aXplICE9IDApKSB7DQo+ID4gKyAgICByZXR1cm4gSXRlcmF0ZVZhcmlhYmxlc0luQnVmZmVyICgN Cj4gPiArICAgICAgICAgICAgIENhbGxiYWNrRnVuY3Rpb24sDQo+ID4gKyAgICAgICAgICAgICBD b250ZXh0LA0KPiA+ICsgICAgICAgICAgICAgSW5zdGFuY2UtPkJ1ZmZlclB0ciwNCj4gPiArICAg ICAgICAgICAgIEluc3RhbmNlLT5EYXRhU2l6ZQ0KPiA+ICsgICAgICAgICAgICAgKTsNCj4gPiAr ICB9IGVsc2Ugew0KPiA+ICsgICAgcmV0dXJuIFJFVFVSTl9TVUNDRVNTOw0KPiA+ICsgIH0NCj4g PiArfQ0KPiA+ICsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFNldHMgYWxsIHZhcmlhYmxlcyBm b3VuZCBpbiB0aGUgdmFyaWFibGUgc2VyaWFsaXphdGlvbiBpbnN0YW5jZQ0KPiA+ICsNCj4gPiAr ICBAcGFyYW1baW5dICAgSGFuZGxlIC0gSGFuZGxlIGZvciBhIHZhcmlhYmxlIHNlcmlhbGl6YXRp b24gaW5zdGFuY2UNCj4gPiArDQo+ID4gKyAgQHJldHZhbCAgICAgIFJFVFVSTl9TVUNDRVNTIC0g QWxsIHZhcmlhYmxlcyB3ZXJlIHNldCBzdWNjZXNzZnVsbHkNCj4gPiArICBAcmV0dmFsICAgICAg UkVUVVJOX09VVF9PRl9SRVNPVVJDRVMgLSBUaGVyZSB3ZSBub3QgZW5vdWdoIHJlc291cmNlcw0K PiA+IHRvDQo+ID4gKyAgICAgICAgICAgICAgICAgc2V0IGFsbCB0aGUgdmFyaWFibGVzDQo+ID4g KyAgQHJldHVybiAgICAgIEFueSBvZiBSRVRVUk5fRVJST1IgaW5kaWNhdGVzIGFuIGVycm9yIHJl YWRpbmcgdGhlIHZhcmlhYmxlcw0KPiA+ICsgICAgICAgICAgICAgICAgIG9yIGluIGF0dGVtcHRp bmcgdG8gc2V0IGEgdmFyaWFibGUNCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtSRVRVUk5fU1RBVFVT DQo+ID4gK0VGSUFQSQ0KPiA+ICtTZXJpYWxpemVWYXJpYWJsZXNTZXRTZXJpYWxpemVkVmFyaWFi bGVzICgNCj4gPiArICBJTiBFRklfSEFORExFICAgICAgICAgICAgICAgICAgICAgICBIYW5kbGUN Cj4gPiArICApDQo+ID4gK3sNCj4gPiArICByZXR1cm4gU2VyaWFsaXplVmFyaWFibGVzSXRlcmF0 ZUluc3RhbmNlVmFyaWFibGVzICgNCj4gPiArICAgICAgICAgICBIYW5kbGUsDQo+ID4gKyAgICAg ICAgICAgSXRlcmF0ZVZhcmlhYmxlc0NhbGxiYWNrU2V0U3lzdGVtVmFyaWFibGUsDQo+ID4gKyAg ICAgICAgICAgTlVMTA0KPiA+ICsgICAgICAgICAgICk7DQo+ID4gK30NCj4gPiArDQo+ID4gKw0K PiA+ICsvKioNCj4gPiArICBBZGRzIGEgdmFyaWFibGUgdG8gdGhlIHZhcmlhYmxlIHNlcmlhbGl6 YXRpb24gaW5zdGFuY2UNCj4gPiArDQo+ID4gKyAgQHBhcmFtW2luXSBIYW5kbGUgLSBIYW5kbGUg Zm9yIGEgdmFyaWFibGUgc2VyaWFsaXphdGlvbiBpbnN0YW5jZQ0KPiA+ICsgIEBwYXJhbVtpbl0g VmFyaWFibGVOYW1lIC0gUmVmZXIgdG8gUnVudGltZVNlcnZpY2VzIEdldFZhcmlhYmxlDQo+ID4g KyAgQHBhcmFtW2luXSBWZW5kb3JHdWlkIC0gUmVmZXIgdG8gUnVudGltZVNlcnZpY2VzIEdldFZh cmlhYmxlDQo+ID4gKyAgQHBhcmFtW2luXSBBdHRyaWJ1dGVzIC0gUmVmZXIgdG8gUnVudGltZVNl cnZpY2VzIEdldFZhcmlhYmxlDQo+ID4gKyAgQHBhcmFtW2luXSBEYXRhU2l6ZSAtIFJlZmVyIHRv IFJ1bnRpbWVTZXJ2aWNlcyBHZXRWYXJpYWJsZQ0KPiA+ICsgIEBwYXJhbVtpbl0gRGF0YSAtIFJl ZmVyIHRvIFJ1bnRpbWVTZXJ2aWNlcyBHZXRWYXJpYWJsZQ0KPiA+ICsNCj4gPiArICBAcmV0dmFs ICAgICAgUkVUVVJOX1NVQ0NFU1MgLSBBbGwgdmFyaWFibGVzIHdlcmUgc2V0IHN1Y2Nlc3NmdWxs eQ0KPiA+ICsgIEByZXR2YWwgICAgICBSRVRVUk5fT1VUX09GX1JFU09VUkNFUyAtIFRoZXJlIHdl IG5vdCBlbm91Z2ggcmVzb3VyY2VzDQo+ID4gdG8NCj4gPiArICAgICAgICAgICAgICAgICBhZGQg dGhlIHZhcmlhYmxlDQo+ID4gKyAgQHJldHZhbCAgICAgIFJFVFVSTl9JTlZBTElEX1BBUkFNRVRF UiAtIEhhbmRsZSB3YXMgbm90IGEgdmFsaWQNCj4gPiArICAgICAgICAgICAgICAgICB2YXJpYWJs ZSBzZXJpYWxpemF0aW9uIGluc3RhbmNlIG9yDQo+ID4gKyAgICAgICAgICAgICAgICAgVmFyaWFi bGVOYW1lLCBWYXJpYWJsZUd1aWQgb3IgRGF0YSBhcmUgTlVMTC4NCj4gPiArDQo+ID4gKyoqLw0K PiA+ICtSRVRVUk5fU1RBVFVTDQo+ID4gK0VGSUFQSQ0KPiA+ICtTZXJpYWxpemVWYXJpYWJsZXNB ZGRWYXJpYWJsZSAoDQo+ID4gKyAgSU4gRUZJX0hBTkRMRSAgICAgICAgICAgICAgICAgICBIYW5k bGUsDQo+ID4gKyAgSU4gQ0hBUjE2ICAgICAgICAgICAgICAgICAgICAgICAqVmFyaWFibGVOYW1l LA0KPiA+ICsgIElOIEVGSV9HVUlEICAgICAgICAgICAgICAgICAgICAgKlZlbmRvckd1aWQsDQo+ ID4gKyAgSU4gVUlOVDMyICAgICAgICAgICAgICAgICAgICAgICBBdHRyaWJ1dGVzLA0KPiA+ICsg IElOIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgRGF0YVNpemUsDQo+ID4gKyAgSU4gVk9J RCAgICAgICAgICAgICAgICAgICAgICAgICAqRGF0YQ0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsg IFJFVFVSTl9TVEFUVVMgIFN0YXR1czsNCj4gPiArICBTVl9JTlNUQU5DRSAgICAqSW5zdGFuY2U7 DQo+ID4gKyAgVUlOVDMyICAgICAgICAgU2VyaWFsaXplZE5hbWVTaXplOw0KPiA+ICsgIFVJTlQz MiAgICAgICAgIFNlcmlhbGl6ZWREYXRhU2l6ZTsNCj4gPiArICBVSU5UTiAgICAgICAgICBTZXJp YWxpemVkU2l6ZTsNCj4gPiArDQo+ID4gKyAgSW5zdGFuY2UgPSBTVl9GUk9NX0hBTkRMRSAoSGFu ZGxlKTsNCj4gPiArDQo+ID4gKyAgaWYgKChJbnN0YW5jZS0+U2lnbmF0dXJlICE9IFNWX1NJR05B VFVSRSkgfHwNCj4gPiArICAgICAgKFZhcmlhYmxlTmFtZSA9PSBOVUxMKSB8fCAoVmVuZG9yR3Vp ZCA9PSBOVUxMKSB8fCAoRGF0YSA9PSBOVUxMKSkgew0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAg U2VyaWFsaXplZE5hbWVTaXplID0gKFVJTlQzMikgU3RyU2l6ZSAoVmFyaWFibGVOYW1lKTsNCj4g PiArDQo+ID4gKyAgU2VyaWFsaXplZFNpemUgPQ0KPiA+ICsgICAgc2l6ZW9mIChTZXJpYWxpemVk TmFtZVNpemUpICsNCj4gPiArICAgIFNlcmlhbGl6ZWROYW1lU2l6ZSArDQo+ID4gKyAgICBzaXpl b2YgKCpWZW5kb3JHdWlkKSArDQo+ID4gKyAgICBzaXplb2YgKEF0dHJpYnV0ZXMpICsNCj4gPiAr ICAgIHNpemVvZiAoU2VyaWFsaXplZERhdGFTaXplKSArDQo+ID4gKyAgICBEYXRhU2l6ZTsNCj4g PiArDQo+ID4gKyAgU3RhdHVzID0gRW5zdXJlRXh0cmFCdWZmZXJTcGFjZSAoDQo+ID4gKyAgICAg ICAgICAgICBJbnN0YW5jZSwNCj4gPiArICAgICAgICAgICAgIFNlcmlhbGl6ZWRTaXplDQo+ID4g KyAgICAgICAgICAgICApOw0KPiA+ICsgIGlmIChSRVRVUk5fRVJST1IgKFN0YXR1cykpIHsNCj4g PiArICAgIHJldHVybiBTdGF0dXM7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICAvLw0KPiA+ICsg IC8vIEFkZCBuYW1lIHNpemUgKFVJTlQzMikNCj4gPiArICAvLw0KPiA+ICsgIEFwcGVuZFRvQnVm ZmVyIChJbnN0YW5jZSwgKFZPSUQqKSAmU2VyaWFsaXplZE5hbWVTaXplLCBzaXplb2YNCj4gPiAo U2VyaWFsaXplZE5hbWVTaXplKSk7DQo+ID4gKw0KPiA+ICsgIC8vDQo+ID4gKyAgLy8gQWRkIHZh cmlhYmxlIHVuaWNvZGUgbmFtZSBzdHJpbmcNCj4gPiArICAvLw0KPiA+ICsgIEFwcGVuZFRvQnVm ZmVyIChJbnN0YW5jZSwgKFZPSUQqKSBWYXJpYWJsZU5hbWUsIFNlcmlhbGl6ZWROYW1lU2l6ZSk7 DQo+ID4gKw0KPiA+ICsgIC8vDQo+ID4gKyAgLy8gQWRkIHZhcmlhYmxlIEdVSUQNCj4gPiArICAv Lw0KPiA+ICsgIEFwcGVuZFRvQnVmZmVyIChJbnN0YW5jZSwgKFZPSUQqKSBWZW5kb3JHdWlkLCBz aXplb2YgKCpWZW5kb3JHdWlkKSk7DQo+ID4gKw0KPiA+ICsgIC8vDQo+ID4gKyAgLy8gQWRkIHZh cmlhYmxlIGF0dHJpYnV0ZXMNCj4gPiArICAvLw0KPiA+ICsgIEFwcGVuZFRvQnVmZmVyIChJbnN0 YW5jZSwgKFZPSUQqKSAmQXR0cmlidXRlcywgc2l6ZW9mIChBdHRyaWJ1dGVzKSk7DQo+ID4gKw0K PiA+ICsgIC8vDQo+ID4gKyAgLy8gQWRkIHZhcmlhYmxlIGRhdGEgc2l6ZSAoVUlOVDMyKQ0KPiA+ ICsgIC8vDQo+ID4gKyAgU2VyaWFsaXplZERhdGFTaXplID0gKFVJTlQzMikgRGF0YVNpemU7DQo+ ID4gKyAgQXBwZW5kVG9CdWZmZXIgKEluc3RhbmNlLCAoVk9JRCopICZTZXJpYWxpemVkRGF0YVNp emUsIHNpemVvZg0KPiA+IChTZXJpYWxpemVkRGF0YVNpemUpKTsNCj4gPiArDQo+ID4gKyAgLy8N Cj4gPiArICAvLyBBZGQgdmFyaWFibGUgZGF0YQ0KPiA+ICsgIC8vDQo+ID4gKyAgQXBwZW5kVG9C dWZmZXIgKEluc3RhbmNlLCBEYXRhLCBEYXRhU2l6ZSk7DQo+ID4gKw0KPiA+ICsgIHJldHVybiBS RVRVUk5fU1VDQ0VTUzsNCj4gPiArfQ0KPiA+ICsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFNl cmlhbGl6ZXMgdGhlIHZhcmlhYmxlcyBrbm93biB0byB0aGlzIGluc3RhbmNlIGludG8gdGhlDQo+ ID4gKyAgcHJvdmlkZWQgYnVmZmVyLg0KPiA+ICsNCj4gPiArICBAcGFyYW1baW5dICAgICBIYW5k bGUgLSBIYW5kbGUgZm9yIGEgdmFyaWFibGUgc2VyaWFsaXphdGlvbiBpbnN0YW5jZQ0KPiA+ICsg IEBwYXJhbVtvdXRdICAgIEJ1ZmZlciAtIEEgYnVmZmVyIHRvIHN0b3JlIHRoZSBiaW5hcnkgcmVw cmVzZW50YXRpb24NCj4gPiArICAgICAgICAgICAgICAgICAgIG9mIHRoZSB2YXJpYWJsZXMuDQo+ ID4gKyAgQHBhcmFtW2luLG91dF0gU2l6ZSAtIE9uIGlucHV0IHRoaXMgaXMgdGhlIHNpemUgb2Yg dGhlIGJ1ZmZlci4NCj4gPiArICAgICAgICAgICAgICAgICAgIE9uIG91dHB1dCB0aGlzIGlzIHRo ZSBzaXplIG9mIHRoZSBiaW5hcnkgcmVwcmVzZW50YXRpb24NCj4gPiArICAgICAgICAgICAgICAg ICAgIG9mIHRoZSB2YXJpYWJsZXMuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgICAgICBSRVRVUk5f U1VDQ0VTUyAtIFRoZSBiaW5hcnkgcmVwcmVzZW50YXRpb24gd2FzIHN1Y2Nlc3NmdWxseQ0KPiA+ ICsgICAgICAgICAgICAgICAgIGNvbXBsZXRlZCBhbmQgcmV0dXJuZWQgaW4gdGhlIGJ1ZmZlci4N Cj4gPiArICBAcmV0dmFsICAgICAgUkVUVVJOX09VVF9PRl9SRVNPVVJDRVMgLSBUaGVyZSB3ZSBu b3QgZW5vdWdoIHJlc291cmNlcw0KPiA+IHRvDQo+ID4gKyAgICAgICAgICAgICAgICAgc2F2ZSB0 aGUgdmFyaWFibGVzIHRvIHRoZSBidWZmZXIuDQo+ID4gKyAgQHJldHZhbCAgICAgIFJFVFVSTl9J TlZBTElEX1BBUkFNRVRFUiAtIEhhbmRsZSB3YXMgbm90IGEgdmFsaWQNCj4gPiArICAgICAgICAg ICAgICAgICB2YXJpYWJsZSBzZXJpYWxpemF0aW9uIGluc3RhbmNlIG9yDQo+ID4gKyAgICAgICAg ICAgICAgICAgU2l6ZSBvciBCdWZmZXIgd2VyZSBOVUxMLg0KPiA+ICsgIEByZXR2YWwgICAgICBS RVRVUk5fQlVGRkVSX1RPT19TTUFMTCAtIFRoZSBCdWZmZXIgc2l6ZSBhcyBpbmRpY2F0ZWQgYnkN Cj4gPiArICAgICAgICAgICAgICAgICB0aGUgU2l6ZSBwYXJhbWV0ZXIgd2FzIHRvbyBzbWFsbCBm b3IgdGhlIHNlcmlhbGl6ZWQNCj4gPiArICAgICAgICAgICAgICAgICB2YXJpYWJsZSBkYXRhLiAg U2l6ZSBpcyByZXR1cm5lZCB3aXRoIHRoZSByZXF1aXJlZCBzaXplLg0KPiA+ICsNCj4gPiArKiov DQo+ID4gK1JFVFVSTl9TVEFUVVMNCj4gPiArRUZJQVBJDQo+ID4gK1NlcmlhbGl6ZVZhcmlhYmxl c1RvQnVmZmVyICgNCj4gPiArICBJTiAgICAgRUZJX0hBTkRMRSAgICAgICAgICAgICAgICAgICAg ICAgSGFuZGxlLA0KPiA+ICsgIE9VVCAgICBWT0lEICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAqQnVmZmVyLA0KPiA+ICsgIElOIE9VVCBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAqU2l6ZQ0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIFNWX0lOU1RBTkNFICAgICpJbnN0YW5j ZTsNCj4gPiArDQo+ID4gKyAgSW5zdGFuY2UgPSBTVl9GUk9NX0hBTkRMRSAoSGFuZGxlKTsNCj4g PiArDQo+ID4gKyAgaWYgKFNpemUgPT0gTlVMTCkgew0KPiA+ICsgICAgcmV0dXJuIFJFVFVSTl9J TlZBTElEX1BBUkFNRVRFUjsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIGlmICgqU2l6ZSA8IElu c3RhbmNlLT5EYXRhU2l6ZSkgew0KPiA+ICsgICAgKlNpemUgPSBJbnN0YW5jZS0+RGF0YVNpemU7 DQo+ID4gKyAgICByZXR1cm4gUkVUVVJOX0JVRkZFUl9UT09fU01BTEw7DQo+ID4gKyAgfQ0KPiA+ ICsNCj4gPiArICBpZiAoQnVmZmVyID09IE5VTEwpIHsNCj4gPiArICAgIHJldHVybiBSRVRVUk5f SU5WQUxJRF9QQVJBTUVURVI7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICAqU2l6ZSA9IEluc3Rh bmNlLT5EYXRhU2l6ZTsNCj4gPiArICBDb3B5TWVtIChCdWZmZXIsIEluc3RhbmNlLT5CdWZmZXJQ dHIsIEluc3RhbmNlLT5EYXRhU2l6ZSk7DQo+ID4gKw0KPiA+ICsgIHJldHVybiBSRVRVUk5fU1VD Q0VTUzsNCj4gPiArfQ0KPiA+ICsNCj4gPiBkaWZmIC0tZ2l0IGEvUGxhdGZvcm0vSW50ZWwvU2lt aWNzT3BlbkJvYXJkUGtnL1BsYXRmb3JtRHhlL1BsYXRmb3JtLmMNCj4gPiBiL1BsYXRmb3JtL0lu dGVsL1NpbWljc09wZW5Cb2FyZFBrZy9QbGF0Zm9ybUR4ZS9QbGF0Zm9ybS5jDQo+ID4gbmV3IGZp bGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRleCAwMDAwMDAwMDAwLi43YmVkZTE0OTZkDQo+ID4gLS0t IC9kZXYvbnVsbA0KPiA+ICsrKyBiL1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9Q bGF0Zm9ybUR4ZS9QbGF0Zm9ybS5jDQo+ID4gQEAgLTAsMCArMSw4NjUgQEANCj4gPiArLyoqIEBm aWxlDQo+ID4gKyAgVGhpcyBkcml2ZXIgZWZmZWN0dWF0ZXMgT1ZNRidzIHBsYXRmb3JtIGNvbmZp Z3VyYXRpb24gc2V0dGluZ3MgYW5kIGV4cG9zZXMNCj4gPiArICB0aGVtIHZpYSBISUkuDQo+ID4g Kw0KPiA+ICsgIENvcHlyaWdodCAoQykgMjAxNCwgUmVkIEhhdCwgSW5jLg0KPiA+ICsgIENvcHly aWdodCAoYykgMjAwOSAtIDIwMTQsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2Vy dmVkLjxCUj4NCj4gPiArDQo+ID4gKyAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNs YXVzZS1QYXRlbnQNCj4gPiArKiovDQo+ID4gKw0KPiA+ICsjaW5jbHVkZSA8TGlicmFyeS9CYXNl TGliLmg+DQo+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L0Jhc2VNZW1vcnlMaWIuaD4NCj4gPiArI2lu Y2x1ZGUgPExpYnJhcnkvRGVidWdMaWIuaD4NCj4gPiArI2luY2x1ZGUgPExpYnJhcnkvRGV2aWNl UGF0aExpYi5oPg0KPiA+ICsjaW5jbHVkZSA8TGlicmFyeS9IaWlMaWIuaD4NCj4gPiArI2luY2x1 ZGUgPExpYnJhcnkvTWVtb3J5QWxsb2NhdGlvbkxpYi5oPg0KPiA+ICsjaW5jbHVkZSA8TGlicmFy eS9QcmludExpYi5oPg0KPiA+ICsjaW5jbHVkZSA8TGlicmFyeS9VZWZpQm9vdFNlcnZpY2VzVGFi bGVMaWIuaD4NCj4gPiArI2luY2x1ZGUgPExpYnJhcnkvVWVmaUhpaVNlcnZpY2VzTGliLmg+DQo+ ID4gKyNpbmNsdWRlIDxQcm90b2NvbC9EZXZpY2VQYXRoLmg+DQo+ID4gKyNpbmNsdWRlIDxQcm90 b2NvbC9HcmFwaGljc091dHB1dC5oPg0KPiA+ICsjaW5jbHVkZSA8UHJvdG9jb2wvSGlpQ29uZmln QWNjZXNzLmg+DQo+ID4gKyNpbmNsdWRlIDxHdWlkL01kZU1vZHVsZUhpaS5oPg0KPiA+ICsjaW5j bHVkZSA8R3VpZC9TaW1pY3NYNThQbGF0Zm9ybUNvbmZpZy5oPg0KPiA+ICsNCj4gPiArI2luY2x1 ZGUgIlBsYXRmb3JtLmgiDQo+ID4gKyNpbmNsdWRlICJQbGF0Zm9ybUNvbmZpZy5oIg0KPiA+ICsj aW5jbHVkZSA8TGlicmFyeS9EeGVTZXJ2aWNlc1RhYmxlTGliLmg+DQo+ID4gKy8vDQo+ID4gKy8v IFRoZSBIaWlBZGRQYWNrYWdlcygpIGxpYnJhcnkgZnVuY3Rpb24gcmVxdWlyZXMgdGhhdCBhbnkg Y29udHJvbGxlciAob3INCj4gPiArLy8gaW1hZ2UpIGhhbmRsZSwgdG8gYmUgYXNzb2NpYXRlZCB3 aXRoIHRoZSBISUkgcGFja2FnZXMgdW5kZXIgaW5zdGFsbGF0aW9uLA0KPiBiZQ0KPiA+ICsvLyAi ZGVjb3JhdGVkIiB3aXRoIGEgZGV2aWNlIHBhdGguIFRoZSB0cmFkaXRpb24gc2VlbXMgdG8gYmUg YSB2ZW5kb3IgZGV2aWNlDQo+ID4gKy8vIHBhdGguDQo+ID4gKy8vDQo+ID4gKy8vIFdlJ2QgbGlr ZSB0byBhc3NvY2lhdGUgb3VyIEhJSSBwYWNrYWdlcyB3aXRoIHRoZSBkcml2ZXIncyBpbWFnZSBo YW5kbGUuIFRoZQ0KPiA+ICsvLyBmaXJzdCBpZGVhIGlzIHRvIHVzZSB0aGUgZHJpdmVyIGltYWdl J3MgZGV2aWNlIHBhdGguIFVuZm9ydHVuYXRlbHksIGxvYWRlZA0KPiA+ICsvLyBpbWFnZXMgb25s eSBjb21lIHdpdGggYW4NCj4gRUZJX0xPQURFRF9JTUFHRV9ERVZJQ0VfUEFUSF9QUk9UT0NPTA0K PiA+IChub3QgdGhlDQo+ID4gKy8vIHVzdWFsIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCksIGll LiBhIGRpZmZlcmVudCBHVUlELiBJbiBhZGRpdGlvbiwNCj4gZXZlbg0KPiA+IHRoZQ0KPiA+ICsv LyBFRklfTE9BREVEX0lNQUdFX0RFVklDRV9QQVRIX1BST1RPQ09MIGludGVyZmFjZSBtYXkgYmUg TlVMTCwgaWYNCj4gPiB0aGUgaW1hZ2UNCj4gPiArLy8gaGFzIGJlZW4gbG9hZGVkIGZyb20gYW4g InVubmFtZWQiIG1lbW9yeSBzb3VyY2UgYnVmZmVyLg0KPiA+ICsvLw0KPiA+ICsvLyBIZW5jZSBs ZXQncyBqdXN0IHN0aWNrIHdpdGggdGhlIHRyYWRpdGlvbiAtLSB1c2UgYSBkZWRpY2F0ZWQgdmVu ZG9yIGRldmljZQ0KPiA+ICsvLyBwYXRoLCB3aXRoIHRoZSBkcml2ZXIncyBGSUxFX0dVSUQuDQo+ ID4gKy8vDQo+ID4gKyNwcmFnbWEgcGFjaygxKQ0KPiA+ICt0eXBlZGVmIHN0cnVjdCB7DQo+ID4g KyAgVkVORE9SX0RFVklDRV9QQVRIICAgICAgIFZlbmRvckRldmljZVBhdGg7DQo+ID4gKyAgRUZJ X0RFVklDRV9QQVRIX1BST1RPQ09MIEVuZDsNCj4gPiArfSBQS0dfREVWSUNFX1BBVEg7DQo+ID4g KyNwcmFnbWEgcGFjaygpDQo+ID4gKw0KPiA+ICtTVEFUSUMgUEtHX0RFVklDRV9QQVRIIG1Qa2dE ZXZpY2VQYXRoID0gew0KPiA+ICsgIHsNCj4gPiArICAgIHsNCj4gPiArICAgICAgSEFSRFdBUkVf REVWSUNFX1BBVEgsDQo+ID4gKyAgICAgIEhXX1ZFTkRPUl9EUCwNCj4gPiArICAgICAgew0KPiA+ ICsgICAgICAgIChVSU5UOCkgKHNpemVvZiAoVkVORE9SX0RFVklDRV9QQVRIKSAgICAgKSwNCj4g PiArICAgICAgICAoVUlOVDgpIChzaXplb2YgKFZFTkRPUl9ERVZJQ0VfUEFUSCkgPj4gOCkNCj4g PiArICAgICAgfQ0KPiA+ICsgICAgfSwNCj4gPiArICAgIEVGSV9DQUxMRVJfSURfR1VJRA0KPiA+ ICsgIH0sDQo+ID4gKyAgew0KPiA+ICsgICAgRU5EX0RFVklDRV9QQVRIX1RZUEUsDQo+ID4gKyAg ICBFTkRfRU5USVJFX0RFVklDRV9QQVRIX1NVQlRZUEUsDQo+ID4gKyAgICB7DQo+ID4gKyAgICAg IChVSU5UOCkgKEVORF9ERVZJQ0VfUEFUSF9MRU5HVEggICAgICksDQo+ID4gKyAgICAgIChVSU5U OCkgKEVORF9ERVZJQ0VfUEFUSF9MRU5HVEggPj4gOCkNCj4gPiArICAgIH0NCj4gPiArICB9DQo+ ID4gK307DQo+ID4gKw0KPiA+ICsvLw0KPiA+ICsvLyBUaGUgY29uZmlndXJhdGlvbiBpbnRlcmZh Y2UgYmV0d2VlbiB0aGUgSElJIGVuZ2luZSAoZm9ybSBkaXNwbGF5IGV0YykgYW5kDQo+ID4gKy8v IHRoaXMgZHJpdmVyLg0KPiA+ICsvLw0KPiA+ICtTVEFUSUMgRUZJX0hJSV9DT05GSUdfQUNDRVNT X1BST1RPQ09MIG1Db25maWdBY2Nlc3M7DQo+ID4gKw0KPiA+ICsvLw0KPiA+ICsvLyBUaGUgaGFu ZGxlIHJlcHJlc2VudGluZyBvdXIgbGlzdCBvZiBwYWNrYWdlcyBhZnRlciBpbnN0YWxsYXRpb24u DQo+ID4gKy8vDQo+ID4gK1NUQVRJQyBFRklfSElJX0hBTkRMRSBtSW5zdGFsbGVkUGFja2FnZXM7 DQo+ID4gKw0KPiA+ICsvLw0KPiA+ICsvLyBUaGUgYXJyYXlzIGJlbG93IGNvbnN0aXR1dGUgb3Vy IEhJSSBwYWNrYWdlIGxpc3QuIFRoZXkgYXJlIGF1dG8tZ2VuZXJhdGVkDQo+IGJ5DQo+ID4gKy8v IHRoZSBWRlIgY29tcGlsZXIgYW5kIGxpbmtlZCBpbnRvIHRoZSBkcml2ZXIgaW1hZ2UgZHVyaW5n IHRoZSBidWlsZC4NCj4gPiArLy8NCj4gPiArLy8gLSBUaGUgc3RyaW5ncyBwYWNrYWdlIHJlY2Vp dmVzIGl0cyBDIGlkZW50aWZpZXIgZnJvbSB0aGUgZHJpdmVyJ3MNCj4gQkFTRV9OQU1FLA0KPiA+ ICsvLyAgIHBsdXMgIlN0cmluZ3MiLg0KPiA+ICsvLw0KPiA+ICsvLyAtIFRoZSBmb3JtcyBwYWNr YWdlIHJlY2VpdmVzIGl0cyBDIGlkZW50aWZpZXIgZnJvbSB0aGUgVkZSIGZpbGUncyBiYXNlbmFt ZSwNCj4gPiArLy8gICBwbHVzICJCaW4iLg0KPiA+ICsvLw0KPiA+ICsvLw0KPiA+ICtleHRlcm4g VUlOVDggUGxhdGZvcm1EeGVTdHJpbmdzW107DQo+ID4gK2V4dGVybiBVSU5UOCBQbGF0Zm9ybUZv cm1zQmluW107DQo+ID4gKw0KPiA+ICsvLw0KPiA+ICsvLyBXZSB3YW50IHRvIGJlIG5vdGlmaWVk IGFib3V0IEdPUCBpbnN0YWxsYXRpb25zIHVudGlsIHdlIGZpbmQgb25lIEdPUA0KPiA+ICsvLyBp bnRlcmZhY2UgdGhhdCBsZXRzIHVzIHBvcHVsYXRlIHRoZSBmb3JtLg0KPiA+ICsvLw0KPiA+ICtT VEFUSUMgRUZJX0VWRU5UIG1Hb3BFdmVudDsNCj4gPiArDQo+ID4gKy8vDQo+ID4gKy8vIFRoZSBy ZWdpc3RyYXRpb24gcmVjb3JkIHVuZGVybmVhdGggdGhpcyBwb2ludGVyIGFsbG93cyB1cyB0byBp dGVyYXRlDQo+IHRocm91Z2gNCj4gPiArLy8gdGhlIEdPUCBpbnN0YW5jZXMgb25lIGJ5IG9uZS4N Cj4gPiArLy8NCj4gPiArU1RBVElDIFZPSUQgKm1Hb3BUcmFja2VyOw0KPiA+ICsNCj4gPiArLy8N Cj4gPiArLy8gQ2FjaGUgdGhlIHJlc29sdXRpb25zIHdlIGdldCBmcm9tIHRoZSBHT1AuDQo+ID4g Ky8vDQo+ID4gK3R5cGVkZWYgc3RydWN0IHsNCj4gPiArICBVSU5UMzIgWDsNCj4gPiArICBVSU5U MzIgWTsNCj4gPiArfSBHT1BfTU9ERTsNCj4gPiArDQo+ID4gK1NUQVRJQyBVSU5UTiAgICBtTnVt R29wTW9kZXM7DQo+ID4gK1NUQVRJQyBHT1BfTU9ERSAqbUdvcE1vZGVzOw0KPiA+ICsNCj4gPiAr DQo+ID4gKy8qKg0KPiA+ICsgIExvYWQgdGhlIHBlcnNpc3RlbnQgcGxhdGZvcm0gY29uZmlndXJh dGlvbiBhbmQgdHJhbnNsYXRlIGl0IHRvIGJpbmFyeSBmb3JtDQo+ID4gKyAgc3RhdGUuDQo+ID4g Kw0KPiA+ICsgIElmIHRoZSBwbGF0Zm9ybSBjb25maWd1cmF0aW9uIGlzIG1pc3NpbmcsIHRoZW4g dGhlIGZ1bmN0aW9uIGZpbGxzIGluIGENCj4gPiArICBkZWZhdWx0IHN0YXRlLg0KPiA+ICsNCj4g PiArICBAcGFyYW1bb3V0XSBNYWluRm9ybVN0YXRlICBCaW5hcnkgZm9ybS93aWRnZXQgc3RhdGUg YWZ0ZXIgdHJhbnNsYXRpb24uDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgIEZv cm0vd2lkZ2V0IHN0YXRlIHJlYWR5Lg0KPiA+ICsgIEByZXR1cm4gICAgICAgICAgICAgIEVycm9y IGNvZGVzIGZyb20gdW5kZXJseWluZyBmdW5jdGlvbnMuDQo+ID4gKyoqLw0KPiA+ICtTVEFUSUMN Cj4gPiArRUZJX1NUQVRVUw0KPiA+ICtFRklBUEkNCj4gPiArUGxhdGZvcm1Db25maWdUb0Zvcm1T dGF0ZSAoDQo+ID4gKyAgT1VUIE1BSU5fRk9STV9TVEFURSAqTWFpbkZvcm1TdGF0ZQ0KPiA+ICsg ICkNCj4gPiArew0KPiA+ICsgIEVGSV9TVEFUVVMgICAgICBTdGF0dXM7DQo+ID4gKyAgUExBVEZP Uk1fQ09ORklHIFBsYXRmb3JtQ29uZmlnOw0KPiA+ICsgIFVJTlQ2NCAgICAgICAgICBPcHRpb25h bEVsZW1lbnRzOw0KPiA+ICsgIFVJTlROICAgICAgICAgICBNb2RlTnVtYmVyOw0KPiA+ICsNCj4g PiArICBaZXJvTWVtIChNYWluRm9ybVN0YXRlLCBzaXplb2YgKk1haW5Gb3JtU3RhdGUpOw0KPiA+ ICsNCj4gPiArICBTdGF0dXMgPSBQbGF0Zm9ybUNvbmZpZ0xvYWQgKCZQbGF0Zm9ybUNvbmZpZywg Jk9wdGlvbmFsRWxlbWVudHMpOw0KPiA+ICsgIHN3aXRjaCAoU3RhdHVzKSB7DQo+ID4gKyAgY2Fz ZSBFRklfU1VDQ0VTUzoNCj4gPiArICAgIGlmIChPcHRpb25hbEVsZW1lbnRzICYgUExBVEZPUk1f Q09ORklHX0ZfR1JBUEhJQ1NfUkVTT0xVVElPTikgew0KPiA+ICsgICAgICAvLw0KPiA+ICsgICAg ICAvLyBGb3JtYXQgdGhlIHByZWZlcnJlZCByZXNvbHV0aW9uIGFzIHRleHQuDQo+ID4gKyAgICAg IC8vDQo+ID4gKyAgICAgIFVuaWNvZGVTUHJpbnRBc2NpaUZvcm1hdCAoDQo+ID4gKyAgICAgICAg KENIQVIxNiAqKSBNYWluRm9ybVN0YXRlLT5DdXJyZW50UHJlZmVycmVkUmVzb2x1dGlvbiwNCj4g PiArICAgICAgICBzaXplb2YgTWFpbkZvcm1TdGF0ZS0+Q3VycmVudFByZWZlcnJlZFJlc29sdXRp b24sDQo+ID4gKyAgICAgICAgIiVMZHglTGQiLA0KPiA+ICsgICAgICAgIChJTlQ2NCkgUGxhdGZv cm1Db25maWcuSG9yaXpvbnRhbFJlc29sdXRpb24sDQo+ID4gKyAgICAgICAgKElOVDY0KSBQbGF0 Zm9ybUNvbmZpZy5WZXJ0aWNhbFJlc29sdXRpb24pOw0KPiA+ICsNCj4gPiArICAgICAgLy8NCj4g PiArICAgICAgLy8gVHJ5IHRvIGxvY2F0ZSBpdCBpbiB0aGUgZHJvcC1kb3duIGxpc3QgdG9vLiBU aGlzIG1heSBub3Qgc3VjY2VlZCwgYnV0DQo+ID4gKyAgICAgIC8vIHRoYXQncyBmaW5lLg0KPiA+ ICsgICAgICAvLw0KPiA+ICsgICAgICBmb3IgKE1vZGVOdW1iZXIgPSAwOyBNb2RlTnVtYmVyIDwg bU51bUdvcE1vZGVzOw0KPiA+ICsrTW9kZU51bWJlcikgew0KPiA+ICsgICAgICAgIGlmIChtR29w TW9kZXNbTW9kZU51bWJlcl0uWCA9PQ0KPiBQbGF0Zm9ybUNvbmZpZy5Ib3Jpem9udGFsUmVzb2x1 dGlvbg0KPiA+ICYmDQo+ID4gKyAgICAgICAgICAgIG1Hb3BNb2Rlc1tNb2RlTnVtYmVyXS5ZID09 IFBsYXRmb3JtQ29uZmlnLlZlcnRpY2FsUmVzb2x1dGlvbikgew0KPiA+ICsgICAgICAgICAgTWFp bkZvcm1TdGF0ZS0+TmV4dFByZWZlcnJlZFJlc29sdXRpb24gPSAoVUlOVDMyKSBNb2RlTnVtYmVy Ow0KPiA+ICsgICAgICAgICAgYnJlYWs7DQo+ID4gKyAgICAgICAgfQ0KPiA+ICsgICAgICB9DQo+ ID4gKw0KPiA+ICsgICAgICBicmVhazsNCj4gPiArICAgIH0NCj4gPiArICAgIC8vDQo+ID4gKyAg ICAvLyBmYWxsIHRocm91Z2ggb3RoZXJ3aXNlDQo+ID4gKyAgICAvLw0KPiA+ICsNCj4gPiArICBj YXNlIEVGSV9OT1RfRk9VTkQ6DQo+ID4gKyAgICBVbmljb2RlU1ByaW50QXNjaWlGb3JtYXQgKA0K PiA+ICsgICAgICAoQ0hBUjE2ICopIE1haW5Gb3JtU3RhdGUtPkN1cnJlbnRQcmVmZXJyZWRSZXNv bHV0aW9uLA0KPiA+ICsgICAgICBzaXplb2YgTWFpbkZvcm1TdGF0ZS0+Q3VycmVudFByZWZlcnJl ZFJlc29sdXRpb24sDQo+ID4gKyAgICAgICJVbnNldCIpOw0KPiA+ICsgICAgYnJlYWs7DQo+ID4g Kw0KPiA+ICsgIGRlZmF1bHQ6DQo+ID4gKyAgICByZXR1cm4gU3RhdHVzOw0KPiA+ICsgIH0NCj4g PiArDQo+ID4gKyAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsNCj4g PiArLyoqDQo+ID4gKyAgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgdGhlIEhJSSBtYWNoaW5l cnkgd2hlbiBpdCBmZXRjaGVzIHRoZSBmb3JtIHN0YXRlLg0KPiA+ICsNCj4gPiArICBTZWUgdGhl IHByZWNpc2UgZG9jdW1lbnRhdGlvbiBpbiB0aGUgVUVGSSBzcGVjLg0KPiA+ICsNCj4gPiArICBA cGFyYW1baW5dICBUaGlzICAgICAgVGhlIENvbmZpZyBBY2Nlc3MgUHJvdG9jb2wgaW5zdGFuY2Uu DQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtpbl0gIFJlcXVlc3QgICBBIDxDb25maWdSZXF1ZXN0PiBm b3JtYXQgVUNTLTIgc3RyaW5nIGRlc2NyaWJpbmcNCj4gdGhlDQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgIHF1ZXJ5Lg0KPiA+ICsNCj4gPiArICBAcGFyYW1bb3V0XSBQcm9ncmVzcyAgQSBw b2ludGVyIGludG8gUmVxdWVzdCBvbiBvdXRwdXQsIGlkZW50aWZ5aW5nIHRoZQ0KPiA+IHF1ZXJ5 DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQgd2hlcmUgcHJvY2Vzc2luZyBm YWlsZWQuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtvdXRdIFJlc3VsdHMgICBBIDxNdWx0aUNvbmZp Z0FsdFJlc3A+IGZvcm1hdCBVQ1MtMiBzdHJpbmcgdGhhdCBoYXMNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgYWxsIHZhbHVlcyBmaWxsZWQgaW4gZm9yIHRoZSBuYW1lcyBpbiB0aGUgUmVx dWVzdA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmcuDQo+ID4gKw0KPiA+ICsg IEByZXR2YWwgRUZJX1NVQ0NFU1MgIEV4dHJhY3Rpb24gb2YgZm9ybSBzdGF0ZSBpbiA8TXVsdGlD b25maWdBbHRSZXNwPg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nIHN1Y2Nl c3NmdWwuDQo+ID4gKyAgQHJldHVybiAgICAgICAgICAgICAgU3RhdHVzIGNvZGVzIGZyb20gdW5k ZXJseWluZyBmdW5jdGlvbnMuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArU1RBVElDDQo+ID4gK0VG SV9TVEFUVVMNCj4gPiArRUZJQVBJDQo+ID4gK0V4dHJhY3RDb25maWcgKA0KPiA+ICsgIElOIENP TlNUICBFRklfSElJX0NPTkZJR19BQ0NFU1NfUFJPVE9DT0wgICpUaGlzLA0KPiA+ICsgIElOIENP TlNUICBFRklfU1RSSU5HICAgICAgICAgICAgICAgICAgICAgIFJlcXVlc3QsDQo+ID4gKyAgT1VU ICAgICAgIEVGSV9TVFJJTkcgICAgICAgICAgICAgICAgICAgICAgKlByb2dyZXNzLA0KPiA+ICsg IE9VVCAgICAgICBFRklfU1RSSU5HICAgICAgICAgICAgICAgICAgICAgICpSZXN1bHRzDQo+ID4g KykNCj4gPiArew0KPiA+ICsgIE1BSU5fRk9STV9TVEFURSBNYWluRm9ybVN0YXRlOw0KPiA+ICsg IEVGSV9TVEFUVVMgICAgICBTdGF0dXM7DQo+ID4gKw0KPiA+ICsgIERFQlVHICgoRUZJX0RfVkVS Qk9TRSwgIiVhOiBSZXF1ZXN0PVwiJXNcIlxuIiwgX19GVU5DVElPTl9fLA0KPiA+IFJlcXVlc3Qp KTsNCj4gPiArDQo+ID4gKyAgU3RhdHVzID0gUGxhdGZvcm1Db25maWdUb0Zvcm1TdGF0ZSAoJk1h aW5Gb3JtU3RhdGUpOw0KPiA+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiArICAg ICpQcm9ncmVzcyA9IFJlcXVlc3Q7DQo+ID4gKyAgICByZXR1cm4gU3RhdHVzOw0KPiA+ICsgIH0N Cj4gPiArDQo+ID4gKyAgLy8NCj4gPiArICAvLyBBbnN3ZXIgdGhlIHRleHR1YWwgcmVxdWVzdCBr ZXlpbmcgb2ZmIHRoZSBiaW5hcnkgZm9ybSBzdGF0ZS4NCj4gPiArICAvLw0KPiA+ICsgIFN0YXR1 cyA9IGdIaWlDb25maWdSb3V0aW5nLT5CbG9ja1RvQ29uZmlnIChnSGlpQ29uZmlnUm91dGluZywg UmVxdWVzdCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVk9JRCAqKSAm TWFpbkZvcm1TdGF0ZSwgc2l6ZW9mIE1haW5Gb3JtU3RhdGUsDQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgUmVzdWx0cywgUHJvZ3Jlc3MpOw0KPiA+ICsgIGlmIChFRklfRVJS T1IgKFN0YXR1cykpIHsNCj4gPiArICAgIERFQlVHICgoRUZJX0RfRVJST1IsICIlYTogQmxvY2tU b0NvbmZpZygpOiAlciwgUHJvZ3Jlc3M9XCIlc1wiXG4iLA0KPiA+ICsgICAgICBfX0ZVTkNUSU9O X18sIFN0YXR1cywgKFN0YXR1cyA9PSBFRklfREVWSUNFX0VSUk9SKSA/IE5VTEwgOg0KPiA+ICpQ cm9ncmVzcykpOw0KPiA+ICsgIH0gZWxzZSB7DQo+ID4gKyAgICBERUJVRyAoKEVGSV9EX1ZFUkJP U0UsICIlYTogUmVzdWx0cz1cIiVzXCJcbiIsIF9fRlVOQ1RJT05fXywNCj4gPiAqUmVzdWx0cykp Ow0KPiA+ICsgIH0NCj4gPiArICByZXR1cm4gU3RhdHVzOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsN Cj4gPiArLyoqDQo+ID4gKyAgSW50ZXJwcmV0IHRoZSBiaW5hcnkgZm9ybSBzdGF0ZSBhbmQgc2F2 ZSBpdCBhcyBwZXJzaXN0ZW50IHBsYXRmb3JtDQo+ID4gKyAgY29uZmlndXJhdGlvbi4NCj4gPiAr DQo+ID4gKyAgQHBhcmFtW2luXSBNYWluRm9ybVN0YXRlICBCaW5hcnkgZm9ybS93aWRnZXQgc3Rh dGUgdG8gdmVyaWZ5IGFuZCBzYXZlLg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNT ICBQbGF0Zm9ybSBjb25maWd1cmF0aW9uIHNhdmVkLg0KPiA+ICsgIEByZXR1cm4gICAgICAgICAg ICAgIEVycm9yIGNvZGVzIGZyb20gdW5kZXJseWluZyBmdW5jdGlvbnMuDQo+ID4gKyoqLw0KPiA+ ICtTVEFUSUMNCj4gPiArRUZJX1NUQVRVUw0KPiA+ICtFRklBUEkNCj4gPiArRm9ybVN0YXRlVG9Q bGF0Zm9ybUNvbmZpZyAoDQo+ID4gKyAgSU4gQ09OU1QgTUFJTl9GT1JNX1NUQVRFICpNYWluRm9y bVN0YXRlDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgRUZJX1NUQVRVUyAgICAgIFN0YXR1czsN Cj4gPiArICBQTEFURk9STV9DT05GSUcgUGxhdGZvcm1Db25maWc7DQo+ID4gKyAgQ09OU1QgR09Q X01PREUgICpHb3BNb2RlOw0KPiA+ICsNCj4gPiArICAvLw0KPiA+ICsgIC8vIFRoZXJlJ3Mgbm90 aGluZyB0byBkbyB3aXRoIHRoZSB0ZXh0dWFsIEN1cnJlbnRQcmVmZXJyZWRSZXNvbHV0aW9uIGZp ZWxkLg0KPiA+ICsgIC8vIFdlIHZlcmlmeSBhbmQgdHJhbnNsYXRlIHRoZSBzZWxlY3Rpb24gaW4g dGhlIGRyb3AtZG93biBsaXN0Lg0KPiA+ICsgIC8vDQo+ID4gKyAgaWYgKE1haW5Gb3JtU3RhdGUt Pk5leHRQcmVmZXJyZWRSZXNvbHV0aW9uID49IG1OdW1Hb3BNb2Rlcykgew0KPiA+ICsgICAgcmV0 dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCj4gPiArICB9DQo+ID4gKyAgR29wTW9kZSA9IG1H b3BNb2RlcyArIE1haW5Gb3JtU3RhdGUtPk5leHRQcmVmZXJyZWRSZXNvbHV0aW9uOw0KPiA+ICsN Cj4gPiArICBaZXJvTWVtICgmUGxhdGZvcm1Db25maWcsIHNpemVvZiBQbGF0Zm9ybUNvbmZpZyk7 DQo+ID4gKyAgUGxhdGZvcm1Db25maWcuSG9yaXpvbnRhbFJlc29sdXRpb24gPSBHb3BNb2RlLT5Y Ow0KPiA+ICsgIFBsYXRmb3JtQ29uZmlnLlZlcnRpY2FsUmVzb2x1dGlvbiAgID0gR29wTW9kZS0+ WTsNCj4gPiArDQo+ID4gKyAgU3RhdHVzID0gUGxhdGZvcm1Db25maWdTYXZlICgmUGxhdGZvcm1D b25maWcpOw0KPiA+ICsgIHJldHVybiBTdGF0dXM7DQo+ID4gK30NCj4gPiArDQo+ID4gKw0KPiA+ ICsvKioNCj4gPiArICBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSB0aGUgSElJIG1hY2hpbmVy eSB3aGVuIGl0IHdhbnRzIHRoZSBkcml2ZXIgdG8NCj4gPiArICBpbnRlcnByZXQgYW5kIHBlcnNp c3QgdGhlIGZvcm0gc3RhdGUuDQo+ID4gKw0KPiA+ICsgIFNlZSB0aGUgcHJlY2lzZSBkb2N1bWVu dGF0aW9uIGluIHRoZSBVRUZJIHNwZWMuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtpbl0gIFRoaXMg ICAgICAgICAgIFRoZSBDb25maWcgQWNjZXNzIFByb3RvY29sIGluc3RhbmNlLg0KPiA+ICsNCj4g PiArICBAcGFyYW1baW5dICBDb25maWd1cmF0aW9uICBBIDxDb25maWdSZXNwPiBmb3JtYXQgVUNT LTIgc3RyaW5nIGRlc2NyaWJpbmcNCj4gPiB0aGUNCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBmb3JtIHN0YXRlLg0KPiA+ICsNCj4gPiArICBAcGFyYW1bb3V0XSBQcm9ncmVzcyAg ICAgICBBIHBvaW50ZXIgaW50byBDb25maWd1cmF0aW9uIG9uIG91dHB1dCwNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpZGVudGlmeWluZyB0aGUgZWxlbWVudCB3aGVyZSBwcm9j ZXNzaW5nIGZhaWxlZC4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgQ29uZmln dXJhdGlvbiB2ZXJpZmllZCwgc3RhdGUgcGVybWFuZW50Lg0KPiA+ICsNCj4gPiArICBAcmV0dXJu ICAgICAgICAgICAgICBTdGF0dXMgY29kZXMgZnJvbSB1bmRlcmx5aW5nIGZ1bmN0aW9ucy4NCj4g PiArKiovDQo+ID4gK1NUQVRJQw0KPiA+ICtFRklfU1RBVFVTDQo+ID4gK0VGSUFQSQ0KPiA+ICtS b3V0ZUNvbmZpZyAoDQo+ID4gKyAgSU4gQ09OU1QgIEVGSV9ISUlfQ09ORklHX0FDQ0VTU19QUk9U T0NPTCAgKlRoaXMsDQo+ID4gKyAgSU4gQ09OU1QgIEVGSV9TVFJJTkcgICAgICAgICAgICAgICAg ICAgICAgQ29uZmlndXJhdGlvbiwNCj4gPiArICBPVVQgICAgICAgRUZJX1NUUklORyAgICAgICAg ICAgICAgICAgICAgICAqUHJvZ3Jlc3MNCj4gPiArKQ0KPiA+ICt7DQo+ID4gKyAgTUFJTl9GT1JN X1NUQVRFIE1haW5Gb3JtU3RhdGU7DQo+ID4gKyAgVUlOVE4gICAgICAgICAgIEJsb2NrU2l6ZTsN Cj4gPiArICBFRklfU1RBVFVTICAgICAgU3RhdHVzOw0KPiA+ICsNCj4gPiArICBERUJVRyAoKEVG SV9EX1ZFUkJPU0UsICIlYTogQ29uZmlndXJhdGlvbj1cIiVzXCJcbiIsIF9fRlVOQ1RJT05fXywN Cj4gPiArICAgIENvbmZpZ3VyYXRpb24pKTsNCj4gPiArDQo+ID4gKyAgLy8NCj4gPiArICAvLyB0 aGUgInJlYWQiIHN0ZXAgaW4gUk1XDQo+ID4gKyAgLy8NCj4gPiArICBTdGF0dXMgPSBQbGF0Zm9y bUNvbmZpZ1RvRm9ybVN0YXRlICgmTWFpbkZvcm1TdGF0ZSk7DQo+ID4gKyAgaWYgKEVGSV9FUlJP UiAoU3RhdHVzKSkgew0KPiA+ICsgICAgKlByb2dyZXNzID0gQ29uZmlndXJhdGlvbjsNCj4gPiAr ICAgIHJldHVybiBTdGF0dXM7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICAvLw0KPiA+ICsgIC8v IHRoZSAibW9kaWZ5IiBzdGVwIGluIFJNVw0KPiA+ICsgIC8vDQo+ID4gKyAgLy8gKFVwZGF0ZSB0 aGUgYmluYXJ5IGZvcm0gc3RhdGUuIFRoaXMgdXBkYXRlIG1heSBiZSBwYXJ0aWFsLCB3aGljaCBp cyB3aHkgaW4NCj4gPiArICAvLyBnZW5lcmFsIHdlIG11c3QgcHJlLWxvYWQgdGhlIGZvcm0gc3Rh dGUgZnJvbSB0aGUgcGxhdGZvcm0gY29uZmlnLikNCj4gPiArICAvLw0KPiA+ICsgIEJsb2NrU2l6 ZSA9IHNpemVvZiBNYWluRm9ybVN0YXRlOw0KPiA+ICsgIFN0YXR1cyA9IGdIaWlDb25maWdSb3V0 aW5nLT5Db25maWdUb0Jsb2NrIChnSGlpQ29uZmlnUm91dGluZywNCj4gQ29uZmlndXJhdGlvbiwN Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVk9JRCAqKSAmTWFpbkZvcm1T dGF0ZSwgJkJsb2NrU2l6ZSwgUHJvZ3Jlc3MpOw0KPiA+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1 cykpIHsNCj4gPiArICAgIERFQlVHICgoRUZJX0RfRVJST1IsICIlYTogQ29uZmlnVG9CbG9jaygp OiAlciwgUHJvZ3Jlc3M9XCIlc1wiXG4iLA0KPiA+ICsgICAgICBfX0ZVTkNUSU9OX18sIFN0YXR1 cywNCj4gPiArICAgICAgKFN0YXR1cyA9PSBFRklfQlVGRkVSX1RPT19TTUFMTCkgPyBOVUxMIDog KlByb2dyZXNzKSk7DQo+ID4gKyAgICByZXR1cm4gU3RhdHVzOw0KPiA+ICsgIH0NCj4gPiArDQo+ ID4gKyAgLy8NCj4gPiArICAvLyB0aGUgIndyaXRlIiBzdGVwIGluIFJNVw0KPiA+ICsgIC8vDQo+ ID4gKyAgU3RhdHVzID0gRm9ybVN0YXRlVG9QbGF0Zm9ybUNvbmZpZyAoJk1haW5Gb3JtU3RhdGUp Ow0KPiA+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiArICAgICpQcm9ncmVzcyA9 IENvbmZpZ3VyYXRpb247DQo+ID4gKyAgfQ0KPiA+ICsgIHJldHVybiBTdGF0dXM7DQo+ID4gK30N Cj4gPiArDQo+ID4gKw0KPiA+ICtTVEFUSUMNCj4gPiArRUZJX1NUQVRVUw0KPiA+ICtFRklBUEkN Cj4gPiArQ2FsbGJhY2sgKA0KPiA+ICsgIElOICAgICBDT05TVCBFRklfSElJX0NPTkZJR19BQ0NF U1NfUFJPVE9DT0wgICAqVGhpcywNCj4gPiArICBJTiAgICAgRUZJX0JST1dTRVJfQUNUSU9OICAg ICAgICAgICAgICAgICAgICAgQWN0aW9uLA0KPiA+ICsgIElOICAgICBFRklfUVVFU1RJT05fSUQg ICAgICAgICAgICAgICAgICAgICAgICBRdWVzdGlvbklkLA0KPiA+ICsgIElOICAgICBVSU5UOCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlLA0KPiA+ICsgIElOIE9VVCBFRklf SUZSX1RZUEVfVkFMVUUgICAgICAgICAgICAgICAgICAgICAqVmFsdWUsDQo+ID4gKyAgT1VUICAg IEVGSV9CUk9XU0VSX0FDVElPTl9SRVFVRVNUICAgICAgICAgICAgICpBY3Rpb25SZXF1ZXN0DQo+ ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgREVCVUcgKChFRklfRF9WRVJCT1NFLCAiJWE6IEFjdGlv bj0weCVMeCBRdWVzdGlvbklkPSVkIFR5cGU9JWRcbiIsDQo+ID4gKyAgICBfX0ZVTkNUSU9OX18s IChVSU5UNjQpIEFjdGlvbiwgUXVlc3Rpb25JZCwgVHlwZSkpOw0KPiA+ICsNCj4gPiArICBpZiAo QWN0aW9uICE9IEVGSV9CUk9XU0VSX0FDVElPTl9DSEFOR0VEKSB7DQo+ID4gKyAgICByZXR1cm4g RUZJX1VOU1VQUE9SVEVEOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgc3dpdGNoIChRdWVzdGlv bklkKSB7DQo+ID4gKyAgY2FzZSBRVUVTVElPTl9TQVZFX0VYSVQ6DQo+ID4gKyAgICAqQWN0aW9u UmVxdWVzdCA9DQo+IEVGSV9CUk9XU0VSX0FDVElPTl9SRVFVRVNUX0ZPUk1fU1VCTUlUX0VYSVQ7 DQo+ID4gKyAgICBicmVhazsNCj4gPiArDQo+ID4gKyAgY2FzZSBRVUVTVElPTl9ESVNDQVJEX0VY SVQ6DQo+ID4gKyAgICAqQWN0aW9uUmVxdWVzdCA9DQo+IEVGSV9CUk9XU0VSX0FDVElPTl9SRVFV RVNUX0ZPUk1fRElTQ0FSRF9FWElUOw0KPiA+ICsgICAgYnJlYWs7DQo+ID4gKw0KPiA+ICsgIGRl ZmF1bHQ6DQo+ID4gKyAgICBicmVhazsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIHJldHVybiBF RklfU1VDQ0VTUzsNCj4gPiArfQ0KPiA+ICsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFF1ZXJ5 IGFuZCBzYXZlIGFsbCByZXNvbHV0aW9ucyBzdXBwb3J0ZWQgYnkgdGhlIEdPUC4NCj4gPiArDQo+ ID4gKyAgQHBhcmFtW2luXSAgR29wICAgICAgICAgIFRoZSBHcmFwaGljcyBPdXRwdXQgUHJvdG9j b2wgaW5zdGFuY2UgdG8gcXVlcnkuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtvdXRdIE51bUdvcE1v ZGVzICBUaGUgbnVtYmVyIG9mIG1vZGVzIHN1cHBvcnRlZCBieSB0aGUNCj4gR09QLg0KPiA+IE9u IG91dHB1dCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyBwYXJhbWV0ZXIg d2lsbCBiZSBwb3NpdGl2ZS4NCj4gPiArDQo+ID4gKyAgQHBhcmFtW291dF0gR29wTW9kZXMgICAg IE9uIG91dHB1dCwgYSBkeW5hbWljYWxseSBhbGxvY2F0ZWQgYXJyYXkNCj4gPiBjb250YWluaW5n DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSByZXNvbHV0aW9ucyByZXR1cm5l ZCBieSB0aGUgR09QLiBUaGUgY2FsbGVyIGlzDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgIHJlc3BvbnNpYmxlIGZvciBmcmVlaW5nIHRoZSBhcnJheSBhZnRlciB1c2UuDQo+ID4gKw0K PiA+ICsgIEByZXR2YWwgRUZJX1VOU1VQUE9SVEVEICAgICAgIE5vIG1vZGVzIGZvdW5kLg0KPiA+ ICsgIEByZXR2YWwgRUZJX09VVF9PRl9SRVNPVVJDRVMgIEZhaWxlZCB0byBhbGxvY2F0ZSBHb3BN b2Rlcy4NCj4gPiArICBAcmV0dXJuICAgICAgICAgICAgICAgICAgICAgICBFcnJvciBjb2RlcyBm cm9tIEdvcC0+UXVlcnlNb2RlKCkuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArU1RBVElDDQo+ID4g K0VGSV9TVEFUVVMNCj4gPiArRUZJQVBJDQo+ID4gK1F1ZXJ5R29wTW9kZXMgKA0KPiA+ICsgIElO ICBFRklfR1JBUEhJQ1NfT1VUUFVUX1BST1RPQ09MICpHb3AsDQo+ID4gKyAgT1VUIFVJTlROICAg ICAgICAgICAgICAgICAgICAgICAgKk51bUdvcE1vZGVzLA0KPiA+ICsgIE9VVCBHT1BfTU9ERSAg ICAgICAgICAgICAgICAgICAgICoqR29wTW9kZXMNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBF RklfU1RBVFVTIFN0YXR1czsNCj4gPiArICBVSU5UMzIgICAgIE1vZGVOdW1iZXI7DQo+ID4gKw0K PiA+ICsgIGlmIChHb3AtPk1vZGUtPk1heE1vZGUgPT0gMCkgew0KPiA+ICsgICAgcmV0dXJuIEVG SV9VTlNVUFBPUlRFRDsNCj4gPiArICB9DQo+ID4gKyAgKk51bUdvcE1vZGVzID0gR29wLT5Nb2Rl LT5NYXhNb2RlOw0KPiA+ICsNCj4gPiArICAqR29wTW9kZXMgPSBBbGxvY2F0ZVBvb2wgKEdvcC0+ TW9kZS0+TWF4TW9kZSAqIHNpemVvZg0KPiAqKkdvcE1vZGVzKTsNCj4gPiArICBpZiAoKkdvcE1v ZGVzID09IE5VTEwpIHsNCj4gPiArICAgIHJldHVybiBFRklfT1VUX09GX1JFU09VUkNFUzsNCj4g PiArICB9DQo+ID4gKw0KPiA+ICsgIGZvciAoTW9kZU51bWJlciA9IDA7IE1vZGVOdW1iZXIgPCBH b3AtPk1vZGUtPk1heE1vZGU7DQo+ID4gKytNb2RlTnVtYmVyKSB7DQo+ID4gKyAgICBFRklfR1JB UEhJQ1NfT1VUUFVUX01PREVfSU5GT1JNQVRJT04gKkluZm87DQo+ID4gKyAgICBVSU5UTiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgU2l6ZU9mSW5mbzsNCj4gPiArDQo+ID4gKyAgICBT dGF0dXMgPSBHb3AtPlF1ZXJ5TW9kZSAoR29wLCBNb2RlTnVtYmVyLCAmU2l6ZU9mSW5mbywgJklu Zm8pOw0KPiA+ICsgICAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ICsgICAgICBnb3Rv IEZyZWVHb3BNb2RlczsNCj4gPiArICAgIH0NCj4gPiArDQo+ID4gKyAgICAoKkdvcE1vZGVzKVtN b2RlTnVtYmVyXS5YID0gSW5mby0+SG9yaXpvbnRhbFJlc29sdXRpb247DQo+ID4gKyAgICAoKkdv cE1vZGVzKVtNb2RlTnVtYmVyXS5ZID0gSW5mby0+VmVydGljYWxSZXNvbHV0aW9uOw0KPiA+ICsg ICAgRnJlZVBvb2wgKEluZm8pOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgcmV0dXJuIEVGSV9T VUNDRVNTOw0KPiA+ICsNCj4gPiArRnJlZUdvcE1vZGVzOg0KPiA+ICsgIEZyZWVQb29sICgqR29w TW9kZXMpOw0KPiA+ICsNCj4gPiArICByZXR1cm4gU3RhdHVzOw0KPiA+ICt9DQo+ID4gKw0KPiA+ ICsNCj4gPiArLyoqDQo+ID4gKyAgQ3JlYXRlIGEgc2V0IG9mICJvbmUtb2YtbWFueSIgKGllLiAi ZHJvcCBkb3duIGxpc3QiKSBvcHRpb24gSUZSIG9wY29kZXMsDQo+ID4gKyAgYmFzZWQgb24gYXZh aWxhYmxlIEdPUCByZXNvbHV0aW9ucywgdG8gYmUgcGxhY2VkIHVuZGVyIGEgIm9uZS1vZi1tYW55 IiAoaWUuDQo+ID4gKyAgImRyb3AgZG93biBsaXN0Iikgb3Bjb2RlLg0KPiA+ICsNCj4gPiArICBA cGFyYW1baW5dICBQYWNrYWdlTGlzdCAgIFRoZSBwYWNrYWdlIGxpc3Qgd2l0aCB0aGUgZm9ybXNl dCBhbmQgZm9ybSBmb3INCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWNoIHRo ZSBkcm9wIGRvd24gb3B0aW9ucyBhcmUgcHJvZHVjZWQuIE9wdGlvbg0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbmFtZXMgYXJlIGFkZGVkIGFzIG5ldyBzdHJpbmdzIHRvIFBhY2th Z2VMaXN0Lg0KPiA+ICsNCj4gPiArICBAcGFyYW1bb3V0XSBPcENvZGVCdWZmZXIgIE9uIG91dHB1 dCwgYSBkeW5hbWljYWxseSBhbGxvY2F0ZWQgb3Bjb2RlDQo+ID4gYnVmZmVyDQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICB3aXRoIGRyb3AgZG93biBsaXN0IG9wdGlvbnMgY29ycmVz cG9uZGluZyB0byBHT1ANCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdXRp b25zLiBUaGUgY2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciBmcmVlaW5nDQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICBPcENvZGVCdWZmZXIgd2l0aCBIaWlGcmVlT3BDb2RlSGFuZGxl KCkgYWZ0ZXIgdXNlLg0KPiA+ICsNCj4gPiArICBAcGFyYW1baW5dICBOdW1Hb3BNb2RlcyAgIE51 bWJlciBvZiBlbnRyaWVzIGluIEdvcE1vZGVzLg0KPiA+ICsNCj4gPiArICBAcGFyYW1baW5dICBH b3BNb2RlcyAgICAgIEFycmF5IG9mIHJlc29sdXRpb25zIHJldHJpZXZlZCBmcm9tIHRoZSBHT1Au DQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0VTUyAgT3Bjb2RlcyBoYXZlIGJlZW4gc3Vj Y2Vzc2Z1bGx5IHByb2R1Y2VkLg0KPiA+ICsNCj4gPiArICBAcmV0dXJuICAgICAgICAgICAgIFN0 YXR1cyBjb2RlcyBmcm9tIHVuZGVybHlpbmcgZnVuY3Rpb25zLiBQYWNrYWdlTGlzdCBtYXkNCj4g PiArICAgICAgICAgICAgICAgICAgICAgIGhhdmUgYmVlbiBleHRlbmRlZCB3aXRoIG5ldyBzdHJp bmdzLiBPcENvZGVCdWZmZXIgaXMNCj4gPiArICAgICAgICAgICAgICAgICAgICAgIHVuY2hhbmdl ZC4NCj4gPiArKiovDQo+ID4gK1NUQVRJQw0KPiA+ICtFRklfU1RBVFVTDQo+ID4gK0VGSUFQSQ0K PiA+ICtDcmVhdGVSZXNvbHV0aW9uT3B0aW9ucyAoDQo+ID4gKyAgSU4gIEVGSV9ISUlfSEFORExF ICAqUGFja2FnZUxpc3QsDQo+ID4gKyAgT1VUIFZPSUQgICAgICAgICAgICAqKk9wQ29kZUJ1ZmZl ciwNCj4gPiArICBJTiAgVUlOVE4gICAgICAgICAgIE51bUdvcE1vZGVzLA0KPiA+ICsgIElOICBH T1BfTU9ERSAgICAgICAgKkdvcE1vZGVzDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgRUZJX1NU QVRVUyBTdGF0dXM7DQo+ID4gKyAgVk9JRCAgICAgICAqT3V0cHV0QnVmZmVyOw0KPiA+ICsgIFVJ TlROICAgICAgTW9kZU51bWJlcjsNCj4gPiArDQo+ID4gKyAgT3V0cHV0QnVmZmVyID0gSGlpQWxs b2NhdGVPcENvZGVIYW5kbGUgKCk7DQo+ID4gKyAgaWYgKE91dHB1dEJ1ZmZlciA9PSBOVUxMKSB7 DQo+ID4gKyAgICByZXR1cm4gRUZJX09VVF9PRl9SRVNPVVJDRVM7DQo+ID4gKyAgfQ0KPiA+ICsN Cj4gPiArICBmb3IgKE1vZGVOdW1iZXIgPSAwOyBNb2RlTnVtYmVyIDwgTnVtR29wTW9kZXM7ICsr TW9kZU51bWJlcikgew0KPiA+ICsgICAgQ0hBUjE2ICAgICAgICBEZXNjW01BWFNJWkVfUkVTX0NV Ul07DQo+ID4gKyAgICBFRklfU1RSSU5HX0lEIE5ld1N0cmluZzsNCj4gPiArICAgIFZPSUQgICAg ICAgICAgKk9wQ29kZTsNCj4gPiArDQo+ID4gKyAgICBVbmljb2RlU1ByaW50QXNjaWlGb3JtYXQg KERlc2MsIHNpemVvZiBEZXNjLCAiJUxkeCVMZCIsDQo+ID4gKyAgICAgIChJTlQ2NCkgR29wTW9k ZXNbTW9kZU51bWJlcl0uWCwgKElOVDY0KQ0KPiA+IEdvcE1vZGVzW01vZGVOdW1iZXJdLlkpOw0K PiA+ICsgICAgTmV3U3RyaW5nID0gSGlpU2V0U3RyaW5nIChQYWNrYWdlTGlzdCwgMCAvKiBuZXcg c3RyaW5nICovLCBEZXNjLA0KPiA+ICsgICAgICAgICAgICAgICAgICBOVUxMIC8qIGZvciBhbGwg bGFuZ3VhZ2VzICovKTsNCj4gPiArICAgIGlmIChOZXdTdHJpbmcgPT0gMCkgew0KPiA+ICsgICAg ICBTdGF0dXMgPSBFRklfT1VUX09GX1JFU09VUkNFUzsNCj4gPiArICAgICAgZ290byBGcmVlT3V0 cHV0QnVmZmVyOw0KPiA+ICsgICAgfQ0KPiA+ICsgICAgT3BDb2RlID0gSGlpQ3JlYXRlT25lT2ZP cHRpb25PcENvZGUgKE91dHB1dEJ1ZmZlciwgTmV3U3RyaW5nLA0KPiA+ICsgICAgICAgICAgICAg ICAwIC8qIEZsYWdzICovLCBFRklfSUZSX05VTUVSSUNfU0laRV80LCBNb2RlTnVtYmVyKTsNCj4g PiArICAgIGlmIChPcENvZGUgPT0gTlVMTCkgew0KPiA+ICsgICAgICBTdGF0dXMgPSBFRklfT1VU X09GX1JFU09VUkNFUzsNCj4gPiArICAgICAgZ290byBGcmVlT3V0cHV0QnVmZmVyOw0KPiA+ICsg ICAgfQ0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgKk9wQ29kZUJ1ZmZlciA9IE91dHB1dEJ1ZmZl cjsNCj4gPiArICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ID4gKw0KPiA+ICtGcmVlT3V0cHV0QnVm ZmVyOg0KPiA+ICsgIEhpaUZyZWVPcENvZGVIYW5kbGUgKE91dHB1dEJ1ZmZlcik7DQo+ID4gKw0K PiA+ICsgIHJldHVybiBTdGF0dXM7DQo+ID4gK30NCj4gPiArDQo+ID4gKw0KPiA+ICsvKioNCj4g PiArICBQb3B1bGF0ZSB0aGUgZm9ybSBpZGVudGlmaWVkIGJ5IHRoZSAoUGFja2FnZUxpc3QsIEZv cm1TZXRHdWlkLCBGb3JtSWQpDQo+ID4gKyAgdHJpcGxldC4NCj4gPiArDQo+ID4gKyAgVGhlIGRy b3AgZG93biBsaXN0IG9mIHZpZGVvIHJlc29sdXRpb25zIGlzIGdlbmVyYXRlZCBmcm9tIChOdW1H b3BNb2RlcywNCj4gPiArICBHb3BNb2RlcykuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgRUZJX1NV Q0VTUyAgRm9ybSBzdWNjZXNzZnVsbHkgdXBkYXRlZC4NCj4gPiArICBAcmV0dXJuICAgICAgICAg ICAgIFN0YXR1cyBjb2RlcyBmcm9tIHVuZGVybHlpbmcgZnVuY3Rpb25zLg0KPiA+ICsNCj4gPiAr KiovDQo+ID4gK1NUQVRJQw0KPiA+ICtFRklfU1RBVFVTDQo+ID4gK0VGSUFQSQ0KPiA+ICtQb3B1 bGF0ZUZvcm0gKA0KPiA+ICsgIElOICBFRklfSElJX0hBTkRMRSAgKlBhY2thZ2VMaXN0LA0KPiA+ ICsgIElOICBFRklfR1VJRCAgICAgICAgKkZvcm1TZXRHdWlkLA0KPiA+ICsgIElOICBFRklfRk9S TV9JRCAgICAgRm9ybUlkLA0KPiA+ICsgIElOICBVSU5UTiAgICAgICAgICAgTnVtR29wTW9kZXMs DQo+ID4gKyAgSU4gIEdPUF9NT0RFICAgICAgICAqR29wTW9kZXMNCj4gPiArICApDQo+ID4gK3sN Cj4gPiArICBFRklfU1RBVFVTICAgICAgICAgU3RhdHVzOw0KPiA+ICsgIFZPSUQgICAgICAgICAg ICAgICAqT3BDb2RlQnVmZmVyOw0KPiA+ICsgIFZPSUQgICAgICAgICAgICAgICAqT3BDb2RlOw0K PiA+ICsgIEVGSV9JRlJfR1VJRF9MQUJFTCAqQW5jaG9yOw0KPiA+ICsgIFZPSUQgICAgICAgICAg ICAgICAqT3BDb2RlQnVmZmVyMjsNCj4gPiArDQo+ID4gKyAgT3BDb2RlQnVmZmVyMiA9IE5VTEw7 DQo+ID4gKw0KPiA+ICsgIC8vDQo+ID4gKyAgLy8gMS4gQWxsb2NhdGUgYW4gZW1wdHkgb3Bjb2Rl IGJ1ZmZlci4NCj4gPiArICAvLw0KPiA+ICsgIE9wQ29kZUJ1ZmZlciA9IEhpaUFsbG9jYXRlT3BD b2RlSGFuZGxlICgpOw0KPiA+ICsgIGlmIChPcENvZGVCdWZmZXIgPT0gTlVMTCkgew0KPiA+ICsg ICAgcmV0dXJuIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAg Ly8NCj4gPiArICAvLyAyLiBDcmVhdGUgYSBsYWJlbCBvcGNvZGUgKHdoaWNoIGlzIGEgVGlhbm8g ZXh0ZW5zaW9uKSBpbnNpZGUgdGhlIGJ1ZmZlci4NCj4gPiArICAvLyBUaGUgbGFiZWwncyBudW1i ZXIgbXVzdCBtYXRjaCB0aGUgImFuY2hvciIgbGFiZWwgaW4gdGhlIGZvcm0uDQo+ID4gKyAgLy8N Cj4gPiArICBPcENvZGUgPSBIaWlDcmVhdGVHdWlkT3BDb2RlIChPcENvZGVCdWZmZXIsICZnRWZp SWZyVGlhbm9HdWlkLA0KPiA+ICsgICAgICAgICAgICAgTlVMTCAvKiBvcHRpb25hbCBjb3B5IG9y aWdpbiAqLywgc2l6ZW9mICpBbmNob3IpOw0KPiA+ICsgIGlmIChPcENvZGUgPT0gTlVMTCkgew0K PiA+ICsgICAgU3RhdHVzID0gRUZJX09VVF9PRl9SRVNPVVJDRVM7DQo+ID4gKyAgICBnb3RvIEZy ZWVPcENvZGVCdWZmZXI7DQo+ID4gKyAgfQ0KPiA+ICsgIEFuY2hvciAgICAgICAgICAgICAgID0g T3BDb2RlOw0KPiA+ICsgIEFuY2hvci0+RXh0ZW5kT3BDb2RlID0gRUZJX0lGUl9FWFRFTkRfT1Bf TEFCRUw7DQo+ID4gKyAgQW5jaG9yLT5OdW1iZXIgICAgICAgPSBMQUJFTF9SRVNfTkVYVDsNCj4g PiArDQo+ID4gKyAgLy8NCj4gPiArICAvLyAzLiBDcmVhdGUgdGhlIG9wY29kZXMgaW5zaWRlIHRo ZSBidWZmZXIgdGhhdCBhcmUgdG8gYmUgaW5zZXJ0ZWQgaW50byB0aGUNCj4gPiArICAvLyBmb3Jt Lg0KPiA+ICsgIC8vDQo+ID4gKyAgLy8gMy4xLiBHZXQgYSBsaXN0IG9mIHJlc29sdXRpb25zLg0K PiA+ICsgIC8vDQo+ID4gKyAgU3RhdHVzID0gQ3JlYXRlUmVzb2x1dGlvbk9wdGlvbnMgKFBhY2th Z2VMaXN0LCAmT3BDb2RlQnVmZmVyMiwNCj4gPiArICAgICAgICAgICAgIE51bUdvcE1vZGVzLCBH b3BNb2Rlcyk7DQo+ID4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ICsgICAgZ290 byBGcmVlT3BDb2RlQnVmZmVyOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgLy8NCj4gPiArICAv LyAzLjIuIENyZWF0ZSBhIG9uZS1vZi1tYW55IHF1ZXN0aW9uIHdpdGggdGhlIGFib3ZlIG9wdGlv bnMuDQo+ID4gKyAgLy8NCj4gPiArICBPcENvZGUgPSBIaWlDcmVhdGVPbmVPZk9wQ29kZSAoDQo+ ID4gKyAgICAgICAgICAgICBPcENvZGVCdWZmZXIsICAgICAgICAgICAgICAgICAgICAgICAgLy8g Y3JlYXRlIG9wY29kZSBpbnNpZGUgdGhpcw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgb3Bjb2RlIGJ1ZmZlciwNCj4gPiArICAgICAg ICAgICAgIFFVRVNUSU9OX1JFU19ORVhULCAgICAgICAgICAgICAgICAgICAvLyBJRCBvZiBxdWVz dGlvbiwNCj4gPiArICAgICAgICAgICAgIEZPUk1TVEFURUlEX01BSU5fRk9STSwgICAgICAgICAg ICAgICAvLyBpZGVudGlmaWVzIGZvcm0gc3RhdGUNCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIHN0b3JhZ2UsDQo+ID4gKyAgICAgICAg ICAgICAoVUlOVDE2KSBPRkZTRVRfT0YgKE1BSU5fRk9STV9TVEFURSwgLy8gdmFsdWUgb2YgcXVl c3Rpb24NCj4gc3RvcmVkDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIE5leHRQcmVmZXJy ZWRSZXNvbHV0aW9uKSwgLy8gICBhdCB0aGlzIG9mZnNldCwNCj4gPiArICAgICAgICAgICAgIFNU UklOR19UT0tFTiAoU1RSX1JFU19ORVhUKSwgICAgICAgICAvLyBQcm9tcHQsDQo+ID4gKyAgICAg ICAgICAgICBTVFJJTkdfVE9LRU4gKFNUUl9SRVNfTkVYVF9IRUxQKSwgICAgLy8gSGVscCwNCj4g PiArICAgICAgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBR dWVzdGlvbkZsYWdzLA0KPiA+ICsgICAgICAgICAgICAgRUZJX0lGUl9OVU1FUklDX1NJWkVfNCwg ICAgICAgICAgICAgIC8vIHNlZSBzaXplb2YNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIE5leHRQcmVmZXJyZWRSZXNvbHV0aW9uLA0K PiA+ICsgICAgICAgICAgICAgT3BDb2RlQnVmZmVyMiwgICAgICAgICAgICAgICAgICAgICAgIC8v IGJ1ZmZlciB3aXRoIHBvc3NpYmxlDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLy8gICBjaG9pY2VzLA0KPiA+ICsgICAgICAgICAgICAgTlVM TCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERFRkFVTFQgb3Bjb2Rlcw0KPiA+ ICsgICAgICAgICAgICAgKTsNCj4gPiArICBpZiAoT3BDb2RlID09IE5VTEwpIHsNCj4gPiArICAg IFN0YXR1cyA9IEVGSV9PVVRfT0ZfUkVTT1VSQ0VTOw0KPiA+ICsgICAgZ290byBGcmVlT3BDb2Rl QnVmZmVyMjsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIC8vDQo+ID4gKyAgLy8gNC4gVXBkYXRl IHRoZSBmb3JtIHdpdGggdGhlIG9wY29kZSBidWZmZXIuDQo+ID4gKyAgLy8NCj4gPiArICBTdGF0 dXMgPSBIaWlVcGRhdGVGb3JtIChQYWNrYWdlTGlzdCwgRm9ybVNldEd1aWQsIEZvcm1JZCwNCj4g PiArICAgICAgICAgICAgIE9wQ29kZUJ1ZmZlciwgLy8gYnVmZmVyIHdpdGggaGVhZCBhbmNob3Is IGFuZCBuZXcgY29udGVudHMgdG8gYmUNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg Ly8gaW5zZXJ0ZWQgYXQgaXQNCj4gPiArICAgICAgICAgICAgIE5VTEwgICAgICAgICAgLy8gYnVm ZmVyIHdpdGggdGFpbCBhbmNob3IsIGZvciBkZWxldGluZyBvbGQNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgLy8gY29udGVudHMgdXAgdG8gaXQNCj4gPiArICAgICAgICAgICAgICk7 DQo+ID4gKw0KPiA+ICtGcmVlT3BDb2RlQnVmZmVyMjoNCj4gPiArICBIaWlGcmVlT3BDb2RlSGFu ZGxlIChPcENvZGVCdWZmZXIyKTsNCj4gPiArDQo+ID4gK0ZyZWVPcENvZGVCdWZmZXI6DQo+ID4g KyAgSGlpRnJlZU9wQ29kZUhhbmRsZSAoT3BDb2RlQnVmZmVyKTsNCj4gPiArDQo+ID4gKyAgcmV0 dXJuIFN0YXR1czsNCj4gPiArfQ0KPiA+ICsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIExvYWQg YW5kIGV4ZWN1dGUgdGhlIHBsYXRmb3JtIGNvbmZpZ3VyYXRpb24uDQo+ID4gKw0KPiA+ICsgIEBy ZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgICBDb25maWd1cmF0aW9uIGxvYWRlZCBhbmQgZXhl Y3V0ZWQuDQo+ID4gKyAgQHJldHVybiAgICAgICAgICAgICAgICAgICAgICAgIFN0YXR1cyBjb2Rl cyBmcm9tIFBsYXRmb3JtQ29uZmlnTG9hZCgpLg0KPiA+ICsqKi8NCj4gPiArU1RBVElDDQo+ID4g K0VGSV9TVEFUVVMNCj4gPiArRUZJQVBJDQo+ID4gK0V4ZWN1dGVQbGF0Zm9ybUNvbmZpZyAoDQo+ ID4gKyAgVk9JRA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIEVGSV9TVEFUVVMgICAgICBTdGF0 dXM7DQo+ID4gKyAgUExBVEZPUk1fQ09ORklHIFBsYXRmb3JtQ29uZmlnOw0KPiA+ICsgIFVJTlQ2 NCAgICAgICAgICBPcHRpb25hbEVsZW1lbnRzOw0KPiA+ICsNCj4gPiArICBTdGF0dXMgPSBQbGF0 Zm9ybUNvbmZpZ0xvYWQgKCZQbGF0Zm9ybUNvbmZpZywgJk9wdGlvbmFsRWxlbWVudHMpOw0KPiA+ ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiArICAgIERFQlVHICgoKFN0YXR1cyA9 PSBFRklfTk9UX0ZPVU5EKSA/IEVGSV9EX1ZFUkJPU0UgOiBFRklfRF9FUlJPUiwNCj4gPiArICAg ICAgIiVhOiBmYWlsZWQgdG8gbG9hZCBwbGF0Zm9ybSBjb25maWc6ICVyXG4iLCBfX0ZVTkNUSU9O X18sIFN0YXR1cykpOw0KPiA+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4gPiArICB9DQo+ID4gKw0K PiA+ICsgIGlmIChPcHRpb25hbEVsZW1lbnRzICYgUExBVEZPUk1fQ09ORklHX0ZfR1JBUEhJQ1Nf UkVTT0xVVElPTikgew0KPiA+ICsgICAgLy8NCj4gPiArICAgIC8vIFBhc3MgdGhlIHByZWZlcnJl ZCByZXNvbHV0aW9uIHRvIEdyYXBoaWNzQ29uc29sZUR4ZSB2aWEgZHluYW1pYyBQQ0RzLg0KPiA+ ICsgICAgLy8NCj4gPiArICAgIFBjZFNldDMyIChQY2RWaWRlb0hvcml6b250YWxSZXNvbHV0aW9u LA0KPiA+ICsgICAgICBQbGF0Zm9ybUNvbmZpZy5Ib3Jpem9udGFsUmVzb2x1dGlvbik7DQo+ID4g KyAgICBQY2RTZXQzMiAoUGNkVmlkZW9WZXJ0aWNhbFJlc29sdXRpb24sDQo+ID4gKyAgICAgIFBs YXRmb3JtQ29uZmlnLlZlcnRpY2FsUmVzb2x1dGlvbik7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiAr ICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ID4gK30NCj4gPiArDQo+ID4gKw0KPiA+ICsvKioNCj4g PiArICBOb3RpZmljYXRpb24gY2FsbGJhY2sgZm9yIEdPUCBpbnRlcmZhY2UgaW5zdGFsbGF0aW9u Lg0KPiA+ICsNCj4gPiArICBAcGFyYW1baW5dIEV2ZW50ICAgIEV2ZW50IHdob3NlIG5vdGlmaWNh dGlvbiBmdW5jdGlvbiBpcyBiZWluZyBpbnZva2VkLg0KPiA+ICsNCj4gPiArICBAcGFyYW1baW5d IENvbnRleHQgIFRoZSBwb2ludGVyIHRvIHRoZSBub3RpZmljYXRpb24gZnVuY3Rpb24ncyBjb250 ZXh0LA0KPiB3aGljaA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgaXMgaW1wbGVtZW50YXRp b24tZGVwZW5kZW50Lg0KPiA+ICsqKi8NCj4gPiArU1RBVElDDQo+ID4gK1ZPSUQNCj4gPiArRUZJ QVBJDQo+ID4gK0dvcEluc3RhbGxlZCAoDQo+ID4gKyAgSU4gRUZJX0VWRU5UIEV2ZW50LA0KPiA+ ICsgIElOIFZPSUQgICAgICAqQ29udGV4dA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIEVGSV9T VEFUVVMgICAgICAgICAgICAgICAgICAgU3RhdHVzOw0KPiA+ICsgIEVGSV9HUkFQSElDU19PVVRQ VVRfUFJPVE9DT0wgKkdvcDsNCj4gPiArDQo+ID4gKyAgQVNTRVJUIChFdmVudCA9PSBtR29wRXZl bnQpOw0KPiA+ICsNCj4gPiArICAvLw0KPiA+ICsgIC8vIENoZWNrIGZ1cnRoZXIgR09Qcy4NCj4g PiArICAvLw0KPiA+ICsgIGZvciAoOzspIHsNCj4gPiArICAgIG1OdW1Hb3BNb2RlcyA9IDA7DQo+ ID4gKyAgICBtR29wTW9kZXMgPSBOVUxMOw0KPiA+ICsNCj4gPiArICAgIFN0YXR1cyA9IGdCUy0+ TG9jYXRlUHJvdG9jb2wgKCZnRWZpR3JhcGhpY3NPdXRwdXRQcm90b2NvbEd1aWQsDQo+ID4gbUdv cFRyYWNrZXIsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgKFZPSUQgKiopICZHb3ApOw0KPiA+ ICsgICAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ICsgICAgICByZXR1cm47DQo+ID4g KyAgICB9DQo+ID4gKw0KPiA+ICsgICAgU3RhdHVzID0gUXVlcnlHb3BNb2RlcyAoR29wLCAmbU51 bUdvcE1vZGVzLCAmbUdvcE1vZGVzKTsNCj4gPiArICAgIGlmIChFRklfRVJST1IgKFN0YXR1cykp IHsNCj4gPiArICAgICAgY29udGludWU7DQo+ID4gKyAgICB9DQo+ID4gKw0KPiA+ICsgICAgU3Rh dHVzID0gUG9wdWxhdGVGb3JtIChtSW5zdGFsbGVkUGFja2FnZXMsDQo+ID4gJmdTaW1pY3NYNThQ bGF0Zm9ybUNvbmZpZ0d1aWQsDQo+ID4gKyAgICAgICAgICAgICAgIEZPUk1JRF9NQUlOX0ZPUk0s IG1OdW1Hb3BNb2RlcywgbUdvcE1vZGVzKTsNCj4gPiArICAgIGlmIChFRklfRVJST1IgKFN0YXR1 cykpIHsNCj4gPiArICAgICAgRnJlZVBvb2wgKG1Hb3BNb2Rlcyk7DQo+ID4gKyAgICAgIGNvbnRp bnVlOw0KPiA+ICsgICAgfQ0KPiA+ICsNCj4gPiArICAgIGJyZWFrOw0KPiA+ICsgIH0NCj4gPiAr DQo+ID4gKyAgLy8NCj4gPiArICAvLyBTdWNjZXNzIC0tIHNvIHVuaW5zdGFsbCB0aGlzIGNhbGxi YWNrLiBDbG9zaW5nIHRoZSBldmVudCByZW1vdmVzIGFsbA0KPiA+ICsgIC8vIHBlbmRpbmcgbm90 aWZpY2F0aW9ucyBhbmQgYWxsIHByb3RvY29sIHJlZ2lzdHJhdGlvbnMuDQo+ID4gKyAgLy8NCj4g PiArICBTdGF0dXMgPSBnQlMtPkNsb3NlRXZlbnQgKG1Hb3BFdmVudCk7DQo+ID4gKyAgQVNTRVJU X0VGSV9FUlJPUiAoU3RhdHVzKTsNCj4gPiArICBtR29wRXZlbnQgPSBOVUxMOw0KPiA+ICsgIG1H b3BUcmFja2VyID0gTlVMTDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsg IEVudHJ5IHBvaW50IGZvciB0aGlzIGRyaXZlci4NCj4gPiArDQo+ID4gKyAgQHBhcmFtW2luXSBJ bWFnZUhhbmRsZSAgSW1hZ2UgaGFuZGxlIG9mIHRoaXMgZHJpdmVyLg0KPiA+ICsgIEBwYXJhbVtp bl0gU3lzdGVtVGFibGUgIFBvaW50ZXIgdG8gU3lzdGVtVGFibGUuDQo+ID4gKw0KPiA+ICsgIEBy ZXR2YWwgRUZJX1NVQ0VTUyAgICAgICAgICAgIERyaXZlciBoYXMgbG9hZGVkIHN1Y2Nlc3NmdWxs eS4NCj4gPiArICBAcmV0dmFsIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTICBGYWlsZWQgdG8gaW5zdGFs bCBISUkgcGFja2FnZXMuDQo+ID4gKyAgQHJldHVybiAgICAgICAgICAgICAgICAgICAgICAgRXJy b3IgY29kZXMgZnJvbSBsb3dlciBsZXZlbCBmdW5jdGlvbnMuDQo+ID4gKw0KPiA+ICsqKi8NCj4g PiArRUZJX1NUQVRVUw0KPiA+ICtFRklBUEkNCj4gPiArUGxhdGZvcm1Jbml0ICgNCj4gPiArICBJ TiAgRUZJX0hBTkRMRSAgICAgICAgSW1hZ2VIYW5kbGUsDQo+ID4gKyAgSU4gIEVGSV9TWVNURU1f VEFCTEUgICpTeXN0ZW1UYWJsZQ0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIEVGSV9TVEFUVVMg U3RhdHVzOw0KPiA+ICsNCj4gPiArICBFeGVjdXRlUGxhdGZvcm1Db25maWcgKCk7DQo+ID4gKw0K PiA+ICsgIG1Db25maWdBY2Nlc3MuRXh0cmFjdENvbmZpZyA9ICZFeHRyYWN0Q29uZmlnOw0KPiA+ ICsgIG1Db25maWdBY2Nlc3MuUm91dGVDb25maWcgICA9ICZSb3V0ZUNvbmZpZzsNCj4gPiArICBt Q29uZmlnQWNjZXNzLkNhbGxiYWNrICAgICAgPSAmQ2FsbGJhY2s7DQo+ID4gKw0KPiA+ICsgIC8v DQo+ID4gKyAgLy8gRGVjbGFyZSBvdXJzZWx2ZXMgc3VpdGFibGUgZm9yIEhJSSBjb21tdW5pY2F0 aW9uLg0KPiA+ICsgIC8vDQo+ID4gKyAgU3RhdHVzID0gZ0JTLT5JbnN0YWxsTXVsdGlwbGVQcm90 b2NvbEludGVyZmFjZXMgKCZJbWFnZUhhbmRsZSwNCj4gPiArICAgICAgICAgICAgICAgICAgJmdF ZmlEZXZpY2VQYXRoUHJvdG9jb2xHdWlkLCAgICAgICZtUGtnRGV2aWNlUGF0aCwNCj4gPiArICAg ICAgICAgICAgICAgICAgJmdFZmlIaWlDb25maWdBY2Nlc3NQcm90b2NvbEd1aWQsICZtQ29uZmln QWNjZXNzLA0KPiA+ICsgICAgICAgICAgICAgICAgICBOVUxMKTsNCj4gPiArICBpZiAoRUZJX0VS Uk9SIChTdGF0dXMpKSB7DQo+ID4gKyAgICByZXR1cm4gU3RhdHVzOw0KPiA+ICsgIH0NCj4gPiAr DQo+ID4gKyAgLy8NCj4gPiArICAvLyBQdWJsaXNoIHRoZSBISUkgcGFja2FnZSBsaXN0IHRvIEhJ SSBEYXRhYmFzZS4NCj4gPiArICAvLw0KPiA+ICsgIG1JbnN0YWxsZWRQYWNrYWdlcyA9IEhpaUFk ZFBhY2thZ2VzICgNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICZnRWZpQ2FsbGVySWRH dWlkLCAgLy8gUGFja2FnZUxpc3RHdWlkDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICBJ bWFnZUhhbmRsZSwgICAgICAgIC8vIGFzc29jaWF0ZWQgRGV2aWNlSGFuZGxlDQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICBQbGF0Zm9ybUR4ZVN0cmluZ3MsIC8vIDFzdCBwYWNrYWdlDQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICBQbGF0Zm9ybUZvcm1zQmluLCAgIC8vIDJuZCBw YWNrYWdlDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMICAgICAgICAgICAgICAg IC8vIHRlcm1pbmF0b3INCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICk7DQo+ID4gKyAg aWYgKG1JbnN0YWxsZWRQYWNrYWdlcyA9PSBOVUxMKSB7DQo+ID4gKyAgICBTdGF0dXMgPSBFRklf T1VUX09GX1JFU09VUkNFUzsNCj4gPiArICAgIGdvdG8gVW5pbnN0YWxsUHJvdG9jb2xzOw0KPiA+ ICsgIH0NCj4gPiArDQo+ID4gKyAgU3RhdHVzID0gZ0JTLT5DcmVhdGVFdmVudCAoRVZUX05PVElG WV9TSUdOQUwsIFRQTF9DQUxMQkFDSywNCj4gPiAmR29wSW5zdGFsbGVkLA0KPiA+ICsgICAgICAg ICAgICAgICAgICBOVUxMIC8qIENvbnRleHQgKi8sICZtR29wRXZlbnQpOw0KPiA+ICsgIGlmIChF RklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiArICAgIGdvdG8gUmVtb3ZlUGFja2FnZXM7DQo+ID4g KyAgfQ0KPiA+ICsNCj4gPiArICBTdGF0dXMgPSBnQlMtPlJlZ2lzdGVyUHJvdG9jb2xOb3RpZnkg KCZnRWZpR3JhcGhpY3NPdXRwdXRQcm90b2NvbEd1aWQsDQo+ID4gKyAgICAgICAgICAgICAgICAg IG1Hb3BFdmVudCwgJm1Hb3BUcmFja2VyKTsNCj4gPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMp KSB7DQo+ID4gKyAgICBnb3RvIENsb3NlR29wRXZlbnQ7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiAr ICAvLw0KPiA+ICsgIC8vIENoZWNrIGFscmVhZHkgaW5zdGFsbGVkIEdPUHMuDQo+ID4gKyAgLy8N Cj4gPiArICBTdGF0dXMgPSBnQlMtPlNpZ25hbEV2ZW50IChtR29wRXZlbnQpOw0KPiA+ICsgIEFT U0VSVF9FRklfRVJST1IgKFN0YXR1cyk7DQo+ID4gKw0KPiA+ICsgIHJldHVybiBFRklfU1VDQ0VT UzsNCj4gPiArDQo+ID4gK0Nsb3NlR29wRXZlbnQ6DQo+ID4gKyAgZ0JTLT5DbG9zZUV2ZW50ICht R29wRXZlbnQpOw0KPiA+ICsNCj4gPiArUmVtb3ZlUGFja2FnZXM6DQo+ID4gKyAgSGlpUmVtb3Zl UGFja2FnZXMgKG1JbnN0YWxsZWRQYWNrYWdlcyk7DQo+ID4gKw0KPiA+ICtVbmluc3RhbGxQcm90 b2NvbHM6DQo+ID4gKyAgZ0JTLT5Vbmluc3RhbGxNdWx0aXBsZVByb3RvY29sSW50ZXJmYWNlcyAo SW1hZ2VIYW5kbGUsDQo+ID4gKyAgICAgICAgICZnRWZpRGV2aWNlUGF0aFByb3RvY29sR3VpZCwg ICAgICAmbVBrZ0RldmljZVBhdGgsDQo+ID4gKyAgICAgICAgICZnRWZpSGlpQ29uZmlnQWNjZXNz UHJvdG9jb2xHdWlkLCAmbUNvbmZpZ0FjY2VzcywNCj4gPiArICAgICAgICAgTlVMTCk7DQo+ID4g KyAgcmV0dXJuIFN0YXR1czsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgVW5sb2Fk IHRoZSBkcml2ZXIuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtpbl0gIEltYWdlSGFuZGxlICBIYW5k bGUgdGhhdCBpZGVudGlmaWVzIHRoZSBpbWFnZSB0byBldmljdC4NCj4gPiArDQo+ID4gKyAgQHJl dHZhbCBFRklfU1VDQ0VTUyAgVGhlIGltYWdlIGhhcyBiZWVuIHVubG9hZGVkLg0KPiA+ICsqKi8N Cj4gPiArRUZJX1NUQVRVUw0KPiA+ICtFRklBUEkNCj4gPiArUGxhdGZvcm1VbmxvYWQgKA0KPiA+ ICsgIElOICBFRklfSEFORExFICBJbWFnZUhhbmRsZQ0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsg IGlmIChtR29wRXZlbnQgPT0gTlVMTCkgew0KPiA+ICsgICAgLy8NCj4gPiArICAgIC8vIFRoZSBH T1AgY2FsbGJhY2sgcmFuIHN1Y2Nlc3NmdWxseSBhbmQgdW5yZWdpc3RlcmVkIGl0c2VsZi4gUmVs ZWFzZSB0aGUNCj4gPiArICAgIC8vIHJlc291cmNlcyBhbGxvY2F0ZWQgdGhlcmUuDQo+ID4gKyAg ICAvLw0KPiA+ICsgICAgQVNTRVJUIChtR29wTW9kZXMgIT0gTlVMTCk7DQo+ID4gKyAgICBGcmVl UG9vbCAobUdvcE1vZGVzKTsNCj4gPiArICB9IGVsc2Ugew0KPiA+ICsgICAgLy8NCj4gPiArICAg IC8vIE90aGVyd2lzZSB3ZSBuZWVkIHRvIHVucmVnaXN0ZXIgdGhlIGNhbGxiYWNrLg0KPiA+ICsg ICAgLy8NCj4gPiArICAgIEFTU0VSVCAobUdvcE1vZGVzID09IE5VTEwpOw0KPiA+ICsgICAgZ0JT LT5DbG9zZUV2ZW50IChtR29wRXZlbnQpOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgLy8NCj4g PiArICAvLyBSZWxlYXNlIHJlc291cmNlcyBhbGxvY2F0ZWQgYnkgdGhlIGVudHJ5IHBvaW50Lg0K PiA+ICsgIC8vDQo+ID4gKyAgSGlpUmVtb3ZlUGFja2FnZXMgKG1JbnN0YWxsZWRQYWNrYWdlcyk7 DQo+ID4gKyAgZ0JTLT5Vbmluc3RhbGxNdWx0aXBsZVByb3RvY29sSW50ZXJmYWNlcyAoSW1hZ2VI YW5kbGUsDQo+ID4gKyAgICAgICAgICZnRWZpRGV2aWNlUGF0aFByb3RvY29sR3VpZCwgICAgICAm bVBrZ0RldmljZVBhdGgsDQo+ID4gKyAgICAgICAgICZnRWZpSGlpQ29uZmlnQWNjZXNzUHJvdG9j b2xHdWlkLCAmbUNvbmZpZ0FjY2VzcywNCj4gPiArICAgICAgICAgTlVMTCk7DQo+ID4gKyAgcmV0 dXJuIEVGSV9TVUNDRVNTOw0KPiA+ICt9DQo+ID4gZGlmZiAtLWdpdCBhL1BsYXRmb3JtL0ludGVs L1NpbWljc09wZW5Cb2FyZFBrZy9QbGF0Zm9ybUR4ZS9QbGF0Zm9ybUNvbmZpZy5jDQo+ID4gYi9Q bGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvUGxhdGZvcm1EeGUvUGxhdGZvcm1Db25m aWcuYw0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMDAwMC4uYjNi MmIzNDA2NA0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9QbGF0Zm9ybS9JbnRlbC9TaW1p Y3NPcGVuQm9hcmRQa2cvUGxhdGZvcm1EeGUvUGxhdGZvcm1Db25maWcuYw0KPiA+IEBAIC0wLDAg KzEsMTIzIEBADQo+ID4gKy8qKiBAZmlsZQ0KPiA+ICsgIFV0aWxpdHkgZnVuY3Rpb25zIGZvciBz ZXJpYWxpemluZyAocGVyc2lzdGVudGx5IHN0b3JpbmcpIGFuZCBkZXNlcmlhbGl6aW5nDQo+ID4g KyAgT1ZNRidzIHBsYXRmb3JtIGNvbmZpZ3VyYXRpb24uDQo+ID4gKw0KPiA+ICsgIENvcHlyaWdo dCAoQykgMjAxNCwgUmVkIEhhdCwgSW5jLg0KPiA+ICsNCj4gPiArICBTUERYLUxpY2Vuc2UtSWRl bnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiA+ICsqKi8NCj4gPiArDQo+ID4gKyNpbmNs dWRlIDxMaWJyYXJ5L0Jhc2VNZW1vcnlMaWIuaD4NCj4gPiArI2luY2x1ZGUgPExpYnJhcnkvRGVi dWdMaWIuaD4NCj4gPiArI2luY2x1ZGUgPExpYnJhcnkvTWVtb3J5QWxsb2NhdGlvbkxpYi5oPg0K PiA+ICsjaW5jbHVkZSA8TGlicmFyeS9VZWZpTGliLmg+DQo+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5 L1VlZmlSdW50aW1lU2VydmljZXNUYWJsZUxpYi5oPg0KPiA+ICsjaW5jbHVkZSA8R3VpZC9TaW1p Y3NYNThQbGF0Zm9ybUNvbmZpZy5oPg0KPiA+ICsNCj4gPiArI2luY2x1ZGUgIlBsYXRmb3JtQ29u ZmlnLmgiDQo+ID4gKw0KPiA+ICsvLw0KPiA+ICsvLyBOYW1lIG9mIHRoZSBVRUZJIHZhcmlhYmxl IHRoYXQgd2UgdXNlIGZvciBwZXJzaXN0ZW50IHN0b3JhZ2UuDQo+ID4gKy8vDQo+ID4gK1NUQVRJ QyBDSEFSMTYgbVZhcmlhYmxlTmFtZVtdID0gTCJQbGF0Zm9ybUNvbmZpZyI7DQo+ID4gKw0KPiA+ ICsNCj4gPiArLyoqDQo+ID4gKyAgU2VyaWFsaXplIGFuZCBwZXJzaXN0ZW50bHkgc2F2ZSBwbGF0 Zm9ybSBjb25maWd1cmF0aW9uLg0KPiA+ICsNCj4gPiArICBAcGFyYW1baW5dIFBsYXRmb3JtQ29u ZmlnICBUaGUgcGxhdGZvcm0gY29uZmlndXJhdGlvbiB0byBzZXJpYWxpemUgYW5kDQo+IHNhdmUu DQo+ID4gKw0KPiA+ICsgIEByZXR1cm4gIFN0YXR1cyBjb2RlcyByZXR1cm5lZCBieSBnUlQtPlNl dFZhcmlhYmxlKCkuDQo+ID4gKyoqLw0KPiA+ICtFRklfU1RBVFVTDQo+ID4gK0VGSUFQSQ0KPiA+ ICtQbGF0Zm9ybUNvbmZpZ1NhdmUgKA0KPiA+ICsgIElOIFBMQVRGT1JNX0NPTkZJRyAqUGxhdGZv cm1Db25maWcNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBFRklfU1RBVFVTIFN0YXR1czsNCj4g PiArDQo+ID4gKyAgLy8NCj4gPiArICAvLyBXZSBjb3VsZCBpbXBsZW1lbnQgYW55IGtpbmQgb2Yg dHJhbnNsYXRpb24gaGVyZSwgYXMgcGFydCBvZiBzZXJpYWxpemF0aW9uLg0KPiA+ICsgIC8vIEZv ciBleGFtcGxlLCB3ZSBjb3VsZCBleHBvc2UgdGhlIHBsYXRmb3JtIGNvbmZpZ3VyYXRpb24gaW4g c2VwYXJhdGUNCj4gPiArICAvLyB2YXJpYWJsZXMgd2l0aCBodW1hbi1yZWFkYWJsZSBjb250ZW50 cywgYWxsb3dpbmcgb3RoZXIgdG9vbHMgdG8gYWNjZXNzDQo+ID4gKyAgLy8gdGhlbSBtb3JlIGVh c2lseS4gRm9yIG5vdywganVzdCBzYXZlIGEgYmluYXJ5IGR1bXAuDQo+ID4gKyAgLy8NCj4gPiAr ICBTdGF0dXMgPSBnUlQtPlNldFZhcmlhYmxlIChtVmFyaWFibGVOYW1lLA0KPiAmZ1NpbWljc1g1 OFBsYXRmb3JtQ29uZmlnR3VpZCwNCj4gPiArICAgICAgICAgICAgICAgICAgRUZJX1ZBUklBQkxF X05PTl9WT0xBVElMRSB8DQo+ID4gRUZJX1ZBUklBQkxFX0JPT1RTRVJWSUNFX0FDQ0VTUyB8DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgRUZJX1ZBUklBQkxFX1JVTlRJTUVfQUNDRVNTLA0KPiA+ ICsgICAgICAgICAgICAgICAgICBzaXplb2YgKlBsYXRmb3JtQ29uZmlnLCBQbGF0Zm9ybUNvbmZp Zyk7DQo+ID4gKyAgcmV0dXJuIFN0YXR1czsNCj4gPiArfQ0KPiA+ICsNCj4gPiArDQo+ID4gKy8q Kg0KPiA+ICsgIExvYWQgYW5kIGRlc2VyaWFsaXplIHBsYXRmb3JtIGNvbmZpZ3VyYXRpb24uDQo+ ID4gKw0KPiA+ICsgIFdoZW4gdGhlIGZ1bmN0aW9uIGZhaWxzLCBvdXRwdXQgcGFyYW1ldGVycyBh cmUgaW5kZXRlcm1pbmF0ZS4NCj4gPiArDQo+ID4gKyAgQHBhcmFtW291dF0gUGxhdGZvcm1Db25m aWcgICAgVGhlIHBsYXRmb3JtIGNvbmZpZ3VyYXRpb24gdG8gcmVjZWl2ZSB0aGUNCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkZWQgZGF0YS4NCj4gPiArDQo+ID4gKyAg QHBhcmFtW291dF0gT3B0aW9uYWxFbGVtZW50cyAgVGhpcyBiaXRtYXAgZGVzY3JpYmVzIHRoZSBw cmVzZW5jZSBvZg0KPiA+IG9wdGlvbmFsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY29uZmlndXJhdGlvbiBlbGVtZW50cyB0aGF0IGhhdmUgYmVlbiBsb2FkZWQuDQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUExBVEZPUk1fQ09ORklHX0ZfRE9XTkdS QURFIG1lYW5zIHRoYXQgc29tZQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHVua25vd24gZWxlbWVudHMsIHByZXNlbnQgaW4gdGhlIHdpcmUgZm9ybWF0LA0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhdmUgYmVlbiBpZ25vcmVkLg0KPiA+ICsNCj4g PiArICBAcmV0dmFsICBFRklfU1VDQ0VTUyAgICAgICAgIExvYWRpbmcgJiBkZXNlcmlhbGl6YXRp b24gc3VjY2Vzc2Z1bC4NCj4gPiArICBAcmV0dXJuICAgICAgICAgICAgICAgICAgICAgIEVycm9y IGNvZGVzIHJldHVybmVkIGJ5IEdldFZhcmlhYmxlMigpLg0KPiA+ICsqKi8NCj4gPiArRUZJX1NU QVRVUw0KPiA+ICtFRklBUEkNCj4gPiArUGxhdGZvcm1Db25maWdMb2FkICgNCj4gPiArICBPVVQg UExBVEZPUk1fQ09ORklHICpQbGF0Zm9ybUNvbmZpZywNCj4gPiArICBPVVQgVUlOVDY0ICAgICAg ICAgICpPcHRpb25hbEVsZW1lbnRzDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgVk9JRCAgICAg ICAqRGF0YTsNCj4gPiArICBVSU5UTiAgICAgIERhdGFTaXplOw0KPiA+ICsgIEVGSV9TVEFUVVMg U3RhdHVzOw0KPiA+ICsNCj4gPiArICAvLw0KPiA+ICsgIC8vIEFueSB0cmFuc2xhdGlvbiBkb25l IGluIFBsYXRmb3JtQ29uZmlnU2F2ZSgpIHdvdWxkIGhhdmUgdG8gYmUgbWlycm9yZWQNCj4gPiAr ICAvLyBoZXJlLiBGb3Igbm93LCBqdXN0IGxvYWQgdGhlIGJpbmFyeSBkdW1wLg0KPiA+ICsgIC8v DQo+ID4gKyAgLy8gVmVyc2lvbmluZyBvZiB0aGUgYmluYXJ5IHdpcmUgZm9ybWF0IGlzIGltcGxl bWVudGVkIGJhc2VkIG9uIHNpemUNCj4gPiArICAvLyAob25seSBpbmNyZW1lbnRhbCBjaGFuZ2Vz LCBpZS4gbmV3IGZpZWxkcyksIGFuZCBvbiBHVUlELg0KPiA+ICsgIC8vIChJbmNvbXBhdGlibGUg Y2hhbmdlcyByZXF1aXJlIGEgR1VJRCBjaGFuZ2UuKQ0KPiA+ICsgIC8vDQo+ID4gKyAgU3RhdHVz ID0gR2V0VmFyaWFibGUyIChtVmFyaWFibGVOYW1lLCAmZ1NpbWljc1g1OFBsYXRmb3JtQ29uZmln R3VpZCwNCj4gPiAmRGF0YSwNCj4gPiArICAgICAgICAgICAgICZEYXRhU2l6ZSk7DQo+ID4gKyAg aWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4gPiAr ICB9DQo+ID4gKw0KPiA+ICsgICpPcHRpb25hbEVsZW1lbnRzID0gMDsNCj4gPiArICBpZiAoRGF0 YVNpemUgPiBzaXplb2YgKlBsYXRmb3JtQ29uZmlnKSB7DQo+ID4gKyAgICAvLw0KPiA+ICsgICAg Ly8gSGFuZGxlIGZpcm13YXJlIGRvd25ncmFkZSAtLSBrZWVwIG9ubHkgbGVhZGluZyBwYXJ0Lg0K PiA+ICsgICAgLy8NCj4gPiArICAgIENvcHlNZW0gKFBsYXRmb3JtQ29uZmlnLCBEYXRhLCBzaXpl b2YgKlBsYXRmb3JtQ29uZmlnKTsNCj4gPiArICAgICpPcHRpb25hbEVsZW1lbnRzIHw9IFBMQVRG T1JNX0NPTkZJR19GX0RPV05HUkFERTsNCj4gPiArICB9IGVsc2Ugew0KPiA+ICsgICAgQ29weU1l bSAoUGxhdGZvcm1Db25maWcsIERhdGEsIERhdGFTaXplKTsNCj4gPiArDQo+ID4gKyAgICAvLw0K PiA+ICsgICAgLy8gSGFuZGxlIGZpcm13YXJlIHVwZ3JhZGUgLS0gemVybyBvdXQgbWlzc2luZyBm aWVsZHMuDQo+ID4gKyAgICAvLw0KPiA+ICsgICAgWmVyb01lbSAoKFVJTlQ4ICopUGxhdGZvcm1D b25maWcgKyBEYXRhU2l6ZSwNCj4gPiArICAgICAgc2l6ZW9mICpQbGF0Zm9ybUNvbmZpZyAtIERh dGFTaXplKTsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIC8vDQo+ID4gKyAgLy8gQmFzZWQgb24g RGF0YVNpemUsIHJlcG9ydCB0aGUgb3B0aW9uYWwgZmVhdHVyZXMgdGhhdCB3ZSByZWNvZ25pemUu DQo+ID4gKyAgLy8NCj4gPiArICBpZiAoRGF0YVNpemUgPj0gKE9GRlNFVF9PRiAoUExBVEZPUk1f Q09ORklHLCBWZXJ0aWNhbFJlc29sdXRpb24pICsNCj4gPiArICAgICAgICAgICAgICAgICAgIHNp emVvZiBQbGF0Zm9ybUNvbmZpZy0+VmVydGljYWxSZXNvbHV0aW9uKSkgew0KPiA+ICsgICAgKk9w dGlvbmFsRWxlbWVudHMgfD0gUExBVEZPUk1fQ09ORklHX0ZfR1JBUEhJQ1NfUkVTT0xVVElPTjsN Cj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIEZyZWVQb29sIChEYXRhKTsNCj4gPiArICByZXR1cm4g RUZJX1NVQ0NFU1M7DQo+ID4gK30NCj4gPiBkaWZmIC0tZ2l0IGEvUGxhdGZvcm0vSW50ZWwvU2lt aWNzT3BlbkJvYXJkUGtnL1BsYXRmb3JtUGVpL0Ntb3MuYw0KPiA+IGIvUGxhdGZvcm0vSW50ZWwv U2ltaWNzT3BlbkJvYXJkUGtnL1BsYXRmb3JtUGVpL0Ntb3MuYw0KPiA+IG5ldyBmaWxlIG1vZGUg MTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMDAwMC4uZmEyYzIyMTE2Yw0KPiA+IC0tLSAvZGV2L251 bGwNCj4gPiArKysgYi9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvUGxhdGZvcm1Q ZWkvQ21vcy5jDQo+ID4gQEAgLTAsMCArMSw1NyBAQA0KPiA+ICsvKiogQGZpbGUNCj4gPiArICBQ Qy9BVCBDTU9TIGFjY2VzcyByb3V0aW5lcw0KPiA+ICsNCj4gPiArICBDb3B5cmlnaHQgKGMpIDIw MDYgLSAyMDA5IEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLiA8QlI+DQo+ ID4gKw0KPiA+ICsgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50 DQo+ID4gKyoqLw0KPiA+ICsNCj4gPiArI2luY2x1ZGUgIkNtb3MuaCINCj4gPiArI2luY2x1ZGUg IkxpYnJhcnkvSW9MaWIuaCINCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFJlYWRzIDgtYml0cyBv ZiBDTU9TIGRhdGEuDQo+ID4gKw0KPiA+ICsgIFJlYWRzIHRoZSA4LWJpdHMgb2YgQ01PUyBkYXRh IGF0IHRoZSBsb2NhdGlvbiBzcGVjaWZpZWQgYnkgSW5kZXguDQo+ID4gKyAgVGhlIDgtYml0IHJl YWQgdmFsdWUgaXMgcmV0dXJuZWQuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbSAgSW5kZXggIFRoZSBD TU9TIGxvY2F0aW9uIHRvIHJlYWQuDQo+ID4gKw0KPiA+ICsgIEByZXR1cm4gVGhlIHZhbHVlIHJl YWQuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArVUlOVDgNCj4gPiArRUZJQVBJDQo+ID4gK0Ntb3NS ZWFkOCAoDQo+ID4gKyAgSU4gICAgICBVSU5UTiAgICAgICAgICAgICAgICAgICAgIEluZGV4DQo+ ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgSW9Xcml0ZTggKDB4NzAsIChVSU5UOCkgSW5kZXgpOw0K PiA+ICsgIHJldHVybiBJb1JlYWQ4ICgweDcxKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArDQo+ID4g Ky8qKg0KPiA+ICsgIFdyaXRlcyA4LWJpdHMgb2YgQ01PUyBkYXRhLg0KPiA+ICsNCj4gPiArICBX cml0ZXMgOC1iaXRzIG9mIENNT1MgZGF0YSB0byB0aGUgbG9jYXRpb24gc3BlY2lmaWVkIGJ5IElu ZGV4DQo+ID4gKyAgd2l0aCB0aGUgdmFsdWUgc3BlY2lmaWVkIGJ5IFZhbHVlIGFuZCByZXR1cm5z IFZhbHVlLg0KPiA+ICsNCj4gPiArICBAcGFyYW0gIEluZGV4ICBUaGUgQ01PUyBsb2NhdGlvbiB0 byB3cml0ZS4NCj4gPiArICBAcGFyYW0gIFZhbHVlICBUaGUgdmFsdWUgdG8gd3JpdGUgdG8gQ01P Uy4NCj4gPiArDQo+ID4gKyAgQHJldHVybiBUaGUgdmFsdWUgd3JpdHRlbiB0byBDTU9TLg0KPiA+ ICsNCj4gPiArKiovDQo+ID4gK1VJTlQ4DQo+ID4gK0VGSUFQSQ0KPiA+ICtDbW9zV3JpdGU4ICgN Cj4gPiArICBJTiAgICAgIFVJTlROICAgICAgICAgICAgICAgICAgICAgSW5kZXgsDQo+ID4gKyAg SU4gICAgICBVSU5UOCAgICAgICAgICAgICAgICAgICAgIFZhbHVlDQo+ID4gKyAgKQ0KPiA+ICt7 DQo+ID4gKyAgSW9Xcml0ZTggKDB4NzAsIChVSU5UOCkgSW5kZXgpOw0KPiA+ICsgIElvV3JpdGU4 ICgweDcxLCBWYWx1ZSk7DQo+ID4gKyAgcmV0dXJuIFZhbHVlOw0KPiA+ICt9DQo+ID4gKw0KPiA+ IGRpZmYgLS1naXQgYS9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvUGxhdGZvcm1Q ZWkvRmVhdHVyZUNvbnRyb2wuYw0KPiA+IGIvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJk UGtnL1BsYXRmb3JtUGVpL0ZlYXR1cmVDb250cm9sLmMNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0 NA0KPiA+IGluZGV4IDAwMDAwMDAwMDAuLjY5MjQwNWU0MTcNCj4gPiAtLS0gL2Rldi9udWxsDQo+ ID4gKysrIGIvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL1BsYXRmb3JtUGVpL0Zl YXR1cmVDb250cm9sLmMNCj4gPiBAQCAtMCwwICsxLDExNCBAQA0KPiA+ICsvKiogQGZpbGUNCj4g PiArICBJbnN0YWxsIGEgY2FsbGJhY2sgd2hlbiBuZWNlc3NhcnkgZm9yIHNldHRpbmcgdGhlIEZl YXR1cmUgQ29udHJvbCBNU1Igb24gYWxsDQo+ID4gKyAgcHJvY2Vzc29ycy4NCj4gPiArDQo+ID4g KyAgQ29weXJpZ2h0IChDKSAyMDE2LCBSZWQgSGF0LCBJbmMuDQo+ID4gKw0KPiA+ICsgIFNQRFgt TGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ID4gKyoqLw0KPiA+ICsN Cj4gPiArI2luY2x1ZGUgPExpYnJhcnkvRGVidWdMaWIuaD4NCj4gPiArI2luY2x1ZGUgPExpYnJh cnkvUGVpU2VydmljZXNMaWIuaD4NCj4gPiArI2luY2x1ZGUgPFBwaS9NcFNlcnZpY2VzLmg+DQo+ ID4gKyNpbmNsdWRlIDxSZWdpc3Rlci9JbnRlbC9Nc3IvQ29yZTJNc3IuaD4NCj4gPiArDQo+ID4g KyNpbmNsdWRlICJQbGF0Zm9ybS5oIg0KPiA+ICsNCj4gPiArLy8NCj4gPiArLy8gVGhlIHZhbHVl IHRvIGJlIHdyaXR0ZW4gdG8gdGhlIEZlYXR1cmUgQ29udHJvbCBNU1IsIHJldHJpZXZlZCBmcm9t DQo+IGZ3X2NmZy4NCj4gPiArLy8NCj4gPiArU1RBVElDIFVJTlQ2NCBtRmVhdHVyZUNvbnRyb2xW YWx1ZSA9IDB4MDAwMDAwMDU7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBXcml0ZSB0aGUgRmVh dHVyZSBDb250cm9sIE1TUiBvbiBhbiBBcHBsaWNhdGlvbiBQcm9jZXNzb3Igb3IgdGhlIEJvb3QN Cj4gPiArICBQcm9jZXNzb3IuDQo+ID4gKw0KPiA+ICsgIEFsbCBBUHMgZXhlY3V0ZSB0aGlzIGZ1 bmN0aW9uIGluIHBhcmFsbGVsLiBUaGUgQlNQIGV4ZWN1dGVzIHRoZSBmdW5jdGlvbg0KPiA+ICsg IHNlcGFyYXRlbHkuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtpbixvdXRdIFdvcmtTcGFjZSAgUG9p bnRlciB0byB0aGUgaW5wdXQvb3V0cHV0IGFyZ3VtZW50DQo+ID4gd29ya3NwYWNlDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZWQgYnkgYWxsIHByb2Nlc3NvcnMuDQo+ID4g KyoqLw0KPiA+ICtTVEFUSUMNCj4gPiArVk9JRA0KPiA+ICtFRklBUEkNCj4gPiArV3JpdGVGZWF0 dXJlQ29udHJvbCAoDQo+ID4gKyAgSU4gT1VUIFZPSUQgKldvcmtTcGFjZQ0KPiA+ICsgICkNCj4g PiArew0KPiA+ICsgIEFzbVdyaXRlTXNyNjQgKE1TUl9DT1JFMl9GRUFUVVJFX0NPTlRST0wsDQo+ IG1GZWF0dXJlQ29udHJvbFZhbHVlKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAg Tm90aWZpY2F0aW9uIGZ1bmN0aW9uIGNhbGxlZCB3aGVuIEVGSV9QRUlfTVBfU0VSVklDRVNfUFBJ IGJlY29tZXMNCj4gPiBhdmFpbGFibGUuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtpbl0gUGVpU2Vy dmljZXMgICAgICBJbmRpcmVjdCByZWZlcmVuY2UgdG8gdGhlIFBFSSBTZXJ2aWNlcyBUYWJsZS4N Cj4gPiArICBAcGFyYW1baW5dIE5vdGlmeURlc2NyaXB0b3IgQWRkcmVzcyBvZiB0aGUgbm90aWZp Y2F0aW9uIGRlc2NyaXB0b3IgZGF0YQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzdHJ1Y3R1cmUuDQo+ID4gKyAgQHBhcmFtW2luXSBQcGkgICAgICAgICAgICAgIEFkZHJlc3Mg b2YgdGhlIFBQSSB0aGF0IHdhcyBpbnN0YWxsZWQuDQo+ID4gKw0KPiA+ICsgIEByZXR1cm4gIFN0 YXR1cyBvZiB0aGUgbm90aWZpY2F0aW9uLiBUaGUgc3RhdHVzIGNvZGUgcmV0dXJuZWQgZnJvbSB0 aGlzDQo+ID4gKyAgICAgICAgICAgZnVuY3Rpb24gaXMgaWdub3JlZC4NCj4gPiArKiovDQo+ID4g K1NUQVRJQw0KPiA+ICtFRklfU1RBVFVTDQo+ID4gK0VGSUFQSQ0KPiA+ICtPbk1wU2VydmljZXNB dmFpbGFibGUgKA0KPiA+ICsgIElOIEVGSV9QRUlfU0VSVklDRVMgICAgICAgICAgICoqUGVpU2Vy dmljZXMsDQo+ID4gKyAgSU4gRUZJX1BFSV9OT1RJRllfREVTQ1JJUFRPUiAgKk5vdGlmeURlc2Ny aXB0b3IsDQo+ID4gKyAgSU4gVk9JRCAgICAgICAgICAgICAgICAgICAgICAgKlBwaQ0KPiA+ICsg ICkNCj4gPiArew0KPiA+ICsgIEVGSV9QRUlfTVBfU0VSVklDRVNfUFBJICpNcFNlcnZpY2VzOw0K PiA+ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAgIFN0YXR1czsNCj4gPiArDQo+ID4gKyAgREVC VUcgKChFRklfRF9WRVJCT1NFLCAiJWE6ICVhXG4iLCBnRWZpQ2FsbGVyQmFzZU5hbWUsDQo+ID4g X19GVU5DVElPTl9fKSk7DQo+ID4gKyAgLy8NCj4gPiArICAvLyBXcml0ZSB0aGUgTVNSIG9uIGFs bCB0aGUgQVBzIGluIHBhcmFsbGVsLg0KPiA+ICsgIC8vDQo+ID4gKyAgTXBTZXJ2aWNlcyA9IFBw aTsNCj4gPiArICBTdGF0dXMgPSBNcFNlcnZpY2VzLT5TdGFydHVwQWxsQVBzICgNCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgIChDT05TVCBFRklfUEVJX1NFUlZJQ0VTICoqKVBlaVNlcnZp Y2VzLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgTXBTZXJ2aWNlcywNCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgIFdyaXRlRmVhdHVyZUNvbnRyb2wsIC8vIFByb2NlZHVyZQ0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0UsICAgICAgICAgICAgICAgLy8gU2lu Z2xlVGhyZWFkDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAwLCAgICAgICAgICAgICAg ICAgICAvLyBUaW1lb3V0SW5NaWNyb1NlY29uZHM6IGluZi4NCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgIE5VTEwgICAgICAgICAgICAgICAgIC8vIFByb2NlZHVyZUFyZ3VtZW50DQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICApOw0KPiA+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1 cykgJiYgU3RhdHVzICE9IEVGSV9OT1RfU1RBUlRFRCkgew0KPiA+ICsgICAgREVCVUcgKChFRklf RF9FUlJPUiwgIiVhOiBTdGFydHVwQWxsQXBzKCk6ICVyXG4iLCBfX0ZVTkNUSU9OX18sDQo+ID4g U3RhdHVzKSk7DQo+ID4gKyAgICByZXR1cm4gU3RhdHVzOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4g KyAgLy8NCj4gPiArICAvLyBOb3cgd3JpdGUgdGhlIE1TUiBvbiB0aGUgQlNQIHRvby4NCj4gPiAr ICAvLw0KPiA+ICsgIFdyaXRlRmVhdHVyZUNvbnRyb2wgKE5VTEwpOw0KPiA+ICsNCj4gPiArICBy ZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8vDQo+ID4gKy8vIE5vdGlm aWNhdGlvbiBvYmplY3QgZm9yIHJlZ2lzdGVyaW5nIHRoZSBjYWxsYmFjaywgZm9yIHdoZW4NCj4g PiArLy8gRUZJX1BFSV9NUF9TRVJWSUNFU19QUEkgYmVjb21lcyBhdmFpbGFibGUuDQo+ID4gKy8v DQo+ID4gK1NUQVRJQyBDT05TVCBFRklfUEVJX05PVElGWV9ERVNDUklQVE9SIG1NcFNlcnZpY2Vz Tm90aWZ5ID0gew0KPiA+ICsgIEVGSV9QRUlfUFBJX0RFU0NSSVBUT1JfTk9USUZZX0NBTExCQUNL IHwgLy8gRmxhZ3MNCj4gPiArICBFRklfUEVJX1BQSV9ERVNDUklQVE9SX1RFUk1JTkFURV9MSVNU LA0KPiA+ICsgICZnRWZpUGVpTXBTZXJ2aWNlc1BwaUd1aWQsICAgICAgICAgICAgICAgLy8gR3Vp ZA0KPiA+ICsgIE9uTXBTZXJ2aWNlc0F2YWlsYWJsZSAgICAgICAgICAgICAgICAgICAgLy8gTm90 aWZ5DQo+ID4gK307DQo+ID4gKw0KPiA+ICtWT0lEDQo+ID4gK0luc3RhbGxGZWF0dXJlQ29udHJv bENhbGxiYWNrICgNCj4gPiArICBWT0lEDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgRUZJX1NU QVRVUyAgICAgICAgICAgU3RhdHVzOw0KPiA+ICsNCj4gPiArICBTdGF0dXMgPSBQZWlTZXJ2aWNl c05vdGlmeVBwaSAoJm1NcFNlcnZpY2VzTm90aWZ5KTsNCj4gPiArICBpZiAoRUZJX0VSUk9SIChT dGF0dXMpKSB7DQo+ID4gKyAgICBERUJVRyAoKEVGSV9EX0VSUk9SLCAiJWE6IGZhaWxlZCB0byBz ZXQgdXAgTVAgU2VydmljZXMgY2FsbGJhY2s6ICVyXG4iLA0KPiA+ICsgICAgICBfX0ZVTkNUSU9O X18sIFN0YXR1cykpOw0KPiA+ICsgIH0NCj4gPiArfQ0KPiA+IGRpZmYgLS1naXQgYS9QbGF0Zm9y bS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvUGxhdGZvcm1QZWkvRnYuYw0KPiA+IGIvUGxhdGZv cm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL1BsYXRmb3JtUGVpL0Z2LmMNCj4gPiBuZXcgZmls ZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAwMDAuLjgxOGQxMzVjOTUNCj4gPiAtLS0g L2Rldi9udWxsDQo+ID4gKysrIGIvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL1Bs YXRmb3JtUGVpL0Z2LmMNCj4gPiBAQCAtMCwwICsxLDEwMCBAQA0KPiA+ICsvKiogQGZpbGUNCj4g PiArICBCdWlsZCBGViByZWxhdGVkIGhvYnMgZm9yIHBsYXRmb3JtLg0KPiA+ICsNCj4gPiArICBD b3B5cmlnaHQgKGMpIDIwMDYgLSAyMDEzIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJl c2VydmVkLiA8QlI+DQo+ID4gKw0KPiA+ICsgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0Qt Mi1DbGF1c2UtUGF0ZW50DQo+ID4gKyoqLw0KPiA+ICsNCj4gPiArI2luY2x1ZGUgIlBpUGVpLmgi DQo+ID4gKyNpbmNsdWRlICJQbGF0Zm9ybS5oIg0KPiA+ICsjaW5jbHVkZSA8TGlicmFyeS9EZWJ1 Z0xpYi5oPg0KPiA+ICsjaW5jbHVkZSA8TGlicmFyeS9Ib2JMaWIuaD4NCj4gPiArI2luY2x1ZGUg PExpYnJhcnkvUGVpU2VydmljZXNMaWIuaD4NCj4gPiArI2luY2x1ZGUgPExpYnJhcnkvUGNkTGli Lmg+DQo+ID4gKw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgUHVibGlzaCBQRUkgJiBEWEUgKERl Y29tcHJlc3NlZCkgTWVtb3J5IGJhc2VkIEZWcyB0byBsZXQgUEVJDQo+ID4gKyAgYW5kIERYRSBr bm93IGFib3V0IHRoZW0uDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICBQbGF0 Zm9ybSBQRUkgRlZzIHdlcmUgaW5pdGlhbGl6ZWQgc3VjY2Vzc2Z1bGx5Lg0KPiA+ICsNCj4gPiAr KiovDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArUGVpRnZJbml0aWFsaXphdGlvbiAoDQo+ID4gKyAg Vk9JRA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIEJPT0xFQU4gU2VjdXJlUzNOZWVkZWQ7DQo+ ID4gKw0KPiA+ICsgIERFQlVHICgoRUZJX0RfSU5GTywgIlBsYXRmb3JtIFBFSSBGaXJtd2FyZSBW b2x1bWUgSW5pdGlhbGl6YXRpb25cbiIpKTsNCj4gPiArDQo+ID4gKyAgREVCVUcgKA0KPiA+ICsg ICAgKEVGSV9EX0VSUk9SLCAiRmlybXdhcmUgVm9sdW1lIEhPQjogMHgleCAweCV4XG4iLA0KPiA+ ICsgICAgICBQY2RHZXQzMiAoUGNkU2ltaWNzUGVpTWVtRnZCYXNlKSwNCj4gPiArICAgICAgUGNk R2V0MzIgKFBjZFNpbWljc1BlaU1lbUZ2U2l6ZSkNCj4gPiArICAgICAgKQ0KPiA+ICsgICAgKTsN Cj4gPiArICAvLw0KPiA+ICsgIC8vIENyZWF0ZSBhIG1lbW9yeSBhbGxvY2F0aW9uIEhPQiBmb3Ig dGhlIFBFSSBGVi4NCj4gPiArICAvLw0KPiA+ICsgIC8vIEFsbG9jYXRlIGFzIEFDUEkgTlZTIGlz IFMzIGlzIHN1cHBvcnRlZA0KPiA+ICsgIC8vDQo+ID4gKyAgQnVpbGRNZW1vcnlBbGxvY2F0aW9u SG9iICgNCj4gPiArICAgIFBjZEdldDMyIChQY2RTaW1pY3NQZWlNZW1GdkJhc2UpLA0KPiA+ICsg ICAgUGNkR2V0MzIgKFBjZFNpbWljc1BlaU1lbUZ2U2l6ZSksDQo+ID4gKyAgICBtUzNTdXBwb3J0 ZWQgPyBFZmlBQ1BJTWVtb3J5TlZTIDogRWZpQm9vdFNlcnZpY2VzRGF0YQ0KPiA+ICsgICAgKTsN Cj4gPiArDQo+ID4gKyAgLy8NCj4gPiArICAvLyBMZXQgRFhFIGtub3cgYWJvdXQgdGhlIERYRSBG Vg0KPiA+ICsgIC8vDQo+ID4gKyAgQnVpbGRGdkhvYiAoUGNkR2V0MzIgKFBjZFNpbWljc0R4ZU1l bUZ2QmFzZSksIFBjZEdldDMyDQo+ID4gKFBjZFNpbWljc0R4ZU1lbUZ2U2l6ZSkpOw0KPiA+ICsN Cj4gPiArICBTZWN1cmVTM05lZWRlZCA9IG1TM1N1cHBvcnRlZCAmJiBGZWF0dXJlUGNkR2V0DQo+ ID4gKFBjZFNtbVNtcmFtUmVxdWlyZSk7DQo+ID4gKw0KPiA+ICsgIC8vDQo+ID4gKyAgLy8gQ3Jl YXRlIGEgbWVtb3J5IGFsbG9jYXRpb24gSE9CIGZvciB0aGUgRFhFIEZWLg0KPiA+ICsgIC8vDQo+ ID4gKyAgLy8gSWYgInNlY3VyZSIgUzMgaXMgbmVlZGVkLCB0aGVuIFNFQyB3aWxsIGRlY29tcHJl c3MgYm90aCBQRUkgYW5kIERYRQ0KPiA+ICsgIC8vIGZpcm13YXJlIHZvbHVtZXMgYXQgUzMgcmVz dW1lIHRvbywgaGVuY2Ugd2UgbmVlZCB0byBrZWVwIGF3YXkgdGhlIE9TDQo+ID4gZnJvbQ0KPiA+ ICsgIC8vIERYRUZWIGFzIHdlbGwuIE90aGVyd2lzZSB3ZSBvbmx5IG5lZWQgdG8ga2VlcCBhd2F5 IERYRSBpdHNlbGYgZnJvbSB0aGUNCj4gPiArICAvLyBEWEVGViBhcmVhLg0KPiA+ICsgIC8vDQo+ ID4gKyAgQnVpbGRNZW1vcnlBbGxvY2F0aW9uSG9iICgNCj4gPiArICAgIFBjZEdldDMyIChQY2RT aW1pY3NEeGVNZW1GdkJhc2UpLA0KPiA+ICsgICAgUGNkR2V0MzIgKFBjZFNpbWljc0R4ZU1lbUZ2 U2l6ZSksDQo+ID4gKyAgICBTZWN1cmVTM05lZWRlZCA/IEVmaUFDUElNZW1vcnlOVlMgOiBFZmlC b290U2VydmljZXNEYXRhDQo+ID4gKyAgICApOw0KPiA+ICsNCj4gPiArICAvLw0KPiA+ICsgIC8v IEFkZGl0aW9uYWxseSwgc2FpZCBkZWNvbXByZXNzaW9uIHdpbGwgdXNlIHRlbXBvcmFyeSBtZW1v cnkgYWJvdmUgdGhlDQo+ID4gZW5kDQo+ID4gKyAgLy8gb2YgRFhFRlYsIHNvIGxldCdzIGtlZXAg YXdheSB0aGUgT1MgZnJvbSB0aGVyZSB0b28uDQo+ID4gKyAgLy8NCj4gPiArICBpZiAoU2VjdXJl UzNOZWVkZWQpIHsNCj4gPiArICAgIFVJTlQzMiBEeGVNZW1GdkVuZDsNCj4gPiArDQo+ID4gKyAg ICBEeGVNZW1GdkVuZCA9IFBjZEdldDMyIChQY2RTaW1pY3NEeGVNZW1GdkJhc2UpICsNCj4gPiAr ICAgICAgICAgICAgICAgICAgUGNkR2V0MzIgKFBjZFNpbWljc0R4ZU1lbUZ2U2l6ZSk7DQo+ID4g KyAgICBCdWlsZE1lbW9yeUFsbG9jYXRpb25Ib2IgKA0KPiA+ICsgICAgICBEeGVNZW1GdkVuZCwN Cj4gPiArICAgICAgUGNkR2V0MzIgKFBjZFNpbWljc0RlY29tcHJlc3Npb25TY3JhdGNoRW5kKSAt IER4ZU1lbUZ2RW5kLA0KPiA+ICsgICAgICBFZmlBQ1BJTWVtb3J5TlZTDQo+ID4gKyAgICAgICk7 DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICAvLw0KPiA+ICsgIC8vIExldCBQRUkga25vdyBhYm91 dCB0aGUgRFhFIEZWIHNvIGl0IGNhbiBmaW5kIHRoZSBEWEUgQ29yZQ0KPiA+ICsgIC8vDQo+ID4g KyAgUGVpU2VydmljZXNJbnN0YWxsRnZJbmZvUHBpICgNCj4gPiArICAgIE5VTEwsDQo+ID4gKyAg ICAoVk9JRCAqKShVSU5UTikgUGNkR2V0MzIgKFBjZFNpbWljc0R4ZU1lbUZ2QmFzZSksDQo+ID4g KyAgICBQY2RHZXQzMiAoUGNkU2ltaWNzRHhlTWVtRnZTaXplKSwNCj4gPiArICAgIE5VTEwsDQo+ ID4gKyAgICBOVUxMDQo+ID4gKyAgICApOw0KPiA+ICsNCj4gPiArICByZXR1cm4gRUZJX1NVQ0NF U1M7DQo+ID4gK30NCj4gPiArDQo+ID4gZGlmZiAtLWdpdCBhL1BsYXRmb3JtL0ludGVsL1NpbWlj c09wZW5Cb2FyZFBrZy9QbGF0Zm9ybVBlaS9NZW1EZXRlY3QuYw0KPiA+IGIvUGxhdGZvcm0vSW50 ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL1BsYXRmb3JtUGVpL01lbURldGVjdC5jDQo+ID4gbmV3IGZp bGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRleCAwMDAwMDAwMDAwLi40YzUyN2JhZWYyDQo+ID4gLS0t IC9kZXYvbnVsbA0KPiA+ICsrKyBiL1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9Q bGF0Zm9ybVBlaS9NZW1EZXRlY3QuYw0KPiA+IEBAIC0wLDAgKzEsNTY4IEBADQo+ID4gKy8qKiBA ZmlsZQ0KPiA+ICsgIE1lbW9yeSBEZXRlY3Rpb24gZm9yIFZpcnR1YWwgTWFjaGluZXMuDQo+ID4g Kw0KPiA+ICsgIENvcHlyaWdodCAoYykgMjAwNiAtIDIwMTYgSW50ZWwgQ29ycG9yYXRpb24uIEFs bCByaWdodHMgcmVzZXJ2ZWQuIDxCUj4NCj4gPiArDQo+ID4gKyAgU1BEWC1MaWNlbnNlLUlkZW50 aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gPiArKiovDQo+ID4gKw0KPiA+ICsvLw0KPiA+ ICsvLyBUaGUgcGFja2FnZSBsZXZlbCBoZWFkZXIgZmlsZXMgdGhpcyBtb2R1bGUgdXNlcw0KPiA+ ICsvLw0KPiA+ICsjaW5jbHVkZSA8UGlQZWkuaD4NCj4gPiArDQo+ID4gKy8vDQo+ID4gKy8vIFRo ZSBMaWJyYXJ5IGNsYXNzZXMgdGhpcyBtb2R1bGUgY29uc3VtZXMNCj4gPiArLy8NCj4gPiArI2lu Y2x1ZGUgPExpYnJhcnkvQmFzZU1lbW9yeUxpYi5oPg0KPiA+ICsjaW5jbHVkZSA8TGlicmFyeS9E ZWJ1Z0xpYi5oPg0KPiA+ICsjaW5jbHVkZSA8TGlicmFyeS9Ib2JMaWIuaD4NCj4gPiArI2luY2x1 ZGUgPExpYnJhcnkvSW9MaWIuaD4NCj4gPiArI2luY2x1ZGUgPExpYnJhcnkvUGNkTGliLmg+DQo+ ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L1BlaW1FbnRyeVBvaW50Lmg+DQo+ID4gKyNpbmNsdWRlIDxM aWJyYXJ5L1Jlc291cmNlUHVibGljYXRpb25MaWIuaD4NCj4gPiArI2luY2x1ZGUgPExpYnJhcnkv TXRyckxpYi5oPg0KPiA+ICsjaW5jbHVkZSA8U2ltaWNzUGxhdGZvcm1zLmg+DQo+ID4gKyNpbmNs dWRlIDxHdWlkL1NtcmFtTWVtb3J5UmVzZXJ2ZS5oPg0KPiA+ICsNCj4gPiArI2luY2x1ZGUgIlBs YXRmb3JtLmgiDQo+ID4gKyNpbmNsdWRlICJDbW9zLmgiDQo+ID4gKw0KPiA+ICtVSU5UOCBtUGh5 c01lbUFkZHJlc3NXaWR0aDsNCj4gPiArDQo+ID4gK1NUQVRJQyBVSU5UMzIgbVMzQWNwaVJlc2Vy dmVkTWVtb3J5QmFzZTsNCj4gPiArU1RBVElDIFVJTlQzMiBtUzNBY3BpUmVzZXJ2ZWRNZW1vcnlT aXplOw0KPiA+ICsNCj4gPiArU1RBVElDIFVJTlQxNiBtWDU4VHNlZ01ieXRlczsNCj4gPiArDQo+ ID4gK1ZPSUQNCj4gPiArWDU4VHNlZ01ieXRlc0luaXRpYWxpemF0aW9uKA0KPiA+ICsgIFZPSUQN Cj4gPiArKQ0KPiA+ICt7DQo+ID4gKw0KPiA+ICsgIGlmIChtSG9zdEJyaWRnZURldklkICE9IElO VEVMX0lDSDEwX0RFVklDRV9JRCkgew0KPiA+ICsgICAgREVCVUcgKCgNCj4gPiArICAgICAgREVC VUdfRVJST1IsDQo+ID4gKyAgICAgICIlYTogbm8gVFNFRyAoU01SQU0pIG9uIGhvc3QgYnJpZGdl IERJRD0weCUwNHg7ICINCj4gPiArICAgICAgIm9ubHkgRElEPTB4JTA0eCAoWDU4KSBpcyBzdXBw b3J0ZWRcbiIsDQo+ID4gKyAgICAgIF9fRlVOQ1RJT05fXywNCj4gPiArICAgICAgbUhvc3RCcmlk Z2VEZXZJZCwNCj4gPiArICAgICAgSU5URUxfSUNIMTBfREVWSUNFX0lEDQo+ID4gKyAgICAgICkp Ow0KPiA+ICsgICAgQVNTRVJUIChGQUxTRSk7DQo+ID4gKyAgICBDcHVEZWFkTG9vcCAoKTsNCj4g PiArICB9DQo+ID4gKw0KPiA+ICsgIC8vDQo+ID4gKyAgLy8gQ2hlY2sgaWYgUUVNVSBvZmZlcnMg YW4gZXh0ZW5kZWQgVFNFRy4NCj4gPiArICAvLw0KPiA+ICsgIC8vIFRoaXMgY2FuIGJlIHNlZW4g ZnJvbSB3cml0aW5nIE1DSF9FWFRfVFNFR19NQl9RVUVSWSB0byB0aGUNCj4gPiBNQ0hfRVhUX1RT RUdfTUINCj4gPiArICAvLyByZWdpc3RlciwgYW5kIHJlYWRpbmcgYmFjayB0aGUgcmVnaXN0ZXIu DQo+ID4gKyAgLy8NCj4gPiArICAvLyBPbiBhIFFFTVUgbWFjaGluZSB0eXBlIHRoYXQgZG9lcyBu b3Qgb2ZmZXIgYW4gZXh0ZW5kZWQgVFNFRywgdGhlDQo+IGluaXRpYWwNCj4gPiArICAvLyB3cml0 ZSBvdmVyd3JpdGVzIHdoYXRldmVyIHZhbHVlIGEgbWFsaWNpb3VzIGd1ZXN0IE9TIG1heSBoYXZl IHBsYWNlZCBpbg0KPiA+ICsgIC8vIHRoZSAodW5pbXBsZW1lbnRlZCkgcmVnaXN0ZXIsIGJlZm9y ZSBlbnRlcmluZyBTMyBvciByZWJvb3RpbmcuDQo+ID4gKyAgLy8gU3Vic2VxdWVudGx5LCB0aGUg cmVhZCByZXR1cm5zIE1DSF9FWFRfVFNFR19NQl9RVUVSWSB1bmNoYW5nZWQuDQo+ID4gKyAgLy8N Cj4gPiArICAvLyBPbiBhIFFFTVUgbWFjaGluZSB0eXBlIHRoYXQgb2ZmZXJzIGFuIGV4dGVuZGVk IFRTRUcsIHRoZSBpbml0aWFsIHdyaXRlDQo+ID4gKyAgLy8gdHJpZ2dlcnMgYW4gdXBkYXRlIHRv IHRoZSByZWdpc3Rlci4gU3Vic2VxdWVudGx5LCB0aGUgdmFsdWUgcmVhZCBiYWNrDQo+ID4gKyAg Ly8gKHdoaWNoIGlzIGd1YXJhbnRlZWQgdG8gZGlmZmVyIGZyb20gTUNIX0VYVF9UU0VHX01CX1FV RVJZKSB0ZWxscyB1cw0KPiA+IHRoZQ0KPiA+ICsgIC8vIG51bWJlciBvZiBtZWdhYnl0ZXMuDQo+ ID4gKyAgLy8NCj4gPiArICBtWDU4VHNlZ01ieXRlcyA9IEZpeGVkUGNkR2V0OChQY2RYNThUc2Vn TWJ5dGVzKTsNCj4gPiArICByZXR1cm47DQo+ID4gK30NCj4gPiArDQo+ID4gKw0KPiA+ICtVSU5U MzINCj4gPiArR2V0U3lzdGVtTWVtb3J5U2l6ZUJlbG93NGdiICgNCj4gPiArICBWT0lEDQo+ID4g KyAgKQ0KPiA+ICt7DQo+ID4gKyAgVUlOVDggQ21vczB4MzQ7DQo+ID4gKyAgVUlOVDggQ21vczB4 MzU7DQo+ID4gKw0KPiA+ICsgIC8vDQo+ID4gKyAgLy8gQ01PUyAweDM0LzB4MzUgc3BlY2lmaWVz IHRoZSBzeXN0ZW0gbWVtb3J5IGFib3ZlIDE2IE1CLg0KPiA+ICsgIC8vICogQ01PUygweDM1KSBp cyB0aGUgaGlnaCBieXRlDQo+ID4gKyAgLy8gKiBDTU9TKDB4MzQpIGlzIHRoZSBsb3cgYnl0ZQ0K PiA+ICsgIC8vICogVGhlIHNpemUgaXMgc3BlY2lmaWVkIGluIDY0a2IgY2h1bmtzDQo+ID4gKyAg Ly8gKiBTaW5jZSB0aGlzIGlzIG1lbW9yeSBhYm92ZSAxNk1CLCB0aGUgMTZNQiBtdXN0IGJlIGFk ZGVkDQo+ID4gKyAgLy8gICBpbnRvIHRoZSBjYWxjdWxhdGlvbiB0byBnZXQgdGhlIHRvdGFsIG1l bW9yeSBzaXplLg0KPiA+ICsgIC8vDQo+ID4gKw0KPiA+ICsgIENtb3MweDM0ID0gKFVJTlQ4KSBD bW9zUmVhZDggKDB4MzQpOw0KPiA+ICsgIENtb3MweDM1ID0gKFVJTlQ4KSBDbW9zUmVhZDggKDB4 MzUpOw0KPiA+ICsNCj4gPiArICByZXR1cm4gKFVJTlQzMikgKCgoVUlOVE4pKChDbW9zMHgzNSA8 PCA4KSArIENtb3MweDM0KSA8PCAxNikgKw0KPiA+IFNJWkVfMTZNQik7DQo+ID4gK30NCj4gPiAr DQo+ID4gKw0KPiA+ICtTVEFUSUMNCj4gPiArVUlOVDY0DQo+ID4gK0dldFN5c3RlbU1lbW9yeVNp emVBYm92ZTRnYiAoDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgVUlOVDMyIFNpemU7DQo+ID4g KyAgVUlOVE4gIENtb3NJbmRleDsNCj4gPiArDQo+ID4gKyAgLy8NCj4gPiArICAvLyBDTU9TIDB4 NWItMHg1ZCBzcGVjaWZpZXMgdGhlIHN5c3RlbSBtZW1vcnkgYWJvdmUgNEdCIE1CLg0KPiA+ICsg IC8vICogQ01PUygweDVkKSBpcyB0aGUgbW9zdCBzaWduaWZpY2FudCBzaXplIGJ5dGUNCj4gPiAr ICAvLyAqIENNT1MoMHg1YykgaXMgdGhlIG1pZGRsZSBzaXplIGJ5dGUNCj4gPiArICAvLyAqIENN T1MoMHg1YikgaXMgdGhlIGxlYXN0IHNpZ25pZmljYW50IHNpemUgYnl0ZQ0KPiA+ICsgIC8vICog VGhlIHNpemUgaXMgc3BlY2lmaWVkIGluIDY0a2IgY2h1bmtzDQo+ID4gKyAgLy8NCj4gPiArDQo+ ID4gKyAgU2l6ZSA9IDA7DQo+ID4gKyAgZm9yIChDbW9zSW5kZXggPSAweDVkOyBDbW9zSW5kZXgg Pj0gMHg1YjsgQ21vc0luZGV4LS0pIHsNCj4gPiArICAgIFNpemUgPSAoVUlOVDMyKSAoU2l6ZSA8 PCA4KSArIChVSU5UMzIpIENtb3NSZWFkOCAoQ21vc0luZGV4KTsNCj4gPiArICB9DQo+ID4gKw0K PiA+ICsgIHJldHVybiBMU2hpZnRVNjQgKFNpemUsIDE2KTsNCj4gPiArfQ0KPiA+ICsNCj4gPiAr DQo+ID4gKy8qKg0KPiA+ICsgIFJldHVybiB0aGUgaGlnaGVzdCBhZGRyZXNzIHRoYXQgRFhFIGNv dWxkIHBvc3NpYmx5IHVzZSwgcGx1cyBvbmUuDQo+ID4gKyoqLw0KPiA+ICtTVEFUSUMNCj4gPiAr VUlOVDY0DQo+ID4gK0dldEZpcnN0Tm9uQWRkcmVzcyAoDQo+ID4gKyAgVk9JRA0KPiA+ICsgICkN Cj4gPiArew0KPiA+ICsgIFVJTlQ2NCAgICAgICAgICAgICAgIEZpcnN0Tm9uQWRkcmVzczsNCj4g PiArICBVSU5UNjQgICAgICAgICAgICAgICBQY2k2NEJhc2UsIFBjaTY0U2l6ZTsNCj4gPiArDQo+ ID4gKyAgRmlyc3ROb25BZGRyZXNzID0gQkFTRV80R0IgKyBHZXRTeXN0ZW1NZW1vcnlTaXplQWJv dmU0Z2IgKCk7DQo+ID4gKw0KPiA+ICsgIC8vDQo+ID4gKyAgLy8gSWYgRFhFIGlzIDMyLWJpdCwg dGhlbiB3ZSdyZSBkb25lOyBQY2lCdXNEeGUgd2lsbCBkZWdyYWRlIDY0LWJpdCBNTUlPDQo+ID4g KyAgLy8gcmVzb3VyY2VzIHRvIDMyLWJpdCBhbnl3YXkuIFNlZSBEZWdyYWRlUmVzb3VyY2UoKSBp bg0KPiA+ICsgIC8vICJQY2lSZXNvdXJjZVN1cHBvcnQuYyIuDQo+ID4gKyAgLy8NCj4gPiArI2lm ZGVmIE1ERV9DUFVfSUEzMg0KPiA+ICsgIGlmICghRmVhdHVyZVBjZEdldCAoUGNkRHhlSXBsU3dp dGNoVG9Mb25nTW9kZSkpIHsNCj4gPiArICAgIHJldHVybiBGaXJzdE5vbkFkZHJlc3M7DQo+ID4g KyAgfQ0KPiA+ICsjZW5kaWYNCj4gPiArDQo+ID4gKyAgLy8NCj4gPiArICAvLyBPdGhlcndpc2Us IGluIG9yZGVyIHRvIGNhbGN1bGF0ZSB0aGUgaGlnaGVzdCBhZGRyZXNzIHBsdXMgb25lLCB3ZSBt dXN0DQo+ID4gKyAgLy8gY29uc2lkZXIgdGhlIDY0LWJpdCBQQ0kgaG9zdCBhcGVydHVyZSB0b28u IEZldGNoIHRoZSBkZWZhdWx0IHNpemUuDQo+ID4gKyAgLy8NCj4gPiArICBQY2k2NFNpemUgPSBQ Y2RHZXQ2NCAoUGNkUGNpTW1pbzY0U2l6ZSk7DQo+ID4gKw0KPiA+ICsgIGlmIChQY2k2NFNpemUg PT0gMCkgew0KPiA+ICsgICAgaWYgKG1Cb290TW9kZSAhPSBCT09UX09OX1MzX1JFU1VNRSkgew0K PiA+ICsgICAgICBERUJVRyAoKEVGSV9EX0lORk8sICIlYTogZGlzYWJsaW5nIDY0LWJpdCBQQ0kg aG9zdCBhcGVydHVyZVxuIiwNCj4gPiArICAgICAgICBfX0ZVTkNUSU9OX18pKTsNCj4gPiArICAg ICAgUGNkU2V0NjQgKFBjZFBjaU1taW82NFNpemUsIDApOw0KPiA+ICsgICAgfQ0KPiA+ICsNCj4g PiArICAgIC8vDQo+ID4gKyAgICAvLyBUaGVyZSdzIG5vdGhpbmcgbW9yZSB0byBkbzsgdGhlIGFt b3VudCBvZiBtZW1vcnkgYWJvdmUgNEdCIGZ1bGx5DQo+ID4gKyAgICAvLyBkZXRlcm1pbmVzIHRo ZSBoaWdoZXN0IGFkZHJlc3MgcGx1cyBvbmUuIFRoZSBtZW1vcnkgaG90cGx1ZyBhcmVhIChzZWUN Cj4gPiArICAgIC8vIGJlbG93KSBwbGF5cyBubyByb2xlIGZvciB0aGUgZmlybXdhcmUgaW4gdGhp cyBjYXNlLg0KPiA+ICsgICAgLy8NCj4gPiArICAgIHJldHVybiBGaXJzdE5vbkFkZHJlc3M7DQo+ ID4gKyAgfQ0KPiA+ICsNCj4gPiArICAvLw0KPiA+ICsgIC8vIFNlYUJJT1MgYWxpZ25zIGJvdGgg Ym91bmRhcmllcyBvZiB0aGUgNjQtYml0IFBDSSBob3N0IGFwZXJ0dXJlIHRvIDFHQiwgc28NCj4g PiArICAvLyB0aGF0IHRoZSBob3N0IGNhbiBtYXAgaXQgd2l0aCAxR0IgaHVnZXBhZ2VzLiBGb2xs b3cgc3VpdC4NCj4gPiArICAvLw0KPiA+ICsgIFBjaTY0QmFzZSA9IEFMSUdOX1ZBTFVFIChGaXJz dE5vbkFkZHJlc3MsIChVSU5UNjQpU0laRV8xR0IpOw0KPiA+ICsgIFBjaTY0U2l6ZSA9IEFMSUdO X1ZBTFVFIChQY2k2NFNpemUsIChVSU5UNjQpU0laRV8xR0IpOw0KPiA+ICsNCj4gPiArICAvLw0K PiA+ICsgIC8vIFRoZSA2NC1iaXQgUENJIGhvc3QgYXBlcnR1cmUgc2hvdWxkIGFsc28gYmUgIm5h dHVyYWxseSIgYWxpZ25lZC4gVGhlDQo+ID4gKyAgLy8gYWxpZ25tZW50IGlzIGRldGVybWluZWQg Ynkgcm91bmRpbmcgdGhlIHNpemUgb2YgdGhlIGFwZXJ0dXJlIGRvd24gdG8gdGhlDQo+ID4gKyAg Ly8gbmV4dCBzbWFsbGVyIG9yIGVxdWFsIHBvd2VyIG9mIHR3by4gVGhhdCBpcywgYWxpZ24gdGhl IGFwZXJ0dXJlIGJ5IHRoZQ0KPiA+ICsgIC8vIGxhcmdlc3QgQkFSIHNpemUgdGhhdCBjYW4gZml0 IGludG8gaXQuDQo+ID4gKyAgLy8NCj4gPiArICBQY2k2NEJhc2UgPSBBTElHTl9WQUxVRSAoUGNp NjRCYXNlLCBHZXRQb3dlck9mVHdvNjQgKFBjaTY0U2l6ZSkpOw0KPiA+ICsNCj4gPiArICBpZiAo bUJvb3RNb2RlICE9IEJPT1RfT05fUzNfUkVTVU1FKSB7DQo+ID4gKyAgICAvLw0KPiA+ICsgICAg Ly8gVGhlIGNvcmUgUGNpSG9zdEJyaWRnZUR4ZSBkcml2ZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGFk ZCB0aGlzIHJhbmdlIHRvDQo+ID4gKyAgICAvLyB0aGUgR0NEIG1lbW9yeSBzcGFjZSBtYXAgdGhy b3VnaCBvdXIgUGNpSG9zdEJyaWRnZUxpYiBpbnN0YW5jZTsNCj4gaGVyZQ0KPiA+IHdlDQo+ID4g KyAgICAvLyBvbmx5IG5lZWQgdG8gc2V0IHRoZSBQQ0RzLg0KPiA+ICsgICAgLy8NCj4gPiArICAg IFBjZFNldDY0IChQY2RQY2lNbWlvNjRCYXNlLCBQY2k2NEJhc2UpOw0KPiA+ICsgICAgUGNkU2V0 NjQgKFBjZFBjaU1taW82NFNpemUsIFBjaTY0U2l6ZSk7DQo+ID4gKyAgICBERUJVRyAoKEVGSV9E X0lORk8sICIlYTogUGNpNjRCYXNlPTB4JUx4IFBjaTY0U2l6ZT0weCVMeFxuIiwNCj4gPiArICAg ICAgX19GVU5DVElPTl9fLCBQY2k2NEJhc2UsIFBjaTY0U2l6ZSkpOw0KPiA+ICsgIH0NCj4gPiAr DQo+ID4gKyAgLy8NCj4gPiArICAvLyBUaGUgdXNlZnVsIGFkZHJlc3Mgc3BhY2UgZW5kcyB3aXRo IHRoZSA2NC1iaXQgUENJIGhvc3QgYXBlcnR1cmUuDQo+ID4gKyAgLy8NCj4gPiArICBGaXJzdE5v bkFkZHJlc3MgPSBQY2k2NEJhc2UgKyBQY2k2NFNpemU7DQo+ID4gKyAgcmV0dXJuIEZpcnN0Tm9u QWRkcmVzczsNCj4gPiArfQ0KPiA+ICsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIEluaXRpYWxp emUgdGhlIG1QaHlzTWVtQWRkcmVzc1dpZHRoIHZhcmlhYmxlLCBiYXNlZCBvbiBndWVzdCBSQU0g c2l6ZS4NCj4gPiArKiovDQo+ID4gK1ZPSUQNCj4gPiArQWRkcmVzc1dpZHRoSW5pdGlhbGl6YXRp b24gKA0KPiA+ICsgIFZPSUQNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBVSU5UNjQgRmlyc3RO b25BZGRyZXNzOw0KPiA+ICsNCj4gPiArICAvLw0KPiA+ICsgIC8vIEFzIGd1ZXN0LXBoeXNpY2Fs IG1lbW9yeSBzaXplIGdyb3dzLCB0aGUgcGVybWFuZW50IFBFSSBSQU0NCj4gPiByZXF1aXJlbWVu dHMNCj4gPiArICAvLyBhcmUgZG9taW5hdGVkIGJ5IHRoZSBpZGVudGl0eS1tYXBwaW5nIHBhZ2Ug dGFibGVzIGJ1aWx0IGJ5IHRoZSBEWEUgSVBMLg0KPiA+ICsgIC8vIFRoZSBEWEwgSVBMIGtleXMg b2ZmIG9mIHRoZSBwaHlzaWNhbCBhZGRyZXNzIGJpdHMgYWR2ZXJ0aXplZCBpbiB0aGUgQ1BVDQo+ ID4gKyAgLy8gSE9CLiBUbyBjb25zZXJ2ZSBtZW1vcnksIHdlIGNhbGN1bGF0ZSB0aGUgbWluaW11 bSBhZGRyZXNzIHdpZHRoDQo+IGhlcmUuDQo+ID4gKyAgLy8NCj4gPiArICBGaXJzdE5vbkFkZHJl c3MgICAgICA9IEdldEZpcnN0Tm9uQWRkcmVzcyAoKTsNCj4gPiArICBtUGh5c01lbUFkZHJlc3NX aWR0aCA9IChVSU5UOClIaWdoQml0U2V0NjQgKEZpcnN0Tm9uQWRkcmVzcyk7DQo+ID4gKw0KPiA+ ICsgIC8vDQo+ID4gKyAgLy8gSWYgRmlyc3ROb25BZGRyZXNzIGlzIG5vdCBhbiBpbnRlZ3JhbCBw b3dlciBvZiB0d28sIHRoZW4gd2UgbmVlZCBhbg0KPiA+ICsgIC8vIGFkZGl0aW9uYWwgYml0Lg0K PiA+ICsgIC8vDQo+ID4gKyAgaWYgKChGaXJzdE5vbkFkZHJlc3MgJiAoRmlyc3ROb25BZGRyZXNz IC0gMSkpICE9IDApIHsNCj4gPiArICAgICsrbVBoeXNNZW1BZGRyZXNzV2lkdGg7DQo+ID4gKyAg fQ0KPiA+ICsNCj4gPiArICAvLw0KPiA+ICsgIC8vIFRoZSBtaW5pbXVtIGFkZHJlc3Mgd2lkdGgg aXMgMzYgKGNvdmVycyB1cCB0byBhbmQgZXhjbHVkaW5nIDY0IEdCLA0KPiB3aGljaA0KPiA+ICsg IC8vIGlzIHRoZSBtYXhpbXVtIGZvciBJYTMyICsgUEFFKS4gVGhlIHRoZW9yZXRpY2FsIGFyY2hp dGVjdHVyZSBtYXhpbXVtDQo+IGZvcg0KPiA+ICsgIC8vIFg2NCBsb25nIG1vZGUgaXMgNTIgYml0 cywgYnV0IHRoZSBEWEUgSVBMIGNsYW1wcyB0aGF0IGRvd24gdG8gNDggYml0cy4gV2UNCj4gPiAr ICAvLyBjYW4gc2ltcGx5IGFzc2VydCB0aGF0IGhlcmUsIHNpbmNlIDQ4IGJpdHMgYXJlIGdvb2Qg ZW5vdWdoIGZvciAyNTYgVEIuDQo+ID4gKyAgLy8NCj4gPiArICBpZiAobVBoeXNNZW1BZGRyZXNz V2lkdGggPD0gMzYpIHsNCj4gPiArICAgIG1QaHlzTWVtQWRkcmVzc1dpZHRoID0gMzY7DQo+ID4g KyAgfQ0KPiA+ICsgIEFTU0VSVCAobVBoeXNNZW1BZGRyZXNzV2lkdGggPD0gNDgpOw0KPiA+ICt9 DQo+ID4gKw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgQ2FsY3VsYXRlIHRoZSBjYXAgZm9yIHRo ZSBwZXJtYW5lbnQgUEVJIG1lbW9yeS4NCj4gPiArKiovDQo+ID4gK1NUQVRJQw0KPiA+ICtVSU5U MzINCj4gPiArR2V0UGVpTWVtb3J5Q2FwICgNCj4gPiArICBWT0lEDQo+ID4gKyAgKQ0KPiA+ICt7 DQo+ID4gKyAgQk9PTEVBTiBQYWdlMUdTdXBwb3J0Ow0KPiA+ICsgIFVJTlQzMiAgUmVnRWF4Ow0K PiA+ICsgIFVJTlQzMiAgUmVnRWR4Ow0KPiA+ICsgIFVJTlQzMiAgUG1sNEVudHJpZXM7DQo+ID4g KyAgVUlOVDMyICBQZHBFbnRyaWVzOw0KPiA+ICsgIFVJTlROICAgVG90YWxQYWdlczsNCj4gPiAr DQo+ID4gKyAgLy8NCj4gPiArICAvLyBJZiBEWEUgaXMgMzItYml0LCB0aGVuIGp1c3QgcmV0dXJu IHRoZSB0cmFkaXRpb25hbCA2NCBNQiBjYXAuDQo+ID4gKyAgLy8NCj4gPiArI2lmZGVmIE1ERV9D UFVfSUEzMg0KPiA+ICsgIGlmICghRmVhdHVyZVBjZEdldCAoUGNkRHhlSXBsU3dpdGNoVG9Mb25n TW9kZSkpIHsNCj4gPiArICAgIHJldHVybiBTSVpFXzY0TUI7DQo+ID4gKyAgfQ0KPiA+ICsjZW5k aWYNCj4gPiArDQo+ID4gKyAgLy8NCj4gPiArICAvLyBEZXBlbmRlbnQgb24gcGh5c2ljYWwgYWRk cmVzcyB3aWR0aCwgUEVJIG1lbW9yeSBhbGxvY2F0aW9ucyBjYW4gYmUNCj4gPiArICAvLyBkb21p bmF0ZWQgYnkgdGhlIHBhZ2UgdGFibGVzIGJ1aWx0IGZvciA2NC1iaXQgRFhFLiBTbyB3ZSBrZXkg dGhlIGNhcCBvZmYNCj4gPiArICAvLyBvZiB0aG9zZS4gVGhlIGNvZGUgYmVsb3cgaXMgYmFzZWQg b24gQ3JlYXRlSWRlbnRpdHlNYXBwaW5nUGFnZVRhYmxlcygpDQo+IGluDQo+ID4gKyAgLy8gIk1k ZU1vZHVsZVBrZy9Db3JlL0R4ZUlwbFBlaW0vWDY0L1ZpcnR1YWxNZW1vcnkuYyIuDQo+ID4gKyAg Ly8NCj4gPiArICBQYWdlMUdTdXBwb3J0ID0gRkFMU0U7DQo+ID4gKyAgaWYgKFBjZEdldEJvb2wg KFBjZFVzZTFHUGFnZVRhYmxlKSkgew0KPiA+ICsgICAgQXNtQ3B1aWQgKDB4ODAwMDAwMDAsICZS ZWdFYXgsIE5VTEwsIE5VTEwsIE5VTEwpOw0KPiA+ICsgICAgaWYgKFJlZ0VheCA+PSAweDgwMDAw MDAxKSB7DQo+ID4gKyAgICAgIEFzbUNwdWlkICgweDgwMDAwMDAxLCBOVUxMLCBOVUxMLCBOVUxM LCAmUmVnRWR4KTsNCj4gPiArICAgICAgaWYgKChSZWdFZHggJiBCSVQyNikgIT0gMCkgew0KPiA+ ICsgICAgICAgIFBhZ2UxR1N1cHBvcnQgPSBUUlVFOw0KPiA+ICsgICAgICB9DQo+ID4gKyAgICB9 DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICBpZiAobVBoeXNNZW1BZGRyZXNzV2lkdGggPD0gMzkp IHsNCj4gPiArICAgIFBtbDRFbnRyaWVzID0gMTsNCj4gPiArICAgIFBkcEVudHJpZXMgPSAxIDw8 IChtUGh5c01lbUFkZHJlc3NXaWR0aCAtIDMwKTsNCj4gPiArICAgIEFTU0VSVCAoUGRwRW50cmll cyA8PSAweDIwMCk7DQo+ID4gKyAgfSBlbHNlIHsNCj4gPiArICAgIFBtbDRFbnRyaWVzID0gMSA8 PCAobVBoeXNNZW1BZGRyZXNzV2lkdGggLSAzOSk7DQo+ID4gKyAgICBBU1NFUlQgKFBtbDRFbnRy aWVzIDw9IDB4MjAwKTsNCj4gPiArICAgIFBkcEVudHJpZXMgPSA1MTI7DQo+ID4gKyAgfQ0KPiA+ ICsNCj4gPiArICBUb3RhbFBhZ2VzID0gUGFnZTFHU3VwcG9ydCA/IFBtbDRFbnRyaWVzICsgMSA6 DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUGRwRW50cmllcyArIDEpICog UG1sNEVudHJpZXMgKyAxOw0KPiA+ICsgIEFTU0VSVCAoVG90YWxQYWdlcyA8PSAweDQwMjAxKTsN Cj4gPiArDQo+ID4gKyAgLy8NCj4gPiArICAvLyBBZGQgNjQgTUIgZm9yIG1pc2NlbGxhbmVvdXMg YWxsb2NhdGlvbnMuIE5vdGUgdGhhdCBmb3INCj4gPiArICAvLyBtUGh5c01lbUFkZHJlc3NXaWR0 aCB2YWx1ZXMgY2xvc2UgdG8gMzYsIHRoZSBjYXAgd2lsbCBhY3R1YWxseSBiZQ0KPiA+ICsgIC8v IGRvbWluYXRlZCBieSB0aGlzIGluY3JlbWVudC4NCj4gPiArICAvLw0KPiA+ICsgIHJldHVybiAo VUlOVDMyKShFRklfUEFHRVNfVE9fU0laRSAoVG90YWxQYWdlcykgKyBTSVpFXzY0TUIpOw0KPiA+ ICt9DQo+ID4gKw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgUHVibGlzaCBQRUkgY29yZSBtZW1v cnkNCj4gPiArDQo+ID4gKyAgQHJldHVybiBFRklfU1VDQ0VTUyAgICAgVGhlIFBFSU0gaW5pdGlh bGl6ZWQgc3VjY2Vzc2Z1bGx5Lg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK0VGSV9TVEFUVVMNCj4g PiArUHVibGlzaFBlaU1lbW9yeSAoDQo+ID4gKyAgVk9JRA0KPiA+ICsgICkNCj4gPiArew0KPiA+ ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICBTdGF0dXM7DQo+ID4gKyAgRUZJX1BIWVNJ Q0FMX0FERFJFU1MgICAgICAgIE1lbW9yeUJhc2U7DQo+ID4gKyAgVUlOVDY0ICAgICAgICAgICAg ICAgICAgICAgIE1lbW9yeVNpemU7DQo+ID4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAg IExvd2VyTWVtb3J5U2l6ZTsNCj4gPiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgUGVp TWVtb3J5Q2FwOw0KPiA+ICsNCj4gPiArICBMb3dlck1lbW9yeVNpemUgPSBHZXRTeXN0ZW1NZW1v cnlTaXplQmVsb3c0Z2IgKCk7DQo+ID4gKyAgaWYgKEZlYXR1cmVQY2RHZXQgKFBjZFNtbVNtcmFt UmVxdWlyZSkpIHsNCj4gPiArICAgIC8vDQo+ID4gKyAgICAvLyBUU0VHIGlzIGNoaXBwZWQgZnJv bSB0aGUgZW5kIG9mIGxvdyBSQU0NCj4gPiArICAgIC8vDQo+ID4gKyAgICBMb3dlck1lbW9yeVNp emUgLT0gbVg1OFRzZWdNYnl0ZXMgKiBTSVpFXzFNQjsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsg IC8vDQo+ID4gKyAgLy8gSWYgUzMgaXMgc3VwcG9ydGVkLCB0aGVuIHRoZSBTMyBwZXJtYW5lbnQg UEVJIG1lbW9yeSBpcyBwbGFjZWQgbmV4dCwNCj4gPiArICAvLyBkb3dud2FyZHMuIEl0cyBzaXpl IGlzIHByaW1hcmlseSBkaWN0YXRlZCBieSBDcHVNcFBlaS4gVGhlIGZvcm11bGENCj4gYmVsb3cN Cj4gPiArICAvLyBpcyBhbiBhcHByb3hpbWF0aW9uLg0KPiA+ICsgIC8vDQo+ID4gKyAgaWYgKG1T M1N1cHBvcnRlZCkgew0KPiA+ICsgICAgbVMzQWNwaVJlc2VydmVkTWVtb3J5U2l6ZSA9IFNJWkVf NTEyS0IgKw0KPiA+ICsgICAgICBtTWF4Q3B1Q291bnQgKg0KPiA+ICsgICAgICBQY2RHZXQzMiAo UGNkQ3B1QXBTdGFja1NpemUpOw0KPiA+ICsgICAgbVMzQWNwaVJlc2VydmVkTWVtb3J5QmFzZSA9 IExvd2VyTWVtb3J5U2l6ZSAtDQo+ID4gbVMzQWNwaVJlc2VydmVkTWVtb3J5U2l6ZTsNCj4gPiAr ICAgIExvd2VyTWVtb3J5U2l6ZSA9IG1TM0FjcGlSZXNlcnZlZE1lbW9yeUJhc2U7DQo+ID4gKyAg fQ0KPiA+ICsNCj4gPiArICBpZiAobUJvb3RNb2RlID09IEJPT1RfT05fUzNfUkVTVU1FKSB7DQo+ ID4gKyAgICBNZW1vcnlCYXNlID0gbVMzQWNwaVJlc2VydmVkTWVtb3J5QmFzZTsNCj4gPiArICAg IE1lbW9yeVNpemUgPSBtUzNBY3BpUmVzZXJ2ZWRNZW1vcnlTaXplOw0KPiA+ICsgIH0gZWxzZSB7 DQo+ID4gKyAgICBQZWlNZW1vcnlDYXAgPSBHZXRQZWlNZW1vcnlDYXAgKCk7DQo+ID4gKyAgICBE RUJVRyAoKEVGSV9EX0lORk8sICIlYTogbVBoeXNNZW1BZGRyZXNzV2lkdGg9JWQNCj4gPiBQZWlN ZW1vcnlDYXA9JXUgS0JcbiIsDQo+ID4gKyAgICAgIF9fRlVOQ1RJT05fXywgbVBoeXNNZW1BZGRy ZXNzV2lkdGgsIFBlaU1lbW9yeUNhcCA+PiAxMCkpOw0KPiA+ICsNCj4gPiArICAgIC8vDQo+ID4g KyAgICAvLyBEZXRlcm1pbmUgdGhlIHJhbmdlIG9mIG1lbW9yeSB0byB1c2UgZHVyaW5nIFBFSQ0K PiA+ICsgICAgLy8NCj4gPiArICAgIC8vIFRlY2huaWNhbGx5IHdlIGNvdWxkIGxheSB0aGUgcGVy bWFuZW50IFBFSSBSQU0gb3ZlciBTRUMncyB0ZW1wb3JhcnkNCj4gPiArICAgIC8vIGRlY29tcHJl c3Npb24gYW5kIHNjcmF0Y2ggYnVmZmVyIGV2ZW4gaWYgInNlY3VyZSBTMyIgaXMgbmVlZGVkLCBz aW5jZQ0KPiA+ICsgICAgLy8gdGhlaXIgbGlmZXRpbWVzIGRvbid0IG92ZXJsYXAuIEhvd2V2ZXIs IFBlaUZ2SW5pdGlhbGl6YXRpb24oKSB3aWxsIGNvdmVyDQo+ID4gKyAgICAvLyBSQU0gdXAgdG8g UGNkT3ZtZkRlY29tcHJlc3Npb25TY3JhdGNoRW5kIHdpdGggYW4NCj4gPiBFZmlBQ1BJTWVtb3J5 TlZTIG1lbW9yeQ0KPiA+ICsgICAgLy8gYWxsb2NhdGlvbiBIT0IsIGFuZCBvdGhlciBhbGxvY2F0 aW9ucyBzZXJ2ZWQgZnJvbSB0aGUgcGVybWFuZW50IFBFSQ0KPiBSQU0NCj4gPiArICAgIC8vIHNo b3VsZG4ndCBvdmVybGFwIHdpdGggdGhhdCBIT0IuDQo+ID4gKyAgICAvLw0KPiA+ICsgICAgTWVt b3J5QmFzZSA9IG1TM1N1cHBvcnRlZCAmJiBGZWF0dXJlUGNkR2V0DQo+IChQY2RTbW1TbXJhbVJl cXVpcmUpDQo+ID4gPw0KPiA+ICsgICAgICBQY2RHZXQzMiAoUGNkU2ltaWNzRGVjb21wcmVzc2lv blNjcmF0Y2hFbmQpIDoNCj4gPiArICAgICAgUGNkR2V0MzIgKFBjZFNpbWljc0R4ZU1lbUZ2QmFz ZSkgKyBQY2RHZXQzMg0KPiA+IChQY2RTaW1pY3NEeGVNZW1GdlNpemUpOw0KPiA+ICsgICAgTWVt b3J5U2l6ZSA9IExvd2VyTWVtb3J5U2l6ZSAtIE1lbW9yeUJhc2U7DQo+ID4gKyAgfQ0KPiA+ICsg IERFQlVHKChFRklfRF9JTkZPLCAiTWVtb3J5QmFzZT0weCVseCBNZW1vcnlTaXplPTB4JWx4XG4i LA0KPiA+IE1lbW9yeUJhc2UsIE1lbW9yeVNpemUpKTsNCj4gPiArICAvLw0KPiA+ICsgIC8vIFB1 Ymxpc2ggdGhpcyBtZW1vcnkgdG8gdGhlIFBFSSBDb3JlDQo+ID4gKyAgLy8NCj4gPiArICBTdGF0 dXMgPSBQdWJsaXNoU3lzdGVtTWVtb3J5KE1lbW9yeUJhc2UsIE1lbW9yeVNpemUpOw0KPiA+ICsg IEFTU0VSVF9FRklfRVJST1IgKFN0YXR1cyk7DQo+ID4gKw0KPiA+ICsgIHJldHVybiBTdGF0dXM7 DQo+ID4gK30NCj4gPiArDQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBQZWZvcm0gTWVtb3J5IERl dGVjdGlvbiBmb3IgUUVNVSAvIEtWTQ0KPiA+ICsNCj4gPiArKiovDQo+ID4gK1NUQVRJQw0KPiA+ ICtWT0lEDQo+ID4gK1FlbXVJbml0aWFsaXplUmFtICgNCj4gPiArICBWT0lEDQo+ID4gKyAgKQ0K PiA+ICt7DQo+ID4gKyAgVUlOVDY0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvd2Vy TWVtb3J5U2l6ZTsNCj4gPiArICBVSU5UNjQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg VXBwZXJNZW1vcnlTaXplOw0KPiA+ICsgIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgQnVmZmVyU2l6ZTsNCj4gPiArICBVSU5UOCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFNtcmFtSW5kZXg7DQo+ID4gKyAgVUlOVDggICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBTbXJhbVJhbmdlczsNCj4gPiArICBFRklfUEVJX0hPQl9QT0lOVEVSUyAgICAgICAg ICAgICAgICAgIEhvYjsNCj4gPiArICBFRklfU01SQU1fSE9CX0RFU0NSSVBUT1JfQkxPQ0sgICAg ICAgICpTbXJhbUhvYkRlc2NyaXB0b3JCbG9jazsNCj4gPiArICBVSU5UOCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEluZGV4Ow0KPiA+ICsNCj4gPiArICBERUJVRyAoKEVGSV9EX0lO Rk8sICIlYSBjYWxsZWRcbiIsIF9fRlVOQ1RJT05fXykpOw0KPiA+ICsNCj4gPiArICAvLw0KPiA+ ICsgIC8vIERldGVybWluZSB0b3RhbCBtZW1vcnkgc2l6ZSBhdmFpbGFibGUNCj4gPiArICAvLw0K PiA+ICsgIExvd2VyTWVtb3J5U2l6ZSA9IEdldFN5c3RlbU1lbW9yeVNpemVCZWxvdzRnYiAoKTsN Cj4gPiArICBVcHBlck1lbW9yeVNpemUgPSBHZXRTeXN0ZW1NZW1vcnlTaXplQWJvdmU0Z2IgKCk7 DQo+ID4gKw0KPiA+ICsgIGlmIChtQm9vdE1vZGUgPT0gQk9PVF9PTl9TM19SRVNVTUUpIHsNCj4g PiArICAgIC8vDQo+ID4gKyAgICAvLyBDcmVhdGUgdGhlIGZvbGxvd2luZyBtZW1vcnkgSE9CIGFz IGFuIGV4Y2VwdGlvbiBvbiB0aGUgUzMgYm9vdCBwYXRoLg0KPiA+ICsgICAgLy8NCj4gPiArICAg IC8vIE5vcm1hbGx5IHdlJ2QgY3JlYXRlIG1lbW9yeSBIT0JzIG9ubHkgb24gdGhlIG5vcm1hbCBi b290IHBhdGguDQo+ID4gSG93ZXZlciwNCj4gPiArICAgIC8vIENwdU1wUGVpIHNwZWNpZmljYWxs eSBuZWVkcyBzdWNoIGEgbG93LW1lbW9yeSBIT0Igb24gdGhlIFMzIHBhdGggYXMNCj4gPiArICAg IC8vIHdlbGwsIGZvciAiYm9ycm93aW5nIiBhIHN1YnNldCBvZiBpdCB0ZW1wb3JhcmlseSwgZm9y IHRoZSBBUCBzdGFydHVwDQo+ID4gKyAgICAvLyB2ZWN0b3IuDQo+ID4gKyAgICAvLw0KPiA+ICsg ICAgLy8gQ3B1TXBQZWkgc2F2ZXMgdGhlIG9yaWdpbmFsIGNvbnRlbnRzIG9mIHRoZSBib3Jyb3dl ZCBhcmVhIGluDQo+IHBlcm1hbmVudA0KPiA+ICsgICAgLy8gUEVJIFJBTSwgaW4gYSBiYWNrdXAg YnVmZmVyIGFsbG9jYXRlZCB3aXRoIHRoZSBub3JtYWwgUEVJIHNlcnZpY2VzLg0KPiA+ICsgICAg Ly8gQ3B1TXBQZWkgcmVzdG9yZXMgdGhlIG9yaWdpbmFsIGNvbnRlbnRzICgicmV0dXJucyIgdGhl IGJvcnJvd2VkIGFyZWEpDQo+IGF0DQo+ID4gKyAgICAvLyBFbmQtb2YtUEVJLiBFbmQtb2YtUEVJ IGluIHR1cm4gaXMgZW1pdHRlZCBieSBTM1Jlc3VtZTJQZWkgYmVmb3JlDQo+ID4gKyAgICAvLyB0 cmFuc2ZlcnJpbmcgY29udHJvbCB0byB0aGUgT1MncyB3YWtldXAgdmVjdG9yIGluIHRoZSBGQUNT Lg0KPiA+ICsgICAgLy8NCj4gPiArICAgIC8vIFdlIGV4cGVjdCBhbnkgb3RoZXIgUEVJTXMgdGhh dCAiYm9ycm93IiBtZW1vcnkgc2ltaWxhcmx5IHRvDQo+IENwdU1wUGVpDQo+ID4gdG8NCj4gPiAr ICAgIC8vIHJlc3RvcmUgdGhlIG9yaWdpbmFsIGNvbnRlbnRzLiBGdXJ0aGVybW9yZSwgd2UgZXhw ZWN0IGFsbCBzdWNoIFBFSU1zDQo+ID4gKyAgICAvLyAoQ3B1TXBQZWkgaW5jbHVkZWQpIHRvIGNs YWltIHRoZSBib3Jyb3dlZCBhcmVhcyBieSBwcm9kdWNpbmcgbWVtb3J5DQo+ID4gKyAgICAvLyBh bGxvY2F0aW9uIEhPQnMsIGFuZCB0byBob25vciBwcmVleGlzdGVudCBtZW1vcnkgYWxsb2NhdGlv biBIT0JzDQo+IHdoZW4NCj4gPiArICAgIC8vIGxvb2tpbmcgZm9yIGFuIGFyZWEgdG8gYm9ycm93 Lg0KPiA+ICsgICAgLy8NCj4gPiArICAgIEFkZE1lbW9yeVJhbmdlSG9iICgwLCBCQVNFXzUxMktC ICsgQkFTRV8xMjhLQik7DQo+ID4gKyAgfSBlbHNlIHsNCj4gPiArICAgIC8vDQo+ID4gKyAgICAv LyBDcmVhdGUgbWVtb3J5IEhPQnMNCj4gPiArICAgIC8vDQo+ID4gKyAgICBBZGRNZW1vcnlSYW5n ZUhvYiAoMCwgQkFTRV81MTJLQiArIEJBU0VfMTI4S0IpOw0KPiA+ICsNCj4gPiArICAgIGlmIChG ZWF0dXJlUGNkR2V0IChQY2RTbW1TbXJhbVJlcXVpcmUpKSB7DQo+ID4gKyAgICAgIFVJTlQzMiBU c2VnU2l6ZTsNCj4gPiArDQo+ID4gKyAgICAgIFRzZWdTaXplID0gbVg1OFRzZWdNYnl0ZXMgKiBT SVpFXzFNQjsNCj4gPiArICAgICAgQWRkTWVtb3J5UmFuZ2VIb2IgKEJBU0VfMU1CLCBMb3dlck1l bW9yeVNpemUgLSBUc2VnU2l6ZSk7DQo+ID4gKyAgICAgIEFkZFJlc2VydmVkTWVtb3J5QmFzZVNp emVIb2IgKExvd2VyTWVtb3J5U2l6ZSAtIFRzZWdTaXplLA0KPiBUc2VnU2l6ZSwNCj4gPiArICAg ICAgICBUUlVFKTsNCj4gPiArDQo+ID4gKwkgIEJ1ZmZlclNpemUgPSBzaXplb2YoRUZJX1NNUkFN X0hPQl9ERVNDUklQVE9SX0JMT0NLKTsNCj4gPiArCSAgU21yYW1SYW5nZXMgPSAxOw0KPiA+ICsN Cj4gPiArICAgICAgSG9iLlJhdyA9IEJ1aWxkR3VpZEhvYigNCj4gPiArICAgICAgICAgICZnRWZp U21tUGVpU21yYW1NZW1vcnlSZXNlcnZlR3VpZCwNCj4gPiArICAgICAgICAgIEJ1ZmZlclNpemUN Cj4gPiArICAgICAgKTsNCj4gPiArICAgICAgQVNTRVJUKEhvYi5SYXcpOw0KPiA+ICsNCj4gPiAr ICAgICAgU21yYW1Ib2JEZXNjcmlwdG9yQmxvY2sgPSAoRUZJX1NNUkFNX0hPQl9ERVNDUklQVE9S X0JMT0NLDQo+ID4gKikoSG9iLlJhdyk7DQo+ID4gKyAgICAgIFNtcmFtSG9iRGVzY3JpcHRvckJs b2NrLT5OdW1iZXJPZlNtbVJlc2VydmVkUmVnaW9ucyA9DQo+ID4gU21yYW1SYW5nZXM7DQo+ID4g Kw0KPiA+ICsgICAgICBTbXJhbUluZGV4ID0gMDsNCj4gPiArICAgICAgZm9yIChJbmRleCA9IDA7 IEluZGV4IDwgU21yYW1SYW5nZXM7IEluZGV4KyspIHsNCj4gPiArICAgICAgICAvLw0KPiA+ICsg ICAgICAgIC8vIFRoaXMgaXMgYW4gU01SQU0gcmFuZ2UsIGNyZWF0ZSBhbiBTTVJBTSBkZXNjcmlw dG9yDQo+ID4gKyAgICAgICAgLy8NCj4gPiArICAgICAgICBTbXJhbUhvYkRlc2NyaXB0b3JCbG9j ay0+RGVzY3JpcHRvcltTbXJhbUluZGV4XS5QaHlzaWNhbFN0YXJ0ID0NCj4gPiBMb3dlck1lbW9y eVNpemUgLSBUc2VnU2l6ZTsNCj4gPiArICAgICAgICBTbXJhbUhvYkRlc2NyaXB0b3JCbG9jay0+ RGVzY3JpcHRvcltTbXJhbUluZGV4XS5DcHVTdGFydCA9DQo+ID4gTG93ZXJNZW1vcnlTaXplIC0g VHNlZ1NpemU7DQo+ID4gKyAgICAgICAgU21yYW1Ib2JEZXNjcmlwdG9yQmxvY2stPkRlc2NyaXB0 b3JbU21yYW1JbmRleF0uUGh5c2ljYWxTaXplID0NCj4gPiBUc2VnU2l6ZTsNCj4gPiArICAgICAg ICBTbXJhbUhvYkRlc2NyaXB0b3JCbG9jay0+RGVzY3JpcHRvcltTbXJhbUluZGV4XS5SZWdpb25T dGF0ZSA9DQo+ID4gRUZJX1NNUkFNX0NMT1NFRCB8IEVGSV9DQUNIRUFCTEU7DQo+ID4gKyAgICAg ICAgU21yYW1JbmRleCsrOw0KPiA+ICsgICAgICB9DQo+ID4gKw0KPiA+ICsgICAgfSBlbHNlIHsN Cj4gPiArICAgICAgQWRkTWVtb3J5UmFuZ2VIb2IgKEJBU0VfMU1CLCBMb3dlck1lbW9yeVNpemUp Ow0KPiA+ICsgICAgfQ0KPiA+ICsNCj4gPiArICAgIC8vDQo+ID4gKyAgICAvLyBJZiBRRU1VIHBy ZXNlbnRzIGFuIEU4MjAgbWFwLCB0aGVuIGNyZWF0ZSBtZW1vcnkgSE9CcyBmb3IgdGhlDQo+ID49 NEdCDQo+ID4gUkFNDQo+ID4gKyAgICAvLyBlbnRyaWVzLiBPdGhlcndpc2UsIGNyZWF0ZSBhIHNp bmdsZSBtZW1vcnkgSE9CIHdpdGggdGhlIGZsYXQgPj00R0INCj4gPiArICAgIC8vIG1lbW9yeSBz aXplIHJlYWQgZnJvbSB0aGUgQ01PUy4NCj4gPiArICAgIC8vDQo+ID4gKyAgICBpZiAoVXBwZXJN ZW1vcnlTaXplICE9IDApIHsNCj4gPiArICAgICAgQWRkTWVtb3J5QmFzZVNpemVIb2IgKEJBU0Vf NEdCLCBVcHBlck1lbW9yeVNpemUpOw0KPiA+ICsgICAgfQ0KPiA+ICsgIH0NCj4gPiArfQ0KPiA+ ICsNCj4gPiArLyoqDQo+ID4gKyAgUHVibGlzaCBzeXN0ZW0gUkFNIGFuZCByZXNlcnZlIG1lbW9y eSByZWdpb25zDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArVk9JRA0KPiA+ICtJbml0aWFsaXplUmFt UmVnaW9ucyAoDQo+ID4gKyAgVk9JRA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIFFlbXVJbml0 aWFsaXplUmFtICgpOw0KPiA+ICsNCj4gPiArICBpZiAobVMzU3VwcG9ydGVkICYmIG1Cb290TW9k ZSAhPSBCT09UX09OX1MzX1JFU1VNRSkgew0KPiA+ICsgICAgLy8NCj4gPiArICAgIC8vIFRoaXMg aXMgdGhlIG1lbW9yeSByYW5nZSB0aGF0IHdpbGwgYmUgdXNlZCBmb3IgUEVJIG9uIFMzIHJlc3Vt ZQ0KPiA+ICsgICAgLy8NCj4gPiArICAgIEJ1aWxkTWVtb3J5QWxsb2NhdGlvbkhvYiAoDQo+ID4g KyAgICAgIG1TM0FjcGlSZXNlcnZlZE1lbW9yeUJhc2UsDQo+ID4gKyAgICAgIG1TM0FjcGlSZXNl cnZlZE1lbW9yeVNpemUsDQo+ID4gKyAgICAgIEVmaUFDUElNZW1vcnlOVlMNCj4gPiArICAgICAg KTsNCj4gPiArDQo+ID4gKyAgICAvLw0KPiA+ICsgICAgLy8gQ292ZXIgdGhlIGluaXRpYWwgUkFN IGFyZWEgdXNlZCBhcyBzdGFjayBhbmQgdGVtcG9yYXJ5IFBFSSBoZWFwLg0KPiA+ICsgICAgLy8N Cj4gPiArICAgIC8vIFRoaXMgaXMgcmVzZXJ2ZWQgYXMgQUNQSSBOVlMgc28gaXQgY2FuIGJlIHVz ZWQgb24gUzMgcmVzdW1lLg0KPiA+ICsgICAgLy8NCj4gPiArICAgIEJ1aWxkTWVtb3J5QWxsb2Nh dGlvbkhvYiAoDQo+ID4gKyAgICAgIFBjZEdldDMyIChQY2RTaW1pY3NTZWNQZWlUZW1wUmFtQmFz ZSksDQo+ID4gKyAgICAgIFBjZEdldDMyIChQY2RTaW1pY3NTZWNQZWlUZW1wUmFtU2l6ZSksDQo+ ID4gKyAgICAgIEVmaUFDUElNZW1vcnlOVlMNCj4gPiArICAgICAgKTsNCj4gPiArDQo+ID4gKyAg ICAvLw0KPiA+ICsgICAgLy8gU0VDIHN0b3JlcyBpdHMgdGFibGUgb2YgR1VJRGVkIHNlY3Rpb24g aGFuZGxlcnMgaGVyZS4NCj4gPiArICAgIC8vDQo+ID4gKyAgICBCdWlsZE1lbW9yeUFsbG9jYXRp b25Ib2IgKA0KPiA+ICsgICAgICBQY2RHZXQ2NCAoUGNkR3VpZGVkRXh0cmFjdEhhbmRsZXJUYWJs ZUFkZHJlc3MpLA0KPiA+ICsgICAgICBQY2RHZXQzMiAoUGNkR3VpZGVkRXh0cmFjdEhhbmRsZXJU YWJsZVNpemUpLA0KPiA+ICsgICAgICBFZmlBQ1BJTWVtb3J5TlZTDQo+ID4gKyAgICAgICk7DQo+ ID4gKw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgaWYgKG1Cb290TW9kZSAhPSBCT09UX09OX1Mz X1JFU1VNRSkgew0KPiA+ICsgICAgaWYgKCFGZWF0dXJlUGNkR2V0IChQY2RTbW1TbXJhbVJlcXVp cmUpKSB7DQo+ID4gKyAgICAgIC8vDQo+ID4gKyAgICAgIC8vIFJlc2VydmUgdGhlIGxvY2sgYm94 IHN0b3JhZ2UgYXJlYQ0KPiA+ICsgICAgICAvLw0KPiA+ICsgICAgICAvLyBTaW5jZSB0aGlzIG1l bW9yeSByYW5nZSB3aWxsIGJlIHVzZWQgb24gUzMgcmVzdW1lLCBpdCBtdXN0IGJlDQo+ID4gKyAg ICAgIC8vIHJlc2VydmVkIGFzIEFDUEkgTlZTLg0KPiA+ICsgICAgICAvLw0KPiA+ICsgICAgICAv LyBJZiBTMyBpcyB1bnN1cHBvcnRlZCwgdGhlbiB2YXJpb3VzIGRyaXZlcnMgbWlnaHQgc3RpbGwg d3JpdGUgdG8gdGhlDQo+ID4gKyAgICAgIC8vIExvY2tCb3ggYXJlYS4gV2Ugb3VnaHQgdG8gcHJl dmVudCBEWEUgZnJvbSBzZXJ2aW5nIGFsbG9jYXRpb24NCj4gcmVxdWVzdHMNCj4gPiArICAgICAg Ly8gc3VjaCB0aGF0IHRoZXkgd291bGQgb3ZlcmxhcCB0aGUgTG9ja0JveCBzdG9yYWdlLg0KPiA+ ICsgICAgICAvLw0KPiA+ICsgICAgICBaZXJvTWVtICgNCj4gPiArICAgICAgICAoVk9JRCopKFVJ TlROKSBQY2RHZXQzMiAoUGNkU2ltaWNzTG9ja0JveFN0b3JhZ2VCYXNlKSwNCj4gPiArICAgICAg ICAoVUlOVE4pIFBjZEdldDMyIChQY2RTaW1pY3NMb2NrQm94U3RvcmFnZVNpemUpDQo+ID4gKyAg ICAgICAgKTsNCj4gPiArICAgICAgQnVpbGRNZW1vcnlBbGxvY2F0aW9uSG9iICgNCj4gPiArICAg ICAgICAoRUZJX1BIWVNJQ0FMX0FERFJFU1MpKFVJTlROKSBQY2RHZXQzMg0KPiA+IChQY2RTaW1p Y3NMb2NrQm94U3RvcmFnZUJhc2UpLA0KPiA+ICsgICAgICAgIChVSU5UNjQpKFVJTlROKSBQY2RH ZXQzMiAoUGNkU2ltaWNzTG9ja0JveFN0b3JhZ2VTaXplKSwNCj4gPiArICAgICAgICBtUzNTdXBw b3J0ZWQgPyBFZmlBQ1BJTWVtb3J5TlZTIDogRWZpQm9vdFNlcnZpY2VzRGF0YQ0KPiA+ICsgICAg ICAgICk7DQo+ID4gKyAgICB9DQo+ID4gKw0KPiA+ICsgICAgaWYgKEZlYXR1cmVQY2RHZXQgKFBj ZFNtbVNtcmFtUmVxdWlyZSkpIHsNCj4gPiArICAgICAgVUlOVDMyIFRzZWdTaXplOw0KPiA+ICsN Cj4gPiArICAgICAgLy8NCj4gPiArICAgICAgLy8gTWFrZSBzdXJlIHRoZSBUU0VHIGFyZWEgdGhh dCB3ZSByZXBvcnRlZCBhcyBhIHJlc2VydmVkIG1lbW9yeQ0KPiA+IHJlc291cmNlDQo+ID4gKyAg ICAgIC8vIGNhbm5vdCBiZSB1c2VkIGZvciByZXNlcnZlZCBtZW1vcnkgYWxsb2NhdGlvbnMuDQo+ ID4gKyAgICAgIC8vDQo+ID4gKyAgICAgIFRzZWdTaXplID0gbVg1OFRzZWdNYnl0ZXMgKiBTSVpF XzFNQjsNCj4gPiArICAgICAgQnVpbGRNZW1vcnlBbGxvY2F0aW9uSG9iICgNCj4gPiArICAgICAg ICBHZXRTeXN0ZW1NZW1vcnlTaXplQmVsb3c0Z2IoKSAtIFRzZWdTaXplLA0KPiA+ICsgICAgICAg IFRzZWdTaXplLA0KPiA+ICsgICAgICAgIEVmaVJlc2VydmVkTWVtb3J5VHlwZQ0KPiA+ICsgICAg ICAgICk7DQo+ID4gKyAgICB9DQo+ID4gKyAgfQ0KPiA+ICt9DQo+ID4gZGlmZiAtLWdpdCBhL1Bs YXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9QbGF0Zm9ybVBlaS9QbGF0Zm9ybS5jDQo+ ID4gYi9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvUGxhdGZvcm1QZWkvUGxhdGZv cm0uYw0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMDAwMC4uZTY0 YmRjN2M1Ng0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9QbGF0Zm9ybS9JbnRlbC9TaW1p Y3NPcGVuQm9hcmRQa2cvUGxhdGZvcm1QZWkvUGxhdGZvcm0uYw0KPiA+IEBAIC0wLDAgKzEsNjMx IEBADQo+ID4gKy8qKiBAZmlsZQ0KPiA+ICsgIENvcHlyaWdodCAoYykgMjAwNiAtIDIwMTYsIElu dGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPiArICBDb3B5cmln aHQgKGMpIDIwMTEsIEFuZHJlaSBXYXJrZW50aW4gPGFuZHJlaXdAbW90b3JvbGEuY29tPg0KPiA+ ICsNCj4gPiArICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0K PiA+ICsqKi8NCj4gPiArDQo+ID4gKy8vDQo+ID4gKy8vIFRoZSBwYWNrYWdlIGxldmVsIGhlYWRl ciBmaWxlcyB0aGlzIG1vZHVsZSB1c2VzDQo+ID4gKy8vDQo+ID4gKyNpbmNsdWRlIDxQaVBlaS5o Pg0KPiA+ICsNCj4gPiArLy8NCj4gPiArLy8gVGhlIExpYnJhcnkgY2xhc3NlcyB0aGlzIG1vZHVs ZSBjb25zdW1lcw0KPiA+ICsvLw0KPiA+ICsjaW5jbHVkZSA8TGlicmFyeS9EZWJ1Z0xpYi5oPg0K PiA+ICsjaW5jbHVkZSA8TGlicmFyeS9Ib2JMaWIuaD4NCj4gPiArI2luY2x1ZGUgPExpYnJhcnkv SW9MaWIuaD4NCj4gPiArI2luY2x1ZGUgPExpYnJhcnkvTWVtb3J5QWxsb2NhdGlvbkxpYi5oPg0K PiA+ICsjaW5jbHVkZSA8TGlicmFyeS9QY2RMaWIuaD4NCj4gPiArI2luY2x1ZGUgPExpYnJhcnkv UGNpTGliLmg+DQo+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L1BlaW1FbnRyeVBvaW50Lmg+DQo+ID4g KyNpbmNsdWRlIDxMaWJyYXJ5L1BlaVNlcnZpY2VzTGliLmg+DQo+ID4gKyNpbmNsdWRlIDxMaWJy YXJ5L1Jlc291cmNlUHVibGljYXRpb25MaWIuaD4NCj4gPiArI2luY2x1ZGUgPEd1aWQvTWVtb3J5 VHlwZUluZm9ybWF0aW9uLmg+DQo+ID4gKyNpbmNsdWRlIDxQcGkvTWFzdGVyQm9vdE1vZGUuaD4N Cj4gPiArI2luY2x1ZGUgPEluZHVzdHJ5U3RhbmRhcmQvUGNpMjIuaD4NCj4gPiArI2luY2x1ZGUg PFNpbWljc1BsYXRmb3Jtcy5oPg0KPiA+ICsNCj4gPiArI2luY2x1ZGUgIlBsYXRmb3JtLmgiDQo+ ID4gKyNpbmNsdWRlICJDbW9zLmgiDQo+ID4gKw0KPiA+ICtFRklfTUVNT1JZX1RZUEVfSU5GT1JN QVRJT04gbURlZmF1bHRNZW1vcnlUeXBlSW5mb3JtYXRpb25bXSA9IHsNCj4gPiArICB7IEVmaUFD UElNZW1vcnlOVlMsICAgICAgIDB4MDA0IH0sDQo+ID4gKyAgeyBFZmlBQ1BJUmVjbGFpbU1lbW9y eSwgICAweDAwOCB9LA0KPiA+ICsgIHsgRWZpUmVzZXJ2ZWRNZW1vcnlUeXBlLCAgMHgwMDQgfSwN Cj4gPiArICB7IEVmaVJ1bnRpbWVTZXJ2aWNlc0RhdGEsIDB4MDI0IH0sDQo+ID4gKyAgeyBFZmlS dW50aW1lU2VydmljZXNDb2RlLCAweDAzMCB9LA0KPiA+ICsgIHsgRWZpQm9vdFNlcnZpY2VzQ29k ZSwgICAgMHgxODAgfSwNCj4gPiArICB7IEVmaUJvb3RTZXJ2aWNlc0RhdGEsICAgIDB4RjAwIH0s DQo+ID4gKyAgeyBFZmlNYXhNZW1vcnlUeXBlLCAgICAgICAweDAwMCB9DQo+ID4gK307DQo+ID4g Kw0KPiA+ICsNCj4gPiArRUZJX1BFSV9QUElfREVTQ1JJUFRPUiAgIG1QcGlCb290TW9kZVtdID0g ew0KPiA+ICsgIHsNCj4gPiArICAgIEVGSV9QRUlfUFBJX0RFU0NSSVBUT1JfUFBJIHwNCj4gPiBF RklfUEVJX1BQSV9ERVNDUklQVE9SX1RFUk1JTkFURV9MSVNULA0KPiA+ICsgICAgJmdFZmlQZWlN YXN0ZXJCb290TW9kZVBwaUd1aWQsDQo+ID4gKyAgICBOVUxMDQo+ID4gKyAgfQ0KPiA+ICt9Ow0K PiA+ICsNCj4gPiArDQo+ID4gK1VJTlQxNiBtSG9zdEJyaWRnZURldklkOw0KPiA+ICsNCj4gPiAr RUZJX0JPT1RfTU9ERSBtQm9vdE1vZGUgPSBCT09UX1dJVEhfRlVMTF9DT05GSUdVUkFUSU9OOw0K PiA+ICsNCj4gPiArQk9PTEVBTiBtUzNTdXBwb3J0ZWQgPSBGQUxTRTsNCj4gPiArDQo+ID4gK1VJ TlQzMiBtTWF4Q3B1Q291bnQ7DQo+ID4gKw0KPiA+ICtWT0lEDQo+ID4gK0FkZElvTWVtb3J5QmFz ZVNpemVIb2IgKA0KPiA+ICsgIEVGSV9QSFlTSUNBTF9BRERSRVNTICAgICAgICBNZW1vcnlCYXNl LA0KPiA+ICsgIFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgICBNZW1vcnlTaXplDQo+ID4gKyAg KQ0KPiA+ICt7DQo+ID4gKyAgQnVpbGRSZXNvdXJjZURlc2NyaXB0b3JIb2IgKA0KPiA+ICsgICAg RUZJX1JFU09VUkNFX01FTU9SWV9NQVBQRURfSU8sDQo+ID4gKyAgICAgIEVGSV9SRVNPVVJDRV9B VFRSSUJVVEVfUFJFU0VOVCAgICAgfA0KPiA+ICsgICAgICBFRklfUkVTT1VSQ0VfQVRUUklCVVRF X0lOSVRJQUxJWkVEIHwNCj4gPiArICAgICAgRUZJX1JFU09VUkNFX0FUVFJJQlVURV9VTkNBQ0hF QUJMRSB8DQo+ID4gKyAgICAgIEVGSV9SRVNPVVJDRV9BVFRSSUJVVEVfVEVTVEVELA0KPiA+ICsg ICAgTWVtb3J5QmFzZSwNCj4gPiArICAgIE1lbW9yeVNpemUNCj4gPiArICAgICk7DQo+ID4gK30N Cj4gPiArDQo+ID4gK1ZPSUQNCj4gPiArQWRkUmVzZXJ2ZWRNZW1vcnlCYXNlU2l6ZUhvYiAoDQo+ ID4gKyAgRUZJX1BIWVNJQ0FMX0FERFJFU1MgICAgICAgIE1lbW9yeUJhc2UsDQo+ID4gKyAgVUlO VDY0ICAgICAgICAgICAgICAgICAgICAgIE1lbW9yeVNpemUsDQo+ID4gKyAgQk9PTEVBTiAgICAg ICAgICAgICAgICAgICAgIENhY2hlYWJsZQ0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIEJ1aWxk UmVzb3VyY2VEZXNjcmlwdG9ySG9iICgNCj4gPiArICAgIEVGSV9SRVNPVVJDRV9NRU1PUllfUkVT RVJWRUQsDQo+ID4gKyAgICAgIEVGSV9SRVNPVVJDRV9BVFRSSUJVVEVfUFJFU0VOVCAgICAgfA0K PiA+ICsgICAgICBFRklfUkVTT1VSQ0VfQVRUUklCVVRFX0lOSVRJQUxJWkVEIHwNCj4gPiArICAg ICAgRUZJX1JFU09VUkNFX0FUVFJJQlVURV9VTkNBQ0hFQUJMRSB8DQo+ID4gKyAgICAgIChDYWNo ZWFibGUgPw0KPiA+ICsgICAgICAgRUZJX1JFU09VUkNFX0FUVFJJQlVURV9XUklURV9DT01CSU5F QUJMRSB8DQo+ID4gKyAgICAgICBFRklfUkVTT1VSQ0VfQVRUUklCVVRFX1dSSVRFX1RIUk9VR0hf Q0FDSEVBQkxFIHwNCj4gPiArICAgICAgIEVGSV9SRVNPVVJDRV9BVFRSSUJVVEVfV1JJVEVfQkFD S19DQUNIRUFCTEUgOg0KPiA+ICsgICAgICAgMA0KPiA+ICsgICAgICAgKSB8DQo+ID4gKyAgICAg IEVGSV9SRVNPVVJDRV9BVFRSSUJVVEVfVEVTVEVELA0KPiA+ICsgICAgTWVtb3J5QmFzZSwNCj4g PiArICAgIE1lbW9yeVNpemUNCj4gPiArICAgICk7DQo+ID4gK30NCj4gPiArDQo+ID4gK1ZPSUQN Cj4gPiArQWRkSW9NZW1vcnlSYW5nZUhvYiAoDQo+ID4gKyAgRUZJX1BIWVNJQ0FMX0FERFJFU1Mg ICAgICAgIE1lbW9yeUJhc2UsDQo+ID4gKyAgRUZJX1BIWVNJQ0FMX0FERFJFU1MgICAgICAgIE1l bW9yeUxpbWl0DQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgQWRkSW9NZW1vcnlCYXNlU2l6ZUhv YiAoTWVtb3J5QmFzZSwgKFVJTlQ2NCkoTWVtb3J5TGltaXQgLQ0KPiA+IE1lbW9yeUJhc2UpKTsN Cj4gPiArfQ0KPiA+ICsNCj4gPiArDQo+ID4gK1ZPSUQNCj4gPiArQWRkTWVtb3J5QmFzZVNpemVI b2IgKA0KPiA+ICsgIEVGSV9QSFlTSUNBTF9BRERSRVNTICAgICAgICBNZW1vcnlCYXNlLA0KPiA+ ICsgIFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgICBNZW1vcnlTaXplDQo+ID4gKyAgKQ0KPiA+ ICt7DQo+ID4gKyAgQnVpbGRSZXNvdXJjZURlc2NyaXB0b3JIb2IgKA0KPiA+ICsgICAgRUZJX1JF U09VUkNFX1NZU1RFTV9NRU1PUlksDQo+ID4gKyAgICAgIEVGSV9SRVNPVVJDRV9BVFRSSUJVVEVf UFJFU0VOVCB8DQo+ID4gKyAgICAgIEVGSV9SRVNPVVJDRV9BVFRSSUJVVEVfSU5JVElBTElaRUQg fA0KPiA+ICsgICAgICBFRklfUkVTT1VSQ0VfQVRUUklCVVRFX1VOQ0FDSEVBQkxFIHwNCj4gPiAr ICAgICAgRUZJX1JFU09VUkNFX0FUVFJJQlVURV9XUklURV9DT01CSU5FQUJMRSB8DQo+ID4gKyAg ICAgIEVGSV9SRVNPVVJDRV9BVFRSSUJVVEVfV1JJVEVfVEhST1VHSF9DQUNIRUFCTEUgfA0KPiA+ ICsgICAgICBFRklfUkVTT1VSQ0VfQVRUUklCVVRFX1dSSVRFX0JBQ0tfQ0FDSEVBQkxFIHwNCj4g PiArICAgICAgRUZJX1JFU09VUkNFX0FUVFJJQlVURV9URVNURUQsDQo+ID4gKyAgICBNZW1vcnlC YXNlLA0KPiA+ICsgICAgTWVtb3J5U2l6ZQ0KPiA+ICsgICAgKTsNCj4gPiArfQ0KPiA+ICsNCj4g PiArDQo+ID4gK1ZPSUQNCj4gPiArQWRkTWVtb3J5UmFuZ2VIb2IgKA0KPiA+ICsgIEVGSV9QSFlT SUNBTF9BRERSRVNTICAgICAgICBNZW1vcnlCYXNlLA0KPiA+ICsgIEVGSV9QSFlTSUNBTF9BRERS RVNTICAgICAgICBNZW1vcnlMaW1pdA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIEFkZE1lbW9y eUJhc2VTaXplSG9iIChNZW1vcnlCYXNlLCAoVUlOVDY0KShNZW1vcnlMaW1pdCAtDQo+ID4gTWVt b3J5QmFzZSkpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsNCj4gPiArVk9JRA0KPiA+ICtBZGRVbnRl c3RlZE1lbW9yeUJhc2VTaXplSG9iICgNCj4gPiArICBFRklfUEhZU0lDQUxfQUREUkVTUyAgICAg ICAgTWVtb3J5QmFzZSwNCj4gPiArICBVSU5UNjQgICAgICAgICAgICAgICAgICAgICAgTWVtb3J5 U2l6ZQ0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIEJ1aWxkUmVzb3VyY2VEZXNjcmlwdG9ySG9i ICgNCj4gPiArICAgIEVGSV9SRVNPVVJDRV9TWVNURU1fTUVNT1JZLA0KPiA+ICsgICAgICBFRklf UkVTT1VSQ0VfQVRUUklCVVRFX1BSRVNFTlQgfA0KPiA+ICsgICAgICBFRklfUkVTT1VSQ0VfQVRU UklCVVRFX0lOSVRJQUxJWkVEIHwNCj4gPiArICAgICAgRUZJX1JFU09VUkNFX0FUVFJJQlVURV9V TkNBQ0hFQUJMRSB8DQo+ID4gKyAgICAgIEVGSV9SRVNPVVJDRV9BVFRSSUJVVEVfV1JJVEVfQ09N QklORUFCTEUgfA0KPiA+ICsgICAgICBFRklfUkVTT1VSQ0VfQVRUUklCVVRFX1dSSVRFX1RIUk9V R0hfQ0FDSEVBQkxFIHwNCj4gPiArICAgICAgRUZJX1JFU09VUkNFX0FUVFJJQlVURV9XUklURV9C QUNLX0NBQ0hFQUJMRSwNCj4gPiArICAgIE1lbW9yeUJhc2UsDQo+ID4gKyAgICBNZW1vcnlTaXpl DQo+ID4gKyAgICApOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsNCj4gPiArVk9JRA0KPiA+ICtBZGRV bnRlc3RlZE1lbW9yeVJhbmdlSG9iICgNCj4gPiArICBFRklfUEhZU0lDQUxfQUREUkVTUyAgICAg ICAgTWVtb3J5QmFzZSwNCj4gPiArICBFRklfUEhZU0lDQUxfQUREUkVTUyAgICAgICAgTWVtb3J5 TGltaXQNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBBZGRVbnRlc3RlZE1lbW9yeUJhc2VTaXpl SG9iIChNZW1vcnlCYXNlLCAoVUlOVDY0KShNZW1vcnlMaW1pdCAtDQo+ID4gTWVtb3J5QmFzZSkp Ow0KPiA+ICt9DQo+ID4gKw0KPiA+ICtWT0lEDQo+ID4gK0FkZEZsYXNoRGV2aWNlUmFuZ2UgKA0K PiA+ICsgIEVGSV9QSFlTSUNBTF9BRERSRVNTICAgICAgICBNZW1vcnlCYXNlLA0KPiA+ICsgIFVJ TlQ2NCAgICAgICAgICAgICAgICAgICAgICBNZW1vcnlTaXplDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ ID4gKyAgQnVpbGRSZXNvdXJjZURlc2NyaXB0b3JIb2IgKA0KPiA+ICsgICAgRUZJX1JFU09VUkNF X0ZJUk1XQVJFX0RFVklDRSwNCj4gPiArICAgIChFRklfUkVTT1VSQ0VfQVRUUklCVVRFX1BSRVNF TlQgICAgfA0KPiA+ICsgICAgICBFRklfUkVTT1VSQ0VfQVRUUklCVVRFX0lOSVRJQUxJWkVEIHwN Cj4gPiArICAgICAgRUZJX1JFU09VUkNFX0FUVFJJQlVURV9VTkNBQ0hFQUJMRSksDQo+ID4gKyAg ICBNZW1vcnlCYXNlLA0KPiA+ICsgICAgTWVtb3J5U2l6ZQ0KPiA+ICsgICAgKTsNCj4gPiArDQo+ ID4gKyAgQnVpbGRNZW1vcnlBbGxvY2F0aW9uSG9iICgNCj4gPiArICAgIE1lbW9yeUJhc2UsDQo+ ID4gKyAgICBNZW1vcnlTaXplLA0KPiA+ICsgICAgRWZpTWVtb3J5TWFwcGVkSU8NCj4gPiArICAg ICk7DQo+ID4gK30NCj4gPiArDQo+ID4gK1ZPSUQNCj4gPiArTWVtTWFwSW5pdGlhbGl6YXRpb24g KA0KPiA+ICsgIFZPSUQNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBVSU5UNjQgUGNpSW9CYXNl Ow0KPiA+ICsgIFVJTlQ2NCBQY2lJb1NpemU7DQo+ID4gKw0KPiA+ICsgIFVJTlQzMiAgVG9wT2ZM b3dSYW07DQo+ID4gKyAgVUlOVDY0ICBQY2lFeEJhckJhc2U7DQo+ID4gKyAgVUlOVDMyICBQY2lC YXNlOw0KPiA+ICsgIFVJTlQzMiAgUGNpU2l6ZTsNCj4gPiArDQo+ID4gKyAgUGNpSW9CYXNlID0g MHhDMDAwOw0KPiA+ICsgIFBjaUlvU2l6ZSA9IDB4NDAwMDsNCj4gPiArDQo+ID4gKyAgLy8NCj4g PiArICAvLyBDcmVhdGUgTWVtb3J5IFR5cGUgSW5mb3JtYXRpb24gSE9CDQo+ID4gKyAgLy8NCj4g PiArICBCdWlsZEd1aWREYXRhSG9iICgNCj4gPiArICAgICZnRWZpTWVtb3J5VHlwZUluZm9ybWF0 aW9uR3VpZCwNCj4gPiArICAgIG1EZWZhdWx0TWVtb3J5VHlwZUluZm9ybWF0aW9uLA0KPiA+ICsg ICAgc2l6ZW9mKG1EZWZhdWx0TWVtb3J5VHlwZUluZm9ybWF0aW9uKQ0KPiA+ICsgICAgKTsNCj4g PiArDQo+ID4gKyAgLy8NCj4gPiArICAvLyBWaWRlbyBtZW1vcnkgKyBMZWdhY3kgQklPUyByZWdp b24NCj4gPiArICAvLw0KPiA+ICsgIEFkZElvTWVtb3J5UmFuZ2VIb2IgKDB4MEEwMDAwLCBCQVNF XzFNQik7DQo+ID4gKw0KPiA+ICsgIFRvcE9mTG93UmFtID0gR2V0U3lzdGVtTWVtb3J5U2l6ZUJl bG93NGdiICgpOw0KPiA+ICsgIFBjaUV4QmFyQmFzZSA9IDA7DQo+ID4gKyAgaWYgKG1Ib3N0QnJp ZGdlRGV2SWQgPT0gSU5URUxfSUNIMTBfREVWSUNFX0lEKSB7DQo+ID4gKyAgICAvLw0KPiA+ICsg ICAgLy8gVGhlIE1NQ09ORklHIGFyZWEgaXMgZXhwZWN0ZWQgdG8gZmFsbCBiZXR3ZWVuIHRoZSB0 b3Agb2YgbG93IFJBTSBhbmQNCj4gPiArICAgIC8vIHRoZSBiYXNlIG9mIHRoZSAzMi1iaXQgUENJ IGhvc3QgYXBlcnR1cmUuDQo+ID4gKyAgICAvLw0KPiA+ICsgICAgUGNpRXhCYXJCYXNlID0gRml4 ZWRQY2RHZXQ2NCAoUGNkUGNpRXhwcmVzc0Jhc2VBZGRyZXNzKTsNCj4gPiArICAgIEFTU0VSVCAo VG9wT2ZMb3dSYW0gPD0gUGNpRXhCYXJCYXNlKTsNCj4gPiArICAgIEFTU0VSVCAoUGNpRXhCYXJC YXNlIDw9IE1BWF9VSU5UMzIgLSBTSVpFXzI1Nk1CKTsNCj4gPiArICAgIFBjaUJhc2UgPSAoVUlO VDMyKShQY2lFeEJhckJhc2UgKyBTSVpFXzI1Nk1CKTsNCj4gPiArICB9IGVsc2Ugew0KPiA+ICsg ICAgUGNpQmFzZSA9IChUb3BPZkxvd1JhbSA8IEJBU0VfMkdCKSA/IEJBU0VfMkdCIDogVG9wT2ZM b3dSYW07DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICAvLw0KPiA+ICsgIC8vIGFkZHJlc3MgICAg ICAgcHVycG9zZSAgIHNpemUNCj4gPiArICAvLyAtLS0tLS0tLS0tLS0gIC0tLS0tLS0tICAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ID4gKyAgLy8gMHgwMDAwMDAwMCAgICBUb3BPZkxvd1Jh bSAgIDB4REYwMDAwMDANCj4gPiArICAvLyAweERGMDAwMDAwICAgIFRzZWcrVU1BICAgICAgMHgw MTAwMDAwMA0KPiA+ICsgIC8vIDB4RTAwMDAwMDAgICAgUGNpRXhCYXJCYXNlICAweDEwMDAwMDAw DQo+ID4gKyAgLy8gMHhGMDAwMDAwMCAgICBQY2lCYXNlICAgICAgIDB4MEMwMDAwMDANCj4gPiAr ICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ ID4gKyAgLy8gbWF4KHRvcCwgMmcpICBQQ0kgTU1JTyAgMHhGQzAwMDAwMCAtIG1heCh0b3AsIDJn KQ0KPiA+ICsgIC8vIDB4RkMwMDAwMDAgICAgZ2FwICAgICAgICAgICAgICAgICAgICAgICAgICAg NDQgTUINCj4gPiArICAvLyAweEZFQzAwMDAwICAgIElPLUFQSUMgICAgICAgICAgICAgICAgICAg ICAgICA0IEtCDQo+ID4gKyAgLy8gMHhGRUMwMTAwMCAgICBnYXAgICAgICAgICAgICAgICAgICAg ICAgICAgMTAyMCBLQg0KPiA+ICsgIC8vIDB4RkVEMDAwMDAgICAgSFBFVCAgICAgICAgICAgICAg ICAgICAgICAgICAgIDEgS0INCj4gPiArICAvLyAweEZFRDAwNDAwICAgIGdhcCAgICAgICAgICAg ICAgICAgICAgICAgICAgMTExIEtCDQo+ID4gKyAgLy8gMHhGRUQxQzAwMCAgICBnYXAgKFBJSVg0 KSAvIFJDUkIgKElDSDkpICAgICAxNiBLQg0KPiA+ICsgIC8vIDB4RkVEMjAwMDAgICAgZ2FwICAg ICAgICAgICAgICAgICAgICAgICAgICA4OTYgS0INCj4gPiArICAvLyAweEZFRTAwMDAwICAgIExB UElDICAgICAgICAgICAgICAgICAgICAgICAgICAxIE1CDQo+ID4gKyAgLy8NCj4gPiArICBQY2lT aXplID0gMHhGQzAwMDAwMCAtIFBjaUJhc2U7DQo+ID4gKyAgQWRkSW9NZW1vcnlCYXNlU2l6ZUhv YiAoUGNpQmFzZSwgUGNpU2l6ZSk7DQo+ID4gKyAgUGNkU2V0NjQgKFBjZFBjaU1taW8zMkJhc2Us IFBjaUJhc2UpOw0KPiA+ICsgIFBjZFNldDY0IChQY2RQY2lNbWlvMzJTaXplLCBQY2lTaXplKTsN Cj4gPiArICBBZGRJb01lbW9yeUJhc2VTaXplSG9iICgweEZFQzAwMDAwLCBTSVpFXzRLQik7DQo+ ID4gKyAgQWRkSW9NZW1vcnlCYXNlU2l6ZUhvYiAoMHhGRUQwMDAwMCwgU0laRV8xS0IpOw0KPiA+ ICsgIGlmIChtSG9zdEJyaWRnZURldklkID09IElOVEVMX0lDSDEwX0RFVklDRV9JRCkgew0KPiA+ ICsgICAgQWRkSW9NZW1vcnlCYXNlU2l6ZUhvYiAoSUNIMTBfUk9PVF9DT01QTEVYX0JBU0UsIFNJ WkVfMTZLQik7DQo+ID4gKyAgICAvLw0KPiA+ICsgICAgLy8gTm90ZTogdGhlcmUgc2hvdWxkIGJl IGFuDQo+ID4gKyAgICAvLw0KPiA+ICsgICAgLy8gICBBZGRJb01lbW9yeUJhc2VTaXplSG9iIChQ Y2lFeEJhckJhc2UsIFNJWkVfMjU2TUIpOw0KPiA+ICsgICAgLy8gICBCdWlsZE1lbW9yeUFsbG9j YXRpb25Ib2IgKFBjaUV4QmFyQmFzZSwgU0laRV8yNTZNQiwNCj4gPiBFZmlNZW1vcnlNYXBwZWRJ Tyk7DQo+ID4gKyAgICAvLw0KPiA+ICsgICAgLy8gY2FsbCBiZWxvdywganVzdCBsaWtlIHRoZSBv bmUgYWJvdmUgZm9yIFJDQkEuIEhvd2V2ZXIsIExpbnV4IGluc2lzdHMNCj4gPiArICAgIC8vIHRo YXQgdGhlIE1NQ09ORklHIGFyZWEgYmUgbWFya2VkIGluIHRoZSBFODIwIG9yIFVFRkkgbWVtb3J5 IG1hcA0KPiBhcw0KPiA+ICsgICAgLy8gInJlc2VydmVkIG1lbW9yeSIgLS0gTGludXggZG9lcyBu b3QgY29udGVudCBpdHNlbGYgd2l0aCBhIHNpbXBsZSBnYXANCj4gPiArICAgIC8vIGluIHRoZSBt ZW1vcnkgbWFwIHdoZXJldmVyIHRoZSBNQ0ZHIEFDUEkgdGFibGUgcG9pbnRzIHRvLg0KPiA+ICsg ICAgLy8NCj4gPiArICAgIC8vIFRoaXMgYXBwZWFycyB0byBiZSBhIHNhZmV0eSBtZWFzdXJlLiBU aGUgUENJIEZpcm13YXJlIFNwZWNpZmljYXRpb24NCj4gPiArICAgIC8vIChyZXYgMy4xKSBzYXlz IGluIDQuMS4yLiAiTUNGRyBUYWJsZSBEZXNjcmlwdGlvbiI6ICJUaGUgcmVzb3VyY2VzIGNhbg0K PiA+ICsgICAgLy8gKm9wdGlvbmFsbHkqIGJlIHJldHVybmVkIGluIFsuLi5dIEVGSUdldE1lbW9y eU1hcCBhcyByZXNlcnZlZA0KPiBtZW1vcnkNCj4gPiArICAgIC8vIFsuLi5dIi4gKEVtcGhhc2lz IGFkZGVkIGhlcmUuKQ0KPiA+ICsgICAgLy8NCj4gPiArICAgIC8vIE5vcm1hbGx5IHdlIGFkZCBt ZW1vcnkgcmVzb3VyY2UgZGVzY3JpcHRvciBIT0JzIGluDQo+ID4gKyAgICAvLyBRZW11SW5pdGlh bGl6ZVJhbSgpLCBhbmQgcHJlLWFsbG9jYXRlIGZyb20gdGhvc2Ugd2l0aCBtZW1vcnkNCj4gPiAr ICAgIC8vIGFsbG9jYXRpb24gSE9CcyBpbiBJbml0aWFsaXplUmFtUmVnaW9ucygpLiBIb3dldmVy LCB0aGUgTU1DT05GSUcNCj4gYXJlYQ0KPiA+ICsgICAgLy8gaXMgbW9zdCBkZWZpbml0ZWx5IG5v dCBSQU07IHNvLCBhcyBhbiBleGNlcHRpb24sIGNvdmVyIGl0IHdpdGgNCj4gPiArICAgIC8vIHVu Y2FjaGVhYmxlIHJlc2VydmVkIG1lbW9yeSByaWdodCBoZXJlLg0KPiA+ICsgICAgLy8NCj4gPiAr ICAgICAgQWRkUmVzZXJ2ZWRNZW1vcnlCYXNlU2l6ZUhvYiAoUGNpRXhCYXJCYXNlLCBTSVpFXzI1 Nk1CLCBGQUxTRSk7DQo+ID4gKyAgICAgIEJ1aWxkTWVtb3J5QWxsb2NhdGlvbkhvYiAoUGNpRXhC YXJCYXNlLCBTSVpFXzI1Nk1CLA0KPiA+ICsgICAgICAgIEVmaVJlc2VydmVkTWVtb3J5VHlwZSk7 DQo+ID4gKyAgfQ0KPiA+ICsgIEFkZElvTWVtb3J5QmFzZVNpemVIb2IgKFBjZEdldDMyKFBjZENw dUxvY2FsQXBpY0Jhc2VBZGRyZXNzKSwNCj4gPiBTSVpFXzFNQik7DQo+ID4gKw0KPiA+ICsgIC8v IEFkZCBQQ0kgSU8gUG9ydCBzcGFjZSBhdmFpbGFibGUgZm9yIFBDSSByZXNvdXJjZSBhbGxvY2F0 aW9ucy4NCj4gPiArICAvLw0KPiA+ICsgIEJ1aWxkUmVzb3VyY2VEZXNjcmlwdG9ySG9iICgNCj4g PiArICAgIEVGSV9SRVNPVVJDRV9JTywNCj4gPiArICAgIEVGSV9SRVNPVVJDRV9BVFRSSUJVVEVf UFJFU0VOVCAgICAgfA0KPiA+ICsgICAgRUZJX1JFU09VUkNFX0FUVFJJQlVURV9JTklUSUFMSVpF RCwNCj4gPiArICAgIFBjaUlvQmFzZSwNCj4gPiArICAgIFBjaUlvU2l6ZQ0KPiA+ICsgICAgKTsN Cj4gPiArICBQY2RTZXQ2NCAoUGNkUGNpSW9CYXNlLCBQY2lJb0Jhc2UpOw0KPiA+ICsgIFBjZFNl dDY0IChQY2RQY2lJb1NpemUsIFBjaUlvU2l6ZSk7DQo+ID4gKw0KPiA+ICsgIC8vDQo+ID4gKyAg Ly8gQWRkIGZsYXNoIHJhbmdlLg0KPiA+ICsgIC8vDQo+ID4gKyAgQWRkRmxhc2hEZXZpY2VSYW5n ZSAoUGNkR2V0MzIoUGNkRmxhc2hBcmVhQmFzZUFkZHJlc3MpLA0KPiA+IFBjZEdldDMyKFBjZEZs YXNoQXJlYVNpemUpKTsNCj4gPiArICAvLw0KPiA+ICsgIC8vIFZpZGVvIG1lbW9yeSAvIEFCU0VH DQo+ID4gKyAgLy8NCj4gPiArICBBZGRJb01lbW9yeUJhc2VTaXplSG9iICgweDBBMDAwMCwgMHgy MDAwMCk7DQo+ID4gKyAgLy8NCj4gPiArICAvLyBMZWdhY3kgQklPUyByZWdpb24uDQo+ID4gKyAg Ly8NCj4gPiArICBBZGRSZXNlcnZlZE1lbW9yeUJhc2VTaXplSG9iICgweEMwMDAwLCAweDQwMDAw LCBUUlVFKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArVk9JRA0KPiA+ICtNaXNjSW5pdGlhbGl6YXRp b24gKA0KPiA+ICsgIFZPSUQNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBVSU5UTiAgICAgICAg IFBtQ21kOw0KPiA+ICsgIFVJTlROICAgICAgICAgUG1iYTsNCj4gPiArICBVSU5UMzIgICAgICAg IFBtYmFBbmRWYWw7DQo+ID4gKyAgVUlOVDMyICAgICAgICBQbWJhT3JWYWw7DQo+ID4gKyAgVUlO VE4gICAgICAgICBBY3BpQ3RsUmVnOw0KPiA+ICsgIFVJTlQ4ICAgICAgICAgQWNwaUVuQml0Ow0K PiA+ICsNCj4gPiArICAvLw0KPiA+ICsgIC8vIERpc2FibGUgQTIwIE1hc2sNCj4gPiArICAvLw0K PiA+ICsgIElvT3I4ICgweDkyLCBCSVQxKTsNCj4gPiArDQo+ID4gKyAgLy8NCj4gPiArICAvLyBC dWlsZCB0aGUgQ1BVIEhPQiB3aXRoIGd1ZXN0IFJBTSBzaXplIGRlcGVuZGVudCBhZGRyZXNzIHdp ZHRoIGFuZCAxNi0NCj4gPiBiaXRzDQo+ID4gKyAgLy8gb2YgSU8gc3BhY2UuIChTaWRlIG5vdGU6 IHVubGlrZSBvdGhlciBIT0JzLCB0aGUgQ1BVIEhPQiBpcyBuZWVkZWQgZHVyaW5nDQo+ID4gKyAg Ly8gUzMgcmVzdW1lIGFzIHdlbGwsIHNvIHdlIGJ1aWxkIGl0IHVuY29uZGl0aW9uYWxseS4pDQo+ ID4gKyAgLy8NCj4gPiArICBCdWlsZENwdUhvYiAobVBoeXNNZW1BZGRyZXNzV2lkdGgsIDE2KTsN Cj4gPiArDQo+ID4gKyAgLy8NCj4gPiArICAvLyBEZXRlcm1pbmUgcGxhdGZvcm0gdHlwZSBhbmQg c2F2ZSBIb3N0IEJyaWRnZSBESUQgdG8gUENEDQo+ID4gKyAgLy8NCj4gPiArICBzd2l0Y2ggKG1I b3N0QnJpZGdlRGV2SWQpIHsNCj4gPiArICAgIGNhc2UgSU5URUxfODI0NDFfREVWSUNFX0lEOg0K PiA+ICsgICAgICBQbUNtZCAgICAgID0gUE9XRVJfTUdNVF9SRUdJU1RFUl9QSUlYNA0KPiAoUENJ X0NPTU1BTkRfT0ZGU0VUKTsNCj4gPiArICAgICAgUG1iYSAgICAgICA9IFBPV0VSX01HTVRfUkVH SVNURVJfUElJWDQgKFBJSVg0X1BNQkEpOw0KPiA+ICsgICAgICBQbWJhQW5kVmFsID0gfihVSU5U MzIpUElJWDRfUE1CQV9NQVNLOw0KPiA+ICsgICAgICBQbWJhT3JWYWwgID0gUElJWDRfUE1CQV9W QUxVRTsNCj4gPiArICAgICAgQWNwaUN0bFJlZyA9IFBPV0VSX01HTVRfUkVHSVNURVJfUElJWDQg KFBJSVg0X1BNUkVHTUlTQyk7DQo+ID4gKyAgICAgIEFjcGlFbkJpdCAgPSBQSUlYNF9QTVJFR01J U0NfUE1JT1NFOw0KPiA+ICsgICAgICBicmVhazsNCj4gPiArICAgIGNhc2UgSU5URUxfSUNIMTBf REVWSUNFX0lEOg0KPiA+ICsgICAgICBQbUNtZCAgICAgID0gUE9XRVJfTUdNVF9SRUdJU1RFUl9J Q0gxMA0KPiAoUENJX0NPTU1BTkRfT0ZGU0VUKTsNCj4gPiArICAgICAgUG1iYSAgICAgICA9IFBP V0VSX01HTVRfUkVHSVNURVJfSUNIMTAgKElDSDEwX1BNQkFTRSk7DQo+ID4gKyAgICAgIFBtYmFB bmRWYWwgPSB+KFVJTlQzMilJQ0gxMF9QTUJBU0VfTUFTSzsNCj4gPiArICAgICAgUG1iYU9yVmFs ICA9IElDSDEwX1BNQkFTRV9WQUxVRTsNCj4gPiArICAgICAgQWNwaUN0bFJlZyA9IFBPV0VSX01H TVRfUkVHSVNURVJfSUNIMTAgKElDSDEwX0FDUElfQ05UTCk7DQo+ID4gKyAgICAgIEFjcGlFbkJp dCAgPSBJQ0gxMF9BQ1BJX0NOVExfQUNQSV9FTjsNCj4gPiArICAgICAgYnJlYWs7DQo+ID4gKyAg ICBkZWZhdWx0Og0KPiA+ICsgICAgICBERUJVRyAoKEVGSV9EX0VSUk9SLCAiJWE6IFVua25vd24g SG9zdCBCcmlkZ2UgRGV2aWNlIElEOg0KPiAweCUwNHhcbiIsDQo+ID4gKyAgICAgICAgX19GVU5D VElPTl9fLCBtSG9zdEJyaWRnZURldklkKSk7DQo+ID4gKyAgICAgIEFTU0VSVCAoRkFMU0UpOw0K PiA+ICsgICAgICByZXR1cm47DQo+ID4gKyAgfQ0KPiA+ICsgIFBjZFNldDE2IChQY2RTaW1pY3NY NThIb3N0QnJpZGdlUGNpRGV2SWQsIG1Ib3N0QnJpZGdlRGV2SWQpOw0KPiA+ICsNCj4gPiArICAv Lw0KPiA+ICsgIC8vIElmIHRoZSBhcHByb3ByaWF0ZSBJT3NwYWNlIGVuYWJsZSBiaXQgaXMgc2V0 LCBhc3N1bWUgdGhlIEFDUEkgUE1CQQ0KPiA+ICsgIC8vIGhhcyBiZWVuIGNvbmZpZ3VyZWQgYW5k IHNraXAgdGhlIHNldHVwIGhlcmUuDQo+ID4gKyAgLy8gVGhpcyBtYXRjaGVzIHRoZSBsb2dpYyBp biBBY3BpVGltZXJMaWJDb25zdHJ1Y3RvciAoKS4NCj4gPiArICAvLw0KPiA+ICsgIGlmICgoUGNp UmVhZDggKEFjcGlDdGxSZWcpICYgQWNwaUVuQml0KSA9PSAwKSB7DQo+ID4gKyAgICAvLw0KPiA+ ICsgICAgLy8gVGhlIFBFSSBwaGFzZSBzaG91bGQgYmUgZXhpdGVkIHdpdGggZnVsbHkgYWNjZXNz aWJlIEFDUEkgUE0gSU8gc3BhY2U6DQo+ID4gKyAgICAvLyAxLiBzZXQgUE1CQQ0KPiA+ICsgICAg Ly8NCj4gPiArICAgIFBjaUFuZFRoZW5PcjMyIChQbWJhLCBQbWJhQW5kVmFsLCBQbWJhT3JWYWwp Ow0KPiA+ICsNCj4gPiArICAgIC8vDQo+ID4gKyAgICAvLyAyLiBzZXQgUENJQ01EL0lPU0UNCj4g PiArICAgIC8vDQo+ID4gKyAgICBQY2lPcjggKFBtQ21kLCBFRklfUENJX0NPTU1BTkRfSU9fU1BB Q0UpOw0KPiA+ICsNCj4gPiArICAgIC8vDQo+ID4gKyAgICAvLyAzLiBzZXQgQUNQSSBQTSBJTyBl bmFibGUgYml0IChQTVJFR01JU0M6UE1JT1NFIG9yDQo+ID4gQUNQSV9DTlRMOkFDUElfRU4pDQo+ ID4gKyAgICAvLw0KPiA+ICsgICAgUGNpT3I4IChBY3BpQ3RsUmVnLCBBY3BpRW5CaXQpOw0KPiA+ ICsgIH0NCj4gPiArDQo+ID4gKyAgaWYgKG1Ib3N0QnJpZGdlRGV2SWQgPT0gSU5URUxfSUNIMTBf REVWSUNFX0lEKSB7DQo+ID4gKyAgICAvLw0KPiA+ICsgICAgLy8gU2V0IFJvb3QgQ29tcGxleCBS ZWdpc3RlciBCbG9jayBCQVINCj4gPiArICAgIC8vDQo+ID4gKyAgICBQY2lXcml0ZTMyICgNCj4g PiArICAgICAgUE9XRVJfTUdNVF9SRUdJU1RFUl9JQ0gxMCAoSUNIMTBfUkNCQSksDQo+ID4gKyAg ICAgIElDSDEwX1JPT1RfQ09NUExFWF9CQVNFIHwgSUNIMTBfUkNCQV9FTg0KPiA+ICsgICAgICAp Ow0KPiA+ICsNCj4gPiArICB9DQo+ID4gKyAgLy8NCj4gPiArICAvLyBTZXQgdGhlIFBNIEkvTyBi YXNlIGFkZHJlc3MgdG8gMHg0MDANCj4gPiArICAvLw0KPiA+ICsgIFBjaUFuZFRoZW5PcjMyICgN Cj4gPiArICAgIFBDSV9MSUJfQUREUkVTUyAoDQo+ID4gKyAgICAgIDAsDQo+ID4gKyAgICAgIDMx LA0KPiA+ICsgICAgICAwLA0KPiA+ICsgICAgICAweDQwDQo+ID4gKyAgICAgICksDQo+ID4gKyAg ICAoVUlOVDMyKSB+MHhmYzAsIElDSDEwX1BNQkFTRV9WQUxVRQ0KPiA+ICsgICAgKTsNCj4gPiAr ICAvLw0KPiA+ICsgIC8vIEVuYWJsZSBBSENJIGFuZCBhbGwgcG9ydHMgb24gdGhlIFNBVEEgY29u dHJvbGxlci4NCj4gPiArICAvLw0KPiA+ICsgIC8vIEFkZHJlc3MgTUFQIFJlZywgc2V0dGluZyBB SENJIG1vZGUNCj4gPiArICAvLw0KPiA+ICsgIFBjaU9yMTYgKFBDSV9MSUJfQUREUkVTUyAoMCwg MzEsIDIsIDB4OTApLCAweDAwNjApOw0KPiA+ICsgIC8vDQo+ID4gKyAgLy9FbmFibGluZyBQb3J0 cyAwLTUNCj4gPiArICAvLw0KPiA+ICsgIFBjaU9yMTYgKFBDSV9MSUJfQUREUkVTUyAoMCwgMzEs IDIsIDB4OTIpLCAweDAwM0YpOw0KPiA+ICsgIC8vDQo+ID4gKyAgLy9EaXNhYmxpbmcgU2F0YSBD b250cm9sbGVyIDIsIGJpdCAyNSA9IDEsIGJpdCAwID0gMQ0KPiA+ICsgIC8vDQo+ID4gKyAgTW1p b1dyaXRlMzIoMHhGRUQxRjQxOCwgMHgwMjAwMDAwMSk7DQo+ID4gKyAgLy8NCj4gPiArICAvL0Vu YWJsZSBIUEVUIGF0IEZFRDBfMDAwMGgg4oCTIEZFRDBfMDNGRmgNCj4gPiArICAvLw0KPiA+ICsg IE1taW9Xcml0ZTgoSUNIMTBfUk9PVF9DT01QTEVYX0JBU0UgKyAweDM0MDQsIDB4ODApOw0KPiA+ ICsgIC8vDQo+ID4gKyAgLy9Db25maWcgYW5kIGVuYWJsZSBBUElDDQo+ID4gKyAgLy8NCj4gPiAr ICBNbWlvV3JpdGUzMigweEZFQzAwMDAwICsgMFgwLCAwKTsNCj4gPiArICBNbWlvV3JpdGUzMigw eEZFQzAwMDAwICsgMFgxMCwgUGNkR2V0OChQY2RJb0FwaWNJZCk8PDI0KTsNCj4gPiArICBNbWlv V3JpdGU4KElDSDEwX1JPT1RfQ09NUExFWF9CQVNFICsgMHgzMUZGLCAweDAxKTsNCj4gPiArfQ0K PiA+ICsNCj4gPiArDQo+ID4gK1ZPSUQNCj4gPiArQm9vdE1vZGVJbml0aWFsaXphdGlvbiAoDQo+ ID4gKyAgVk9JRA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIEVGSV9TVEFUVVMgICAgU3RhdHVz Ow0KPiA+ICsNCj4gPiArIERFQlVHKChFRklfRF9JTkZPLCAibW9kZVZhbHVlID0gJXhcbiIsDQo+ ID4gSW9CaXRGaWVsZFJlYWQxNihJQ0gxMF9QTUJBU0VfSU8gKyA0LCAxMCwgMTIpKSk7DQo+ID4g KyAgaWYgKElvQml0RmllbGRSZWFkMTYoSUNIMTBfUE1CQVNFX0lPICsgNCwgMTAsIDEyKSA9PSAw eDUpIHsNCj4gPiArICAgIG1Cb290TW9kZSA9IEJPT1RfT05fUzNfUkVTVU1FOw0KPiA+ICsgIH0N Cj4gPiArDQo+ID4gKyAgU3RhdHVzID0gUGVpU2VydmljZXNTZXRCb290TW9kZSAobUJvb3RNb2Rl KTsNCj4gPiArICBBU1NFUlRfRUZJX0VSUk9SIChTdGF0dXMpOw0KPiA+ICsNCj4gPiArICBTdGF0 dXMgPSBQZWlTZXJ2aWNlc0luc3RhbGxQcGkgKG1QcGlCb290TW9kZSk7DQo+ID4gKyAgQVNTRVJU X0VGSV9FUlJPUiAoU3RhdHVzKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArDQo+ID4gK1ZPSUQNCj4g PiArUmVzZXJ2ZUVtdVZhcmlhYmxlTnZTdG9yZSAoDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAg RUZJX1BIWVNJQ0FMX0FERFJFU1MgVmFyaWFibGVTdG9yZTsNCj4gPiArDQo+ID4gKyAgLy8NCj4g PiArICAvLyBBbGxvY2F0ZSBzdG9yYWdlIGZvciBOViB2YXJpYWJsZXMgZWFybHkgb24gc28gaXQg d2lsbCBiZQ0KPiA+ICsgIC8vIGF0IGEgY29uc2lzdGVudCBhZGRyZXNzLiAgU2luY2UgVk0gbWVt b3J5IGlzIHByZXNlcnZlZA0KPiA+ICsgIC8vIGFjcm9zcyByZWJvb3RzLCB0aGlzIGFsbG93cyB0 aGUgTlYgdmFyaWFibGUgc3RvcmFnZSB0byBzdXJ2aXZlDQo+ID4gKyAgLy8gYSBWTSByZWJvb3Qu DQo+ID4gKyAgLy8NCj4gPiArICBWYXJpYWJsZVN0b3JlID0NCj4gPiArICAgIChFRklfUEhZU0lD QUxfQUREUkVTUykoVUlOVE4pDQo+ID4gKyAgICAgIEFsbG9jYXRlUnVudGltZVBhZ2VzICgNCj4g PiArICAgICAgICBFRklfU0laRV9UT19QQUdFUyAoMiAqIFBjZEdldDMyIChQY2RGbGFzaE52U3Rv cmFnZUZ0d1NwYXJlU2l6ZSkpDQo+ID4gKyAgICAgICAgKTsNCj4gPiArICBERUJVRyAoKEVGSV9E X0lORk8sDQo+ID4gKyAgICAgICAgICAiUmVzZXJ2ZWQgdmFyaWFibGUgc3RvcmUgbWVtb3J5OiAw eCVsWDsgc2l6ZTogJWRrYlxuIiwNCj4gPiArICAgICAgICAgIFZhcmlhYmxlU3RvcmUsDQo+ID4g KyAgICAgICAgICAoMiAqIFBjZEdldDMyIChQY2RGbGFzaE52U3RvcmFnZUZ0d1NwYXJlU2l6ZSkp IC8gMTAyNA0KPiA+ICsgICAgICAgICkpOw0KPiA+ICsgIFBjZFNldDY0IChQY2RFbXVWYXJpYWJs ZU52U3RvcmVSZXNlcnZlZCwgVmFyaWFibGVTdG9yZSk7DQo+ID4gK30NCj4gPiArDQo+ID4gKw0K PiA+ICtWT0lEDQo+ID4gK1NpbWljc1ZlcnNpb25DaGVjaygNCj4gPiArICBWT0lEDQo+ID4gKyAg KQ0KPiA+ICt7DQo+ID4gKw0KPiA+ICsgIFVJTlROICAgICAgICAgICBQY2lBZGRyUHRyOw0KPiA+ ICsgIFVJTlQ4ICAgICAgICAgICBDYXBPZmZzZXQ7DQo+ID4gKyAgU1RBVElDIENIQVI4ICAgIFNp bWljc1N0clsweDEwMF07DQo+ID4gKyAgVUlOVE4gICAgICAgICAgIGk7DQo+ID4gKyAgVUlOVDMy ICAgICAgICAgIE1ham9yVmVyc2lvbjsNCj4gPiArICBVSU5UMzIgICAgICAgICAgTWlub3JWZXJz aW9uOw0KPiA+ICsgIFVJTlQzMiAgICAgICAgICBNb2RlbE51bWJlcjsNCj4gPiArDQo+ID4gKyAg UGNpQWRkclB0ciA9IFBDSV9MSUJfQUREUkVTUygwLCBTSU1JQ1NfU0lERUJBTkRQQ0lfREVWLA0K PiA+IFNJTUlDU19TSURFQkFORFBDSV9GVU5DLCAwKTsNCj4gPiArICBDYXBPZmZzZXQgPSBQY2lS ZWFkOChQY2lBZGRyUHRyICsgUENJX0NBUEJJTElUWV9QT0lOVEVSX09GRlNFVCk7DQo+ID4gKyAg aWYgKENhcE9mZnNldCAhPSAweEZGKSB7DQo+ID4gKyAgICBNb2RlbE51bWJlciA9IFBjaVJlYWQz MihQY2lBZGRyUHRyICsgQ2FwT2Zmc2V0ICsgNCk7DQo+ID4gKyAgICBNYWpvclZlcnNpb24gPSBQ Y2lSZWFkMzIoUGNpQWRkclB0ciArIENhcE9mZnNldCArIDgpOw0KPiA+ICsgICAgTWlub3JWZXJz aW9uID0gUGNpUmVhZDMyKFBjaUFkZHJQdHIgKyBDYXBPZmZzZXQgKyAweGMpOw0KPiA+ICsgICAg Zm9yIChpID0gMDsgaSA8IDB4ODA7IGkrKykgew0KPiA+ICsgICAgICBTaW1pY3NTdHJbaV0gPSBQ Y2lSZWFkOChQY2lBZGRyUHRyICsgQ2FwT2Zmc2V0ICsgMHgxMCArIGkpOw0KPiA+ICsgICAgfQ0K PiA+ICsgICAgREVCVUcoKEVGSV9EX0lORk8sICI9PT09PT09PT09PT09U0lNSUNTIFZlcnNpb24N Cj4gPiBpbmZvPT09PT09PT09PT09PVxuIikpOw0KPiA+ICsgICAgREVCVUcoKEVGSV9EX0lORk8s ICJNb2RlbCBudW1iZXIgPSAlZFxuIiwgTW9kZWxOdW1iZXIpKTsNCj4gPiArICAgIERFQlVHKChF RklfRF9JTkZPLCAiTWFqb3IgdmVyc2lvbiA9ICVkXG4iLCBNYWpvclZlcnNpb24pKTsNCj4gPiAr ICAgIERFQlVHKChFRklfRF9JTkZPLCAiTWlub3IgdmVyc2lvbiA9ICVkXG4iLCBNaW5vclZlcnNp b24pKTsNCj4gPiArICAgIERFQlVHKChFRklfRF9JTkZPLCAiJWFcbiIsIFNpbWljc1N0cikpOw0K PiA+ICsgICAgREVCVUcoKEVGSV9EX0lORk8sDQo+ID4gIj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PVxuIikpOw0KPiA+ICsgIH0NCj4gPiArfQ0KPiA+ICsNCj4g PiArVk9JRA0KPiA+ICtEZWJ1Z0R1bXBDbW9zICgNCj4gPiArICBWT0lEDQo+ID4gKyAgKQ0KPiA+ ICt7DQo+ID4gKyAgVUlOVDMyIExvb3A7DQo+ID4gKw0KPiA+ICsgIERFQlVHICgoRUZJX0RfSU5G TywgIkNNT1M6XG4iKSk7DQo+ID4gKw0KPiA+ICsgIGZvciAoTG9vcCA9IDA7IExvb3AgPCAweDgw OyBMb29wKyspIHsNCj4gPiArICAgIGlmICgoTG9vcCAlIDB4MTApID09IDApIHsNCj4gPiArICAg ICAgREVCVUcgKChFRklfRF9JTkZPLCAiJTAyeDoiLCBMb29wKSk7DQo+ID4gKyAgICB9DQo+ID4g KyAgICBERUJVRyAoKEVGSV9EX0lORk8sICIgJTAyeCIsIENtb3NSZWFkOCAoTG9vcCkpKTsNCj4g PiArICAgIGlmICgoTG9vcCAlIDB4MTApID09IDB4Zikgew0KPiA+ICsgICAgICBERUJVRyAoKEVG SV9EX0lORk8sICJcbiIpKTsNCj4gPiArICAgIH0NCj4gPiArICB9DQo+ID4gK30NCj4gPiArDQo+ ID4gKw0KPiA+ICsvKioNCj4gPiArICBGZXRjaCB0aGUgbnVtYmVyIG9mIGJvb3QgQ1BVcyBmcm9t IFFFTVUgYW5kIGV4cG9zZSBpdCB0byBVZWZpQ3B1UGtnDQo+ID4gbW9kdWxlcy4NCj4gPiArICBT ZXQgdGhlIG1NYXhDcHVDb3VudCB2YXJpYWJsZS4NCj4gPiArKiovDQo+ID4gK1ZPSUQNCj4gPiAr TWF4Q3B1Q291bnRJbml0aWFsaXphdGlvbiAoDQo+ID4gKyAgVk9JRA0KPiA+ICsgICkNCj4gPiAr ew0KPiA+ICsgIG1NYXhDcHVDb3VudCA9IFBjZEdldDMyIChQY2RDcHVNYXhMb2dpY2FsUHJvY2Vz c29yTnVtYmVyKTsNCj4gPiArICByZXR1cm47DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ ICsgIERldGVybWluZSBpZiBTMyBzdXBwb3J0IGlzIGV4cGxpY2l0bHkgZW5hYmxlZC4NCj4gPiAr DQo+ID4gKyAgQHJldHZhbCAgVFJVRSAgIElmIFMzIHN1cHBvcnQgaXMgZXhwbGljaXRseSBlbmFi bGVkLiBPdGhlciBmdW5jdGlvbnMgaW4gdGhpcw0KPiA+ICsgIGxpYnJhcnkgbWF5IGJlIGNhbGxl ZCAoc3ViamVjdCB0byB0aGVpciBpbmRpdmlkdWFsDQo+ID4gKyAgcmVzdHJpY3Rpb25zKS4NCj4g PiArDQo+ID4gKyAgRkFMU0UgIE90aGVyd2lzZS4gVGhpcyBpbmNsdWRlcyB1bmF2YWlsYWJpbGl0 eSBvZiB0aGUgZmlybXdhcmUNCj4gPiArICBjb25maWd1cmF0aW9uIGludGVyZmFjZS4gTm8gb3Ro ZXIgZnVuY3Rpb24gaW4gdGhpcyBsaWJyYXJ5DQo+ID4gKyAgbXVzdCBiZSBjYWxsZWQuDQo+ID4g KyoqLw0KPiA+ICtCT09MRUFODQo+ID4gK0VGSUFQSQ0KPiA+ICtRZW11RndDZmdTM0VuYWJsZWQo DQo+ID4gKyAgVk9JRA0KPiA+ICspDQo+ID4gK3sNCj4gPiArICAvL1RPIERPIElGIE5FRURFRA0K PiA+ICsgIHJldHVybiBUUlVFOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBQZXJm b3JtIFBsYXRmb3JtIFBFSSBpbml0aWFsaXphdGlvbi4NCj4gPiArDQo+ID4gKyAgQHBhcmFtICBG aWxlSGFuZGxlICAgICAgSGFuZGxlIG9mIHRoZSBmaWxlIGJlaW5nIGludm9rZWQuDQo+ID4gKyAg QHBhcmFtICBQZWlTZXJ2aWNlcyAgICAgRGVzY3JpYmVzIHRoZSBsaXN0IG9mIHBvc3NpYmxlIFBF SSBTZXJ2aWNlcy4NCj4gPiArDQo+ID4gKyAgQHJldHVybiBFRklfU1VDQ0VTUyAgICAgVGhlIFBF SU0gaW5pdGlhbGl6ZWQgc3VjY2Vzc2Z1bGx5Lg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK0VGSV9T VEFUVVMNCj4gPiArRUZJQVBJDQo+ID4gK0luaXRpYWxpemVQbGF0Zm9ybSAoDQo+ID4gKyAgSU4g ICAgICAgRUZJX1BFSV9GSUxFX0hBTkRMRSAgRmlsZUhhbmRsZSwNCj4gPiArICBJTiBDT05TVCBF RklfUEVJX1NFUlZJQ0VTICAgICAqKlBlaVNlcnZpY2VzDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4g KyAgRUZJX1NUQVRVUyAgICBTdGF0dXM7DQo+ID4gKw0KPiA+ICsgIERFQlVHICgoRUZJX0RfRVJS T1IsICJQbGF0Zm9ybSBQRUlNIExvYWRlZFxuIikpOw0KPiA+ICsNCj4gPiArICBTaW1pY3NWZXJz aW9uQ2hlY2sgKCk7DQo+ID4gKyAgRGVidWdEdW1wQ21vcyAoKTsNCj4gPiArDQo+ID4gKyAgaWYg KFFlbXVGd0NmZ1MzRW5hYmxlZCAoKSkgew0KPiA+ICsgICAgREVCVUcgKChFRklfRF9JTkZPLCAi UzMgc3VwcG9ydCB3YXMgZGV0ZWN0ZWQgb24gU0lNSUNTXG4iKSk7DQo+ID4gKyAgICBtUzNTdXBw b3J0ZWQgPSBUUlVFOw0KPiA+ICsgICAgU3RhdHVzID0gUGNkU2V0Qm9vbFMgKFBjZEFjcGlTM0Vu YWJsZSwgVFJVRSk7DQo+ID4gKyAgICBBU1NFUlRfRUZJX0VSUk9SIChTdGF0dXMpOw0KPiA+ICsg IH0NCj4gPiArICBBZGRyZXNzV2lkdGhJbml0aWFsaXphdGlvbiAoKTsNCj4gPiArICBNYXhDcHVD b3VudEluaXRpYWxpemF0aW9uICgpOw0KPiA+ICsNCj4gPiArICBtSG9zdEJyaWRnZURldklkID0g UGNpUmVhZDE2KFNJTUlDU19IT1NUQlJJREdFX0RJRCk7DQo+ID4gKw0KPiA+ICsgIGlmIChGZWF0 dXJlUGNkR2V0IChQY2RTbW1TbXJhbVJlcXVpcmUpKSB7DQo+ID4gKyAgICBYNThUc2VnTWJ5dGVz SW5pdGlhbGl6YXRpb24gKCk7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICBQdWJsaXNoUGVpTWVt b3J5ICgpOw0KPiA+ICsNCj4gPiArICBJbml0aWFsaXplUmFtUmVnaW9ucyAoKTsNCj4gPiArDQo+ ID4gKyAgaWYgKG1Cb290TW9kZSAhPSBCT09UX09OX1MzX1JFU1VNRSkgew0KPiA+ICsgICAgaWYg KCFGZWF0dXJlUGNkR2V0IChQY2RTbW1TbXJhbVJlcXVpcmUpKSB7DQo+ID4gKyAgICAgIFJlc2Vy dmVFbXVWYXJpYWJsZU52U3RvcmUgKCk7DQo+ID4gKyAgICB9DQo+ID4gKyAgICBQZWlGdkluaXRp YWxpemF0aW9uICgpOw0KPiA+ICsgICAgTWVtTWFwSW5pdGlhbGl6YXRpb24gKCk7DQo+ID4gKyAg fQ0KPiA+ICsNCj4gPiArICBNaXNjSW5pdGlhbGl6YXRpb24gKCk7DQo+ID4gKyAgSW5zdGFsbEZl YXR1cmVDb250cm9sQ2FsbGJhY2sgKCk7DQo+ID4gKw0KPiA+ICsgIHJldHVybiBFRklfU1VDQ0VT UzsNCj4gPiArfQ0KPiA+IGRpZmYgLS1naXQNCj4gPg0KPiBhL1BsYXRmb3JtL0ludGVsL1NpbWlj c09wZW5Cb2FyZFBrZy9Qb2xpY3kvTGlicmFyeS9TaWxpY29uUG9saWN5SW5pdExpYi9TaWxpY29u DQo+ID4gUG9saWN5SW5pdExpYi5jDQo+ID4NCj4gYi9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVu Qm9hcmRQa2cvUG9saWN5L0xpYnJhcnkvU2lsaWNvblBvbGljeUluaXRMaWIvU2lsaWNvbg0KPiA+ IFBvbGljeUluaXRMaWIuYw0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAw MDAwMDAwMC4uMDFhOWVkNDBkNQ0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysNCj4gPg0KPiBi L1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9Qb2xpY3kvTGlicmFyeS9TaWxpY29u UG9saWN5SW5pdExpYi9TaWxpY29uDQo+ID4gUG9saWN5SW5pdExpYi5jDQo+ID4gQEAgLTAsMCAr MSwxMDggQEANCj4gPiArLyoqIEBmaWxlDQo+ID4gKyAgQ29weXJpZ2h0IChjKSAyMDE4IEludGVs IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLiA8QlI+DQo+ID4gKw0KPiA+ICsgIFNQ RFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ID4gKyoqLw0KPiA+ ICsNCj4gPiArI2luY2x1ZGUgPExpYnJhcnkvRGVidWdMaWIuaD4NCj4gPiArI2luY2x1ZGUgPExp YnJhcnkvSW9MaWIuaD4NCj4gPiArI2luY2x1ZGUgPExpYnJhcnkvUGVpU2VydmljZXNMaWIuaD4N Cj4gPiArI2luY2x1ZGUgPExpYnJhcnkvTWVtb3J5QWxsb2NhdGlvbkxpYi5oPg0KPiA+ICsNCj4g PiArLyoqDQo+ID4gKyAgUGVyZm9ybXMgc2lsaWNvbiBwcmUtbWVtIHBvbGljeSBpbml0aWFsaXph dGlvbi4NCj4gPiArDQo+ID4gKyAgVGhlIG1lYW5pbmcgb2YgUG9saWN5IGlzIGRlZmluZWQgYnkg c2lsaWNvbiBjb2RlLg0KPiA+ICsgIEl0IGNvdWxkIGJlIHRoZSByYXcgZGF0YSwgYSBoYW5kbGUs IGEgUFBJLCBldGMuDQo+ID4gKw0KPiA+ICsgIFRoZSByZXR1cm5lZCBkYXRhIG11c3QgYmUgdXNl ZCBhcyBpbnB1dCBkYXRhIGZvcg0KPiBTaWxpY29uUG9saWN5RG9uZVByZU1lbSgpLA0KPiA+ICsg IGFuZCBTaWxpY29uUG9saWN5VXBkYXRlTGliLlNpbGljb25Qb2xpY3lVcGRhdGVQcmVNZW0oKS4N Cj4gPiArDQo+ID4gKyAgMSkgSW4gRlNQIHBhdGgsIHRoZSBpbnB1dCBQb2xpY3kgc2hvdWxkIGJl IEZzcG1VcGQuDQo+ID4gKyAgVmFsdWUgb2YgRnNwbVVwZCBoYXMgYmVlbiBpbml0aWFsaXplZCBi eSBGU1AgYmluYXJ5IGRlZmF1bHQgdmFsdWUuDQo+ID4gKyAgT25seSBhIHN1YnNldCBvZiBGc3Bt VXBkIG5lZWRzIHRvIGJlIHVwZGF0ZWQgZm9yIGRpZmZlcmVudCBzaWxpY29uIHNrdS4NCj4gPiAr ICBUaGUgcmV0dXJuIGRhdGEgaXMgc2FtZSBGc3BtVXBkLg0KPiA+ICsNCj4gPiArICAyKSBJbiBu b24tRlNQIHBhdGgsIHRoZSBpbnB1dCBwb2xpY3kgY291bGQgYmUgTlVMTC4NCj4gPiArICBUaGUg cmV0dXJuIGRhdGEgaXMgdGhlIGluaXRpYWxpemVkIHBvbGljeS4NCj4gPiArDQo+ID4gKyAgQHBh cmFtW2luLCBvdXRdIFBvbGljeSAgICAgICBQb2ludGVyIHRvIHBvbGljeS4NCj4gPiArDQo+ID4g KyAgQHJldHVybiB0aGUgaW5pdGlhbGl6ZWQgcG9saWN5Lg0KPiA+ICsqKi8NCj4gPiArVk9JRCAq DQo+ID4gK0VGSUFQSQ0KPiA+ICtTaWxpY29uUG9saWN5SW5pdFByZU1lbSAoDQo+ID4gKyAgSU4g T1VUIFZPSUQgKlBvbGljeSBPUFRJT05BTA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIHJldHVy biBQb2xpY3k7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qDQo+ID4gKyAgVGhlIHNpbGljb24gcHJl LW1lbSBwb2xpY3kgaXMgZmluYWxpemVkLg0KPiA+ICsgIFNpbGljb24gY29kZSBjYW4gZG8gaW5p dGlhbGl6YXRpb24gYmFzZWQgdXBvbiB0aGUgcG9saWN5IGRhdGEuDQo+ID4gKw0KPiA+ICsgIFRo ZSBpbnB1dCBQb2xpY3kgbXVzdCBiZSByZXR1cm5lZCBieSBTaWxpY29uUG9saWN5SW5pdFByZU1l bSgpLg0KPiA+ICsNCj4gPiArICBAcGFyYW1baW5dIFBvbGljeSAgICAgICBQb2ludGVyIHRvIHBv bGljeS4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBSRVRVUk5fU1VDQ0VTUyBUaGUgcG9saWN5IGlz IGhhbmRsZWQgY29uc3VtZWQgYnkgc2lsaWNvbiBjb2RlLg0KPiA+ICsqLw0KPiA+ICtSRVRVUk5f U1RBVFVTDQo+ID4gK0VGSUFQSQ0KPiA+ICtTaWxpY29uUG9saWN5RG9uZVByZU1lbSAoDQo+ID4g KyAgSU4gVk9JRCAqUG9saWN5DQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgcmV0dXJuIFJFVFVS Tl9TVUNDRVNTOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBQZXJmb3JtcyBzaWxp Y29uIHBvc3QtbWVtIHBvbGljeSBpbml0aWFsaXphdGlvbi4NCj4gPiArDQo+ID4gKyAgVGhlIG1l YW5pbmcgb2YgUG9saWN5IGlzIGRlZmluZWQgYnkgc2lsaWNvbiBjb2RlLg0KPiA+ICsgIEl0IGNv dWxkIGJlIHRoZSByYXcgZGF0YSwgYSBoYW5kbGUsIGEgUFBJLCBldGMuDQo+ID4gKw0KPiA+ICsg IFRoZSByZXR1cm5lZCBkYXRhIG11c3QgYmUgdXNlZCBhcyBpbnB1dCBkYXRhIGZvcg0KPiA+IFNp bGljb25Qb2xpY3lEb25lUG9zdE1lbSgpLA0KPiA+ICsgIGFuZCBTaWxpY29uUG9saWN5VXBkYXRl TGliLlNpbGljb25Qb2xpY3lVcGRhdGVQb3N0TWVtKCkuDQo+ID4gKw0KPiA+ICsgIDEpIEluIEZT UCBwYXRoLCB0aGUgaW5wdXQgUG9saWN5IHNob3VsZCBiZSBGc3BzVXBkLg0KPiA+ICsgIFZhbHVl IG9mIEZzcHNVcGQgaGFzIGJlZW4gaW5pdGlhbGl6ZWQgYnkgRlNQIGJpbmFyeSBkZWZhdWx0IHZh bHVlLg0KPiA+ICsgIE9ubHkgYSBzdWJzZXQgb2YgRnNwc1VwZCBuZWVkcyB0byBiZSB1cGRhdGVk IGZvciBkaWZmZXJlbnQgc2lsaWNvbiBza3UuDQo+ID4gKyAgVGhlIHJldHVybiBkYXRhIGlzIHNh bWUgRnNwc1VwZC4NCj4gPiArDQo+ID4gKyAgMikgSW4gbm9uLUZTUCBwYXRoLCB0aGUgaW5wdXQg cG9saWN5IGNvdWxkIGJlIE5VTEwuDQo+ID4gKyAgVGhlIHJldHVybiBkYXRhIGlzIHRoZSBpbml0 aWFsaXplZCBwb2xpY3kuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtpbiwgb3V0XSBQb2xpY3kgICAg ICAgUG9pbnRlciB0byBwb2xpY3kuDQo+ID4gKw0KPiA+ICsgIEByZXR1cm4gdGhlIGluaXRpYWxp emVkIHBvbGljeS4NCj4gPiArKiovDQo+ID4gK1ZPSUQgKg0KPiA+ICtFRklBUEkNCj4gPiArU2ls aWNvblBvbGljeUluaXRQb3N0TWVtICgNCj4gPiArICBJTiBPVVQgVk9JRCAqUG9saWN5IE9QVElP TkFMDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgcmV0dXJuIFBvbGljeTsNCj4gPiArfQ0KPiA+ ICsNCj4gPiArLyoNCj4gPiArICBUaGUgc2lsaWNvbiBwb3N0LW1lbSBwb2xpY3kgaXMgZmluYWxp emVkLg0KPiA+ICsgIFNpbGljb24gY29kZSBjYW4gZG8gaW5pdGlhbGl6YXRpb24gYmFzZWQgdXBv biB0aGUgcG9saWN5IGRhdGEuDQo+ID4gKw0KPiA+ICsgIFRoZSBpbnB1dCBQb2xpY3kgbXVzdCBi ZSByZXR1cm5lZCBieSBTaWxpY29uUG9saWN5SW5pdFBvc3RNZW0oKS4NCj4gPiArDQo+ID4gKyAg QHBhcmFtW2luXSBQb2xpY3kgICAgICAgUG9pbnRlciB0byBwb2xpY3kuDQo+ID4gKw0KPiA+ICsg IEByZXR2YWwgUkVUVVJOX1NVQ0NFU1MgVGhlIHBvbGljeSBpcyBoYW5kbGVkIGNvbnN1bWVkIGJ5 IHNpbGljb24gY29kZS4NCj4gPiArKi8NCj4gPiArUkVUVVJOX1NUQVRVUw0KPiA+ICtFRklBUEkN Cj4gPiArU2lsaWNvblBvbGljeURvbmVQb3N0TWVtICgNCj4gPiArICBJTiBWT0lEICpQb2xpY3kN Cj4gPiArICApDQo+ID4gK3sNCj4gPiArICByZXR1cm4gUkVUVVJOX1NVQ0NFU1M7DQo+ID4gK30N Cj4gPiBkaWZmIC0tZ2l0DQo+ID4NCj4gYS9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQ a2cvUG9saWN5L0xpYnJhcnkvU2lsaWNvblBvbGljeVVwZGF0ZUxpYi9TaWwNCj4gPiBpY29uUG9s aWN5VXBkYXRlTGliLmMNCj4gPg0KPiBiL1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBr Zy9Qb2xpY3kvTGlicmFyeS9TaWxpY29uUG9saWN5VXBkYXRlTGliL1NpbA0KPiA+IGljb25Qb2xp Y3lVcGRhdGVMaWIuYw0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAw MDAwMC4uNmQ5ZGE2Nzk3NQ0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysNCj4gPg0KPiBiL1Bs YXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9Qb2xpY3kvTGlicmFyeS9TaWxpY29uUG9s aWN5VXBkYXRlTGliL1NpbA0KPiA+IGljb25Qb2xpY3lVcGRhdGVMaWIuYw0KPiA+IEBAIC0wLDAg KzEsNzAgQEANCj4gPiArLyoqIEBmaWxlDQo+ID4gKyAgQ29weXJpZ2h0IChjKSAyMDE4IEludGVs IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLiA8QlI+DQo+ID4gKw0KPiA+ICsgIFNQ RFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ID4gKyoqLw0KPiA+ ICsNCj4gPiArI2luY2x1ZGUgPFBpUGVpLmg+DQo+ID4gKw0KPiA+ICsjaW5jbHVkZSA8TGlicmFy eS9EZWJ1Z0xpYi5oPg0KPiA+ICsjaW5jbHVkZSA8TGlicmFyeS9Jb0xpYi5oPg0KPiA+ICsjaW5j bHVkZSA8UHBpL1JlYWRPbmx5VmFyaWFibGUyLmg+DQo+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L1Bl aVNlcnZpY2VzTGliLmg+DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBQZXJmb3JtcyBzaWxpY29u IHByZS1tZW0gcG9saWN5IHVwZGF0ZS4NCj4gPiArDQo+ID4gKyAgVGhlIG1lYW5pbmcgb2YgUG9s aWN5IGlzIGRlZmluZWQgYnkgc2lsaWNvbiBjb2RlLg0KPiA+ICsgIEl0IGNvdWxkIGJlIHRoZSBy YXcgZGF0YSwgYSBoYW5kbGUsIGEgUFBJLCBldGMuDQo+ID4gKw0KPiA+ICsgIFRoZSBpbnB1dCBQ b2xpY3kgbXVzdCBiZSByZXR1cm5lZCBieSBTaWxpY29uUG9saWN5RG9uZVByZU1lbSgpLg0KPiA+ ICsNCj4gPiArICAxKSBJbiBGU1AgcGF0aCwgdGhlIGlucHV0IFBvbGljeSBzaG91bGQgYmUgRnNw bVVwZC4NCj4gPiArICBBIHBsYXRmb3JtIG1heSB1c2UgdGhpcyBBUEkgdG8gdXBkYXRlIHRoZSBG U1BNIFVQRCBwb2xpY3kgaW5pdGlhbGl6ZWQNCj4gPiArICBieSB0aGUgc2lsaWNvbiBtb2R1bGUg b3IgdGhlIGRlZmF1bHQgVVBEIGRhdGEuDQo+ID4gKyAgVGhlIG91dHB1dCBvZiBGU1BNIFVQRCBk YXRhIGZyb20gdGhpcyBBUEkgaXMgdGhlIGZpbmFsIFVQRCBkYXRhLg0KPiA+ICsNCj4gPiArICAy KSBJbiBub24tRlNQIHBhdGgsIHRoZSBib2FyZCBtYXkgdXNlIGFkZGl0aW9uYWwgd2F5IHRvIGdl dA0KPiA+ICsgIHRoZSBzaWxpY29uIHBvbGljeSBkYXRhIGZpZWxkIGJhc2VkIHVwb24gdGhlIGlu cHV0IFBvbGljeS4NCj4gPiArDQo+ID4gKyAgQHBhcmFtW2luLCBvdXRdIFBvbGljeSAgICAgICBQ b2ludGVyIHRvIHBvbGljeS4NCj4gPiArDQo+ID4gKyAgQHJldHVybiB0aGUgdXBkYXRlZCBwb2xp Y3kuDQo+ID4gKyoqLw0KPiA+ICtWT0lEICoNCj4gPiArRUZJQVBJDQo+ID4gK1NpbGljb25Qb2xp Y3lVcGRhdGVQcmVNZW0gKA0KPiA+ICsgIElOIE9VVCBWT0lEICpQb2xpY3kNCj4gPiArICApDQo+ ID4gK3sNCj4gPiArICByZXR1cm4gUG9saWN5Ow0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4g PiArICBQZXJmb3JtcyBzaWxpY29uIHBvc3QtbWVtIHBvbGljeSB1cGRhdGUuDQo+ID4gKw0KPiA+ ICsgIFRoZSBtZWFuaW5nIG9mIFBvbGljeSBpcyBkZWZpbmVkIGJ5IHNpbGljb24gY29kZS4NCj4g PiArICBJdCBjb3VsZCBiZSB0aGUgcmF3IGRhdGEsIGEgaGFuZGxlLCBhIFBQSSwgZXRjLg0KPiA+ ICsNCj4gPiArICBUaGUgaW5wdXQgUG9saWN5IG11c3QgYmUgcmV0dXJuZWQgYnkgU2lsaWNvblBv bGljeURvbmVQb3N0TWVtKCkuDQo+ID4gKw0KPiA+ICsgIDEpIEluIEZTUCBwYXRoLCB0aGUgaW5w dXQgUG9saWN5IHNob3VsZCBiZSBGc3BzVXBkLg0KPiA+ICsgIEEgcGxhdGZvcm0gbWF5IHVzZSB0 aGlzIEFQSSB0byB1cGRhdGUgdGhlIEZTUFMgVVBEIHBvbGljeSBpbml0aWFsaXplZA0KPiA+ICsg IGJ5IHRoZSBzaWxpY29uIG1vZHVsZSBvciB0aGUgZGVmYXVsdCBVUEQgZGF0YS4NCj4gPiArICBU aGUgb3V0cHV0IG9mIEZTUFMgVVBEIGRhdGEgZnJvbSB0aGlzIEFQSSBpcyB0aGUgZmluYWwgVVBE IGRhdGEuDQo+ID4gKw0KPiA+ICsgIDIpIEluIG5vbi1GU1AgcGF0aCwgdGhlIGJvYXJkIG1heSB1 c2UgYWRkaXRpb25hbCB3YXkgdG8gZ2V0DQo+ID4gKyAgdGhlIHNpbGljb24gcG9saWN5IGRhdGEg ZmllbGQgYmFzZWQgdXBvbiB0aGUgaW5wdXQgUG9saWN5Lg0KPiA+ICsNCj4gPiArICBAcGFyYW1b aW4sIG91dF0gUG9saWN5ICAgICAgIFBvaW50ZXIgdG8gcG9saWN5Lg0KPiA+ICsNCj4gPiArICBA cmV0dXJuIHRoZSB1cGRhdGVkIHBvbGljeS4NCj4gPiArKiovDQo+ID4gK1ZPSUQgKg0KPiA+ICtF RklBUEkNCj4gPiArU2lsaWNvblBvbGljeVVwZGF0ZVBvc3RNZW0gKA0KPiA+ICsgIElOIE9VVCBW T0lEICpQb2xpY3kNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICByZXR1cm4gUG9saWN5Ow0KPiA+ ICt9DQo+ID4gZGlmZiAtLWdpdA0KPiA+DQo+IGEvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJv YXJkUGtnL1NtYmlvc1BsYXRmb3JtRHhlL1NtYmlvc1BsYXRmb3JtRHhlDQo+ID4gLmMNCj4gPg0K PiBiL1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9TbWJpb3NQbGF0Zm9ybUR4ZS9T bWJpb3NQbGF0Zm9ybUR4ZQ0KPiA+IC5jDQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBp bmRleCAwMDAwMDAwMDAwLi44MmEyZDYwOTU5DQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKw0K PiA+DQo+IGIvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL1NtYmlvc1BsYXRmb3Jt RHhlL1NtYmlvc1BsYXRmb3JtRHhlDQo+ID4gLmMNCj4gPiBAQCAtMCwwICsxLDE0OCBAQA0KPiA+ ICsvKiogQGZpbGUNCj4gPiArICBUaGlzIGRyaXZlciBpbnN0YWxscyBTTUJJT1MgaW5mb3JtYXRp b24gZm9yIE9WTUYNCj4gPiArDQo+ID4gKyAgQ29weXJpZ2h0IChjKSAyMDExLCBCZWkgR3VhbiA8 Z2J0anU4NUBnbWFpbC5jb20+DQo+ID4gKyAgQ29weXJpZ2h0IChjKSAyMDExIC0gMjAxNSwgSW50 ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ICsNCj4gPiArICBT UERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiA+ICsqKi8NCj4g PiArDQo+ID4gKyNpbmNsdWRlICJTbWJpb3NQbGF0Zm9ybUR4ZS5oIg0KPiA+ICsNCj4gPiArDQo+ ID4gKy8qKg0KPiA+ICtSZWFkcyA4LWJpdHMgb2YgQ01PUyBkYXRhLg0KPiA+ICsNCj4gPiArUmVh ZHMgdGhlIDgtYml0cyBvZiBDTU9TIGRhdGEgYXQgdGhlIGxvY2F0aW9uIHNwZWNpZmllZCBieSBJ bmRleC4NCj4gPiArVGhlIDgtYml0IHJlYWQgdmFsdWUgaXMgcmV0dXJuZWQuDQo+ID4gKw0KPiA+ ICtAcGFyYW0gIEluZGV4ICBUaGUgQ01PUyBsb2NhdGlvbiB0byByZWFkLg0KPiA+ICsNCj4gPiAr QHJldHVybiBUaGUgdmFsdWUgcmVhZC4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtVSU5UOA0KPiA+ ICtFRklBUEkNCj4gPiArQ21vc1JlYWQ4KA0KPiA+ICsgIElOICAgICAgVUlOVE4gICAgICAgICAg ICAgICAgICAgICBJbmRleA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIElvV3JpdGU4KDB4NzAs IChVSU5UOClJbmRleCk7DQo+ID4gKyAgcmV0dXJuIElvUmVhZDgoMHg3MSk7DQo+ID4gK30NCj4g PiArDQo+ID4gK1VJTlQzMg0KPiA+ICtHZXRTeXN0ZW1NZW1vcnlTaXplQmVsb3c0Z2IoDQo+ID4g KyAgVk9JRA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIFVJTlQ4IENtb3MweDM0Ow0KPiA+ICsg IFVJTlQ4IENtb3MweDM1Ow0KPiA+ICsNCj4gPiArICAvLw0KPiA+ICsgIC8vIENNT1MgMHgzNC8w eDM1IHNwZWNpZmllcyB0aGUgc3lzdGVtIG1lbW9yeSBhYm92ZSAxNiBNQi4NCj4gPiArICAvLyAq IENNT1MoMHgzNSkgaXMgdGhlIGhpZ2ggYnl0ZQ0KPiA+ICsgIC8vICogQ01PUygweDM0KSBpcyB0 aGUgbG93IGJ5dGUNCj4gPiArICAvLyAqIFRoZSBzaXplIGlzIHNwZWNpZmllZCBpbiA2NGtiIGNo dW5rcw0KPiA+ICsgIC8vICogU2luY2UgdGhpcyBpcyBtZW1vcnkgYWJvdmUgMTZNQiwgdGhlIDE2 TUIgbXVzdCBiZSBhZGRlZA0KPiA+ICsgIC8vICAgaW50byB0aGUgY2FsY3VsYXRpb24gdG8gZ2V0 IHRoZSB0b3RhbCBtZW1vcnkgc2l6ZS4NCj4gPiArICAvLw0KPiA+ICsNCj4gPiArICBDbW9zMHgz NCA9IChVSU5UOClDbW9zUmVhZDgoMHgzNCk7DQo+ID4gKyAgQ21vczB4MzUgPSAoVUlOVDgpQ21v c1JlYWQ4KDB4MzUpOw0KPiA+ICsNCj4gPiArICByZXR1cm4gKFVJTlQzMikoKChVSU5UTikoKENt b3MweDM1IDw8IDgpICsgQ21vczB4MzQpIDw8IDE2KSArDQo+ID4gU0laRV8xNk1CKTsNCj4gPiAr fQ0KPiA+ICsNCj4gPiArU1RBVElDDQo+ID4gK1VJTlQ2NA0KPiA+ICtHZXRTeXN0ZW1NZW1vcnlT aXplQWJvdmU0Z2IoDQo+ID4gKyAgVk9JRA0KPiA+ICspDQo+ID4gK3sNCj4gPiArICBVSU5UMzIg U2l6ZTsNCj4gPiArICBVSU5UTiAgQ21vc0luZGV4Ow0KPiA+ICsNCj4gPiArICAvLw0KPiA+ICsg IC8vIENNT1MgMHg1Yi0weDVkIHNwZWNpZmllcyB0aGUgc3lzdGVtIG1lbW9yeSBhYm92ZSA0R0Ig TUIuDQo+ID4gKyAgLy8gKiBDTU9TKDB4NWQpIGlzIHRoZSBtb3N0IHNpZ25pZmljYW50IHNpemUg Ynl0ZQ0KPiA+ICsgIC8vICogQ01PUygweDVjKSBpcyB0aGUgbWlkZGxlIHNpemUgYnl0ZQ0KPiA+ ICsgIC8vICogQ01PUygweDViKSBpcyB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgc2l6ZSBieXRlDQo+ ID4gKyAgLy8gKiBUaGUgc2l6ZSBpcyBzcGVjaWZpZWQgaW4gNjRrYiBjaHVua3MNCj4gPiArICAv Lw0KPiA+ICsNCj4gPiArICBTaXplID0gMDsNCj4gPiArICBmb3IgKENtb3NJbmRleCA9IDB4NWQ7 IENtb3NJbmRleCA+PSAweDViOyBDbW9zSW5kZXgtLSkgew0KPiA+ICsgICAgU2l6ZSA9IChVSU5U MzIpKFNpemUgPDwgOCkgKyAoVUlOVDMyKUNtb3NSZWFkOChDbW9zSW5kZXgpOw0KPiA+ICsgIH0N Cj4gPiArDQo+ID4gKyAgcmV0dXJuIExTaGlmdFU2NChTaXplLCAxNik7DQo+ID4gK30NCj4gPiAr DQo+ID4gKy8qKg0KPiA+ICsgIEluc3RhbGxzIFNNQklPUyBpbmZvcm1hdGlvbiBmb3IgT1ZNRg0K PiA+ICsNCj4gPiArICBAcGFyYW0gSW1hZ2VIYW5kbGUgICAgIE1vZHVsZSdzIGltYWdlIGhhbmRs ZQ0KPiA+ICsgIEBwYXJhbSBTeXN0ZW1UYWJsZSAgICAgUG9pbnRlciBvZiBFRklfU1lTVEVNX1RB QkxFDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgU21iaW9zIGRhdGEgc3Vj Y2Vzc2Z1bGx5IGluc3RhbGxlZA0KPiA+ICsgIEByZXR2YWwgT3RoZXIgICAgICAgICAgU21iaW9z IGRhdGEgd2FzIG5vdCBpbnN0YWxsZWQNCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtFRklfU1RBVFVT DQo+ID4gK0VGSUFQSQ0KPiA+ICtTbWJpb3NUYWJsZVB1Ymxpc2hFbnRyeSAoDQo+ID4gKyAgSU4g RUZJX0hBTkRMRSAgICAgICAgICAgSW1hZ2VIYW5kbGUsDQo+ID4gKyAgSU4gRUZJX1NZU1RFTV9U QUJMRSAgICAgKlN5c3RlbVRhYmxlDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgRUZJX1NUQVRV UyAgICAgICAgICAgICAgICBTdGF0dXM7DQo+ID4gKyAgRUZJX1NNQklPU19QUk9UT0NPTCAgICAg ICAqU21iaW9zOw0KPiA+ICsgIFNNQklPU19UQUJMRV9UWVBFMTkgICAgICAgKlR5cGUxOVJlY29y ZDsNCj4gPiArICBFRklfU01CSU9TX0hBTkRMRSAgICAgICAgIE1lbUFycmF5TWFwcGVkQWRkclNt Ymlvc0hhbmRsZTsNCj4gPiArICBVSU5UOCAgICAgICAgICAgICAgICAgICAgIE51bVNsb3RzOw0K PiA+ICsgIFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgVG90YWxNZW1vcnlTaXplOw0KPiA+ICsN Cj4gPiArICAvLw0KPiA+ICsgIC8vIEZpbmQgdGhlIFNNQklPUyBwcm90b2NvbA0KPiA+ICsgIC8v DQo+ID4gKyAgU3RhdHVzID0gZ0JTLT5Mb2NhdGVQcm90b2NvbCAoDQo+ID4gKyAgICAgICAgICAg ICAgICAgICZnRWZpU21iaW9zUHJvdG9jb2xHdWlkLA0KPiA+ICsgICAgICAgICAgICAgICAgICBO VUxMLA0KPiA+ICsgICAgICAgICAgICAgICAgICAoVk9JRCoqKSZTbWJpb3MNCj4gPiArICAgICAg ICAgICAgICAgICAgKTsNCj4gPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gKyAg ICByZXR1cm4gU3RhdHVzOw0KPiA+ICsgIH0NCj4gPiArICAvLw0KPiA+ICsgIC8vIEdlbmVyYXRl IE1lbW9yeSBBcnJheSBNYXBwZWQgQWRkcmVzcyBpbmZvDQo+ID4gKyAgLy8NCj4gPiArICBOdW1T bG90cyA9IDI7DQo+ID4gKyAgVG90YWxNZW1vcnlTaXplID0gMDsNCj4gPiArICBUb3RhbE1lbW9y eVNpemUgPSBHZXRTeXN0ZW1NZW1vcnlTaXplQmVsb3c0Z2IoKTsNCj4gPiArICBUeXBlMTlSZWNv cmQgPSBBbGxvY2F0ZVBvb2woc2l6ZW9mKFNNQklPU19UQUJMRV9UWVBFMTkpKTsNCj4gPiArICBa ZXJvTWVtKFR5cGUxOVJlY29yZCwgc2l6ZW9mKFNNQklPU19UQUJMRV9UWVBFMTkpKTsNCj4gPiAr ICBUeXBlMTlSZWNvcmQtPkhkci5UeXBlID0NCj4gPiBFRklfU01CSU9TX1RZUEVfTUVNT1JZX0FS UkFZX01BUFBFRF9BRERSRVNTOw0KPiA+ICsgIFR5cGUxOVJlY29yZC0+SGRyLkxlbmd0aCA9IHNp emVvZihTTUJJT1NfVEFCTEVfVFlQRTE5KTsNCj4gPiArICBUeXBlMTlSZWNvcmQtPkhkci5IYW5k bGUgPSAwOw0KPiA+ICsgIFR5cGUxOVJlY29yZC0+U3RhcnRpbmdBZGRyZXNzID0gMDsNCj4gPiAr ICBUeXBlMTlSZWNvcmQtPkVuZGluZ0FkZHJlc3MgPSAoVUlOVDMyKVJTaGlmdFU2NChUb3RhbE1l bW9yeVNpemUsIDEwKQ0KPiAtDQo+ID4gMTsNCj4gPiArICBUeXBlMTlSZWNvcmQtPk1lbW9yeUFy cmF5SGFuZGxlID0gU01CSU9TX0hBTkRMRV9QSV9SRVNFUlZFRDsNCj4gPiArICBUeXBlMTlSZWNv cmQtPlBhcnRpdGlvbldpZHRoID0gKFVJTlQ4KShOdW1TbG90cyk7DQo+ID4gKw0KPiA+ICsgIE1l bUFycmF5TWFwcGVkQWRkclNtYmlvc0hhbmRsZSA9IFNNQklPU19IQU5ETEVfUElfUkVTRVJWRUQ7 DQo+ID4gKyAgU3RhdHVzID0gU21iaW9zLT5BZGQoU21iaW9zLCBOVUxMLA0KPiA+ICZNZW1BcnJh eU1hcHBlZEFkZHJTbWJpb3NIYW5kbGUsDQo+ID4gKEVGSV9TTUJJT1NfVEFCTEVfSEVBREVSKilU eXBlMTlSZWNvcmQpOw0KPiA+ICsgIEFTU0VSVF9FRklfRVJST1IoU3RhdHVzKTsNCj4gPiArDQo+ ID4gKyAgVG90YWxNZW1vcnlTaXplID0gR2V0U3lzdGVtTWVtb3J5U2l6ZUFib3ZlNGdiKCk7DQo+ ID4gKyAgVHlwZTE5UmVjb3JkLT5TdGFydGluZ0FkZHJlc3MgPSAweEZGRkZGRkZGOw0KPiA+ICsg IFR5cGUxOVJlY29yZC0+RXh0ZW5kZWRTdGFydGluZ0FkZHJlc3MgPSAweEZGRkZGRkZGOw0KPiA+ ICsgIFR5cGUxOVJlY29yZC0+RXh0ZW5kZWRFbmRpbmdBZGRyZXNzID0gVG90YWxNZW1vcnlTaXpl ICsgMHhGRkZGRkZGRg0KPiAtDQo+ID4gMTsNCj4gPiArDQo+ID4gKyAgTWVtQXJyYXlNYXBwZWRB ZGRyU21iaW9zSGFuZGxlID0gU01CSU9TX0hBTkRMRV9QSV9SRVNFUlZFRDsNCj4gPiArICBTdGF0 dXMgPSBTbWJpb3MtPkFkZChTbWJpb3MsIE5VTEwsDQo+ID4gJk1lbUFycmF5TWFwcGVkQWRkclNt Ymlvc0hhbmRsZSwNCj4gPiAoRUZJX1NNQklPU19UQUJMRV9IRUFERVIqKVR5cGUxOVJlY29yZCk7 DQo+ID4gKyAgRnJlZVBvb2woVHlwZTE5UmVjb3JkKTsNCj4gPiArICBBU1NFUlRfRUZJX0VSUk9S KFN0YXR1cyk7DQo+ID4gKw0KPiA+ICsgIHJldHVybiBTdGF0dXM7DQo+ID4gK30NCj4gPiBkaWZm IC0tZ2l0IGEvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL0FjcGlUYWJsZXMvQWNw aVRhYmxlcy5pbmYNCj4gPiBiL1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9BY3Bp VGFibGVzL0FjcGlUYWJsZXMuaW5mDQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRl eCAwMDAwMDAwMDAwLi44Mzk2MjZlYjg2DQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL1Bs YXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9BY3BpVGFibGVzL0FjcGlUYWJsZXMuaW5m DQo+ID4gQEAgLTAsMCArMSwzMSBAQA0KPiA+ICsjIyBAZmlsZQ0KPiA+ICsjICBDb21wb25lbnQg ZGVzY3JpcHRpb24gZmlsZSBmb3IgUGxhdGZvcm1BY3BpVGFibGVzIG1vZHVsZS4NCj4gPiArIw0K PiA+ICsjICBBQ1BJIHRhYmxlIGRhdGEgYW5kIEFTTCBzb3VyY2VzIHJlcXVpcmVkIHRvIGJvb3Qg dGhlIHBsYXRmb3JtLg0KPiA+ICsjDQo+ID4gKyMgQ29weXJpZ2h0IChjKSAyMDA4IC0gMjAxOCBJ bnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gPEJSPg0KPiA+ICsjDQo+ID4g KyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gPiArIw0K PiA+ICsjIw0KPiA+ICsNCj4gPiArW0RlZmluZXNdDQo+ID4gKyAgSU5GX1ZFUlNJT04gICAgICAg ICAgICAgICAgICAgID0gMHgwMDAxMDAwNQ0KPiA+ICsgIEJBU0VfTkFNRSAgICAgICAgICAgICAg ICAgICAgICA9IFBsYXRmb3JtQWNwaVRhYmxlcw0KPiA+ICsgIEZJTEVfR1VJRCAgICAgICAgICAg ICAgICAgICAgICA9IDdFMzc0RTI1LThFMDEtNEZFRS04N0YyLTM5MEMyM0M2MDZDRA0KPiA+ICsg IE1PRFVMRV9UWVBFICAgICAgICAgICAgICAgICAgICA9IFVTRVJfREVGSU5FRA0KPiA+ICsgIFZF UlNJT05fU1RSSU5HICAgICAgICAgICAgICAgICA9IDEuMA0KPiA+ICsNCj4gPiArIw0KPiA+ICsj IFRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb24gaXMgZm9yIHJlZmVyZW5jZSBvbmx5IGFuZCBub3Qg cmVxdWlyZWQgYnkgdGhlDQo+IGJ1aWxkDQo+ID4gdG9vbHMuDQo+ID4gKyMNCj4gPiArIyAgVkFM SURfQVJDSElURUNUVVJFUyAgICAgICAgICAgPSBJQTMyIFg2NCBFQkMNCj4gPiArIw0KPiA+ICsN Cj4gPiArW1NvdXJjZXNdDQo+ID4gKyAgUGxhdGZvcm0uaA0KPiA+ICsgIERzZHQuYXNsDQo+ID4g Kw0KPiA+ICtbUGFja2FnZXNdDQo+ID4gKyAgTWRlUGtnL01kZVBrZy5kZWMNCj4gPiArDQo+ID4g ZGlmZiAtLWdpdCBhL1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9BY3BpVGFibGVz L0RzZHQuYXNsDQo+ID4gYi9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvQWNwaVRh Ymxlcy9Ec2R0LmFzbA0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAw MDAwMC4uNzZhOGZiYzA4MQ0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9QbGF0Zm9ybS9J bnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvQWNwaVRhYmxlcy9Ec2R0LmFzbA0KPiA+IEBAIC0wLDAg KzEsODIxIEBADQo+ID4gKy8qKiBAZmlsZQ0KPiA+ICsgIENvbnRhaW5zIHJvb3QgbGV2ZWwgbmFt ZSBzcGFjZSBvYmplY3RzIGZvciB0aGUgcGxhdGZvcm0NCj4gPiArDQo+ID4gKyAgQ29weXJpZ2h0 IChjKSAyMDA4IEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLiA8QlI+DQo+ ID4gKw0KPiA+ICsgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50 DQo+ID4gKyoqLw0KPiA+ICsNCj4gPiArRGVmaW5pdGlvbkJsb2NrICgiRHNkdC5hbWwiLCAiRFNE VCIsIDEsICJJTlRFTCAiLCAiT1ZNRiAgICAiLCA0KSB7DQo+ID4gKyAgLy8NCj4gPiArICAvLyBT eXN0ZW0gU2xlZXAgU3RhdGVzDQo+ID4gKyAgLy8NCj4gPiArICBOYW1lIChcX1MzLCBQYWNrYWdl ICgpIHs1LCA1LCAwLCAwfSkNCj4gPiArICBOYW1lIChcX1M0LCBQYWNrYWdlICgpIHs2LCA2LCAw LCAwfSkNCj4gPiArICBOYW1lIChcX1M1LCBQYWNrYWdlICgpIHs3LCA3LCAwLCAwfSkNCj4gPiAr DQo+ID4gKyAgTmFtZSAoR1BJQywgWmVybykNCj4gPiArICBNZXRob2QgKF9QSUMsIDEsIE5vdFNl cmlhbGl6ZWQpICAvLyBfUElDOiBJbnRlcnJ1cHQgTW9kZWwNCj4gPiArICB7DQo+ID4gKyAgICAg IEdQSUMgPSBBcmcwDQo+ID4gKyAgfQ0KPiA+ICsgIC8vDQo+ID4gKyAgLy8gIFN5c3RlbSBCdXMN Cj4gPiArICAvLw0KPiA+ICsgIFNjb3BlIChcX1NCKSB7DQo+ID4gKyAgICAvLw0KPiA+ICsgICAg Ly8gUENJIFJvb3QgQnJpZGdlDQo+ID4gKyAgICAvLw0KPiA+ICsgICAgRGV2aWNlIChQQ0kwKSB7 DQo+ID4gKyAgICAgIE5hbWUgKF9ISUQsIEVJU0FJRCAoIlBOUDBBMDMiKSkNCj4gPiArICAgICAg TmFtZSAoX0FEUiwgMHgwMDAwMDAwMCkNCj4gPiArICAgICAgTmFtZSAoX0JCTiwgMHgwMCkNCj4g PiArICAgICAgTmFtZSAoX1VJRCwgMHgwMCkNCj4gPiArDQo+ID4gKw0KPiA+ICsgICAgICAvLyBD dXJyZW50IHJlc291cmNlIHNldHRpbmdzDQo+ID4gKyAgICAgIE5hbWUgKF9DUlMsIFJlc291cmNl VGVtcGxhdGUgKCkgew0KPiA+ICsgICAgICAgIFdPUkRCdXNOdW1iZXIgKCAgICAgICAgICAvLyBC dXMgbnVtYmVyIHJlc291cmNlICgwKTsgdGhlIGJyaWRnZQ0KPiBwcm9kdWNlcw0KPiA+IGJ1cyBu dW1iZXJzIGZvciBpdHMgc3Vic2VxdWVudCBidXNlcw0KPiA+ICsgICAgICAgICAgUmVzb3VyY2VQ cm9kdWNlciwgICAgICAvLyBiaXQgMCBvZiBnZW5lcmFsIGZsYWdzIGlzIDENCj4gPiArICAgICAg ICAgIE1pbkZpeGVkLCAgICAgICAgICAgICAgLy8gUmFuZ2UgaXMgZml4ZWQNCj4gPiArICAgICAg ICAgIE1heEZpeGVkLCAgICAgICAgICAgICAgLy8gUmFuZ2UgaXMgZml4ZWQNCj4gPiArICAgICAg ICAgIFBvc0RlY29kZSwgICAgICAgICAgICAgLy8gUG9zRGVjb2RlDQo+ID4gKyAgICAgICAgICAw eDAwMDAsICAgICAgICAgICAgICAgIC8vIEdyYW51bGFyaXR5DQo+ID4gKyAgICAgICAgICAweDAw MDAsICAgICAgICAgICAgICAgIC8vIE1pbg0KPiA+ICsgICAgICAgICAgMHgwMEZGLCAgICAgICAg ICAgICAgICAvLyBNYXgNCj4gPiArICAgICAgICAgIDB4MDAwMCwgICAgICAgICAgICAgICAgLy8g VHJhbnNsYXRpb24NCj4gPiArICAgICAgICAgIDB4MDEwMCAgICAgICAgICAgICAgICAgLy8gUmFu Z2UgTGVuZ3RoID0gTWF4LU1pbisxDQo+ID4gKyAgICAgICAgICApDQo+ID4gKw0KPiA+ICsgICAg ICAgIElPIChEZWNvZGUxNiwgMHhDRjgsIDB4Q0Y4LCAweDAxLCAweDA4KSAgICAgICAvL0NvbnN1 bWVkIHJlc291cmNlDQo+ID4gKDB4Q0Y4LTB4Q0ZGKQ0KPiA+ICsNCj4gPiArICAgICAgICBXT1JE SU8gKCAgICAgICAgICAgICAgICAgLy8gQ29uc3VtZWQtYW5kLXByb2R1Y2VkIHJlc291cmNlIChh bGwgSS9PIGJlbG93DQo+ID4gQ0Y4KQ0KPiA+ICsgICAgICAgICAgUmVzb3VyY2VQcm9kdWNlciwg ICAgICAvLyBiaXQgMCBvZiBnZW5lcmFsIGZsYWdzIGlzIDANCj4gPiArICAgICAgICAgIE1pbkZp eGVkLCAgICAgICAgICAgICAgLy8gUmFuZ2UgaXMgZml4ZWQNCj4gPiArICAgICAgICAgIE1heEZp eGVkLCAgICAgICAgICAgICAgLy8gUmFuZ2UgaXMgZml4ZWQNCj4gPiArICAgICAgICAgIFBvc0Rl Y29kZSwNCj4gPiArICAgICAgICAgIEVudGlyZVJhbmdlLA0KPiA+ICsgICAgICAgICAgMHgwMDAw LCAgICAgICAgICAgICAgICAvLyBHcmFudWxhcml0eQ0KPiA+ICsgICAgICAgICAgMHgwMDAwLCAg ICAgICAgICAgICAgICAvLyBNaW4NCj4gPiArICAgICAgICAgIDB4MENGNywgICAgICAgICAgICAg ICAgLy8gTWF4DQo+ID4gKyAgICAgICAgICAweDAwMDAsICAgICAgICAgICAgICAgIC8vIFRyYW5z bGF0aW9uDQo+ID4gKyAgICAgICAgICAweDBDRjggICAgICAgICAgICAgICAgIC8vIFJhbmdlIExl bmd0aA0KPiA+ICsgICAgICAgICAgKQ0KPiA+ICsNCj4gPiArICAgICAgICBXT1JESU8gKCAgICAg ICAgICAgICAgICAgLy8gQ29uc3VtZWQtYW5kLXByb2R1Y2VkIHJlc291cmNlIChhbGwgSS9PIGFi b3ZlDQo+ID4gQ0ZGKQ0KPiA+ICsgICAgICAgICAgUmVzb3VyY2VQcm9kdWNlciwgICAgICAvLyBi aXQgMCBvZiBnZW5lcmFsIGZsYWdzIGlzIDANCj4gPiArICAgICAgICAgIE1pbkZpeGVkLCAgICAg ICAgICAgICAgLy8gUmFuZ2UgaXMgZml4ZWQNCj4gPiArICAgICAgICAgIE1heEZpeGVkLCAgICAg ICAgICAgICAgLy8gUmFuZ2UgaXMgZml4ZWQNCj4gPiArICAgICAgICAgIFBvc0RlY29kZSwNCj4g PiArICAgICAgICAgIEVudGlyZVJhbmdlLA0KPiA+ICsgICAgICAgICAgMHgwMDAwLCAgICAgICAg ICAgICAgICAvLyBHcmFudWxhcml0eQ0KPiA+ICsgICAgICAgICAgMHgwRDAwLCAgICAgICAgICAg ICAgICAvLyBNaW4NCj4gPiArICAgICAgICAgIDB4RkZGRiwgICAgICAgICAgICAgICAgLy8gTWF4 DQo+ID4gKyAgICAgICAgICAweDAwMDAsICAgICAgICAgICAgICAgIC8vIFRyYW5zbGF0aW9uDQo+ ID4gKyAgICAgICAgICAweEYzMDAgICAgICAgICAgICAgICAgIC8vIFJhbmdlIExlbmd0aA0KPiA+ ICsgICAgICAgICAgKQ0KPiA+ICsNCj4gPiArICAgICAgICBEV09SRE1FTU9SWSAoICAgICAgICAg ICAgLy8gRGVzY3JpcHRvciBmb3IgbGVnYWN5IFZHQSB2aWRlbyBSQU0NCj4gPiArICAgICAgICAg IFJlc291cmNlUHJvZHVjZXIsICAgICAgLy8gYml0IDAgb2YgZ2VuZXJhbCBmbGFncyBpcyAwDQo+ ID4gKyAgICAgICAgICBQb3NEZWNvZGUsDQo+ID4gKyAgICAgICAgICBNaW5GaXhlZCwgICAgICAg ICAgICAgIC8vIFJhbmdlIGlzIGZpeGVkDQo+ID4gKyAgICAgICAgICBNYXhGaXhlZCwgICAgICAg ICAgICAgIC8vIFJhbmdlIGlzIEZpeGVkDQo+ID4gKyAgICAgICAgICBDYWNoZWFibGUsDQo+ID4g KyAgICAgICAgICBSZWFkV3JpdGUsDQo+ID4gKyAgICAgICAgICAweDAwMDAwMDAwLCAgICAgICAg ICAgIC8vIEdyYW51bGFyaXR5DQo+ID4gKyAgICAgICAgICAweDAwMEEwMDAwLCAgICAgICAgICAg IC8vIE1pbg0KPiA+ICsgICAgICAgICAgMHgwMDBCRkZGRiwgICAgICAgICAgICAvLyBNYXgNCj4g PiArICAgICAgICAgIDB4MDAwMDAwMDAsICAgICAgICAgICAgLy8gVHJhbnNsYXRpb24NCj4gPiAr ICAgICAgICAgIDB4MDAwMjAwMDAgICAgICAgICAgICAgLy8gUmFuZ2UgTGVuZ3RoDQo+ID4gKyAg ICAgICAgICApDQo+ID4gKw0KPiA+ICsgICAgICAgIERXT1JETUVNT1JZICggICAgICAgICAgICAv LyBEZXNjcmlwdG9yIGZvciAzMi1iaXQgTU1JTw0KPiA+ICsgICAgICAgICAgUmVzb3VyY2VQcm9k dWNlciwgICAgICAvLyBiaXQgMCBvZiBnZW5lcmFsIGZsYWdzIGlzIDANCj4gPiArICAgICAgICAg IFBvc0RlY29kZSwNCj4gPiArICAgICAgICAgIE1pbkZpeGVkLCAgICAgICAgICAgICAgLy8gUmFu Z2UgaXMgZml4ZWQNCj4gPiArICAgICAgICAgIE1heEZpeGVkLCAgICAgICAgICAgICAgLy8gUmFu Z2UgaXMgRml4ZWQNCj4gPiArICAgICAgICAgIE5vbkNhY2hlYWJsZSwNCj4gPiArICAgICAgICAg IFJlYWRXcml0ZSwNCj4gPiArICAgICAgICAgIDB4MDAwMDAwMDAsICAgICAgICAgICAgLy8gR3Jh bnVsYXJpdHkNCj4gPiArICAgICAgICAgIDB4RjAwMDAwMDAsICAgICAgICAgICAgLy8gTWluDQo+ ID4gKyAgICAgICAgICAweEZCRkZGRkZGLCAgICAgICAgICAgIC8vIE1heA0KPiA+ICsgICAgICAg ICAgMHgwMDAwMDAwMCwgICAgICAgICAgICAvLyBUcmFuc2xhdGlvbg0KPiA+ICsgICAgICAgICAg MHgwQzAwMDAwMCwgICAgICAgICAgICAvLyBSYW5nZSBMZW5ndGgNCj4gPiArICAgICAgICAgICwg ICAgICAgICAgICAgICAgICAgICAgLy8gUmVzb3VyY2VTb3VyY2VJbmRleA0KPiA+ICsgICAgICAg ICAgLCAgICAgICAgICAgICAgICAgICAgICAvLyBSZXNvdXJjZVNvdXJjZQ0KPiA+ICsgICAgICAg ICAgUFczMiAgICAgICAgICAgICAgICAgICAvLyBEZXNjcmlwdG9yTmFtZQ0KPiA+ICsgICAgICAg ICAgKQ0KPiA+ICsgICAgICB9KQ0KPiA+ICsNCj4gPiArCS8vDQo+ID4gKyAgICAgIC8vIFBDSSBJ bnRlcnJ1cHQgUm91dGluZyBUYWJsZSAtIFBJQyBNb2RlIE9ubHkNCj4gPiArICAgICAgLy8NCj4g PiArICAgICAgLy8gSWYgeW91IGNoYW5nZSB0aGUgSVJRIG1hcHBpbmcgaGVyZSB5b3UgYWxzbyBu ZWVkDQo+ID4gKyAgICAgIC8vIHRvIGNoYW5nZSB0aGUgbWFwcGluZyBpbiB0aGUgc291dGggYnJp ZGdlDQo+ID4gKyAgICAgIC8vIChwY2ktY29uZi5weSkgYW5kIGluIHRoZSBCSU9TLg0KPiA+ICsg ICAgICAvLyBJTlRBIC0+IDB4YSAoMTApDQo+ID4gKyAgICAgIC8vIElOVEIgLT4gMHhiICgxMSkN Cj4gPiArICAgICAgLy8gSU5UQyAtPiAweGEgKDEwKQ0KPiA+ICsgICAgICAvLyBJTlREIC0+IDB4 YiAoMTEpDQo+ID4gKw0KPiA+ICsgICAgICAgTWV0aG9kIChfUFJULCAwLCBOb3RTZXJpYWxpemVk KSB7DQo+ID4gKyAgICAgICAgICAgSWYgKEdQSUMpIHsNCj4gPiArICAgICAgICAgICAgIFJldHVy biAoQVIwMCkgLy8gQVBJQyBNb2RlDQo+ID4gKyAgICAgICAgICAgfQ0KPiA+ICsgICAgICAgICAg IFJldHVybiAoUFIwMCkgLy8gUElDIE1vZGUNCj4gPiArICAgICAgfQ0KPiA+ICsNCj4gPiArICAg ICAgTmFtZSAoUFIwMCwgUGFja2FnZSgpew0KPiA+ICsJICAgIFBhY2thZ2UgKCkgezB4MDAwRkZG RiwgMHgwMCwgXF9TQi5QQ0kwLkxQQy5MTktBLCAweDAwfSwNCj4gPiArICAgICAgICAgICAgUGFj a2FnZSAoKSB7MHgwMDBGRkZGLCAweDAxLCBcX1NCLlBDSTAuTFBDLkxOS0IsIDB4MDB9LA0KPiA+ ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMEZGRkYsIDB4MDIsIFxfU0IuUENJMC5MUEMu TE5LQywgMHgwMH0sDQo+ID4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwRkZGRiwgMHgw MywgXF9TQi5QQ0kwLkxQQy5MTktELCAweDAwfSwNCj4gPiArDQo+ID4gKyAgICAgICAgICAgIC8v DQo+ID4gKyAgICAgICAgICAgIC8vIEJ1cyAwLCBEZXZpY2UgMQ0KPiA+ICsgICAgICAgICAgICAv Lw0KPiA+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDFGRkZGLCAweDAwLCBcX1NCLlBD STAuTFBDLkxOS0EsIDB4MDB9LA0KPiA+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDFG RkZGLCAweDAxLCBcX1NCLlBDSTAuTFBDLkxOS0IsIDB4MDB9LA0KPiA+ICsgICAgICAgICAgICBQ YWNrYWdlICgpIHsweDAwMDFGRkZGLCAweDAyLCBcX1NCLlBDSTAuTFBDLkxOS0MsIDB4MDB9LA0K PiA+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDFGRkZGLCAweDAzLCBcX1NCLlBDSTAu TFBDLkxOS0QsIDB4MDB9LA0KPiA+ICsNCj4gPiArCSAgICBQYWNrYWdlICgpIHsweDAwMDJGRkZG LCAweDAwLCBcX1NCLlBDSTAuTFBDLkxOS0EsIDB4MDB9LA0KPiA+ICsgICAgICAgICAgICBQYWNr YWdlICgpIHsweDAwMDJGRkZGLCAweDAxLCBcX1NCLlBDSTAuTFBDLkxOS0IsIDB4MDB9LA0KPiA+ ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDJGRkZGLCAweDAyLCBcX1NCLlBDSTAuTFBD LkxOS0MsIDB4MDB9LA0KPiA+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDJGRkZGLCAw eDAzLCBcX1NCLlBDSTAuTFBDLkxOS0QsIDB4MDB9LA0KPiA+ICsgICAgICAgICAgICAvLw0KPiA+ ICsgICAgICAgICAgICAvLyBCdXMgMCwgRGV2aWNlIDMNCj4gPiArICAgICAgICAgICAgLy8NCj4g PiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAzRkZGRiwgMHgwMCwgXF9TQi5QQ0kwLkxQ Qy5MTktBLCAweDAwfSwNCj4gPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAzRkZGRiwg MHgwMSwgXF9TQi5QQ0kwLkxQQy5MTktCLCAweDAwfSwNCj4gPiArICAgICAgICAgICAgUGFja2Fn ZSAoKSB7MHgwMDAzRkZGRiwgMHgwMiwgXF9TQi5QQ0kwLkxQQy5MTktDLCAweDAwfSwNCj4gPiAr ICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAzRkZGRiwgMHgwMywgXF9TQi5QQ0kwLkxQQy5M TktELCAweDAwfSwNCj4gPiArDQo+ID4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwNEZG RkYsIDB4MDAsIFxfU0IuUENJMC5MUEMuTE5LQSwgMHgwMH0sDQo+ID4gKyAgICAgICAgICAgIFBh Y2thZ2UgKCkgezB4MDAwNEZGRkYsIDB4MDEsIFxfU0IuUENJMC5MUEMuTE5LQiwgMHgwMH0sDQo+ ID4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwNEZGRkYsIDB4MDIsIFxfU0IuUENJMC5M UEMuTE5LQywgMHgwMH0sDQo+ID4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwNEZGRkYs IDB4MDMsIFxfU0IuUENJMC5MUEMuTE5LRCwgMHgwMH0sDQo+ID4gKw0KPiA+ICsgICAgICAgICAg ICBQYWNrYWdlICgpIHsweDAwMDVGRkZGLCAweDAwLCBcX1NCLlBDSTAuTFBDLkxOS0EsIDB4MDB9 LA0KPiA+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDVGRkZGLCAweDAxLCBcX1NCLlBD STAuTFBDLkxOS0IsIDB4MDB9LA0KPiA+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDVG RkZGLCAweDAyLCBcX1NCLlBDSTAuTFBDLkxOS0MsIDB4MDB9LA0KPiA+ICsgICAgICAgICAgICBQ YWNrYWdlICgpIHsweDAwMDVGRkZGLCAweDAzLCBcX1NCLlBDSTAuTFBDLkxOS0QsIDB4MDB9LA0K PiA+ICsNCj4gPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDA2RkZGRiwgMHgwMCwgXF9T Qi5QQ0kwLkxQQy5MTktBLCAweDAwfSwNCj4gPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgw MDA2RkZGRiwgMHgwMSwgXF9TQi5QQ0kwLkxQQy5MTktCLCAweDAwfSwNCj4gPiArICAgICAgICAg ICAgUGFja2FnZSAoKSB7MHgwMDA2RkZGRiwgMHgwMiwgXF9TQi5QQ0kwLkxQQy5MTktDLCAweDAw fSwNCj4gPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDA2RkZGRiwgMHgwMywgXF9TQi5Q Q0kwLkxQQy5MTktELCAweDAwfSwNCj4gPiArDQo+ID4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkg ezB4MDAwN0ZGRkYsIDB4MDAsIFxfU0IuUENJMC5MUEMuTE5LQSwgMHgwMH0sDQo+ID4gKyAgICAg ICAgICAgIFBhY2thZ2UgKCkgezB4MDAwN0ZGRkYsIDB4MDEsIFxfU0IuUENJMC5MUEMuTE5LQiwg MHgwMH0sDQo+ID4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwN0ZGRkYsIDB4MDIsIFxf U0IuUENJMC5MUEMuTE5LQywgMHgwMH0sDQo+ID4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4 MDAwN0ZGRkYsIDB4MDMsIFxfU0IuUENJMC5MUEMuTE5LRCwgMHgwMH0sDQo+ID4gKw0KPiA+ICsg ICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDhGRkZGLCAweDAwLCBcX1NCLlBDSTAuTFBDLkxO S0EsIDB4MDB9LA0KPiA+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDhGRkZGLCAweDAx LCBcX1NCLlBDSTAuTFBDLkxOS0IsIDB4MDB9LA0KPiA+ICsgICAgICAgICAgICBQYWNrYWdlICgp IHsweDAwMDhGRkZGLCAweDAyLCBcX1NCLlBDSTAuTFBDLkxOS0MsIDB4MDB9LA0KPiA+ICsgICAg ICAgICAgICBQYWNrYWdlICgpIHsweDAwMDhGRkZGLCAweDAzLCBcX1NCLlBDSTAuTFBDLkxOS0Qs IDB4MDB9LA0KPiA+ICsNCj4gPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDA5RkZGRiwg MHgwMCwgXF9TQi5QQ0kwLkxQQy5MTktBLCAweDAwfSwNCj4gPiArICAgICAgICAgICAgUGFja2Fn ZSAoKSB7MHgwMDA5RkZGRiwgMHgwMSwgXF9TQi5QQ0kwLkxQQy5MTktCLCAweDAwfSwNCj4gPiAr ICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDA5RkZGRiwgMHgwMiwgXF9TQi5QQ0kwLkxQQy5M TktDLCAweDAwfSwNCj4gPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDA5RkZGRiwgMHgw MywgXF9TQi5QQ0kwLkxQQy5MTktELCAweDAwfSwNCj4gPiArDQo+ID4gKyAgICAgICAgICAgIFBh Y2thZ2UgKCkgezB4MDAwQUZGRkYsIDB4MDAsIFxfU0IuUENJMC5MUEMuTE5LQSwgMHgwMH0sDQo+ ID4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwQUZGRkYsIDB4MDEsIFxfU0IuUENJMC5M UEMuTE5LQiwgMHgwMH0sDQo+ID4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwQUZGRkYs IDB4MDIsIFxfU0IuUENJMC5MUEMuTE5LQywgMHgwMH0sDQo+ID4gKyAgICAgICAgICAgIFBhY2th Z2UgKCkgezB4MDAwQUZGRkYsIDB4MDMsIFxfU0IuUENJMC5MUEMuTE5LRCwgMHgwMH0sDQo+ID4g Kw0KPiA+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMEJGRkZGLCAweDAwLCBcX1NCLlBD STAuTFBDLkxOS0EsIDB4MDB9LA0KPiA+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMEJG RkZGLCAweDAxLCBcX1NCLlBDSTAuTFBDLkxOS0IsIDB4MDB9LA0KPiA+ICsgICAgICAgICAgICBQ YWNrYWdlICgpIHsweDAwMEJGRkZGLCAweDAyLCBcX1NCLlBDSTAuTFBDLkxOS0MsIDB4MDB9LA0K PiA+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMEJGRkZGLCAweDAzLCBcX1NCLlBDSTAu TFBDLkxOS0QsIDB4MDB9LA0KPiA+ICsNCj4gPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgw MDBDRkZGRiwgMHgwMCwgXF9TQi5QQ0kwLkxQQy5MTktBLCAweDAwfSwNCj4gPiArICAgICAgICAg ICAgUGFja2FnZSAoKSB7MHgwMDBDRkZGRiwgMHgwMSwgXF9TQi5QQ0kwLkxQQy5MTktCLCAweDAw fSwNCj4gPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDBDRkZGRiwgMHgwMiwgXF9TQi5Q Q0kwLkxQQy5MTktDLCAweDAwfSwNCj4gPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDBD RkZGRiwgMHgwMywgXF9TQi5QQ0kwLkxQQy5MTktELCAweDAwfSwNCj4gPiArDQo+ID4gKyAgICAg ICAgICAgIFBhY2thZ2UgKCkgezB4MDAwREZGRkYsIDB4MDAsIFxfU0IuUENJMC5MUEMuTE5LQSwg MHgwMH0sDQo+ID4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwREZGRkYsIDB4MDEsIFxf U0IuUENJMC5MUEMuTE5LQiwgMHgwMH0sDQo+ID4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4 MDAwREZGRkYsIDB4MDIsIFxfU0IuUENJMC5MUEMuTE5LQywgMHgwMH0sDQo+ID4gKyAgICAgICAg ICAgIFBhY2thZ2UgKCkgezB4MDAwREZGRkYsIDB4MDMsIFxfU0IuUENJMC5MUEMuTE5LRCwgMHgw MH0sDQo+ID4gKw0KPiA+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMEVGRkZGLCAweDAw LCBcX1NCLlBDSTAuTFBDLkxOS0EsIDB4MDB9LA0KPiA+ICsgICAgICAgICAgICBQYWNrYWdlICgp IHsweDAwMEVGRkZGLCAweDAxLCBcX1NCLlBDSTAuTFBDLkxOS0IsIDB4MDB9LA0KPiA+ICsgICAg ICAgICAgICBQYWNrYWdlICgpIHsweDAwMEVGRkZGLCAweDAyLCBcX1NCLlBDSTAuTFBDLkxOS0Ms IDB4MDB9LA0KPiA+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMEVGRkZGLCAweDAzLCBc X1NCLlBDSTAuTFBDLkxOS0QsIDB4MDB9LA0KPiA+ICsNCj4gPiArICAgICAgICAgICAgUGFja2Fn ZSAoKSB7MHgwMDBGRkZGRiwgMHgwMCwgXF9TQi5QQ0kwLkxQQy5MTktBLCAweDAwfSwNCj4gPiAr ICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDBGRkZGRiwgMHgwMSwgXF9TQi5QQ0kwLkxQQy5M TktCLCAweDAwfSwNCj4gPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDBGRkZGRiwgMHgw MiwgXF9TQi5QQ0kwLkxQQy5MTktDLCAweDAwfSwNCj4gPiArICAgICAgICAgICAgUGFja2FnZSAo KSB7MHgwMDBGRkZGRiwgMHgwMywgXF9TQi5QQ0kwLkxQQy5MTktELCAweDAwfSwNCj4gPiArDQo+ ID4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMTBGRkZGLCAweDAwLCBcX1NCLlBDSTAu TFBDLkxOS0EsIDB4MDB9LA0KPiA+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDEwRkZG RiwgMHgwMSwgXF9TQi5QQ0kwLkxQQy5MTktCLCAweDAwfSwNCj4gPiArICAgICAgICAgICAgUGFj a2FnZSAoKSB7MHgwMDAxMEZGRkYsIDB4MDIsIFxfU0IuUENJMC5MUEMuTE5LQywgMHgwMH0sDQo+ ID4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMTBGRkZGLCAweDAzLCBcX1NCLlBDSTAu TFBDLkxOS0QsIDB4MDB9LA0KPiA+ICsNCj4gPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgw MDAxMUZGRkYsIDB4MDAsIFxfU0IuUENJMC5MUEMuTE5LQSwgMHgwMH0sDQo+ID4gKyAgICAgICAg ICAgIFBhY2thZ2UgKCkgezB4MDAwMTFGRkZGLCAweDAxLCBcX1NCLlBDSTAuTFBDLkxOS0IsIDB4 MDB9LA0KPiA+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDExRkZGRiwgMHgwMiwgXF9T Qi5QQ0kwLkxQQy5MTktDLCAweDAwfSwNCj4gPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgw MDAxMUZGRkYsIDB4MDMsIFxfU0IuUENJMC5MUEMuTE5LRCwgMHgwMH0sDQo+ID4gKw0KPiA+ICsg ICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDEyRkZGRiwgMHgwMCwgXF9TQi5QQ0kwLkxQQy5M TktBLCAweDAwfSwNCj4gPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxMkZGRkYsIDB4 MDEsIFxfU0IuUENJMC5MUEMuTE5LQiwgMHgwMH0sDQo+ID4gKyAgICAgICAgICAgIFBhY2thZ2Ug KCkgezB4MDAwMTJGRkZGLCAweDAyLCBcX1NCLlBDSTAuTFBDLkxOS0MsIDB4MDB9LA0KPiA+ICsg ICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDEyRkZGRiwgMHgwMywgXF9TQi5QQ0kwLkxQQy5M TktELCAweDAwfSwNCj4gPiArDQo+ID4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMTNG RkZGLCAweDAwLCBcX1NCLlBDSTAuTFBDLkxOS0EsIDB4MDB9LA0KPiA+ICsgICAgICAgICAgICBQ YWNrYWdlICgpIHsweDAwMDEzRkZGRiwgMHgwMSwgXF9TQi5QQ0kwLkxQQy5MTktCLCAweDAwfSwN Cj4gPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxM0ZGRkYsIDB4MDIsIFxfU0IuUENJ MC5MUEMuTE5LQywgMHgwMH0sDQo+ID4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMTNG RkZGLCAweDAzLCBcX1NCLlBDSTAuTFBDLkxOS0QsIDB4MDB9LA0KPiA+ICsNCj4gPiArICAgICAg ICAgICAgUGFja2FnZSAoKSB7MHgwMDAxNEZGRkYsIDB4MDAsIFxfU0IuUENJMC5MUEMuTE5LQSwg MHgwMH0sDQo+ID4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMTRGRkZGLCAweDAxLCBc X1NCLlBDSTAuTFBDLkxOS0IsIDB4MDB9LA0KPiA+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsw eDAwMDE0RkZGRiwgMHgwMiwgXF9TQi5QQ0kwLkxQQy5MTktDLCAweDAwfSwNCj4gPiArICAgICAg ICAgICAgUGFja2FnZSAoKSB7MHgwMDAxNEZGRkYsIDB4MDMsIFxfU0IuUENJMC5MUEMuTE5LRCwg MHgwMH0sDQo+ID4gKw0KPiA+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDE1RkZGRiwg MHgwMCwgXF9TQi5QQ0kwLkxQQy5MTktBLCAweDAwfSwNCj4gPiArICAgICAgICAgICAgUGFja2Fn ZSAoKSB7MHgwMDAxNUZGRkYsIDB4MDEsIFxfU0IuUENJMC5MUEMuTE5LQiwgMHgwMH0sDQo+ID4g KyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMTVGRkZGLCAweDAyLCBcX1NCLlBDSTAuTFBD LkxOS0MsIDB4MDB9LA0KPiA+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDE1RkZGRiwg MHgwMywgXF9TQi5QQ0kwLkxQQy5MTktELCAweDAwfSwNCj4gPiArDQo+ID4gKyAgICAgICAgICAg IFBhY2thZ2UgKCkgezB4MDAwMTZGRkZGLCAweDAwLCBcX1NCLlBDSTAuTFBDLkxOS0EsIDB4MDB9 LA0KPiA+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDE2RkZGRiwgMHgwMSwgXF9TQi5Q Q0kwLkxQQy5MTktCLCAweDAwfSwNCj4gPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAx NkZGRkYsIDB4MDIsIFxfU0IuUENJMC5MUEMuTE5LQywgMHgwMH0sDQo+ID4gKyAgICAgICAgICAg IFBhY2thZ2UgKCkgezB4MDAwMTZGRkZGLCAweDAzLCBcX1NCLlBDSTAuTFBDLkxOS0QsIDB4MDB9 LA0KPiA+ICsNCj4gPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxN0ZGRkYsIDB4MDAs IFxfU0IuUENJMC5MUEMuTE5LQSwgMHgwMH0sDQo+ID4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkg ezB4MDAwMTdGRkZGLCAweDAxLCBcX1NCLlBDSTAuTFBDLkxOS0IsIDB4MDB9LA0KPiA+ICsgICAg ICAgICAgICBQYWNrYWdlICgpIHsweDAwMDE3RkZGRiwgMHgwMiwgXF9TQi5QQ0kwLkxQQy5MTktD LCAweDAwfSwNCj4gPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxN0ZGRkYsIDB4MDMs IFxfU0IuUENJMC5MUEMuTE5LRCwgMHgwMH0sDQo+ID4gKw0KPiA+ICsgICAgICAgICAgICBQYWNr YWdlICgpIHsweDAwMDE4RkZGRiwgMHgwMCwgXF9TQi5QQ0kwLkxQQy5MTktBLCAweDAwfSwNCj4g PiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxOEZGRkYsIDB4MDEsIFxfU0IuUENJMC5M UEMuTE5LQiwgMHgwMH0sDQo+ID4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMThGRkZG LCAweDAyLCBcX1NCLlBDSTAuTFBDLkxOS0MsIDB4MDB9LA0KPiA+ICsgICAgICAgICAgICBQYWNr YWdlICgpIHsweDAwMDE4RkZGRiwgMHgwMywgXF9TQi5QQ0kwLkxQQy5MTktELCAweDAwfSwNCj4g PiArDQo+ID4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMUVGRkZGLCAweDAwLCBcX1NC LlBDSTAuTFBDLkxOS0EsIDB4MDB9LA0KPiA+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAw MDFFRkZGRiwgMHgwMSwgXF9TQi5QQ0kwLkxQQy5MTktCLCAweDAwfSwNCj4gPiArICAgICAgICAg ICAgUGFja2FnZSAoKSB7MHgwMDAxRUZGRkYsIDB4MDIsIFxfU0IuUENJMC5MUEMuTE5LQywgMHgw MH0sDQo+ID4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMUVGRkZGLCAweDAzLCBcX1NC LlBDSTAuTFBDLkxOS0QsIDB4MDB9LA0KPiA+ICsNCj4gPiArICAgICAgICAgICAgUGFja2FnZSAo KSB7MHgwMDAxOUZGRkYsIDB4MDAsIFxfU0IuUENJMC5MUEMuTE5LQSwgMHgwMH0sDQo+ID4gKyAg ICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMTlGRkZGLCAweDAxLCBcX1NCLlBDSTAuTFBDLkxO S0IsIDB4MDB9LA0KPiA+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDE5RkZGRiwgMHgw MiwgXF9TQi5QQ0kwLkxQQy5MTktDLCAweDAwfSwNCj4gPiArICAgICAgICAgICAgUGFja2FnZSAo KSB7MHgwMDAxOUZGRkYsIDB4MDMsIFxfU0IuUENJMC5MUEMuTE5LRCwgMHgwMH0sDQo+ID4gKw0K PiA+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDFBRkZGRiwgMHgwMCwgXF9TQi5QQ0kw LkxQQy5MTktBLCAweDAwfSwNCj4gPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxQUZG RkYsIDB4MDEsIFxfU0IuUENJMC5MUEMuTE5LQiwgMHgwMH0sDQo+ID4gKyAgICAgICAgICAgIFBh Y2thZ2UgKCkgezB4MDAwMUFGRkZGLCAweDAyLCBcX1NCLlBDSTAuTFBDLkxOS0MsIDB4MDB9LA0K PiA+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDFBRkZGRiwgMHgwMywgXF9TQi5QQ0kw LkxQQy5MTktELCAweDAwfSwNCj4gPiArDQo+ID4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4 MDAwMUJGRkZGLCAweDAwLCBcX1NCLlBDSTAuTFBDLkxOS0EsIDB4MDB9LA0KPiA+ICsgICAgICAg ICAgICBQYWNrYWdlICgpIHsweDAwMDFCRkZGRiwgMHgwMSwgXF9TQi5QQ0kwLkxQQy5MTktCLCAw eDAwfSwNCj4gPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxQkZGRkYsIDB4MDIsIFxf U0IuUENJMC5MUEMuTE5LQywgMHgwMH0sDQo+ID4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4 MDAwMUJGRkZGLCAweDAzLCBcX1NCLlBDSTAuTFBDLkxOS0QsIDB4MDB9LA0KPiA+ICsNCj4gPiAr ICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxQ0ZGRkYsIDB4MDAsIFxfU0IuUENJMC5MUEMu TE5LQSwgMHgwMH0sDQo+ID4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMUNGRkZGLCAw eDAxLCBcX1NCLlBDSTAuTFBDLkxOS0IsIDB4MDB9LA0KPiA+ICsgICAgICAgICAgICBQYWNrYWdl ICgpIHsweDAwMDFDRkZGRiwgMHgwMiwgXF9TQi5QQ0kwLkxQQy5MTktDLCAweDAwfSwNCj4gPiAr ICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxQ0ZGRkYsIDB4MDMsIFxfU0IuUENJMC5MUEMu TE5LRCwgMHgwMH0sDQo+ID4gKw0KPiA+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDFE RkZGRiwgMHgwMCwgXF9TQi5QQ0kwLkxQQy5MTktBLCAweDAwfSwNCj4gPiArICAgICAgICAgICAg UGFja2FnZSAoKSB7MHgwMDAxREZGRkYsIDB4MDEsIFxfU0IuUENJMC5MUEMuTE5LQiwgMHgwMH0s DQo+ID4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMURGRkZGLCAweDAyLCBcX1NCLlBD STAuTFBDLkxOS0MsIDB4MDB9LA0KPiA+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDFE RkZGRiwgMHgwMywgXF9TQi5QQ0kwLkxQQy5MTktELCAweDAwfSwNCj4gPiArDQo+ID4gKyAgICAg ICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMUZGRkZGLCAweDAwLCBcX1NCLlBDSTAuTFBDLkxOS0Es IDB4MDB9LA0KPiA+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDFGRkZGRiwgMHgwMSwg XF9TQi5QQ0kwLkxQQy5MTktCLCAweDAwfSwNCj4gPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7 MHgwMDAxRkZGRkYsIDB4MDIsIFxfU0IuUENJMC5MUEMuTE5LQywgMHgwMH0sDQo+ID4gKyAgICAg ICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMUZGRkZGLCAweDAzLCBcX1NCLlBDSTAuTFBDLkxOS0Qs IDB4MDB9LA0KPiA+ICsgICAgICAgICAgfQ0KPiA+ICsgICAgICAgICkNCj4gPiArDQo+ID4gKyAg ICAgIE5hbWUoQVIwMCwgUGFja2FnZSgpew0KPiA+ICsNCj4gPiArCSAgICBQYWNrYWdlICgpIHsw eDAwMEZGRkYsIDB4MDAsIDAsIDE2fSwNCj4gPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgw MDBGRkZGLCAweDAxLCAwLCAxN30sDQo+ID4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAw RkZGRiwgMHgwMiwgMCwgMTh9LA0KPiA+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMEZG RkYsIDB4MDMsIDAsIDE5fSwNCj4gPiArDQo+ID4gKyAgICAgICAgICAgIC8vDQo+ID4gKyAgICAg ICAgICAgIC8vIEJ1cyAwLCBEZXZpY2UgMQ0KPiA+ICsgICAgICAgICAgICAvLw0KPiA+ICsgICAg ICAgICAgICBQYWNrYWdlICgpIHsweDAwMDFGRkZGLCAweDAwLCAwLCAxNn0sDQo+ID4gKyAgICAg ICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMUZGRkYsIDB4MDEsIDAsIDE3fSwNCj4gPiArICAgICAg ICAgICAgUGFja2FnZSAoKSB7MHgwMDAxRkZGRiwgMHgwMiwgMCwgMTh9LA0KPiA+ICsgICAgICAg ICAgICBQYWNrYWdlICgpIHsweDAwMDFGRkZGLCAweDAzLCAwLCAxOX0sDQo+ID4gKw0KPiA+ICsJ ICAgIFBhY2thZ2UgKCkgezB4MDAwMkZGRkYsIDB4MDAsIDAsIDE2fSwNCj4gPiArICAgICAgICAg ICAgUGFja2FnZSAoKSB7MHgwMDAyRkZGRiwgMHgwMSwgMCwgMTd9LA0KPiA+ICsgICAgICAgICAg ICBQYWNrYWdlICgpIHsweDAwMDJGRkZGLCAweDAyLCAwLCAxOH0sDQo+ID4gKyAgICAgICAgICAg IFBhY2thZ2UgKCkgezB4MDAwMkZGRkYsIDB4MDMsIDAsIDE5fSwNCj4gPiArICAgICAgICAgICAg Ly8NCj4gPiArICAgICAgICAgICAgLy8gQnVzIDAsIERldmljZSAzDQo+ID4gKyAgICAgICAgICAg IC8vDQo+ID4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwM0ZGRkYsIDB4MDAsIDAsIDE2 fSwNCj4gPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAzRkZGRiwgMHgwMSwgMCwgMTd9 LA0KPiA+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDNGRkZGLCAweDAyLCAwLCAxOH0s DQo+ID4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwM0ZGRkYsIDB4MDMsIDAsIDE5fSwN Cj4gPiArDQo+ID4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwNEZGRkYsIDB4MDAsIDAs IDE2fSwNCj4gPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDA0RkZGRiwgMHgwMSwgMCwg MTd9LA0KPiA+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDRGRkZGLCAweDAyLCAwLCAx OH0sDQo+ID4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwNEZGRkYsIDB4MDMsIDAsIDE5 fSwNCj4gPiArDQo+ID4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwNUZGRkYsIDB4MDAs IDAsIDE2fSwNCj4gPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDA1RkZGRiwgMHgwMSwg MCwgMTd9LA0KPiA+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDVGRkZGLCAweDAyLCAw LCAxOH0sDQo+ID4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwNUZGRkYsIDB4MDMsIDAs IDE5fSwNCj4gPiArDQo+ID4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwNkZGRkYsIDB4 MDAsIDAsIDE2fSwNCj4gPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDA2RkZGRiwgMHgw MSwgMCwgMTd9LA0KPiA+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDZGRkZGLCAweDAy LCAwLCAxOH0sDQo+ID4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwNkZGRkYsIDB4MDMs IDAsIDE5fSwNCj4gPiArDQo+ID4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwN0ZGRkYs IDB4MDAsIDAsIDE2fSwNCj4gPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDA3RkZGRiwg MHgwMSwgMCwgMTd9LA0KPiA+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDdGRkZGLCAw eDAyLCAwLCAxOH0sDQo+ID4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwN0ZGRkYsIDB4 MDMsIDAsIDE5fSwNCj4gPiArDQo+ID4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwOEZG RkYsIDB4MDAsIDAsIDE2fSwNCj4gPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDA4RkZG RiwgMHgwMSwgMCwgMTd9LA0KPiA+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDhGRkZG LCAweDAyLCAwLCAxOH0sDQo+ID4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwOEZGRkYs IDB4MDMsIDAsIDE5fSwNCj4gPiArDQo+ID4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAw OUZGRkYsIDB4MDAsIDAsIDE2fSwNCj4gPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDA5 RkZGRiwgMHgwMSwgMCwgMTd9LA0KPiA+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDlG RkZGLCAweDAyLCAwLCAxOH0sDQo+ID4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwOUZG RkYsIDB4MDMsIDAsIDE5fSwNCj4gPiArDQo+ID4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4 MDAwQUZGRkYsIDB4MDAsIDAsIDE2fSwNCj4gPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgw MDBBRkZGRiwgMHgwMSwgMCwgMTd9LA0KPiA+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAw MEFGRkZGLCAweDAyLCAwLCAxOH0sDQo+ID4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAw QUZGRkYsIDB4MDMsIDAsIDE5fSwNCj4gPiArDQo+ID4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkg ezB4MDAwQkZGRkYsIDB4MDAsIDAsIDE2fSwNCj4gPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7 MHgwMDBCRkZGRiwgMHgwMSwgMCwgMTd9LA0KPiA+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsw eDAwMEJGRkZGLCAweDAyLCAwLCAxOH0sDQo+ID4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4 MDAwQkZGRkYsIDB4MDMsIDAsIDE5fSwNCj4gPiArDQo+ID4gKyAgICAgICAgICAgIFBhY2thZ2Ug KCkgezB4MDAwQ0ZGRkYsIDB4MDAsIDAsIDE2fSwNCj4gPiArICAgICAgICAgICAgUGFja2FnZSAo KSB7MHgwMDBDRkZGRiwgMHgwMSwgMCwgMTd9LA0KPiA+ICsgICAgICAgICAgICBQYWNrYWdlICgp IHsweDAwMENGRkZGLCAweDAyLCAwLCAxOH0sDQo+ID4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkg ezB4MDAwQ0ZGRkYsIDB4MDMsIDAsIDE5fSwNCj4gPiArDQo+ID4gKyAgICAgICAgICAgIFBhY2th Z2UgKCkgezB4MDAwREZGRkYsIDB4MDAsIDAsIDE2fSwNCj4gPiArICAgICAgICAgICAgUGFja2Fn ZSAoKSB7MHgwMDBERkZGRiwgMHgwMSwgMCwgMTd9LA0KPiA+ICsgICAgICAgICAgICBQYWNrYWdl ICgpIHsweDAwMERGRkZGLCAweDAyLCAwLCAxOH0sDQo+ID4gKyAgICAgICAgICAgIFBhY2thZ2Ug KCkgezB4MDAwREZGRkYsIDB4MDMsIDAsIDE5fSwNCj4gPiArDQo+ID4gKyAgICAgICAgICAgIFBh Y2thZ2UgKCkgezB4MDAwRUZGRkYsIDB4MDAsIDAsIDE2fSwNCj4gPiArICAgICAgICAgICAgUGFj a2FnZSAoKSB7MHgwMDBFRkZGRiwgMHgwMSwgMCwgMTd9LA0KPiA+ICsgICAgICAgICAgICBQYWNr YWdlICgpIHsweDAwMEVGRkZGLCAweDAyLCAwQywgMTh9LA0KPiA+ICsgICAgICAgICAgICBQYWNr YWdlICgpIHsweDAwMEVGRkZGLCAweDAzLCAwLCAxOX0sDQo+ID4gKw0KPiA+ICsgICAgICAgICAg ICBQYWNrYWdlICgpIHsweDAwMEZGRkZGLCAweDAwLCAwLCAxNn0sDQo+ID4gKyAgICAgICAgICAg IFBhY2thZ2UgKCkgezB4MDAwRkZGRkYsIDB4MDEsIDAsIDE3fSwNCj4gPiArICAgICAgICAgICAg UGFja2FnZSAoKSB7MHgwMDBGRkZGRiwgMHgwMiwgMCwgMTh9LA0KPiA+ICsgICAgICAgICAgICBQ YWNrYWdlICgpIHsweDAwMEZGRkZGLCAweDAzLCAwLCAxOX0sDQo+ID4gKw0KPiA+ICsgICAgICAg ICAgICBQYWNrYWdlICgpIHsweDAwMDEwRkZGRiwgMHgwMCwgMCwgMTZ9LA0KPiA+ICsgICAgICAg ICAgICBQYWNrYWdlICgpIHsweDAwMDEwRkZGRiwgMHgwMSwgMCwgMTd9LA0KPiA+ICsgICAgICAg ICAgICBQYWNrYWdlICgpIHsweDAwMDEwRkZGRiwgMHgwMiwgMCwgMTh9LA0KPiA+ICsgICAgICAg ICAgICBQYWNrYWdlICgpIHsweDAwMDEwRkZGRiwgMHgwMywgMCwgMTl9LA0KPiA+ICsNCj4gPiAr ICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxMUZGRkYsIDB4MDAsIDAsIDE2fSwNCj4gPiAr ICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxMUZGRkYsIDB4MDEsIDAsIDE3fSwNCj4gPiAr ICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxMUZGRkYsIDB4MDIsIDAsIDE4fSwNCj4gPiAr ICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxMUZGRkYsIDB4MDMsIDAsIDE5fSwNCj4gPiAr DQo+ID4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMTJGRkZGLCAweDAwLCAwLCAxNn0s DQo+ID4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMTJGRkZGLCAweDAxLCAwLCAxN30s DQo+ID4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMTJGRkZGLCAweDAyLCAwLCAxOH0s DQo+ID4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMTJGRkZGLCAweDAzLCAwLCAxOX0s DQo+ID4gKw0KPiA+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDEzRkZGRiwgMHgwMCwg MCwgMTZ9LA0KPiA+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDEzRkZGRiwgMHgwMSwg MCwgMTd9LA0KPiA+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDEzRkZGRiwgMHgwMiwg MCwgMTh9LA0KPiA+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDEzRkZGRiwgMHgwMywg MCwgMTl9LA0KPiA+ICsNCj4gPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxNEZGRkYs IDB4MDAsIDAsIDE2fSwNCj4gPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxNEZGRkYs IDB4MDEsIDAsIDE3fSwNCj4gPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxNEZGRkYs IDB4MDIsIDAsIDE4fSwNCj4gPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxNEZGRkYs IDB4MDMsIDAsIDE5fSwNCj4gPiArDQo+ID4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAw MTVGRkZGLCAweDAwLCAwLCAxNn0sDQo+ID4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAw MTVGRkZGLCAweDAxLCAwLCAxN30sDQo+ID4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAw MTVGRkZGLCAweDAyLCAwLCAxOH0sDQo+ID4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAw MTVGRkZGLCAweDAzLCAwLCAxOX0sDQo+ID4gKw0KPiA+ICsgICAgICAgICAgICBQYWNrYWdlICgp IHsweDAwMDE2RkZGRiwgMHgwMCwgMCwgMTZ9LA0KPiA+ICsgICAgICAgICAgICBQYWNrYWdlICgp IHsweDAwMDE2RkZGRiwgMHgwMSwgMCwgMTd9LA0KPiA+ICsgICAgICAgICAgICBQYWNrYWdlICgp IHsweDAwMDE2RkZGRiwgMHgwMiwgMCwgMTh9LA0KPiA+ICsgICAgICAgICAgICBQYWNrYWdlICgp IHsweDAwMDE2RkZGRiwgMHgwMywgMCwgMTl9LA0KPiA+ICsNCj4gPiArICAgICAgICAgICAgUGFj a2FnZSAoKSB7MHgwMDAxN0ZGRkYsIDB4MDAsIDAsIDE2fSwNCj4gPiArICAgICAgICAgICAgUGFj a2FnZSAoKSB7MHgwMDAxN0ZGRkYsIDB4MDEsIDAsIDE3fSwNCj4gPiArICAgICAgICAgICAgUGFj a2FnZSAoKSB7MHgwMDAxN0ZGRkYsIDB4MDIsIDAsIDE4fSwNCj4gPiArICAgICAgICAgICAgUGFj a2FnZSAoKSB7MHgwMDAxN0ZGRkYsIDB4MDMsIDAsIDE5fSwNCj4gPiArDQo+ID4gKyAgICAgICAg ICAgIFBhY2thZ2UgKCkgezB4MDAwMThGRkZGLCAweDAwLCAwLCAxNn0sDQo+ID4gKyAgICAgICAg ICAgIFBhY2thZ2UgKCkgezB4MDAwMThGRkZGLCAweDAxLCAwLCAxN30sDQo+ID4gKyAgICAgICAg ICAgIFBhY2thZ2UgKCkgezB4MDAwMThGRkZGLCAweDAyLCAwLCAxOH0sDQo+ID4gKyAgICAgICAg ICAgIFBhY2thZ2UgKCkgezB4MDAwMThGRkZGLCAweDAzLCAwLCAxOX0sDQo+ID4gKw0KPiA+ICsg ICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDFFRkZGRiwgMHgwMCwgMCwgMTZ9LA0KPiA+ICsg ICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDFFRkZGRiwgMHgwMSwgMCwgMTd9LA0KPiA+ICsg ICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDFFRkZGRiwgMHgwMiwgMCwgMTh9LA0KPiA+ICsg ICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDFFRkZGRiwgMHgwMywgMCwgMTl9LA0KPiA+ICsN Cj4gPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxOUZGRkYsIDB4MDAsIDAsIDE2fSwN Cj4gPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxOUZGRkYsIDB4MDEsIDAsIDE3fSwN Cj4gPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxOUZGRkYsIDB4MDIsIDAsIDE4fSwN Cj4gPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAxOUZGRkYsIDB4MDMsIDAsIDE5fSwN Cj4gPiArDQo+ID4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMUFGRkZGLCAweDAwLCAw LCAxNn0sDQo+ID4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMUFGRkZGLCAweDAxLCAw LCAxN30sDQo+ID4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMUFGRkZGLCAweDAyLCAw LCAxOH0sDQo+ID4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkgezB4MDAwMUFGRkZGLCAweDAzLCAw LCAxOX0sDQo+ID4gKw0KPiA+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDFCRkZGRiwg MHgwMCwgMCwgMTZ9LA0KPiA+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDFCRkZGRiwg MHgwMSwgMCwgMTd9LA0KPiA+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDFCRkZGRiwg MHgwMiwgMCwgMTh9LA0KPiA+ICsgICAgICAgICAgICBQYWNrYWdlICgpIHsweDAwMDFCRkZGRiwg MHgwMywgMCwgMTl9LA0KPiA+ICsNCj4gPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAx Q0ZGRkYsIDB4MDAsIDAsIDE2fSwNCj4gPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAx Q0ZGRkYsIDB4MDEsIDAsIDE3fSwNCj4gPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAx Q0ZGRkYsIDB4MDIsIDAsIDE4fSwNCj4gPiArICAgICAgICAgICAgUGFja2FnZSAoKSB7MHgwMDAx Q0ZGRkYsIDB4MDMsIDAsIDE5fSwNCj4gPiArDQo+ID4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkg ezB4MDAwMURGRkZGLCAweDAwLCAwLCAxNn0sDQo+ID4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkg ezB4MDAwMURGRkZGLCAweDAxLCAwLCAxN30sDQo+ID4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkg ezB4MDAwMURGRkZGLCAweDAyLCAwLCAxOH0sDQo+ID4gKyAgICAgICAgICAgIFBhY2thZ2UgKCkg ezB4MDAwMURGRkZGLCAweDAzLCAwLCAxOX0sDQo+ID4gKw0KPiA+ICsgICAgICAgICAgICBQYWNr YWdlICgpIHsweDAwMDFGRkZGRiwgMHgwMCwgMCwgMTZ9LA0KPiA+ICsgICAgICAgICAgICBQYWNr YWdlICgpIHsweDAwMDFGRkZGRiwgMHgwMSwgMCwgMTd9LA0KPiA+ICsgICAgICAgICAgICBQYWNr YWdlICgpIHsweDAwMDFGRkZGRiwgMHgwMiwgMCwgMTh9LA0KPiA+ICsgICAgICAgICAgICBQYWNr YWdlICgpIHsweDAwMDFGRkZGRiwgMHgwMywgMCwgMTl9LA0KPiA+ICsgICAgICAgICAgfQ0KPiA+ ICsgICAgICAgICkNCj4gPiArDQo+ID4gKyAgICAgIC8vDQo+ID4gKyAgICAgIC8vIFBDSSB0byBJ U0EgQnJpZGdlIChCdXMgMCwgRGV2aWNlIDcsIEZ1bmN0aW9uIDApDQo+ID4gKyAgICAgIC8vDQo+ ID4gKyAgICAgIERldmljZSAoTFBDKSB7DQo+ID4gKyAgICAgICAgTmFtZSAoX0FEUiwgMHgwMDFG MDAwMCkNCj4gPiArDQo+ID4gKyAgICAgICAgLy8NCj4gPiArICAgICAgICAvLyBQQ0kgSW50ZXJy dXB0IFJvdXRpbmcgQ29uZmlndXJhdGlvbiBSZWdpc3RlcnMNCj4gPiArICAgICAgICAvLw0KPiA+ ICsgICAgICAgIE9wZXJhdGlvblJlZ2lvbiAoUFJSMCwgUENJX0NvbmZpZywgMHg2MCwgMHgwQykN Cj4gPiArICAgICAgICBGaWVsZCAoUFJSMCwgQU5ZQUNDLCBOT0xPQ0ssIFBSRVNFUlZFKSB7DQo+ ID4gKyAgICAgICAgICBQSVJBLCA4LA0KPiA+ICsgICAgICAgICAgUElSQiwgOCwNCj4gPiArICAg ICAgICAgIFBJUkMsIDgsDQo+ID4gKyAgICAgICAgICBQSVJELCA4LA0KPiA+ICsgICAgICAgICAg T2Zmc2V0ICgweDA0KSwNCj4gPiArICAgICAgICAgIFBJUkUsIDgsDQo+ID4gKyAgICAgICAgICBQ SVJGLCA4LA0KPiA+ICsgICAgICAgICAgUElSRywgOCwNCj4gPiArICAgICAgICAgIFBJUkgsIDgN Cj4gPiArICAgICAgICB9DQo+ID4gKw0KPiA+ICsgICAgICAgIC8vDQo+ID4gKyAgICAgICAgLy8g X1NUQSBtZXRob2QgZm9yIExOS0EsIExOS0IsIExOS0MsIExOS0QsIExOS0UsIExOS0YsIExOS0cs IExOS0gNCj4gPiArICAgICAgICAvLw0KPiA+ICsgICAgICAgIE1ldGhvZCAoUFNUQSwgMSwgTm90 U2VyaWFsaXplZCkgew0KPiA+ICsgICAgICAgICAgSWYgKEFuZCAoQXJnMCwgMHg4MCkpIHsNCj4g PiArICAgICAgICAgICAgUmV0dXJuICgweDkpDQo+ID4gKyAgICAgICAgICB9IEVsc2Ugew0KPiA+ ICsgICAgICAgICAgICBSZXR1cm4gKDB4QikNCj4gPiArICAgICAgICAgIH0NCj4gPiArICAgICAg ICB9DQo+ID4gKw0KPiA+ICsgICAgICAgIC8vDQo+ID4gKyAgICAgICAgLy8gX0RJUyBtZXRob2Qg Zm9yIExOS0EsIExOS0IsIExOS0MsIExOS0QsIExOS0UsIExOS0YsIExOS0csIExOS0gNCj4gPiAr ICAgICAgICAvLw0KPiA+ICsgICAgICAgIE1ldGhvZCAoUERJUywgMSwgTm90U2VyaWFsaXplZCkg ew0KPiA+ICsgICAgICAgICAgT3IgKEFyZzAsIDB4ODAsIEFyZzApDQo+ID4gKyAgICAgICAgfQ0K PiA+ICsNCj4gPiArICAgICAgICAvLw0KPiA+ICsgICAgICAgIC8vIF9DUlMgbWV0aG9kIGZvciBM TktBLCBMTktCLCBMTktDLCBMTktELCBMTktFLCBMTktGLCBMTktHLCBMTktIDQo+ID4gKyAgICAg ICAgLy8NCj4gPiArICAgICAgICBNZXRob2QgKFBDUlMsIDEsIE5vdFNlcmlhbGl6ZWQpIHsNCj4g PiArICAgICAgICAgIE5hbWUgKEJVRjAsIFJlc291cmNlVGVtcGxhdGUgKCkge0lSUSAoTGV2ZWws IEFjdGl2ZUxvdywgU2hhcmVkKXswfX0pDQo+ID4gKyAgICAgICAgICAvLw0KPiA+ICsgICAgICAg ICAgLy8gRGVmaW5lIHJlZmVyZW5jZXMgdG8gYnVmZmVyIGVsZW1lbnRzDQo+ID4gKyAgICAgICAg ICAvLw0KPiA+ICsgICAgICAgICAgQ3JlYXRlV29yZEZpZWxkIChCVUYwLCAweDAxLCBJUlFXKSAg Ly8gSVJRIGxvdw0KPiA+ICsgICAgICAgICAgLy8NCj4gPiArICAgICAgICAgIC8vIFdyaXRlIGN1 cnJlbnQgc2V0dGluZ3MgaW50byBJUlEgZGVzY3JpcHRvcg0KPiA+ICsgICAgICAgICAgLy8NCj4g PiArICAgICAgICAgIElmIChBbmQgKEFyZzAsIDB4ODApKSB7DQo+ID4gKyAgICAgICAgICAgIFN0 b3JlIChaZXJvLCBMb2NhbDApDQo+ID4gKyAgICAgICAgICB9IEVsc2Ugew0KPiA+ICsgICAgICAg ICAgICBTdG9yZSAoT25lLCBMb2NhbDApDQo+ID4gKyAgICAgICAgICB9DQo+ID4gKyAgICAgICAg ICAvLw0KPiA+ICsgICAgICAgICAgLy8gU2hpZnQgMSBieSB2YWx1ZSBpbiByZWdpc3RlciA3MA0K PiA+ICsgICAgICAgICAgLy8NCj4gPiArICAgICAgICAgIFNoaWZ0TGVmdCAoTG9jYWwwLCBBbmQg KEFyZzAsIDB4MEYpLCBJUlFXKSAgIC8vIFNhdmUgaW4gYnVmZmVyDQo+ID4gKyAgICAgICAgICBS ZXR1cm4gKEJVRjApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZXR1cm4gQnVm MA0KPiA+ICsgICAgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgICAgLy8NCj4gPiArICAgICAgICAv LyBfUFJTIHJlc291cmNlIGZvciBMTktBLCBMTktCLCBMTktDLCBMTktELCBMTktFLCBMTktGLCBM TktHLCBMTktIDQo+ID4gKyAgICAgICAgLy8NCj4gPiArICAgICAgICBOYW1lIChQUFJTLCBSZXNv dXJjZVRlbXBsYXRlICgpIHsNCj4gPiArICAgICAgICAgIElSUSAoTGV2ZWwsIEFjdGl2ZUxvdywg U2hhcmVkKSB7MywgNCwgNSwgNywgOSwgMTAsIDExLCAxMiwgMTQsIDE1fQ0KPiA+ICsgICAgICAg IH0pDQo+ID4gKw0KPiA+ICsgICAgICAgIC8vDQo+ID4gKyAgICAgICAgLy8gX1NSUyBtZXRob2Qg Zm9yIExOS0EsIExOS0IsIExOS0MsIExOS0QsIExOS0UsIExOS0YsIExOS0csIExOS0gNCj4gPiAr ICAgICAgICAvLw0KPiA+ICsgICAgICAgIE1ldGhvZCAoUFNSUywgMiwgTm90U2VyaWFsaXplZCkg ew0KPiA+ICsgICAgICAgICAgQ3JlYXRlV29yZEZpZWxkIChBcmcxLCAweDAxLCBJUlFXKSAgICAg IC8vIElSUSBsb3cNCj4gPiArICAgICAgICAgIEZpbmRTZXRSaWdodEJpdCAoSVJRVywgTG9jYWww KSAgICAgICAgICAvLyBTZXQgSVJRDQo+ID4gKyAgICAgICAgICBJZiAoTE5vdEVxdWFsIChJUlFX LCBaZXJvKSkgew0KPiA+ICsgICAgICAgICAgICBBbmQgKExvY2FsMCwgMHg3RiwgTG9jYWwwKQ0K PiA+ICsgICAgICAgICAgICBEZWNyZW1lbnQgKExvY2FsMCkNCj4gPiArICAgICAgICAgIH0gRWxz ZSB7DQo+ID4gKyAgICAgICAgICAgIE9yIChMb2NhbDAsIDB4ODAsIExvY2FsMCkNCj4gPiArICAg ICAgICAgIH0NCj4gPiArICAgICAgICAgIFN0b3JlIChMb2NhbDAsIEFyZzApDQo+ID4gKyAgICAg ICAgfQ0KPiA+ICsNCj4gPiArICAgICAgICAvLw0KPiA+ICsgICAgICAgIC8vIFBDSSBJUlEgTGlu ayBBDQo+ID4gKyAgICAgICAgLy8NCj4gPiArICAgICAgICBEZXZpY2UgKExOS0EpIHsNCj4gPiAr ICAgICAgICAgIE5hbWUgKF9ISUQsIEVJU0FJRCgiUE5QMEMwRiIpKQ0KPiA+ICsgICAgICAgICAg TmFtZSAoX1VJRCwgMSkNCj4gPiArDQo+ID4gKyAgICAgICAgICBNZXRob2QgKF9TVEEsIDAsIE5v dFNlcmlhbGl6ZWQpIHsgUmV0dXJuIChQU1RBIChQSVJBKSkgfQ0KPiA+ICsgICAgICAgICAgTWV0 aG9kIChfRElTLCAwLCBOb3RTZXJpYWxpemVkKSB7IFBESVMgKFBJUkEpICB9DQo+ID4gKyAgICAg ICAgICBNZXRob2QgKF9DUlMsIDAsIE5vdFNlcmlhbGl6ZWQpIHsgUmV0dXJuIChQQ1JTIChQSVJB KSkgfQ0KPiA+ICsgICAgICAgICAgTWV0aG9kIChfUFJTLCAwLCBOb3RTZXJpYWxpemVkKSB7IFJl dHVybiAoUFBSUykgfQ0KPiA+ICsgICAgICAgICAgTWV0aG9kIChfU1JTLCAxLCBOb3RTZXJpYWxp emVkKSB7IFBTUlMgKFBJUkEsIEFyZzApIH0NCj4gPiArICAgICAgICB9DQo+ID4gKw0KPiA+ICsg ICAgICAgIC8vDQo+ID4gKyAgICAgICAgLy8gUENJIElSUSBMaW5rIEINCj4gPiArICAgICAgICAv Lw0KPiA+ICsgICAgICAgIERldmljZSAoTE5LQikgew0KPiA+ICsgICAgICAgICAgTmFtZSAoX0hJ RCwgRUlTQUlEKCJQTlAwQzBGIikpDQo+ID4gKyAgICAgICAgICBOYW1lIChfVUlELCAyKQ0KPiA+ ICsNCj4gPiArICAgICAgICAgIE1ldGhvZCAoX1NUQSwgMCwgTm90U2VyaWFsaXplZCkgeyBSZXR1 cm4gKFBTVEEgKFBJUkIpKSB9DQo+ID4gKyAgICAgICAgICBNZXRob2QgKF9ESVMsIDAsIE5vdFNl cmlhbGl6ZWQpIHsgUERJUyAoUElSQikgfQ0KPiA+ICsgICAgICAgICAgTWV0aG9kIChfQ1JTLCAw LCBOb3RTZXJpYWxpemVkKSB7IFJldHVybiAoUENSUyAoUElSQikpIH0NCj4gPiArICAgICAgICAg IE1ldGhvZCAoX1BSUywgMCwgTm90U2VyaWFsaXplZCkgeyBSZXR1cm4gKFBQUlMpIH0NCj4gPiAr ICAgICAgICAgIE1ldGhvZCAoX1NSUywgMSwgTm90U2VyaWFsaXplZCkgeyBQU1JTIChQSVJCLCBB cmcwKSB9DQo+ID4gKyAgICAgICAgfQ0KPiA+ICsNCj4gPiArICAgICAgICAvLw0KPiA+ICsgICAg ICAgIC8vIFBDSSBJUlEgTGluayBDDQo+ID4gKyAgICAgICAgLy8NCj4gPiArICAgICAgICBEZXZp Y2UgKExOS0MpIHsNCj4gPiArICAgICAgICAgIE5hbWUgKF9ISUQsIEVJU0FJRCgiUE5QMEMwRiIp KQ0KPiA+ICsgICAgICAgICAgTmFtZSAoX1VJRCwgMykNCj4gPiArDQo+ID4gKyAgICAgICAgICBN ZXRob2QgKF9TVEEsIDAsIE5vdFNlcmlhbGl6ZWQpIHsgUmV0dXJuIChQU1RBIChQSVJDKSkgfQ0K PiA+ICsgICAgICAgICAgTWV0aG9kIChfRElTLCAwLCBOb3RTZXJpYWxpemVkKSB7IFBESVMgKFBJ UkMpIH0NCj4gPiArICAgICAgICAgIE1ldGhvZCAoX0NSUywgMCwgTm90U2VyaWFsaXplZCkgeyBS ZXR1cm4gKFBDUlMgKFBJUkMpKSB9DQo+ID4gKyAgICAgICAgICBNZXRob2QgKF9QUlMsIDAsIE5v dFNlcmlhbGl6ZWQpIHsgUmV0dXJuIChQUFJTKSB9DQo+ID4gKyAgICAgICAgICBNZXRob2QgKF9T UlMsIDEsIE5vdFNlcmlhbGl6ZWQpIHsgUFNSUyAoUElSQywgQXJnMCkgfQ0KPiA+ICsgICAgICAg IH0NCj4gPiArDQo+ID4gKyAgICAgICAgLy8NCj4gPiArICAgICAgICAvLyBQQ0kgSVJRIExpbmsg RA0KPiA+ICsgICAgICAgIC8vDQo+ID4gKyAgICAgICAgRGV2aWNlIChMTktEKSB7DQo+ID4gKyAg ICAgICAgICBOYW1lIChfSElELCBFSVNBSUQoIlBOUDBDMEYiKSkNCj4gPiArICAgICAgICAgIE5h bWUgKF9VSUQsIDQpDQo+ID4gKw0KPiA+ICsgICAgICAgICAgTWV0aG9kIChfU1RBLCAwLCBOb3RT ZXJpYWxpemVkKSB7IFJldHVybiAoUFNUQSAoUElSRCkpIH0NCj4gPiArICAgICAgICAgIE1ldGhv ZCAoX0RJUywgMCwgTm90U2VyaWFsaXplZCkgeyBQRElTIChQSVJEKSB9DQo+ID4gKyAgICAgICAg ICBNZXRob2QgKF9DUlMsIDAsIE5vdFNlcmlhbGl6ZWQpIHsgUmV0dXJuIChQQ1JTIChQSVJEKSkg fQ0KPiA+ICsgICAgICAgICAgTWV0aG9kIChfUFJTLCAwLCBOb3RTZXJpYWxpemVkKSB7IFJldHVy biAoUFBSUykgfQ0KPiA+ICsgICAgICAgICAgTWV0aG9kIChfU1JTLCAxLCBOb3RTZXJpYWxpemVk KSB7IFBTUlMgKFBJUkQsIEFyZzApIH0NCj4gPiArICAgICAgICB9DQo+ID4gKw0KPiA+ICsgICAg ICAgIC8vDQo+ID4gKyAgICAgICAgLy8gUENJIElSUSBMaW5rIEUNCj4gPiArICAgICAgICAvLw0K PiA+ICsgICAgICAgIERldmljZSAoTE5LRSkgew0KPiA+ICsgICAgICAgICAgTmFtZSAoX0hJRCwg RUlTQUlEKCJQTlAwQzBGIikpDQo+ID4gKyAgICAgICAgICBOYW1lIChfVUlELCA1KQ0KPiA+ICsN Cj4gPiArICAgICAgICAgIE1ldGhvZCAoX1NUQSwgMCwgTm90U2VyaWFsaXplZCkgeyBSZXR1cm4g KFBTVEEgKFBJUkUpKSB9DQo+ID4gKyAgICAgICAgICBNZXRob2QgKF9ESVMsIDAsIE5vdFNlcmlh bGl6ZWQpIHsgUERJUyAoUElSRSkgfQ0KPiA+ICsgICAgICAgICAgTWV0aG9kIChfQ1JTLCAwLCBO b3RTZXJpYWxpemVkKSB7IFJldHVybiAoUENSUyAoUElSRSkpIH0NCj4gPiArICAgICAgICAgIE1l dGhvZCAoX1BSUywgMCwgTm90U2VyaWFsaXplZCkgeyBSZXR1cm4gKFBQUlMpIH0NCj4gPiArICAg ICAgICAgIE1ldGhvZCAoX1NSUywgMSwgTm90U2VyaWFsaXplZCkgeyBQU1JTIChQSVJFLCBBcmcw KSB9DQo+ID4gKyAgICAgICAgfQ0KPiA+ICsNCj4gPiArICAgICAgICAvLw0KPiA+ICsgICAgICAg IC8vIFBDSSBJUlEgTGluayBGDQo+ID4gKyAgICAgICAgLy8NCj4gPiArICAgICAgICBEZXZpY2Ug KExOS0YpIHsNCj4gPiArICAgICAgICAgIE5hbWUgKF9ISUQsIEVJU0FJRCgiUE5QMEMwRiIpKQ0K PiA+ICsgICAgICAgICAgTmFtZSAoX1VJRCwgNikNCj4gPiArDQo+ID4gKyAgICAgICAgICBNZXRo b2QgKF9TVEEsIDAsIE5vdFNlcmlhbGl6ZWQpIHsgUmV0dXJuIChQU1RBIChQSVJGKSkgfQ0KPiA+ ICsgICAgICAgICAgTWV0aG9kIChfRElTLCAwLCBOb3RTZXJpYWxpemVkKSB7IFBESVMgKFBJUkYp IH0NCj4gPiArICAgICAgICAgIE1ldGhvZCAoX0NSUywgMCwgTm90U2VyaWFsaXplZCkgeyBSZXR1 cm4gKFBDUlMgKFBJUkYpKSB9DQo+ID4gKyAgICAgICAgICBNZXRob2QgKF9QUlMsIDAsIE5vdFNl cmlhbGl6ZWQpIHsgUmV0dXJuIChQUFJTKSB9DQo+ID4gKyAgICAgICAgICBNZXRob2QgKF9TUlMs IDEsIE5vdFNlcmlhbGl6ZWQpIHsgUFNSUyAoUElSRiwgQXJnMCkgfQ0KPiA+ICsgICAgICAgIH0N Cj4gPiArDQo+ID4gKyAgICAgICAgLy8NCj4gPiArICAgICAgICAvLyBQQ0kgSVJRIExpbmsgRw0K PiA+ICsgICAgICAgIC8vDQo+ID4gKyAgICAgICAgRGV2aWNlIChMTktHKSB7DQo+ID4gKyAgICAg ICAgICBOYW1lIChfSElELCBFSVNBSUQoIlBOUDBDMEYiKSkNCj4gPiArICAgICAgICAgIE5hbWUg KF9VSUQsIDcpDQo+ID4gKw0KPiA+ICsgICAgICAgICAgTWV0aG9kIChfU1RBLCAwLCBOb3RTZXJp YWxpemVkKSB7IFJldHVybiAoUFNUQSAoUElSRykpIH0NCj4gPiArICAgICAgICAgIE1ldGhvZCAo X0RJUywgMCwgTm90U2VyaWFsaXplZCkgeyBQRElTIChQSVJHKSB9DQo+ID4gKyAgICAgICAgICBN ZXRob2QgKF9DUlMsIDAsIE5vdFNlcmlhbGl6ZWQpIHsgUmV0dXJuIChQQ1JTIChQSVJHKSkgfQ0K PiA+ICsgICAgICAgICAgTWV0aG9kIChfUFJTLCAwLCBOb3RTZXJpYWxpemVkKSB7IFJldHVybiAo UFBSUykgfQ0KPiA+ICsgICAgICAgICAgTWV0aG9kIChfU1JTLCAxLCBOb3RTZXJpYWxpemVkKSB7 IFBTUlMgKFBJUkcsIEFyZzApIH0NCj4gPiArICAgICAgICB9DQo+ID4gKw0KPiA+ICsgICAgICAg IC8vDQo+ID4gKyAgICAgICAgLy8gUENJIElSUSBMaW5rIEgNCj4gPiArICAgICAgICAvLw0KPiA+ ICsgICAgICAgIERldmljZSAoTE5LSCkgew0KPiA+ICsgICAgICAgICAgTmFtZSAoX0hJRCwgRUlT QUlEKCJQTlAwQzBGIikpDQo+ID4gKyAgICAgICAgICBOYW1lIChfVUlELCA4KQ0KPiA+ICsNCj4g PiArICAgICAgICAgIE1ldGhvZCAoX1NUQSwgMCwgTm90U2VyaWFsaXplZCkgeyBSZXR1cm4gKFBT VEEgKFBJUkgpKSB9DQo+ID4gKyAgICAgICAgICBNZXRob2QgKF9ESVMsIDAsIE5vdFNlcmlhbGl6 ZWQpIHsgUERJUyAoUElSSCkgfQ0KPiA+ICsgICAgICAgICAgTWV0aG9kIChfQ1JTLCAwLCBOb3RT ZXJpYWxpemVkKSB7IFJldHVybiAoUENSUyAoUElSSCkpIH0NCj4gPiArICAgICAgICAgIE1ldGhv ZCAoX1BSUywgMCwgTm90U2VyaWFsaXplZCkgeyBSZXR1cm4gKFBQUlMpIH0NCj4gPiArICAgICAg ICAgIE1ldGhvZCAoX1NSUywgMSwgTm90U2VyaWFsaXplZCkgeyBQU1JTIChQSVJILCBBcmcwKSB9 DQo+ID4gKyAgICAgICAgfQ0KPiA+ICsNCj4gPiArICAgICAgICAvLw0KPiA+ICsgICAgICAgIC8v IFByb2dyYW1tYWJsZSBJbnRlcnJ1cHQgQ29udHJvbGxlciAoUElDKQ0KPiA+ICsgICAgICAgIC8v DQo+ID4gKyAgICAgICAgRGV2aWNlKFBJQykgew0KPiA+ICsgICAgICAgICAgTmFtZSAoX0hJRCwg RUlTQUlEICgiUE5QMDAwMCIpKQ0KPiA+ICsgICAgICAgICAgTmFtZSAoX0NSUywgUmVzb3VyY2VU ZW1wbGF0ZSAoKSB7DQo+ID4gKyAgICAgICAgICAgIElPIChEZWNvZGUxNiwgMHgwMjAsIDB4MDIw LCAweDAwLCAweDAyKQ0KPiA+ICsgICAgICAgICAgICBJTyAoRGVjb2RlMTYsIDB4MEEwLCAweDBB MCwgMHgwMCwgMHgwMikNCj4gPiArICAgICAgICAgICAgSU8gKERlY29kZTE2LCAweDREMCwgMHg0 RDAsIDB4MDAsIDB4MDIpDQo+ID4gKyAgICAgICAgICAgIElSUU5vRmxhZ3MgKCkgezJ9DQo+ID4g KyAgICAgICAgICB9KQ0KPiA+ICsgICAgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgICAgLy8NCj4g PiArICAgICAgICAvLyBJU0EgRE1BDQo+ID4gKyAgICAgICAgLy8NCj4gPiArICAgICAgICBEZXZp Y2UgKERNQUMpIHsNCj4gPiArICAgICAgICAgIE5hbWUgKF9ISUQsIEVJU0FJRCAoIlBOUDAyMDAi KSkNCj4gPiArICAgICAgICAgIE5hbWUgKF9DUlMsIFJlc291cmNlVGVtcGxhdGUgKCkgew0KPiA+ ICsgICAgICAgICAgICBJTyAoRGVjb2RlMTYsIDB4MDAsIDB4MDAsIDAsIDB4MTApDQo+ID4gKyAg ICAgICAgICAgIElPIChEZWNvZGUxNiwgMHg4MSwgMHg4MSwgMCwgMHgwMykNCj4gPiArICAgICAg ICAgICAgSU8gKERlY29kZTE2LCAweDg3LCAweDg3LCAwLCAweDAxKQ0KPiA+ICsgICAgICAgICAg ICBJTyAoRGVjb2RlMTYsIDB4ODksIDB4ODksIDAsIDB4MDMpDQo+ID4gKyAgICAgICAgICAgIElP IChEZWNvZGUxNiwgMHg4ZiwgMHg4ZiwgMCwgMHgwMSkNCj4gPiArICAgICAgICAgICAgSU8gKERl Y29kZTE2LCAweGMwLCAweGMwLCAwLCAweDIwKQ0KPiA+ICsgICAgICAgICAgICBETUEgKENvbXBh dGliaWxpdHksIE5vdEJ1c01hc3RlciwgVHJhbnNmZXI4KSB7NH0NCj4gPiArICAgICAgICAgIH0p DQo+ID4gKyAgICAgICAgfQ0KPiA+ICsNCj4gPiArICAgICAgICAvLw0KPiA+ICsgICAgICAgIC8v IDgyNTQgVGltZXINCj4gPiArICAgICAgICAvLw0KPiA+ICsgICAgICAgIERldmljZShUTVIpIHsN Cj4gPiArICAgICAgICAgIE5hbWUoX0hJRCxFSVNBSUQoIlBOUDAxMDAiKSkNCj4gPiArICAgICAg ICAgIE5hbWUoX0NSUywgUmVzb3VyY2VUZW1wbGF0ZSAoKSB7DQo+ID4gKyAgICAgICAgICAgIElP IChEZWNvZGUxNiwgMHg0MCwgMHg0MCwgMHgwMCwgMHgwNCkNCj4gPiArICAgICAgICAgICAgSVJR Tm9GbGFncyAoKSB7MH0NCj4gPiArICAgICAgICAgIH0pDQo+ID4gKyAgICAgICAgfQ0KPiA+ICsN Cj4gPiArICAgICAgICAvLw0KPiA+ICsgICAgICAgIC8vIFJlYWwgVGltZSBDbG9jaw0KPiA+ICsg ICAgICAgIC8vDQo+ID4gKyAgICAgICAgRGV2aWNlIChSVEMpIHsNCj4gPiArICAgICAgICAgIE5h bWUgKF9ISUQsIEVJU0FJRCAoIlBOUDBCMDAiKSkNCj4gPiArICAgICAgICAgIE5hbWUgKF9DUlMs IFJlc291cmNlVGVtcGxhdGUgKCkgew0KPiA+ICsgICAgICAgICAgICBJTyAoRGVjb2RlMTYsIDB4 NzAsIDB4NzAsIDB4MDAsIDB4MDIpDQo+ID4gKyAgICAgICAgICAgIElSUU5vRmxhZ3MgKCkgezh9 DQo+ID4gKyAgICAgICAgICB9KQ0KPiA+ICsgICAgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgICAg Ly8NCj4gPiArICAgICAgICAvLyBQQ0FUIFNwZWFrZXINCj4gPiArICAgICAgICAvLw0KPiA+ICsg ICAgICAgIERldmljZShTUEtSKSB7DQo+ID4gKyAgICAgICAgICBOYW1lIChfSElELCBFSVNBSUQo IlBOUDA4MDAiKSkNCj4gPiArICAgICAgICAgIE5hbWUgKF9DUlMsIFJlc291cmNlVGVtcGxhdGUg KCkgew0KPiA+ICsgICAgICAgICAgICBJTyAoRGVjb2RlMTYsIDB4NjEsIDB4NjEsIDB4MDEsIDB4 MDEpDQo+ID4gKyAgICAgICAgICB9KQ0KPiA+ICsgICAgICAgIH0NCj4gPiArDQo+ID4gKyAgICAg ICAgLy8NCj4gPiArICAgICAgICAvLyBGbG9hdGluZyBQb2ludCBDb3Byb2Nlc3Nvcg0KPiA+ICsg ICAgICAgIC8vDQo+ID4gKyAgICAgICAgRGV2aWNlKEZQVSkgew0KPiA+ICsgICAgICAgICAgTmFt ZSAoX0hJRCwgRUlTQUlEKCJQTlAwQzA0IikpDQo+ID4gKyAgICAgICAgICBOYW1lIChfQ1JTLCBS ZXNvdXJjZVRlbXBsYXRlICgpIHsNCj4gPiArICAgICAgICAgICAgSU8gKERlY29kZTE2LCAweEYw LCAweEYwLCAweDAwLCAweDEwKQ0KPiA+ICsgICAgICAgICAgICBJUlFOb0ZsYWdzICgpIHsxM30N Cj4gPiArICAgICAgICAgIH0pDQo+ID4gKyAgICAgICAgfQ0KPiA+ICsNCj4gPiArICAgICAgICAv Lw0KPiA+ICsgICAgICAgIC8vIEdlbmVyaWMgbW90aGVyYm9hcmQgZGV2aWNlcyBhbmQgcGllY2Vz IHRoYXQgZG9uJ3QgZml0IGFueXdoZXJlIGVsc2UNCj4gPiArICAgICAgICAvLw0KPiA+ICsgICAg ICAgIERldmljZShYVFJBKSB7DQo+ID4gKyAgICAgICAgICBOYW1lIChfSElELCBFSVNBSUQgKCJQ TlAwQzAyIikpDQo+ID4gKyAgICAgICAgICBOYW1lIChfVUlELCAweDAxKQ0KPiA+ICsgICAgICAg ICAgTmFtZSAoX0NSUywgUmVzb3VyY2VUZW1wbGF0ZSAoKSB7DQo+ID4gKyAgICAgICAgICAgIElP IChEZWNvZGUxNiwgMHgwMTAsIDB4MDEwLCAweDAwLCAweDEwKQ0KPiA+ICsgICAgICAgICAgICBJ TyAoRGVjb2RlMTYsIDB4MDIyLCAweDAyMiwgMHgwMCwgMHgxRSkNCj4gPiArICAgICAgICAgICAg SU8gKERlY29kZTE2LCAweDA0NCwgMHgwNDQsIDB4MDAsIDB4MUMpDQo+ID4gKyAgICAgICAgICAg IElPIChEZWNvZGUxNiwgMHgwNjIsIDB4MDYyLCAweDAwLCAweDAyKQ0KPiA+ICsgICAgICAgICAg ICBJTyAoRGVjb2RlMTYsIDB4MDY1LCAweDA2NSwgMHgwMCwgMHgwQikNCj4gPiArICAgICAgICAg ICAgSU8gKERlY29kZTE2LCAweDA3MiwgMHgwNzIsIDB4MDAsIDB4MEUpDQo+ID4gKyAgICAgICAg ICAgIElPIChEZWNvZGUxNiwgMHgwODAsIDB4MDgwLCAweDAwLCAweDAxKQ0KPiA+ICsgICAgICAg ICAgICBJTyAoRGVjb2RlMTYsIDB4MDg0LCAweDA4NCwgMHgwMCwgMHgwMykNCj4gPiArICAgICAg ICAgICAgSU8gKERlY29kZTE2LCAweDA4OCwgMHgwODgsIDB4MDAsIDB4MDEpDQo+ID4gKyAgICAg ICAgICAgIElPIChEZWNvZGUxNiwgMHgwOGMsIDB4MDhjLCAweDAwLCAweDAzKQ0KPiA+ICsgICAg ICAgICAgICBJTyAoRGVjb2RlMTYsIDB4MDkwLCAweDA5MCwgMHgwMCwgMHgxMCkNCj4gPiArICAg ICAgICAgICAgSU8gKERlY29kZTE2LCAweDBBMiwgMHgwQTIsIDB4MDAsIDB4MUUpDQo+ID4gKyAg ICAgICAgICAgIElPIChEZWNvZGUxNiwgMHgwRTAsIDB4MEUwLCAweDAwLCAweDEwKQ0KPiA+ICsg ICAgICAgICAgICBJTyAoRGVjb2RlMTYsIDB4MUUwLCAweDFFMCwgMHgwMCwgMHgxMCkNCj4gPiAr ICAgICAgICAgICAgSU8gKERlY29kZTE2LCAweDE2MCwgMHgxNjAsIDB4MDAsIDB4MTApDQo+ID4g KyAgICAgICAgICAgIElPIChEZWNvZGUxNiwgMHgyNzgsIDB4Mjc4LCAweDAwLCAweDA4KQ0KPiA+ ICsgICAgICAgICAgICBJTyAoRGVjb2RlMTYsIDB4MzcwLCAweDM3MCwgMHgwMCwgMHgwMikNCj4g PiArICAgICAgICAgICAgSU8gKERlY29kZTE2LCAweDM3OCwgMHgzNzgsIDB4MDAsIDB4MDgpDQo+ ID4gKyAgICAgICAgICAgIElPIChEZWNvZGUxNiwgMHg0MDAsIDB4NDAwLCAweDAwLCAweDQwKSAg ICAgICAvLyBQTUJMSzENCj4gPiArICAgICAgICAgICAgSU8gKERlY29kZTE2LCAweDQ0MCwgMHg0 NDAsIDB4MDAsIDB4MTApDQo+ID4gKyAgICAgICAgICAgIElPIChEZWNvZGUxNiwgMHg2NzgsIDB4 Njc4LCAweDAwLCAweDA4KQ0KPiA+ICsgICAgICAgICAgICBJTyAoRGVjb2RlMTYsIDB4Nzc4LCAw eDc3OCwgMHgwMCwgMHgwOCkNCj4gPiArICAgICAgICAgICAgTWVtb3J5MzJGaXhlZCAoUmVhZE9u bHksIDB4RkVDMDAwMDAsIDB4MTAwMCkgIC8vIElPIEFQSUMNCj4gPiArICAgICAgICAgICAgTWVt b3J5MzJGaXhlZCAoUmVhZE9ubHksIDB4RkVFMDAwMDAsIDB4MTAwMDAwKSAvLyBMQVBJQw0KPiA+ ICsgICAgICAgICAgfSkNCj4gPiArICAgICAgICB9DQo+ID4gKw0KPiA+ICsgICAgICAgIC8vDQo+ ID4gKyAgICAgICAgLy8gUFMvMiBLZXlib2FyZCBhbmQgUEMvQVQgRW5oYW5jZWQgS2V5Ym9hcmQg MTAxLzEwMg0KPiA+ICsgICAgICAgIC8vDQo+ID4gKyAgICAgICAgRGV2aWNlIChQUzJLKSB7DQo+ ID4gKyAgICAgICAgICBOYW1lIChfSElELCBFSVNBSUQgKCJQTlAwMzAzIikpDQo+ID4gKyAgICAg ICAgICBOYW1lIChfQ0lELCBFSVNBSUQgKCJQTlAwMzBCIikpDQo+ID4gKyAgICAgICAgICBOYW1l KF9DUlMsUmVzb3VyY2VUZW1wbGF0ZSgpIHsNCj4gPiArICAgICAgICAgICAgSU8gKERlY29kZTE2 LCAweDYwLCAweDYwLCAweDAwLCAweDAxKQ0KPiA+ICsgICAgICAgICAgICBJTyAoRGVjb2RlMTYs IDB4NjQsIDB4NjQsIDB4MDAsIDB4MDEpDQo+ID4gKyAgICAgICAgICAgIElSUU5vRmxhZ3MgKCkg ezF9DQo+ID4gKyAgICAgICAgICB9KQ0KPiA+ICsgICAgICAgIH0NCj4gPiArDQo+ID4gKyAgICAg ICAgLy8NCj4gPiArICAgICAgICAvLyBQUy8yIE1vdXNlIGFuZCBNaWNyb3NvZnQgTW91c2UNCj4g PiArICAgICAgICAvLw0KPiA+ICsgICAgICAgIERldmljZSAoUFMyTSkgeyAgLy8gUFMvMiBzdHlw ZSBtb3VzZSBwb3J0DQo+ID4gKyAgICAgICAgICBOYW1lIChfSElELCBFSVNBSUQgKCJQTlAwRjAz IikpDQo+ID4gKyAgICAgICAgICBOYW1lIChfQ0lELCBFSVNBSUQgKCJQTlAwRjEzIikpDQo+ID4g KyAgICAgICAgICBOYW1lIChfQ1JTLCBSZXNvdXJjZVRlbXBsYXRlKCkgew0KPiA+ICsgICAgICAg ICAgICBJUlFOb0ZsYWdzICgpIHsxMn0NCj4gPiArICAgICAgICAgIH0pDQo+ID4gKyAgICAgICAg fQ0KPiA+ICsNCj4gPiArICAgICAgICAvLw0KPiA+ICsgICAgICAgIC8vIFVBUlQgU2VyaWFsIFBv cnQgLSBDT00xDQo+ID4gKyAgICAgICAgLy8NCj4gPiArICAgICAgICBEZXZpY2UgKFVBUjEpIHsN Cj4gPiArICAgICAgICAgIE5hbWUgKF9ISUQsIEVJU0FJRCAoIlBOUDA1MDEiKSkNCj4gPiArICAg ICAgICAgIE5hbWUgKF9ERE4sICJDT00xIikNCj4gPiArICAgICAgICAgIE5hbWUgKF9VSUQsIDB4 MDEpDQo+ID4gKyAgICAgICAgICBOYW1lKF9DUlMsUmVzb3VyY2VUZW1wbGF0ZSgpIHsNCj4gPiAr ICAgICAgICAgICAgSU8gKERlY29kZTE2LCAweDNGOCwgMHgzRjgsIDB4MDAsIDB4MDgpDQo+ID4g KyAgICAgICAgICAgIElSUSAoRWRnZSwgQWN0aXZlSGlnaCwgRXhjbHVzaXZlLCApIHs0fQ0KPiA+ ICsgICAgICAgICAgfSkNCj4gPiArICAgICAgICB9DQo+ID4gKw0KPiA+ICsgICAgICAgIC8vDQo+ ID4gKyAgICAgICAgLy8gVUFSVCBTZXJpYWwgUG9ydCAtIENPTTINCj4gPiArICAgICAgICAvLw0K PiA+ICsgICAgICAgIERldmljZSAoVUFSMikgew0KPiA+ICsgICAgICAgICAgTmFtZSAoX0hJRCwg RUlTQUlEICgiUE5QMDUwMSIpKQ0KPiA+ICsgICAgICAgICAgTmFtZSAoX0RETiwgIkNPTTIiKQ0K PiA+ICsgICAgICAgICAgTmFtZSAoX1VJRCwgMHgwMikNCj4gPiArICAgICAgICAgIE5hbWUoX0NS UyxSZXNvdXJjZVRlbXBsYXRlKCkgew0KPiA+ICsgICAgICAgICAgICBJTyAoRGVjb2RlMTYsIDB4 MkY4LCAweDJGOCwgMHgwMCwgMHgwOCkNCj4gPiArICAgICAgICAgICAgSVJRIChFZGdlLCBBY3Rp dmVIaWdoLCBFeGNsdXNpdmUsICkgezN9DQo+ID4gKyAgICAgICAgICB9KQ0KPiA+ICsgICAgICAg IH0NCj4gPiArICAgICAgfQ0KPiA+ICsJfQ0KPiA+ICsgIH0NCj4gPiArfQ0KPiA+IGRpZmYgLS1n aXQgYS9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvQWNwaVRhYmxlcy9QbGF0Zm9y bS5oDQo+ID4gYi9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvQWNwaVRhYmxlcy9Q bGF0Zm9ybS5oDQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRleCAwMDAwMDAwMDAw Li42Mzk1ZWMxMWUyDQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL1BsYXRmb3JtL0ludGVs L1NpbWljc09wZW5Cb2FyZFBrZy9BY3BpVGFibGVzL1BsYXRmb3JtLmgNCj4gPiBAQCAtMCwwICsx LDc1IEBADQo+ID4gKy8qKiBAZmlsZQ0KPiA+ICsgIFBsYXRmb3JtIHNwZWNpZmljIGRlZmluZXMg Zm9yIGNvbnN0cnVjdGluZyBBQ1BJIHRhYmxlcw0KPiA+ICsNCj4gPiArICBDb3B5cmlnaHQgKGMp IDIwMTMgLSAyMDA4IEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLiA8QlI+ DQo+ID4gKw0KPiA+ICsgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0 ZW50DQo+ID4gKyoqLw0KPiA+ICsNCj4gPiArI2lmbmRlZiBfUGxhdGZvcm1faF9JTkNMVURFRF8N Cj4gPiArI2RlZmluZSBfUGxhdGZvcm1faF9JTkNMVURFRF8NCj4gPiArDQo+ID4gKyNpbmNsdWRl IDxQaUR4ZS5oPg0KPiA+ICsjaW5jbHVkZSA8SW5kdXN0cnlTdGFuZGFyZC9BY3BpLmg+DQo+ID4g Kw0KPiA+ICsvLw0KPiA+ICsvLyBBQ1BJIHRhYmxlIGluZm9ybWF0aW9uIHVzZWQgdG8gaW5pdGlh bGl6ZSB0YWJsZXMuDQo+ID4gKy8vDQo+ID4gKyNkZWZpbmUgRUZJX0FDUElfT0VNX0lEICAgICAg ICAgICAnTycsJ1YnLCdNJywnRicsJyAnLCcgJyAgIC8vIE9FTUlEIDYgYnl0ZXMgbG9uZw0KPiA+ ICsjZGVmaW5lIEVGSV9BQ1BJX09FTV9UQUJMRV9JRA0KPiA+IFNJR05BVFVSRV82NCgnTycsJ1Yn LCdNJywnRicsJ0UnLCdEJywnSycsJzInKSAvLyBPRU0gdGFibGUgaWQgOCBieXRlcyBsb25nDQo+ ID4gKyNkZWZpbmUgRUZJX0FDUElfT0VNX1JFVklTSU9OICAgICAweDAyMDAwODIwDQo+ID4gKyNk ZWZpbmUgRUZJX0FDUElfQ1JFQVRPUl9JRCAgICAgICBTSUdOQVRVUkVfMzIoJ08nLCdWJywnTScs J0YnKQ0KPiA+ICsjZGVmaW5lIEVGSV9BQ1BJX0NSRUFUT1JfUkVWSVNJT04gMHgwMDAwMDA5Nw0K PiA+ICsNCj4gPiArI2RlZmluZSBJTlRfTU9ERUwgICAgICAgMHgwMQ0KPiA+ICsjZGVmaW5lIFND SV9JTlRfVkVDVE9SICAweDAwMDkNCj4gPiArI2RlZmluZSBTTUlfQ01EX0lPX1BPUlQgMHhCMg0K PiA+ICsjZGVmaW5lIEFDUElfRU5BQkxFICAgICAweDBFMQ0KPiA+ICsjZGVmaW5lIEFDUElfRElT QUJMRSAgICAweDAxRQ0KPiA+ICsjZGVmaW5lIFM0QklPU19SRVEgICAgICAweDAwDQo+ID4gKyNk ZWZpbmUgUE0xYV9FVlRfQkxLICAgIDB4MDAwMDA0MDANCj4gPiArI2RlZmluZSBQTTFiX0VWVF9C TEsgICAgMHgwMDAwMDAwMA0KPiA+ICsjZGVmaW5lIFBNMWFfQ05UX0JMSyAgICAweDAwMDAwNDA0 DQo+ID4gKyNkZWZpbmUgUE0xYl9DTlRfQkxLICAgIDB4MDAwMDAwMDANCj4gPiArI2RlZmluZSBQ TTJfQ05UX0JMSyAgICAgMHgwMDAwMDQ1MA0KPiA+ICsjZGVmaW5lIFBNX1RNUl9CTEsgICAgICAw eDAwMDAwNDA4DQo+ID4gKyNkZWZpbmUgR1BFMF9CTEsgICAgICAgIDB4MDAwMDA0MjANCj4gPiAr I2RlZmluZSBHUEUxX0JMSyAgICAgICAgMHgwMDAwMDAwMA0KPiA+ICsjZGVmaW5lIFBNMV9FVlRf TEVOICAgICAweDA0DQo+ID4gKyNkZWZpbmUgUE0xX0NOVF9MRU4gICAgIDB4MDQNCj4gPiArI2Rl ZmluZSBQTTJfQ05UX0xFTiAgICAgMHgwMQ0KPiA+ICsjZGVmaW5lIFBNX1RNX0xFTiAgICAgICAw eDA0DQo+ID4gKyNkZWZpbmUgR1BFMF9CTEtfTEVOICAgIDB4MTANCj4gPiArI2RlZmluZSBHUEUx X0JMS19MRU4gICAgMHgwMA0KPiA+ICsjZGVmaW5lIEdQRTFfQkFTRSAgICAgICAweDAwDQo+ID4g KyNkZWZpbmUgUkVTRVJWRUQgICAgICAgIDB4MDANCj4gPiArI2RlZmluZSBQX0xWTDJfTEFUICAg ICAgMHgwMDY1DQo+ID4gKyNkZWZpbmUgUF9MVkwzX0xBVCAgICAgIDB4MDNFOQ0KPiA+ICsjZGVm aW5lIEZMVVNIX1NJWkUgICAgICAweDA0MDANCj4gPiArI2RlZmluZSBGTFVTSF9TVFJJREUgICAg MHgwMDEwDQo+ID4gKyNkZWZpbmUgRFVUWV9PRkZTRVQgICAgIDB4MDANCj4gPiArI2RlZmluZSBE VVRZX1dJRFRIICAgICAgMHgwMA0KPiA+ICsjZGVmaW5lIERBWV9BTFJNICAgICAgICAweDBEDQo+ ID4gKyNkZWZpbmUgTU9OX0FMUk0gICAgICAgIDB4MDANCj4gPiArI2RlZmluZSBDRU5UVVJZICAg ICAgICAgMHgwMA0KPiA+ICsjZGVmaW5lIEZMQUcgICAgICAgICAgICAoRUZJX0FDUElfMl8wX1dC SU5WRCB8IFwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgIEVGSV9BQ1BJXzJfMF9QUk9D X0MxIHwgXA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgRUZJX0FDUElfMl8wX1NMUF9C VVRUT04gfCBcDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICBFRklfQUNQSV8yXzBfUlRD X1M0IHwgXA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgRUZJX0FDUElfMl8wX1JFU0VU X1JFR19TVVApDQo+ID4gKyNkZWZpbmUgUkVTRVRfUkVHICAgICAgIDB4Q0Y5DQo+ID4gKyNkZWZp bmUgUkVTRVRfVkFMVUUgICAgIChCSVQyIHwgQklUMSkgLy8gUElJWDMgUmVzZXQgQ1BVICsgU3lz dGVtIFJlc2V0DQo+ID4gKw0KPiA+ICsvLw0KPiA+ICsvLyBCeXRlLWFsaWduZWQgSU8gcG9ydCBy ZWdpc3RlciBibG9jayBpbml0aWFsaXplciBmb3INCj4gPiArLy8gRUZJX0FDUElfMl8wX0dFTkVS SUNfQUREUkVTU19TVFJVQ1RVUkUNCj4gPiArLy8NCj4gPiArI2RlZmluZSBHQVMyX0lPKEJhc2Us IFNpemUpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gPiArICAgICAgICAgIEVG SV9BQ1BJXzJfMF9TWVNURU1fSU8sIC8qIEFkZHJlc3NTcGFjZUlkICAgICovIFwNCj4gPiArICAg ICAgICAgIChTaXplKSAqIDgsICAgICAgICAgICAgIC8qIFJlZ2lzdGVyQml0V2lkdGggICovIFwN Cj4gPiArICAgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qIFJlZ2lzdGVyQml0T2Zm c2V0ICovIFwNCj4gPiArICAgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qIFJlc2Vy dmVkICAgICAgICAgICovIFwNCj4gPiArICAgICAgICAgIChCYXNlKSAgICAgICAgICAgICAgICAg IC8qIEFkZHJlc3MgICAgICAgICAgICovIFwNCj4gPiArICAgICAgICAgIH0NCj4gPiArDQo+ID4g KyNlbmRpZg0KPiA+IGRpZmYgLS1naXQNCj4gPg0KPiBhL1BsYXRmb3JtL0ludGVsL1NpbWljc09w ZW5Cb2FyZFBrZy9JbmNsdWRlL0d1aWQvU2ltaWNzWDU4UGxhdGZvcm1Db25maWcuDQo+ID4gaA0K PiA+DQo+IGIvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL0luY2x1ZGUvR3VpZC9T aW1pY3NYNThQbGF0Zm9ybUNvbmZpZy4NCj4gPiBoDQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQN Cj4gPiBpbmRleCAwMDAwMDAwMDAwLi5mNjVmNjFkNzRkDQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ ICsrKw0KPiA+DQo+IGIvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL0luY2x1ZGUv R3VpZC9TaW1pY3NYNThQbGF0Zm9ybUNvbmZpZy4NCj4gPiBoDQo+ID4gQEAgLTAsMCArMSwxNyBA QA0KPiA+ICsvKiogQGZpbGUNCj4gPiArICBHVUlEIGZvciBVRUZJIHZhcmlhYmxlcyB0aGF0IGFy ZSBzcGVjaWZpYyB0byBPVk1GIGNvbmZpZ3VyYXRpb24uDQo+ID4gKw0KPiA+ICsgIENvcHlyaWdo dCAoQykgMjAxNCwgUmVkIEhhdCwgSW5jLg0KPiA+ICsNCj4gPiArICBTUERYLUxpY2Vuc2UtSWRl bnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiA+ICsqKi8NCj4gPiArDQo+ID4gKyNpZm5k ZWYgX19TSU1JQ1NYNThfUExBVEZPUk1fQ09ORklHX0hfXw0KPiA+ICsjZGVmaW5lIF9fU0lNSUNT WDU4X1BMQVRGT1JNX0NPTkZJR19IX18NCj4gPiArDQo+ID4gKyNkZWZpbmUgU0lNSUNTWDU4X1BM QVRGT1JNX0NPTkZJR19HVUlEIFwNCj4gPiArezB4ZWVkMzVmNTcsIDB4NGZmMiwgMHg0MjQ0LCB7 MHhiOCwgMHgzYSwgMHhlYSwgMHg3MSwgMHg1ZiwgMHhkMywgMHg1OSwNCj4gPiAweGE1fX0NCj4g PiArDQo+ID4gK2V4dGVybiBFRklfR1VJRCBnU2ltaWNzWDU4UGxhdGZvcm1Db25maWdHdWlkOw0K PiA+ICsNCj4gPiArI2VuZGlmDQo+ID4gZGlmZiAtLWdpdA0KPiA+IGEvUGxhdGZvcm0vSW50ZWwv U2ltaWNzT3BlbkJvYXJkUGtnL0luY2x1ZGUvSW5kdXN0cnlTdGFuZGFyZC9YNThJY2gxMC5oDQo+ ID4gYi9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvSW5jbHVkZS9JbmR1c3RyeVN0 YW5kYXJkL1g1OEljaDEwLmgNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAw MDAwMDAwMDAuLjM2YzA4MTc2ZDENCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrDQo+ID4gYi9Q bGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvSW5jbHVkZS9JbmR1c3RyeVN0YW5kYXJk L1g1OEljaDEwLmgNCj4gPiBAQCAtMCwwICsxLDEwNiBAQA0KPiA+ICsvKiogQGZpbGUNCj4gPiAr ICBWYXJpb3VzIHJlZ2lzdGVyIG51bWJlcnMgYW5kIHZhbHVlIGJpdHMgYmFzZWQgb24gdGhlIGZv bGxvd2luZyBwdWJsaWNhdGlvbnM6DQo+ID4gKyAgLSBJbnRlbChSKSBkYXRhc2hlZXQgMzE5OTcz LTAwMw0KPiA+ICsgIC0gSW50ZWwoUikgZGF0YXNoZWV0IDMxOTk3NC0wMTdVUw0KPiA+ICsNCj4g PiArICBDb3B5cmlnaHQgKEMpIDIwMTUsIFJlZCBIYXQsIEluYy4NCj4gPiArICBDb3B5cmlnaHQg KGMpIDIwMTQsIEdhYnJpZWwgTC4gU29tbG8gPHNvbWxvQGNtdS5lZHU+DQo+ID4gKw0KPiA+ICsg IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ID4gKyoqLw0K PiA+ICsNCj4gPiArI2lmbmRlZiBfX1g1OF9JQ0gxMF9IX18NCj4gPiArI2RlZmluZSBfX1g1OF9J Q0gxMF9IX18NCj4gPiArDQo+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L1BjaUxpYi5oPg0KPiA+ICsN Cj4gPiArLy8NCj4gPiArLy8gSG9zdCBCcmlkZ2UgRGV2aWNlIElEIChESUQpIHZhbHVlIGZvciBJ Q0gxMA0KPiA+ICsvLw0KPiA+ICsjZGVmaW5lIElOVEVMX0lDSDEwX0RFVklDRV9JRCAweDM0MDAN Cj4gPiArDQo+ID4gKy8vDQo+ID4gKy8vIEIvRC9GL1R5cGU6IDAvMC8wL1BDSQ0KPiA+ICsvLw0K PiA+ICsjZGVmaW5lIERSQU1DX1JFR0lTVEVSX1EzNShPZmZzZXQpIFBDSV9MSUJfQUREUkVTUyAo MCwgMCwgMCwgKE9mZnNldCkpDQo+ID4gKyNkZWZpbmUgRFJBTUNfUkVHSVNURVJfWDU4KE9mZnNl dCkgUENJX0xJQl9BRERSRVNTICgwLCAyMCwgMCwNCj4gKE9mZnNldCkpDQo+ID4gKyNkZWZpbmUg TUNIX0dHQyAgICAgICAgICAgICAgICAgMHg1Mg0KPiA+ICsjZGVmaW5lIE1DSF9HR0NfSVZEICAg ICAgICAgICAgIEJJVDENCj4gPiArDQo+ID4gKyNkZWZpbmUgTUNIX1BDSUVYQkFSX0xPVyAgICAg ICAgMHgxMEMNCj4gPiArI2RlZmluZSBNQ0hfUENJRVhCQVJfTElEICAgICAgICAweDEwRQ0KPiA+ ICsjZGVmaW5lIE1DSF9QQ0lFWEJBUl9TSElGVCAgICAgIDE2DQo+ID4gKyNkZWZpbmUgTUNIX1BD SUVYQkFSX0xPV01BU0sgICAgMHgwRkZGRkZGRg0KPiA+ICsjZGVmaW5lIE1DSF9QQ0lFWEJBUl9C VVNfRkYgICAgIDANCj4gPiArI2RlZmluZSBNQ0hfUENJRVhCQVJfRU4gICAgICAgICBCSVQwDQo+ ID4gKw0KPiA+ICsjZGVmaW5lIE1DSF9QQ0lFWEJBUl9ISUdIICAgICAgIDB4NjQNCj4gPiArI2Rl ZmluZSBNQ0hfUENJRVhCQVJfSElHSE1BU0sgICAweEZGRkZGRkYwDQo+ID4gKw0KPiA+ICsjZGVm aW5lIE1DSF9TTVJBTSAgICAgICAgICAgICAweDlEDQo+ID4gKyNkZWZpbmUgTUNIX1NNUkFNX0Rf TENLICAgICAgICAgQklUNA0KPiA+ICsjZGVmaW5lIE1DSF9TTVJBTV9HX1NNUkFNRSAgICAgIEJJ VDMNCj4gPiArDQo+ID4gKyNkZWZpbmUgTUNIX0VTTVJBTUMgICAgICAgICAgIDB4OUUNCj4gPiAr I2RlZmluZSBNQ0hfRVNNUkFNQ19IX1NNUkFNRSAgICBCSVQ3DQo+ID4gKyNkZWZpbmUgTUNIX0VT TVJBTUNfRV9TTUVSUiAgICAgQklUNg0KPiA+ICsjZGVmaW5lIE1DSF9FU01SQU1DX1NNX0NBQ0hF ICAgIEJJVDUNCj4gPiArI2RlZmluZSBNQ0hfRVNNUkFNQ19TTV9MMSAgICAgICBCSVQ0DQo+ID4g KyNkZWZpbmUgTUNIX0VTTVJBTUNfU01fTDIgICAgICAgQklUMw0KPiA+ICsjZGVmaW5lIE1DSF9F U01SQU1DX1RTRUdfOE1CICAgIEJJVDMNCj4gPiArI2RlZmluZSBNQ0hfRVNNUkFNQ19UU0VHXzJN QiAgICBCSVQyDQo+ID4gKyNkZWZpbmUgTUNIX0VTTVJBTUNfVFNFR18xTUIgICAgQklUMQ0KPiA+ ICsjZGVmaW5lIE1DSF9FU01SQU1DX1RTRUdfTUFTSyAgIChCSVQzIHwgQklUMiB8IEJJVDEpDQo+ ID4gKyNkZWZpbmUgTUNIX0VTTVJBTUNfVF9FTiAgICAgICAgQklUMA0KPiA+ICsNCj4gPiArI2Rl ZmluZSBNQ0hfR0JTTSAgICAgICAgICAgICAgMHhBNA0KPiA+ICsjZGVmaW5lIE1DSF9HQlNNX01C X1NISUZUICAgICAgIDIwDQo+ID4gKw0KPiA+ICsjZGVmaW5lIE1DSF9CR1NNICAgICAgICAgICAg ICAweEE4DQo+ID4gKyNkZWZpbmUgTUNIX0JHU01fTUJfU0hJRlQgICAgICAgMjANCj4gPiArDQo+ ID4gKyNkZWZpbmUgTUNIX1RTRUdNQiAgICAgICAgICAgIDB4QTgNCj4gPiArI2RlZmluZSBNQ0hf VFNFR01CX01CX1NISUZUICAgICAyMA0KPiA+ICsNCj4gPiArI2RlZmluZSBNQ0hfVE9MVUQgICAg ICAgICAgICAgMHhEMA0KPiA+ICsNCj4gPiArLy8NCj4gPiArLy8gQi9EL0YvVHlwZTogMC8weDFm LzAvUENJDQo+ID4gKy8vDQo+ID4gKyNkZWZpbmUgUE9XRVJfTUdNVF9SRUdJU1RFUl9JQ0gxMChP ZmZzZXQpIFwNCj4gPiArICBQQ0lfTElCX0FERFJFU1MgKDAsIDB4MWYsIDAsIChPZmZzZXQpKQ0K PiA+ICsNCj4gPiArI2RlZmluZSBJQ0gxMF9QTUJBU0UgICAgICAgICAgICAgICAweDQwDQo+ID4g KyNkZWZpbmUgSUNIMTBfUE1CQVNFX01BU0sgICAgICAgICAgICAoQklUMTUgfCBCSVQxNCB8IEJJ VDEzIHwgQklUMTIgfCBCSVQxMQ0KPiB8DQo+ID4gXA0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgQklUMTAgfCBCSVQ5ICB8IEJJVDggIHwgQklUNykNCj4gPiArDQo+ ID4gKyNkZWZpbmUgSUNIMTBfQUNQSV9DTlRMICAgICAgICAgICAgMHg0NA0KPiA+ICsjZGVmaW5l IElDSDEwX0FDUElfQ05UTF9BQ1BJX0VOICAgICAgQklUNw0KPiA+ICsNCj4gPiArI2RlZmluZSBJ Q0gxMF9HRU5fUE1DT05fMSAgICAgICAgICAweEEwDQo+ID4gKyNkZWZpbmUgSUNIMTBfR0VOX1BN Q09OXzFfU01JX0xPQ0sgICBCSVQ0DQo+ID4gKw0KPiA+ICsjZGVmaW5lIElDSDEwX1JDQkEgICAg ICAgICAgICAgICAgIDB4RjANCj4gPiArI2RlZmluZSBJQ0gxMF9SQ0JBX0VOICAgICAgICAgICAg ICAgIEJJVDANCj4gPiArDQo+ID4gKyNkZWZpbmUgSUNIMTBfUE1CQVNFX0lPICAgICAgICAgICAg MHg0MDANCj4gPiArLy8NCj4gPiArLy8gSU8gcG9ydHMNCj4gPiArLy8NCj4gPiArI2RlZmluZSBJ Q0gxMF9BUE1fQ05UIDB4QjINCj4gPiArI2RlZmluZSBJQ0gxMF9BUE1fU1RTIDB4QjMNCj4gPiAr DQo+ID4gKy8vDQo+ID4gKy8vIElPIHBvcnRzIHJlbGF0aXZlIHRvIFBNQkFTRQ0KPiA+ICsvLw0K PiA+ICsjZGVmaW5lIElDSDEwX1BNQkFTRV9PRlNfU01JX0VOICAgMHgzMA0KPiA+ICsjZGVmaW5l IElDSDEwX1NNSV9FTl9BUE1DX0VOICAgICAgQklUNQ0KPiA+ICsjZGVmaW5lIElDSDEwX1NNSV9F Tl9HQkxfU01JX0VOICAgQklUMA0KPiA+ICsjZGVmaW5lIElDSDEwX1NNSV9FTl9FT1MgICAgICAg ICAgQklUMSAgLy8gRW5kIG9mIFNNSQ0KPiA+ICsNCj4gPiArI2RlZmluZSBJQ0gxMF9QTUJBU0Vf T0ZTX1NNSV9TVFMgIDB4MzQNCj4gPiArI2RlZmluZSBJQ0gxMF9TTUlfU1RTX0FQTSAgICAgICAg IEJJVDUgIC8vIEFQTSBTdGF0dXMNCj4gPiArDQo+ID4gKyNkZWZpbmUgSUNIMTBfUk9PVF9DT01Q TEVYX0JBU0UgMHhGRUQxQzAwMA0KPiA+ICsNCj4gPiArI2VuZGlmDQo+ID4gZGlmZiAtLWdpdCBh L1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9JbmNsdWRlL1Byb3RvY29sL0lzYUFj cGkuaA0KPiA+IGIvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL0luY2x1ZGUvUHJv dG9jb2wvSXNhQWNwaS5oDQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRleCAwMDAw MDAwMDAwLi4xMmFlYjEyMjdjDQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL1BsYXRmb3Jt L0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9JbmNsdWRlL1Byb3RvY29sL0lzYUFjcGkuaA0KPiA+ IEBAIC0wLDAgKzEsMjk4IEBADQo+ID4gKy8qKiBAZmlsZQ0KPiA+ICsgIEVGSSBJU0EgQUNQSSBQ cm90b2NvbCBpcyB1c2VkIHRvIGVudW1lcmF0ZSBhbmQgbWFuYWdlIGFsbCB0aGUgSVNBDQo+IGNv bnRyb2xsZXJzDQo+ID4gb24NCj4gPiArICB0aGUgcGxhdGZvcm0ncyBJU0EgQnVzLg0KPiA+ICsN Cj4gPiArQ29weXJpZ2h0IChjKSAyMDA2IC0gMjAxOCwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCBy aWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ICtTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTIt Q2xhdXNlLVBhdGVudA0KPiA+ICsNCj4gPiArKiovDQo+ID4gKw0KPiA+ICsjaWZuZGVmIF9fSVNB X0FDUElfSF8NCj4gPiArI2RlZmluZSBfX0lTQV9BQ1BJX0hfDQo+ID4gKw0KPiA+ICsvLy8NCj4g PiArLy8vIEdsb2JhbCBJRCBmb3IgdGhlIEVGSSBJU0EgQUNQSSBQcm90b2NvbC4NCj4gPiArLy8v DQo+ID4gKyNkZWZpbmUgRUZJX0lTQV9BQ1BJX1BST1RPQ09MX0dVSUQgXA0KPiA+ICsgIHsgXA0K PiA+ICsgICAgMHg2NGE4OTJkYywgMHg1NTYxLCAweDQ1MzYsIHsgMHg5MiwgMHhjNywgMHg3OSwg MHg5YiwgMHhmYywgMHgxOCwgMHgzMywNCj4gPiAweDU1IH0gXA0KPiA+ICsgIH0NCj4gPiArDQo+ ID4gKy8vLw0KPiA+ICsvLy8gRm9yd2FyZCBkZWNsYXJhdGlvbiBmbyB0aGUgRUZJIElTQSBBQ1BJ IFByb3RvY29sDQo+ID4gKy8vLw0KPiA+ICt0eXBlZGVmIHN0cnVjdCBfRUZJX0lTQV9BQ1BJX1BS T1RPQ09MIEVGSV9JU0FfQUNQSV9QUk9UT0NPTDsNCj4gPiArDQo+ID4gKy8vLw0KPiA+ICsvLy8g SVNBIEFDUEkgUHJvdG9jb2wgaW50ZXJydXB0IHJlc291cmNlIGF0dHJpYnV0ZXMuDQo+ID4gKy8v Lw0KPiA+ICsjZGVmaW5lIEVGSV9JU0FfQUNQSV9JUlFfVFlQRV9ISUdIX1RSVUVfRURHRV9TRU5T SVRJVkUgICAweDAxICAgLy8vPA0KPiA+IEVkZ2UgdHJpZ2dlcmVkIGludGVycnVwdCBvbiBhIHJp c2luZyBlZGdlLg0KPiA+ICsjZGVmaW5lIEVGSV9JU0FfQUNQSV9JUlFfVFlQRV9MT1dfVFJVRV9F REdFX1NFTlNJVElWRSAgICAweDAyICAgLy8vPA0KPiA+IEVkZ2UgdHJpZ2dlcmVkIGludGVycnVw dCBvbiBhIGZhbGxpbmcgZWRnZS4NCj4gPiArI2RlZmluZSBFRklfSVNBX0FDUElfSVJRX1RZUEVf SElHSF9UUlVFX0xFVkVMX1NFTlNJVElWRSAgMHgwNCAgIC8vLzwNCj4gPiBMZXZlbCBzZW5zaXRp dmUgaW50ZXJydXB0IGFjdGl2ZSBoaWdoLg0KPiA+ICsjZGVmaW5lIEVGSV9JU0FfQUNQSV9JUlFf VFlQRV9MT1dfVFJVRV9MRVZFTF9TRU5TSVRJVkUgICAweDA4ICAgLy8vPA0KPiA+IExldmVsIHNl bnNpdGl2ZSBpbnRlcnJ1cHQgYWN0aXZlIGxvdy4NCj4gPiArDQo+ID4gKy8vLw0KPiA+ICsvLy8g SVNBIEFDUEkgUHJvdG9jb2wgRE1BIHJlc291cmNlIGF0dHJpYnV0ZXMuDQo+ID4gKy8vLw0KPiA+ ICsjZGVmaW5lIEVGSV9JU0FfQUNQSV9ETUFfU1BFRURfVFlQRV9NQVNLICAgICAgICAgICAgICAg ICAweDAzICAgLy8vPCBCaXQNCj4gbWFzaw0KPiA+IG9mIHN1cHBvcnRlZCBETUEgc3BlZWQgYXR0 cmlidXRlcy4NCj4gPiArI2RlZmluZSBFRklfSVNBX0FDUElfRE1BX1NQRUVEX1RZUEVfQ09NUEFU SUJJTElUWSAgICAgICAgMHgwMCAgIC8vLzwNCj4gSVNBDQo+ID4gY29udHJvbGxlciBzdXBwb3J0 cyBjb21wYXRpYmlsaXR5IG1vZGUgRE1BIHRyYW5zZmVycy4NCj4gPiArI2RlZmluZSBFRklfSVNB X0FDUElfRE1BX1NQRUVEX1RZUEVfQSAgICAgICAgICAgICAgICAgICAgMHgwMSAgIC8vLzwgSVNB DQo+ID4gY29udHJvbGxlciBzdXBwb3J0cyB0eXBlIEEgRE1BIHRyYW5zZmVycy4NCj4gPiArI2Rl ZmluZSBFRklfSVNBX0FDUElfRE1BX1NQRUVEX1RZUEVfQiAgICAgICAgICAgICAgICAgICAgMHgw MiAgIC8vLzwgSVNBDQo+ID4gY29udHJvbGxlciBzdXBwb3J0cyB0eXBlIEIgRE1BIHRyYW5zZmVy cy4NCj4gPiArI2RlZmluZSBFRklfSVNBX0FDUElfRE1BX1NQRUVEX1RZUEVfRiAgICAgICAgICAg ICAgICAgICAgMHgwMyAgIC8vLzwgSVNBDQo+ID4gY29udHJvbGxlciBzdXBwb3J0cyB0eXBlIEYg RE1BIHRyYW5zZmVycy4NCj4gPiArI2RlZmluZSBFRklfSVNBX0FDUElfRE1BX0NPVU5UX0JZX0JZ VEUgICAgICAgICAgICAgICAgICAgMHgwNCAgIC8vLzwgSVNBDQo+ID4gY29udHJvbGxlciBpbmNy ZW1lbnRzIERNQSBhZGRyZXNzIGJ5IGJ5dGVzICg4LWJpdCkuDQo+ID4gKyNkZWZpbmUgRUZJX0lT QV9BQ1BJX0RNQV9DT1VOVF9CWV9XT1JEICAgICAgICAgICAgICAgICAgIDB4MDggICAvLy88IElT QQ0KPiA+IGNvbnRyb2xsZXIgaW5jcmVtZW50cyBETUEgYWRkcmVzcyBieSB3b3JkcyAoMTYtYml0 KS4NCj4gPiArI2RlZmluZSBFRklfSVNBX0FDUElfRE1BX0JVU19NQVNURVIgICAgICAgICAgICAg ICAgICAgICAgMHgxMCAgIC8vLzwgSVNBDQo+ID4gY29udHJvbGxlciBpcyBhIERNQSBidXMgbWFz dGVyLg0KPiA+ICsjZGVmaW5lIEVGSV9JU0FfQUNQSV9ETUFfVFJBTlNGRVJfVFlQRV84X0JJVCAg ICAgICAgICAgICAweDIwICAgLy8vPCBJU0ENCj4gPiBjb250cm9sbGVyIG9ubHkgc3VwcG9ydHMg OC1iaXQgRE1BIHRyYW5zZmVycy4NCj4gPiArI2RlZmluZSBFRklfSVNBX0FDUElfRE1BX1RSQU5T RkVSX1RZUEVfOF9CSVRfQU5EXzE2X0JJVCAgMHg0MA0KPiA+IC8vLzwgSVNBIGNvbnRyb2xsZXIg Ym90aCA4LWJpdCBhbmQgMTYtYml0IERNQSB0cmFuc2ZlcnMuDQo+ID4gKyNkZWZpbmUgRUZJX0lT QV9BQ1BJX0RNQV9UUkFOU0ZFUl9UWVBFXzE2X0JJVCAgICAgICAgICAgIDB4ODAgICAvLy88IElT QQ0KPiA+IGNvbnRyb2xsZXIgb25seSBzdXBwb3J0cyAxNi1iaXQgRE1BIHRyYW5zZmVycy4NCj4g PiArDQo+ID4gKy8vLw0KPiA+ICsvLy8gSVNBIEFDUEkgUHJvdG9jb2wgTU1JTyByZXNvdXJjZSBh dHRyaWJ1dGVzDQo+ID4gKy8vLw0KPiA+ICsjZGVmaW5lIEVGSV9JU0FfQUNQSV9NRU1PUllfV0lE VEhfTUFTSyAgICAgICAgICAgICAgICAgICAweDAzICAgLy8vPCBCaXQNCj4gbWFzaw0KPiA+IG9m IHN1cHBvcnRlZCBJU0EgbWVtb3J5IHdpZHRoIGF0dHJpYnV0ZXMuDQo+ID4gKyNkZWZpbmUgRUZJ X0lTQV9BQ1BJX01FTU9SWV9XSURUSF84X0JJVCAgICAgICAgICAgICAgICAgIDB4MDAgICAvLy88 IElTQQ0KPiA+IE1NSU8gcmVnaW9uIG9ubHkgc3VwcG9ydHMgOC1iaXQgYWNjZXNzLg0KPiA+ICsj ZGVmaW5lIEVGSV9JU0FfQUNQSV9NRU1PUllfV0lEVEhfMTZfQklUICAgICAgICAgICAgICAgICAw eDAxICAgLy8vPCBJU0ENCj4gPiBNTUlPIHJlZ2lvbiBvbmx5IHN1cHBvcnRzIDE2LWJpdCBhY2Nl c3MuDQo+ID4gKyNkZWZpbmUgRUZJX0lTQV9BQ1BJX01FTU9SWV9XSURUSF84X0JJVF9BTkRfMTZf QklUICAgICAgIDB4MDIgICAvLy88DQo+ID4gSVNBIE1NSU8gcmVnaW9uIHN1cHBvcnRzIGJvdGgg OC1iaXQgYW5kIDE2LWJpdCBhY2Nlc3MuDQo+ID4gKyNkZWZpbmUgRUZJX0lTQV9BQ1BJX01FTU9S WV9XUklURUFCTEUgICAgICAgICAgICAgICAgICAgIDB4MDQgICAvLy88IElTQQ0KPiBNTUlPDQo+ ID4gcmVnaW9uIHN1cHBvcnRzIHdyaXRlIHRyYW5zYWN0aW9ucy4NCj4gPiArI2RlZmluZSBFRklf SVNBX0FDUElfTUVNT1JZX0NBQ0hFQUJMRSAgICAgICAgICAgICAgICAgICAgMHgwOCAgIC8vLzwg SVNBDQo+IE1NSU8NCj4gPiByZWdpb24gc3VwcG9ydHMgYmVpbmcgY2FjaGVkLg0KPiA+ICsjZGVm aW5lIEVGSV9JU0FfQUNQSV9NRU1PUllfU0hBRE9XQUJMRSAgICAgICAgICAgICAgICAgICAweDEw ICAgLy8vPCBJU0ENCj4gPiBNTUlPIHJlZ2lvbiBtYXkgYmUgc2hhZG93ZWQuDQo+ID4gKyNkZWZp bmUgRUZJX0lTQV9BQ1BJX01FTU9SWV9FWFBBTlNJT05fUk9NICAgICAgICAgICAgICAgIDB4MjAg ICAvLy88IElTQQ0KPiA+IE1NSU8gcmVnaW9uIGlzIGFuIGV4cGFuc2lvbiBST00uDQo+ID4gKw0K PiA+ICsvLy8NCj4gPiArLy8vIElTQSBBQ1BJIFByb3RvY29sIEkvTyByZXNvdXJjZSBhdHRyaWJ1 dGVzDQo+ID4gKy8vLw0KPiA+ICsjZGVmaW5lIEVGSV9JU0FfQUNQSV9JT19ERUNPREVfMTBfQklU UyAgICAgICAgICAgICAgICAgICAweDAxICAgIC8vLzwgSVNBDQo+ID4gY29udHJvbGxlcnMgdXNl cyBhIDEwLWJpdCBhZGRyZXNzIGRlY29kZXIgZm9yIEkvTyBjeWNsZXMuDQo+ID4gKyNkZWZpbmUg RUZJX0lTQV9BQ1BJX0lPX0RFQ09ERV8xNl9CSVRTICAgICAgICAgICAgICAgICAgIDB4MDIgICAg Ly8vPCBJU0ENCj4gPiBjb250cm9sbGVycyB1c2VzIGEgMTYtYml0IGFkZHJlc3MgZGVjb2RlciBm b3IgSS9PIGN5Y2xlcy4NCj4gPiArDQo+ID4gKy8vLw0KPiA+ICsvLy8gRUZJIElTQSBBQ1BJIHJl c291cmNlIHR5cGUNCj4gPiArLy8vDQo+ID4gK3R5cGVkZWYgZW51bSB7DQo+ID4gKyAgRWZpSXNh QWNwaVJlc291cmNlRW5kT2ZMaXN0LCAgICAvLy88IE1hcmtzIHRoZSBlbmQgaWYgYSByZXNvdXJj ZSBsaXN0Lg0KPiA+ICsgIEVmaUlzYUFjcGlSZXNvdXJjZUlvLCAgICAgICAgICAgLy8vPCBJU0Eg SS9PIHBvcnQgcmVzb3VyY2UgcmFuZ2UuDQo+ID4gKyAgRWZpSXNhQWNwaVJlc291cmNlTWVtb3J5 LCAgICAgICAvLy88IElTQSBNTUlPIHJlc291cmNlIHJhbmdlLg0KPiA+ICsgIEVmaUlzYUFjcGlS ZXNvdXJjZURtYSwgICAgICAgICAgLy8vPCBJU0EgRE1BIHJlc291cmNlLg0KPiA+ICsgIEVmaUlz YUFjcGlSZXNvdXJjZUludGVycnVwdCAgICAgLy8vPCBJU0EgaW50ZXJydXB0IHJlc291cmNlLg0K PiA+ICt9IEVGSV9JU0FfQUNQSV9SRVNPVVJDRV9UWVBFOw0KPiA+ICsNCj4gPiArLy8vDQo+ID4g Ky8vLyBFRkkgSVNBIEFDUEkgZ2VuZXJpYyByZXNvdXJjZSBzdHJ1Y3R1cmUNCj4gPiArLy8vDQo+ ID4gK3R5cGVkZWYgc3RydWN0IHsNCj4gPiArICBFRklfSVNBX0FDUElfUkVTT1VSQ0VfVFlQRSAg VHlwZTsgICAgICAgICAvLy88IFRoZSB0eXBlIG9mIHJlc291cmNlIChJL08sDQo+ID4gTU1JTywg RE1BLCBJbnRlcnJ1cHQpLg0KPiA+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICBBdHRy aWJ1dGU7ICAgIC8vLzwgQml0IG1hc2sgb2YgYXR0cmlidXRlcyBhc3NvY2lhdGVkIHdpdGgNCj4g dGhpcw0KPiA+IHJlc291cmNlLiAgU2VlIEVGSV9JU0FfQUNQSV94eHggbWFjcm9zIGZvciB2YWxp ZCBjb21iaW5hdGlvbnMuDQo+ID4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAgIFN0YXJ0 UmFuZ2U7ICAgLy8vPCBUaGUgc3RhcnQgb2YgdGhlIHJlc291cmNlIHJhbmdlLg0KPiA+ICsgIFVJ TlQzMiAgICAgICAgICAgICAgICAgICAgICBFbmRSYW5nZTsgICAgIC8vLzwgVGhlIGVuZCBvZiB0 aGUgcmVzb3VyY2UgcmFuZ2UuDQo+ID4gK30gRUZJX0lTQV9BQ1BJX1JFU09VUkNFOw0KPiA+ICsN Cj4gPiArLy8vDQo+ID4gKy8vLyBFRkkgSVNBIEFDUEkgcmVzb3VyY2UgZGV2aWNlIGlkZW50aWZp ZXINCj4gPiArLy8vDQo+ID4gK3R5cGVkZWYgc3RydWN0IHsNCj4gPiArICBVSU5UMzIgIEhJRDsg ICAvLy88IFRoZSBBQ1BJIEhhcmR3YXJlIElkZW50aWZpZXIgdmFsdWUgYXNzb2NpYXRlZCB3aXRo IGFuDQo+IElTQQ0KPiA+IGNvbnRyb2xsZXIuICBNYXRjaHMgQUNQSSBEU0RUIGNvbnRlbnRzLg0K PiA+ICsgIFVJTlQzMiAgVUlEOyAgIC8vLzwgVGhlIEFDUEkgVW5pcXVlIElkZW50aWZpZXIgdmFs dWUgYXNzb2NpYXRlZCB3aXRoIGFuIElTQQ0KPiA+IGNvbnRyb2xsZXIuICBNYXRjaGVzIEFDUEkg RFNEVCBjb250ZW50cy4NCj4gPiArfSBFRklfSVNBX0FDUElfREVWSUNFX0lEOw0KPiA+ICsNCj4g PiArLy8vDQo+ID4gKy8vLyBFRkkgSVNBIEFDUEkgcmVzb3VyY2UgbGlzdA0KPiA+ICsvLy8NCj4g PiArdHlwZWRlZiBzdHJ1Y3Qgew0KPiA+ICsgIEVGSV9JU0FfQUNQSV9ERVZJQ0VfSUQgIERldmlj ZTsgICAgICAgICAgLy8vPCBUaGUgQUNQSSBISUQvVUlEIGFzc29jaWF0ZWQNCj4gd2l0aA0KPiA+ IGFuIElTQSBjb250cm9sbGVyLg0KPiA+ICsgIEVGSV9JU0FfQUNQSV9SRVNPVVJDRSAgICpSZXNv dXJjZUl0ZW07ICAgLy8vPCBBIHBvaW50ZXIgdG8gdGhlIGxpc3Qgb2YNCj4gPiByZXNvdXJjZXMg YXNzb2NpYXRlZCB3aXRoIGFuIElTQSBjb250cm9sbGVyLg0KPiA+ICt9IEVGSV9JU0FfQUNQSV9S RVNPVVJDRV9MSVNUOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgRW51bWVyYXRlcyB0aGUgSVNB IGNvbnRyb2xsZXJzIG9uIGFuIElTQSBidXMuDQo+ID4gKw0KPiA+ICsgIFRoaXMgc2VydmljZSBh bGxvd3MgYWxsIHRoZSBJU0EgY29udHJvbGxlcnMgb24gYW4gSVNBIGJ1cyB0byBiZSBlbnVtZXJh dGVkLiAgSWYNCj4gPiArICBEZXZpY2UgaXMgYSBwb2ludGVyIHRvIGEgTlVMTCB2YWx1ZSwgdGhl biB0aGUgZmlyc3QgSVNBIGNvbnRyb2xsZXIgb24gdGhlIElTQQ0KPiA+ICsgIGJ1cyBpcyByZXR1 cm5lZCBpbiBEZXZpY2UgYW5kIEVGSV9TVUNDRVNTIGlzIHJldHVybmVkLiAgSWYgRGV2aWNlIGlz IGEgcG9pbnRlcg0KPiA+ICsgIHRvIGEgdmFsdWUgdGhhdCB3YXMgcmV0dXJuZWQgb24gYSBwcmlv ciBjYWxsIHRvIERldmljZUVudW1lcmF0ZSgpLCB0aGVuIHRoZQ0KPiA+IG5leHQNCj4gPiArICBJ U0EgY29udHJvbGxlciBvbiB0aGUgSVNBIGJ1cyBpcyByZXR1cm5lZCBpbiBEZXZpY2UgYW5kIEVG SV9TVUNDRVNTIGlzDQo+ID4gcmV0dXJuZWQuDQo+ID4gKyAgSWYgRGV2aWNlIGlzIGEgcG9pbnRl ciB0byB0aGUgbGFzdCBJU0EgY29udHJvbGxlciBvbiB0aGUgSVNBIGJ1cywgdGhlbg0KPiA+ICsg IEVGSV9OT1RfRk9VTkQgaXMgcmV0dXJuZWQuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtpbl0gIFRo aXMgICAgIFRoZSBwb2ludGVyIHRvIHRoZSBFRklfSVNBX0FDUElfUFJPVE9DT0wgaW5zdGFuY2Uu DQo+ID4gKyAgQHBhcmFtW291dF0gRGV2aWNlICAgVGhlIHBvaW50ZXIgdG8gYW4gSVNBIGNvbnRy b2xsZXIgbmFtZWQgYnkgQUNQSQ0KPiA+IEhJRC9VSUQuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwg RUZJX1NVQ0NFU1MgICAgVGhlIG5leHQgSVNBIGNvbnRyb2xsZXIgb24gdGhlIElTQSBidXMgd2Fz IHJldHVybmVkLg0KPiA+ICsgIEByZXR2YWwgRUZJX05PVF9GT1VORCAgTm8gZGV2aWNlIGZvdW5k Lg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK3R5cGVkZWYNCj4gPiArRUZJX1NUQVRVUw0KPiA+ICso RUZJQVBJICpFRklfSVNBX0FDUElfREVWSUNFX0VOVU1FUkFURSkoDQo+ID4gKyAgSU4gIEVGSV9J U0FfQUNQSV9QUk9UT0NPTCAgICpUaGlzLA0KPiA+ICsgIE9VVCBFRklfSVNBX0FDUElfREVWSUNF X0lEICAqKkRldmljZQ0KPiA+ICsgICk7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBTZXRzIHRo ZSBwb3dlciBzdGF0ZSBvZiBhbiBJU0EgY29udHJvbGxlci4NCj4gPiArDQo+ID4gKyAgVGhpcyBz ZXJ2aWNlcyBzZXRzIHRoZSBwb3dlciBzdGF0ZSBvZiB0aGUgSVNBIGNvbnRyb2xsZXIgc3BlY2lm aWVkIGJ5IERldmljZSB0bw0KPiA+ICsgIHRoZSBwb3dlciBzdGF0ZSBzcGVjaWZpZWQgYnkgT25P ZmYuICBUUlVFIGRlbm90ZXMgb24sIEZBTFNFIGRlbm90ZXMgb2ZmLg0KPiA+ICsgIElmIHRoZSBw b3dlciBzdGF0ZSBpcyBzdWNlc3NmdWxseSBzZXQgb24gdGhlIElTQSBDb250cm9sbGVyLCB0aGVu DQo+ID4gKyAgRUZJX1NVQ0NFU1MgaXMgcmV0dXJuZWQuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtp bl0gVGhpcyAgICAgVGhlIHBvaW50ZXIgdG8gdGhlIEVGSV9JU0FfQUNQSV9QUk9UT0NPTCBpbnN0 YW5jZS4NCj4gPiArICBAcGFyYW1baW5dIERldmljZSAgIFRoZSBwb2ludGVyIHRvIGFuIElTQSBj b250cm9sbGVyIG5hbWVkIGJ5IEFDUEkNCj4gSElEL1VJRC4NCj4gPiArICBAcGFyYW1baW5dIE9u T2ZmICAgIFRSVUUgZGVub3RlcyBvbiwgRkFMU0UgZGVub3RlcyBvZmYuDQo+ID4gKw0KPiA+ICsg IEByZXR2YWwgRUZJX1NVQ0NFU1MgICBTdWNjZXNzZnVsbHkgc2V0IHRoZSBwb3dlciBzdGF0ZSBv ZiB0aGUgSVNBDQo+IGNvbnRyb2xsZXIuDQo+ID4gKyAgQHJldHZhbCBPdGhlciAgICAgICAgIFRo ZSBJU0EgY29udHJvbGxlciBjb3VsZCBub3QgYmUgcGxhY2VkIGluIHRoZSByZXF1ZXN0ZWQNCj4g PiBwb3dlciBzdGF0ZS4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICt0eXBlZGVmDQo+ID4gK0VGSV9T VEFUVVMNCj4gPiArKEVGSUFQSSAqRUZJX0lTQV9BQ1BJX1NFVF9ERVZJQ0VfUE9XRVIpKA0KPiA+ ICsgIElOIEVGSV9JU0FfQUNQSV9QUk9UT0NPTCAgICpUaGlzLA0KPiA+ICsgIElOIEVGSV9JU0Ff QUNQSV9ERVZJQ0VfSUQgICpEZXZpY2UsDQo+ID4gKyAgSU4gQk9PTEVBTiAgICAgICAgICAgICAg ICAgT25PZmYNCj4gPiArICApOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgUmV0cmlldmVzIHRo ZSBjdXJyZW50IHNldCBvZiByZXNvdXJjZXMgYXNzb2NpYXRlZCB3aXRoIGFuIElTQSBjb250cm9s bGVyLg0KPiA+ICsNCj4gPiArICBSZXRyaWV2ZXMgdGhlIHNldCBvZiBJL08sIE1NSU8sIERNQSwg YW5kIGludGVycnVwdCByZXNvdXJjZXMgY3VycmVudGx5DQo+ID4gKyAgYXNzaWduZWQgdG8gdGhl IElTQSBjb250cm9sbGVyIHNwZWNpZmllZCBieSBEZXZpY2UuICBUaGVzZSByZXNvdXJjZXMNCj4g PiArICBhcmUgcmV0dXJuZWQgaW4gUmVzb3VyY2VMaXN0Lg0KPiA+ICsNCj4gPiArICBAcGFyYW1b aW5dICBUaGlzICAgICAgICAgIFRoZSBwb2ludGVyIHRvIHRoZSBFRklfSVNBX0FDUElfUFJPVE9D T0wNCj4gaW5zdGFuY2UuDQo+ID4gKyAgQHBhcmFtW2luXSAgRGV2aWNlICAgICAgICBUaGUgcG9p bnRlciB0byBhbiBJU0EgY29udHJvbGxlciBuYW1lZCBieSBBQ1BJDQo+ID4gSElEL1VJRC4NCj4g PiArICBAcGFyYW1bb3V0XSBSZXNvdXJjZUxpc3QgIFRoZSBwb2ludGVyIHRvIHRoZSBjdXJyZW50 IHJlc291cmNlIGxpc3QgZm9yDQo+IERldmljZS4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBFRklf U1VDQ0VTUyAgICBTdWNjZXNzZnVsbHkgcmV0cmlldmVkIHRoZSBjdXJyZW50IHJlc291cmNlIGxp c3QuDQo+ID4gKyAgQHJldHZhbCBFRklfTk9UX0ZPVU5EICBUaGUgcmVzb3VyY2UgbGlzdCBjb3Vs ZCBub3QgYmUgcmV0cmlldmVkLg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK3R5cGVkZWYNCj4gPiAr RUZJX1NUQVRVUw0KPiA+ICsoRUZJQVBJICpFRklfSVNBX0FDUElfR0VUX0NVUl9SRVNPVVJDRSko DQo+ID4gKyAgSU4gIEVGSV9JU0FfQUNQSV9QUk9UT0NPTCAgICAgICAqVGhpcywNCj4gPiArICBJ TiAgRUZJX0lTQV9BQ1BJX0RFVklDRV9JRCAgICAgICpEZXZpY2UsDQo+ID4gKyAgT1VUIEVGSV9J U0FfQUNQSV9SRVNPVVJDRV9MSVNUICAqKlJlc291cmNlTGlzdA0KPiA+ICsgICk7DQo+ID4gKw0K PiA+ICsvKioNCj4gPiArICBSZXRyaWV2ZXMgdGhlIHNldCBvZiBwb3NzaWJsZSByZXNvdXJjZXMg dGhhdCBtYXkgYmUgYXNzaWduZWQgdG8gYW4gSVNBDQo+ID4gY29udHJvbGxlcg0KPiA+ICsgIHdp dGggU2V0UmVzb3VyY2UoKS4NCj4gPiArDQo+ID4gKyAgUmV0cmlldmVzIHRoZSBwb3NzaWJsZSBz ZXRzIG9mIEkvTywgTU1JTywgRE1BLCBhbmQgaW50ZXJydXB0IHJlc291cmNlcyBmb3INCj4gPiB0 aGUNCj4gPiArICBJU0EgY29udHJvbGxlciBzcGVjaWZpZWQgYnkgRGV2aWNlLiAgVGhlIHNldHMg YXJlIHJldHVybmVkIGluIFJlc291cmNlTGlzdC4NCj4gPiArDQo+ID4gKyAgQHBhcmFtW2luXSAg VGhpcyAgICAgICAgICAgVGhlIHBvaW50ZXIgdG8gdGhlIEVGSV9JU0FfQUNQSV9QUk9UT0NPTA0K PiBpbnN0YW5jZS4NCj4gPiArICBAcGFyYW1baW5dICBEZXZpY2UgICAgICAgICBUaGUgcG9pbnRl ciB0byBhbiBJU0EgY29udHJvbGxlciBuYW1lZCBieSBBQ1BJDQo+ID4gSElEL1VJRC4NCj4gPiAr ICBAcGFyYW1bb3V0XSBSZXNvdXJjZUxpc3QgICBUaGUgcG9pbnRlciB0byB0aGUgcmV0dXJuZWQg bGlzdCBvZiByZXNvdXJjZSBsaXN0cy4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBFRklfVU5TVVBQ T1JURUQgIFRoaXMgc2VydmljZSBpcyBub3Qgc3VwcG9ydGVkLg0KPiA+ICsNCj4gPiArKiovDQo+ ID4gK3R5cGVkZWYNCj4gPiArRUZJX1NUQVRVUw0KPiA+ICsoRUZJQVBJICpFRklfSVNBX0FDUElf R0VUX1BPU19SRVNPVVJDRSkoDQo+ID4gKyAgSU4gRUZJX0lTQV9BQ1BJX1BST1RPQ09MICAgICAg ICAqVGhpcywNCj4gPiArICBJTiBFRklfSVNBX0FDUElfREVWSUNFX0lEICAgICAgICpEZXZpY2Us DQo+ID4gKyAgT1VUIEVGSV9JU0FfQUNQSV9SRVNPVVJDRV9MSVNUICAqKlJlc291cmNlTGlzdA0K PiA+ICsgICk7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBBc3NpZ25zIHJlc291cmNlcyB0byBh biBJU0EgY29udHJvbGxlci4NCj4gPiArDQo+ID4gKyAgQXNzaWducyB0aGUgSS9PLCBNTUlPLCBE TUEsIGFuZCBpbnRlcnJ1cHQgcmVzb3VyY2VzIHNwZWNpZmllZCBieQ0KPiA+IFJlc291cmNlTGlz dA0KPiA+ICsgIHRvIHRoZSBJU0EgY29udHJvbGxlciBzcGVjaWZpZWQgYnkgRGV2aWNlLiAgUmVz b3VyY2VMaXN0IG11c3QgbWF0Y2ggYQ0KPiByZXNvdXJjZQ0KPiA+IGxpc3QgcmV0dXJuZWQgYnkg R2V0UG9zUmVzb3VyY2UoKSBmb3IgdGhlIHNhbWUgSVNBIGNvbnRyb2xsZXIuDQo+ID4gKw0KPiA+ ICsgIEBwYXJhbVtpbl0gVGhpcyAgICAgICAgICAgVGhlIHBvaW50ZXIgdG8gdGhlIEVGSV9JU0Ff QUNQSV9QUk9UT0NPTA0KPiBpbnN0YW5jZS4NCj4gPiArICBAcGFyYW1baW5dIERldmljZSAgICAg ICAgIFRoZSBwb2ludGVyIHRvIGFuIElTQSBjb250cm9sbGVyIG5hbWVkIGJ5IEFDUEkNCj4gPiBI SUQvVUlELg0KPiA+ICsgIEBwYXJhbVtpbl0gUmVzb3VyY2VMaXN0ICAgVGhlIHBvaW50ZXIgdG8g YSByZXNvdXJjZXMgbGlzdCB0aGF0IG11c3QgYmUgb25lDQo+IG9mDQo+ID4gdGhlDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZSBsaXN0cyByZXR1cm5lZCBieSBHZXRQ b3NSZXNvdXJjZSgpIGZvciB0aGUNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIElT QSBjb250cm9sbGVyIHNwZWNpZmllZCBieSBEZXZpY2UuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwg RUZJX1NVQ0NFU1MgIFN1Y2Nlc3NmdWxseSBzZXQgcmVzb3VyY2VzIG9uIHRoZSBJU0EgY29udHJv bGxlci4NCj4gPiArICBAcmV0dmFsIE90aGVyICAgICAgICBUaGUgcmVzb3VyY2VzIGNvdWxkIG5v dCBiZSBzZXQgZm9yIHRoZSBJU0EgY29udHJvbGxlci4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICt0 eXBlZGVmDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArKEVGSUFQSSAqRUZJX0lTQV9BQ1BJX1NFVF9S RVNPVVJDRSkoDQo+ID4gKyAgSU4gRUZJX0lTQV9BQ1BJX1BST1RPQ09MICAgICAgICpUaGlzLA0K PiA+ICsgIElOIEVGSV9JU0FfQUNQSV9ERVZJQ0VfSUQgICAgICAqRGV2aWNlLA0KPiA+ICsgIElO IEVGSV9JU0FfQUNQSV9SRVNPVVJDRV9MSVNUICAqUmVzb3VyY2VMaXN0DQo+ID4gKyAgKTsNCj4g PiArDQo+ID4gKy8qKg0KPiA+ICsgIEVuYWJsZXMgb3IgZGlzYWJsZXMgYW4gSVNBIGNvbnRyb2xs ZXIuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtpbl0gVGhpcyAgICAgVGhlIHBvaW50ZXIgdG8gdGhl IEVGSV9JU0FfQUNQSV9QUk9UT0NPTCBpbnN0YW5jZS4NCj4gPiArICBAcGFyYW1baW5dIERldmlj ZSAgIFRoZSBwb2ludGVyIHRvIHRoZSBJU0EgY29udHJvbGxlciB0byBlbmFibGUvZGlzYWJsZS4N Cj4gPiArICBAcGFyYW1baW5dIEVuYWJsZSAgIFRSVUUgdG8gZW5hYmxlIHRoZSBJU0EgY29udHJv bGxlci4gIEZBTFNFIHRvIGRpc2FibGUgdGhlDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICBJ U0EgY29udHJvbGxlci4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgIFN1Y2Nl c3NmdWxseSBlbmFibGVkL2Rpc2FibGVkIHRoZSBJU0EgY29udHJvbGxlci4NCj4gPiArICBAcmV0 dmFsIE90aGVyICAgICAgICAgVGhlIElTQSBjb250cm9sbGVyIGNvdWxkIG5vdCBiZSBwbGFjZWQg aW4gdGhlIHJlcXVlc3RlZA0KPiA+IHN0YXRlLg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK3R5cGVk ZWYNCj4gPiArRUZJX1NUQVRVUw0KPiA+ICsoRUZJQVBJICpFRklfSVNBX0FDUElfRU5BQkxFX0RF VklDRSkoDQo+ID4gKyAgSU4gRUZJX0lTQV9BQ1BJX1BST1RPQ09MICAgKlRoaXMsDQo+ID4gKyAg SU4gRUZJX0lTQV9BQ1BJX0RFVklDRV9JRCAgKkRldmljZSwNCj4gPiArICBJTiBCT09MRUFOICAg ICAgICAgICAgICAgICBFbmFibGUNCj4gPiArICApOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAg SW5pdGlhbGl6ZXMgYW4gSVNBIGNvbnRyb2xsZXIsIHNvIHRoYXQgaXQgY2FuIGJlIHVzZWQuICBU aGlzIHNlcnZpY2UgbXVzdCBiZQ0KPiBjYWxsZWQNCj4gPiArICBiZWZvcmUgU2V0UmVzb3VyY2Uo KSwgRW5hYmxlRGV2aWNlKCksIG9yIFNldFBvd2VyKCkgd2lsbCBiZWhhdmUgYXMNCj4gZXhwZWN0 ZWQuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtpbl0gVGhpcyAgICAgVGhlIHBvaW50ZXIgdG8gdGhl IEVGSV9JU0FfQUNQSV9QUk9UT0NPTCBpbnN0YW5jZS4NCj4gPiArICBAcGFyYW1baW5dIERldmlj ZSAgIFRoZSBwb2ludGVyIHRvIGFuIElTQSBjb250cm9sbGVyIG5hbWVkIGJ5IEFDUEkNCj4gSElE L1VJRC4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgIFN1Y2Nlc3NmdWxseSBp bml0aWFsaXplZCBhbiBJU0EgY29udHJvbGxlci4NCj4gPiArICBAcmV0dmFsIE90aGVyICAgICAg ICAgVGhlIElTQSBjb250cm9sbGVyIGNvdWxkIG5vdCBiZSBpbml0aWFsaXplZC4NCj4gPiArDQo+ ID4gKyoqLw0KPiA+ICt0eXBlZGVmDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArKEVGSUFQSSAqRUZJ X0lTQV9BQ1BJX0lOSVRfREVWSUNFKSgNCj4gPiArICBJTiBFRklfSVNBX0FDUElfUFJPVE9DT0wg ICAqVGhpcywNCj4gPiArICBJTiBFRklfSVNBX0FDUElfREVWSUNFX0lEICAqRGV2aWNlDQo+ID4g KyAgKTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIEluaXRpYWxpemVzIGFsbCB0aGUgSFcgc3Rh dGVzIHJlcXVpcmVkIGZvciB0aGUgSVNBIGNvbnRyb2xsZXJzIG9uIHRoZSBJU0EgYnVzDQo+ID4g KyAgdG8gYmUgZW51bWVyYXRlZCBhbmQgbWFuYWdlZCBieSB0aGUgcmVzdCBvZiB0aGUgc2Vydmlj ZXMgaW4gdGhpcyBwcm9yb3RvbC4NCj4gPiArICBUaGlzIHNlcnZpY2UgbXVzdCBiZSBjYWxsZWQg YmVmb3JlIGFueSBvZiB0aGUgb3RoZXIgc2VydmljZXMgaW4gdGhpcw0KPiA+ICsgIHByb3RvY29s IHdpbGwgZnVuY3Rpb24gYXMgZXhwZWN0ZWQuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtpbl0gVGhp cyAgVGhlIHBvaW50ZXIgdG8gdGhlIEVGSV9JU0FfQUNQSV9QUk9UT0NPTCBpbnN0YW5jZS4NCj4g PiArDQo+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgIFN1Y2Nlc3NmdWxseSBpbml0aWFsaXpl ZCBhbGwgcmVxdWlyZWQgaGFyZHdhcmUgc3RhdGVzLg0KPiA+ICsgIEByZXR2YWwgT3RoZXIgICAg ICAgICBUaGUgSVNBIGludGVyZmFjZSBjb3VsZCBub3QgYmUgaW5pdGlhbGl6ZWQuDQo+ID4gKw0K PiA+ICsqKi8NCj4gPiArdHlwZWRlZg0KPiA+ICtFRklfU1RBVFVTDQo+ID4gKyhFRklBUEkgKkVG SV9JU0FfQUNQSV9JTlRFUkZBQ0VfSU5JVCkoDQo+ID4gKyAgSU4gRUZJX0lTQV9BQ1BJX1BST1RP Q09MICAqVGhpcw0KPiA+ICsgICk7DQo+ID4gKw0KPiA+ICsvLy8NCj4gPiArLy8vIFRoZSBFRklf SVNBX0FDUElfUFJPVE9DT0wgcHJvdmlkZXMgdGhlIHNlcnZpY2VzIHRvIGVudW1lcmF0ZSBhbmQN Cj4gPiBtYW5hZ2UNCj4gPiArLy8vIElTQSBjb250cm9sbGVycyBvbiBhbiBJU0EgYnVzLiAgVGhl c2Ugc2VydmljZXMgaW5jbHVkZSB0aGUgYWJpbGl0eSB0bw0KPiBpbml0aWFsaXplLA0KPiA+ICsv Ly8gZW5hYmxlLCBkaXNhYmxlLCBhbmQgbWFuYWdlIHRoZSBwb3dlciBzdGF0ZSBvZiBJU0EgY29u dHJvbGxlcnMuICBJdCBhbHNvDQo+ID4gKy8vLyBpbmNsdWRlcyBzZXJ2aWNlcyB0byBxdWVyeSBj dXJyZW50IHJlc291cmNlcywgcXVlcnkgcG9zc2libGUgcmVzb3VyY2VzLA0KPiA+ICsvLy8gYW5k IGFzc2lnbiByZXNvdXJjZXMgdG8gYW4gSVNBIGNvbnRyb2xsZXIuDQo+ID4gKy8vLw0KPiA+ICtz dHJ1Y3QgX0VGSV9JU0FfQUNQSV9QUk9UT0NPTCB7DQo+ID4gKyAgRUZJX0lTQV9BQ1BJX0RFVklD RV9FTlVNRVJBVEUgIERldmljZUVudW1lcmF0ZTsNCj4gPiArICBFRklfSVNBX0FDUElfU0VUX0RF VklDRV9QT1dFUiAgU2V0UG93ZXI7DQo+ID4gKyAgRUZJX0lTQV9BQ1BJX0dFVF9DVVJfUkVTT1VS Q0UgIEdldEN1clJlc291cmNlOw0KPiA+ICsgIEVGSV9JU0FfQUNQSV9HRVRfUE9TX1JFU09VUkNF ICBHZXRQb3NSZXNvdXJjZTsNCj4gPiArICBFRklfSVNBX0FDUElfU0VUX1JFU09VUkNFICAgICAg U2V0UmVzb3VyY2U7DQo+ID4gKyAgRUZJX0lTQV9BQ1BJX0VOQUJMRV9ERVZJQ0UgICAgIEVuYWJs ZURldmljZTsNCj4gPiArICBFRklfSVNBX0FDUElfSU5JVF9ERVZJQ0UgICAgICAgSW5pdERldmlj ZTsNCj4gPiArICBFRklfSVNBX0FDUElfSU5URVJGQUNFX0lOSVQgICAgSW50ZXJmYWNlSW5pdDsN Cj4gPiArfTsNCj4gPiArDQo+ID4gK2V4dGVybiBFRklfR1VJRCBnRWZpSXNhQWNwaVByb3RvY29s R3VpZDsNCj4gPiArDQo+ID4gKyNlbmRpZg0KPiA+IGRpZmYgLS1naXQgYS9QbGF0Zm9ybS9JbnRl bC9TaW1pY3NPcGVuQm9hcmRQa2cvSW5jbHVkZS9Qcm90b2NvbC9Jc2FJby5oDQo+ID4gYi9QbGF0 Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvSW5jbHVkZS9Qcm90b2NvbC9Jc2FJby5oDQo+ ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRleCAwMDAwMDAwMDAwLi4zMDAwMDMwNWZi DQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5C b2FyZFBrZy9JbmNsdWRlL1Byb3RvY29sL0lzYUlvLmgNCj4gPiBAQCAtMCwwICsxLDM1NiBAQA0K PiA+ICsvKiogQGZpbGUNCj4gPiArICBJU0EgSS9PIFByb3RvY29sIGlzIHVzZWQgYnkgSVNBIGRl dmljZSBkcml2ZXJzIHRvIHBlcmZvcm0gSS9PLCBNTUlPIGFuZA0KPiBETUENCj4gPiArICBvcGVy YXRpb25zIG9uIHRoZSBJU0EgY29udHJvbGxlcnMgdGhleSBtYW5hZ2UuDQo+ID4gKw0KPiA+ICtD b3B5cmlnaHQgKGMpIDIwMDYgLSAyMDE4LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyBy ZXNlcnZlZC48QlI+DQo+ID4gK1NQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2Ut UGF0ZW50DQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArDQo+ID4gKyNpZm5kZWYgX0VGSV9JU0FfSU9f SF8NCj4gPiArI2RlZmluZSBfRUZJX0lTQV9JT19IXw0KPiA+ICsNCj4gPiArI2luY2x1ZGUgPFBy b3RvY29sL0lzYUFjcGkuaD4NCj4gPiArDQo+ID4gKy8vLw0KPiA+ICsvLy8gR2xvYmFsIElEIGZv ciB0aGUgRUZJX0lTQV9JT19QUk9UT0NPTA0KPiA+ICsvLy8NCj4gPiArI2RlZmluZSBFRklfSVNB X0lPX1BST1RPQ09MX0dVSUQgXA0KPiA+ICsgIHsgXA0KPiA+ICsgICAgMHg3ZWUyYmQ0NCwgMHgz ZGEwLCAweDExZDQsIHsgMHg5YSwgMHgzOCwgMHgwLCAweDkwLCAweDI3LCAweDNmLCAweGMxLA0K PiA+IDB4NGQgfSBcDQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArLy8vDQo+ID4gKy8vLyBGb3J3YXJk IGRlY2xhcmF0aW9uIGZvciB0aGUgRUZJX0lTQV9JT19QUk9UT0NPTC4NCj4gPiArLy8vDQo+ID4g K3R5cGVkZWYgc3RydWN0IF9FRklfSVNBX0lPX1BST1RPQ09MIEVGSV9JU0FfSU9fUFJPVE9DT0w7 DQo+ID4gKw0KPiA+ICsvLy8NCj4gPiArLy8vIFdpZHRoIG9mIEVGSV9JU0FfSU9fUFJPVE9DT0wg SS9PIFBvcnQgYW5kIE1NSU8gb3BlcmF0aW9ucy4NCj4gPiArLy8vDQo+ID4gK3R5cGVkZWYgZW51 bSB7DQo+ID4gKyAgRWZpSXNhSW9XaWR0aFVpbnQ4ID0gMCwgICAgICAvLy88IDgtYml0IG9wZXJh dGlvbi4NCj4gPiArICBFZmlJc2FJb1dpZHRoVWludDE2LCAgICAgICAgIC8vLzwgMTYtYml0IG9w ZXJhdGlvbi4NCj4gPiArICBFZmlJc2FJb1dpZHRoVWludDMyLCAgICAgICAgIC8vLzwgMzItYml0 IG9wZXJhdGlvbg0KPiA+ICsgIEVmaUlzYUlvV2lkdGhSZXNlcnZlZCwNCj4gPiArICBFZmlJc2FJ b1dpZHRoRmlmb1VpbnQ4LCAgICAgIC8vLzwgOC1iaXQgRklGTyBvcGVyYXRpb24uDQo+ID4gKyAg RWZpSXNhSW9XaWR0aEZpZm9VaW50MTYsICAgICAvLy88IDE2LWJpdCBGSUZPIG9wZXJhdGlvbi4N Cj4gPiArICBFZmlJc2FJb1dpZHRoRmlmb1VpbnQzMiwgICAgIC8vLzwgMzItYml0IEZJRk8gb3Bl cmF0aW9uLg0KPiA+ICsgIEVmaUlzYUlvV2lkdGhGaWZvUmVzZXJ2ZWQsDQo+ID4gKyAgRWZpSXNh SW9XaWR0aEZpbGxVaW50OCwgICAgICAvLy88IDgtYml0IEZpbGwgb3BlcmF0aW9uLg0KPiA+ICsg IEVmaUlzYUlvV2lkdGhGaWxsVWludDE2LCAgICAgLy8vPCAxNi1iaXQgRmlsbCBvcGVyYXRpb24u DQo+ID4gKyAgRWZpSXNhSW9XaWR0aEZpbGxVaW50MzIsICAgICAvLy88IDMyLWJpdCBGaWxsIG9w ZXJhdGlvbi4NCj4gPiArICBFZmlJc2FJb1dpZHRoRmlsbFJlc2VydmVkLA0KPiA+ICsgIEVmaUlz YUlvV2lkdGhNYXhpbXVtDQo+ID4gK30gRUZJX0lTQV9JT19QUk9UT0NPTF9XSURUSDsNCj4gPiAr DQo+ID4gKy8vLw0KPiA+ICsvLy8gQXR0cmlidXRlcyBmb3IgdGhlIEVGSV9JU0FfSU9fUFJPVE9D T0wgY29tbW9uIERNQSBidWZmZXINCj4gYWxsb2NhdGlvbnMuDQo+ID4gKy8vLw0KPiA+ICsjZGVm aW5lIEVGSV9JU0FfSU9fQVRUUklCVVRFX01FTU9SWV9XUklURV9DT01CSU5FICAweDA4MCAgICAv Ly88DQo+ID4gTWFwIGEgbWVtb3J5IHJhbmdlIHNvIHdyaXRlIGFyZSBjb21iaW5lZC4NCj4gPiAr I2RlZmluZSBFRklfSVNBX0lPX0FUVFJJQlVURV9NRU1PUllfQ0FDSEVEICAgICAgICAgMHg4MDAg ICAgLy8vPCBNYXAgYQ0KPiA+IG1lbW9yeSByYW5nZSBzbyBhbGwgcmVhZCBhbmQgd3JpdGUgYWNj ZXNzZXMgYXJlIGNhY2hlZC4NCj4gPiArI2RlZmluZSBFRklfSVNBX0lPX0FUVFJJQlVURV9NRU1P UllfRElTQUJMRSAgICAgICAgMHgxMDAwICAgLy8vPA0KPiBEaXNhYmxlDQo+ID4gYSBtZW1vcnkg cmFuZ2UuDQo+ID4gKw0KPiA+ICsvLy8NCj4gPiArLy8vIENoYW5uZWwgYXR0cmlidXRlIGZvciBF RklfSVNBX0lPX1BST1RPQ09MIHNsYXZlIERNQSByZXF1ZXN0cw0KPiA+ICsvLy8NCj4gPiArI2Rl ZmluZSBFRklfSVNBX0lPX1NMQVZFX0RNQV9BVFRSSUJVVEVfU1BFRURfQ09NUEFUSUJMRSAgMHgw MDENCj4gPiAvLy88IFNldCB0aGUgc3BlZWQgb2YgdGhlIERNQSB0cmFuc2ZlciBpbiBjb21wYXRp YmxlIG1vZGUuDQo+ID4gKyNkZWZpbmUgRUZJX0lTQV9JT19TTEFWRV9ETUFfQVRUUklCVVRFX1NQ RUVEX0EgICAgICAgICAgIDB4MDAyICAgLy8vPA0KPiBOb3QNCj4gPiBzdXBwb3J0ZWQuDQo+ID4g KyNkZWZpbmUgRUZJX0lTQV9JT19TTEFWRV9ETUFfQVRUUklCVVRFX1NQRUVEX0IgICAgICAgICAg IDB4MDA0ICAgLy8vPA0KPiBOb3QNCj4gPiBzdXBwb3J0ZWQuDQo+ID4gKyNkZWZpbmUgRUZJX0lT QV9JT19TTEFWRV9ETUFfQVRUUklCVVRFX1NQRUVEX0MgICAgICAgICAgIDB4MDA4ICAgLy8vPA0K PiBOb3QNCj4gPiBzdXBwb3J0ZWQuDQo+ID4gKyNkZWZpbmUgRUZJX0lTQV9JT19TTEFWRV9ETUFf QVRUUklCVVRFX1dJRFRIXzggICAgICAgICAgIDB4MDEwICAgLy8vPA0KPiA+IFJlcXVlc3QgOC1i aXQgRE1BIHRyYW5zZmVycy4gIE9ubHkgYXZhaWxhYmxlIG9uIGNoYW5uZWxzIDAuLjMuDQo+ID4g KyNkZWZpbmUgRUZJX0lTQV9JT19TTEFWRV9ETUFfQVRUUklCVVRFX1dJRFRIXzE2ICAgICAgICAg IDB4MDIwICAgLy8vPA0KPiA+IFJlcXVlc3QgMTYtYml0IERNQSB0cmFuc2ZlcnMuICBPbmx5IGF2 YWlsYWJsZSBvbiBjaGFubmVscyA0Li43Lg0KPiA+ICsjZGVmaW5lIEVGSV9JU0FfSU9fU0xBVkVf RE1BX0FUVFJJQlVURV9TSU5HTEVfTU9ERSAgICAgICAweDA0MA0KPiAvLy88DQo+ID4gUmVxdWVz dCBhIHNpbmdsZSBETUEgdHJhbnNmZXIuDQo+ID4gKyNkZWZpbmUgRUZJX0lTQV9JT19TTEFWRV9E TUFfQVRUUklCVVRFX0RFTUFORF9NT0RFICAgICAgIDB4MDgwDQo+ID4gLy8vPCBSZXF1ZXN0IG11 bHRpcGxlIERNQSB0cmFuc2ZlcnMgdW50aWwgVEMgKFRlcm1pbmFsIENvdW50KSBvciBFT1AgKEVu ZCBvZg0KPiA+IFByb2Nlc3MpLg0KPiA+ICsjZGVmaW5lIEVGSV9JU0FfSU9fU0xBVkVfRE1BX0FU VFJJQlVURV9BVVRPX0lOSVRJQUxJWkUgICAweDEwMA0KPiAvLy88DQo+ID4gQXV0b21hdGljYWxs eSByZWxvYWQgYmFzZSBhbmQgY291bnQgYXQgdGhlIGVuZCBvZiB0aGUgRE1BIHRyYW5zZmVyLg0K PiA+ICsNCj4gPiArLy8vDQo+ID4gKy8vLyBUaGUgRE1BIG9wcmVyYXRpb24gdHlwZSBmb3IgRUZJ X0lTQV9JT19QUk9UT0NPTCBETUEgcmVxdWVzdHMuDQo+ID4gKy8vLw0KPiA+ICt0eXBlZGVmIGVu dW0gew0KPiA+ICsgIC8vLw0KPiA+ICsgIC8vLyBBIHJlYWQgb3BlcmF0aW9uIGZyb20gc3lzdGVt IG1lbW9yeSBieSBhIGJ1cyBtYXN0ZXIuDQo+ID4gKyAgLy8vDQo+ID4gKyAgRWZpSXNhSW9PcGVy YXRpb25CdXNNYXN0ZXJSZWFkLA0KPiA+ICsgIC8vLw0KPiA+ICsgIC8vLyBBIHdyaXRlIG9wZXJh dGlvbiB0byBzeXN0ZW0gbWVtb3J5IGJ5IGEgYnVzIG1hc3Rlci4NCj4gPiArICAvLy8NCj4gPiAr ICBFZmlJc2FJb09wZXJhdGlvbkJ1c01hc3RlcldyaXRlLA0KPiA+ICsgIC8vLw0KPiA+ICsgIC8v LyBQcm92aWRlcyBib3RoIHJlYWQgYW5kIHdyaXRlIGFjY2VzcyB0byBzeXN0ZW0gbWVtb3J5IGJ5 IGJvdGggdGhlDQo+ID4gcHJvY2Vzc29yDQo+ID4gKyAgLy8vIGFuZCBhIGJ1cyBtYXN0ZXIuIFRo ZSBidWZmZXIgaXMgY29oZXJlbnQgZnJvbSBib3RoIHRoZSBwcm9jZXNzb3IncyBhbmQNCj4gPiB0 aGUNCj4gPiArICAvLy8gYnVzIG1hc3RlcidzIHBvaW50IG9mIHZpZXcuDQo+ID4gKyAgLy8vDQo+ ID4gKyAgRWZpSXNhSW9PcGVyYXRpb25CdXNNYXN0ZXJDb21tb25CdWZmZXIsDQo+ID4gKyAgLy8v DQo+ID4gKyAgLy8vIEEgcmVhZCBvcGVyYXRpb24gZnJvbSBzeXN0ZW0gbWVtb3J5IGJ5IGEgc2xh dmUgZGV2aWNlLg0KPiA+ICsgIC8vLw0KPiA+ICsgIEVmaUlzYUlvT3BlcmF0aW9uU2xhdmVSZWFk LA0KPiA+ICsgIC8vLw0KPiA+ICsgIC8vLyBBIHdyaXRlIG9wZXJhdGlvbiB0byBzeXN0ZW0gbWVt b3J5IGJ5IGEgc2xhdmUgbWFzdGVyLg0KPiA+ICsgIC8vLw0KPiA+ICsgIEVmaUlzYUlvT3BlcmF0 aW9uU2xhdmVXcml0ZSwNCj4gPiArICBFZmlJc2FJb09wZXJhdGlvbk1heGltdW0NCj4gPiArfSBF RklfSVNBX0lPX1BST1RPQ09MX09QRVJBVElPTjsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFBl cmZvcm1zIElTQSBJL08gYW5kIE1NSU8gUmVhZC9Xcml0ZSBDeWNsZXMNCj4gPiArDQo+ID4gKyAg QHBhcmFtW2luXSAgICAgIFRoaXMgICAgIEEgcG9pbnRlciB0byB0aGUgRUZJX0lTQV9JT19QUk9U T0NPTCBpbnN0YW5jZS4NCj4gPiArICBAcGFyYW1baW5dICAgICAgV2lkdGggICAgU3BlY2lmaWVz IHRoZSB3aWR0aCBvZiB0aGUgSS9PIG9yIE1NSU8gb3BlcmF0aW9uLg0KPiA+ICsgIEBwYXJhbVtp bl0gICAgICBPZmZzZXQgICBUaGUgb2Zmc2V0IGludG8gdGhlIElTQSBJL08gb3IgTU1JTyBzcGFj ZSB0byBzdGFydA0KPiB0aGUNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0 aW9uLg0KPiA+ICsgIEBwYXJhbVtpbl0gICAgICBDb3VudCAgICBUaGUgbnVtYmVyIG9mIEkvTyBv ciBNTUlPIG9wZXJhdGlvbnMgdG8gcGVyZm9ybS4NCj4gPiArICBAcGFyYW1baW4sIG91dF0gQnVm ZmVyICAgRm9yIHJlYWQgb3BlcmF0aW9ucywgdGhlIGRlc3RpbmF0aW9uIGJ1ZmZlciB0bw0KPiBz dG9yZQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgcmVzdWx0cy4gRm9yIHdy aXRlIG9wZXJhdGlvbnMsIHRoZSBzb3VyY2UgYnVmZmVyIHRvDQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgIHdyaXRlIGRhdGEgZnJvbS4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBFRklf U1VDQ0VTUyAgICAgICAgICAgICBUaGUgZGF0YSB3YXMgc3VjY2Vzc2Z1bGx5IHJlYWQgZnJvbSBv ciB3cml0dGVuDQo+IHRvDQo+ID4gdGhlIGRldmljZS4NCj4gPiArICBAcmV0dmFsIEVGSV9VTlNV UFBPUlRFRCAgICAgICAgIFRoZSBPZmZzZXQgaXMgbm90IHZhbGlkIGZvciB0aGlzIGRldmljZS4N Cj4gPiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiAgIFdpZHRoIG9yIENvdW50LCBv ciBib3RoLCB3ZXJlIGludmFsaWQuDQo+ID4gKyAgQHJldHZhbCBFRklfT1VUX09GX1JFU09VUkNF UyAgICBUaGUgcmVxdWVzdCBjb3VsZCBub3QgYmUgY29tcGxldGVkDQo+IGR1ZQ0KPiA+IHRvIGEg bGFjayBvZiByZXNvdXJjZXMuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArdHlwZWRlZg0KPiA+ICtF RklfU1RBVFVTDQo+ID4gKyhFRklBUEkgKkVGSV9JU0FfSU9fUFJPVE9DT0xfSU9fTUVNKSgNCj4g PiArICBJTiAgICAgRUZJX0lTQV9JT19QUk9UT0NPTCAgICAgICAgKlRoaXMsDQo+ID4gKyAgSU4g ICAgIEVGSV9JU0FfSU9fUFJPVE9DT0xfV0lEVEggIFdpZHRoLA0KPiA+ICsgIElOICAgICBVSU5U MzIgICAgICAgICAgICAgICAgICAgICBPZmZzZXQsDQo+ID4gKyAgSU4gICAgIFVJTlROICAgICAg ICAgICAgICAgICAgICAgIENvdW50LA0KPiA+ICsgIElOIE9VVCBWT0lEICAgICAgICAgICAgICAg ICAgICAgICAqQnVmZmVyDQo+ID4gKyAgKTsNCj4gPiArDQo+ID4gKy8vLw0KPiA+ICsvLy8gU3Ry dWN0dXJlIG9mIGZ1bmN0aW9ucyBmb3IgYWNjZXNzaW5nIElTQSBJL08gYW5kIE1NSU8gc3BhY2Uu DQo+ID4gKy8vLw0KPiA+ICt0eXBlZGVmIHN0cnVjdCB7DQo+ID4gKyAgLy8vDQo+ID4gKyAgLy8v IFJlYWQgZnJvbSBJU0EgSS9PIG9yIE1NSU8gc3BhY2UuDQo+ID4gKyAgLy8vDQo+ID4gKyAgRUZJ X0lTQV9JT19QUk9UT0NPTF9JT19NRU0gIFJlYWQ7DQo+ID4gKyAgLy8vDQo+ID4gKyAgLy8vIFdy aXRlIHRvIElTQSBJL08gb3IgTU1JTyBzcGFjZS4NCj4gPiArICAvLy8NCj4gPiArICBFRklfSVNB X0lPX1BST1RPQ09MX0lPX01FTSAgV3JpdGU7DQo+ID4gK30gRUZJX0lTQV9JT19QUk9UT0NPTF9B Q0NFU1M7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBDb3BpZXMgZGF0YSBmcm9tIG9uZSByZWdp b24gb2YgSVNBIE1NSU8gc3BhY2UgdG8gYW5vdGhlciByZWdpb24gb2YgSVNBDQo+ID4gKyAgTU1J TyBzcGFjZS4NCj4gPiArDQo+ID4gKyAgQHBhcmFtW2luXSBUaGlzICAgICAgICAgQSBwb2ludGVy IHRvIHRoZSBFRklfSVNBX0lPX1BST1RPQ09MIGluc3RhbmNlLg0KPiA+ICsgIEBwYXJhbVtpbl0g V2lkdGggICAgICAgIFNwZWNpZmllcyB0aGUgd2lkdGggb2YgdGhlIE1NSU8gY29weSBvcGVyYXRp b24uDQo+ID4gKyAgQHBhcmFtW2luXSBEZXN0T2Zmc2V0ICAgVGhlIG9mZnNldCBvZiB0aGUgZGVz dGluYXRpb24gaW4gSVNBIE1NSU8gc3BhY2UuDQo+ID4gKyAgQHBhcmFtW2luXSBTcmNPZmZzZXQg ICAgVGhlIG9mZnNldCBvZiB0aGUgc291cmNlIGluIElTQSBNTUlPIHNwYWNlLg0KPiA+ICsgIEBw YXJhbVtpbl0gQ291bnQgICAgICAgIFRoZSBudW1iZXIgdHJhbmZlcnMgdG8gcGVyZm9ybSBmb3Ig dGhpcyBjb3B5DQo+ID4gb3BlcmF0aW9uLg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIEVGSV9TVUND RVNTICAgICAgICAgICAgIFRoZSBkYXRhIHdhcyBjb3BpZWQgc3VjZXNzZnVsbHkuDQo+ID4gKyAg QHJldHZhbCBFRklfVU5TVVBQT1JURUQgICAgICAgICBUaGUgRGVzdE9mZnNldCBvciBTcmNPZmZz ZXQgaXMgbm90IHZhbGlkIGZvcg0KPiA+IHRoaXMgZGV2aWNlLg0KPiA+ICsgIEByZXR2YWwgRUZJ X0lOVkFMSURfUEFSQU1FVEVSICAgV2lkdGggb3IgQ291bnQsIG9yIGJvdGgsIHdlcmUgaW52YWxp ZC4NCj4gPiArICBAcmV0dmFsIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTICAgIFRoZSByZXF1ZXN0IGNv dWxkIG5vdCBiZSBjb21wbGV0ZWQNCj4gZHVlDQo+ID4gdG8gYSBsYWNrIG9mIHJlc291cmNlcy4N Cj4gPiArDQo+ID4gKyoqLw0KPiA+ICt0eXBlZGVmDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArKEVG SUFQSSAqRUZJX0lTQV9JT19QUk9UT0NPTF9DT1BZX01FTSkoDQo+ID4gKyAgSU4gRUZJX0lTQV9J T19QUk9UT0NPTCAgICAgICAgICpUaGlzLA0KPiA+ICsgIElOIEVGSV9JU0FfSU9fUFJPVE9DT0xf V0lEVEggICBXaWR0aCwNCj4gPiArICBJTiBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgRGVz dE9mZnNldCwNCj4gPiArICBJTiBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgU3JjT2Zmc2V0 LA0KPiA+ICsgIElOIFVJTlROICAgICAgICAgICAgICAgICAgICAgICBDb3VudA0KPiA+ICsgICk7 DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBNYXBzIGEgbWVtb3J5IHJlZ2lvbiBmb3IgRE1BLg0K PiA+ICsNCj4gPiArICBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIGRldmljZS1zcGVjaWZpYyBh ZGRyZXNzZXMgcmVxdWlyZWQgdG8gYWNjZXNzIHN5c3RlbQ0KPiA+IG1lbW9yeS4NCj4gPiArICBU aGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gbWFwIHN5c3RlbSBtZW1vcnkgZm9yIElTQSBETUEgb3Bl cmF0aW9ucy4gIEFsbA0KPiBJU0ENCj4gPiBETUENCj4gPiArICBvcGVyYXRpb25zIG11c3QgYmUg cGVyZm9ybWVkIHRocm91Z2ggdGhlaXIgbWFwcGVkIGFkZHJlc3NlcywgYW5kIHN1Y2gNCj4gPiBt YXBwaW5ncyBtdXN0DQo+ID4gKyAgYmUgZnJlZWQgd2l0aCBFRklfSVNBX0lPX1BST1RPQ09MLlVu bWFwKCkgYWZ0ZXIgdGhlIERNQSBvcGVyYXRpb24gaXMNCj4gPiBjb21wbGV0ZWQuDQo+ID4gKw0K PiA+ICsgIElmIHRoZSBETUEgb3BlcmF0aW9uIGlzIGEgc2luZ2xlIHJlYWQgb3Igd3JpdGUgZGF0 YSB0cmFuc2ZlciB0aHJvdWdoIGFuIElTQQ0KPiBidXMNCj4gPiArICBtYXN0ZXIsIHRoZW4gRWZp SXNhSW9PcGVyYXRpb25CdXNNYXN0ZXJSZWFkIG9yDQo+ID4gRWZpSXNhSW9PcGVyYXRpb25CdXNN YXN0ZXJXcml0ZQ0KPiA+ICsgIGlzIHVzZWQgYW5kIHRoZSByYW5nZSBpcyB1bm1hcHBlZCB0byBj b21wbGV0ZSB0aGUgb3BlcmF0aW9uLiBJZiB0aGUgRE1BDQo+ID4gb3BlcmF0aW9uDQo+ID4gKyAg aXMgYSBzaW5nbGUgcmVhZCBvciB3cml0ZSBkYXRhIHRyYW5zZmVyIHRocm91Z2ggYW4gSVNBIHNs YXZlIGNvbnRyb2xsZXIsIHRoZW4NCj4gPiArICBFZmlJc2FJb09wZXJhdGlvblNsYXZlUmVhZCBv ciBFZmlJc2FJb09wZXJhdGlvblNsYXZlV3JpdGUgaXMgdXNlZCBhbmQgdGhlDQo+ID4gcmFuZ2UN Cj4gPiArICBpcyB1bm1hcHBlZCB0byBjb21wbGV0ZSB0aGUgb3BlcmF0aW9uLg0KPiA+ICsNCj4g PiArICBJZiBwZXJmb3JtaW5nIGEgRE1BIHJlYWQgb3BlcmF0aW9uLCBhbGwgdGhlIGRhdGEgbXVz dCBiZSBwcmVzZW50IGluIHN5c3RlbQ0KPiA+IG1lbW9yeSBiZWZvcmUgdGhlIE1hcCgpIGlzIHBl cmZvcm1lZC4gIFNpbWlsYXJseSwNCj4gPiArICBpZiBwZXJmb3JtaW5nIGEgRE1BIHdyaXRlIG9w ZXJhdGlvbiwgdGhlIGRhdGEgbXVzdCBub3QgYmUgYWNjZXNzZWQgaW4NCj4gc3lzdGVtDQo+ID4g KyAgbWVtb3J5IHVudGlsIEVGSV9JU0FfSU9fUFJPVE9DT0wuVW5tYXAoKSBpcyBwZXJmb3JtZWQu ICBCdXMgbWFzdGVyDQo+ID4gb3BlcmF0aW9ucyB0aGF0DQo+ID4gKyAgcmVxdWlyZSBib3RoIHJl YWQgYW5kIHdyaXRlIGFjY2VzcyBvciByZXF1aXJlIG11bHRpcGxlIGhvc3QgZGV2aWNlDQo+ID4g aW50ZXJhY3Rpb25zDQo+ID4gKyAgd2l0aGluIHRoZSBzYW1lIG1hcHBlZCByZWdpb24gbXVzdCB1 c2UNCj4gPiBFZmlJc2FJb09wZXJhdGlvbkJ1c01hc3RlckNvbW1vbkJ1ZmZlci4NCj4gPiArICBI b3dldmVyLCBvbmx5IG1lbW9yeSBhbGxvY2F0ZWQgdmlhIHRoZQ0KPiA+IEVGSV9JU0FfSU9fUFJP VE9DT0wuQWxsb2NhdGVCdWZmZXIoKSBpbnRlcmZhY2UNCj4gPiArICBpcyBndWFyYW50ZWVkIHRv IGJlIGFibGUgdG8gYmUgbWFwcGVkIGZvciB0aGlzIG9wZXJhdGlvbiB0eXBlLiAgSW4gYWxsDQo+ IG1hcHBpbmcNCj4gPiArICByZXF1ZXN0cyB0aGUgTnVtYmVyT2ZCeXRlcyByZXR1cm5lZCBtYXkg YmUgbGVzcyB0aGFuIG9yaWdpbmFsbHkNCj4gcmVxdWVzdGVkLg0KPiA+IEl0IGlzDQo+ID4gKyAg dGhlIGNhbGxlcidzIHJlc3BvbnNpYmlsaXR5IHRvIG1ha2UgYWRkaXRpb25hbCByZXF1ZXN0cyB0 byBjb21wbGV0ZSB0aGUgZW50aXJlDQo+ID4gKyAgdHJhbnNmZXIuDQo+ID4gKw0KPiA+ICsgIEBw YXJhbVtpbl0gICAgICBUaGlzICAgICAgICAgICAgICAgIEEgcG9pbnRlciB0byB0aGUgRUZJX0lT QV9JT19QUk9UT0NPTA0KPiBpbnN0YW5jZS4NCj4gPiArICBAcGFyYW1baW5dICAgICAgT3BlcmF0 aW9uICAgICAgICAgICBJbmRpY2F0ZXMgdGhlIHR5cGUgb2YgRE1BIChzbGF2ZSBvciBidXMNCj4g PiBtYXN0ZXIpLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFu ZCBpZiB0aGUgRE1BIG9wZXJhdGlvbiBpcyBnb2luZyB0byByZWFkIG9yDQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGUgdG8gc3lzdGVtIG1lbW9yeS4NCj4g PiArICBAcGFyYW1baW5dICAgICAgQ2hhbm5lbE51bWJlciAgICAgICBUaGUgc2xhdmUgY2hhbm5l bCBudW1iZXIgdG8gdXNlIGZvciB0aGlzDQo+ID4gRE1BDQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uLiAgSWYgT3BlcmF0aW9uIGFuZCBDaGFubmVs QXR0cmlidXRlcw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNo b3dzIHRoYXQgdGhpcyBkZXZpY2UgcGVyZm9ybXMgYnVzIG1hc3RlcmluZw0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERNQSwgdGhlbiB0aGlzIGZpZWxkIGlzIGln bm9yZWQuICBUaGUgbGVnYWwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICByYW5nZSBmb3IgdGhpcyBmaWVsZCBpcyAwLi43Lg0KPiA+ICsgIEBwYXJhbVtpbl0gICAg ICBDaGFubmVsQXR0cmlidXRlcyAgIEEgYml0bWFzayBvZiB0aGUgYXR0cmlidXRlcyB1c2VkIHRv DQo+ID4gY29uZmlndXJlDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdGhlIHNsYXZlIERNQSBjaGFubmVsIGZvciB0aGlzIERNQSBvcGVyYXRpb24uDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VlIEVGSV9JU0FfSU9fU0xBVkVf RE1BX0FUVFJJQlVURV8qIGZvciB0aGUNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBsZWdhbCBiaXQgY29tYmluYXRpb25zLg0KPiA+ICsgIEBwYXJhbVtpbl0gICAg ICBIb3N0QWRkcmVzcyAgICAgICAgIFRoZSBzeXN0ZW0gbWVtb3J5IGFkZHJlc3MgdG8gbWFwIHRv IHRoZQ0KPiA+IGRldmljZS4NCj4gPiArICBAcGFyYW1baW4sIG91dF0gTnVtYmVyT2ZCeXRlcyAg ICAgICBPbiBpbnB1dCB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRvIG1hcC4NCj4gPiBPbg0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dCB0aGUgbnVtYmVyIG9m IGJ5dGVzIHRoYXQgd2VyZSBtYXBwZWQuDQo+ID4gKyAgQHBhcmFtW291dF0gICAgIERldmljZUFk ZHJlc3MgICAgICAgVGhlIHJlc3VsdGluZyBtYXAgYWRkcmVzcyBmb3IgdGhlIGJ1cw0KPiA+IG1h c3Rlcg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZSB0 byB1c2UgdG8gYWNjZXNzIHRoZSBob3N0cyBIb3N0QWRkcmVzcy4NCj4gPiArICBAcGFyYW1bb3V0 XSAgICAgTWFwcGluZyAgICAgICAgICAgICBBIHJldHVybmVkIHZhbHVlIHRoYXQgbXVzdCBiZSBw YXNzZWQgdG8NCj4gaW50bw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEVGSV9JU0FfSU9fUFJPVE9DT0wuVW5tYXAoKSB0byBmcmVlIGFsbCB0aGUgdGhlDQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VzIGFzc29jaWF0 ZWQgd2l0aCB0aGlzIG1hcCByZXF1ZXN0Lg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIEVGSV9TVUND RVNTICAgICAgICAgICAgIFRoZSByYW5nZSB3YXMgbWFwcGVkIGZvciB0aGUgcmV0dXJuZWQNCj4g PiBOdW1iZXJPZkJ5dGVzLg0KPiA+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSICAg VGhlIE9wZXJhdGlvbiBpcyB1bmRlZmluZWQuDQo+ID4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9Q QVJBTUVURVIgICBUaGUgSG9zdEFkZHJlc3MgaXMgdW5kZWZpbmVkLg0KPiA+ICsgIEByZXR2YWwg RUZJX1VOU1VQUE9SVEVEICAgICAgICAgVGhlIEhvc3RBZGRyZXNzIGNhbiBub3QgYmUgbWFwcGVk IGFzIGENCj4gPiBjb21tb24gYnVmZmVyLg0KPiA+ICsgIEByZXR2YWwgRUZJX0RFVklDRV9FUlJP UiAgICAgICAgVGhlIHN5c3RlbSBoYXJkd2FyZSBjb3VsZCBub3QgbWFwIHRoZQ0KPiA+IHJlcXVl c3RlZCBhZGRyZXNzLg0KPiA+ICsgIEByZXR2YWwgRUZJX09VVF9PRl9SRVNPVVJDRVMgICAgVGhl IG1lbW9yeSBwYWdlcyBjb3VsZCBub3QgYmUNCj4gPiBhbGxvY2F0ZWQuDQo+ID4gKw0KPiA+ICsq Ki8NCj4gPiArdHlwZWRlZg0KPiA+ICtFRklfU1RBVFVTDQo+ID4gKyhFRklBUEkgKkVGSV9JU0Ff SU9fUFJPVE9DT0xfTUFQKSgNCj4gPiArICBJTiAgICAgRUZJX0lTQV9JT19QUk9UT0NPTCAgICAg ICAgICAgICpUaGlzLA0KPiA+ICsgIElOICAgICBFRklfSVNBX0lPX1BST1RPQ09MX09QRVJBVElP TiAgT3BlcmF0aW9uLA0KPiA+ICsgIElOICAgICBVSU5UOCAgICAgICAgICAgICAgICAgICAgICAg ICAgQ2hhbm5lbE51bWJlciAgICAgIE9QVElPTkFMLA0KPiA+ICsgIElOICAgICBVSU5UMzIgICAg ICAgICAgICAgICAgICAgICAgICAgQ2hhbm5lbEF0dHJpYnV0ZXMsDQo+ID4gKyAgSU4gICAgIFZP SUQgICAgICAgICAgICAgICAgICAgICAgICAgICAqSG9zdEFkZHJlc3MsDQo+ID4gKyAgSU4gT1VU IFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICAqTnVtYmVyT2ZCeXRlcywNCj4gPiArICBP VVQgICAgRUZJX1BIWVNJQ0FMX0FERFJFU1MgICAgICAgICAgICpEZXZpY2VBZGRyZXNzLA0KPiA+ ICsgIE9VVCAgICBWT0lEICAgICAgICAgICAgICAgICAgICAgICAgICAgKipNYXBwaW5nDQo+ID4g KyAgKTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFVubWFwcyBhIG1lbW9yeSByZWdpb24gdGhh dCB3YXMgcHJldmlvdXNseSBtYXBwZWQgd2l0aA0KPiA+IEVGSV9JU0FfSU9fUFJPVE9DT0wuTWFw KCkuDQo+ID4gKw0KPiA+ICsgIFRoZSBFRklfSVNBX0lPX1BST1RPQ09MLk1hcCgpIG9wZXJhdGlv biBpcyBjb21wbGV0ZWQgYW5kIGFueQ0KPiA+IGNvcnJlc3BvbmRpbmcNCj4gPiArICByZXNvdXJj ZXMgYXJlIHJlbGVhc2VkLiAgSWYgdGhlIG9wZXJhdGlvbiB3YXMgRWZpSXNhSW9PcGVyYXRpb25T bGF2ZVdyaXRlDQo+ID4gKyAgb3IgRWZpSXNhSW9PcGVyYXRpb25CdXNNYXN0ZXJXcml0ZSwgdGhl IGRhdGEgaXMgY29tbWl0dGVkIHRvIHN5c3RlbQ0KPiA+IG1lbW9yeS4NCj4gPiArICBBbnkgcmVz b3VyY2VzIHVzZWQgZm9yIHRoZSBtYXBwaW5nIGFyZSBmcmVlZC4NCj4gPiArDQo+ID4gKyAgQHBh cmFtW2luXSBUaGlzICAgICAgICAgICBBIHBvaW50ZXIgdG8gdGhlIEVGSV9JU0FfSU9fUFJPVE9D T0wgaW5zdGFuY2UuDQo+ID4gKyAgQHBhcmFtW2luXSBNYXBwaW5nICAgICAgICBUaGUgbWFwcGlu ZyB2YWx1ZSByZXR1cm5lZCBmcm9tDQo+ID4gRUZJX0lTQV9JT19QUk9UT0NPTC5NYXAoKS4NCj4g PiArDQo+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICBUaGUgbWVtb3J5IHJlZ2lvbiB3 YXMgdW5tYXBwZWQuDQo+ID4gKyAgQHJldHZhbCBFRklfREVWSUNFX0VSUk9SICBUaGUgZGF0YSB3 YXMgbm90IGNvbW1pdHRlZCB0byB0aGUgdGFyZ2V0DQo+ID4gc3lzdGVtIG1lbW9yeS4NCj4gPiAr KiovDQo+ID4gK3R5cGVkZWYNCj4gPiArRUZJX1NUQVRVUw0KPiA+ICsoRUZJQVBJICpFRklfSVNB X0lPX1BST1RPQ09MX1VOTUFQKSgNCj4gPiArICBJTiAgRUZJX0lTQV9JT19QUk9UT0NPTCAgKlRo aXMsDQo+ID4gKyAgSU4gIFZPSUQgICAgICAgICAgICAgICAgICpNYXBwaW5nDQo+ID4gKyAgKTsN Cj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIEFsbG9jYXRlcyBwYWdlcyB0aGF0IGFyZSBzdWl0YWJs ZSBmb3IgYW4NCj4gPiBFZmlJc2FJb09wZXJhdGlvbkJ1c01hc3RlckNvbW1vbkJ1ZmZlcg0KPiA+ ICsgIG1hcHBpbmcuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtpbl0gIFRoaXMgICAgICAgICAgQSBw b2ludGVyIHRvIHRoZSBFRklfSVNBX0lPX1BST1RPQ09MIGluc3RhbmNlLg0KPiA+ICsgIEBwYXJh bVtpbl0gIFR5cGUgICAgICAgICAgVGhlIHR5cGUgYWxsb2NhdGlvbiB0byBwZXJmb3JtLg0KPiA+ ICsgIEBwYXJhbVtpbl0gIE1lbW9yeVR5cGUgICAgVGhlIHR5cGUgb2YgbWVtb3J5IHRvIGFsbG9j YXRlLg0KPiA+ICsgIEBwYXJhbVtpbl0gIFBhZ2VzICAgICAgICAgVGhlIG51bWJlciBvZiBwYWdl cyB0byBhbGxvY2F0ZS4NCj4gPiArICBAcGFyYW1bb3V0XSBIb3N0QWRkcmVzcyAgIEEgcG9pbnRl ciB0byBzdG9yZSB0aGUgYmFzZSBhZGRyZXNzIG9mIHRoZQ0KPiA+IGFsbG9jYXRlZCByYW5nZS4N Cj4gPiArICBAcGFyYW1baW5dICBBdHRyaWJ1dGVzICAgIFRoZSByZXF1ZXN0ZWQgYml0IG1hc2sg b2YgYXR0cmlidXRlcyBmb3IgdGhlDQo+ID4gYWxsb2NhdGVkIHJhbmdlLg0KPiA+ICsNCj4gPiAr ICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICAgIFRoZSByZXF1ZXN0ZWQgbWVtb3J5IHBh Z2VzIHdlcmUgYWxsb2NhdGVkLg0KPiA+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVS ICAgVHlwZSBpcyBpbnZhbGlkLg0KPiA+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVS ICAgTWVtb3J5VHlwZSBpcyBpbnZhbGlkLg0KPiA+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFS QU1FVEVSICAgSG9zdEFkZHJlc3MgaXMgTlVMTC4NCj4gPiArICBAcmV0dmFsIEVGSV9VTlNVUFBP UlRFRCAgICAgICAgIEF0dHJpYnV0ZXMgaXMgdW5zdXBwb3J0ZWQuDQo+ID4gKyAgQHJldHZhbCBF RklfVU5TVVBQT1JURUQgICAgICAgICBUaGUgbWVtb3J5IHJhbmdlIHNwZWNpZmllZCBieQ0KPiA+ IEhvc3RBZGRyZXNzLCBQYWdlcywNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGFuZCBUeXBlIGlzIG5vdCBhdmFpbGFibGUgZm9yIGNvbW1vbiBidWZmZXIgdXNlLg0KPiA+ ICsgIEByZXR2YWwgRUZJX09VVF9PRl9SRVNPVVJDRVMgICAgVGhlIG1lbW9yeSBwYWdlcyBjb3Vs ZCBub3QgYmUNCj4gPiBhbGxvY2F0ZWQuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArdHlwZWRlZg0K PiA+ICtFRklfU1RBVFVTDQo+ID4gKyhFRklBUEkgKkVGSV9JU0FfSU9fUFJPVE9DT0xfQUxMT0NB VEVfQlVGRkVSKSgNCj4gPiArICBJTiAgRUZJX0lTQV9JT19QUk9UT0NPTCAgKlRoaXMsDQo+ID4g KyAgSU4gIEVGSV9BTExPQ0FURV9UWVBFICAgIFR5cGUsDQo+ID4gKyAgSU4gIEVGSV9NRU1PUllf VFlQRSAgICAgIE1lbW9yeVR5cGUsDQo+ID4gKyAgSU4gIFVJTlROICAgICAgICAgICAgICAgIFBh Z2VzLA0KPiA+ICsgIE9VVCBWT0lEICAgICAgICAgICAgICAgICAqKkhvc3RBZGRyZXNzLA0KPiA+ ICsgIElOICBVSU5UNjQgICAgICAgICAgICAgICBBdHRyaWJ1dGVzDQo+ID4gKyAgKTsNCj4gPiAr DQo+ID4gKy8qKg0KPiA+ICsgIEZyZWVzIGEgY29tbW9uIGJ1ZmZlciB0aGF0IHdhcyBhbGxvY2F0 ZWQgd2l0aA0KPiA+IEVGSV9JU0FfSU9fUFJPVE9DT0wuQWxsb2NhdGVCdWZmZXIoKS4NCj4gPiAr DQo+ID4gKyAgQHBhcmFtW2luXSBUaGlzICAgICAgICAgIEEgcG9pbnRlciB0byB0aGUgRUZJX0lT QV9JT19QUk9UT0NPTCBpbnN0YW5jZS4NCj4gPiArICBAcGFyYW1baW5dIFBhZ2VzICAgICAgICAg VGhlIG51bWJlciBvZiBwYWdlcyB0byBmcmVlIGZyb20gdGhlIHByZXZpb3VzbHkNCj4gPiBhbGxv Y2F0ZWQgY29tbW9uIGJ1ZmZlci4NCj4gPiArICBAcGFyYW1baW5dIEhvc3RBZGRyZXNzICAgVGhl IGJhc2UgYWRkcmVzcyBvZiB0aGUgcHJldmlvdXNseSBhbGxvY2F0ZWQNCj4gPiBjb21tb24gYnVm ZmVyLg0KPiA+ICsNCj4gPiArDQo+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAg ICBUaGUgcmVxdWVzdGVkIG1lbW9yeSBwYWdlcyB3ZXJlIGZyZWVkLg0KPiA+ICsgIEByZXR2YWwg RUZJX0lOVkFMSURfUEFSQU1FVEVSICAgVGhlIG1lbW9yeSB3YXMgbm90IGFsbG9jYXRlZCB3aXRo DQo+ID4gRUZJX0lTQV9JTy5BbGxvY2F0ZUJ1ZmVyKCkuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiAr dHlwZWRlZg0KPiA+ICtFRklfU1RBVFVTDQo+ID4gKyhFRklBUEkgKkVGSV9JU0FfSU9fUFJPVE9D T0xfRlJFRV9CVUZGRVIpKA0KPiA+ICsgIElOICBFRklfSVNBX0lPX1BST1RPQ09MICAqVGhpcywN Cj4gPiArICBJTiAgVUlOVE4gICAgICAgICAgICAgICAgUGFnZXMsDQo+ID4gKyAgSU4gIFZPSUQg ICAgICAgICAgICAgICAgICpIb3N0QWRkcmVzcw0KPiA+ICsgICk7DQo+ID4gKw0KPiA+ICsvKioN Cj4gPiArICBGbHVzaGVzIGEgRE1BIGJ1ZmZlciwgd2hpY2ggZm9yY2VzIGFsbCBETUEgcG9zdGVk IHdyaXRlIHRyYW5zYWN0aW9ucyB0bw0KPiA+IGNvbXBsZXRlLg0KPiA+ICsNCj4gPiArICBAcGFy YW1baW5dIFRoaXMgICBBIHBvaW50ZXIgdG8gdGhlIEVGSV9JU0FfSU9fUFJPVE9DT0wgaW5zdGFu Y2UuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgIEVGSV9TVUNDRVNTICAgICAgICBUaGUgRE1BIGJ1 ZmZlcnMgd2VyZSBmbHVzaGVkLg0KPiA+ICsgIEByZXR2YWwgIEVGSV9ERVZJQ0VfRVJST1IgICBU aGUgYnVmZmVycyB3ZXJlIG5vdCBmbHVzaGVkIGR1ZSB0byBhDQo+ID4gaGFyZHdhcmUgZXJyb3Iu DQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArdHlwZWRlZg0KPiA+ICtFRklfU1RBVFVTDQo+ID4gKyhF RklBUEkgKkVGSV9JU0FfSU9fUFJPVE9DT0xfRkxVU0gpKA0KPiA+ICsgIElOIEVGSV9JU0FfSU9f UFJPVE9DT0wgICpUaGlzDQo+ID4gKyAgKTsNCj4gPiArDQo+ID4gKy8vLw0KPiA+ICsvLy8gVGhl IEVGSV9JU0FfSU9fUFJPVE9DT0wgcHJvdmlkZXMgdGhlIGJhc2ljIE1lbW9yeSwgSS9PLCBhbmQg RE1BDQo+ID4gaW50ZXJmYWNlcw0KPiA+ICsvLy8gdXNlZCB0byBhYnN0cmFjdCBhY2Nlc3NlcyB0 byBJU0EgY29udHJvbGxlcnMuICBUaGVyZSBpcyBvbmUNCj4gPiBFRklfSVNBX0lPX1BST1RPQ09M DQo+ID4gKy8vLyBpbnN0YW5jZSBmb3IgZWFjaCBJU0EgY29udHJvbGxlciBvbiBhIElTQSBidXMu IEEgZGV2aWNlIGRyaXZlciB0aGF0IHdpc2hlcw0KPiA+ICsvLy8gdG8gbWFuYWdlIGFuIElTQSBj b250cm9sbGVyIGluIGEgc3lzdGVtIHdpbGwgaGF2ZSB0byByZXRyaWV2ZSB0aGUNCj4gPiArLy8v IElTQV9QQ0lfSU9fUFJPVE9DT0wgaW5zdGFuY2UgYXNzb2NpYXRlZCB3aXRoIHRoZSBJU0EgY29u dHJvbGxlci4NCj4gPiArLy8vDQo+ID4gK3N0cnVjdCBfRUZJX0lTQV9JT19QUk9UT0NPTCB7DQo+ ID4gKyAgRUZJX0lTQV9JT19QUk9UT0NPTF9BQ0NFU1MgICAgICAgICAgIE1lbTsNCj4gPiArICBF RklfSVNBX0lPX1BST1RPQ09MX0FDQ0VTUyAgICAgICAgICAgSW87DQo+ID4gKyAgRUZJX0lTQV9J T19QUk9UT0NPTF9DT1BZX01FTSAgICAgICAgIENvcHlNZW07DQo+ID4gKyAgRUZJX0lTQV9JT19Q Uk9UT0NPTF9NQVAgICAgICAgICAgICAgIE1hcDsNCj4gPiArICBFRklfSVNBX0lPX1BST1RPQ09M X1VOTUFQICAgICAgICAgICAgVW5tYXA7DQo+ID4gKyAgRUZJX0lTQV9JT19QUk9UT0NPTF9BTExP Q0FURV9CVUZGRVIgIEFsbG9jYXRlQnVmZmVyOw0KPiA+ICsgIEVGSV9JU0FfSU9fUFJPVE9DT0xf RlJFRV9CVUZGRVIgICAgICBGcmVlQnVmZmVyOw0KPiA+ICsgIEVGSV9JU0FfSU9fUFJPVE9DT0xf RkxVU0ggICAgICAgICAgICBGbHVzaDsNCj4gPiArICAvLy8NCj4gPiArICAvLy8gVGhlIGxpc3Qg b2YgSS9PICwgTU1JTywgRE1BLCBhbmQgSW50ZXJydXB0IHJlc291cmNlcyBhc3NvY2lhdGVkIHdp dGggdGhlDQo+ID4gKyAgLy8vIElTQSBjb250cm9sbGVyIGFic3RyYWN0ZWQgYnkgdGhpcyBpbnN0 YW5jZSBvZiB0aGUgRUZJX0lTQV9JT19QUk9UT0NPTC4NCj4gPiArICAvLy8NCj4gPiArICBFRklf SVNBX0FDUElfUkVTT1VSQ0VfTElTVCAgICAgICAgICAgKlJlc291cmNlTGlzdDsNCj4gPiArICAv Ly8NCj4gPiArICAvLy8gVGhlIHNpemUsIGluIGJ5dGVzLCBvZiB0aGUgUk9NIGltYWdlLg0KPiA+ ICsgIC8vLw0KPiA+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSb21T aXplOw0KPiA+ICsgIC8vLw0KPiA+ICsgIC8vLyBBIHBvaW50ZXIgdG8gdGhlIGluIG1lbW9yeSBj b3B5IG9mIHRoZSBST00gaW1hZ2UuIFRoZSBJU0EgQnVzIERyaXZlciBpcw0KPiA+IHJlc3BvbnNp YmxlDQo+ID4gKyAgLy8vIGZvciBhbGxvY2F0aW5nIG1lbW9yeSBmb3IgdGhlIFJPTSBpbWFnZSwg YW5kIGNvcHlpbmcgdGhlIGNvbnRlbnRzIG9mDQo+IHRoZQ0KPiA+IFJPTSB0byBtZW1vcnkNCj4g PiArICAvLy8gZHVyaW5nIElTQSBCdXMgaW5pdGlhbGl6YXRpb24uDQo+ID4gKyAgLy8vDQo+ID4g KyAgVk9JRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpSb21JbWFnZTsNCj4gPiAr fTsNCj4gPiArDQo+ID4gK2V4dGVybiBFRklfR1VJRCBnRWZpSXNhSW9Qcm90b2NvbEd1aWQ7DQo+ ID4gKw0KPiA+ICsjZW5kaWYNCj4gPiBkaWZmIC0tZ2l0DQo+IGEvUGxhdGZvcm0vSW50ZWwvU2lt aWNzT3BlbkJvYXJkUGtnL0luY2x1ZGUvUHJvdG9jb2wvTGVnYWN5ODI1OS5oDQo+ID4gYi9QbGF0 Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvSW5jbHVkZS9Qcm90b2NvbC9MZWdhY3k4MjU5 LmgNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAwMDAuLmMzOGYy ZmViYTcNCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIvUGxhdGZvcm0vSW50ZWwvU2ltaWNz T3BlbkJvYXJkUGtnL0luY2x1ZGUvUHJvdG9jb2wvTGVnYWN5ODI1OS5oDQo+ID4gQEAgLTAsMCAr MSwyOTEgQEANCj4gPiArLyoqIEBmaWxlDQo+ID4gKyAgVGhpcyBwcm90b2NvbCBhYnN0cmFjdHMg dGhlIDgyNTkgaW50ZXJydXB0IGNvbnRyb2xsZXIuIFRoaXMgaW5jbHVkZXMNCj4gPiArICBQQ0kg SVJRIHJvdXRpbmcgbmVlZGVkIHRvIHByb2dyYW0gdGhlIFBDSSBJbnRlcnJ1cHQgTGluZSByZWdp c3Rlci4NCj4gPiArDQo+ID4gKyAgQ29weXJpZ2h0IChjKSAyMDA3IC0gMjAxOCwgSW50ZWwgQ29y cG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ICsgIFNQRFgtTGljZW5zZS1J ZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ID4gKw0KPiA+ICsgIEBwYXIgUmV2aXNp b24gUmVmZXJlbmNlOg0KPiA+ICsgIFRoaXMgcHJvdG9jb2wgaXMgZGVmaW5lZCBpbiBGcmFtZXdv cmsgZm9yIEVGSSBDb21wYXRpYmlsaXR5IFN1cHBvcnQgTW9kdWxlDQo+ID4gc3BlYw0KPiA+ICsg IFZlcnNpb24gMC45Ny4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICsNCj4gPiArI2lmbmRlZiBfRUZJ X0xFR0FDWV84MjU5X0hfDQo+ID4gKyNkZWZpbmUgX0VGSV9MRUdBQ1lfODI1OV9IXw0KPiA+ICsN Cj4gPiArDQo+ID4gKyNkZWZpbmUgRUZJX0xFR0FDWV84MjU5X1BST1RPQ09MX0dVSUQgXA0KPiA+ ICsgIHsgXA0KPiA+ICsgICAgMHgzODMyMWRiYSwgMHg0ZmUwLCAweDRlMTcsIHsweDhhLCAweGVj LCAweDQxLCAweDMwLCAweDU1LCAweGVhLCAweGVkLA0KPiA+IDB4YzEgfSBcDQo+ID4gKyAgfQ0K PiA+ICsNCj4gPiArdHlwZWRlZiBzdHJ1Y3QgX0VGSV9MRUdBQ1lfODI1OV9QUk9UT0NPTA0KPiA+ IEVGSV9MRUdBQ1lfODI1OV9QUk9UT0NPTDsNCj4gPiArDQo+ID4gK3R5cGVkZWYgZW51bSB7DQo+ ID4gKyAgRWZpODI1OUlycTAsDQo+ID4gKyAgRWZpODI1OUlycTEsDQo+ID4gKyAgRWZpODI1OUly cTIsDQo+ID4gKyAgRWZpODI1OUlycTMsDQo+ID4gKyAgRWZpODI1OUlycTQsDQo+ID4gKyAgRWZp ODI1OUlycTUsDQo+ID4gKyAgRWZpODI1OUlycTYsDQo+ID4gKyAgRWZpODI1OUlycTcsDQo+ID4g KyAgRWZpODI1OUlycTgsDQo+ID4gKyAgRWZpODI1OUlycTksDQo+ID4gKyAgRWZpODI1OUlycTEw LA0KPiA+ICsgIEVmaTgyNTlJcnExMSwNCj4gPiArICBFZmk4MjU5SXJxMTIsDQo+ID4gKyAgRWZp ODI1OUlycTEzLA0KPiA+ICsgIEVmaTgyNTlJcnExNCwNCj4gPiArICBFZmk4MjU5SXJxMTUsDQo+ ID4gKyAgRWZpODI1OUlycU1heA0KPiA+ICt9IEVGSV84MjU5X0lSUTsNCj4gPiArDQo+ID4gK3R5 cGVkZWYgZW51bSB7DQo+ID4gKyAgRWZpODI1OUxlZ2FjeU1vZGUsDQo+ID4gKyAgRWZpODI1OVBy b3RlY3RlZE1vZGUsDQo+ID4gKyAgRWZpODI1OU1heE1vZGUNCj4gPiArfSBFRklfODI1OV9NT0RF Ow0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgR2V0IHRoZSA4MjU5IGludGVycnVwdCBtYXNrcyBm b3IgSXJxMCAtIElycTE1LiBBIGRpZmZlcmVudCBtYXNrIGV4aXN0cyBmb3INCj4gPiArICB0aGUg bGVnYWN5IG1vZGUgbWFzayBhbmQgdGhlIHByb3RlY3RlZCBtb2RlIG1hc2suIFRoZSBiYXNlIGFk ZHJlc3MgZm9yDQo+ID4gdGhlIDgyNTkNCj4gPiArICBpcyBkaWZmZXJlbnQgZm9yIGxlZ2FjeSBh bmQgcHJvdGVjdGVkIG1vZGUsIHNvIHR3byBtYXNrcyBhcmUgcmVxdWlyZWQuDQo+ID4gKw0KPiA+ ICsgIEBwYXJhbSAgVGhpcyAgICAgICAgICAgICAgICAgIFRoZSBwcm90b2NvbCBpbnN0YW5jZSBw b2ludGVyLg0KPiA+ICsgIEBwYXJhbSAgTWFzdGVyQmFzZSAgICAgICAgICAgIFRoZSBiYXNlIHZl Y3RvciBmb3IgdGhlIE1hc3RlciBQSUMgaW4gdGhlIDgyNTkNCj4gPiBjb250cm9sbGVyLg0KPiA+ ICsgIEBwYXJhbSAgU2xhdmVCYXNlICAgICAgICAgICAgIFRoZSBiYXNlIHZlY3RvciBmb3IgdGhl IFNsYXZlIFBJQyBpbiB0aGUgODI1OQ0KPiA+IGNvbnRyb2xsZXIuDQo+ID4gKw0KPiA+ICsgIEBy ZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBuZXcgYmFzZXMgd2VyZSBwcm9ncmFtbWVk Lg0KPiA+ICsgIEByZXR2YWwgRUZJX0RFVklDRV9FUlJPUiAgICAgIEEgZGV2aWNlIGVycm9yIG9j Y3VyZWQgcHJvZ3JhbW1pbmcgdGhlDQo+ID4gdmVjdG9yIGJhc2VzLg0KPiA+ICsNCj4gPiArKiov DQo+ID4gK3R5cGVkZWYNCj4gPiArRUZJX1NUQVRVUw0KPiA+ICsoRUZJQVBJICpFRklfTEVHQUNZ XzgyNTlfU0VUX1ZFQ1RPUl9CQVNFKSgNCj4gPiArICBJTiBFRklfTEVHQUNZXzgyNTlfUFJPVE9D T0wgICAgICAgICAgICpUaGlzLA0KPiA+ICsgIElOICBVSU5UOCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgTWFzdGVyQmFzZSwNCj4gPiArICBJTiAgVUlOVDggICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFNsYXZlQmFzZQ0KPiA+ICsgICk7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBH ZXQgdGhlIDgyNTkgaW50ZXJydXB0IG1hc2tzIGZvciBJcnEwIC0gSXJxMTUuIEEgZGlmZmVyZW50 IG1hc2sgZXhpc3RzIGZvcg0KPiA+ICsgIHRoZSBsZWdhY3kgbW9kZSBtYXNrIGFuZCB0aGUgcHJv dGVjdGVkIG1vZGUgbWFzay4gVGhlIGJhc2UgYWRkcmVzcyBmb3INCj4gPiB0aGUgODI1OQ0KPiA+ ICsgIGlzIGRpZmZlcmVudCBmb3IgbGVnYWN5IGFuZCBwcm90ZWN0ZWQgbW9kZSwgc28gdHdvIG1h c2tzIGFyZSByZXF1aXJlZC4NCj4gPiArDQo+ID4gKyAgQHBhcmFtICBUaGlzICAgICAgICAgICAg ICAgICAgVGhlIHByb3RvY29sIGluc3RhbmNlIHBvaW50ZXIuDQo+ID4gKyAgQHBhcmFtICBMZWdh Y3lNYXNrICAgICAgICAgICAgQml0IDAgaXMgSXJxMCAtIEJpdCAxNSBpcyBJcnExNS4NCj4gPiAr ICBAcGFyYW0gIExlZ2FjeUVkZ2VMZXZlbCAgICAgICBCaXQgMCBpcyBJcnEwIC0gQml0IDE1IGlz IElycTE1Lg0KPiA+ICsgIEBwYXJhbSAgUHJvdGVjdGVkTWFzayAgICAgICAgIEJpdCAwIGlzIEly cTAgLSBCaXQgMTUgaXMgSXJxMTUuDQo+ID4gKyAgQHBhcmFtICBQcm90ZWN0ZWRFZGdlTGV2ZWwg ICAgQml0IDAgaXMgSXJxMCAtIEJpdCAxNSBpcyBJcnExNS4NCj4gPiArDQo+ID4gKyAgQHJldHZh bCBFRklfU1VDQ0VTUyAgICAgICAgICAgODI1OSBzdGF0dXMgcmV0dXJuZWQuDQo+ID4gKyAgQHJl dHZhbCBFRklfREVWSUNFX0VSUk9SICAgICAgRXJyb3IgcmVhZGluZyA4MjU5Lg0KPiA+ICsNCj4g PiArKiovDQo+ID4gK3R5cGVkZWYNCj4gPiArRUZJX1NUQVRVUw0KPiA+ICsoRUZJQVBJICpFRklf TEVHQUNZXzgyNTlfR0VUX01BU0spKA0KPiA+ICsgIElOIEVGSV9MRUdBQ1lfODI1OV9QUk9UT0NP TCAgICAgICAgICAgKlRoaXMsDQo+ID4gKyAgT1VUIFVJTlQxNiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAqTGVnYWN5TWFzaywgT1BUSU9OQUwNCj4gPiArICBPVVQgVUlOVDE2ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICpMZWdhY3lFZGdlTGV2ZWwsIE9QVElPTkFMDQo+ID4gKyAgT1VU IFVJTlQxNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqUHJvdGVjdGVkTWFzaywgT1BUSU9O QUwNCj4gPiArICBPVVQgVUlOVDE2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICpQcm90ZWN0 ZWRFZGdlTGV2ZWwgT1BUSU9OQUwNCj4gPiArICApOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAg U2V0IHRoZSA4MjU5IGludGVycnVwdCBtYXNrcyBmb3IgSXJxMCAtIElycTE1LiBBIGRpZmZlcmVu dCBtYXNrIGV4aXN0cyBmb3INCj4gPiArICB0aGUgbGVnYWN5IG1vZGUgbWFzayBhbmQgdGhlIHBy b3RlY3RlZCBtb2RlIG1hc2suIFRoZSBiYXNlIGFkZHJlc3MgZm9yDQo+ID4gdGhlIDgyNTkNCj4g PiArICBpcyBkaWZmZXJlbnQgZm9yIGxlZ2FjeSBhbmQgcHJvdGVjdGVkIG1vZGUsIHNvIHR3byBt YXNrcyBhcmUgcmVxdWlyZWQuDQo+ID4gKyAgQWxzbyBzZXQgdGhlIGVkZ2UvbGV2ZWwgbWFza3Mu DQo+ID4gKw0KPiA+ICsgIEBwYXJhbSAgVGhpcyAgICAgICAgICAgICAgICAgIFRoZSBwcm90b2Nv bCBpbnN0YW5jZSBwb2ludGVyLg0KPiA+ICsgIEBwYXJhbSAgTGVnYWN5TWFzayAgICAgICAgICAg IEJpdCAwIGlzIElycTAgLSBCaXQgMTUgaXMgSXJxMTUuDQo+ID4gKyAgQHBhcmFtICBMZWdhY3lF ZGdlTGV2ZWwgICAgICAgQml0IDAgaXMgSXJxMCAtIEJpdCAxNSBpcyBJcnExNS4NCj4gPiArICBA cGFyYW0gIFByb3RlY3RlZE1hc2sgICAgICAgICBCaXQgMCBpcyBJcnEwIC0gQml0IDE1IGlzIEly cTE1Lg0KPiA+ICsgIEBwYXJhbSAgUHJvdGVjdGVkRWRnZUxldmVsICAgIEJpdCAwIGlzIElycTAg LSBCaXQgMTUgaXMgSXJxMTUuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAg ICAgICAgIDgyNTkgc3RhdHVzIHJldHVybmVkLg0KPiA+ICsgIEByZXR2YWwgRUZJX0RFVklDRV9F UlJPUiAgICAgIEVycm9yIHdyaXRpbmcgODI1OS4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICt0eXBl ZGVmDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArKEVGSUFQSSAqRUZJX0xFR0FDWV84MjU5X1NFVF9N QVNLKSgNCj4gPiArICBJTiBFRklfTEVHQUNZXzgyNTlfUFJPVE9DT0wgICAgICAgICAgICpUaGlz LA0KPiA+ICsgIElOICBVSU5UMTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgKkxlZ2FjeU1h c2ssIE9QVElPTkFMDQo+ID4gKyAgSU4gIFVJTlQxNiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAqTGVnYWN5RWRnZUxldmVsLCBPUFRJT05BTA0KPiA+ICsgIElOICBVSU5UMTYgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKlByb3RlY3RlZE1hc2ssIE9QVElPTkFMDQo+ID4gKyAgSU4gIFVJ TlQxNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqUHJvdGVjdGVkRWRnZUxldmVsIE9QVElP TkFMDQo+ID4gKyAgKTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFNldCB0aGUgODI1OSBtb2Rl IG9mIG9wZXJhdGlvbi4gVGhlIGJhc2UgYWRkcmVzcyBmb3IgdGhlIDgyNTkgaXMgZGlmZmVyZW50 DQo+ID4gZm9yDQo+ID4gKyAgbGVnYWN5IGFuZCBwcm90ZWN0ZWQgbW9kZS4gVGhlIGxlZ2FjeSBt b2RlIHJlcXVpcmVzIHRoZSBtYXN0ZXIgODI1OSB0bw0KPiA+IGhhdmUgYQ0KPiA+ICsgIG1hc3Rl ciBiYXNlIG9mIDB4MDggYW5kIHRoZSBzbGF2ZSBiYXNlIG9mIDB4NzAuIFRoZSBwcm90ZWN0ZWQg bW9kZSBiYXNlDQo+ID4gbG9jYXRpb25zDQo+ID4gKyAgYXJlIG5vdCBkZWZpbmVkLiBJbnRlcnJ1 cHRzIG11c3QgYmUgbWFza2VkIGJ5IHRoZSBjYWxsZXIgYmVmb3JlIHRoaXMNCj4gZnVuY3Rpb24N Cj4gPiArICBpcyBjYWxsZWQuIFRoZSBpbnRlcnJ1cHQgbWFzayBmcm9tIHRoZSBjdXJyZW50IG1v ZGUgaXMgc2F2ZWQuIFRoZSBpbnRlcnJ1cHQNCj4gPiArICBtYXNrIGZvciB0aGUgbmV3IG1vZGUg aXMgTWFzaywgb3IgaWYgTWFzayBkb2VzIG5vdCBleGlzdCB0aGUgcHJldmlvdXNseQ0KPiBzYXZl ZA0KPiA+ICsgIG1hc2sgaXMgdXNlZC4NCj4gPiArDQo+ID4gKyAgQHBhcmFtICBUaGlzICAgICAg ICAgICAgICAgICAgVGhlIHByb3RvY29sIGluc3RhbmNlIHBvaW50ZXIuDQo+ID4gKyAgQHBhcmFt ICBNb2RlICAgICAgICAgICAgICAgICAgVGhlIG1vZGUgb2Ygb3BlcmF0aW9uLiBpLmUuIHRoZSBy ZWFsIG1vZGUgb3INCj4gPiBwcm90ZWN0ZWQgbW9kZS4NCj4gPiArICBAcGFyYW0gIE1hc2sgICAg ICAgICAgICAgICAgICBPcHRpb25hbCBpbnRlcnVwdCBtYXNrIGZvciB0aGUgbmV3IG1vZGUuDQo+ ID4gKyAgQHBhcmFtICBFZGdlTGV2ZWwgICAgICAgICAgICAgT3B0aW9uYWwgdHJpZ2dlciBtYXNr IGZvciB0aGUgbmV3IG1vZGUuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAg ICAgICAgIDgyNTkgcHJvZ3JhbW1lZC4NCj4gPiArICBAcmV0dmFsIEVGSV9ERVZJQ0VfRVJST1Ig ICAgICBFcnJvciB3cml0aW5nIHRvIDgyNTkuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArdHlwZWRl Zg0KPiA+ICtFRklfU1RBVFVTDQo+ID4gKyhFRklBUEkgKkVGSV9MRUdBQ1lfODI1OV9TRVRfTU9E RSkoDQo+ID4gKyAgSU4gRUZJX0xFR0FDWV84MjU5X1BST1RPQ09MICAgICAgICAgKlRoaXMsDQo+ ID4gKyAgSU4gIEVGSV84MjU5X01PREUgICAgICAgICAgICAgICAgICAgTW9kZSwNCj4gPiArICBJ TiAgVUlOVDE2ICAgICAgICAgICAgICAgICAgICAgICAgICAqTWFzaywgT1BUSU9OQUwNCj4gPiAr ICBJTiAgVUlOVDE2ICAgICAgICAgICAgICAgICAgICAgICAgICAqRWRnZUxldmVsIE9QVElPTkFM DQo+ID4gKyAgKTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIENvbnZlcnQgZnJvbSBJUlEgdG8g cHJvY2Vzc29yIGludGVycnVwdCB2ZWN0b3IgbnVtYmVyLg0KPiA+ICsNCj4gPiArICBAcGFyYW0g IFRoaXMgICAgICAgICAgICAgICAgICBUaGUgcHJvdG9jb2wgaW5zdGFuY2UgcG9pbnRlci4NCj4g PiArICBAcGFyYW0gIElycSAgICAgICAgICAgICAgICAgICA4MjU5IElSUTAgLSBJUlExNS4NCj4g PiArICBAcGFyYW0gIFZlY3RvciAgICAgICAgICAgICAgICBUaGUgcHJvY2Vzc29yIHZlY3RvciBu dW1iZXIgdGhhdCBtYXRjaGVzIGFuIElycS4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBFRklfU1VD Q0VTUyAgICAgICAgICAgVGhlIFZlY3RvciBtYXRjaGluZyBJcnEgaXMgcmV0dXJuZWQuDQo+ID4g KyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgVGhlIElycSBub3QgdmFsaWQuDQo+ID4g Kw0KPiA+ICsqKi8NCj4gPiArdHlwZWRlZg0KPiA+ICtFRklfU1RBVFVTDQo+ID4gKyhFRklBUEkg KkVGSV9MRUdBQ1lfODI1OV9HRVRfVkVDVE9SKSgNCj4gPiArICBJTiBFRklfTEVHQUNZXzgyNTlf UFJPVE9DT0wgICAgICAgICAgICpUaGlzLA0KPiA+ICsgIElOICBFRklfODI1OV9JUlEgICAgICAg ICAgICAgICAgICAgICAgSXJxLA0KPiA+ICsgIE9VVCBVSU5UOCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKlZlY3Rvcg0KPiA+ICsgICk7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBFbmFi bGUgSXJxIGJ5IHVubWFza2luZyBpbnRlcnJ1cHQgaW4gODI1OQ0KPiA+ICsNCj4gPiArICBAcGFy YW0gIFRoaXMgICAgICAgICAgICAgICAgICBUaGUgcHJvdG9jb2wgaW5zdGFuY2UgcG9pbnRlci4N Cj4gPiArICBAcGFyYW0gIElycSAgICAgICAgICAgICAgICAgICA4MjU5IElSUTAgLSBJUlExNS4N Cj4gPiArICBAcGFyYW0gIExldmVsVHJpZ2dlcmVkICAgICAgICBUUlVFIGlmIGxldmVsIHRyaWdn ZXJlZC4gRkFMU0UgaWYgZWRnZSB0cmlnZ2VyZWQuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgRUZJ X1NVQ0NFU1MgICAgICAgICAgIFRoZSBJcnEgd2FzIGVuYWJsZWQgb24gODI1OS4NCj4gPiArICBA cmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiBUaGUgSXJxIGlzIG5vdCB2YWxpZC4NCj4gPiAr DQo+ID4gKyoqLw0KPiA+ICt0eXBlZGVmDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArKEVGSUFQSSAq RUZJX0xFR0FDWV84MjU5X0VOQUJMRV9JUlEpKA0KPiA+ICsgIElOIEVGSV9MRUdBQ1lfODI1OV9Q Uk9UT0NPTCAgICAgICAgICAgKlRoaXMsDQo+ID4gKyAgSU4gIEVGSV84MjU5X0lSUSAgICAgICAg ICAgICAgICAgICAgICBJcnEsDQo+ID4gKyAgSU4gIEJPT0xFQU4gICAgICAgICAgICAgICAgICAg ICAgICAgICBMZXZlbFRyaWdnZXJlZA0KPiA+ICsgICk7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiAr ICBEaXNhYmxlIElycSBieSBtYXNraW5nIGludGVycnVwdCBpbiA4MjU5DQo+ID4gKw0KPiA+ICsg IEBwYXJhbSAgVGhpcyAgICAgICAgICAgICAgICAgIFRoZSBwcm90b2NvbCBpbnN0YW5jZSBwb2lu dGVyLg0KPiA+ICsgIEBwYXJhbSAgSXJxICAgICAgICAgICAgICAgICAgIDgyNTkgSVJRMCAtIElS UTE1Lg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUgSXJx IHdhcyBkaXNhYmxlZCBvbiA4MjU5Lg0KPiA+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1F VEVSIFRoZSBJcnEgaXMgbm90IHZhbGlkLg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK3R5cGVkZWYN Cj4gPiArRUZJX1NUQVRVUw0KPiA+ICsoRUZJQVBJICpFRklfTEVHQUNZXzgyNTlfRElTQUJMRV9J UlEpKA0KPiA+ICsgIElOIEVGSV9MRUdBQ1lfODI1OV9QUk9UT0NPTCAgICAgICAgICAgKlRoaXMs DQo+ID4gKyAgSU4gIEVGSV84MjU5X0lSUSAgICAgICAgICAgICAgICAgICAgICBJcnENCj4gPiAr ICApOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgUGNpSGFuZGxlIHJlcHJlc2VudHMgYSBQQ0kg Y29uZmlnIHNwYWNlIG9mIGEgUENJIGZ1bmN0aW9uLiBWZWN0b3INCj4gPiArICByZXByZXNlbnRz IEludGVycnVwdCBQaW4gKGZyb20gUENJIGNvbmZpZyBzcGFjZSkgYW5kIGl0IGlzIHRoZSBkYXRh DQo+ID4gKyAgdGhhdCBpcyBwcm9ncmFtbWVkIGludG8gdGhlIEludGVycnVwdCBMaW5lIChmcm9t IHRoZSBQQ0kgY29uZmlnIHNwYWNlKQ0KPiA+ICsgIHJlZ2lzdGVyLg0KPiA+ICsNCj4gPiArICBA cGFyYW0gIFRoaXMgICAgICAgICAgICAgICAgICBUaGUgcHJvdG9jb2wgaW5zdGFuY2UgcG9pbnRl ci4NCj4gPiArICBAcGFyYW0gIFBjaUhhbmRsZSAgICAgICAgICAgICBUaGUgUENJIGZ1bmN0aW9u IHRvIHJldHVybiB0aGUgdmVjdG9yIGZvci4NCj4gPiArICBAcGFyYW0gIFZlY3RvciAgICAgICAg ICAgICAgICBUaGUgdmVjdG9yIGZvciB0aGUgZnVuY3Rpb24gaXQgbWF0Y2hlcy4NCj4gPiArDQo+ ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgQSB2YWxpZCBWZWN0b3Igd2FzIHJl dHVybmVkLg0KPiA+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSIFBjaUhhbmRsZSBu b3QgdmFsaWQuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArdHlwZWRlZg0KPiA+ICtFRklfU1RBVFVT DQo+ID4gKyhFRklBUEkgKkVGSV9MRUdBQ1lfODI1OV9HRVRfSU5URVJSVVBUX0xJTkUpKA0KPiA+ ICsgIElOIEVGSV9MRUdBQ1lfODI1OV9QUk9UT0NPTCAgICAgICAgICAgKlRoaXMsDQo+ID4gKyAg SU4gIEVGSV9IQU5ETEUgICAgICAgICAgICAgICAgICAgICAgICBQY2lIYW5kbGUsDQo+ID4gKyAg T1VUIFVJTlQ4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqVmVjdG9yDQo+ID4gKyAgKTsN Cj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFNlbmQgYW4gRU9JIHRvIDgyNTkNCj4gPiArDQo+ID4g KyAgQHBhcmFtICBUaGlzICAgICAgICAgICAgICAgICAgVGhlIHByb3RvY29sIGluc3RhbmNlIHBv aW50ZXIuDQo+ID4gKyAgQHBhcmFtICBJcnEgICAgICAgICAgICAgICAgICAgODI1OSBJUlEwIC0g SVJRMTUuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIEVPSSB3 YXMgc3VjY2Vzc2Z1bGx5IHNlbnQgdG8gODI1OS4NCj4gPiArICBAcmV0dmFsIEVGSV9JTlZBTElE X1BBUkFNRVRFUiBUaGUgSXJxIGlzbm90IHZhbGlkLg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK3R5 cGVkZWYNCj4gPiArRUZJX1NUQVRVUw0KPiA+ICsoRUZJQVBJICpFRklfTEVHQUNZXzgyNTlfRU5E X09GX0lOVEVSUlVQVCkoDQo+ID4gKyAgSU4gRUZJX0xFR0FDWV84MjU5X1BST1RPQ09MICAgICAg ICAgICAqVGhpcywNCj4gPiArICBJTiAgRUZJXzgyNTlfSVJRICAgICAgICAgICAgICAgICAgICAg IElycQ0KPiA+ICsgICk7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBAcGFyIFByb3RvY29sIERl c2NyaXB0aW9uOg0KPiA+ICsgIEFic3RyYWN0cyB0aGUgODI1OSBhbmQgQVBJQyBoYXJkd2FyZSBj b250cm9sIGJldHdlZW4gRUZJIHVzYWdlIGFuZA0KPiA+ICsgIENvbXBhdGliaWxpdHkxNiB1c2Fn ZS4NCj4gPiArDQo+ID4gKyAgQHBhcmFtIFNldFZlY3RvckJhc2UNCj4gPiArICBTZXRzIHRoZSB2 ZWN0b3IgYmFzZXMgZm9yIG1hc3RlciBhbmQgc2xhdmUgUElDcy4NCj4gPiArDQo+ID4gKyAgQHBh cmFtIEdldE1hc2sNCj4gPiArICBHZXRzIElSUSBhbmQgZWRnZS9sZXZlbCBtYXNrcyBmb3IgMTYt Yml0IHJlYWwgbW9kZSBhbmQgMzItYml0IHByb3RlY3RlZA0KPiA+IG1vZGUuDQo+ID4gKw0KPiA+ ICsgIEBwYXJhbSBTZXRNYXNrDQo+ID4gKyAgU2V0cyB0aGUgSVJRIGFuZCBlZGdlXGxldmVsIG1h c2tzIGZvciAxNi1iaXQgcmVhbCBtb2RlIGFuZCAzMi1iaXQgcHJvdGVjdGVkDQo+ID4gbW9kZS4N Cj4gPiArDQo+ID4gKyAgQHBhcmFtIFNldE1vZGUNCj4gPiArICBTZXRzIFBJQyBtb2RlIHRvIDE2 LWJpdCByZWFsIG1vZGUgb3IgMzItYml0IHByb3RlY3RlZCBtb2RlLg0KPiA+ICsNCj4gPiArICBA cGFyYW0gR2V0VmVjdG9yDQo+ID4gKyAgR2V0cyB0aGUgYmFzZSB2ZWN0b3IgYXNzaWduZWQgdG8g YW4gSVJRLg0KPiA+ICsNCj4gPiArICBAcGFyYW0gRW5hYmxlSXJxDQo+ID4gKyAgRW5hYmxlcyBh biBJUlEuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbSBEaXNhYmxlSXJxDQo+ID4gKyAgRGlzYWJsZXMg YW4gSVJRLg0KPiA+ICsNCj4gPiArICBAcGFyYW0gR2V0SW50ZXJydXB0TGluZQ0KPiA+ICsgIEdl dHMgYW4gSVJRIHRoYXQgaXMgYXNzaWduZWQgdG8gYSBQQ0kgZGV2aWNlLg0KPiA+ICsNCj4gPiAr ICBAcGFyYW0gRW5kT2ZJbnRlcnJ1cHQNCj4gPiArICBJc3N1ZXMgdGhlIGVuZCBvZiBpbnRlcnJ1 cHQgY29tbWFuZC4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtzdHJ1Y3QgX0VGSV9MRUdBQ1lfODI1 OV9QUk9UT0NPTCB7DQo+ID4gKyAgRUZJX0xFR0FDWV84MjU5X1NFVF9WRUNUT1JfQkFTRSAgICAg U2V0VmVjdG9yQmFzZTsNCj4gPiArICBFRklfTEVHQUNZXzgyNTlfR0VUX01BU0sgICAgICAgICAg ICBHZXRNYXNrOw0KPiA+ICsgIEVGSV9MRUdBQ1lfODI1OV9TRVRfTUFTSyAgICAgICAgICAgIFNl dE1hc2s7DQo+ID4gKyAgRUZJX0xFR0FDWV84MjU5X1NFVF9NT0RFICAgICAgICAgICAgU2V0TW9k ZTsNCj4gPiArICBFRklfTEVHQUNZXzgyNTlfR0VUX1ZFQ1RPUiAgICAgICAgICBHZXRWZWN0b3I7 DQo+ID4gKyAgRUZJX0xFR0FDWV84MjU5X0VOQUJMRV9JUlEgICAgICAgICAgRW5hYmxlSXJxOw0K PiA+ICsgIEVGSV9MRUdBQ1lfODI1OV9ESVNBQkxFX0lSUSAgICAgICAgIERpc2FibGVJcnE7DQo+ ID4gKyAgRUZJX0xFR0FDWV84MjU5X0dFVF9JTlRFUlJVUFRfTElORSAgR2V0SW50ZXJydXB0TGlu ZTsNCj4gPiArICBFRklfTEVHQUNZXzgyNTlfRU5EX09GX0lOVEVSUlVQVCAgICBFbmRPZkludGVy cnVwdDsNCj4gPiArfTsNCj4gPiArDQo+ID4gK2V4dGVybiBFRklfR1VJRCBnRWZpTGVnYWN5ODI1 OVByb3RvY29sR3VpZDsNCj4gPiArDQo+ID4gKyNlbmRpZg0KPiA+IGRpZmYgLS1naXQNCj4gPg0K PiBhL1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9JbmNsdWRlL1JlZ2lzdGVyL1g1 OFNtcmFtU2F2ZVN0YXRlTQ0KPiA+IGFwLmgNCj4gPg0KPiBiL1BsYXRmb3JtL0ludGVsL1NpbWlj c09wZW5Cb2FyZFBrZy9JbmNsdWRlL1JlZ2lzdGVyL1g1OFNtcmFtU2F2ZVN0YXRlTQ0KPiA+IGFw LmgNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAwMDAuLjY0MGFj NDk0M2QNCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrDQo+ID4NCj4gYi9QbGF0Zm9ybS9JbnRl bC9TaW1pY3NPcGVuQm9hcmRQa2cvSW5jbHVkZS9SZWdpc3Rlci9YNThTbXJhbVNhdmVTdGF0ZU0N Cj4gPiBhcC5oDQo+ID4gQEAgLTAsMCArMSwxNzggQEANCj4gPiArLyoqIEBmaWxlDQo+ID4gK1NN UkFNIFNhdmUgU3RhdGUgTWFwIERlZmluaXRpb25zLg0KPiA+ICsNCj4gPiArU01SQU0gU2F2ZSBT dGF0ZSBNYXAgZGVmaW5pdGlvbnMgYmFzZWQgb24gY29udGVudHMgb2YgdGhlDQo+ID4gK0ludGVs KFIpIDY0IGFuZCBJQS0zMiBBcmNoaXRlY3R1cmVzIFNvZnR3YXJlIERldmVsb3BlcidzIE1hbnVh bA0KPiA+ICsgIFZvbHVtZSAzQywgU2VjdGlvbiAzNC40IFNNUkFNDQo+ID4gKyAgVm9sdW1lIDND LCBTZWN0aW9uIDM0LjUgU01JIEhhbmRsZXIgRXhlY3V0aW9uIEVudmlyb25tZW50DQo+ID4gKyAg Vm9sdW1lIDNDLCBTZWN0aW9uIDM0LjcgTWFuYWdpbmcgU3luY2hyb25vdXMgYW5kIEFzeW5jaHJv bm91cyBTTUlzDQo+ID4gKw0KPiA+ICthbmQgdGhlIEFNRDY0IEFyY2hpdGVjdHVyZSBQcm9ncmFt bWVyJ3MgTWFudWFsDQo+ID4gKyAgVm9sdW1lIDIsIFNlY3Rpb24gMTAuMiBTTU0gUmVzb3VyY2Vz DQo+ID4gKw0KPiA+ICtDb3B5cmlnaHQgKGMpIDIwMTUsIEludGVsIENvcnBvcmF0aW9uLiBBbGwg cmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPiArQ29weXJpZ2h0IChjKSAyMDE1LCBSZWQgSGF0LCBJ bmMuPEJSPg0KPiA+ICsNCj4gPiArICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xh dXNlLVBhdGVudA0KPiA+ICsqKi8NCj4gPiArDQo+ID4gKyNpZm5kZWYgX19YNThfU01SQU1fU0FW RV9TVEFURV9NQVBfSF9fDQo+ID4gKyNkZWZpbmUgX19YNThfU01SQU1fU0FWRV9TVEFURV9NQVBf SF9fDQo+ID4gKw0KPiA+ICsjcHJhZ21hIHBhY2sgKDEpDQo+ID4gKw0KPiA+ICsvLy8NCj4gPiAr Ly8vIDMyLWJpdCBTTVJBTSBTYXZlIFN0YXRlIE1hcA0KPiA+ICsvLy8NCj4gPiArdHlwZWRlZiBz dHJ1Y3Qgew0KPiA+ICsgIFVJTlQ4ICAgUmVzZXJ2ZWQwWzB4MjAwXTsgLy8gN2MwMGgNCj4gPiAr ICBVSU5UOCAgIFJlc2VydmVkMVsweGY4XTsgIC8vIDdlMDBoDQo+ID4gKyAgVUlOVDMyICBTTUJB U0U7ICAgICAgICAgICAvLyA3ZWY4aA0KPiA+ICsgIFVJTlQzMiAgU01NUmV2SWQ7ICAgICAgICAg Ly8gN2VmY2gNCj4gPiArICBVSU5UMTYgIElPUmVzdGFydDsgICAgICAgIC8vIDdmMDBoDQo+ID4g KyAgVUlOVDE2ICBBdXRvSEFMVFJlc3RhcnQ7ICAvLyA3ZjAyaA0KPiA+ICsgIFVJTlQ4ICAgUmVz ZXJ2ZWQyWzB4OUNdOyAgLy8gN2YwOGgNCj4gPiArICBVSU5UMzIgIElPTWVtQWRkcjsgICAgICAg IC8vIDdmYTBoDQo+ID4gKyAgVUlOVDMyICBJT01pc2M7ICAgICAgICAgICAvLyA3ZmE0aA0KPiA+ ICsgIFVJTlQzMiAgX0VTOyAgICAgICAgICAgICAgLy8gN2ZhOGgNCj4gPiArICBVSU5UMzIgIF9D UzsgICAgICAgICAgICAgIC8vIDdmYWNoDQo+ID4gKyAgVUlOVDMyICBfU1M7ICAgICAgICAgICAg ICAvLyA3ZmIwaA0KPiA+ICsgIFVJTlQzMiAgX0RTOyAgICAgICAgICAgICAgLy8gN2ZiNGgNCj4g PiArICBVSU5UMzIgIF9GUzsgICAgICAgICAgICAgIC8vIDdmYjhoDQo+ID4gKyAgVUlOVDMyICBf R1M7ICAgICAgICAgICAgICAvLyA3ZmJjaA0KPiA+ICsgIFVJTlQzMiAgUmVzZXJ2ZWQzOyAgICAg ICAgLy8gN2ZjMGgNCj4gPiArICBVSU5UMzIgIF9UUjsgICAgICAgICAgICAgIC8vIDdmYzRoDQo+ ID4gKyAgVUlOVDMyICBfRFI3OyAgICAgICAgICAgICAvLyA3ZmM4aA0KPiA+ICsgIFVJTlQzMiAg X0RSNjsgICAgICAgICAgICAgLy8gN2ZjY2gNCj4gPiArICBVSU5UMzIgIF9FQVg7ICAgICAgICAg ICAgIC8vIDdmZDBoDQo+ID4gKyAgVUlOVDMyICBfRUNYOyAgICAgICAgICAgICAvLyA3ZmQ0aA0K PiA+ICsgIFVJTlQzMiAgX0VEWDsgICAgICAgICAgICAgLy8gN2ZkOGgNCj4gPiArICBVSU5UMzIg IF9FQlg7ICAgICAgICAgICAgIC8vIDdmZGNoDQo+ID4gKyAgVUlOVDMyICBfRVNQOyAgICAgICAg ICAgICAvLyA3ZmUwaA0KPiA+ICsgIFVJTlQzMiAgX0VCUDsgICAgICAgICAgICAgLy8gN2ZlNGgN Cj4gPiArICBVSU5UMzIgIF9FU0k7ICAgICAgICAgICAgIC8vIDdmZThoDQo+ID4gKyAgVUlOVDMy ICBfRURJOyAgICAgICAgICAgICAvLyA3ZmVjaA0KPiA+ICsgIFVJTlQzMiAgX0VJUDsgICAgICAg ICAgICAgLy8gN2ZmMGgNCj4gPiArICBVSU5UMzIgIF9FRkxBR1M7ICAgICAgICAgIC8vIDdmZjRo DQo+ID4gKyAgVUlOVDMyICBfQ1IzOyAgICAgICAgICAgICAvLyA3ZmY4aA0KPiA+ICsgIFVJTlQz MiAgX0NSMDsgICAgICAgICAgICAgLy8gN2ZmY2gNCj4gPiArfSBYNThfU01SQU1fU0FWRV9TVEFU RV9NQVAzMjsNCj4gPiArDQo+ID4gKy8vLw0KPiA+ICsvLy8gNjQtYml0IFNNUkFNIFNhdmUgU3Rh dGUgTWFwDQo+ID4gKy8vLw0KPiA+ICt0eXBlZGVmIHN0cnVjdCB7DQo+ID4gKyAgVUlOVDggICBS ZXNlcnZlZDBbMHgyMDBdOyAgLy8gN2MwMGgNCj4gPiArDQo+ID4gKyAgVUlOVDE2ICBfRVM7ICAg ICAgICAgICAgICAgLy8gN2UwMGgNCj4gPiArICBVSU5UMTYgIF9FU0FjY2Vzc1JpZ2h0czsgICAv LyA3ZTAyaA0KPiA+ICsgIFVJTlQzMiAgX0VTTGltaXQ7ICAgICAgICAgIC8vIDdlMDRoDQo+ID4g KyAgVUlOVDY0ICBfRVNCYXNlOyAgICAgICAgICAgLy8gN2UwOGgNCj4gPiArDQo+ID4gKyAgVUlO VDE2ICBfQ1M7ICAgICAgICAgICAgICAgLy8gN2UxMGgNCj4gPiArICBVSU5UMTYgIF9DU0FjY2Vz c1JpZ2h0czsgICAvLyA3ZTEyaA0KPiA+ICsgIFVJTlQzMiAgX0NTTGltaXQ7ICAgICAgICAgIC8v IDdlMTRoDQo+ID4gKyAgVUlOVDY0ICBfQ1NCYXNlOyAgICAgICAgICAgLy8gN2UxOGgNCj4gPiAr DQo+ID4gKyAgVUlOVDE2ICBfU1M7ICAgICAgICAgICAgICAgLy8gN2UyMGgNCj4gPiArICBVSU5U MTYgIF9TU0FjY2Vzc1JpZ2h0czsgICAvLyA3ZTIyaA0KPiA+ICsgIFVJTlQzMiAgX1NTTGltaXQ7 ICAgICAgICAgIC8vIDdlMjRoDQo+ID4gKyAgVUlOVDY0ICBfU1NCYXNlOyAgICAgICAgICAgLy8g N2UyOGgNCj4gPiArDQo+ID4gKyAgVUlOVDE2ICBfRFM7ICAgICAgICAgICAgICAgLy8gN2UzMGgN Cj4gPiArICBVSU5UMTYgIF9EU0FjY2Vzc1JpZ2h0czsgICAvLyA3ZTMyaA0KPiA+ICsgIFVJTlQz MiAgX0RTTGltaXQ7ICAgICAgICAgIC8vIDdlMzRoDQo+ID4gKyAgVUlOVDY0ICBfRFNCYXNlOyAg ICAgICAgICAgLy8gN2UzOGgNCj4gPiArDQo+ID4gKyAgVUlOVDE2ICBfRlM7ICAgICAgICAgICAg ICAgLy8gN2U0MGgNCj4gPiArICBVSU5UMTYgIF9GU0FjY2Vzc1JpZ2h0czsgICAvLyA3ZTQyaA0K PiA+ICsgIFVJTlQzMiAgX0ZTTGltaXQ7ICAgICAgICAgIC8vIDdlNDRoDQo+ID4gKyAgVUlOVDY0 ICBfRlNCYXNlOyAgICAgICAgICAgLy8gN2U0OGgNCj4gPiArDQo+ID4gKyAgVUlOVDE2ICBfR1M7 ICAgICAgICAgICAgICAgLy8gN2U1MGgNCj4gPiArICBVSU5UMTYgIF9HU0FjY2Vzc1JpZ2h0czsg ICAvLyA3ZTUyaA0KPiA+ICsgIFVJTlQzMiAgX0dTTGltaXQ7ICAgICAgICAgIC8vIDdlNTRoDQo+ ID4gKyAgVUlOVDY0ICBfR1NCYXNlOyAgICAgICAgICAgLy8gN2U1OGgNCj4gPiArDQo+ID4gKyAg VUlOVDMyICBfR0RUUlJlc2VydmVkMTsgICAgLy8gN2U2MGgNCj4gPiArICBVSU5UMTYgIF9HRFRS TGltaXQ7ICAgICAgICAvLyA3ZTY0aA0KPiA+ICsgIFVJTlQxNiAgX0dEVFJSZXNlcnZlZDI7ICAg IC8vIDdlNjZoDQo+ID4gKyAgVUlOVDY0ICBfR0RUUkJhc2U7ICAgICAgICAgLy8gN2U2OGgNCj4g PiArDQo+ID4gKyAgVUlOVDE2ICBfTERUUjsgICAgICAgICAgICAgLy8gN2U3MGgNCj4gPiArICBV SU5UMTYgIF9MRFRSQWNjZXNzUmlnaHRzOyAvLyA3ZTcyaA0KPiA+ICsgIFVJTlQzMiAgX0xEVFJM aW1pdDsgICAgICAgIC8vIDdlNzRoDQo+ID4gKyAgVUlOVDY0ICBfTERUUkJhc2U7ICAgICAgICAg Ly8gN2U3OGgNCj4gPiArDQo+ID4gKyAgVUlOVDMyICBfSURUUlJlc2VydmVkMTsgICAgLy8gN2U4 MGgNCj4gPiArICBVSU5UMTYgIF9JRFRSTGltaXQ7ICAgICAgICAvLyA3ZTg0aA0KPiA+ICsgIFVJ TlQxNiAgX0lEVFJSZXNlcnZlZDI7ICAgIC8vIDdlODZoDQo+ID4gKyAgVUlOVDY0ICBfSURUUkJh c2U7ICAgICAgICAgLy8gN2U4OGgNCj4gPiArDQo+ID4gKyAgVUlOVDE2ICBfVFI7ICAgICAgICAg ICAgICAgLy8gN2U5MGgNCj4gPiArICBVSU5UMTYgIF9UUkFjY2Vzc1JpZ2h0czsgICAvLyA3ZTky aA0KPiA+ICsgIFVJTlQzMiAgX1RSTGltaXQ7ICAgICAgICAgIC8vIDdlOTRoDQo+ID4gKyAgVUlO VDY0ICBfVFJCYXNlOyAgICAgICAgICAgLy8gN2U5OGgNCj4gPiArDQo+ID4gKyAgVUlOVDY0ICBJ T19SSVA7ICAgICAgICAgICAgLy8gN2VhMGgNCj4gPiArICBVSU5UNjQgIElPX1JDWDsgICAgICAg ICAgICAvLyA3ZWE4aA0KPiA+ICsgIFVJTlQ2NCAgSU9fUlNJOyAgICAgICAgICAgIC8vIDdlYjBo DQo+ID4gKyAgVUlOVDY0ICBJT19SREk7ICAgICAgICAgICAgLy8gN2ViOGgNCj4gPiArICBVSU5U MzIgIElPX0RXb3JkOyAgICAgICAgICAvLyA3ZWMwaA0KPiA+ICsgIFVJTlQ4ICAgUmVzZXJ2ZWQx WzB4MDRdOyAgIC8vIDdlYzRoDQo+ID4gKyAgVUlOVDggICBJT1Jlc3RhcnQ7ICAgICAgICAgLy8g N2VjOGgNCj4gPiArICBVSU5UOCAgIEF1dG9IQUxUUmVzdGFydDsgICAvLyA3ZWM5aA0KPiA+ICsg IFVJTlQ4ICAgUmVzZXJ2ZWQyWzB4MDZdOyAgIC8vIDdlY2FoDQo+ID4gKw0KPiA+ICsgIFVJTlQ2 NCAgSUEzMl9FRkVSOyAgICAgICAgIC8vIDdlZDBoDQo+ID4gKyAgVUlOVDY0ICBTVk1fR3Vlc3Q7 ICAgICAgICAgLy8gN2VkOGgNCj4gPiArICBVSU5UNjQgIFNWTV9HdWVzdFZNQ0I7ICAgICAvLyA3 ZWUwaA0KPiA+ICsgIFVJTlQ2NCAgU1ZNX0d1ZXN0VkludHI7ICAgIC8vIDdlZThoDQo+ID4gKyAg VUlOVDggICBSZXNlcnZlZDNbMHgwY107ICAgLy8gN2VmMGgNCj4gPiArDQo+ID4gKyAgVUlOVDMy ICBTTU1SZXZJZDsgICAgICAgICAgLy8gN2VmY2gNCj4gPiArICBVSU5UMzIgIFNNQkFTRTsgICAg ICAgICAgICAvLyA3ZjAwaA0KPiA+ICsNCj4gPiArICBVSU5UOCAgIFJlc2VydmVkNFsweDFjXTsg ICAvLyA3ZjA0aA0KPiA+ICsgIFVJTlQ2NCAgU1ZNX0d1ZXN0UEFUOyAgICAgIC8vIDdmMjBoDQo+ ID4gKyAgVUlOVDY0ICBTVk1fSG9zdElBMzJfRUZFUjsgLy8gN2YyOGgNCj4gPiArICBVSU5UNjQg IFNWTV9Ib3N0Q1I0OyAgICAgICAvLyA3ZjMwaA0KPiA+ICsgIFVJTlQ2NCAgU1ZNX0hvc3RDUjM7 ICAgICAgIC8vIDdmMzhoDQo+ID4gKyAgVUlOVDY0ICBTVk1fSG9zdENSMDsgICAgICAgLy8gN2Y0 MGgNCj4gPiArDQo+ID4gKyAgVUlOVDY0ICBfQ1I0OyAgICAgICAgICAgICAgLy8gN2Y0OGgNCj4g PiArICBVSU5UNjQgIF9DUjM7ICAgICAgICAgICAgICAvLyA3ZjUwaA0KPiA+ICsgIFVJTlQ2NCAg X0NSMDsgICAgICAgICAgICAgIC8vIDdmNThoDQo+ID4gKyAgVUlOVDY0ICBfRFI3OyAgICAgICAg ICAgICAgLy8gN2Y2MGgNCj4gPiArICBVSU5UNjQgIF9EUjY7ICAgICAgICAgICAgICAvLyA3ZjY4 aA0KPiA+ICsgIFVJTlQ2NCAgX1JGTEFHUzsgICAgICAgICAgIC8vIDdmNzBoDQo+ID4gKyAgVUlO VDY0ICBfUklQOyAgICAgICAgICAgICAgLy8gN2Y3OGgNCj4gPiArICBVSU5UNjQgIF9SMTU7ICAg ICAgICAgICAgICAvLyA3ZjgwaA0KPiA+ICsgIFVJTlQ2NCAgX1IxNDsgICAgICAgICAgICAgIC8v IDdmODhoDQo+ID4gKyAgVUlOVDY0ICBfUjEzOyAgICAgICAgICAgICAgLy8gN2Y5MGgNCj4gPiAr ICBVSU5UNjQgIF9SMTI7ICAgICAgICAgICAgICAvLyA3Zjk4aA0KPiA+ICsgIFVJTlQ2NCAgX1Ix MTsgICAgICAgICAgICAgIC8vIDdmYTBoDQo+ID4gKyAgVUlOVDY0ICBfUjEwOyAgICAgICAgICAg ICAgLy8gN2ZhOGgNCj4gPiArICBVSU5UNjQgIF9SOTsgICAgICAgICAgICAgICAvLyA3ZmIwaA0K PiA+ICsgIFVJTlQ2NCAgX1I4OyAgICAgICAgICAgICAgIC8vIDdmYjhoDQo+ID4gKyAgVUlOVDY0 ICBfUkRJOyAgICAgICAgICAgICAgLy8gN2ZjMGgNCj4gPiArICBVSU5UNjQgIF9SU0k7ICAgICAg ICAgICAgICAvLyA3ZmM4aA0KPiA+ICsgIFVJTlQ2NCAgX1JCUDsgICAgICAgICAgICAgIC8vIDdm ZDBoDQo+ID4gKyAgVUlOVDY0ICBfUlNQOyAgICAgICAgICAgICAgLy8gN2ZkOGgNCj4gPiArICBV SU5UNjQgIF9SQlg7ICAgICAgICAgICAgICAvLyA3ZmUwaA0KPiA+ICsgIFVJTlQ2NCAgX1JEWDsg ICAgICAgICAgICAgIC8vIDdmZThoDQo+ID4gKyAgVUlOVDY0ICBfUkNYOyAgICAgICAgICAgICAg Ly8gN2ZmMGgNCj4gPiArICBVSU5UNjQgIF9SQVg7ICAgICAgICAgICAgICAvLyA3ZmY4aA0KPiA+ ICt9IFg1OF9TTVJBTV9TQVZFX1NUQVRFX01BUDY0Ow0KPiA+ICsNCj4gPiArLy8vDQo+ID4gKy8v LyBVbmlvbiBvZiAzMi1iaXQgYW5kIDY0LWJpdCBTTVJBTSBTYXZlIFN0YXRlIE1hcHMNCj4gPiAr Ly8vDQo+ID4gK3R5cGVkZWYgdW5pb24gIHsNCj4gPiArICBYNThfU01SQU1fU0FWRV9TVEFURV9N QVAzMiAgeDg2Ow0KPiA+ICsgIFg1OF9TTVJBTV9TQVZFX1NUQVRFX01BUDY0ICB4NjQ7DQo+ID4g K30gWDU4X1NNUkFNX1NBVkVfU1RBVEVfTUFQOw0KPiA+ICsNCj4gPiArI3ByYWdtYSBwYWNrICgp DQo+ID4gKw0KPiA+ICsjZW5kaWYNCj4gPiBkaWZmIC0tZ2l0IGEvUGxhdGZvcm0vSW50ZWwvU2lt aWNzT3BlbkJvYXJkUGtnL0luY2x1ZGUvU2ltaWNzUGxhdGZvcm1zLmgNCj4gPiBiL1BsYXRmb3Jt L0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9JbmNsdWRlL1NpbWljc1BsYXRmb3Jtcy5oDQo+ID4g bmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRleCAwMDAwMDAwMDAwLi5jNzkxMTFkODExDQo+ ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2Fy ZFBrZy9JbmNsdWRlL1NpbWljc1BsYXRmb3Jtcy5oDQo+ID4gQEAgLTAsMCArMSw1NCBAQA0KPiA+ ICsvKiogQGZpbGUNCj4gPiArICBPVk1GIFBsYXRmb3JtIGRlZmluaXRpb25zDQo+ID4gKw0KPiA+ ICsgIENvcHlyaWdodCAoQykgMjAxNSwgUmVkIEhhdCwgSW5jLg0KPiA+ICsgIENvcHlyaWdodCAo YykgMjAxNCwgR2FicmllbCBMLiBTb21sbyA8c29tbG9AY211LmVkdT4NCj4gPiArDQo+ID4gKyAg U1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gPiArKiovDQo+ ID4gKw0KPiA+ICsjaWZuZGVmIF9fT1ZNRl9QTEFURk9STVNfSF9fDQo+ID4gKyNkZWZpbmUgX19P Vk1GX1BMQVRGT1JNU19IX18NCj4gPiArDQo+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L1BjaUxpYi5o Pg0KPiA+ICsjaW5jbHVkZSA8SW5kdXN0cnlTdGFuZGFyZC9QY2kyMi5oPg0KPiA+ICsjaW5jbHVk ZSA8SW5kdXN0cnlTdGFuZGFyZC9YNThJY2gxMC5oPg0KPiA+ICsjaW5jbHVkZSA8SW5kdXN0cnlT dGFuZGFyZC9JNDQwRnhQaWl4NC5oPiAvLyBUT0RPOiByZW1vdmUNCj4gPiArDQo+ID4gKy8vDQo+ ID4gKy8vIFNpbWljcyBIb3N0IEJyaWRnZSBESUQgQWRkcmVzcw0KPiA+ICsvLw0KPiA+ICsjZGVm aW5lIFNJTUlDU19IT1NUQlJJREdFX0RJRCBcDQo+ID4gKyAgUENJX0xJQl9BRERSRVNTICgwLCAw LCAwLCBQQ0lfREVWSUNFX0lEX09GRlNFVCkNCj4gPiArDQo+ID4gKy8vDQo+ID4gKy8vIFNpbWlj cyBTaWRlQmFuZCBQQ0kgZGV2aWNlIHJlZ2lzdGVycw0KPiA+ICsvLw0KPiA+ICsjZGVmaW5lIFNJ TUlDU19TSURFQkFORFBDSV9ERVYgIDANCj4gPiArI2RlZmluZSBTSU1JQ1NfU0lERUJBTkRQQ0lf RlVOQyA3DQo+ID4gKyNkZWZpbmUgU0lNSUNTX1NJREVCQU5EUENJX1NWSUQgXA0KPiA+ICsgIFBD SV9MSUJfQUREUkVTUyAoMCwgMCwgNywgUENJX1NWSURfT0ZGU0VUKQ0KPiA+ICsjZGVmaW5lIFNJ TUlDU19TSURFQkFORFBDSV9TRElEIFwNCj4gPiArICBQQ0lfTElCX0FERFJFU1MgKDAsIDAsIDcs IFBDSV9TSURfT0ZGU0VUKQ0KPiA+ICsjZGVmaW5lIFNJTUlDU19TSURFQkFORFBDSV9DQVAgXA0K PiA+ICsgIFBDSV9MSUJfQUREUkVTUyAoMCwgMCwgNywgUENJX0NBUEJJTElUWV9QT0lOVEVSX09G RlNFVCkNCj4gPiArI2RlZmluZSBTSU1JQ1NfU0lERUJBTkRQQ0lfQ0FQX09mZnNldCAweDQwDQo+ ID4gKyNkZWZpbmUgU0lNSUNTX1NJREVCQU5EUENJX0NBUF9JRCAgICAgMHhGRg0KPiA+ICsNCj4g PiArLy8NCj4gPiArLy8gVmFsdWVzIHdlIHByb2dyYW0gaW50byB0aGUgUE0gYmFzZSBhZGRyZXNz IHJlZ2lzdGVycw0KPiA+ICsvLw0KPiA+ICsjZGVmaW5lIFBJSVg0X1BNQkFfVkFMVUUgIDB4QjAw MA0KPiA+ICsjZGVmaW5lIElDSDEwX1BNQkFTRV9WQUxVRSAweDA0MDANCj4gPiArDQo+ID4gKy8v DQo+ID4gKy8vIENvbW1vbiBiaXRzIGluIHNhbWUtcHVycG9zZSByZWdpc3RlcnMNCj4gPiArLy8N Cj4gPiArI2RlZmluZSBQTUJBX1JURSBCSVQwDQo+ID4gKw0KPiA+ICsvLw0KPiA+ICsvLyBDb21t b24gSU8gcG9ydHMgcmVsYXRpdmUgdG8gdGhlIFBvd2VyIE1hbmFnZW1lbnQgQmFzZSBBZGRyZXNz DQo+ID4gKy8vDQo+ID4gKyNkZWZpbmUgQUNQSV9USU1FUl9PRkZTRVQgMHg4DQo+ID4gKw0KPiA+ ICsjZW5kaWYNCj4gPiBkaWZmIC0tZ2l0DQo+ID4NCj4gYS9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NP cGVuQm9hcmRQa2cvTGlicmFyeS9Mb2FkTGludXhMaWIvSWEzMi9KdW1wVG9LZXJuDQo+ID4gZWwu bmFzbQ0KPiA+DQo+IGIvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL0xpYnJhcnkv TG9hZExpbnV4TGliL0lhMzIvSnVtcFRvS2Vybg0KPiA+IGVsLm5hc20NCj4gPiBuZXcgZmlsZSBt b2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAwMDAuLjNmM2NkMzNjOGENCj4gPiAtLS0gL2Rl di9udWxsDQo+ID4gKysrDQo+ID4NCj4gYi9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQ a2cvTGlicmFyeS9Mb2FkTGludXhMaWIvSWEzMi9KdW1wVG9LZXJuDQo+ID4gZWwubmFzbQ0KPiA+ IEBAIC0wLDAgKzEsNDEgQEANCj4gPiArOyBAZmlsZQ0KPiA+ICs7IENvcHlyaWdodCAoYykgMjAw NiAtIDIwMTMgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuIDxCUj4NCj4g PiArOw0KPiA+ICs7IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50 DQo+ID4gKzsNCj4gPiArDQo+ID4gKyAgU0VDVElPTiAudGV4dA0KPiA+ICsNCj4gPiArOy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQ0KPiA+ICs7IFZPSUQNCj4gPiArOyBFRklBUEkNCj4gPiArOyBKdW1w VG9LZXJuZWwgKA0KPiA+ICs7ICAgVk9JRCAqS2VybmVsU3RhcnQsDQo+ID4gKzsgICBWT0lEICpL ZXJuZWxCb290UGFyYW1zDQo+ID4gKzsgICApOw0KPiA+ICs7LS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t DQo+ID4gK2dsb2JhbCBBU01fUEZYKEp1bXBUb0tlcm5lbCkNCj4gPiArQVNNX1BGWChKdW1wVG9L ZXJuZWwpOg0KPiA+ICsNCj4gPiArICAgIG1vdiAgICAgZXNpLCBbZXNwICsgOF0NCj4gPiArICAg IGNhbGwgICAgRFdPUkQgW2VzcCArIDRdDQo+ID4gKyAgICByZXQNCj4gPiArDQo+ID4gKzstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0NCj4gPiArOyBWT0lEDQo+ID4gKzsgRUZJQVBJDQo+ID4gKzsgSnVt cFRvVWVmaUtlcm5lbCAoDQo+ID4gKzsgICBFRklfSEFORExFIEltYWdlSGFuZGxlLA0KPiA+ICs7 ICAgRUZJX1NZU1RFTV9UQUJMRSAqU3lzdGVtVGFibGUsDQo+ID4gKzsgICBWT0lEICpLZXJuZWxC b290UGFyYW1zLA0KPiA+ICs7ICAgVk9JRCAqS2VybmVsU3RhcnQNCj4gPiArOyAgICk7DQo+ID4g KzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gPiArZ2xvYmFsIEFTTV9QRlgoSnVtcFRvVWVmaUtl cm5lbCkNCj4gPiArQVNNX1BGWChKdW1wVG9VZWZpS2VybmVsKToNCj4gPiArDQo+ID4gKyAgICBt b3YgICAgIGVheCwgW2VzcCArIDEyXQ0KPiA+ICsgICAgbW92ICAgICBlYXgsIFtlYXggKyAweDI2 NF0NCj4gPiArICAgIGFkZCAgICAgZWF4LCBbZXNwICsgMTZdDQo+ID4gKyAgICBqbXAgICAgIGVh eA0KPiA+ICsNCj4gPiBkaWZmIC0tZ2l0DQo+ID4gYS9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVu Qm9hcmRQa2cvTGlicmFyeS9Mb2FkTGludXhMaWIvTG9hZExpbnV4TGliLmgNCj4gPiBiL1BsYXRm b3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9MaWJyYXJ5L0xvYWRMaW51eExpYi9Mb2FkTGlu dXhMaWIuaA0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMDAwMC4u YzRjYzRkZDhlNw0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysNCj4gPiBiL1BsYXRmb3JtL0lu dGVsL1NpbWljc09wZW5Cb2FyZFBrZy9MaWJyYXJ5L0xvYWRMaW51eExpYi9Mb2FkTGludXhMaWIu aA0KPiA+IEBAIC0wLDAgKzEsNTIgQEANCj4gPiArLyoqIEBmaWxlDQo+ID4gKyAgQm9vdCBVRUZJ IExpbnV4Lg0KPiA+ICsNCj4gPiArICBDb3B5cmlnaHQgKGMpIDIwMDggLSAyMDEzIEludGVsIENv cnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLiA8QlI+DQo+ID4gKw0KPiA+ICsgIFNQRFgt TGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ID4gKyoqLw0KPiA+ICsN Cj4gPiArI2lmbmRlZiBfTE9BRF9MSU5VWF9MSUJfSU5DTFVERURfDQo+ID4gKyNkZWZpbmUgX0xP QURfTElOVVhfTElCX0lOQ0xVREVEXw0KPiA+ICsNCj4gPiArI2luY2x1ZGUgPFVlZmkuaD4NCj4g PiArI2luY2x1ZGUgPExpYnJhcnkvTG9hZExpbnV4TGliLmg+DQo+ID4gKyNpbmNsdWRlIDxMaWJy YXJ5L0Jhc2VMaWIuaD4NCj4gPiArI2luY2x1ZGUgPExpYnJhcnkvQmFzZU1lbW9yeUxpYi5oPg0K PiA+ICsjaW5jbHVkZSA8TGlicmFyeS9EZWJ1Z0xpYi5oPg0KPiA+ICsjaW5jbHVkZSA8TGlicmFy eS9NZW1vcnlBbGxvY2F0aW9uTGliLmg+DQo+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlCb290 U2VydmljZXNUYWJsZUxpYi5oPg0KPiA+ICsjaW5jbHVkZSA8TGlicmFyeS9VZWZpUnVudGltZVNl cnZpY2VzVGFibGVMaWIuaD4NCj4gPiArDQo+ID4gKyNpbmNsdWRlIDxJbmR1c3RyeVN0YW5kYXJk L0xpbnV4QnppbWFnZS5oPg0KPiA+ICsNCj4gPiArI2luY2x1ZGUgPFByb3RvY29sL0dyYXBoaWNz T3V0cHV0Lmg+DQo+ID4gKw0KPiA+ICtWT0lEDQo+ID4gK0VGSUFQSQ0KPiA+ICtKdW1wVG9LZXJu ZWwgKA0KPiA+ICsgIFZPSUQgKktlcm5lbFN0YXJ0LA0KPiA+ICsgIFZPSUQgKktlcm5lbEJvb3RQ YXJhbXMNCj4gPiArICApOw0KPiA+ICsNCj4gPiArVk9JRA0KPiA+ICtFRklBUEkNCj4gPiArSnVt cFRvVWVmaUtlcm5lbCAoDQo+ID4gKyAgRUZJX0hBTkRMRSBJbWFnZUhhbmRsZSwNCj4gPiArICBF RklfU1lTVEVNX1RBQkxFICpTeXN0ZW1UYWJsZSwNCj4gPiArICBWT0lEICpLZXJuZWxCb290UGFy YW1zLA0KPiA+ICsgIFZPSUQgKktlcm5lbFN0YXJ0DQo+ID4gKyAgKTsNCj4gPiArDQo+ID4gK1ZP SUQNCj4gPiArSW5pdExpbnV4RGVzY3JpcHRvclRhYmxlcyAoDQo+ID4gKyAgVk9JRA0KPiA+ICsg ICk7DQo+ID4gKw0KPiA+ICtWT0lEDQo+ID4gK1NldExpbnV4RGVzY3JpcHRvclRhYmxlcyAoDQo+ ID4gKyAgVk9JRA0KPiA+ICsgICk7DQo+ID4gKw0KPiA+ICsjZW5kaWYNCj4gPiArDQo+ID4gZGlm ZiAtLWdpdA0KPiA+IGEvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL0xpYnJhcnkv TG9hZExpbnV4TGliL0xvYWRMaW51eExpYi5pbmYNCj4gPiBiL1BsYXRmb3JtL0ludGVsL1NpbWlj c09wZW5Cb2FyZFBrZy9MaWJyYXJ5L0xvYWRMaW51eExpYi9Mb2FkTGludXhMaWIuaW5mDQo+ID4g bmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRleCAwMDAwMDAwMDAwLi44OTY2NGY0ZTQyDQo+ ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKw0KPiA+IGIvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3Bl bkJvYXJkUGtnL0xpYnJhcnkvTG9hZExpbnV4TGliL0xvYWRMaW51eExpYi5pbmYNCj4gPiBAQCAt MCwwICsxLDQyIEBADQo+ID4gKyMjIEBmaWxlDQo+ID4gKyMNCj4gPiArIyBDb3B5cmlnaHQgKGMp IDIwMDggLSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLiA8QlI+ DQo+ID4gKyMNCj4gPiArIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBh dGVudA0KPiA+ICsjDQo+ID4gKyMjDQo+ID4gKw0KPiA+ICtbRGVmaW5lc10NCj4gPiArICBJTkZf VkVSU0lPTiAgICAgICAgICAgICAgICAgICAgPSAweDAwMDEwMDA1DQo+ID4gKyAgQkFTRV9OQU1F ICAgICAgICAgICAgICAgICAgICAgID0gTG9hZExpbnV4TGliDQo+ID4gKyAgRklMRV9HVUlEICAg ICAgICAgICAgICAgICAgICAgID0gNjNDQzg0OTctQzlEMC00NkE4LUFDMDgtNDlERjkyQTJGRjYy DQo+ID4gKyAgTU9EVUxFX1RZUEUgICAgICAgICAgICAgICAgICAgID0gQkFTRQ0KPiA+ICsgIFZF UlNJT05fU1RSSU5HICAgICAgICAgICAgICAgICA9IDEuMA0KPiA+ICsgIExJQlJBUllfQ0xBU1Mg ICAgICAgICAgICAgICAgICA9IExvYWRMaW51eExpYg0KPiA+ICsNCj4gPiArIw0KPiA+ICsjIFRo ZSBmb2xsb3dpbmcgaW5mb3JtYXRpb24gaXMgZm9yIHJlZmVyZW5jZSBvbmx5IGFuZCBub3QgcmVx dWlyZWQgYnkgdGhlDQo+IGJ1aWxkDQo+ID4gdG9vbHMuDQo+ID4gKyMNCj4gPiArIyAgVkFMSURf QVJDSElURUNUVVJFUyAgICAgICAgICAgPSBJQTMyIFg2NA0KPiA+ICsjDQo+ID4gKw0KPiA+ICtb U291cmNlcy5jb21tb25dDQo+ID4gKyAgTGludXguYw0KPiA+ICsgIExpbnV4R2R0LmMNCj4gPiAr DQo+ID4gK1tTb3VyY2VzLklBMzJdDQo+ID4gKyAgSWEzMi9KdW1wVG9LZXJuZWwubmFzbQ0KPiA+ ICsNCj4gPiArW1NvdXJjZXMuWDY0XQ0KPiA+ICsgIFg2NC9KdW1wVG9LZXJuZWwubmFzbQ0KPiA+ ICsNCj4gPiArW1BhY2thZ2VzXQ0KPiA+ICsgIE1kZVBrZy9NZGVQa2cuZGVjDQo+ID4gKyAgT3Zt ZlBrZy9Pdm1mUGtnLmRlYw0KPiA+ICsNCj4gPiArW0xpYnJhcnlDbGFzc2VzXQ0KPiA+ICsgIEJh c2VMaWINCj4gPiArICBEZWJ1Z0xpYg0KPiA+ICsgIE1lbW9yeUFsbG9jYXRpb25MaWINCj4gPiAr ICBCYXNlTWVtb3J5TGliDQo+ID4gKw0KPiA+IGRpZmYgLS1naXQNCj4gPg0KPiBhL1BsYXRmb3Jt L0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9MaWJyYXJ5L0xvYWRMaW51eExpYi9YNjQvSnVtcFRv S2VybmUNCj4gPiBsLm5hc20NCj4gPg0KPiBiL1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2Fy ZFBrZy9MaWJyYXJ5L0xvYWRMaW51eExpYi9YNjQvSnVtcFRvS2VybmUNCj4gPiBsLm5hc20NCj4g PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAwMDAuLjc5ZTZiOGU3YmEN Cj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrDQo+ID4NCj4gYi9QbGF0Zm9ybS9JbnRlbC9TaW1p Y3NPcGVuQm9hcmRQa2cvTGlicmFyeS9Mb2FkTGludXhMaWIvWDY0L0p1bXBUb0tlcm5lDQo+ID4g bC5uYXNtDQo+ID4gQEAgLTAsMCArMSw4NSBAQA0KPiA+ICs7IEBmaWxlDQo+ID4gKzsgQ29weXJp Z2h0IChjKSAyMDA2IC0gMjAxMyBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZl ZC4gPEJSPg0KPiA+ICs7DQo+ID4gKzsgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNs YXVzZS1QYXRlbnQNCj4gPiArOw0KPiA+ICsNCj4gPiArICBERUZBVUxUIFJFTA0KPiA+ICsgIFNF Q1RJT04gLnRleHQNCj4gPiArDQo+ID4gKzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gPiArOyBW T0lEDQo+ID4gKzsgRUZJQVBJDQo+ID4gKzsgSnVtcFRvS2VybmVsICgNCj4gPiArOyAgIFZPSUQg Kktlcm5lbFN0YXJ0LCAgICAgICAgIC8vIHJjeA0KPiA+ICs7ICAgVk9JRCAqS2VybmVsQm9vdFBh cmFtcyAgICAgLy8gcmR4DQo+ID4gKzsgICApOw0KPiA+ICs7LS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t DQo+ID4gK2dsb2JhbCBBU01fUEZYKEp1bXBUb0tlcm5lbCkNCj4gPiArQVNNX1BGWChKdW1wVG9L ZXJuZWwpOg0KPiA+ICsNCj4gPiArICAgIDsgU2V0IHVwIGZvciBleGVjdXRpbmcga2VybmVsLiBC UCBpbiAlZXNpLCBlbnRyeSBwb2ludCBvbiB0aGUgc3RhY2sNCj4gPiArICAgIDsgKDY0LWJpdCB3 aGVuIHRoZSAncmV0JyB3aWxsIHVzZSBpdCBhcyAzMi1iaXQsIGJ1dCB3ZSdyZSBsaXR0bGUtZW5k aWFuKQ0KPiA+ICsgICAgbW92ICAgIHJzaSwgcmR4DQo+ID4gKyAgICBwdXNoICAgcmN4DQo+ID4g Kw0KPiA+ICsgICAgOyBKdW1wIGludG8gdGhlIGNvbXBhdGliaWxpdHkgbW9kZSBDUw0KPiA+ICsg ICAgcHVzaCAgICAweDEwDQo+ID4gKyAgICBsZWEgICAgIHJheCwgWy4wXQ0KPiA+ICsgICAgcHVz aCAgICByYXgNCj4gPiArICAgIERCIDB4NDgsIDB4Y2IgICAgICAgICAgICAgICAgICAgICAgOyBy ZXRmcQ0KPiA+ICsNCj4gPiArLjA6DQo+ID4gKyAgICA7IE5vdyBpbiBjb21wYXRpYmlsaXR5IG1v ZGUuDQo+ID4gKw0KPiA+ICsgICAgREIgMHhiOCwgMHgxOCwgMHgwLCAweDAsIDB4MCAgICA7IG1v dmwgICAgJDB4MTgsICVlYXgNCj4gPiArICAgIERCIDB4OGUsIDB4ZDggICAgICAgICAgICAgICAg ICAgICAgOyBtb3ZsICAgICVlYXgsICVkcw0KPiA+ICsgICAgREIgMHg4ZSwgMHhjMCAgICAgICAg ICAgICAgICAgICAgICA7IG1vdmwgICAgJWVheCwgJWVzDQo+ID4gKyAgICBEQiAweDhlLCAweGUw ICAgICAgICAgICAgICAgICAgICAgIDsgbW92bCAgICAlZWF4LCAlZnMNCj4gPiArICAgIERCIDB4 OGUsIDB4ZTggICAgICAgICAgICAgICAgICAgICAgOyBtb3ZsICAgICVlYXgsICVncw0KPiA+ICsg ICAgREIgMHg4ZSwgMHhkMCAgICAgICAgICAgICAgICAgICAgICA7IG1vdmwgICAgJWVheCwgJXNz DQo+ID4gKw0KPiA+ICsgICAgOyBEaXNhYmxlIHBhZ2luZw0KPiA+ICsgICAgREIgMHhmLCAweDIw LCAweGMwICAgICAgICAgICAgICAgIDsgbW92bCAgICAlY3IwLCAlZWF4DQo+ID4gKyAgICBEQiAw eGYsIDB4YmEsIDB4ZjgsIDB4MWYgICAgICAgICAgOyBidGNsICAgICQzMSwgJWVheA0KPiA+ICsg ICAgREIgMHhmLCAweDIyLCAweGMwICAgICAgICAgICAgICAgIDsgbW92bCAgICAlZWF4LCAlY3Iw DQo+ID4gKw0KPiA+ICsgICAgOyBEaXNhYmxlIGxvbmcgbW9kZSBpbiBFRkVSDQo+ID4gKyAgICBE QiAweGI5LCAweDgwLCAweDAsIDB4MCwgMHhjMCAgICA7IG1vdmwgICAgJDB4MGMwMDAwMDgwLCAl ZWN4DQo+ID4gKyAgICBEQiAweGYsIDB4MzIgICAgICAgICAgICAgICAgICAgICAgOyByZG1zcg0K PiA+ICsgICAgREIgMHhmLCAweGJhLCAweGY4LCAweDggICAgICAgICAgOyBidGNsICAgICQ4LCAl ZWF4DQo+ID4gKyAgICBEQiAweGYsIDB4MzAgICAgICAgICAgICAgICAgICAgICAgOyB3cm1zcg0K PiA+ICsNCj4gPiArICAgIDsgRGlzYWJsZSBQQUUNCj4gPiArICAgIERCIDB4ZiwgMHgyMCwgMHhl MCAgICAgICAgICAgICAgICA7IG1vdmwgICAgJWNyNCwgJWVheA0KPiA+ICsgICAgREIgMHhmLCAw eGJhLCAweGY4LCAweDUgICAgICAgICAgOyBidGNsICAgICQ1LCAlZWF4DQo+ID4gKyAgICBEQiAw eGYsIDB4MjIsIDB4ZTAgICAgICAgICAgICAgICAgOyBtb3ZsICAgICVlYXgsICVjcjQNCj4gPiAr DQo+ID4gKyAgICBEQiAweDMxLCAweGVkICAgICAgICAgICAgICAgICAgICAgIDsgeG9yICAgICAl ZWJwLCAlZWJwDQo+ID4gKyAgICBEQiAweDMxLCAweGZmICAgICAgICAgICAgICAgICAgICAgIDsg eG9yICAgICAlZWRpLCAlZWRpDQo+ID4gKyAgICBEQiAweDMxLCAweGRiICAgICAgICAgICAgICAg ICAgICAgIDsgeG9yICAgICAlZWJ4LCAlZWJ4DQo+ID4gKyAgICBEQiAweGMzICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDsgcmV0DQo+ID4gKw0KPiA+ICs7LS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t DQo+ID4gKzsgVk9JRA0KPiA+ICs7IEVGSUFQSQ0KPiA+ICs7IEp1bXBUb1VlZmlLZXJuZWwgKA0K PiA+ICs7ICAgRUZJX0hBTkRMRSBJbWFnZUhhbmRsZSwgICAgICAgIC8vIHJjeA0KPiA+ICs7ICAg RUZJX1NZU1RFTV9UQUJMRSAqU3lzdGVtVGFibGUsIC8vIHJkeA0KPiA+ICs7ICAgVk9JRCAqS2Vy bmVsQm9vdFBhcmFtcyAgICAgICAgIC8vIHI4DQo+ID4gKzsgICBWT0lEICpLZXJuZWxTdGFydCwg ICAgICAgICAgICAgLy8gcjkNCj4gPiArOyAgICk7DQo+ID4gKzstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0NCj4gPiArZ2xvYmFsIEFTTV9QRlgoSnVtcFRvVWVmaUtlcm5lbCkNCj4gPiArQVNNX1BGWChK dW1wVG9VZWZpS2VybmVsKToNCj4gPiArDQo+ID4gKyAgICBtb3YgICAgIHJkaSwgcmN4DQo+ID4g KyAgICBtb3YgICAgIHJzaSwgcmR4DQo+ID4gKyAgICBtb3YgICAgIHJkeCwgcjgNCj4gPiArICAg IHhvciAgICAgcmF4LCByYXgNCj4gPiArICAgIG1vdiAgICAgZWF4LCBbcjggKyAweDI2NF0NCj4g PiArICAgIGFkZCAgICAgcjksIHJheA0KPiA+ICsgICAgYWRkICAgICByOSwgMHgyMDANCj4gPiAr ICAgIGNhbGwgICAgcjkNCj4gPiArICAgIHJldA0KPiA+ICsNCj4gPiBkaWZmIC0tZ2l0DQo+ID4g YS9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvTGlicmFyeS9OdlZhcnNGaWxlTGli L052VmFyc0ZpbGVMaWIuaA0KPiA+IGIvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtn L0xpYnJhcnkvTnZWYXJzRmlsZUxpYi9OdlZhcnNGaWxlTGliLmgNCj4gPiBuZXcgZmlsZSBtb2Rl IDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAwMDAuLjkyYWEwMzhjZGQNCj4gPiAtLS0gL2Rldi9u dWxsDQo+ID4gKysrDQo+ID4gYi9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvTGli cmFyeS9OdlZhcnNGaWxlTGliL052VmFyc0ZpbGVMaWIuaA0KPiA+IEBAIC0wLDAgKzEsNTUgQEAN Cj4gPiArLyoqIEBmaWxlDQo+ID4gKyAgU2F2ZSBOb24tVm9sYXRpbGUgVmFyaWFibGVzIHRvIGEg ZmlsZSBzeXN0ZW0uDQo+ID4gKw0KPiA+ICsgIENvcHlyaWdodCAoYykgMjAwOSAtIDIwMTEgSW50 ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuIDxCUj4NCj4gPiArDQo+ID4gKyAg U1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gPiArKiovDQo+ ID4gKw0KPiA+ICsjaWZuZGVmIF9fTlZfVkFSU19GSUxFX0xJQl9JTlNUQU5DRV9fDQo+ID4gKyNk ZWZpbmUgX19OVl9WQVJTX0ZJTEVfTElCX0lOU1RBTkNFX18NCj4gPiArDQo+ID4gKyNpbmNsdWRl IDxVZWZpLmg+DQo+ID4gKw0KPiA+ICsjaW5jbHVkZSA8R3VpZC9GaWxlSW5mby5oPg0KPiA+ICsN Cj4gPiArI2luY2x1ZGUgPFByb3RvY29sL1NpbXBsZUZpbGVTeXN0ZW0uaD4NCj4gPiArDQo+ID4g KyNpbmNsdWRlIDxMaWJyYXJ5L0Jhc2VMaWIuaD4NCj4gPiArI2luY2x1ZGUgPExpYnJhcnkvRmls ZUhhbmRsZUxpYi5oPg0KPiA+ICsjaW5jbHVkZSA8TGlicmFyeS9TZXJpYWxpemVWYXJpYWJsZXNM aWIuaD4NCj4gPiArI2luY2x1ZGUgPExpYnJhcnkvVWVmaUJvb3RTZXJ2aWNlc1RhYmxlTGliLmg+ DQo+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlSdW50aW1lU2VydmljZXNUYWJsZUxpYi5oPg0K PiA+ICsjaW5jbHVkZSA8TGlicmFyeS9VZWZpTGliLmg+DQo+ID4gKw0KPiA+ICsvKioNCj4gPiAr ICBMb2FkcyB0aGUgbm9uLXZvbGF0aWxlIHZhcmlhYmxlcyBmcm9tIHRoZSBOdlZhcnMgZmlsZSBv biB0aGUNCj4gPiArICBnaXZlbiBmaWxlIHN5c3RlbS4NCj4gPiArDQo+ID4gKyAgQHBhcmFtW2lu XSAgRnNIYW5kbGUgLSBIYW5kbGUgZm9yIGEgZ0VmaVNpbXBsZUZpbGVTeXN0ZW1Qcm90b2NvbEd1 aWQNCj4gPiBpbnN0YW5jZQ0KPiA+ICsNCj4gPiArICBAcmV0dXJuICAgICBFRklfU1RBVFVTIGJh c2VkIG9uIHRoZSBzdWNjZXNzIG9yIGZhaWx1cmUgb2YgbG9hZCBvcGVyYXRpb24NCj4gPiArDQo+ ID4gKyoqLw0KPiA+ICtFRklfU1RBVFVTDQo+ID4gK0xvYWROdlZhcnNGcm9tRnMgKA0KPiA+ICsg IEVGSV9IQU5ETEUgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnNIYW5kbGUNCj4gPiArICAp Ow0KPiA+ICsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFNhdmVzIHRoZSBub24tdm9sYXRpbGUg dmFyaWFibGVzIGludG8gdGhlIE52VmFycyBmaWxlIG9uIHRoZQ0KPiA+ICsgIGdpdmVuIGZpbGUg c3lzdGVtLg0KPiA+ICsNCj4gPiArICBAcGFyYW1baW5dICBGc0hhbmRsZSAtIEhhbmRsZSBmb3Ig YSBnRWZpU2ltcGxlRmlsZVN5c3RlbVByb3RvY29sR3VpZA0KPiA+IGluc3RhbmNlDQo+ID4gKw0K PiA+ICsgIEByZXR1cm4gICAgIEVGSV9TVEFUVVMgYmFzZWQgb24gdGhlIHN1Y2Nlc3Mgb3IgZmFp bHVyZSBvZiBsb2FkIG9wZXJhdGlvbg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK0VGSV9TVEFUVVMN Cj4gPiArU2F2ZU52VmFyc1RvRnMgKA0KPiA+ICsgIEVGSV9IQU5ETEUgICAgICAgICAgICAgICAg ICAgICAgICAgICAgRnNIYW5kbGUNCj4gPiArICApOw0KPiA+ICsNCj4gPiArI2VuZGlmDQo+ID4g Kw0KPiA+IGRpZmYgLS1naXQNCj4gPg0KPiBhL1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2Fy ZFBrZy9MaWJyYXJ5L052VmFyc0ZpbGVMaWIvTnZWYXJzRmlsZUxpYi5pbmYNCj4gPg0KPiBiL1Bs YXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9MaWJyYXJ5L052VmFyc0ZpbGVMaWIvTnZW YXJzRmlsZUxpYi5pbmYNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAw MDAwMDAuLmU0YzNiN2NjZmYNCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrDQo+ID4NCj4gYi9Q bGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvTGlicmFyeS9OdlZhcnNGaWxlTGliL052 VmFyc0ZpbGVMaWIuaW5mDQo+ID4gQEAgLTAsMCArMSw1MyBAQA0KPiA+ICsjIyBAZmlsZQ0KPiA+ ICsjICBOdlZhcnNGaWxlTGliDQo+ID4gKyMNCj4gPiArIyAgVGhpcyBsaWJyYXJ5IHNhdmVzIGFu ZCByZXN0b3JlcyBub24tdm9sYXRpbGUgdmFyaWFibGVzIGluIGENCj4gPiArIyAgZmlsZSB3aXRo aW4gYSBmaWxlIHN5c3RlbS4NCj4gPiArIw0KPiA+ICsjIENvcHlyaWdodCAoYykgMjAwNiAtIDIw MTggSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuIDxCUj4NCj4gPiArIw0K PiA+ICsjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ID4g KyMNCj4gPiArIyMNCj4gPiArDQo+ID4gK1tEZWZpbmVzXQ0KPiA+ICsgIElORl9WRVJTSU9OICAg ICAgICAgICAgICAgICAgICA9IDB4MDAwMTAwMDUNCj4gPiArICBCQVNFX05BTUUgICAgICAgICAg ICAgICAgICAgICAgPSBOdlZhcnNGaWxlTGliDQo+ID4gKyAgRklMRV9HVUlEICAgICAgICAgICAg ICAgICAgICAgID0gOEVDRDRDQzAtMTc3Mi00NTgzLThBNzQtODM2MzNBMTVGQUEwDQo+ID4gKyAg TU9EVUxFX1RZUEUgICAgICAgICAgICAgICAgICAgID0gVUVGSV9EUklWRVINCj4gPiArICBWRVJT SU9OX1NUUklORyAgICAgICAgICAgICAgICAgPSAxLjANCj4gPiArICBMSUJSQVJZX0NMQVNTICAg ICAgICAgICAgICAgICAgPSBOdlZhcnNGaWxlTGlifERYRV9EUklWRVINCj4gPiBEWEVfUlVOVElN RV9EUklWRVIgVUVGSV9EUklWRVINCj4gPiArDQo+ID4gKyMNCj4gPiArIyBUaGUgZm9sbG93aW5n IGluZm9ybWF0aW9uIGlzIGZvciByZWZlcmVuY2Ugb25seSBhbmQgbm90IHJlcXVpcmVkIGJ5IHRo ZQ0KPiBidWlsZA0KPiA+IHRvb2xzLg0KPiA+ICsjDQo+ID4gKyMgIFZBTElEX0FSQ0hJVEVDVFVS RVMgICAgICAgICAgID0gSUEzMiBYNjQgRUJDDQo+ID4gKyMNCj4gPiArDQo+ID4gK1tTb3VyY2Vz XQ0KPiA+ICsgIEZzQWNjZXNzLmMNCj4gPiArICBOdlZhcnNGaWxlTGliLmMNCj4gPiArDQo+ID4g K1tQYWNrYWdlc10NCj4gPiArICBNZGVQa2cvTWRlUGtnLmRlYw0KPiA+ICsgIE1kZU1vZHVsZVBr Zy9NZGVNb2R1bGVQa2cuZGVjDQo+ID4gKyAgU2hlbGxQa2cvU2hlbGxQa2cuZGVjDQo+ID4gKyAg T3ZtZlBrZy9Pdm1mUGtnLmRlYw0KPiA+ICsNCj4gPiArW0xpYnJhcnlDbGFzc2VzXQ0KPiA+ICsg IEJhc2VMaWINCj4gPiArICBCYXNlTWVtb3J5TGliDQo+ID4gKyAgRGVidWdMaWINCj4gPiArICBG aWxlSGFuZGxlTGliDQo+ID4gKyAgTWVtb3J5QWxsb2NhdGlvbkxpYg0KPiA+ICsgIFNlcmlhbGl6 ZVZhcmlhYmxlc0xpYg0KPiA+ICsNCj4gPiArW1Byb3RvY29sc10NCj4gPiArICBnRWZpU2ltcGxl RmlsZVN5c3RlbVByb3RvY29sR3VpZCAgICAgICAgICAgICAgIyMgQ09OU1VNRVMNCj4gPiArDQo+ ID4gK1tHdWlkc10NCj4gPiArICBnRWZpRmlsZUluZm9HdWlkDQo+ID4gKw0KPiA+ICtbRGVwZXhd DQo+ID4gKyAgZ0VmaVZhcmlhYmxlV3JpdGVBcmNoUHJvdG9jb2xHdWlkDQo+ID4gKw0KPiA+IGRp ZmYgLS1naXQNCj4gPg0KPiBhL1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9MaWJy YXJ5L1NlcmlhbGl6ZVZhcmlhYmxlc0xpYi9TZXJpYWxpemVWYQ0KPiA+IHJpYWJsZXNMaWIuaA0K PiA+DQo+IGIvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL0xpYnJhcnkvU2VyaWFs aXplVmFyaWFibGVzTGliL1NlcmlhbGl6ZVZhDQo+ID4gcmlhYmxlc0xpYi5oDQo+ID4gbmV3IGZp bGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRleCAwMDAwMDAwMDAwLi43ZTc4Y2Q0YjIxDQo+ID4gLS0t IC9kZXYvbnVsbA0KPiA+ICsrKw0KPiA+DQo+IGIvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJv YXJkUGtnL0xpYnJhcnkvU2VyaWFsaXplVmFyaWFibGVzTGliL1NlcmlhbGl6ZVZhDQo+ID4gcmlh Ymxlc0xpYi5oDQo+ID4gQEAgLTAsMCArMSwzMyBAQA0KPiA+ICsvKiogQGZpbGUNCj4gPiArICBT ZXJpYWxpemUgVmFyaWFibGVzIExpYnJhcnkgaW1wbGVtZW50YXRpb24NCj4gPiArDQo+ID4gKyAg Q29weXJpZ2h0IChjKSAyMDA5IC0gMjAxMSBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyBy ZXNlcnZlZC4gPEJSPg0KPiA+ICsNCj4gPiArICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNE LTItQ2xhdXNlLVBhdGVudA0KPiA+ICsqKi8NCj4gPiArDQo+ID4gKyNpZm5kZWYgX19TRVJJQUxJ WkVfVkFSSUFCTEVTX0xJQl9JTlNUQU5DRV9fDQo+ID4gKyNkZWZpbmUgX19TRVJJQUxJWkVfVkFS SUFCTEVTX0xJQl9JTlNUQU5DRV9fDQo+ID4gKw0KPiA+ICsjaW5jbHVkZSA8VWVmaS5oPg0KPiA+ ICsNCj4gPiArI2luY2x1ZGUgPExpYnJhcnkvQmFzZUxpYi5oPg0KPiA+ICsjaW5jbHVkZSA8TGli cmFyeS9CYXNlTWVtb3J5TGliLmg+DQo+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L0RlYnVnTGliLmg+ DQo+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L01lbW9yeUFsbG9jYXRpb25MaWIuaD4NCj4gPiArI2lu Y2x1ZGUgPExpYnJhcnkvU2VyaWFsaXplVmFyaWFibGVzTGliLmg+DQo+ID4gKyNpbmNsdWRlIDxM aWJyYXJ5L1VlZmlCb290U2VydmljZXNUYWJsZUxpYi5oPg0KPiA+ICsjaW5jbHVkZSA8TGlicmFy eS9VZWZpUnVudGltZVNlcnZpY2VzVGFibGVMaWIuaD4NCj4gPiArDQo+ID4gKyNkZWZpbmUgU1Zf RlJPTV9IQU5ETEUoYSkgICAgICAgQ1IgKGEsIFNWX0lOU1RBTkNFLCBTaWduYXR1cmUsDQo+ID4g U1ZfU0lHTkFUVVJFKQ0KPiA+ICsjZGVmaW5lIFNWX1NJR05BVFVSRSAgICAgICAgICAgIFNJR05B VFVSRV8zMiAoJ1MnLCAnVicsICdBJywgJ1InKQ0KPiA+ICsNCj4gPiArdHlwZWRlZiBzdHJ1Y3Qg ew0KPiA+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpZ25hdHVyZTsN Cj4gPiArICBWT0lEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqQnVmZmVyUHRyOw0K PiA+ICsgIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlclNpemU7DQo+ ID4gKyAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YVNpemU7DQo+ID4g K30gU1ZfSU5TVEFOQ0U7DQo+ID4gKw0KPiA+ICsjZW5kaWYNCj4gPiArDQo+ID4gZGlmZiAtLWdp dA0KPiA+DQo+IGEvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL0xpYnJhcnkvU2Vy aWFsaXplVmFyaWFibGVzTGliL1NlcmlhbGl6ZVZhDQo+ID4gcmlhYmxlc0xpYi5pbmYNCj4gPg0K PiBiL1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9MaWJyYXJ5L1NlcmlhbGl6ZVZh cmlhYmxlc0xpYi9TZXJpYWxpemVWYQ0KPiA+IHJpYWJsZXNMaWIuaW5mDQo+ID4gbmV3IGZpbGUg bW9kZSAxMDA2NDQNCj4gPiBpbmRleCAwMDAwMDAwMDAwLi4yNTkwMTE5MmIyDQo+ID4gLS0tIC9k ZXYvbnVsbA0KPiA+ICsrKw0KPiA+DQo+IGIvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJk UGtnL0xpYnJhcnkvU2VyaWFsaXplVmFyaWFibGVzTGliL1NlcmlhbGl6ZVZhDQo+ID4gcmlhYmxl c0xpYi5pbmYNCj4gPiBAQCAtMCwwICsxLDM2IEBADQo+ID4gKyMjIEBmaWxlDQo+ID4gKyMgIFNl cmlhbGl6ZSBWYXJpYWJsZXMgTGlicmFyeSBpbXBsZW1lbnRhdGlvbg0KPiA+ICsjDQo+ID4gKyMg IFRoaXMgbGlicmFyeSBzZXJpYWxpemVzIGFuZCBkZXNlcmlhbGl6ZXMgVUVGSSB2YXJpYWJsZXMN Cj4gPiArIw0KPiA+ICsjIENvcHlyaWdodCAoYykgMjAwNiAtIDIwMTggSW50ZWwgQ29ycG9yYXRp b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuIDxCUj4NCj4gPiArIw0KPiA+ICsjIFNQRFgtTGljZW5z ZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ID4gKyMNCj4gPiArIyMNCj4gPiAr DQo+ID4gK1tEZWZpbmVzXQ0KPiA+ICsgIElORl9WRVJTSU9OICAgICAgICAgICAgICAgICAgICA9 IDB4MDAwMTAwMDUNCj4gPiArICBCQVNFX05BTUUgICAgICAgICAgICAgICAgICAgICAgPSBEeGVT ZXJpYWxpemVWYXJpYWJsZXNMaWINCj4gPiArICBGSUxFX0dVSUQgICAgICAgICAgICAgICAgICAg ICAgPSAyNjZBMTQzNC02QjIyLTQ0MUYtQThEMi1ENTRBQThGREY5NUMNCj4gPiArICBNT0RVTEVf VFlQRSAgICAgICAgICAgICAgICAgICAgPSBVRUZJX0RSSVZFUg0KPiA+ICsgIFZFUlNJT05fU1RS SU5HICAgICAgICAgICAgICAgICA9IDEuMA0KPiA+ICsgIExJQlJBUllfQ0xBU1MgICAgICAgICAg ICAgICAgICA9IFNlcmlhbGl6ZVZhcmlhYmxlc0xpYnxEWEVfRFJJVkVSDQo+ID4gRFhFX1JVTlRJ TUVfRFJJVkVSIFVFRklfRFJJVkVSDQo+ID4gKw0KPiA+ICtbU291cmNlc10NCj4gPiArICBTZXJp YWxpemVWYXJpYWJsZXNMaWIuYw0KPiA+ICsNCj4gPiArW1BhY2thZ2VzXQ0KPiA+ICsgIE1kZVBr Zy9NZGVQa2cuZGVjDQo+ID4gKyAgTWRlTW9kdWxlUGtnL01kZU1vZHVsZVBrZy5kZWMNCj4gPiAr ICBTaGVsbFBrZy9TaGVsbFBrZy5kZWMNCj4gPiArICBPdm1mUGtnL092bWZQa2cuZGVjDQo+ID4g Kw0KPiA+ICtbTGlicmFyeUNsYXNzZXNdDQo+ID4gKyAgQmFzZUxpYg0KPiA+ICsgIEJhc2VNZW1v cnlMaWINCj4gPiArICBEZWJ1Z0xpYg0KPiA+ICsgIE1lbW9yeUFsbG9jYXRpb25MaWINCj4gPiAr ICBVZWZpQm9vdFNlcnZpY2VzVGFibGVMaWINCj4gPiArICBVZWZpUnVudGltZVNlcnZpY2VzVGFi bGVMaWINCj4gPiArDQo+ID4gZGlmZiAtLWdpdCBhL1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5C b2FyZFBrZy9QbGF0Zm9ybUR4ZS9QbGF0Zm9ybS5oDQo+ID4gYi9QbGF0Zm9ybS9JbnRlbC9TaW1p Y3NPcGVuQm9hcmRQa2cvUGxhdGZvcm1EeGUvUGxhdGZvcm0uaA0KPiA+IG5ldyBmaWxlIG1vZGUg MTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMDAwMC4uNjNiNWU1MjU3NQ0KPiA+IC0tLSAvZGV2L251 bGwNCj4gPiArKysgYi9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvUGxhdGZvcm1E eGUvUGxhdGZvcm0uaA0KPiA+IEBAIC0wLDAgKzEsMzcgQEANCj4gPiArLyoqIEBmaWxlDQo+ID4g KyAgVGhpcyBkcml2ZXIgZWZmZWN0dWF0ZXMgT1ZNRidzIHBsYXRmb3JtIGNvbmZpZ3VyYXRpb24g c2V0dGluZ3MgYW5kIGV4cG9zZXMNCj4gPiArICB0aGVtIHZpYSBISUkuDQo+ID4gKw0KPiA+ICsg IENvcHlyaWdodCAoQykgMjAxNCwgUmVkIEhhdCwgSW5jLg0KPiA+ICsNCj4gPiArICBTUERYLUxp Y2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiA+ICsqKi8NCj4gPiArDQo+ ID4gKyNpZm5kZWYgX1BMQVRGT1JNX0hfDQo+ID4gKyNkZWZpbmUgX1BMQVRGT1JNX0hfDQo+ID4g Kw0KPiA+ICsvLw0KPiA+ICsvLyBNYWNybyBhbmQgdHlwZSBkZWZpbml0aW9ucyB0aGF0IGNvbm5l Y3QgdGhlIGZvcm0gd2l0aCB0aGUgSElJIGRyaXZlciBjb2RlLg0KPiA+ICsvLw0KPiA+ICsjZGVm aW5lIEZPUk1TVEFURUlEX01BSU5fRk9STSAgMQ0KPiA+ICsjZGVmaW5lIEZPUk1JRF9NQUlOX0ZP Uk0gICAgICAgMQ0KPiA+ICsNCj4gPiArI2RlZmluZSBRVUVTVElPTl9SRVNfQ1VSICAgICAgIDEN Cj4gPiArI2RlZmluZSBNQVhTSVpFX1JFU19DVVIgICAgICAgMTYNCj4gPiArDQo+ID4gKyNkZWZp bmUgTEFCRUxfUkVTX05FWFQgICAgICAgICAxDQo+ID4gKyNkZWZpbmUgUVVFU1RJT05fUkVTX05F WFQgICAgICAyDQo+ID4gKw0KPiA+ICsjZGVmaW5lIFFVRVNUSU9OX1NBVkVfRVhJVCAgICAgMw0K PiA+ICsjZGVmaW5lIFFVRVNUSU9OX0RJU0NBUkRfRVhJVCAgNA0KPiA+ICsNCj4gPiArLy8NCj4g PiArLy8gVGhpcyBzdHJ1Y3R1cmUgZGVzY3JpYmVzIHRoZSBmb3JtIHN0YXRlLiBJdHMgZmllbGRz IHJlbGF0ZSBzdHJpY3RseSB0byB0aGUNCj4gPiArLy8gdmlzdWFsIHdpZGdldHMgb24gdGhlIGZv cm0uDQo+ID4gKy8vDQo+ID4gK3R5cGVkZWYgc3RydWN0IHsNCj4gPiArICBVSU5UMTYgQ3VycmVu dFByZWZlcnJlZFJlc29sdXRpb25bTUFYU0laRV9SRVNfQ1VSXTsNCj4gPiArICBVSU5UMzIgTmV4 dFByZWZlcnJlZFJlc29sdXRpb247DQo+ID4gK30gTUFJTl9GT1JNX1NUQVRFOw0KPiA+ICsNCj4g PiArI2VuZGlmIC8vIF9QTEFURk9STV9IXw0KPiA+IGRpZmYgLS1naXQgYS9QbGF0Zm9ybS9JbnRl bC9TaW1pY3NPcGVuQm9hcmRQa2cvUGxhdGZvcm1EeGUvUGxhdGZvcm0uaW5mDQo+ID4gYi9QbGF0 Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvUGxhdGZvcm1EeGUvUGxhdGZvcm0uaW5mDQo+ ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRleCAwMDAwMDAwMDAwLi44MDRhYjU5NjEw DQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5C b2FyZFBrZy9QbGF0Zm9ybUR4ZS9QbGF0Zm9ybS5pbmYNCj4gPiBAQCAtMCwwICsxLDY1IEBADQo+ ID4gKyMjIEBmaWxlDQo+ID4gKyMgIFRoaXMgZHJpdmVyIGVmZmVjdHVhdGVzIFNpbWljcyBYNTgg cGxhdGZvcm0gY29uZmlndXJhdGlvbiBzZXR0aW5ncyBhbmQNCj4gPiBleHBvc2VzDQo+ID4gKyMg IHRoZW0gdmlhIEhJSS4NCj4gPiArIw0KPiA+ICsjICBDb3B5cmlnaHQgKEMpIDIwMTQsIFJlZCBI YXQsIEluYy4NCj4gPiArIyAgQ29weXJpZ2h0IChjKSAyMDA5IC0gMjAxMCwgSW50ZWwgQ29ycG9y YXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ICsjDQo+ID4gKyMgU1BEWC1MaWNl bnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gPiArIw0KPiA+ICsjIw0KPiA+ ICsNCj4gPiArW0RlZmluZXNdDQo+ID4gKyAgSU5GX1ZFUlNJT04gICAgICAgICAgICAgICAgICAg ID0gMHgwMDAxMDAwNQ0KPiA+ICsgIEJBU0VfTkFNRSAgICAgICAgICAgICAgICAgICAgICA9IFBs YXRmb3JtRHhlDQo+ID4gKyAgRklMRV9HVUlEICAgICAgICAgICAgICAgICAgICAgID0gNzRCNjRE QzEtQjBCNi00ODUzLUE2QkQtQzY0MjYwNTlBQjFFDQo+ID4gKyAgTU9EVUxFX1RZUEUgICAgICAg ICAgICAgICAgICAgID0gRFhFX0RSSVZFUg0KPiA+ICsgIFZFUlNJT05fU1RSSU5HICAgICAgICAg ICAgICAgICA9IDEuMA0KPiA+ICsgIEVOVFJZX1BPSU5UICAgICAgICAgICAgICAgICAgICA9IFBs YXRmb3JtSW5pdA0KPiA+ICsgIFVOTE9BRF9JTUFHRSAgICAgICAgICAgICAgICAgICA9IFBsYXRm b3JtVW5sb2FkDQo+ID4gKw0KPiA+ICtbU291cmNlc10NCj4gPiArICBQbGF0Zm9ybS5jDQo+ID4g KyAgUGxhdGZvcm0udW5pDQo+ID4gKyAgUGxhdGZvcm1Db25maWcuYw0KPiA+ICsgIFBsYXRmb3Jt Rm9ybXMudmZyDQo+ID4gKw0KPiA+ICtbUGFja2FnZXNdDQo+ID4gKyAgTWRlUGtnL01kZVBrZy5k ZWMNCj4gPiArICBNZGVNb2R1bGVQa2cvTWRlTW9kdWxlUGtnLmRlYw0KPiA+ICsgIFNpbWljc09w ZW5Cb2FyZFBrZy9TaW1pY3NPcGVuQm9hcmRQa2cuZGVjDQo+ID4gKyAgTWluUGxhdGZvcm1Qa2cv TWluUGxhdGZvcm1Qa2cuZGVjDQo+ID4gKw0KPiA+ICtbTGlicmFyeUNsYXNzZXNdDQo+ID4gKyAg QmFzZUxpYg0KPiA+ICsgIEJhc2VNZW1vcnlMaWINCj4gPiArICBEZWJ1Z0xpYg0KPiA+ICsgIERl dmljZVBhdGhMaWINCj4gPiArICBIaWlMaWINCj4gPiArICBNZW1vcnlBbGxvY2F0aW9uTGliDQo+ ID4gKyAgUHJpbnRMaWINCj4gPiArICBVZWZpQm9vdFNlcnZpY2VzVGFibGVMaWINCj4gPiArICBV ZWZpSGlpU2VydmljZXNMaWINCj4gPiArICBVZWZpTGliDQo+ID4gKyAgVWVmaVJ1bnRpbWVTZXJ2 aWNlc1RhYmxlTGliDQo+ID4gKyAgVWVmaURyaXZlckVudHJ5UG9pbnQNCj4gPiArICBEeGVTZXJ2 aWNlc1RhYmxlTGliDQo+ID4gKw0KPiA+ICtbUGNkXQ0KPiA+ICsgIGdFZmlNZGVNb2R1bGVQa2dU b2tlblNwYWNlR3VpZC5QY2RWaWRlb0hvcml6b250YWxSZXNvbHV0aW9uDQo+ID4gKyAgZ0VmaU1k ZU1vZHVsZVBrZ1Rva2VuU3BhY2VHdWlkLlBjZFZpZGVvVmVydGljYWxSZXNvbHV0aW9uDQo+ID4g Kw0KPiA+ICtbUHJvdG9jb2xzXQ0KPiA+ICsgIGdFZmlEZXZpY2VQYXRoUHJvdG9jb2xHdWlkICAg ICAgIyMgUFJPRFVDRVMNCj4gPiArICBnRWZpR3JhcGhpY3NPdXRwdXRQcm90b2NvbEd1aWQgICMj IENPTlNVTUVTDQo+ID4gKyAgZ0VmaUhpaUNvbmZpZ0FjY2Vzc1Byb3RvY29sR3VpZCAjIyBQUk9E VUNFUw0KPiA+ICsNCj4gPiArW0d1aWRzXQ0KPiA+ICsgIGdFZmlJZnJUaWFub0d1aWQNCj4gPiAr ICBnU2ltaWNzWDU4UGxhdGZvcm1Db25maWdHdWlkDQo+ID4gKw0KPiA+ICtbRGVwZXhdDQo+ID4g KyAgZ0VmaUhpaUNvbmZpZ1JvdXRpbmdQcm90b2NvbEd1aWQgIEFORA0KPiA+ICsgIGdFZmlIaWlE YXRhYmFzZVByb3RvY29sR3VpZCAgICAgICBBTkQNCj4gPiArICBnRWZpVmFyaWFibGVBcmNoUHJv dG9jb2xHdWlkICAgICAgQU5EDQo+ID4gKyAgZ0VmaVZhcmlhYmxlV3JpdGVBcmNoUHJvdG9jb2xH dWlkDQo+ID4gZGlmZiAtLWdpdCBhL1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9Q bGF0Zm9ybUR4ZS9QbGF0Zm9ybS51bmkNCj4gPiBiL1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5C b2FyZFBrZy9QbGF0Zm9ybUR4ZS9QbGF0Zm9ybS51bmkNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0 NA0KPiA+IGluZGV4IDAwMDAwMDAwMDAuLjZkNjhjYmViNGYNCj4gPiAtLS0gL2Rldi9udWxsDQo+ ID4gKysrIGIvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL1BsYXRmb3JtRHhlL1Bs YXRmb3JtLnVuaQ0KPiA+IEBAIC0wLDAgKzEsMzEgQEANCj4gPiArLy8gKisrDQo+ID4gKy8vDQo+ ID4gKy8vIENvcHlyaWdodCAoQykgMjAxNCwgUmVkIEhhdCwgSW5jLg0KPiA+ICsvLyBDb3B5cmln aHQgKGMpIDIwMDksIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4N Cj4gPiArLy8NCj4gPiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1Q YXRlbnQNCj4gPiArLy8NCj4gPiArLy8gTW9kdWxlIE5hbWU6DQo+ID4gKy8vDQo+ID4gKy8vICAg UGxhdGZvcm0udW5pDQo+ID4gKy8vDQo+ID4gKy8vIEFic3RyYWN0Og0KPiA+ICsvLw0KPiA+ICsv LyAgIFN0cmluZyBkZWZpbml0aW9ucyBmb3IgUGxhdGZvcm1Gb3Jtcy52ZnINCj4gPiArLy8NCj4g PiArLy8gLS0qLw0KPiA+ICsNCj4gPiArLz0jDQo+ID4gKw0KPiA+ICsjbGFuZ2RlZiBlbi1VUyAi RW5nbGlzaCINCj4gPiArDQo+ID4gKyNzdHJpbmcgU1RSX0ZPUk1TRVRfVElUTEUgICAgICAgICNs YW5ndWFnZSBlbi1VUyAiUVNQIFBsYXRmb3JtDQo+ID4gQ29uZmlndXJhdGlvbiINCj4gPiArI3N0 cmluZyBTVFJfRk9STVNFVF9IRUxQICAgICAgICAgI2xhbmd1YWdlIGVuLVVTICJDaGFuZ2UgdmFy aW91cyBRU1ANCj4gPiBwbGF0Zm9ybSBzZXR0aW5ncy4iDQo+ID4gKyNzdHJpbmcgU1RSX01BSU5f Rk9STV9USVRMRSAgICAgICNsYW5ndWFnZSBlbi1VUyAiUVNQIFNldHRpbmdzIg0KPiA+ICsjc3Ry aW5nIFNUUl9SRVNfQ1VSICAgICAgICAgICAgICAjbGFuZ3VhZ2UgZW4tVVMgIlByZWZlcnJlZCBS ZXNvbHV0aW9uIGF0IE5leHQNCj4gPiBCb290Ig0KPiA+ICsjc3RyaW5nIFNUUl9SRVNfQ1VSX0hF TFAgICAgICAgICAjbGFuZ3VhZ2UgZW4tVVMgIlRoZSBwcmVmZXJyZWQgcmVzb2x1dGlvbg0KPiBv Zg0KPiA+IHRoZSBHcmFwaGljcyBDb25zb2xlIGF0IG5leHQgYm9vdC4gSXQgbWlnaHQgYmUgdW5z ZXQsIG9yIGV2ZW4gaW52YWxpZCAoaGVuY2UNCj4gPiBpZ25vcmVkKSB3cnQuIHRoZSB2aWRlbyBS QU0gc2l6ZS4iDQo+ID4gKyNzdHJpbmcgU1RSX1JFU19ORVhUICAgICAgICAgICAgICNsYW5ndWFn ZSBlbi1VUyAiQ2hhbmdlIFByZWZlcnJlZCBSZXNvbHV0aW9uDQo+ID4gZm9yIE5leHQgQm9vdCIN Cj4gPiArI3N0cmluZyBTVFJfUkVTX05FWFRfSEVMUCAgICAgICAgI2xhbmd1YWdlIGVuLVVTICJZ b3UgY2FuIHNwZWNpZnkgYSBuZXcNCj4gPiBwcmVmZXJlbmNlIGZvciB0aGUgR3JhcGhpY3MgQ29u c29sZSBoZXJlLiBUaGUgbGlzdCBpcyBmaWx0ZXJlZCBhZ2FpbnN0IHRoZSB2aWRlbw0KPiA+IFJB TSBzaXplLiINCj4gPiArI3N0cmluZyBTVFJfU0FWRV9FWElUICAgICAgICAgICAgI2xhbmd1YWdl IGVuLVVTICJDb21taXQgQ2hhbmdlcyBhbmQgRXhpdCINCj4gPiArI3N0cmluZyBTVFJfRElTQ0FS RF9FWElUICAgICAgICAgI2xhbmd1YWdlIGVuLVVTICJEaXNjYXJkIENoYW5nZXMgYW5kIEV4aXQi DQo+ID4gKw0KPiA+IGRpZmYgLS1naXQNCj4gYS9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9h cmRQa2cvUGxhdGZvcm1EeGUvUGxhdGZvcm1Db25maWcuaA0KPiA+IGIvUGxhdGZvcm0vSW50ZWwv U2ltaWNzT3BlbkJvYXJkUGtnL1BsYXRmb3JtRHhlL1BsYXRmb3JtQ29uZmlnLmgNCj4gPiBuZXcg ZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAwMDAuLmQzZjA0MWRkZWENCj4gPiAt LS0gL2Rldi9udWxsDQo+ID4gKysrIGIvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtn L1BsYXRmb3JtRHhlL1BsYXRmb3JtQ29uZmlnLmgNCj4gPiBAQCAtMCwwICsxLDUxIEBADQo+ID4g Ky8qKiBAZmlsZQ0KPiA+ICsgIFV0aWxpdHkgZnVuY3Rpb25zIGZvciBzZXJpYWxpemluZyAocGVy c2lzdGVudGx5IHN0b3JpbmcpIGFuZCBkZXNlcmlhbGl6aW5nDQo+ID4gKyAgT1ZNRidzIHBsYXRm b3JtIGNvbmZpZ3VyYXRpb24uDQo+ID4gKw0KPiA+ICsgIENvcHlyaWdodCAoQykgMjAxNCwgUmVk IEhhdCwgSW5jLg0KPiA+ICsNCj4gPiArICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTIt Q2xhdXNlLVBhdGVudA0KPiA+ICsqKi8NCj4gPiArDQo+ID4gKyNpZm5kZWYgX1BMQVRGT1JNX0NP TkZJR19IXw0KPiA+ICsjZGVmaW5lIF9QTEFURk9STV9DT05GSUdfSF8NCj4gPiArDQo+ID4gKyNp bmNsdWRlIDxCYXNlLmg+DQo+ID4gKw0KPiA+ICsvLw0KPiA+ICsvLyBUaGlzIHN0cnVjdHVyZSBw YXJ0aWNpcGF0ZXMgaW4gZHJpdmVyIGNvbmZpZ3VyYXRpb24uIEl0IGRvZXMgbm90DQo+ID4gKy8v IChuZWNlc3NhcmlseSkgcmVmbGVjdCB0aGUgd2lyZSBmb3JtYXQgaW4gdGhlIHBlcnNpc3RlbnQg c3RvcmUuDQo+ID4gKy8vDQo+ID4gKyNwcmFnbWEgcGFjaygxKQ0KPiA+ICt0eXBlZGVmIHN0cnVj dCB7DQo+ID4gKyAgLy8NCj4gPiArICAvLyBwcmVmZXJyZWQgZ3JhcGhpY3MgY29uc29sZSByZXNv bHV0aW9uIHdoZW4gYm9vdGluZw0KPiA+ICsgIC8vDQo+ID4gKyAgVUlOVDMyIEhvcml6b250YWxS ZXNvbHV0aW9uOw0KPiA+ICsgIFVJTlQzMiBWZXJ0aWNhbFJlc29sdXRpb247DQo+ID4gK30gUExB VEZPUk1fQ09ORklHOw0KPiA+ICsjcHJhZ21hIHBhY2soKQ0KPiA+ICsNCj4gPiArLy8NCj4gPiAr Ly8gUGxlYXNlIHNlZSB0aGUgQVBJIGRvY3VtZW50YXRpb24gbmVhciB0aGUgZnVuY3Rpb24gZGVm aW5pdGlvbnMuDQo+ID4gKy8vDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArRUZJQVBJDQo+ID4gK1Bs YXRmb3JtQ29uZmlnU2F2ZSAoDQo+ID4gKyAgSU4gUExBVEZPUk1fQ09ORklHICpQbGF0Zm9ybUNv bmZpZw0KPiA+ICsgICk7DQo+ID4gKw0KPiA+ICtFRklfU1RBVFVTDQo+ID4gK0VGSUFQSQ0KPiA+ ICtQbGF0Zm9ybUNvbmZpZ0xvYWQgKA0KPiA+ICsgIE9VVCBQTEFURk9STV9DT05GSUcgKlBsYXRm b3JtQ29uZmlnLA0KPiA+ICsgIE9VVCBVSU5UNjQgICAgICAgICAgKk9wdGlvbmFsRWxlbWVudHMN Cj4gPiArICApOw0KPiA+ICsNCj4gPiArLy8NCj4gPiArLy8gRmVhdHVyZSBmbGFncyBmb3IgT3B0 aW9uYWxFbGVtZW50cy4NCj4gPiArLy8NCj4gPiArI2RlZmluZSBQTEFURk9STV9DT05GSUdfRl9H UkFQSElDU19SRVNPTFVUSU9OIEJJVDANCj4gPiArI2RlZmluZSBQTEFURk9STV9DT05GSUdfRl9E T1dOR1JBREUgICAgICAgICAgIEJJVDYzDQo+ID4gKw0KPiA+ICsjZW5kaWYgLy8gX1BMQVRGT1JN X0NPTkZJR19IXw0KPiA+IGRpZmYgLS1naXQNCj4gYS9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVu Qm9hcmRQa2cvUGxhdGZvcm1EeGUvUGxhdGZvcm1Gb3Jtcy52ZnINCj4gPiBiL1BsYXRmb3JtL0lu dGVsL1NpbWljc09wZW5Cb2FyZFBrZy9QbGF0Zm9ybUR4ZS9QbGF0Zm9ybUZvcm1zLnZmcg0KPiA+ IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMDAwMC4uMWMwMjU2NWViYg0K PiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9h cmRQa2cvUGxhdGZvcm1EeGUvUGxhdGZvcm1Gb3Jtcy52ZnINCj4gPiBAQCAtMCwwICsxLDY3IEBA DQo+ID4gKy8vICorKw0KPiA+ICsvLw0KPiA+ICsvLyBDb3B5cmlnaHQgKEMpIDIwMTQsIFJlZCBI YXQsIEluYy4NCj4gPiArLy8gQ29weXJpZ2h0IChjKSAyMDA5IC0gMjAxMSwgSW50ZWwgQ29ycG9y YXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ICsvLw0KPiA+ICsvLyBTUERYLUxp Y2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiA+ICsvLw0KPiA+ICsvLyBN b2R1bGUgTmFtZToNCj4gPiArLy8NCj4gPiArLy8gICBQbGF0Zm9ybUZvcm1zLnZmcg0KPiA+ICsv Lw0KPiA+ICsvLyBBYnN0cmFjdDoNCj4gPiArLy8NCj4gPiArLy8gICBGb3JtIGRlZmluaXRpb25z IGZvciBleHBvc2luZyBzb21lIG9mIE9WTUYncyBwbGF0Zm9ybSBrbm9icyB2aWEgSElJLg0KPiA+ ICsvLw0KPiA+ICsvLyAtLSovDQo+ID4gKw0KPiA+ICsjaW5jbHVkZSA8R3VpZC9TaW1pY3NYNThQ bGF0Zm9ybUNvbmZpZy5oPg0KPiA+ICsjaW5jbHVkZSAiUGxhdGZvcm0uaCINCj4gPiArDQo+ID4g K2Zvcm1zZXQNCj4gPiArICBndWlkICA9IFNJTUlDU1g1OF9QTEFURk9STV9DT05GSUdfR1VJRCwN Cj4gPiArICB0aXRsZSA9IFNUUklOR19UT0tFTihTVFJfRk9STVNFVF9USVRMRSksDQo+ID4gKyAg aGVscCAgPSBTVFJJTkdfVE9LRU4oU1RSX0ZPUk1TRVRfSEVMUCksDQo+ID4gKw0KPiA+ICsgIHZh cnN0b3JlIE1BSU5fRk9STV9TVEFURSwNCj4gPiArICAgIHZhcmlkID0gRk9STVNUQVRFSURfTUFJ Tl9GT1JNLA0KPiA+ICsgICAgbmFtZSAgPSBNYWluRm9ybVN0YXRlLA0KPiA+ICsgICAgZ3VpZCAg PSBTSU1JQ1NYNThfUExBVEZPUk1fQ09ORklHX0dVSUQ7DQo+ID4gKw0KPiA+ICsgIGZvcm0NCj4g PiArICAgIGZvcm1pZCA9IEZPUk1JRF9NQUlOX0ZPUk0sDQo+ID4gKyAgICB0aXRsZSAgPSBTVFJJ TkdfVE9LRU4oU1RSX01BSU5fRk9STV9USVRMRSk7DQo+ID4gKw0KPiA+ICsgICAgLy8NCj4gPiAr ICAgIC8vIERpc3BsYXkgdGhlIGN1cnJlbnQgcHJlZmVyZW5jZSBpbiBhIHJlYWQtb25seSBzdHJp bmcgZmllbGQuDQo+ID4gKyAgICAvLw0KPiA+ICsgICAgc3RyaW5nDQo+ID4gKyAgICAgIHZhcmlk ICAgICAgPSBNYWluRm9ybVN0YXRlLkN1cnJlbnRQcmVmZXJyZWRSZXNvbHV0aW9uLA0KPiA+ICsg ICAgICBxdWVzdGlvbmlkID0gUVVFU1RJT05fUkVTX0NVUiwNCj4gPiArICAgICAgcHJvbXB0ICAg ICA9IFNUUklOR19UT0tFTihTVFJfUkVTX0NVUiksDQo+ID4gKyAgICAgIGhlbHAgICAgICAgPSBT VFJJTkdfVE9LRU4oU1RSX1JFU19DVVJfSEVMUCksDQo+ID4gKyAgICAgIGZsYWdzICAgICAgPSBS RUFEX09OTFksDQo+ID4gKyAgICAgIG1pbnNpemUgICAgPSAwLA0KPiA+ICsgICAgICBtYXhzaXpl ICAgID0gTUFYU0laRV9SRVNfQ1VSLA0KPiA+ICsgICAgZW5kc3RyaW5nOw0KPiA+ICsNCj4gPiAr ICAgIC8vDQo+ID4gKyAgICAvLyBXZSdsbCBkeW5hbWljYWxseSBnZW5lcmF0ZSBhIG9uZS1vZi1t YW55IHNlbGVjdGlvbiBhdCB0aGlzIGxhYmVsLg0KPiA+ICsgICAgLy8NCj4gPiArICAgIGxhYmVs IExBQkVMX1JFU19ORVhUOw0KPiA+ICsNCj4gPiArICAgIHRleHQNCj4gPiArICAgICAgaGVscCAg PSBTVFJJTkdfVE9LRU4oU1RSX1NBVkVfRVhJVCksDQo+ID4gKyAgICAgIHRleHQgID0gU1RSSU5H X1RPS0VOKFNUUl9TQVZFX0VYSVQpLA0KPiA+ICsgICAgICBmbGFncyA9IElOVEVSQUNUSVZFLA0K PiA+ICsgICAgICBrZXkgICA9IFFVRVNUSU9OX1NBVkVfRVhJVDsNCj4gPiArDQo+ID4gKyAgICB0 ZXh0DQo+ID4gKyAgICAgIGhlbHAgID0gU1RSSU5HX1RPS0VOKFNUUl9ESVNDQVJEX0VYSVQpLA0K PiA+ICsgICAgICB0ZXh0ICA9IFNUUklOR19UT0tFTihTVFJfRElTQ0FSRF9FWElUKSwNCj4gPiAr ICAgICAgZmxhZ3MgPSBJTlRFUkFDVElWRSwNCj4gPiArICAgICAga2V5ICAgPSBRVUVTVElPTl9E SVNDQVJEX0VYSVQ7DQo+ID4gKw0KPiA+ICsgIGVuZGZvcm07DQo+ID4gKw0KPiA+ICtlbmRmb3Jt c2V0Ow0KPiA+IGRpZmYgLS1naXQgYS9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cv UGxhdGZvcm1QZWkvQ21vcy5oDQo+ID4gYi9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQ a2cvUGxhdGZvcm1QZWkvQ21vcy5oDQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRl eCAwMDAwMDAwMDAwLi42MTZkMmQ3NGNiDQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL1Bs YXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9QbGF0Zm9ybVBlaS9DbW9zLmgNCj4gPiBA QCAtMCwwICsxLDUwIEBADQo+ID4gKy8qKiBAZmlsZQ0KPiA+ICsgIFBDL0FUIENNT1MgYWNjZXNz IHJvdXRpbmVzDQo+ID4gKw0KPiA+ICsgIENvcHlyaWdodCAoYykgMjAwNiAtIDIwMDkgSW50ZWwg Q29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuIDxCUj4NCj4gPiArDQo+ID4gKyAgU1BE WC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gPiArKiovDQo+ID4g Kw0KPiA+ICsjaWZuZGVmIF9fQ01PU19IX18NCj4gPiArI2RlZmluZSBfX0NNT1NfSF9fDQo+ID4g Kw0KPiA+ICsvKioNCj4gPiArICBSZWFkcyA4LWJpdHMgb2YgQ01PUyBkYXRhLg0KPiA+ICsNCj4g PiArICBSZWFkcyB0aGUgOC1iaXRzIG9mIENNT1MgZGF0YSBhdCB0aGUgbG9jYXRpb24gc3BlY2lm aWVkIGJ5IEluZGV4Lg0KPiA+ICsgIFRoZSA4LWJpdCByZWFkIHZhbHVlIGlzIHJldHVybmVkLg0K PiA+ICsNCj4gPiArICBAcGFyYW0gIEluZGV4ICBUaGUgQ01PUyBsb2NhdGlvbiB0byByZWFkLg0K PiA+ICsNCj4gPiArICBAcmV0dXJuIFRoZSB2YWx1ZSByZWFkLg0KPiA+ICsNCj4gPiArKiovDQo+ ID4gK1VJTlQ4DQo+ID4gK0VGSUFQSQ0KPiA+ICtDbW9zUmVhZDggKA0KPiA+ICsgIElOICAgICAg VUlOVE4gICAgICAgICAgICAgICAgICAgICBJbmRleA0KPiA+ICsgICk7DQo+ID4gKw0KPiA+ICsv KioNCj4gPiArICBXcml0ZXMgOC1iaXRzIG9mIENNT1MgZGF0YS4NCj4gPiArDQo+ID4gKyAgV3Jp dGVzIDgtYml0cyBvZiBDTU9TIGRhdGEgdG8gdGhlIGxvY2F0aW9uIHNwZWNpZmllZCBieSBJbmRl eA0KPiA+ICsgIHdpdGggdGhlIHZhbHVlIHNwZWNpZmllZCBieSBWYWx1ZSBhbmQgcmV0dXJucyBW YWx1ZS4NCj4gPiArDQo+ID4gKyAgQHBhcmFtICBJbmRleCAgVGhlIENNT1MgbG9jYXRpb24gdG8g d3JpdGUuDQo+ID4gKyAgQHBhcmFtICBWYWx1ZSAgVGhlIHZhbHVlIHRvIHdyaXRlIHRvIENNT1Mu DQo+ID4gKw0KPiA+ICsgIEByZXR1cm4gVGhlIHZhbHVlIHdyaXR0ZW4gdG8gQ01PUy4NCj4gPiAr DQo+ID4gKyoqLw0KPiA+ICtVSU5UOA0KPiA+ICtFRklBUEkNCj4gPiArQ21vc1dyaXRlOCAoDQo+ ID4gKyAgSU4gICAgICBVSU5UTiAgICAgICAgICAgICAgICAgICAgIEluZGV4LA0KPiA+ICsgIElO ICAgICAgVUlOVDggICAgICAgICAgICAgICAgICAgICBWYWx1ZQ0KPiA+ICsgICk7DQo+ID4gKw0K PiA+ICsNCj4gPiArI2VuZGlmDQo+ID4gKw0KPiA+IGRpZmYgLS1naXQgYS9QbGF0Zm9ybS9JbnRl bC9TaW1pY3NPcGVuQm9hcmRQa2cvUGxhdGZvcm1QZWkvUGxhdGZvcm0uaA0KPiA+IGIvUGxhdGZv cm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL1BsYXRmb3JtUGVpL1BsYXRmb3JtLmgNCj4gPiBu ZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAwMDAuLjViMWE5YjVmNTcNCj4g PiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJk UGtnL1BsYXRmb3JtUGVpL1BsYXRmb3JtLmgNCj4gPiBAQCAtMCwwICsxLDkzIEBADQo+ID4gKy8q KiBAZmlsZQ0KPiA+ICsgIFBsYXRmb3JtIFBFSSBtb2R1bGUgaW5jbHVkZSBmaWxlLg0KPiA+ICsN Cj4gPiArICBDb3B5cmlnaHQgKGMpIDIwMDYgLSAyMDE2IEludGVsIENvcnBvcmF0aW9uLiBBbGwg cmlnaHRzIHJlc2VydmVkLiA8QlI+DQo+ID4gKw0KPiA+ICsgIFNQRFgtTGljZW5zZS1JZGVudGlm aWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ID4gKyoqLw0KPiA+ICsNCj4gPiArI2lmbmRlZiBf UExBVEZPUk1fUEVJX0hfSU5DTFVERURfDQo+ID4gKyNkZWZpbmUgX1BMQVRGT1JNX1BFSV9IX0lO Q0xVREVEXw0KPiA+ICsNCj4gPiArVk9JRA0KPiA+ICtBZGRJb01lbW9yeUJhc2VTaXplSG9iICgN Cj4gPiArICBFRklfUEhZU0lDQUxfQUREUkVTUyAgICAgICAgTWVtb3J5QmFzZSwNCj4gPiArICBV SU5UNjQgICAgICAgICAgICAgICAgICAgICAgTWVtb3J5U2l6ZQ0KPiA+ICsgICk7DQo+ID4gKw0K PiA+ICtWT0lEDQo+ID4gK0FkZElvTWVtb3J5UmFuZ2VIb2IgKA0KPiA+ICsgIEVGSV9QSFlTSUNB TF9BRERSRVNTICAgICAgICBNZW1vcnlCYXNlLA0KPiA+ICsgIEVGSV9QSFlTSUNBTF9BRERSRVNT ICAgICAgICBNZW1vcnlMaW1pdA0KPiA+ICsgICk7DQo+ID4gKw0KPiA+ICtWT0lEDQo+ID4gK0Fk ZE1lbW9yeUJhc2VTaXplSG9iICgNCj4gPiArICBFRklfUEhZU0lDQUxfQUREUkVTUyAgICAgICAg TWVtb3J5QmFzZSwNCj4gPiArICBVSU5UNjQgICAgICAgICAgICAgICAgICAgICAgTWVtb3J5U2l6 ZQ0KPiA+ICsgICk7DQo+ID4gKw0KPiA+ICtWT0lEDQo+ID4gK0FkZE1lbW9yeVJhbmdlSG9iICgN Cj4gPiArICBFRklfUEhZU0lDQUxfQUREUkVTUyAgICAgICAgTWVtb3J5QmFzZSwNCj4gPiArICBF RklfUEhZU0lDQUxfQUREUkVTUyAgICAgICAgTWVtb3J5TGltaXQNCj4gPiArICApOw0KPiA+ICsN Cj4gPiArVk9JRA0KPiA+ICtBZGRVbnRlc3RlZE1lbW9yeUJhc2VTaXplSG9iICgNCj4gPiArICBF RklfUEhZU0lDQUxfQUREUkVTUyAgICAgICAgTWVtb3J5QmFzZSwNCj4gPiArICBVSU5UNjQgICAg ICAgICAgICAgICAgICAgICAgTWVtb3J5U2l6ZQ0KPiA+ICsgICk7DQo+ID4gKw0KPiA+ICtWT0lE DQo+ID4gK0FkZFJlc2VydmVkTWVtb3J5QmFzZVNpemVIb2IgKA0KPiA+ICsgIEVGSV9QSFlTSUNB TF9BRERSRVNTICAgICAgICBNZW1vcnlCYXNlLA0KPiA+ICsgIFVJTlQ2NCAgICAgICAgICAgICAg ICAgICAgICBNZW1vcnlTaXplLA0KPiA+ICsgIEJPT0xFQU4gICAgICAgICAgICAgICAgICAgICBD YWNoZWFibGUNCj4gPiArICApOw0KPiA+ICsNCj4gPiArVk9JRA0KPiA+ICtBZGRyZXNzV2lkdGhJ bml0aWFsaXphdGlvbiAoDQo+ID4gKyAgVk9JRA0KPiA+ICsgICk7DQo+ID4gKw0KPiA+ICtWT0lE DQo+ID4gK1g1OFRzZWdNYnl0ZXNJbml0aWFsaXphdGlvbiAoDQo+ID4gKyAgVk9JRA0KPiA+ICsg ICk7DQo+ID4gKw0KPiA+ICtFRklfU1RBVFVTDQo+ID4gK1B1Ymxpc2hQZWlNZW1vcnkgKA0KPiA+ ICsgIFZPSUQNCj4gPiArICApOw0KPiA+ICsNCj4gPiArVUlOVDMyDQo+ID4gK0dldFN5c3RlbU1l bW9yeVNpemVCZWxvdzRnYiAoDQo+ID4gKyAgVk9JRA0KPiA+ICsgICk7DQo+ID4gKw0KPiA+ICtW T0lEDQo+ID4gK0luaXRpYWxpemVSYW1SZWdpb25zICgNCj4gPiArICBWT0lEDQo+ID4gKyAgKTsN Cj4gPiArDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArUGVpRnZJbml0aWFsaXphdGlvbiAoDQo+ID4g KyAgVk9JRA0KPiA+ICsgICk7DQo+ID4gKw0KPiA+ICtWT0lEDQo+ID4gK0luc3RhbGxGZWF0dXJl Q29udHJvbENhbGxiYWNrICgNCj4gPiArICBWT0lEDQo+ID4gKyAgKTsNCj4gPiArDQo+ID4gK2V4 dGVybiBFRklfQk9PVF9NT0RFIG1Cb290TW9kZTsNCj4gPiArDQo+ID4gK2V4dGVybiBCT09MRUFO IG1TM1N1cHBvcnRlZDsNCj4gPiArDQo+ID4gK2V4dGVybiBVSU5UOCBtUGh5c01lbUFkZHJlc3NX aWR0aDsNCj4gPiArDQo+ID4gK2V4dGVybiBVSU5UMzIgbU1heENwdUNvdW50Ow0KPiA+ICsNCj4g PiArZXh0ZXJuIFVJTlQxNiBtSG9zdEJyaWRnZURldklkOw0KPiA+ICsjZW5kaWYgLy8gX1BMQVRG T1JNX1BFSV9IX0lOQ0xVREVEXw0KPiA+IGRpZmYgLS1naXQgYS9QbGF0Zm9ybS9JbnRlbC9TaW1p Y3NPcGVuQm9hcmRQa2cvUGxhdGZvcm1QZWkvUGxhdGZvcm1QZWkuaW5mDQo+ID4gYi9QbGF0Zm9y bS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvUGxhdGZvcm1QZWkvUGxhdGZvcm1QZWkuaW5mDQo+ ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRleCAwMDAwMDAwMDAwLi5lYjgwNDhjNjU1 DQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5C b2FyZFBrZy9QbGF0Zm9ybVBlaS9QbGF0Zm9ybVBlaS5pbmYNCj4gPiBAQCAtMCwwICsxLDEwOSBA QA0KPiA+ICsjIyBAZmlsZQ0KPiA+ICsjICBQbGF0Zm9ybSBQRUkgZHJpdmVyDQo+ID4gKyMNCj4g PiArIyAgVGhpcyBtb2R1bGUgcHJvdmlkZXMgcGxhdGZvcm0gc3BlY2lmaWMgZnVuY3Rpb24gdG8g ZGV0ZWN0IGJvb3QgbW9kZS4NCj4gPiArIyBDb3B5cmlnaHQgKGMpIDIwMDYgLSAyMDE4IEludGVs IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLiA8QlI+DQo+ID4gKyMNCj4gPiArIyBT UERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiA+ICsjDQo+ID4g KyMjDQo+ID4gKw0KPiA+ICtbRGVmaW5lc10NCj4gPiArICBJTkZfVkVSU0lPTiAgICAgICAgICAg ICAgICAgICAgPSAweDAwMDEwMDA1DQo+ID4gKyAgQkFTRV9OQU1FICAgICAgICAgICAgICAgICAg ICAgID0gUGxhdGZvcm1QZWkNCj4gPiArICBGSUxFX0dVSUQgICAgICAgICAgICAgICAgICAgICAg PSAwNTExNjIxOC1mOWYxLTQxZjgtOGQxNy1jMjIwNzAwNmZmZmYNCj4gPiArICBNT0RVTEVfVFlQ RSAgICAgICAgICAgICAgICAgICAgPSBQRUlNDQo+ID4gKyAgVkVSU0lPTl9TVFJJTkcgICAgICAg ICAgICAgICAgID0gMS4wDQo+ID4gKyAgRU5UUllfUE9JTlQgICAgICAgICAgICAgICAgICAgID0g SW5pdGlhbGl6ZVBsYXRmb3JtDQo+ID4gKw0KPiA+ICsjDQo+ID4gKyMgVGhlIGZvbGxvd2luZyBp bmZvcm1hdGlvbiBpcyBmb3IgcmVmZXJlbmNlIG9ubHkgYW5kIG5vdCByZXF1aXJlZCBieSB0aGUN Cj4gYnVpbGQNCj4gPiB0b29scy4NCj4gPiArIw0KPiA+ICsjICBWQUxJRF9BUkNISVRFQ1RVUkVT ICAgICAgICAgICA9IElBMzIgWDY0IEVCQw0KPiA+ICsjDQo+ID4gKw0KPiA+ICtbU291cmNlc10N Cj4gPiArICBDbW9zLmMNCj4gPiArICBGZWF0dXJlQ29udHJvbC5jDQo+ID4gKyAgRnYuYw0KPiA+ ICsgIE1lbURldGVjdC5jDQo+ID4gKyAgUGxhdGZvcm0uYw0KPiA+ICsNCj4gPiArW1BhY2thZ2Vz XQ0KPiA+ICsgIE1kZVBrZy9NZGVQa2cuZGVjDQo+ID4gKyAgTWRlTW9kdWxlUGtnL01kZU1vZHVs ZVBrZy5kZWMNCj4gPiArICBVZWZpQ3B1UGtnL1VlZmlDcHVQa2cuZGVjDQo+ID4gKyAgU2ltaWNz T3BlbkJvYXJkUGtnL1NpbWljc09wZW5Cb2FyZFBrZy5kZWMNCj4gPiArICBNaW5QbGF0Zm9ybVBr Zy9NaW5QbGF0Zm9ybVBrZy5kZWMNCj4gPiArICBPdm1mUGtnL092bWZQa2cuZGVjDQo+ID4gKw0K PiA+ICtbR3VpZHNdDQo+ID4gKyAgZ0VmaU1lbW9yeVR5cGVJbmZvcm1hdGlvbkd1aWQNCj4gPiAr ICBnRWZpU21tUGVpU21yYW1NZW1vcnlSZXNlcnZlR3VpZCAgICAgICAgICAgICAgIyMgQ09OU1VN RVMNCj4gPiArDQo+ID4gK1tMaWJyYXJ5Q2xhc3Nlc10NCj4gPiArICBCYXNlTGliDQo+ID4gKyAg RGVidWdMaWINCj4gPiArICBIb2JMaWINCj4gPiArICBJb0xpYg0KPiA+ICsgIFBjaUxpYg0KPiA+ ICsgIFBlaVJlc291cmNlUHVibGljYXRpb25MaWINCj4gPiArICBQZWlTZXJ2aWNlc0xpYg0KPiA+ ICsgIFBlaVNlcnZpY2VzVGFibGVQb2ludGVyTGliDQo+ID4gKyAgUGVpbUVudHJ5UG9pbnQNCj4g PiArICBNdHJyTGliDQo+ID4gKyAgUGNkTGliDQo+ID4gKw0KPiA+ICtbUGNkXQ0KPiA+ICsgIGdT aW1pY3NYNThQa2dUb2tlblNwYWNlR3VpZC5QY2RTaW1pY3NQZWlNZW1GdkJhc2UNCj4gPiArICBn U2ltaWNzWDU4UGtnVG9rZW5TcGFjZUd1aWQuUGNkU2ltaWNzUGVpTWVtRnZTaXplDQo+ID4gKyAg Z1NpbWljc1g1OFBrZ1Rva2VuU3BhY2VHdWlkLlBjZFNpbWljc0R4ZU1lbUZ2QmFzZQ0KPiA+ICsg IGdTaW1pY3NYNThQa2dUb2tlblNwYWNlR3VpZC5QY2RTaW1pY3NEeGVNZW1GdlNpemUNCj4gPiAr ICBnU2ltaWNzWDU4UGtnVG9rZW5TcGFjZUd1aWQuUGNkU2ltaWNzTG9ja0JveFN0b3JhZ2VCYXNl DQo+ID4gKyAgZ1NpbWljc1g1OFBrZ1Rva2VuU3BhY2VHdWlkLlBjZFNpbWljc0xvY2tCb3hTdG9y YWdlU2l6ZQ0KPiA+ICsgIGdTaW1pY3NYNThQa2dUb2tlblNwYWNlR3VpZC5QY2RTaW1pY3NQZWlN ZW1GdkJhc2UNCj4gPiArICBnU2ltaWNzWDU4UGtnVG9rZW5TcGFjZUd1aWQuUGNkU2ltaWNzUGVp TWVtRnZTaXplDQo+ID4gKyAgZ1NpbWljc1g1OFBrZ1Rva2VuU3BhY2VHdWlkLlBjZFNpbWljc0R4 ZU1lbUZ2QmFzZQ0KPiA+ICsgIGdTaW1pY3NYNThQa2dUb2tlblNwYWNlR3VpZC5QY2RTaW1pY3NE eGVNZW1GdlNpemUNCj4gPiArICBnU2ltaWNzWDU4UGtnVG9rZW5TcGFjZUd1aWQuUGNkU2ltaWNz U2VjUGFnZVRhYmxlc0Jhc2UNCj4gPiArICBnU2ltaWNzWDU4UGtnVG9rZW5TcGFjZUd1aWQuUGNk U2ltaWNzU2VjUGVpVGVtcFJhbUJhc2UNCj4gPiArICBnU2ltaWNzWDU4UGtnVG9rZW5TcGFjZUd1 aWQuUGNkU2ltaWNzU2VjUGVpVGVtcFJhbVNpemUNCj4gPiArICBnRWZpTWRlUGtnVG9rZW5TcGFj ZUd1aWQuUGNkR3VpZGVkRXh0cmFjdEhhbmRsZXJUYWJsZUFkZHJlc3MNCj4gPiArICBnU2ltaWNz WDU4UGtnVG9rZW5TcGFjZUd1aWQuUGNkR3VpZGVkRXh0cmFjdEhhbmRsZXJUYWJsZVNpemUNCj4g PiArICBnU2ltaWNzWDU4UGtnVG9rZW5TcGFjZUd1aWQuUGNkU2ltaWNzRGVjb21wcmVzc2lvblNj cmF0Y2hFbmQNCj4gPiArICBnU2ltaWNzWDU4UGtnVG9rZW5TcGFjZUd1aWQuUGNkU2ltaWNzWDU4 SG9zdEJyaWRnZVBjaURldklkDQo+ID4gKyAgZ1NpbWljc1g1OFBrZ1Rva2VuU3BhY2VHdWlkLlBj ZFBjaUlvQmFzZQ0KPiA+ICsgIGdTaW1pY3NYNThQa2dUb2tlblNwYWNlR3VpZC5QY2RQY2lJb1Np emUNCj4gPiArICBnU2ltaWNzWDU4UGtnVG9rZW5TcGFjZUd1aWQuUGNkUGNpTW1pbzMyQmFzZQ0K PiA+ICsgIGdTaW1pY3NYNThQa2dUb2tlblNwYWNlR3VpZC5QY2RQY2lNbWlvMzJTaXplDQo+ID4g KyAgZ1NpbWljc1g1OFBrZ1Rva2VuU3BhY2VHdWlkLlBjZFBjaU1taW82NEJhc2UNCj4gPiArICBn U2ltaWNzWDU4UGtnVG9rZW5TcGFjZUd1aWQuUGNkUGNpTW1pbzY0U2l6ZQ0KPiA+ICsgIGdTaW1p Y3NYNThQa2dUb2tlblNwYWNlR3VpZC5QY2RTaW1pY3NEZWNvbXByZXNzaW9uU2NyYXRjaEVuZA0K PiA+ICsgIGdTaW1pY3NYNThQa2dUb2tlblNwYWNlR3VpZC5QY2RYNThUc2VnTWJ5dGVzDQo+ID4g KyAgZ1NpbWljc1g1OFBrZ1Rva2VuU3BhY2VHdWlkLlBjZFNtbVNtcmFtUmVxdWlyZQ0KPiA+ICsg IGdFZmlNZGVNb2R1bGVQa2dUb2tlblNwYWNlR3VpZC5QY2RWYXJpYWJsZVN0b3JlU2l6ZQ0KPiA+ ICsgIGdFZmlNZGVNb2R1bGVQa2dUb2tlblNwYWNlR3VpZC5QY2RGbGFzaE52U3RvcmFnZUZ0d1Nw YXJlU2l6ZQ0KPiA+ICsgIGdFZmlNZGVNb2R1bGVQa2dUb2tlblNwYWNlR3VpZC5QY2RGbGFzaE52 U3RvcmFnZVZhcmlhYmxlU2l6ZQ0KPiA+ICsgIGdFZmlNZGVNb2R1bGVQa2dUb2tlblNwYWNlR3Vp ZC5QY2RFbXVWYXJpYWJsZU52U3RvcmVSZXNlcnZlZA0KPiA+ICsgIGdFZmlNZGVNb2R1bGVQa2dU b2tlblNwYWNlR3VpZC5QY2REeGVJcGxTd2l0Y2hUb0xvbmdNb2RlDQo+ID4gKyAgZ0VmaU1kZU1v ZHVsZVBrZ1Rva2VuU3BhY2VHdWlkLlBjZFVzZTFHUGFnZVRhYmxlDQo+ID4gKyAgZ0VmaU1kZU1v ZHVsZVBrZ1Rva2VuU3BhY2VHdWlkLlBjZEFjcGlTM0VuYWJsZQ0KPiA+ICsgIGdVZWZpQ3B1UGtn VG9rZW5TcGFjZUd1aWQuUGNkQ3B1TG9jYWxBcGljQmFzZUFkZHJlc3MNCj4gPiArICBnVWVmaUNw dVBrZ1Rva2VuU3BhY2VHdWlkLlBjZENwdU1heExvZ2ljYWxQcm9jZXNzb3JOdW1iZXINCj4gPiAr ICBnVWVmaUNwdVBrZ1Rva2VuU3BhY2VHdWlkLlBjZENwdUFwSW5pdFRpbWVPdXRJbk1pY3JvU2Vj b25kcw0KPiA+ICsgIGdVZWZpQ3B1UGtnVG9rZW5TcGFjZUd1aWQuUGNkQ3B1QXBTdGFja1NpemUN Cj4gPiArICBnTWluUGxhdGZvcm1Qa2dUb2tlblNwYWNlR3VpZC5QY2RGbGFzaEFyZWFCYXNlQWRk cmVzcyAgIyMNCj4gQ09OU1VNRVMNCj4gPiArICBnTWluUGxhdGZvcm1Qa2dUb2tlblNwYWNlR3Vp ZC5QY2RGbGFzaEFyZWFTaXplICAgICAgICAgIyMgQ09OU1VNRVMNCj4gPiArICBnTWluUGxhdGZv cm1Qa2dUb2tlblNwYWNlR3VpZC5QY2RJb0FwaWNJZA0KPiA+ICsNCj4gPiArW0ZpeGVkUGNkXQ0K PiA+ICsgIGdFZmlNZGVQa2dUb2tlblNwYWNlR3VpZC5QY2RQY2lFeHByZXNzQmFzZUFkZHJlc3MN Cj4gPiArDQo+ID4gKw0KPiA+ICtbUHBpc10NCj4gPiArICBnRWZpUGVpTWFzdGVyQm9vdE1vZGVQ cGlHdWlkDQo+ID4gKyAgZ0VmaVBlaU1wU2VydmljZXNQcGlHdWlkDQo+ID4gKw0KPiA+ICtbRGVw ZXhdDQo+ID4gKyAgVFJVRQ0KPiA+ICsNCj4gPiBkaWZmIC0tZ2l0DQo+ID4NCj4gYS9QbGF0Zm9y bS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvUG9saWN5L0xpYnJhcnkvU2lsaWNvblBvbGljeUlu aXRMaWIvU2lsaWNvbg0KPiA+IFBvbGljeUluaXRMaWIuaW5mDQo+ID4NCj4gYi9QbGF0Zm9ybS9J bnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvUG9saWN5L0xpYnJhcnkvU2lsaWNvblBvbGljeUluaXRM aWIvU2lsaWNvbg0KPiA+IFBvbGljeUluaXRMaWIuaW5mDQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2 NDQNCj4gPiBpbmRleCAwMDAwMDAwMDAwLi5iOWJjYjVkMmJkDQo+ID4gLS0tIC9kZXYvbnVsbA0K PiA+ICsrKw0KPiA+DQo+IGIvUGxhdGZvcm0vSW50ZWwvU2ltaWNzT3BlbkJvYXJkUGtnL1BvbGlj eS9MaWJyYXJ5L1NpbGljb25Qb2xpY3lJbml0TGliL1NpbGljb24NCj4gPiBQb2xpY3lJbml0TGli LmluZg0KPiA+IEBAIC0wLDAgKzEsMzggQEANCj4gPiArIyMgQGZpbGUNCj4gPiArIw0KPiA+ICsj IENvcHlyaWdodCAoYykgMjAxOCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZl ZC4gPEJSPg0KPiA+ICsjDQo+ID4gKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNs YXVzZS1QYXRlbnQNCj4gPiArIw0KPiA+ICsjIw0KPiA+ICsNCj4gPiArW0RlZmluZXNdDQo+ID4g KyAgSU5GX1ZFUlNJT04gICAgICAgICAgPSAweDAwMDEwMDA1DQo+ID4gKyAgQkFTRV9OQU1FICAg ICAgICAgICAgPSBTaWxpY29uUG9saWN5SW5pdExpYg0KPiA+ICsgIEZJTEVfR1VJRCAgICAgICAg ICAgID0gQjQ5NERGMzktQTVGOC00OEExLUIyRDAtRUY1MjNBRDkxQzU1DQo+ID4gKyAgTU9EVUxF X1RZUEUgICAgICAgICAgPSBQRUlNDQo+ID4gKyAgVkVSU0lPTl9TVFJJTkcgICAgICAgPSAxLjAN Cj4gPiArICBMSUJSQVJZX0NMQVNTICAgICAgICA9IFNpbGljb25Qb2xpY3lJbml0TGliDQo+ID4g Kw0KPiA+ICtbU291cmNlc10NCj4gPiArICBTaWxpY29uUG9saWN5SW5pdExpYi5jDQo+ID4gKw0K PiA+DQo+ICsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMNCj4gPiAjIyMjIyMjIyMjIyMjIyMjIyMjIw0KPiA+ICsjDQo+ID4gKyMgUGFj a2FnZSBEZXBlbmRlbmN5IFNlY3Rpb24gLSBsaXN0IG9mIFBhY2thZ2UgZmlsZXMgdGhhdCBhcmUg cmVxdWlyZWQgZm9yDQo+ID4gKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzIG1v ZHVsZS4NCj4gPiArIw0KPiA+DQo+ICsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCj4gPiAjIyMjIyMjIyMjIyMjIyMjIyMjIw0KPiA+ ICtbUGFja2FnZXNdDQo+ID4gKyAgTWRlUGtnL01kZVBrZy5kZWMNCj4gPiArDQo+ID4gK1tMaWJy YXJ5Q2xhc3Nlc10NCj4gPiArICBCYXNlTWVtb3J5TGliDQo+ID4gKyAgQmFzZUxpYg0KPiA+ICsg IERlYnVnTGliDQo+ID4gKyAgRGVidWdQcmludEVycm9yTGV2ZWxMaWINCj4gPiArICBIb2JMaWIN Cj4gPiArICBJb0xpYg0KPiA+ICsgIE1lbW9yeUFsbG9jYXRpb25MaWINCj4gPiArICBQZWlTZXJ2 aWNlc0xpYg0KPiA+ICsNCj4gPiBkaWZmIC0tZ2l0DQo+ID4NCj4gYS9QbGF0Zm9ybS9JbnRlbC9T aW1pY3NPcGVuQm9hcmRQa2cvUG9saWN5L0xpYnJhcnkvU2lsaWNvblBvbGljeVVwZGF0ZUxpYi9T aWwNCj4gPiBpY29uUG9saWN5VXBkYXRlTGliLmluZg0KPiA+DQo+IGIvUGxhdGZvcm0vSW50ZWwv U2ltaWNzT3BlbkJvYXJkUGtnL1BvbGljeS9MaWJyYXJ5L1NpbGljb25Qb2xpY3lVcGRhdGVMaWIv U2lsDQo+ID4gaWNvblBvbGljeVVwZGF0ZUxpYi5pbmYNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0 NA0KPiA+IGluZGV4IDAwMDAwMDAwMDAuLmRhMTY1YWM5NDcNCj4gPiAtLS0gL2Rldi9udWxsDQo+ ID4gKysrDQo+ID4NCj4gYi9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvUG9saWN5 L0xpYnJhcnkvU2lsaWNvblBvbGljeVVwZGF0ZUxpYi9TaWwNCj4gPiBpY29uUG9saWN5VXBkYXRl TGliLmluZg0KPiA+IEBAIC0wLDAgKzEsMzUgQEANCj4gPiArIyMgQGZpbGUNCj4gPiArIw0KPiA+ ICsjIENvcHlyaWdodCAoYykgMjAxOCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNl cnZlZC4gPEJSPg0KPiA+ICsjDQo+ID4gKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0y LUNsYXVzZS1QYXRlbnQNCj4gPiArIw0KPiA+ICsjIw0KPiA+ICsNCj4gPiArW0RlZmluZXNdDQo+ ID4gKyAgSU5GX1ZFUlNJT04gICAgICAgICAgICAgICAgICAgID0gMHgwMDAxMDAwNQ0KPiA+ICsg IEJBU0VfTkFNRSAgICAgICAgICAgICAgICAgICAgICA9IFNpbGljb25Qb2xpY3lVcGRhdGVMaWIN Cj4gPiArICBGSUxFX0dVSUQgICAgICAgICAgICAgICAgICAgICAgPSA2RUE5NTg1Qy0zQzE1LTQ3 ZGEtOUZGQy0yNUU5RTRFQTREMEMNCj4gPiArICBNT0RVTEVfVFlQRSAgICAgICAgICAgICAgICAg ICAgPSBQRUlNDQo+ID4gKyAgVkVSU0lPTl9TVFJJTkcgICAgICAgICAgICAgICAgID0gMS4wDQo+ ID4gKyAgTElCUkFSWV9DTEFTUyAgICAgICAgICAgICAgICAgID0gU2lsaWNvblBvbGljeVVwZGF0 ZUxpYg0KPiA+ICsNCj4gPiArW1NvdXJjZXNdDQo+ID4gKyAgU2lsaWNvblBvbGljeVVwZGF0ZUxp Yi5jDQo+ID4gKw0KPiA+ICtbUGFja2FnZXNdDQo+ID4gKyAgTWRlUGtnL01kZVBrZy5kZWMNCj4g PiArICBNZGVNb2R1bGVQa2cvTWRlTW9kdWxlUGtnLmRlYw0KPiA+ICsNCj4gPiArW0xpYnJhcnlD bGFzc2VzXQ0KPiA+ICsgIEhvYkxpYg0KPiA+ICsgIElvTGliDQo+ID4gKyAgUGNkTGliDQo+ID4g Kw0KPiA+ICtbUGNkXQ0KPiA+ICsNCj4gPiArW0ZpeGVkUGNkXQ0KPiA+ICsNCj4gPiArW1BwaXNd DQo+ID4gKw0KPiA+ICtbR3VpZHNdDQo+ID4gZGlmZiAtLWdpdCBhL1BsYXRmb3JtL0ludGVsL1Np bWljc09wZW5Cb2FyZFBrZy9TaW1pY3NPcGVuQm9hcmRQa2cuZGVjDQo+ID4gYi9QbGF0Zm9ybS9J bnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cvU2ltaWNzT3BlbkJvYXJkUGtnLmRlYw0KPiA+IG5ldyBm aWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMDAwMC4uMTdjODdhY2E4Yw0KPiA+IC0t LSAvZGV2L251bGwNCj4gPiArKysgYi9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9hcmRQa2cv U2ltaWNzT3BlbkJvYXJkUGtnLmRlYw0KPiA+IEBAIC0wLDAgKzEsMTY4IEBADQo+ID4gKyMjIEBm aWxlDQo+ID4gKyMgIEVGSS9GcmFtZXdvcmsgU2ltaWNzIFg1OCBwbGF0Zm9ybQ0KPiA+ICsjDQo+ ID4gKyMgQ29weXJpZ2h0IChjKSAyMDE4IEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJl c2VydmVkLiA8QlI+DQo+ID4gKyMNCj4gPiArIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNE LTItQ2xhdXNlLVBhdGVudA0KPiA+ICsjDQo+ID4gKyMjDQo+ID4gKw0KPiA+ICtbRGVmaW5lc10N Cj4gPiArICBERUNfU1BFQ0lGSUNBVElPTiAgICAgICAgICAgICAgPSAweDAwMDEwMDA1DQo+ID4g KyAgUEFDS0FHRV9OQU1FICAgICAgICAgICAgICAgICAgID0gU2ltaWNzWDU4UGtnDQo+ID4gKyAg UEFDS0FHRV9HVUlEICAgICAgICAgICAgICAgICAgID0gRTZBMDNFMEQtNTk0NC00ZGM2LTkyOTIt MDkwRDYwOUVERDNBDQo+ID4gKyAgUEFDS0FHRV9WRVJTSU9OICAgICAgICAgICAgICAgID0gMC4x DQo+ID4gKw0KPiA+ICtbSW5jbHVkZXNdDQo+ID4gKyAgSW5jbHVkZQ0KPiA+ICsNCj4gPiArW0d1 aWRzXQ0KPiA+ICsgIGdTaW1pY3NYNThQa2dUb2tlblNwYWNlR3VpZCAgID0gezB4NWIyNzZkMjAs IDB4MzdkMCwgMHg0YWYwLCB7MHg4ZCwNCj4gPiAweDA0LCAweDQ3LCAweDkxLCAweDJiLCAweDdj LCAweDFkLCAweDQ0fX0NCj4gPiArICBnU2ltaWNzWDU4UGxhdGZvcm1Db25maWdHdWlkICA9IHsw eGVlZDM1ZjU3LCAweDRmZjIsIDB4NDI0NCwgezB4YjgsDQo+IDB4M2EsDQo+ID4gMHhlYSwgMHg3 MSwgMHg1ZiwgMHhkMywgMHg1OSwgMHhhNX19DQo+ID4gKw0KPiA+ICtbUHJvdG9jb2xzXQ0KPiA+ ICsgIGdFZmlMZWdhY3k4MjU5UHJvdG9jb2xHdWlkICAgICAgICAgID0gezB4MzgzMjFkYmEsIDB4 NGZlMCwgMHg0ZTE3LCB7MHg4YSwNCj4gPiAweGVjLCAweDQxLCAweDMwLCAweDU1LCAweGVhLCAw eGVkLCAweGMxfX0NCj4gPiArICBnRWZpSXNhQWNwaVByb3RvY29sR3VpZCAgICAgICAgICAgICA9 IHsweDY0YTg5MmRjLCAweDU1NjEsIDB4NDUzNiwgezB4OTIsDQo+IDB4YzcsDQo+ID4gMHg3OSwg MHg5YiwgMHhmYywgMHgxOCwgMHgzMywgMHg1NX19DQo+ID4gKyAgZ0VmaUlzYUlvUHJvdG9jb2xH dWlkICAgICAgICAgICAgICAgPSB7MHg3ZWUyYmQ0NCwgMHgzZGEwLCAweDExZDQsIHsweDlhLCAw eDM4LA0KPiA+IDB4MCwgMHg5MCwgMHgyNywgMHgzZiwgMHhjMSwgMHg0ZH19DQo+ID4gKw0KPiA+ ICtbUGNkc0ZpeGVkQXRCdWlsZF0NCj4gPiArICBnU2ltaWNzWDU4UGtnVG9rZW5TcGFjZUd1aWQu UGNkU2ltaWNzUGVpTWVtRnZCYXNlfDB4MHxVSU5UMzJ8MA0KPiA+ICsgIGdTaW1pY3NYNThQa2dU b2tlblNwYWNlR3VpZC5QY2RTaW1pY3NQZWlNZW1GdlNpemV8MHgwfFVJTlQzMnwxDQo+ID4gKw0K PiA+IGdTaW1pY3NYNThQa2dUb2tlblNwYWNlR3VpZC5QY2RTaW1pY3NEeGVNZW1GdkJhc2V8MHgw fFVJTlQzMnwweDE1DQo+ID4gKw0KPiBnU2ltaWNzWDU4UGtnVG9rZW5TcGFjZUd1aWQuUGNkU2lt aWNzRHhlTWVtRnZTaXplfDB4MHxVSU5UMzJ8MHgxNg0KPiA+ICsNCj4gPiArICAjVE9ETzogUmVt b3ZlIHRoZXNlIHR3byB3aGVuIHdlIGludGVncmF0ZSBuZXcgUGxhdGZvcm1QZWkNCj4gPiArDQo+ ID4NCj4gZ1NpbWljc1g1OFBrZ1Rva2VuU3BhY2VHdWlkLlBjZFNpbWljc01lbUZ2QmFzZXwweDAw ODAwMDAwfFVJTlQzMnwyDQo+ID4gKw0KPiA+DQo+IGdTaW1pY3NYNThQa2dUb2tlblNwYWNlR3Vp ZC5QY2RTaW1pY3NNZW1GdlNpemV8MHgwMDUwMDAwMHxVSU5UMzJ8Mw0KPiA+ICsNCj4gPiArICAj IyBUaGUgZm9sbG93aW5nIHNldHRpbmcgY29udHJvbHMgaG93IG1hbnkgbWVnYWJ5dGVzIHdlIGNv bmZpZ3VyZSBhcw0KPiBUU0VHDQo+ID4gb24NCj4gPiArICAjICBYNTgsIGZvciBTTVJBTSBwdXJw b3Nlcy4gUGVybWl0dGVkIHZhbHVlcyBhcmU6IDEsIDIsIDguIE90aGVyIHZhbHVlcw0KPiA+IGNh dXNlDQo+ID4gKyAgIyAgdW5kZWZpbmVkIGJlaGF2aW9yLg0KPiA+ICsgICMNCj4gPiArICAjICBU aGlzIFBDRCBpcyBvbmx5IGNvbnN1bHRlZCBpZiBQY2RTbW1TbXJhbVJlcXVpcmUgaXMgVFJVRSAo c2VlIGJlbG93KS4NCj4gPiArICBnU2ltaWNzWDU4UGtnVG9rZW5TcGFjZUd1aWQuUGNkWDU4VHNl Z01ieXRlc3w4fFVJTlQ4fDB4MjANCj4gPiArDQo+ID4gKw0KPiA+DQo+IGdTaW1pY3NYNThQa2dU b2tlblNwYWNlR3VpZC5QY2RTaW1pY3NGbGFzaE52U3RvcmFnZUV2ZW50TG9nQmFzZXwweDB8VUkN Cj4gPiBOVDMyfDB4OA0KPiA+ICsNCj4gPg0KPiBnU2ltaWNzWDU4UGtnVG9rZW5TcGFjZUd1aWQu UGNkU2ltaWNzRmxhc2hOdlN0b3JhZ2VFdmVudExvZ1NpemV8MHgwfFVJDQo+ID4gTlQzMnwweDkN Cj4gPiArDQo+IGdTaW1pY3NYNThQa2dUb2tlblNwYWNlR3VpZC5QY2RTaW1pY3NGaXJtd2FyZUZk U2l6ZXwweDB8VUlOVDMyfDB4YQ0KPiA+ICsNCj4gZ1NpbWljc1g1OFBrZ1Rva2VuU3BhY2VHdWlk LlBjZFNpbWljc0Zpcm13YXJlQmxvY2tTaXplfDB8VUlOVDMyfDB4Yg0KPiA+ICsNCj4gPg0KPiBn U2ltaWNzWDU4UGtnVG9rZW5TcGFjZUd1aWQuUGNkU2ltaWNzRmxhc2hOdlN0b3JhZ2VWYXJpYWJs ZUJhc2V8MHgwfFVJDQo+ID4gTlQzMnwweGMNCj4gPiArDQo+ID4NCj4gZ1NpbWljc1g1OFBrZ1Rv a2VuU3BhY2VHdWlkLlBjZFNpbWljc0ZsYXNoTnZTdG9yYWdlRnR3U3BhcmVCYXNlfDB4MHxVSQ0K PiA+IE5UMzJ8MHhkDQo+ID4gKw0KPiA+DQo+IGdTaW1pY3NYNThQa2dUb2tlblNwYWNlR3VpZC5Q Y2RTaW1pY3NGbGFzaE52U3RvcmFnZUZ0d1dvcmtpbmdCYXNlfDB4MA0KPiA+IHxVSU5UMzJ8MHhl DQo+ID4gKyAgZ1NpbWljc1g1OFBrZ1Rva2VuU3BhY2VHdWlkLlBjZFNpbWljc0ZkQmFzZUFkZHJl c3N8MHgwfFVJTlQzMnwweGYNCj4gPiArDQo+ID4NCj4gZ1NpbWljc1g1OFBrZ1Rva2VuU3BhY2VH dWlkLlBjZFNpbWljc1NlY1BhZ2VUYWJsZXNCYXNlfDB4MHxVSU5UMzJ8MHgxDQo+ID4gMQ0KPiA+ ICsNCj4gPg0KPiBnU2ltaWNzWDU4UGtnVG9rZW5TcGFjZUd1aWQuUGNkU2ltaWNzU2VjUGFnZVRh Ymxlc1NpemV8MHgwfFVJTlQzMnwweDENCj4gPiAyDQo+ID4gKw0KPiA+DQo+IGdTaW1pY3NYNThQ a2dUb2tlblNwYWNlR3VpZC5QY2RTaW1pY3NTZWNQZWlUZW1wUmFtQmFzZXwweDB8VUlOVDMyfDAN Cj4gPiB4MTMNCj4gPiArDQo+ID4NCj4gZ1NpbWljc1g1OFBrZ1Rva2VuU3BhY2VHdWlkLlBjZFNp bWljc1NlY1BlaVRlbXBSYW1TaXplfDB4MHxVSU5UMzJ8MHgNCj4gPiAxNA0KPiA+ICsNCj4gPg0K PiBnU2ltaWNzWDU4UGtnVG9rZW5TcGFjZUd1aWQuUGNkU2ltaWNzTG9ja0JveFN0b3JhZ2VCYXNl fDB4MHxVSU5UMzJ8MHgNCj4gPiAxOA0KPiA+ICsNCj4gPg0KPiBnU2ltaWNzWDU4UGtnVG9rZW5T cGFjZUd1aWQuUGNkU2ltaWNzTG9ja0JveFN0b3JhZ2VTaXplfDB4MHxVSU5UMzJ8MHgNCj4gPiAx OQ0KPiA+ICsNCj4gPg0KPiBnU2ltaWNzWDU4UGtnVG9rZW5TcGFjZUd1aWQuUGNkR3VpZGVkRXh0 cmFjdEhhbmRsZXJUYWJsZVNpemV8MHgwfFVJTlQzDQo+ID4gMnwweDFhDQo+ID4gKw0KPiA+DQo+ IGdTaW1pY3NYNThQa2dUb2tlblNwYWNlR3VpZC5QY2RTaW1pY3NEZWNvbXByZXNzaW9uU2NyYXRj aEVuZHwweDB8VUlOVA0KPiA+IDMyfDB4MWYNCj4gPiArDQo+ID4gK1tQY2RzRHluYW1pYywgUGNk c0R5bmFtaWNFeF0NCj4gPiArDQo+ID4gKyAgIyBUT0RPOiBpbnZlc3RpZ2F0ZSB3aGV0aGVyIG5l eHQgdHdvIFBjZHMgYXJlIG5lZWRlZA0KPiA+ICsgIGdTaW1pY3NYNThQa2dUb2tlblNwYWNlR3Vp ZC5QY2RFbXVWYXJpYWJsZUV2ZW50fDB8VUlOVDY0fDB4MjgNCj4gPiArDQo+ID4NCj4gZ1NpbWlj c1g1OFBrZ1Rva2VuU3BhY2VHdWlkLlBjZE92bWZGbGFzaFZhcmlhYmxlc0VuYWJsZXxGQUxTRXxC T09MRUENCj4gPiBOfDB4MTANCj4gPiArDQo+ID4NCj4gZ1NpbWljc1g1OFBrZ1Rva2VuU3BhY2VH dWlkLlBjZFNpbWljc1g1OEhvc3RCcmlkZ2VQY2lEZXZJZHwwfFVJTlQxNnwwDQo+ID4geDFiDQo+ ID4gKw0KPiA+ICsgICMjIFRoZSBJTyBwb3J0IGFwZXJ0dXJlIHNoYXJlZCBieSBhbGwgUENJIHJv b3QgYnJpZGdlcy4NCj4gPiArICAjDQo+ID4gKyAgZ1NpbWljc1g1OFBrZ1Rva2VuU3BhY2VHdWlk LlBjZFBjaUlvQmFzZXwweDB8VUlOVDY0fDB4MjINCj4gPiArICBnU2ltaWNzWDU4UGtnVG9rZW5T cGFjZUd1aWQuUGNkUGNpSW9TaXplfDB4MHxVSU5UNjR8MHgyMw0KPiA+ICsNCj4gPiArICAjIyBU aGUgMzItYml0IE1NSU8gYXBlcnR1cmUgc2hhcmVkIGJ5IGFsbCBQQ0kgcm9vdCBicmlkZ2VzLg0K PiA+ICsgICMNCj4gPiArICBnU2ltaWNzWDU4UGtnVG9rZW5TcGFjZUd1aWQuUGNkUGNpTW1pbzMy QmFzZXwweDB8VUlOVDY0fDB4MjQNCj4gPiArICBnU2ltaWNzWDU4UGtnVG9rZW5TcGFjZUd1aWQu UGNkUGNpTW1pbzMyU2l6ZXwweDB8VUlOVDY0fDB4MjUNCj4gPiArDQo+ID4gKyAgIyMgVGhlIDY0 LWJpdCBNTUlPIGFwZXJ0dXJlIHNoYXJlZCBieSBhbGwgUENJIHJvb3QgYnJpZGdlcy4NCj4gPiAr ICAjDQo+ID4gKyAgZ1NpbWljc1g1OFBrZ1Rva2VuU3BhY2VHdWlkLlBjZFBjaU1taW82NEJhc2V8 MHgwfFVJTlQ2NHwweDI2DQo+ID4gKyAgZ1NpbWljc1g1OFBrZ1Rva2VuU3BhY2VHdWlkLlBjZFBj aU1taW82NFNpemV8MHgwfFVJTlQ2NHwweDI3DQo+ID4gKw0KPiA+ICtbUGNkc0ZlYXR1cmVGbGFn XQ0KPiA+ICsgICMjIFRoaXMgZmVhdHVyZSBmbGFnIGVuYWJsZXMgU01NL1NNUkFNIHN1cHBvcnQu IE5vdGUgdGhhdCBpdCBhbHNvDQo+IHJlcXVpcmVzDQo+ID4gKyAgIyAgc3VjaCBzdXBwb3J0IGZy b20gdGhlIHVuZGVybHlpbmcgUUVNVSBpbnN0YW5jZTsgaWYgdGhhdCBzdXBwb3J0IGlzIG5vdA0K PiA+ICsgICMgIHByZXNlbnQsIHRoZSBmaXJtd2FyZSB3aWxsIHJlamVjdCBjb250aW51aW5nIGFm dGVyIGEgY2VydGFpbiBwb2ludC4NCj4gPiArICAjDQo+ID4gKyAgIyAgVGhlIGZsYWcgYWxzbyBh Y3RzIGFzIGEgZ2VuZXJhbCAic2VjdXJpdHkgc3dpdGNoIjsgd2hlbiBUUlVFLCBtYW55DQo+ID4g KyAgIyAgY29tcG9uZW50cyB3aWxsIGNoYW5nZSBiZWhhdmlvciwgd2l0aCB0aGUgZ29hbCBvZiBw cmV2ZW50aW5nIGEgbWFsaWNpb3VzDQo+ID4gKyAgIyAgcnVudGltZSBPUyBmcm9tIHRhbXBlcmlu ZyB3aXRoIGZpcm13YXJlIHN0cnVjdHVyZXMgKHNwZWNpYWwgbWVtb3J5DQo+ID4gcmFuZ2VzDQo+ ID4gKyAgIyAgdXNlZCBieSBPVk1GLCB0aGUgdmFyc3RvcmUgcGZsYXNoIGNoaXAsIExvY2tCb3gg ZXRjKS4NCj4gPiArDQo+ID4NCj4gZ1NpbWljc1g1OFBrZ1Rva2VuU3BhY2VHdWlkLlBjZFNtbVNt cmFtUmVxdWlyZXxGQUxTRXxCT09MRUFOfDB4MQ0KPiA+IGUNCj4gPiArDQo+ID4gKw0KPiA+ICtb UGNkc0ZpeGVkQXRCdWlsZCwgUGNkc0R5bmFtaWMsIFBjZHNEeW5hbWljRXgsIFBjZHNQYXRjaGFi bGVJbk1vZHVsZV0NCj4gPiArICAjIyBQY2Q4MjU5TGVnYWN5TW9kZU1hc2sgZGVmaW5lcyB0aGUg ZGVmYXVsdCBtYXNrIHZhbHVlIGZvciBwbGF0Zm9ybS4NCj4gPiBUaGlzIHZhbHVlIGlzIGRldGVy bWluZWQ8QlI+PEJSPg0KPiA+ICsgICMgIDEpIElmIHBsYXRmb3JtIG9ubHkgc3VwcG9ydCBwdXJl IFVFRkksIHZhbHVlIHNob3VsZCBiZSBzZXQgdG8gMHhGRkZGIG9yDQo+ID4gMHhGRkZFOw0KPiA+ ICsgICMgICAgIEJlY2F1c2Ugb25seSBjbG9jayBpbnRlcnJ1cHQgaXMgYWxsb3dlZCBpbiBsZWdh Y3kgbW9kZSBpbiBwdXJlIFVFRkkNCj4gPiBwbGF0Zm9ybS48QlI+DQo+ID4gKyAgIyAgMikgSWYg cGxhdGZvcm0gaW5zdGFsbCBDU00gYW5kIHVzZSB0aHVuayBtb2R1bGU6PEJSPg0KPiA+ICsgICMg ICAgIGEpIElmIHRodW5rIGNhbGwgcHJvdmlkZWQgYnkgQ1NNIGJpbmFyeSByZXF1aXJlcyBzb21l IGxlZ2FjeSBpbnRlcnJ1cHQNCj4gPiBzdXBwb3J0LCB0aGUgY29ycmVzcG9uZGluZyBiaXQNCj4g PiArICAjICAgICAgICBzaG91bGQgYmUgb3BlbmVkIGFzIDAuPEJSPg0KPiA+ICsgICMgICAgICAg IEZvciBleGFtcGxlLCBpZiBrZXlib2FyZCBpbnRlcmZhY2VzIHByb3ZpZGVkIENTTSBiaW5hcnkg dXNlIGxlZ2FjeQ0KPiA+IGtleWJvYXJkIGludGVycnVwdCBpbiA4MjU5IGJpdCAxLCB0aGVuDQo+ ID4gKyAgIyAgICAgICAgdGhlIHZhbHVlIHNob3VsZCBiZSBzZXQgdG8gMHhGRkZDLjxCUj4NCj4g PiArICAjICAgICBiKSBJZiBhbGwgdGh1bmsgY2FsbCBwcm92aWVkIGJ5IENTTSBiaW5hcnkgZG8g bm90IHJlcXVpcmUgbGVnYWN5IGludGVycnVwdA0KPiA+IHN1cHBvcnQsIHZhbHVlIHNob3VsZCBi ZSBzZXQNCj4gPiArICAjICAgICAgICB0byAweEZGRkYgb3IgMHhGRkZFLjxCUj4NCj4gPiArICAj DQo+ID4gKyAgIyAgVGhlIGRlZmF1bHQgdmFsdWUgb2YgbGVnYWN5IG1vZGUgbWFzayBjb3VsZCBi ZSBjaGFuZ2VkIGJ5DQo+ID4gRUZJX0xFR0FDWV84MjU5X1BST1RPQ09MLT5TZXRNYXNrKCkuIEJ1 dCBpdCBpcyByYXJlbHkNCj4gPiArICAjICBuZWVkIGNoYW5nZSBpdCBleGNlcHQgc29tZSBzcGVj aWFsIGNhc2VzIHN1Y2ggYXMgd2hlbiBpbml0aWFsaXppbmcgdGhlDQo+IENTTQ0KPiA+IGJpbmFy eSwgaXQgc2hvdWxkIGJlIHNldCB0byAweEZGRkYgdG8NCj4gPiArICAjICBtYXNrIGFsbCBsZWdh Y3kgaW50ZXJydXB0LiBQbGVhc2UgcmVzdG9yZSB0aGUgb3JpZ2luYWwgbGVnYWN5IG1hc2sgdmFs dWUgaWYNCj4gPiBjaGFuZ2luZyBpcyBtYWRlIGZvciB0aGVzZSBzcGVjaWFsIGNhc2UuPEJSPg0K PiA+ICsgICMgQFByb21wdCA4MjU5IExlZ2FjeSBNb2RlIG1hc2suDQo+ID4gKw0KPiA+DQo+IGdQ Y0F0Q2hpcHNldFBrZ1Rva2VuU3BhY2VHdWlkLlBjZDgyNTlMZWdhY3lNb2RlTWFza3wweEZGRkZ8 VUlOVDE2fA0KPiA+IDB4MDAwMDAwMDENCj4gPiArDQo+ID4gKyAgIyMgUGNkODI1OUxlZ2FjeU1v ZGVFZGdlTGV2ZWwgZGVmaW5lcyB0aGUgZGVmYXVsdCBlZGdlIGxldmVsIGZvciBsZWdhY3kNCj4g PiBtb2RlJ3MgaW50ZXJycnVwdCBjb250cm9sbGVyLg0KPiA+ICsgICMgIEZvciB0aGUgY29ycmVz cG9uZGluZyBiaXRzLCAwID0gRWRnZSB0cmlnZ2VyZWQgYW5kIDEgPSBMZXZlbCB0cmlnZ2VyZWQu DQo+ID4gKyAgIyBAUHJvbXB0IDgyNTkgTGVnYWN5IE1vZGUgZWRnZSBsZXZlbC4NCj4gPiArDQo+ ID4NCj4gZ1BjQXRDaGlwc2V0UGtnVG9rZW5TcGFjZUd1aWQuUGNkODI1OUxlZ2FjeU1vZGVFZGdl TGV2ZWx8MHgwMDAwfFVJTg0KPiA+IFQxNnwweDAwMDAwMDAyDQo+ID4gKw0KPiA+ICsgICMjIElu ZGljYXRlcyBpZiB3ZSBuZWVkIGVuYWJsZSBJc2FBY3BpQ29tMSBkZXZpY2UuPEJSPjxCUj4NCj4g PiArICAjICAgVFJVRSAgLSBFbmFibGVzIElzYUFjcGlDb20xIGRldmljZS48QlI+DQo+ID4gKyAg IyAgIEZBTFNFIC0gRG9lc24ndCBlbmFibGUgSXNhQWNwaUNvbTEgZGV2aWNlLjxCUj4NCj4gPiAr ICAjIEBQcm9tcHQgRW5hYmxlIElzYUFjcGlDb20xIGRldmljZS4NCj4gPiArDQo+ID4NCj4gZ1Bj QXRDaGlwc2V0UGtnVG9rZW5TcGFjZUd1aWQuUGNkSXNhQWNwaUNvbTFFbmFibGV8VFJVRXxCT09M RUFOfDB4MA0KPiA+IDAwMDAwMDMNCj4gPiArDQo+ID4gKyAgIyMgSW5kaWNhdGVzIGlmIHdlIG5l ZWQgZW5hYmxlIElzYUFjcGlDb20yIGRldmljZS48QlI+PEJSPg0KPiA+ICsgICMgICBUUlVFICAt IEVuYWJsZXMgSXNhQWNwaUNvbTIgZGV2aWNlLjxCUj4NCj4gPiArICAjICAgRkFMU0UgLSBEb2Vz bid0IGVuYWJsZSBJc2FBY3BpQ29tMiBkZXZpY2UuPEJSPg0KPiA+ICsgICMgQFByb21wdCBFbmFi bGUgSXNhQWNwaUNvbTEyIGRldmljZS4NCj4gPiArDQo+ID4NCj4gZ1BjQXRDaGlwc2V0UGtnVG9r ZW5TcGFjZUd1aWQuUGNkSXNhQWNwaUNvbTJFbmFibGV8VFJVRXxCT09MRUFOfDB4MA0KPiA+IDAw MDAwMDQNCj4gPiArDQo+ID4gKyAgIyMgSW5kaWNhdGVzIGlmIHdlIG5lZWQgZW5hYmxlIElzYUFj cGlQczJLZXlib2FyZCBkZXZpY2UuPEJSPjxCUj4NCj4gPiArICAjICAgVFJVRSAgLSBFbmFibGVz IElzYUFjcGlQczJLZXlib2FyZCBkZXZpY2UuPEJSPg0KPiA+ICsgICMgICBGQUxTRSAtIERvZXNu J3QgZW5hYmxlIElzYUFjcGlQczJLZXlib2FyZCBkZXZpY2UuPEJSPg0KPiA+ICsgICMgQFByb21w dCBFbmFibGUgSXNhQWNwaVBzMktleWJvYXJkIGRldmljZS4NCj4gPiArDQo+ID4NCj4gZ1BjQXRD aGlwc2V0UGtnVG9rZW5TcGFjZUd1aWQuUGNkSXNhQWNwaVBzMktleWJvYXJkRW5hYmxlfFRSVUV8 Qk9PTEUNCj4gPiBBTnwweDAwMDAwMDA1DQo+ID4gKw0KPiA+ICsgICMjIEluZGljYXRlcyBpZiB3 ZSBuZWVkIGVuYWJsZSBJc2FBY3BpUHMyTW91c2UgZGV2aWNlLjxCUj48QlI+DQo+ID4gKyAgIyAg IFRSVUUgIC0gRW5hYmxlcyBJc2FBY3BpUHMyTW91c2UgZGV2aWNlLjxCUj4NCj4gPiArICAjICAg RkFMU0UgLSBEb2Vzbid0IGVuYWJsZSBJc2FBY3BpUHMyTW91c2UgZGV2aWNlLjxCUj4NCj4gPiAr ICAjIEBQcm9tcHQgRW5hYmxlIElzYUFjcGlQczJNb3VzZSBkZXZpY2UuDQo+ID4gKw0KPiA+DQo+ IGdQY0F0Q2hpcHNldFBrZ1Rva2VuU3BhY2VHdWlkLlBjZElzYUFjcGlQczJNb3VzZUVuYWJsZXxU UlVFfEJPT0xFQU4NCj4gPiB8MHgwMDAwMDAwNg0KPiA+ICsNCj4gPiArICAjIyBJbmRpY2F0ZXMg aWYgd2UgbmVlZCBlbmFibGUgSXNhQWNwaUZsb3BweUEgZGV2aWNlLjxCUj48QlI+DQo+ID4gKyAg IyAgIFRSVUUgIC0gRW5hYmxlcyBJc2FBY3BpRmxvcHB5QSBkZXZpY2UuPEJSPg0KPiA+ICsgICMg ICBGQUxTRSAtIERvZXNuJ3QgZW5hYmxlIElzYUFjcGlGbG9wcHlBIGRldmljZS48QlI+DQo+ID4g KyAgIyBAUHJvbXB0IEVuYWJsZSBJc2FBY3BpRmxvcHB5QSBkZXZpY2UuDQo+ID4gKw0KPiA+DQo+ IGdQY0F0Q2hpcHNldFBrZ1Rva2VuU3BhY2VHdWlkLlBjZElzYUFjcGlGbG9wcHlBRW5hYmxlfFRS VUV8Qk9PTEVBTnwwDQo+ID4geDAwMDAwMDA3DQo+ID4gKw0KPiA+ICsgICMjIEluZGljYXRlcyBp ZiB3ZSBuZWVkIGVuYWJsZSBJc2FBY3BpRmxvcHB5QiBkZXZpY2UuPEJSPjxCUj4NCj4gPiArICAj ICAgVFJVRSAgLSBFbmFibGVzIElzYUFjcGlGbG9wcHlCIGRldmljZS48QlI+DQo+ID4gKyAgIyAg IEZBTFNFIC0gRG9lc24ndCBlbmFibGUgSXNhQWNwaUZsb3BweUIgZGV2aWNlLjxCUj4NCj4gPiAr ICAjIEBQcm9tcHQgRW5hYmxlIElzYUFjcGlGbG9wcHlCIGRldmljZS4NCj4gPiArDQo+ID4NCj4g Z1BjQXRDaGlwc2V0UGtnVG9rZW5TcGFjZUd1aWQuUGNkSXNhQWNwaUZsb3BweUJFbmFibGV8VFJV RXxCT09MRUFOfDANCj4gPiB4MDAwMDAwMDgNCj4gPiArDQo+ID4gK1tQY2RzRml4ZWRBdEJ1aWxk LCBQY2RzUGF0Y2hhYmxlSW5Nb2R1bGVdDQo+ID4gKyAgIyMgRkZTIGZpbGVuYW1lIHRvIGZpbmQg dGhlIHNoZWxsIGFwcGxpY2F0aW9uLg0KPiA+ICsgICMgQFByb21wdCBGRlMgTmFtZSBvZiBTaGVs bCBBcHBsaWNhdGlvbg0KPiA+ICsgIGdTaW1pY3NYNThQa2dUb2tlblNwYWNlR3VpZC5QY2RTaGVs bEZpbGV8eyAweDgzLCAweEE1LCAweDA0LCAweDdDLA0KPiAweDNFLA0KPiA+IDB4OUUsIDB4MUMs IDB4NEYsIDB4QUQsIDB4NjUsIDB4RTAsIDB4NTIsIDB4NjgsIDB4RDAsIDB4QjQsIDB4RDENCj4g PiB9fFZPSUQqfDB4NDAwMDAwMDQNCj4gPiArDQo+ID4gKyAgIyMgSVNBIEJ1cyBmZWF0dXJlcyB0 byBzdXBwb3J0IERNQSwgU2xhdmVETUEgYW5kIElTQSBNZW1vcnkuDQo+IDxCUj48QlI+DQo+ID4g KyAgIyAgQklUMCBpbmRpY2F0ZXMgaWYgRE1BIGlzIHN1cHBvcnRlZDxCUj4NCj4gPiArICAjICBC SVQxIGluZGljYXRlcyBpZiBvbmx5IHNsYXZlIERNQSBpcyBzdXBwb3J0ZWQ8QlI+DQo+ID4gKyAg IyAgQklUMiBpbmRpY2F0ZXMgaWYgSVNBIG1lbW9yeSBpcyBzdXBwb3J0ZWQ8QlI+DQo+ID4gKyAg IyAgT3RoZXIgQklUcyBhcmUgcmVzZXZlZCBhbmQgbXVzdCBiZSB6ZXJvLg0KPiA+ICsgICMgIElm IG1vcmUgdGhhbiBvbmUgZmVhdHVyZXMgYXJlIHN1cHBvcnRlZCwgdGhlIGRpZmZlcmVudCBCSVQg d2lsbCBiZSBlbmFibGVkDQo+ID4gYXQgdGhlIHNhbWUgdGltZS4NCj4gPiArICAjIEBQcm9tcHQg SVNBIEJ1cyBGZWF0dXJlcw0KPiA+ICsgICMgQEV4cHJlc3Npb24gMHg4MDAwMDAwMiB8DQo+ID4g KGdTaW1pY3NYNThQa2dUb2tlblNwYWNlR3VpZC5QY2RJc2FCdXNTdXBwb3J0ZWRGZWF0dXJlcyAm IDB4RjgpID09IDANCj4gPiArDQo+ID4NCj4gZ1NpbWljc1g1OFBrZ1Rva2VuU3BhY2VHdWlkLlBj ZElzYUJ1c1N1cHBvcnRlZEZlYXR1cmVzfDB4MDV8VUlOVDh8MHgwDQo+ID4gMDAxMDA0MA0KPiA+ IFwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQ0KPiA+IGRpZmYgLS1naXQNCj4gPg0KPiBhL1Bs YXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9TbWJpb3NQbGF0Zm9ybUR4ZS9TbWJpb3NQ bGF0Zm9ybUR4ZQ0KPiA+IC5oDQo+ID4NCj4gYi9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NPcGVuQm9h cmRQa2cvU21iaW9zUGxhdGZvcm1EeGUvU21iaW9zUGxhdGZvcm1EeGUNCj4gPiAuaA0KPiA+IG5l dyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMDAwMC4uMzhhNzFhMzUyNw0KPiA+ IC0tLSAvZGV2L251bGwNCj4gPiArKysNCj4gPg0KPiBiL1BsYXRmb3JtL0ludGVsL1NpbWljc09w ZW5Cb2FyZFBrZy9TbWJpb3NQbGF0Zm9ybUR4ZS9TbWJpb3NQbGF0Zm9ybUR4ZQ0KPiA+IC5oDQo+ ID4gQEAgLTAsMCArMSwzOCBAQA0KPiA+ICsvKiogQGZpbGUNCj4gPiArICBUaGlzIGRyaXZlciBp bnN0YWxscyBTTUJJT1MgaW5mb3JtYXRpb24gZm9yIE9WTUYNCj4gPiArDQo+ID4gKyAgQ29weXJp Z2h0IChjKSAyMDExLCBCZWkgR3VhbiA8Z2J0anU4NUBnbWFpbC5jb20+DQo+ID4gKyAgQ29weXJp Z2h0IChjKSAyMDExLCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+ DQo+ID4gKw0KPiA+ICsgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0 ZW50DQo+ID4gKyoqLw0KPiA+ICsNCj4gPiArI2lmbmRlZiBfU01CSU9TX1BMQVRGT1JNX0RYRV9I Xw0KPiA+ICsjZGVmaW5lIF9TTUJJT1NfUExBVEZPUk1fRFhFX0hfDQo+ID4gKw0KPiA+ICsjaW5j bHVkZSA8UGlEeGUuaD4NCj4gPiArDQo+ID4gKyNpbmNsdWRlIDxQcm90b2NvbC9TbWJpb3MuaD4N Cj4gPiArI2luY2x1ZGUgPEluZHVzdHJ5U3RhbmRhcmQvU21CaW9zLmg+DQo+ID4gKyNpbmNsdWRl IDxMaWJyYXJ5L0RlYnVnTGliLmg+DQo+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L0Jhc2VMaWIuaD4N Cj4gPiArI2luY2x1ZGUgPExpYnJhcnkvQmFzZU1lbW9yeUxpYi5oPg0KPiA+ICsjaW5jbHVkZSA8 TGlicmFyeS9VZWZpQm9vdFNlcnZpY2VzVGFibGVMaWIuaD4NCj4gPiArI2luY2x1ZGUgPExpYnJh cnkvTWVtb3J5QWxsb2NhdGlvbkxpYi5oPg0KPiA+ICsjaW5jbHVkZSA8TGlicmFyeS9Jb0xpYi5o Pg0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgVmFsaWRhdGVzIHRoZSBTTUJJT1MgZW50cnkgcG9p bnQgc3RydWN0dXJlDQo+ID4gKw0KPiA+ICsgIEBwYXJhbSAgRW50cnlQb2ludFN0cnVjdHVyZSAg U01CSU9TIGVudHJ5IHBvaW50IHN0cnVjdHVyZQ0KPiA+ICsNCj4gPiArICBAcmV0dmFsIFRSVUUg ICBUaGUgZW50cnkgcG9pbnQgc3RydWN0dXJlIGlzIHZhbGlkDQo+ID4gKyAgQHJldHZhbCBGQUxT RSAgVGhlIGVudHJ5IHBvaW50IHN0cnVjdHVyZSBpcyBub3QgdmFsaWQNCj4gPiArDQo+ID4gKyoq Lw0KPiA+ICtCT09MRUFODQo+ID4gK0lzRW50cnlQb2ludFN0cnVjdHVyZVZhbGlkICgNCj4gPiAr ICBJTiBTTUJJT1NfVEFCTEVfRU5UUllfUE9JTlQgICpFbnRyeVBvaW50U3RydWN0dXJlDQo+ID4g KyAgKTsNCj4gPiArDQo+ID4gKyNlbmRpZg0KPiA+IGRpZmYgLS1naXQNCj4gPg0KPiBhL1BsYXRm b3JtL0ludGVsL1NpbWljc09wZW5Cb2FyZFBrZy9TbWJpb3NQbGF0Zm9ybUR4ZS9TbWJpb3NQbGF0 Zm9ybUR4ZQ0KPiA+IC5pbmYNCj4gPg0KPiBiL1BsYXRmb3JtL0ludGVsL1NpbWljc09wZW5Cb2Fy ZFBrZy9TbWJpb3NQbGF0Zm9ybUR4ZS9TbWJpb3NQbGF0Zm9ybUR4ZQ0KPiA+IC5pbmYNCj4gPiBu ZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAwMDAuLjZhZGFmMGJlYjcNCj4g PiAtLS0gL2Rldi9udWxsDQo+ID4gKysrDQo+ID4NCj4gYi9QbGF0Zm9ybS9JbnRlbC9TaW1pY3NP cGVuQm9hcmRQa2cvU21iaW9zUGxhdGZvcm1EeGUvU21iaW9zUGxhdGZvcm1EeGUNCj4gPiAuaW5m DQo+ID4gQEAgLTAsMCArMSw1MSBAQA0KPiA+ICsjIyBAZmlsZQ0KPiA+ICsjICBUaGlzIGRyaXZl ciBpbnN0YWxscyBTTUJJT1MgaW5mb3JtYXRpb24gZm9yIE9WTUYNCj4gPiArIw0KPiA+ICsjICBD b3B5cmlnaHQgKGMpIDIwMTEsIEJlaSBHdWFuIDxnYnRqdTg1QGdtYWlsLmNvbT4NCj4gPiArIyAg Q29weXJpZ2h0IChjKSAyMDExIC0gMjAxOCwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMg cmVzZXJ2ZWQuPEJSPg0KPiA+ICsjDQo+ID4gKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJT RC0yLUNsYXVzZS1QYXRlbnQNCj4gPiArIw0KPiA+ICsjIw0KPiA+ICsNCj4gPiArW0RlZmluZXNd DQo+ID4gKyAgSU5GX1ZFUlNJT04gICAgICAgICAgICAgICAgICAgID0gMHgwMDAxMDAwNQ0KPiA+ ICsgIEJBU0VfTkFNRSAgICAgICAgICAgICAgICAgICAgICA9IFNtYmlvc1BsYXRmb3JtRHhlDQo+ ID4gKyAgRklMRV9HVUlEICAgICAgICAgICAgICAgICAgICAgID0gNGIxODMyM2QtMmQ0Mi00YWZh LWI5ZTUtOTE1MTZhNmZlNTA1DQo+ID4gKyAgTU9EVUxFX1RZUEUgICAgICAgICAgICAgICAgICAg ID0gRFhFX0RSSVZFUg0KPiA+ICsgIFZFUlNJT05fU1RSSU5HICAgICAgICAgICAgICAgICA9IDEu MA0KPiA+ICsNCj4gPiArICBFTlRSWV9QT0lOVCAgICAgICAgICAgICAgICAgICAgPSBTbWJpb3NU YWJsZVB1Ymxpc2hFbnRyeQ0KPiA+ICsNCj4gPiArIw0KPiA+ICsjIFRoZSBmb2xsb3dpbmcgaW5m b3JtYXRpb24gaXMgZm9yIHJlZmVyZW5jZSBvbmx5IGFuZCBub3QgcmVxdWlyZWQgYnkgdGhlDQo+ IGJ1aWxkDQo+ID4gdG9vbHMuDQo+ID4gKyMNCj4gPiArIyAgVkFMSURfQVJDSElURUNUVVJFUyAg ICAgICAgICAgPSBJQTMyIFg2NCBFQkMgQVJNIEFBUkNINjQNCj4gPiArIw0KPiA+ICsNCj4gPiAr W1NvdXJjZXNdDQo+ID4gKyAgU21iaW9zUGxhdGZvcm1EeGUuaA0KPiA+ICsgIFNtYmlvc1BsYXRm b3JtRHhlLmMNCj4gPiArDQo+ID4gK1tQYWNrYWdlc10NCj4gPiArICBNZGVQa2cvTWRlUGtnLmRl Yw0KPiA+ICsgIE1kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVjDQo+ID4gKyAgU2ltaWNzT3Bl bkJvYXJkUGtnL1NpbWljc09wZW5Cb2FyZFBrZy5kZWMNCj4gPiArICBBZHZhbmNlZEZlYXR1cmVQ a2cvQWR2YW5jZWRGZWF0dXJlUGtnLmRlYw0KPiA+ICsNCj4gPiArW0xpYnJhcnlDbGFzc2VzXQ0K PiA+ICsgIFVlZmlCb290U2VydmljZXNUYWJsZUxpYg0KPiA+ICsgIEJhc2VNZW1vcnlMaWINCj4g PiArICBCYXNlTGliDQo+ID4gKyAgVWVmaURyaXZlckVudHJ5UG9pbnQNCj4gPiArICBEZWJ1Z0xp Yg0KPiA+ICsgIEhvYkxpYg0KPiA+ICsgIE1lbW9yeUFsbG9jYXRpb25MaWINCj4gPiArICBJb0xp Yg0KPiA+ICsNCj4gPiArW1Byb3RvY29sc10NCj4gPiArICBnRWZpU21iaW9zUHJvdG9jb2xHdWlk ICAgICAgICAgICAgICAgICAgICAgICMgUFJPVE9DT0wgQUxXQVlTX0NPTlNVTUVEDQo+ID4gKw0K PiA+ICtbRGVwZXhdDQo+ID4gKyAgZ0VmaVNtYmlvc1Byb3RvY29sR3VpZA0KPiA+ICsNCj4gPiAt LQ0KPiA+IDIuMTYuMi53aW5kb3dzLjENCg0K