From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=192.55.52.115; helo=mga14.intel.com; envelope-from=jaben.carsey@intel.com; receiver=edk2-devel@lists.01.org Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id D00EF224E6903 for ; Wed, 7 Mar 2018 09:17:43 -0800 (PST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by fmsmga103.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 07 Mar 2018 09:23:58 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.47,436,1515484800"; d="scan'208";a="35377423" Received: from fmsmsx106.amr.corp.intel.com ([10.18.124.204]) by fmsmga004.fm.intel.com with ESMTP; 07 Mar 2018 09:23:58 -0800 Received: from fmsmsx113.amr.corp.intel.com (10.18.116.7) by FMSMSX106.amr.corp.intel.com (10.18.124.204) with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 7 Mar 2018 09:23:58 -0800 Received: from fmsmsx103.amr.corp.intel.com ([169.254.2.34]) by FMSMSX113.amr.corp.intel.com ([169.254.13.90]) with mapi id 14.03.0319.002; Wed, 7 Mar 2018 09:23:57 -0800 From: "Carsey, Jaben" To: Sami Mujawar , "Yao, Jiewen" , "Ni, Ruiyu" , "edk2-devel@lists.01.org" CC: Evan Lloyd , "leif.lindholm@linaro.org" , Matteo Carlini , Stephanie Hughes-Fitt , nd Thread-Topic: [PATCH v4] ShellPkg: Add acpiview tool to dump ACPI tables Thread-Index: AQHTrMWxvvyO1Rsen0m8/0MfsQUZ8KOzVz0AgARB4gCADRrmgIAAEJIAgACJTYD//8oYIA== Date: Wed, 7 Mar 2018 17:23:57 +0000 Message-ID: References: <20180223164457.44056-1-sami.mujawar@arm.com> <83c10b19-7965-419f-9e41-638986163044@Intel.com> <74D8A39837DF1E4DA445A8C0B3885C503AADF486@shsmsx102.ccr.corp.intel.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiMzBhNWFlNGItNmUwZC00NGM2LTk2ZjMtMDk4ODE2YTM1ZWVmIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE2LjUuOS4zIiwiVHJ1c3RlZExhYmVsSGFzaCI6IlA1RnhRZ3NXV1doS3pLSjVhcjdFMFVFNFZFUGJaajd1OW9jNWdlUGRZcDA9In0= x-ctpclassification: CTP_NT x-originating-ip: [10.1.200.107] MIME-Version: 1.0 Subject: Re: [PATCH v4] ShellPkg: Add acpiview tool to dump ACPI tables X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 07 Mar 2018 17:17:44 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SSBhZ3JlZSB3aXRoIFNhbWkgdGhhdCB3ZSBzaG91bGQgYWRkIHdoYXQgd2UgaGF2ZS4NCg0KWWFv LA0KDQpEbyB5b3Ugd2FudCB0byBwcm9wb3NlIGEgbmV3IHByb3RvY29sIGZvciBjdXN0b20gQUNQ SSBwYXJzaW5nPyAgSSB0aGluayB0aGF0IG1pZ2h0IGJlIGEgVUVGSSBzaGVsbCBzcGVjIHByb3Rv Y29sIGxpa2UgdGhlIGR5bmFtaWMgc2hlbGwgY29tbWFuZCBwcm90b2NvbCBzaW5jZSBpdCB3b3Vs ZCBiZSBmb3IgYWNyb3NzIG1hbnkgcGFja2FnZXMgYW5kIGFzIHN1Y2ggd291bGQgbmVlZCB0byBi ZSBkaXNjdXNzZWQgaW4gdGhhdCBmb3J1bS4NCg0KLUphYmVuDQoNCj4gLS0tLS1PcmlnaW5hbCBN ZXNzYWdlLS0tLS0NCj4gRnJvbTogU2FtaSBNdWphd2FyIFttYWlsdG86U2FtaS5NdWphd2FyQGFy bS5jb21dDQo+IFNlbnQ6IFdlZG5lc2RheSwgTWFyY2ggMDcsIDIwMTggNDozNSBBTQ0KPiBUbzog WWFvLCBKaWV3ZW4gPGppZXdlbi55YW9AaW50ZWwuY29tPjsgTmksIFJ1aXl1IDxydWl5dS5uaUBp bnRlbC5jb20+Ow0KPiBDYXJzZXksIEphYmVuIDxqYWJlbi5jYXJzZXlAaW50ZWwuY29tPjsgZWRr Mi1kZXZlbEBsaXN0cy4wMS5vcmcNCj4gQ2M6IEV2YW4gTGxveWQgPEV2YW4uTGxveWRAYXJtLmNv bT47IGxlaWYubGluZGhvbG1AbGluYXJvLm9yZzsgTWF0dGVvDQo+IENhcmxpbmkgPE1hdHRlby5D YXJsaW5pQGFybS5jb20+OyBTdGVwaGFuaWUgSHVnaGVzLUZpdHQNCj4gPFN0ZXBoYW5pZS5IdWdo ZXMtRml0dEBhcm0uY29tPjsgbmQgPG5kQGFybS5jb20+DQo+IFN1YmplY3Q6IFJFOiBbUEFUQ0gg djRdIFNoZWxsUGtnOiBBZGQgYWNwaXZpZXcgdG9vbCB0byBkdW1wIEFDUEkgdGFibGVzDQo+IElt cG9ydGFuY2U6IEhpZ2gNCj4gDQo+IFBsZWFzZSBmaW5kIG15IHJlc3BvbnNlIGJlbG93IG1hcmtl ZCBbU0FNSV0uDQo+IA0KPiBEbyB3ZSB3YW50IHRvIHN1cHBvcnQgcGFyc2luZyBhIG5vbi1BQ1BJ IHNwZWMgZGVmaW5lZCBBQ1BJIHRhYmxlPw0KPiBbU0FNSV0gVGhpcyBpcyBjdXJyZW50bHkgcG9z c2libGUuIE9uZSBvbmx5IG5lZWRzIHRvIGltcGxlbWVudCBhIHBhcnNlciBmb3INCj4gdGhlIGN1 c3RvbSBBQ1BJIHRhYmxlLg0KPiANCj4gQXMgc3VjaCwgZXhwb3NpbmcgdGhlIEFQSSB0byBsZXQg dGhlIHRhYmxlIHByb2R1Y2VyIGRlZmluZSBpdHMgb3duIHBhcnNpbmcNCj4gbG9naWMsIGluc3Rl YWQgb2YgaW4gU2hlbGxQa2cuDQo+IFtTQU1JXSBUaGlzIHdvdWxkIGJlIGEgcG9zc2libGUgY2hh bmdlIHNob3VsZCB5b3Ugd2lzaCB0byBjb250cmlidXRlIGFzIGENCj4gZm9sbG93LW9uLiBBbHRo b3VnaCB0aGUgY3VycmVudCBjb2RlIG1heSBiZSBjYXBhYmxlIG9mIGV4dGVuc2lvbiwgd2UgdGhp bmsNCj4gdGhlIGN1cnJlbnQgdmVyc2lvbiBpcyB1c2VmdWwgYXMgaXMgYW5kIHN1Z2dlc3RzIHRo YXQgc3VjaCBjaGFuZ2VzIHdvdWxkIGJlDQo+IGJlc3QgbWFkZSBvbmNlIHRoZSBzb3VyY2UgaXMg YXZhaWxhYmxlIGluIGVkazIuDQo+IA0KPiBSZWdhcmRzLA0KPiANCj4gU2FtaSBNdWphd2FyDQo+ IA0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBZYW8sIEppZXdlbiBbbWFp bHRvOmppZXdlbi55YW9AaW50ZWwuY29tXQ0KPiBTZW50OiAwNyBNYXJjaCAyMDE4IDA0OjIzIEFN DQo+IFRvOiBOaSwgUnVpeXUgPHJ1aXl1Lm5pQGludGVsLmNvbT47IFNhbWkgTXVqYXdhcg0KPiA8 U2FtaS5NdWphd2FyQGFybS5jb20+OyBlZGsyLWRldmVsQGxpc3RzLjAxLm9yZw0KPiBDYzogRXZh biBMbG95ZCA8RXZhbi5MbG95ZEBhcm0uY29tPjsgbGVpZi5saW5kaG9sbUBsaW5hcm8ub3JnOyBN YXR0ZW8NCj4gQ2FybGluaSA8TWF0dGVvLkNhcmxpbmlAYXJtLmNvbT47IFN0ZXBoYW5pZSBIdWdo ZXMtRml0dA0KPiA8U3RlcGhhbmllLkh1Z2hlcy1GaXR0QGFybS5jb20+OyBuZCA8bmRAYXJtLmNv bT47IENhcnNleSwgSmFiZW4NCj4gPGphYmVuLmNhcnNleUBpbnRlbC5jb20+DQo+IFN1YmplY3Q6 IFJFOiBbUEFUQ0ggdjRdIFNoZWxsUGtnOiBBZGQgYWNwaXZpZXcgdG9vbCB0byBkdW1wIEFDUEkg dGFibGVzDQo+IA0KPiBEbyB3ZSB3YW50IHRvIHN1cHBvcnQgcGFyc2luZyBhIG5vbi1BQ1BJIHNw ZWMgZGVmaW5lZCBBQ1BJIHRhYmxlPw0KPiANCj4gQXMgc3VjaCwgZXhwb3NpbmcgdGhlIEFQSSB0 byBsZXQgdGhlIHRhYmxlIHByb2R1Y2VyIGRlZmluZSBpdHMgb3duIHBhcnNpbmcNCj4gbG9naWMs IGluc3RlYWQgb2YgaW4gU2hlbGxQa2cuDQo+IA0KPiBUaGFuayB5b3UNCj4gWWFvIEppZXdlbg0K PiANCj4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+IEZyb206IE5pLCBSdWl5dQ0K PiA+IFNlbnQ6IFdlZG5lc2RheSwgTWFyY2ggNywgMjAxOCAxMToyNCBBTQ0KPiA+IFRvOiBTYW1p IE11amF3YXIgPFNhbWkuTXVqYXdhckBhcm0uY29tPjsgZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmcN Cj4gPiBDYzogRXZhbiBMbG95ZCA8RXZhbi5MbG95ZEBhcm0uY29tPjsgbGVpZi5saW5kaG9sbUBs aW5hcm8ub3JnOyBNYXR0ZW8NCj4gQ2FybGluaQ0KPiA+IDxNYXR0ZW8uQ2FybGluaUBhcm0uY29t PjsgU3RlcGhhbmllIEh1Z2hlcy1GaXR0DQo+ID4gPFN0ZXBoYW5pZS5IdWdoZXMtRml0dEBhcm0u Y29tPjsgbmQgPG5kQGFybS5jb20+OyBDYXJzZXksIEphYmVuDQo+ID4gPGphYmVuLmNhcnNleUBp bnRlbC5jb20+OyBZYW8sIEppZXdlbiA8amlld2VuLnlhb0BpbnRlbC5jb20+DQo+ID4gU3ViamVj dDogUmU6IFtQQVRDSCB2NF0gU2hlbGxQa2c6IEFkZCBhY3BpdmlldyB0b29sIHRvIGR1bXAgQUNQ SSB0YWJsZXMNCj4gPg0KPiA+IE9uIDIvMjcvMjAxOCAzOjE2IEFNLCBTYW1pIE11amF3YXIgd3Jv dGU6DQo+ID4gPiBIaSBSYXksDQo+ID4gPg0KPiA+ID4gUGxlYXNlIHNlZSBteSByZXNwb25zZSBi ZWxvdyBtYXJrZWQgW1NBTUldLg0KPiA+ID4NCj4gPiA+Pj4gICAgU2hlbGxQa2cvSW5jbHVkZS9M aWJyYXJ5L0FjcGlWaWV3L0FjcGlQYXJzZXIuaA0KPiA+IHwgNDQ5ICsrKysrKysrKysrKw0KPiA+ ID4+PiAgICBTaGVsbFBrZy9JbmNsdWRlL0xpYnJhcnkvQWNwaVZpZXcvQWNwaVRhYmxlUGFyc2Vy LmgNCj4gPiB8IDEyNiArKysrDQo+ID4gPg0KPiA+ID4+IFNhbWksIHNob3VsZCB0aGUgYWJvdmUg dHdvIG5ldyBmaWxlcyBiZSByZW1vdmVkPw0KPiA+ID4NCj4gPiA+IFtTQU1JXSBUaGUgaW5kaXZp ZHVhbCB0YWJsZSBwYXJzZXJzIGFyZSBpbXBsZW1lbnRlZCBhcyBOVUxMIGxpYnJhcmllcw0KPiB0 aGF0DQo+ID4gcmVnaXN0ZXIgdGhlIHBhcnNlciB3aXRoIFVlZmlTaGVsbEFjcGlWaWV3Q29tbWFu ZExpYi4gVGhlc2UgcGFyc2VyDQo+IGxpYnJhcmllcw0KPiA+IGFyZSBwcmVzZW50IGluIHN1YiBm b2xkZXJzIGUuZy4NCj4gPiBTaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFu ZExpYi9QYXJzZXJzL0JncnQ7IGEgY2hhbmdlDQo+IHRoYXQNCj4gPiB3YXMgaW50cm9kdWNlZCBp biB0aGUgdjMgcGF0Y2ggaW4gcmVzcG9uc2UgdG8gcmV2aWV3IGNvbW1lbnRzLiBGb3INCj4gYnVp bGRpbmcgdGhlDQo+ID4gcGFyc2VyIGxpYnJhcmllcywgSSBuZWVkIGEgbWVjaGFuaXNtIHRvIGdl dCB0aGUgaW5jbHVkZSBwYXRoIHRvIHRoZSBoZWFkZXINCj4gZmlsZXMNCj4gPiBhYm92ZSAod2hp Y2ggZXhwb3NlIHRoZSBwYXJzZXIgcmVnaXN0cmF0aW9uIGZ1bmN0aW9ucyBhbmQgdGhlIGNvbW1v bg0KPiA+IGZ1bmN0aW9uYWxpdHkgaW1wbGVtZW50ZWQgaW4gVWVmaVNoZWxsQWNwaVZpZXdDb21t YW5kTGliKS4gVGhlcmVmb3JlLCBJDQo+IGhhdmUNCj4gPiBrZXB0IHRoZW0gdW5kZXIgU2hlbGxQ a2cvSW5jbHVkZS9MaWJyYXJ5L0FjcGlWaWV3Lg0KPiA+DQo+ID4gSSBwcmVmZXIgdG8ga2VlcCB0 aGUgd2hvbGUgcGFyc2VyIGFzIGEgc3RhbmRhbG9uZSBsaWJyYXJ5LiBJIGxpa2UgdGhlDQo+ID4g aWRlYSB0byBoYXZlIGEgcGFyc2VyIHJlZ2lzdHJhdGlvbiBtZWNoYW5pc20uIEJ1dCBJIGRvbid0 IHRoaW5rIHdlIG5lZWQNCj4gPiB0byBleHBvc2UgdGhlIHJlZ2lzdHJhdGlvbiBBUEkgb3V0c2lk ZSBvZiB0aGUNCj4gVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliLg0KPiA+IFRoYXQncyB0byBz YXksIGFueW9uZSB3aG8gd2FudHMgdG8gYWRkIHBhcnNlciBmb3IgbmV3IHRhYmxlcyBjYW4gYWRk IGENCj4gPiBuZXcgZnVuY3Rpb24vZmlsZSBpbnNpZGUgVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5k TGliLiBJbiBvcmRlciBmb3IgdGhlDQo+ID4gbWFpbiBwYXJzZXIgdG8gY2FsbCB0aGUgbmV3IHN1 Yi1wYXJzZXIsIGhlIGNhbiBlaXRoZXIgZGlyZWN0bHkgbW9kaWZ5DQo+ID4gdGhlIGZ1bmN0aW9u IHRhYmxlIHRvIGFkZCBhIG5ldyBlbnRyeSwgb3IgY2FsbCBhIGludGVybmFsIHJlZ2lzdHJhdGlv bg0KPiA+IGZ1bmN0aW9uIHdoaWNoIGluZGlyZWN0bHkgbW9kaWZpZXMgdGhlIGZ1bmN0aW9uIHRh YmxlLg0KPiA+DQo+ID4gPg0KPiA+ID4+IFNpbmNlIHBlciB5b3VyIGNvbW1lbnRzLCB0aGUgaW50 ZXJmYWNlcyBhcmUga2VwdCBpbnNpZGUNCj4gPiBVZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIu DQo+ID4gPg0KPiA+ID4gW1NBTUldIEl0IGxvb2tzIGxpa2UgSSBoYWQgbm90IGZ1bGx5IHVuZGVy c3Rvb2QgeW91ciAjMiBjb21tZW50LiBJIGhhZCBhDQo+IGhlbHBlcg0KPiA+IGxpYnJhcnkgZm9y IGV4cG9zaW5nIHRoZSByZWdpc3RyYXRpb24gZnVuY3Rpb25zIGFuZCBjb21tb24gZnVuY3Rpb25h bGl0eS4gSQ0KPiA+IG1vdmVkIHRoaXMgZnVuY3Rpb25hbGl0eSB0byBrZWVwIHRoZXNlIGludGVy ZmFjZXMgaW5zaWRlDQo+ID4gVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliLg0KPiA+ID4gSG93 ZXZlciBhcyBleHBsYWluZWQgYWJvdmUgSSBoYXZlIHRoZSBjb21tb24gZnVuY3Rpb25hbGl0eQ0K PiBpbXBsZW1lbnRlZCBhcw0KPiA+IHBhcnQgb2YgdGhlIFVlZmlTaGVsbEFjcGlWaWV3Q29tbWFu ZExpYiB3aGljaCBpcyB1dGlsaXplZCBieSBpbmRpdmlkdWFsDQo+IHBhcnNlcnMuDQo+ID4gPg0K PiA+ID4gQ29uc2lkZXJpbmcgdGhlIGFib3ZlIEkgaG9wZSB0aGUgcGF0Y2ggT0suIEFsdGVybmF0 aXZlbHksIGlmIHlvdSBjYW4NCj4gYWR2aXNlIG1lDQo+ID4gb24gYSBiZXR0ZXIgd2F5IG9mIGFj aGlldmluZyB0aGlzLCBJIHdpbGwgYmUgaGFwcHkgdG8gaW5jb3Jwb3JhdGUgdGhlDQo+IGNoYW5n ZXMuDQo+ID4gPg0KPiA+ID4gUmVnYXJkcywNCj4gPiA+DQo+ID4gPiBTYW1pIE11amF3YXINCj4g PiA+DQo+ID4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ID4gRnJvbTogTmksIFJ1 aXl1IFttYWlsdG86cnVpeXUubmlASW50ZWwuY29tXQ0KPiA+ID4gU2VudDogMjQgRmVicnVhcnkg MjAxOCAwMjoxNSBBTQ0KPiA+ID4gVG86IFNhbWkgTXVqYXdhciA8U2FtaS5NdWphd2FyQGFybS5j b20+OyBlZGsyLWRldmVsQGxpc3RzLjAxLm9yZw0KPiA+ID4gQ2M6IEV2YW4gTGxveWQgPEV2YW4u TGxveWRAYXJtLmNvbT47IGxlaWYubGluZGhvbG1AbGluYXJvLm9yZzsgTWF0dGVvDQo+ID4gQ2Fy bGluaSA8TWF0dGVvLkNhcmxpbmlAYXJtLmNvbT47IFN0ZXBoYW5pZSBIdWdoZXMtRml0dA0KPiA+ IDxTdGVwaGFuaWUuSHVnaGVzLUZpdHRAYXJtLmNvbT47IG5kIDxuZEBhcm0uY29tPjsNCj4gPiBq YWJlbi5jYXJzZXlAaW50ZWwuY29tOyBqaWV3ZW4ueWFvQGludGVsLmNvbQ0KPiA+ID4gU3ViamVj dDogUmU6IFtQQVRDSCB2NF0gU2hlbGxQa2c6IEFkZCBhY3BpdmlldyB0b29sIHRvIGR1bXAgQUNQ SSB0YWJsZXMNCj4gPiA+DQo+ID4gPiBPbiAyLzI0LzIwMTggMTI6NDQgQU0sIFNhbWkgTXVqYXdh ciB3cm90ZToNCj4gPiA+PiBUaGlzIHByb2dyYW0gaXMgcHJvdmlkZWQgdG8gYWxsb3cgZXhhbWlu YXRpb24gb2YgQUNQSSB0YWJsZSBjb250ZW50cw0KPiA+ID4+IGZyb20gdGhlIFVFRkkgU2hlbGwu ICBUaGlzIGNhbiBoZWxwIHdpdGggaW52ZXN0aWdhdGlvbnMsIGVzcGVjaWFsbHkgYXQNCj4gPiA+ PiB0aGF0IHN0YWdlIHdoZXJlIHRoZSB0YWJsZXMgYXJlIG5vdCBlbmFibGluZyBhbiBPUyB0byBi b290Lg0KPiA+ID4+IFRoZSBwcm9ncmFtIGlzIG5vdCBleGhhdXN0aXZlLCBhbmQgb25seSBlbmNh cHN1bGF0ZXMgZGV0YWlsZWQNCj4ga25vd2xlZGdlDQo+ID4gPj4gb2YgYSBsaW1pdGVkIG51bWJl ciBvZiB0YWJsZSB0eXBlcy4NCj4gPiA+Pg0KPiA+ID4+IERlZmF1bHQgYmVoYXZpb3VyIGlzIHRv IGRpc3BsYXkgdGhlIGNvbnRlbnQgb2YgYWxsIHRhYmxlcyBpbnN0YWxsZWQuDQo+ID4gPj4gJ0tu b3duJyB0YWJsZSB0eXBlcyB3aWxsIGJlIHBhcnNlZCBhbmQgZGlzcGxheWVkIHdpdGggZGVzY3Jp cHRpb25zIGFuZA0KPiA+ID4+IGZpZWxkIHZhbHVlcy4gIFdoZXJlIGFwcHJvcHJpYXRlIGEgZGVn cmVlIG9mIGNvbnNpc3RlbmN5IGNoZWNraW5nIGlzDQo+ID4gPj4gZG9uZSBhbmQgZXJyb3JzIG1h eSBiZSByZXBvcnRlZCBpbiB0aGUgb3V0cHV0Lg0KPiA+ID4+IE90aGVyIHRhYmxlIHR5cGVzIHdp bGwgYmUgZGlzcGxheWVkIGFzIGFuIGFycmF5IG9mIEhleGFkZWNpbWFsIGJ5dGVzLg0KPiA+ID4+ DQo+ID4gPj4gVG8gZmFjaWxpdGF0ZSBkZWJ1Z2dpbmcsIHRoZSAtcyBhbmQgLWQgb3B0aW9ucyBj YW4gYmUgdXNlZCB0byBnZW5lcmF0ZSBhDQo+ID4gPj4gYmluYXJ5IGZpbGUgaW1hZ2Ugb2YgYSB0 YWJsZSB0aGF0IGNhbiBiZSBjb3BpZWQgZWxzZXdoZXJlIGZvcg0KPiA+ID4+IGludmVzdGlnYXRp b24gdXNpbmcgdG9vbHMgc3VjaCBhcyB0aG9zZSBwcm92aWRlZCBieSBhY3BpY2Eub3JnLiAgVGhp cyBpcw0KPiA+ID4+IGVzcGVjaWFsbHkgcmVsZXZhbnQgZm9yIEFNTCB0eXBlIHRhYmxlcyBsaWtl IERTRFQgYW5kIFNTRFQuDQo+ID4gPj4NCj4gPiA+PiBUaGUgaW5zcGlyYXRpb24gZm9yIHRoaXMg aXMgdGhlIGV4aXN0aW5nIHNtYmlvc3ZpZXcgRGVidWcxIFNoZWxsDQo+ID4gPj4gY29tbWFuZC4N Cj4gPiA+Pg0KPiA+ID4+IE1hbnkgdGFibGVzIGFyZSBub3QgZXhwbGljaXRseSBoYW5kbGVkLCBp biBwYXJ0IGJlY2F1c2Ugbm8gZXhhbXBsZXMgYXJlDQo+ID4gPj4gYXZhaWxhYmxlIGZvciBvdXIg dGVzdGluZy4NCj4gPiA+Pg0KPiA+ID4+IFRoZSBwcm9ncmFtIGlzIGRlc2lnbmVkIHRvIGJlIGV4 dGVuZGVkIHRvIG5ldyB0YWJsZXMgd2l0aCBtaW5pbWFsDQo+ID4gPj4gZWZmb3J0LCBhbmQgY29u dHJpYnV0aW9ucyBhcmUgaW52aXRlZC4NCj4gPiA+Pg0KPiA+ID4+IENvbnRyaWJ1dGVkLXVuZGVy OiBUaWFub0NvcmUgQ29udHJpYnV0aW9uIEFncmVlbWVudCAxLjENCj4gPiA+PiBTaWduZWQtb2Zm LWJ5OiBTYW1pIE11amF3YXIgPHNhbWkubXVqYXdhckBhcm0uY29tPg0KPiA+ID4+IFNpZ25lZC1v ZmYtYnk6IEV2YW4gTGxveWQgPGV2YW4ubGxveWRAYXJtLmNvbT4NCj4gPiA+PiBSZXZpZXdlZC1i eTogSmFiZW4gQ2Fyc2V5IDxqYWJlbi5jYXJzZXlAaW50ZWwuY29tPg0KPiA+ID4+IC0tLQ0KPiA+ ID4+DQo+ID4gPj4gVGhlIHVwZGF0ZWQgY2hhbmdlcyBjYW4gYmUgdmlld2VkIGF0Og0KPiA+ID4+ IAlodHRwczovL2dpdGh1Yi5jb20vc2FtaW11amF3YXIvZWRrMi90cmVlLzE4OF9hY3Bpdmlld192 NA0KPiA+ID4+DQo+ID4gPj4gTm90ZXM6DQo+ID4gPj4gICAgICAgdjQ6DQo+ID4gPj4gICAgICAg LSBGaXJzdGx5LCBwdWJsaWMgbGlicmFyeSBBUElzIHNob3VsZCBoYXZlICJFRklBUEkiIGRlY29y YXRvci4NCj4gPiBbUkFZXQ0KPiA+ID4+ICAgICAgIC0gUmVzdWJtaXR0aW5nIHVwZGF0ZWQgcGF0 Y2ggd2l0aCAiRUZJQVBJIiBkZWNvcmF0b3IuDQo+ID4gW1NBTUldDQo+ID4gPj4NCj4gPiA+PiAg ICAgICAtIFNlY29uZGx5LCBJIGFtIHdvbmRlcmluZyBpZiBpdCdzIHBvc3NpYmxlIHRvIG5vdCBl eHBvc2UgYW55DQo+ID4gPj4gICAgICAgICBsaWJyYXJ5IGNsYXNzZXMgZm9yIGhhbmRsaW5nIG9m IG1vcmUgQUNQSSB0YWJsZXMuDQo+ID4gPj4gICAgICAgICBJIGFncmVlIHRvIGltcGxlbWVudCBV ZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIgaW4gYSB3YXkgZm9yDQo+ID4gZWFzeQ0KPiA+ID4+ ICAgICAgICAgZXh0ZW5zaW9uIGZvciBoYW5kbGluZyBvZiBtb3JlIEFDUEkgdGFibGVzLCBidXQg SSBwcmVmZXIgdG8ga2VlcCB0aGUNCj4gPiA+PiAgICAgICAgIGludGVyZmFjZXMgaW50ZXJuYWxs eSBpbnNpZGUgdGhlIFVlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi4NCj4gPiBbUkFZXQ0KPiA+ ID4+ICAgICAgIC0gVXBkYXRlZCBhcyBzdWdnZXN0ZWQuDQo+ID4gW1NBTUldDQo+ID4gPj4NCj4g PiA+PiAgICAgICB2MzoNCj4gPiA+PiAgICAgICAtIENhbiB0aGUgaW5kaXZpZHVhbCAiY2hpbGQi IGxpYnJhcmllcyBiZSBwbGFjZWQgaW50bw0KPiA+ID4+ICAgICAgICAgc3ViZGlyZWN0b3JpZXMg dW5kZXIgVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliIGRpcmVjdG9yeQ0KPiA+ID4+ICAgICAg ICAgZm9yIGNsZWFyIHNlcGFyYXRpb24/DQo+ID4gW0pBQkVOXQ0KPiA+ID4+ICAgICAgIC0gUGF0 Y2ggdXBkYXRlZCB0byBtb3ZlIGluZGl2aWR1YWwgImNoaWxkIiBsaWJyYXJpZXMgaW50bw0KPiA+ ID4+ICAgICAgICAgc3ViZGlyZWN0b3JpZXMuDQo+ID4gW1NBTUldDQo+ID4gPj4NCj4gPiA+PiAg ICAgICAtIEluIFVlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYixjIHdoYXQncyB0aGUgbW90aXZh dGlvbiBmb3IgYWxsDQo+ID4gPj4gICAgICAgICB0aGUgd3JhcHBlcnMgYXJvdW5kIHByaW50PyBJ IHNlZSB0aGF0IHNvbWUgYXJlIGZvciBtZW1vcnkgYWNjZXNzDQo+ID4gPj4gICAgICAgICByZXN0 cmljdGlvbnMsIGJ1dCB0aGUgcmVzdD8gIFByaW50R3VpZCwgbG9va3MgdGhlIHNhbWUgYXMgdXNp bmcNCj4gPiA+PiAgICAgICAgICVnIHdpdGggUHJpbnQoKS4uLg0KPiA+IFtKQUJFTl0NCj4gPiA+ PiAgICAgICAtIFRoZSBwcmludCB3cmFwcGVycyBlbmFibGUgYSBjb21tb24gc3R5bGVkIGZvcm1h dHRlZCBwcmludGluZyBmb3INCj4gPiA+PiAgICAgICAgIHRoZSBBQ1BJIGZpZWxkcy4gVGhlIEFD UEl2aWV3IHRhYmxlIHBhcnNpbmcgZnJhbWV3b3JrIHV0aWxpemVzIGENCj4gPiA+PiAgICAgICAg IHRhYmxlLWRyaXZlbiBhcHByb2FjaCBmb3IgcGFyc2luZyB0aGUgdGFibGVzIGFuZCB0aGVzZSBm dW5jdGlvbnMNCj4gPiA+PiAgICAgICAgIGFyZSBpbnZva2VkIGJ5IHRoZSBmcmFtZXdvcmsgYmFz ZWQgb24gdGhlIGZpZWxkIHNpemUgYW5kIHR5cGUuDQo+ID4gPj4gICAgICAgICBIb3dldmVyIHlv dSBhcmUgcmlnaHQsIGl0IGlzIHN1cGVyZmx1b3VzIGluIHRoZSBjYXNlIG9mIFByaW50R3VpZA0K PiA+ID4+ICAgICAgICAgKFdoaWNoIGhhcyBub3cgYmVlbiByZW1vdmVkIGluIHRoZSB1cGRhdGVk IHBhdGNoKS4NCj4gPiBbU0FNSV0NCj4gPiA+Pg0KPiA+ID4+ICAgICAgIC0gRG8gd2Ugd2FudCB0 byBjaGFuZ2UgdGhlIG1haW4gZW50cnlwb2ludCB0byBhIER5bmFtaWNDb21tYW5kDQo+ID4gPj4g ICAgICAgICBzaW5jZSB0aGlzIGNvbW1hbmQgaXMgbm90IGluIHRoZSBzaGVsbCBzcGVjPyBJZiB5 ZXMsIGRvIHdlIHdhbnQNCj4gPiA+PiAgICAgICAgIHRvIGRvIHRoYXQgZmlyc3Qgb3IgYWZ0ZXI/ DQo+ID4gW0pBQkVOXQ0KPiA+ID4+ICAgICAgIC0gVGhlIEVDUiAxNzg0IGZvciBBQ1BJdmlldyBh cHBlYXJzIHRvIGJlICdBcHByb3ZlZCBhcyBuZXcgY29udGVudA0KPiA+ID4+ICAgICAgICAgZm9y IHRoZSBTaGVsbCBTcGVjLicgaW4gTWFudGlzLA0KPiA+ID4+ICAgICAgICAgc2VlIGh0dHBzOi8v bWFudGlzLnVlZmkub3JnL21hbnRpcy92aWV3LnBocD9pZD0xNzg0Lg0KPiA+ID4+ICAgICAgICAg QXMgSSB1bmRlcnN0YW5kIGl0LCB0aGUgRUNSIGNoYW5nZSBuZWVkcyB0byBiZSBwcm9wYWdhdGVk IHRvIHRoZQ0KPiA+ID4+ICAgICAgICAgU2hlbGwgc3BlY2lmaWNhdGlvbiBhbmQgaXMgcGVuZGlu Zy4gSW4gbGlnaHQgb2YgdGhlIGFib3ZlLCBJIHRoaW5rDQo+ID4gPj4gICAgICAgICB0aGF0IGFk ZGluZyBEeW5hbWljQ29tbWFuZCBzdXBwb3J0IGlzIG5vdCBuZWNlc3NhcnkuIFBsZWFzZSBsZXQN Cj4gPiBtZQ0KPiA+ID4+ICAgICAgICAga25vdyBpZiB5b3UgZmVlbCBvdGhlcndpc2UuDQo+ID4g W1NBTUldDQo+ID4gPj4NCj4gPiA+PiAgICBTaGVsbFBrZy9JbmNsdWRlL0xpYnJhcnkvQWNwaVZp ZXcvQWNwaVBhcnNlci5oDQo+ID4gfCA0NDkgKysrKysrKysrKysrDQo+ID4gPj4gICAgU2hlbGxQ a2cvSW5jbHVkZS9MaWJyYXJ5L0FjcGlWaWV3L0FjcGlUYWJsZVBhcnNlci5oDQo+ID4gfCAxMjYg KysrKw0KPiA+ID4NCj4gPiA+IFNhbWksIHNob3VsZCB0aGUgYWJvdmUgdHdvIG5ldyBmaWxlcyBi ZSByZW1vdmVkPw0KPiA+ID4gU2luY2UgcGVyIHlvdXIgY29tbWVudHMsIHRoZSBpbnRlcmZhY2Vz IGFyZSBrZXB0IGluc2lkZQ0KPiA+ID4gVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliLg0KPiA+ ID4NCj4gPiA+PiAgICBTaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExp Yi9BY3BpUGFyc2VyLmMNCj4gPiB8IDY2MiArKysrKysrKysrKysrKysrKw0KPiA+ID4+ICAgIFNo ZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL0FjcGlUYWJsZVBhcnNl ci5jDQo+ID4gfCAyMTUgKysrKysrDQo+ID4gPj4gICAgU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hl bGxBY3BpVmlld0NvbW1hbmRMaWIvQWNwaVZpZXcuYw0KPiA+IHwgNjAxICsrKysrKysrKysrKysr KysNCj4gPiA+PiAgICBTaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExp Yi9BY3BpVmlldy5oDQo+ID4gfCAxMDMgKysrDQo+ID4gPj4NCj4gPiBTaGVsbFBrZy9MaWJyYXJ5 L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL0JncnQvQmdydFBhcnNlci5jDQo+ ID4gfCAxMTcgKysrDQo+ID4gPj4NCj4gPg0KPiBTaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFj cGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL0JncnQvQmdydFBhcnNlckxpYi4NCj4gaW5mDQo+ID4g fCAgMzMgKw0KPiA+ID4+DQo+ID4NCj4gU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmll d0NvbW1hbmRMaWIvUGFyc2Vycy9EYmcyL0RiZzJQYXJzZXIuYw0KPiA+IHwgMjg3ICsrKysrKysr DQo+ID4gPj4NCj4gPg0KPiBTaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFu ZExpYi9QYXJzZXJzL0RiZzIvRGJnMlBhcnNlckxpDQo+IGIuaQ0KPiA+IG5mICB8ICAzMyArDQo+ ID4gPj4NCj4gPg0KPiBTaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExp Yi9QYXJzZXJzL0RzZHQvRHNkdFBhcnNlci5jDQo+ID4gfCAgOTIgKysrDQo+ID4gPj4NCj4gPg0K PiBTaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL0Rz ZHQvRHNkdFBhcnNlckxpDQo+IGIuaW5mDQo+ID4gfCAgMzMgKw0KPiA+ID4+DQo+ID4NCj4gU2hl bGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9GYWR0L0Zh ZHRQYXJzZXIuYw0KPiA+IHwgMzA5ICsrKysrKysrDQo+ID4gPj4NCj4gPg0KPiBTaGVsbFBrZy9M aWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL0ZhZHQvRmFkdFBhcnNl ckxpYg0KPiAuaW5mDQo+ID4gfCAgMzMgKw0KPiA+ID4+DQo+ID4NCj4gU2hlbGxQa2cvTGlicmFy eS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9HdGR0L0d0ZHRQYXJzZXIuYw0K PiA+IHwgMzM4ICsrKysrKysrKw0KPiA+ID4+DQo+ID4NCj4gU2hlbGxQa2cvTGlicmFyeS9VZWZp U2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9HdGR0L0d0ZHRQYXJzZXJMaQ0KPiBiLmlu Zg0KPiA+IHwgIDMzICsNCj4gPiA+Pg0KPiA+IFNoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNw aVZpZXdDb21tYW5kTGliL1BhcnNlcnMvSW9ydC9Jb3J0UGFyc2VyLmMNCj4gPiB8IDc0NSArKysr KysrKysrKysrKysrKysrKw0KPiA+ID4+DQo+ID4NCj4gU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hl bGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9Jb3J0L0lvcnRQYXJzZXJMaWIuaQ0KPiBuZg0K PiA+IHwgIDMzICsNCj4gPiA+Pg0KPiA+DQo+IFNoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNw aVZpZXdDb21tYW5kTGliL1BhcnNlcnMvTWFkdC9NYWR0UGFyc2VyLg0KPiBjDQo+ID4gfCAzNTgg KysrKysrKysrKw0KPiA+ID4+DQo+ID4NCj4gU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3Bp Vmlld0NvbW1hbmRMaWIvUGFyc2Vycy9NYWR0L01hZHRQYXJzZXJMDQo+IGliLmkNCj4gPiBuZiAg fCAgMzMgKw0KPiA+ID4+DQo+ID4NCj4gU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmll d0NvbW1hbmRMaWIvUGFyc2Vycy9NY2ZnL01jZmdQYXJzZXIuYw0KPiA+IHwgMTM5ICsrKysNCj4g PiA+Pg0KPiA+DQo+IFNoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGli L1BhcnNlcnMvTWNmZy9NY2ZnUGFyc2VyTGkNCj4gYi5pbg0KPiA+IGYgIHwgIDMzICsNCj4gPiA+ Pg0KPiA+DQo+IFNoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1Bh cnNlcnMvUnNkcC9Sc2RwUGFyc2VyLmMNCj4gPiB8IDIxNCArKysrKysNCj4gPiA+Pg0KPiA+DQo+ IFNoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvUnNk cC9Sc2RwUGFyc2VyTGkNCj4gYi5pbg0KPiA+IGYgIHwgIDMzICsNCj4gPiA+Pg0KPiBTaGVsbFBr Zy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL1NsaXQvU2xpdFBh cnNlci5jDQo+ID4gfCAxODcgKysrKysNCj4gPiA+Pg0KPiA+DQo+IFNoZWxsUGtnL0xpYnJhcnkv VWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvU2xpdC9TbGl0UGFyc2VyTGliLmlu DQo+IGYNCj4gPiB8ICAzMyArDQo+ID4gPj4NCj4gPg0KPiBTaGVsbFBrZy9MaWJyYXJ5L1VlZmlT aGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL1NwY3IvU3BjclBhcnNlci5jDQo+ID4gfCAy MTMgKysrKysrDQo+ID4gPj4NCj4gPg0KPiBTaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlW aWV3Q29tbWFuZExpYi9QYXJzZXJzL1NwY3IvU3BjclBhcnNlckxpYg0KPiAuaW5mDQo+ID4gfCAg MzMgKw0KPiA+ID4+DQo+ID4gU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1h bmRMaWIvUGFyc2Vycy9TcmF0L1NyYXRQYXJzZXIuYw0KPiA+IHwgMzc1ICsrKysrKysrKysNCj4g PiA+Pg0KPiA+DQo+IFNoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGli L1BhcnNlcnMvU3JhdC9TcmF0UGFyc2VyTGliLmkNCj4gbmYNCj4gPiB8ICAzMyArDQo+ID4gPj4N Cj4gPg0KPiBTaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJz ZXJzL1NzZHQvU3NkdFBhcnNlci5jDQo+ID4gfCAgOTIgKysrDQo+ID4gPj4NCj4gPg0KPiBTaGVs bFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL1NzZHQvU3Nk dFBhcnNlckxpYg0KPiAuaW5mDQo+ID4gfCAgMzMgKw0KPiA+ID4+DQo+ID4NCj4gU2hlbGxQa2cv TGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9Yc2R0L1hzZHRQYXJz ZXIuYw0KPiA+IHwgMTk4ICsrKysrKw0KPiA+ID4+DQo+ID4NCj4gU2hlbGxQa2cvTGlicmFyeS9V ZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9Yc2R0L1hzZHRQYXJzZXJMaWINCj4g LmluZg0KPiA+IHwgIDMzICsNCj4gPiA+Pg0KPiA+DQo+IFNoZWxsUGtnL0xpYnJhcnkvVWVmaVNo ZWxsQWNwaVZpZXdDb21tYW5kTGliL1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuDQo+IGRMaQ0KPiA+ IGIuYyAgIHwgMTA2ICsrKw0KPiA+ID4+DQo+ID4NCj4gU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hl bGxBY3BpVmlld0NvbW1hbmRMaWIvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW4NCj4gZExpDQo+ID4g Yi5oICAgfCAgMzIgKw0KPiA+ID4+DQo+ID4NCj4gU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxB Y3BpVmlld0NvbW1hbmRMaWIvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW4NCj4gZExpDQo+ID4gYi5p bmYgfCAgNjAgKysNCj4gPiA+Pg0KPiA+DQo+IFNoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNw aVZpZXdDb21tYW5kTGliL1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuDQo+IGRMaQ0KPiA+IGIudW5p IHwgMTI3ICsrKysNCj4gPiA+PiAgICBTaGVsbFBrZy9TaGVsbFBrZy5kZWMNCj4gPiB8ICAgMyAr LQ0KPiA+ID4+ICAgIDM5IGZpbGVzIGNoYW5nZWQsIDY2MDkgaW5zZXJ0aW9ucygrKSwgMSBkZWxl dGlvbigtKQ0KPiA+ID4+DQo+ID4gPj4gZGlmZiAtLWdpdCBhL1NoZWxsUGtnL0luY2x1ZGUvTGli cmFyeS9BY3BpVmlldy9BY3BpUGFyc2VyLmgNCj4gPiBiL1NoZWxsUGtnL0luY2x1ZGUvTGlicmFy eS9BY3BpVmlldy9BY3BpUGFyc2VyLmgNCj4gPiA+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+ ID4+IGluZGV4DQo+ID4gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u MTRkNzVlZWI5MjgyYTc2NDkyNDMzDQo+ID4gZTQ2MGExODBkY2M0Y2QxNGM0ZQ0KPiA+ID4+IC0t LSAvZGV2L251bGwNCj4gPiA+PiArKysgYi9TaGVsbFBrZy9JbmNsdWRlL0xpYnJhcnkvQWNwaVZp ZXcvQWNwaVBhcnNlci5oDQo+ID4gPj4gQEAgLTAsMCArMSw0NDkgQEANCj4gPiA+PiArLyoqDQo+ ID4gPj4gKyAgSGVhZGVyIGZpbGUgZm9yIEFDUEkgcGFyc2VyDQo+ID4gPj4gKw0KPiA+ID4+ICsg IENvcHlyaWdodCAoYykgMjAxNiAtIDIwMTgsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2Vy dmVkLg0KPiA+ID4+ICsgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlh bHMNCj4gPiA+PiArICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0 ZXJtcyBhbmQgY29uZGl0aW9ucyBvZg0KPiB0aGUNCj4gPiBCU0QgTGljZW5zZQ0KPiA+ID4+ICsg IHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0 aGUgbGljZW5zZSBtYXkNCj4gYmUNCj4gPiBmb3VuZCBhdA0KPiA+ID4+ICsgIGh0dHA6Ly9vcGVu c291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4gPiA+PiArDQo+ID4gPj4gKyAg VEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJB Uw0KPiBJUyINCj4gPiBCQVNJUywNCj4gPiA+PiArICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQ UkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVINCj4gPiBFWFBSRVNTIE9SIElNUExJRUQu DQo+ID4gPj4gKyoqLw0KPiA+ID4+ICsNCj4gPiA+PiArI2lmbmRlZiBBQ1BJUEFSU0VSX0hfDQo+ ID4gPj4gKyNkZWZpbmUgQUNQSVBBUlNFUl9IXw0KPiA+ID4+ICsNCj4gPiA+PiArI2RlZmluZSBP VVRQVVRfRklFTERfQ09MVU1OX1dJRFRIICAzNg0KPiA+ID4+ICsNCj4gPiA+PiArLy8vIFRoZSBS U0RQIHRhYmxlIHNpZ25hdHVyZSBpcyAiUlNEIFBUUiAiICg4IGJ5dGVzKQ0KPiA+ID4+ICsvLy8g SG93ZXZlciBUaGUgc2lnbmF0dXJlIGZvciBBQ1BJIHRhYmxlcyBpcyA0IGJ5dGVzLg0KPiA+ID4+ ICsvLy8gVG8gd29yayBhcm91bmQgdGhpcyBvZGRpdHkgZGVmaW5lIGEgc2lnbmF0dXJlIHR5cGUN Cj4gPiA+PiArLy8vIHRoYXQgYWxsb3dzIHVzIHRvIHByb2Nlc3MgdGhlIGxvZyBvcHRpb25zLg0K PiA+ID4+ICsjZGVmaW5lIFJTRFBfVEFCTEVfSU5GTyAgU0lHTkFUVVJFXzMyKCdSJywgJ1MnLCAn RCcsICdQJykNCj4gPiA+PiArDQo+ID4gPj4gKy8qKiBUaGlzIGZ1bmN0aW9uIGluY3JlbWVudHMg dGhlIEFDUEkgdGFibGUgZXJyb3IgY291bnRlci4NCj4gPiA+PiArKi8NCj4gPiA+PiArVk9JRA0K PiA+ID4+ICtFRklBUEkNCj4gPiA+PiArSW5jcmVtZW50RXJyb3JDb3VudCAoDQo+ID4gPj4gKyAg Vk9JRA0KPiA+ID4+ICsgICk7DQo+ID4gPj4gKw0KPiA+ID4+ICsvKiogVGhpcyBmdW5jdGlvbiBp bmNyZW1lbnRzIHRoZSBBQ1BJIHRhYmxlIHdhcm5pbmcgY291bnRlci4NCj4gPiA+PiArKi8NCj4g PiA+PiArVk9JRA0KPiA+ID4+ICtFRklBUEkNCj4gPiA+PiArSW5jcmVtZW50V2FybmluZ0NvdW50 ICgNCj4gPiA+PiArICBWT0lEDQo+ID4gPj4gKyAgKTsNCj4gPiA+PiArDQo+ID4gPj4gKy8qKiBU aGlzIGZ1bmN0aW9uIHZlcmlmaWVzIHRoZSBBQ1BJIHRhYmxlIGNoZWNrc3VtLg0KPiA+ID4+ICsN Cj4gPiA+PiArICBUaGlzIGZ1bmN0aW9uIHZlcmlmaWVzIHRoZSBjaGVja3N1bSBmb3IgdGhlIEFD UEkgdGFibGUgYW5kIG9wdGlvbmFsbHkNCj4gPiA+PiArICBwcmludHMgdGhlIHN0YXR1cy4NCj4g PiA+PiArDQo+ID4gPj4gKyAgQHBhcmFtIFtpbl0gTG9nICAgICBJZiBUUlVFIGxvZyB0aGUgc3Rh dHVzIG9mIHRoZSBjaGVja3N1bS4NCj4gPiA+PiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50 ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSB0YWJsZSBidWZmZXIuDQo+ID4gPj4gKyAgQHBhcmFtIFtp bl0gTGVuZ3RoICBUaGUgbGVuZ3RoIG9mIHRoZSBidWZmZXIuDQo+ID4gPj4gKw0KPiA+ID4+ICsg IEByZXR2YWwgVFJVRSAgICAgICAgIFRoZSBjaGVja3N1bSBpcyBPSy4NCj4gPiA+PiArICBAcmV0 dmFsIEZBTFNFICAgICAgICBUaGUgY2hlY2tzdW0gZmFpbGVkLg0KPiA+ID4+ICsqLw0KPiA+ID4+ ICtCT09MRUFODQo+ID4gPj4gK0VGSUFQSQ0KPiA+ID4+ICtWZXJpZnlDaGVja3N1bSAoDQo+ID4g Pj4gKyAgSU4gQk9PTEVBTiBMb2csDQo+ID4gPj4gKyAgSU4gVUlOVDgqICBQdHIsDQo+ID4gPj4g KyAgSU4gVUlOVDMyICBMZW5ndGgNCj4gPiA+PiArICApOw0KPiA+ID4+ICsNCj4gPiA+PiArLyoq IFRoaXMgZnVuY3Rpb24gcGVyZm9ybXMgYSByYXcgZGF0YSBkdW1wIG9mIHRoZSBBQ1BJIHRhYmxl Lg0KPiA+ID4+ICsNCj4gPiA+PiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhl IHN0YXJ0IG9mIHRoZSB0YWJsZSBidWZmZXIuDQo+ID4gPj4gKyAgQHBhcmFtIFtpbl0gTGVuZ3Ro ICBUaGUgbGVuZ3RoIG9mIHRoZSBidWZmZXIuDQo+ID4gPj4gKyovDQo+ID4gPj4gK1ZPSUQNCj4g PiA+PiArRUZJQVBJDQo+ID4gPj4gK0R1bXBSYXcgKA0KPiA+ID4+ICsgIElOIFVJTlQ4KiBQdHIs DQo+ID4gPj4gKyAgSU4gVUlOVDMyIExlbmd0aA0KPiA+ID4+ICsgICk7DQo+ID4gPj4gKw0KPiA+ ID4+ICsvKiogVGhpcyBmdW5jdGlvbiB0cmFjZXMgMSBieXRlIG9mIGRhdHVtIGFzIHNwZWNpZmll ZCBpbiB0aGUNCj4gPiA+PiArICAgIGZvcm1hdCBzdHJpbmcuDQo+ID4gPj4gKw0KPiA+ID4+ICsg IEBwYXJhbSBbaW5dIEZvcm1hdCAgVGhlIGZvcm1hdCBzdHJpbmcgZm9yIHRyYWNpbmcgdGhlIGRh dGEuDQo+ID4gPj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBv ZiB0aGUgYnVmZmVyLg0KPiA+ID4+ICsqLw0KPiA+ID4+ICtWT0lEDQo+ID4gPj4gK0VGSUFQSQ0K PiA+ID4+ICtEdW1wVWludDggKA0KPiA+ID4+ICsgIElOIENPTlNUIENIQVIxNiogRm9ybWF0LA0K PiA+ID4+ICsgIElOIFVJTlQ4KiAgICAgICAgUHRyDQo+ID4gPj4gKyAgKTsNCj4gPiA+PiArDQo+ ID4gPj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHRyYWNlcyAyIGJ5dGVzIG9mIGRhdGEgYXMgc3BlY2lm aWVkIGluIHRoZQ0KPiA+ID4+ICsgICAgZm9ybWF0IHN0cmluZy4NCj4gPiA+PiArDQo+ID4gPj4g KyAgQHBhcmFtIFtpbl0gRm9ybWF0ICBUaGUgZm9ybWF0IHN0cmluZyBmb3IgdHJhY2luZyB0aGUg ZGF0YS4NCj4gPiA+PiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0 IG9mIHRoZSBidWZmZXIuDQo+ID4gPj4gKyovDQo+ID4gPj4gK1ZPSUQNCj4gPiA+PiArRUZJQVBJ DQo+ID4gPj4gK0R1bXBVaW50MTYgKA0KPiA+ID4+ICsgIElOIENPTlNUIENIQVIxNiogRm9ybWF0 LA0KPiA+ID4+ICsgIElOIFVJTlQ4KiAgICAgICAgUHRyDQo+ID4gPj4gKyAgKTsNCj4gPiA+PiAr DQo+ID4gPj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHRyYWNlcyA0IGJ5dGVzIG9mIGRhdGEgYXMgc3Bl Y2lmaWVkIGluIHRoZQ0KPiA+ID4+ICsgICAgZm9ybWF0IHN0cmluZy4NCj4gPiA+PiArDQo+ID4g Pj4gKyAgQHBhcmFtIFtpbl0gRm9ybWF0ICBUaGUgZm9ybWF0IHN0cmluZyBmb3IgdHJhY2luZyB0 aGUgZGF0YS4NCj4gPiA+PiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0 YXJ0IG9mIHRoZSBidWZmZXIuDQo+ID4gPj4gKyovDQo+ID4gPj4gK1ZPSUQNCj4gPiA+PiArRUZJ QVBJDQo+ID4gPj4gK0R1bXBVaW50MzIgKA0KPiA+ID4+ICsgIElOIENPTlNUIENIQVIxNiogRm9y bWF0LA0KPiA+ID4+ICsgIElOIFVJTlQ4KiAgICAgICAgUHRyDQo+ID4gPj4gKyAgKTsNCj4gPiA+ PiArDQo+ID4gPj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHRyYWNlcyA4IGJ5dGVzIG9mIGRhdGEgYXMg c3BlY2lmaWVkIGJ5IHRoZQ0KPiA+ID4+ICsgICAgZm9ybWF0IHN0cmluZy4NCj4gPiA+PiArDQo+ ID4gPj4gKyAgQHBhcmFtIFtpbl0gRm9ybWF0ICBUaGUgZm9ybWF0IHN0cmluZyBmb3IgdHJhY2lu ZyB0aGUgZGF0YS4NCj4gPiA+PiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhl IHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ID4gPj4gKyovDQo+ID4gPj4gK1ZPSUQNCj4gPiA+PiAr RUZJQVBJDQo+ID4gPj4gK0R1bXBVaW50NjQgKA0KPiA+ID4+ICsgIElOIENPTlNUIENIQVIxNiog Rm9ybWF0LA0KPiA+ID4+ICsgIElOIFVJTlQ4KiAgICAgICAgUHRyDQo+ID4gPj4gKyAgKTsNCj4g PiA+PiArDQo+ID4gPj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHRyYWNlcyAzIGNoYXJhY3RlcnMgd2hp Y2ggY2FuIGJlIG9wdGlvbmFsbHkNCj4gPiA+PiArICAgZm9ybWF0ZWQgdXNpbmcgdGhlIGZvcm1h dCBzdHJpbmcgaWYgc3BlY2lmaWVkLg0KPiA+ID4+ICsNCj4gPiA+PiArICBJZiBubyBmb3JtYXQg c3RyaW5nIGlzIHNwZWNpZmllZCB0aGUgRm9ybWF0IG11c3QgYmUgTlVMTC4NCj4gPiA+PiArDQo+ ID4gPj4gKyAgQHBhcmFtIFtpbl0gRm9ybWF0ICBPcHRpb25hbCBmb3JtYXQgc3RyaW5nIGZvciB0 cmFjaW5nIHRoZSBkYXRhLg0KPiA+ID4+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0 byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gPiA+PiArKi8NCj4gPiA+PiArVk9JRA0KPiA+ ID4+ICtFRklBUEkNCj4gPiA+PiArRHVtcDNDaGFycyAoDQo+ID4gPj4gKyAgSU4gQ09OU1QgQ0hB UjE2KiBGb3JtYXQgT1BUSU9OQUwsDQo+ID4gPj4gKyAgSU4gVUlOVDgqICAgICAgICBQdHINCj4g PiA+PiArICApOw0KPiA+ID4+ICsNCj4gPiA+PiArLyoqIFRoaXMgZnVuY3Rpb24gdHJhY2VzIDQg Y2hhcmFjdGVycyB3aGljaCBjYW4gYmUgb3B0aW9uYWxseQ0KPiA+ID4+ICsgICBmb3JtYXRlZCB1 c2luZyB0aGUgZm9ybWF0IHN0cmluZyBpZiBzcGVjaWZpZWQuDQo+ID4gPj4gKw0KPiA+ID4+ICsg IElmIG5vIGZvcm1hdCBzdHJpbmcgaXMgc3BlY2lmaWVkIHRoZSBGb3JtYXQgbXVzdCBiZSBOVUxM Lg0KPiA+ID4+ICsNCj4gPiA+PiArICBAcGFyYW0gW2luXSBGb3JtYXQgIE9wdGlvbmFsIGZvcm1h dCBzdHJpbmcgZm9yIHRyYWNpbmcgdGhlIGRhdGEuDQo+ID4gPj4gKyAgQHBhcmFtIFtpbl0gUHRy ICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiA+ID4+ICsqLw0KPiA+ ID4+ICtWT0lEDQo+ID4gPj4gK0VGSUFQSQ0KPiA+ID4+ICtEdW1wNENoYXJzICgNCj4gPiA+PiAr ICBJTiBDT05TVCBDSEFSMTYqIEZvcm1hdCBPUFRJT05BTCwNCj4gPiA+PiArICBJTiBVSU5UOCog ICAgICAgIFB0cg0KPiA+ID4+ICsgICk7DQo+ID4gPj4gKw0KPiA+ID4+ICsvKiogVGhpcyBmdW5j dGlvbiB0cmFjZXMgNiBjaGFyYWN0ZXJzIHdoaWNoIGNhbiBiZSBvcHRpb25hbGx5DQo+ID4gPj4g KyAgIGZvcm1hdGVkIHVzaW5nIHRoZSBmb3JtYXQgc3RyaW5nIGlmIHNwZWNpZmllZC4NCj4gPiA+ PiArDQo+ID4gPj4gKyAgSWYgbm8gZm9ybWF0IHN0cmluZyBpcyBzcGVjaWZpZWQgdGhlIEZvcm1h dCBtdXN0IGJlIE5VTEwuDQo+ID4gPj4gKw0KPiA+ID4+ICsgIEBwYXJhbSBbaW5dIEZvcm1hdCAg T3B0aW9uYWwgZm9ybWF0IHN0cmluZyBmb3IgdHJhY2luZyB0aGUgZGF0YS4NCj4gPiA+PiArICBA cGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ ID4gPj4gKyovDQo+ID4gPj4gK1ZPSUQNCj4gPiA+PiArRUZJQVBJDQo+ID4gPj4gK0R1bXA2Q2hh cnMgKA0KPiA+ID4+ICsgIElOIENPTlNUIENIQVIxNiogRm9ybWF0IE9QVElPTkFMLA0KPiA+ID4+ ICsgIElOIFVJTlQ4KiAgICAgICAgUHRyDQo+ID4gPj4gKyAgKTsNCj4gPiA+PiArDQo+ID4gPj4g Ky8qKiBUaGlzIGZ1bmN0aW9uIHRyYWNlcyA4IGNoYXJhY3RlcnMgd2hpY2ggY2FuIGJlIG9wdGlv bmFsbHkNCj4gPiA+PiArICAgZm9ybWF0ZWQgdXNpbmcgdGhlIGZvcm1hdCBzdHJpbmcgaWYgc3Bl Y2lmaWVkLg0KPiA+ID4+ICsNCj4gPiA+PiArICBJZiBubyBmb3JtYXQgc3RyaW5nIGlzIHNwZWNp ZmllZCB0aGUgRm9ybWF0IG11c3QgYmUgTlVMTC4NCj4gPiA+PiArDQo+ID4gPj4gKyAgQHBhcmFt IFtpbl0gRm9ybWF0ICBPcHRpb25hbCBmb3JtYXQgc3RyaW5nIGZvciB0cmFjaW5nIHRoZSBkYXRh Lg0KPiA+ID4+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2Yg dGhlIGJ1ZmZlci4NCj4gPiA+PiArKi8NCj4gPiA+PiArVk9JRA0KPiA+ID4+ICtFRklBUEkNCj4g PiA+PiArRHVtcDhDaGFycyAoDQo+ID4gPj4gKyAgSU4gQ09OU1QgQ0hBUjE2KiBGb3JtYXQgT1BU SU9OQUwsDQo+ID4gPj4gKyAgSU4gVUlOVDgqICAgICAgICBQdHINCj4gPiA+PiArICApOw0KPiA+ ID4+ICsNCj4gPiA+PiArLyoqIFRoaXMgZnVuY3Rpb24gaW5kZW50cyBhbmQgcHJpbnRzIHRoZSBB Q1BJIHRhYmxlIEZpZWxkIE5hbWUuDQo+ID4gPj4gKw0KPiA+ID4+ICsgIEBwYXJhbSBbaW5dIElu ZGVudCAgICAgIE51bWJlciBvZiBzcGFjZXMgdG8gYWRkIHRvIHRoZSBnbG9iYWwgdGFibGUNCj4g PiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRlbnQuIFRoZSBnbG9iYWwgdGFibGUg aW5kZW50IGlzIDAgYnkgZGVmYXVsdDsNCj4gPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAg ICBob3dldmVyIHRoaXMgdmFsdWUgaXMgdXBkYXRlZCBvbiBlbnRyeSB0byB0aGUNCj4gPiA+PiAr ICAgICAgICAgICAgICAgICAgICAgICAgICBQYXJzZUFjcGkoKSBieSBhZGRpbmcgdGhlIGluZGVu dCB2YWx1ZQ0KPiA+IHByb3ZpZGVkIHRvDQo+ID4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgUGFyc2VBY3BpKCkgYW5kIHJlc3RvcmVkIGJhY2sgb24gZXhpdC4NCj4gPiBUaGVyZWZvcmUN Cj4gPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgdG90YWwgaW5kZW50IGluIHRo ZSBvdXRwdXQgaXMgZGVwZW5kZW50IG9uDQo+ID4gZnJvbQ0KPiA+ID4+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgIHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkLg0KPiA+ID4+ICsgIEBw YXJhbSBbaW5dIEZpZWxkTmFtZSAgIFBvaW50ZXIgdG8gdGhlIEZpZWxkIE5hbWUuDQo+ID4gPj4g KyovDQo+ID4gPj4gK1ZPSUQNCj4gPiA+PiArRUZJQVBJDQo+ID4gPj4gK1ByaW50RmllbGROYW1l ICgNCj4gPiA+PiArICBJTiBVSU5UMzIgICAgICAgICBJbmRlbnQsDQo+ID4gPj4gKyAgSU4gQ09O U1QgQ0hBUjE2KiAgRmllbGROYW1lDQo+ID4gPj4gKyk7DQo+ID4gPj4gKw0KPiA+ID4+ICsvKiog VGhpcyBmdW5jdGlvbiBwb2ludGVyIGlzIHRoZSB0ZW1wbGF0ZSBmb3IgY3VzdG9taXppbmcgdGhl IHRyYWNlDQo+IG91dHB1dA0KPiA+ID4+ICsNCj4gPiA+PiArICBAcGFyYW0gW2luXSBGb3JtYXQg IEZvcm1hdCBzdHJpbmcgZm9yIHRyYWNpbmcgdGhlIGRhdGEgYXMgc3BlY2lmaWVkIGJ5DQo+ID4g Pj4gKyAgICAgICAgICAgICAgICAgICAgICB0aGUgJ0Zvcm1hdCcgbWVtYmVyIG9mIEFDUElfUEFS U0VSLg0KPiA+ID4+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQg b2YgdGhlIGJ1ZmZlci4NCj4gPiA+PiArKi8NCj4gPiA+PiArdHlwZWRlZiBWT0lEIChFRklBUEkg KkZOUFRSX1BSSU5UX0ZPUk1BVFRFUikoQ09OU1QgQ0hBUjE2Kg0KPiA+IEZvcm1hdCwgVUlOVDgq IFB0cik7DQo+ID4gPj4gKw0KPiA+ID4+ICsvKiogVGhpcyBmdW5jdGlvbiBwb2ludGVyIGlzIHRo ZSB0ZW1wbGF0ZSBmb3IgdmFsaWRhdGluZyBhbiBBQ1BJIHRhYmxlDQo+IGZpZWxkLg0KPiA+ID4+ ICsNCj4gPiA+PiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9m IHRoZSBmaWVsZCBkYXRhLg0KPiA+ID4+ICsgIEBwYXJhbSBbaW5dIENvbnRleHQgUG9pbnRlciB0 byBjb250ZXh0IHNwZWNpZmljIGluZm9ybWF0aW9uIGFzDQo+IHNwZWNpZmllZA0KPiA+IGJ5DQo+ ID4gPj4gKyAgICAgICAgICAgICAgICAgICAgICB0aGUgJ0NvbnRleHQnIG1lbWJlciBvZiB0aGUg QUNQSV9QQVJTRVIuDQo+ID4gPj4gKyAgICAgICAgICAgICAgICAgICAgICBlLmcuIHRoaXMgY291 bGQgYmUgYSBwb2ludGVyIHRvIHRoZSBBQ1BJIHRhYmxlDQo+ID4gaGVhZGVyLg0KPiA+ID4+ICsq Lw0KPiA+ID4+ICt0eXBlZGVmIFZPSUQgKEVGSUFQSSAqRk5QVFJfRklFTERfVkFMSURBVE9SKShV SU5UOCogUHRyLCBWT0lEKg0KPiA+IENvbnRleHQpOw0KPiA+ID4+ICsNCj4gPiA+PiArLyoqIFRo ZSBBQ1BJX1BBUlNFUiBzdHJ1Y3R1cmUgZGVzY3JpYmVzIHRoZSBmaWVsZHMgb2YgYW4gQUNQSSB0 YWJsZQ0KPiBhbmQNCj4gPiA+PiArICAgIHByb3ZpZGVzIG1lYW5zIGZvciB0aGUgcGFyc2VyIHRv IGludGVycHJldCBhbmQgdHJhY2UgYXBwcm9wcmlhdGVseS4NCj4gPiA+PiArDQo+ID4gPj4gKyAg VGhlIGZpcnN0IHRocmVlIG1lbWJlcnMgYXJlIHBvcHVsYXRlZCBiYXNlZCBvbiBpbmZvcm1hdGlv biBwcmVzZW50DQo+IGluDQo+ID4gPj4gKyAgaW4gdGhlIEFDUEkgdGFibGUgc3BlY2lmaWNhdGlv bnMuIFRoZSByZW1haW5pbmcgbWVtYmVycyBkZXNjcmliZQ0KPiBob3cNCj4gPiA+PiArICB0aGUg cGFyc2VyIHNob3VsZCByZXBvcnQgdGhlIGZpZWxkIGluZm9ybWF0aW9uLCB2YWxpZGF0ZSB0aGUg ZmllbGQgZGF0YQ0KPiA+ID4+ICsgIGFuZC9vciB1cGRhdGUgYW4gZXh0ZXJuYWwgcG9pbnRlciB0 byB0aGUgZmllbGQgKEl0ZW1QdHIpLg0KPiA+ID4+ICsNCj4gPiA+PiArICBQYXJzZUFjcGkoKSB1 c2VzIHRoZSBmb3JtYXQgc3RyaW5nIHNwZWNpZmllZCBieSAnRm9ybWF0JyBmb3IgdHJhY2luZw0K PiA+ID4+ICsgIHRoZSBmaWVsZCBkYXRhLiBJZiB0aGUgZmllbGQgaXMgbW9yZSBjb21wbGV4IGFu ZCByZXF1aXJlcyBhZGRpdGlvbmFsDQo+ID4gPj4gKyAgcHJvY2Vzc2luZyBmb3IgZm9ybWF0dGlu ZyBhbmQgcmVwcmVzZW50YXRpb24gYSBwcmludCBmb3JtYXR0ZXINCj4gZnVuY3Rpb24NCj4gPiA+ PiArICBjYW4gYmUgc3BlY2lmaWVkIGluICdQcmludEZvcm1hdHRlcicuDQo+ID4gPj4gKyAgVGhl IFByaW50Rm9ybWF0dGVyIGZ1bmN0aW9uIG1heSBjaG9vc2UgdG8gdXNlIHRoZSBmb3JtYXQgc3Ry aW5nDQo+ID4gPj4gKyAgc3BlY2lmaWVkIGJ5ICdGb3JtYXQnIG9yIHVzZSBpdHMgb3duIGludGVy bmFsIGZvcm1hdCBzdHJpbmcuDQo+ID4gPj4gKw0KPiA+ID4+ICsgIFRoZSAnRm9ybWF0JyBhbmQg J1ByaW50Rm9ybWF0dGVyJyBtZW1iZXJzIGFsbG93IGZsZXhpYmlsaXR5IGZvcg0KPiA+ID4+ICsg IHJlcHJlc2VudGluZyB0aGUgZmllbGQgZGF0YS4NCj4gPiA+PiArKi8NCj4gPiA+PiArdHlwZWRl ZiBzdHJ1Y3QgQWNwaVBhcnNlciB7DQo+ID4gPj4gKw0KPiA+ID4+ICsgIC8vLyBTdHJpbmcgZGVz Y3JpYmluZyB0aGUgQUNQSSB0YWJsZSBmaWVsZA0KPiA+ID4+ICsgIC8vLyAoRmllbGQgY29sdW1u IGZyb20gQUNQSSB0YWJsZSBzcGVjKQ0KPiA+ID4+ICsgIENPTlNUIENIQVIxNiogICAgICAgICBO YW1lU3RyOw0KPiA+ID4+ICsNCj4gPiA+PiArICAvLy8gVGhlIGxlbmd0aCBvZiB0aGUgZmllbGQu DQo+ID4gPj4gKyAgLy8vIChCeXRlIExlbmd0aCBjb2x1bW4gZnJvbSBBQ1BJIHRhYmxlIHNwZWMp DQo+ID4gPj4gKyAgVUlOVDMyICAgICAgICAgICAgICAgIExlbmd0aDsNCj4gPiA+PiArDQo+ID4g Pj4gKyAgLy8vIFRoZSBvZmZzZXQgb2YgdGhlIGZpZWxkIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSB0 YWJsZS4NCj4gPiA+PiArICAvLy8gKEJ5dGUgT2Zmc2V0IGNvbHVtbiBmcm9tIEFDUEkgdGFibGUg c3BlYykNCj4gPiA+PiArICBVSU5UMzIgICAgICAgICAgICAgICAgT2Zmc2V0Ow0KPiA+ID4+ICsN Cj4gPiA+PiArICAvLy8gT3B0aW9uYWwgUHJpbnQoKSBzdHlsZSBmb3JtYXQgc3RyaW5nIGZvciB0 cmFjaW5nIHRoZSBkYXRhLiBJZiBub3QNCj4gPiA+PiArICAvLy8gdXNlZCB0aGlzIG11c3QgYmUg c2V0IHRvIE5VTEwuDQo+ID4gPj4gKyAgQ09OU1QgQ0hBUjE2KiAgICAgICAgIEZvcm1hdDsNCj4g PiA+PiArDQo+ID4gPj4gKyAgLy8vIE9wdGlvbmFsIHBvaW50ZXIgdG8gYSBwcmludCBmb3JtYXR0 ZXIgZnVuY3Rpb24gd2hpY2gNCj4gPiA+PiArICAvLy8gaXMgdHlwaWNhbGx5IHVzZWQgdG8gdHJh Y2UgY29tcGxleCBmaWVsZCBpbmZvcm1hdGlvbi4NCj4gPiA+PiArICAvLy8gSWYgbm90IHVzZWQg dGhpcyBtdXN0IGJlIHNldCB0byBOVUxMLg0KPiA+ID4+ICsgIC8vLyBUaGUgRm9ybWF0IHN0cmlu ZyBpcyBwYXNzZWQgdG8gdGhlIFByaW50Rm9ybWF0dGVyIGZ1bmN0aW9uDQo+ID4gPj4gKyAgLy8v IGJ1dCBtYXkgYmUgaWdub3JlZCBieSB0aGUgaW1wbGVtZW50YXRpb24gY29kZS4NCj4gPiA+PiAr ICBGTlBUUl9QUklOVF9GT1JNQVRURVIgUHJpbnRGb3JtYXR0ZXI7DQo+ID4gPj4gKw0KPiA+ID4+ ICsgIC8vLyBPcHRpb25hbCBwb2ludGVyIHdoaWNoIG1heSBiZSBzZXQgdG8gcmVxdWVzdCB0aGUg cGFyc2VyIHRvIHVwZGF0ZQ0KPiA+ID4+ICsgIC8vLyBhIHBvaW50ZXIgdG8gdGhlIGZpZWxkIGRh dGEuIElmIHVudXNlZCB0aGlzIG11c3QgYmUgc2V0IHRvIE5VTEwuDQo+ID4gPj4gKyAgVk9JRCoq ICAgICAgICAgICAgICAgIEl0ZW1QdHI7DQo+ID4gPj4gKw0KPiA+ID4+ICsgIC8vLyBPcHRpb25h bCBwb2ludGVyIHRvIGEgZmllbGQgdmFsaWRhdG9yIGZ1bmN0aW9uLg0KPiA+ID4+ICsgIC8vLyBU aGUgZnVuY3Rpb24gc2hvdWxkIGRpcmVjdGx5IHJlcG9ydCBhbnkgYXBwcm9wcmlhdGUgZXJyb3Ig b3INCj4gd2FybmluZw0KPiA+ID4+ICsgIC8vLyBhbmQgaW52b2tlIHRoZSBhcHByb3ByaWF0ZSBj b3VudGVyIHVwZGF0ZSBmdW5jdGlvbi4NCj4gPiA+PiArICAvLy8gSWYgbm90IHVzZWQgdGhpcyBw YXJhbWV0ZXIgbXVzdCBiZSBzZXQgdG8gTlVMTC4NCj4gPiA+PiArICBGTlBUUl9GSUVMRF9WQUxJ REFUT1IgRmllbGRWYWxpZGF0b3I7DQo+ID4gPj4gKw0KPiA+ID4+ICsgIC8vLyBPcHRpb25hbCBw b2ludGVyIHRvIGNvbnRleHQgc3BlY2lmaWMgaW5mb3JtYXRpb24sDQo+ID4gPj4gKyAgLy8vIHdo aWNoIHRoZSBGaWVsZCBWYWxpZGF0b3IgZnVuY3Rpb24gY2FuIHVzZSB0byBkZXRlcm1pbmUNCj4g PiA+PiArICAvLy8gYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgQUNQSSB0YWJsZSBh bmQgbWFrZQ0KPiA+ID4+ICsgIC8vLyBkZWNpc2lvbnMgYWJvdXQgdGhlIGZpZWxkIGJlaW5nIHZh bGlkYXRlZC4NCj4gPiA+PiArICAvLy8gZS5nLiB0aGlzIGNvdWxkIGJlIGEgcG9pbnRlciB0byB0 aGUgQUNQSSB0YWJsZSBoZWFkZXINCj4gPiA+PiArICBWT0lEKiAgICAgICAgICAgICAgICAgQ29u dGV4dDsNCj4gPiA+PiArfSBBQ1BJX1BBUlNFUjsNCj4gPiA+PiArDQo+ID4gPj4gKy8qKiBBIHN0 cnVjdHVyZSB1c2VkIHRvIHN0b3JlIHRoZSBwb2ludGVycyB0byB0aGUgbWVtYmVycyBvZiB0aGUN Cj4gPiA+PiArICAgIEFDUEkgZGVzY3JpcHRpb24gaGVhZGVyIHN0cnVjdHVyZSB0aGF0IHdhcyBw YXJzZWQuDQo+ID4gPj4gKyovDQo+ID4gPj4gK3R5cGVkZWYgc3RydWN0IEFjcGlEZXNjcmlwdGlv bkhlYWRlckluZm8gew0KPiA+ID4+ICsgIC8vLyBBQ1BJIHRhYmxlIHNpZ25hdHVyZQ0KPiA+ID4+ ICsgIFVJTlQzMiogU2lnbmF0dXJlOw0KPiA+ID4+ICsgIC8vLyBMZW5ndGggb2YgdGhlIEFDUEkg dGFibGUNCj4gPiA+PiArICBVSU5UMzIqIExlbmd0aDsNCj4gPiA+PiArICAvLy8gUmV2aXNpb24N Cj4gPiA+PiArICBVSU5UOCogIFJldmlzaW9uOw0KPiA+ID4+ICsgIC8vLyBDaGVja3N1bQ0KPiA+ ID4+ICsgIFVJTlQ4KiAgQ2hlY2tzdW07DQo+ID4gPj4gKyAgLy8vIE9FTSBJZCAtIGxlbmd0aCBp cyA2IGJ5dGVzDQo+ID4gPj4gKyAgVUlOVDgqICBPZW1JZDsNCj4gPiA+PiArICAvLy8gT0VNIHRh YmxlIElkDQo+ID4gPj4gKyAgVUlOVDY0KiBPZW1UYWJsZUlkOw0KPiA+ID4+ICsgIC8vLyBPRU0g cmV2aXNpb24gSWQNCj4gPiA+PiArICBVSU5UMzIqIE9lbVJldmlzaW9uOw0KPiA+ID4+ICsgIC8v LyBDcmVhdG9yIElkDQo+ID4gPj4gKyAgVUlOVDMyKiBDcmVhdG9ySWQ7DQo+ID4gPj4gKyAgLy8v IENyZWF0b3IgcmV2aXNpb24NCj4gPiA+PiArICBVSU5UMzIqIENyZWF0b3JSZXZpc2lvbjsNCj4g PiA+PiArfSBBQ1BJX0RFU0NSSVBUSU9OX0hFQURFUl9JTkZPOw0KPiA+ID4+ICsNCj4gPiA+PiAr LyoqIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBwYXJzZSBhbiBBQ1BJIHRhYmxlIGJ1ZmZlci4N Cj4gPiA+PiArDQo+ID4gPj4gKyAgVGhlIEFDUEkgdGFibGUgYnVmZmVyIGlzIHBhcnNlZCB1c2lu ZyB0aGUgQUNQSSB0YWJsZSBwYXJzZXINCj4gaW5mb3JtYXRpb24NCj4gPiA+PiArICBzcGVjaWZp ZWQgYnkgYSBwb2ludGVyIHRvIGFuIGFycmF5IG9mIEFDUElfUEFSU0VSIGVsZW1lbnRzLiBUaGlz DQo+IHBhcnNlcg0KPiA+ID4+ICsgIGZ1bmN0aW9uIGl0ZXJhdGVzIHRocm91Z2ggZWFjaCBpdGVt IG9uIHRoZSBBQ1BJX1BBUlNFUiBhcnJheSBhbmQNCj4gbG9ncw0KPiA+IHRoZQ0KPiA+ID4+ICsg IEFDUEkgdGFibGUgZmllbGRzLg0KPiA+ID4+ICsNCj4gPiA+PiArICBUaGlzIGZ1bmN0aW9uIGNh biBvcHRpb25hbGx5IGJlIHVzZWQgdG8gcGFyc2UgQUNQSSB0YWJsZXMgYW5kIGZldGNoDQo+IHNw ZWNpZmljDQo+ID4gPj4gKyAgZmllbGQgdmFsdWVzLiBUaGUgSXRlbVB0ciBtZW1iZXIgb2YgdGhl IEFDUElfUEFSU0VSIHN0cnVjdHVyZQ0KPiAod2hlcmUNCj4gPiB1c2VkKQ0KPiA+ID4+ICsgIGlz IHVwZGF0ZWQgYnkgdGhpcyBwYXJzZXIgZnVuY3Rpb24gdG8gcG9pbnQgdG8gdGhlIHNlbGVjdGVk IGZpZWxkIGRhdGENCj4gPiA+PiArICAoZS5nLiB1c2VmdWwgZm9yIHZhcmlhYmxlIGxlbmd0aCBu ZXN0ZWQgZmllbGRzKS4NCj4gPiA+PiArDQo+ID4gPj4gKyAgQHBhcmFtIFtpbl0gVHJhY2UgICAg ICAgIFRyYWNlIHRoZSBBQ1BJIGZpZWxkcyBUUlVFIGVsc2Ugb25seSBwYXJzZSB0aGUNCj4gPiA+ PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGUuDQo+ID4gPj4gKyAgQHBhcmFtIFtp bl0gSW5kZW50ICAgICAgIE51bWJlciBvZiBzcGFjZXMgdG8gaW5kZW50IHRoZSBvdXRwdXQuDQo+ ID4gPj4gKyAgQHBhcmFtIFtpbl0gQXNjaWlOYW1lICAgIE9wdGlvbmFsIHBvaW50ZXIgdG8gYW4g QVNDSUkgc3RyaW5nIHRoYXQNCj4gPiBkZXNjcmliZXMNCj4gPiA+PiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgdGhlIHRhYmxlIGJlaW5nIHBhcnNlZC4NCj4gPiA+PiArICBAcGFyYW0gW2lu XSBQdHIgICAgICAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gPiA+ PiArICBAcGFyYW0gW2luXSBMZW5ndGggICAgICAgTGVuZ3RoIG9mIHRoZSBidWZmZXIgcG9pbnRl ZCBieSBQdHIuDQo+ID4gPj4gKyAgQHBhcmFtIFtpbl0gUGFyc2VyICAgICAgIFBvaW50ZXIgdG8g YW4gYXJyYXkgb2YgQUNQSV9QQVJTRVIgc3RydWN0dXJlDQo+ID4gdGhhdA0KPiA+ID4+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmliZXMgdGhlIHRhYmxlIGJlaW5nIHBhcnNlZC4N Cj4gPiA+PiArICBAcGFyYW0gW2luXSBQYXJzZXJJdGVtcyAgTnVtYmVyIG9mIGl0ZW1zIGluIHRo ZSBBQ1BJX1BBUlNFUiBhcnJheS4NCj4gPiA+PiArDQo+ID4gPj4gKyAgQHJldHZhbCBOdW1iZXIg b2YgYnl0ZXMgcGFyc2VkLg0KPiA+ID4+ICsqLw0KPiA+ID4+ICtVSU5UMzINCj4gPiA+PiArRUZJ QVBJDQo+ID4gPj4gK1BhcnNlQWNwaSAoDQo+ID4gPj4gKyAgSU4gQk9PTEVBTiAgICAgICAgICAg IFRyYWNlLA0KPiA+ID4+ICsgIElOIFVJTlQzMiAgICAgICAgICAgICBJbmRlbnQsDQo+ID4gPj4g KyAgSU4gQ09OU1QgQ0hBUjgqICAgICAgIEFzY2lpTmFtZSBPUFRJT05BTCwNCj4gPiA+PiArICBJ TiBVSU5UOCogICAgICAgICAgICAgUHRyLA0KPiA+ID4+ICsgIElOIFVJTlQzMiAgICAgICAgICAg ICBMZW5ndGgsDQo+ID4gPj4gKyAgSU4gQ09OU1QgQUNQSV9QQVJTRVIqIFBhcnNlciwNCj4gPiA+ PiArICBJTiBVSU5UMzIgICAgICAgICAgICAgUGFyc2VySXRlbXMNCj4gPiA+PiArKTsNCj4gPiA+ PiArDQo+ID4gPj4gKy8qKiBUaGlzIGlzIGEgaGVscGVyIG1hY3JvIHRvIHBhc3MgcGFyYW1ldGVy cyB0byB0aGUgUGFyc2VyIGZ1bmN0aW9ucy4NCj4gPiA+PiArDQo+ID4gPj4gKyAgQHBhcmFtIFtp bl0gUGFyc2VyIFRoZSBuYW1lIG9mIHRoZSBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nDQo+ IHRoZQ0KPiA+ID4+ICsgICAgICAgICAgICAgIEFDUEkgdGFibGUgZmllbGRzLg0KPiA+ID4+ICsq Lw0KPiA+ID4+ICsjZGVmaW5lIFBBUlNFUl9QQVJBTVMoUGFyc2VyKSBQYXJzZXIsIHNpemVvZiAo UGFyc2VyKSAvIHNpemVvZg0KPiAoUGFyc2VyWzBdKQ0KPiA+ID4+ICsNCj4gPiA+PiArLyoqIFRo aXMgaXMgYSBoZWxwZXIgbWFjcm8gZm9yIGRlc2NyaWJpbmcgdGhlIEFDUEkgaGVhZGVyIGZpZWxk cy4NCj4gPiA+PiArDQo+ID4gPj4gKyAgQHBhcmFtIFtvdXRdIEluZm8gIFBvaW50ZXIgdG8gcmV0 cmlldmUgdGhlIEFDUEkgdGFibGUgaGVhZGVyDQo+ID4gaW5mb3JtYXRpb24uDQo+ID4gPj4gKyov DQo+ID4gPj4gKyNkZWZpbmUgUEFSU0VfQUNQSV9IRUFERVIoSW5mbykgICAgICAgICAgICAgICAg ICAgXA0KPiA+ID4+ICsgIHsgTCJTaWduYXR1cmUiLCA0LCAwLCBOVUxMLCBEdW1wNENoYXJzLCAg ICAgICAgIFwNCj4gPiA+PiArICAgIChWT0lEKiopJihJbmZvKS0+U2lnbmF0dXJlICwgTlVMTCwg TlVMTCB9LCAgICBcDQo+ID4gPj4gKyAgeyBMIkxlbmd0aCIsIDQsIDQsIEwiJWQiLCBOVUxMLCAg ICAgICAgICAgICAgICAgXA0KPiA+ID4+ICsgICAgKFZPSUQqKikmKEluZm8pLT5MZW5ndGgsIE5V TEwsIE5VTEwgfSwgICAgICAgIFwNCj4gPiA+PiArICB7IEwiUmV2aXNpb24iLCAxLCA4LCBMIiVk IiwgTlVMTCwgICAgICAgICAgICAgICBcDQo+ID4gPj4gKyAgICAoVk9JRCoqKSYoSW5mbyktPlJl dmlzaW9uLCBOVUxMLCBOVUxMIH0sICAgICAgXA0KPiA+ID4+ICsgIHsgTCJDaGVja3N1bSIsIDEs IDksIEwiMHglWCIsIE5VTEwsICAgICAgICAgICAgIFwNCj4gPiA+PiArICAgIChWT0lEKiopJihJ bmZvKS0+Q2hlY2tzdW0sIE5VTEwsIE5VTEwgfSwgICAgICBcDQo+ID4gPj4gKyAgeyBMIk9lbSBJ RCIsIDYsIDEwLCBOVUxMLCBEdW1wNkNoYXJzLCAgICAgICAgICAgXA0KPiA+ID4+ICsgICAgKFZP SUQqKikmKEluZm8pLT5PZW1JZCwgTlVMTCwgTlVMTCB9LCAgICAgICAgIFwNCj4gPiA+PiArICB7 IEwiT2VtIFRhYmxlIElEIiwgOCwgMTYsIE5VTEwsIER1bXA4Q2hhcnMsICAgICBcDQo+ID4gPj4g KyAgICAoVk9JRCoqKSYoSW5mbyktPk9lbVRhYmxlSWQsIE5VTEwsIE5VTEwgfSwgICAgXA0KPiA+ ID4+ICsgIHsgTCJPZW0gUmV2aXNpb24iLCA0LCAyNCwgTCIweCVYIiwgTlVMTCwgICAgICAgIFwN Cj4gPiA+PiArICAgIChWT0lEKiopJihJbmZvKS0+T2VtUmV2aXNpb24sIE5VTEwsIE5VTEwgfSwg ICBcDQo+ID4gPj4gKyAgeyBMIkNyZWF0b3IgSUQiLCA0LCAyOCwgTlVMTCwgRHVtcDRDaGFycywg ICAgICAgXA0KPiA+ID4+ICsgICAgKFZPSUQqKikmKEluZm8pLT5DcmVhdG9ySWQsIE5VTEwsIE5V TEwgfSwgICAgIFwNCj4gPiA+PiArICB7IEwiQ3JlYXRvciBSZXZpc2lvbiIsIDQsIDMyLCBMIjB4 JVgiLCBOVUxMLCAgICBcDQo+ID4gPj4gKyAgICAoVk9JRCoqKSYoSW5mbyktPkNyZWF0b3JSZXZp c2lvbiwgTlVMTCwgTlVMTCB9DQo+ID4gPj4gKw0KPiA+ID4+ICsvKiogTGVuZ3RoIG9mIHRoZSBB Q1BJIEdBUyBzdHJ1Y3R1cmUuDQo+ID4gPj4gKw0KPiA+ID4+ICsgIE5PVEU6IFRoaXMgbWlnaHQg bm9ybWFsbHkgYmUgZGVmaW5lZCBhcw0KPiA+ID4+ICsgICAgICAgIHNpemVvZiAoRUZJX0FDUElf Nl8yX0dFTkVSSUNfQUREUkVTU19TVFJVQ1RVUkUpLg0KPiA+ID4+ICsgICAgICAgIEhvd2V2ZXIs IHdlIGRlbGliZXJhdGVseSBtaW5pbWlzZSBhbnkgcmVmZXJlbmNlIHRvIHRoZSBFREsyDQo+IEFD UEkNCj4gPiA+PiArICAgICAgICBoZWFkZXJzIGluIGFuIGF0dGVtcHQgdG8gcHJvdmlkZSBjcm9z cyBjaGVja2luZy4NCj4gPiA+PiArKi8NCj4gPiA+PiArI2RlZmluZSBHQVNfTEVOR1RIICAgICAg ICAgICAgICAgICAgICAgMTINCj4gPiA+PiArDQo+ID4gPj4gKy8qKiBMZW5ndGggb2YgdGhlIEFD UEkgSGVhZGVyIHN0cnVjdHVyZS4NCj4gPiA+PiArDQo+ID4gPj4gKyAgTk9URTogVGhpcyBtaWdo dCBub3JtYWxseSBiZSBkZWZpbmVkIGFzDQo+ID4gPj4gKyAgICAgICAgc2l6ZW9mIChFRklfQUNQ SV9ERVNDUklQVElPTl9IRUFERVIpLg0KPiA+ID4+ICsgICAgICAgIEhvd2V2ZXIsIHdlIGRlbGli ZXJhdGVseSBtaW5pbWlzZSBhbnkgcmVmZXJlbmNlIHRvIHRoZSBFREsyDQo+IEFDUEkNCj4gPiA+ PiArICAgICAgICBoZWFkZXJzIGluIGFuIGF0dGVtcHQgdG8gcHJvdmlkZSBjcm9zcyBjaGVja2lu Zy4NCj4gPiA+PiArKi8NCj4gPiA+PiArI2RlZmluZSBBQ1BJX0RFU0NSSVBUSU9OX0hFQURFUl9M RU5HVEggIDM2DQo+ID4gPj4gKw0KPiA+ID4+ICsvKiogVGhpcyBmdW5jdGlvbiBpbmRlbnRzIGFu ZCB0cmFjZXMgdGhlIEdBUyBzdHJ1Y3R1cmUgYXMgZGVzY3JpYmVkDQo+ID4gPj4gKyAgICBieSB0 aGUgR2FzUGFyc2VyLg0KPiA+ID4+ICsNCj4gPiA+PiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBv aW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ID4gPj4gKyAgQHBhcmFtIFtpbl0g SW5kZW50ICBOdW1iZXIgb2Ygc3BhY2VzIHRvIGluZGVudCB0aGUgb3V0cHV0Lg0KPiA+ID4+ICsq Lw0KPiA+ID4+ICtWT0lEDQo+ID4gPj4gK0VGSUFQSQ0KPiA+ID4+ICtEdW1wR2FzU3RydWN0ICgN Cj4gPiA+PiArICBJTiBVSU5UOCogICAgICAgIFB0ciwNCj4gPiA+PiArICBJTiBVSU5UMzIgICAg ICAgIEluZGVudA0KPiA+ID4+ICsgICk7DQo+ID4gPj4gKw0KPiA+ID4+ICsvKiogVGhpcyBmdW5j dGlvbiB0cmFjZXMgdGhlIEdBUyBzdHJ1Y3R1cmUgYXMgZGVzY3JpYmVkIGJ5IHRoZQ0KPiBHYXNQ YXJzZXIuDQo+ID4gPj4gKw0KPiA+ID4+ICsgIEBwYXJhbSBbaW5dIEZvcm1hdCAgT3B0aW9uYWwg Zm9ybWF0IHN0cmluZyBmb3IgdHJhY2luZyB0aGUgZGF0YS4NCj4gPiA+PiArICBAcGFyYW0gW2lu XSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ID4gPj4gKyov DQo+ID4gPj4gK1ZPSUQNCj4gPiA+PiArRUZJQVBJDQo+ID4gPj4gK0R1bXBHYXMgKA0KPiA+ID4+ ICsgIElOIENPTlNUIENIQVIxNiogRm9ybWF0IE9QVElPTkFMLA0KPiA+ID4+ICsgIElOIFVJTlQ4 KiAgICAgICAgUHRyDQo+ID4gPj4gKyAgKTsNCj4gPiA+PiArDQo+ID4gPj4gKy8qKiBUaGlzIGZ1 bmN0aW9uIHRyYWNlcyB0aGUgQUNQSSBoZWFkZXIgYXMgZGVzY3JpYmVkIGJ5IHRoZQ0KPiA+IEFj cGlIZWFkZXJQYXJzZXIuDQo+ID4gPj4gKw0KPiA+ID4+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAg ICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiA+ID4+ICsNCj4gPiA+ PiArICBAcmV0dmFsIE51bWJlciBvZiBieXRlcyBwYXJzZWQuDQo+ID4gPj4gKyovDQo+ID4gPj4g K1VJTlQzMg0KPiA+ID4+ICtFRklBUEkNCj4gPiA+PiArRHVtcEFjcGlIZWFkZXIgKA0KPiA+ID4+ ICsgIElOIFVJTlQ4KiBQdHINCj4gPiA+PiArICApOw0KPiA+ID4+ICsNCj4gPiA+PiArLyoqIFRo aXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBBQ1BJIGhlYWRlciBhcyBkZXNjcmliZWQgYnkgdGhlDQo+ ID4gQWNwaUhlYWRlclBhcnNlci4NCj4gPiA+PiArDQo+ID4gPj4gKyAgVGhpcyBmdW5jdGlvbiBv cHRpb25hbGx5IHJldHVybnMgdGhlIFNpZ25hdHVyZSwgTGVuZ3RoIGFuZCByZXZpc2lvbiBvZg0K PiB0aGUNCj4gPiA+PiArICBBQ1BJIHRhYmxlLg0KPiA+ID4+ICsNCj4gPiA+PiArICBAcGFyYW0g W2luXSAgUHRyICAgICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiA+ ID4+ICsgIEBwYXJhbSBbb3V0XSBTaWduYXR1cmUgIEdldHMgbG9jYXRpb24gb2YgdGhlIEFDUEkg dGFibGUgc2lnbmF0dXJlLg0KPiA+ID4+ICsgIEBwYXJhbSBbb3V0XSBMZW5ndGggICAgIEdldHMg bG9jYXRpb24gb2YgdGhlIGxlbmd0aCBvZiB0aGUgQUNQSSB0YWJsZS4NCj4gPiA+PiArICBAcGFy YW0gW291dF0gUmV2aXNpb24gICBHZXRzIGxvY2F0aW9uIG9mIHRoZSByZXZpc2lvbiBvZiB0aGUg QUNQSQ0KPiB0YWJsZS4NCj4gPiA+PiArDQo+ID4gPj4gKyAgQHJldHZhbCBOdW1iZXIgb2YgYnl0 ZXMgcGFyc2VkLg0KPiA+ID4+ICsqLw0KPiA+ID4+ICtVSU5UMzINCj4gPiA+PiArRUZJQVBJDQo+ ID4gPj4gK1BhcnNlQWNwaUhlYWRlciAoDQo+ID4gPj4gKyAgSU4gIFVJTlQ4KiAgICAgICAgIFB0 ciwNCj4gPiA+PiArICBPVVQgQ09OU1QgVUlOVDMyKiogU2lnbmF0dXJlLA0KPiA+ID4+ICsgIE9V VCBDT05TVCBVSU5UMzIqKiBMZW5ndGgsDQo+ID4gPj4gKyAgT1VUIENPTlNUIFVJTlQ4KiogIFJl dmlzaW9uDQo+ID4gPj4gKyAgKTsNCj4gPiA+PiArDQo+ID4gPj4gKyNlbmRpZiAvLyBBQ1BJUEFS U0VSX0hfDQo+ID4gPj4gZGlmZiAtLWdpdCBhL1NoZWxsUGtnL0luY2x1ZGUvTGlicmFyeS9BY3Bp Vmlldy9BY3BpVGFibGVQYXJzZXIuaA0KPiA+IGIvU2hlbGxQa2cvSW5jbHVkZS9MaWJyYXJ5L0Fj cGlWaWV3L0FjcGlUYWJsZVBhcnNlci5oDQo+ID4gPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4g PiA+PiBpbmRleA0KPiA+IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu LmE2OWQ1NmRhNmNmNzI4YmI5OGRmMg0KPiA+IDY1ZGUzYWUwMzBkODUxMjA0OTQNCj4gPiA+PiAt LS0gL2Rldi9udWxsDQo+ID4gPj4gKysrIGIvU2hlbGxQa2cvSW5jbHVkZS9MaWJyYXJ5L0FjcGlW aWV3L0FjcGlUYWJsZVBhcnNlci5oDQo+ID4gPj4gQEAgLTAsMCArMSwxMjYgQEANCj4gPiA+PiAr LyoqDQo+ID4gPj4gKyAgSGVhZGVyIGZpbGUgZm9yIEFDUEkgdGFibGUgcGFyc2VyDQo+ID4gPj4g Kw0KPiA+ID4+ICsgIENvcHlyaWdodCAoYykgMjAxNiAtIDIwMTgsIEFSTSBMaW1pdGVkLiBBbGwg cmlnaHRzIHJlc2VydmVkLg0KPiA+ID4+ICsgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFu eWluZyBtYXRlcmlhbHMNCj4gPiA+PiArICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxl IHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZg0KPiB0aGUNCj4gPiBCU0QgTGljZW5z ZQ0KPiA+ID4+ICsgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1 bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkNCj4gYmUNCj4gPiBmb3VuZCBhdA0KPiA+ID4+ICsg IGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4gPiA+PiAr DQo+ID4gPj4gKyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNF TlNFIE9OIEFOICJBUw0KPiBJUyINCj4gPiBCQVNJUywNCj4gPiA+PiArICBXSVRIT1VUIFdBUlJB TlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVINCj4gPiBFWFBSRVNT IE9SIElNUExJRUQuDQo+ID4gPj4gKyoqLw0KPiA+ID4+ICsNCj4gPiA+PiArI2lmbmRlZiBBQ1BJ VEFCTEVQQVJTRVJfSF8NCj4gPiA+PiArI2RlZmluZSBBQ1BJVEFCTEVQQVJTRVJfSF8NCj4gPiA+ PiArDQo+ID4gPj4gKy8qKiBUaGUgbWF4aW11bSBudW1iZXIgb2YgQUNQSSB0YWJsZSBwYXJzZXJz Lg0KPiA+ID4+ICsqLw0KPiA+ID4+ICsjZGVmaW5lIE1BWF9BQ1BJX1RBQkxFX1BBUlNFUlMgICAg ICAgICAgMTYNCj4gPiA+PiArDQo+ID4gPj4gKy8qKiBBbiBpbnZhbGlkL05VTEwgc2lnbmF0dXJl IHZhbHVlLg0KPiA+ID4+ICsqLw0KPiA+ID4+ICsjZGVmaW5lIEFDUElfUEFSU0VSX1NJR05BVFVS RV9OVUxMICAgICAgMA0KPiA+ID4+ICsNCj4gPiA+PiArLyoqIEEgZnVuY3Rpb24gdGhhdCBwYXJz ZXMgdGhlIEFDUEkgdGFibGUuDQo+ID4gPj4gKw0KPiA+ID4+ICsgIEBwYXJhbSBbaW5dIFRyYWNl ICAgICAgICAgICAgICBJZiBUUlVFLCB0cmFjZSB0aGUgQUNQSSBmaWVsZHMuDQo+ID4gPj4gKyAg QHBhcmFtIFtpbl0gUHRyICAgICAgICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRo ZSBidWZmZXIuDQo+ID4gPj4gKyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxlTGVuZ3RoICAgIExlbmd0 aCBvZiB0aGUgQUNQSSB0YWJsZS4NCj4gPiA+PiArICBAcGFyYW0gW2luXSBBY3BpVGFibGVSZXZp c2lvbiAgUmV2aXNpb24gb2YgdGhlIEFDUEkgdGFibGUuDQo+ID4gPj4gKyovDQo+ID4gPj4gK3R5 cGVkZWYNCj4gPiA+PiArVk9JRA0KPiA+ID4+ICsoRUZJQVBJICogUEFSU0VfQUNQSV9UQUJMRV9Q Uk9DKSAoDQo+ID4gPj4gKyAgSU4gQk9PTEVBTiBUcmFjZSwNCj4gPiA+PiArICBJTiBVSU5UOCog IFB0ciwNCj4gPiA+PiArICBJTiBVSU5UMzIgIEFjcGlUYWJsZUxlbmd0aCwNCj4gPiA+PiArICBJ TiBVSU5UOCAgIEFjcGlUYWJsZVJldmlzaW9uDQo+ID4gPj4gKyAgKTsNCj4gPiA+PiArDQo+ID4g Pj4gKy8qKiBUaGUgQUNQSSB0YWJsZSBwYXJzZXIgaW5mb3JtYXRpb24NCj4gPiA+PiArKi8NCj4g PiA+PiArdHlwZWRlZiBzdHJ1Y3QgQWNwaVRhYmxlUGFyc2VyIHsNCj4gPiA+PiArICAvLy8gQUNQ SSB0YWJsZSBzaWduYXR1cmUNCj4gPiA+PiArICBVSU5UMzIgICAgICAgICAgICAgICAgICBTaWdu YXR1cmU7DQo+ID4gPj4gKw0KPiA+ID4+ICsgIC8vLyBUaGUgQUNQSSB0YWJsZSBwYXJzZXIgZnVu Y3Rpb24uDQo+ID4gPj4gKyAgUEFSU0VfQUNQSV9UQUJMRV9QUk9DICAgUGFyc2VyOw0KPiA+ID4+ ICt9IEFDUElfVEFCTEVfUEFSU0VSOw0KPiA+ID4+ICsNCj4gPiA+PiArLyoqIFJlZ2lzdGVyIHRo ZSBBQ1BJIHRhYmxlIFBhcnNlcg0KPiA+ID4+ICsNCj4gPiA+PiArICBUaGlzIGZ1bmN0aW9uIHJl Z2lzdGVycyB0aGUgQUNQSSB0YWJsZSBwYXJzZXIuDQo+ID4gPj4gKw0KPiA+ID4+ICsgIEBwYXJh bSBbaW5dIFNpZ25hdHVyZSAgIFRoZSBBQ1BJIHRhYmxlIHNpZ25hdHVyZS4NCj4gPiA+PiArICBA cGFyYW0gW2luXSBQYXJzZXJQcm9jICBUaGUgQUNQSSB0YWJsZSBwYXJzZXIuDQo+ID4gPj4gKw0K PiA+ID4+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBwYXJzZXIgaXMgcmVn aXN0ZXJlZC4NCj4gPiA+PiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiBBIHBhcmFt ZXRlciBpcyBpbnZhbGlkLg0KPiA+ID4+ICsgIEByZXR2YWwgRUZJX0FMUkVBRFlfU1RBUlRFRCAg IFRoZSBwYXJzZXIgZm9yIHRoZSBUYWJsZQ0KPiA+ID4+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHdhcyBhbHJlYWR5IHJlZ2lzdGVyZWQuDQo+ID4gPj4gKyAgQHJldHZhbCBFRklf T1VUX09GX1JFU09VUkNFUyAgTm8gc3BhY2UgdG8gcmVnaXN0ZXIgdGhlDQo+ID4gPj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VyLg0KPiA+ID4+ICsqLw0KPiA+ID4+ICtF RklfU1RBVFVTDQo+ID4gPj4gK0VGSUFQSQ0KPiA+ID4+ICtSZWdpc3RlclBhcnNlciAoDQo+ID4g Pj4gKyAgSU4gIFVJTlQzMiAgICAgICAgICAgICAgICAgIFNpZ25hdHVyZSwNCj4gPiA+PiArICBJ TiAgUEFSU0VfQUNQSV9UQUJMRV9QUk9DICAgUGFyc2VyUHJvYw0KPiA+ID4+ICspOw0KPiA+ID4+ ICsNCj4gPiA+PiArLyoqIERlcmVnaXN0ZXIgdGhlIEFDUEkgdGFibGUgUGFyc2VyDQo+ID4gPj4g Kw0KPiA+ID4+ICsgIFRoaXMgZnVuY3Rpb24gZGVyZWdpc3RlcnMgdGhlIEFDUEkgdGFibGUgcGFy c2VyLg0KPiA+ID4+ICsNCj4gPiA+PiArICBAcGFyYW0gW2luXSBTaWduYXR1cmUgICBUaGUgQUNQ SSB0YWJsZSBzaWduYXR1cmUuDQo+ID4gPj4gKw0KPiA+ID4+ICsgIEByZXR2YWwgRUZJX1NVQ0NF U1MgICAgICAgICAgIFRoZSBwYXJzZXIgd2FzIGRlcmVnaXN0ZXJlZC4NCj4gPiA+PiArICBAcmV0 dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiBBIHBhcmFtZXRlciBpcyBpbnZhbGlkLg0KPiA+ID4+ ICsgIEByZXR2YWwgRUZJX05PVF9GT1VORCAgICAgICAgIEEgcmVnaXN0ZXJlZCBwYXJzZXIgd2Fz IG5vdCBmb3VuZC4NCj4gPiA+PiArKi8NCj4gPiA+PiArRUZJX1NUQVRVUw0KPiA+ID4+ICtFRklB UEkNCj4gPiA+PiArRGVyZWdpc3RlclBhcnNlciAoDQo+ID4gPj4gKyAgSU4gIFVJTlQzMiAgICAg ICAgICAgICAgICAgIFNpZ25hdHVyZQ0KPiA+ID4+ICspOw0KPiA+ID4+ICsNCj4gPiA+PiArLyoq IFRoaXMgZnVuY3Rpb24gcHJvY2Vzc2VzIHRoZSBBQ1BJIHRhYmxlcy4NCj4gPiA+PiArICBUaGlz IGZ1bmN0aW9uIGNhbGxzIFByb2Nlc3NUYWJsZVJlcG9ydE9wdGlvbnMoKSB0byBsaXN0IHRoZSBB Q1BJDQo+ID4gPj4gKyAgdGFibGVzLCBwZXJmb3JtIGJpbmFyeSBkdW1wIG9mIHRoZSB0YWJsZXMg YW5kIGRldGVybWluZSBpZiB0aGUNCj4gPiA+PiArICBBQ1BJIGZpZWxkcyBzaG91bGQgYmUgdHJh Y2VkLg0KPiA+ID4+ICsNCj4gPiA+PiArICBUaGlzIGZ1bmN0aW9uIGFsc28gaW52b2tlcyB0aGUg cGFyc2VyIGZvciB0aGUgQUNQSSB0YWJsZXMuDQo+ID4gPj4gKw0KPiA+ID4+ICsgIFRoaXMgZnVu Y3Rpb24gYWxzbyBwZXJmb3JtcyBhIFJBVyBkdW1wIG9mIHRoZSBBQ1BJIHRhYmxlIGluY2x1ZGlu Zw0KPiA+ID4+ICsgIHRoZSB1bmtub3duL3VucGFyc2VkIEFDUEkgdGFibGVzIGFuZCB2YWxpZGF0 ZXMgdGhlIGNoZWNrc3VtLg0KPiA+ID4+ICsNCj4gPiA+PiArICBAcGFyYW0gW2luXSBQdHIgICAg ICAgICAgICAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIEFDUEkNCj4gPiA+PiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGUgZGF0YSBidWZmZXIuDQo+ID4gPj4g KyovDQo+ID4gPj4gK1ZPSUQNCj4gPiA+PiArRUZJQVBJDQo+ID4gPj4gK1Byb2Nlc3NBY3BpVGFi bGUgKA0KPiA+ID4+ICsgIElOIFVJTlQ4KiBQdHINCj4gPiA+PiArICApOw0KPiA+ID4+ICsNCj4g PiA+PiArLyoqIEdldCB0aGUgQUNQSSB0YWJsZSBQYXJzZXINCj4gPiA+PiArDQo+ID4gPj4gKyAg VGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBBQ1BJIHRhYmxlIHBhcnNlciBwcm9jIGZyb20gdGhl IGxpc3Qgb2YNCj4gPiA+PiArICByZWdpc3RlcmVkIHBhcnNlcnMuDQo+ID4gPj4gKw0KPiA+ID4+ ICsgIEBwYXJhbSBbaW5dICBTaWduYXR1cmUgICBUaGUgQUNQSSB0YWJsZSBzaWduYXR1cmUuDQo+ ID4gPj4gKyAgQHBhcmFtIFtvdXRdIFBhcnNlclByb2MgIFBvaW50ZXIgdG8gYSBBQ1BJIHRhYmxl IHBhcnNlciBwcm9jLg0KPiA+ID4+ICsNCj4gPiA+PiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAg ICAgICAgICBUaGUgcGFyc2VyIHdhcyByZXR1cm5lZCBzdWNjZXNzZnVsbHkuDQo+ID4gPj4gKyAg QHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgQSBwYXJhbWV0ZXIgaXMgaW52YWxpZC4NCj4g PiA+PiArICBAcmV0dmFsIEVGSV9OT1RfRk9VTkQgICAgICAgICBBIHJlZ2lzdGVyZWQgcGFyc2Vy IHdhcyBub3QgZm91bmQuDQo+ID4gPj4gKyovDQo+ID4gPj4gK0VGSV9TVEFUVVMNCj4gPiA+PiAr RUZJQVBJDQo+ID4gPj4gK0dldFBhcnNlciAoDQo+ID4gPj4gKyAgSU4gIFVJTlQzMiAgICAgICAg ICAgICAgICAgICBTaWduYXR1cmUsDQo+ID4gPj4gKyAgT1VUIFBBUlNFX0FDUElfVEFCTEVfUFJP QyAqICBQYXJzZXJQcm9jDQo+ID4gPj4gKyAgKTsNCj4gPiA+PiArDQo+ID4gPj4gKyNlbmRpZiAv LyBBQ1BJVEFCTEVQQVJTRVJfSF8NCj4gPiA+PiBkaWZmIC0tZ2l0DQo+IGEvU2hlbGxQa2cvTGli cmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvQWNwaVBhcnNlci5jDQo+ID4gYi9TaGVs bFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9BY3BpUGFyc2VyLmMNCj4g PiA+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+ID4+IGluZGV4DQo+ID4gMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODk3MTIwNjZlNjMyYjQzYzUwMjNhDQo+ID4g Y2Q5YzhiNWJlYzE1MGUwMmQ5Zg0KPiA+ID4+IC0tLSAvZGV2L251bGwNCj4gPiA+PiArKysgYi9T aGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9BY3BpUGFyc2VyLmMN Cj4gPiA+PiBAQCAtMCwwICsxLDY2MiBAQA0KPiA+ID4+ICsvKioNCj4gPiA+PiArICBBQ1BJIHBh cnNlcg0KPiA+ID4+ICsNCj4gPiA+PiArICBDb3B5cmlnaHQgKGMpIDIwMTYgLSAyMDE4LCBBUk0g TGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gPiA+PiArICBUaGlzIHByb2dyYW0gYW5k IHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ID4gPj4gKyAgYXJlIGxpY2Vuc2VkIGFuZCBt YWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YNCj4gdGhlDQo+ ID4gQlNEIExpY2Vuc2UNCj4gPiA+PiArICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1 dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5DQo+IGJlDQo+ID4gZm91bmQg YXQNCj4gPiA+PiArICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2Uu cGhwDQo+ID4gPj4gKw0KPiA+ID4+ICsgIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVS IFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMNCj4gSVMiDQo+ID4gQkFTSVMsDQo+ID4gPj4gKyAg V0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVS DQo+ID4gRVhQUkVTUyBPUiBJTVBMSUVELg0KPiA+ID4+ICsqKi8NCj4gPiA+PiArDQo+ID4gPj4g KyNpbmNsdWRlIDxVZWZpLmg+DQo+ID4gPj4gKyNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlMaWIuaD4N Cj4gPiA+PiArI2luY2x1ZGUgPExpYnJhcnkvVWVmaUJvb3RTZXJ2aWNlc1RhYmxlTGliLmg+DQo+ ID4gPj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0FjcGlWaWV3L0FjcGlQYXJzZXIuaD4NCj4gPiA+PiAr I2luY2x1ZGUgIkFjcGlWaWV3LmgiDQo+ID4gPj4gKw0KPiA+ID4+ICtTVEFUSUMgVUlOVDMyICAg Z0luZGVudDsNCj4gPiA+PiArU1RBVElDIFVJTlQzMiAgIG1UYWJsZUVycm9yQ291bnQ7DQo+ID4g Pj4gK1NUQVRJQyBVSU5UMzIgICBtVGFibGVXYXJuaW5nQ291bnQ7DQo+ID4gPj4gKw0KPiA+ID4+ ICsvKiogVGhpcyBmdW5jdGlvbiByZXNldHMgdGhlIEFDUEkgdGFibGUgZXJyb3IgY291bnRlciB0 byBaZXJvLg0KPiA+ID4+ICsqLw0KPiA+ID4+ICtWT0lEDQo+ID4gPj4gK1Jlc2V0RXJyb3JDb3Vu dCAoDQo+ID4gPj4gKyAgVk9JRA0KPiA+ID4+ICsgICkNCj4gPiA+PiArew0KPiA+ID4+ICsgIG1U YWJsZUVycm9yQ291bnQgPSAwOw0KPiA+ID4+ICt9DQo+ID4gPj4gKw0KPiA+ID4+ICsvKiogVGhp cyBmdW5jdGlvbiByZXR1cm5zIHRoZSBBQ1BJIHRhYmxlIGVycm9yIGNvdW50Lg0KPiA+ID4+ICsN Cj4gPiA+PiArICBAcmV0dmFsIFJldHVybnMgdGhlIGNvdW50IG9mIGVycm9ycyBkZXRlY3RlZCBp biB0aGUgQUNQSSB0YWJsZXMuDQo+ID4gPj4gKyovDQo+ID4gPj4gK1VJTlQzMg0KPiA+ID4+ICtH ZXRFcnJvckNvdW50ICgNCj4gPiA+PiArICBWT0lEDQo+ID4gPj4gKyAgKQ0KPiA+ID4+ICt7DQo+ ID4gPj4gKyAgcmV0dXJuIG1UYWJsZUVycm9yQ291bnQ7DQo+ID4gPj4gK30NCj4gPiA+PiArDQo+ ID4gPj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHJlc2V0cyB0aGUgQUNQSSB0YWJsZSB3YXJuaW5nIGNv dW50ZXIgdG8gWmVyby4NCj4gPiA+PiArKi8NCj4gPiA+PiArVk9JRA0KPiA+ID4+ICtSZXNldFdh cm5pbmdDb3VudCAoDQo+ID4gPj4gKyAgVk9JRA0KPiA+ID4+ICsgICkNCj4gPiA+PiArew0KPiA+ ID4+ICsgIG1UYWJsZVdhcm5pbmdDb3VudCA9IDA7DQo+ID4gPj4gK30NCj4gPiA+PiArDQo+ID4g Pj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIEFDUEkgdGFibGUgd2FybmluZyBjb3Vu dC4NCj4gPiA+PiArDQo+ID4gPj4gKyAgQHJldHZhbCBSZXR1cm5zIHRoZSBjb3VudCBvZiB3YXJu aW5nIGRldGVjdGVkIGluIHRoZSBBQ1BJIHRhYmxlcy4NCj4gPiA+PiArKi8NCj4gPiA+PiArVUlO VDMyDQo+ID4gPj4gK0dldFdhcm5pbmdDb3VudCAoDQo+ID4gPj4gKyAgVk9JRA0KPiA+ID4+ICsg ICkNCj4gPiA+PiArew0KPiA+ID4+ICsgIHJldHVybiBtVGFibGVXYXJuaW5nQ291bnQ7DQo+ID4g Pj4gK30NCj4gPiA+PiArDQo+ID4gPj4gKy8qKiBUaGlzIGZ1bmN0aW9uIGluY3JlbWVudHMgdGhl IEFDUEkgdGFibGUgZXJyb3IgY291bnRlci4NCj4gPiA+PiArKi8NCj4gPiA+PiArVk9JRA0KPiA+ ID4+ICtFRklBUEkNCj4gPiA+PiArSW5jcmVtZW50RXJyb3JDb3VudCAoDQo+ID4gPj4gKyAgVk9J RA0KPiA+ID4+ICsgICkNCj4gPiA+PiArew0KPiA+ID4+ICsgIG1UYWJsZUVycm9yQ291bnQrKzsN Cj4gPiA+PiArfQ0KPiA+ID4+ICsNCj4gPiA+PiArLyoqIFRoaXMgZnVuY3Rpb24gaW5jcmVtZW50 cyB0aGUgQUNQSSB0YWJsZSB3YXJuaW5nIGNvdW50ZXIuDQo+ID4gPj4gKyovDQo+ID4gPj4gK1ZP SUQNCj4gPiA+PiArRUZJQVBJDQo+ID4gPj4gK0luY3JlbWVudFdhcm5pbmdDb3VudCAoDQo+ID4g Pj4gKyAgVk9JRA0KPiA+ID4+ICsgICkNCj4gPiA+PiArew0KPiA+ID4+ICsgIG1UYWJsZVdhcm5p bmdDb3VudCsrOw0KPiA+ID4+ICt9DQo+ID4gPj4gKw0KPiA+ID4+ICsvKiogVGhpcyBmdW5jdGlv biB2ZXJpZmllcyB0aGUgQUNQSSB0YWJsZSBjaGVja3N1bS4NCj4gPiA+PiArDQo+ID4gPj4gKyAg VGhpcyBmdW5jdGlvbiB2ZXJpZmllcyB0aGUgY2hlY2tzdW0gZm9yIHRoZSBBQ1BJIHRhYmxlIGFu ZCBvcHRpb25hbGx5DQo+ID4gPj4gKyAgcHJpbnRzIHRoZSBzdGF0dXMuDQo+ID4gPj4gKw0KPiA+ ID4+ICsgIEBwYXJhbSBbaW5dIExvZyAgICAgSWYgVFJVRSBsb2cgdGhlIHN0YXR1cyBvZiB0aGUg Y2hlY2tzdW0uDQo+ID4gPj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBz dGFydCBvZiB0aGUgdGFibGUgYnVmZmVyLg0KPiA+ID4+ICsgIEBwYXJhbSBbaW5dIExlbmd0aCAg VGhlIGxlbmd0aCBvZiB0aGUgYnVmZmVyLg0KPiA+ID4+ICsNCj4gPiA+PiArICBAcmV0dmFsIFRS VUUgICAgICAgIFRoZSBjaGVja3N1bSBpcyBPSy4NCj4gPiA+PiArICBAcmV0dmFsIEZBTFNFICAg ICAgIFRoZSBjaGVja3N1bSBmYWlsZWQuDQo+ID4gPj4gKyovDQo+ID4gPj4gK0JPT0xFQU4NCj4g PiA+PiArRUZJQVBJDQo+ID4gPj4gK1ZlcmlmeUNoZWNrc3VtICgNCj4gPiA+PiArICBJTiBCT09M RUFOIExvZywNCj4gPiA+PiArICBJTiBVSU5UOCogIFB0ciwNCj4gPiA+PiArICBJTiBVSU5UMzIg IExlbmd0aA0KPiA+ID4+ICsgICkNCj4gPiA+PiArew0KPiA+ID4+ICsgIFVJTlROIEJ5dGVDb3Vu dCA9IDA7DQo+ID4gPj4gKyAgVUlOVDggQ2hlY2tzdW0gPSAwOw0KPiA+ID4+ICsgIFVJTlROIE9y aWdpbmFsQXR0cmlidXRlOw0KPiA+ID4+ICsNCj4gPiA+PiArICB3aGlsZSAoQnl0ZUNvdW50IDwg TGVuZ3RoKSB7DQo+ID4gPj4gKyAgICBDaGVja3N1bSArPSAqKFB0cisrKTsNCj4gPiA+PiArICAg IEJ5dGVDb3VudCsrOw0KPiA+ID4+ICsgIH0NCj4gPiA+PiArDQo+ID4gPj4gKyAgaWYgKExvZykg ew0KPiA+ID4+ICsgICAgT3JpZ2luYWxBdHRyaWJ1dGUgPSBnU1QtPkNvbk91dC0+TW9kZS0+QXR0 cmlidXRlOw0KPiA+ID4+ICsgICAgaWYgKENoZWNrc3VtID09IDApIHsNCj4gPiA+PiArICAgICAg aWYgKEdldENvbG91ckhpZ2hsaWdodGluZyAoKSkgew0KPiA+ID4+ICsgICAgICAgIGdTVC0+Q29u T3V0LT5TZXRBdHRyaWJ1dGUgKA0KPiA+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgIGdTVC0+ Q29uT3V0LA0KPiA+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgIEVGSV9URVhUX0FUVFIgKEVG SV9HUkVFTiwNCj4gPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICgoT3JpZ2luYWxBdHRy aWJ1dGUmKEJJVDR8QklUNXxCSVQ2KSk+PjQpKQ0KPiA+ID4+ICsgICAgICAgICAgICAgICAgICAg ICAgICk7DQo+ID4gPj4gKyAgICAgIH0NCj4gPiA+PiArICAgICAgUHJpbnQgKEwiXG5cblRhYmxl IENoZWNrc3VtIDogT0tcblxuIik7DQo+ID4gPj4gKyAgICB9IGVsc2Ugew0KPiA+ID4+ICsgICAg ICBJbmNyZW1lbnRFcnJvckNvdW50ICgpOw0KPiA+ID4+ICsgICAgICBpZiAoR2V0Q29sb3VySGln aGxpZ2h0aW5nICgpKSB7DQo+ID4gPj4gKyAgICAgICAgZ1NULT5Db25PdXQtPlNldEF0dHJpYnV0 ZSAoDQo+ID4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgZ1NULT5Db25PdXQsDQo+ID4gPj4g KyAgICAgICAgICAgICAgICAgICAgICAgRUZJX1RFWFRfQVRUUiAoRUZJX1JFRCwNCj4gPiA+PiAr ICAgICAgICAgICAgICAgICAgICAgICAgICgoT3JpZ2luYWxBdHRyaWJ1dGUmKEJJVDR8QklUNXxC SVQ2KSk+PjQpKQ0KPiA+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICk7DQo+ID4gPj4gKyAg ICAgIH0NCj4gPiA+PiArICAgICAgUHJpbnQgKEwiXG5cblRhYmxlIENoZWNrc3VtIDogRkFJTEVE ICgweCVYKVxuXG4iLCBDaGVja3N1bSk7DQo+ID4gPj4gKyAgICB9DQo+ID4gPj4gKyAgICBpZiAo R2V0Q29sb3VySGlnaGxpZ2h0aW5nICgpKSB7DQo+ID4gPj4gKyAgICAgIGdTVC0+Q29uT3V0LT5T ZXRBdHRyaWJ1dGUgKGdTVC0+Q29uT3V0LCBPcmlnaW5hbEF0dHJpYnV0ZSk7DQo+ID4gPj4gKyAg ICB9DQo+ID4gPj4gKyAgfQ0KPiA+ID4+ICsNCj4gPiA+PiArICByZXR1cm4gKENoZWNrc3VtID09 IDApOw0KPiA+ID4+ICt9DQo+ID4gPj4gKw0KPiA+ID4+ICsvKiogVGhpcyBmdW5jdGlvbiBwZXJm b3JtcyBhIHJhdyBkYXRhIGR1bXAgb2YgdGhlIEFDUEkgdGFibGUuDQo+ID4gPj4gKw0KPiA+ID4+ ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIHRhYmxl IGJ1ZmZlci4NCj4gPiA+PiArICBAcGFyYW0gW2luXSBMZW5ndGggIFRoZSBsZW5ndGggb2YgdGhl IGJ1ZmZlci4NCj4gPiA+PiArKi8NCj4gPiA+PiArVk9JRA0KPiA+ID4+ICtFRklBUEkNCj4gPiA+ PiArRHVtcFJhdyAoDQo+ID4gPj4gKyAgSU4gVUlOVDgqIFB0ciwNCj4gPiA+PiArICBJTiBVSU5U MzIgTGVuZ3RoDQo+ID4gPj4gKyAgKQ0KPiA+ID4+ICt7DQo+ID4gPj4gKyAgVUlOVE4gQnl0ZUNv dW50ID0gMDsNCj4gPiA+PiArICBVSU5UTiBQYXJ0TGluZUNoYXJzOw0KPiA+ID4+ICsgIFVJTlRO IEFzY2lpQnVmZmVySW5kZXggPSAwOw0KPiA+ID4+ICsgIENIQVI4IEFzY2lpQnVmZmVyWzE3XTsN Cj4gPiA+PiArDQo+ID4gPj4gKyAgUHJpbnQgKEwiQWRkcmVzcyAgOiAweCVwXG4iLCBQdHIpOw0K PiA+ID4+ICsgIFByaW50IChMIkxlbmd0aCAgIDogJWRcbiIsIExlbmd0aCk7DQo+ID4gPj4gKw0K PiA+ID4+ICsgIHdoaWxlIChCeXRlQ291bnQgPCBMZW5ndGgpIHsNCj4gPiA+PiArICAgIGlmICgo Qnl0ZUNvdW50ICYgMHgwRikgPT0gMCkgew0KPiA+ID4+ICsgICAgICBBc2NpaUJ1ZmZlcltBc2Np aUJ1ZmZlckluZGV4XSA9ICdcMCc7DQo+ID4gPj4gKyAgICAgIFByaW50IChMIiAgJWFcbiUwOFgg OiAiLCBBc2NpaUJ1ZmZlciwgQnl0ZUNvdW50KTsNCj4gPiA+PiArICAgICAgQXNjaWlCdWZmZXJJ bmRleCA9IDA7DQo+ID4gPj4gKyAgICB9IGVsc2UgaWYgKChCeXRlQ291bnQgJiAweDA3KSA9PSAw KSB7DQo+ID4gPj4gKyAgICAgIFByaW50IChMIi0gIik7DQo+ID4gPj4gKyAgICB9DQo+ID4gPj4g Kw0KPiA+ID4+ICsgICAgaWYgKCgqUHRyID49ICcgJykgJiYgKCpQdHIgPCAweDdGKSkgew0KPiA+ ID4+ICsgICAgICBBc2NpaUJ1ZmZlcltBc2NpaUJ1ZmZlckluZGV4KytdID0gKlB0cjsNCj4gPiA+ PiArICAgIH0gZWxzZSB7DQo+ID4gPj4gKyAgICAgIEFzY2lpQnVmZmVyW0FzY2lpQnVmZmVySW5k ZXgrK10gPSAnLic7DQo+ID4gPj4gKyAgICB9DQo+ID4gPj4gKw0KPiA+ID4+ICsgICAgUHJpbnQg KEwiJTAyWCAiLCAqUHRyKyspOw0KPiA+ID4+ICsNCj4gPiA+PiArICAgIEJ5dGVDb3VudCsrOw0K PiA+ID4+ICsgIH0NCj4gPiA+PiArDQo+ID4gPj4gKyAgLy8gSnVzdGlmeSB0aGUgZmluYWwgbGlu ZSB1c2luZyBzcGFjZXMgYmVmb3JlIHByaW50aW5nDQo+ID4gPj4gKyAgLy8gdGhlIEFTQ0lJIGRh dGEuDQo+ID4gPj4gKyAgUGFydExpbmVDaGFycyA9IChMZW5ndGggJiAweDBGKTsNCj4gPiA+PiAr ICBpZiAoUGFydExpbmVDaGFycyAhPSAwKSB7DQo+ID4gPj4gKyAgICBQYXJ0TGluZUNoYXJzID0g NDggLSAoUGFydExpbmVDaGFycyAqIDMpOw0KPiA+ID4+ICsgICAgaWYgKChMZW5ndGggJiAweDBG KSA8PSA4KSB7DQo+ID4gPj4gKyAgICAgIFBhcnRMaW5lQ2hhcnMgKz0gMjsNCj4gPiA+PiArICAg IH0NCj4gPiA+PiArICAgIHdoaWxlIChQYXJ0TGluZUNoYXJzID4gMCkgew0KPiA+ID4+ICsgICAg ICBQcmludCAoTCIgIik7DQo+ID4gPj4gKyAgICAgIFBhcnRMaW5lQ2hhcnMtLTsNCj4gPiA+PiAr ICAgIH0NCj4gPiA+PiArICB9DQo+ID4gPj4gKw0KPiA+ID4+ICsgIC8vIFByaW50IEFTQ0lJIGRh dGEgZm9yIHRoZSBmaW5hbCBsaW5lLg0KPiA+ID4+ICsgIEFzY2lpQnVmZmVyW0FzY2lpQnVmZmVy SW5kZXhdID0gJ1wwJzsNCj4gPiA+PiArICBQcmludCAoTCIgICVhIiwgQXNjaWlCdWZmZXIpOw0K PiA+ID4+ICt9DQo+ID4gPj4gKw0KPiA+ID4+ICsvKiogVGhpcyBmdW5jdGlvbiB0cmFjZXMgMSBi eXRlIG9mIGRhdGEgYXMgc3BlY2lmaWVkIGluIHRoZQ0KPiA+ID4+ICsgICAgZm9ybWF0IHN0cmlu Zy4NCj4gPiA+PiArDQo+ID4gPj4gKyAgQHBhcmFtIFtpbl0gRm9ybWF0ICBUaGUgZm9ybWF0IHN0 cmluZyBmb3IgdHJhY2luZyB0aGUgZGF0YS4NCj4gPiA+PiArICBAcGFyYW0gW2luXSBQdHIgICAg IFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ID4gPj4gKyovDQo+ID4gPj4g K1ZPSUQNCj4gPiA+PiArRUZJQVBJDQo+ID4gPj4gK0R1bXBVaW50OCAoDQo+ID4gPj4gKyAgSU4g Q09OU1QgQ0hBUjE2KiBGb3JtYXQsDQo+ID4gPj4gKyAgSU4gVUlOVDgqICAgICAgICBQdHINCj4g PiA+PiArICApDQo+ID4gPj4gK3sNCj4gPiA+PiArICBQcmludCAoRm9ybWF0LCAqUHRyKTsNCj4g PiA+PiArfQ0KPiA+ID4+ICsNCj4gPiA+PiArLyoqIFRoaXMgZnVuY3Rpb24gdHJhY2VzIDIgYnl0 ZXMgb2YgZGF0YSBhcyBzcGVjaWZpZWQgaW4gdGhlDQo+ID4gPj4gKyAgICBmb3JtYXQgc3RyaW5n Lg0KPiA+ID4+ICsNCj4gPiA+PiArICBAcGFyYW0gW2luXSBGb3JtYXQgIFRoZSBmb3JtYXQgc3Ry aW5nIGZvciB0cmFjaW5nIHRoZSBkYXRhLg0KPiA+ID4+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAg UG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gPiA+PiArKi8NCj4gPiA+PiAr Vk9JRA0KPiA+ID4+ICtFRklBUEkNCj4gPiA+PiArRHVtcFVpbnQxNiAoDQo+ID4gPj4gKyAgSU4g Q09OU1QgQ0hBUjE2KiBGb3JtYXQsDQo+ID4gPj4gKyAgSU4gVUlOVDgqICAgICAgICBQdHINCj4g PiA+PiArICApDQo+ID4gPj4gK3sNCj4gPiA+PiArICBQcmludCAoRm9ybWF0LCAqKFVJTlQxNiop UHRyKTsNCj4gPiA+PiArfQ0KPiA+ID4+ICsNCj4gPiA+PiArLyoqIFRoaXMgZnVuY3Rpb24gdHJh Y2VzIDQgYnl0ZXMgb2YgZGF0YSBhcyBzcGVjaWZpZWQgaW4gdGhlDQo+ID4gPj4gKyAgICBmb3Jt YXQgc3RyaW5nLg0KPiA+ID4+ICsNCj4gPiA+PiArICBAcGFyYW0gW2luXSBGb3JtYXQgIFRoZSBm b3JtYXQgc3RyaW5nIGZvciB0cmFjaW5nIHRoZSBkYXRhLg0KPiA+ID4+ICsgIEBwYXJhbSBbaW5d IFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gPiA+PiArKi8N Cj4gPiA+PiArVk9JRA0KPiA+ID4+ICtFRklBUEkNCj4gPiA+PiArRHVtcFVpbnQzMiAoDQo+ID4g Pj4gKyAgSU4gQ09OU1QgQ0hBUjE2KiBGb3JtYXQsDQo+ID4gPj4gKyAgSU4gVUlOVDgqICAgICAg ICBQdHINCj4gPiA+PiArICApDQo+ID4gPj4gK3sNCj4gPiA+PiArICBQcmludCAoRm9ybWF0LCAq KFVJTlQzMiopUHRyKTsNCj4gPiA+PiArfQ0KPiA+ID4+ICsNCj4gPiA+PiArLyoqIFRoaXMgZnVu Y3Rpb24gdHJhY2VzIDggYnl0ZXMgb2YgZGF0YSBhcyBzcGVjaWZpZWQgYnkgdGhlDQo+ID4gPj4g KyAgICBmb3JtYXQgc3RyaW5nLg0KPiA+ID4+ICsNCj4gPiA+PiArICBAcGFyYW0gW2luXSBGb3Jt YXQgIFRoZSBmb3JtYXQgc3RyaW5nIGZvciB0cmFjaW5nIHRoZSBkYXRhLg0KPiA+ID4+ICsgIEBw YXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4g PiA+PiArKi8NCj4gPiA+PiArVk9JRA0KPiA+ID4+ICtFRklBUEkNCj4gPiA+PiArRHVtcFVpbnQ2 NCAoDQo+ID4gPj4gKyAgSU4gQ09OU1QgQ0hBUjE2KiBGb3JtYXQsDQo+ID4gPj4gKyAgSU4gVUlO VDgqICAgICAgICBQdHINCj4gPiA+PiArICApDQo+ID4gPj4gK3sNCj4gPiA+PiArICAvLyBTb21l IGZpZWxkcyBhcmUgbm90IGFsaWduZWQgYW5kIHRoaXMgY2F1c2VzIGFsaWdubWVudCBmYXVsdHMN Cj4gPiA+PiArICAvLyBvbiBBUk0gcGxhdGZvcm1zIGlmIHRoZSBjb21waWxlciBnZW5lcmF0ZXMg TERSRCBpbnN0cnVjdGlvbnMuDQo+ID4gPj4gKyAgLy8gUGVyZm9ybSB3b3JkIGFjY2VzcyBzbyB0 aGF0IExEUkQgaW5zdHJ1Y3Rpb25zIGFyZSBub3QgZ2VuZXJhdGVkLg0KPiA+ID4+ICsgIFVJTlQ2 NCBWYWwgPSAqKFVJTlQzMiopKFB0ciArIHNpemVvZiAoVUlOVDMyKSk7DQo+ID4gPj4gKyAgVmFs IDw8PSAzMjsNCj4gPiA+PiArICBWYWwgfD0gKihVSU5UMzIqKVB0cjsNCj4gPiA+PiArDQo+ID4g Pj4gKyAgUHJpbnQgKEZvcm1hdCwgVmFsKTsNCj4gPiA+PiArfQ0KPiA+ID4+ICsNCj4gPiA+PiAr LyoqIFRoaXMgZnVuY3Rpb24gdHJhY2VzIDMgY2hhcmFjdGVycyB3aGljaCBjYW4gYmUgb3B0aW9u YWxseQ0KPiA+ID4+ICsgICBmb3JtYXRlZCB1c2luZyB0aGUgZm9ybWF0IHN0cmluZyBpZiBzcGVj aWZpZWQuDQo+ID4gPj4gKw0KPiA+ID4+ICsgIElmIG5vIGZvcm1hdCBzdHJpbmcgaXMgc3BlY2lm aWVkIHRoZSBGb3JtYXQgbXVzdCBiZSBOVUxMLg0KPiA+ID4+ICsNCj4gPiA+PiArICBAcGFyYW0g W2luXSBGb3JtYXQgIE9wdGlvbmFsIGZvcm1hdCBzdHJpbmcgZm9yIHRyYWNpbmcgdGhlIGRhdGEu DQo+ID4gPj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0 aGUgYnVmZmVyLg0KPiA+ID4+ICsqLw0KPiA+ID4+ICtWT0lEDQo+ID4gPj4gK0VGSUFQSQ0KPiA+ ID4+ICtEdW1wM0NoYXJzICgNCj4gPiA+PiArICBJTiBDT05TVCBDSEFSMTYqIEZvcm1hdCBPUFRJ T05BTCwNCj4gPiA+PiArICBJTiBVSU5UOCogICAgICAgIFB0cg0KPiA+ID4+ICsgICkNCj4gPiA+ PiArew0KPiA+ID4+ICsgIFByaW50ICgNCj4gPiA+PiArICAgIChGb3JtYXQgIT0gTlVMTCkgPyBG b3JtYXQgOiBMIiVjJWMlYyIsDQo+ID4gPj4gKyAgICBQdHJbMF0sDQo+ID4gPj4gKyAgICBQdHJb MV0sDQo+ID4gPj4gKyAgICBQdHJbMl0NCj4gPiA+PiArICAgICk7DQo+ID4gPj4gK30NCj4gPiA+ PiArDQo+ID4gPj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHRyYWNlcyA0IGNoYXJhY3RlcnMgd2hpY2gg Y2FuIGJlIG9wdGlvbmFsbHkNCj4gPiA+PiArICAgZm9ybWF0ZWQgdXNpbmcgdGhlIGZvcm1hdCBz dHJpbmcgaWYgc3BlY2lmaWVkLg0KPiA+ID4+ICsNCj4gPiA+PiArICBJZiBubyBmb3JtYXQgc3Ry aW5nIGlzIHNwZWNpZmllZCB0aGUgRm9ybWF0IG11c3QgYmUgTlVMTC4NCj4gPiA+PiArDQo+ID4g Pj4gKyAgQHBhcmFtIFtpbl0gRm9ybWF0ICBPcHRpb25hbCBmb3JtYXQgc3RyaW5nIGZvciB0cmFj aW5nIHRoZSBkYXRhLg0KPiA+ID4+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0 aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gPiA+PiArKi8NCj4gPiA+PiArVk9JRA0KPiA+ID4+ ICtFRklBUEkNCj4gPiA+PiArRHVtcDRDaGFycyAoDQo+ID4gPj4gKyAgSU4gQ09OU1QgQ0hBUjE2 KiBGb3JtYXQgT1BUSU9OQUwsDQo+ID4gPj4gKyAgSU4gVUlOVDgqICAgICAgICBQdHINCj4gPiA+ PiArICApDQo+ID4gPj4gK3sNCj4gPiA+PiArICBQcmludCAoDQo+ID4gPj4gKyAgICAoRm9ybWF0 ICE9IE5VTEwpID8gRm9ybWF0IDogTCIlYyVjJWMlYyIsDQo+ID4gPj4gKyAgICBQdHJbMF0sDQo+ ID4gPj4gKyAgICBQdHJbMV0sDQo+ID4gPj4gKyAgICBQdHJbMl0sDQo+ID4gPj4gKyAgICBQdHJb M10NCj4gPiA+PiArICAgICk7DQo+ID4gPj4gK30NCj4gPiA+PiArDQo+ID4gPj4gKy8qKiBUaGlz IGZ1bmN0aW9uIHRyYWNlcyA2IGNoYXJhY3RlcnMgd2hpY2ggY2FuIGJlIG9wdGlvbmFsbHkNCj4g PiA+PiArICAgZm9ybWF0ZWQgdXNpbmcgdGhlIGZvcm1hdCBzdHJpbmcgaWYgc3BlY2lmaWVkLg0K PiA+ID4+ICsNCj4gPiA+PiArICBJZiBubyBmb3JtYXQgc3RyaW5nIGlzIHNwZWNpZmllZCB0aGUg Rm9ybWF0IG11c3QgYmUgTlVMTC4NCj4gPiA+PiArDQo+ID4gPj4gKyAgQHBhcmFtIFtpbl0gRm9y bWF0ICBPcHRpb25hbCBmb3JtYXQgc3RyaW5nIGZvciB0cmFjaW5nIHRoZSBkYXRhLg0KPiA+ID4+ ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZl ci4NCj4gPiA+PiArKi8NCj4gPiA+PiArVk9JRA0KPiA+ID4+ICtFRklBUEkNCj4gPiA+PiArRHVt cDZDaGFycyAoDQo+ID4gPj4gKyAgSU4gQ09OU1QgQ0hBUjE2KiBGb3JtYXQgT1BUSU9OQUwsDQo+ ID4gPj4gKyAgSU4gVUlOVDgqICAgICAgICBQdHINCj4gPiA+PiArICApDQo+ID4gPj4gK3sNCj4g PiA+PiArICBQcmludCAoDQo+ID4gPj4gKyAgICAoRm9ybWF0ICE9IE5VTEwpID8gRm9ybWF0IDog TCIlYyVjJWMlYyVjJWMiLA0KPiA+ID4+ICsgICAgUHRyWzBdLA0KPiA+ID4+ICsgICAgUHRyWzFd LA0KPiA+ID4+ICsgICAgUHRyWzJdLA0KPiA+ID4+ICsgICAgUHRyWzNdLA0KPiA+ID4+ICsgICAg UHRyWzRdLA0KPiA+ID4+ICsgICAgUHRyWzVdDQo+ID4gPj4gKyAgICApOw0KPiA+ID4+ICt9DQo+ ID4gPj4gKw0KPiA+ID4+ICsvKiogVGhpcyBmdW5jdGlvbiB0cmFjZXMgOCBjaGFyYWN0ZXJzIHdo aWNoIGNhbiBiZSBvcHRpb25hbGx5DQo+ID4gPj4gKyAgIGZvcm1hdGVkIHVzaW5nIHRoZSBmb3Jt YXQgc3RyaW5nIGlmIHNwZWNpZmllZC4NCj4gPiA+PiArDQo+ID4gPj4gKyAgSWYgbm8gZm9ybWF0 IHN0cmluZyBpcyBzcGVjaWZpZWQgdGhlIEZvcm1hdCBtdXN0IGJlIE5VTEwuDQo+ID4gPj4gKw0K PiA+ID4+ICsgIEBwYXJhbSBbaW5dIEZvcm1hdCAgT3B0aW9uYWwgZm9ybWF0IHN0cmluZyBmb3Ig dHJhY2luZyB0aGUgZGF0YS4NCj4gPiA+PiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIg dG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ID4gPj4gKyovDQo+ID4gPj4gK1ZPSUQNCj4g PiA+PiArRUZJQVBJDQo+ID4gPj4gK0R1bXA4Q2hhcnMgKA0KPiA+ID4+ICsgIElOIENPTlNUIENI QVIxNiogRm9ybWF0IE9QVElPTkFMLA0KPiA+ID4+ICsgIElOIFVJTlQ4KiAgICAgICAgUHRyDQo+ ID4gPj4gKyAgKQ0KPiA+ID4+ICt7DQo+ID4gPj4gKyAgUHJpbnQgKA0KPiA+ID4+ICsgICAgKEZv cm1hdCAhPSBOVUxMKSA/IEZvcm1hdCA6IEwiJWMlYyVjJWMlYyVjJWMlYyIsDQo+ID4gPj4gKyAg ICBQdHJbMF0sDQo+ID4gPj4gKyAgICBQdHJbMV0sDQo+ID4gPj4gKyAgICBQdHJbMl0sDQo+ID4g Pj4gKyAgICBQdHJbM10sDQo+ID4gPj4gKyAgICBQdHJbNF0sDQo+ID4gPj4gKyAgICBQdHJbNV0s DQo+ID4gPj4gKyAgICBQdHJbNl0sDQo+ID4gPj4gKyAgICBQdHJbN10NCj4gPiA+PiArICAgICk7 DQo+ID4gPj4gK30NCj4gPiA+PiArDQo+ID4gPj4gKy8qKiBUaGlzIGZ1bmN0aW9uIGluZGVudHMg YW5kIHByaW50cyB0aGUgQUNQSSB0YWJsZSBGaWVsZCBOYW1lLg0KPiA+ID4+ICsNCj4gPiA+PiAr ICBAcGFyYW0gW2luXSBJbmRlbnQgICAgICBOdW1iZXIgb2Ygc3BhY2VzIHRvIGFkZCB0byB0aGUg Z2xvYmFsIHRhYmxlDQo+ID4gaW5kZW50Lg0KPiA+ID4+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgIFRoZSBnbG9iYWwgdGFibGUgaW5kZW50IGlzIDAgYnkgZGVmYXVsdDsNCj4gPiBob3dldmVy DQo+ID4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyB2YWx1ZSBpcyB1cGRhdGVk IG9uIGVudHJ5IHRvIHRoZQ0KPiA+IFBhcnNlQWNwaSgpDQo+ID4gPj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgYnkgYWRkaW5nIHRoZSBpbmRlbnQgdmFsdWUgcHJvdmlkZWQgdG8NCj4gPiBQ YXJzZUFjcGkoKQ0KPiA+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCByZXN0b3Jl ZCBiYWNrIG9uIGV4aXQuDQo+ID4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlcmVm b3JlIHRoZSB0b3RhbCBpbmRlbnQgaW4gdGhlIG91dHB1dCBpcw0KPiA+ID4+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgIGRlcGVuZGVudCBvbiBmcm9tIHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMN Cj4gPiBjYWxsZWQuDQo+ID4gPj4gKyAgQHBhcmFtIFtpbl0gRmllbGROYW1lICAgUG9pbnRlciB0 byB0aGUgRmllbGQgTmFtZS4NCj4gPiA+PiArKi8NCj4gPiA+PiArVk9JRA0KPiA+ID4+ICtFRklB UEkNCj4gPiA+PiArUHJpbnRGaWVsZE5hbWUgKA0KPiA+ID4+ICsgIElOIFVJTlQzMiAgICAgICAg IEluZGVudCwNCj4gPiA+PiArICBJTiBDT05TVCBDSEFSMTYqICBGaWVsZE5hbWUNCj4gPiA+PiAr KQ0KPiA+ID4+ICt7DQo+ID4gPj4gKyAgUHJpbnQgKA0KPiA+ID4+ICsgICAgTCIlKmElLSpzIDog IiwNCj4gPiA+PiArICAgIGdJbmRlbnQgKyBJbmRlbnQsDQo+ID4gPj4gKyAgICAiIiwNCj4gPiA+ PiArICAgIChPVVRQVVRfRklFTERfQ09MVU1OX1dJRFRIIC0gZ0luZGVudCAtIEluZGVudCksDQo+ ID4gPj4gKyAgICBGaWVsZE5hbWUNCj4gPiA+PiArICAgICk7DQo+ID4gPj4gK30NCj4gPiA+PiAr DQo+ID4gPj4gKy8qKiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gcGFyc2UgYW4gQUNQSSB0YWJs ZSBidWZmZXIuDQo+ID4gPj4gKw0KPiA+ID4+ICsgIFRoZSBBQ1BJIHRhYmxlIGJ1ZmZlciBpcyBw YXJzZWQgdXNpbmcgdGhlIEFDUEkgdGFibGUgcGFyc2VyDQo+IGluZm9ybWF0aW9uDQo+ID4gPj4g KyAgc3BlY2lmaWVkIGJ5IGEgcG9pbnRlciB0byBhbiBhcnJheSBvZiBBQ1BJX1BBUlNFUiBlbGVt ZW50cy4gVGhpcw0KPiBwYXJzZXINCj4gPiA+PiArICBmdW5jdGlvbiBpdGVyYXRlcyB0aHJvdWdo IGVhY2ggaXRlbSBvbiB0aGUgQUNQSV9QQVJTRVIgYXJyYXkgYW5kDQo+IGxvZ3MNCj4gPiB0aGUN Cj4gPiA+PiArICBBQ1BJIHRhYmxlIGZpZWxkcy4NCj4gPiA+PiArDQo+ID4gPj4gKyAgVGhpcyBm dW5jdGlvbiBjYW4gb3B0aW9uYWxseSBiZSB1c2VkIHRvIHBhcnNlIEFDUEkgdGFibGVzIGFuZCBm ZXRjaA0KPiBzcGVjaWZpYw0KPiA+ID4+ICsgIGZpZWxkIHZhbHVlcy4gVGhlIEl0ZW1QdHIgbWVt YmVyIG9mIHRoZSBBQ1BJX1BBUlNFUiBzdHJ1Y3R1cmUNCj4gKHdoZXJlDQo+ID4gdXNlZCkNCj4g PiA+PiArICBpcyB1cGRhdGVkIGJ5IHRoaXMgcGFyc2VyIGZ1bmN0aW9uIHRvIHBvaW50IHRvIHRo ZSBzZWxlY3RlZCBmaWVsZCBkYXRhDQo+ID4gPj4gKyAgKGUuZy4gdXNlZnVsIGZvciB2YXJpYWJs ZSBsZW5ndGggbmVzdGVkIGZpZWxkcykuDQo+ID4gPj4gKw0KPiA+ID4+ICsgIEBwYXJhbSBbaW5d IFRyYWNlICAgICAgICBUcmFjZSB0aGUgQUNQSSBmaWVsZHMgVFJVRSBlbHNlIG9ubHkgcGFyc2Ug dGhlDQo+ID4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlLg0KPiA+ID4+ICsg IEBwYXJhbSBbaW5dIEluZGVudCAgICAgICBOdW1iZXIgb2Ygc3BhY2VzIHRvIGluZGVudCB0aGUg b3V0cHV0Lg0KPiA+ID4+ICsgIEBwYXJhbSBbaW5dIEFzY2lpTmFtZSAgICBPcHRpb25hbCBwb2lu dGVyIHRvIGFuIEFTQ0lJIHN0cmluZyB0aGF0DQo+ID4gZGVzY3JpYmVzDQo+ID4gPj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgIHRoZSB0YWJsZSBiZWluZyBwYXJzZWQuDQo+ID4gPj4gKyAg QHBhcmFtIFtpbl0gUHRyICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZm ZXIuDQo+ID4gPj4gKyAgQHBhcmFtIFtpbl0gTGVuZ3RoICAgICAgIExlbmd0aCBvZiB0aGUgYnVm ZmVyIHBvaW50ZWQgYnkgUHRyLg0KPiA+ID4+ICsgIEBwYXJhbSBbaW5dIFBhcnNlciAgICAgICBQ b2ludGVyIHRvIGFuIGFycmF5IG9mIEFDUElfUEFSU0VSIHN0cnVjdHVyZQ0KPiA+IHRoYXQNCj4g PiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpYmVzIHRoZSB0YWJsZSBiZWlu ZyBwYXJzZWQuDQo+ID4gPj4gKyAgQHBhcmFtIFtpbl0gUGFyc2VySXRlbXMgIE51bWJlciBvZiBp dGVtcyBpbiB0aGUgQUNQSV9QQVJTRVIgYXJyYXkuDQo+ID4gPj4gKw0KPiA+ID4+ICsgIEByZXR2 YWwgTnVtYmVyIG9mIGJ5dGVzIHBhcnNlZC4NCj4gPiA+PiArKi8NCj4gPiA+PiArVUlOVDMyDQo+ ID4gPj4gK0VGSUFQSQ0KPiA+ID4+ICtQYXJzZUFjcGkgKA0KPiA+ID4+ICsgIElOIEJPT0xFQU4g ICAgICAgICAgICBUcmFjZSwNCj4gPiA+PiArICBJTiBVSU5UMzIgICAgICAgICAgICAgSW5kZW50 LA0KPiA+ID4+ICsgIElOIENPTlNUIENIQVI4KiAgICAgICBBc2NpaU5hbWUgT1BUSU9OQUwsDQo+ ID4gPj4gKyAgSU4gVUlOVDgqICAgICAgICAgICAgIFB0ciwNCj4gPiA+PiArICBJTiBVSU5UMzIg ICAgICAgICAgICAgTGVuZ3RoLA0KPiA+ID4+ICsgIElOIENPTlNUIEFDUElfUEFSU0VSKiBQYXJz ZXIsDQo+ID4gPj4gKyAgSU4gVUlOVDMyICAgICAgICAgICAgIFBhcnNlckl0ZW1zDQo+ID4gPj4g KykNCj4gPiA+PiArew0KPiA+ID4+ICsgIFVJTlQzMiAgSW5kZXg7DQo+ID4gPj4gKyAgVUlOVDMy ICBPZmZzZXQgPSAwOw0KPiA+ID4+ICsNCj4gPiA+PiArICAvLyBJbmNyZW1lbnQgdGhlIEluZGVu dA0KPiA+ID4+ICsgIGdJbmRlbnQgKz0gSW5kZW50Ow0KPiA+ID4+ICsNCj4gPiA+PiArICBpZiAo VHJhY2UgJiYgKEFzY2lpTmFtZSAhPSBOVUxMKSl7DQo+ID4gPj4gKyAgICBCT09MRUFOIEhpZ2hM aWdodCA9IEdldENvbG91ckhpZ2hsaWdodGluZyAoKTsNCj4gPiA+PiArICAgIFVJTlROICAgT3Jp Z2luYWxBdHRyaWJ1dGU7DQo+ID4gPj4gKw0KPiA+ID4+ICsgICAgaWYgKEhpZ2hMaWdodCkgew0K PiA+ID4+ICsgICAgICBPcmlnaW5hbEF0dHJpYnV0ZSA9IGdTVC0+Q29uT3V0LT5Nb2RlLT5BdHRy aWJ1dGU7DQo+ID4gPj4gKyAgICAgIGdTVC0+Q29uT3V0LT5TZXRBdHRyaWJ1dGUgKA0KPiA+ID4+ ICsgICAgICAgICAgICAgICAgICAgICBnU1QtPkNvbk91dCwNCj4gPiA+PiArICAgICAgICAgICAg ICAgICAgICAgRUZJX1RFWFRfQVRUUihFRklfWUVMTE9XLA0KPiA+ID4+ICsgICAgICAgICAgICAg ICAgICAgICAgICgoT3JpZ2luYWxBdHRyaWJ1dGUmKEJJVDR8QklUNXxCSVQ2KSk+PjQpKQ0KPiA+ ID4+ICsgICAgICAgICAgICAgICAgICAgICApOw0KPiA+ID4+ICsgICAgfQ0KPiA+ID4+ICsgICAg UHJpbnQgKA0KPiA+ID4+ICsgICAgICBMIiUqYSUtKmEgOlxuIiwNCj4gPiA+PiArICAgICAgZ0lu ZGVudCwNCj4gPiA+PiArICAgICAgIiIsDQo+ID4gPj4gKyAgICAgIChPVVRQVVRfRklFTERfQ09M VU1OX1dJRFRIIC0gZ0luZGVudCksDQo+ID4gPj4gKyAgICAgIEFzY2lpTmFtZQ0KPiA+ID4+ICsg ICAgICApOw0KPiA+ID4+ICsgICAgaWYgKEhpZ2hMaWdodCkgew0KPiA+ID4+ICsgICAgICBnU1Qt PkNvbk91dC0+U2V0QXR0cmlidXRlIChnU1QtPkNvbk91dCwgT3JpZ2luYWxBdHRyaWJ1dGUpOw0K PiA+ID4+ICsgICAgfQ0KPiA+ID4+ICsgIH0NCj4gPiA+PiArDQo+ID4gPj4gKyAgZm9yIChJbmRl eCA9IDA7IEluZGV4IDwgUGFyc2VySXRlbXM7IEluZGV4KyspIHsNCj4gPiA+PiArICAgIGlmICgo T2Zmc2V0ICsgUGFyc2VyW0luZGV4XS5MZW5ndGgpID4gTGVuZ3RoKSB7DQo+ID4gPj4gKyAgICAg IC8vIFdlIGRvbid0IHBhcnNlIHBhc3QgdGhlIGVuZCBvZiB0aGUgbWF4IGxlbmd0aCBzcGVjaWZp ZWQNCj4gPiA+PiArICAgICAgYnJlYWs7DQo+ID4gPj4gKyAgICB9DQo+ID4gPj4gKw0KPiA+ID4+ ICsgICAgaWYgKE9mZnNldCAhPSBQYXJzZXJbSW5kZXhdLk9mZnNldCkgew0KPiA+ID4+ICsgICAg ICBJbmNyZW1lbnRFcnJvckNvdW50ICgpOw0KPiA+ID4+ICsgICAgICBQcmludCAoDQo+ID4gPj4g KyAgICAgICAgTCJcbkVSUk9SOiAlYTogT2Zmc2V0IE1pc21hdGNoIGZvciAlc1xuIg0KPiA+ID4+ ICsgICAgICAgICAgIkN1cnJlbnRPZmZzZXQgPSAlZCBGaWVsZE9mZnNldCA9ICVkXG4iLA0KPiA+ ID4+ICsgICAgICAgIEFzY2lpTmFtZSwNCj4gPiA+PiArICAgICAgICBQYXJzZXJbSW5kZXhdLk5h bWVTdHIsDQo+ID4gPj4gKyAgICAgICAgT2Zmc2V0LA0KPiA+ID4+ICsgICAgICAgIFBhcnNlcltJ bmRleF0uT2Zmc2V0DQo+ID4gPj4gKyAgICAgICAgKTsNCj4gPiA+PiArICAgIH0NCj4gPiA+PiAr DQo+ID4gPj4gKyAgICBpZiAoVHJhY2UpIHsNCj4gPiA+PiArICAgICAgLy8gaWYgdGhlcmUgaXMg YSBGb3JtYXR0ZXIgZnVuY3Rpb24gbGV0IHRoZSBmdW5jdGlvbiBoYW5kbGUNCj4gPiA+PiArICAg ICAgLy8gdGhlIHByaW50aW5nIGVsc2UgaWYgYSBGb3JtYXQgaXMgc3BlY2lmaWVkIGluIHRoZSB0 YWJsZSB1c2UNCj4gPiA+PiArICAgICAgLy8gdGhlIEZvcm1hdCBmb3IgcHJpbnRpbmcNCj4gPiA+ PiArICAgICAgUHJpbnRGaWVsZE5hbWUgKDIsIFBhcnNlcltJbmRleF0uTmFtZVN0cik7DQo+ID4g Pj4gKyAgICAgIGlmIChQYXJzZXJbSW5kZXhdLlByaW50Rm9ybWF0dGVyICE9IE5VTEwpIHsNCj4g PiA+PiArICAgICAgICBQYXJzZXJbSW5kZXhdLlByaW50Rm9ybWF0dGVyIChQYXJzZXJbSW5kZXhd LkZvcm1hdCwgUHRyKTsNCj4gPiA+PiArICAgICAgfSBlbHNlIGlmIChQYXJzZXJbSW5kZXhdLkZv cm1hdCAhPSBOVUxMKSB7DQo+ID4gPj4gKyAgICAgICAgc3dpdGNoIChQYXJzZXJbSW5kZXhdLkxl bmd0aCkgew0KPiA+ID4+ICsgICAgICAgICAgY2FzZSAxOg0KPiA+ID4+ICsgICAgICAgICAgICBE dW1wVWludDggKFBhcnNlcltJbmRleF0uRm9ybWF0LCBQdHIpOw0KPiA+ID4+ICsgICAgICAgICAg ICBicmVhazsNCj4gPiA+PiArICAgICAgICAgIGNhc2UgMjoNCj4gPiA+PiArICAgICAgICAgICAg RHVtcFVpbnQxNiAoUGFyc2VyW0luZGV4XS5Gb3JtYXQsIFB0cik7DQo+ID4gPj4gKyAgICAgICAg ICAgIGJyZWFrOw0KPiA+ID4+ICsgICAgICAgICAgY2FzZSA0Og0KPiA+ID4+ICsgICAgICAgICAg ICBEdW1wVWludDMyIChQYXJzZXJbSW5kZXhdLkZvcm1hdCwgUHRyKTsNCj4gPiA+PiArICAgICAg ICAgICAgYnJlYWs7DQo+ID4gPj4gKyAgICAgICAgICBjYXNlIDg6DQo+ID4gPj4gKyAgICAgICAg ICAgIER1bXBVaW50NjQgKFBhcnNlcltJbmRleF0uRm9ybWF0LCBQdHIpOw0KPiA+ID4+ICsgICAg ICAgICAgICBicmVhazsNCj4gPiA+PiArICAgICAgICAgIGRlZmF1bHQ6DQo+ID4gPj4gKyAgICAg ICAgICAgIFByaW50ICgNCj4gPiA+PiArICAgICAgICAgICAgICBMIlxuRVJST1I6ICVhOiBDQU5O T1QgUEFSU0UgVEhJUyBGSUVMRCwgRmllbGQgTGVuZ3RoDQo+ID4gPSAlZFxuIiwNCj4gPiA+PiAr ICAgICAgICAgICAgICBBc2NpaU5hbWUsDQo+ID4gPj4gKyAgICAgICAgICAgICAgUGFyc2VyW0lu ZGV4XS5MZW5ndGgNCj4gPiA+PiArICAgICAgICAgICAgICApOw0KPiA+ID4+ICsgICAgICAgIH0g Ly8gc3dpdGNoDQo+ID4gPj4gKw0KPiA+ID4+ICsgICAgICAgIC8vIFZhbGlkYXRpbmcgb25seSBt YWtlcyBzZW5zZSBpZiB3ZSBhcmUgdHJhY2luZw0KPiA+ID4+ICsgICAgICAgIC8vIHRoZSBwYXJz ZWQgdGFibGUgZW50cmllcywgdG8gcmVwb3J0IGJ5IHRhYmxlIG5hbWUuDQo+ID4gPj4gKyAgICAg ICAgaWYgKFBhcnNlcltJbmRleF0uRmllbGRWYWxpZGF0b3IgIT0gTlVMTCkgew0KPiA+ID4+ICsg ICAgICAgICAgUGFyc2VyW0luZGV4XS5GaWVsZFZhbGlkYXRvciAoUHRyLCBQYXJzZXJbSW5kZXhd LkNvbnRleHQpOw0KPiA+ID4+ICsgICAgICAgIH0NCj4gPiA+PiArICAgICAgfQ0KPiA+ID4+ICsg ICAgICBQcmludCAoTCJcbiIpOw0KPiA+ID4+ICsgICAgfSAvLyBpZiAoVHJhY2UpDQo+ID4gPj4g Kw0KPiA+ID4+ICsgICAgaWYgKFBhcnNlcltJbmRleF0uSXRlbVB0ciAhPSBOVUxMKSB7DQo+ID4g Pj4gKyAgICAgICpQYXJzZXJbSW5kZXhdLkl0ZW1QdHIgPSAoVk9JRCopUHRyOw0KPiA+ID4+ICsg ICAgfQ0KPiA+ID4+ICsNCj4gPiA+PiArICAgIFB0ciArPSBQYXJzZXJbSW5kZXhdLkxlbmd0aDsN Cj4gPiA+PiArICAgIE9mZnNldCArPSBQYXJzZXJbSW5kZXhdLkxlbmd0aDsNCj4gPiA+PiArICB9 IC8vIGZvcg0KPiA+ID4+ICsNCj4gPiA+PiArICAvLyBEZWNyZW1lbnQgdGhlIEluZGVudA0KPiA+ ID4+ICsgIGdJbmRlbnQgLT0gSW5kZW50Ow0KPiA+ID4+ICsgIHJldHVybiBPZmZzZXQ7DQo+ID4g Pj4gK30NCj4gPiA+PiArDQo+ID4gPj4gKy8qKiBBbiBhcnJheSBkZXNjcmliaW5nIHRoZSBBQ1BJ IEdlbmVyaWMgQWRkcmVzcyBTdHJ1Y3R1cmUuDQo+ID4gPj4gKyAgVGhlIEdhc1BhcnNlciBhcnJh eSBpcyB1c2VkIGJ5IHRoZSBQYXJzZUFjcGkgZnVuY3Rpb24gdG8gcGFyc2UgYW5kL29yDQo+ID4g dHJhY2UNCj4gPiA+PiArICB0aGUgR0FTIHN0cnVjdHVyZS4NCj4gPiA+PiArKi8NCj4gPiA+PiAr U1RBVElDIENPTlNUIEFDUElfUEFSU0VSIEdhc1BhcnNlcltdID0gew0KPiA+ID4+ICsgIHtMIkFk ZHJlc3MgU3BhY2UgSUQiLCAxLCAwLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwN Cj4gPiA+PiArICB7TCJSZWdpc3RlciBCaXQgV2lkdGgiLCAxLCAxLCBMIjB4JXgiLCBOVUxMLCBO VUxMLCBOVUxMLCBOVUxMfSwNCj4gPiA+PiArICB7TCJSZWdpc3RlciBCaXQgT2Zmc2V0IiwgMSwg MiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4gPj4gKyAge0wiQWRkcmVz cyBTaXplIiwgMSwgMywgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4gPj4g KyAge0wiQWRkcmVzcyIsIDgsIDQsIEwiMHglbHgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfQ0K PiA+ID4+ICt9Ow0KPiA+ID4+ICsNCj4gPiA+PiArLyoqIFRoaXMgZnVuY3Rpb24gaW5kZW50cyBh bmQgdHJhY2VzIHRoZSBHQVMgc3RydWN0dXJlIGFzIGRlc2NyaWJlZA0KPiA+ID4+ICsgICAgYnkg dGhlIEdhc1BhcnNlci4NCj4gPiA+PiArDQo+ID4gPj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQ b2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiA+ID4+ICsgIEBwYXJhbSBbaW5d IEluZGVudCAgTnVtYmVyIG9mIHNwYWNlcyB0byBpbmRlbnQgdGhlIG91dHB1dC4NCj4gPiA+PiAr Ki8NCj4gPiA+PiArVk9JRA0KPiA+ID4+ICtFRklBUEkNCj4gPiA+PiArRHVtcEdhc1N0cnVjdCAo DQo+ID4gPj4gKyAgSU4gVUlOVDgqICAgICAgICBQdHIsDQo+ID4gPj4gKyAgSU4gVUlOVDMyICAg ICAgICBJbmRlbnQNCj4gPiA+PiArICApDQo+ID4gPj4gK3sNCj4gPiA+PiArICBQcmludCAoTCJc biIpOw0KPiA+ID4+ICsgIFBhcnNlQWNwaSAoDQo+ID4gPj4gKyAgICBUUlVFLA0KPiA+ID4+ICsg ICAgSW5kZW50LA0KPiA+ID4+ICsgICAgTlVMTCwNCj4gPiA+PiArICAgIFB0ciwNCj4gPiA+PiAr ICAgIEdBU19MRU5HVEgsDQo+ID4gPj4gKyAgICBQQVJTRVJfUEFSQU1TIChHYXNQYXJzZXIpDQo+ ID4gPj4gKyAgICApOw0KPiA+ID4+ICt9DQo+ID4gPj4gKw0KPiA+ID4+ICsvKiogVGhpcyBmdW5j dGlvbiB0cmFjZXMgdGhlIEdBUyBzdHJ1Y3R1cmUgYXMgZGVzY3JpYmVkIGJ5IHRoZQ0KPiBHYXNQ YXJzZXIuDQo+ID4gPj4gKw0KPiA+ID4+ICsgIEBwYXJhbSBbaW5dIEZvcm1hdCAgT3B0aW9uYWwg Zm9ybWF0IHN0cmluZyBmb3IgdHJhY2luZyB0aGUgZGF0YS4NCj4gPiA+PiArICBAcGFyYW0gW2lu XSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ID4gPj4gKyov DQo+ID4gPj4gK1ZPSUQNCj4gPiA+PiArRUZJQVBJDQo+ID4gPj4gK0R1bXBHYXMgKA0KPiA+ID4+ ICsgIElOIENPTlNUIENIQVIxNiogRm9ybWF0IE9QVElPTkFMLA0KPiA+ID4+ICsgIElOIFVJTlQ4 KiAgICAgICAgUHRyDQo+ID4gPj4gKyAgKQ0KPiA+ID4+ICt7DQo+ID4gPj4gKyAgRHVtcEdhc1N0 cnVjdCAoUHRyLCAyKTsNCj4gPiA+PiArfQ0KPiA+ID4+ICsNCj4gPiA+PiArLyoqIFRoaXMgZnVu Y3Rpb24gdHJhY2VzIHRoZSBBQ1BJIGhlYWRlciBhcyBkZXNjcmliZWQgYnkgdGhlDQo+ID4gQWNw aUhlYWRlclBhcnNlci4NCj4gPiA+PiArDQo+ID4gPj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICAg ICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ID4gPj4gKw0KPiA+ID4+ ICsgIEByZXR2YWwgTnVtYmVyIG9mIGJ5dGVzIHBhcnNlZC4NCj4gPiA+PiArKi8NCj4gPiA+PiAr VUlOVDMyDQo+ID4gPj4gK0VGSUFQSQ0KPiA+ID4+ICtEdW1wQWNwaUhlYWRlciAoDQo+ID4gPj4g KyAgSU4gVUlOVDgqIFB0cg0KPiA+ID4+ICsgICkNCj4gPiA+PiArew0KPiA+ID4+ICsgIEFDUElf REVTQ1JJUFRJT05fSEVBREVSX0lORk8gQWNwaUhkckluZm87DQo+ID4gPj4gKyAgQUNQSV9QQVJT RVIgQWNwaUhlYWRlclBhcnNlcltdID0gew0KPiA+ID4+ICsgICAgUEFSU0VfQUNQSV9IRUFERVIg KCZBY3BpSGRySW5mbykNCj4gPiA+PiArICB9Ow0KPiA+ID4+ICsNCj4gPiA+PiArICByZXR1cm4g UGFyc2VBY3BpICgNCj4gPiA+PiArICAgICAgICAgICBUUlVFLA0KPiA+ID4+ICsgICAgICAgICAg IDAsDQo+ID4gPj4gKyAgICAgICAgICAgIkFDUEkgVGFibGUgSGVhZGVyIiwNCj4gPiA+PiArICAg ICAgICAgICBQdHIsDQo+ID4gPj4gKyAgICAgICAgICAgQUNQSV9ERVNDUklQVElPTl9IRUFERVJf TEVOR1RILA0KPiA+ID4+ICsgICAgICAgICAgIFBBUlNFUl9QQVJBTVMgKEFjcGlIZWFkZXJQYXJz ZXIpDQo+ID4gPj4gKyAgICAgICAgICAgKTsNCj4gPiA+PiArfQ0KPiA+ID4+ICsNCj4gPiA+PiAr LyoqIFRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBBQ1BJIGhlYWRlciBhcyBkZXNjcmliZWQgYnkg dGhlDQo+ID4gQWNwaUhlYWRlclBhcnNlci4NCj4gPiA+PiArDQo+ID4gPj4gKyAgVGhpcyBmdW5j dGlvbiBvcHRpb25hbGx5IHJldHVybnMgdGhlIHNpZ25hdHVyZSwgbGVuZ3RoIGFuZCByZXZpc2lv biBvZg0KPiB0aGUNCj4gPiA+PiArICBBQ1BJIHRhYmxlLg0KPiA+ID4+ICsNCj4gPiA+PiArICBA cGFyYW0gW2luXSAgUHRyICAgICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVy Lg0KPiA+ID4+ICsgIEBwYXJhbSBbb3V0XSBTaWduYXR1cmUgIEdldHMgbG9jYXRpb24gb2YgdGhl IEFDUEkgdGFibGUgc2lnbmF0dXJlLg0KPiA+ID4+ICsgIEBwYXJhbSBbb3V0XSBMZW5ndGggICAg IEdldHMgbG9jYXRpb24gb2YgdGhlIGxlbmd0aCBvZiB0aGUgQUNQSSB0YWJsZS4NCj4gPiA+PiAr ICBAcGFyYW0gW291dF0gUmV2aXNpb24gICBHZXRzIGxvY2F0aW9uIG9mIHRoZSByZXZpc2lvbiBv ZiB0aGUgQUNQSQ0KPiB0YWJsZS4NCj4gPiA+PiArDQo+ID4gPj4gKyAgQHJldHZhbCBOdW1iZXIg b2YgYnl0ZXMgcGFyc2VkLg0KPiA+ID4+ICsqLw0KPiA+ID4+ICtVSU5UMzINCj4gPiA+PiArRUZJ QVBJDQo+ID4gPj4gK1BhcnNlQWNwaUhlYWRlciAoDQo+ID4gPj4gKyAgSU4gIFVJTlQ4KiAgICAg ICAgIFB0ciwNCj4gPiA+PiArICBPVVQgQ09OU1QgVUlOVDMyKiogU2lnbmF0dXJlLA0KPiA+ID4+ ICsgIE9VVCBDT05TVCBVSU5UMzIqKiBMZW5ndGgsDQo+ID4gPj4gKyAgT1VUIENPTlNUIFVJTlQ4 KiogIFJldmlzaW9uDQo+ID4gPj4gKyAgKQ0KPiA+ID4+ICt7DQo+ID4gPj4gKyAgVUlOVDMyICAg ICAgICAgICAgICAgICAgICAgICAgQnl0ZXNQYXJzZWQ7DQo+ID4gPj4gKyAgQUNQSV9ERVNDUklQ VElPTl9IRUFERVJfSU5GTyAgQWNwaUhkckluZm87DQo+ID4gPj4gKyAgQUNQSV9QQVJTRVIgQWNw aUhlYWRlclBhcnNlcltdID0gew0KPiA+ID4+ICsgICAgUEFSU0VfQUNQSV9IRUFERVIgKCZBY3Bp SGRySW5mbykNCj4gPiA+PiArICB9Ow0KPiA+ID4+ICsNCj4gPiA+PiArICBCeXRlc1BhcnNlZCA9 IFBhcnNlQWNwaSAoDQo+ID4gPj4gKyAgICAgICAgICAgICAgICAgIEZBTFNFLA0KPiA+ID4+ICsg ICAgICAgICAgICAgICAgICAwLA0KPiA+ID4+ICsgICAgICAgICAgICAgICAgICBOVUxMLA0KPiA+ ID4+ICsgICAgICAgICAgICAgICAgICBQdHIsDQo+ID4gPj4gKyAgICAgICAgICAgICAgICAgIEFD UElfREVTQ1JJUFRJT05fSEVBREVSX0xFTkdUSCwNCj4gPiA+PiArICAgICAgICAgICAgICAgICAg UEFSU0VSX1BBUkFNUyAoQWNwaUhlYWRlclBhcnNlcikNCj4gPiA+PiArICAgICAgICAgICAgICAg ICAgKTsNCj4gPiA+PiArDQo+ID4gPj4gKyAgKlNpZ25hdHVyZSA9IEFjcGlIZHJJbmZvLlNpZ25h dHVyZTsNCj4gPiA+PiArICAqTGVuZ3RoID0gQWNwaUhkckluZm8uTGVuZ3RoOw0KPiA+ID4+ICsg ICpSZXZpc2lvbiA9IEFjcGlIZHJJbmZvLlJldmlzaW9uOw0KPiA+ID4+ICsNCj4gPiA+PiArICBy ZXR1cm4gQnl0ZXNQYXJzZWQ7DQo+ID4gPj4gK30NCj4gPiA+PiBkaWZmIC0tZ2l0DQo+IGEvU2hl bGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvQWNwaVRhYmxlUGFyc2Vy LmMNCj4gPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL0Fj cGlUYWJsZVBhcnNlci5jDQo+ID4gPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiA+PiBpbmRl eA0KPiA+IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU5ODNlZTIx MTI5YjBjNDBlMTlkNw0KPiA+IDQxZmI2MTM1OWEyM2VlNjIyZDANCj4gPiA+PiAtLS0gL2Rldi9u dWxsDQo+ID4gPj4gKysrDQo+IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0Nv bW1hbmRMaWIvQWNwaVRhYmxlUGFyc2VyLmMNCj4gPiA+PiBAQCAtMCwwICsxLDIxNSBAQA0KPiA+ ID4+ICsvKioNCj4gPiA+PiArICBBQ1BJIHRhYmxlIHBhcnNlcg0KPiA+ID4+ICsNCj4gPiA+PiAr ICBDb3B5cmlnaHQgKGMpIDIwMTYgLSAyMDE4LCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNl cnZlZC4NCj4gPiA+PiArICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJp YWxzDQo+ID4gPj4gKyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUg dGVybXMgYW5kIGNvbmRpdGlvbnMgb2YNCj4gdGhlDQo+ID4gQlNEIExpY2Vuc2UNCj4gPiA+PiAr ICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2Yg dGhlIGxpY2Vuc2UgbWF5DQo+IGJlDQo+ID4gZm91bmQgYXQNCj4gPiA+PiArICBodHRwOi8vb3Bl bnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ID4gPj4gKw0KPiA+ID4+ICsg IFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAi QVMNCj4gSVMiDQo+ID4gQkFTSVMsDQo+ID4gPj4gKyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJF UFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSDQo+ID4gRVhQUkVTUyBPUiBJTVBMSUVE Lg0KPiA+ID4+ICsqKi8NCj4gPiA+PiArDQo+ID4gPj4gKyNpbmNsdWRlIDxVZWZpLmg+DQo+ID4g Pj4gKyNpbmNsdWRlIDxJbmR1c3RyeVN0YW5kYXJkL0FjcGkuaD4NCj4gPiA+PiArI2luY2x1ZGUg PExpYnJhcnkvVWVmaUxpYi5oPg0KPiA+ID4+ICsjaW5jbHVkZSA8TGlicmFyeS9BY3BpVmlldy9B Y3BpUGFyc2VyLmg+DQo+ID4gPj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0FjcGlWaWV3L0FjcGlUYWJs ZVBhcnNlci5oPg0KPiA+ID4+ICsjaW5jbHVkZSAiQWNwaVZpZXcuaCINCj4gPiA+PiArDQo+ID4g Pj4gKy8qKiBBIGxpc3Qgb2YgcmVnaXN0ZXJlZCBBQ1BJIHRhYmxlIHBhcnNlcnMuDQo+ID4gPj4g KyovDQo+ID4gPj4gK1NUQVRJQyBBQ1BJX1RBQkxFX1BBUlNFUg0KPiBtVGFibGVQYXJzZXJMaXN0 W01BWF9BQ1BJX1RBQkxFX1BBUlNFUlNdOw0KPiA+ID4+ICsNCj4gPiA+PiArLyoqIFJlZ2lzdGVy IHRoZSBBQ1BJIHRhYmxlIFBhcnNlcg0KPiA+ID4+ICsNCj4gPiA+PiArICBUaGlzIGZ1bmN0aW9u IHJlZ2lzdGVycyB0aGUgQUNQSSB0YWJsZSBwYXJzZXIuDQo+ID4gPj4gKw0KPiA+ID4+ICsgIEBw YXJhbSBbaW5dIFNpZ25hdHVyZSAgIFRoZSBBQ1BJIHRhYmxlIHNpZ25hdHVyZS4NCj4gPiA+PiAr ICBAcGFyYW0gW2luXSBQYXJzZXJQcm9jICBUaGUgQUNQSSB0YWJsZSBwYXJzZXIuDQo+ID4gPj4g Kw0KPiA+ID4+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBwYXJzZXIgaXMg cmVnaXN0ZXJlZC4NCj4gPiA+PiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiBBIHBh cmFtZXRlciBpcyBpbnZhbGlkLg0KPiA+ID4+ICsgIEByZXR2YWwgRUZJX0FMUkVBRFlfU1RBUlRF RCAgIFRoZSBwYXJzZXIgZm9yIHRoZSBUYWJsZQ0KPiA+ID4+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHdhcyBhbHJlYWR5IHJlZ2lzdGVyZWQuDQo+ID4gPj4gKyAgQHJldHZhbCBF RklfT1VUX09GX1JFU09VUkNFUyAgTm8gc3BhY2UgdG8gcmVnaXN0ZXIgdGhlDQo+ID4gPj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VyLg0KPiA+ID4+ICsqLw0KPiA+ID4+ ICtFRklfU1RBVFVTDQo+ID4gPj4gK0VGSUFQSQ0KPiA+ID4+ICtSZWdpc3RlclBhcnNlciAoDQo+ ID4gPj4gKyAgSU4gIFVJTlQzMiAgICAgICAgICAgICAgICAgIFNpZ25hdHVyZSwNCj4gPiA+PiAr ICBJTiAgUEFSU0VfQUNQSV9UQUJMRV9QUk9DICAgUGFyc2VyUHJvYw0KPiA+ID4+ICsgICkNCj4g PiA+PiArew0KPiA+ID4+ICsgIFVJTlQzMiBpbmRleDsNCj4gPiA+PiArDQo+ID4gPj4gKyAgaWYg KChQYXJzZXJQcm9jID09IE5VTEwpIHx8IChTaWduYXR1cmUgPT0NCj4gPiBBQ1BJX1BBUlNFUl9T SUdOQVRVUkVfTlVMTCkpIHsNCj4gPiA+PiArICAgIHJldHVybiBFRklfSU5WQUxJRF9QQVJBTUVU RVI7DQo+ID4gPj4gKyAgfQ0KPiA+ID4+ICsNCj4gPiA+PiArICAvLyBTZWFyY2ggaWYgYSBwYXJz ZXIgaXMgYWxyZWFkeSBpbnN0YWxsZWQNCj4gPiA+PiArICBmb3IgKGluZGV4ID0gMDsNCj4gPiA+ PiArICAgICAgIGluZGV4IDwgKHNpemVvZiAobVRhYmxlUGFyc2VyTGlzdCkgLyBzaXplb2YgKG1U YWJsZVBhcnNlckxpc3RbMF0pKTsNCj4gPiA+PiArICAgICAgIGluZGV4KyspDQo+ID4gPj4gKyAg ew0KPiA+ID4+ICsgICAgaWYgKFNpZ25hdHVyZSA9PSBtVGFibGVQYXJzZXJMaXN0W2luZGV4XS5T aWduYXR1cmUpIHsNCj4gPiA+PiArICAgICAgaWYgKG1UYWJsZVBhcnNlckxpc3RbaW5kZXhdLlBh cnNlciAhPSBOVUxMKSB7DQo+ID4gPj4gKyAgICAgICAgcmV0dXJuIEVGSV9BTFJFQURZX1NUQVJU RUQ7DQo+ID4gPj4gKyAgICAgIH0NCj4gPiA+PiArICAgIH0NCj4gPiA+PiArICB9DQo+ID4gPj4g Kw0KPiA+ID4+ICsgIC8vIEZpbmQgdGhlIGZpcnN0IGZyZWUgc2xvdCBhbmQgcmVnaXN0ZXIgdGhl IHBhcnNlcg0KPiA+ID4+ICsgIGZvciAoaW5kZXggPSAwOw0KPiA+ID4+ICsgICAgICBpbmRleCA8 IChzaXplb2YgKG1UYWJsZVBhcnNlckxpc3QpIC8gc2l6ZW9mIChtVGFibGVQYXJzZXJMaXN0WzBd KSk7DQo+ID4gPj4gKyAgICAgIGluZGV4KyspDQo+ID4gPj4gKyAgew0KPiA+ID4+ICsgICAgaWYg KG1UYWJsZVBhcnNlckxpc3RbaW5kZXhdLlNpZ25hdHVyZSA9PQ0KPiA+IEFDUElfUEFSU0VSX1NJ R05BVFVSRV9OVUxMKSB7DQo+ID4gPj4gKyAgICAgIG1UYWJsZVBhcnNlckxpc3RbaW5kZXhdLlNp Z25hdHVyZSA9IFNpZ25hdHVyZTsNCj4gPiA+PiArICAgICAgbVRhYmxlUGFyc2VyTGlzdFtpbmRl eF0uUGFyc2VyID0gUGFyc2VyUHJvYzsNCj4gPiA+PiArICAgICAgcmV0dXJuIEVGSV9TVUNDRVNT Ow0KPiA+ID4+ICsgICAgfQ0KPiA+ID4+ICsgIH0NCj4gPiA+PiArDQo+ID4gPj4gKyAgLy8gTm8g ZnJlZSBzbG90IGZvdW5kDQo+ID4gPj4gKyAgcmV0dXJuIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTOw0K PiA+ID4+ICt9DQo+ID4gPj4gKw0KPiA+ID4+ICsvKiogRGVyZWdpc3RlciB0aGUgQUNQSSB0YWJs ZSBQYXJzZXINCj4gPiA+PiArDQo+ID4gPj4gKyAgVGhpcyBmdW5jdGlvbiBkZXJlZ2lzdGVycyB0 aGUgQUNQSSB0YWJsZSBwYXJzZXIuDQo+ID4gPj4gKw0KPiA+ID4+ICsgIEBwYXJhbSBbaW5dIFNp Z25hdHVyZSAgIFRoZSBBQ1BJIHRhYmxlIHNpZ25hdHVyZS4NCj4gPiA+PiArDQo+ID4gPj4gKyAg QHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhlIHBhcnNlciB3YXMgZGVyZWdpc3RlcmVk Lg0KPiA+ID4+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSIEEgcGFyYW1ldGVyIGlz IGludmFsaWQuDQo+ID4gPj4gKyAgQHJldHZhbCBFRklfTk9UX0ZPVU5EICAgICAgICAgQSByZWdp c3RlcmVkIHBhcnNlciB3YXMgbm90IGZvdW5kLg0KPiA+ID4+ICsqLw0KPiA+ID4+ICtFRklfU1RB VFVTDQo+ID4gPj4gK0VGSUFQSQ0KPiA+ID4+ICtEZXJlZ2lzdGVyUGFyc2VyICgNCj4gPiA+PiAr ICBJTiAgVUlOVDMyICAgICAgICAgICAgICAgICAgU2lnbmF0dXJlDQo+ID4gPj4gKyAgKQ0KPiA+ ID4+ICt7DQo+ID4gPj4gKyAgVUlOVDMyIGluZGV4Ow0KPiA+ID4+ICsNCj4gPiA+PiArICBpZiAo U2lnbmF0dXJlID09IEFDUElfUEFSU0VSX1NJR05BVFVSRV9OVUxMKSB7DQo+ID4gPj4gKyAgICBy ZXR1cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KPiA+ID4+ICsgIH0NCj4gPiA+PiArDQo+ID4g Pj4gKyAgZm9yIChpbmRleCA9IDA7DQo+ID4gPj4gKyAgICAgICBpbmRleCA8IChzaXplb2YgKG1U YWJsZVBhcnNlckxpc3QpIC8gc2l6ZW9mIChtVGFibGVQYXJzZXJMaXN0WzBdKSk7DQo+ID4gPj4g KyAgICAgICBpbmRleCsrKQ0KPiA+ID4+ICsgIHsNCj4gPiA+PiArICAgIGlmIChTaWduYXR1cmUg PT0gbVRhYmxlUGFyc2VyTGlzdFtpbmRleF0uU2lnbmF0dXJlKSB7DQo+ID4gPj4gKyAgICAgIG1U YWJsZVBhcnNlckxpc3RbaW5kZXhdLlNpZ25hdHVyZSA9DQo+ID4gQUNQSV9QQVJTRVJfU0lHTkFU VVJFX05VTEw7DQo+ID4gPj4gKyAgICAgIG1UYWJsZVBhcnNlckxpc3RbaW5kZXhdLlBhcnNlciA9 IE5VTEw7DQo+ID4gPj4gKyAgICAgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4gPiA+PiArICAgIH0N Cj4gPiA+PiArICB9DQo+ID4gPj4gKw0KPiA+ID4+ICsgIC8vIE5vIG1hdGNoaW5nIHJlZ2lzdGVy ZWQgcGFyc2VyIGZvdW5kLg0KPiA+ID4+ICsgIHJldHVybiBFRklfTk9UX0ZPVU5EOw0KPiA+ID4+ ICt9DQo+ID4gPj4gKw0KPiA+ID4+ICsvKiogR2V0IHRoZSBBQ1BJIHRhYmxlIFBhcnNlcg0KPiA+ ID4+ICsNCj4gPiA+PiArICBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIEFDUEkgdGFibGUgcGFy c2VyIHByb2MgZnJvbSB0aGUgbGlzdCBvZg0KPiA+ID4+ICsgIHJlZ2lzdGVyZWQgcGFyc2Vycy4N Cj4gPiA+PiArDQo+ID4gPj4gKyAgQHBhcmFtIFtpbl0gIFNpZ25hdHVyZSAgIFRoZSBBQ1BJIHRh YmxlIHNpZ25hdHVyZS4NCj4gPiA+PiArICBAcGFyYW0gW291dF0gUGFyc2VyUHJvYyAgUG9pbnRl ciB0byBhIEFDUEkgdGFibGUgcGFyc2VyIHByb2MuDQo+ID4gPj4gKw0KPiA+ID4+ICsgIEByZXR2 YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBwYXJzZXIgd2FzIHJldHVybmVkIHN1Y2Nlc3Nm dWxseS4NCj4gPiA+PiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiBBIHBhcmFtZXRl ciBpcyBpbnZhbGlkLg0KPiA+ID4+ICsgIEByZXR2YWwgRUZJX05PVF9GT1VORCAgICAgICAgIEEg cmVnaXN0ZXJlZCBwYXJzZXIgd2FzIG5vdCBmb3VuZC4NCj4gPiA+PiArKi8NCj4gPiA+PiArRUZJ X1NUQVRVUw0KPiA+ID4+ICtFRklBUEkNCj4gPiA+PiArR2V0UGFyc2VyICgNCj4gPiA+PiArICBJ TiAgVUlOVDMyICAgICAgICAgICAgICAgICAgIFNpZ25hdHVyZSwNCj4gPiA+PiArICBPVVQgUEFS U0VfQUNQSV9UQUJMRV9QUk9DICogIFBhcnNlclByb2MNCj4gPiA+PiArICApDQo+ID4gPj4gK3sN Cj4gPiA+PiArICBVSU5UMzIgaW5kZXg7DQo+ID4gPj4gKw0KPiA+ID4+ICsgIGlmICgoUGFyc2Vy UHJvYyA9PSBOVUxMKSB8fCAoU2lnbmF0dXJlID09DQo+ID4gQUNQSV9QQVJTRVJfU0lHTkFUVVJF X05VTEwpKSB7DQo+ID4gPj4gKyAgICByZXR1cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KPiA+ ID4+ICsgIH0NCj4gPiA+PiArDQo+ID4gPj4gKyAgZm9yIChpbmRleCA9IDA7DQo+ID4gPj4gKyAg ICAgICBpbmRleCA8IChzaXplb2YgKG1UYWJsZVBhcnNlckxpc3QpIC8gc2l6ZW9mIChtVGFibGVQ YXJzZXJMaXN0WzBdKSk7DQo+ID4gPj4gKyAgICAgICBpbmRleCsrKQ0KPiA+ID4+ICsgIHsNCj4g PiA+PiArICAgIGlmIChTaWduYXR1cmUgPT0gbVRhYmxlUGFyc2VyTGlzdFtpbmRleF0uU2lnbmF0 dXJlKSB7DQo+ID4gPj4gKyAgICAgICpQYXJzZXJQcm9jID0gbVRhYmxlUGFyc2VyTGlzdFtpbmRl eF0uUGFyc2VyOw0KPiA+ID4+ICsgICAgICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ID4gPj4gKyAg ICB9DQo+ID4gPj4gKyAgfQ0KPiA+ID4+ICsNCj4gPiA+PiArICAvLyBObyBtYXRjaGluZyByZWdp c3RlcmVkIHBhcnNlciBmb3VuZC4NCj4gPiA+PiArICByZXR1cm4gRUZJX05PVF9GT1VORDsNCj4g PiA+PiArfQ0KPiA+ID4+ICsNCj4gPiA+PiArLyoqIFRoaXMgZnVuY3Rpb24gcHJvY2Vzc2VzIHRo ZSBBQ1BJIHRhYmxlcy4NCj4gPiA+PiArICBUaGlzIGZ1bmN0aW9uIGNhbGxzIFByb2Nlc3NUYWJs ZVJlcG9ydE9wdGlvbnMoKSB0byBsaXN0IHRoZSBBQ1BJDQo+ID4gPj4gKyAgdGFibGVzLCBwZXJm b3JtIGJpbmFyeSBkdW1wIG9mIHRoZSB0YWJsZXMgYW5kIGRldGVybWluZSBpZiB0aGUNCj4gPiA+ PiArICBBQ1BJIGZpZWxkcyBzaG91bGQgYmUgdHJhY2VkLg0KPiA+ID4+ICsNCj4gPiA+PiArICBU aGlzIGZ1bmN0aW9uIGFsc28gaW52b2tlcyB0aGUgcGFyc2VyIGZvciB0aGUgQUNQSSB0YWJsZXMu DQo+ID4gPj4gKw0KPiA+ID4+ICsgIFRoaXMgZnVuY3Rpb24gYWxzbyBwZXJmb3JtcyBhIFJBVyBk dW1wIG9mIHRoZSBBQ1BJIHRhYmxlIGluY2x1ZGluZw0KPiA+ID4+ICsgIHRoZSB1bmtub3duL3Vu cGFyc2VkIEFDUEkgdGFibGVzIGFuZCB2YWxpZGF0ZXMgdGhlIGNoZWNrc3VtLg0KPiA+ID4+ICsN Cj4gPiA+PiArICBAcGFyYW0gW2luXSBQdHIgICAgICAgICAgICAgICAgUG9pbnRlciB0byB0aGUg c3RhcnQgb2YgdGhlIEFDUEkNCj4gPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdGFibGUgZGF0YSBidWZmZXIuDQo+ID4gPj4gKyovDQo+ID4gPj4gK1ZPSUQNCj4gPiA+PiAr RUZJQVBJDQo+ID4gPj4gK1Byb2Nlc3NBY3BpVGFibGUgKA0KPiA+ID4+ICsgIElOIFVJTlQ4KiBQ dHINCj4gPiA+PiArICApDQo+ID4gPj4gK3sNCj4gPiA+PiArICBFRklfU1RBVFVTICAgIFN0YXR1 czsNCj4gPiA+PiArICBCT09MRUFOICAgICAgIFRyYWNlOw0KPiA+ID4+ICsgIENPTlNUIFVJTlQz MiogQWNwaVRhYmxlU2lnbmF0dXJlOw0KPiA+ID4+ICsgIENPTlNUIFVJTlQzMiogQWNwaVRhYmxl TGVuZ3RoOw0KPiA+ID4+ICsgIENPTlNUIFVJTlQ4KiAgQWNwaVRhYmxlUmV2aXNpb247DQo+ID4g Pj4gKyAgUEFSU0VfQUNQSV9UQUJMRV9QUk9DIFBhcnNlclByb2M7DQo+ID4gPj4gKw0KPiA+ID4+ ICsgIFBhcnNlQWNwaUhlYWRlciAoDQo+ID4gPj4gKyAgICBQdHIsDQo+ID4gPj4gKyAgICAmQWNw aVRhYmxlU2lnbmF0dXJlLA0KPiA+ID4+ICsgICAgJkFjcGlUYWJsZUxlbmd0aCwNCj4gPiA+PiAr ICAgICZBY3BpVGFibGVSZXZpc2lvbg0KPiA+ID4+ICsgICAgKTsNCj4gPiA+PiArDQo+ID4gPj4g KyAgVHJhY2UgPSBQcm9jZXNzVGFibGVSZXBvcnRPcHRpb25zICgNCj4gPiA+PiArICAgICAgICAg ICAgKkFjcGlUYWJsZVNpZ25hdHVyZSwNCj4gPiA+PiArICAgICAgICAgICAgUHRyLA0KPiA+ID4+ ICsgICAgICAgICAgICAqQWNwaVRhYmxlTGVuZ3RoDQo+ID4gPj4gKyAgICAgICAgICAgICk7DQo+ ID4gPj4gKw0KPiA+ID4+ICsgIGlmIChUcmFjZSkgew0KPiA+ID4+ICsgICAgRHVtcFJhdyAoUHRy LCAqQWNwaVRhYmxlTGVuZ3RoKTsNCj4gPiA+PiArICAgIFZlcmlmeUNoZWNrc3VtIChUUlVFLCBQ dHIsICpBY3BpVGFibGVMZW5ndGgpOw0KPiA+ID4+ICsgIH0NCj4gPiA+PiArDQo+ID4gPj4gKyAg U3RhdHVzID0gR2V0UGFyc2VyICgqQWNwaVRhYmxlU2lnbmF0dXJlLCAmUGFyc2VyUHJvYyk7DQo+ ID4gPj4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ID4+ICsgICAgLy8gTm8gcmVn aXN0ZXJlZCBwYXJzZXIgZm91bmQsIGRvIGRlZmF1bHQgaGFuZGxpbmcuDQo+ID4gPj4gKyAgICBp ZiAoVHJhY2UpIHsNCj4gPiA+PiArICAgICAgRHVtcEFjcGlIZWFkZXIgKFB0cik7DQo+ID4gPj4g KyAgICB9DQo+ID4gPj4gKyAgICByZXR1cm47DQo+ID4gPj4gKyAgfQ0KPiA+ID4+ICsNCj4gPiA+ PiArICBQYXJzZXJQcm9jICgNCj4gPiA+PiArICAgIFRyYWNlLA0KPiA+ID4+ICsgICAgUHRyLA0K PiA+ID4+ICsgICAgKkFjcGlUYWJsZUxlbmd0aCwNCj4gPiA+PiArICAgICpBY3BpVGFibGVSZXZp c2lvbg0KPiA+ID4+ICsgICAgKTsNCj4gPiA+PiArfQ0KPiA+ID4+IGRpZmYgLS1naXQgYS9TaGVs bFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9BY3BpVmlldy5jDQo+ID4g Yi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9BY3BpVmlldy5j DQo+ID4gPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiA+PiBpbmRleA0KPiA+IDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU4NmUwNWFiYjcxNmIzNmQzNGE5Yw0K PiA+IDRlNTE1NjhkYzYzZmVjYjEwODUNCj4gPiA+PiAtLS0gL2Rldi9udWxsDQo+ID4gPj4gKysr IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvQWNwaVZpZXcu Yw0KPiA+ID4+IEBAIC0wLDAgKzEsNjAxIEBADQo+ID4gPj4gKy8qKg0KPiA+ID4+ICsNCj4gPiA+ PiArICBDb3B5cmlnaHQgKGMpIDIwMTYgLSAyMDE4LCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyBy ZXNlcnZlZC4NCj4gPiA+PiArICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0 ZXJpYWxzDQo+ID4gPj4gKyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0 aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YNCj4gdGhlDQo+ID4gQlNEIExpY2Vuc2UNCj4gPiA+ PiArICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQg b2YgdGhlIGxpY2Vuc2UgbWF5DQo+IGJlDQo+ID4gZm91bmQgYXQNCj4gPiA+PiArICBodHRwOi8v b3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ID4gPj4gKw0KPiA+ID4+ ICsgIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBB TiAiQVMNCj4gSVMiDQo+ID4gQkFTSVMsDQo+ID4gPj4gKyAgV0lUSE9VVCBXQVJSQU5USUVTIE9S IFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSDQo+ID4gRVhQUkVTUyBPUiBJTVBM SUVELg0KPiA+ID4+ICsqKi8NCj4gPiA+PiArDQo+ID4gPj4gKyNpbmNsdWRlIDxMaWJyYXJ5L1By aW50TGliLmg+DQo+ID4gPj4gKyNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlMaWIuaD4NCj4gPiA+PiAr I2luY2x1ZGUgPExpYnJhcnkvU2hlbGxMaWIuaD4NCj4gPiA+PiArI2luY2x1ZGUgPExpYnJhcnkv VWVmaUJvb3RTZXJ2aWNlc1RhYmxlTGliLmg+DQo+ID4gPj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0Jh c2VNZW1vcnlMaWIuaD4NCj4gPiA+PiArI2luY2x1ZGUgPExpYnJhcnkvRGVidWdMaWIuaD4NCj4g PiA+PiArI2luY2x1ZGUgPExpYnJhcnkvTWVtb3J5QWxsb2NhdGlvbkxpYi5oPg0KPiA+ID4+ICsj aW5jbHVkZSA8TGlicmFyeS9BY3BpVmlldy9BY3BpUGFyc2VyLmg+DQo+ID4gPj4gKyNpbmNsdWRl IDxMaWJyYXJ5L0FjcGlWaWV3L0FjcGlUYWJsZVBhcnNlci5oPg0KPiA+ID4+ICsjaW5jbHVkZSAi QWNwaVZpZXcuaCINCj4gPiA+PiArI2luY2x1ZGUgIlVlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExp Yi5oIg0KPiA+ID4+ICsNCj4gPiA+PiArRUZJX0hJSV9IQU5ETEUgZ1NoZWxsQWNwaVZpZXdIaWlI YW5kbGUgPSBOVUxMOw0KPiA+ID4+ICsNCj4gPiA+PiArLy8gUmVwb3J0IHZhcmlhYmxlcw0KPiA+ ID4+ICtTVEFUSUMgVUlOVDMyICAgICAgICAgICAgIG1TZWxlY3RlZEFjcGlUYWJsZTsNCj4gPiA+ PiArU1RBVElDIENPTlNUIENIQVIxNiogICAgICBtU2VsZWN0ZWRBY3BpVGFibGVOYW1lOw0KPiA+ ID4+ICtTVEFUSUMgQk9PTEVBTiAgICAgICAgICAgIG1TZWxlY3RlZEFjcGlUYWJsZUZvdW5kOw0K PiA+ID4+ICtTVEFUSUMgRVJFUE9SVF9PUFRJT04gICAgIG1SZXBvcnRUeXBlOw0KPiA+ID4+ICtT VEFUSUMgVUlOVDMyICAgICAgICAgICAgIG1UYWJsZUNvdW50Ow0KPiA+ID4+ICtTVEFUSUMgVUlO VDMyICAgICAgICAgICAgIG1CaW5UYWJsZUNvdW50Ow0KPiA+ID4+ICtTVEFUSUMgQk9PTEVBTiAg ICAgICAgICAgIG1WZXJib3NlOw0KPiA+ID4+ICtTVEFUSUMgQk9PTEVBTiAgICAgICAgICAgIG1D b25zaXN0ZW5jeUNoZWNrOw0KPiA+ID4+ICtTVEFUSUMgQk9PTEVBTiAgICAgICAgICAgIG1Db2xv dXJIaWdobGlnaHRpbmc7DQo+ID4gPj4gKw0KPiA+ID4+ICsvKiogQW4gYXJyYXkgb2YgYWNwaXZp ZXcgY29tbWFuZCBsaW5lIHBhcmFtZXRlcnMuDQo+ID4gPj4gKyovDQo+ID4gPj4gK1NUQVRJQyBD T05TVCBTSEVMTF9QQVJBTV9JVEVNIFBhcmFtTGlzdFtdID0gew0KPiA+ID4+ICsgIHtMIi8/Iiwg VHlwZUZsYWd9LA0KPiA+ID4+ICsgIHtMIi1jIiwgVHlwZUZsYWd9LA0KPiA+ID4+ICsgIHtMIi1k IiwgVHlwZUZsYWd9LA0KPiA+ID4+ICsgIHtMIi1oIiwgVHlwZVZhbHVlfSwNCj4gPiA+PiArICB7 TCItbCIsIFR5cGVGbGFnfSwNCj4gPiA+PiArICB7TCItcyIsIFR5cGVWYWx1ZX0sDQo+ID4gPj4g KyAge0wiLXYiLCBUeXBlRmxhZ30sDQo+ID4gPj4gKyAge05VTEwsIFR5cGVNYXh9DQo+ID4gPj4g K307DQo+ID4gPj4gKw0KPiA+ID4+ICsvKiogVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBjb2xv dXIgaGlnaGxpZ2h0aW5nIHN0YXR1cy4NCj4gPiA+PiArDQo+ID4gPj4gKyAgQHJldHZhbCBUUlVF IGlmIGNvbG91ciBoaWdobGlnaHRpbmcgaXMgZW5hYmxlZC4NCj4gPiA+PiArKi8NCj4gPiA+PiAr Qk9PTEVBTg0KPiA+ID4+ICtHZXRDb2xvdXJIaWdobGlnaHRpbmcgKA0KPiA+ID4+ICsgIFZPSUQN Cj4gPiA+PiArICApDQo+ID4gPj4gK3sNCj4gPiA+PiArICByZXR1cm4gbUNvbG91ckhpZ2hsaWdo dGluZzsNCj4gPiA+PiArfQ0KPiA+ID4+ICsNCj4gPiA+PiArLyoqIFRoaXMgZnVuY3Rpb24gc2V0 cyB0aGUgY29sb3VyIGhpZ2hsaWdodGluZyBzdGF0dXMuDQo+ID4gPj4gKw0KPiA+ID4+ICsqLw0K PiA+ID4+ICtWT0lEDQo+ID4gPj4gK1NldENvbG91ckhpZ2hsaWdodGluZyAoDQo+ID4gPj4gKyAg Qk9PTEVBTiBIaWdobGlnaHQNCj4gPiA+PiArICApDQo+ID4gPj4gK3sNCj4gPiA+PiArICBtQ29s b3VySGlnaGxpZ2h0aW5nID0gSGlnaGxpZ2h0Ow0KPiA+ID4+ICt9DQo+ID4gPj4gKw0KPiA+ID4+ ICsvKiogVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSByZXBvcnQgb3B0aW9ucy4NCj4gPiA+PiAr DQo+ID4gPj4gKyAgQHJldHZhbCBSZXR1cm5zIHRoZSByZXBvcnQgb3B0aW9uLg0KPiA+ID4+ICsq Lw0KPiA+ID4+ICtTVEFUSUMNCj4gPiA+PiArRVJFUE9SVF9PUFRJT04NCj4gPiA+PiArR2V0UmVw b3J0T3B0aW9uICgNCj4gPiA+PiArICBWT0lEDQo+ID4gPj4gKyAgKQ0KPiA+ID4+ICt7DQo+ID4g Pj4gKyAgcmV0dXJuIG1SZXBvcnRUeXBlOw0KPiA+ID4+ICt9DQo+ID4gPj4gKw0KPiA+ID4+ICsv KiogVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBzZWxlY3RlZCBBQ1BJIHRhYmxlLg0KPiA+ID4+ ICsNCj4gPiA+PiArICBAcmV0dmFsIFJldHVybnMgc2lnbmF0dXJlIG9mIHRoZSBzZWxlY3RlZCBB Q1BJIHRhYmxlLg0KPiA+ID4+ICsqLw0KPiA+ID4+ICtTVEFUSUMNCj4gPiA+PiArVUlOVDMyDQo+ ID4gPj4gK0dldFNlbGVjdGVkQWNwaVRhYmxlICgNCj4gPiA+PiArICBWT0lEDQo+ID4gPj4gKyAg KQ0KPiA+ID4+ICt7DQo+ID4gPj4gKyAgcmV0dXJuIG1TZWxlY3RlZEFjcGlUYWJsZTsNCj4gPiA+ PiArfQ0KPiA+ID4+ICsNCj4gPiA+PiArLyoqIFRoaXMgZnVuY3Rpb24gZHVtcHMgdGhlIEFDUEkg dGFibGUgdG8gYSBmaWxlLg0KPiA+ID4+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgICBQb2ludGVy IHRvIHRoZSBBQ1BJIHRhYmxlIGRhdGEuDQo+ID4gPj4gKyAgQHBhcmFtIFtpbl0gTGVuZ3RoICAg IFRoZSBsZW5ndGggb2YgdGhlIEFDUEkgdGFibGUuDQo+ID4gPj4gKw0KPiA+ID4+ICsgIEByZXR2 YWwgVFJVRSAgICAgICAgICBTdWNjZXNzLg0KPiA+ID4+ICsgIEByZXR2YWwgRkFMU0UgICAgICAg ICBGYWlsdXJlLg0KPiA+ID4+ICsqLw0KPiA+ID4+ICtTVEFUSUMNCj4gPiA+PiArQk9PTEVBTg0K PiA+ID4+ICtEdW1wQWNwaVRhYmxlVG9GaWxlICgNCj4gPiA+PiArICBJTiBDT05TVCBVSU5UOCog IFB0ciwNCj4gPiA+PiArICBJTiBDT05TVCBVSU5UTiAgIExlbmd0aA0KPiA+ID4+ICsgICkNCj4g PiA+PiArew0KPiA+ID4+ICsgIEVGSV9TVEFUVVMgICAgICAgICBTdGF0dXM7DQo+ID4gPj4gKyAg Q0hBUjE2ICAgICAgICAgICAgIEZpbGVOYW1lQnVmZmVyW01BWF9GSUxFX05BTUVfTEVOXTsNCj4g PiA+PiArICBTSEVMTF9GSUxFX0hBTkRMRSAgRHVtcEZpbGVIYW5kbGUgPSBOVUxMOw0KPiA+ID4+ ICsgIFVJTlROICAgICAgICAgICAgICBUcmFuc2ZlckJ5dGVzID0gTGVuZ3RoOw0KPiA+ID4+ICsN Cj4gPiA+PiArICBVbmljb2RlU1ByaW50ICgNCj4gPiA+PiArICAgIEZpbGVOYW1lQnVmZmVyLA0K PiA+ID4+ICsgICAgc2l6ZW9mIChGaWxlTmFtZUJ1ZmZlciksDQo+ID4gPj4gKyAgICBMIi5cXCVz JTA0ZC5iaW4iLA0KPiA+ID4+ICsgICAgbVNlbGVjdGVkQWNwaVRhYmxlTmFtZSwNCj4gPiA+PiAr ICAgIG1CaW5UYWJsZUNvdW50KysNCj4gPiA+PiArICAgICk7DQo+ID4gPj4gKw0KPiA+ID4+ICsg IFN0YXR1cyA9IFNoZWxsT3BlbkZpbGVCeU5hbWUgKA0KPiA+ID4+ICsgICAgICAgICAgICAgRmls ZU5hbWVCdWZmZXIsDQo+ID4gPj4gKyAgICAgICAgICAgICAmRHVtcEZpbGVIYW5kbGUsDQo+ID4g Pj4gKyAgICAgICAgICAgICBFRklfRklMRV9NT0RFX1JFQUQgfCBFRklfRklMRV9NT0RFX1dSSVRF IHwNCj4gPiBFRklfRklMRV9NT0RFX0NSRUFURSwNCj4gPiA+PiArICAgICAgICAgICAgIDANCj4g PiA+PiArICAgICAgICAgICAgICk7DQo+ID4gPj4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkg ew0KPiA+ID4+ICsgICAgU2hlbGxQcmludEhpaUV4ICgNCj4gPiA+PiArICAgICAgLTEsDQo+ID4g Pj4gKyAgICAgIC0xLA0KPiA+ID4+ICsgICAgICBOVUxMLA0KPiA+ID4+ICsgICAgICBTVFJJTkdf VE9LRU4gKFNUUl9HRU5fUkVBRE9OTFlfTUVESUEpLA0KPiA+ID4+ICsgICAgICBnU2hlbGxBY3Bp Vmlld0hpaUhhbmRsZSwNCj4gPiA+PiArICAgICAgTCJhY3BpdmlldyINCj4gPiA+PiArICAgICAg KTsNCj4gPiA+PiArICAgIHJldHVybiBGQUxTRTsNCj4gPiA+PiArICB9DQo+ID4gPj4gKw0KPiA+ ID4+ICsgIFByaW50IChMIkR1bXBpbmcgQUNQSSB0YWJsZSB0byA6ICVzIC4uLiAiLCBGaWxlTmFt ZUJ1ZmZlcik7DQo+ID4gPj4gKw0KPiA+ID4+ICsgIFN0YXR1cyA9IFNoZWxsV3JpdGVGaWxlICgN Cj4gPiA+PiArICAgICAgICAgICAgIER1bXBGaWxlSGFuZGxlLA0KPiA+ID4+ICsgICAgICAgICAg ICAgJlRyYW5zZmVyQnl0ZXMsDQo+ID4gPj4gKyAgICAgICAgICAgICAoVk9JRCopUHRyDQo+ID4g Pj4gKyAgICAgICAgICAgICApOw0KPiA+ID4+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsN Cj4gPiA+PiArICAgIFByaW50IChMIkVSUk9SOiBGYWlsZWQgdG8gZHVtcCB0YWJsZSB0byBiaW5h cnkgZmlsZS5cbiIpOw0KPiA+ID4+ICsgICAgVHJhbnNmZXJCeXRlcyA9IDA7DQo+ID4gPj4gKyAg fSBlbHNlIHsNCj4gPiA+PiArICAgIFByaW50IChMIkRPTkUuXG4iKTsNCj4gPiA+PiArICB9DQo+ ID4gPj4gKw0KPiA+ID4+ICsgIFNoZWxsQ2xvc2VGaWxlICgmRHVtcEZpbGVIYW5kbGUpOw0KPiA+ ID4+ICsgIHJldHVybiAoTGVuZ3RoID09IFRyYW5zZmVyQnl0ZXMpOw0KPiA+ID4+ICt9DQo+ID4g Pj4gKw0KPiA+ID4+ICsvKiogVGhpcyBmdW5jdGlvbiBwcm9jZXNzZXMgdGhlIHRhYmxlIHJlcG9y dGluZyBvcHRpb25zIGZvciB0aGUgQUNQSQ0KPiB0YWJsZS4NCj4gPiA+PiArDQo+ID4gPj4gKyAg QHBhcmFtIFtpbl0gU2lnbmF0dXJlIFRoZSBBQ1BJIHRhYmxlIFNpZ25hdHVyZS4NCj4gPiA+PiAr ICBAcGFyYW0gW2luXSBUYWJsZVB0ciAgUG9pbnRlciB0byB0aGUgQUNQSSB0YWJsZSBkYXRhLg0K PiA+ID4+ICsgIEBwYXJhbSBbaW5dIExlbmd0aCAgICBUaGUgbGVuZ3RoIGZvIHRoZSBBQ1BJIHRh YmxlLg0KPiA+ID4+ICsNCj4gPiA+PiArICBAcmV0dmFsIFJldHVybnMgVFJVRSBpZiB0aGUgQUNQ SSB0YWJsZSBzaG91bGQgYmUgdHJhY2VkLg0KPiA+ID4+ICsqLw0KPiA+ID4+ICtCT09MRUFODQo+ ID4gPj4gK1Byb2Nlc3NUYWJsZVJlcG9ydE9wdGlvbnMgKA0KPiA+ID4+ICsgIElOIENPTlNUIFVJ TlQzMiAgU2lnbmF0dXJlLA0KPiA+ID4+ICsgIElOIENPTlNUIFVJTlQ4KiAgVGFibGVQdHIsDQo+ ID4gPj4gKyAgSU4gQ09OU1QgVUlOVDMyICBMZW5ndGgNCj4gPiA+PiArICApDQo+ID4gPj4gK3sN Cj4gPiA+PiArICBVSU5UTiAgIE9yaWdpbmFsQXR0cmlidXRlOw0KPiA+ID4+ICsgIFVJTlQ4KiAg U2lnbmF0dXJlUHRyID0gKFVJTlQ4KikoVUlOVE4pJlNpZ25hdHVyZTsNCj4gPiA+PiArICBCT09M RUFOIExvZyA9IEZBTFNFOw0KPiA+ID4+ICsgIEJPT0xFQU4gSGlnaExpZ2h0ID0gR2V0Q29sb3Vy SGlnaGxpZ2h0aW5nICgpOw0KPiA+ID4+ICsgIHN3aXRjaCAoR2V0UmVwb3J0T3B0aW9uICgpKSB7 DQo+ID4gPj4gKyAgICBjYXNlIEVSRVBPUlRfQUxMOg0KPiA+ID4+ICsgICAgICBMb2cgPSBUUlVF Ow0KPiA+ID4+ICsgICAgICBicmVhazsNCj4gPiA+PiArICAgIGNhc2UgRVJFUE9SVF9TRUxFQ1RF RDoNCj4gPiA+PiArICAgICAgaWYgKFNpZ25hdHVyZSA9PSBHZXRTZWxlY3RlZEFjcGlUYWJsZSAo KSkgew0KPiA+ID4+ICsgICAgICAgIExvZyA9IFRSVUU7DQo+ID4gPj4gKyAgICAgICAgbVNlbGVj dGVkQWNwaVRhYmxlRm91bmQgPSBUUlVFOw0KPiA+ID4+ICsgICAgICB9DQo+ID4gPj4gKyAgICAg IGJyZWFrOw0KPiA+ID4+ICsgICAgY2FzZSBFUkVQT1JUX1RBQkxFX0xJU1Q6DQo+ID4gPj4gKyAg ICAgIGlmIChtVGFibGVDb3VudCA9PSAwKSB7DQo+ID4gPj4gKyAgICAgICAgaWYgKEhpZ2hMaWdo dCkgew0KPiA+ID4+ICsgICAgICAgICAgT3JpZ2luYWxBdHRyaWJ1dGUgPSBnU1QtPkNvbk91dC0+ TW9kZS0+QXR0cmlidXRlOw0KPiA+ID4+ICsgICAgICAgICAgZ1NULT5Db25PdXQtPlNldEF0dHJp YnV0ZSAoDQo+ID4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICBnU1QtPkNvbk91dCwNCj4g PiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgIEVGSV9URVhUX0FUVFIoRUZJX0NZQU4sDQo+ ID4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgoT3JpZ2luYWxBdHRyaWJ1dGUmKEJJ VDR8QklUNXxCSVQ2KSk+PjQpKQ0KPiA+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgKTsN Cj4gPiA+PiArICAgICAgICB9DQo+ID4gPj4gKyAgICAgICAgUHJpbnQgKEwiXG5JbnN0YWxsZWQg VGFibGUocyk6XG4iKTsNCj4gPiA+PiArICAgICAgICBpZiAoSGlnaExpZ2h0KSB7DQo+ID4gPj4g KyAgICAgICAgICBnU1QtPkNvbk91dC0+U2V0QXR0cmlidXRlIChnU1QtPkNvbk91dCwgT3JpZ2lu YWxBdHRyaWJ1dGUpOw0KPiA+ID4+ICsgICAgICAgIH0NCj4gPiA+PiArICAgICAgfQ0KPiA+ID4+ ICsgICAgICBQcmludCAoDQo+ID4gPj4gKyAgICAgICAgTCJcdCU0ZC4gJWMlYyVjJWNcbiIsDQo+ ID4gPj4gKyAgICAgICAgKyttVGFibGVDb3VudCwNCj4gPiA+PiArICAgICAgICBTaWduYXR1cmVQ dHJbMF0sDQo+ID4gPj4gKyAgICAgICAgU2lnbmF0dXJlUHRyWzFdLA0KPiA+ID4+ICsgICAgICAg IFNpZ25hdHVyZVB0clsyXSwNCj4gPiA+PiArICAgICAgICBTaWduYXR1cmVQdHJbM10NCj4gPiA+ PiArICAgICAgICApOw0KPiA+ID4+ICsgICAgICBicmVhazsNCj4gPiA+PiArICAgIGNhc2UgRVJF UE9SVF9EVU1QX0JJTl9GSUxFOg0KPiA+ID4+ICsgICAgICBpZiAoU2lnbmF0dXJlID09IEdldFNl bGVjdGVkQWNwaVRhYmxlICgpKSB7DQo+ID4gPj4gKyAgICAgICAgbVNlbGVjdGVkQWNwaVRhYmxl Rm91bmQgPSBUUlVFOw0KPiA+ID4+ICsgICAgICAgIER1bXBBY3BpVGFibGVUb0ZpbGUgKFRhYmxl UHRyLCBMZW5ndGgpOw0KPiA+ID4+ICsgICAgICB9DQo+ID4gPj4gKyAgICAgIGJyZWFrOw0KPiA+ ID4+ICsgICAgY2FzZSBFUkVQT1JUX01BWDoNCj4gPiA+PiArICAgICAgLy8gV2Ugc2hvdWxkIG5l dmVyIGJlIGhlcmUuDQo+ID4gPj4gKyAgICAgIC8vIFRoaXMgY2FzZSBpcyBvbmx5IHByZXNlbnQg dG8gcHJldmVudCBjb21waWxlciB3YXJuaW5nLg0KPiA+ID4+ICsgICAgICBicmVhazsNCj4gPiA+ PiArICB9IC8vIHN3aXRjaA0KPiA+ID4+ICsNCj4gPiA+PiArICBpZiAoTG9nKSB7DQo+ID4gPj4g KyAgICBpZiAoSGlnaExpZ2h0KSB7DQo+ID4gPj4gKyAgICAgIE9yaWdpbmFsQXR0cmlidXRlID0g Z1NULT5Db25PdXQtPk1vZGUtPkF0dHJpYnV0ZTsNCj4gPiA+PiArICAgICAgZ1NULT5Db25PdXQt PlNldEF0dHJpYnV0ZSAoDQo+ID4gPj4gKyAgICAgICAgICAgICAgICAgICAgIGdTVC0+Q29uT3V0 LA0KPiA+ID4+ICsgICAgICAgICAgICAgICAgICAgICBFRklfVEVYVF9BVFRSKEVGSV9MSUdIVEJM VUUsDQo+ID4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgKChPcmlnaW5hbEF0dHJpYnV0ZSYo QklUNHxCSVQ1fEJJVDYpKT4+NCkpDQo+ID4gPj4gKyAgICAgICAgICAgICAgICAgICAgICk7DQo+ ID4gPj4gKyAgICB9DQo+ID4gPj4gKyAgICBQcmludCAoDQo+ID4gPj4gKyAgICAgIEwiXG5cbiAt LS0tLS0tLS0tLS0tLS0gJWMlYyVjJWMgVGFibGUgLS0tLS0tLS0tLS0tLS0tIFxuXG4iLA0KPiA+ ID4+ICsgICAgICBTaWduYXR1cmVQdHJbMF0sDQo+ID4gPj4gKyAgICAgIFNpZ25hdHVyZVB0clsx XSwNCj4gPiA+PiArICAgICAgU2lnbmF0dXJlUHRyWzJdLA0KPiA+ID4+ICsgICAgICBTaWduYXR1 cmVQdHJbM10NCj4gPiA+PiArICAgICAgKTsNCj4gPiA+PiArICAgIGlmIChIaWdoTGlnaHQpIHsN Cj4gPiA+PiArICAgICAgZ1NULT5Db25PdXQtPlNldEF0dHJpYnV0ZSAoZ1NULT5Db25PdXQsIE9y aWdpbmFsQXR0cmlidXRlKTsNCj4gPiA+PiArICAgIH0NCj4gPiA+PiArICB9DQo+ID4gPj4gKw0K PiA+ID4+ICsgIHJldHVybiBMb2c7DQo+ID4gPj4gK30NCj4gPiA+PiArDQo+ID4gPj4gKy8qKiBU aGlzIGZ1bmN0aW9uIGNvbnZlcnRzIGEgc3RyaW5nIHRvIEFDUEkgdGFibGUgc2lnbmF0dXJlLg0K PiA+ID4+ICsNCj4gPiA+PiArICBAcGFyYW0gW2luXSBTdHIgICBQb2ludGVyIHRvIHRoZSBzdHJp bmcgdG8gYmUgY29udmVydGVkIHRvIHRoZQ0KPiA+ID4+ICsgICAgICAgICAgICAgICAgICAgIEFD UEkgdGFibGUgc2lnbmF0dXJlLg0KPiA+ID4+ICsNCj4gPiA+PiArICBAcmV0dmFsIFRoZSBBQ1BJ IHRhYmxlIHNpZ25hdHVyZS4NCj4gPiA+PiArKi8NCj4gPiA+PiArU1RBVElDDQo+ID4gPj4gK1VJ TlQzMg0KPiA+ID4+ICtDb252ZXJ0U3RyVG9BY3BpU2lnbmF0dXJlICgNCj4gPiA+PiArICBJTiAg Q09OU1QgQ0hBUjE2KiBTdHINCj4gPiA+PiArICApDQo+ID4gPj4gK3sNCj4gPiA+PiArICBVSU5U OCBJbmRleCA9IDA7DQo+ID4gPj4gKyAgQ0hBUjggUHRyWzRdOw0KPiA+ID4+ICsNCj4gPiA+PiAr ICAvLyBDb252ZXJ0IHRvIFVwcGVyIGNhc2UgYW5kIGNvbnZlcnQgdG8gQVNDSUkNCj4gPiA+PiAr ICB3aGlsZSAoKEluZGV4IDwgNCkgJiYgKFN0cltJbmRleF0gIT0gMCkpIHsNCj4gPiA+PiArICAg IGlmIChTdHJbSW5kZXhdID49IEwnYScgJiYgU3RyW0luZGV4XSA8PSBMJ3onKSB7DQo+ID4gPj4g KyAgICAgIFB0cltJbmRleF0gPSAoQ0hBUjgpKFN0cltJbmRleF0gLSAoTCdhJyAtIEwnQScpKTsN Cj4gPiA+PiArICAgIH0gZWxzZSB7DQo+ID4gPj4gKyAgICAgIFB0cltJbmRleF0gPSAoQ0hBUjgp U3RyW0luZGV4XTsNCj4gPiA+PiArICAgIH0NCj4gPiA+PiArICAgIEluZGV4Kys7DQo+ID4gPj4N Cj4gPiA+PiArICB9DQo+ID4gPj4gKyAgcmV0dXJuICooVUlOVDMyKilQdHI7DQo+ID4gPj4gK30N Cj4gPiA+PiArDQo+ID4gPj4gKy8qKiBUaGlzIGZ1bmN0aW9uIGl0ZXJhdGVzIHRoZSBjb25maWd1 cmF0aW9uIHRhYmxlIGVudHJpZXMgaW4gdGhlDQo+ID4gPj4gKyAgICBzeXN0ZW0gdGFibGUsIHJl dHJpZXZlcyB0aGUgUlNEUCBwb2ludGVyIGFuZCBzdGFydHMgcGFyc2luZw0KPiA+ID4+ICsgICAg dGhlIEFDUEkgdGFibGVzLg0KPiA+ID4+ICsNCj4gPiA+PiArICBAcGFyYW0gW2luXSBTeXN0ZW1U YWJsZSBQb2ludGVyIHRvIHRoZSBFRkkgc3lzdGVtIHRhYmxlLg0KPiA+ID4+ICsNCj4gPiA+PiAr ICBAcmV0dmFsIFJldHVybnMgRUZJX05PVF9GT1VORCAgIGlmIHRoZSBSU0RQIHBvaW50ZXIgaXMg bm90IGZvdW5kLg0KPiA+ID4+ICsgICAgICAgICAgUmV0dXJucyBFRklfVU5TVVBQT1JURUQgaWYg dGhlIFJTRFAgdmVyc2lvbiBpcyBsZXNzIHRoYW4gMi4NCj4gPiA+PiArICAgICAgICAgIFJldHVy bnMgRUZJX1NVQ0NFU1MgICAgIGlmIHN1Y2Nlc3NmdWwuDQo+ID4gPj4gKyovDQo+ID4gPj4gK1NU QVRJQw0KPiA+ID4+ICtFRklfU1RBVFVTDQo+ID4gPj4gK0VGSUFQSQ0KPiA+ID4+ICtBY3BpVmll dyAoDQo+ID4gPj4gKyAgSU4gRUZJX1NZU1RFTV9UQUJMRSogU3lzdGVtVGFibGUNCj4gPiA+PiAr ICApDQo+ID4gPj4gK3sNCj4gPiA+PiArICBFRklfU1RBVFVTICAgICAgICAgICAgICAgU3RhdHVz Ow0KPiA+ID4+ICsgIFVJTlROICAgICAgICAgICAgICAgICAgICBJbmRleDsNCj4gPiA+PiArICBF RklfQ09ORklHVVJBVElPTl9UQUJMRSogRWZpQ29uZmlndXJhdGlvblRhYmxlOw0KPiA+ID4+ICsg IEJPT0xFQU4gICAgICAgICAgICAgICAgICBGb3VuZEFjcGlUYWJsZTsNCj4gPiA+PiArICBVSU5U TiAgICAgICAgICAgICAgICAgICAgT3JpZ2luYWxBdHRyaWJ1dGU7DQo+ID4gPj4gKyAgVUlOVE4g ICAgICAgICAgICAgICAgICAgIFByaW50QXR0cmlidXRlOw0KPiA+ID4+ICsgIEVSRVBPUlRfT1BU SU9OICAgICAgICAgICBSZXBvcnRPcHRpb247DQo+ID4gPj4gKyAgVUlOVDgqICAgICAgICAgICAg ICAgICAgIFJzZHBQdHI7DQo+ID4gPj4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAgIFJzZHBM ZW5ndGg7DQo+ID4gPj4gKyAgVUlOVDggICAgICAgICAgICAgICAgICAgIFJzZHBSZXZpc2lvbjsN Cj4gPiA+PiArICBQQVJTRV9BQ1BJX1RBQkxFX1BST0MgICAgUnNkcFBhcnNlclByb2M7DQo+ID4g Pj4gKyAgQk9PTEVBTiAgICAgICAgICAgICAgICAgIFRyYWNlOw0KPiA+ID4+ICsNCj4gPiA+PiAr ICAvLyBTZWFyY2ggdGhlIHRhYmxlIGZvciBhbiBlbnRyeSB0aGF0IG1hdGNoZXMgdGhlIEFDUEkg VGFibGUgR3VpZA0KPiA+ID4+ICsgIEZvdW5kQWNwaVRhYmxlID0gRkFMU0U7DQo+ID4gPj4gKyAg Zm9yIChJbmRleCA9IDA7IEluZGV4IDwgU3lzdGVtVGFibGUtPk51bWJlck9mVGFibGVFbnRyaWVz Ow0KPiBJbmRleCsrKSB7DQo+ID4gPj4gKyAgICBpZiAoQ29tcGFyZUd1aWQgKCZnRWZpQWNwaVRh YmxlR3VpZCwNCj4gPiA+PiArICAgICAgICAgICYoU3lzdGVtVGFibGUtPkNvbmZpZ3VyYXRpb25U YWJsZVtJbmRleF0uVmVuZG9yR3VpZCkpKSB7DQo+ID4gPj4gKyAgICAgIEVmaUNvbmZpZ3VyYXRp b25UYWJsZSA9ICZTeXN0ZW1UYWJsZS0+Q29uZmlndXJhdGlvblRhYmxlW0luZGV4XTsNCj4gPiA+ PiArICAgICAgRm91bmRBY3BpVGFibGUgPSBUUlVFOw0KPiA+ID4+ICsgICAgICBicmVhazsNCj4g PiA+PiArICAgIH0NCj4gPiA+PiArICB9DQo+ID4gPj4gKw0KPiA+ID4+ICsgIGlmIChGb3VuZEFj cGlUYWJsZSkgew0KPiA+ID4+ICsgICAgUnNkcFB0ciA9IChVSU5UOCopRWZpQ29uZmlndXJhdGlv blRhYmxlLT5WZW5kb3JUYWJsZTsNCj4gPiA+PiArDQo+ID4gPj4gKyAgICAvLyBUaGUgUlNEUCBy ZXZpc2lvbiBpcyAxIGJ5dGUgc3RhcnRpbmcgYXQgb2Zmc2V0IDE1DQo+ID4gPj4gKyAgICBSc2Rw UmV2aXNpb24gPSAqKFJzZHBQdHIgKyBSU0RQX1JFVklTSU9OX09GRlNFVCk7DQo+ID4gPj4gKw0K PiA+ID4+ICsgICAgaWYgKFJzZHBSZXZpc2lvbiA8IDIpIHsNCj4gPiA+PiArICAgICAgUHJpbnQg KA0KPiA+ID4+ICsgICAgICAgIEwiRVJST1I6IFJTRFAgdmVyc2lvbiBsZXNzIHRoYW4gMiBpcyBu b3Qgc3VwcG9ydGVkLlxuIg0KPiA+ID4+ICsgICAgICAgICk7DQo+ID4gPj4gKyAgICAgIHJldHVy biBFRklfVU5TVVBQT1JURUQ7DQo+ID4gPj4gKyAgICB9DQo+ID4gPj4gKw0KPiA+ID4+ICsgICAg Ly8gVGhlIFJTRFAgbGVuZ3RoIGlzIDQgYnl0ZXMgc3RhcnRpbmcgYXQgb2Zmc2V0IDIwDQo+ID4g Pj4gKyAgICBSc2RwTGVuZ3RoID0gKihVSU5UMzIqKShSc2RwUHRyICsgUlNEUF9MRU5HVEhfT0ZG U0VUKTsNCj4gPiA+PiArDQo+ID4gPj4gKyAgICBUcmFjZSA9IFByb2Nlc3NUYWJsZVJlcG9ydE9w dGlvbnMgKFJTRFBfVEFCTEVfSU5GTywgUnNkcFB0ciwNCj4gPiBSc2RwTGVuZ3RoKTsNCj4gPiA+ PiArDQo+ID4gPj4gKyAgICBTdGF0dXMgPSBHZXRQYXJzZXIgKFJTRFBfVEFCTEVfSU5GTywgJlJz ZHBQYXJzZXJQcm9jKTsNCj4gPiA+PiArICAgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4g PiA+PiArICAgICAgUHJpbnQgKA0KPiA+ID4+ICsgICAgICAgIEwiRVJST1I6IE5vIHJlZ2lzdGVy ZWQgcGFyc2VyIGZvdW5kIGZvciBSU0RQLlxuIg0KPiA+ID4+ICsgICAgICAgICk7DQo+ID4gPj4g KyAgICAgIHJldHVybiBTdGF0dXM7DQo+ID4gPj4gKyAgICB9DQo+ID4gPj4gKw0KPiA+ID4+ICsg ICAgUnNkcFBhcnNlclByb2MgKA0KPiA+ID4+ICsgICAgICBUcmFjZSwNCj4gPiA+PiArICAgICAg UnNkcFB0ciwNCj4gPiA+PiArICAgICAgUnNkcExlbmd0aCwNCj4gPiA+PiArICAgICAgUnNkcFJl dmlzaW9uDQo+ID4gPj4gKyAgICAgICk7DQo+ID4gPj4gKw0KPiA+ID4+ICsgIH0gZWxzZSB7DQo+ ID4gPj4gKyAgICBJbmNyZW1lbnRFcnJvckNvdW50ICgpOw0KPiA+ID4+ICsgICAgUHJpbnQgKA0K PiA+ID4+ICsgICAgICBMIkVSUk9SOiBGYWlsZWQgdG8gZmluZCBBQ1BJIFRhYmxlIEd1aWQgaW4g U3lzdGVtIENvbmZpZ3VyYXRpb24NCj4gPiBUYWJsZS5cbiINCj4gPiA+PiArICAgICAgKTsNCj4g PiA+PiArICAgIHJldHVybiBFRklfTk9UX0ZPVU5EOw0KPiA+ID4+ICsgIH0NCj4gPiA+PiArDQo+ ID4gPj4gKyAgUmVwb3J0T3B0aW9uID0gR2V0UmVwb3J0T3B0aW9uICgpOw0KPiA+ID4+ICsgIGlm IChFUkVQT1JUX1RBQkxFX0xJU1QgIT0gUmVwb3J0T3B0aW9uKSB7DQo+ID4gPj4gKyAgICBpZiAo KChFUkVQT1JUX1NFTEVDVEVEID09IFJlcG9ydE9wdGlvbikgIHx8DQo+ID4gPj4gKyAgICAgICAg IChFUkVQT1JUX0RVTVBfQklOX0ZJTEUgPT0gUmVwb3J0T3B0aW9uKSkgJiYNCj4gPiA+PiArICAg ICAgICAoIW1TZWxlY3RlZEFjcGlUYWJsZUZvdW5kKSkgew0KPiA+ID4+ICsgICAgICBQcmludCAo TCJcblJlcXVlc3RlZCBBQ1BJIFRhYmxlIG5vdCBmb3VuZC5cbiIpOw0KPiA+ID4+ICsgICAgfSBl bHNlIGlmIChFUkVQT1JUX0RVTVBfQklOX0ZJTEUgIT0gUmVwb3J0T3B0aW9uKSB7DQo+ID4gPj4g KyAgICAgIE9yaWdpbmFsQXR0cmlidXRlID0gZ1NULT5Db25PdXQtPk1vZGUtPkF0dHJpYnV0ZTsN Cj4gPiA+PiArDQo+ID4gPj4gKyAgICAgIFByaW50IChMIlxuVGFibGUgU3RhdGlzdGljczpcbiIp Ow0KPiA+ID4+ICsNCj4gPiA+PiArICAgICAgaWYgKEdldENvbG91ckhpZ2hsaWdodGluZyAoKSkg ew0KPiA+ID4+ICsgICAgICAgIFByaW50QXR0cmlidXRlID0gKEdldEVycm9yQ291bnQgKCkgPiAw KSA/DQo+ID4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBFRklfVEVYVF9BVFRSICgN Cj4gPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUZJX1JFRCwNCj4gPiA+PiAr DQo+ID4gKChPcmlnaW5hbEF0dHJpYnV0ZSYoQklUNHxCSVQ1fEJJVDYpKT4+NCkNCj4gPiA+PiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6DQo+ID4gPj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICBPcmlnaW5hbEF0dHJpYnV0ZTsNCj4gPiA+PiArICAgICAgICBnU1QtPkNv bk91dC0+U2V0QXR0cmlidXRlIChnU1QtPkNvbk91dCwgUHJpbnRBdHRyaWJ1dGUpOw0KPiA+ID4+ ICsgICAgICB9DQo+ID4gPj4gKyAgICAgIFByaW50IChMIlx0JWQgRXJyb3IocylcbiIsIEdldEVy cm9yQ291bnQgKCkpOw0KPiA+ID4+ICsNCj4gPiA+PiArICAgICAgaWYgKEdldENvbG91ckhpZ2hs aWdodGluZyAoKSkgew0KPiA+ID4+ICsgICAgICAgIFByaW50QXR0cmlidXRlID0gKEdldFdhcm5p bmdDb3VudCAoKSA+IDApID8NCj4gPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVG SV9URVhUX0FUVFIgKA0KPiA+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFRklf UkVELA0KPiA+ID4+ICsNCj4gPiAoKE9yaWdpbmFsQXR0cmlidXRlJihCSVQ0fEJJVDV8QklUNikp Pj40KQ0KPiA+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDoNCj4gPiA+PiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9yaWdpbmFsQXR0cmlidXRlOw0KPiA+ID4+ICsN Cj4gPiA+PiArICAgICAgICBnU1QtPkNvbk91dC0+U2V0QXR0cmlidXRlIChnU1QtPkNvbk91dCwg UHJpbnRBdHRyaWJ1dGUpOw0KPiA+ID4+ICsgICAgICB9DQo+ID4gPj4gKyAgICAgIFByaW50IChM Ilx0JWQgV2FybmluZyhzKVxuIiwgR2V0V2FybmluZ0NvdW50ICgpKTsNCj4gPiA+PiArDQo+ID4g Pj4gKyAgICAgIGlmIChHZXRDb2xvdXJIaWdobGlnaHRpbmcgKCkpIHsNCj4gPiA+PiArICAgICAg ICBnU1QtPkNvbk91dC0+U2V0QXR0cmlidXRlIChnU1QtPkNvbk91dCwgT3JpZ2luYWxBdHRyaWJ1 dGUpOw0KPiA+ID4+ICsgICAgICB9DQo+ID4gPj4gKyAgICB9DQo+ID4gPj4gKyAgfQ0KPiA+ID4+ ICsgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4gPiA+PiArfQ0KPiA+ID4+ICsNCj4gPiA+PiArLyoq DQo+ID4gPj4gKyAgRnVuY3Rpb24gZm9yICdhY3BpdmlldycgY29tbWFuZC4NCj4gPiA+PiArDQo+ ID4gPj4gKyAgQHBhcmFtW2luXSBJbWFnZUhhbmRsZSAgSGFuZGxlIHRvIHRoZSBJbWFnZSAoTlVM TCBpZiBJbnRlcm5hbCkuDQo+ID4gPj4gKyAgQHBhcmFtW2luXSBTeXN0ZW1UYWJsZSAgUG9pbnRl ciB0byB0aGUgU3lzdGVtIFRhYmxlIChOVUxMIGlmDQo+IEludGVybmFsKS4NCj4gPiA+PiArKi8N Cj4gPiA+PiArU0hFTExfU1RBVFVTDQo+ID4gPj4gK0VGSUFQSQ0KPiA+ID4+ICtTaGVsbENvbW1h bmRSdW5BY3BpVmlldyAoDQo+ID4gPj4gKyAgSU4gRUZJX0hBTkRMRSAgICAgICAgSW1hZ2VIYW5k bGUsDQo+ID4gPj4gKyAgSU4gRUZJX1NZU1RFTV9UQUJMRSogU3lzdGVtVGFibGUNCj4gPiA+PiAr ICApDQo+ID4gPj4gK3sNCj4gPiA+PiArICBFRklfU1RBVFVTICAgICAgICAgU3RhdHVzOw0KPiA+ ID4+ICsgIFNIRUxMX1NUQVRVUyAgICAgICBTaGVsbFN0YXR1cyA9IFNIRUxMX1NVQ0NFU1M7DQo+ ID4gPj4gKyAgTElTVF9FTlRSWSogICAgICAgIFBhY2thZ2UgPSBOVUxMOw0KPiA+ID4+ICsgIENI QVIxNiogICAgICAgICAgICBQcm9ibGVtUGFyYW07DQo+ID4gPj4gKyAgQ09OU1QgQ0hBUjE2KiAg ICAgIFRlbXA7DQo+ID4gPj4gKyAgQ0hBUjggICAgICAgICAgICAgIENvbG91ck9wdGlvbls4XTsN Cj4gPiA+PiArICBTSEVMTF9GSUxFX0hBTkRMRSAgVG1wRHVtcEZpbGVIYW5kbGUgPSBOVUxMOw0K PiA+ID4+ICsNCj4gPiA+PiArICAvLyBTZXQgRGVmYXVsdHMNCj4gPiA+PiArICBtUmVwb3J0VHlw ZSA9IEVSRVBPUlRfQUxMOw0KPiA+ID4+ICsgIG1UYWJsZUNvdW50ID0gMDsNCj4gPiA+PiArICBt QmluVGFibGVDb3VudCA9IDA7DQo+ID4gPj4gKyAgbVNlbGVjdGVkQWNwaVRhYmxlID0gMDsNCj4g PiA+PiArICBtU2VsZWN0ZWRBY3BpVGFibGVOYW1lID0gTlVMTDsNCj4gPiA+PiArICBtU2VsZWN0 ZWRBY3BpVGFibGVGb3VuZCA9IEZBTFNFOw0KPiA+ID4+ICsgIG1WZXJib3NlID0gVFJVRTsNCj4g PiA+PiArICBtQ29uc2lzdGVuY3lDaGVjayA9IFRSVUU7DQo+ID4gPj4gKw0KPiA+ID4+ICsgIC8v IFJlc2V0IFRoZSBlcnJvci93YXJuaW5nIGNvdW50ZXJzDQo+ID4gPj4gKyAgUmVzZXRFcnJvckNv dW50ICgpOw0KPiA+ID4+ICsgIFJlc2V0V2FybmluZ0NvdW50ICgpOw0KPiA+ID4+ICsNCj4gPiA+ PiArICBTdGF0dXMgPSBTaGVsbENvbW1hbmRMaW5lUGFyc2UgKFBhcmFtTGlzdCwgJlBhY2thZ2Us DQo+ICZQcm9ibGVtUGFyYW0sDQo+ID4gVFJVRSk7DQo+ID4gPj4gKyAgaWYgKEVGSV9FUlJPUiAo U3RhdHVzKSkgew0KPiA+ID4+ICsgICAgaWYgKFN0YXR1cyA9PSBFRklfVk9MVU1FX0NPUlJVUFRF RCAmJiBQcm9ibGVtUGFyYW0gIT0gTlVMTCkNCj4gew0KPiA+ID4+ICsgICAgICBTaGVsbFByaW50 SGlpRXggKA0KPiA+ID4+ICsgICAgICAgIC0xLA0KPiA+ID4+ICsgICAgICAgIC0xLA0KPiA+ID4+ ICsgICAgICAgIE5VTEwsDQo+ID4gPj4gKyAgICAgICAgU1RSSU5HX1RPS0VOIChTVFJfR0VOX1BS T0JMRU0pLA0KPiA+ID4+ICsgICAgICAgIGdTaGVsbEFjcGlWaWV3SGlpSGFuZGxlLA0KPiA+ID4+ ICsgICAgICAgIEwiYWNwaXZpZXciLA0KPiA+ID4+ICsgICAgICAgIFByb2JsZW1QYXJhbQ0KPiA+ ID4+ICsgICAgICAgICk7DQo+ID4gPj4gKyAgICAgIEZyZWVQb29sIChQcm9ibGVtUGFyYW0pOw0K PiA+ID4+ICsgICAgfSBlbHNlIHsNCj4gPiA+PiArICAgICAgUHJpbnQgKEwiYWNwaXZpZXc6IEVy cm9yIHByb2Nlc3NpbmcgaW5wdXQgcGFyYW1ldGVyKHMpXG4iKTsNCj4gPiA+PiArICAgIH0NCj4g PiA+PiArICAgIFNoZWxsU3RhdHVzID0gU0hFTExfSU5WQUxJRF9QQVJBTUVURVI7DQo+ID4gPj4g KyAgfSBlbHNlIHsNCj4gPiA+PiArICAgIGlmIChTaGVsbENvbW1hbmRMaW5lR2V0Q291bnQgKFBh Y2thZ2UpID4gMSkgew0KPiA+ID4+ICsgICAgICBTaGVsbFByaW50SGlpRXggKA0KPiA+ID4+ICsg ICAgICAgIC0xLA0KPiA+ID4+ICsgICAgICAgIC0xLA0KPiA+ID4+ICsgICAgICAgIE5VTEwsDQo+ ID4gPj4gKyAgICAgICAgU1RSSU5HX1RPS0VOIChTVFJfR0VOX1RPT19NQU5ZKSwNCj4gPiA+PiAr ICAgICAgICBnU2hlbGxBY3BpVmlld0hpaUhhbmRsZSwNCj4gPiA+PiArICAgICAgICBMImFjcGl2 aWV3Ig0KPiA+ID4+ICsgICAgICAgICk7DQo+ID4gPj4gKyAgICAgIFNoZWxsU3RhdHVzID0gU0hF TExfSU5WQUxJRF9QQVJBTUVURVI7DQo+ID4gPj4gKyAgICB9IGVsc2UgaWYgKFNoZWxsQ29tbWFu ZExpbmVHZXRGbGFnIChQYWNrYWdlLCBMIi0/IikpIHsNCj4gPiA+PiArICAgICAgU2hlbGxQcmlu dEhpaUV4ICgNCj4gPiA+PiArICAgICAgICAtMSwNCj4gPiA+PiArICAgICAgICAtMSwNCj4gPiA+ PiArICAgICAgICBOVUxMLA0KPiA+ID4+ICsgICAgICAgIFNUUklOR19UT0tFTiAoU1RSX0dFVF9I RUxQX0FDUElWSUVXKSwNCj4gPiA+PiArICAgICAgICBnU2hlbGxBY3BpVmlld0hpaUhhbmRsZSwN Cj4gPiA+PiArICAgICAgICBMImFjcGl2aWV3Ig0KPiA+ID4+ICsgICAgICAgICk7DQo+ID4gPj4g KyAgICB9IGVsc2UgaWYgKFNoZWxsQ29tbWFuZExpbmVHZXRGbGFnIChQYWNrYWdlLCBMIi1zIikg JiYNCj4gPiA+PiArICAgICAgICAgICAgICAgU2hlbGxDb21tYW5kTGluZUdldFZhbHVlIChQYWNr YWdlLCBMIi1zIikgPT0gTlVMTCkgew0KPiA+ID4+ICsgICAgICBTaGVsbFByaW50SGlpRXggKA0K PiA+ID4+ICsgICAgICAgIC0xLA0KPiA+ID4+ICsgICAgICAgIC0xLA0KPiA+ID4+ICsgICAgICAg IE5VTEwsDQo+ID4gPj4gKyAgICAgICAgU1RSSU5HX1RPS0VOIChTVFJfR0VOX05PX1ZBTFVFKSwN Cj4gPiA+PiArICAgICAgICBnU2hlbGxBY3BpVmlld0hpaUhhbmRsZSwNCj4gPiA+PiArICAgICAg ICBMImFjcGl2aWV3IiwNCj4gPiA+PiArICAgICAgICBMIi1zIg0KPiA+ID4+ICsgICAgICAgICk7 DQo+ID4gPj4gKyAgICAgIFNoZWxsU3RhdHVzID0gU0hFTExfSU5WQUxJRF9QQVJBTUVURVI7DQo+ ID4gPj4gKyAgICB9IGVsc2UgaWYgKChTaGVsbENvbW1hbmRMaW5lR2V0RmxhZyAoUGFja2FnZSwg TCItcyIpICYmDQo+ID4gPj4gKyAgICAgICAgICAgICAgICBTaGVsbENvbW1hbmRMaW5lR2V0Rmxh ZyAoUGFja2FnZSwgTCItbCIpKSkgew0KPiA+ID4+ICsgICAgICBTaGVsbFByaW50SGlpRXggKA0K PiA+ID4+ICsgICAgICAgIC0xLA0KPiA+ID4+ICsgICAgICAgIC0xLA0KPiA+ID4+ICsgICAgICAg IE5VTEwsDQo+ID4gPj4gKyAgICAgICAgU1RSSU5HX1RPS0VOIChTVFJfR0VOX1RPT19NQU5ZKSwN Cj4gPiA+PiArICAgICAgICBnU2hlbGxBY3BpVmlld0hpaUhhbmRsZSwNCj4gPiA+PiArICAgICAg ICBMImFjcGl2aWV3Ig0KPiA+ID4+ICsgICAgICAgICk7DQo+ID4gPj4gKyAgICAgIFNoZWxsU3Rh dHVzID0gU0hFTExfSU5WQUxJRF9QQVJBTUVURVI7DQo+ID4gPj4gKyAgICB9IGVsc2UgaWYgKFNo ZWxsQ29tbWFuZExpbmVHZXRGbGFnIChQYWNrYWdlLCBMIi1oIikgJiYNCj4gPiA+PiArICAgICAg ICAgICAgICAgU2hlbGxDb21tYW5kTGluZUdldFZhbHVlIChQYWNrYWdlLCBMIi1oIikgPT0gTlVM TCkgew0KPiA+ID4+ICsgICAgICAgIFNoZWxsUHJpbnRIaWlFeCAoDQo+ID4gPj4gKyAgICAgICAg ICAtMSwNCj4gPiA+PiArICAgICAgICAgIC0xLA0KPiA+ID4+ICsgICAgICAgICAgTlVMTCwNCj4g PiA+PiArICAgICAgICAgIFNUUklOR19UT0tFTiAoU1RSX0dFTl9OT19WQUxVRSksDQo+ID4gPj4g KyAgICAgICAgICBnU2hlbGxBY3BpVmlld0hpaUhhbmRsZSwNCj4gPiA+PiArICAgICAgICAgIEwi YWNwaXZpZXciLA0KPiA+ID4+ICsgICAgICAgICAgTCItaCINCj4gPiA+PiArICAgICAgICAgICk7 DQo+ID4gPj4gKyAgICAgICAgU2hlbGxTdGF0dXMgPSBTSEVMTF9JTlZBTElEX1BBUkFNRVRFUjsN Cj4gPiA+PiArICAgIH0gZWxzZSBpZiAoU2hlbGxDb21tYW5kTGluZUdldEZsYWcgKFBhY2thZ2Us IEwiLWQiKSAmJg0KPiA+ID4+ICsgICAgICAgICAgICAgICAhU2hlbGxDb21tYW5kTGluZUdldEZs YWcgKFBhY2thZ2UsIEwiLXMiKSkgew0KPiA+ID4+ICsgICAgICAgIFNoZWxsUHJpbnRIaWlFeCAo DQo+ID4gPj4gKyAgICAgICAgICAtMSwNCj4gPiA+PiArICAgICAgICAgIC0xLA0KPiA+ID4+ICsg ICAgICAgICAgTlVMTCwNCj4gPiA+PiArICAgICAgICAgIFNUUklOR19UT0tFTiAoU1RSX0dFTl9N SVNTSU5HX09QVElPTiksDQo+ID4gPj4gKyAgICAgICAgICBnU2hlbGxBY3BpVmlld0hpaUhhbmRs ZSwNCj4gPiA+PiArICAgICAgICAgIEwiYWNwaXZpZXciLA0KPiA+ID4+ICsgICAgICAgICAgTCIt cyIsDQo+ID4gPj4gKyAgICAgICAgICBMIi1kIg0KPiA+ID4+ICsgICAgICAgICAgKTsNCj4gPiA+ PiArICAgICAgICBTaGVsbFN0YXR1cyA9IFNIRUxMX0lOVkFMSURfUEFSQU1FVEVSOw0KPiA+ID4+ ICsgICAgfSBlbHNlIHsNCj4gPiA+PiArICAgICAgLy8gQ2hlY2sgaWYgdGhlIGNvbG91ciBvcHRp b24gaXMgc2V0DQo+ID4gPj4gKyAgICAgIFRlbXAgPSBTaGVsbENvbW1hbmRMaW5lR2V0VmFsdWUg KFBhY2thZ2UsIEwiLWgiKTsNCj4gPiA+PiArICAgICAgaWYgKFRlbXAgIT0gTlVMTCkgew0KPiA+ ID4+ICsgICAgICAgIFVuaWNvZGVTdHJUb0FzY2lpU3RyUyAoVGVtcCwgQ29sb3VyT3B0aW9uLCBz aXplb2YNCj4gPiAoQ29sb3VyT3B0aW9uKSk7DQo+ID4gPj4gKyAgICAgICAgaWYgKChBc2NpaVN0 cmlDbXAgKENvbG91ck9wdGlvbiwgIk9OIikgPT0gMCkgfHwNCj4gPiA+PiArICAgICAgICAgICAg KEFzY2lpU3RyaUNtcCAoQ29sb3VyT3B0aW9uLCAiVFJVRSIpID09IDApKSB7DQo+ID4gPj4gKyAg ICAgICAgICBTZXRDb2xvdXJIaWdobGlnaHRpbmcgKFRSVUUpOw0KPiA+ID4+ICsgICAgICAgIH0g ZWxzZSBpZiAoKEFzY2lpU3RyaUNtcCAoQ29sb3VyT3B0aW9uLCAiT0ZGIikgPT0gMCkgfHwNCj4g PiA+PiArICAgICAgICAgICAgICAgICAgIChBc2NpaVN0cmlDbXAgKENvbG91ck9wdGlvbiwgIkZB TFNFIikgPT0gMCkpIHsNCj4gPiA+PiArICAgICAgICAgIFNldENvbG91ckhpZ2hsaWdodGluZyAo RkFMU0UpOw0KPiA+ID4+ICsgICAgICAgIH0NCj4gPiA+PiArICAgICAgfQ0KPiA+ID4+ICsNCj4g PiA+PiArICAgICAgaWYgKFNoZWxsQ29tbWFuZExpbmVHZXRGbGFnIChQYWNrYWdlLCBMIi1sIikp IHsNCj4gPiA+PiArICAgICAgICBtUmVwb3J0VHlwZSA9IEVSRVBPUlRfVEFCTEVfTElTVDsNCj4g PiA+PiArICAgICAgfSBlbHNlIHsNCj4gPiA+PiArICAgICAgICBtU2VsZWN0ZWRBY3BpVGFibGVO YW1lID0gU2hlbGxDb21tYW5kTGluZUdldFZhbHVlDQo+IChQYWNrYWdlLA0KPiA+IEwiLXMiKTsN Cj4gPiA+PiArICAgICAgICBpZiAobVNlbGVjdGVkQWNwaVRhYmxlTmFtZSAhPSBOVUxMKSB7DQo+ ID4gPj4gKyAgICAgICAgICBtU2VsZWN0ZWRBY3BpVGFibGUgPSAoVUlOVDMyKUNvbnZlcnRTdHJU b0FjcGlTaWduYXR1cmUgKA0KPiA+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIG1TZWxlY3RlZEFjcGlUYWJsZU5hbWUNCj4gPiA+PiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICApOw0KPiA+ID4+ICsgICAgICAgICAgbVJlcG9ydFR5 cGUgPSBFUkVQT1JUX1NFTEVDVEVEOw0KPiA+ID4+ICsNCj4gPiA+PiArICAgICAgICAgIGlmIChT aGVsbENvbW1hbmRMaW5lR2V0RmxhZyAoUGFja2FnZSwgTCItZCIpKSAgew0KPiA+ID4+ICsgICAg ICAgICAgICAvLyBDcmVhdGUgYSB0ZW1wb3JhcnkgZmlsZSB0byBjaGVjayBpZiB0aGUgbWVkaWEg aXMgd3JpdGFibGUuDQo+ID4gPj4gKyAgICAgICAgICAgIENIQVIxNiBGaWxlTmFtZUJ1ZmZlcltN QVhfRklMRV9OQU1FX0xFTl07DQo+ID4gPj4gKyAgICAgICAgICAgIG1SZXBvcnRUeXBlID0gRVJF UE9SVF9EVU1QX0JJTl9GSUxFOw0KPiA+ID4+ICsNCj4gPiA+PiArICAgICAgICAgICAgVW5pY29k ZVNQcmludCAoDQo+ID4gPj4gKyAgICAgICAgICAgICAgRmlsZU5hbWVCdWZmZXIsDQo+ID4gPj4g KyAgICAgICAgICAgICAgc2l6ZW9mIChGaWxlTmFtZUJ1ZmZlciksDQo+ID4gPj4gKyAgICAgICAg ICAgICAgTCIuXFwlcyUwNGQudG1wIiwNCj4gPiA+PiArICAgICAgICAgICAgICBtU2VsZWN0ZWRB Y3BpVGFibGVOYW1lLA0KPiA+ID4+ICsgICAgICAgICAgICAgIG1CaW5UYWJsZUNvdW50DQo+ID4g Pj4gKyAgICAgICAgICAgICAgKTsNCj4gPiA+PiArDQo+ID4gPj4gKyAgICAgICAgICAgIFN0YXR1 cyA9IFNoZWxsT3BlbkZpbGVCeU5hbWUgKA0KPiA+ID4+ICsgICAgICAgICAgICAgICAgICAgICAg IEZpbGVOYW1lQnVmZmVyLA0KPiA+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICZUbXBEdW1w RmlsZUhhbmRsZSwNCj4gPiA+PiArICAgICAgICAgICAgICAgICAgICAgICBFRklfRklMRV9NT0RF X1JFQUQgfA0KPiA+IEVGSV9GSUxFX01PREVfV1JJVEUgfA0KPiA+ID4+ICsgICAgICAgICAgICAg ICAgICAgICAgIEVGSV9GSUxFX01PREVfQ1JFQVRFLA0KPiA+ID4+ICsgICAgICAgICAgICAgICAg ICAgICAgIDANCj4gPiA+PiArICAgICAgICAgICAgICAgICAgICAgICApOw0KPiA+ID4+ICsNCj4g PiA+PiArICAgICAgICAgICAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ID4+ICsgICAg ICAgICAgICAgIFNoZWxsU3RhdHVzID0gU0hFTExfSU5WQUxJRF9QQVJBTUVURVI7DQo+ID4gPj4g KyAgICAgICAgICAgICAgVG1wRHVtcEZpbGVIYW5kbGUgPSBOVUxMOw0KPiA+ID4+ICsgICAgICAg ICAgICAgIFNoZWxsUHJpbnRIaWlFeCAoDQo+ID4gPj4gKyAgICAgICAgICAgICAgICAtMSwNCj4g PiA+PiArICAgICAgICAgICAgICAgIC0xLA0KPiA+ID4+ICsgICAgICAgICAgICAgICAgTlVMTCwN Cj4gPiA+PiArICAgICAgICAgICAgICAgIFNUUklOR19UT0tFTiAoU1RSX0dFTl9SRUFET05MWV9N RURJQSksDQo+ID4gPj4gKyAgICAgICAgICAgICAgICBnU2hlbGxBY3BpVmlld0hpaUhhbmRsZSwN Cj4gPiA+PiArICAgICAgICAgICAgICAgIEwiYWNwaXZpZXciDQo+ID4gPj4gKyAgICAgICAgICAg ICAgICApOw0KPiA+ID4+ICsgICAgICAgICAgICAgIGdvdG8gRG9uZTsNCj4gPiA+PiArICAgICAg ICAgICAgfQ0KPiA+ID4+ICsgICAgICAgICAgICAvLyBEZWxldGUgVGVtcG9yYXJ5IGZpbGUuDQo+ ID4gPj4gKyAgICAgICAgICAgIFNoZWxsRGVsZXRlRmlsZSAoJlRtcER1bXBGaWxlSGFuZGxlKTsN Cj4gPiA+PiArICAgICAgICAgIH0gLy8gLWQNCj4gPiA+PiArICAgICAgICB9IC8vIC1zDQo+ID4g Pj4gKyAgICAgIH0NCj4gPiA+PiArDQo+ID4gPj4gKyAgICAgIC8vIFBhcnNlIEFDUEkgVGFibGUg aW5mb3JtYXRpb24NCj4gPiA+PiArICAgICAgU3RhdHVzID0gQWNwaVZpZXcgKFN5c3RlbVRhYmxl KTsNCj4gPiA+PiArICAgICAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ID4+ICsgICAg ICAgIFNoZWxsU3RhdHVzID0gU0hFTExfTk9UX0ZPVU5EOw0KPiA+ID4+ICsgICAgICB9DQo+ID4g Pj4gKyAgICB9DQo+ID4gPj4gKyAgfQ0KPiA+ID4+ICsNCj4gPiA+PiArRG9uZToNCj4gPiA+PiAr ICBpZiAoUGFja2FnZSAhPSBOVUxMKSB7DQo+ID4gPj4gKyAgICBTaGVsbENvbW1hbmRMaW5lRnJl ZVZhckxpc3QgKFBhY2thZ2UpOw0KPiA+ID4+ICsgIH0NCj4gPiA+PiArICByZXR1cm4gU2hlbGxT dGF0dXM7DQo+ID4gPj4gK30NCj4gPiA+PiBkaWZmIC0tZ2l0IGEvU2hlbGxQa2cvTGlicmFyeS9V ZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvQWNwaVZpZXcuaA0KPiA+IGIvU2hlbGxQa2cvTGli cmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvQWNwaVZpZXcuaA0KPiA+ID4+IG5ldyBm aWxlIG1vZGUgMTAwNjQ0DQo+ID4gPj4gaW5kZXgNCj4gPiAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwLi4wMzU2MWVhODE2ODY4MjFlMzdjMDUNCj4gPiBkOTBmMDUzNzMx ZmRlNjNmYmI1DQo+ID4gPj4gLS0tIC9kZXYvbnVsbA0KPiA+ID4+ICsrKyBiL1NoZWxsUGtnL0xp YnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL0FjcGlWaWV3LmgNCj4gPiA+PiBAQCAt MCwwICsxLDEwMyBAQA0KPiA+ID4+ICsvKioNCj4gPiA+PiArICBIZWFkZXIgZmlsZSBmb3IgQWNw aVZpZXcNCj4gPiA+PiArDQo+ID4gPj4gKyAgQ29weXJpZ2h0IChjKSAyMDE2IC0gMjAxOCwgQVJN IExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ID4gPj4gKyAgVGhpcyBwcm9ncmFtIGFu ZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiA+ID4+ICsgIGFyZSBsaWNlbnNlZCBhbmQg bWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mDQo+IHRoZQ0K PiA+IEJTRCBMaWNlbnNlDQo+ID4gPj4gKyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmli dXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heQ0KPiBiZQ0KPiA+IGZvdW5k IGF0DQo+ID4gPj4gKyAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNl LnBocA0KPiA+ID4+ICsNCj4gPiA+PiArICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRF UiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTDQo+IElTIg0KPiA+IEJBU0lTLA0KPiA+ID4+ICsg IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhF Ug0KPiA+IEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gPiA+PiArKiovDQo+ID4gPj4gKw0KPiA+ID4+ ICsjaWZuZGVmIEFDUElWSUVXX0hfDQo+ID4gPj4gKyNkZWZpbmUgQUNQSVZJRVdfSF8NCj4gPiA+ PiArDQo+ID4gPj4gKy8qKiBBIG1hY3JvIHRvIGRlZmluZSB0aGUgbWF4IGZpbGUgbmFtZSBsZW5n dGgNCj4gPiA+PiArKi8NCj4gPiA+PiArI2RlZmluZSBNQVhfRklMRV9OQU1FX0xFTiAgICAxMjgN Cj4gPiA+PiArDQo+ID4gPj4gKy8qKiBPZmZzZXQgdG8gdGhlIFJTRFAgcmV2aXNpb24gZnJvbSB0 aGUgc3RhcnQgb2YgdGhlIFJTRFANCj4gPiA+PiArKi8NCj4gPiA+PiArI2RlZmluZSBSU0RQX1JF VklTSU9OX09GRlNFVCAxNQ0KPiA+ID4+ICsNCj4gPiA+PiArLyoqIE9mZnNldCB0byB0aGUgUlNE UCBsZW5ndGggZnJvbSB0aGUgc3RhcnQgb2YgdGhlIFJTRFANCj4gPiA+PiArKi8NCj4gPiA+PiAr I2RlZmluZSBSU0RQX0xFTkdUSF9PRkZTRVQgICAyMA0KPiA+ID4+ICsNCj4gPiA+PiArLyoqIFRo ZSBFUkVQT1JUX09QVElPTiBlbnVtIGRlc2NyaWJlcyBBQ1BJIHRhYmxlIFJlcG9ydGluZw0KPiBv cHRpb25zLg0KPiA+ID4+ICsqLw0KPiA+ID4+ICt0eXBlZGVmIGVudW0gUmVwb3J0T3B0aW9uIHsN Cj4gPiA+PiArICBFUkVQT1JUX0FMTCwgICAgICAgICAgICAvLy88IFJlcG9ydCBBbGwgdGFibGVz Lg0KPiA+ID4+ICsgIEVSRVBPUlRfU0VMRUNURUQsICAgICAgIC8vLzwgUmVwb3J0IFNlbGVjdGVk IHRhYmxlLg0KPiA+ID4+ICsgIEVSRVBPUlRfVEFCTEVfTElTVCwgICAgIC8vLzwgUmVwb3J0IExp c3Qgb2YgdGFibGVzLg0KPiA+ID4+ICsgIEVSRVBPUlRfRFVNUF9CSU5fRklMRSwgIC8vLzwgRHVt cCBzZWxlY3RlZCB0YWJsZSB0byBhIGZpbGUuDQo+ID4gPj4gKyAgRVJFUE9SVF9NQVgNCj4gPiA+ PiArfSBFUkVQT1JUX09QVElPTjsNCj4gPiA+PiArDQo+ID4gPj4gKy8qKiBUaGlzIGZ1bmN0aW9u IHJlc2V0cyB0aGUgQUNQSSB0YWJsZSBlcnJvciBjb3VudGVyIHRvIFplcm8uDQo+ID4gPj4gKyov DQo+ID4gPj4gK1ZPSUQNCj4gPiA+PiArUmVzZXRFcnJvckNvdW50ICgNCj4gPiA+PiArICBWT0lE DQo+ID4gPj4gKyAgKTsNCj4gPiA+PiArDQo+ID4gPj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHJldHVy bnMgdGhlIEFDUEkgdGFibGUgZXJyb3IgY291bnQuDQo+ID4gPj4gKw0KPiA+ID4+ICsgIEByZXR2 YWwgUmV0dXJucyB0aGUgY291bnQgb2YgZXJyb3JzIGRldGVjdGVkIGluIHRoZSBBQ1BJIHRhYmxl cy4NCj4gPiA+PiArKi8NCj4gPiA+PiArVUlOVDMyDQo+ID4gPj4gK0dldEVycm9yQ291bnQgKA0K PiA+ID4+ICsgIFZPSUQNCj4gPiA+PiArICApOw0KPiA+ID4+ICsNCj4gPiA+PiArLyoqIFRoaXMg ZnVuY3Rpb24gcmVzZXRzIHRoZSBBQ1BJIHRhYmxlIHdhcm5pbmcgY291bnRlciB0byBaZXJvLg0K PiA+ID4+ICsqLw0KPiA+ID4+ICtWT0lEDQo+ID4gPj4gK1Jlc2V0V2FybmluZ0NvdW50ICgNCj4g PiA+PiArICBWT0lEDQo+ID4gPj4gKyAgKTsNCj4gPiA+PiArDQo+ID4gPj4gKy8qKiBUaGlzIGZ1 bmN0aW9uIHJldHVybnMgdGhlIEFDUEkgdGFibGUgd2FybmluZyBjb3VudC4NCj4gPiA+PiArDQo+ ID4gPj4gKyAgQHJldHZhbCBSZXR1cm5zIHRoZSBjb3VudCBvZiB3YXJuaW5nIGRldGVjdGVkIGlu IHRoZSBBQ1BJIHRhYmxlcy4NCj4gPiA+PiArKi8NCj4gPiA+PiArVUlOVDMyDQo+ID4gPj4gK0dl dFdhcm5pbmdDb3VudCAoDQo+ID4gPj4gKyAgVk9JRA0KPiA+ID4+ICsgICk7DQo+ID4gPj4gKw0K PiA+ID4+ICsvKiogVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBjb2xvdXIgaGlnaGxpZ2h0aW5n IHN0YXR1cy4NCj4gPiA+PiArDQo+ID4gPj4gKyAgQHJldHZhbCBUUlVFIGlmIGNvbG91ciBoaWdo bGlnaHRpbmcgaXMgZW5hYmxlZC4NCj4gPiA+PiArKi8NCj4gPiA+PiArQk9PTEVBTg0KPiA+ID4+ ICtHZXRDb2xvdXJIaWdobGlnaHRpbmcgKA0KPiA+ID4+ICsgIFZPSUQNCj4gPiA+PiArICApOw0K PiA+ID4+ICsNCj4gPiA+PiArLyoqIFRoaXMgZnVuY3Rpb24gc2V0cyB0aGUgY29sb3VyIGhpZ2hs aWdodGluZyBzdGF0dXMuDQo+ID4gPj4gKw0KPiA+ID4+ICsqLw0KPiA+ID4+ICtWT0lEDQo+ID4g Pj4gK1NldENvbG91ckhpZ2hsaWdodGluZyAoDQo+ID4gPj4gKyAgQk9PTEVBTiBIaWdobGlnaHQN Cj4gPiA+PiArICApOw0KPiA+ID4+ICsNCj4gPiA+PiArLyoqIFRoaXMgZnVuY3Rpb24gcHJvY2Vz c2VzIHRoZSB0YWJsZSByZXBvcnRpbmcgb3B0aW9ucyBmb3IgdGhlIEFDUEkNCj4gdGFibGUuDQo+ ID4gPj4gKw0KPiA+ID4+ICsgIEBwYXJhbSBbaW5dIFNpZ25hdHVyZSBUaGUgQUNQSSB0YWJsZSBT aWduYXR1cmUuDQo+ID4gPj4gKyAgQHBhcmFtIFtpbl0gVGFibGVQdHIgIFBvaW50ZXIgdG8gdGhl IEFDUEkgdGFibGUgZGF0YS4NCj4gPiA+PiArICBAcGFyYW0gW2luXSBMZW5ndGggICAgVGhlIGxl bmd0aCBmbyB0aGUgQUNQSSB0YWJsZS4NCj4gPiA+PiArDQo+ID4gPj4gKyAgQHJldHZhbCBSZXR1 cm5zIFRSVUUgaWYgdGhlIEFDUEkgdGFibGUgc2hvdWxkIGJlIHRyYWNlZC4NCj4gPiA+PiArKi8N Cj4gPiA+PiArQk9PTEVBTg0KPiA+ID4+ICtQcm9jZXNzVGFibGVSZXBvcnRPcHRpb25zICgNCj4g PiA+PiArICBJTiBDT05TVCBVSU5UMzIgIFNpZ25hdHVyZSwNCj4gPiA+PiArICBJTiBDT05TVCBV SU5UOCogIFRhYmxlUHRyLA0KPiA+ID4+ICsgIElOIENPTlNUIFVJTlQzMiAgTGVuZ3RoDQo+ID4g Pj4gKyAgKTsNCj4gPiA+PiArDQo+ID4gPj4gKyNlbmRpZiAvLyBBQ1BJVklFV19IXw0KPiA+ID4+ IGRpZmYgLS1naXQNCj4gPg0KPiBhL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdD b21tYW5kTGliL1BhcnNlcnMvQmdydC9CZ3J0UGFyc2VyLg0KPiBjDQo+ID4NCj4gYi9TaGVsbFBr Zy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL0JncnQvQmdydFBh cnNlci4NCj4gYw0KPiA+ID4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gPj4gaW5kZXgNCj4g PiAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNjZlODIwYmE3ODhh MGZiNzgxMDYNCj4gPiAxZGJhZDFmNTdmOTBhY2VmNzhjDQo+ID4gPj4gLS0tIC9kZXYvbnVsbA0K PiA+ID4+ICsrKw0KPiA+DQo+IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0Nv bW1hbmRMaWIvUGFyc2Vycy9CZ3J0L0JncnRQYXJzZXIuDQo+IGMNCj4gPiA+PiBAQCAtMCwwICsx LDExNyBAQA0KPiA+ID4+ICsvKioNCj4gPiA+PiArICBCR1JUIHRhYmxlIHBhcnNlcg0KPiA+ID4+ ICsNCj4gPiA+PiArICBDb3B5cmlnaHQgKGMpIDIwMTcgLSAyMDE4LCBBUk0gTGltaXRlZC4gQWxs IHJpZ2h0cyByZXNlcnZlZC4NCj4gPiA+PiArICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBh bnlpbmcgbWF0ZXJpYWxzDQo+ID4gPj4gKyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJs ZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YNCj4gdGhlDQo+ID4gQlNEIExpY2Vu c2UNCj4gPiA+PiArICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBm dWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5DQo+IGJlDQo+ID4gZm91bmQgYXQNCj4gPiA+PiAr ICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ID4gPj4g Kw0KPiA+ID4+ICsgIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElD RU5TRSBPTiBBTiAiQVMNCj4gSVMiDQo+ID4gQkFTSVMsDQo+ID4gPj4gKyAgV0lUSE9VVCBXQVJS QU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSDQo+ID4gRVhQUkVT UyBPUiBJTVBMSUVELg0KPiA+ID4+ICsNCj4gPiA+PiArICBAcGFyIFJlZmVyZW5jZShzKToNCj4g PiA+PiArICAgIC0gQUNQSSA2LjIgU3BlY2lmaWNhdGlvbiAtIEVycmF0YSBBLCBTZXB0ZW1iZXIg MjAxNw0KPiA+ID4+ICsqKi8NCj4gPiA+PiArDQo+ID4gPj4gKyNpbmNsdWRlIDxJbmR1c3RyeVN0 YW5kYXJkL0FjcGkuaD4NCj4gPiA+PiArI2luY2x1ZGUgPExpYnJhcnkvVWVmaUxpYi5oPg0KPiA+ ID4+ICsjaW5jbHVkZSA8TGlicmFyeS9BY3BpVmlldy9BY3BpUGFyc2VyLmg+DQo+ID4gPj4gKyNp bmNsdWRlIDxMaWJyYXJ5L0FjcGlWaWV3L0FjcGlUYWJsZVBhcnNlci5oPg0KPiA+ID4+ICsNCj4g PiA+PiArLy8gTG9jYWwgdmFyaWFibGVzDQo+ID4gPj4gK1NUQVRJQyBBQ1BJX0RFU0NSSVBUSU9O X0hFQURFUl9JTkZPIEFjcGlIZHJJbmZvOw0KPiA+ID4+ICsNCj4gPiA+PiArLyoqIEFuIEFDUElf UEFSU0VSIGFycmF5IGRlc2NyaWJpbmcgdGhlIEFDUEkgQkRSVCBUYWJsZS4NCj4gPiA+PiArKi8N Cj4gPiA+PiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VSIEJncnRQYXJzZXJbXSA9IHsNCj4gPiA+ PiArICBQQVJTRV9BQ1BJX0hFQURFUiAoJkFjcGlIZHJJbmZvKSwNCj4gPiA+PiArICB7TCJWZXJz aW9uIiwgMiwgMzYsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ID4+ICsg IHtMIlN0YXR1cyIsIDEsIDM4LCBMIjB4JXgiLCBOVUxMLCAgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ ID4gPj4gKyAge0wiSW1hZ2UgVHlwZSIsIDEsIDM5LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxM LCBOVUxMfSwNCj4gPiA+PiArICB7TCJJbWFnZSBBZGRyZXNzIiwgOCwgNDAsIEwiMHglbHgiLCBO VUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPiA+PiArICB7TCJJbWFnZSBPZmZzZXQgWCIsIDQs IDQ4LCBMIiVkIiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4gPj4gKyAge0wiSW1hZ2Ug T2Zmc2V0IFkiLCA0LCA1MiwgTCIlZCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9DQo+ID4gPj4g K307DQo+ID4gPj4gKw0KPiA+ID4+ICsvKiogVGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIEFDUEkg QkdSVCB0YWJsZS4NCj4gPiA+PiArICBXaGVuIHRyYWNlIGlzIGVuYWJsZWQgdGhpcyBmdW5jdGlv biBwYXJzZXMgdGhlIEJHUlQgdGFibGUgYW5kDQo+ID4gPj4gKyAgdHJhY2VzIHRoZSBBQ1BJIHRh YmxlIGZpZWxkcy4NCj4gPiA+PiArDQo+ID4gPj4gKyAgVGhpcyBmdW5jdGlvbiBhbHNvIHBhcnNl cyB0aGUgQUNQSSBoZWFkZXIgZm9yIHRoZSBEU0RUIHRhYmxlIGFuZA0KPiA+ID4+ICsgIGludm9r ZXMgdGhlIHBhcnNlciBmb3IgdGhlIEFDUEkgRFNEVCB0YWJsZS4NCj4gPiA+PiArDQo+ID4gPj4g KyAgVGhpcyBmdW5jdGlvbiBhbHNvIHBlcmZvcm1zIHZhbGlkYXRpb24gb2YgdGhlIEFDUEkgdGFi bGUgZmllbGRzLg0KPiA+ID4+ICsNCj4gPiA+PiArICBAcGFyYW0gW2luXSBUcmFjZSAgICAgICAg ICAgICAgSWYgVFJVRSwgdHJhY2UgdGhlIEFDUEkgZmllbGRzLg0KPiA+ID4+ICsgIEBwYXJhbSBb aW5dIFB0ciAgICAgICAgICAgICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVy Lg0KPiA+ID4+ICsgIEBwYXJhbSBbaW5dIEFjcGlUYWJsZUxlbmd0aCAgICBMZW5ndGggb2YgdGhl IEFDUEkgdGFibGUuDQo+ID4gPj4gKyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxlUmV2aXNpb24gIFJl dmlzaW9uIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiA+ID4+ICsqLw0KPiA+ID4+ICtWT0lEDQo+ID4g Pj4gK0VGSUFQSQ0KPiA+ID4+ICtQYXJzZUFjcGlCZ3J0ICgNCj4gPiA+PiArICBJTiBCT09MRUFO IFRyYWNlLA0KPiA+ID4+ICsgIElOIFVJTlQ4KiAgUHRyLA0KPiA+ID4+ICsgIElOIFVJTlQzMiAg QWNwaVRhYmxlTGVuZ3RoLA0KPiA+ID4+ICsgIElOIFVJTlQ4ICAgQWNwaVRhYmxlUmV2aXNpb24N Cj4gPiA+PiArICApDQo+ID4gPj4gK3sNCj4gPiA+PiArICBpZiAoIVRyYWNlKSB7DQo+ID4gPj4g KyAgICByZXR1cm47DQo+ID4gPj4gKyAgfQ0KPiA+ID4+ICsNCj4gPiA+PiArICBQYXJzZUFjcGkg KA0KPiA+ID4+ICsgICAgVHJhY2UsDQo+ID4gPj4gKyAgICAwLA0KPiA+ID4+ICsgICAgIkJHUlQi LA0KPiA+ID4+ICsgICAgUHRyLA0KPiA+ID4+ICsgICAgQWNwaVRhYmxlTGVuZ3RoLA0KPiA+ID4+ ICsgICAgUEFSU0VSX1BBUkFNUyAoQmdydFBhcnNlcikNCj4gPiA+PiArICAgICk7DQo+ID4gPj4g K30NCj4gPiA+PiArDQo+ID4gPj4gKy8qKiBSZWdpc3RlciB0aGUgcGFyc2VyLg0KPiA+ID4+ICsN Cj4gPiA+PiArICBAcGFyYW0gW2luXSAgSW1hZ2VIYW5kbGUgIFRoZSBoYW5kbGUgdG8gdGhlIGlt YWdlLg0KPiA+ID4+ICsgIEBwYXJhbSBbaW5dICBTeXN0ZW1UYWJsZSAgUG9pbnRlciB0byB0aGUg U3lzdGVtIFRhYmxlLg0KPiA+ID4+ICsNCj4gPiA+PiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAg ICAgICAgICBUaGUgcGFyc2VyIGlzIHJlZ2lzdGVyZWQuDQo+ID4gPj4gKyAgQHJldHZhbCBFRklf QUxSRUFEWV9TVEFSVEVEICAgVGhlIHBhcnNlciBmb3IgdGhlIEFDUEkgVGFibGUNCj4gPiA+PiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YXMgYWxyZWFkeSByZWdpc3RlcmVkLg0K PiA+ID4+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSIEEgcGFyYW1ldGVyIGlzIGlu dmFsaWQNCj4gPiA+PiArICBAcmV0dmFsIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTICBObyBzcGFjZSB0 byByZWdpc3RlciB0aGUNCj4gPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw YXJzZXIuDQo+ID4gPj4gKyovDQo+ID4gPj4gK0VGSV9TVEFUVVMNCj4gPiA+PiArRUZJQVBJDQo+ ID4gPj4gK0JncnRQYXJzZXJMaWJDb25zdHJ1Y3RvciAoDQo+ID4gPj4gKyAgSU4gQ09OU1QgRUZJ X0hBTkRMRSAgICAgICAgICAgICAgICBJbWFnZUhhbmRsZSwNCj4gPiA+PiArICBJTiAgICAgICBF RklfU1lTVEVNX1RBQkxFICAqIENPTlNUIFN5c3RlbVRhYmxlDQo+ID4gPj4gKyAgKQ0KPiA+ID4+ ICt7DQo+ID4gPj4gKyAgcmV0dXJuIFJlZ2lzdGVyUGFyc2VyICgNCj4gPiA+PiArDQo+ID4gRUZJ X0FDUElfNl8yX0JPT1RfR1JBUEhJQ1NfUkVTT1VSQ0VfVEFCTEVfU0lHTkFUVVJFLA0KPiA+ID4+ ICsgICAgICAgICAgIFBhcnNlQWNwaUJncnQNCj4gPiA+PiArICAgICAgICAgICApOw0KPiA+ID4+ ICt9DQo+ID4gPj4gKw0KPiA+ID4+ICsvKiogRGVyZWdpc3RlciB0aGUgcGFyc2VyLg0KPiA+ID4+ ICsNCj4gPiA+PiArICBAcGFyYW0gW2luXSAgSW1hZ2VIYW5kbGUgIFRoZSBoYW5kbGUgdG8gdGhl IGltYWdlLg0KPiA+ID4+ICsgIEBwYXJhbSBbaW5dICBTeXN0ZW1UYWJsZSAgUG9pbnRlciB0byB0 aGUgU3lzdGVtIFRhYmxlLg0KPiA+ID4+ICsNCj4gPiA+PiArICBAcmV0dmFsIEVGSV9TVUNDRVNT ICAgICAgICAgICBUaGUgcGFyc2VyIGlzIGRlcmVnaXN0ZXJlZC4NCj4gPiA+PiArICBAcmV0dmFs IEVGSV9OT1RfRk9VTkQgICAgICAgICBUaGUgcGFyc2VyIHdhcyBub3QgcmVnaXN0ZXJlZC4NCj4g PiA+PiArKi8NCj4gPiA+PiArRUZJX1NUQVRVUw0KPiA+ID4+ICtFRklBUEkNCj4gPiA+PiArQmdy dFBhcnNlckxpYkRlc3RydWN0b3IgKA0KPiA+ID4+ICsgIElOIENPTlNUIEVGSV9IQU5ETEUgICAg ICAgICAgICAgICAgSW1hZ2VIYW5kbGUsDQo+ID4gPj4gKyAgSU4gICAgICAgRUZJX1NZU1RFTV9U QUJMRSAgKiBDT05TVCBTeXN0ZW1UYWJsZQ0KPiA+ID4+ICsgICkNCj4gPiA+PiArew0KPiA+ID4+ ICsgIHJldHVybiBEZXJlZ2lzdGVyUGFyc2VyICgNCj4gPiA+PiArDQo+ID4gRUZJX0FDUElfNl8y X0JPT1RfR1JBUEhJQ1NfUkVTT1VSQ0VfVEFCTEVfU0lHTkFUVVJFDQo+ID4gPj4gKyAgICAgICAg ICAgKTsNCj4gPiA+PiArfQ0KPiA+ID4+IGRpZmYgLS1naXQNCj4gPg0KPiBhL1NoZWxsUGtnL0xp YnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvQmdydC9CZ3J0UGFyc2Vy TGkNCj4gYi5pDQo+ID4gbmYNCj4gPg0KPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNw aVZpZXdDb21tYW5kTGliL1BhcnNlcnMvQmdydC9CZ3J0UGFyc2VyTA0KPiBpYi5pDQo+ID4gbmYN Cj4gPiA+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+ID4+IGluZGV4DQo+ID4gMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGE0ZDQwZjAwZGExYTIwZTQ4Yzg0DQo+ ID4gZTRhM2QyNWRkN2E0ZGI3NDc2MQ0KPiA+ID4+IC0tLSAvZGV2L251bGwNCj4gPiA+PiArKysN Cj4gPg0KPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1Bh cnNlcnMvQmdydC9CZ3J0UGFyc2VyTA0KPiBpYi5pDQo+ID4gbmYNCj4gPiA+PiBAQCAtMCwwICsx LDMzIEBADQo+ID4gPj4gKyMjIEBmaWxlDQo+ID4gPj4gKyMNCj4gPiA+PiArIyAgQ29weXJpZ2h0 IChjKSAyMDE3IC0gMjAxOCwgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ID4g Pj4gKyMNCj4gPiA+PiArIyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVy aWFscw0KPiA+ID4+ICsjICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRo ZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZg0KPiB0aGUNCj4gPiBCU0QgTGljZW5zZQ0KPiA+ID4+ ICsjICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQg b2YgdGhlIGxpY2Vuc2UgbWF5DQo+IGJlDQo+ID4gZm91bmQgYXQNCj4gPiA+PiArIyAgaHR0cDov L29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiA+ID4+ICsjDQo+ID4g Pj4gKyMgIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBP TiBBTiAiQVMNCj4gSVMiDQo+ID4gQkFTSVMsDQo+ID4gPj4gKyMgIFdJVEhPVVQgV0FSUkFOVElF UyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUg0KPiA+IEVYUFJFU1MgT1Ig SU1QTElFRC4NCj4gPiA+PiArIyMNCj4gPiA+PiArDQo+ID4gPj4gK1tEZWZpbmVzXQ0KPiA+ID4+ ICsgIElORl9WRVJTSU9OICAgID0gMHgwMDAxMDAxOQ0KPiA+ID4+ICsgIEJBU0VfTkFNRSAgICAg ID0gQmdydFBhcnNlckxpYg0KPiA+ID4+ICsgIEZJTEVfR1VJRCAgICAgID0gQzRDQ0Q5QjYtRjYy Ri00QjA2LUEyNUQtRjgxNTUwN0I0OUUwDQo+ID4gPj4gKyAgVkVSU0lPTl9TVFJJTkcgPSAxLjAN Cj4gPiA+PiArICBNT0RVTEVfVFlQRSAgICA9IERYRV9EUklWRVINCj4gPiA+PiArICBMSUJSQVJZ X0NMQVNTICA9IE5VTEx8RFhFX0RSSVZFUg0KPiA+ID4+ICsgIENPTlNUUlVDVE9SICAgID0gQmdy dFBhcnNlckxpYkNvbnN0cnVjdG9yDQo+ID4gPj4gKyAgREVTVFJVQ1RPUiAgICAgPSBCZ3J0UGFy c2VyTGliRGVzdHJ1Y3Rvcg0KPiA+ID4+ICsNCj4gPiA+PiArW1NvdXJjZXNdDQo+ID4gPj4gKyAg QmdydFBhcnNlci5jDQo+ID4gPj4gKw0KPiA+ID4+ICtbUGFja2FnZXNdDQo+ID4gPj4gKyAgTWRl UGtnL01kZVBrZy5kZWMNCj4gPiA+PiArICBTaGVsbFBrZy9TaGVsbFBrZy5kZWMNCj4gPiA+PiAr ICBNZGVNb2R1bGVQa2cvTWRlTW9kdWxlUGtnLmRlYw0KPiA+ID4+ICsNCj4gPiA+PiArW0xpYnJh cnlDbGFzc2VzXQ0KPiA+ID4+ICsgIFNoZWxsQWNwaVZpZXdDb21tYW5kTGliDQo+ID4gPj4gZGlm ZiAtLWdpdA0KPiA+DQo+IGEvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1h bmRMaWIvUGFyc2Vycy9EYmcyL0RiZzJQYXJzZQ0KPiByLmMNCj4gPg0KPiBiL1NoZWxsUGtnL0xp YnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvRGJnMi9EYmcyUGFyc2UN Cj4gci5jDQo+ID4gPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiA+PiBpbmRleA0KPiA+IDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk0ZGU5YTM2NWNjMWY5NjFk MzUxZWYNCj4gPiAyMjkxN2QzMDA5YTNlOWRjNTMNCj4gPiA+PiAtLS0gL2Rldi9udWxsDQo+ID4g Pj4gKysrDQo+ID4NCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFu ZExpYi9QYXJzZXJzL0RiZzIvRGJnMlBhcnNlDQo+IHIuYw0KPiA+ID4+IEBAIC0wLDAgKzEsMjg3 IEBADQo+ID4gPj4gKy8qKg0KPiA+ID4+ICsgIERCRzIgdGFibGUgcGFyc2VyDQo+ID4gPj4gKw0K PiA+ID4+ICsgIENvcHlyaWdodCAoYykgMjAxNiAtIDIwMTgsIEFSTSBMaW1pdGVkLiBBbGwgcmln aHRzIHJlc2VydmVkLg0KPiA+ID4+ICsgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWlu ZyBtYXRlcmlhbHMNCj4gPiA+PiArICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVu ZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZg0KPiB0aGUNCj4gPiBCU0QgTGljZW5zZQ0K PiA+ID4+ICsgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwg dGV4dCBvZiB0aGUgbGljZW5zZSBtYXkNCj4gYmUNCj4gPiBmb3VuZCBhdA0KPiA+ID4+ICsgIGh0 dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4gPiA+PiArDQo+ ID4gPj4gKyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNF IE9OIEFOICJBUw0KPiBJUyINCj4gPiBCQVNJUywNCj4gPiA+PiArICBXSVRIT1VUIFdBUlJBTlRJ RVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVINCj4gPiBFWFBSRVNTIE9S IElNUExJRUQuDQo+ID4gPj4gKw0KPiA+ID4+ICsgIEBwYXIgUmVmZXJlbmNlKHMpOg0KPiA+ID4+ ICsgICAgLSBNaWNyb3NvZnQgRGVidWcgUG9ydCBUYWJsZSAyIChEQkcyKSBTcGVjaWZpY2F0aW9u IC0gRGVjZW1iZXIgMTAsDQo+ID4gMjAxNS4NCj4gPiA+PiArKiovDQo+ID4gPj4gKw0KPiA+ID4+ ICsjaW5jbHVkZSA8SW5kdXN0cnlTdGFuZGFyZC9EZWJ1Z1BvcnQyVGFibGUuaD4NCj4gPiA+PiAr I2luY2x1ZGUgPExpYnJhcnkvVWVmaUxpYi5oPg0KPiA+ID4+ICsjaW5jbHVkZSA8TGlicmFyeS9B Y3BpVmlldy9BY3BpUGFyc2VyLmg+DQo+ID4gPj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0FjcGlWaWV3 L0FjcGlUYWJsZVBhcnNlci5oPg0KPiA+ID4+ICsNCj4gPiA+PiArLy8gTG9jYWwgdmFyaWFibGVz IHBvaW50aW5nIHRvIHRoZSB0YWJsZSBmaWVsZHMNCj4gPiA+PiArU1RBVElDIENPTlNUIFVJTlQz MiogT2Zmc2V0RGJnRGV2aWNlSW5mbzsNCj4gPiA+PiArU1RBVElDIENPTlNUIFVJTlQzMiogTnVt YmVyRGJnRGV2aWNlSW5mbzsNCj4gPiA+PiArU1RBVElDIENPTlNUIFVJTlQxNiogRGJnRGV2SW5m b0xlbjsNCj4gPiA+PiArU1RBVElDIENPTlNUIFVJTlQ4KiAgR2FzQ291bnQ7DQo+ID4gPj4gK1NU QVRJQyBDT05TVCBVSU5UMTYqIE5hbWVTcGFjZVN0cmluZ0xlbmd0aDsNCj4gPiA+PiArU1RBVElD IENPTlNUIFVJTlQxNiogTmFtZVNwYWNlU3RyaW5nT2Zmc2V0Ow0KPiA+ID4+ICtTVEFUSUMgQ09O U1QgVUlOVDE2KiBPRU1EYXRhTGVuZ3RoOw0KPiA+ID4+ICtTVEFUSUMgQ09OU1QgVUlOVDE2KiBP RU1EYXRhT2Zmc2V0Ow0KPiA+ID4+ICtTVEFUSUMgQ09OU1QgVUlOVDE2KiBCYXNlQWRkclJlZ09m ZnNldDsNCj4gPiA+PiArU1RBVElDIENPTlNUIFVJTlQxNiogQWRkclNpemVPZmZzZXQ7DQo+ID4g Pj4gK1NUQVRJQyBBQ1BJX0RFU0NSSVBUSU9OX0hFQURFUl9JTkZPIEFjcGlIZHJJbmZvOw0KPiA+ ID4+ICsNCj4gPiA+PiArLyoqIFRoaXMgZnVuY3Rpb24gVmFsaWRhdGVzIHRoZSBOYW1lU3BhY2Ug c3RyaW5nIGxlbmd0aC4NCj4gPiA+PiArDQo+ID4gPj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQ b2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiA+ID4+ICsgIEBwYXJhbSBbaW5d IENvbnRleHQgUG9pbnRlciB0byBjb250ZXh0IHNwZWNpZmljIGluZm9ybWF0aW9uIGUuZy4gdGhp cw0KPiA+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgY291bGQgYmUgYSBwb2ludGVyIHRvIHRo ZSBBQ1BJIHRhYmxlIGhlYWRlci4NCj4gPiA+PiArKi8NCj4gPiA+PiArU1RBVElDDQo+ID4gPj4g K1ZPSUQNCj4gPiA+PiArRUZJQVBJDQo+ID4gPj4gK1ZhbGlkYXRlTmFtZVNwYWNlU3RyTGVuICgN Cj4gPiA+PiArICBJTiAgVUlOVDgqIFB0ciwNCj4gPiA+PiArICBJTiAgVk9JRCogIENvbnRleHQN Cj4gPiA+PiArICApOw0KPiA+ID4+ICsNCj4gPiA+PiArLyoqIFRoaXMgZnVuY3Rpb24gcGFyc2Vz IHRoZSBkZWJ1ZyBkZXZpY2UgaW5mb3JtYXRpb24gc3RydWN0dXJlLg0KPiA+ID4+ICsNCj4gPiA+ PiArICBAcGFyYW0gW2luXSAgUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVm ZmVyLg0KPiA+ID4+ICsgIEBwYXJhbSBbb3V0XSBMZW5ndGggIFBvaW50ZXIgaW4gd2hpY2ggdGhl IGxlbmd0aCBvZiB0aGUgZGVidWcNCj4gPiA+PiArICAgICAgICAgICAgICAgICAgICAgICBkZXZp Y2UgaW5mb3JtYXRpb24gaXMgcmV0dXJuZWQuDQo+ID4gPj4gKyovDQo+ID4gPj4gK1NUQVRJQw0K PiA+ID4+ICtWT0lEDQo+ID4gPj4gK0VGSUFQSQ0KPiA+ID4+ICtEdW1wRGJnRGV2aWNlSW5mbyAo DQo+ID4gPj4gKyAgSU4gIFVJTlQ4KiAgUHRyLA0KPiA+ID4+ICsgIE9VVCBVSU5UMzIqIExlbmd0 aA0KPiA+ID4+ICsgICk7DQo+ID4gPj4gKw0KPiA+ID4+ICsvLy8gQW4gQUNQSV9QQVJTRVIgYXJy YXkgZGVzY3JpYmluZyB0aGUgQUNQSSBEQkcyIHRhYmxlLg0KPiA+ID4+ICtTVEFUSUMgQ09OU1Qg QUNQSV9QQVJTRVIgRGJnMlBhcnNlcltdID0gew0KPiA+ID4+ICsgIFBBUlNFX0FDUElfSEVBREVS ICgmQWNwaUhkckluZm8pLA0KPiA+ID4+ICsgIHtMIk9mZnNldERiZ0RldmljZUluZm8iLCA0LCAz NiwgTCIweCV4IiwgTlVMTCwNCj4gPiA+PiArICAgKFZPSUQqKikmT2Zmc2V0RGJnRGV2aWNlSW5m bywgTlVMTCwgTlVMTH0sDQo+ID4gPj4gKyAge0wiTnVtYmVyRGJnRGV2aWNlSW5mbyIsIDQsIDQw LCBMIiVkIiwgTlVMTCwNCj4gPiA+PiArICAgKFZPSUQqKikmTnVtYmVyRGJnRGV2aWNlSW5mbywg TlVMTCwgTlVMTH0NCj4gPiA+PiArfTsNCj4gPiA+PiArDQo+ID4gPj4gKy8vLyBBbiBBQ1BJX1BB UlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBkZWJ1ZyBkZXZpY2UgaW5mb3JtYXRpb24uDQo+ID4g Pj4gK1NUQVRJQyBDT05TVCBBQ1BJX1BBUlNFUiBEYmdEZXZJbmZvUGFyc2VyW10gPSB7DQo+ID4g Pj4gKyAge0wiUmV2aXNpb24iLCAxLCAwLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxM fSwNCj4gPiA+PiArICB7TCJMZW5ndGgiLCAyLCAxLCBMIiVkIiwgTlVMTCwgKFZPSUQqKikmRGJn RGV2SW5mb0xlbiwgTlVMTCwNCj4gTlVMTH0sDQo+ID4gPj4gKw0KPiA+ID4+ICsgIHtMIkdlbmVy aWMgQWRkcmVzcyBSZWdpc3RlcnMgQ291bnQiLCAxLCAzLCBMIjB4JXgiLCBOVUxMLA0KPiA+ID4+ ICsgICAoVk9JRCoqKSZHYXNDb3VudCwgTlVMTCwgTlVMTH0sDQo+ID4gPj4gKyAge0wiTmFtZVNw YWNlIFN0cmluZyBMZW5ndGgiLCAyLCA0LCBMIiVkIiwgTlVMTCwNCj4gPiA+PiArICAgKFZPSUQq KikmTmFtZVNwYWNlU3RyaW5nTGVuZ3RoLCBWYWxpZGF0ZU5hbWVTcGFjZVN0ckxlbiwNCj4gTlVM TH0sDQo+ID4gPj4gKyAge0wiTmFtZVNwYWNlIFN0cmluZyBPZmZzZXQiLCAyLCA2LCBMIjB4JXgi LCBOVUxMLA0KPiA+ID4+ICsgICAoVk9JRCoqKSZOYW1lU3BhY2VTdHJpbmdPZmZzZXQsIE5VTEws IE5VTEx9LA0KPiA+ID4+ICsgIHtMIk9FTSBEYXRhIExlbmd0aCIsIDIsIDgsIEwiJWQiLCBOVUxM LCAoVk9JRCoqKSZPRU1EYXRhTGVuZ3RoLA0KPiA+ID4+ICsgICBOVUxMLCBOVUxMfSwNCj4gPiA+ PiArICB7TCJPRU0gRGF0YSBPZmZzZXQiLCAyLCAxMCwgTCIweCV4IiwgTlVMTCwNCj4gKFZPSUQq KikmT0VNRGF0YU9mZnNldCwNCj4gPiA+PiArICAgTlVMTCwgTlVMTH0sDQo+ID4gPj4gKw0KPiA+ ID4+ICsgIHtMIlBvcnQgVHlwZSIsIDIsIDEyLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBO VUxMfSwNCj4gPiA+PiArICB7TCJQb3J0IFN1YlR5cGUiLCAyLCAxNCwgTCIweCV4IiwgTlVMTCwg TlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4gPj4gKyAge0wiUmVzZXJ2ZWQiLCAyLCAxNiwgTCIleCIs IE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ID4+ICsNCj4gPiA+PiArICB7TCJCYXNlIEFk ZHJlc3MgUmVnaXN0ZXIgT2Zmc2V0IiwgMiwgMTgsIEwiMHgleCIsIE5VTEwsDQo+ID4gPj4gKyAg IChWT0lEKiopJkJhc2VBZGRyUmVnT2Zmc2V0LCBOVUxMLCBOVUxMfSwNCj4gPiA+PiArICB7TCJB ZGRyZXNzIFNpemUgT2Zmc2V0IiwgMiwgMjAsIEwiMHgleCIsIE5VTEwsDQo+ID4gPj4gKyAgIChW T0lEKiopJkFkZHJTaXplT2Zmc2V0LCBOVUxMLCBOVUxMfQ0KPiA+ID4+ICt9Ow0KPiA+ID4+ICsN Cj4gPiA+PiArLyoqIFRoaXMgZnVuY3Rpb24gdmFsaWRhdGVzIHRoZSBOYW1lU3BhY2Ugc3RyaW5n IGxlbmd0aC4NCj4gPiA+PiArDQo+ID4gPj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVy IHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiA+ID4+ICsgIEBwYXJhbSBbaW5dIENvbnRl eHQgUG9pbnRlciB0byBjb250ZXh0IHNwZWNpZmljIGluZm9ybWF0aW9uIGUuZy4gdGhpcw0KPiA+ ID4+ICsgICAgICAgICAgICAgICAgICAgICAgY291bGQgYmUgYSBwb2ludGVyIHRvIHRoZSBBQ1BJ IHRhYmxlIGhlYWRlci4NCj4gPiA+PiArKi8NCj4gPiA+PiArU1RBVElDDQo+ID4gPj4gK1ZPSUQN Cj4gPiA+PiArRUZJQVBJDQo+ID4gPj4gK1ZhbGlkYXRlTmFtZVNwYWNlU3RyTGVuICgNCj4gPiA+ PiArICBJTiBVSU5UOCogUHRyLA0KPiA+ID4+ICsgIElOIFZPSUQqICBDb250ZXh0DQo+ID4gPj4g KyAgKQ0KPiA+ID4+ICt7DQo+ID4gPj4gKyAgVUlOVDE2IE5hbWVTcGFjZVN0ckxlbiA9ICooVUlO VDE2KilQdHI7DQo+ID4gPj4gKyAgaWYgKE5hbWVTcGFjZVN0ckxlbiA8IDIpIHsNCj4gPiA+PiAr ICAgIEluY3JlbWVudEVycm9yQ291bnQgKCk7DQo+ID4gPj4gKyAgICBQcmludCAoDQo+ID4gPj4g KyAgICAgIEwiXG5FUlJPUjogTmFtZXNwYWNlU3RyaW5nIExlbmd0aCA9ICVkLiBJZiBubyBOYW1l c3BhY2UgZGV2aWNlDQo+ID4gZXhpc3RzLFxuIg0KPiA+ID4+ICsgICAgICAgIiAgICB0aGVuIE5h bWVzcGFjZVN0cmluZ1tdIG11c3QgY29udGFpbiBhIHBlcmlvZCAnLiciLA0KPiA+ID4+ICsgICAg ICBOYW1lU3BhY2VTdHJMZW4NCj4gPiA+PiArICAgICAgKTsNCj4gPiA+PiArICB9DQo+ID4gPj4g K30NCj4gPiA+PiArDQo+ID4gPj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgZGVidWcg ZGV2aWNlIGluZm9ybWF0aW9uIHN0cnVjdHVyZS4NCj4gPiA+PiArDQo+ID4gPj4gKyAgQHBhcmFt IFtpbl0gIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gPiA+ PiArICBAcGFyYW0gW291dF0gUHRyICAgICBQb2ludGVyIGluIHdoaWNoIHRoZSBsZW5ndGggb2Yg dGhlIGRlYnVnDQo+ID4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlIGluZm9ybWF0 aW9uIGlzIHJldHVybmVkLg0KPiA+ID4+ICsqLw0KPiA+ID4+ICtTVEFUSUMNCj4gPiA+PiArVk9J RA0KPiA+ID4+ICtFRklBUEkNCj4gPiA+PiArRHVtcERiZ0RldmljZUluZm8gKA0KPiA+ID4+ICsg IElOICBVSU5UOCogIFB0ciwNCj4gPiA+PiArICBPVVQgVUlOVDMyKiBMZW5ndGgNCj4gPiA+PiAr ICApDQo+ID4gPj4gK3sNCj4gPiA+PiArICBVSU5UMTYgIEluZGV4Ow0KPiA+ID4+ICsgIFVJTlQ4 KiAgRGF0YVB0cjsNCj4gPiA+PiArICBVSU5UMzIqIEFkZHJTaXplOw0KPiA+ID4+ICsNCj4gPiA+ PiArICAvLyBQYXJzZSB0aGUgZGVidWcgZGV2aWNlIGluZm8gdG8gZ2V0IHRoZSBMZW5ndGgNCj4g PiA+PiArICBQYXJzZUFjcGkgKA0KPiA+ID4+ICsgICAgRkFMU0UsDQo+ID4gPj4gKyAgICAwLA0K PiA+ID4+ICsgICAgIkRlYnVnIERldmljZSBJbmZvIiwNCj4gPiA+PiArICAgIFB0ciwNCj4gPiA+ PiArICAgIDMsICAvLyBMZW5ndGggaXMgMiBieXRlcyBzdGFydGluZyBhdCBvZmZzZXQgMQ0KPiA+ ID4+ICsgICAgUEFSU0VSX1BBUkFNUyAoRGJnRGV2SW5mb1BhcnNlcikNCj4gPiA+PiArICAgICk7 DQo+ID4gPj4gKw0KPiA+ID4+ICsgIFBhcnNlQWNwaSAoDQo+ID4gPj4gKyAgICBUUlVFLA0KPiA+ ID4+ICsgICAgMiwNCj4gPiA+PiArICAgICJEZWJ1ZyBEZXZpY2UgSW5mbyIsDQo+ID4gPj4gKyAg ICBQdHIsDQo+ID4gPj4gKyAgICAqRGJnRGV2SW5mb0xlbiwNCj4gPiA+PiArICAgIFBBUlNFUl9Q QVJBTVMgKERiZ0RldkluZm9QYXJzZXIpDQo+ID4gPj4gKyAgICApOw0KPiA+ID4+ICsNCj4gPiA+ PiArICAvLyBHQVMgYW5kIEFkZHJlc3MgU2l6ZQ0KPiA+ID4+ICsgIEluZGV4ID0gMDsNCj4gPiA+ PiArICBEYXRhUHRyID0gUHRyICsgKCpCYXNlQWRkclJlZ09mZnNldCk7DQo+ID4gPj4gKyAgQWRk clNpemUgPSAoVUlOVDMyKikoUHRyICsgKCpBZGRyU2l6ZU9mZnNldCkpOw0KPiA+ID4+ICsgIHdo aWxlIChJbmRleCA8ICgqR2FzQ291bnQpKSB7DQo+ID4gPj4gKyAgICBQcmludEZpZWxkTmFtZSAo NCwgTCJCYXNlQWRkcmVzc1JlZ2lzdGVyIik7DQo+ID4gPj4gKyAgICBEdW1wR2FzU3RydWN0IChE YXRhUHRyLCA0KTsNCj4gPiA+PiArICAgIFByaW50RmllbGROYW1lICg0LCBMIkFkZHJlc3MgU2l6 ZSIpOw0KPiA+ID4+ICsgICAgUHJpbnQgKEwiMHgleFxuIiwgQWRkclNpemVbSW5kZXhdKTsNCj4g PiA+PiArICAgIERhdGFQdHIgKz0gR0FTX0xFTkdUSDsNCj4gPiA+PiArICAgIEluZGV4Kys7DQo+ ID4gPj4gKyAgfQ0KPiA+ID4+ICsNCj4gPiA+PiArICAvLyBOYW1lU3BhY2UgU3RyaW5nDQo+ID4g Pj4gKyAgSW5kZXggPSAwOw0KPiA+ID4+ICsgIERhdGFQdHIgPSBQdHIgKyAoKk5hbWVTcGFjZVN0 cmluZ09mZnNldCk7DQo+ID4gPj4gKyAgUHJpbnRGaWVsZE5hbWUgKDQsIEwiTmFtZVNwYWNlIFN0 cmluZyIpOw0KPiA+ID4+ICsgIHdoaWxlIChJbmRleCA8ICgqTmFtZVNwYWNlU3RyaW5nTGVuZ3Ro KSkgew0KPiA+ID4+ICsgICAgUHJpbnQgKEwiJWMiLCBEYXRhUHRyW0luZGV4KytdKTsNCj4gPiA+ PiArICB9DQo+ID4gPj4gKyAgUHJpbnQgKEwiXG4iKTsNCj4gPiA+PiArDQo+ID4gPj4gKyAgLy8g T0VNIERhdGENCj4gPiA+PiArICBJbmRleCA9IDA7DQo+ID4gPj4gKyAgRGF0YVB0ciA9IFB0ciAr ICgqT0VNRGF0YU9mZnNldCk7DQo+ID4gPj4gKyAgUHJpbnRGaWVsZE5hbWUgKDQsIEwiT0VNIERh dGEiKTsNCj4gPiA+PiArICB3aGlsZSAoSW5kZXggPCAoKk9FTURhdGFMZW5ndGgpKSB7DQo+ID4g Pj4gKyAgICBQcmludCAoTCIleCAiLCBEYXRhUHRyW0luZGV4KytdKTsNCj4gPiA+PiArICAgIGlm ICgoSW5kZXggJiA3KSA9PSAwKSB7DQo+ID4gPj4gKyAgICAgIFByaW50IChMIlxuJS0qcyAgICIs IE9VVFBVVF9GSUVMRF9DT0xVTU5fV0lEVEgsIEwiIik7DQo+ID4gPj4gKyAgICB9DQo+ID4gPj4g KyAgfQ0KPiA+ID4+ICsNCj4gPiA+PiArICAqTGVuZ3RoID0gKkRiZ0RldkluZm9MZW47DQo+ID4g Pj4gK30NCj4gPiA+PiArDQo+ID4gPj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgQUNQ SSBEQkcyIHRhYmxlLg0KPiA+ID4+ICsgIFdoZW4gdHJhY2UgaXMgZW5hYmxlZCB0aGlzIGZ1bmN0 aW9uIHBhcnNlcyB0aGUgREJHMiB0YWJsZSBhbmQNCj4gPiA+PiArICB0cmFjZXMgdGhlIEFDUEkg dGFibGUgZmllbGRzLg0KPiA+ID4+ICsNCj4gPiA+PiArICBUaGlzIGZ1bmN0aW9uIGFsc28gcGVy Zm9ybXMgdmFsaWRhdGlvbiBvZiB0aGUgQUNQSSB0YWJsZSBmaWVsZHMuDQo+ID4gPj4gKw0KPiA+ ID4+ICsgIEBwYXJhbSBbaW5dIFRyYWNlICAgICAgICAgICAgICBJZiBUUlVFLCB0cmFjZSB0aGUg QUNQSSBmaWVsZHMuDQo+ID4gPj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICAgICAgICAgICAgIFBv aW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ID4gPj4gKyAgQHBhcmFtIFtpbl0g QWNwaVRhYmxlTGVuZ3RoICAgIExlbmd0aCBvZiB0aGUgQUNQSSB0YWJsZS4NCj4gPiA+PiArICBA cGFyYW0gW2luXSBBY3BpVGFibGVSZXZpc2lvbiAgUmV2aXNpb24gb2YgdGhlIEFDUEkgdGFibGUu DQo+ID4gPj4gKyovDQo+ID4gPj4gK1ZPSUQNCj4gPiA+PiArRUZJQVBJDQo+ID4gPj4gK1BhcnNl QWNwaURiZzIgKA0KPiA+ID4+ICsgIElOIEJPT0xFQU4gVHJhY2UsDQo+ID4gPj4gKyAgSU4gVUlO VDgqICBQdHIsDQo+ID4gPj4gKyAgSU4gVUlOVDMyICBBY3BpVGFibGVMZW5ndGgsDQo+ID4gPj4g KyAgSU4gVUlOVDggICBBY3BpVGFibGVSZXZpc2lvbg0KPiA+ID4+ICsgICkNCj4gPiA+PiArew0K PiA+ID4+ICsgIFVJTlQzMiBPZmZzZXQ7DQo+ID4gPj4gKyAgVUlOVDMyIERiZ0RldmljZUluZm9M ZW5ndGg7DQo+ID4gPj4gKyAgVUlOVDgqIERldkluZm9QdHI7DQo+ID4gPj4gKw0KPiA+ID4+ICsg IGlmICghVHJhY2UpIHsNCj4gPiA+PiArICAgIHJldHVybjsNCj4gPiA+PiArICB9DQo+ID4gPj4g Kw0KPiA+ID4+ICsgIE9mZnNldCA9IFBhcnNlQWNwaSAoDQo+ID4gPj4gKyAgICAgICAgICAgICBU UlVFLA0KPiA+ID4+ICsgICAgICAgICAgICAgMCwNCj4gPiA+PiArICAgICAgICAgICAgICJEQkcy IiwNCj4gPiA+PiArICAgICAgICAgICAgIFB0ciwNCj4gPiA+PiArICAgICAgICAgICAgIEFjcGlU YWJsZUxlbmd0aCwNCj4gPiA+PiArICAgICAgICAgICAgIFBBUlNFUl9QQVJBTVMgKERiZzJQYXJz ZXIpDQo+ID4gPj4gKyAgICAgICAgICAgICApOw0KPiA+ID4+ICsgIERldkluZm9QdHIgPSBQdHIg KyBPZmZzZXQ7DQo+ID4gPj4gKw0KPiA+ID4+ICsgIHdoaWxlIChPZmZzZXQgPCBBY3BpVGFibGVM ZW5ndGgpIHsNCj4gPiA+PiArICAgIER1bXBEYmdEZXZpY2VJbmZvICgNCj4gPiA+PiArICAgICAg RGV2SW5mb1B0ciwNCj4gPiA+PiArICAgICAgJkRiZ0RldmljZUluZm9MZW5ndGgNCj4gPiA+PiAr ICAgICAgKTsNCj4gPiA+PiArICAgIE9mZnNldCArPSBEYmdEZXZpY2VJbmZvTGVuZ3RoOw0KPiA+ ID4+ICsgICAgRGV2SW5mb1B0ciArPSBEYmdEZXZpY2VJbmZvTGVuZ3RoOw0KPiA+ID4+ICsgIH0N Cj4gPiA+PiArfQ0KPiA+ID4+ICsNCj4gPiA+PiArLyoqIFJlZ2lzdGVyIHRoZSBwYXJzZXIuDQo+ ID4gPj4gKw0KPiA+ID4+ICsgIEBwYXJhbSBbaW5dICBJbWFnZUhhbmRsZSAgVGhlIGhhbmRsZSB0 byB0aGUgaW1hZ2UuDQo+ID4gPj4gKyAgQHBhcmFtIFtpbl0gIFN5c3RlbVRhYmxlICBQb2ludGVy IHRvIHRoZSBTeXN0ZW0gVGFibGUuDQo+ID4gPj4gKw0KPiA+ID4+ICsgIEByZXR2YWwgRUZJX1NV Q0NFU1MgICAgICAgICAgIFRoZSBwYXJzZXIgaXMgcmVnaXN0ZXJlZC4NCj4gPiA+PiArICBAcmV0 dmFsIEVGSV9BTFJFQURZX1NUQVJURUQgICBUaGUgcGFyc2VyIGZvciB0aGUgQUNQSSBUYWJsZQ0K PiA+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhcyBhbHJlYWR5IHJlZ2lz dGVyZWQuDQo+ID4gPj4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgQSBwYXJhbWV0 ZXIgaXMgaW52YWxpZA0KPiA+ID4+ICsgIEByZXR2YWwgRUZJX09VVF9PRl9SRVNPVVJDRVMgIE5v IHNwYWNlIHRvIHJlZ2lzdGVyIHRoZQ0KPiA+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHBhcnNlci4NCj4gPiA+PiArKi8NCj4gPiA+PiArRUZJX1NUQVRVUw0KPiA+ID4+ICtF RklBUEkNCj4gPiA+PiArRGJnMlBhcnNlckxpYkNvbnN0cnVjdG9yICgNCj4gPiA+PiArICBJTiBD T05TVCBFRklfSEFORExFICAgICAgICAgICAgICAgIEltYWdlSGFuZGxlLA0KPiA+ID4+ICsgIElO ICAgICAgIEVGSV9TWVNURU1fVEFCTEUgICogQ09OU1QgU3lzdGVtVGFibGUNCj4gPiA+PiArICAp DQo+ID4gPj4gK3sNCj4gPiA+PiArICByZXR1cm4gUmVnaXN0ZXJQYXJzZXIgKA0KPiA+ID4+ICsg ICAgICAgICAgIEVGSV9BQ1BJXzZfMl9ERUJVR19QT1JUXzJfVEFCTEVfU0lHTkFUVVJFLA0KPiA+ ID4+ICsgICAgICAgICAgIFBhcnNlQWNwaURiZzINCj4gPiA+PiArICAgICAgICAgICApOw0KPiA+ ID4+ICt9DQo+ID4gPj4gKw0KPiA+ID4+ICsvKiogRGVyZWdpc3RlciB0aGUgcGFyc2VyLg0KPiA+ ID4+ICsNCj4gPiA+PiArICBAcGFyYW0gW2luXSAgSW1hZ2VIYW5kbGUgIFRoZSBoYW5kbGUgdG8g dGhlIGltYWdlLg0KPiA+ID4+ICsgIEBwYXJhbSBbaW5dICBTeXN0ZW1UYWJsZSAgUG9pbnRlciB0 byB0aGUgU3lzdGVtIFRhYmxlLg0KPiA+ID4+ICsNCj4gPiA+PiArICBAcmV0dmFsIEVGSV9TVUND RVNTICAgICAgICAgICBUaGUgcGFyc2VyIGlzIGRlcmVnaXN0ZXJlZC4NCj4gPiA+PiArICBAcmV0 dmFsIEVGSV9OT1RfRk9VTkQgICAgICAgICBUaGUgcGFyc2VyIHdhcyBub3QgcmVnaXN0ZXJlZC4N Cj4gPiA+PiArKi8NCj4gPiA+PiArRUZJX1NUQVRVUw0KPiA+ID4+ICtFRklBUEkNCj4gPiA+PiAr RGJnMlBhcnNlckxpYkRlc3RydWN0b3IgKA0KPiA+ID4+ICsgIElOIENPTlNUIEVGSV9IQU5ETEUg ICAgICAgICAgICAgICAgSW1hZ2VIYW5kbGUsDQo+ID4gPj4gKyAgSU4gICAgICAgRUZJX1NZU1RF TV9UQUJMRSAgKiBDT05TVCBTeXN0ZW1UYWJsZQ0KPiA+ID4+ICsgICkNCj4gPiA+PiArew0KPiA+ ID4+ICsgIHJldHVybiBEZXJlZ2lzdGVyUGFyc2VyICgNCj4gPiA+PiArICAgICAgICAgICBFRklf QUNQSV82XzJfREVCVUdfUE9SVF8yX1RBQkxFX1NJR05BVFVSRQ0KPiA+ID4+ICsgICAgICAgICAg ICk7DQo+ID4gPj4gK30NCj4gPiA+PiBkaWZmIC0tZ2l0DQo+ID4NCj4gYS9TaGVsbFBrZy9MaWJy YXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL0RiZzIvRGJnMlBhcnNlDQo+ IHJMaQ0KPiA+IGIuaW5mDQo+ID4NCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlW aWV3Q29tbWFuZExpYi9QYXJzZXJzL0RiZzIvRGJnMlBhcnNlDQo+IHJMaQ0KPiA+IGIuaW5mDQo+ ID4gPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiA+PiBpbmRleA0KPiA+IDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU3M2MwZGY5MmNmZjg3MGM4MTM0YzANCj4g PiAxNDhmODhkMjRjZGVjNmYwYmENCj4gPiA+PiAtLS0gL2Rldi9udWxsDQo+ID4gPj4gKysrDQo+ ID4NCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJz ZXJzL0RiZzIvRGJnMlBhcnNlDQo+IHJMaQ0KPiA+IGIuaW5mDQo+ID4gPj4gQEAgLTAsMCArMSwz MyBAQA0KPiA+ID4+ICsjIyBAZmlsZQ0KPiA+ID4+ICsjDQo+ID4gPj4gKyMgIENvcHlyaWdodCAo YykgMjAxNyAtIDIwMTgsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiA+ID4+ ICsjDQo+ID4gPj4gKyMgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlh bHMNCj4gPiA+PiArIyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUg dGVybXMgYW5kIGNvbmRpdGlvbnMgb2YNCj4gdGhlDQo+ID4gQlNEIExpY2Vuc2UNCj4gPiA+PiAr IyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9m IHRoZSBsaWNlbnNlIG1heQ0KPiBiZQ0KPiA+IGZvdW5kIGF0DQo+ID4gPj4gKyMgIGh0dHA6Ly9v cGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4gPiA+PiArIw0KPiA+ID4+ ICsjICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04g QU4gIkFTDQo+IElTIg0KPiA+IEJBU0lTLA0KPiA+ID4+ICsjICBXSVRIT1VUIFdBUlJBTlRJRVMg T1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVINCj4gPiBFWFBSRVNTIE9SIElN UExJRUQuDQo+ID4gPj4gKyMjDQo+ID4gPj4gKw0KPiA+ID4+ICtbRGVmaW5lc10NCj4gPiA+PiAr ICBJTkZfVkVSU0lPTiAgICA9IDB4MDAwMTAwMTkNCj4gPiA+PiArICBCQVNFX05BTUUgICAgICA9 IERiZzJQYXJzZXJMaWINCj4gPiA+PiArICBGSUxFX0dVSUQgICAgICA9IEZCMUYxMUFBLUYyRjAt NEQ1OC04RDA2LTM2NURDQjYzQTYxNA0KPiA+ID4+ICsgIFZFUlNJT05fU1RSSU5HID0gMS4wDQo+ ID4gPj4gKyAgTU9EVUxFX1RZUEUgICAgPSBEWEVfRFJJVkVSDQo+ID4gPj4gKyAgTElCUkFSWV9D TEFTUyAgPSBOVUxMfERYRV9EUklWRVINCj4gPiA+PiArICBDT05TVFJVQ1RPUiAgICA9IERiZzJQ YXJzZXJMaWJDb25zdHJ1Y3Rvcg0KPiA+ID4+ICsgIERFU1RSVUNUT1IgICAgID0gRGJnMlBhcnNl ckxpYkRlc3RydWN0b3INCj4gPiA+PiArDQo+ID4gPj4gK1tTb3VyY2VzXQ0KPiA+ID4+ICsgIERi ZzJQYXJzZXIuYw0KPiA+ID4+ICsNCj4gPiA+PiArW1BhY2thZ2VzXQ0KPiA+ID4+ICsgIE1kZVBr Zy9NZGVQa2cuZGVjDQo+ID4gPj4gKyAgU2hlbGxQa2cvU2hlbGxQa2cuZGVjDQo+ID4gPj4gKyAg TWRlTW9kdWxlUGtnL01kZU1vZHVsZVBrZy5kZWMNCj4gPiA+PiArDQo+ID4gPj4gK1tMaWJyYXJ5 Q2xhc3Nlc10NCj4gPiA+PiArICBTaGVsbEFjcGlWaWV3Q29tbWFuZExpYg0KPiA+ID4+IGRpZmYg LS1naXQNCj4gPg0KPiBhL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5k TGliL1BhcnNlcnMvRHNkdC9Ec2R0UGFyc2VyDQo+IC5jDQo+ID4NCj4gYi9TaGVsbFBrZy9MaWJy YXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL0RzZHQvRHNkdFBhcnNlcg0K PiAuYw0KPiA+ID4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gPj4gaW5kZXgNCj4gPiAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNzZjYzdlODc3N2U3NWYzOTgz Y2EzDQo+ID4gMTBjYjNjMGQ0M2ZlZDAzYmY1DQo+ID4gPj4gLS0tIC9kZXYvbnVsbA0KPiA+ID4+ ICsrKw0KPiA+DQo+IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRM aWIvUGFyc2Vycy9Ec2R0L0RzZHRQYXJzZXINCj4gLmMNCj4gPiA+PiBAQCAtMCwwICsxLDkyIEBA DQo+ID4gPj4gKy8qKg0KPiA+ID4+ICsgIERTRFQgdGFibGUgcGFyc2VyDQo+ID4gPj4gKw0KPiA+ ID4+ICsgIENvcHlyaWdodCAoYykgMjAxNiAtIDIwMTgsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRz IHJlc2VydmVkLg0KPiA+ID4+ICsgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBt YXRlcmlhbHMNCj4gPiA+PiArICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVy IHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZg0KPiB0aGUNCj4gPiBCU0QgTGljZW5zZQ0KPiA+ ID4+ICsgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4 dCBvZiB0aGUgbGljZW5zZSBtYXkNCj4gYmUNCj4gPiBmb3VuZCBhdA0KPiA+ID4+ICsgIGh0dHA6 Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4gPiA+PiArDQo+ID4g Pj4gKyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9O IEFOICJBUw0KPiBJUyINCj4gPiBCQVNJUywNCj4gPiA+PiArICBXSVRIT1VUIFdBUlJBTlRJRVMg T1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVINCj4gPiBFWFBSRVNTIE9SIElN UExJRUQuDQo+ID4gPj4gKw0KPiA+ID4+ICsgIEBwYXIgUmVmZXJlbmNlKHMpOg0KPiA+ID4+ICsg ICAgLSBBQ1BJIDYuMiBTcGVjaWZpY2F0aW9uIC0gRXJyYXRhIEEsIFNlcHRlbWJlciAyMDE3DQo+ ID4gPj4gKyoqLw0KPiA+ID4+ICsNCj4gPiA+PiArI2luY2x1ZGUgPEluZHVzdHJ5U3RhbmRhcmQv QWNwaS5oPg0KPiA+ID4+ICsjaW5jbHVkZSA8TGlicmFyeS9VZWZpTGliLmg+DQo+ID4gPj4gKyNp bmNsdWRlIDxMaWJyYXJ5L0FjcGlWaWV3L0FjcGlQYXJzZXIuaD4NCj4gPiA+PiArI2luY2x1ZGUg PExpYnJhcnkvQWNwaVZpZXcvQWNwaVRhYmxlUGFyc2VyLmg+DQo+ID4gPj4gKw0KPiA+ID4+ICsv KiogVGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIEFDUEkgRFNEVCB0YWJsZS4NCj4gPiA+PiArICBX aGVuIHRyYWNlIGlzIGVuYWJsZWQgdGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIERTRFQgdGFibGUg YW5kDQo+ID4gPj4gKyAgdHJhY2VzIHRoZSBBQ1BJIHRhYmxlIGZpZWxkcy4NCj4gPiA+PiArICBG b3IgdGhlIERTRFQgdGFibGUgb25seSB0aGUgQUNQSSBoZWFkZXIgZmllbGRzIGFyZSBwYXJzZWQg YW5kDQo+ID4gPj4gKyAgdHJhY2VkLg0KPiA+ID4+ICsNCj4gPiA+PiArICBAcGFyYW0gW2luXSBU cmFjZSAgICAgICAgICAgICAgSWYgVFJVRSwgdHJhY2UgdGhlIEFDUEkgZmllbGRzLg0KPiA+ID4+ ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgICAgICAgICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBv ZiB0aGUgYnVmZmVyLg0KPiA+ID4+ICsgIEBwYXJhbSBbaW5dIEFjcGlUYWJsZUxlbmd0aCAgICBM ZW5ndGggb2YgdGhlIEFDUEkgdGFibGUuDQo+ID4gPj4gKyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxl UmV2aXNpb24gIFJldmlzaW9uIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiA+ID4+ICsqLw0KPiA+ID4+ ICtWT0lEDQo+ID4gPj4gK0VGSUFQSQ0KPiA+ID4+ICtQYXJzZUFjcGlEc2R0ICgNCj4gPiA+PiAr ICBJTiBCT09MRUFOIFRyYWNlLA0KPiA+ID4+ICsgIElOIFVJTlQ4KiAgUHRyLA0KPiA+ID4+ICsg IElOIFVJTlQzMiAgQWNwaVRhYmxlTGVuZ3RoLA0KPiA+ID4+ICsgIElOIFVJTlQ4ICAgQWNwaVRh YmxlUmV2aXNpb24NCj4gPiA+PiArICApDQo+ID4gPj4gK3sNCj4gPiA+PiArICBpZiAoIVRyYWNl KSB7DQo+ID4gPj4gKyAgICByZXR1cm47DQo+ID4gPj4gKyAgfQ0KPiA+ID4+ICsNCj4gPiA+PiAr ICBEdW1wQWNwaUhlYWRlciAoUHRyKTsNCj4gPiA+PiArfQ0KPiA+ID4+ICsNCj4gPiA+PiArLyoq IFJlZ2lzdGVyIHRoZSBwYXJzZXIuDQo+ID4gPj4gKw0KPiA+ID4+ICsgIEBwYXJhbSBbaW5dICBJ bWFnZUhhbmRsZSAgVGhlIGhhbmRsZSB0byB0aGUgaW1hZ2UuDQo+ID4gPj4gKyAgQHBhcmFtIFtp bl0gIFN5c3RlbVRhYmxlICBQb2ludGVyIHRvIHRoZSBTeXN0ZW0gVGFibGUuDQo+ID4gPj4gKw0K PiA+ID4+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBwYXJzZXIgaXMgcmVn aXN0ZXJlZC4NCj4gPiA+PiArICBAcmV0dmFsIEVGSV9BTFJFQURZX1NUQVJURUQgICBUaGUgcGFy c2VyIGZvciB0aGUgQUNQSSBUYWJsZQ0KPiA+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHdhcyBhbHJlYWR5IHJlZ2lzdGVyZWQuDQo+ID4gPj4gKyAgQHJldHZhbCBFRklfSU5W QUxJRF9QQVJBTUVURVIgQSBwYXJhbWV0ZXIgaXMgaW52YWxpZA0KPiA+ID4+ICsgIEByZXR2YWwg RUZJX09VVF9PRl9SRVNPVVJDRVMgIE5vIHNwYWNlIHRvIHJlZ2lzdGVyIHRoZQ0KPiA+ID4+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlci4NCj4gPiA+PiArKi8NCj4gPiA+ PiArRUZJX1NUQVRVUw0KPiA+ID4+ICtFRklBUEkNCj4gPiA+PiArRHNkdFBhcnNlckxpYkNvbnN0 cnVjdG9yICgNCj4gPiA+PiArICBJTiBDT05TVCBFRklfSEFORExFICAgICAgICAgICAgICAgIElt YWdlSGFuZGxlLA0KPiA+ID4+ICsgIElOICAgICAgIEVGSV9TWVNURU1fVEFCTEUgICogQ09OU1Qg U3lzdGVtVGFibGUNCj4gPiA+PiArICApDQo+ID4gPj4gK3sNCj4gPiA+PiArICByZXR1cm4gUmVn aXN0ZXJQYXJzZXIgKA0KPiA+ID4+ICsNCj4gPg0KPiBFRklfQUNQSV82XzJfRElGRkVSRU5USUFU RURfU1lTVEVNX0RFU0NSSVBUSU9OX1RBQkxFX1NJR05BVFVSRSwNCj4gPiA+PiArICAgICAgICAg ICBQYXJzZUFjcGlEc2R0DQo+ID4gPj4gKyAgICAgICAgICAgKTsNCj4gPiA+PiArfQ0KPiA+ID4+ ICsNCj4gPiA+PiArLyoqIERlcmVnaXN0ZXIgdGhlIHBhcnNlci4NCj4gPiA+PiArDQo+ID4gPj4g KyAgQHBhcmFtIFtpbl0gIEltYWdlSGFuZGxlICBUaGUgaGFuZGxlIHRvIHRoZSBpbWFnZS4NCj4g PiA+PiArICBAcGFyYW0gW2luXSAgU3lzdGVtVGFibGUgIFBvaW50ZXIgdG8gdGhlIFN5c3RlbSBU YWJsZS4NCj4gPiA+PiArDQo+ID4gPj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAg VGhlIHBhcnNlciBpcyBkZXJlZ2lzdGVyZWQuDQo+ID4gPj4gKyAgQHJldHZhbCBFRklfTk9UX0ZP VU5EICAgICAgICAgVGhlIHBhcnNlciB3YXMgbm90IHJlZ2lzdGVyZWQuDQo+ID4gPj4gKyovDQo+ ID4gPj4gK0VGSV9TVEFUVVMNCj4gPiA+PiArRUZJQVBJDQo+ID4gPj4gK0RzZHRQYXJzZXJMaWJE ZXN0cnVjdG9yICgNCj4gPiA+PiArICBJTiBDT05TVCBFRklfSEFORExFICAgICAgICAgICAgICAg IEltYWdlSGFuZGxlLA0KPiA+ID4+ICsgIElOICAgICAgIEVGSV9TWVNURU1fVEFCTEUgICogQ09O U1QgU3lzdGVtVGFibGUNCj4gPiA+PiArICApDQo+ID4gPj4gK3sNCj4gPiA+PiArICByZXR1cm4g RGVyZWdpc3RlclBhcnNlciAoDQo+ID4gPj4gKw0KPiA+DQo+IEVGSV9BQ1BJXzZfMl9ESUZGRVJF TlRJQVRFRF9TWVNURU1fREVTQ1JJUFRJT05fVEFCTEVfU0lHTkFUVVJFDQo+ID4gPj4gKyAgICAg ICAgICAgKTsNCj4gPiA+PiArfQ0KPiA+ID4+IGRpZmYgLS1naXQNCj4gPg0KPiBhL1NoZWxsUGtn L0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvRHNkdC9Ec2R0UGFy c2VyDQo+IExpYi5pDQo+ID4gbmYNCj4gPg0KPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxs QWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvRHNkdC9Ec2R0UGFyc2VyDQo+IExpYi5pDQo+ID4g bmYNCj4gPiA+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+ID4+IGluZGV4DQo+ID4gMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTZiZjIzOGUxY2IzODNjNjIzM2U3 DQo+ID4gMjhkMjk3Y2Q0MjkyOTE5ZWVkMw0KPiA+ID4+IC0tLSAvZGV2L251bGwNCj4gPiA+PiAr KysNCj4gPg0KPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGli L1BhcnNlcnMvRHNkdC9Ec2R0UGFyc2VyDQo+IExpYi5pDQo+ID4gbmYNCj4gPiA+PiBAQCAtMCww ICsxLDMzIEBADQo+ID4gPj4gKyMjIEBmaWxlDQo+ID4gPj4gKyMNCj4gPiA+PiArIyAgQ29weXJp Z2h0IChjKSAyMDE4LCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gPiA+PiAr Iw0KPiA+ID4+ICsjICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxz DQo+ID4gPj4gKyMgIGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRl cm1zIGFuZCBjb25kaXRpb25zIG9mDQo+IHRoZQ0KPiA+IEJTRCBMaWNlbnNlDQo+ID4gPj4gKyMg IHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0 aGUgbGljZW5zZSBtYXkNCj4gYmUNCj4gPiBmb3VuZCBhdA0KPiA+ID4+ICsjICBodHRwOi8vb3Bl bnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ID4gPj4gKyMNCj4gPiA+PiAr IyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFO ICJBUw0KPiBJUyINCj4gPiBCQVNJUywNCj4gPiA+PiArIyAgV0lUSE9VVCBXQVJSQU5USUVTIE9S IFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSDQo+ID4gRVhQUkVTUyBPUiBJTVBM SUVELg0KPiA+ID4+ICsjIw0KPiA+ID4+ICsNCj4gPiA+PiArW0RlZmluZXNdDQo+ID4gPj4gKyAg SU5GX1ZFUlNJT04gICAgPSAweDAwMDEwMDE5DQo+ID4gPj4gKyAgQkFTRV9OQU1FICAgICAgPSBE c2R0UGFyc2VyTGliDQo+ID4gPj4gKyAgRklMRV9HVUlEICAgICAgPSAzMDQ3ODQyQi05RkE2LTRD QTItOTUxMy1EN0ZENkFEMDk1NzQNCj4gPiA+PiArICBWRVJTSU9OX1NUUklORyA9IDEuMA0KPiA+ ID4+ICsgIE1PRFVMRV9UWVBFICAgID0gRFhFX0RSSVZFUg0KPiA+ID4+ICsgIExJQlJBUllfQ0xB U1MgID0gTlVMTHxEWEVfRFJJVkVSDQo+ID4gPj4gKyAgQ09OU1RSVUNUT1IgICAgPSBEc2R0UGFy c2VyTGliQ29uc3RydWN0b3INCj4gPiA+PiArICBERVNUUlVDVE9SICAgICA9IERzZHRQYXJzZXJM aWJEZXN0cnVjdG9yDQo+ID4gPj4gKw0KPiA+ID4+ICtbU291cmNlc10NCj4gPiA+PiArICBEc2R0 UGFyc2VyLmMNCj4gPiA+PiArDQo+ID4gPj4gK1tQYWNrYWdlc10NCj4gPiA+PiArICBNZGVQa2cv TWRlUGtnLmRlYw0KPiA+ID4+ICsgIFNoZWxsUGtnL1NoZWxsUGtnLmRlYw0KPiA+ID4+ICsgIE1k ZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVjDQo+ID4gPj4gKw0KPiA+ID4+ICtbTGlicmFyeUNs YXNzZXNdDQo+ID4gPj4gKyAgU2hlbGxBY3BpVmlld0NvbW1hbmRMaWINCj4gPiA+PiBkaWZmIC0t Z2l0DQo+ID4NCj4gYS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExp Yi9QYXJzZXJzL0ZhZHQvRmFkdFBhcnNlci4NCj4gYw0KPiA+DQo+IGIvU2hlbGxQa2cvTGlicmFy eS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9GYWR0L0ZhZHRQYXJzZXIuDQo+ IGMNCj4gPiA+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+ID4+IGluZGV4DQo+ID4gMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmMxM2FmNDBiZDdmOWM2ZjU1MDI5 NA0KPiA+IDAyNTIzNjBkMDk1ZGJkNTlkNA0KPiA+ID4+IC0tLSAvZGV2L251bGwNCj4gPiA+PiAr KysNCj4gPg0KPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGli L1BhcnNlcnMvRmFkdC9GYWR0UGFyc2VyLg0KPiBjDQo+ID4gPj4gQEAgLTAsMCArMSwzMDkgQEAN Cj4gPiA+PiArLyoqDQo+ID4gPj4gKyAgRkFEVCB0YWJsZSBwYXJzZXINCj4gPiA+PiArDQo+ID4g Pj4gKyAgQ29weXJpZ2h0IChjKSAyMDE2IC0gMjAxOCwgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMg cmVzZXJ2ZWQuDQo+ID4gPj4gKyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1h dGVyaWFscw0KPiA+ID4+ICsgIGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIg dGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mDQo+IHRoZQ0KPiA+IEJTRCBMaWNlbnNlDQo+ID4g Pj4gKyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0 IG9mIHRoZSBsaWNlbnNlIG1heQ0KPiBiZQ0KPiA+IGZvdW5kIGF0DQo+ID4gPj4gKyAgaHR0cDov L29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiA+ID4+ICsNCj4gPiA+ PiArICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04g QU4gIkFTDQo+IElTIg0KPiA+IEJBU0lTLA0KPiA+ID4+ICsgIFdJVEhPVVQgV0FSUkFOVElFUyBP UiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUg0KPiA+IEVYUFJFU1MgT1IgSU1Q TElFRC4NCj4gPiA+PiArDQo+ID4gPj4gKyAgQHBhciBSZWZlcmVuY2Uocyk6DQo+ID4gPj4gKyAg ICAtIEFDUEkgNi4yIFNwZWNpZmljYXRpb24gLSBFcnJhdGEgQSwgU2VwdGVtYmVyIDIwMTcNCj4g PiA+PiArKiovDQo+ID4gPj4gKw0KPiA+ID4+ICsjaW5jbHVkZSA8SW5kdXN0cnlTdGFuZGFyZC9B Y3BpLmg+DQo+ID4gPj4gKyNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlMaWIuaD4NCj4gPiA+PiArI2lu Y2x1ZGUgPExpYnJhcnkvQWNwaVZpZXcvQWNwaVBhcnNlci5oPg0KPiA+ID4+ICsjaW5jbHVkZSA8 TGlicmFyeS9BY3BpVmlldy9BY3BpVGFibGVQYXJzZXIuaD4NCj4gPiA+PiArDQo+ID4gPj4gKy8v IExvY2FsIHZhcmlhYmxlcw0KPiA+ID4+ICtTVEFUSUMgQ09OU1QgVUlOVDMyKiBEc2R0QWRkcmVz czsNCj4gPiA+PiArU1RBVElDIENPTlNUIFVJTlQ2NCogWF9Ec2R0QWRkcmVzczsNCj4gPiA+PiAr U1RBVElDIENPTlNUIFVJTlQ4KiAgRmFkdE1pbm9yUmV2aXNpb247DQo+ID4gPj4gK1NUQVRJQyBB Q1BJX0RFU0NSSVBUSU9OX0hFQURFUl9JTkZPIEFjcGlIZHJJbmZvOw0KPiA+ID4+ICsNCj4gPiA+ PiArLyoqIEEgbWFjcm8gZGVmaW5pbmcgdGhlIEhhcmR3YXJlIHJlZHVjZWQgQUNQSSBmbGFnDQo+ ID4gPj4gKyovDQo+ID4gPj4gKyNkZWZpbmUgSFdfUkVEVUNFRF9BQ1BJICAgQklUMjANCj4gPiA+ PiArDQo+ID4gPj4gKy8vIEZvcndhcmQgZGVjbGFyYXRpb25zDQo+ID4gPj4gK0NPTlNUIEFDUElf REVTQ1JJUFRJT05fSEVBREVSX0lORk8qIENPTlNUDQo+ID4gPj4gK0VGSUFQSQ0KPiA+ID4+ICtH ZXRBY3BpWHNkdEhlYWRlckluZm8gKA0KPiA+ID4+ICsgIFZPSUQNCj4gPiA+PiArKTsNCj4gPiA+ PiArDQo+ID4gPj4gK1NUQVRJQw0KPiA+ID4+ICtWT0lEDQo+ID4gPj4gK0VGSUFQSQ0KPiA+ID4+ ICtWYWxpZGF0ZUZpcm13YXJlQ3RybCAoDQo+ID4gPj4gKyAgSU4gVUlOVDgqIFB0ciwNCj4gPiA+ PiArICBJTiBWT0lEKiAgQ29udGV4dA0KPiA+ID4+ICspOw0KPiA+ID4+ICsNCj4gPiA+PiArU1RB VElDDQo+ID4gPj4gK1ZPSUQNCj4gPiA+PiArRUZJQVBJDQo+ID4gPj4gK1ZhbGlkYXRlWEZpcm13 YXJlQ3RybCAoDQo+ID4gPj4gKyAgSU4gVUlOVDgqIFB0ciwNCj4gPiA+PiArICBJTiBWT0lEKiAg Q29udGV4dA0KPiA+ID4+ICspOw0KPiA+ID4+ICsNCj4gPiA+PiArU1RBVElDDQo+ID4gPj4gK1ZP SUQNCj4gPiA+PiArRUZJQVBJDQo+ID4gPj4gK1ZhbGlkYXRlRmxhZ3MgKA0KPiA+ID4+ICsgIElO IFVJTlQ4KiBQdHIsDQo+ID4gPj4gKyAgSU4gVk9JRCogIENvbnRleHQNCj4gPiA+PiArKTsNCj4g PiA+PiArDQo+ID4gPj4gKy8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBB Q1BJIEZBRFQgVGFibGUuDQo+ID4gPj4gKyovDQo+ID4gPj4gK1NUQVRJQyBDT05TVCBBQ1BJX1BB UlNFUiBGYWR0UGFyc2VyW10gPSB7DQo+ID4gPj4gKyAgUEFSU0VfQUNQSV9IRUFERVIgKCZBY3Bp SGRySW5mbyksDQo+ID4gPj4gKyAge0wiRklSTVdBUkVfQ1RSTCIsIDQsIDM2LCBMIjB4JXgiLCBO VUxMLCBOVUxMLA0KPiBWYWxpZGF0ZUZpcm13YXJlQ3RybCwNCj4gPiBOVUxMfSwNCj4gPiA+PiAr ICB7TCJEU0RUIiwgNCwgNDAsIEwiMHgleCIsIE5VTEwsIChWT0lEKiopJkRzZHRBZGRyZXNzLCBO VUxMLCBOVUxMfSwNCj4gPiA+PiArICB7TCJSZXNlcnZlZCIsIDEsIDQ0LCBMIiV4IiwgTlVMTCwg TlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4gPj4gKyAge0wiUHJlZmVycmVkX1BNX1Byb2ZpbGUiLCAx LCA0NSwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4gPj4gKyAge0wiU0NJ X0lOVCIsIDIsIDQ2LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPiA+PiAr ICB7TCJTTUlfQ01EIiwgNCwgNDgsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0K PiA+ID4+ICsgIHtMIkFDUElfRU5BQkxFIiwgMSwgNTIsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5V TEwsIE5VTEx9LA0KPiA+ID4+ICsgIHtMIkFDUElfRElTQUJMRSIsIDEsIDUzLCBMIjB4JXgiLCBO VUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPiA+PiArICB7TCJTNEJJT1NfUkVRIiwgMSwgNTQs IEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ID4+ICsgIHtMIlBTVEFURV9D TlQiLCAxLCA1NSwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4gPj4gKyAg e0wiUE0xYV9FVlRfQkxLIiwgNCwgNTYsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9 LA0KPiA+ID4+ICsgIHtMIlBNMWJfRVZUX0JMSyIsIDQsIDYwLCBMIjB4JXgiLCBOVUxMLCBOVUxM LCBOVUxMLCBOVUxMfSwNCj4gPiA+PiArICB7TCJQTTFhX0NOVF9CTEsiLCA0LCA2NCwgTCIweCV4 IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4gPj4gKyAge0wiUE0xYl9DTlRfQkxLIiwg NCwgNjgsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ID4+ICsgIHtMIlBN Ml9DTlRfQkxLIiwgNCwgNzIsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ ID4+ICsgIHtMIlBNX1RNUl9CTEsiLCA0LCA3NiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwg TlVMTH0sDQo+ID4gPj4gKyAge0wiR1BFMF9CTEsiLCA0LCA4MCwgTCIweCV4IiwgTlVMTCwgTlVM TCwgTlVMTCwgTlVMTH0sDQo+ID4gPj4gKyAge0wiR1BFMV9CTEsiLCA0LCA4NCwgTCIweCV4Iiwg TlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4gPj4gKyAge0wiUE0xX0VWVF9MRU4iLCAxLCA4 OCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4gPj4gKyAge0wiUE0xX0NO VF9MRU4iLCAxLCA4OSwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4gPj4g KyAge0wiUE0yX0NOVF9MRU4iLCAxLCA5MCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVM TH0sDQo+ID4gPj4gKyAge0wiUE1fVE1SX0xFTiIsIDEsIDkxLCBMIjB4JXgiLCBOVUxMLCBOVUxM LCBOVUxMLCBOVUxMfSwNCj4gPiA+PiArICB7TCJHUEUwX0JMS19MRU4iLCAxLCA5MiwgTCIweCV4 IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4gPj4gKyAge0wiR1BFMV9CTEtfTEVOIiwg MSwgOTMsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ID4+ICsgIHtMIkdQ RTFfQkFTRSIsIDEsIDk0LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPiA+ PiArICB7TCJDU1RfQ05UIiwgMSwgOTUsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9 LA0KPiA+ID4+ICsgIHtMIlBfTFZMMl9MQVQiLCAyLCA5NiwgTCIweCV4IiwgTlVMTCwgTlVMTCwg TlVMTCwgTlVMTH0sDQo+ID4gPj4gKyAge0wiUF9MVkwzX0xBVCIsIDIsIDk4LCBMIjB4JXgiLCBO VUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPiA+PiArICB7TCJGTFVTSF9TSVpFIiwgMiwgMTAw LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPiA+PiArICB7TCJGTFVTSF9T VFJJREUiLCAyLCAxMDIsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ID4+ ICsgIHtMIkRVVFlfT0ZGU0VUIiwgMSwgMTA0LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBO VUxMfSwNCj4gPiA+PiArICB7TCJEVVRZX1dJRFRIIiwgMSwgMTA1LCBMIjB4JXgiLCBOVUxMLCBO VUxMLCBOVUxMLCBOVUxMfSwNCj4gPiA+PiArICB7TCJEQVlfQUxSTSIsIDEsIDEwNiwgTCIweCV4 IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4gPj4gKyAge0wiTU9OX0FMUk0iLCAxLCAx MDcsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ID4+ICsgIHtMIkNFTlRV UlkiLCAxLCAxMDgsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ID4+ICsg IHtMIklBUENfQk9PVF9BUkNIIiwgMiwgMTA5LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBO VUxMfSwNCj4gPiA+PiArICB7TCJSZXNlcnZlZCIsIDEsIDExMSwgTCIweCV4IiwgTlVMTCwgTlVM TCwgTlVMTCwgTlVMTH0sDQo+ID4gPj4gKyAge0wiRmxhZ3MiLCA0LCAxMTIsIEwiMHgleCIsIE5V TEwsIE5VTEwsIFZhbGlkYXRlRmxhZ3MsIE5VTEx9LA0KPiA+ID4+ICsgIHtMIlJFU0VUX1JFRyIs IDEyLCAxMTYsIE5VTEwsIER1bXBHYXMsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ID4+ICsgIHtM IlJFU0VUX1ZBTFVFIiwgMSwgMTI4LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwN Cj4gPiA+PiArICB7TCJBUk1fQk9PVF9BUkNIIiwgMiwgMTI5LCBMIjB4JXgiLCBOVUxMLCBOVUxM LCBOVUxMLCBOVUxMfSwNCj4gPiA+PiArICB7TCJGQURUIE1pbm9yIFZlcnNpb24iLCAxLCAxMzEs IEwiMHgleCIsIE5VTEwsDQo+ID4gKFZPSUQqKikmRmFkdE1pbm9yUmV2aXNpb24sDQo+ID4gPj4g KyAgICBOVUxMLCBOVUxMfSwNCj4gPiA+PiArICB7TCJYX0ZJUk1XQVJFX0NUUkwiLCA4LCAxMzIs IEwiMHglbHgiLCBOVUxMLCBOVUxMLA0KPiA+ID4+ICsgICAgVmFsaWRhdGVYRmlybXdhcmVDdHJs LCBOVUxMfSwNCj4gPiA+PiArICB7TCJYX0RTRFQiLCA4LCAxNDAsIEwiMHglbHgiLCBOVUxMLCAo Vk9JRCoqKSZYX0RzZHRBZGRyZXNzLCBOVUxMLA0KPiA+IE5VTEx9LA0KPiA+ID4+ICsgIHtMIlhf UE0xYV9FVlRfQkxLIiwgMTIsIDE0OCwgTlVMTCwgRHVtcEdhcywgTlVMTCwgTlVMTCwgTlVMTH0s DQo+ID4gPj4gKyAge0wiWF9QTTFiX0VWVF9CTEsiLCAxMiwgMTYwLCBOVUxMLCBEdW1wR2FzLCBO VUxMLCBOVUxMLCBOVUxMfSwNCj4gPiA+PiArICB7TCJYX1BNMWFfQ05UX0JMSyIsIDEyLCAxNzIs IE5VTEwsIER1bXBHYXMsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ID4+ICsgIHtMIlhfUE0xYl9D TlRfQkxLIiwgMTIsIDE4NCwgTlVMTCwgRHVtcEdhcywgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4g Pj4gKyAge0wiWF9QTTJfQ05UX0JMSyIsIDEyLCAxOTYsIE5VTEwsIER1bXBHYXMsIE5VTEwsIE5V TEwsIE5VTEx9LA0KPiA+ID4+ICsgIHtMIlhfUE1fVE1SX0JMSyIsIDEyLCAyMDgsIE5VTEwsIER1 bXBHYXMsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ID4+ICsgIHtMIlhfR1BFMF9CTEsiLCAxMiwg MjIwLCBOVUxMLCBEdW1wR2FzLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPiA+PiArICB7TCJYX0dQ RTFfQkxLIiwgMTIsIDIzMiwgTlVMTCwgRHVtcEdhcywgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4g Pj4gKyAge0wiU0xFRVBfQ09OVFJPTF9SRUciLCAxMiwgMjQ0LCBOVUxMLCBEdW1wR2FzLCBOVUxM LCBOVUxMLA0KPiBOVUxMfSwNCj4gPiA+PiArICB7TCJTTEVFUF9TVEFUVVNfUkVHIiwgMTIsIDI1 NiwgTlVMTCwgRHVtcEdhcywgTlVMTCwgTlVMTCwNCj4gTlVMTH0sDQo+ID4gPj4gKyAge0wiSHlw ZXJ2aXNvciBWZW5kb3JJZGVudGl0eSIsIDgsIDI2OCwgTCIlbHgiLCBOVUxMLCBOVUxMLCBOVUxM LA0KPiBOVUxMfQ0KPiA+ID4+ICt9Ow0KPiA+ID4+ICsNCj4gPiA+PiArLyoqIFRoaXMgZnVuY3Rp b24gdmFsaWRhdGVzIHRoZSBGaXJtd2FyZSBDb250cm9sIEZpZWxkLg0KPiA+ID4+ICsNCj4gPiA+ PiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBmaWVs ZCBkYXRhLg0KPiA+ID4+ICsgIEBwYXJhbSBbaW5dIENvbnRleHQgUG9pbnRlciB0byBjb250ZXh0 IHNwZWNpZmljIGluZm9ybWF0aW9uIGUuZy4gdGhpcw0KPiA+ID4+ICsgICAgICAgICAgICAgICAg ICAgICAgY291bGQgYmUgYSBwb2ludGVyIHRvIHRoZSBBQ1BJIHRhYmxlIGhlYWRlci4NCj4gPiA+ PiArKi8NCj4gPiA+PiArU1RBVElDDQo+ID4gPj4gK1ZPSUQNCj4gPiA+PiArRUZJQVBJDQo+ID4g Pj4gK1ZhbGlkYXRlRmlybXdhcmVDdHJsICgNCj4gPiA+PiArICBJTiBVSU5UOCogUHRyLA0KPiA+ ID4+ICsgIElOIFZPSUQqICBDb250ZXh0DQo+ID4gPj4gKykNCj4gPiA+PiArew0KPiA+ID4+ICsj aWYgZGVmaW5lZCAoTURFX0NQVV9BUk0pIHx8IGRlZmluZWQgKE1ERV9DUFVfQUFSQ0g2NCkNCj4g PiA+PiArICBpZiAoKihVSU5UMzIqKVB0ciAhPSAwKSB7DQo+ID4gPj4gKyAgICBJbmNyZW1lbnRF cnJvckNvdW50ICgpOw0KPiA+ID4+ICsgICAgUHJpbnQgKA0KPiA+ID4+ICsgICAgICBMIlxuRVJS T1I6IEZpcm13YXJlIENvbnRyb2wgbXVzdCBiZSB6ZXJvIGZvciBBUk0gcGxhdGZvcm1zLiINCj4g PiA+PiArICAgICk7DQo+ID4gPj4gKyAgfQ0KPiA+ID4+ICsjZW5kaWYNCj4gPiA+PiArfQ0KPiA+ ID4+ICsNCj4gPiA+PiArLyoqIFRoaXMgZnVuY3Rpb24gdmFsaWRhdGVzIHRoZSBYX0Zpcm13YXJl IENvbnRyb2wgRmllbGQuDQo+ID4gPj4gKw0KPiA+ID4+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAg UG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGZpZWxkIGRhdGEuDQo+ID4gPj4gKyAgQHBhcmFt IFtpbl0gQ29udGV4dCBQb2ludGVyIHRvIGNvbnRleHQgc3BlY2lmaWMgaW5mb3JtYXRpb24gZS5n LiB0aGlzDQo+ID4gPj4gKyAgICAgICAgICAgICAgICAgICAgICBjb3VsZCBiZSBhIHBvaW50ZXIg dG8gdGhlIEFDUEkgdGFibGUgaGVhZGVyLg0KPiA+ID4+ICsqLw0KPiA+ID4+ICtTVEFUSUMNCj4g PiA+PiArVk9JRA0KPiA+ID4+ICtFRklBUEkNCj4gPiA+PiArVmFsaWRhdGVYRmlybXdhcmVDdHJs ICgNCj4gPiA+PiArICBJTiBVSU5UOCogUHRyLA0KPiA+ID4+ICsgIElOIFZPSUQqICBDb250ZXh0 DQo+ID4gPj4gKykNCj4gPiA+PiArew0KPiA+ID4+ICsjaWYgZGVmaW5lZCAoTURFX0NQVV9BUk0p IHx8IGRlZmluZWQgKE1ERV9DUFVfQUFSQ0g2NCkNCj4gPiA+PiArICBpZiAoKihVSU5UNjQqKVB0 ciAhPSAwKSB7DQo+ID4gPj4gKyAgICBJbmNyZW1lbnRFcnJvckNvdW50ICgpOw0KPiA+ID4+ICsg ICAgUHJpbnQgKA0KPiA+ID4+ICsgICAgICBMIlxuRVJST1I6IFggRmlybXdhcmUgQ29udHJvbCBt dXN0IGJlIHplcm8gZm9yIEFSTSBwbGF0Zm9ybXMuIg0KPiA+ID4+ICsgICAgKTsNCj4gPiA+PiAr ICB9DQo+ID4gPj4gKyNlbmRpZg0KPiA+ID4+ICt9DQo+ID4gPj4gKw0KPiA+ID4+ICsvKiogVGhp cyBmdW5jdGlvbiB2YWxpZGF0ZXMgdGhlIGZsYWdzLg0KPiA+ID4+ICsNCj4gPiA+PiArICBAcGFy YW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBmaWVsZCBkYXRhLg0K PiA+ID4+ICsgIEBwYXJhbSBbaW5dIENvbnRleHQgUG9pbnRlciB0byBjb250ZXh0IHNwZWNpZmlj IGluZm9ybWF0aW9uIGUuZy4gdGhpcw0KPiA+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgY291 bGQgYmUgYSBwb2ludGVyIHRvIHRoZSBBQ1BJIHRhYmxlIGhlYWRlci4NCj4gPiA+PiArKi8NCj4g PiA+PiArU1RBVElDDQo+ID4gPj4gK1ZPSUQNCj4gPiA+PiArRUZJQVBJDQo+ID4gPj4gK1ZhbGlk YXRlRmxhZ3MgKA0KPiA+ID4+ICsgIElOIFVJTlQ4KiBQdHIsDQo+ID4gPj4gKyAgSU4gVk9JRCog IENvbnRleHQNCj4gPiA+PiArKQ0KPiA+ID4+ICt7DQo+ID4gPj4gKyNpZiBkZWZpbmVkIChNREVf Q1BVX0FSTSkgfHwgZGVmaW5lZCAoTURFX0NQVV9BQVJDSDY0KQ0KPiA+ID4+ICsgIGlmICgoKCoo VUlOVDMyKilQdHIpICYgSFdfUkVEVUNFRF9BQ1BJKSA9PSAwKSB7DQo+ID4gPj4gKyAgICBJbmNy ZW1lbnRFcnJvckNvdW50ICgpOw0KPiA+ID4+ICsgICAgUHJpbnQgKA0KPiA+ID4+ICsgICAgICBM IlxuRVJST1I6IEhXX1JFRFVDRURfQUNQSSBmbGFnIG11c3QgYmUgc2V0IGZvciBBUk0NCj4gPiBw bGF0Zm9ybXMuIg0KPiA+ID4+ICsgICAgKTsNCj4gPiA+PiArICB9DQo+ID4gPj4gKyNlbmRpZg0K PiA+ID4+ICt9DQo+ID4gPj4gKw0KPiA+ID4+ICsvKiogVGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhl IEFDUEkgRkFEVCB0YWJsZS4NCj4gPiA+PiArICBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgRkFE VCB0YWJsZSBhbmQgb3B0aW9uYWxseSB0cmFjZXMgdGhlIEFDUEkNCj4gPiA+PiArICB0YWJsZSBm aWVsZHMuDQo+ID4gPj4gKw0KPiA+ID4+ICsgIFRoaXMgZnVuY3Rpb24gYWxzbyBwYXJzZXMgdGhl IEFDUEkgaGVhZGVyIGZvciB0aGUgRFNEVCB0YWJsZSBhbmQNCj4gPiA+PiArICBpbnZva2VzIHRo ZSBwYXJzZXIgZm9yIHRoZSBBQ1BJIERTRFQgdGFibGUuDQo+ID4gPj4gKw0KPiA+ID4+ICsgIFRo aXMgZnVuY3Rpb24gYWxzbyBwZXJmb3JtcyB2YWxpZGF0aW9uIG9mIHRoZSBBQ1BJIHRhYmxlIGZp ZWxkcy4NCj4gPiA+PiArDQo+ID4gPj4gKyAgQHBhcmFtIFtpbl0gVHJhY2UgICAgICAgICAgICAg IElmIFRSVUUsIHRyYWNlIHRoZSBBQ1BJIGZpZWxkcy4NCj4gPiA+PiArICBAcGFyYW0gW2luXSBQ dHIgICAgICAgICAgICAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4g PiA+PiArICBAcGFyYW0gW2luXSBBY3BpVGFibGVMZW5ndGggICAgTGVuZ3RoIG9mIHRoZSBBQ1BJ IHRhYmxlLg0KPiA+ID4+ICsgIEBwYXJhbSBbaW5dIEFjcGlUYWJsZVJldmlzaW9uICBSZXZpc2lv biBvZiB0aGUgQUNQSSB0YWJsZS4NCj4gPiA+PiArKi8NCj4gPiA+PiArVk9JRA0KPiA+ID4+ICtF RklBUEkNCj4gPiA+PiArUGFyc2VBY3BpRmFkdCAoDQo+ID4gPj4gKyAgSU4gQk9PTEVBTiBUcmFj ZSwNCj4gPiA+PiArICBJTiBVSU5UOCogIFB0ciwNCj4gPiA+PiArICBJTiBVSU5UMzIgIEFjcGlU YWJsZUxlbmd0aCwNCj4gPiA+PiArICBJTiBVSU5UOCAgIEFjcGlUYWJsZVJldmlzaW9uDQo+ID4g Pj4gKyAgKQ0KPiA+ID4+ICt7DQo+ID4gPj4gKyAgVUlOVDgqICBEc2R0UHRyOw0KPiA+ID4+ICsN Cj4gPiA+PiArICBQYXJzZUFjcGkgKA0KPiA+ID4+ICsgICAgVHJhY2UsDQo+ID4gPj4gKyAgICAw LA0KPiA+ID4+ICsgICAgIkZBRFQiLA0KPiA+ID4+ICsgICAgUHRyLA0KPiA+ID4+ICsgICAgQWNw aVRhYmxlTGVuZ3RoLA0KPiA+ID4+ICsgICAgUEFSU0VSX1BBUkFNUyAoRmFkdFBhcnNlcikNCj4g PiA+PiArICAgICk7DQo+ID4gPj4gKw0KPiA+ID4+ICsgIGlmIChUcmFjZSkgew0KPiA+ID4+ICsg ICAgUHJpbnQgKEwiXG5TdW1tYXJ5OlxuIik7DQo+ID4gPj4gKyAgICBQcmludEZpZWxkTmFtZSAo MiwgTCJGQURUIFZlcnNpb24iKTsNCj4gPiA+PiArICAgIFByaW50IChMIiVkLiVkXG4iLCAgKkFj cGlIZHJJbmZvLlJldmlzaW9uLCAqRmFkdE1pbm9yUmV2aXNpb24pOw0KPiA+ID4+ICsNCj4gPiA+ PiArICAgIGlmICgqR2V0QWNwaVhzZHRIZWFkZXJJbmZvICgpLT5PZW1UYWJsZUlkICE9DQo+ID4g KkFjcGlIZHJJbmZvLk9lbVRhYmxlSWQpIHsNCj4gPiA+PiArICAgICAgSW5jcmVtZW50RXJyb3JD b3VudCAoKTsNCj4gPiA+PiArICAgICAgUHJpbnQgKEwiRVJST1I6IE9FTSBUYWJsZSBJZCBkb2Vz IG5vdCBtYXRjaCB3aXRoIFJTRFQvWFNEVC5cbiIpOw0KPiA+ID4+ICsgICAgfQ0KPiA+ID4+ICsg IH0NCj4gPiA+PiArDQo+ID4gPj4gKyAgLy8gSWYgWF9EU0RUIGlzIG5vdCB6ZXJvIHRoZW4gdXNl IFhfRFNEVCBhbmQgaWdub3JlIERTRFQsDQo+ID4gPj4gKyAgLy8gZWxzZSB1c2UgRFNEVC4NCj4g PiA+PiArICBpZiAoKlhfRHNkdEFkZHJlc3MgIT0gMCkgew0KPiA+ID4+ICsgICAgRHNkdFB0ciA9 IChVSU5UOCopKFVJTlROKSgqWF9Ec2R0QWRkcmVzcyk7DQo+ID4gPj4gKyAgfSBlbHNlIGlmICgq RHNkdEFkZHJlc3MgIT0gMCkgew0KPiA+ID4+ICsgICAgRHNkdFB0ciA9IChVSU5UOCopKFVJTlRO KSgqRHNkdEFkZHJlc3MpOw0KPiA+ID4+ICsgIH0gZWxzZSB7DQo+ID4gPj4gKyAgICAvLyBCb3Ro IERTRFQgYW5kIFhfRFNEVCBjYW5ub3QgYmUgemVyby4NCj4gPiA+PiArI2lmIGRlZmluZWQgKE1E RV9DUFVfQVJNKSB8fCBkZWZpbmVkIChNREVfQ1BVX0FBUkNINjQpDQo+ID4gPj4gKyAgICBpZiAo VHJhY2UpIHsNCj4gPiA+PiArICAgICAgLy8gVGhlIERTRFQgVGFibGUgaXMgbWFuZGF0b3J5IGZv ciBBUk0gc3lzdGVtcw0KPiA+ID4+ICsgICAgICAvLyBhcyB0aGUgQ1BVIGluZm9ybWF0aW9uIE1V U1QgYmUgcHJlc2VudGVkIGluDQo+ID4gPj4gKyAgICAgIC8vIHRoZSBEU0RULg0KPiA+ID4+ICsg ICAgICBJbmNyZW1lbnRFcnJvckNvdW50ICgpOw0KPiA+ID4+ICsgICAgICBQcmludCAoTCJFUlJP UjogQm90aCBYX0RTRFQgYW5kIERTRFQgYXJlIE5VTEwuXG4iKTsNCj4gPiA+PiArICAgIH0NCj4g PiA+PiArI2VuZGlmDQo+ID4gPj4gKyAgICByZXR1cm47DQo+ID4gPj4gKyAgfQ0KPiA+ID4+ICsN Cj4gPiA+PiArICBQcm9jZXNzQWNwaVRhYmxlIChEc2R0UHRyKTsNCj4gPiA+PiArfQ0KPiA+ID4+ ICsNCj4gPiA+PiArLyoqIFJlZ2lzdGVyIHRoZSBwYXJzZXIuDQo+ID4gPj4gKw0KPiA+ID4+ICsg IEBwYXJhbSBbaW5dICBJbWFnZUhhbmRsZSAgVGhlIGhhbmRsZSB0byB0aGUgaW1hZ2UuDQo+ID4g Pj4gKyAgQHBhcmFtIFtpbl0gIFN5c3RlbVRhYmxlICBQb2ludGVyIHRvIHRoZSBTeXN0ZW0gVGFi bGUuDQo+ID4gPj4gKw0KPiA+ID4+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRo ZSBwYXJzZXIgaXMgcmVnaXN0ZXJlZC4NCj4gPiA+PiArICBAcmV0dmFsIEVGSV9BTFJFQURZX1NU QVJURUQgICBUaGUgcGFyc2VyIGZvciB0aGUgQUNQSSBUYWJsZQ0KPiA+ID4+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHdhcyBhbHJlYWR5IHJlZ2lzdGVyZWQuDQo+ID4gPj4gKyAg QHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgQSBwYXJhbWV0ZXIgaXMgaW52YWxpZA0KPiA+ ID4+ICsgIEByZXR2YWwgRUZJX09VVF9PRl9SRVNPVVJDRVMgIE5vIHNwYWNlIHRvIHJlZ2lzdGVy IHRoZQ0KPiA+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlci4NCj4g PiA+PiArKi8NCj4gPiA+PiArRUZJX1NUQVRVUw0KPiA+ID4+ICtFRklBUEkNCj4gPiA+PiArRmFk dFBhcnNlckxpYkNvbnN0cnVjdG9yICgNCj4gPiA+PiArICBJTiBDT05TVCBFRklfSEFORExFICAg ICAgICAgICAgICAgIEltYWdlSGFuZGxlLA0KPiA+ID4+ICsgIElOICAgICAgIEVGSV9TWVNURU1f VEFCTEUgICogQ09OU1QgU3lzdGVtVGFibGUNCj4gPiA+PiArICApDQo+ID4gPj4gK3sNCj4gPiA+ PiArICByZXR1cm4gUmVnaXN0ZXJQYXJzZXIgKA0KPiA+ID4+ICsgICAgICAgICAgIEVGSV9BQ1BJ XzZfMl9GSVhFRF9BQ1BJX0RFU0NSSVBUSU9OX1RBQkxFX1NJR05BVFVSRSwNCj4gPiA+PiArICAg ICAgICAgICBQYXJzZUFjcGlGYWR0DQo+ID4gPj4gKyAgICAgICAgICAgKTsNCj4gPiA+PiArfQ0K PiA+ID4+ICsNCj4gPiA+PiArLyoqIERlcmVnaXN0ZXIgdGhlIHBhcnNlci4NCj4gPiA+PiArDQo+ ID4gPj4gKyAgQHBhcmFtIFtpbl0gIEltYWdlSGFuZGxlICBUaGUgaGFuZGxlIHRvIHRoZSBpbWFn ZS4NCj4gPiA+PiArICBAcGFyYW0gW2luXSAgU3lzdGVtVGFibGUgIFBvaW50ZXIgdG8gdGhlIFN5 c3RlbSBUYWJsZS4NCj4gPiA+PiArDQo+ID4gPj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAg ICAgICAgVGhlIHBhcnNlciBpcyBkZXJlZ2lzdGVyZWQuDQo+ID4gPj4gKyAgQHJldHZhbCBFRklf Tk9UX0ZPVU5EICAgICAgICAgVGhlIHBhcnNlciB3YXMgbm90IHJlZ2lzdGVyZWQuDQo+ID4gPj4g KyovDQo+ID4gPj4gK0VGSV9TVEFUVVMNCj4gPiA+PiArRUZJQVBJDQo+ID4gPj4gK0ZhZHRQYXJz ZXJMaWJEZXN0cnVjdG9yICgNCj4gPiA+PiArICBJTiBDT05TVCBFRklfSEFORExFICAgICAgICAg ICAgICAgIEltYWdlSGFuZGxlLA0KPiA+ID4+ICsgIElOICAgICAgIEVGSV9TWVNURU1fVEFCTEUg ICogQ09OU1QgU3lzdGVtVGFibGUNCj4gPiA+PiArICApDQo+ID4gPj4gK3sNCj4gPiA+PiArICBy ZXR1cm4gRGVyZWdpc3RlclBhcnNlciAoDQo+ID4gPj4gKyAgICAgICAgICAgRUZJX0FDUElfNl8y X0ZJWEVEX0FDUElfREVTQ1JJUFRJT05fVEFCTEVfU0lHTkFUVVJFDQo+ID4gPj4gKyAgICAgICAg ICAgKTsNCj4gPiA+PiArfQ0KPiA+ID4+IGRpZmYgLS1naXQNCj4gPg0KPiBhL1NoZWxsUGtnL0xp YnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvRmFkdC9GYWR0UGFyc2Vy DQo+IExpYi5pDQo+ID4gbmYNCj4gPg0KPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNw aVZpZXdDb21tYW5kTGliL1BhcnNlcnMvRmFkdC9GYWR0UGFyc2VyDQo+IExpYi5pDQo+ID4gbmYN Cj4gPiA+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+ID4+IGluZGV4DQo+ID4gMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDI4YTFhMDI2ZGVlYzFiODdjY2I5DQo+ ID4gM2RkNzc3NTAwNzhlMmE4ZWVmZA0KPiA+ID4+IC0tLSAvZGV2L251bGwNCj4gPiA+PiArKysN Cj4gPg0KPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1Bh cnNlcnMvRmFkdC9GYWR0UGFyc2VyDQo+IExpYi5pDQo+ID4gbmYNCj4gPiA+PiBAQCAtMCwwICsx LDMzIEBADQo+ID4gPj4gKyMjIEBmaWxlDQo+ID4gPj4gKyMNCj4gPiA+PiArIyAgQ29weXJpZ2h0 IChjKSAyMDE3IC0gMjAxOCwgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ID4g Pj4gKyMNCj4gPiA+PiArIyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVy aWFscw0KPiA+ID4+ICsjICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRo ZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZg0KPiB0aGUNCj4gPiBCU0QgTGljZW5zZQ0KPiA+ID4+ ICsjICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQg b2YgdGhlIGxpY2Vuc2UgbWF5DQo+IGJlDQo+ID4gZm91bmQgYXQNCj4gPiA+PiArIyAgaHR0cDov L29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiA+ID4+ICsjDQo+ID4g Pj4gKyMgIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBP TiBBTiAiQVMNCj4gSVMiDQo+ID4gQkFTSVMsDQo+ID4gPj4gKyMgIFdJVEhPVVQgV0FSUkFOVElF UyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUg0KPiA+IEVYUFJFU1MgT1Ig SU1QTElFRC4NCj4gPiA+PiArIyMNCj4gPiA+PiArDQo+ID4gPj4gK1tEZWZpbmVzXQ0KPiA+ID4+ ICsgIElORl9WRVJTSU9OICAgID0gMHgwMDAxMDAxOQ0KPiA+ID4+ICsgIEJBU0VfTkFNRSAgICAg ID0gRmFkdFBhcnNlckxpYg0KPiA+ID4+ICsgIEZJTEVfR1VJRCAgICAgID0gMTUwN0VDOEEtMkJE NC00NjBCLTk4MzAtRDc4RDBCRDdFMEU2DQo+ID4gPj4gKyAgVkVSU0lPTl9TVFJJTkcgPSAxLjAN Cj4gPiA+PiArICBNT0RVTEVfVFlQRSAgICA9IERYRV9EUklWRVINCj4gPiA+PiArICBMSUJSQVJZ X0NMQVNTICA9IE5VTEx8RFhFX0RSSVZFUg0KPiA+ID4+ICsgIENPTlNUUlVDVE9SICAgID0gRmFk dFBhcnNlckxpYkNvbnN0cnVjdG9yDQo+ID4gPj4gKyAgREVTVFJVQ1RPUiAgICAgPSBGYWR0UGFy c2VyTGliRGVzdHJ1Y3Rvcg0KPiA+ID4+ICsNCj4gPiA+PiArW1NvdXJjZXNdDQo+ID4gPj4gKyAg RmFkdFBhcnNlci5jDQo+ID4gPj4gKw0KPiA+ID4+ICtbUGFja2FnZXNdDQo+ID4gPj4gKyAgTWRl UGtnL01kZVBrZy5kZWMNCj4gPiA+PiArICBTaGVsbFBrZy9TaGVsbFBrZy5kZWMNCj4gPiA+PiAr ICBNZGVNb2R1bGVQa2cvTWRlTW9kdWxlUGtnLmRlYw0KPiA+ID4+ICsNCj4gPiA+PiArW0xpYnJh cnlDbGFzc2VzXQ0KPiA+ID4+ICsgIFNoZWxsQWNwaVZpZXdDb21tYW5kTGliDQo+ID4gPj4gZGlm ZiAtLWdpdA0KPiA+DQo+IGEvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1h bmRMaWIvUGFyc2Vycy9HdGR0L0d0ZHRQYXJzZXINCj4gLmMNCj4gPg0KPiBiL1NoZWxsUGtnL0xp YnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvR3RkdC9HdGR0UGFyc2Vy DQo+IC5jDQo+ID4gPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiA+PiBpbmRleA0KPiA+IDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc4NDEwNGE4YTRlNWM1ZmYw YmEyNjMNCj4gPiA3NGE2NzM3N2U3N2RkZmUzOWINCj4gPiA+PiAtLS0gL2Rldi9udWxsDQo+ID4g Pj4gKysrDQo+ID4NCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFu ZExpYi9QYXJzZXJzL0d0ZHQvR3RkdFBhcnNlcg0KPiAuYw0KPiA+ID4+IEBAIC0wLDAgKzEsMzM4 IEBADQo+ID4gPj4gKy8qKg0KPiA+ID4+ICsgIEdURFQgdGFibGUgcGFyc2VyDQo+ID4gPj4gKw0K PiA+ID4+ICsgIENvcHlyaWdodCAoYykgMjAxNiAtIDIwMTgsIEFSTSBMaW1pdGVkLiBBbGwgcmln aHRzIHJlc2VydmVkLg0KPiA+ID4+ICsgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWlu ZyBtYXRlcmlhbHMNCj4gPiA+PiArICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVu ZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZg0KPiB0aGUNCj4gPiBCU0QgTGljZW5zZQ0K PiA+ID4+ICsgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwg dGV4dCBvZiB0aGUgbGljZW5zZSBtYXkNCj4gYmUNCj4gPiBmb3VuZCBhdA0KPiA+ID4+ICsgIGh0 dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4gPiA+PiArDQo+ ID4gPj4gKyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNF IE9OIEFOICJBUw0KPiBJUyINCj4gPiBCQVNJUywNCj4gPiA+PiArICBXSVRIT1VUIFdBUlJBTlRJ RVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVINCj4gPiBFWFBSRVNTIE9S IElNUExJRUQuDQo+ID4gPj4gKw0KPiA+ID4+ICsgIEBwYXIgUmVmZXJlbmNlKHMpOg0KPiA+ID4+ ICsgICAgLSBBQ1BJIDYuMiBTcGVjaWZpY2F0aW9uIC0gRXJyYXRhIEEsIFNlcHRlbWJlciAyMDE3 DQo+ID4gPj4gKyAgKiovDQo+ID4gPj4gKw0KPiA+ID4+ICsjaW5jbHVkZSA8SW5kdXN0cnlTdGFu ZGFyZC9BY3BpLmg+DQo+ID4gPj4gKyNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlMaWIuaD4NCj4gPiA+ PiArI2luY2x1ZGUgPExpYnJhcnkvQWNwaVZpZXcvQWNwaVBhcnNlci5oPg0KPiA+ID4+ICsjaW5j bHVkZSA8TGlicmFyeS9BY3BpVmlldy9BY3BpVGFibGVQYXJzZXIuaD4NCj4gPiA+PiArDQo+ID4g Pj4gKy8vIExvY2FsIHZhcmlhYmxlcw0KPiA+ID4+ICtTVEFUSUMgQ09OU1QgVUlOVDMyKiBHdGR0 UGxhdGZvcm1UaW1lckNvdW50Ow0KPiA+ID4+ICtTVEFUSUMgQ09OU1QgVUlOVDMyKiBHdGR0UGxh dGZvcm1UaW1lck9mZnNldDsNCj4gPiA+PiArU1RBVElDIENPTlNUIFVJTlQ4KiAgUGxhdGZvcm1U aW1lclR5cGU7DQo+ID4gPj4gK1NUQVRJQyBDT05TVCBVSU5UMTYqIFBsYXRmb3JtVGltZXJMZW5n dGg7DQo+ID4gPj4gK1NUQVRJQyBDT05TVCBVSU5UMzIqIEd0QmxvY2tUaW1lckNvdW50Ow0KPiA+ ID4+ICtTVEFUSUMgQ09OU1QgVUlOVDMyKiBHdEJsb2NrVGltZXJPZmZzZXQ7DQo+ID4gPj4gK1NU QVRJQyBDT05TVCBVSU5UMTYqIEd0QmxvY2tMZW5ndGg7DQo+ID4gPj4gK1NUQVRJQyBBQ1BJX0RF U0NSSVBUSU9OX0hFQURFUl9JTkZPIEFjcGlIZHJJbmZvOw0KPiA+ID4+ICsNCj4gPiA+PiArLyoq IFRoaXMgZnVuY3Rpb24gdmFsaWRhdGVzIHRoZSBHVCBCbG9jayB0aW1lciBjb3VudC4NCj4gPiA+ PiArDQo+ID4gPj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBv ZiB0aGUgZmllbGQgZGF0YS4NCj4gPiA+PiArICBAcGFyYW0gW2luXSBDb250ZXh0IFBvaW50ZXIg dG8gY29udGV4dCBzcGVjaWZpYyBpbmZvcm1hdGlvbiBlLmcuIHRoaXMNCj4gPiA+PiArICAgICAg ICAgICAgICAgICAgICAgIGNvdWxkIGJlIGEgcG9pbnRlciB0byB0aGUgQUNQSSB0YWJsZSBoZWFk ZXIuDQo+ID4gPj4gKyovDQo+ID4gPj4gK1NUQVRJQw0KPiA+ID4+ICtWT0lEDQo+ID4gPj4gK0VG SUFQSQ0KPiA+ID4+ICtWYWxpZGF0ZUd0QmxvY2tUaW1lckNvdW50ICgNCj4gPiA+PiArICBJTiBV SU5UOCogUHRyLA0KPiA+ID4+ICsgIElOIFZPSUQqICBDb250ZXh0DQo+ID4gPj4gKyAgKTsNCj4g PiA+PiArDQo+ID4gPj4gKy8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBB Q1BJIEdURFQgVGFibGUuDQo+ID4gPj4gKyovDQo+ID4gPj4gK1NUQVRJQyBDT05TVCBBQ1BJX1BB UlNFUiBHdGR0UGFyc2VyW10gPSB7DQo+ID4gPj4gKyAgUEFSU0VfQUNQSV9IRUFERVIgKCZBY3Bp SGRySW5mbyksDQo+ID4gPj4gKyAge0wiQ250Q29udHJvbEJhc2UgUGh5c2ljYWwgQWRkcmVzcyIs IDgsIDM2LCBMIjB4JWx4IiwgTlVMTCwgTlVMTCwNCj4gPiA+PiArICAgTlVMTCwgTlVMTH0sDQo+ ID4gPj4gKyAge0wiUmVzZXJ2ZWQiLCA0LCA0NCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwg TlVMTH0sDQo+ID4gPj4gKyAge0wiU2VjdXJlIEVMMSB0aW1lciBHU0lWIiwgNCwgNDgsIEwiMHgl eCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ID4+ICsgIHtMIlNlY3VyZSBFTDEgdGlt ZXIgRkxBR1MiLCA0LCA1MiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4g Pj4gKw0KPiA+ID4+ICsgIHtMIk5vbi1TZWN1cmUgRUwxIHRpbWVyIEdTSVYiLCA0LCA1NiwgTCIw eCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwNCj4gTlVMTH0sDQo+ID4gPj4gKyAge0wiTm9uLVNlY3Vy ZSBFTDEgdGltZXIgRkxBR1MiLCA0LCA2MCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwNCj4g PiBOVUxMfSwNCj4gPiA+PiArDQo+ID4gPj4gKyAge0wiVmlydHVhbCB0aW1lciBHU0lWIiwgNCwg NjQsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ID4+ICsgIHtMIlZpcnR1 YWwgdGltZXIgRkxBR1MiLCA0LCA2OCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0s DQo+ID4gPj4gKw0KPiA+ID4+ICsgIHtMIk5vbi1TZWN1cmUgRUwyIHRpbWVyIEdTSVYiLCA0LCA3 MiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwNCj4gTlVMTH0sDQo+ID4gPj4gKyAge0wiTm9u LVNlY3VyZSBFTDIgdGltZXIgRkxBR1MiLCA0LCA3NiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVM TCwNCj4gPiBOVUxMfSwNCj4gPiA+PiArDQo+ID4gPj4gKyAge0wiQ250UmVhZEJhc2UgUGh5c2lj YWwgYWRkcmVzcyIsIDgsIDgwLCBMIjB4JWx4IiwgTlVMTCwgTlVMTCwgTlVMTCwNCj4gPiBOVUxM fSwNCj4gPiA+PiArICB7TCJQbGF0Zm9ybSBUaW1lciBDb3VudCIsIDQsIDg4LCBMIiVkIiwgTlVM TCwNCj4gPiA+PiArICAgKFZPSUQqKikmR3RkdFBsYXRmb3JtVGltZXJDb3VudCwgTlVMTCwgTlVM TH0sDQo+ID4gPj4gKyAge0wiUGxhdGZvcm0gVGltZXIgT2Zmc2V0IiwgNCwgOTIsIEwiMHgleCIs IE5VTEwsDQo+ID4gPj4gKyAgIChWT0lEKiopJkd0ZHRQbGF0Zm9ybVRpbWVyT2Zmc2V0LCBOVUxM LCBOVUxMfQ0KPiA+ID4+ICt9Ow0KPiA+ID4+ICsNCj4gPiA+PiArLyoqIEFuIEFDUElfUEFSU0VS IGFycmF5IGRlc2NyaWJpbmcgdGhlIFBsYXRmb3JtIHRpbWVyIGhlYWRlci4NCj4gPiA+PiArKi8N Cj4gPiA+PiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VSIEd0UGxhdGZvcm1UaW1lckhlYWRlclBh cnNlcltdID0gew0KPiA+ID4+ICsgIHtMIlR5cGUiLCAxLCAwLCBOVUxMLCBOVUxMLCAoVk9JRCoq KSZQbGF0Zm9ybVRpbWVyVHlwZSwgTlVMTCwNCj4gTlVMTH0sDQo+ID4gPj4gKyAge0wiTGVuZ3Ro IiwgMiwgMSwgTlVMTCwgTlVMTCwgKFZPSUQqKikmUGxhdGZvcm1UaW1lckxlbmd0aCwgTlVMTCwN Cj4gPiBOVUxMfSwNCj4gPiA+PiArICB7TCJSZXNlcnZlZCIsIDEsIDMsIE5VTEwsIE5VTEwsIE5V TEwsIE5VTEwsIE5VTEx9DQo+ID4gPj4gK307DQo+ID4gPj4gKw0KPiA+ID4+ICsvKiogQW4gQUNQ SV9QQVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0aGUgUGxhdGZvcm0gR1QgQmxvY2suDQo+ID4gPj4g KyovDQo+ID4gPj4gK1NUQVRJQyBDT05TVCBBQ1BJX1BBUlNFUiBHdEJsb2NrUGFyc2VyW10gPSB7 DQo+ID4gPj4gKyAge0wiVHlwZSIsIDEsIDAsIEwiJWQiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxM fSwNCj4gPiA+PiArICB7TCJMZW5ndGgiLCAyLCAxLCBMIiVkIiwgTlVMTCwgKFZPSUQqKikmR3RC bG9ja0xlbmd0aCwgTlVMTCwNCj4gTlVMTH0sDQo+ID4gPj4gKyAge0wiUmVzZXJ2ZWQiLCAxLCAz LCBMIiV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4gPj4gKyAge0wiUGh5c2ljYWwg YWRkcmVzcyAoQ250Q3RsQmFzZSkiLCA4LCA0LCBMIjB4JWx4IiwgTlVMTCwgTlVMTCwgTlVMTCwN Cj4gPiBOVUxMfSwNCj4gPiA+PiArICB7TCJUaW1lciBDb3VudCIsIDQsIDEyLCBMIiVkIiwgTlVM TCwgKFZPSUQqKikmR3RCbG9ja1RpbWVyQ291bnQsDQo+ID4gPj4gKyAgIFZhbGlkYXRlR3RCbG9j a1RpbWVyQ291bnQsIE5VTEx9LA0KPiA+ID4+ICsgIHtMIlRpbWVyIE9mZnNldCIsIDQsIDE2LCBM IiVkIiwgTlVMTCwgKFZPSUQqKikmR3RCbG9ja1RpbWVyT2Zmc2V0LA0KPiA+IE5VTEwsDQo+ID4g Pj4gKyAgICBOVUxMfQ0KPiA+ID4+ICt9Ow0KPiA+ID4+ICsNCj4gPiA+PiArLyoqIEFuIEFDUElf UEFSU0VSIGFycmF5IGRlc2NyaWJpbmcgdGhlIEdUIEJsb2NrIHRpbWVyLg0KPiA+ID4+ICsqLw0K PiA+ID4+ICtTVEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgR3RCbG9ja1RpbWVyUGFyc2VyW10gPSB7 DQo+ID4gPj4gKyAge0wiRnJhbWUgTnVtYmVyIiwgMSwgMCwgTCIlZCIsIE5VTEwsIE5VTEwsIE5V TEwsIE5VTEx9LA0KPiA+ID4+ICsgIHtMIlJlc2VydmVkIiwgMywgMSwgTCIleCAleCAleCIsIER1 bXAzQ2hhcnMsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ID4+ICsgIHtMIlBoeXNpY2FsIGFkZHJl c3MgKENudEJhc2VYKSIsIDgsIDQsIEwiMHglbHgiLCBOVUxMLCBOVUxMLCBOVUxMLA0KPiBOVUxM fSwNCj4gPiA+PiArICB7TCJQaHlzaWNhbCBhZGRyZXNzIChDbnRFTDBCYXNlWCkiLCA4LCAxMiwg TCIweCVseCIsIE5VTEwsIE5VTEwsDQo+IE5VTEwsDQo+ID4gPj4gKyAgICBOVUxMfSwNCj4gPiA+ PiArICB7TCJQaHlzaWNhbCBUaW1lciBHU0lWIiwgNCwgMjAsIEwiMHgleCIsIE5VTEwsIE5VTEws IE5VTEwsIE5VTEx9LA0KPiA+ID4+ICsgIHtMIlBoeXNpY2FsIFRpbWVyIEZsYWdzIiwgNCwgMjQs IEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ID4+ICsgIHtMIlZpcnR1YWwg VGltZXIgR1NJViIsIDQsIDI4LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4g PiA+PiArICB7TCJWaXJ0dWFsIFRpbWVyIEZsYWdzIiwgNCwgMzIsIEwiMHgleCIsIE5VTEwsIE5V TEwsIE5VTEwsIE5VTEx9LA0KPiA+ID4+ICsgIHtMIkNvbW1vbiBGbGFncyIsIDQsIDM2LCBMIjB4 JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfQ0KPiA+ID4+ICt9Ow0KPiA+ID4+ICsNCj4gPiA+ PiArLyoqIEFuIEFDUElfUEFSU0VSIGFycmF5IGRlc2NyaWJpbmcgdGhlIFBsYXRmb3JtIFdhdGNo ZG9nLg0KPiA+ID4+ICsqLw0KPiA+ID4+ICtTVEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgU0JTQUdl bmVyaWNXYXRjaGRvZ1BhcnNlcltdID0gew0KPiA+ID4+ICsgIHtMIlR5cGUiLCAxLCAwLCBMIiVk IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4gPj4gKyAge0wiTGVuZ3RoIiwgMiwgMSwg TCIlZCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ID4+ICsgIHtMIlJlc2VydmVkIiwg MSwgMywgTCIleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ID4+ICsgIHtMIlJlZnJl c2hGcmFtZSBQaHlzaWNhbCBhZGRyZXNzIiwgOCwgNCwgTCIweCVseCIsIE5VTEwsIE5VTEwsIE5V TEwsDQo+ID4gTlVMTH0sDQo+ID4gPj4gKyAge0wiQ29udHJvbEZyYW1lIFBoeXNpY2FsIGFkZHJl c3MiLCA4LCAxMiwgTCIweCVseCIsIE5VTEwsIE5VTEwsIE5VTEwsDQo+ID4gTlVMTH0sDQo+ID4g Pj4gKyAge0wiV2F0Y2hkb2cgVGltZXIgR1NJViIsIDQsIDIwLCBMIjB4JXgiLCBOVUxMLCBOVUxM LCBOVUxMLCBOVUxMfSwNCj4gPiA+PiArICB7TCJXYXRjaGRvZyBUaW1lciBGbGFncyIsIDQsIDI0 LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfQ0KPiA+ID4+ICt9Ow0KPiA+ID4+ICsN Cj4gPiA+PiArLyoqIFRoaXMgZnVuY3Rpb24gdmFsaWRhdGVzIHRoZSBHVCBCbG9jayB0aW1lciBj b3VudC4NCj4gPiA+PiArDQo+ID4gPj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRv IHRoZSBzdGFydCBvZiB0aGUgZmllbGQgZGF0YS4NCj4gPiA+PiArICBAcGFyYW0gW2luXSBDb250 ZXh0IFBvaW50ZXIgdG8gY29udGV4dCBzcGVjaWZpYyBpbmZvcm1hdGlvbiBlLmcuIHRoaXMNCj4g PiA+PiArICAgICAgICAgICAgICAgICAgICAgIGNvdWxkIGJlIGEgcG9pbnRlciB0byB0aGUgQUNQ SSB0YWJsZSBoZWFkZXIuDQo+ID4gPj4gKyovDQo+ID4gPj4gK1NUQVRJQw0KPiA+ID4+ICtWT0lE DQo+ID4gPj4gK0VGSUFQSQ0KPiA+ID4+ICtWYWxpZGF0ZUd0QmxvY2tUaW1lckNvdW50ICgNCj4g PiA+PiArICBJTiBVSU5UOCogUHRyLA0KPiA+ID4+ICsgIElOIFZPSUQqICBDb250ZXh0DQo+ID4g Pj4gKyAgKQ0KPiA+ID4+ICt7DQo+ID4gPj4gKyAgVUlOVDMyIEJsb2NrVGltZXJDb3VudCA9ICoo VUlOVDMyKilQdHI7DQo+ID4gPj4gKyAgaWYgKEJsb2NrVGltZXJDb3VudCA+IDgpIHsNCj4gPiA+ PiArICAgIEluY3JlbWVudEVycm9yQ291bnQgKCk7DQo+ID4gPj4gKyAgICBQcmludCAoDQo+ID4g Pj4gKyAgICAgIEwiXG5FUlJPUjogVGltZXIgQ291bnQgPSAlZC4gTWF4IFRpbWVyIENvdW50IGlz IDguIiwNCj4gPiA+PiArICAgICAgQmxvY2tUaW1lckNvdW50DQo+ID4gPj4gKyAgICAgICk7DQo+ ID4gPj4gKyAgfQ0KPiA+ID4+ICt9DQo+ID4gPj4gKw0KPiA+ID4+ICsvKiogVGhpcyBmdW5jdGlv biBwYXJzZXMgdGhlIFBsYXRmb3JtIEdUIEJsb2NrLg0KPiA+ID4+ICsNCj4gPiA+PiArICBAcGFy YW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBHVCBCbG9jayBkYXRh Lg0KPiA+ID4+ICsgIEBwYXJhbSBbaW5dIExlbmd0aCAgTGVuZ3RoIG9mIHRoZSBHVCBCbG9jayBz dHJ1Y3R1cmUuDQo+ID4gPj4gKyovDQo+ID4gPj4gK1NUQVRJQw0KPiA+ID4+ICtWT0lEDQo+ID4g Pj4gK0R1bXBHVEJsb2NrICgNCj4gPiA+PiArICBJTiBVSU5UOCogUHRyLA0KPiA+ID4+ICsgIElO IFVJTlQxNiBMZW5ndGgNCj4gPiA+PiArICApDQo+ID4gPj4gK3sNCj4gPiA+PiArICBVSU5UMzIg SW5kZXg7DQo+ID4gPj4gKyAgVUlOVDMyIE9mZnNldDsNCj4gPiA+PiArICBVSU5UMTYgR1RCbG9j a1RpbWVyTGVuZ3RoOw0KPiA+ID4+ICsNCj4gPiA+PiArICBPZmZzZXQgPSBQYXJzZUFjcGkgKA0K PiA+ID4+ICsgICAgICAgICAgICAgVFJVRSwNCj4gPiA+PiArICAgICAgICAgICAgIDIsDQo+ID4g Pj4gKyAgICAgICAgICAgICAiR1QgQmxvY2siLA0KPiA+ID4+ICsgICAgICAgICAgICAgUHRyLA0K PiA+ID4+ICsgICAgICAgICAgICAgTGVuZ3RoLA0KPiA+ID4+ICsgICAgICAgICAgICAgUEFSU0VS X1BBUkFNUyAoR3RCbG9ja1BhcnNlcikNCj4gPiA+PiArICAgICAgICAgICAgICk7DQo+ID4gPj4g KyAgR1RCbG9ja1RpbWVyTGVuZ3RoID0gKCpHdEJsb2NrTGVuZ3RoIC0gT2Zmc2V0KSAvDQo+ICgq R3RCbG9ja1RpbWVyQ291bnQpOw0KPiA+ID4+ICsgIExlbmd0aCAtPSBPZmZzZXQ7DQo+ID4gPj4g Kw0KPiA+ID4+ICsgIGlmICgqR3RCbG9ja1RpbWVyQ291bnQgIT0gMCkgew0KPiA+ID4+ICsgICAg UHRyICs9ICgqR3RCbG9ja1RpbWVyT2Zmc2V0KTsNCj4gPiA+PiArICAgIEluZGV4ID0gMDsNCj4g PiA+PiArICAgIHdoaWxlICgoSW5kZXggPCAoKkd0QmxvY2tUaW1lckNvdW50KSkgJiYgKExlbmd0 aCA+PQ0KPiA+IEdUQmxvY2tUaW1lckxlbmd0aCkpIHsNCj4gPiA+PiArICAgICAgT2Zmc2V0ID0g UGFyc2VBY3BpICgNCj4gPiA+PiArICAgICAgICAgICAgICAgICBUUlVFLA0KPiA+ID4+ICsgICAg ICAgICAgICAgICAgIDIsDQo+ID4gPj4gKyAgICAgICAgICAgICAgICAgIkdUIEJsb2NrIFRpbWVy IiwNCj4gPiA+PiArICAgICAgICAgICAgICAgICBQdHIsDQo+ID4gPj4gKyAgICAgICAgICAgICAg ICAgR1RCbG9ja1RpbWVyTGVuZ3RoLA0KPiA+ID4+ICsgICAgICAgICAgICAgICAgIFBBUlNFUl9Q QVJBTVMgKEd0QmxvY2tUaW1lclBhcnNlcikNCj4gPiA+PiArICAgICAgICAgICAgICAgICApOw0K PiA+ID4+ICsgICAgICAvLyBJbmNyZW1lbnQgYnkgR1QgQmxvY2sgVGltZXIgc3RydWN0dXJlIHNp emUNCj4gPiA+PiArICAgICAgUHRyICs9IE9mZnNldDsNCj4gPiA+PiArICAgICAgTGVuZ3RoIC09 IE9mZnNldDsNCj4gPiA+PiArICAgICAgSW5kZXgrKzsNCj4gPiA+PiArICAgIH0NCj4gPiA+PiAr DQo+ID4gPj4gKyAgICBpZiAoTGVuZ3RoICE9IDApIHsNCj4gPiA+PiArICAgICAgSW5jcmVtZW50 RXJyb3JDb3VudCAoKTsNCj4gPiA+PiArICAgICAgUHJpbnQgKA0KPiA+ID4+ICsgICAgICAgIEwi RVJST1I6R1QgQmxvY2sgVGltZXIgbGVuZ3RoIG1pc21hdGNoLiBVbnBhcnNlZCAlZCBieXRlcy5c biIsDQo+ID4gPj4gKyAgICAgICAgTGVuZ3RoDQo+ID4gPj4gKyAgICAgICAgKTsNCj4gPiA+PiAr ICAgIH0NCj4gPiA+PiArICB9DQo+ID4gPj4gK30NCj4gPiA+PiArDQo+ID4gPj4gKy8qKiBUaGlz IGZ1bmN0aW9uIHBhcnNlcyB0aGUgUGxhdGZvcm0gV2F0Y2hkb2cgdGltZXIuDQo+ID4gPj4gKw0K PiA+ID4+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhl IHdhdGNoZG9nIHRpbWVyIGRhdGEuDQo+ID4gPj4gKyAgQHBhcmFtIFtpbl0gTGVuZ3RoICBMZW5n dGggb2YgdGhlIHdhdGNoZG9nIHRpbWVyIHN0cnVjdHVyZS4NCj4gPiA+PiArKi8NCj4gPiA+PiAr U1RBVElDDQo+ID4gPj4gK1ZPSUQNCj4gPiA+PiArRHVtcFdhdGNoZG9nVGltZXIgKA0KPiA+ID4+ ICsgIElOIFVJTlQ4KiBQdHIsDQo+ID4gPj4gKyAgSU4gVUlOVDE2IExlbmd0aA0KPiA+ID4+ICsg ICkNCj4gPiA+PiArew0KPiA+ID4+ICsgIFBhcnNlQWNwaSAoDQo+ID4gPj4gKyAgICBUUlVFLA0K PiA+ID4+ICsgICAgMiwNCj4gPiA+PiArICAgICJTQlNBIEdlbmVyaWMgV2F0Y2hkb2ciLA0KPiA+ ID4+ICsgICAgUHRyLA0KPiA+ID4+ICsgICAgTGVuZ3RoLA0KPiA+ID4+ICsgICAgUEFSU0VSX1BB UkFNUyAoU0JTQUdlbmVyaWNXYXRjaGRvZ1BhcnNlcikNCj4gPiA+PiArICAgICk7DQo+ID4gPj4g K30NCj4gPiA+PiArDQo+ID4gPj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgQUNQSSBH VERUIHRhYmxlLg0KPiA+ID4+ICsgIFdoZW4gdHJhY2UgaXMgZW5hYmxlZCB0aGlzIGZ1bmN0aW9u IHBhcnNlcyB0aGUgR1REVCB0YWJsZSBhbmQNCj4gPiA+PiArICB0cmFjZXMgdGhlIEFDUEkgdGFi bGUgZmllbGRzLg0KPiA+ID4+ICsNCj4gPiA+PiArICBUaGlzIGZ1bmN0aW9uIGFsc28gcGFyc2Vz IHRoZSBmb2xsb3dpbmcgcGxhdGZvcm0gdGltZXIgc3RydWN0dXJlczoNCj4gPiA+PiArICAgIC0g R1QgQmxvY2sgdGltZXINCj4gPiA+PiArICAgIC0gV2F0Y2hkb2cgdGltZXINCj4gPiA+PiArDQo+ ID4gPj4gKyAgVGhpcyBmdW5jdGlvbiBhbHNvIHBlcmZvcm1zIHZhbGlkYXRpb24gb2YgdGhlIEFD UEkgdGFibGUgZmllbGRzLg0KPiA+ID4+ICsNCj4gPiA+PiArICBAcGFyYW0gW2luXSBUcmFjZSAg ICAgICAgICAgICAgSWYgVFJVRSwgdHJhY2UgdGhlIEFDUEkgZmllbGRzLg0KPiA+ID4+ICsgIEBw YXJhbSBbaW5dIFB0ciAgICAgICAgICAgICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUg YnVmZmVyLg0KPiA+ID4+ICsgIEBwYXJhbSBbaW5dIEFjcGlUYWJsZUxlbmd0aCAgICBMZW5ndGgg b2YgdGhlIEFDUEkgdGFibGUuDQo+ID4gPj4gKyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxlUmV2aXNp b24gIFJldmlzaW9uIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiA+ID4+ICsqLw0KPiA+ID4+ICtWT0lE DQo+ID4gPj4gK0VGSUFQSQ0KPiA+ID4+ICtQYXJzZUFjcGlHdGR0ICgNCj4gPiA+PiArICBJTiBC T09MRUFOIFRyYWNlLA0KPiA+ID4+ICsgIElOIFVJTlQ4KiAgUHRyLA0KPiA+ID4+ICsgIElOIFVJ TlQzMiAgQWNwaVRhYmxlTGVuZ3RoLA0KPiA+ID4+ICsgIElOIFVJTlQ4ICAgQWNwaVRhYmxlUmV2 aXNpb24NCj4gPiA+PiArICApDQo+ID4gPj4gK3sNCj4gPiA+PiArICBVSU5UMzIgSW5kZXg7DQo+ ID4gPj4gKyAgVUlOVDgqIFRpbWVyUHRyOw0KPiA+ID4+ICsNCj4gPiA+PiArICBpZiAoIVRyYWNl KSB7DQo+ID4gPj4gKyAgICByZXR1cm47DQo+ID4gPj4gKyAgfQ0KPiA+ID4+ICsNCj4gPiA+PiAr ICBQYXJzZUFjcGkgKA0KPiA+ID4+ICsgICAgVFJVRSwNCj4gPiA+PiArICAgIDAsDQo+ID4gPj4g KyAgICAiR1REVCIsDQo+ID4gPj4gKyAgICBQdHIsDQo+ID4gPj4gKyAgICBBY3BpVGFibGVMZW5n dGgsDQo+ID4gPj4gKyAgICBQQVJTRVJfUEFSQU1TIChHdGR0UGFyc2VyKQ0KPiA+ID4+ICsgICAg KTsNCj4gPiA+PiArDQo+ID4gPj4gKyAgaWYgKCpHdGR0UGxhdGZvcm1UaW1lckNvdW50ICE9IDAp IHsNCj4gPiA+PiArICAgIFRpbWVyUHRyID0gUHRyICsgKCpHdGR0UGxhdGZvcm1UaW1lck9mZnNl dCk7DQo+ID4gPj4gKyAgICBJbmRleCA9IDA7DQo+ID4gPj4gKyAgICBkbyB7DQo+ID4gPj4gKyAg ICAgIC8vIFBhcnNlIHRoZSBQbGF0Zm9ybSBUaW1lciBIZWFkZXINCj4gPiA+PiArICAgICAgUGFy c2VBY3BpICgNCj4gPiA+PiArICAgICAgICBGQUxTRSwNCj4gPiA+PiArICAgICAgICAwLA0KPiA+ ID4+ICsgICAgICAgIE5VTEwsDQo+ID4gPj4gKyAgICAgICAgVGltZXJQdHIsDQo+ID4gPj4gKyAg ICAgICAgNCwgIC8vIEdUIFBsYXRmb3JtIFRpbWVyIHN0cnVjdHVyZSBoZWFkZXIgbGVuZ3RoLg0K PiA+ID4+ICsgICAgICAgIFBBUlNFUl9QQVJBTVMgKEd0UGxhdGZvcm1UaW1lckhlYWRlclBhcnNl cikNCj4gPiA+PiArICAgICAgICApOw0KPiA+ID4+ICsgICAgICBzd2l0Y2ggKCpQbGF0Zm9ybVRp bWVyVHlwZSkgew0KPiA+ID4+ICsgICAgICAgIGNhc2UgRUZJX0FDUElfNl8yX0dURFRfR1RfQkxP Q0s6DQo+ID4gPj4gKyAgICAgICAgICBEdW1wR1RCbG9jayAoVGltZXJQdHIsICpQbGF0Zm9ybVRp bWVyTGVuZ3RoKTsNCj4gPiA+PiArICAgICAgICAgIGJyZWFrOw0KPiA+ID4+ICsgICAgICAgIGNh c2UgRUZJX0FDUElfNl8yX0dURFRfU0JTQV9HRU5FUklDX1dBVENIRE9HOg0KPiA+ID4+ICsgICAg ICAgICAgRHVtcFdhdGNoZG9nVGltZXIgKFRpbWVyUHRyLCAqUGxhdGZvcm1UaW1lckxlbmd0aCk7 DQo+ID4gPj4gKyAgICAgICAgICBicmVhazsNCj4gPiA+PiArICAgICAgICBkZWZhdWx0Og0KPiA+ ID4+ICsgICAgICAgICAgSW5jcmVtZW50RXJyb3JDb3VudCAoKTsNCj4gPiA+PiArICAgICAgICAg IFByaW50ICgNCj4gPiA+PiArICAgICAgICAgICAgTCJFUlJPUjogSU5WQUxJRCBQbGF0Zm9ybSBU aW1lciBUeXBlID0gJWRcbiIsDQo+ID4gPj4gKyAgICAgICAgICAgICpQbGF0Zm9ybVRpbWVyVHlw ZQ0KPiA+ID4+ICsgICAgICAgICAgICApOw0KPiA+ID4+ICsgICAgICAgICAgYnJlYWs7DQo+ID4g Pj4gKyAgICAgIH0gLy8gc3dpdGNoDQo+ID4gPj4gKyAgICAgIFRpbWVyUHRyICs9ICgqUGxhdGZv cm1UaW1lckxlbmd0aCk7DQo+ID4gPj4gKyAgICAgIEluZGV4Kys7DQo+ID4gPj4gKyAgICB9IHdo aWxlIChJbmRleCA8ICpHdGR0UGxhdGZvcm1UaW1lckNvdW50KTsNCj4gPiA+PiArICB9DQo+ID4g Pj4gK30NCj4gPiA+PiArDQo+ID4gPj4gKy8qKiBSZWdpc3RlciB0aGUgcGFyc2VyLg0KPiA+ID4+ ICsNCj4gPiA+PiArICBAcGFyYW0gW2luXSAgSW1hZ2VIYW5kbGUgIFRoZSBoYW5kbGUgdG8gdGhl IGltYWdlLg0KPiA+ID4+ICsgIEBwYXJhbSBbaW5dICBTeXN0ZW1UYWJsZSAgUG9pbnRlciB0byB0 aGUgU3lzdGVtIFRhYmxlLg0KPiA+ID4+ICsNCj4gPiA+PiArICBAcmV0dmFsIEVGSV9TVUNDRVNT ICAgICAgICAgICBUaGUgcGFyc2VyIGlzIHJlZ2lzdGVyZWQuDQo+ID4gPj4gKyAgQHJldHZhbCBF RklfQUxSRUFEWV9TVEFSVEVEICAgVGhlIHBhcnNlciBmb3IgdGhlIEFDUEkgVGFibGUNCj4gPiA+ PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YXMgYWxyZWFkeSByZWdpc3RlcmVk Lg0KPiA+ID4+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSIEEgcGFyYW1ldGVyIGlz IGludmFsaWQNCj4gPiA+PiArICBAcmV0dmFsIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTICBObyBzcGFj ZSB0byByZWdpc3RlciB0aGUNCj4gPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBwYXJzZXIuDQo+ID4gPj4gKyovDQo+ID4gPj4gK0VGSV9TVEFUVVMNCj4gPiA+PiArRUZJQVBJ DQo+ID4gPj4gK0d0ZHRQYXJzZXJMaWJDb25zdHJ1Y3RvciAoDQo+ID4gPj4gKyAgSU4gQ09OU1Qg RUZJX0hBTkRMRSAgICAgICAgICAgICAgICBJbWFnZUhhbmRsZSwNCj4gPiA+PiArICBJTiAgICAg ICBFRklfU1lTVEVNX1RBQkxFICAqIENPTlNUIFN5c3RlbVRhYmxlDQo+ID4gPj4gKyAgKQ0KPiA+ ID4+ICt7DQo+ID4gPj4gKyAgcmV0dXJuIFJlZ2lzdGVyUGFyc2VyICgNCj4gPiA+PiArDQo+ID4g RUZJX0FDUElfNl8yX0dFTkVSSUNfVElNRVJfREVTQ1JJUFRJT05fVEFCTEVfU0lHTkFUVVJFLA0K PiA+ID4+ICsgICAgICAgICAgIFBhcnNlQWNwaUd0ZHQNCj4gPiA+PiArICAgICAgICAgICApOw0K PiA+ID4+ICt9DQo+ID4gPj4gKw0KPiA+ID4+ICsvKiogRGVyZWdpc3RlciB0aGUgcGFyc2VyLg0K PiA+ID4+ICsNCj4gPiA+PiArICBAcGFyYW0gW2luXSAgSW1hZ2VIYW5kbGUgIFRoZSBoYW5kbGUg dG8gdGhlIGltYWdlLg0KPiA+ID4+ICsgIEBwYXJhbSBbaW5dICBTeXN0ZW1UYWJsZSAgUG9pbnRl ciB0byB0aGUgU3lzdGVtIFRhYmxlLg0KPiA+ID4+ICsNCj4gPiA+PiArICBAcmV0dmFsIEVGSV9T VUNDRVNTICAgICAgICAgICBUaGUgcGFyc2VyIGlzIGRlcmVnaXN0ZXJlZC4NCj4gPiA+PiArICBA cmV0dmFsIEVGSV9OT1RfRk9VTkQgICAgICAgICBUaGUgcGFyc2VyIHdhcyBub3QgcmVnaXN0ZXJl ZC4NCj4gPiA+PiArKi8NCj4gPiA+PiArRUZJX1NUQVRVUw0KPiA+ID4+ICtFRklBUEkNCj4gPiA+ PiArR3RkdFBhcnNlckxpYkRlc3RydWN0b3IgKA0KPiA+ID4+ICsgIElOIENPTlNUIEVGSV9IQU5E TEUgICAgICAgICAgICAgICAgSW1hZ2VIYW5kbGUsDQo+ID4gPj4gKyAgSU4gICAgICAgRUZJX1NZ U1RFTV9UQUJMRSAgKiBDT05TVCBTeXN0ZW1UYWJsZQ0KPiA+ID4+ICsgICkNCj4gPiA+PiArew0K PiA+ID4+ICsgIHJldHVybiBEZXJlZ2lzdGVyUGFyc2VyICgNCj4gPiA+PiArDQo+ID4gRUZJX0FD UElfNl8yX0dFTkVSSUNfVElNRVJfREVTQ1JJUFRJT05fVEFCTEVfU0lHTkFUVVJFDQo+ID4gPj4g KyAgICAgICAgICAgKTsNCj4gPiA+PiArfQ0KPiA+ID4+IGRpZmYgLS1naXQNCj4gPg0KPiBhL1No ZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvR3RkdC9H dGR0UGFyc2VyDQo+IExpYi5pDQo+ID4gbmYNCj4gPg0KPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVm aVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvR3RkdC9HdGR0UGFyc2VyDQo+IExpYi5p DQo+ID4gbmYNCj4gPiA+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+ID4+IGluZGV4DQo+ID4g MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGIxZTlkOTlmMjM1M2U3 ZTY5NmY2Zg0KPiA+IDBmYzcxNmQ0MmIyNGJmZWI5ZQ0KPiA+ID4+IC0tLSAvZGV2L251bGwNCj4g PiA+PiArKysNCj4gPg0KPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21t YW5kTGliL1BhcnNlcnMvR3RkdC9HdGR0UGFyc2VyDQo+IExpYi5pDQo+ID4gbmYNCj4gPiA+PiBA QCAtMCwwICsxLDMzIEBADQo+ID4gPj4gKyMjIEBmaWxlDQo+ID4gPj4gKyMNCj4gPiA+PiArIyAg Q29weXJpZ2h0IChjKSAyMDE3IC0gMjAxOCwgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2 ZWQuDQo+ID4gPj4gKyMNCj4gPiA+PiArIyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55 aW5nIG1hdGVyaWFscw0KPiA+ID4+ICsjICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxl IHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZg0KPiB0aGUNCj4gPiBCU0QgTGljZW5z ZQ0KPiA+ID4+ICsjICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBm dWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5DQo+IGJlDQo+ID4gZm91bmQgYXQNCj4gPiA+PiAr IyAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiA+ID4+ ICsjDQo+ID4gPj4gKyMgIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0Qg TElDRU5TRSBPTiBBTiAiQVMNCj4gSVMiDQo+ID4gQkFTSVMsDQo+ID4gPj4gKyMgIFdJVEhPVVQg V0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUg0KPiA+IEVY UFJFU1MgT1IgSU1QTElFRC4NCj4gPiA+PiArIyMNCj4gPiA+PiArDQo+ID4gPj4gK1tEZWZpbmVz XQ0KPiA+ID4+ICsgIElORl9WRVJTSU9OICAgID0gMHgwMDAxMDAxOQ0KPiA+ID4+ICsgIEJBU0Vf TkFNRSAgICAgID0gR3RkdFBhcnNlckxpYg0KPiA+ID4+ICsgIEZJTEVfR1VJRCAgICAgID0gNDYz OEE1NzItNTlDMC00QUFGLUI5OTAtQjk1RkE2N0Q5NjU2DQo+ID4gPj4gKyAgVkVSU0lPTl9TVFJJ TkcgPSAxLjANCj4gPiA+PiArICBNT0RVTEVfVFlQRSAgICA9IERYRV9EUklWRVINCj4gPiA+PiAr ICBMSUJSQVJZX0NMQVNTICA9IE5VTEx8RFhFX0RSSVZFUg0KPiA+ID4+ICsgIENPTlNUUlVDVE9S ICAgID0gR3RkdFBhcnNlckxpYkNvbnN0cnVjdG9yDQo+ID4gPj4gKyAgREVTVFJVQ1RPUiAgICAg PSBHdGR0UGFyc2VyTGliRGVzdHJ1Y3Rvcg0KPiA+ID4+ICsNCj4gPiA+PiArW1NvdXJjZXNdDQo+ ID4gPj4gKyAgR3RkdFBhcnNlci5jDQo+ID4gPj4gKw0KPiA+ID4+ICtbUGFja2FnZXNdDQo+ID4g Pj4gKyAgTWRlUGtnL01kZVBrZy5kZWMNCj4gPiA+PiArICBTaGVsbFBrZy9TaGVsbFBrZy5kZWMN Cj4gPiA+PiArICBNZGVNb2R1bGVQa2cvTWRlTW9kdWxlUGtnLmRlYw0KPiA+ID4+ICsNCj4gPiA+ PiArW0xpYnJhcnlDbGFzc2VzXQ0KPiA+ID4+ICsgIFNoZWxsQWNwaVZpZXdDb21tYW5kTGliDQo+ ID4gPj4gZGlmZiAtLWdpdA0KPiA+DQo+IGEvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3Bp Vmlld0NvbW1hbmRMaWIvUGFyc2Vycy9Jb3J0L0lvcnRQYXJzZXIuYw0KPiA+DQo+IGIvU2hlbGxQ a2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9Jb3J0L0lvcnRQ YXJzZXIuYw0KPiA+ID4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gPj4gaW5kZXgNCj4gPiAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNWIyNTcxMjgyYzA0MjU3 YTAxMGINCj4gPiBmNmM4MDBhY2Y3MTQwZDAyODNiDQo+ID4gPj4gLS0tIC9kZXYvbnVsbA0KPiA+ ID4+ICsrKw0KPiA+DQo+IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1h bmRMaWIvUGFyc2Vycy9Jb3J0L0lvcnRQYXJzZXIuYw0KPiA+ID4+IEBAIC0wLDAgKzEsNzQ1IEBA DQo+ID4gPj4gKy8qKg0KPiA+ID4+ICsgIElPUlQgdGFibGUgcGFyc2VyDQo+ID4gPj4gKw0KPiA+ ID4+ICsgIENvcHlyaWdodCAoYykgMjAxNiAtIDIwMTgsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRz IHJlc2VydmVkLg0KPiA+ID4+ICsgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBt YXRlcmlhbHMNCj4gPiA+PiArICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVy IHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZg0KPiB0aGUNCj4gPiBCU0QgTGljZW5zZQ0KPiA+ ID4+ICsgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4 dCBvZiB0aGUgbGljZW5zZSBtYXkNCj4gYmUNCj4gPiBmb3VuZCBhdA0KPiA+ID4+ICsgIGh0dHA6 Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4gPiA+PiArDQo+ID4g Pj4gKyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9O IEFOICJBUw0KPiBJUyINCj4gPiBCQVNJUywNCj4gPiA+PiArICBXSVRIT1VUIFdBUlJBTlRJRVMg T1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVINCj4gPiBFWFBSRVNTIE9SIElN UExJRUQuDQo+ID4gPj4gKw0KPiA+ID4+ICsgIEBwYXIgUmVmZXJlbmNlKHMpOg0KPiA+ID4+ICsg ICAgLSBJTyBSZW1hcHBpbmcgVGFibGUsIFBsYXRmb3JtIERlc2lnbiBEb2N1bWVudCwgUmV2aXNp b24gQywgMTUNCj4gTWF5DQo+ID4gMjAxNw0KPiA+ID4+ICsqKi8NCj4gPiA+PiArDQo+ID4gPj4g KyNpbmNsdWRlIDxJbmR1c3RyeVN0YW5kYXJkL0lvUmVtYXBwaW5nVGFibGUuaD4NCj4gPiA+PiAr I2luY2x1ZGUgPExpYnJhcnkvUHJpbnRMaWIuaD4NCj4gPiA+PiArI2luY2x1ZGUgPExpYnJhcnkv VWVmaUxpYi5oPg0KPiA+ID4+ICsjaW5jbHVkZSA8TGlicmFyeS9BY3BpVmlldy9BY3BpUGFyc2Vy Lmg+DQo+ID4gPj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0FjcGlWaWV3L0FjcGlUYWJsZVBhcnNlci5o Pg0KPiA+ID4+ICsNCj4gPiA+PiArLy8gTG9jYWwgdmFyaWFibGVzDQo+ID4gPj4gK1NUQVRJQyBB Q1BJX0RFU0NSSVBUSU9OX0hFQURFUl9JTkZPIEFjcGlIZHJJbmZvOw0KPiA+ID4+ICsNCj4gPiA+ PiArLyoqIFRoZSBFSU9SVF9OT0RFIGVudW0gZGVzY3JpYmVzIHRoZSBJT1JUIE5vZGUgdHlwZXMu DQo+ID4gPj4gKyovDQo+ID4gPj4gK3R5cGVkZWYgZW51bSBJb3J0Tm9kZSB7DQo+ID4gPj4gKyAg RUlPUlRfTk9ERV9JVFNfR1JPVVAsICAgICAgICAvLy88IElUUyBHcm91cCBub2RlDQo+ID4gPj4g KyAgRUlPUlRfTk9ERV9OQU1FRF9DT01QT05FTlQsICAvLy88IE5hbWVkIENvbXBvbmVudCBub2Rl DQo+ID4gPj4gKyAgRUlPUlRfTk9ERV9ST09UX0NPTVBMRVgsICAgICAvLy88IFJvb3QgQ29tcGxl eCBub2RlDQo+ID4gPj4gKyAgRUlPUlRfTk9ERV9TTU1VVjFfVjIsICAgICAgICAvLy88IFNNTVUg djEvdjIgbm9kZQ0KPiA+ID4+ICsgIEVJT1JUX05PREVfU01NVVYzLCAgICAgICAgICAgLy8vPCBT TU1VIHYzIG5vZGUNCj4gPiA+PiArICBFSU9SVF9OT0RFX1BNQ0csICAgICAgICAgICAgIC8vLzwg UE1DIGdyb3VwIG5vZGUNCj4gPiA+PiArICBFSU9SVF9OT0RFX01BWA0KPiA+ID4+ICt9IEVJT1JU X05PREU7DQo+ID4gPj4gKw0KPiA+ID4+ICsvLyBMb2NhbCBWYXJpYWJsZXMNCj4gPiA+PiArU1RB VElDIENPTlNUIFVJTlQzMiogSW9ydE5vZGVDb3VudDsNCj4gPiA+PiArU1RBVElDIENPTlNUIFVJ TlQzMiogSW9ydE5vZGVPZmZzZXQ7DQo+ID4gPj4gKw0KPiA+ID4+ICtTVEFUSUMgQ09OU1QgVUlO VDgqIElvcnROb2RlVHlwZTsNCj4gPiA+PiArU1RBVElDIENPTlNUIFVJTlQxNiogSW9ydE5vZGVM ZW5ndGg7DQo+ID4gPj4gK1NUQVRJQyBDT05TVCBVSU5UMzIqIElvcnRJZE1hcHBpbmdDb3VudDsN Cj4gPiA+PiArU1RBVElDIENPTlNUIFVJTlQzMiogSW9ydElkTWFwcGluZ09mZnNldDsNCj4gPiA+ PiArDQo+ID4gPj4gK1NUQVRJQyBDT05TVCBVSU5UMzIqIEludGVycnVwdENvbnRleHRDb3VudDsN Cj4gPiA+PiArU1RBVElDIENPTlNUIFVJTlQzMiogSW50ZXJydXB0Q29udGV4dE9mZnNldDsNCj4g PiA+PiArU1RBVElDIENPTlNUIFVJTlQzMiogUG11SW50ZXJydXB0Q291bnQ7DQo+ID4gPj4gK1NU QVRJQyBDT05TVCBVSU5UMzIqIFBtdUludGVycnVwdE9mZnNldDsNCj4gPiA+PiArDQo+ID4gPj4g K1NUQVRJQyBDT05TVCBVSU5UMzIqIEl0c0NvdW50Ow0KPiA+ID4+ICsNCj4gPiA+PiArLyoqIFRo aXMgZnVuY3Rpb24gdmFsaWRhdGVzIHRoZSBJRCBNYXBwaW5nIGFycmF5IGNvdW50IGZvciB0aGUg SVRTDQo+IG5vZGUuDQo+ID4gPj4gKw0KPiA+ID4+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9p bnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGZpZWxkIGRhdGEuDQo+ID4gPj4gKyAgQHBhcmFtIFtp bl0gQ29udGV4dCBQb2ludGVyIHRvIGNvbnRleHQgc3BlY2lmaWMgaW5mb3JtYXRpb24gZS5nLiB0 aGlzDQo+ID4gPj4gKyAgICAgICAgICAgICAgICAgICAgICBjb3VsZCBiZSBhIHBvaW50ZXIgdG8g dGhlIEFDUEkgdGFibGUgaGVhZGVyLg0KPiA+ID4+ICsqLw0KPiA+ID4+ICtTVEFUSUMNCj4gPiA+ PiArVk9JRA0KPiA+ID4+ICtFRklBUEkNCj4gPiA+PiArVmFsaWRhdGVJdHNJZE1hcHBpbmdDb3Vu dCAoDQo+ID4gPj4gKyAgSU4gVUlOVDgqIFB0ciwNCj4gPiA+PiArICBJTiBWT0lEKiAgQ29udGV4 dA0KPiA+ID4+ICsgICk7DQo+ID4gPj4gKw0KPiA+ID4+ICsvKiogVGhpcyBmdW5jdGlvbiB2YWxp ZGF0ZXMgdGhlIElEIE1hcHBpbmcgYXJyYXkgb2Zmc2V0IGZvciB0aGUgSVRTDQo+IG5vZGUuDQo+ ID4gPj4gKw0KPiA+ID4+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3Rh cnQgb2YgdGhlIGZpZWxkIGRhdGEuDQo+ID4gPj4gKyAgQHBhcmFtIFtpbl0gQ29udGV4dCBQb2lu dGVyIHRvIGNvbnRleHQgc3BlY2lmaWMgaW5mb3JtYXRpb24gZS5nLiB0aGlzDQo+ID4gPj4gKyAg ICAgICAgICAgICAgICAgICAgICBjb3VsZCBiZSBhIHBvaW50ZXIgdG8gdGhlIEFDUEkgdGFibGUg aGVhZGVyLg0KPiA+ID4+ICsqLw0KPiA+ID4+ICtTVEFUSUMNCj4gPiA+PiArVk9JRA0KPiA+ID4+ ICtFRklBUEkNCj4gPiA+PiArVmFsaWRhdGVJdHNJZEFycmF5UmVmZXJlbmNlICgNCj4gPiA+PiAr ICBJTiBVSU5UOCogUHRyLA0KPiA+ID4+ICsgIElOIFZPSUQqICBDb250ZXh0DQo+ID4gPj4gKyAg KTsNCj4gPiA+PiArDQo+ID4gPj4gKy8qKiBIZWxwZXIgTWFjcm8gZm9yIHBvcHVsYXRpbmcgdGhl IElPUlQgTm9kZSBoZWFkZXIgaW4gdGhlDQo+IEFDUElfUEFSU0VSDQo+ID4gPj4gKyAgICBhcnJh eS4NCj4gPiA+PiArDQo+ID4gPj4gKyAgQHBhcmFtIFtvdXRdIFZhbGlkYXRlSWRNYXBwaW5nQ291 bnQgICAgT3B0aW9uYWwgcG9pbnRlciB0byBhDQo+ID4gZnVuY3Rpb24gZm9yDQo+ID4gPj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGluZyB0aGUgSUQg TWFwcGluZw0KPiA+IGNvdW50Lg0KPiA+ID4+ICsgIEBwYXJhbSBbb3V0XSBWYWxpZGF0ZUlkQXJy YXlSZWZlcmVuY2UgIE9wdGlvbmFsIHBvaW50ZXIgdG8gYQ0KPiBmdW5jdGlvbg0KPiA+IGZvcg0K PiA+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRp bmcgdGhlIElEIEFycmF5DQo+ID4gcmVmZXJlbmNlLg0KPiA+ID4+ICsqLw0KPiA+ID4+ICsjZGVm aW5lIFBBUlNFX0lPUlRfTk9ERV9IRUFERVIoVmFsaWRhdGVJZE1hcHBpbmdDb3VudCwNCj4gPiBc DQo+ID4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZUlkQXJyYXlS ZWZlcmVuY2UpDQo+ID4gXA0KPiA+ID4+ICsgIHsgTCJUeXBlIiwgMSwgMCwgTCIlZCIsIE5VTEws IChWT0lEKiopJklvcnROb2RlVHlwZSwgTlVMTCwgTlVMTCB9LA0KPiA+IFwNCj4gPiA+PiArICB7 IEwiTGVuZ3RoIiwgMiwgMSwgTCIlZCIsIE5VTEwsIChWT0lEKiopJklvcnROb2RlTGVuZ3RoLCBO VUxMLA0KPiBOVUxMIH0sDQo+ID4gXA0KPiA+ID4+ICsgIHsgTCJSZXZpc2lvbiIsIDEsIDMsIEwi JWQiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMIH0sDQo+ID4gXA0KPiA+ID4+ICsgIHsgTCJSZXNl cnZlZCIsIDQsIDQsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwgfSwNCj4gPiBcDQo+ ID4gPj4gKyAgeyBMIk51bWJlciBvZiBJRCBtYXBwaW5ncyIsIDQsIDgsIEwiJWQiLCBOVUxMLA0K PiA+IFwNCj4gPiA+PiArICAgIChWT0lEKiopJklvcnRJZE1hcHBpbmdDb3VudCwgVmFsaWRhdGVJ ZE1hcHBpbmdDb3VudCwgTlVMTCB9LA0KPiA+IFwNCj4gPiA+PiArICB7IEwiUmVmZXJlbmNlIHRv IElEIEFycmF5IiwgNCwgMTIsIEwiMHgleCIsIE5VTEwsDQo+ID4gXA0KPiA+ID4+ICsgICAgKFZP SUQqKikmSW9ydElkTWFwcGluZ09mZnNldCwgVmFsaWRhdGVJZEFycmF5UmVmZXJlbmNlLCBOVUxM IH0NCj4gPiA+PiArDQo+ID4gPj4gKy8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5n IHRoZSBBQ1BJIElPUlQgVGFibGUNCj4gPiA+PiArKi8NCj4gPiA+PiArU1RBVElDIENPTlNUIEFD UElfUEFSU0VSIElvcnRQYXJzZXJbXSA9IHsNCj4gPiA+PiArICBQQVJTRV9BQ1BJX0hFQURFUiAo JkFjcGlIZHJJbmZvKSwNCj4gPiA+PiArICB7TCJOdW1iZXIgb2YgSU9SVCBOb2RlcyIsIDQsIDM2 LCBMIiVkIiwgTlVMTCwNCj4gPiA+PiArICAgKFZPSUQqKikmSW9ydE5vZGVDb3VudCwgTlVMTCwg TlVMTH0sDQo+ID4gPj4gKyAge0wiT2Zmc2V0IHRvIEFycmF5IG9mIElPUlQgTm9kZXMiLCA0LCA0 MCwgTCIweCV4IiwgTlVMTCwNCj4gPiA+PiArICAgKFZPSUQqKikmSW9ydE5vZGVPZmZzZXQsIE5V TEwsIE5VTEx9LA0KPiA+ID4+ICsgIHtMIlJlc2VydmVkIiwgNCwgNDQsIEwiMHgleCIsIE5VTEws IE5VTEwsIE5VTEwsIE5VTEx9DQo+ID4gPj4gK307DQo+ID4gPj4gKw0KPiA+ID4+ICsvKiogQW4g QUNQSV9QQVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0aGUgSU9SVCBub2RlIGhlYWRlciBzdHJ1Y3R1 cmUuDQo+ID4gPj4gKyovDQo+ID4gPj4gK1NUQVRJQyBDT05TVCBBQ1BJX1BBUlNFUiBJb3J0Tm9k ZUhlYWRlclBhcnNlcltdID0gew0KPiA+ID4+ICsgIFBBUlNFX0lPUlRfTk9ERV9IRUFERVIgKE5V TEwsIE5VTEwpDQo+ID4gPj4gK307DQo+ID4gPj4gKw0KPiA+ID4+ICsvKiogQW4gQUNQSV9QQVJT RVIgYXJyYXkgZGVzY3JpYmluZyB0aGUgSU9SVCBTTU1VdjEvMiBub2RlLg0KPiA+ID4+ICsqLw0K PiA+ID4+ICtTVEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgSW9ydE5vZGVTbW11VjFWMlBhcnNlcltd ID0gew0KPiA+ID4+ICsgIFBBUlNFX0lPUlRfTk9ERV9IRUFERVIgKE5VTEwsIE5VTEwpLA0KPiA+ ID4+ICsgIHtMIkJhc2UgQWRkcmVzcyIsIDgsIDE2LCBMIjB4JWx4IiwgTlVMTCwgTlVMTCwgTlVM TCwgTlVMTH0sDQo+ID4gPj4gKyAge0wiU3BhbiIsIDgsIDI0LCBMIjB4JWx4IiwgTlVMTCwgTlVM TCwgTlVMTCwgTlVMTH0sDQo+ID4gPj4gKyAge0wiTW9kZWwiLCA0LCAzMiwgTCIlZCIsIE5VTEws IE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ID4+ICsgIHtMIkZsYWdzIiwgNCwgMzYsIEwiMHgleCIs IE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ID4+ICsgIHtMIlJlZmVyZW5jZSB0byBHbG9i YWwgSW50ZXJydXB0IEFycmF5IiwgNCwgNDAsIEwiMHgleCIsIE5VTEwsIE5VTEwsDQo+ID4gTlVM TCwNCj4gPiA+PiArICAgTlVMTH0sDQo+ID4gPj4gKyAge0wiTnVtYmVyIG9mIGNvbnRleHQgaW50 ZXJydXB0cyIsIDQsIDQ0LCBMIiVkIiwgTlVMTCwNCj4gPiA+PiArICAgKFZPSUQqKikmSW50ZXJy dXB0Q29udGV4dENvdW50LCBOVUxMLCBOVUxMfSwNCj4gPiA+PiArICB7TCJSZWZlcmVuY2UgdG8g Q29udGV4dCBJbnRlcnJ1cHQgQXJyYXkiLCA0LCA0OCwgTCIweCV4IiwgTlVMTCwNCj4gPiA+PiAr ICAgKFZPSUQqKikmSW50ZXJydXB0Q29udGV4dE9mZnNldCwgTlVMTCwgTlVMTH0sDQo+ID4gPj4g KyAge0wiTnVtYmVyIG9mIFBNVSBJbnRlcnJ1cHRzIiwgNCwgNTIsIEwiJWQiLCBOVUxMLA0KPiA+ ID4+ICsgICAoVk9JRCoqKSZQbXVJbnRlcnJ1cHRDb3VudCwgTlVMTCwgTlVMTH0sDQo+ID4gPj4g KyAge0wiUmVmZXJlbmNlIHRvIFBNVSBJbnRlcnJ1cHQgQXJyYXkiLCA0LCA1NiwgTCIweCV4Iiwg TlVMTCwNCj4gPiA+PiArICAgKFZPSUQqKikmUG11SW50ZXJydXB0T2Zmc2V0LCBOVUxMLCBOVUxM fSwNCj4gPiA+PiArDQo+ID4gPj4gKyAgLy8gSW50ZXJydXB0IEFycmF5DQo+ID4gPj4gKyAge0wi U01NVV9OU2dJcnB0IiwgNCwgNjAsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0K PiA+ID4+ICsgIHtMIlNNTVVfTlNnSXJwdCBpbnRlcnJ1cHQgZmxhZ3MiLCA0LCA2NCwgTCIweCV4 IiwgTlVMTCwgTlVMTCwgTlVMTCwNCj4gPiBOVUxMfSwNCj4gPiA+PiArICB7TCJTTU1VX05TZ0Nm Z0lycHQiLCA0LCA2OCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4gPj4g KyAge0wiU01NVV9OU2dDZmdJcnB0IGludGVycnVwdCBmbGFncyIsIDQsIDcyLCBMIjB4JXgiLCBO VUxMLCBOVUxMLA0KPiBOVUxMLA0KPiA+IE5VTEx9DQo+ID4gPj4gK307DQo+ID4gPj4gKw0KPiA+ ID4+ICsvKiogQW4gQUNQSV9QQVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0aGUgU01NVXYxLzIgTm9k ZSBJbnRlcnJ1cHQNCj4gQXJyYXkuDQo+ID4gPj4gKyovDQo+ID4gPj4gK1NUQVRJQyBDT05TVCBB Q1BJX1BBUlNFUiBJbnRlcnJ1cHRBcnJheVBhcnNlcltdID0gew0KPiA+ID4+ICsgIHtMIiAgSW50 ZXJydXB0IEdTSVYiLCA0LCAwLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4g PiA+PiArICB7TCIgIEZsYWdzIiwgNCwgNCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVM TH0NCj4gPiA+PiArfTsNCj4gPiA+PiArDQo+ID4gPj4gKy8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJh eSBkZXNjcmliaW5nIHRoZSBJT1JUIElEIE1hcHBpbmcuDQo+ID4gPj4gKyovDQo+ID4gPj4gK1NU QVRJQyBDT05TVCBBQ1BJX1BBUlNFUiBJb3J0Tm9kZUlkTWFwcGluZ1BhcnNlcltdID0gew0KPiA+ ID4+ICsgIHtMIiAgSW5wdXQgYmFzZSIsIDQsIDAsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEws IE5VTEx9LA0KPiA+ID4+ICsgIHtMIiAgTnVtYmVyIG9mIElEcyIsIDQsIDQsIEwiMHgleCIsIE5V TEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ID4+ICsgIHtMIiAgT3V0cHV0IGJhc2UiLCA0LCA4 LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPiA+PiArICB7TCIgIE91dHB1 dCByZWZlcmVuY2UiLCA0LCAxMiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ ID4gPj4gKyAge0wiICBGbGFncyIsIDQsIDE2LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBO VUxMfQ0KPiA+ID4+ICt9Ow0KPiA+ID4+ICsNCj4gPiA+PiArLyoqIEFuIEFDUElfUEFSU0VSIGFy cmF5IGRlc2NyaWJpbmcgdGhlIElPUlQgU01NVXYzIG5vZGUuDQo+ID4gPj4gKyovDQo+ID4gPj4g K1NUQVRJQyBDT05TVCBBQ1BJX1BBUlNFUiBJb3J0Tm9kZVNtbXVWM1BhcnNlcltdID0gew0KPiA+ ID4+ICsgIFBBUlNFX0lPUlRfTk9ERV9IRUFERVIgKE5VTEwsIE5VTEwpLA0KPiA+ID4+ICsgIHtM IkJhc2UgQWRkcmVzcyIsIDgsIDE2LCBMIjB4JWx4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0s DQo+ID4gPj4gKyAge0wiRmxhZ3MiLCA0LCAyNCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwg TlVMTH0sDQo+ID4gPj4gKyAge0wiUmVzZXJ2ZWQiLCA0LCAyOCwgTCIweCV4IiwgTlVMTCwgTlVM TCwgTlVMTCwgTlVMTH0sDQo+ID4gPj4gKyAge0wiVkFUT1MgQWRkcmVzcyIsIDgsIDMyLCBMIjB4 JWx4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4gPj4gKyAge0wiTW9kZWwiLCA0LCA0 MCwgTCIlZCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ID4+ICsgIHtMIkV2ZW50Iiwg NCwgNDQsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ID4+ICsgIHtMIlBS SSIsIDQsIDQ4LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPiA+PiArICB7 TCJHRVJSIiwgNCwgNTIsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ID4+ ICsgIHtMIlN5bmMiLCA0LCA1NiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0NCj4g PiA+PiArfTsNCj4gPiA+PiArDQo+ID4gPj4gKy8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNj cmliaW5nIHRoZSBJT1JUIElUUyBub2RlLg0KPiA+ID4+ICsqLw0KPiA+ID4+ICtTVEFUSUMgQ09O U1QgQUNQSV9QQVJTRVIgSW9ydE5vZGVJdHNQYXJzZXJbXSA9IHsNCj4gPiA+PiArICBQQVJTRV9J T1JUX05PREVfSEVBREVSICgNCj4gPiA+PiArICAgIFZhbGlkYXRlSXRzSWRNYXBwaW5nQ291bnQs DQo+ID4gPj4gKyAgICBWYWxpZGF0ZUl0c0lkQXJyYXlSZWZlcmVuY2UNCj4gPiA+PiArICAgICks DQo+ID4gPj4gKyAge0wiICBOdW1iZXIgb2YgSVRTcyIsIDQsIDE2LCBMIiVkIiwgTlVMTCwgKFZP SUQqKikmSXRzQ291bnQsIE5VTEx9DQo+ID4gPj4gK307DQo+ID4gPj4gKw0KPiA+ID4+ICsvKiog QW4gQUNQSV9QQVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0aGUgSVRTIElELg0KPiA+ID4+ICsqLw0K PiA+ID4+ICtTVEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgSXRzSWRQYXJzZXJbXSA9IHsNCj4gPiA+ PiArICB7IEwiICBHSUMgSVRTIElkZW50aWZpZXIiLCA0LCAwLCBMIiVkIiwgTlVMTCwgTlVMTCwg TlVMTCB9DQo+ID4gPj4gK307DQo+ID4gPj4gKw0KPiA+ID4+ICsvKiogQW4gQUNQSV9QQVJTRVIg YXJyYXkgZGVzY3JpYmluZyB0aGUgSU9SVCBOYW1lcyBDb21wb25lbnQNCj4gbm9kZS4NCj4gPiA+ PiArKi8NCj4gPiA+PiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VSIElvcnROb2RlTmFtZWRDb21w b25lbnRQYXJzZXJbXSA9IHsNCj4gPiA+PiArICBQQVJTRV9JT1JUX05PREVfSEVBREVSIChOVUxM LCBOVUxMKSwNCj4gPiA+PiArICB7TCJOb2RlIEZsYWdzIiwgNCwgMTYsIEwiJWQiLCBOVUxMLCBO VUxMLCBOVUxMLCBOVUxMfSwNCj4gPiA+PiArICB7TCJNZW1vcnkgYWNjZXNzIHByb3BlcnRpZXMi LCA4LCAyMCwgTCIweCVseCIsIE5VTEwsIE5VTEwsIE5VTEwsDQo+IE5VTEx9LA0KPiA+ID4+ICsg IHtMIkRldmljZSBtZW1vcnkgYWRkcmVzcyBzaXplIGxpbWl0IiwgMSwgMjgsIEwiJWQiLCBOVUxM LCBOVUxMLCBOVUxMLA0KPiA+IE5VTEx9DQo+ID4gPj4gK307DQo+ID4gPj4gKw0KPiA+ID4+ICsv KiogQW4gQUNQSV9QQVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0aGUgSU9SVCBSb290IENvbXBsZXgg bm9kZS4NCj4gPiA+PiArKi8NCj4gPiA+PiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VSIElvcnRO b2RlUm9vdENvbXBsZXhQYXJzZXJbXSA9IHsNCj4gPiA+PiArICBQQVJTRV9JT1JUX05PREVfSEVB REVSIChOVUxMLCBOVUxMKSwNCj4gPiA+PiArICB7TCJNZW1vcnkgYWNjZXNzIHByb3BlcnRpZXMi LCA4LCAxNiwgTCIweCVseCIsIE5VTEwsIE5VTEwsIE5VTEwsDQo+IE5VTEx9LA0KPiA+ID4+ICsg IHtMIkFUUyBBdHRyaWJ1dGUiLCA0LCAyNCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVM TH0sDQo+ID4gPj4gKyAge0wiUENJIFNlZ21lbnQgbnVtYmVyIiwgNCwgMjgsIEwiMHgleCIsIE5V TEwsIE5VTEwsIE5VTEwsIE5VTEx9DQo+ID4gPj4gK307DQo+ID4gPj4gKw0KPiA+ID4+ICsvKiog QW4gQUNQSV9QQVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0aGUgSU9SVCBQTUNHIG5vZGUuDQo+ID4g Pj4gKyovDQo+ID4gPj4gK1NUQVRJQyBDT05TVCBBQ1BJX1BBUlNFUiBJb3J0Tm9kZVBtY2dQYXJz ZXJbXSA9IHsNCj4gPiA+PiArICBQQVJTRV9JT1JUX05PREVfSEVBREVSIChOVUxMLCBOVUxMKSwN Cj4gPiA+PiArICB7TCJCYXNlIEFkZHJlc3MiLCA4LCAxNiwgTCIweCVseCIsIE5VTEwsIE5VTEws IE5VTEwsIE5VTEx9LA0KPiA+ID4+ICsgIHtMIk92ZXJmbG93IGludGVycnVwdCBHU0lWIiwgNCwg MjQsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsDQo+IE5VTEx9LA0KPiA+ID4+ICsgIHtMIk5v ZGUgcmVmZXJlbmNlIiwgNCwgMjgsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0K PiA+ID4+ICt9Ow0KPiA+ID4+ICsNCj4gPiA+PiArLyoqIFRoaXMgZnVuY3Rpb24gdmFsaWRhdGVz IHRoZSBJRCBNYXBwaW5nIGFycmF5IGNvdW50IGZvciB0aGUgSVRTDQo+IG5vZGUuDQo+ID4gPj4g Kw0KPiA+ID4+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2Yg dGhlIGZpZWxkIGRhdGEuDQo+ID4gPj4gKyAgQHBhcmFtIFtpbl0gQ29udGV4dCBQb2ludGVyIHRv IGNvbnRleHQgc3BlY2lmaWMgaW5mb3JtYXRpb24gZS5nLiB0aGlzDQo+ID4gPj4gKyAgICAgICAg ICAgICAgICAgICAgICBjb3VsZCBiZSBhIHBvaW50ZXIgdG8gdGhlIEFDUEkgdGFibGUgaGVhZGVy Lg0KPiA+ID4+ICsqLw0KPiA+ID4+ICtTVEFUSUMNCj4gPiA+PiArVk9JRA0KPiA+ID4+ICtFRklB UEkNCj4gPiA+PiArVmFsaWRhdGVJdHNJZE1hcHBpbmdDb3VudCAoDQo+ID4gPj4gKyAgSU4gVUlO VDgqIFB0ciwNCj4gPiA+PiArICBWT0lEKiAgICAgQ29udGV4dA0KPiA+ID4+ICsgICkNCj4gPiA+ PiArew0KPiA+ID4+ICsgIGlmICgqKFVJTlQzMiopUHRyICE9IDApIHsNCj4gPiA+PiArICAgIElu Y3JlbWVudEVycm9yQ291bnQgKCk7DQo+ID4gPj4gKyAgICBQcmludCAoTCJcbkVSUk9SOiBJT1JU IElEIE1hcHBpbmcgY291bnQgbXVzdCBiZSB6ZXJvLiIpOw0KPiA+ID4+ICsgIH0NCj4gPiA+PiAr fQ0KPiA+ID4+ICsNCj4gPiA+PiArLyoqIFRoaXMgZnVuY3Rpb24gdmFsaWRhdGVzIHRoZSBJRCBN YXBwaW5nIGFycmF5IG9mZnNldCBmb3IgdGhlIElUUw0KPiBub2RlLg0KPiA+ID4+ICsNCj4gPiA+ PiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBmaWVs ZCBkYXRhLg0KPiA+ID4+ICsgIEBwYXJhbSBbaW5dIENvbnRleHQgUG9pbnRlciB0byBjb250ZXh0 IHNwZWNpZmljIGluZm9ybWF0aW9uIGUuZy4gdGhpcw0KPiA+ID4+ICsgICAgICAgICAgICAgICAg ICAgICAgY291bGQgYmUgYSBwb2ludGVyIHRvIHRoZSBBQ1BJIHRhYmxlIGhlYWRlci4NCj4gPiA+ PiArKi8NCj4gPiA+PiArU1RBVElDDQo+ID4gPj4gK1ZPSUQNCj4gPiA+PiArRUZJQVBJDQo+ID4g Pj4gK1ZhbGlkYXRlSXRzSWRBcnJheVJlZmVyZW5jZSAoDQo+ID4gPj4gKyAgSU4gVUlOVDgqIFB0 ciwNCj4gPiA+PiArICBJTiBWT0lEKiAgQ29udGV4dA0KPiA+ID4+ICsgICkNCj4gPiA+PiArew0K PiA+ID4+ICsgIGlmICgqKFVJTlQzMiopUHRyICE9IDApIHsNCj4gPiA+PiArICAgIEluY3JlbWVu dEVycm9yQ291bnQgKCk7DQo+ID4gPj4gKyAgICBQcmludCAoTCJcbkVSUk9SOiBJT1JUIElEIE1h cHBpbmcgb2Zmc2V0IG11c3QgYmUgemVyby4iKTsNCj4gPiA+PiArICB9DQo+ID4gPj4gK30NCj4g PiA+PiArDQo+ID4gPj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgSU9SVCBOb2RlIElk IE1hcHBpbmcgYXJyYXkuDQo+ID4gPj4gKw0KPiA+ID4+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAg ICAgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBJT1JUIFRhYmxlLg0KPiA+ID4+ICsg IEBwYXJhbSBbaW5dIE1hcHBpbmdDb3VudCAgIFRoZSBJRCBNYXBwaW5nIGNvdW50Lg0KPiA+ID4+ ICsgIEBwYXJhbSBbaW5dIE1hcHBpbmdPZmZzZXQgIFRoZSBvZmZzZXQgb2YgdGhlIElEIE1hcHBp bmcgYXJyYXkNCj4gPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tIHRoZSBz dGFydCBvZiB0aGUgSU9SVCB0YWJsZS4NCj4gPiA+PiArKi8NCj4gPiA+PiArU1RBVElDDQo+ID4g Pj4gK1ZPSUQNCj4gPiA+PiArRHVtcElvcnROb2RlSWRNYXBwaW5ncyAoDQo+ID4gPj4gKyAgSU4g VUlOVDgqIFB0ciwNCj4gPiA+PiArICBJTiBVSU5UMzIgTWFwcGluZ0NvdW50LA0KPiA+ID4+ICsg IElOIFVJTlQzMiBNYXBwaW5nT2Zmc2V0DQo+ID4gPj4gKyAgKQ0KPiA+ID4+ICt7DQo+ID4gPj4g KyAgVUlOVDgqIElkTWFwcGluZ1B0cjsNCj4gPiA+PiArICBVSU5UMzIgSW5kZXg7DQo+ID4gPj4g KyAgVUlOVDMyIE9mZnNldDsNCj4gPiA+PiArICBDSEFSOCAgQnVmZmVyWzQwXTsgIC8vIFVzZWQg Zm9yIEFzY2lpTmFtZSBwYXJhbSBvZiBQYXJzZUFjcGkNCj4gPiA+PiArDQo+ID4gPj4gKyAgSWRN YXBwaW5nUHRyID0gUHRyICsgTWFwcGluZ09mZnNldDsNCj4gPiA+PiArICBJbmRleCA9IDA7DQo+ ID4gPj4gKyAgd2hpbGUgKEluZGV4IDwgTWFwcGluZ0NvdW50KSB7DQo+ID4gPj4gKyAgICBBc2Np aVNQcmludCAoDQo+ID4gPj4gKyAgICAgIEJ1ZmZlciwNCj4gPiA+PiArICAgICAgc2l6ZW9mIChC dWZmZXIpLA0KPiA+ID4+ICsgICAgICAiSUQgTWFwcGluZyBbJWRdIiwNCj4gPiA+PiArICAgICAg SW5kZXgNCj4gPiA+PiArICAgICAgKTsNCj4gPiA+PiArICAgIE9mZnNldCA9IFBhcnNlQWNwaSAo DQo+ID4gPj4gKyAgICAgICAgICAgICAgIFRSVUUsDQo+ID4gPj4gKyAgICAgICAgICAgICAgIDQs DQo+ID4gPj4gKyAgICAgICAgICAgICAgIEJ1ZmZlciwNCj4gPiA+PiArICAgICAgICAgICAgICAg SWRNYXBwaW5nUHRyLA0KPiA+ID4+ICsgICAgICAgICAgICAgICAyMCwNCj4gPiA+PiArICAgICAg ICAgICAgICAgUEFSU0VSX1BBUkFNUyAoSW9ydE5vZGVJZE1hcHBpbmdQYXJzZXIpDQo+ID4gPj4g KyAgICAgICAgICAgICAgICk7DQo+ID4gPj4gKyAgICBJZE1hcHBpbmdQdHIgKz0gT2Zmc2V0Ow0K PiA+ID4+ICsgICAgSW5kZXgrKzsNCj4gPiA+PiArICB9DQo+ID4gPj4gK30NCj4gPiA+PiArDQo+ ID4gPj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgSU9SVCBTTU1VdjEvMiBub2RlLg0K PiA+ID4+ICsNCj4gPiA+PiArICBAcGFyYW0gW2luXSBQdHIgICAgICAgICAgICBQb2ludGVyIHRv IHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiA+ID4+ICsgIEBwYXJhbSBbaW5dIExlbmd0aCAg ICAgICAgIExlbmd0aCBvZiB0aGUgYnVmZmVyLg0KPiA+ID4+ICsgIEBwYXJhbSBbaW5dIE1hcHBp bmdDb3VudCAgIFRoZSBJRCBNYXBwaW5nIGNvdW50Lg0KPiA+ID4+ICsgIEBwYXJhbSBbaW5dIE1h cHBpbmdPZmZzZXQgIFRoZSBvZmZzZXQgb2YgdGhlIElEIE1hcHBpbmcgYXJyYXkNCj4gPiA+PiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tIHRoZSBzdGFydCBvZiB0aGUgSU9SVCB0 YWJsZS4NCj4gPiA+PiArKi8NCj4gPiA+PiArU1RBVElDDQo+ID4gPj4gK1ZPSUQNCj4gPiA+PiAr RHVtcElvcnROb2RlU21tdVYxVjIgKA0KPiA+ID4+ICsgIElOIFVJTlQ4KiBQdHIsDQo+ID4gPj4g KyAgSU4gVUlOVDE2IExlbmd0aCwNCj4gPiA+PiArICBJTiBVSU5UMzIgTWFwcGluZ0NvdW50LA0K PiA+ID4+ICsgIElOIFVJTlQzMiBNYXBwaW5nT2Zmc2V0DQo+ID4gPj4gKyAgKQ0KPiA+ID4+ICt7 DQo+ID4gPj4gKyAgVUlOVDMyIEluZGV4Ow0KPiA+ID4+ICsgIFVJTlQzMiBPZmZzZXQ7DQo+ID4g Pj4gKyAgQ0hBUjggIEJ1ZmZlcls1MF07ICAvLyBVc2VkIGZvciBBc2NpaU5hbWUgcGFyYW0gb2Yg UGFyc2VBY3BpDQo+ID4gPj4gKw0KPiA+ID4+ICsgIFVJTlQ4KiBBcnJheVB0cjsNCj4gPiA+PiAr DQo+ID4gPj4gKyAgUGFyc2VBY3BpICgNCj4gPiA+PiArICAgIFRSVUUsDQo+ID4gPj4gKyAgICAy LA0KPiA+ID4+ICsgICAgIlNNTVV2MSBvciBTTU1VdjIgTm9kZSIsDQo+ID4gPj4gKyAgICBQdHIs DQo+ID4gPj4gKyAgICBMZW5ndGgsDQo+ID4gPj4gKyAgICBQQVJTRVJfUEFSQU1TIChJb3J0Tm9k ZVNtbXVWMVYyUGFyc2VyKQ0KPiA+ID4+ICsgICAgKTsNCj4gPiA+PiArDQo+ID4gPj4gKyAgQXJy YXlQdHIgPSBQdHIgKyAqSW50ZXJydXB0Q29udGV4dE9mZnNldDsNCj4gPiA+PiArICBJbmRleCA9 IDA7DQo+ID4gPj4gKyAgd2hpbGUgKEluZGV4IDwgKkludGVycnVwdENvbnRleHRDb3VudCkgew0K PiA+ID4+ICsgICAgQXNjaWlTUHJpbnQgKA0KPiA+ID4+ICsgICAgICBCdWZmZXIsDQo+ID4gPj4g KyAgICAgIHNpemVvZiAoQnVmZmVyKSwNCj4gPiA+PiArICAgICAgIkNvbnRleHQgSW50ZXJydXB0 cyBBcnJheSBbJWRdIiwNCj4gPiA+PiArICAgICAgSW5kZXgNCj4gPiA+PiArICAgICAgKTsNCj4g PiA+PiArICAgIE9mZnNldCA9IFBhcnNlQWNwaSAoDQo+ID4gPj4gKyAgICAgICAgICAgICAgIFRS VUUsDQo+ID4gPj4gKyAgICAgICAgICAgICAgIDQsDQo+ID4gPj4gKyAgICAgICAgICAgICAgIEJ1 ZmZlciwNCj4gPiA+PiArICAgICAgICAgICAgICAgQXJyYXlQdHIsDQo+ID4gPj4gKyAgICAgICAg ICAgICAgIDgsDQo+ID4gPj4gKyAgICAgICAgICAgICAgIFBBUlNFUl9QQVJBTVMgKEludGVycnVw dEFycmF5UGFyc2VyKQ0KPiA+ID4+ICsgICAgICAgICAgICAgICApOw0KPiA+ID4+ICsgICAgQXJy YXlQdHIgKz0gT2Zmc2V0Ow0KPiA+ID4+ICsgICAgSW5kZXgrKzsNCj4gPiA+PiArICB9DQo+ID4g Pj4gKw0KPiA+ID4+ICsgIEFycmF5UHRyID0gUHRyICsgKlBtdUludGVycnVwdE9mZnNldDsNCj4g PiA+PiArICBJbmRleCA9IDA7DQo+ID4gPj4gKyAgd2hpbGUgKEluZGV4IDwgKlBtdUludGVycnVw dENvdW50KSB7DQo+ID4gPj4gKyAgICBBc2NpaVNQcmludCAoDQo+ID4gPj4gKyAgICAgIEJ1ZmZl ciwNCj4gPiA+PiArICAgICAgc2l6ZW9mIChCdWZmZXIpLA0KPiA+ID4+ICsgICAgICAiUE1VIElu dGVycnVwdHMgQXJyYXkgWyVkXSIsDQo+ID4gPj4gKyAgICAgIEluZGV4DQo+ID4gPj4gKyAgICAg ICk7DQo+ID4gPj4gKyAgICBPZmZzZXQgPSBQYXJzZUFjcGkgKA0KPiA+ID4+ICsgICAgICAgICAg ICAgICBUUlVFLA0KPiA+ID4+ICsgICAgICAgICAgICAgICA0LA0KPiA+ID4+ICsgICAgICAgICAg ICAgICBCdWZmZXIsDQo+ID4gPj4gKyAgICAgICAgICAgICAgIEFycmF5UHRyLA0KPiA+ID4+ICsg ICAgICAgICAgICAgICA4LA0KPiA+ID4+ICsgICAgICAgICAgICAgICBQQVJTRVJfUEFSQU1TIChJ bnRlcnJ1cHRBcnJheVBhcnNlcikNCj4gPiA+PiArICAgICAgICAgICAgICAgKTsNCj4gPiA+PiAr ICAgIEFycmF5UHRyICs9IE9mZnNldDsNCj4gPiA+PiArICAgIEluZGV4Kys7DQo+ID4gPj4gKyAg fQ0KPiA+ID4+ICsNCj4gPiA+PiArICBpZiAoKklvcnRJZE1hcHBpbmdDb3VudCAhPSAwKSB7DQo+ ID4gPj4gKyAgICBEdW1wSW9ydE5vZGVJZE1hcHBpbmdzIChQdHIsIE1hcHBpbmdDb3VudCwgTWFw cGluZ09mZnNldCk7DQo+ID4gPj4gKyAgfQ0KPiA+ID4+ICt9DQo+ID4gPj4gKw0KPiA+ID4+ICsv KiogVGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIElPUlQgU01NVXYzIG5vZGUuDQo+ID4gPj4gKw0K PiA+ID4+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0 IG9mIHRoZSBidWZmZXIuDQo+ID4gPj4gKyAgQHBhcmFtIFtpbl0gTGVuZ3RoICAgICAgICAgTGVu Z3RoIG9mIHRoZSBidWZmZXIuDQo+ID4gPj4gKyAgQHBhcmFtIFtpbl0gTWFwcGluZ0NvdW50ICAg VGhlIElEIE1hcHBpbmcgY291bnQuDQo+ID4gPj4gKyAgQHBhcmFtIFtpbl0gTWFwcGluZ09mZnNl dCAgVGhlIG9mZnNldCBvZiB0aGUgSUQgTWFwcGluZyBhcnJheQ0KPiA+ID4+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBJT1JUIHRhYmxlLg0KPiA+ ID4+ICsqLw0KPiA+ID4+ICtTVEFUSUMNCj4gPiA+PiArVk9JRA0KPiA+ID4+ICtEdW1wSW9ydE5v ZGVTbW11VjMgKA0KPiA+ID4+ICsgIElOIFVJTlQ4KiBQdHIsDQo+ID4gPj4gKyAgSU4gVUlOVDE2 IExlbmd0aCwNCj4gPiA+PiArICBJTiBVSU5UMzIgTWFwcGluZ0NvdW50LA0KPiA+ID4+ICsgIElO IFVJTlQzMiBNYXBwaW5nT2Zmc2V0DQo+ID4gPj4gKyAgKQ0KPiA+ID4+ICt7DQo+ID4gPj4gKyAg UGFyc2VBY3BpICgNCj4gPiA+PiArICAgIFRSVUUsDQo+ID4gPj4gKyAgICAyLA0KPiA+ID4+ICsg ICAgIlNNTVVWMyBOb2RlIiwNCj4gPiA+PiArICAgIFB0ciwNCj4gPiA+PiArICAgIExlbmd0aCwN Cj4gPiA+PiArICAgIFBBUlNFUl9QQVJBTVMgKElvcnROb2RlU21tdVYzUGFyc2VyKQ0KPiA+ID4+ ICsgICAgKTsNCj4gPiA+PiArDQo+ID4gPj4gKyAgaWYgKCpJb3J0SWRNYXBwaW5nQ291bnQgIT0g MCkgew0KPiA+ID4+ICsgICAgRHVtcElvcnROb2RlSWRNYXBwaW5ncyAoUHRyLCBNYXBwaW5nQ291 bnQsIE1hcHBpbmdPZmZzZXQpOw0KPiA+ID4+ICsgIH0NCj4gPiA+PiArfQ0KPiA+ID4+ICsNCj4g PiA+PiArLyoqIFRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBJT1JUIElUUyBub2RlLg0KPiA+ID4+ ICsNCj4gPiA+PiArICBAcGFyYW0gW2luXSBQdHIgICAgICAgICAgICBQb2ludGVyIHRvIHRoZSBz dGFydCBvZiB0aGUgYnVmZmVyLg0KPiA+ID4+ICsgIEBwYXJhbSBbaW5dIExlbmd0aCAgICAgICAg IExlbmd0aCBvZiB0aGUgYnVmZmVyLg0KPiA+ID4+ICsqLw0KPiA+ID4+ICtTVEFUSUMNCj4gPiA+ PiArVk9JRA0KPiA+ID4+ICtEdW1wSW9ydE5vZGVJdHMgKA0KPiA+ID4+ICsgIElOIFVJTlQ4KiBQ dHIsDQo+ID4gPj4gKyAgSU4gVUlOVDE2IExlbmd0aA0KPiA+ID4+ICsgICkNCj4gPiA+PiArew0K PiA+ID4+ICsgIFVJTlQzMiBPZmZzZXQ7DQo+ID4gPj4gKyAgVUlOVDMyIEluZGV4Ow0KPiA+ID4+ ICsgIFVJTlQ4KiBJdHNJZFB0cjsNCj4gPiA+PiArICBDSEFSOCAgQnVmZmVyWzgwXTsgIC8vIFVz ZWQgZm9yIEFzY2lpTmFtZSBwYXJhbSBvZiBQYXJzZUFjcGkNCj4gPiA+PiArDQo+ID4gPj4gKyAg T2Zmc2V0ID0gUGFyc2VBY3BpICgNCj4gPiA+PiArICAgICAgICAgICAgIFRSVUUsDQo+ID4gPj4g KyAgICAgICAgICAgICAyLA0KPiA+ID4+ICsgICAgICAgICAgICAgIklUUyBOb2RlIiwNCj4gPiA+ PiArICAgICAgICAgICAgIFB0ciwNCj4gPiA+PiArICAgICAgICAgICAgIExlbmd0aCwNCj4gPiA+ PiArICAgICAgICAgICAgIFBBUlNFUl9QQVJBTVMgKElvcnROb2RlSXRzUGFyc2VyKQ0KPiA+ID4+ ICsgICAgICAgICAgICAgKTsNCj4gPiA+PiArDQo+ID4gPj4gKyAgSXRzSWRQdHIgPSBQdHIgKyBP ZmZzZXQ7DQo+ID4gPj4gKyAgSW5kZXggPSAwOw0KPiA+ID4+ICsgIHdoaWxlIChJbmRleCA8ICpJ dHNDb3VudCkgew0KPiA+ID4+ICsgICAgQXNjaWlTUHJpbnQgKA0KPiA+ID4+ICsgICAgICBCdWZm ZXIsDQo+ID4gPj4gKyAgICAgIHNpemVvZiAoQnVmZmVyKSwNCj4gPiA+PiArICAgICAgIkdJQyBJ VFMgSWRlbnRpZmllciBBcnJheSBbJWRdIiwNCj4gPiA+PiArICAgICAgSW5kZXgNCj4gPiA+PiAr ICAgICAgKTsNCj4gPiA+PiArICAgIE9mZnNldCA9IFBhcnNlQWNwaSAoDQo+ID4gPj4gKyAgICAg ICAgICAgICAgIFRSVUUsDQo+ID4gPj4gKyAgICAgICAgICAgICAgIDQsDQo+ID4gPj4gKyAgICAg ICAgICAgICAgIEJ1ZmZlciwNCj4gPiA+PiArICAgICAgICAgICAgICAgSXRzSWRQdHIsDQo+ID4g Pj4gKyAgICAgICAgICAgICAgIDQsDQo+ID4gPj4gKyAgICAgICAgICAgICAgIFBBUlNFUl9QQVJB TVMgKEl0c0lkUGFyc2VyKQ0KPiA+ID4+ICsgICAgICAgICAgICAgICApOw0KPiA+ID4+ICsgICAg SXRzSWRQdHIgKz0gT2Zmc2V0Ow0KPiA+ID4+ICsgICAgSW5kZXgrKzsNCj4gPiA+PiArICB9DQo+ ID4gPj4gKw0KPiA+ID4+ICsgIC8vIE5vdGU6IElUUyBkb2VzIG5vdCBoYXZlIHRoZSBJRCBNYXBw aW5ncyBBcnJheQ0KPiA+ID4+ICt9DQo+ID4gPj4gKw0KPiA+ID4+ICsvKiogVGhpcyBmdW5jdGlv biBwYXJzZXMgdGhlIElPUlQgTmFtZWQgQ29tcG9uZW50IG5vZGUuDQo+ID4gPj4gKw0KPiA+ID4+ ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRo ZSBidWZmZXIuDQo+ID4gPj4gKyAgQHBhcmFtIFtpbl0gTGVuZ3RoICAgICAgICAgTGVuZ3RoIG9m IHRoZSBidWZmZXIuDQo+ID4gPj4gKyAgQHBhcmFtIFtpbl0gTWFwcGluZ0NvdW50ICAgVGhlIElE IE1hcHBpbmcgY291bnQuDQo+ID4gPj4gKyAgQHBhcmFtIFtpbl0gTWFwcGluZ09mZnNldCAgVGhl IG9mZnNldCBvZiB0aGUgSUQgTWFwcGluZyBhcnJheQ0KPiA+ID4+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBJT1JUIHRhYmxlLg0KPiA+ID4+ICsq Lw0KPiA+ID4+ICtTVEFUSUMNCj4gPiA+PiArVk9JRA0KPiA+ID4+ICtEdW1wSW9ydE5vZGVOYW1l ZENvbXBvbmVudCAoDQo+ID4gPj4gKyAgSU4gVUlOVDgqIFB0ciwNCj4gPiA+PiArICBJTiBVSU5U MTYgTGVuZ3RoLA0KPiA+ID4+ICsgIElOIFVJTlQzMiBNYXBwaW5nQ291bnQsDQo+ID4gPj4gKyAg SU4gVUlOVDMyIE1hcHBpbmdPZmZzZXQNCj4gPiA+PiArICApDQo+ID4gPj4gK3sNCj4gPiA+PiAr ICBVSU5UMzIgT2Zmc2V0Ow0KPiA+ID4+ICsgIFVJTlQzMiBJbmRleDsNCj4gPiA+PiArICBVSU5U OCogRGV2aWNlTmFtZVB0cjsNCj4gPiA+PiArICBVSU5UMzIgRGV2aWNlTmFtZUxlbmd0aDsNCj4g PiA+PiArDQo+ID4gPj4gKyAgT2Zmc2V0ID0gUGFyc2VBY3BpICgNCj4gPiA+PiArICAgICAgICAg ICAgIFRSVUUsDQo+ID4gPj4gKyAgICAgICAgICAgICAyLA0KPiA+ID4+ICsgICAgICAgICAgICAg Ik5hbWVkIENvbXBvbmVudCBOb2RlIiwNCj4gPiA+PiArICAgICAgICAgICAgIFB0ciwNCj4gPiA+ PiArICAgICAgICAgICAgIExlbmd0aCwNCj4gPiA+PiArICAgICAgICAgICAgIFBBUlNFUl9QQVJB TVMgKElvcnROb2RlTmFtZWRDb21wb25lbnRQYXJzZXIpDQo+ID4gPj4gKyAgICAgICAgICAgICAp Ow0KPiA+ID4+ICsNCj4gPiA+PiArICBEZXZpY2VOYW1lUHRyID0gUHRyICsgT2Zmc2V0Ow0KPiA+ ID4+ICsgIC8vIEVzdGltYXRlIHRoZSBEZXZpY2UgTmFtZSBsZW5ndGgNCj4gPiA+PiArICBEZXZp Y2VOYW1lTGVuZ3RoID0gTGVuZ3RoIC0gT2Zmc2V0IC0gKE1hcHBpbmdDb3VudCAqIDIwKTsNCj4g PiA+PiArICBQcmludEZpZWxkTmFtZSAoMiwgTCJEZXZpY2UgT2JqZWN0IE5hbWUiKTsNCj4gPiA+ PiArICBJbmRleCA9IDA7DQo+ID4gPj4gKyAgd2hpbGUgKChJbmRleCA8IERldmljZU5hbWVMZW5n dGgpICYmIChEZXZpY2VOYW1lUHRyW0luZGV4XSAhPQ0KPiAwKSkgew0KPiA+ID4+ICsgICAgUHJp bnQgKEwiJWMiLCBEZXZpY2VOYW1lUHRyW0luZGV4KytdKTsNCj4gPiA+PiArICB9DQo+ID4gPj4g KyAgUHJpbnQgKEwiXG4iKTsNCj4gPiA+PiArDQo+ID4gPj4gKyAgaWYgKCpJb3J0SWRNYXBwaW5n Q291bnQgIT0gMCkgew0KPiA+ID4+ICsgICAgRHVtcElvcnROb2RlSWRNYXBwaW5ncyAoUHRyLCBN YXBwaW5nQ291bnQsIE1hcHBpbmdPZmZzZXQpOw0KPiA+ID4+ICsgIH0NCj4gPiA+PiArfQ0KPiA+ ID4+ICsNCj4gPiA+PiArLyoqIFRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBJT1JUIFJvb3QgQ29t cGxleCBub2RlLg0KPiA+ID4+ICsNCj4gPiA+PiArICBAcGFyYW0gW2luXSBQdHIgICAgICAgICAg ICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiA+ID4+ICsgIEBwYXJhbSBb aW5dIExlbmd0aCAgICAgICAgIExlbmd0aCBvZiB0aGUgYnVmZmVyLg0KPiA+ID4+ICsgIEBwYXJh bSBbaW5dIE1hcHBpbmdDb3VudCAgIFRoZSBJRCBNYXBwaW5nIGNvdW50Lg0KPiA+ID4+ICsgIEBw YXJhbSBbaW5dIE1hcHBpbmdPZmZzZXQgIFRoZSBvZmZzZXQgb2YgdGhlIElEIE1hcHBpbmcgYXJy YXkNCj4gPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tIHRoZSBzdGFydCBv ZiB0aGUgSU9SVCB0YWJsZS4NCj4gPiA+PiArKi8NCj4gPiA+PiArU1RBVElDDQo+ID4gPj4gK1ZP SUQNCj4gPiA+PiArRHVtcElvcnROb2RlUm9vdENvbXBsZXggKA0KPiA+ID4+ICsgIElOIFVJTlQ4 KiBQdHIsDQo+ID4gPj4gKyAgSU4gVUlOVDE2IExlbmd0aCwNCj4gPiA+PiArICBJTiBVSU5UMzIg TWFwcGluZ0NvdW50LA0KPiA+ID4+ICsgIElOIFVJTlQzMiBNYXBwaW5nT2Zmc2V0DQo+ID4gPj4g KyAgKQ0KPiA+ID4+ICt7DQo+ID4gPj4gKyAgUGFyc2VBY3BpICgNCj4gPiA+PiArICAgIFRSVUUs DQo+ID4gPj4gKyAgICAyLA0KPiA+ID4+ICsgICAgIlJvb3QgQ29tcGxleCBOb2RlIiwNCj4gPiA+ PiArICAgIFB0ciwNCj4gPiA+PiArICAgIExlbmd0aCwNCj4gPiA+PiArICAgIFBBUlNFUl9QQVJB TVMgKElvcnROb2RlUm9vdENvbXBsZXhQYXJzZXIpDQo+ID4gPj4gKyAgICApOw0KPiA+ID4+ICsN Cj4gPiA+PiArICBpZiAoKklvcnRJZE1hcHBpbmdDb3VudCAhPSAwKSB7DQo+ID4gPj4gKyAgICBE dW1wSW9ydE5vZGVJZE1hcHBpbmdzIChQdHIsIE1hcHBpbmdDb3VudCwgTWFwcGluZ09mZnNldCk7 DQo+ID4gPj4gKyAgfQ0KPiA+ID4+ICt9DQo+ID4gPj4gKw0KPiA+ID4+ICsvKiogVGhpcyBmdW5j dGlvbiBwYXJzZXMgdGhlIElPUlQgUE1DRyBub2RlLg0KPiA+ID4+ICsNCj4gPiA+PiArICBAcGFy YW0gW2luXSBQdHIgICAgICAgICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVy Lg0KPiA+ID4+ICsgIEBwYXJhbSBbaW5dIExlbmd0aCAgICAgICAgIExlbmd0aCBvZiB0aGUgYnVm ZmVyLg0KPiA+ID4+ICsgIEBwYXJhbSBbaW5dIE1hcHBpbmdDb3VudCAgIFRoZSBJRCBNYXBwaW5n IGNvdW50Lg0KPiA+ID4+ICsgIEBwYXJhbSBbaW5dIE1hcHBpbmdPZmZzZXQgIFRoZSBvZmZzZXQg b2YgdGhlIElEIE1hcHBpbmcgYXJyYXkNCj4gPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBmcm9tIHRoZSBzdGFydCBvZiB0aGUgSU9SVCB0YWJsZS4NCj4gPiA+PiArKi8NCj4gPiA+ PiArU1RBVElDDQo+ID4gPj4gK1ZPSUQNCj4gPiA+PiArRHVtcElvcnROb2RlUG1jZyAoDQo+ID4g Pj4gKyAgSU4gVUlOVDgqIFB0ciwNCj4gPiA+PiArICBJTiBVSU5UMTYgTGVuZ3RoLA0KPiA+ID4+ ICsgIElOIFVJTlQzMiBNYXBwaW5nQ291bnQsDQo+ID4gPj4gKyAgSU4gVUlOVDMyIE1hcHBpbmdP ZmZzZXQNCj4gPiA+PiArKQ0KPiA+ID4+ICt7DQo+ID4gPj4gKyAgUGFyc2VBY3BpICgNCj4gPiA+ PiArICAgIFRSVUUsDQo+ID4gPj4gKyAgICAyLA0KPiA+ID4+ICsgICAgIlBNQ0cgTm9kZSIsDQo+ ID4gPj4gKyAgICBQdHIsDQo+ID4gPj4gKyAgICBMZW5ndGgsDQo+ID4gPj4gKyAgICBQQVJTRVJf UEFSQU1TIChJb3J0Tm9kZVBtY2dQYXJzZXIpDQo+ID4gPj4gKyAgKTsNCj4gPiA+PiArDQo+ID4g Pj4gKyAgaWYgKCpJb3J0SWRNYXBwaW5nQ291bnQgIT0gMCkgew0KPiA+ID4+ICsgICAgRHVtcElv cnROb2RlSWRNYXBwaW5ncyAoUHRyLCBNYXBwaW5nQ291bnQsIE1hcHBpbmdPZmZzZXQpOw0KPiA+ ID4+ICsgIH0NCj4gPiA+PiArDQo+ID4gPj4gKyAgaWYgKCpJb3J0SWRNYXBwaW5nQ291bnQgPiAx KSB7DQo+ID4gPj4gKyAgICBJbmNyZW1lbnRFcnJvckNvdW50ICgpOw0KPiA+ID4+ICsgICAgUHJp bnQgKA0KPiA+ID4+ICsgICAgICBMIkVSUk9SOiBJRCBtYXBwaW5nIG11c3Qgbm90IGJlIGdyZWF0 ZXIgdGhhbiAxLiBJZCBNYXBwaW5nIENvdW50DQo+ID4gPSVkXG4iLA0KPiA+ID4+ICsgICAgICAq SW9ydElkTWFwcGluZ0NvdW50DQo+ID4gPj4gKyAgICAgICk7DQo+ID4gPj4gKyAgfQ0KPiA+ID4+ ICt9DQo+ID4gPj4gKw0KPiA+ID4+ICsvKiogVGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIEFDUEkg SU9SVCB0YWJsZS4NCj4gPiA+PiArICBXaGVuIHRyYWNlIGlzIGVuYWJsZWQgdGhpcyBmdW5jdGlv biBwYXJzZXMgdGhlIElPUlQgdGFibGUgYW5kDQo+ID4gPj4gKyAgdHJhY2VzIHRoZSBBQ1BJIGZp ZWxkcy4NCj4gPiA+PiArDQo+ID4gPj4gKyAgVGhpcyBmdW5jdGlvbiBhbHNvIHBhcnNlcyB0aGUg Zm9sbG93aW5nIG5vZGVzOg0KPiA+ID4+ICsgICAgLSBJVFMgR3JvdXANCj4gPiA+PiArICAgIC0g TmFtZWQgQ29tcG9uZW50DQo+ID4gPj4gKyAgICAtIFJvb3QgQ29tcGxleA0KPiA+ID4+ICsgICAg LSBTTU1VdjEvMg0KPiA+ID4+ICsgICAgLSBTTU1VdjMNCj4gPiA+PiArICAgIC0gUE1DRw0KPiA+ ID4+ICsNCj4gPiA+PiArICBUaGlzIGZ1bmN0aW9uIGFsc28gcGVyZm9ybXMgdmFsaWRhdGlvbiBv ZiB0aGUgQUNQSSB0YWJsZSBmaWVsZHMuDQo+ID4gPj4gKw0KPiA+ID4+ICsgIEBwYXJhbSBbaW5d IFRyYWNlICAgICAgICAgICAgICBJZiBUUlVFLCB0cmFjZSB0aGUgQUNQSSBmaWVsZHMuDQo+ID4g Pj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICAgICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0 IG9mIHRoZSBidWZmZXIuDQo+ID4gPj4gKyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxlTGVuZ3RoICAg IExlbmd0aCBvZiB0aGUgQUNQSSB0YWJsZS4NCj4gPiA+PiArICBAcGFyYW0gW2luXSBBY3BpVGFi bGVSZXZpc2lvbiAgUmV2aXNpb24gb2YgdGhlIEFDUEkgdGFibGUuDQo+ID4gPj4gKyovDQo+ID4g Pj4gK1ZPSUQNCj4gPiA+PiArRUZJQVBJDQo+ID4gPj4gK1BhcnNlQWNwaUlvcnQgKA0KPiA+ID4+ ICsgIElOIEJPT0xFQU4gVHJhY2UsDQo+ID4gPj4gKyAgSU4gVUlOVDgqICBQdHIsDQo+ID4gPj4g KyAgSU4gVUlOVDMyICBBY3BpVGFibGVMZW5ndGgsDQo+ID4gPj4gKyAgSU4gVUlOVDggICBBY3Bp VGFibGVSZXZpc2lvbg0KPiA+ID4+ICsgICkNCj4gPiA+PiArew0KPiA+ID4+ICsgIFVJTlQzMiBP ZmZzZXQ7DQo+ID4gPj4gKyAgVUlOVDMyIEluZGV4Ow0KPiA+ID4+ICsgIFVJTlQ4KiBOb2RlUHRy Ow0KPiA+ID4+ICsNCj4gPiA+PiArICBpZiAoIVRyYWNlKSB7DQo+ID4gPj4gKyAgICByZXR1cm47 DQo+ID4gPj4gKyAgfQ0KPiA+ID4+ICsNCj4gPiA+PiArICBQYXJzZUFjcGkgKA0KPiA+ID4+ICsg ICAgVFJVRSwNCj4gPiA+PiArICAgIDAsDQo+ID4gPj4gKyAgICAiSU9SVCIsDQo+ID4gPj4gKyAg ICBQdHIsDQo+ID4gPj4gKyAgICBBY3BpVGFibGVMZW5ndGgsDQo+ID4gPj4gKyAgICBQQVJTRVJf UEFSQU1TIChJb3J0UGFyc2VyKQ0KPiA+ID4+ICsgICAgKTsNCj4gPiA+PiArICBPZmZzZXQgPSAq SW9ydE5vZGVPZmZzZXQ7DQo+ID4gPj4gKyAgTm9kZVB0ciA9IFB0ciArIE9mZnNldDsNCj4gPiA+ PiArICBJbmRleCA9IDA7DQo+ID4gPj4gKw0KPiA+ID4+ICsgIHdoaWxlICgoSW5kZXggPCAqSW9y dE5vZGVDb3VudCkgJiYgKE9mZnNldCA8IEFjcGlUYWJsZUxlbmd0aCkpIHsNCj4gPiA+PiArICAg IC8vIFBhcnNlIHRoZSBJT1JUIE5vZGUgSGVhZGVyDQo+ID4gPj4gKyAgICBQYXJzZUFjcGkgKA0K PiA+ID4+ICsgICAgICBGQUxTRSwNCj4gPiA+PiArICAgICAgMCwNCj4gPiA+PiArICAgICAgIklP UlQgTm9kZSBIZWFkZXIiLA0KPiA+ID4+ICsgICAgICBOb2RlUHRyLA0KPiA+ID4+ICsgICAgICAx NiwNCj4gPiA+PiArICAgICAgUEFSU0VSX1BBUkFNUyAoSW9ydE5vZGVIZWFkZXJQYXJzZXIpDQo+ ID4gPj4gKyAgICAgICk7DQo+ID4gPj4gKyAgICBpZiAoKklvcnROb2RlTGVuZ3RoID09IDApIHsN Cj4gPiA+PiArICAgICAgSW5jcmVtZW50RXJyb3JDb3VudCAoKTsNCj4gPiA+PiArICAgICAgUHJp bnQgKEwiRVJST1I6IFBhcnNlciBlcnJvci4gSW52YWxpZCB0YWJsZSBkYXRhLlxuIik7DQo+ID4g Pj4gKyAgICAgIHJldHVybjsNCj4gPiA+PiArICAgIH0NCj4gPiA+PiArDQo+ID4gPj4gKyAgICBQ cmludEZpZWxkTmFtZSAoMiwgTCIqIE5vZGUgT2Zmc2V0ICoiKTsNCj4gPiA+PiArICAgIFByaW50 IChMIjB4JXhcbiIsIE9mZnNldCk7DQo+ID4gPj4gKw0KPiA+ID4+ICsgICAgc3dpdGNoICgqSW9y dE5vZGVUeXBlKSB7DQo+ID4gPj4gKyAgICAgIGNhc2UgRUlPUlRfTk9ERV9JVFNfR1JPVVA6DQo+ ID4gPj4gKyAgICAgICAgRHVtcElvcnROb2RlSXRzICgNCj4gPiA+PiArICAgICAgICAgIE5vZGVQ dHIsDQo+ID4gPj4gKyAgICAgICAgICAqSW9ydE5vZGVMZW5ndGgNCj4gPiA+PiArICAgICAgICAg ICk7DQo+ID4gPj4gKyAgICAgICAgYnJlYWs7DQo+ID4gPj4gKyAgICAgIGNhc2UgRUlPUlRfTk9E RV9OQU1FRF9DT01QT05FTlQ6DQo+ID4gPj4gKyAgICAgICAgRHVtcElvcnROb2RlTmFtZWRDb21w b25lbnQgKA0KPiA+ID4+ICsgICAgICAgICAgTm9kZVB0ciwNCj4gPiA+PiArICAgICAgICAgICpJ b3J0Tm9kZUxlbmd0aCwNCj4gPiA+PiArICAgICAgICAgICpJb3J0SWRNYXBwaW5nQ291bnQsDQo+ ID4gPj4gKyAgICAgICAgICAqSW9ydElkTWFwcGluZ09mZnNldA0KPiA+ID4+ICsgICAgICAgICAg KTsNCj4gPiA+PiArICAgICAgICBicmVhazsNCj4gPiA+PiArICAgICAgY2FzZSBFSU9SVF9OT0RF X1JPT1RfQ09NUExFWDoNCj4gPiA+PiArICAgICAgICBEdW1wSW9ydE5vZGVSb290Q29tcGxleCAo DQo+ID4gPj4gKyAgICAgICAgICBOb2RlUHRyLA0KPiA+ID4+ICsgICAgICAgICAgKklvcnROb2Rl TGVuZ3RoLA0KPiA+ID4+ICsgICAgICAgICAgKklvcnRJZE1hcHBpbmdDb3VudCwNCj4gPiA+PiAr ICAgICAgICAgICpJb3J0SWRNYXBwaW5nT2Zmc2V0DQo+ID4gPj4gKyAgICAgICAgICApOw0KPiA+ ID4+ICsgICAgICAgIGJyZWFrOw0KPiA+ID4+ICsgICAgICBjYXNlIEVJT1JUX05PREVfU01NVVYx X1YyOg0KPiA+ID4+ICsgICAgICAgIER1bXBJb3J0Tm9kZVNtbXVWMVYyICgNCj4gPiA+PiArICAg ICAgICAgIE5vZGVQdHIsDQo+ID4gPj4gKyAgICAgICAgICAqSW9ydE5vZGVMZW5ndGgsDQo+ID4g Pj4gKyAgICAgICAgICAqSW9ydElkTWFwcGluZ0NvdW50LA0KPiA+ID4+ICsgICAgICAgICAgKklv cnRJZE1hcHBpbmdPZmZzZXQNCj4gPiA+PiArICAgICAgICAgICk7DQo+ID4gPj4gKyAgICAgICAg YnJlYWs7DQo+ID4gPj4gKyAgICAgIGNhc2UgRUlPUlRfTk9ERV9TTU1VVjM6DQo+ID4gPj4gKyAg ICAgICAgRHVtcElvcnROb2RlU21tdVYzICgNCj4gPiA+PiArICAgICAgICAgIE5vZGVQdHIsDQo+ ID4gPj4gKyAgICAgICAgICAqSW9ydE5vZGVMZW5ndGgsDQo+ID4gPj4gKyAgICAgICAgICAqSW9y dElkTWFwcGluZ0NvdW50LA0KPiA+ID4+ICsgICAgICAgICAgKklvcnRJZE1hcHBpbmdPZmZzZXQN Cj4gPiA+PiArICAgICAgICAgICk7DQo+ID4gPj4gKyAgICAgICAgYnJlYWs7DQo+ID4gPj4gKyAg ICAgIGNhc2UgRUlPUlRfTk9ERV9QTUNHOg0KPiA+ID4+ICsgICAgICAgIER1bXBJb3J0Tm9kZVBt Y2cgKA0KPiA+ID4+ICsgICAgICAgICAgTm9kZVB0ciwNCj4gPiA+PiArICAgICAgICAgICpJb3J0 Tm9kZUxlbmd0aCwNCj4gPiA+PiArICAgICAgICAgICpJb3J0SWRNYXBwaW5nQ291bnQsDQo+ID4g Pj4gKyAgICAgICAgICAqSW9ydElkTWFwcGluZ09mZnNldA0KPiA+ID4+ICsgICAgICAgICk7DQo+ ID4gPj4gKyAgICAgICAgYnJlYWs7DQo+ID4gPj4gKw0KPiA+ID4+ICsgICAgICBkZWZhdWx0Og0K PiA+ID4+ICsgICAgICAgIEluY3JlbWVudEVycm9yQ291bnQgKCk7DQo+ID4gPj4gKyAgICAgICAg UHJpbnQgKEwiRVJST1I6IFVuc3VwcG9ydGVkIElPUlQgTm9kZSB0eXBlID0gJWRcbiIsDQo+ID4g KklvcnROb2RlVHlwZSk7DQo+ID4gPj4gKyAgICB9IC8vIHN3aXRjaA0KPiA+ID4+ICsNCj4gPiA+ PiArICAgIE5vZGVQdHIgKz0gKCpJb3J0Tm9kZUxlbmd0aCk7DQo+ID4gPj4gKyAgICBPZmZzZXQg Kz0gKCpJb3J0Tm9kZUxlbmd0aCk7DQo+ID4gPj4gKyAgfSAvLyB3aGlsZQ0KPiA+ID4+ICt9DQo+ ID4gPj4gKw0KPiA+ID4+ICsvKiogUmVnaXN0ZXIgdGhlIHBhcnNlci4NCj4gPiA+PiArDQo+ID4g Pj4gKyAgQHBhcmFtIFtpbl0gIEltYWdlSGFuZGxlICBUaGUgaGFuZGxlIHRvIHRoZSBpbWFnZS4N Cj4gPiA+PiArICBAcGFyYW0gW2luXSAgU3lzdGVtVGFibGUgIFBvaW50ZXIgdG8gdGhlIFN5c3Rl bSBUYWJsZS4NCj4gPiA+PiArDQo+ID4gPj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAg ICAgVGhlIHBhcnNlciBpcyByZWdpc3RlcmVkLg0KPiA+ID4+ICsgIEByZXR2YWwgRUZJX0FMUkVB RFlfU1RBUlRFRCAgIFRoZSBwYXJzZXIgZm9yIHRoZSBBQ1BJIFRhYmxlDQo+ID4gPj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FzIGFscmVhZHkgcmVnaXN0ZXJlZC4NCj4gPiA+ PiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiBBIHBhcmFtZXRlciBpcyBpbnZhbGlk DQo+ID4gPj4gKyAgQHJldHZhbCBFRklfT1VUX09GX1JFU09VUkNFUyAgTm8gc3BhY2UgdG8gcmVn aXN0ZXIgdGhlDQo+ID4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2Vy Lg0KPiA+ID4+ICsqLw0KPiA+ID4+ICtFRklfU1RBVFVTDQo+ID4gPj4gK0VGSUFQSQ0KPiA+ID4+ ICtJb3J0UGFyc2VyTGliQ29uc3RydWN0b3IgKA0KPiA+ID4+ICsgIElOIENPTlNUIEVGSV9IQU5E TEUgICAgICAgICAgICAgICAgSW1hZ2VIYW5kbGUsDQo+ID4gPj4gKyAgSU4gICAgICAgRUZJX1NZ U1RFTV9UQUJMRSAgKiBDT05TVCBTeXN0ZW1UYWJsZQ0KPiA+ID4+ICsgICkNCj4gPiA+PiArew0K PiA+ID4+ICsgIHJldHVybiBSZWdpc3RlclBhcnNlciAoDQo+ID4gPj4gKyAgICAgICAgICAgRUZJ X0FDUElfNl8yX0lPX1JFTUFQUElOR19UQUJMRV9TSUdOQVRVUkUsDQo+ID4gPj4gKyAgICAgICAg ICAgUGFyc2VBY3BpSW9ydA0KPiA+ID4+ICsgICAgICAgICAgICk7DQo+ID4gPj4gK30NCj4gPiA+ PiArDQo+ID4gPj4gKy8qKiBEZXJlZ2lzdGVyIHRoZSBwYXJzZXIuDQo+ID4gPj4gKw0KPiA+ID4+ ICsgIEBwYXJhbSBbaW5dICBJbWFnZUhhbmRsZSAgVGhlIGhhbmRsZSB0byB0aGUgaW1hZ2UuDQo+ ID4gPj4gKyAgQHBhcmFtIFtpbl0gIFN5c3RlbVRhYmxlICBQb2ludGVyIHRvIHRoZSBTeXN0ZW0g VGFibGUuDQo+ID4gPj4gKw0KPiA+ID4+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAg IFRoZSBwYXJzZXIgaXMgZGVyZWdpc3RlcmVkLg0KPiA+ID4+ICsgIEByZXR2YWwgRUZJX05PVF9G T1VORCAgICAgICAgIFRoZSBwYXJzZXIgd2FzIG5vdCByZWdpc3RlcmVkLg0KPiA+ID4+ICsqLw0K PiA+ID4+ICtFRklfU1RBVFVTDQo+ID4gPj4gK0VGSUFQSQ0KPiA+ID4+ICtJb3J0UGFyc2VyTGli RGVzdHJ1Y3RvciAoDQo+ID4gPj4gKyAgSU4gQ09OU1QgRUZJX0hBTkRMRSAgICAgICAgICAgICAg ICBJbWFnZUhhbmRsZSwNCj4gPiA+PiArICBJTiAgICAgICBFRklfU1lTVEVNX1RBQkxFICAqIENP TlNUIFN5c3RlbVRhYmxlDQo+ID4gPj4gKyAgKQ0KPiA+ID4+ICt7DQo+ID4gPj4gKyAgcmV0dXJu IERlcmVnaXN0ZXJQYXJzZXIgKA0KPiA+ID4+ICsgICAgICAgICAgIEVGSV9BQ1BJXzZfMl9JT19S RU1BUFBJTkdfVEFCTEVfU0lHTkFUVVJFDQo+ID4gPj4gKyAgICAgICAgICAgKTsNCj4gPiA+PiAr fQ0KPiA+ID4+IGRpZmYgLS1naXQNCj4gPg0KPiBhL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxs QWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvSW9ydC9Jb3J0UGFyc2VyTGkNCj4gYi5pbmYNCj4g Pg0KPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNl cnMvSW9ydC9Jb3J0UGFyc2VyTGkNCj4gYi5pbg0KPiA+IGYNCj4gPiA+PiBuZXcgZmlsZSBtb2Rl IDEwMDY0NA0KPiA+ID4+IGluZGV4DQo+ID4gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMC4uMDBlZGJkNGZlNzc4YmQ5YjYwMWUyDQo+ID4gY2FmM2FjN2ZkMzM2OGQ5OTQ1 Zg0KPiA+ID4+IC0tLSAvZGV2L251bGwNCj4gPiA+PiArKysNCj4gPg0KPiBiL1NoZWxsUGtnL0xp YnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvSW9ydC9Jb3J0UGFyc2Vy TGkNCj4gYi5pbg0KPiA+IGYNCj4gPiA+PiBAQCAtMCwwICsxLDMzIEBADQo+ID4gPj4gKyMjIEBm aWxlDQo+ID4gPj4gKyMNCj4gPiA+PiArIyAgQ29weXJpZ2h0IChjKSAyMDE3IC0gMjAxOCwgQVJN IExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ID4gPj4gKyMNCj4gPiA+PiArIyAgVGhp cyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiA+ID4+ICsjICBhcmUg bGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9u cyBvZg0KPiB0aGUNCj4gPiBCU0QgTGljZW5zZQ0KPiA+ID4+ICsjICB3aGljaCBhY2NvbXBhbmll cyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5DQo+ IGJlDQo+ID4gZm91bmQgYXQNCj4gPiA+PiArIyAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vu c2VzL2JzZC1saWNlbnNlLnBocA0KPiA+ID4+ICsjDQo+ID4gPj4gKyMgIFRIRSBQUk9HUkFNIElT IERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMNCj4gSVMiDQo+ID4g QkFTSVMsDQo+ID4gPj4gKyMgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMg T0YgQU5ZIEtJTkQsIEVJVEhFUg0KPiA+IEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gPiA+PiArIyMN Cj4gPiA+PiArDQo+ID4gPj4gK1tEZWZpbmVzXQ0KPiA+ID4+ICsgIElORl9WRVJTSU9OICAgID0g MHgwMDAxMDAxOQ0KPiA+ID4+ICsgIEJBU0VfTkFNRSAgICAgID0gSW9ydFBhcnNlckxpYg0KPiA+ ID4+ICsgIEZJTEVfR1VJRCAgICAgID0gMzFDRjlBNTAtMEIyQS00RjMzLUJEMkMtMzYwNkUzNUFB OUVGDQo+ID4gPj4gKyAgVkVSU0lPTl9TVFJJTkcgPSAxLjANCj4gPiA+PiArICBNT0RVTEVfVFlQ RSAgICA9IERYRV9EUklWRVINCj4gPiA+PiArICBMSUJSQVJZX0NMQVNTICA9IE5VTEx8RFhFX0RS SVZFUg0KPiA+ID4+ICsgIENPTlNUUlVDVE9SICAgID0gSW9ydFBhcnNlckxpYkNvbnN0cnVjdG9y DQo+ID4gPj4gKyAgREVTVFJVQ1RPUiAgICAgPSBJb3J0UGFyc2VyTGliRGVzdHJ1Y3Rvcg0KPiA+ ID4+ICsNCj4gPiA+PiArW1NvdXJjZXNdDQo+ID4gPj4gKyAgSW9ydFBhcnNlci5jDQo+ID4gPj4g Kw0KPiA+ID4+ICtbUGFja2FnZXNdDQo+ID4gPj4gKyAgTWRlUGtnL01kZVBrZy5kZWMNCj4gPiA+ PiArICBTaGVsbFBrZy9TaGVsbFBrZy5kZWMNCj4gPiA+PiArICBNZGVNb2R1bGVQa2cvTWRlTW9k dWxlUGtnLmRlYw0KPiA+ID4+ICsNCj4gPiA+PiArW0xpYnJhcnlDbGFzc2VzXQ0KPiA+ID4+ICsg IFNoZWxsQWNwaVZpZXdDb21tYW5kTGliDQo+ID4gPj4gZGlmZiAtLWdpdA0KPiA+DQo+IGEvU2hl bGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9NYWR0L01h ZHRQYXJzDQo+IGVyLmMNCj4gPg0KPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZp ZXdDb21tYW5kTGliL1BhcnNlcnMvTWFkdC9NYWR0UGFycw0KPiBlci5jDQo+ID4gPj4gbmV3IGZp bGUgbW9kZSAxMDA2NDQNCj4gPiA+PiBpbmRleA0KPiA+IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAuLjVhMzBjMDQxOTUxNDVjODhkMzkyZA0KPiA+IGRjYTE2NGEwNjA2 MzliNzQ1NmENCj4gPiA+PiAtLS0gL2Rldi9udWxsDQo+ID4gPj4gKysrDQo+ID4NCj4gYi9TaGVs bFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL01hZHQvTWFk dFBhcnMNCj4gZXIuYw0KPiA+ID4+IEBAIC0wLDAgKzEsMzU4IEBADQo+ID4gPj4gKy8qKg0KPiA+ ID4+ICsgIE1BRFQgdGFibGUgcGFyc2VyDQo+ID4gPj4gKw0KPiA+ID4+ICsgIENvcHlyaWdodCAo YykgMjAxNiAtIDIwMTgsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiA+ID4+ ICsgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCj4gPiA+PiAr ICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29u ZGl0aW9ucyBvZg0KPiB0aGUNCj4gPiBCU0QgTGljZW5zZQ0KPiA+ID4+ICsgIHdoaWNoIGFjY29t cGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBt YXkNCj4gYmUNCj4gPiBmb3VuZCBhdA0KPiA+ID4+ICsgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9s aWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4gPiA+PiArDQo+ID4gPj4gKyAgVEhFIFBST0dSQU0g SVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUw0KPiBJUyINCj4g PiBCQVNJUywNCj4gPiA+PiArICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05T IE9GIEFOWSBLSU5ELCBFSVRIRVINCj4gPiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ID4gPj4gKw0K PiA+ID4+ICsgIEBwYXIgUmVmZXJlbmNlKHMpOg0KPiA+ID4+ICsgICAgLSBBQ1BJIDYuMiBTcGVj aWZpY2F0aW9uIC0gRXJyYXRhIEEsIFNlcHRlbWJlciAyMDE3DQo+ID4gPj4gKyoqLw0KPiA+ID4+ ICsNCj4gPiA+PiArI2luY2x1ZGUgPEluZHVzdHJ5U3RhbmRhcmQvQWNwaS5oPg0KPiA+ID4+ICsj aW5jbHVkZSA8TGlicmFyeS9VZWZpTGliLmg+DQo+ID4gPj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0Fj cGlWaWV3L0FjcGlQYXJzZXIuaD4NCj4gPiA+PiArI2luY2x1ZGUgPExpYnJhcnkvQWNwaVZpZXcv QWNwaVRhYmxlUGFyc2VyLmg+DQo+ID4gPj4gKw0KPiA+ID4+ICsvLyBMb2NhbCBWYXJpYWJsZXMN Cj4gPiA+PiArU1RBVElDIENPTlNUIFVJTlQ4KiBNYWR0SW50ZXJydXB0Q29udHJvbGxlclR5cGU7 DQo+ID4gPj4gK1NUQVRJQyBDT05TVCBVSU5UOCogTWFkdEludGVycnVwdENvbnRyb2xsZXJMZW5n dGg7DQo+ID4gPj4gK1NUQVRJQyBBQ1BJX0RFU0NSSVBUSU9OX0hFQURFUl9JTkZPIEFjcGlIZHJJ bmZvOw0KPiA+ID4+ICsNCj4gPiA+PiArLy8gRm9yd2FyZCBkZWNsYXJhdGlvbnMNCj4gPiA+PiAr U1RBVElDDQo+ID4gPj4gK1ZPSUQNCj4gPiA+PiArRUZJQVBJDQo+ID4gPj4gK1ZhbGlkYXRlR0lD RFN5c3RlbVZlY3RvckJhc2UgKA0KPiA+ID4+ICsgIElOIFVJTlQ4KiBQdHIsDQo+ID4gPj4gKyAg SU4gVk9JRCogIENvbnRleHQNCj4gPiA+PiArKTsNCj4gPiA+PiArDQo+ID4gPj4gKy8qKiBBbiBB Q1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBHSUNDIEludGVycnVwdA0KPiA+ID4+ICsg ICAgQ29udHJvbGxlciBTdHJ1Y3R1cmUuDQo+ID4gPj4gKyovDQo+ID4gPj4gK1NUQVRJQyBDT05T VCBBQ1BJX1BBUlNFUiBHaWNDUGFyc2VyW10gPSB7DQo+ID4gPj4gKyAge0wiVHlwZSIsIDEsIDAs IEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ID4+ICsgIHtMIkxlbmd0aCIs IDEsIDEsIEwiJWQiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPiA+PiArICB7TCJSZXNl cnZlZCIsIDIsIDIsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ID4+ICsN Cj4gPiA+PiArICB7TCJDUFUgSW50ZXJmYWNlIE51bWJlciIsIDQsIDQsIEwiMHgleCIsIE5VTEws IE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ID4+ICsgIHtMIkFDUEkgUHJvY2Vzc29yIFVJRCIsIDQs IDgsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ID4+ICsgIHtMIkZsYWdz IiwgNCwgMTIsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ID4+ICsgIHtM IlBhcmtpbmcgUHJvdG9jb2wgVmVyc2lvbiIsIDQsIDE2LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBO VUxMLA0KPiBOVUxMfSwNCj4gPiA+PiArDQo+ID4gPj4gKyAge0wiUGVyZm9ybWFuY2UgSW50ZXJy dXB0IEdTSVYiLCA0LCAyMCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwNCj4gPiBOVUxMfSwN Cj4gPiA+PiArICB7TCJQYXJrZWQgQWRkcmVzcyIsIDgsIDI0LCBMIjB4JWx4IiwgTlVMTCwgTlVM TCwgTlVMTCwgTlVMTH0sDQo+ID4gPj4gKyAge0wiUGh5c2ljYWwgQmFzZSBBZGRyZXNzIiwgOCwg MzIsIEwiMHglbHgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPiA+PiArICB7TCJHSUNW IiwgOCwgNDAsIEwiMHglbHgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPiA+PiArICB7 TCJHSUNIIiwgOCwgNDgsIEwiMHglbHgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPiA+ PiArICB7TCJWR0lDIE1haW50ZW5hbmNlIGludGVycnVwdCIsIDQsIDU2LCBMIjB4JXgiLCBOVUxM LCBOVUxMLCBOVUxMLA0KPiA+IE5VTEx9LA0KPiA+ID4+ICsgIHtMIkdJQ1IgQmFzZSBBZGRyZXNz IiwgOCwgNjAsIEwiMHglbHgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPiA+PiArICB7 TCJNUElEUiIsIDgsIDY4LCBMIjB4JWx4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4g Pj4gKyAge0wiUHJvY2Vzc29yIFBvd2VyIEVmZmljaWVuY3kgQ2xhc3MiLCAxLCA3NiwgTCIweCV4 IiwgTlVMTCwgTlVMTCwNCj4gTlVMTCwNCj4gPiA+PiArICAgTlVMTH0sDQo+ID4gPj4gKyAge0wi UmVzZXJ2ZWQiLCAzLCA3NywgTCIleCAleCAleCIsIER1bXAzQ2hhcnMsIE5VTEwsIE5VTEwsIE5V TEx9DQo+ID4gPj4gK307DQo+ID4gPj4gKw0KPiA+ID4+ICsvKiogQW4gQUNQSV9QQVJTRVIgYXJy YXkgZGVzY3JpYmluZyB0aGUgR0lDRCBJbnRlcnJ1cHQNCj4gPiA+PiArICAgIENvbnRyb2xsZXIg U3RydWN0dXJlLg0KPiA+ID4+ICsqLw0KPiA+ID4+ICtTVEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIg R2ljRFBhcnNlcltdID0gew0KPiA+ID4+ICsgIHtMIlR5cGUiLCAxLCAwLCBMIjB4JXgiLCBOVUxM LCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPiA+PiArICB7TCJMZW5ndGgiLCAxLCAxLCBMIiVkIiwg TlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4gPj4gKyAge0wiUmVzZXJ2ZWQiLCAyLCAyLCBM IjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPiA+PiArDQo+ID4gPj4gKyAge0wi R0lDIElEIiwgNCwgNCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4gPj4g KyAge0wiUGh5c2ljYWwgQmFzZSBBZGRyZXNzIiwgOCwgOCwgTCIweCVseCIsIE5VTEwsIE5VTEws IE5VTEwsIE5VTEx9LA0KPiA+ID4+ICsgIHtMIlN5c3RlbSBWZWN0b3IgQmFzZSIsIDQsIDE2LCBM IjB4JXgiLCBOVUxMLCBOVUxMLA0KPiA+ID4+ICsgICAgVmFsaWRhdGVHSUNEU3lzdGVtVmVjdG9y QmFzZSwgTlVMTH0sDQo+ID4gPj4gKyAge0wiR0lDIFZlcnNpb24iLCAxLCAyMCwgTCIlZCIsIE5V TEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ID4+ICsgIHtMIlJlc2VydmVkIiwgMywgMjEsIEwi JXggJXggJXgiLCBEdW1wM0NoYXJzLCBOVUxMLCBOVUxMLCBOVUxMfQ0KPiA+ID4+ICt9Ow0KPiA+ ID4+ICsNCj4gPiA+PiArLyoqIEFuIEFDUElfUEFSU0VSIGFycmF5IGRlc2NyaWJpbmcgdGhlIE1T SSBGcmFtZSBJbnRlcnJ1cHQNCj4gPiA+PiArICAgIENvbnRyb2xsZXIgU3RydWN0dXJlLg0KPiA+ ID4+ICsqLw0KPiA+ID4+ICtTVEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgR2ljTVNJRnJhbWVQYXJz ZXJbXSA9IHsNCj4gPiA+PiArICB7TCJUeXBlIiwgMSwgMCwgTCIweCV4IiwgTlVMTCwgTlVMTCwg TlVMTCwgTlVMTH0sDQo+ID4gPj4gKyAge0wiTGVuZ3RoIiwgMSwgMSwgTCIlZCIsIE5VTEwsIE5V TEwsIE5VTEwsIE5VTEx9LA0KPiA+ID4+ICsgIHtMIlJlc2VydmVkIiwgMiwgMiwgTCIweCV4Iiwg TlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4gPj4gKw0KPiA+ID4+ICsgIHtMIk1TSSBGcmFt ZSBJRCIsIDQsIDQsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ID4+ICsg IHtMIlBoeXNpY2FsIEJhc2UgQWRkcmVzcyIsIDgsIDgsIEwiMHglbHgiLCBOVUxMLCBOVUxMLCBO VUxMLCBOVUxMfSwNCj4gPiA+PiArICB7TCJGbGFncyIsIDQsIDE2LCBMIjB4JXgiLCBOVUxMLCBO VUxMLCBOVUxMLCBOVUxMfSwNCj4gPiA+PiArDQo+ID4gPj4gKyAge0wiU1BJIENvdW50IiwgMiwg MjAsIEwiJWQiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPiA+PiArICB7TCJTUEkgQmFz ZSIsIDIsIDIyLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfQ0KPiA+ID4+ICt9Ow0K PiA+ID4+ICsNCj4gPiA+PiArLyoqIEFuIEFDUElfUEFSU0VSIGFycmF5IGRlc2NyaWJpbmcgdGhl IEdJQ1IgSW50ZXJydXB0DQo+ID4gPj4gKyAgICBDb250cm9sbGVyIFN0cnVjdHVyZS4NCj4gPiA+ PiArKi8NCj4gPiA+PiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VSIEdpY1JQYXJzZXJbXSA9IHsN Cj4gPiA+PiArICB7TCJUeXBlIiwgMSwgMCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVM TH0sDQo+ID4gPj4gKyAge0wiTGVuZ3RoIiwgMSwgMSwgTCIlZCIsIE5VTEwsIE5VTEwsIE5VTEws IE5VTEx9LA0KPiA+ID4+ICsgIHtMIlJlc2VydmVkIiwgMiwgMiwgTCIweCV4IiwgTlVMTCwgTlVM TCwgTlVMTCwgTlVMTH0sDQo+ID4gPj4gKw0KPiA+ID4+ICsgIHtMIkRpc2NvdmVyeSBSYW5nZSBC YXNlIEFkZHJlc3MiLCA4LCA0LCBMIjB4JWx4IiwgTlVMTCwgTlVMTCwgTlVMTCwNCj4gPiA+PiAr ICAgTlVMTH0sDQo+ID4gPj4gKyAge0wiRGlzY292ZXJ5IFJhbmdlIExlbmd0aCIsIDQsIDEyLCBM IjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfQ0KPiA+ID4+ICt9Ow0KPiA+ID4+ICsNCj4g PiA+PiArLyoqIEFuIEFDUElfUEFSU0VSIGFycmF5IGRlc2NyaWJpbmcgdGhlIEdJQyBJVFMgSW50 ZXJydXB0DQo+ID4gPj4gKyAgICBDb250cm9sbGVyIFN0cnVjdHVyZS4NCj4gPiA+PiArKi8NCj4g PiA+PiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VSIEdpY0lUU1BhcnNlcltdID0gew0KPiA+ID4+ ICsgIHtMIlR5cGUiLCAxLCAwLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4g PiA+PiArICB7TCJMZW5ndGgiLCAxLCAxLCBMIiVkIiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0s DQo+ID4gPj4gKyAge0wiUmVzZXJ2ZWQiLCAyLCAyLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxM LCBOVUxMfSwNCj4gPiA+PiArDQo+ID4gPj4gKyAge0wiR0lDIElUUyBJRCIsIDQsIDQsIEwiMHgl eCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ID4+ICsgIHtMIlBoeXNpY2FsIEJhc2Ug QWRkcmVzcyIsIDgsIDgsIEwiMHglbHgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPiA+ PiArICB7TCJSZXNlcnZlZCIsIDQsIDE2LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxM fQ0KPiA+ID4+ICt9Ow0KPiA+ID4+ICsNCj4gPiA+PiArLyoqIEFuIEFDUElfUEFSU0VSIGFycmF5 IGRlc2NyaWJpbmcgdGhlIEFDUEkgTUFEVCBUYWJsZS4NCj4gPiA+PiArKi8NCj4gPiA+PiArU1RB VElDIENPTlNUIEFDUElfUEFSU0VSIE1hZHRQYXJzZXJbXSA9IHsNCj4gPiA+PiArICBQQVJTRV9B Q1BJX0hFQURFUiAoJkFjcGlIZHJJbmZvKSwNCj4gPiA+PiArICB7TCJMb2NhbCBJbnRlcnJ1cHQg Q29udHJvbGxlciBBZGRyZXNzIiwgNCwgMzYsIEwiMHgleCIsIE5VTEwsIE5VTEwsDQo+IE5VTEws DQo+ID4gPj4gKyAgIE5VTEx9LA0KPiA+ID4+ICsgIHtMIkZsYWdzIiwgNCwgNDAsIEwiMHgleCIs IE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9DQo+ID4gPj4gK307DQo+ID4gPj4gKw0KPiA+ID4+ICsv KiogQW4gQUNQSV9QQVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0aGUgTUFEVCBJbnRlcnJ1cHQNCj4g PiA+PiArICAgIENvbnRyb2xsZXIgU3RydWN0dXJlIEhlYWRlciBTdHJ1Y3R1cmUuDQo+ID4gPj4g KyovDQo+ID4gPj4gK1NUQVRJQyBDT05TVCBBQ1BJX1BBUlNFUiBNYWR0SW50ZXJydXB0Q29udHJv bGxlckhlYWRlclBhcnNlcltdID0NCj4gew0KPiA+ID4+ICsgIHtOVUxMLCAxLCAwLCBOVUxMLCBO VUxMLCAoVk9JRCoqKSZNYWR0SW50ZXJydXB0Q29udHJvbGxlclR5cGUsDQo+IE5VTEwsDQo+ID4g TlVMTH0sDQo+ID4gPj4gKyAge0wiTGVuZ3RoIiwgMSwgMSwgTlVMTCwgTlVMTCwNCj4gKFZPSUQq KikmTWFkdEludGVycnVwdENvbnRyb2xsZXJMZW5ndGgsDQo+ID4gTlVMTCwNCj4gPiA+PiArICAg TlVMTH0sDQo+ID4gPj4gKyAge0wiUmVzZXJ2ZWQiLCAyLCAyLCBOVUxMLCBOVUxMLCBOVUxMLCBO VUxMLCBOVUxMfQ0KPiA+ID4+ICt9Ow0KPiA+ID4+ICsNCj4gPiA+PiArLyoqIFRoaXMgZnVuY3Rp b24gdmFsaWRhdGVzIHRoZSBTeXN0ZW0gVmVjdG9yIEJhc2UgaW4gdGhlIEdJQ0QuDQo+ID4gPj4g Kw0KPiA+ID4+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2Yg dGhlIGZpZWxkIGRhdGEuDQo+ID4gPj4gKyAgQHBhcmFtIFtpbl0gQ29udGV4dCBQb2ludGVyIHRv IGNvbnRleHQgc3BlY2lmaWMgaW5mb3JtYXRpb24gZS5nLiB0aGlzDQo+ID4gPj4gKyAgICAgICAg ICAgICAgICAgICAgICBjb3VsZCBiZSBhIHBvaW50ZXIgdG8gdGhlIEFDUEkgdGFibGUgaGVhZGVy Lg0KPiA+ID4+ICsqLw0KPiA+ID4+ICtTVEFUSUMNCj4gPiA+PiArVk9JRA0KPiA+ID4+ICtFRklB UEkNCj4gPiA+PiArVmFsaWRhdGVHSUNEU3lzdGVtVmVjdG9yQmFzZSAoDQo+ID4gPj4gKyAgSU4g VUlOVDgqIFB0ciwNCj4gPiA+PiArICBJTiBWT0lEKiAgQ29udGV4dA0KPiA+ID4+ICspDQo+ID4g Pj4gK3sNCj4gPiA+PiArICBpZiAoKihVSU5UMzIqKVB0ciAhPSAwKSB7DQo+ID4gPj4gKyAgICBJ bmNyZW1lbnRFcnJvckNvdW50ICgpOw0KPiA+ID4+ICsgICAgUHJpbnQgKA0KPiA+ID4+ICsgICAg ICBMIlxuRVJST1I6IFN5c3RlbSBWZWN0b3IgQmFzZSBtdXN0IGJlIHplcm8uIg0KPiA+ID4+ICsg ICAgKTsNCj4gPiA+PiArICB9DQo+ID4gPj4gK30NCj4gPiA+PiArDQo+ID4gPj4gKy8qKiBUaGlz IGZ1bmN0aW9uIHBhcnNlcyB0aGUgQUNQSSBNQURUIHRhYmxlLg0KPiA+ID4+ICsgIFdoZW4gdHJh Y2UgaXMgZW5hYmxlZCB0aGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgTUFEVCB0YWJsZSBhbmQNCj4g PiA+PiArICB0cmFjZXMgdGhlIEFDUEkgdGFibGUgZmllbGRzLg0KPiA+ID4+ICsNCj4gPiA+PiAr ICBUaGlzIGZ1bmN0aW9uIGN1cnJlbnRseSBwYXJzZXMgdGhlIGZvbGxvd2luZyBJbnRlcnJ1cHQg Q29udHJvbGxlcg0KPiA+ID4+ICsgIFN0cnVjdHVyZXM6DQo+ID4gPj4gKyAgICAtIEdJQ0MNCj4g PiA+PiArICAgIC0gR0lDRA0KPiA+ID4+ICsgICAgLSBHSUMgTVNJIEZyYW1lDQo+ID4gPj4gKyAg ICAtIEdJQ1INCj4gPiA+PiArICAgIC0gR0lDIElUUw0KPiA+ID4+ICsNCj4gPiA+PiArICBUaGlz IGZ1bmN0aW9uIGFsc28gcGVyZm9ybXMgdmFsaWRhdGlvbiBvZiB0aGUgQUNQSSB0YWJsZSBmaWVs ZHMuDQo+ID4gPj4gKw0KPiA+ID4+ICsgIEBwYXJhbSBbaW5dIFRyYWNlICAgICAgICAgICAgICBJ ZiBUUlVFLCB0cmFjZSB0aGUgQUNQSSBmaWVsZHMuDQo+ID4gPj4gKyAgQHBhcmFtIFtpbl0gUHRy ICAgICAgICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ID4g Pj4gKyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxlTGVuZ3RoICAgIExlbmd0aCBvZiB0aGUgQUNQSSB0 YWJsZS4NCj4gPiA+PiArICBAcGFyYW0gW2luXSBBY3BpVGFibGVSZXZpc2lvbiAgUmV2aXNpb24g b2YgdGhlIEFDUEkgdGFibGUuDQo+ID4gPj4gKyovDQo+ID4gPj4gK1ZPSUQNCj4gPiA+PiArRUZJ QVBJDQo+ID4gPj4gK1BhcnNlQWNwaU1hZHQgKA0KPiA+ID4+ICsgIElOIEJPT0xFQU4gVHJhY2Us DQo+ID4gPj4gKyAgSU4gVUlOVDgqICBQdHIsDQo+ID4gPj4gKyAgSU4gVUlOVDMyICBBY3BpVGFi bGVMZW5ndGgsDQo+ID4gPj4gKyAgSU4gVUlOVDggICBBY3BpVGFibGVSZXZpc2lvbg0KPiA+ID4+ ICsgICkNCj4gPiA+PiArew0KPiA+ID4+ICsgIFVJTlQzMiBPZmZzZXQ7DQo+ID4gPj4gKyAgVUlO VDgqIEludGVycnVwdENvbnRvbGxlclB0cjsNCj4gPiA+PiArICBVSU5UMzIgR0lDRENvdW50ID0g MDsNCj4gPiA+PiArDQo+ID4gPj4gKyAgaWYgKCFUcmFjZSkgew0KPiA+ID4+ICsgICAgcmV0dXJu Ow0KPiA+ID4+ICsgIH0NCj4gPiA+PiArDQo+ID4gPj4gKyAgT2Zmc2V0ID0gUGFyc2VBY3BpICgN Cj4gPiA+PiArICAgICAgICAgICAgIFRSVUUsDQo+ID4gPj4gKyAgICAgICAgICAgICAwLA0KPiA+ ID4+ICsgICAgICAgICAgICAgIk1BRFQiLA0KPiA+ID4+ICsgICAgICAgICAgICAgUHRyLA0KPiA+ ID4+ICsgICAgICAgICAgICAgQWNwaVRhYmxlTGVuZ3RoLA0KPiA+ID4+ICsgICAgICAgICAgICAg UEFSU0VSX1BBUkFNUyAoTWFkdFBhcnNlcikNCj4gPiA+PiArICAgICAgICAgICAgICk7DQo+ID4g Pj4gKyAgSW50ZXJydXB0Q29udG9sbGVyUHRyID0gUHRyICsgT2Zmc2V0Ow0KPiA+ID4+ICsNCj4g PiA+PiArICB3aGlsZSAoT2Zmc2V0IDwgQWNwaVRhYmxlTGVuZ3RoKSB7DQo+ID4gPj4gKyAgICAv LyBQYXJzZSBJbnRlcnJ1cHQgQ29udHJvbGxlciBTdHJ1Y3R1cmUgdG8gb2J0YWluIExlbmd0aC4N Cj4gPiA+PiArICAgIFBhcnNlQWNwaSAoDQo+ID4gPj4gKyAgICAgIEZBTFNFLA0KPiA+ID4+ICsg ICAgICAwLA0KPiA+ID4+ICsgICAgICBOVUxMLA0KPiA+ID4+ICsgICAgICBJbnRlcnJ1cHRDb250 b2xsZXJQdHIsDQo+ID4gPj4gKyAgICAgIDIsICAvLyAgTGVuZ3RoIGlzIDEgYnl0ZSBhdCBvZmZz ZXQgMQ0KPiA+ID4+ICsgICAgICBQQVJTRVJfUEFSQU1TIChNYWR0SW50ZXJydXB0Q29udHJvbGxl ckhlYWRlclBhcnNlcikNCj4gPiA+PiArICAgICAgKTsNCj4gPiA+PiArDQo+ID4gPj4gKyAgICBp ZiAoKChPZmZzZXQgKyAoKk1hZHRJbnRlcnJ1cHRDb250cm9sbGVyTGVuZ3RoKSkgPiBBY3BpVGFi bGVMZW5ndGgpDQo+IHx8DQo+ID4gPj4gKyAgICAgICAgKCpNYWR0SW50ZXJydXB0Q29udHJvbGxl ckxlbmd0aCA8IDQpKSB7DQo+ID4gPj4gKyAgICAgIEluY3JlbWVudEVycm9yQ291bnQgKCk7DQo+ ID4gPj4gKyAgICAgIFByaW50ICgNCj4gPiA+PiArICAgICAgICAgTCJFUlJPUjogSW52YWxpZCBJ bnRlcnJ1cHQgQ29udHJvbGxlciBMZW5ndGgsIg0KPiA+ID4+ICsgICAgICAgICAgIiBUeXBlID0g JWQsIExlbmd0aCA9ICVkXG4iLA0KPiA+ID4+ICsgICAgICAgICAqTWFkdEludGVycnVwdENvbnRy b2xsZXJUeXBlLA0KPiA+ID4+ICsgICAgICAgICAqTWFkdEludGVycnVwdENvbnRyb2xsZXJMZW5n dGgNCj4gPiA+PiArICAgICAgICAgKTsNCj4gPiA+PiArICAgICAgYnJlYWs7DQo+ID4gPj4gKyAg ICB9DQo+ID4gPj4gKw0KPiA+ID4+ICsgICAgc3dpdGNoICgqTWFkdEludGVycnVwdENvbnRyb2xs ZXJUeXBlKSB7DQo+ID4gPj4gKyAgICAgIGNhc2UgRUZJX0FDUElfNl8yX0dJQzogew0KPiA+ID4+ ICsgICAgICAgIFBhcnNlQWNwaSAoDQo+ID4gPj4gKyAgICAgICAgICBUUlVFLA0KPiA+ID4+ICsg ICAgICAgICAgMiwNCj4gPiA+PiArICAgICAgICAgICJHSUNDIiwNCj4gPiA+PiArICAgICAgICAg IEludGVycnVwdENvbnRvbGxlclB0ciwNCj4gPiA+PiArICAgICAgICAgICpNYWR0SW50ZXJydXB0 Q29udHJvbGxlckxlbmd0aCwNCj4gPiA+PiArICAgICAgICAgIFBBUlNFUl9QQVJBTVMgKEdpY0NQ YXJzZXIpDQo+ID4gPj4gKyAgICAgICAgICApOw0KPiA+ID4+ICsgICAgICAgIGJyZWFrOw0KPiA+ ID4+ICsgICAgICB9DQo+ID4gPj4gKw0KPiA+ID4+ICsgICAgICBjYXNlIEVGSV9BQ1BJXzZfMl9H SUNEOiB7DQo+ID4gPj4gKyAgICAgICAgaWYgKCsrR0lDRENvdW50ID4gMSkgew0KPiA+ID4+ICsg ICAgICAgICAgSW5jcmVtZW50RXJyb3JDb3VudCAoKTsNCj4gPiA+PiArICAgICAgICAgIFByaW50 ICgNCj4gPiA+PiArICAgICAgICAgICAgTCJFUlJPUjogT25seSBvbmUgR0lDRCBtdXN0IGJlIHBy ZXNlbnQsIg0KPiA+ID4+ICsgICAgICAgICAgICAgICIgR0lDRENvdW50ID0gJWRcbiIsDQo+ID4g Pj4gKyAgICAgICAgICAgIEdJQ0RDb3VudA0KPiA+ID4+ICsgICAgICAgICAgICApOw0KPiA+ID4+ ICsgICAgICAgIH0NCj4gPiA+PiArICAgICAgICBQYXJzZUFjcGkgKA0KPiA+ID4+ICsgICAgICAg ICAgVFJVRSwNCj4gPiA+PiArICAgICAgICAgIDIsDQo+ID4gPj4gKyAgICAgICAgICAiR0lDRCIs DQo+ID4gPj4gKyAgICAgICAgICBJbnRlcnJ1cHRDb250b2xsZXJQdHIsDQo+ID4gPj4gKyAgICAg ICAgICAqTWFkdEludGVycnVwdENvbnRyb2xsZXJMZW5ndGgsDQo+ID4gPj4gKyAgICAgICAgICBQ QVJTRVJfUEFSQU1TIChHaWNEUGFyc2VyKQ0KPiA+ID4+ICsgICAgICAgICAgKTsNCj4gPiA+PiAr ICAgICAgICBicmVhazsNCj4gPiA+PiArICAgICAgfQ0KPiA+ID4+ICsNCj4gPiA+PiArICAgICAg Y2FzZSBFRklfQUNQSV82XzJfR0lDX01TSV9GUkFNRTogew0KPiA+ID4+ICsgICAgICAgIFBhcnNl QWNwaSAoDQo+ID4gPj4gKyAgICAgICAgICBUUlVFLA0KPiA+ID4+ICsgICAgICAgICAgMiwNCj4g PiA+PiArICAgICAgICAgICJHSUMgTVNJIEZyYW1lIiwNCj4gPiA+PiArICAgICAgICAgIEludGVy cnVwdENvbnRvbGxlclB0ciwNCj4gPiA+PiArICAgICAgICAgICpNYWR0SW50ZXJydXB0Q29udHJv bGxlckxlbmd0aCwNCj4gPiA+PiArICAgICAgICAgIFBBUlNFUl9QQVJBTVMgKEdpY01TSUZyYW1l UGFyc2VyKQ0KPiA+ID4+ICsgICAgICAgICAgKTsNCj4gPiA+PiArICAgICAgICBicmVhazsNCj4g PiA+PiArICAgICAgfQ0KPiA+ID4+ICsNCj4gPiA+PiArICAgICAgY2FzZSBFRklfQUNQSV82XzJf R0lDUjogew0KPiA+ID4+ICsgICAgICAgIFBhcnNlQWNwaSAoDQo+ID4gPj4gKyAgICAgICAgICBU UlVFLA0KPiA+ID4+ICsgICAgICAgICAgMiwNCj4gPiA+PiArICAgICAgICAgICJHSUNSIiwNCj4g PiA+PiArICAgICAgICAgIEludGVycnVwdENvbnRvbGxlclB0ciwNCj4gPiA+PiArICAgICAgICAg ICpNYWR0SW50ZXJydXB0Q29udHJvbGxlckxlbmd0aCwNCj4gPiA+PiArICAgICAgICAgIFBBUlNF Ul9QQVJBTVMgKEdpY1JQYXJzZXIpDQo+ID4gPj4gKyAgICAgICAgICApOw0KPiA+ID4+ICsgICAg ICAgIGJyZWFrOw0KPiA+ID4+ICsgICAgICB9DQo+ID4gPj4gKw0KPiA+ID4+ICsgICAgICBjYXNl IEVGSV9BQ1BJXzZfMl9HSUNfSVRTOiB7DQo+ID4gPj4gKyAgICAgICAgUGFyc2VBY3BpICgNCj4g PiA+PiArICAgICAgICAgIFRSVUUsDQo+ID4gPj4gKyAgICAgICAgICAyLA0KPiA+ID4+ICsgICAg ICAgICAgIkdJQyBJVFMiLA0KPiA+ID4+ICsgICAgICAgICAgSW50ZXJydXB0Q29udG9sbGVyUHRy LA0KPiA+ID4+ICsgICAgICAgICAgKk1hZHRJbnRlcnJ1cHRDb250cm9sbGVyTGVuZ3RoLA0KPiA+ ID4+ICsgICAgICAgICAgUEFSU0VSX1BBUkFNUyAoR2ljSVRTUGFyc2VyKQ0KPiA+ID4+ICsgICAg ICAgICAgKTsNCj4gPiA+PiArICAgICAgICBicmVhazsNCj4gPiA+PiArICAgICAgfQ0KPiA+ID4+ ICsNCj4gPiA+PiArICAgICAgZGVmYXVsdDogew0KPiA+ID4+ICsgICAgICAgIEluY3JlbWVudEVy cm9yQ291bnQgKCk7DQo+ID4gPj4gKyAgICAgICAgUHJpbnQgKA0KPiA+ID4+ICsgICAgICAgICAg TCJFUlJPUjogVW5rbm93biBJbnRlcnJ1cHQgQ29udHJvbGxlciBTdHJ1Y3R1cmUsIg0KPiA+ID4+ ICsgICAgICAgICAgICAiIFR5cGUgPSAlZCwgTGVuZ3RoID0gJWRcbiIsDQo+ID4gPj4gKyAgICAg ICAgICAqTWFkdEludGVycnVwdENvbnRyb2xsZXJUeXBlLA0KPiA+ID4+ICsgICAgICAgICAgKk1h ZHRJbnRlcnJ1cHRDb250cm9sbGVyTGVuZ3RoDQo+ID4gPj4gKyAgICAgICAgICApOw0KPiA+ID4+ ICsgICAgICB9DQo+ID4gPj4gKyAgICB9IC8vIHN3aXRjaA0KPiA+ID4+ICsNCj4gPiA+PiArICAg IEludGVycnVwdENvbnRvbGxlclB0ciArPSAqTWFkdEludGVycnVwdENvbnRyb2xsZXJMZW5ndGg7 DQo+ID4gPj4gKyAgICBPZmZzZXQgKz0gKk1hZHRJbnRlcnJ1cHRDb250cm9sbGVyTGVuZ3RoOw0K PiA+ID4+ICsgIH0gLy8gd2hpbGUNCj4gPiA+PiArfQ0KPiA+ID4+ICsNCj4gPiA+PiArLyoqIFJl Z2lzdGVyIHRoZSBwYXJzZXIuDQo+ID4gPj4gKw0KPiA+ID4+ICsgIEBwYXJhbSBbaW5dICBJbWFn ZUhhbmRsZSAgVGhlIGhhbmRsZSB0byB0aGUgaW1hZ2UuDQo+ID4gPj4gKyAgQHBhcmFtIFtpbl0g IFN5c3RlbVRhYmxlICBQb2ludGVyIHRvIHRoZSBTeXN0ZW0gVGFibGUuDQo+ID4gPj4gKw0KPiA+ ID4+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBwYXJzZXIgaXMgcmVnaXN0 ZXJlZC4NCj4gPiA+PiArICBAcmV0dmFsIEVGSV9BTFJFQURZX1NUQVJURUQgICBUaGUgcGFyc2Vy IGZvciB0aGUgQUNQSSBUYWJsZQ0KPiA+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHdhcyBhbHJlYWR5IHJlZ2lzdGVyZWQuDQo+ID4gPj4gKyAgQHJldHZhbCBFRklfSU5WQUxJ RF9QQVJBTUVURVIgQSBwYXJhbWV0ZXIgaXMgaW52YWxpZA0KPiA+ID4+ICsgIEByZXR2YWwgRUZJ X09VVF9PRl9SRVNPVVJDRVMgIE5vIHNwYWNlIHRvIHJlZ2lzdGVyIHRoZQ0KPiA+ID4+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlci4NCj4gPiA+PiArKi8NCj4gPiA+PiAr RUZJX1NUQVRVUw0KPiA+ID4+ICtFRklBUEkNCj4gPiA+PiArTWFkdFBhcnNlckxpYkNvbnN0cnVj dG9yICgNCj4gPiA+PiArICBJTiBDT05TVCBFRklfSEFORExFICAgICAgICAgICAgICAgIEltYWdl SGFuZGxlLA0KPiA+ID4+ICsgIElOICAgICAgIEVGSV9TWVNURU1fVEFCTEUgICogQ09OU1QgU3lz dGVtVGFibGUNCj4gPiA+PiArICApDQo+ID4gPj4gK3sNCj4gPiA+PiArICByZXR1cm4gUmVnaXN0 ZXJQYXJzZXIgKA0KPiA+ID4+ICsNCj4gPiBFRklfQUNQSV82XzJfTVVMVElQTEVfQVBJQ19ERVND UklQVElPTl9UQUJMRV9TSUdOQVRVUkUsDQo+ID4gPj4gKyAgICAgICAgICAgUGFyc2VBY3BpTWFk dA0KPiA+ID4+ICsgICAgICAgICAgICk7DQo+ID4gPj4gK30NCj4gPiA+PiArDQo+ID4gPj4gKy8q KiBEZXJlZ2lzdGVyIHRoZSBwYXJzZXIuDQo+ID4gPj4gKw0KPiA+ID4+ICsgIEBwYXJhbSBbaW5d ICBJbWFnZUhhbmRsZSAgVGhlIGhhbmRsZSB0byB0aGUgaW1hZ2UuDQo+ID4gPj4gKyAgQHBhcmFt IFtpbl0gIFN5c3RlbVRhYmxlICBQb2ludGVyIHRvIHRoZSBTeXN0ZW0gVGFibGUuDQo+ID4gPj4g Kw0KPiA+ID4+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBwYXJzZXIgaXMg ZGVyZWdpc3RlcmVkLg0KPiA+ID4+ICsgIEByZXR2YWwgRUZJX05PVF9GT1VORCAgICAgICAgIFRo ZSBwYXJzZXIgd2FzIG5vdCByZWdpc3RlcmVkLg0KPiA+ID4+ICsqLw0KPiA+ID4+ICtFRklfU1RB VFVTDQo+ID4gPj4gK0VGSUFQSQ0KPiA+ID4+ICtNYWR0UGFyc2VyTGliRGVzdHJ1Y3RvciAoDQo+ ID4gPj4gKyAgSU4gQ09OU1QgRUZJX0hBTkRMRSAgICAgICAgICAgICAgICBJbWFnZUhhbmRsZSwN Cj4gPiA+PiArICBJTiAgICAgICBFRklfU1lTVEVNX1RBQkxFICAqIENPTlNUIFN5c3RlbVRhYmxl DQo+ID4gPj4gKyAgKQ0KPiA+ID4+ICt7DQo+ID4gPj4gKyAgcmV0dXJuIERlcmVnaXN0ZXJQYXJz ZXIgKA0KPiA+ID4+ICsNCj4gPiBFRklfQUNQSV82XzJfTVVMVElQTEVfQVBJQ19ERVNDUklQVElP Tl9UQUJMRV9TSUdOQVRVUkUNCj4gPiA+PiArICAgICAgICAgICApOw0KPiA+ID4+ICt9DQo+ID4g Pj4gZGlmZiAtLWdpdA0KPiA+DQo+IGEvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmll d0NvbW1hbmRMaWIvUGFyc2Vycy9NYWR0L01hZHRQYXJzDQo+IGVyTGkNCj4gPiBiLmluZg0KPiA+ DQo+IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vy cy9NYWR0L01hZHRQYXJzDQo+IGVyTGkNCj4gPiBiLmluZg0KPiA+ID4+IG5ldyBmaWxlIG1vZGUg MTAwNjQ0DQo+ID4gPj4gaW5kZXgNCj4gPiAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwLi4wYjJiNjA0MmJiZmI1MTA4MzFlODYNCj4gPiA2YWExZGM0MzM0NjdkYWFjNDll DQo+ID4gPj4gLS0tIC9kZXYvbnVsbA0KPiA+ID4+ICsrKw0KPiA+DQo+IGIvU2hlbGxQa2cvTGli cmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9NYWR0L01hZHRQYXJzDQo+ IGVyTGkNCj4gPiBiLmluZg0KPiA+ID4+IEBAIC0wLDAgKzEsMzMgQEANCj4gPiA+PiArIyMgQGZp bGUNCj4gPiA+PiArIw0KPiA+ID4+ICsjICBDb3B5cmlnaHQgKGMpIDIwMTcgLSAyMDE4LCBBUk0g TGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gPiA+PiArIw0KPiA+ID4+ICsjICBUaGlz IHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ID4gPj4gKyMgIGFyZSBs aWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25z IG9mDQo+IHRoZQ0KPiA+IEJTRCBMaWNlbnNlDQo+ID4gPj4gKyMgIHdoaWNoIGFjY29tcGFuaWVz IHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkNCj4g YmUNCj4gPiBmb3VuZCBhdA0KPiA+ID4+ICsjICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5z ZXMvYnNkLWxpY2Vuc2UucGhwDQo+ID4gPj4gKyMNCj4gPiA+PiArIyAgVEhFIFBST0dSQU0gSVMg RElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUw0KPiBJUyINCj4gPiBC QVNJUywNCj4gPiA+PiArIyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBP RiBBTlkgS0lORCwgRUlUSEVSDQo+ID4gRVhQUkVTUyBPUiBJTVBMSUVELg0KPiA+ID4+ICsjIw0K PiA+ID4+ICsNCj4gPiA+PiArW0RlZmluZXNdDQo+ID4gPj4gKyAgSU5GX1ZFUlNJT04gICAgPSAw eDAwMDEwMDE5DQo+ID4gPj4gKyAgQkFTRV9OQU1FICAgICAgPSBNYWR0UGFyc2VyTGliDQo+ID4g Pj4gKyAgRklMRV9HVUlEICAgICAgPSBDQTBBNkFFMS0xMUExLTQ4QzgtQTU2MS1EMkNGQTkxNzk2 MkENCj4gPiA+PiArICBWRVJTSU9OX1NUUklORyA9IDEuMA0KPiA+ID4+ICsgIE1PRFVMRV9UWVBF ICAgID0gRFhFX0RSSVZFUg0KPiA+ID4+ICsgIExJQlJBUllfQ0xBU1MgID0gTlVMTHxEWEVfRFJJ VkVSDQo+ID4gPj4gKyAgQ09OU1RSVUNUT1IgICAgPSBNYWR0UGFyc2VyTGliQ29uc3RydWN0b3IN Cj4gPiA+PiArICBERVNUUlVDVE9SICAgICA9IE1hZHRQYXJzZXJMaWJEZXN0cnVjdG9yDQo+ID4g Pj4gKw0KPiA+ID4+ICtbU291cmNlc10NCj4gPiA+PiArICBNYWR0UGFyc2VyLmMNCj4gPiA+PiAr DQo+ID4gPj4gK1tQYWNrYWdlc10NCj4gPiA+PiArICBNZGVQa2cvTWRlUGtnLmRlYw0KPiA+ID4+ ICsgIFNoZWxsUGtnL1NoZWxsUGtnLmRlYw0KPiA+ID4+ICsgIE1kZU1vZHVsZVBrZy9NZGVNb2R1 bGVQa2cuZGVjDQo+ID4gPj4gKw0KPiA+ID4+ICtbTGlicmFyeUNsYXNzZXNdDQo+ID4gPj4gKyAg U2hlbGxBY3BpVmlld0NvbW1hbmRMaWINCj4gPiA+PiBkaWZmIC0tZ2l0DQo+ID4NCj4gYS9TaGVs bFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL01jZmcvTWNm Z1BhcnNlDQo+IHIuYw0KPiA+DQo+IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmll d0NvbW1hbmRMaWIvUGFyc2Vycy9NY2ZnL01jZmdQYXJzZQ0KPiByLmMNCj4gPiA+PiBuZXcgZmls ZSBtb2RlIDEwMDY0NA0KPiA+ID4+IGluZGV4DQo+ID4gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMC4uMTBiZmVjOTAxYTdjNTA0ZTcwMjJjMg0KPiA+IDFhYWZiYWM0Yzg3 NWQ4ODg2Yw0KPiA+ID4+IC0tLSAvZGV2L251bGwNCj4gPiA+PiArKysNCj4gPg0KPiBiL1NoZWxs UGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvTWNmZy9NY2Zn UGFyc2UNCj4gci5jDQo+ID4gPj4gQEAgLTAsMCArMSwxMzkgQEANCj4gPiA+PiArLyoqDQo+ID4g Pj4gKyAgTUNGRyB0YWJsZSBwYXJzZXINCj4gPiA+PiArDQo+ID4gPj4gKyAgQ29weXJpZ2h0IChj KSAyMDE2IC0gMjAxOCwgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ID4gPj4g KyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiA+ID4+ICsg IGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25k aXRpb25zIG9mDQo+IHRoZQ0KPiA+IEJTRCBMaWNlbnNlDQo+ID4gPj4gKyAgd2hpY2ggYWNjb21w YW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1h eQ0KPiBiZQ0KPiA+IGZvdW5kIGF0DQo+ID4gPj4gKyAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xp Y2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiA+ID4+ICsNCj4gPiA+PiArICBUSEUgUFJPR1JBTSBJ UyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTDQo+IElTIg0KPiA+ IEJBU0lTLA0KPiA+ID4+ICsgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMg T0YgQU5ZIEtJTkQsIEVJVEhFUg0KPiA+IEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gPiA+PiArDQo+ ID4gPj4gKyAgQHBhciBSZWZlcmVuY2Uocyk6DQo+ID4gPj4gKyAgICAtIFBDSSBGaXJtd2FyZSBT cGVjaWZpY2F0aW9uIC0gUmV2aXNpb24gMy4yLCBKYW51YXJ5IDI2LCAyMDE1Lg0KPiA+ID4+ICsq Ki8NCj4gPiA+PiArDQo+ID4gPj4gKyNpbmNsdWRlIDxJbmR1c3RyeVN0YW5kYXJkL0FjcGkuaD4N Cj4gPiA+PiArI2luY2x1ZGUgPExpYnJhcnkvVWVmaUxpYi5oPg0KPiA+ID4+ICsjaW5jbHVkZSA8 TGlicmFyeS9BY3BpVmlldy9BY3BpUGFyc2VyLmg+DQo+ID4gPj4gKyNpbmNsdWRlIDxMaWJyYXJ5 L0FjcGlWaWV3L0FjcGlUYWJsZVBhcnNlci5oPg0KPiA+ID4+ICsNCj4gPiA+PiArLy8gTG9jYWwg dmFyaWFibGVzDQo+ID4gPj4gK1NUQVRJQyBBQ1BJX0RFU0NSSVBUSU9OX0hFQURFUl9JTkZPIEFj cGlIZHJJbmZvOw0KPiA+ID4+ICsNCj4gPiA+PiArLyoqIEFuIEFDUElfUEFSU0VSIGFycmF5IGRl c2NyaWJpbmcgdGhlIEFDUEkgTUNGRyBUYWJsZS4NCj4gPiA+PiArKi8NCj4gPiA+PiArU1RBVElD IENPTlNUIEFDUElfUEFSU0VSIE1jZmdQYXJzZXJbXSA9IHsNCj4gPiA+PiArICBQQVJTRV9BQ1BJ X0hFQURFUiAoJkFjcGlIZHJJbmZvKSwNCj4gPiA+PiArICB7TCJSZXNlcnZlZCIsIDgsIDM2LCBM IjB4JWx4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4gPj4gK307DQo+ID4gPj4gKw0K PiA+ID4+ICsvKiogQW4gQUNQSV9QQVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0aGUgUENJIGNvbmZp Z3VyYXRpb24gU3BhY2UNCj4gPiA+PiArICAgIEJhc2UgQWRkcmVzcyBzdHJ1Y3R1cmUuDQo+ID4g Pj4gKyovDQo+ID4gPj4gK1NUQVRJQyBDT05TVCBBQ1BJX1BBUlNFUiBQY2lDZmdTcGFjZUJhc2VB ZGRyUGFyc2VyW10gPSB7DQo+ID4gPj4gKyAge0wiQmFzZSBBZGRyZXNzIiwgOCwgMCwgTCIweCVs eCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ID4+ICsgIHtMIlBDSSBTZWdtZW50IEdy b3VwIE5vLiIsIDIsIDgsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ID4+ ICsgIHtMIlN0YXJ0IEJ1cyBOby4iLCAxLCAxMCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwg TlVMTH0sDQo+ID4gPj4gKyAge0wiRW5kIEJ1cyBOby4iLCAxLCAxMSwgTCIweCV4IiwgTlVMTCwg TlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4gPj4gKyAge0wiUmVzZXJ2ZWQiLCA0LCAxMiwgTCIweCV4 IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0NCj4gPiA+PiArfTsNCj4gPiA+PiArDQo+ID4gPj4g Ky8qKiBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgQUNQSSBNQ0ZHIHRhYmxlLg0KPiA+ID4+ICsg IFdoZW4gdHJhY2UgaXMgZW5hYmxlZCB0aGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgTUNGRyB0YWJs ZSBhbmQNCj4gPiA+PiArICB0cmFjZXMgdGhlIEFDUEkgdGFibGUgZmllbGRzLg0KPiA+ID4+ICsN Cj4gPiA+PiArICBUaGlzIGZ1bmN0aW9uIGFsc28gcGVyZm9ybXMgdmFsaWRhdGlvbiBvZiB0aGUg QUNQSSB0YWJsZSBmaWVsZHMuDQo+ID4gPj4gKw0KPiA+ID4+ICsgIEBwYXJhbSBbaW5dIFRyYWNl ICAgICAgICAgICAgICBJZiBUUlVFLCB0cmFjZSB0aGUgQUNQSSBmaWVsZHMuDQo+ID4gPj4gKyAg QHBhcmFtIFtpbl0gUHRyICAgICAgICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRo ZSBidWZmZXIuDQo+ID4gPj4gKyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxlTGVuZ3RoICAgIExlbmd0 aCBvZiB0aGUgQUNQSSB0YWJsZS4NCj4gPiA+PiArICBAcGFyYW0gW2luXSBBY3BpVGFibGVSZXZp c2lvbiAgUmV2aXNpb24gb2YgdGhlIEFDUEkgdGFibGUuDQo+ID4gPj4gKyovDQo+ID4gPj4gK1ZP SUQNCj4gPiA+PiArRUZJQVBJDQo+ID4gPj4gK1BhcnNlQWNwaU1jZmcgKA0KPiA+ID4+ICsgIElO IEJPT0xFQU4gVHJhY2UsDQo+ID4gPj4gKyAgSU4gVUlOVDgqICBQdHIsDQo+ID4gPj4gKyAgSU4g VUlOVDMyICBBY3BpVGFibGVMZW5ndGgsDQo+ID4gPj4gKyAgSU4gVUlOVDggICBBY3BpVGFibGVS ZXZpc2lvbg0KPiA+ID4+ICsgICkNCj4gPiA+PiArew0KPiA+ID4+ICsgIFVJTlQzMiBPZmZzZXQ7 DQo+ID4gPj4gKyAgVUlOVDMyIFBjaUNmZ09mZnNldDsNCj4gPiA+PiArICBVSU5UOCogUGNpQ2Zn U3BhY2VQdHI7DQo+ID4gPj4gKw0KPiA+ID4+ICsgIGlmICghVHJhY2UpIHsNCj4gPiA+PiArICAg IHJldHVybjsNCj4gPiA+PiArICB9DQo+ID4gPj4gKw0KPiA+ID4+ICsgIE9mZnNldCA9IFBhcnNl QWNwaSAoDQo+ID4gPj4gKyAgICAgICAgICAgICBUUlVFLA0KPiA+ID4+ICsgICAgICAgICAgICAg MCwNCj4gPiA+PiArICAgICAgICAgICAgICJNQ0ZHIiwNCj4gPiA+PiArICAgICAgICAgICAgIFB0 ciwNCj4gPiA+PiArICAgICAgICAgICAgIEFjcGlUYWJsZUxlbmd0aCwNCj4gPiA+PiArICAgICAg ICAgICAgIFBBUlNFUl9QQVJBTVMgKE1jZmdQYXJzZXIpDQo+ID4gPj4gKyAgICAgICAgICAgICAp Ow0KPiA+ID4+ICsNCj4gPiA+PiArICBQY2lDZmdTcGFjZVB0ciA9IFB0ciArIE9mZnNldDsNCj4g PiA+PiArDQo+ID4gPj4gKyAgd2hpbGUgKE9mZnNldCA8IEFjcGlUYWJsZUxlbmd0aCkgew0KPiA+ ID4+ICsgICAgUGNpQ2ZnT2Zmc2V0ID0gUGFyc2VBY3BpICgNCj4gPiA+PiArICAgICAgICAgICAg ICAgICAgICAgVFJVRSwNCj4gPiA+PiArICAgICAgICAgICAgICAgICAgICAgMiwNCj4gPiA+PiAr ICAgICAgICAgICAgICAgICAgICAgIlBDSSBDb25maWd1cmF0aW9uIFNwYWNlIiwNCj4gPiA+PiAr ICAgICAgICAgICAgICAgICAgICAgUGNpQ2ZnU3BhY2VQdHIsDQo+ID4gPj4gKyAgICAgICAgICAg ICAgICAgICAgIChBY3BpVGFibGVMZW5ndGggLSBPZmZzZXQpLA0KPiA+ID4+ICsgICAgICAgICAg ICAgICAgICAgICBQQVJTRVJfUEFSQU1TIChQY2lDZmdTcGFjZUJhc2VBZGRyUGFyc2VyKQ0KPiA+ ID4+ICsgICAgICAgICAgICAgICAgICAgICApOw0KPiA+ID4+ICsgICAgUGNpQ2ZnU3BhY2VQdHIg Kz0gUGNpQ2ZnT2Zmc2V0Ow0KPiA+ID4+ICsgICAgT2Zmc2V0ICs9IFBjaUNmZ09mZnNldDsNCj4g PiA+PiArICB9DQo+ID4gPj4gK30NCj4gPiA+PiArDQo+ID4gPj4gKy8qKiBSZWdpc3RlciB0aGUg cGFyc2VyLg0KPiA+ID4+ICsNCj4gPiA+PiArICBAcGFyYW0gW2luXSAgSW1hZ2VIYW5kbGUgIFRo ZSBoYW5kbGUgdG8gdGhlIGltYWdlLg0KPiA+ID4+ICsgIEBwYXJhbSBbaW5dICBTeXN0ZW1UYWJs ZSAgUG9pbnRlciB0byB0aGUgU3lzdGVtIFRhYmxlLg0KPiA+ID4+ICsNCj4gPiA+PiArICBAcmV0 dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUgcGFyc2VyIGlzIHJlZ2lzdGVyZWQuDQo+ID4g Pj4gKyAgQHJldHZhbCBFRklfQUxSRUFEWV9TVEFSVEVEICAgVGhlIHBhcnNlciBmb3IgdGhlIEFD UEkgVGFibGUNCj4gPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YXMgYWxy ZWFkeSByZWdpc3RlcmVkLg0KPiA+ID4+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVS IEEgcGFyYW1ldGVyIGlzIGludmFsaWQNCj4gPiA+PiArICBAcmV0dmFsIEVGSV9PVVRfT0ZfUkVT T1VSQ0VTICBObyBzcGFjZSB0byByZWdpc3RlciB0aGUNCj4gPiA+PiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBwYXJzZXIuDQo+ID4gPj4gKyovDQo+ID4gPj4gK0VGSV9TVEFUVVMN Cj4gPiA+PiArRUZJQVBJDQo+ID4gPj4gK01jZmdQYXJzZXJMaWJDb25zdHJ1Y3RvciAoDQo+ID4g Pj4gKyAgSU4gQ09OU1QgRUZJX0hBTkRMRSAgICAgICAgICAgICAgICBJbWFnZUhhbmRsZSwNCj4g PiA+PiArICBJTiAgICAgICBFRklfU1lTVEVNX1RBQkxFICAqIENPTlNUIFN5c3RlbVRhYmxlDQo+ ID4gPj4gKyAgKQ0KPiA+ID4+ICt7DQo+ID4gPj4gKyAgcmV0dXJuIFJlZ2lzdGVyUGFyc2VyICgN Cj4gPiA+PiArDQo+ID4NCj4gRUZJX0FDUElfNl8yX1BDSV9FWFBSRVNTX01FTU9SWV9NQVBQRURf Q09ORklHVVJBVElPTl9TUEFDRQ0KPiBfQkENCj4gPiBTRV9BRERSRVNTX0RFU0NSSVBUSU9OX1RB QkxFX1NJR05BVFVSRSwNCj4gPiA+PiArICAgICAgICAgICBQYXJzZUFjcGlNY2ZnDQo+ID4gPj4g KyAgICAgICAgICAgKTsNCj4gPiA+PiArfQ0KPiA+ID4+ICsNCj4gPiA+PiArLyoqIERlcmVnaXN0 ZXIgdGhlIHBhcnNlci4NCj4gPiA+PiArDQo+ID4gPj4gKyAgQHBhcmFtIFtpbl0gIEltYWdlSGFu ZGxlICBUaGUgaGFuZGxlIHRvIHRoZSBpbWFnZS4NCj4gPiA+PiArICBAcGFyYW0gW2luXSAgU3lz dGVtVGFibGUgIFBvaW50ZXIgdG8gdGhlIFN5c3RlbSBUYWJsZS4NCj4gPiA+PiArDQo+ID4gPj4g KyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhlIHBhcnNlciBpcyBkZXJlZ2lzdGVy ZWQuDQo+ID4gPj4gKyAgQHJldHZhbCBFRklfTk9UX0ZPVU5EICAgICAgICAgVGhlIHBhcnNlciB3 YXMgbm90IHJlZ2lzdGVyZWQuDQo+ID4gPj4gKyovDQo+ID4gPj4gK0VGSV9TVEFUVVMNCj4gPiA+ PiArRUZJQVBJDQo+ID4gPj4gK01jZmdQYXJzZXJMaWJEZXN0cnVjdG9yICgNCj4gPiA+PiArICBJ TiBDT05TVCBFRklfSEFORExFICAgICAgICAgICAgICAgIEltYWdlSGFuZGxlLA0KPiA+ID4+ICsg IElOICAgICAgIEVGSV9TWVNURU1fVEFCTEUgICogQ09OU1QgU3lzdGVtVGFibGUNCj4gPiA+PiAr ICApDQo+ID4gPj4gK3sNCj4gPiA+PiArICByZXR1cm4gRGVyZWdpc3RlclBhcnNlciAoDQo+ID4g Pj4gKw0KPiA+DQo+IEVGSV9BQ1BJXzZfMl9QQ0lfRVhQUkVTU19NRU1PUllfTUFQUEVEX0NPTkZJ R1VSQVRJT05fU1BBQ0UNCj4gX0JBDQo+ID4gU0VfQUREUkVTU19ERVNDUklQVElPTl9UQUJMRV9T SUdOQVRVUkUNCj4gPiA+PiArICAgICAgICAgICApOw0KPiA+ID4+ICt9DQo+ID4gPj4gZGlmZiAt LWdpdA0KPiA+DQo+IGEvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRM aWIvUGFyc2Vycy9NY2ZnL01jZmdQYXJzZQ0KPiByTGliDQo+ID4gLmluZg0KPiA+DQo+IGIvU2hl bGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9NY2ZnL01j ZmdQYXJzZQ0KPiByTGliDQo+ID4gLmluZg0KPiA+ID4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ ID4gPj4gaW5kZXgNCj4gPiAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw Li40N2QxZDU2YTUyODk2ZWM3ZDQwMjENCj4gPiBlOGUyM2FlZjJhZmVmMjU2Y2IzDQo+ID4gPj4g LS0tIC9kZXYvbnVsbA0KPiA+ID4+ICsrKw0KPiA+DQo+IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZp U2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9NY2ZnL01jZmdQYXJzZQ0KPiByTGliDQo+ ID4gLmluZg0KPiA+ID4+IEBAIC0wLDAgKzEsMzMgQEANCj4gPiA+PiArIyMgQGZpbGUNCj4gPiA+ PiArIw0KPiA+ID4+ICsjICBDb3B5cmlnaHQgKGMpIDIwMTcgLSAyMDE4LCBBUk0gTGltaXRlZC4g QWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gPiA+PiArIw0KPiA+ID4+ICsjICBUaGlzIHByb2dyYW0g YW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ID4gPj4gKyMgIGFyZSBsaWNlbnNlZCBh bmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mDQo+IHRo ZQ0KPiA+IEJTRCBMaWNlbnNlDQo+ID4gPj4gKyMgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlz dHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkNCj4gYmUNCj4gPiBm b3VuZCBhdA0KPiA+ID4+ICsjICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxp Y2Vuc2UucGhwDQo+ID4gPj4gKyMNCj4gPiA+PiArIyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVU RUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUw0KPiBJUyINCj4gPiBCQVNJUywNCj4g PiA+PiArIyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lO RCwgRUlUSEVSDQo+ID4gRVhQUkVTUyBPUiBJTVBMSUVELg0KPiA+ID4+ICsjIw0KPiA+ID4+ICsN Cj4gPiA+PiArW0RlZmluZXNdDQo+ID4gPj4gKyAgSU5GX1ZFUlNJT04gICAgPSAweDAwMDEwMDE5 DQo+ID4gPj4gKyAgQkFTRV9OQU1FICAgICAgPSBNY2ZnUGFyc2VyTGliDQo+ID4gPj4gKyAgRklM RV9HVUlEICAgICAgPSA0N0U4QzEwRC02Q0UwLTQ1NUMtQTdCQy04M0E3QjA4OTVDOUYNCj4gPiA+ PiArICBWRVJTSU9OX1NUUklORyA9IDEuMA0KPiA+ID4+ICsgIE1PRFVMRV9UWVBFICAgID0gRFhF X0RSSVZFUg0KPiA+ID4+ICsgIExJQlJBUllfQ0xBU1MgID0gTlVMTHxEWEVfRFJJVkVSDQo+ID4g Pj4gKyAgQ09OU1RSVUNUT1IgICAgPSBNY2ZnUGFyc2VyTGliQ29uc3RydWN0b3INCj4gPiA+PiAr ICBERVNUUlVDVE9SICAgICA9IE1jZmdQYXJzZXJMaWJEZXN0cnVjdG9yDQo+ID4gPj4gKw0KPiA+ ID4+ICtbU291cmNlc10NCj4gPiA+PiArICBNY2ZnUGFyc2VyLmMNCj4gPiA+PiArDQo+ID4gPj4g K1tQYWNrYWdlc10NCj4gPiA+PiArICBNZGVQa2cvTWRlUGtnLmRlYw0KPiA+ID4+ICsgIFNoZWxs UGtnL1NoZWxsUGtnLmRlYw0KPiA+ID4+ICsgIE1kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVj DQo+ID4gPj4gKw0KPiA+ID4+ICtbTGlicmFyeUNsYXNzZXNdDQo+ID4gPj4gKyAgU2hlbGxBY3Bp Vmlld0NvbW1hbmRMaWINCj4gPiA+PiBkaWZmIC0tZ2l0DQo+ID4NCj4gYS9TaGVsbFBrZy9MaWJy YXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL1JzZHAvUnNkcFBhcnNlDQo+ IHIuYw0KPiA+DQo+IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRM aWIvUGFyc2Vycy9Sc2RwL1JzZHBQYXJzZQ0KPiByLmMNCj4gPiA+PiBuZXcgZmlsZSBtb2RlIDEw MDY0NA0KPiA+ID4+IGluZGV4DQo+ID4gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMC4uZmVjNTUwOGQyMjJlZjE0ZTk5YzJkMw0KPiA+IDkyYTAwMzNlNmM2ZDVmYWEzZQ0K PiA+ID4+IC0tLSAvZGV2L251bGwNCj4gPiA+PiArKysNCj4gPg0KPiBiL1NoZWxsUGtnL0xpYnJh cnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvUnNkcC9Sc2RwUGFyc2UNCj4g ci5jDQo+ID4gPj4gQEAgLTAsMCArMSwyMTQgQEANCj4gPiA+PiArLyoqDQo+ID4gPj4gKyAgUlNE UCB0YWJsZSBwYXJzZXINCj4gPiA+PiArDQo+ID4gPj4gKyAgQ29weXJpZ2h0IChjKSAyMDE2IC0g MjAxOCwgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ID4gPj4gKyAgVGhpcyBw cm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiA+ID4+ICsgIGFyZSBsaWNl bnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9m DQo+IHRoZQ0KPiA+IEJTRCBMaWNlbnNlDQo+ID4gPj4gKyAgd2hpY2ggYWNjb21wYW5pZXMgdGhp cyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heQ0KPiBiZQ0K PiA+IGZvdW5kIGF0DQo+ID4gPj4gKyAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2Jz ZC1saWNlbnNlLnBocA0KPiA+ID4+ICsNCj4gPiA+PiArICBUSEUgUFJPR1JBTSBJUyBESVNUUklC VVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTDQo+IElTIg0KPiA+IEJBU0lTLA0K PiA+ID4+ICsgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJ TkQsIEVJVEhFUg0KPiA+IEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gPiA+PiArDQo+ID4gPj4gKyAg QHBhciBSZWZlcmVuY2Uocyk6DQo+ID4gPj4gKyAgICAtIEFDUEkgNi4yIFNwZWNpZmljYXRpb24g LSBFcnJhdGEgQSwgU2VwdGVtYmVyIDIwMTcNCj4gPiA+PiArKiovDQo+ID4gPj4gKw0KPiA+ID4+ ICsjaW5jbHVkZSA8TGlicmFyeS9VZWZpTGliLmg+DQo+ID4gPj4gKyNpbmNsdWRlIDxMaWJyYXJ5 L0FjcGlWaWV3L0FjcGlQYXJzZXIuaD4NCj4gPiA+PiArI2luY2x1ZGUgPExpYnJhcnkvQWNwaVZp ZXcvQWNwaVRhYmxlUGFyc2VyLmg+DQo+ID4gPj4gKw0KPiA+ID4+ICsvLyBMb2NhbCBWYXJpYWJs ZXMNCj4gPiA+PiArU1RBVElDIENPTlNUIFVJTlQ2NCogWHNkdEFkZHJlc3M7DQo+ID4gPj4gKw0K PiA+ID4+ICsvKiogVGhpcyBmdW5jdGlvbiB2YWxpZGF0ZXMgdGhlIFJTRFQgQWRkcmVzcy4NCj4g PiA+PiArDQo+ID4gPj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFy dCBvZiB0aGUgZmllbGQgZGF0YS4NCj4gPiA+PiArICBAcGFyYW0gW2luXSBDb250ZXh0IFBvaW50 ZXIgdG8gY29udGV4dCBzcGVjaWZpYyBpbmZvcm1hdGlvbiBlLmcuIHRoaXMNCj4gPiA+PiArICAg ICAgICAgICAgICAgICAgICAgIGNvdWxkIGJlIGEgcG9pbnRlciB0byB0aGUgQUNQSSB0YWJsZSBo ZWFkZXIuDQo+ID4gPj4gKyovDQo+ID4gPj4gK1NUQVRJQw0KPiA+ID4+ICtWT0lEDQo+ID4gPj4g K0VGSUFQSQ0KPiA+ID4+ICtWYWxpZGF0ZVJzZHRBZGRyZXNzICgNCj4gPiA+PiArICBJTiBVSU5U OCogUHRyLA0KPiA+ID4+ICsgIElOIFZPSUQqICBDb250ZXh0DQo+ID4gPj4gKyAgKTsNCj4gPiA+ PiArDQo+ID4gPj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHZhbGlkYXRlcyB0aGUgWFNEVCBBZGRyZXNz Lg0KPiA+ID4+ICsNCj4gPiA+PiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhl IHN0YXJ0IG9mIHRoZSBmaWVsZCBkYXRhLg0KPiA+ID4+ICsgIEBwYXJhbSBbaW5dIENvbnRleHQg UG9pbnRlciB0byBjb250ZXh0IHNwZWNpZmljIGluZm9ybWF0aW9uIGUuZy4gdGhpcw0KPiA+ID4+ ICsgICAgICAgICAgICAgICAgICAgICAgY291bGQgYmUgYSBwb2ludGVyIHRvIHRoZSBBQ1BJIHRh YmxlIGhlYWRlci4NCj4gPiA+PiArKi8NCj4gPiA+PiArU1RBVElDDQo+ID4gPj4gK1ZPSUQNCj4g PiA+PiArRUZJQVBJDQo+ID4gPj4gK1ZhbGlkYXRlWHNkdEFkZHJlc3MgKA0KPiA+ID4+ICsgIElO IFVJTlQ4KiBQdHIsDQo+ID4gPj4gKyAgSU4gVk9JRCogIENvbnRleHQNCj4gPiA+PiArICApOw0K PiA+ID4+ICsNCj4gPiA+PiArLyoqIEFuIGFycmF5IGRlc2NyaWJpbmcgdGhlIEFDUEkgUlNEUCBU YWJsZS4NCj4gPiA+PiArKi8NCj4gPiA+PiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VSIFJzZHBQ YXJzZXJbXSA9IHsNCj4gPiA+PiArICB7TCJTaWduYXR1cmUiLCA4LCAwLCBOVUxMLCBEdW1wOENo YXJzLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPiA+PiArICB7TCJDaGVja3N1bSIsIDEsIDgsIEwi MHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ID4+ICsgIHtMIk9lbSBJRCIsIDYs IDksIE5VTEwsIER1bXA2Q2hhcnMsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ID4+ICsgIHtMIlJl dmlzaW9uIiwgMSwgMTUsIEwiJWQiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPiA+PiAr ICB7TCJSU0RUIEFkZHJlc3MiLCA0LCAxNiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgVmFsaWRhdGVS c2R0QWRkcmVzcywNCj4gPiBOVUxMfSwNCj4gPiA+PiArICB7TCJMZW5ndGgiLCA0LCAyMCwgTCIl ZCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ID4+ICsgIHtMIlhTRFQgQWRkcmVzcyIs IDgsIDI0LCBMIjB4JWx4IiwgTlVMTCwgKFZPSUQqKikmWHNkdEFkZHJlc3MsDQo+ID4gPj4gKyAg IFZhbGlkYXRlWHNkdEFkZHJlc3MsIE5VTEx9LA0KPiA+ID4+ICsgIHtMIkV4dGVuZGVkIENoZWNr c3VtIiwgMSwgMzIsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ID4+ICsg IHtMIlJlc2VydmVkIiwgMywgMzMsIEwiJXggJXggJXgiLCBEdW1wM0NoYXJzLCBOVUxMLCBOVUxM LCBOVUxMfQ0KPiA+ID4+ICt9Ow0KPiA+ID4+ICsNCj4gPiA+PiArLyoqIFRoaXMgZnVuY3Rpb24g dmFsaWRhdGVzIHRoZSBSU0RUIEFkZHJlc3MuDQo+ID4gPj4gKw0KPiA+ID4+ICsgIEBwYXJhbSBb aW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGZpZWxkIGRhdGEuDQo+ID4g Pj4gKyAgQHBhcmFtIFtpbl0gQ29udGV4dCBQb2ludGVyIHRvIGNvbnRleHQgc3BlY2lmaWMgaW5m b3JtYXRpb24gZS5nLiB0aGlzDQo+ID4gPj4gKyAgICAgICAgICAgICAgICAgICAgICBjb3VsZCBi ZSBhIHBvaW50ZXIgdG8gdGhlIEFDUEkgdGFibGUgaGVhZGVyLg0KPiA+ID4+ICsqLw0KPiA+ID4+ ICtTVEFUSUMNCj4gPiA+PiArVk9JRA0KPiA+ID4+ICtFRklBUEkNCj4gPiA+PiArVmFsaWRhdGVS c2R0QWRkcmVzcyAoDQo+ID4gPj4gKyAgSU4gVUlOVDgqIFB0ciwNCj4gPiA+PiArICBJTiBWT0lE KiAgQ29udGV4dA0KPiA+ID4+ICsgICkNCj4gPiA+PiArew0KPiA+ID4+ICsjaWYgZGVmaW5lZChN REVfQ1BVX0FSTSkgfHwgZGVmaW5lZCAoTURFX0NQVV9BQVJDSDY0KQ0KPiA+ID4+ICsgIC8vIFJl ZmVyZW5jZTogU2VydmVyIEJhc2UgQm9vdCBSZXF1aXJlbWVudHMgU3lzdGVtIFNvZnR3YXJlIG9u DQo+IEFSTQ0KPiA+IFBsYXRmb3Jtcw0KPiA+ID4+ICsgIC8vIFNlY3Rpb246IDQuMi4xLjEgUlNE UA0KPiA+ID4+ICsgIC8vIFJvb3QgU3lzdGVtIERlc2NyaXB0aW9uIFBvaW50ZXIgKFJTRFApLCBB Q1BJIO+/vSA1LjIuNS4NCj4gPiA+PiArICAvLyAgIC0gV2l0aGluIHRoZSBSU0RQLCB0aGUgUnNk dEFkZHJlc3MgZmllbGQgbXVzdCBiZSBudWxsICh6ZXJvKSBhbmQNCj4gdGhlDQo+ID4gPj4gKyAg Ly8gICAgIFhzZHRBZGRyZXNzcyBNVVNUIGJlIGEgdmFsaWQsIG5vbi1udWxsLCA2NC1iaXQgdmFs dWUuDQo+ID4gPj4gKyAgVUlOVDMyIFJzZHRBZGRyID0gKihVSU5UMzIqKVB0cjsNCj4gPiA+PiAr ICBpZiAoUnNkdEFkZHIgIT0gMCkgew0KPiA+ID4+ICsgICAgSW5jcmVtZW50RXJyb3JDb3VudCAo KTsNCj4gPiA+PiArICAgIFByaW50ICgNCj4gPiA+PiArICAgICAgTCJcbkVSUk9SOiBSc2R0IEFk ZHJlc3MgPSAweCVwLiBUaGlzIG11c3QgYmUgTlVMTCBvbiBBUk0NCj4gPiBQbGF0Zm9ybXMuIiwN Cj4gPiA+PiArICAgICAgUnNkdEFkZHINCj4gPiA+PiArICAgICAgKTsNCj4gPiA+PiArICB9DQo+ ID4gPj4gKyNlbmRpZg0KPiA+ID4+ICt9DQo+ID4gPj4gKw0KPiA+ID4+ICsvKiogVGhpcyBmdW5j dGlvbiB2YWxpZGF0ZXMgdGhlIFhTRFQgQWRkcmVzcy4NCj4gPiA+PiArDQo+ID4gPj4gKyAgQHBh cmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgZmllbGQgZGF0YS4N Cj4gPiA+PiArICBAcGFyYW0gW2luXSBDb250ZXh0IFBvaW50ZXIgdG8gY29udGV4dCBzcGVjaWZp YyBpbmZvcm1hdGlvbiBlLmcuIHRoaXMNCj4gPiA+PiArICAgICAgICAgICAgICAgICAgICAgIGNv dWxkIGJlIGEgcG9pbnRlciB0byB0aGUgQUNQSSB0YWJsZSBoZWFkZXIuDQo+ID4gPj4gKyovDQo+ ID4gPj4gK1NUQVRJQw0KPiA+ID4+ICtWT0lEDQo+ID4gPj4gK0VGSUFQSQ0KPiA+ID4+ICtWYWxp ZGF0ZVhzZHRBZGRyZXNzICgNCj4gPiA+PiArICBJTiBVSU5UOCogUHRyLA0KPiA+ID4+ICsgIElO IFZPSUQqICBDb250ZXh0DQo+ID4gPj4gKyAgKQ0KPiA+ID4+ICt7DQo+ID4gPj4gKyNpZiBkZWZp bmVkKE1ERV9DUFVfQVJNKSB8fCBkZWZpbmVkIChNREVfQ1BVX0FBUkNINjQpDQo+ID4gPj4gKyAg Ly8gUmVmZXJlbmNlOiBTZXJ2ZXIgQmFzZSBCb290IFJlcXVpcmVtZW50cyBTeXN0ZW0gU29mdHdh cmUgb24NCj4gQVJNDQo+ID4gUGxhdGZvcm1zDQo+ID4gPj4gKyAgLy8gU2VjdGlvbjogNC4yLjEu MSBSU0RQDQo+ID4gPj4gKyAgLy8gUm9vdCBTeXN0ZW0gRGVzY3JpcHRpb24gUG9pbnRlciAoUlNE UCksIEFDUEkg77+9IDUuMi41Lg0KPiA+ID4+ICsgIC8vICAgLSBXaXRoaW4gdGhlIFJTRFAsIHRo ZSBSc2R0QWRkcmVzcyBmaWVsZCBtdXN0IGJlIG51bGwgKHplcm8pIGFuZA0KPiB0aGUNCj4gPiA+ PiArICAvLyAgICAgWHNkdEFkZHJlc3NzIE1VU1QgYmUgYSB2YWxpZCwgbm9uLW51bGwsIDY0LWJp dCB2YWx1ZS4NCj4gPiA+PiArICBVSU5UNjQgWHNkdEFkZHIgPSAqKFVJTlQ2NCopUHRyOw0KPiA+ ID4+ICsgIGlmIChYc2R0QWRkciA9PSAwKSB7DQo+ID4gPj4gKyAgICBJbmNyZW1lbnRFcnJvckNv dW50ICgpOw0KPiA+ID4+ICsgICAgUHJpbnQgKA0KPiA+ID4+ICsgICAgICBMIlxuRVJST1I6IFhz ZHQgQWRkcmVzcyA9IDB4JXAuIFRoaXMgbXVzdCBub3QgYmUgTlVMTCBvbiBBUk0NCj4gPiBQbGF0 Zm9ybXMuIiwNCj4gPiA+PiArICAgICAgWHNkdEFkZHINCj4gPiA+PiArICAgICAgKTsNCj4gPiA+ PiArICB9DQo+ID4gPj4gKyNlbmRpZg0KPiA+ID4+ICt9DQo+ID4gPj4gKw0KPiA+ID4+ICsvKiog VGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIEFDUEkgUlNEUCB0YWJsZS4NCj4gPiA+PiArDQo+ID4g Pj4gKyAgVGhpcyBmdW5jdGlvbiBpbnZva2VzIHRoZSBwYXJzZXIgZm9yIHRoZSBYU0RUIHRhYmxl Lg0KPiA+ID4+ICsgICogTm90ZSAtIFRoaXMgZnVuY3Rpb24gZG9lcyBub3Qgc3VwcG9ydCBwYXJz aW5nIG9mIFJTRFQgdGFibGUuDQo+ID4gPj4gKw0KPiA+ID4+ICsgIFRoaXMgZnVuY3Rpb24gYWxz byBwZXJmb3JtcyBhIFJBVyBkdW1wIG9mIHRoZSBBQ1BJIHRhYmxlIGFuZA0KPiA+ID4+ICsgIHZh bGlkYXRlcyB0aGUgY2hlY2tzdW0uDQo+ID4gPj4gKw0KPiA+ID4+ICsgIEBwYXJhbSBbaW5dIFRy YWNlICAgICAgICAgICAgICBJZiBUUlVFLCB0cmFjZSB0aGUgQUNQSSBmaWVsZHMuDQo+ID4gPj4g KyAgQHBhcmFtIFtpbl0gUHRyICAgICAgICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9m IHRoZSBidWZmZXIuDQo+ID4gPj4gKyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxlTGVuZ3RoICAgIExl bmd0aCBvZiB0aGUgQUNQSSB0YWJsZS4NCj4gPiA+PiArICBAcGFyYW0gW2luXSBBY3BpVGFibGVS ZXZpc2lvbiAgUmV2aXNpb24gb2YgdGhlIEFDUEkgdGFibGUuDQo+ID4gPj4gKyovDQo+ID4gPj4g K1ZPSUQNCj4gPiA+PiArRUZJQVBJDQo+ID4gPj4gK1BhcnNlQWNwaVJzZHAgKA0KPiA+ID4+ICsg IElOIEJPT0xFQU4gVHJhY2UsDQo+ID4gPj4gKyAgSU4gVUlOVDgqICBQdHIsDQo+ID4gPj4gKyAg SU4gVUlOVDMyICBBY3BpVGFibGVMZW5ndGgsDQo+ID4gPj4gKyAgSU4gVUlOVDggICBBY3BpVGFi bGVSZXZpc2lvbg0KPiA+ID4+ICsgICkNCj4gPiA+PiArew0KPiA+ID4+ICsgIGlmIChUcmFjZSkg ew0KPiA+ID4+ICsgICAgRHVtcFJhdyAoUHRyLCBBY3BpVGFibGVMZW5ndGgpOw0KPiA+ID4+ICsg ICAgVmVyaWZ5Q2hlY2tzdW0gKFRSVUUsIFB0ciwgQWNwaVRhYmxlTGVuZ3RoKTsNCj4gPiA+PiAr ICB9DQo+ID4gPj4gKw0KPiA+ID4+ICsgIFBhcnNlQWNwaSAoVHJhY2UsIDAsICJSU0RQIiwgUHRy LCBBY3BpVGFibGVMZW5ndGgsIFBBUlNFUl9QQVJBTVMNCj4gPiAoUnNkcFBhcnNlcikpOw0KPiA+ ID4+ICsNCj4gPiA+PiArICAvLyBUaGlzIGNvZGUgY3VycmVudGx5IHN1cHBvcnRzIHBhcnNpbmcg b2YgWFNEVCB0YWJsZSBvbmx5DQo+ID4gPj4gKyAgLy8gYW5kIGRvZXMgbm90IHBhcnNlIHRoZSBS U0RUIHRhYmxlLiBQbGF0Zm9ybXMgcHJvdmlkZSB0aGUNCj4gPiA+PiArICAvLyBSU0RUIHRvIGVu YWJsZSBjb21wYXRpYmlsaXR5IHdpdGggQUNQSSAxLjAgb3BlcmF0aW5nIHN5c3RlbXMuDQo+ID4g Pj4gKyAgLy8gVGhlcmVmb3JlIHRoZSBSU0RUIHNob3VsZCBub3QgYmUgdXNlZCBvbiBBUk0gcGxh dGZvcm1zLg0KPiA+ID4+ICsgIGlmICgoKlhzZHRBZGRyZXNzKSA9PSAwKSB7DQo+ID4gPj4gKyAg ICBJbmNyZW1lbnRFcnJvckNvdW50ICgpOw0KPiA+ID4+ICsgICAgUHJpbnQgKEwiRVJST1I6IFhT RFQgUG9pbnRlciBpcyBub3Qgc2V0LlxuIik7DQo+ID4gPj4gKyAgICByZXR1cm47DQo+ID4gPj4g KyAgfQ0KPiA+ID4+ICsNCj4gPiA+PiArICBQcm9jZXNzQWNwaVRhYmxlICgoVUlOVDgqKShVSU5U TikoKlhzZHRBZGRyZXNzKSk7DQo+ID4gPj4gK30NCj4gPiA+PiArDQo+ID4gPj4gKy8qKiBSZWdp c3RlciB0aGUgcGFyc2VyLg0KPiA+ID4+ICsNCj4gPiA+PiArICBAcGFyYW0gW2luXSAgSW1hZ2VI YW5kbGUgIFRoZSBoYW5kbGUgdG8gdGhlIGltYWdlLg0KPiA+ID4+ICsgIEBwYXJhbSBbaW5dICBT eXN0ZW1UYWJsZSAgUG9pbnRlciB0byB0aGUgU3lzdGVtIFRhYmxlLg0KPiA+ID4+ICsNCj4gPiA+ PiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUgcGFyc2VyIGlzIHJlZ2lzdGVy ZWQuDQo+ID4gPj4gKyAgQHJldHZhbCBFRklfQUxSRUFEWV9TVEFSVEVEICAgVGhlIHBhcnNlciBm b3IgdGhlIEFDUEkgVGFibGUNCj4gPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB3YXMgYWxyZWFkeSByZWdpc3RlcmVkLg0KPiA+ID4+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURf UEFSQU1FVEVSIEEgcGFyYW1ldGVyIGlzIGludmFsaWQNCj4gPiA+PiArICBAcmV0dmFsIEVGSV9P VVRfT0ZfUkVTT1VSQ0VTICBObyBzcGFjZSB0byByZWdpc3RlciB0aGUNCj4gPiA+PiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXIuDQo+ID4gPj4gKyovDQo+ID4gPj4gK0VG SV9TVEFUVVMNCj4gPiA+PiArRUZJQVBJDQo+ID4gPj4gK1JzZHBQYXJzZXJMaWJDb25zdHJ1Y3Rv ciAoDQo+ID4gPj4gKyAgSU4gQ09OU1QgRUZJX0hBTkRMRSAgICAgICAgICAgICAgICBJbWFnZUhh bmRsZSwNCj4gPiA+PiArICBJTiAgICAgICBFRklfU1lTVEVNX1RBQkxFICAqIENPTlNUIFN5c3Rl bVRhYmxlDQo+ID4gPj4gKyAgKQ0KPiA+ID4+ICt7DQo+ID4gPj4gKyAgcmV0dXJuIFJlZ2lzdGVy UGFyc2VyICgNCj4gPiA+PiArICAgICAgICAgICBSU0RQX1RBQkxFX0lORk8sDQo+ID4gPj4gKyAg ICAgICAgICAgUGFyc2VBY3BpUnNkcA0KPiA+ID4+ICsgICAgICAgICAgICk7DQo+ID4gPj4gK30N Cj4gPiA+PiArDQo+ID4gPj4gKy8qKiBEZXJlZ2lzdGVyIHRoZSBwYXJzZXIuDQo+ID4gPj4gKw0K PiA+ID4+ICsgIEBwYXJhbSBbaW5dICBJbWFnZUhhbmRsZSAgVGhlIGhhbmRsZSB0byB0aGUgaW1h Z2UuDQo+ID4gPj4gKyAgQHBhcmFtIFtpbl0gIFN5c3RlbVRhYmxlICBQb2ludGVyIHRvIHRoZSBT eXN0ZW0gVGFibGUuDQo+ID4gPj4gKw0KPiA+ID4+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAg ICAgICAgIFRoZSBwYXJzZXIgaXMgZGVyZWdpc3RlcmVkLg0KPiA+ID4+ICsgIEByZXR2YWwgRUZJ X05PVF9GT1VORCAgICAgICAgIFRoZSBwYXJzZXIgd2FzIG5vdCByZWdpc3RlcmVkLg0KPiA+ID4+ ICsqLw0KPiA+ID4+ICtFRklfU1RBVFVTDQo+ID4gPj4gK0VGSUFQSQ0KPiA+ID4+ICtSc2RwUGFy c2VyTGliRGVzdHJ1Y3RvciAoDQo+ID4gPj4gKyAgSU4gQ09OU1QgRUZJX0hBTkRMRSAgICAgICAg ICAgICAgICBJbWFnZUhhbmRsZSwNCj4gPiA+PiArICBJTiAgICAgICBFRklfU1lTVEVNX1RBQkxF ICAqIENPTlNUIFN5c3RlbVRhYmxlDQo+ID4gPj4gKyAgKQ0KPiA+ID4+ICt7DQo+ID4gPj4gKyAg cmV0dXJuIERlcmVnaXN0ZXJQYXJzZXIgKA0KPiA+ID4+ICsgICAgICAgICAgIFJTRFBfVEFCTEVf SU5GTw0KPiA+ID4+ICsgICAgICAgICAgICk7DQo+ID4gPj4gK30NCj4gPiA+PiBkaWZmIC0tZ2l0 DQo+ID4NCj4gYS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9Q YXJzZXJzL1JzZHAvUnNkcFBhcnNlDQo+IHJMaWIuDQo+ID4gaW5mDQo+ID4NCj4gYi9TaGVsbFBr Zy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL1JzZHAvUnNkcFBh cnNlDQo+IHJMaWIuDQo+ID4gaW5mDQo+ID4gPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiA+ PiBpbmRleA0KPiA+IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMz M2I4ZWZkYjY2ZjA2Nzg2MmFlNTANCj4gPiA5ZDY0NTc4MzE5ZmM2M2I5ZjgNCj4gPiA+PiAtLS0g L2Rldi9udWxsDQo+ID4gPj4gKysrDQo+ID4NCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVs bEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL1JzZHAvUnNkcFBhcnNlDQo+IHJMaWIuDQo+ID4g aW5mDQo+ID4gPj4gQEAgLTAsMCArMSwzMyBAQA0KPiA+ID4+ICsjIyBAZmlsZQ0KPiA+ID4+ICsj DQo+ID4gPj4gKyMgIENvcHlyaWdodCAoYykgMjAxOCwgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMg cmVzZXJ2ZWQuDQo+ID4gPj4gKyMNCj4gPiA+PiArIyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNj b21wYW55aW5nIG1hdGVyaWFscw0KPiA+ID4+ICsjICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZh aWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZg0KPiB0aGUNCj4gPiBCU0Qg TGljZW5zZQ0KPiA+ID4+ICsjICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4g IFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5DQo+IGJlDQo+ID4gZm91bmQgYXQNCj4g PiA+PiArIyAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0K PiA+ID4+ICsjDQo+ID4gPj4gKyMgIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRI RSBCU0QgTElDRU5TRSBPTiBBTiAiQVMNCj4gSVMiDQo+ID4gQkFTSVMsDQo+ID4gPj4gKyMgIFdJ VEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUg0K PiA+IEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gPiA+PiArIyMNCj4gPiA+PiArDQo+ID4gPj4gK1tE ZWZpbmVzXQ0KPiA+ID4+ICsgIElORl9WRVJTSU9OICAgID0gMHgwMDAxMDAxOQ0KPiA+ID4+ICsg IEJBU0VfTkFNRSAgICAgID0gUnNkcFBhcnNlckxpYg0KPiA+ID4+ICsgIEZJTEVfR1VJRCAgICAg ID0gOTM2NUNFQjMtNTJEQy00ODhELTlFMkUtQzRFMUUzMDYyRkE5DQo+ID4gPj4gKyAgVkVSU0lP Tl9TVFJJTkcgPSAxLjANCj4gPiA+PiArICBNT0RVTEVfVFlQRSAgICA9IERYRV9EUklWRVINCj4g PiA+PiArICBMSUJSQVJZX0NMQVNTICA9IE5VTEx8RFhFX0RSSVZFUg0KPiA+ID4+ICsgIENPTlNU UlVDVE9SICAgID0gUnNkcFBhcnNlckxpYkNvbnN0cnVjdG9yDQo+ID4gPj4gKyAgREVTVFJVQ1RP UiAgICAgPSBSc2RwUGFyc2VyTGliRGVzdHJ1Y3Rvcg0KPiA+ID4+ICsNCj4gPiA+PiArW1NvdXJj ZXNdDQo+ID4gPj4gKyAgUnNkcFBhcnNlci5jDQo+ID4gPj4gKw0KPiA+ID4+ICtbUGFja2FnZXNd DQo+ID4gPj4gKyAgTWRlUGtnL01kZVBrZy5kZWMNCj4gPiA+PiArICBTaGVsbFBrZy9TaGVsbFBr Zy5kZWMNCj4gPiA+PiArICBNZGVNb2R1bGVQa2cvTWRlTW9kdWxlUGtnLmRlYw0KPiA+ID4+ICsN Cj4gPiA+PiArW0xpYnJhcnlDbGFzc2VzXQ0KPiA+ID4+ICsgIFNoZWxsQWNwaVZpZXdDb21tYW5k TGliDQo+ID4gPj4gZGlmZiAtLWdpdA0KPiA+IGEvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxB Y3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9TbGl0L1NsaXRQYXJzZXIuYw0KPiA+IGIvU2hlbGxQ a2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9TbGl0L1NsaXRQ YXJzZXIuYw0KPiA+ID4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gPj4gaW5kZXgNCj4gPiAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNmE0YzQxNmFhMjU5YWYx NmFhMGI3DQo+ID4gNzZkY2MwNTg2MDRiNWMxN2MyDQo+ID4gPj4gLS0tIC9kZXYvbnVsbA0KPiA+ ID4+ICsrKw0KPiA+IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRM aWIvUGFyc2Vycy9TbGl0L1NsaXRQYXJzZXIuYw0KPiA+ID4+IEBAIC0wLDAgKzEsMTg3IEBADQo+ ID4gPj4gKy8qKg0KPiA+ID4+ICsgIFNMSVQgdGFibGUgcGFyc2VyDQo+ID4gPj4gKw0KPiA+ID4+ ICsgIENvcHlyaWdodCAoYykgMjAxNiAtIDIwMTgsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJl c2VydmVkLg0KPiA+ID4+ICsgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRl cmlhbHMNCj4gPiA+PiArICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRo ZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZg0KPiB0aGUNCj4gPiBCU0QgTGljZW5zZQ0KPiA+ID4+ ICsgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBv ZiB0aGUgbGljZW5zZSBtYXkNCj4gYmUNCj4gPiBmb3VuZCBhdA0KPiA+ID4+ICsgIGh0dHA6Ly9v cGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4gPiA+PiArDQo+ID4gPj4g KyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFO ICJBUw0KPiBJUyINCj4gPiBCQVNJUywNCj4gPiA+PiArICBXSVRIT1VUIFdBUlJBTlRJRVMgT1Ig UkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVINCj4gPiBFWFBSRVNTIE9SIElNUExJ RUQuDQo+ID4gPj4gKw0KPiA+ID4+ICsgIEBwYXIgUmVmZXJlbmNlKHMpOg0KPiA+ID4+ICsgICAg LSBBQ1BJIDYuMiBTcGVjaWZpY2F0aW9uIC0gRXJyYXRhIEEsIFNlcHRlbWJlciAyMDE3DQo+ID4g Pj4gKyoqLw0KPiA+ID4+ICsNCj4gPiA+PiArI2luY2x1ZGUgPEluZHVzdHJ5U3RhbmRhcmQvQWNw aS5oPg0KPiA+ID4+ICsjaW5jbHVkZSA8TGlicmFyeS9QcmludExpYi5oPg0KPiA+ID4+ICsjaW5j bHVkZSA8TGlicmFyeS9VZWZpTGliLmg+DQo+ID4gPj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0FjcGlW aWV3L0FjcGlQYXJzZXIuaD4NCj4gPiA+PiArI2luY2x1ZGUgPExpYnJhcnkvQWNwaVZpZXcvQWNw aVRhYmxlUGFyc2VyLmg+DQo+ID4gPj4gKw0KPiA+ID4+ICsvLyBMb2NhbCBWYXJpYWJsZXMNCj4g PiA+PiArU1RBVElDIENPTlNUIFVJTlQ2NCogU2xpdFN5c3RlbUxvY2FsaXR5Q291bnQ7DQo+ID4g Pj4gK1NUQVRJQyBBQ1BJX0RFU0NSSVBUSU9OX0hFQURFUl9JTkZPIEFjcGlIZHJJbmZvOw0KPiA+ ID4+ICsNCj4gPiA+PiArLyoqIEFuIEFDUElfUEFSU0VSIGFycmF5IGRlc2NyaWJpbmcgdGhlIEFD UEkgU0xJVCB0YWJsZS4NCj4gPiA+PiArKi8NCj4gPiA+PiArU1RBVElDIENPTlNUIEFDUElfUEFS U0VSIFNsaXRQYXJzZXJbXSA9IHsNCj4gPiA+PiArICBQQVJTRV9BQ1BJX0hFQURFUiAoJkFjcGlI ZHJJbmZvKSwNCj4gPiA+PiArICB7TCJOdW1iZXIgb2YgU3lzdGVtIExvY2FsaXRpZXMiLCA4LCAz NiwgTCIweCVseCIsIE5VTEwsDQo+ID4gPj4gKyAgIChWT0lEKiopJlNsaXRTeXN0ZW1Mb2NhbGl0 eUNvdW50LCBOVUxMLCBOVUxMfQ0KPiA+ID4+ICt9Ow0KPiA+ID4+ICsNCj4gPiA+PiArLyoqIE1h Y3JvIHRvIGdldCB0aGUgdmFsdWUgb2YgYSBTeXN0ZW0gTG9jYWxpdHkNCj4gPiA+PiArKi8NCj4g PiA+PiArI2RlZmluZSBTTElUX0VMRU1FTlQoUHRyLCBpLCBqKSAqKFB0ciArIChpICogTG9jYWxp dHlDb3VudCkgKyBqKQ0KPiA+ID4+ICsNCj4gPiA+PiArLyoqIFRoaXMgZnVuY3Rpb24gcGFyc2Vz IHRoZSBBQ1BJIFNMSVQgdGFibGUuDQo+ID4gPj4gKyAgV2hlbiB0cmFjZSBpcyBlbmFibGVkIHRo aXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBTTElUIHRhYmxlIGFuZA0KPiA+ID4+ICsgIHRyYWNlcyB0 aGUgQUNQSSB0YWJsZSBmaWVsZHMuDQo+ID4gPj4gKw0KPiA+ID4+ICsgIFRoaXMgZnVuY3Rpb24g YWxzbyB2YWxpZGF0ZXMgU3lzdGVtIExvY2FsaXRpZXMgZm9yIHRoZSBmb2xsb3dpbmc6DQo+ID4g Pj4gKyAgICAtIERpYWdvbmFsIGVsZW1lbnRzIGhhdmUgYSBub3JtYWxpemVkIHZhbHVlIG9mIDEw DQo+ID4gPj4gKyAgICAtIFJlbGF0aXZlIGRpc3RhbmNlIGZyb20gU3lzdGVtIExvY2FsaXR5IGF0 IGkqTitqIGlzIHNhbWUgYXMNCj4gPiA+PiArICAgICAgaipOK2kNCj4gPiA+PiArDQo+ID4gPj4g KyAgQHBhcmFtIFtpbl0gVHJhY2UgICAgICAgICAgICAgIElmIFRSVUUsIHRyYWNlIHRoZSBBQ1BJ IGZpZWxkcy4NCj4gPiA+PiArICBAcGFyYW0gW2luXSBQdHIgICAgICAgICAgICAgICAgUG9pbnRl ciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gPiA+PiArICBAcGFyYW0gW2luXSBBY3Bp VGFibGVMZW5ndGggICAgTGVuZ3RoIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiA+ID4+ICsgIEBwYXJh bSBbaW5dIEFjcGlUYWJsZVJldmlzaW9uICBSZXZpc2lvbiBvZiB0aGUgQUNQSSB0YWJsZS4NCj4g PiA+PiArKi8NCj4gPiA+PiArVk9JRA0KPiA+ID4+ICtFRklBUEkNCj4gPiA+PiArUGFyc2VBY3Bp U2xpdCAoDQo+ID4gPj4gKyAgSU4gQk9PTEVBTiBUcmFjZSwNCj4gPiA+PiArICBJTiBVSU5UOCog IFB0ciwNCj4gPiA+PiArICBJTiBVSU5UMzIgIEFjcGlUYWJsZUxlbmd0aCwNCj4gPiA+PiArICBJ TiBVSU5UOCAgIEFjcGlUYWJsZVJldmlzaW9uDQo+ID4gPj4gKyAgKQ0KPiA+ID4+ICt7DQo+ID4g Pj4gKyAgVUlOVDMyIE9mZnNldDsNCj4gPiA+PiArICBVSU5UNjQgaTsNCj4gPiA+PiArICBVSU5U NjQgajsNCj4gPiA+PiArICBVSU5UNjQgTG9jYWxpdHlDb3VudDsNCj4gPiA+PiArICBVSU5UOCog TG9jYWxpdHlQdHI7DQo+ID4gPj4gKyAgQ0hBUjE2IEJ1ZmZlcls4MF07ICAvLyBVc2VkIGZvciBB c2NpaU5hbWUgcGFyYW0gb2YgUGFyc2VBY3BpDQo+ID4gPj4gKw0KPiA+ID4+ICsgIGlmICghVHJh Y2UpIHsNCj4gPiA+PiArICAgIHJldHVybjsNCj4gPiA+PiArICB9DQo+ID4gPj4gKw0KPiA+ID4+ ICsgIE9mZnNldCA9IFBhcnNlQWNwaSAoDQo+ID4gPj4gKyAgICAgICAgICAgICBUUlVFLA0KPiA+ ID4+ICsgICAgICAgICAgICAgMCwNCj4gPiA+PiArICAgICAgICAgICAgICJTTElUIiwNCj4gPiA+ PiArICAgICAgICAgICAgIFB0ciwNCj4gPiA+PiArICAgICAgICAgICAgIEFjcGlUYWJsZUxlbmd0 aCwNCj4gPiA+PiArICAgICAgICAgICAgIFBBUlNFUl9QQVJBTVMgKFNsaXRQYXJzZXIpDQo+ID4g Pj4gKyAgICAgICAgICAgICApOw0KPiA+ID4+ICsgIExvY2FsaXR5UHRyID0gUHRyICsgT2Zmc2V0 Ow0KPiA+ID4+ICsNCj4gPiA+PiArICBMb2NhbGl0eUNvdW50ID0gKlNsaXRTeXN0ZW1Mb2NhbGl0 eUNvdW50Ow0KPiA+ID4+ICsgIC8vIFdlIG9ubHkgcHJpbnQgdGhlIExvY2FsaXRpZXMgaWYgdGhl IGNvdW50IGlzIGxlc3MgdGhhbiAxNg0KPiA+ID4+ICsgIC8vIElmIHRoZSBsb2NhbGl0eSBjb3Vu dCBpcyBtb3JlIHRoYW4gMTYgdGhlbiByZWZlciB0byB0aGUNCj4gPiA+PiArICAvLyByYXcgZGF0 YSBkdW1wLg0KPiA+ID4+ICsgIGlmIChMb2NhbGl0eUNvdW50IDwgMTYpIHsNCj4gPiA+PiArICAg IFVuaWNvZGVTUHJpbnQgKA0KPiA+ID4+ICsgICAgICBCdWZmZXIsDQo+ID4gPj4gKyAgICAgIHNp emVvZiAoQnVmZmVyKSwNCj4gPiA+PiArICAgICAgTCJFbnRyeVsweCVseF1bMHglbHhdIiwNCj4g PiA+PiArICAgICAgTG9jYWxpdHlDb3VudCwNCj4gPiA+PiArICAgICAgTG9jYWxpdHlDb3VudA0K PiA+ID4+ICsgICAgICApOw0KPiA+ID4+ICsgICAgUHJpbnRGaWVsZE5hbWUgKDAsIEJ1ZmZlcik7 DQo+ID4gPj4gKyAgICBQcmludCAoTCJcbiIpOw0KPiA+ID4+ICsgICAgUHJpbnQgKEwiICAgICAg ICIpOw0KPiA+ID4+ICsgICAgZm9yIChqID0gMDsgaiA8IExvY2FsaXR5Q291bnQ7IGorKykgew0K PiA+ID4+ICsgICAgICBQcmludCAoTCIgKCUzZCkgIiwgaik7DQo+ID4gPj4gKyAgICB9DQo+ID4g Pj4gKyAgICBQcmludCAoTCJcbiIpOw0KPiA+ID4+ICsgICAgZm9yIChpID0gMDsgaSA8IExvY2Fs aXR5Q291bnQ7IGkrKykgew0KPiA+ID4+ICsgICAgICBQcmludCAoTCIgKCUzZCkgIiwgaSk7DQo+ ID4gPj4gKyAgICAgIGZvciAoaiA9IDA7IGogPCBMb2NhbGl0eUNvdW50OyBqKyspIHsNCj4gPiA+ PiArICAgICAgICBQcmludCAoTCIgICUzZCAgIiwgU0xJVF9FTEVNRU5UIChMb2NhbGl0eVB0ciwg aSwgaikpOw0KPiA+ID4+ICsgICAgICB9DQo+ID4gPj4gKyAgICAgIFByaW50IChMIlxuIik7DQo+ ID4gPj4gKyAgICB9DQo+ID4gPj4gKyAgfQ0KPiA+ID4+ICsNCj4gPiA+PiArICAvLyBWYWxpZGF0 ZQ0KPiA+ID4+ICsgIGZvciAoaSA9IDA7IGkgPCBMb2NhbGl0eUNvdW50OyBpKyspIHsNCj4gPiA+ PiArICAgIGZvciAoaiA9IDA7IGogPCBMb2NhbGl0eUNvdW50OyBqKyspIHsNCj4gPiA+PiArICAg ICAgLy8gRWxlbWVudFt4XVt4XSBtdXN0IGJlIGVxdWFsIHRvIDEwDQo+ID4gPj4gKyAgICAgIGlm ICgoaSA9PSBqKSAmJiAoU0xJVF9FTEVNRU5UIChMb2NhbGl0eVB0ciwgaSwgaikgIT0gMTApKSB7 DQo+ID4gPj4gKyAgICAgICAgSW5jcmVtZW50RXJyb3JDb3VudCAoKTsNCj4gPiA+PiArICAgICAg ICBQcmludCAoDQo+ID4gPj4gKyAgICAgICAgICBMIkVSUk9SOiBEaWFnb25hbCBFbGVtZW50WzB4 JWx4XVsweCVseF0gKCUzZCkuIg0KPiA+ID4+ICsgICAgICAgICAgICAiIE5vcm1hbGl6ZWQgVmFs dWUgaXMgbm90IDEwXG4iLA0KPiA+ID4+ICsgICAgICAgICAgaSwNCj4gPiA+PiArICAgICAgICAg IGosDQo+ID4gPj4gKyAgICAgICAgICBTTElUX0VMRU1FTlQgKExvY2FsaXR5UHRyLCBpLCBqKQ0K PiA+ID4+ICsgICAgICAgICAgKTsNCj4gPiA+PiArICAgICAgfQ0KPiA+ID4+ICsgICAgICAvLyBF bGVtZW50W2ldW2pdIG11c3QgYmUgZXF1YWwgdG8gRWxlbWVudFtqXVtpXQ0KPiA+ID4+ICsgICAg ICBpZiAoU0xJVF9FTEVNRU5UIChMb2NhbGl0eVB0ciwgaSwgaikgIT0NCj4gPiA+PiArICAgICAg ICAgIFNMSVRfRUxFTUVOVCAoTG9jYWxpdHlQdHIsIGosIGkpKSB7DQo+ID4gPj4gKyAgICAgICAg SW5jcmVtZW50RXJyb3JDb3VudCAoKTsNCj4gPiA+PiArICAgICAgICBQcmludCAoDQo+ID4gPj4g KyAgICAgICAgICBMIkVSUk9SOiBSZWxhdGl2ZSBkaXN0YW5jZXMgZm9yIEVsZW1lbnRbMHglbHhd WzB4JWx4XSAoJTNkKQ0KPiA+IGFuZCBcbiINCj4gPiA+PiArICAgICAgICAgICAiRWxlbWVudFsw eCVseF1bMHglbHhdICglM2QpIGRvIG5vdCBtYXRjaC5cbiIsDQo+ID4gPj4gKyAgICAgICAgICBp LA0KPiA+ID4+ICsgICAgICAgICAgaiwNCj4gPiA+PiArICAgICAgICAgIFNMSVRfRUxFTUVOVCAo TG9jYWxpdHlQdHIsIGksIGopLA0KPiA+ID4+ICsgICAgICAgICAgaiwNCj4gPiA+PiArICAgICAg ICAgIGksDQo+ID4gPj4gKyAgICAgICAgICBTTElUX0VMRU1FTlQgKExvY2FsaXR5UHRyLCBqLCBp KQ0KPiA+ID4+ICsgICAgICAgICAgKTsNCj4gPiA+PiArICAgICAgfQ0KPiA+ID4+ICsgICAgfQ0K PiA+ID4+ICsgIH0NCj4gPiA+PiArfQ0KPiA+ID4+ICsNCj4gPiA+PiArLyoqIFJlZ2lzdGVyIHRo ZSBwYXJzZXIuDQo+ID4gPj4gKw0KPiA+ID4+ICsgIEBwYXJhbSBbaW5dICBJbWFnZUhhbmRsZSAg VGhlIGhhbmRsZSB0byB0aGUgaW1hZ2UuDQo+ID4gPj4gKyAgQHBhcmFtIFtpbl0gIFN5c3RlbVRh YmxlICBQb2ludGVyIHRvIHRoZSBTeXN0ZW0gVGFibGUuDQo+ID4gPj4gKw0KPiA+ID4+ICsgIEBy ZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBwYXJzZXIgaXMgcmVnaXN0ZXJlZC4NCj4g PiA+PiArICBAcmV0dmFsIEVGSV9BTFJFQURZX1NUQVJURUQgICBUaGUgcGFyc2VyIGZvciB0aGUg QUNQSSBUYWJsZQ0KPiA+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhcyBh bHJlYWR5IHJlZ2lzdGVyZWQuDQo+ID4gPj4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVU RVIgQSBwYXJhbWV0ZXIgaXMgaW52YWxpZA0KPiA+ID4+ICsgIEByZXR2YWwgRUZJX09VVF9PRl9S RVNPVVJDRVMgIE5vIHNwYWNlIHRvIHJlZ2lzdGVyIHRoZQ0KPiA+ID4+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHBhcnNlci4NCj4gPiA+PiArKi8NCj4gPiA+PiArRUZJX1NUQVRV Uw0KPiA+ID4+ICtFRklBUEkNCj4gPiA+PiArU2xpdFBhcnNlckxpYkNvbnN0cnVjdG9yICgNCj4g PiA+PiArICBJTiBDT05TVCBFRklfSEFORExFICAgICAgICAgICAgICAgIEltYWdlSGFuZGxlLA0K PiA+ID4+ICsgIElOICAgICAgIEVGSV9TWVNURU1fVEFCTEUgICogQ09OU1QgU3lzdGVtVGFibGUN Cj4gPiA+PiArICApDQo+ID4gPj4gK3sNCj4gPiA+PiArICByZXR1cm4gUmVnaXN0ZXJQYXJzZXIg KA0KPiA+ID4+ICsNCj4gPiBFRklfQUNQSV82XzJfU1lTVEVNX0xPQ0FMSVRZX0lORk9STUFUSU9O X1RBQkxFX1NJR05BVFVSRSwNCj4gPiA+PiArICAgICAgICAgICBQYXJzZUFjcGlTbGl0DQo+ID4g Pj4gKyAgICAgICAgICAgKTsNCj4gPiA+PiArfQ0KPiA+ID4+ICsNCj4gPiA+PiArLyoqIERlcmVn aXN0ZXIgdGhlIHBhcnNlci4NCj4gPiA+PiArDQo+ID4gPj4gKyAgQHBhcmFtIFtpbl0gIEltYWdl SGFuZGxlICBUaGUgaGFuZGxlIHRvIHRoZSBpbWFnZS4NCj4gPiA+PiArICBAcGFyYW0gW2luXSAg U3lzdGVtVGFibGUgIFBvaW50ZXIgdG8gdGhlIFN5c3RlbSBUYWJsZS4NCj4gPiA+PiArDQo+ID4g Pj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhlIHBhcnNlciBpcyBkZXJlZ2lz dGVyZWQuDQo+ID4gPj4gKyAgQHJldHZhbCBFRklfTk9UX0ZPVU5EICAgICAgICAgVGhlIHBhcnNl ciB3YXMgbm90IHJlZ2lzdGVyZWQuDQo+ID4gPj4gKyovDQo+ID4gPj4gK0VGSV9TVEFUVVMNCj4g PiA+PiArRUZJQVBJDQo+ID4gPj4gK1NsaXRQYXJzZXJMaWJEZXN0cnVjdG9yICgNCj4gPiA+PiAr ICBJTiBDT05TVCBFRklfSEFORExFICAgICAgICAgICAgICAgIEltYWdlSGFuZGxlLA0KPiA+ID4+ ICsgIElOICAgICAgIEVGSV9TWVNURU1fVEFCTEUgICogQ09OU1QgU3lzdGVtVGFibGUNCj4gPiA+ PiArICApDQo+ID4gPj4gK3sNCj4gPiA+PiArICByZXR1cm4gRGVyZWdpc3RlclBhcnNlciAoDQo+ ID4gPj4gKw0KPiA+IEVGSV9BQ1BJXzZfMl9TWVNURU1fTE9DQUxJVFlfSU5GT1JNQVRJT05fVEFC TEVfU0lHTkFUVVJFDQo+ID4gPj4gKyAgICAgICAgICAgKTsNCj4gPiA+PiArfQ0KPiA+ID4+IGRp ZmYgLS1naXQNCj4gPg0KPiBhL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21t YW5kTGliL1BhcnNlcnMvU2xpdC9TbGl0UGFyc2VyTGliLg0KPiBpbmYNCj4gPg0KPiBiL1NoZWxs UGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvU2xpdC9TbGl0 UGFyc2VyTGliLg0KPiBpbmYNCj4gPiA+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+ID4+IGlu ZGV4DQo+ID4gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTY0MzBl ZDlhOThmMWNjY2NkZTA3NQ0KPiA+IDIyYjRiZjkwZDZkMjJjZDc5Mg0KPiA+ID4+IC0tLSAvZGV2 L251bGwNCj4gPiA+PiArKysNCj4gPg0KPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNw aVZpZXdDb21tYW5kTGliL1BhcnNlcnMvU2xpdC9TbGl0UGFyc2VyTGliLg0KPiBpbmYNCj4gPiA+ PiBAQCAtMCwwICsxLDMzIEBADQo+ID4gPj4gKyMjIEBmaWxlDQo+ID4gPj4gKyMNCj4gPiA+PiAr IyAgQ29weXJpZ2h0IChjKSAyMDE3IC0gMjAxOCwgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVz ZXJ2ZWQuDQo+ID4gPj4gKyMNCj4gPiA+PiArIyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21w YW55aW5nIG1hdGVyaWFscw0KPiA+ID4+ICsjICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxh YmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZg0KPiB0aGUNCj4gPiBCU0QgTGlj ZW5zZQ0KPiA+ID4+ICsjICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRo ZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5DQo+IGJlDQo+ID4gZm91bmQgYXQNCj4gPiA+ PiArIyAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiA+ ID4+ICsjDQo+ID4gPj4gKyMgIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBC U0QgTElDRU5TRSBPTiBBTiAiQVMNCj4gSVMiDQo+ID4gQkFTSVMsDQo+ID4gPj4gKyMgIFdJVEhP VVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUg0KPiA+ IEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gPiA+PiArIyMNCj4gPiA+PiArDQo+ID4gPj4gK1tEZWZp bmVzXQ0KPiA+ID4+ICsgIElORl9WRVJTSU9OICAgID0gMHgwMDAxMDAxOQ0KPiA+ID4+ICsgIEJB U0VfTkFNRSAgICAgID0gU2xpdFBhcnNlckxpYg0KPiA+ID4+ICsgIEZJTEVfR1VJRCAgICAgID0g M0RDRjczMzMtMzY3Qi00RDQwLTg1NkEtRkYwRjczRkI2QjQ5DQo+ID4gPj4gKyAgVkVSU0lPTl9T VFJJTkcgPSAxLjANCj4gPiA+PiArICBNT0RVTEVfVFlQRSAgICA9IERYRV9EUklWRVINCj4gPiA+ PiArICBMSUJSQVJZX0NMQVNTICA9IE5VTEx8RFhFX0RSSVZFUg0KPiA+ID4+ICsgIENPTlNUUlVD VE9SICAgID0gU2xpdFBhcnNlckxpYkNvbnN0cnVjdG9yDQo+ID4gPj4gKyAgREVTVFJVQ1RPUiAg ICAgPSBTbGl0UGFyc2VyTGliRGVzdHJ1Y3Rvcg0KPiA+ID4+ICsNCj4gPiA+PiArW1NvdXJjZXNd DQo+ID4gPj4gKyAgU2xpdFBhcnNlci5jDQo+ID4gPj4gKw0KPiA+ID4+ICtbUGFja2FnZXNdDQo+ ID4gPj4gKyAgTWRlUGtnL01kZVBrZy5kZWMNCj4gPiA+PiArICBTaGVsbFBrZy9TaGVsbFBrZy5k ZWMNCj4gPiA+PiArICBNZGVNb2R1bGVQa2cvTWRlTW9kdWxlUGtnLmRlYw0KPiA+ID4+ICsNCj4g PiA+PiArW0xpYnJhcnlDbGFzc2VzXQ0KPiA+ID4+ICsgIFNoZWxsQWNwaVZpZXdDb21tYW5kTGli DQo+ID4gPj4gZGlmZiAtLWdpdA0KPiA+DQo+IGEvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxB Y3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9TcGNyL1NwY3JQYXJzZXIuDQo+IGMNCj4gPg0KPiBi L1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvU3Bj ci9TcGNyUGFyc2VyLg0KPiBjDQo+ID4gPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiA+PiBp bmRleA0KPiA+IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI0Njg3 YTcwOGJiODI4YzUzY2ViNw0KPiA+IGE2MWU5ZTExY2UwMGI1ODNjZDUNCj4gPiA+PiAtLS0gL2Rl di9udWxsDQo+ID4gPj4gKysrDQo+ID4NCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFj cGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL1NwY3IvU3BjclBhcnNlci4NCj4gYw0KPiA+ID4+IEBA IC0wLDAgKzEsMjEzIEBADQo+ID4gPj4gKy8qKg0KPiA+ID4+ICsgIFNQQ1IgdGFibGUgcGFyc2Vy DQo+ID4gPj4gKw0KPiA+ID4+ICsgIENvcHlyaWdodCAoYykgMjAxNiAtIDIwMTgsIEFSTSBMaW1p dGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiA+ID4+ICsgIFRoaXMgcHJvZ3JhbSBhbmQgdGhl IGFjY29tcGFueWluZyBtYXRlcmlhbHMNCj4gPiA+PiArICBhcmUgbGljZW5zZWQgYW5kIG1hZGUg YXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZg0KPiB0aGUNCj4gPiBC U0QgTGljZW5zZQ0KPiA+ID4+ICsgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9u LiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkNCj4gYmUNCj4gPiBmb3VuZCBhdA0K PiA+ID4+ICsgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHAN Cj4gPiA+PiArDQo+ID4gPj4gKyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhF IEJTRCBMSUNFTlNFIE9OIEFOICJBUw0KPiBJUyINCj4gPiBCQVNJUywNCj4gPiA+PiArICBXSVRI T1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVINCj4g PiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ID4gPj4gKw0KPiA+ID4+ICsgIEBwYXIgUmVmZXJlbmNl KHMpOg0KPiA+ID4+ICsgICAgLSBNaWNyb3NvZnQgU2VyaWFsIFBvcnQgQ29uc29sZSBSZWRpcmVj dGlvbiBUYWJsZQ0KPiA+ID4+ICsgICAgICBTcGVjaWZpY2F0aW9uIC0gVmVyc2lvbiAxLjAzIC0g QXVndXN0IDEwLCAyMDE1Lg0KPiA+ID4+ICsqKi8NCj4gPiA+PiArDQo+ID4gPj4gKyNpbmNsdWRl IDxJbmR1c3RyeVN0YW5kYXJkL0FjcGkuaD4NCj4gPiA+PiArI2luY2x1ZGUgPEluZHVzdHJ5U3Rh bmRhcmQvU2VyaWFsUG9ydENvbnNvbGVSZWRpcmVjdGlvblRhYmxlLmg+DQo+ID4gPj4gKyNpbmNs dWRlIDxMaWJyYXJ5L1VlZmlMaWIuaD4NCj4gPiA+PiArI2luY2x1ZGUgPExpYnJhcnkvQWNwaVZp ZXcvQWNwaVBhcnNlci5oPg0KPiA+ID4+ICsjaW5jbHVkZSA8TGlicmFyeS9BY3BpVmlldy9BY3Bp VGFibGVQYXJzZXIuaD4NCj4gPiA+PiArDQo+ID4gPj4gKy8vIExvY2FsIHZhcmlhYmxlcw0KPiA+ ID4+ICtTVEFUSUMgQUNQSV9ERVNDUklQVElPTl9IRUFERVJfSU5GTyBBY3BpSGRySW5mbzsNCj4g PiA+PiArDQo+ID4gPj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHZhbGlkYXRlcyB0aGUgSW50ZXJydXB0 IFR5cGUuDQo+ID4gPj4gKw0KPiA+ID4+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0 byB0aGUgc3RhcnQgb2YgdGhlIGZpZWxkIGRhdGEuDQo+ID4gPj4gKyAgQHBhcmFtIFtpbl0gQ29u dGV4dCBQb2ludGVyIHRvIGNvbnRleHQgc3BlY2lmaWMgaW5mb3JtYXRpb24gZS5nLiB0aGlzDQo+ ID4gPj4gKyAgICAgICAgICAgICAgICAgICAgICBjb3VsZCBiZSBhIHBvaW50ZXIgdG8gdGhlIEFD UEkgdGFibGUgaGVhZGVyLg0KPiA+ID4+ICsqLw0KPiA+ID4+ICtTVEFUSUMNCj4gPiA+PiArVk9J RA0KPiA+ID4+ICtFRklBUEkNCj4gPiA+PiArVmFsaWRhdGVJbnRlcnJ1cHRUeXBlICgNCj4gPiA+ PiArICBJTiBVSU5UOCogUHRyLA0KPiA+ID4+ICsgIElOIFZPSUQqICBDb250ZXh0DQo+ID4gPj4g KyAgKTsNCj4gPiA+PiArDQo+ID4gPj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHZhbGlkYXRlcyB0aGUg SXJxLg0KPiA+ID4+ICsNCj4gPiA+PiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8g dGhlIHN0YXJ0IG9mIHRoZSBmaWVsZCBkYXRhLg0KPiA+ID4+ICsgIEBwYXJhbSBbaW5dIENvbnRl eHQgUG9pbnRlciB0byBjb250ZXh0IHNwZWNpZmljIGluZm9ybWF0aW9uIGUuZy4gdGhpcw0KPiA+ ID4+ICsgICAgICAgICAgICAgICAgICAgICAgY291bGQgYmUgYSBwb2ludGVyIHRvIHRoZSBBQ1BJ IHRhYmxlIGhlYWRlci4NCj4gPiA+PiArKi8NCj4gPiA+PiArU1RBVElDDQo+ID4gPj4gK1ZPSUQN Cj4gPiA+PiArRUZJQVBJDQo+ID4gPj4gK1ZhbGlkYXRlSXJxICgNCj4gPiA+PiArICBJTiBVSU5U OCogUHRyLA0KPiA+ID4+ICsgIElOIFZPSUQqICBDb250ZXh0DQo+ID4gPj4gKyAgKTsNCj4gPiA+ PiArDQo+ID4gPj4gKy8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBBQ1BJ IFNQQ1IgVGFibGUuDQo+ID4gPj4gKyovDQo+ID4gPj4gK1NUQVRJQyBDT05TVCBBQ1BJX1BBUlNF UiBTcGNyUGFyc2VyW10gPSB7DQo+ID4gPj4gKyAgUEFSU0VfQUNQSV9IRUFERVIgKCZBY3BpSGRy SW5mbyksDQo+ID4gPj4gKyAge0wiSW50ZXJmYWNlIFR5cGUiLCAxLCAzNiwgTCIlZCIsIE5VTEws IE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ID4+ICsgIHtMIlJlc2VydmVkIiwgMywgMzcsIEwiJXgg JXggJXgiLCBEdW1wM0NoYXJzLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPiA+PiArICB7TCJCYXNl IEFkZHJlc3MiLCAxMiwgNDAsIE5VTEwsIER1bXBHYXMsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ ID4+ICsgIHtMIkludGVycnVwdCBUeXBlIiwgMSwgNTIsIEwiJWQiLCBOVUxMLCBOVUxMLCBWYWxp ZGF0ZUludGVycnVwdFR5cGUsDQo+ID4gTlVMTH0sDQo+ID4gPj4gKyAge0wiSVJRIiwgMSwgNTMs IEwiJWQiLCBOVUxMLCBOVUxMLCBWYWxpZGF0ZUlycSwgTlVMTH0sDQo+ID4gPj4gKyAge0wiR2xv YmFsIFN5c3RlbSBJbnRlcnJ1cHQiLCA0LCA1NCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwg TlVMTH0sDQo+ID4gPj4gKyAge0wiQmF1ZCBSYXRlIiwgMSwgNTgsIEwiJWQiLCBOVUxMLCBOVUxM LCBOVUxMLCBOVUxMfSwNCj4gPiA+PiArICB7TCJQYXJpdHkiLCAxLCA1OSwgTCIlZCIsIE5VTEws IE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ID4+ICsgIHtMIlN0b3AgQml0cyIsIDEsIDYwLCBMIiVk IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4gPj4gKyAge0wiRmxvdyBDb250cm9sIiwg MSwgNjEsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ID4+ICsgIHtMIlRl cm1pbmFsIFR5cGUiLCAxLCA2MiwgTCIlZCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ ID4+ICsgIHtMIlJlc2VydmVkIiwgMSwgNjMsIEwiJXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxM fSwNCj4gPiA+PiArDQo+ID4gPj4gKyAge0wiUENJIERldmljZSBJRCIsIDIsIDY0LCBMIjB4JXgi LCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPiA+PiArICB7TCJQQ0kgVmVuZG9yIElEIiwg MiwgNjYsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ID4+ICsgIHtMIlBD SSBCdXMgTnVtYmVyIiwgMSwgNjgsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0K PiA+ID4+ICsgIHtMIlBDSSBEZXZpY2UgTnVtYmVyIiwgMSwgNjksIEwiMHgleCIsIE5VTEwsIE5V TEwsIE5VTEwsIE5VTEx9LA0KPiA+ID4+ICsgIHtMIlBDSSBGdW5jdGlvbiBOdW1iZXIiLCAxLCA3 MCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4gPj4gKyAge0wiUENJIEZs YWdzIiwgNCwgNzEsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ID4+ICsg IHtMIlBDSSBTZWdtZW50IiwgMSwgNzUsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9 LA0KPiA+ID4+ICsgIHtMIlJlc2VydmVkIiwgNCwgNzYsIEwiJXgiLCBOVUxMLCBOVUxMLCBOVUxM LCBOVUxMfQ0KPiA+ID4+ICt9Ow0KPiA+ID4+ICsNCj4gPiA+PiArLyoqIFRoaXMgZnVuY3Rpb24g dmFsaWRhdGVzIHRoZSBJbnRlcnJ1cHQgVHlwZS4NCj4gPiA+PiArDQo+ID4gPj4gKyAgQHBhcmFt IFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgZmllbGQgZGF0YS4NCj4g PiA+PiArICBAcGFyYW0gW2luXSBDb250ZXh0IFBvaW50ZXIgdG8gY29udGV4dCBzcGVjaWZpYyBp bmZvcm1hdGlvbiBlLmcuIHRoaXMNCj4gPiA+PiArICAgICAgICAgICAgICAgICAgICAgIGNvdWxk IGJlIGEgcG9pbnRlciB0byB0aGUgQUNQSSB0YWJsZSBoZWFkZXIuDQo+ID4gPj4gKyovDQo+ID4g Pj4gK1NUQVRJQw0KPiA+ID4+ICtWT0lEDQo+ID4gPj4gK0VGSUFQSQ0KPiA+ID4+ICtWYWxpZGF0 ZUludGVycnVwdFR5cGUgKA0KPiA+ID4+ICsgIElOIFVJTlQ4KiBQdHIsDQo+ID4gPj4gKyAgSU4g Vk9JRCogIENvbnRleHQNCj4gPiA+PiArICApDQo+ID4gPj4gK3sNCj4gPiA+PiArI2lmIGRlZmlu ZWQgKE1ERV9DUFVfQVJNKSB8fCBkZWZpbmVkIChNREVfQ1BVX0FBUkNINjQpDQo+ID4gPj4gKyAg VUlOVDggSW50ZXJydXB0VHlwZSA9ICpQdHI7DQo+ID4gPj4gKyAgaWYgKEludGVycnVwdFR5cGUg IT0NCj4gPiA+PiArDQo+ID4NCj4gRUZJX0FDUElfU0VSSUFMX1BPUlRfQ09OU09MRV9SRURJUkVD VElPTl9UQUJMRV9JTlRFUlJVUFRfVFlQRV8NCj4gR0lDKQ0KPiA+IHsNCj4gPiA+PiArICAgIElu Y3JlbWVudEVycm9yQ291bnQgKCk7DQo+ID4gPj4gKyAgICBQcmludCAoDQo+ID4gPj4gKyAgICAg IEwiXG5FUlJPUjogSW50ZXJydXB0VHlwZSA9ICVkLiBUaGlzIG11c3QgYmUgOCBvbiBBUk0gUGxh dGZvcm1zIiwNCj4gPiA+PiArICAgICAgSW50ZXJydXB0VHlwZQ0KPiA+ID4+ICsgICAgICApOw0K PiA+ID4+ICsgIH0NCj4gPiA+PiArI2VuZGlmDQo+ID4gPj4gK30NCj4gPiA+PiArDQo+ID4gPj4g Ky8qKiBUaGlzIGZ1bmN0aW9uIHZhbGlkYXRlcyB0aGUgSXJxLg0KPiA+ID4+ICsNCj4gPiA+PiAr ICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBmaWVsZCBk YXRhLg0KPiA+ID4+ICsgIEBwYXJhbSBbaW5dIENvbnRleHQgUG9pbnRlciB0byBjb250ZXh0IHNw ZWNpZmljIGluZm9ybWF0aW9uIGUuZy4gdGhpcw0KPiA+ID4+ICsgICAgICAgICAgICAgICAgICAg ICAgY291bGQgYmUgYSBwb2ludGVyIHRvIHRoZSBBQ1BJIHRhYmxlIGhlYWRlci4NCj4gPiA+PiAr Ki8NCj4gPiA+PiArU1RBVElDDQo+ID4gPj4gK1ZPSUQNCj4gPiA+PiArRUZJQVBJDQo+ID4gPj4g K1ZhbGlkYXRlSXJxICgNCj4gPiA+PiArICBJTiBVSU5UOCogUHRyLA0KPiA+ID4+ICsgIElOIFZP SUQqICBDb250ZXh0DQo+ID4gPj4gKyAgKQ0KPiA+ID4+ICt7DQo+ID4gPj4gKyNpZiBkZWZpbmVk IChNREVfQ1BVX0FSTSkgfHwgZGVmaW5lZCAoTURFX0NQVV9BQVJDSDY0KQ0KPiA+ID4+ICsgIFVJ TlQ4IElycSA9ICpQdHI7DQo+ID4gPj4gKyAgaWYgKElycSAhPSAwKSB7DQo+ID4gPj4gKyAgICBJ bmNyZW1lbnRFcnJvckNvdW50ICgpOw0KPiA+ID4+ICsgICAgUHJpbnQgKA0KPiA+ID4+ICsgICAg ICBMIlxuRVJST1I6IElycSA9ICVkLiBUaGlzIG11c3QgYmUgemVybyBvbiBBUk0gUGxhdGZvcm1z XG4iLA0KPiA+ID4+ICsgICAgICBJcnENCj4gPiA+PiArICAgICAgKTsNCj4gPiA+PiArICB9DQo+ ID4gPj4gKyNlbmRpZg0KPiA+ID4+ICt9DQo+ID4gPj4gKw0KPiA+ID4+ICsvKiogVGhpcyBmdW5j dGlvbiBwYXJzZXMgdGhlIEFDUEkgU1BDUiB0YWJsZS4NCj4gPiA+PiArICBXaGVuIHRyYWNlIGlz IGVuYWJsZWQgdGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIFNQQ1IgdGFibGUgYW5kDQo+ID4gPj4g KyAgdHJhY2VzIHRoZSBBQ1BJIHRhYmxlIGZpZWxkcy4NCj4gPiA+PiArDQo+ID4gPj4gKyAgVGhp cyBmdW5jdGlvbiBhbHNvIHBlcmZvcm1zIHZhbGlkYXRpb25zIG9mIHRoZSBBQ1BJIHRhYmxlIGZp ZWxkcy4NCj4gPiA+PiArDQo+ID4gPj4gKyAgQHBhcmFtIFtpbl0gVHJhY2UgICAgICAgICAgICAg IElmIFRSVUUsIHRyYWNlIHRoZSBBQ1BJIGZpZWxkcy4NCj4gPiA+PiArICBAcGFyYW0gW2luXSBQ dHIgICAgICAgICAgICAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4g PiA+PiArICBAcGFyYW0gW2luXSBBY3BpVGFibGVMZW5ndGggICAgTGVuZ3RoIG9mIHRoZSBBQ1BJ IHRhYmxlLg0KPiA+ID4+ICsgIEBwYXJhbSBbaW5dIEFjcGlUYWJsZVJldmlzaW9uICBSZXZpc2lv biBvZiB0aGUgQUNQSSB0YWJsZS4NCj4gPiA+PiArKi8NCj4gPiA+PiArVk9JRA0KPiA+ID4+ICtF RklBUEkNCj4gPiA+PiArUGFyc2VBY3BpU3BjciAoDQo+ID4gPj4gKyAgSU4gQk9PTEVBTiBUcmFj ZSwNCj4gPiA+PiArICBJTiBVSU5UOCogIFB0ciwNCj4gPiA+PiArICBJTiBVSU5UMzIgIEFjcGlU YWJsZUxlbmd0aCwNCj4gPiA+PiArICBJTiBVSU5UOCAgIEFjcGlUYWJsZVJldmlzaW9uDQo+ID4g Pj4gKyAgKQ0KPiA+ID4+ICt7DQo+ID4gPj4gKyAgaWYgKCFUcmFjZSkgew0KPiA+ID4+ICsgICAg cmV0dXJuOw0KPiA+ID4+ICsgIH0NCj4gPiA+PiArDQo+ID4gPj4gKyAgLy8gRHVtcCB0aGUgU1BD Ug0KPiA+ID4+ICsgIFBhcnNlQWNwaSAoDQo+ID4gPj4gKyAgICBUUlVFLA0KPiA+ID4+ICsgICAg MCwNCj4gPiA+PiArICAgICJTUENSIiwNCj4gPiA+PiArICAgIFB0ciwNCj4gPiA+PiArICAgIEFj cGlUYWJsZUxlbmd0aCwNCj4gPiA+PiArICAgIFBBUlNFUl9QQVJBTVMgKFNwY3JQYXJzZXIpDQo+ ID4gPj4gKyAgICApOw0KPiA+ID4+ICt9DQo+ID4gPj4gKw0KPiA+ID4+ICsvKiogUmVnaXN0ZXIg dGhlIHBhcnNlci4NCj4gPiA+PiArDQo+ID4gPj4gKyAgQHBhcmFtIFtpbl0gIEltYWdlSGFuZGxl ICBUaGUgaGFuZGxlIHRvIHRoZSBpbWFnZS4NCj4gPiA+PiArICBAcGFyYW0gW2luXSAgU3lzdGVt VGFibGUgIFBvaW50ZXIgdG8gdGhlIFN5c3RlbSBUYWJsZS4NCj4gPiA+PiArDQo+ID4gPj4gKyAg QHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhlIHBhcnNlciBpcyByZWdpc3RlcmVkLg0K PiA+ID4+ICsgIEByZXR2YWwgRUZJX0FMUkVBRFlfU1RBUlRFRCAgIFRoZSBwYXJzZXIgZm9yIHRo ZSBBQ1BJIFRhYmxlDQo+ID4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2Fz IGFscmVhZHkgcmVnaXN0ZXJlZC4NCj4gPiA+PiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFN RVRFUiBBIHBhcmFtZXRlciBpcyBpbnZhbGlkDQo+ID4gPj4gKyAgQHJldHZhbCBFRklfT1VUX09G X1JFU09VUkNFUyAgTm8gc3BhY2UgdG8gcmVnaXN0ZXIgdGhlDQo+ID4gPj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcGFyc2VyLg0KPiA+ID4+ICsqLw0KPiA+ID4+ICtFRklfU1RB VFVTDQo+ID4gPj4gK0VGSUFQSQ0KPiA+ID4+ICtTcGNyUGFyc2VyTGliQ29uc3RydWN0b3IgKA0K PiA+ID4+ICsgIElOIENPTlNUIEVGSV9IQU5ETEUgICAgICAgICAgICAgICAgSW1hZ2VIYW5kbGUs DQo+ID4gPj4gKyAgSU4gICAgICAgRUZJX1NZU1RFTV9UQUJMRSAgKiBDT05TVCBTeXN0ZW1UYWJs ZQ0KPiA+ID4+ICsgICkNCj4gPiA+PiArew0KPiA+ID4+ICsgIHJldHVybiBSZWdpc3RlclBhcnNl ciAoDQo+ID4gPj4gKw0KPiA+DQo+IEVGSV9BQ1BJXzZfMl9TRVJJQUxfUE9SVF9DT05TT0xFX1JF RElSRUNUSU9OX1RBQkxFX1NJR05BVFVSRSwNCj4gPiA+PiArICAgICAgICAgICBQYXJzZUFjcGlT cGNyDQo+ID4gPj4gKyAgICAgICAgICAgKTsNCj4gPiA+PiArfQ0KPiA+ID4+ICsNCj4gPiA+PiAr LyoqIERlcmVnaXN0ZXIgdGhlIHBhcnNlci4NCj4gPiA+PiArDQo+ID4gPj4gKyAgQHBhcmFtIFtp bl0gIEltYWdlSGFuZGxlICBUaGUgaGFuZGxlIHRvIHRoZSBpbWFnZS4NCj4gPiA+PiArICBAcGFy YW0gW2luXSAgU3lzdGVtVGFibGUgIFBvaW50ZXIgdG8gdGhlIFN5c3RlbSBUYWJsZS4NCj4gPiA+ PiArDQo+ID4gPj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhlIHBhcnNlciBp cyBkZXJlZ2lzdGVyZWQuDQo+ID4gPj4gKyAgQHJldHZhbCBFRklfTk9UX0ZPVU5EICAgICAgICAg VGhlIHBhcnNlciB3YXMgbm90IHJlZ2lzdGVyZWQuDQo+ID4gPj4gKyovDQo+ID4gPj4gK0VGSV9T VEFUVVMNCj4gPiA+PiArRUZJQVBJDQo+ID4gPj4gK1NwY3JQYXJzZXJMaWJEZXN0cnVjdG9yICgN Cj4gPiA+PiArICBJTiBDT05TVCBFRklfSEFORExFICAgICAgICAgICAgICAgIEltYWdlSGFuZGxl LA0KPiA+ID4+ICsgIElOICAgICAgIEVGSV9TWVNURU1fVEFCTEUgICogQ09OU1QgU3lzdGVtVGFi bGUNCj4gPiA+PiArICApDQo+ID4gPj4gK3sNCj4gPiA+PiArICByZXR1cm4gRGVyZWdpc3RlclBh cnNlciAoDQo+ID4gPj4gKw0KPiA+IEVGSV9BQ1BJXzZfMl9TRVJJQUxfUE9SVF9DT05TT0xFX1JF RElSRUNUSU9OX1RBQkxFX1NJR05BVFVSRQ0KPiA+ID4+ICsgICAgICAgICAgICk7DQo+ID4gPj4g K30NCj4gPiA+PiBkaWZmIC0tZ2l0DQo+ID4NCj4gYS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVs bEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL1NwY3IvU3BjclBhcnNlckwNCj4gaWIuaQ0KPiA+ IG5mDQo+ID4NCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExp Yi9QYXJzZXJzL1NwY3IvU3BjclBhcnNlckwNCj4gaWIuaQ0KPiA+IG5mDQo+ID4gPj4gbmV3IGZp bGUgbW9kZSAxMDA2NDQNCj4gPiA+PiBpbmRleA0KPiA+IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAuLjk0YWRkMzFkZTAzMGFiNzc3MWZjMw0KPiA+IDAzZWJhN2I5MjIy NzAyNjU5NzANCj4gPiA+PiAtLS0gL2Rldi9udWxsDQo+ID4gPj4gKysrDQo+ID4NCj4gYi9TaGVs bFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL1NwY3IvU3Bj clBhcnNlckwNCj4gaWIuaQ0KPiA+IG5mDQo+ID4gPj4gQEAgLTAsMCArMSwzMyBAQA0KPiA+ID4+ ICsjIyBAZmlsZQ0KPiA+ID4+ICsjDQo+ID4gPj4gKyMgIENvcHlyaWdodCAoYykgMjAxNyAtIDIw MTgsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiA+ID4+ICsjDQo+ID4gPj4g KyMgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCj4gPiA+PiAr IyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNv bmRpdGlvbnMgb2YNCj4gdGhlDQo+ID4gQlNEIExpY2Vuc2UNCj4gPiA+PiArIyAgd2hpY2ggYWNj b21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNl IG1heQ0KPiBiZQ0KPiA+IGZvdW5kIGF0DQo+ID4gPj4gKyMgIGh0dHA6Ly9vcGVuc291cmNlLm9y Zy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4gPiA+PiArIw0KPiA+ID4+ICsjICBUSEUgUFJP R1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTDQo+IElT Ig0KPiA+IEJBU0lTLA0KPiA+ID4+ICsjICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5U QVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVINCj4gPiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ID4g Pj4gKyMjDQo+ID4gPj4gKw0KPiA+ID4+ICtbRGVmaW5lc10NCj4gPiA+PiArICBJTkZfVkVSU0lP TiAgICA9IDB4MDAwMTAwMTkNCj4gPiA+PiArICBCQVNFX05BTUUgICAgICA9IFNwY3JQYXJzZXJM aWINCj4gPiA+PiArICBGSUxFX0dVSUQgICAgICA9IDA4QzE3QzRDLUU2MkQtNEFFNC05NUM1LURF RjQyQTI0QTU2Qw0KPiA+ID4+ICsgIFZFUlNJT05fU1RSSU5HID0gMS4wDQo+ID4gPj4gKyAgTU9E VUxFX1RZUEUgICAgPSBEWEVfRFJJVkVSDQo+ID4gPj4gKyAgTElCUkFSWV9DTEFTUyAgPSBOVUxM fERYRV9EUklWRVINCj4gPiA+PiArICBDT05TVFJVQ1RPUiAgICA9IFNwY3JQYXJzZXJMaWJDb25z dHJ1Y3Rvcg0KPiA+ID4+ICsgIERFU1RSVUNUT1IgICAgID0gU3BjclBhcnNlckxpYkRlc3RydWN0 b3INCj4gPiA+PiArDQo+ID4gPj4gK1tTb3VyY2VzXQ0KPiA+ID4+ICsgIFNwY3JQYXJzZXIuYw0K PiA+ID4+ICsNCj4gPiA+PiArW1BhY2thZ2VzXQ0KPiA+ID4+ICsgIE1kZVBrZy9NZGVQa2cuZGVj DQo+ID4gPj4gKyAgU2hlbGxQa2cvU2hlbGxQa2cuZGVjDQo+ID4gPj4gKyAgTWRlTW9kdWxlUGtn L01kZU1vZHVsZVBrZy5kZWMNCj4gPiA+PiArDQo+ID4gPj4gK1tMaWJyYXJ5Q2xhc3Nlc10NCj4g PiA+PiArICBTaGVsbEFjcGlWaWV3Q29tbWFuZExpYg0KPiA+ID4+IGRpZmYgLS1naXQNCj4gPg0K PiBhL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMv U3JhdC9TcmF0UGFyc2VyLmMNCj4gPg0KPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNw aVZpZXdDb21tYW5kTGliL1BhcnNlcnMvU3JhdC9TcmF0UGFyc2VyLmMNCj4gPiA+PiBuZXcgZmls ZSBtb2RlIDEwMDY0NA0KPiA+ID4+IGluZGV4DQo+ID4gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMC4uYmVlNTFhN2VlNmEzNTUzZmM0MGQxDQo+ID4gNzY3MWFjZDY3MWYw YmUwMWU1OQ0KPiA+ID4+IC0tLSAvZGV2L251bGwNCj4gPiA+PiArKysNCj4gPg0KPiBiL1NoZWxs UGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvU3JhdC9TcmF0 UGFyc2VyLmMNCj4gPiA+PiBAQCAtMCwwICsxLDM3NSBAQA0KPiA+ID4+ICsvKioNCj4gPiA+PiAr ICBTUkFUIHRhYmxlIHBhcnNlcg0KPiA+ID4+ICsNCj4gPiA+PiArICBDb3B5cmlnaHQgKGMpIDIw MTYgLSAyMDE4LCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gPiA+PiArICBU aGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ID4gPj4gKyAgYXJl IGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlv bnMgb2YNCj4gdGhlDQo+ID4gQlNEIExpY2Vuc2UNCj4gPiA+PiArICB3aGljaCBhY2NvbXBhbmll cyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5DQo+ IGJlDQo+ID4gZm91bmQgYXQNCj4gPiA+PiArICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5z ZXMvYnNkLWxpY2Vuc2UucGhwDQo+ID4gPj4gKw0KPiA+ID4+ICsgIFRIRSBQUk9HUkFNIElTIERJ U1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMNCj4gSVMiDQo+ID4gQkFT SVMsDQo+ID4gPj4gKyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBB TlkgS0lORCwgRUlUSEVSDQo+ID4gRVhQUkVTUyBPUiBJTVBMSUVELg0KPiA+ID4+ICsNCj4gPiA+ PiArICBAcGFyIFJlZmVyZW5jZShzKToNCj4gPiA+PiArICAgIC0gQUNQSSA2LjIgU3BlY2lmaWNh dGlvbiAtIEVycmF0YSBBLCBTZXB0ZW1iZXIgMjAxNw0KPiA+ID4+ICsqKi8NCj4gPiA+PiArDQo+ ID4gPj4gKyNpbmNsdWRlIDxJbmR1c3RyeVN0YW5kYXJkL0FjcGkuaD4NCj4gPiA+PiArI2luY2x1 ZGUgPExpYnJhcnkvUHJpbnRMaWIuaD4NCj4gPiA+PiArI2luY2x1ZGUgPExpYnJhcnkvVWVmaUxp Yi5oPg0KPiA+ID4+ICsjaW5jbHVkZSA8TGlicmFyeS9BY3BpVmlldy9BY3BpUGFyc2VyLmg+DQo+ ID4gPj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0FjcGlWaWV3L0FjcGlUYWJsZVBhcnNlci5oPg0KPiA+ ID4+ICsNCj4gPiA+PiArLy8gTG9jYWwgVmFyaWFibGVzDQo+ID4gPj4gK1NUQVRJQyBDT05TVCBV SU5UOCogU3JhdFJBVHlwZTsNCj4gPiA+PiArU1RBVElDIENPTlNUIFVJTlQ4KiBTcmF0UkFMZW5n dGg7DQo+ID4gPj4gK1NUQVRJQyBBQ1BJX0RFU0NSSVBUSU9OX0hFQURFUl9JTkZPIEFjcGlIZHJJ bmZvOw0KPiA+ID4+ICsNCj4gPiA+PiArLyoqIFRoaXMgZnVuY3Rpb24gdmFsaWRhdGVzIHRoZSBS ZXNlcnZlZCBmaWVsZCBpbiB0aGUgU1JBVCB0YWJsZSBoZWFkZXIuDQo+ID4gPj4gKw0KPiA+ID4+ ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGZpZWxk IGRhdGEuDQo+ID4gPj4gKyAgQHBhcmFtIFtpbl0gQ29udGV4dCBQb2ludGVyIHRvIGNvbnRleHQg c3BlY2lmaWMgaW5mb3JtYXRpb24gZS5nLiB0aGlzDQo+ID4gPj4gKyAgICAgICAgICAgICAgICAg ICAgICBjb3VsZCBiZSBhIHBvaW50ZXIgdG8gdGhlIEFDUEkgdGFibGUgaGVhZGVyLg0KPiA+ID4+ ICsqLw0KPiA+ID4+ICtTVEFUSUMNCj4gPiA+PiArVk9JRA0KPiA+ID4+ICtFRklBUEkNCj4gPiA+ PiArVmFsaWRhdGVTcmF0UmVzZXJ2ZWQgKA0KPiA+ID4+ICsgIElOIFVJTlQ4KiBQdHIsDQo+ID4g Pj4gKyAgSU4gVk9JRCogIENvbnRleHQNCj4gPiA+PiArICApOw0KPiA+ID4+ICsNCj4gPiA+PiAr LyoqIFRoaXMgZnVuY3Rpb24gdHJhY2VzIHRoZSBBUElDIFByb3hpbWl0eSBEb21haW4gZmllbGQu DQo+ID4gPj4gKw0KPiA+ID4+ICsgIEBwYXJhbSBbaW5dIEZvcm1hdCAgRm9ybWF0IHN0cmluZyBm b3IgdHJhY2luZyB0aGUgZGF0YS4NCj4gPiA+PiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50 ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ID4gPj4gKyovDQo+ID4gPj4gK1NUQVRJ Qw0KPiA+ID4+ICtWT0lEDQo+ID4gPj4gK0R1bXBTcmF0QXBpY1Byb3hpbWl0eSAoDQo+ID4gPj4g KyAgSU4gIENPTlNUIENIQVIxNiogIEZvcm1hdCwNCj4gPiA+PiArICBJTiAgVUlOVDgqICAgICAg ICAgUHRyDQo+ID4gPj4gKyAgKTsNCj4gPiA+PiArDQo+ID4gPj4gKy8qKiBBbiBBQ1BJX1BBUlNF UiBhcnJheSBkZXNjcmliaW5nIHRoZSBTUkFUIFRhYmxlLg0KPiA+ID4+ICsqLw0KPiA+ID4+ICtT VEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgU3JhdFBhcnNlcltdID0gew0KPiA+ID4+ICsgIFBBUlNF X0FDUElfSEVBREVSICgmQWNwaUhkckluZm8pLA0KPiA+ID4+ICsgIHtMIlJlc2VydmVkIiwgNCwg MzYsIEwiMHgleCIsIE5VTEwsIE5VTEwsIFZhbGlkYXRlU3JhdFJlc2VydmVkLA0KPiBOVUxMfSwN Cj4gPiA+PiArICB7TCJSZXNlcnZlZCIsIDgsIDQwLCBMIjB4JWx4IiwgTlVMTCwgTlVMTCwgTlVM TCwgTlVMTH0NCj4gPiA+PiArfTsNCj4gPiA+PiArDQo+ID4gPj4gKy8qKiBBbiBBQ1BJX1BBUlNF UiBhcnJheSBkZXNjcmliaW5nIHRoZSBSZXNvdXJjZSBBbGxvY2F0aW9uDQo+ID4gPj4gKyAgICBz dHJ1Y3R1cmUgaGVhZGVyLg0KPiA+ID4+ICsqLw0KPiA+ID4+ICtTVEFUSUMgQ09OU1QgQUNQSV9Q QVJTRVIgU3JhdFJlc291cmNlQWxsb2NhdGlvblBhcnNlcltdID0gew0KPiA+ID4+ICsgIHtMIlR5 cGUiLCAxLCAwLCBOVUxMLCBOVUxMLCAoVk9JRCoqKSZTcmF0UkFUeXBlLCBOVUxMLCBOVUxMfSwN Cj4gPiA+PiArICB7TCJMZW5ndGgiLCAxLCAxLCBOVUxMLCBOVUxMLCAoVk9JRCoqKSZTcmF0UkFM ZW5ndGgsIE5VTEwsIE5VTEx9DQo+ID4gPj4gK307DQo+ID4gPj4gKw0KPiA+ID4+ICsvKiogQW4g QUNQSV9QQVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0aGUgR0lDQyBBZmZpbml0eSBzdHJ1Y3R1cmUu DQo+ID4gPj4gKyovDQo+ID4gPj4gK1NUQVRJQyBDT05TVCBBQ1BJX1BBUlNFUiBTcmF0R2ljQ0Fm ZmluaXR5UGFyc2VyW10gPSB7DQo+ID4gPj4gKyAge0wiVHlwZSIsIDEsIDAsIEwiMHgleCIsIE5V TEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ID4+ICsgIHtMIkxlbmd0aCIsIDEsIDEsIEwiMHgl eCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ID4+ICsNCj4gPiA+PiArICB7TCJQcm94 aW1pdHkgRG9tYWluIiwgNCwgMiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ ID4gPj4gKyAge0wiQUNQSSBQcm9jZXNzb3IgVUlEIiwgNCwgNiwgTCIweCV4IiwgTlVMTCwgTlVM TCwgTlVMTCwgTlVMTH0sDQo+ID4gPj4gKyAge0wiRmxhZ3MiLCA0LCAxMCwgTCIweCV4IiwgTlVM TCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4gPj4gKyAge0wiQ2xvY2sgRG9tYWluIiwgNCwgMTQs IEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9DQo+ID4gPj4gK307DQo+ID4gPj4gKw0K PiA+ID4+ICsvKiogQW4gQUNQSV9QQVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0aGUgR0lDIElUUyBB ZmZpbml0eSBzdHJ1Y3R1cmUuDQo+ID4gPj4gKyovDQo+ID4gPj4gK1NUQVRJQyBDT05TVCBBQ1BJ X1BBUlNFUiBTcmF0R2ljSVRTQWZmaW5pdHlQYXJzZXJbXSA9IHsNCj4gPiA+PiArICB7TCJUeXBl IiwgMSwgMCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4gPj4gKyAge0wi TGVuZ3RoIiwgMSwgMSwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4gPj4g Kw0KPiA+ID4+ICsgIHtMIlByb3hpbWl0eSBEb21haW4iLCA0LCAyLCBMIjB4JXgiLCBOVUxMLCBO VUxMLCBOVUxMLCBOVUxMfSwNCj4gPiA+PiArICB7TCJSZXNlcnZlZCIsIDIsIDYsIEwiMHgleCIs IE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ID4+ICsgIHtMIklUUyBJZCIsIDQsIDgsIEwi MHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ID4+ICt9Ow0KPiA+ID4+ICsNCj4g PiA+PiArLyoqIEFuIEFDUElfUEFSU0VSIGFycmF5IGRlc2NyaWJpbmcgdGhlIE1lbW9yeSBBZmZp bml0eSBzdHJ1Y3R1cmUuDQo+ID4gPj4gKyovDQo+ID4gPj4gK1NUQVRJQyBDT05TVCBBQ1BJX1BB UlNFUiBTcmF0TWVtQWZmaW5pdHlQYXJzZXJbXSA9IHsNCj4gPiA+PiArICB7TCJUeXBlIiwgMSwg MCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4gPj4gKyAge0wiTGVuZ3Ro IiwgMSwgMSwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4gPj4gKw0KPiA+ ID4+ICsgIHtMIlByb3hpbWl0eSBEb21haW4iLCA0LCAyLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBO VUxMLCBOVUxMfSwNCj4gPiA+PiArICB7TCJSZXNlcnZlZCIsIDIsIDYsIEwiMHgleCIsIE5VTEws IE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ID4+ICsgIHtMIkJhc2UgQWRkcmVzcyBMb3ciLCA0LCA4 LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPiA+PiArICB7TCJCYXNlIEFk ZHJlc3MgSGlnaCIsIDQsIDEyLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4g PiA+PiArICB7TCJMZW5ndGggTG93IiwgNCwgMTYsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEws IE5VTEx9LA0KPiA+ID4+ICsgIHtMIkxlbmd0aCBIaWdoIiwgNCwgMjAsIEwiMHgleCIsIE5VTEws IE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ID4+ICsgIHtMIlJlc2VydmVkIiwgNCwgMjQsIEwiMHgl eCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ID4+ICsgIHtMIkZsYWdzIiwgNCwgMjgs IEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ID4+ICsgIHtMIlJlc2VydmVk IiwgOCwgMzIsIEwiMHglbHgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfQ0KPiA+ID4+ICt9Ow0K PiA+ID4+ICsNCj4gPiA+PiArLyoqIEFuIEFDUElfUEFSU0VSIGFycmF5IGRlc2NyaWJpbmcgdGhl IEFQSUMvU0FQSUMgQWZmaW5pdHkNCj4gc3RydWN0dXJlLg0KPiA+ID4+ICsqLw0KPiA+ID4+ICtT VEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgU3JhdEFwY2lTYXBpY0FmZmluaXR5UGFyc2VyW10gPSB7 DQo+ID4gPj4gKyAge0wiVHlwZSIsIDEsIDAsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5V TEx9LA0KPiA+ID4+ICsgIHtMIkxlbmd0aCIsIDEsIDEsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5V TEwsIE5VTEx9LA0KPiA+ID4+ICsNCj4gPiA+PiArICB7TCJQcm94aW1pdHkgRG9tYWluIFs3OjBd IiwgMSwgMiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4gPj4gKyAge0wi QVBJQyBJRCIsIDEsIDMsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ID4+ ICsgIHtMIkZsYWdzIiwgNCwgNCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ ID4gPj4gKyAge0wiTG9jYWwgU0FQSUMgRUlEIiwgMSwgOCwgTCIweCV4IiwgTlVMTCwgTlVMTCwg TlVMTCwgTlVMTH0sDQo+ID4gPj4gKyAge0wiUHJveGltaXR5IERvbWFpbiBbMzE6OF0iLCAzLCA5 LCBMIjB4JXgiLCBEdW1wU3JhdEFwaWNQcm94aW1pdHksDQo+ID4gPj4gKyAgIE5VTEwsIE5VTEws IE5VTEx9LA0KPiA+ID4+ICsgIHtMIkNsb2NrIERvbWFpbiIsIDQsIDEyLCBMIjB4JXgiLCBOVUxM LCBOVUxMLCBOVUxMLCBOVUxMfQ0KPiA+ID4+ICt9Ow0KPiA+ID4+ICsNCj4gPiA+PiArLyoqIEFu IEFDUElfUEFSU0VSIGFycmF5IGRlc2NyaWJpbmcgdGhlIFByb2Nlc3NvciBMb2NhbCB4MkFQSUMN Cj4gPiA+PiArICAgIEFmZmluaXR5IHN0cnVjdHVyZS4NCj4gPiA+PiArKi8NCj4gPiA+PiArU1RB VElDIENPTlNUIEFDUElfUEFSU0VSIFNyYXRYMkFwY2lBZmZpbml0eVBhcnNlcltdID0gew0KPiA+ ID4+ICsgIHtMIlR5cGUiLCAxLCAwLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwN Cj4gPiA+PiArICB7TCJMZW5ndGgiLCAxLCAxLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBO VUxMfSwNCj4gPiA+PiArDQo+ID4gPj4gKyAge0wiUmVzZXJ2ZWQiLCAyLCAyLCBMIjB4JXgiLCBO VUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPiA+PiArICB7TCJQcm94aW1pdHkgRG9tYWluIiwg NCwgNCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4gPj4gKyAge0wiWDJB UElDIElEIiwgNCwgOCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4gPj4g KyAge0wiRmxhZ3MiLCA0LCAxMiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ ID4gPj4gKyAge0wiQ2xvY2sgRG9tYWluIiwgNCwgMTYsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5V TEwsIE5VTEx9LA0KPiA+ID4+ICsgIHtMIlJlc2VydmVkIiwgNCwgMjAsIEwiMHgleCIsIE5VTEws IE5VTEwsIE5VTEwsIE5VTEx9DQo+ID4gPj4gK307DQo+ID4gPj4gKw0KPiA+ID4+ICsvKiogVGhp cyBmdW5jdGlvbiB2YWxpZGF0ZXMgdGhlIFJlc2VydmVkIGZpZWxkIGluIHRoZSBTUkFUIHRhYmxl IGhlYWRlci4NCj4gPiA+PiArDQo+ID4gPj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVy IHRvIHRoZSBzdGFydCBvZiB0aGUgZmllbGQgZGF0YS4NCj4gPiA+PiArICBAcGFyYW0gW2luXSBD b250ZXh0IFBvaW50ZXIgdG8gY29udGV4dCBzcGVjaWZpYyBpbmZvcm1hdGlvbiBlLmcuIHRoaXMN Cj4gPiA+PiArICAgICAgICAgICAgICAgICAgICAgIGNvdWxkIGJlIGEgcG9pbnRlciB0byB0aGUg QUNQSSB0YWJsZSBoZWFkZXIuDQo+ID4gPj4gKyovDQo+ID4gPj4gK1NUQVRJQw0KPiA+ID4+ICtW T0lEDQo+ID4gPj4gK0VGSUFQSQ0KPiA+ID4+ICtWYWxpZGF0ZVNyYXRSZXNlcnZlZCAoDQo+ID4g Pj4gKyAgSU4gVUlOVDgqIFB0ciwNCj4gPiA+PiArICBJTiBWT0lEKiAgQ29udGV4dA0KPiA+ID4+ ICsgICkNCj4gPiA+PiArew0KPiA+ID4+ICsgIGlmICgqKFVJTlQzMiopUHRyICE9IDEpIHsNCj4g PiA+PiArICAgIEluY3JlbWVudEVycm9yQ291bnQgKCk7DQo+ID4gPj4gKyAgICBQcmludCAoTCJc bkVSUk9SOiBSZXNlcnZlZCBzaG91bGQgYmUgMSBmb3IgYmFja3dhcmQNCj4gPiBjb21wYXRpYmls aXR5LlxuIik7DQo+ID4gPj4gKyAgfQ0KPiA+ID4+ICt9DQo+ID4gPj4gKw0KPiA+ID4+ICsvKiog VGhpcyBmdW5jdGlvbiB0cmFjZXMgdGhlIEFQSUMgUHJveGltaXR5IERvbWFpbiBmaWVsZC4NCj4g PiA+PiArDQo+ID4gPj4gKyAgQHBhcmFtIFtpbl0gRm9ybWF0ICBGb3JtYXQgc3RyaW5nIGZvciB0 cmFjaW5nIHRoZSBkYXRhLg0KPiA+ID4+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0 byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gPiA+PiArKi8NCj4gPiA+PiArU1RBVElDDQo+ ID4gPj4gK1ZPSUQNCj4gPiA+PiArRHVtcFNyYXRBcGljUHJveGltaXR5ICgNCj4gPiA+PiArIElO IENPTlNUIENIQVIxNiogRm9ybWF0LA0KPiA+ID4+ICsgSU4gVUlOVDgqICAgICAgICBQdHINCj4g PiA+PiArICkNCj4gPiA+PiArew0KPiA+ID4+ICsgIFVJTlQzMiBQcm94aW1pdHlEb21haW4gPSBQ dHJbMF0gfCAoUHRyWzFdIDw8IDgpIHwgKFB0clsyXSA8PCAxNik7DQo+ID4gPj4gKyAgUHJpbnQg KEZvcm1hdCwgUHJveGltaXR5RG9tYWluKTsNCj4gPiA+PiArfQ0KPiA+ID4+ICsNCj4gPiA+PiAr LyoqIFRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBBQ1BJIFNSQVQgdGFibGUuDQo+ID4gPj4gKyAg V2hlbiB0cmFjZSBpcyBlbmFibGVkIHRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBTUkFUIHRhYmxl IGFuZA0KPiA+ID4+ICsgIHRyYWNlcyB0aGUgQUNQSSB0YWJsZSBmaWVsZHMuDQo+ID4gPj4gKw0K PiA+ID4+ICsgIFRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBmb2xsb3dpbmcgUmVzb3VyY2UgQWxs b2NhdGlvbiBTdHJ1Y3R1cmVzOg0KPiA+ID4+ICsgICAgLSBQcm9jZXNzb3IgTG9jYWwgQVBJQy9T QVBJQyBBZmZpbml0eSBTdHJ1Y3R1cmUNCj4gPiA+PiArICAgIC0gTWVtb3J5IEFmZmluaXR5IFN0 cnVjdHVyZQ0KPiA+ID4+ICsgICAgLSBQcm9jZXNzb3IgTG9jYWwgeDJBUElDIEFmZmluaXR5IFN0 cnVjdHVyZQ0KPiA+ID4+ICsgICAgLSBHSUNDIEFmZmluaXR5IFN0cnVjdHVyZQ0KPiA+ID4+ICsN Cj4gPiA+PiArICBUaGlzIGZ1bmN0aW9uIGFsc28gcGVyZm9ybXMgdmFsaWRhdGlvbiBvZiB0aGUg QUNQSSB0YWJsZSBmaWVsZHMuDQo+ID4gPj4gKw0KPiA+ID4+ICsgIEBwYXJhbSBbaW5dIFRyYWNl ICAgICAgICAgICAgICBJZiBUUlVFLCB0cmFjZSB0aGUgQUNQSSBmaWVsZHMuDQo+ID4gPj4gKyAg QHBhcmFtIFtpbl0gUHRyICAgICAgICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRo ZSBidWZmZXIuDQo+ID4gPj4gKyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxlTGVuZ3RoICAgIExlbmd0 aCBvZiB0aGUgQUNQSSB0YWJsZS4NCj4gPiA+PiArICBAcGFyYW0gW2luXSBBY3BpVGFibGVSZXZp c2lvbiAgUmV2aXNpb24gb2YgdGhlIEFDUEkgdGFibGUuDQo+ID4gPj4gKyovDQo+ID4gPj4gK1ZP SUQNCj4gPiA+PiArRUZJQVBJDQo+ID4gPj4gK1BhcnNlQWNwaVNyYXQgKA0KPiA+ID4+ICsgIElO IEJPT0xFQU4gVHJhY2UsDQo+ID4gPj4gKyAgSU4gVUlOVDgqICBQdHIsDQo+ID4gPj4gKyAgSU4g VUlOVDMyICBBY3BpVGFibGVMZW5ndGgsDQo+ID4gPj4gKyAgSU4gVUlOVDggICBBY3BpVGFibGVS ZXZpc2lvbg0KPiA+ID4+ICsgICkNCj4gPiA+PiArew0KPiA+ID4+ICsgIFVJTlQzMiBPZmZzZXQ7 DQo+ID4gPj4gKyAgVUlOVDgqIFJlc291cmNlUHRyOw0KPiA+ID4+ICsgIFVJTlQzMiBHaWNDQWZm aW5pdHlJbmRleCA9IDA7DQo+ID4gPj4gKyAgVUlOVDMyIEdpY0lUU0FmZmluaXR5SW5kZXggPSAw Ow0KPiA+ID4+ICsgIFVJTlQzMiBNZW1vcnlBZmZpbml0eUluZGV4ID0gMDsNCj4gPiA+PiArICBV SU5UMzIgQXBpY1NhcGljQWZmaW5pdHlJbmRleCA9IDA7DQo+ID4gPj4gKyAgVUlOVDMyIFgyQXBp Y0FmZmluaXR5SW5kZXggPSAwOw0KPiA+ID4+ICsgIENIQVI4ICBCdWZmZXJbODBdOyAgLy8gVXNl ZCBmb3IgQXNjaWlOYW1lIHBhcmFtIG9mIFBhcnNlQWNwaQ0KPiA+ID4+ICsNCj4gPiA+PiArICBp ZiAoIVRyYWNlKSB7DQo+ID4gPj4gKyAgICByZXR1cm47DQo+ID4gPj4gKyAgfQ0KPiA+ID4+ICsN Cj4gPiA+PiArICBPZmZzZXQgPSBQYXJzZUFjcGkgKA0KPiA+ID4+ICsgICAgICAgICAgICAgVFJV RSwNCj4gPiA+PiArICAgICAgICAgICAgIDAsDQo+ID4gPj4gKyAgICAgICAgICAgICAiU1JBVCIs DQo+ID4gPj4gKyAgICAgICAgICAgICBQdHIsDQo+ID4gPj4gKyAgICAgICAgICAgICBBY3BpVGFi bGVMZW5ndGgsDQo+ID4gPj4gKyAgICAgICAgICAgICBQQVJTRVJfUEFSQU1TIChTcmF0UGFyc2Vy KQ0KPiA+ID4+ICsgICAgICAgICAgICAgKTsNCj4gPiA+PiArICBSZXNvdXJjZVB0ciA9IFB0ciAr IE9mZnNldDsNCj4gPiA+PiArDQo+ID4gPj4gKyAgd2hpbGUgKE9mZnNldCA8IEFjcGlUYWJsZUxl bmd0aCkgew0KPiA+ID4+ICsgICAgUGFyc2VBY3BpICgNCj4gPiA+PiArICAgICAgRkFMU0UsDQo+ ID4gPj4gKyAgICAgIDAsDQo+ID4gPj4gKyAgICAgIE5VTEwsDQo+ID4gPj4gKyAgICAgIFJlc291 cmNlUHRyLA0KPiA+ID4+ICsgICAgICAyLCAgLy8gVGhlIGxlbmd0aCBpcyAxIGJ5dGUgYXQgb2Zm c2V0IDENCj4gPiA+PiArICAgICAgUEFSU0VSX1BBUkFNUyAoU3JhdFJlc291cmNlQWxsb2NhdGlv blBhcnNlcikNCj4gPiA+PiArICAgICAgKTsNCj4gPiA+PiArDQo+ID4gPj4gKyAgICBzd2l0Y2gg KCpTcmF0UkFUeXBlKSB7DQo+ID4gPj4gKyAgICAgIGNhc2UgRUZJX0FDUElfNl8yX0dJQ0NfQUZG SU5JVFk6DQo+ID4gPj4gKyAgICAgICAgQXNjaWlTUHJpbnQgKA0KPiA+ID4+ICsgICAgICAgICAg QnVmZmVyLA0KPiA+ID4+ICsgICAgICAgICAgc2l6ZW9mIChCdWZmZXIpLA0KPiA+ID4+ICsgICAg ICAgICAgIkdJQ0MgQWZmaW5pdHkgU3RydWN0dXJlIFslZF0iLA0KPiA+ID4+ICsgICAgICAgICAg R2ljQ0FmZmluaXR5SW5kZXgrKw0KPiA+ID4+ICsgICAgICAgICAgKTsNCj4gPiA+PiArICAgICAg ICBQYXJzZUFjcGkgKA0KPiA+ID4+ICsgICAgICAgICAgVFJVRSwNCj4gPiA+PiArICAgICAgICAg IDIsDQo+ID4gPj4gKyAgICAgICAgICBCdWZmZXIsDQo+ID4gPj4gKyAgICAgICAgICBSZXNvdXJj ZVB0ciwNCj4gPiA+PiArICAgICAgICAgICpTcmF0UkFMZW5ndGgsDQo+ID4gPj4gKyAgICAgICAg ICBQQVJTRVJfUEFSQU1TIChTcmF0R2ljQ0FmZmluaXR5UGFyc2VyKQ0KPiA+ID4+ICsgICAgICAg ICAgKTsNCj4gPiA+PiArICAgICAgICBicmVhazsNCj4gPiA+PiArDQo+ID4gPj4gKyAgICAgIGNh c2UgRUZJX0FDUElfNl8yX0dJQ19JVFNfQUZGSU5JVFk6DQo+ID4gPj4gKyAgICAgICAgQXNjaWlT UHJpbnQgKA0KPiA+ID4+ICsgICAgICAgICAgQnVmZmVyLA0KPiA+ID4+ICsgICAgICAgICAgc2l6 ZW9mIChCdWZmZXIpLA0KPiA+ID4+ICsgICAgICAgICAgIkdJQyBJVFMgQWZmaW5pdHkgU3RydWN0 dXJlIFslZF0iLA0KPiA+ID4+ICsgICAgICAgICAgR2ljSVRTQWZmaW5pdHlJbmRleCsrDQo+ID4g Pj4gKyAgICAgICAgKTsNCj4gPiA+PiArICAgICAgICBQYXJzZUFjcGkgKA0KPiA+ID4+ICsgICAg ICAgICAgVFJVRSwNCj4gPiA+PiArICAgICAgICAgIDIsDQo+ID4gPj4gKyAgICAgICAgICBCdWZm ZXIsDQo+ID4gPj4gKyAgICAgICAgICBSZXNvdXJjZVB0ciwNCj4gPiA+PiArICAgICAgICAgICpT cmF0UkFMZW5ndGgsDQo+ID4gPj4gKyAgICAgICAgICBQQVJTRVJfUEFSQU1TIChTcmF0R2ljSVRT QWZmaW5pdHlQYXJzZXIpDQo+ID4gPj4gKyAgICAgICAgKTsNCj4gPiA+PiArICAgICAgICBicmVh azsNCj4gPiA+PiArDQo+ID4gPj4gKyAgICAgIGNhc2UgRUZJX0FDUElfNl8yX01FTU9SWV9BRkZJ TklUWToNCj4gPiA+PiArICAgICAgICBBc2NpaVNQcmludCAoDQo+ID4gPj4gKyAgICAgICAgICBC dWZmZXIsDQo+ID4gPj4gKyAgICAgICAgICBzaXplb2YgKEJ1ZmZlciksDQo+ID4gPj4gKyAgICAg ICAgICAiTWVtb3J5IEFmZmluaXR5IFN0cnVjdHVyZSBbJWRdIiwNCj4gPiA+PiArICAgICAgICAg IE1lbW9yeUFmZmluaXR5SW5kZXgrKw0KPiA+ID4+ICsgICAgICAgICAgKTsNCj4gPiA+PiArICAg ICAgICBQYXJzZUFjcGkgKA0KPiA+ID4+ICsgICAgICAgICAgVFJVRSwNCj4gPiA+PiArICAgICAg ICAgIDIsDQo+ID4gPj4gKyAgICAgICAgICBCdWZmZXIsDQo+ID4gPj4gKyAgICAgICAgICBSZXNv dXJjZVB0ciwNCj4gPiA+PiArICAgICAgICAgICpTcmF0UkFMZW5ndGgsDQo+ID4gPj4gKyAgICAg ICAgICBQQVJTRVJfUEFSQU1TIChTcmF0TWVtQWZmaW5pdHlQYXJzZXIpDQo+ID4gPj4gKyAgICAg ICAgICApOw0KPiA+ID4+ICsgICAgICAgIGJyZWFrOw0KPiA+ID4+ICsNCj4gPiA+PiArICAgICAg Y2FzZSBFRklfQUNQSV82XzJfUFJPQ0VTU09SX0xPQ0FMX0FQSUNfU0FQSUNfQUZGSU5JVFk6DQo+ ID4gPj4gKyAgICAgICAgQXNjaWlTUHJpbnQgKA0KPiA+ID4+ICsgICAgICAgICAgQnVmZmVyLA0K PiA+ID4+ICsgICAgICAgICAgc2l6ZW9mIChCdWZmZXIpLA0KPiA+ID4+ICsgICAgICAgICAgIkFQ SUMvU0FQSUMgQWZmaW5pdHkgU3RydWN0dXJlIFslZF0iLA0KPiA+ID4+ICsgICAgICAgICAgQXBp Y1NhcGljQWZmaW5pdHlJbmRleCsrDQo+ID4gPj4gKyAgICAgICAgICApOw0KPiA+ID4+ICsgICAg ICAgIFBhcnNlQWNwaSAoDQo+ID4gPj4gKyAgICAgICAgICBUUlVFLA0KPiA+ID4+ICsgICAgICAg ICAgMiwNCj4gPiA+PiArICAgICAgICAgIEJ1ZmZlciwNCj4gPiA+PiArICAgICAgICAgIFJlc291 cmNlUHRyLA0KPiA+ID4+ICsgICAgICAgICAgKlNyYXRSQUxlbmd0aCwNCj4gPiA+PiArICAgICAg ICAgIFBBUlNFUl9QQVJBTVMgKFNyYXRBcGNpU2FwaWNBZmZpbml0eVBhcnNlcikNCj4gPiA+PiAr ICAgICAgICAgICk7DQo+ID4gPj4gKyAgICAgICAgYnJlYWs7DQo+ID4gPj4gKw0KPiA+ID4+ICsg ICAgICBjYXNlIEVGSV9BQ1BJXzZfMl9QUk9DRVNTT1JfTE9DQUxfWDJBUElDX0FGRklOSVRZOg0K PiA+ID4+ICsgICAgICAgIEFzY2lpU1ByaW50ICgNCj4gPiA+PiArICAgICAgICAgIEJ1ZmZlciwN Cj4gPiA+PiArICAgICAgICAgIHNpemVvZiAoQnVmZmVyKSwNCj4gPiA+PiArICAgICAgICAgICJY MkFQSUMgQWZmaW5pdHkgU3RydWN0dXJlIFslZF0iLA0KPiA+ID4+ICsgICAgICAgICAgWDJBcGlj QWZmaW5pdHlJbmRleCsrDQo+ID4gPj4gKyAgICAgICAgICApOw0KPiA+ID4+ICsgICAgICAgIFBh cnNlQWNwaSAoDQo+ID4gPj4gKyAgICAgICAgICBUUlVFLA0KPiA+ID4+ICsgICAgICAgICAgMiwN Cj4gPiA+PiArICAgICAgICAgIEJ1ZmZlciwNCj4gPiA+PiArICAgICAgICAgIFJlc291cmNlUHRy LA0KPiA+ID4+ICsgICAgICAgICAgKlNyYXRSQUxlbmd0aCwNCj4gPiA+PiArICAgICAgICAgIFBB UlNFUl9QQVJBTVMgKFNyYXRYMkFwY2lBZmZpbml0eVBhcnNlcikNCj4gPiA+PiArICAgICAgICAg ICk7DQo+ID4gPj4gKyAgICAgICAgYnJlYWs7DQo+ID4gPj4gKw0KPiA+ID4+ICsgICAgICBkZWZh dWx0Og0KPiA+ID4+ICsgICAgICAgIEluY3JlbWVudEVycm9yQ291bnQgKCk7DQo+ID4gPj4gKyAg ICAgICAgUHJpbnQgKEwiRVJST1I6IFVua25vd24gU1JBVCBBZmZpbml0eSB0eXBlID0gMHgleFxu IiwNCj4gPiAqU3JhdFJBVHlwZSk7DQo+ID4gPj4gKyAgICAgICAgYnJlYWs7DQo+ID4gPj4gKyAg ICB9DQo+ID4gPj4gKw0KPiA+ID4+ICsgICAgUmVzb3VyY2VQdHIgKz0gKCpTcmF0UkFMZW5ndGgp Ow0KPiA+ID4+ICsgICAgT2Zmc2V0ICs9ICgqU3JhdFJBTGVuZ3RoKTsNCj4gPiA+PiArICB9DQo+ ID4gPj4gK30NCj4gPiA+PiArDQo+ID4gPj4gKy8qKiBSZWdpc3RlciB0aGUgcGFyc2VyLg0KPiA+ ID4+ICsNCj4gPiA+PiArICBAcGFyYW0gW2luXSAgSW1hZ2VIYW5kbGUgIFRoZSBoYW5kbGUgdG8g dGhlIGltYWdlLg0KPiA+ID4+ICsgIEBwYXJhbSBbaW5dICBTeXN0ZW1UYWJsZSAgUG9pbnRlciB0 byB0aGUgU3lzdGVtIFRhYmxlLg0KPiA+ID4+ICsNCj4gPiA+PiArICBAcmV0dmFsIEVGSV9TVUND RVNTICAgICAgICAgICBUaGUgcGFyc2VyIGlzIHJlZ2lzdGVyZWQuDQo+ID4gPj4gKyAgQHJldHZh bCBFRklfQUxSRUFEWV9TVEFSVEVEICAgVGhlIHBhcnNlciBmb3IgdGhlIEFDUEkgVGFibGUNCj4g PiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YXMgYWxyZWFkeSByZWdpc3Rl cmVkLg0KPiA+ID4+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSIEEgcGFyYW1ldGVy IGlzIGludmFsaWQNCj4gPiA+PiArICBAcmV0dmFsIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTICBObyBz cGFjZSB0byByZWdpc3RlciB0aGUNCj4gPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBwYXJzZXIuDQo+ID4gPj4gKyovDQo+ID4gPj4gK0VGSV9TVEFUVVMNCj4gPiA+PiArRUZJ QVBJDQo+ID4gPj4gK1NyYXRQYXJzZXJMaWJDb25zdHJ1Y3RvciAoDQo+ID4gPj4gKyAgSU4gQ09O U1QgRUZJX0hBTkRMRSAgICAgICAgICAgICAgICBJbWFnZUhhbmRsZSwNCj4gPiA+PiArICBJTiAg ICAgICBFRklfU1lTVEVNX1RBQkxFICAqIENPTlNUIFN5c3RlbVRhYmxlDQo+ID4gPj4gKyAgKQ0K PiA+ID4+ICt7DQo+ID4gPj4gKyAgcmV0dXJuIFJlZ2lzdGVyUGFyc2VyICgNCj4gPiA+PiArDQo+ ID4gRUZJX0FDUElfNl8yX1NZU1RFTV9SRVNPVVJDRV9BRkZJTklUWV9UQUJMRV9TSUdOQVRVUkUs DQo+ID4gPj4gKyAgICAgICAgICAgUGFyc2VBY3BpU3JhdA0KPiA+ID4+ICsgICAgICAgICAgICk7 DQo+ID4gPj4gK30NCj4gPiA+PiArDQo+ID4gPj4gKy8qKiBEZXJlZ2lzdGVyIHRoZSBwYXJzZXIu DQo+ID4gPj4gKw0KPiA+ID4+ICsgIEBwYXJhbSBbaW5dICBJbWFnZUhhbmRsZSAgVGhlIGhhbmRs ZSB0byB0aGUgaW1hZ2UuDQo+ID4gPj4gKyAgQHBhcmFtIFtpbl0gIFN5c3RlbVRhYmxlICBQb2lu dGVyIHRvIHRoZSBTeXN0ZW0gVGFibGUuDQo+ID4gPj4gKw0KPiA+ID4+ICsgIEByZXR2YWwgRUZJ X1NVQ0NFU1MgICAgICAgICAgIFRoZSBwYXJzZXIgaXMgZGVyZWdpc3RlcmVkLg0KPiA+ID4+ICsg IEByZXR2YWwgRUZJX05PVF9GT1VORCAgICAgICAgIFRoZSBwYXJzZXIgd2FzIG5vdCByZWdpc3Rl cmVkLg0KPiA+ID4+ICsqLw0KPiA+ID4+ICtFRklfU1RBVFVTDQo+ID4gPj4gK0VGSUFQSQ0KPiA+ ID4+ICtTcmF0UGFyc2VyTGliRGVzdHJ1Y3RvciAoDQo+ID4gPj4gKyAgSU4gQ09OU1QgRUZJX0hB TkRMRSAgICAgICAgICAgICAgICBJbWFnZUhhbmRsZSwNCj4gPiA+PiArICBJTiAgICAgICBFRklf U1lTVEVNX1RBQkxFICAqIENPTlNUIFN5c3RlbVRhYmxlDQo+ID4gPj4gKyAgKQ0KPiA+ID4+ICt7 DQo+ID4gPj4gKyAgcmV0dXJuIERlcmVnaXN0ZXJQYXJzZXIgKA0KPiA+ID4+ICsNCj4gPiBFRklf QUNQSV82XzJfU1lTVEVNX1JFU09VUkNFX0FGRklOSVRZX1RBQkxFX1NJR05BVFVSRQ0KPiA+ID4+ ICsgICAgICAgICAgICk7DQo+ID4gPj4gK30NCj4gPiA+PiBkaWZmIC0tZ2l0DQo+ID4NCj4gYS9T aGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL1NyYXQv U3JhdFBhcnNlckxpDQo+IGIuaW4NCj4gPiBmDQo+ID4NCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1Vl ZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL1NyYXQvU3JhdFBhcnNlckxpDQo+IGIu aQ0KPiA+IG5mDQo+ID4gPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiA+PiBpbmRleA0KPiA+ IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU4MjNiYWI1MGRmNjQ5 NzQ4OGU0MQ0KPiA+IGZhYWE1YWU3YTgxM2FlZTQ3OTINCj4gPiA+PiAtLS0gL2Rldi9udWxsDQo+ ID4gPj4gKysrDQo+ID4NCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29t bWFuZExpYi9QYXJzZXJzL1NyYXQvU3JhdFBhcnNlckxpDQo+IGIuaQ0KPiA+IG5mDQo+ID4gPj4g QEAgLTAsMCArMSwzMyBAQA0KPiA+ID4+ICsjIyBAZmlsZQ0KPiA+ID4+ICsjDQo+ID4gPj4gKyMg IENvcHlyaWdodCAoYykgMjAxNyAtIDIwMTgsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2Vy dmVkLg0KPiA+ID4+ICsjDQo+ID4gPj4gKyMgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFu eWluZyBtYXRlcmlhbHMNCj4gPiA+PiArIyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJs ZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YNCj4gdGhlDQo+ID4gQlNEIExpY2Vu c2UNCj4gPiA+PiArIyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUg ZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heQ0KPiBiZQ0KPiA+IGZvdW5kIGF0DQo+ID4gPj4g KyMgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4gPiA+ PiArIw0KPiA+ID4+ICsjICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNE IExJQ0VOU0UgT04gQU4gIkFTDQo+IElTIg0KPiA+IEJBU0lTLA0KPiA+ID4+ICsjICBXSVRIT1VU IFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVINCj4gPiBF WFBSRVNTIE9SIElNUExJRUQuDQo+ID4gPj4gKyMjDQo+ID4gPj4gKw0KPiA+ID4+ICtbRGVmaW5l c10NCj4gPiA+PiArICBJTkZfVkVSU0lPTiAgICA9IDB4MDAwMTAwMTkNCj4gPiA+PiArICBCQVNF X05BTUUgICAgICA9IFNyYXRQYXJzZXJMaWINCj4gPiA+PiArICBGSUxFX0dVSUQgICAgICA9IDEw NkIyMkNDLTE0OTktNDZENC1CNkZCLTM0MUJCODc4RkJDNQ0KPiA+ID4+ICsgIFZFUlNJT05fU1RS SU5HID0gMS4wDQo+ID4gPj4gKyAgTU9EVUxFX1RZUEUgICAgPSBEWEVfRFJJVkVSDQo+ID4gPj4g KyAgTElCUkFSWV9DTEFTUyAgPSBOVUxMfERYRV9EUklWRVINCj4gPiA+PiArICBDT05TVFJVQ1RP UiAgICA9IFNyYXRQYXJzZXJMaWJDb25zdHJ1Y3Rvcg0KPiA+ID4+ICsgIERFU1RSVUNUT1IgICAg ID0gU3JhdFBhcnNlckxpYkRlc3RydWN0b3INCj4gPiA+PiArDQo+ID4gPj4gK1tTb3VyY2VzXQ0K PiA+ID4+ICsgIFNyYXRQYXJzZXIuYw0KPiA+ID4+ICsNCj4gPiA+PiArW1BhY2thZ2VzXQ0KPiA+ ID4+ICsgIE1kZVBrZy9NZGVQa2cuZGVjDQo+ID4gPj4gKyAgU2hlbGxQa2cvU2hlbGxQa2cuZGVj DQo+ID4gPj4gKyAgTWRlTW9kdWxlUGtnL01kZU1vZHVsZVBrZy5kZWMNCj4gPiA+PiArDQo+ID4g Pj4gK1tMaWJyYXJ5Q2xhc3Nlc10NCj4gPiA+PiArICBTaGVsbEFjcGlWaWV3Q29tbWFuZExpYg0K PiA+ID4+IGRpZmYgLS1naXQNCj4gPg0KPiBhL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNw aVZpZXdDb21tYW5kTGliL1BhcnNlcnMvU3NkdC9Tc2R0UGFyc2VyLg0KPiBjDQo+ID4NCj4gYi9T aGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL1NzZHQv U3NkdFBhcnNlci4NCj4gYw0KPiA+ID4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gPj4gaW5k ZXgNCj4gPiAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YzU2MjQy YjM1MWM4YzA0ZDMxMjMNCj4gPiA0OTA4NmUzNTNjOTRlNDMwZjMyDQo+ID4gPj4gLS0tIC9kZXYv bnVsbA0KPiA+ID4+ICsrKw0KPiA+DQo+IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3Bp Vmlld0NvbW1hbmRMaWIvUGFyc2Vycy9Tc2R0L1NzZHRQYXJzZXIuDQo+IGMNCj4gPiA+PiBAQCAt MCwwICsxLDkyIEBADQo+ID4gPj4gKy8qKg0KPiA+ID4+ICsgIFNTRFQgdGFibGUgcGFyc2VyDQo+ ID4gPj4gKw0KPiA+ID4+ICsgIENvcHlyaWdodCAoYykgMjAxNiAtIDIwMTgsIEFSTSBMaW1pdGVk LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiA+ID4+ICsgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFj Y29tcGFueWluZyBtYXRlcmlhbHMNCj4gPiA+PiArICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZh aWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZg0KPiB0aGUNCj4gPiBCU0Qg TGljZW5zZQ0KPiA+ID4+ICsgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAg VGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkNCj4gYmUNCj4gPiBmb3VuZCBhdA0KPiA+ ID4+ICsgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4g PiA+PiArDQo+ID4gPj4gKyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJT RCBMSUNFTlNFIE9OIEFOICJBUw0KPiBJUyINCj4gPiBCQVNJUywNCj4gPiA+PiArICBXSVRIT1VU IFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVINCj4gPiBF WFBSRVNTIE9SIElNUExJRUQuDQo+ID4gPj4gKw0KPiA+ID4+ICsgIEBwYXIgUmVmZXJlbmNlKHMp Og0KPiA+ID4+ICsgICAgLSBBQ1BJIDYuMiBTcGVjaWZpY2F0aW9uIC0gRXJyYXRhIEEsIFNlcHRl bWJlciAyMDE3DQo+ID4gPj4gKyoqLw0KPiA+ID4+ICsNCj4gPiA+PiArI2luY2x1ZGUgPEluZHVz dHJ5U3RhbmRhcmQvQWNwaS5oPg0KPiA+ID4+ICsjaW5jbHVkZSA8TGlicmFyeS9VZWZpTGliLmg+ DQo+ID4gPj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0FjcGlWaWV3L0FjcGlQYXJzZXIuaD4NCj4gPiA+ PiArI2luY2x1ZGUgPExpYnJhcnkvQWNwaVZpZXcvQWNwaVRhYmxlUGFyc2VyLmg+DQo+ID4gPj4g Kw0KPiA+ID4+ICsvKiogVGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIEFDUEkgU1NEVCB0YWJsZS4N Cj4gPiA+PiArICBXaGVuIHRyYWNlIGlzIGVuYWJsZWQgdGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhl IFNTRFQgdGFibGUgYW5kDQo+ID4gPj4gKyAgdHJhY2VzIHRoZSBBQ1BJIHRhYmxlIGZpZWxkcy4N Cj4gPiA+PiArICBGb3IgdGhlIFNTRFQgdGFibGUgb25seSB0aGUgQUNQSSBoZWFkZXIgZmllbGRz IGFyZQ0KPiA+ID4+ICsgIHBhcnNlZCBhbmQgdHJhY2VkLg0KPiA+ID4+ICsNCj4gPiA+PiArICBA cGFyYW0gW2luXSBUcmFjZSAgICAgICAgICAgICAgSWYgVFJVRSwgdHJhY2UgdGhlIEFDUEkgZmll bGRzLg0KPiA+ID4+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgICAgICAgICAgICBQb2ludGVyIHRv IHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiA+ID4+ICsgIEBwYXJhbSBbaW5dIEFjcGlUYWJs ZUxlbmd0aCAgICBMZW5ndGggb2YgdGhlIEFDUEkgdGFibGUuDQo+ID4gPj4gKyAgQHBhcmFtIFtp bl0gQWNwaVRhYmxlUmV2aXNpb24gIFJldmlzaW9uIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiA+ID4+ ICsqLw0KPiA+ID4+ICtWT0lEDQo+ID4gPj4gK0VGSUFQSQ0KPiA+ID4+ICtQYXJzZUFjcGlTc2R0 ICgNCj4gPiA+PiArICBJTiBCT09MRUFOIFRyYWNlLA0KPiA+ID4+ICsgIElOIFVJTlQ4KiAgUHRy LA0KPiA+ID4+ICsgIElOIFVJTlQzMiAgQWNwaVRhYmxlTGVuZ3RoLA0KPiA+ID4+ICsgIElOIFVJ TlQ4ICAgQWNwaVRhYmxlUmV2aXNpb24NCj4gPiA+PiArICApDQo+ID4gPj4gK3sNCj4gPiA+PiAr ICBpZiAoIVRyYWNlKSB7DQo+ID4gPj4gKyAgICByZXR1cm47DQo+ID4gPj4gKyAgfQ0KPiA+ID4+ ICsNCj4gPiA+PiArICBEdW1wQWNwaUhlYWRlciAoUHRyKTsNCj4gPiA+PiArfQ0KPiA+ID4+ICsN Cj4gPiA+PiArLyoqIFJlZ2lzdGVyIHRoZSBwYXJzZXIuDQo+ID4gPj4gKw0KPiA+ID4+ICsgIEBw YXJhbSBbaW5dICBJbWFnZUhhbmRsZSAgVGhlIGhhbmRsZSB0byB0aGUgaW1hZ2UuDQo+ID4gPj4g KyAgQHBhcmFtIFtpbl0gIFN5c3RlbVRhYmxlICBQb2ludGVyIHRvIHRoZSBTeXN0ZW0gVGFibGUu DQo+ID4gPj4gKw0KPiA+ID4+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBw YXJzZXIgaXMgcmVnaXN0ZXJlZC4NCj4gPiA+PiArICBAcmV0dmFsIEVGSV9BTFJFQURZX1NUQVJU RUQgICBUaGUgcGFyc2VyIGZvciB0aGUgQUNQSSBUYWJsZQ0KPiA+ID4+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHdhcyBhbHJlYWR5IHJlZ2lzdGVyZWQuDQo+ID4gPj4gKyAgQHJl dHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgQSBwYXJhbWV0ZXIgaXMgaW52YWxpZA0KPiA+ID4+ ICsgIEByZXR2YWwgRUZJX09VVF9PRl9SRVNPVVJDRVMgIE5vIHNwYWNlIHRvIHJlZ2lzdGVyIHRo ZQ0KPiA+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlci4NCj4gPiA+ PiArKi8NCj4gPiA+PiArRUZJX1NUQVRVUw0KPiA+ID4+ICtFRklBUEkNCj4gPiA+PiArU3NkdFBh cnNlckxpYkNvbnN0cnVjdG9yICgNCj4gPiA+PiArICBJTiBDT05TVCBFRklfSEFORExFICAgICAg ICAgICAgICAgIEltYWdlSGFuZGxlLA0KPiA+ID4+ICsgIElOICAgICAgIEVGSV9TWVNURU1fVEFC TEUgICogQ09OU1QgU3lzdGVtVGFibGUNCj4gPiA+PiArICApDQo+ID4gPj4gK3sNCj4gPiA+PiAr ICByZXR1cm4gUmVnaXN0ZXJQYXJzZXIgKA0KPiA+ID4+ICsNCj4gPiBFRklfQUNQSV82XzJfU0VD T05EQVJZX1NZU1RFTV9ERVNDUklQVElPTl9UQUJMRV9TSUdOQVRVUkUsDQo+ID4gPj4gKyAgICAg ICAgICAgUGFyc2VBY3BpU3NkdA0KPiA+ID4+ICsgICAgICAgICAgICk7DQo+ID4gPj4gK30NCj4g PiA+PiArDQo+ID4gPj4gKy8qKiBEZXJlZ2lzdGVyIHRoZSBwYXJzZXIuDQo+ID4gPj4gKw0KPiA+ ID4+ICsgIEBwYXJhbSBbaW5dICBJbWFnZUhhbmRsZSAgVGhlIGhhbmRsZSB0byB0aGUgaW1hZ2Uu DQo+ID4gPj4gKyAgQHBhcmFtIFtpbl0gIFN5c3RlbVRhYmxlICBQb2ludGVyIHRvIHRoZSBTeXN0 ZW0gVGFibGUuDQo+ID4gPj4gKw0KPiA+ID4+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAg ICAgIFRoZSBwYXJzZXIgaXMgZGVyZWdpc3RlcmVkLg0KPiA+ID4+ICsgIEByZXR2YWwgRUZJX05P VF9GT1VORCAgICAgICAgIFRoZSBwYXJzZXIgd2FzIG5vdCByZWdpc3RlcmVkLg0KPiA+ID4+ICsq Lw0KPiA+ID4+ICtFRklfU1RBVFVTDQo+ID4gPj4gK0VGSUFQSQ0KPiA+ID4+ICtTc2R0UGFyc2Vy TGliRGVzdHJ1Y3RvciAoDQo+ID4gPj4gKyAgSU4gQ09OU1QgRUZJX0hBTkRMRSAgICAgICAgICAg ICAgICBJbWFnZUhhbmRsZSwNCj4gPiA+PiArICBJTiAgICAgICBFRklfU1lTVEVNX1RBQkxFICAq IENPTlNUIFN5c3RlbVRhYmxlDQo+ID4gPj4gKyAgKQ0KPiA+ID4+ICt7DQo+ID4gPj4gKyAgcmV0 dXJuIERlcmVnaXN0ZXJQYXJzZXIgKA0KPiA+ID4+ICsNCj4gPiBFRklfQUNQSV82XzJfU0VDT05E QVJZX1NZU1RFTV9ERVNDUklQVElPTl9UQUJMRV9TSUdOQVRVUkUNCj4gPiA+PiArICAgICAgICAg ICApOw0KPiA+ID4+ICt9DQo+ID4gPj4gZGlmZiAtLWdpdA0KPiA+DQo+IGEvU2hlbGxQa2cvTGli cmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9Tc2R0L1NzZHRQYXJzZXJM DQo+IGliLmkNCj4gPiBuZg0KPiA+DQo+IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3Bp Vmlld0NvbW1hbmRMaWIvUGFyc2Vycy9Tc2R0L1NzZHRQYXJzZXJMDQo+IGliLmkNCj4gPiBuZg0K PiA+ID4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gPj4gaW5kZXgNCj4gPiAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41N2U1NWVhZjA4MjRiNmM4ZDA1Y2UNCj4g PiA5Yjc5ZDk1OThlZGQ4ZjY3M2Q5DQo+ID4gPj4gLS0tIC9kZXYvbnVsbA0KPiA+ID4+ICsrKw0K PiA+DQo+IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFy c2Vycy9Tc2R0L1NzZHRQYXJzZXJMDQo+IGliLmkNCj4gPiBuZg0KPiA+ID4+IEBAIC0wLDAgKzEs MzMgQEANCj4gPiA+PiArIyMgQGZpbGUNCj4gPiA+PiArIw0KPiA+ID4+ICsjICBDb3B5cmlnaHQg KGMpIDIwMTcgLSAyMDE4LCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gPiA+ PiArIw0KPiA+ID4+ICsjICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJp YWxzDQo+ID4gPj4gKyMgIGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhl IHRlcm1zIGFuZCBjb25kaXRpb25zIG9mDQo+IHRoZQ0KPiA+IEJTRCBMaWNlbnNlDQo+ID4gPj4g KyMgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBv ZiB0aGUgbGljZW5zZSBtYXkNCj4gYmUNCj4gPiBmb3VuZCBhdA0KPiA+ID4+ICsjICBodHRwOi8v b3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ID4gPj4gKyMNCj4gPiA+ PiArIyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9O IEFOICJBUw0KPiBJUyINCj4gPiBCQVNJUywNCj4gPiA+PiArIyAgV0lUSE9VVCBXQVJSQU5USUVT IE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSDQo+ID4gRVhQUkVTUyBPUiBJ TVBMSUVELg0KPiA+ID4+ICsjIw0KPiA+ID4+ICsNCj4gPiA+PiArW0RlZmluZXNdDQo+ID4gPj4g KyAgSU5GX1ZFUlNJT04gICAgPSAweDAwMDEwMDE5DQo+ID4gPj4gKyAgQkFTRV9OQU1FICAgICAg PSBTc2R0UGFyc2VyTGliDQo+ID4gPj4gKyAgRklMRV9HVUlEICAgICAgPSBCQzJGRjUzOC04RkVC LTQ4RTMtOTJEMS1FQ0EwMUIyNzdCMkMNCj4gPiA+PiArICBWRVJTSU9OX1NUUklORyA9IDEuMA0K PiA+ID4+ICsgIE1PRFVMRV9UWVBFICAgID0gRFhFX0RSSVZFUg0KPiA+ID4+ICsgIExJQlJBUllf Q0xBU1MgID0gTlVMTHxEWEVfRFJJVkVSDQo+ID4gPj4gKyAgQ09OU1RSVUNUT1IgICAgPSBTc2R0 UGFyc2VyTGliQ29uc3RydWN0b3INCj4gPiA+PiArICBERVNUUlVDVE9SICAgICA9IFNzZHRQYXJz ZXJMaWJEZXN0cnVjdG9yDQo+ID4gPj4gKw0KPiA+ID4+ICtbU291cmNlc10NCj4gPiA+PiArICBT c2R0UGFyc2VyLmMNCj4gPiA+PiArDQo+ID4gPj4gK1tQYWNrYWdlc10NCj4gPiA+PiArICBNZGVQ a2cvTWRlUGtnLmRlYw0KPiA+ID4+ICsgIFNoZWxsUGtnL1NoZWxsUGtnLmRlYw0KPiA+ID4+ICsg IE1kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVjDQo+ID4gPj4gKw0KPiA+ID4+ICtbTGlicmFy eUNsYXNzZXNdDQo+ID4gPj4gKyAgU2hlbGxBY3BpVmlld0NvbW1hbmRMaWINCj4gPiA+PiBkaWZm IC0tZ2l0DQo+ID4NCj4gYS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFu ZExpYi9QYXJzZXJzL1hzZHQvWHNkdFBhcnNlci4NCj4gYw0KPiA+DQo+IGIvU2hlbGxQa2cvTGli cmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9Yc2R0L1hzZHRQYXJzZXIu DQo+IGMNCj4gPiA+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+ID4+IGluZGV4DQo+ID4gMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWI5ZjMxNGI3NDhkNDI4MWRj YzU2DQo+ID4gZDcwNzc5OGU2ZWIxYzJmNzAzOQ0KPiA+ID4+IC0tLSAvZGV2L251bGwNCj4gPiA+ PiArKysNCj4gPg0KPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5k TGliL1BhcnNlcnMvWHNkdC9Yc2R0UGFyc2VyLg0KPiBjDQo+ID4gPj4gQEAgLTAsMCArMSwxOTgg QEANCj4gPiA+PiArLyoqDQo+ID4gPj4gKyAgWFNEVCB0YWJsZSBwYXJzZXINCj4gPiA+PiArDQo+ ID4gPj4gKyAgQ29weXJpZ2h0IChjKSAyMDE2IC0gMjAxOCwgQVJNIExpbWl0ZWQuIEFsbCByaWdo dHMgcmVzZXJ2ZWQuDQo+ID4gPj4gKyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5n IG1hdGVyaWFscw0KPiA+ID4+ICsgIGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5k ZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mDQo+IHRoZQ0KPiA+IEJTRCBMaWNlbnNlDQo+ ID4gPj4gKyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0 ZXh0IG9mIHRoZSBsaWNlbnNlIG1heQ0KPiBiZQ0KPiA+IGZvdW5kIGF0DQo+ID4gPj4gKyAgaHR0 cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiA+ID4+ICsNCj4g PiA+PiArICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0Ug T04gQU4gIkFTDQo+IElTIg0KPiA+IEJBU0lTLA0KPiA+ID4+ICsgIFdJVEhPVVQgV0FSUkFOVElF UyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUg0KPiA+IEVYUFJFU1MgT1Ig SU1QTElFRC4NCj4gPiA+PiArDQo+ID4gPj4gKyAgQHBhciBSZWZlcmVuY2Uocyk6DQo+ID4gPj4g KyAgICAtIEFDUEkgNi4yIFNwZWNpZmljYXRpb24gLSBFcnJhdGEgQSwgU2VwdGVtYmVyIDIwMTcN Cj4gPiA+PiArKiovDQo+ID4gPj4gKw0KPiA+ID4+ICsjaW5jbHVkZSA8SW5kdXN0cnlTdGFuZGFy ZC9BY3BpLmg+DQo+ID4gPj4gKyNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlMaWIuaD4NCj4gPiA+PiAr I2luY2x1ZGUgPExpYnJhcnkvUHJpbnRMaWIuaD4NCj4gPiA+PiArI2luY2x1ZGUgPExpYnJhcnkv QWNwaVZpZXcvQWNwaVBhcnNlci5oPg0KPiA+ID4+ICsjaW5jbHVkZSA8TGlicmFyeS9BY3BpVmll dy9BY3BpVGFibGVQYXJzZXIuaD4NCj4gPiA+PiArDQo+ID4gPj4gKy8vIExvY2FsIHZhcmlhYmxl cw0KPiA+ID4+ICtTVEFUSUMgQUNQSV9ERVNDUklQVElPTl9IRUFERVJfSU5GTyBBY3BpSGRySW5m bzsNCj4gPiA+PiArDQo+ID4gPj4gKy8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5n IHRoZSBBQ1BJIFhTRFQgdGFibGUuDQo+ID4gPj4gKyovDQo+ID4gPj4gK1NUQVRJQyBDT05TVCBB Q1BJX1BBUlNFUiBYc2R0UGFyc2VyW10gPSB7DQo+ID4gPj4gKyAgUEFSU0VfQUNQSV9IRUFERVIg KCZBY3BpSGRySW5mbykNCj4gPiA+PiArfTsNCj4gPiA+PiArDQo+ID4gPj4gK0NPTlNUIEFDUElf REVTQ1JJUFRJT05fSEVBREVSX0lORk8qIENPTlNUDQo+ID4gPj4gK0VGSUFQSQ0KPiA+ID4+ICtH ZXRBY3BpWHNkdEhlYWRlckluZm8gKA0KPiA+ID4+ICsgIFZPSUQNCj4gPiA+PiArKQ0KPiA+ID4+ ICt7DQo+ID4gPj4gKyAgcmV0dXJuICZBY3BpSGRySW5mbzsNCj4gPiA+PiArfQ0KPiA+ID4+ICsN Cj4gPiA+PiArLyoqIFRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBBQ1BJIFhTRFQgdGFibGUNCj4g PiA+PiArICBhbmQgb3B0aW9uYWxseSB0cmFjZXMgdGhlIEFDUEkgdGFibGUgZmllbGRzLg0KPiA+ ID4+ICsNCj4gPiA+PiArICBUaGlzIGZ1bmN0aW9uIGFsc28gcGVyZm9ybXMgdmFsaWRhdGlvbiBv ZiB0aGUgWFNEVCB0YWJsZS4NCj4gPiA+PiArDQo+ID4gPj4gKyAgQHBhcmFtIFtpbl0gVHJhY2Ug ICAgICAgICAgICAgIElmIFRSVUUsIHRyYWNlIHRoZSBBQ1BJIGZpZWxkcy4NCj4gPiA+PiArICBA cGFyYW0gW2luXSBQdHIgICAgICAgICAgICAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhl IGJ1ZmZlci4NCj4gPiA+PiArICBAcGFyYW0gW2luXSBBY3BpVGFibGVMZW5ndGggICAgTGVuZ3Ro IG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiA+ID4+ICsgIEBwYXJhbSBbaW5dIEFjcGlUYWJsZVJldmlz aW9uICBSZXZpc2lvbiBvZiB0aGUgQUNQSSB0YWJsZS4NCj4gPiA+PiArKi8NCj4gPiA+PiArVk9J RA0KPiA+ID4+ICtFRklBUEkNCj4gPiA+PiArUGFyc2VBY3BpWHNkdCAoDQo+ID4gPj4gKyAgSU4g Qk9PTEVBTiBUcmFjZSwNCj4gPiA+PiArICBJTiBVSU5UOCogIFB0ciwNCj4gPiA+PiArICBJTiBV SU5UMzIgIEFjcGlUYWJsZUxlbmd0aCwNCj4gPiA+PiArICBJTiBVSU5UOCAgIEFjcGlUYWJsZVJl dmlzaW9uDQo+ID4gPj4gKyAgKQ0KPiA+ID4+ICt7DQo+ID4gPj4gKyAgVUlOVDMyICAgICAgICBP ZmZzZXQ7DQo+ID4gPj4gKyAgVUlOVDMyICAgICAgICBUYWJsZU9mZnNldDsNCj4gPiA+PiArICBV SU5UNjQqICAgICAgIFRhYmxlUG9pbnRlcjsNCj4gPiA+PiArICBVSU5UTiAgICAgICAgIEVudHJ5 SW5kZXg7DQo+ID4gPj4gKyAgQ0hBUjE2ICAgICAgICBCdWZmZXJbMzJdOw0KPiA+ID4+ICsNCj4g PiA+PiArICAvLyBQYXJzZSB0aGUgQUNQSSBoZWFkZXIgdG8gZ2V0IHRoZSBsZW5ndGgNCj4gPiA+ PiArICBQYXJzZUFjcGkgKA0KPiA+ID4+ICsgICAgRkFMU0UsDQo+ID4gPj4gKyAgICAwLA0KPiA+ ID4+ICsgICAgIlhTRFQiLA0KPiA+ID4+ICsgICAgUHRyLA0KPiA+ID4+ICsgICAgQUNQSV9ERVND UklQVElPTl9IRUFERVJfTEVOR1RILA0KPiA+ID4+ICsgICAgUEFSU0VSX1BBUkFNUyAoWHNkdFBh cnNlcikNCj4gPiA+PiArICAgICk7DQo+ID4gPj4gKw0KPiA+ID4+ICsgIE9mZnNldCA9IFBhcnNl QWNwaSAoDQo+ID4gPj4gKyAgICAgICAgICAgICBUcmFjZSwNCj4gPiA+PiArICAgICAgICAgICAg IDAsDQo+ID4gPj4gKyAgICAgICAgICAgICAiWFNEVCIsDQo+ID4gPj4gKyAgICAgICAgICAgICBQ dHIsDQo+ID4gPj4gKyAgICAgICAgICAgICAqQWNwaUhkckluZm8uTGVuZ3RoLA0KPiA+ID4+ICsg ICAgICAgICAgICAgUEFSU0VSX1BBUkFNUyAoWHNkdFBhcnNlcikNCj4gPiA+PiArICAgICAgICAg ICAgICk7DQo+ID4gPj4gKw0KPiA+ID4+ICsgIFRhYmxlT2Zmc2V0ID0gT2Zmc2V0Ow0KPiA+ID4+ ICsNCj4gPiA+PiArICBpZiAoVHJhY2UpIHsNCj4gPiA+PiArICAgIEVudHJ5SW5kZXggPSAwOw0K PiA+ID4+ICsgICAgVGFibGVQb2ludGVyID0gKFVJTlQ2NCopKFB0ciArIFRhYmxlT2Zmc2V0KTsN Cj4gPiA+PiArICAgIHdoaWxlIChPZmZzZXQgPCAoKkFjcGlIZHJJbmZvLkxlbmd0aCkpIHsNCj4g PiA+PiArICAgICAgQ09OU1QgVUlOVDMyKiBTaWduYXR1cmU7DQo+ID4gPj4gKyAgICAgIENPTlNU IFVJTlQzMiogTGVuZ3RoOw0KPiA+ID4+ICsgICAgICBDT05TVCBVSU5UOCogIFJldmlzaW9uOw0K PiA+ID4+ICsNCj4gPiA+PiArICAgICAgaWYgKChVSU5UNjQqKShVSU5UTikoKlRhYmxlUG9pbnRl cikgIT0gTlVMTCkgew0KPiA+ID4+ICsgICAgICAgIFVJTlQ4KiAgICAgIFB0cjsNCj4gPiA+PiAr DQo+ID4gPj4gKyAgICAgICAgUGFyc2VBY3BpSGVhZGVyICgNCj4gPiA+PiArICAgICAgICAgIChV SU5UOCopKFVJTlROKSgqVGFibGVQb2ludGVyKSwNCj4gPiA+PiArICAgICAgICAgICZTaWduYXR1 cmUsDQo+ID4gPj4gKyAgICAgICAgICAmTGVuZ3RoLA0KPiA+ID4+ICsgICAgICAgICAgJlJldmlz aW9uDQo+ID4gPj4gKyAgICAgICAgICApOw0KPiA+ID4+ICsNCj4gPiA+PiArICAgICAgICBQdHIg PSAoVUlOVDgqKVNpZ25hdHVyZTsNCj4gPiA+PiArDQo+ID4gPj4gKyAgICAgICAgVW5pY29kZVNQ cmludCAoDQo+ID4gPj4gKyAgICAgICAgICBCdWZmZXIsDQo+ID4gPj4gKyAgICAgICAgICBzaXpl b2YgKEJ1ZmZlciksDQo+ID4gPj4gKyAgICAgICAgICBMIkVudHJ5WyVkXSAtICVjJWMlYyVjIiwN Cj4gPiA+PiArICAgICAgICAgIEVudHJ5SW5kZXgrKywNCj4gPiA+PiArICAgICAgICAgIFB0clsw XSwNCj4gPiA+PiArICAgICAgICAgIFB0clsxXSwNCj4gPiA+PiArICAgICAgICAgIFB0clsyXSwN Cj4gPiA+PiArICAgICAgICAgIFB0clszXQ0KPiA+ID4+ICsgICAgICAgICAgKTsNCj4gPiA+PiAr ICAgICAgfSBlbHNlIHsNCj4gPiA+PiArICAgICAgICBVbmljb2RlU1ByaW50ICgNCj4gPiA+PiAr ICAgICAgICAgIEJ1ZmZlciwNCj4gPiA+PiArICAgICAgICAgIHNpemVvZiAoQnVmZmVyKSwNCj4g PiA+PiArICAgICAgICAgIEwiRW50cnlbJWRdIiwNCj4gPiA+PiArICAgICAgICAgIEVudHJ5SW5k ZXgrKw0KPiA+ID4+ICsgICAgICAgICAgKTsNCj4gPiA+PiArICAgICAgfQ0KPiA+ID4+ICsNCj4g PiA+PiArICAgICAgUHJpbnRGaWVsZE5hbWUgKDIsIEJ1ZmZlcik7DQo+ID4gPj4gKyAgICAgIFBy aW50IChMIjB4JWx4XG4iLCAqVGFibGVQb2ludGVyKTsNCj4gPiA+PiArDQo+ID4gPj4gKyAgICAg IC8vIFZhbGlkYXRlIHRoZSB0YWJsZSBwb2ludGVycyBhcmUgbm90IE5VTEwNCj4gPiA+PiArICAg ICAgaWYgKChVSU5UNjQqKShVSU5UTikoKlRhYmxlUG9pbnRlcikgPT0gTlVMTCkgew0KPiA+ID4+ ICsgICAgICAgIEluY3JlbWVudEVycm9yQ291bnQgKCk7DQo+ID4gPj4gKyAgICAgICAgUHJpbnQg KA0KPiA+ID4+ICsgICAgICAgICAgTCJFUlJPUjogSW52YWxpZCB0YWJsZSBlbnRyeSBhdCAweCVs eCwgdGFibGUgYWRkcmVzcyBpcyAweCVseFxuIiwNCj4gPiA+PiArICAgICAgICAgIFRhYmxlUG9p bnRlciwNCj4gPiA+PiArICAgICAgICAgICpUYWJsZVBvaW50ZXINCj4gPiA+PiArICAgICAgICAg ICk7DQo+ID4gPj4gKyAgICAgIH0NCj4gPiA+PiArICAgICAgT2Zmc2V0ICs9IHNpemVvZiAoVUlO VDY0KTsNCj4gPiA+PiArICAgICAgVGFibGVQb2ludGVyKys7DQo+ID4gPj4gKyAgICB9IC8vIHdo aWxlDQo+ID4gPj4gKyAgfQ0KPiA+ID4+ICsNCj4gPiA+PiArICAvLyBQcm9jZXNzIHRoZSB0YWJs ZXMNCj4gPiA+PiArICBPZmZzZXQgPSBUYWJsZU9mZnNldDsNCj4gPiA+PiArICBUYWJsZVBvaW50 ZXIgPSAoVUlOVDY0KikoUHRyICsgVGFibGVPZmZzZXQpOw0KPiA+ID4+ICsgIHdoaWxlIChPZmZz ZXQgPCAoKkFjcGlIZHJJbmZvLkxlbmd0aCkpIHsNCj4gPiA+PiArICAgIGlmICgoVUlOVDY0Kiko VUlOVE4pKCpUYWJsZVBvaW50ZXIpICE9IE5VTEwpIHsNCj4gPiA+PiArICAgICAgUHJvY2Vzc0Fj cGlUYWJsZSAoKFVJTlQ4KikoVUlOVE4pKCpUYWJsZVBvaW50ZXIpKTsNCj4gPiA+PiArICAgIH0N Cj4gPiA+PiArICAgIE9mZnNldCArPSBzaXplb2YgKFVJTlQ2NCk7DQo+ID4gPj4gKyAgICBUYWJs ZVBvaW50ZXIrKzsNCj4gPiA+PiArICB9IC8vIHdoaWxlDQo+ID4gPj4gK30NCj4gPiA+PiArDQo+ ID4gPj4gKy8qKiBSZWdpc3RlciB0aGUgcGFyc2VyLg0KPiA+ID4+ICsNCj4gPiA+PiArICBAcGFy YW0gW2luXSAgSW1hZ2VIYW5kbGUgIFRoZSBoYW5kbGUgdG8gdGhlIGltYWdlLg0KPiA+ID4+ICsg IEBwYXJhbSBbaW5dICBTeXN0ZW1UYWJsZSAgUG9pbnRlciB0byB0aGUgU3lzdGVtIFRhYmxlLg0K PiA+ID4+ICsNCj4gPiA+PiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUgcGFy c2VyIGlzIHJlZ2lzdGVyZWQuDQo+ID4gPj4gKyAgQHJldHZhbCBFRklfQUxSRUFEWV9TVEFSVEVE ICAgVGhlIHBhcnNlciBmb3IgdGhlIEFDUEkgVGFibGUNCj4gPiA+PiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB3YXMgYWxyZWFkeSByZWdpc3RlcmVkLg0KPiA+ID4+ICsgIEByZXR2 YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSIEEgcGFyYW1ldGVyIGlzIGludmFsaWQNCj4gPiA+PiAr ICBAcmV0dmFsIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTICBObyBzcGFjZSB0byByZWdpc3RlciB0aGUN Cj4gPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXIuDQo+ID4gPj4g KyovDQo+ID4gPj4gK0VGSV9TVEFUVVMNCj4gPiA+PiArRUZJQVBJDQo+ID4gPj4gK1hzZHRQYXJz ZXJMaWJDb25zdHJ1Y3RvciAoDQo+ID4gPj4gKyAgSU4gQ09OU1QgRUZJX0hBTkRMRSAgICAgICAg ICAgICAgICBJbWFnZUhhbmRsZSwNCj4gPiA+PiArICBJTiAgICAgICBFRklfU1lTVEVNX1RBQkxF ICAqIENPTlNUIFN5c3RlbVRhYmxlDQo+ID4gPj4gKyAgKQ0KPiA+ID4+ICt7DQo+ID4gPj4gKyAg cmV0dXJuIFJlZ2lzdGVyUGFyc2VyICgNCj4gPiA+PiArDQo+ID4gRUZJX0FDUElfNl8yX0VYVEVO REVEX1NZU1RFTV9ERVNDUklQVElPTl9UQUJMRV9TSUdOQVRVUkUsDQo+ID4gPj4gKyAgICAgICAg ICAgUGFyc2VBY3BpWHNkdA0KPiA+ID4+ICsgICAgICAgICAgICk7DQo+ID4gPj4gK30NCj4gPiA+ PiArDQo+ID4gPj4gKy8qKiBEZXJlZ2lzdGVyIHRoZSBwYXJzZXIuDQo+ID4gPj4gKw0KPiA+ID4+ ICsgIEBwYXJhbSBbaW5dICBJbWFnZUhhbmRsZSAgVGhlIGhhbmRsZSB0byB0aGUgaW1hZ2UuDQo+ ID4gPj4gKyAgQHBhcmFtIFtpbl0gIFN5c3RlbVRhYmxlICBQb2ludGVyIHRvIHRoZSBTeXN0ZW0g VGFibGUuDQo+ID4gPj4gKw0KPiA+ID4+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAg IFRoZSBwYXJzZXIgaXMgZGVyZWdpc3RlcmVkLg0KPiA+ID4+ICsgIEByZXR2YWwgRUZJX05PVF9G T1VORCAgICAgICAgIFRoZSBwYXJzZXIgd2FzIG5vdCByZWdpc3RlcmVkLg0KPiA+ID4+ICsqLw0K PiA+ID4+ICtFRklfU1RBVFVTDQo+ID4gPj4gK0VGSUFQSQ0KPiA+ID4+ICtYc2R0UGFyc2VyTGli RGVzdHJ1Y3RvciAoDQo+ID4gPj4gKyAgSU4gQ09OU1QgRUZJX0hBTkRMRSAgICAgICAgICAgICAg ICBJbWFnZUhhbmRsZSwNCj4gPiA+PiArICBJTiAgICAgICBFRklfU1lTVEVNX1RBQkxFICAqIENP TlNUIFN5c3RlbVRhYmxlDQo+ID4gPj4gKyAgKQ0KPiA+ID4+ICt7DQo+ID4gPj4gKyAgcmV0dXJu IERlcmVnaXN0ZXJQYXJzZXIgKA0KPiA+ID4+ICsNCj4gPiBFRklfQUNQSV82XzJfRVhURU5ERURf U1lTVEVNX0RFU0NSSVBUSU9OX1RBQkxFX1NJR05BVFVSRQ0KPiA+ID4+ICsgICAgICAgICAgICk7 DQo+ID4gPj4gK30NCj4gPiA+PiBkaWZmIC0tZ2l0DQo+ID4NCj4gYS9TaGVsbFBrZy9MaWJyYXJ5 L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL1hzZHQvWHNkdFBhcnNlcg0KPiBM aWIuaQ0KPiA+IG5mDQo+ID4NCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3 Q29tbWFuZExpYi9QYXJzZXJzL1hzZHQvWHNkdFBhcnNlcg0KPiBMaWIuaQ0KPiA+IG5mDQo+ID4g Pj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiA+PiBpbmRleA0KPiA+IDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJiOWEwNTgzNjQwNTYzNzU1MjAxYw0KPiA+IDA4 OWFhMjA3MDNhOGIyYzdmMDQNCj4gPiA+PiAtLS0gL2Rldi9udWxsDQo+ID4gPj4gKysrDQo+ID4N Cj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJz L1hzZHQvWHNkdFBhcnNlcg0KPiBMaWIuaQ0KPiA+IG5mDQo+ID4gPj4gQEAgLTAsMCArMSwzMyBA QA0KPiA+ID4+ICsjIyBAZmlsZQ0KPiA+ID4+ICsjDQo+ID4gPj4gKyMgIENvcHlyaWdodCAoYykg MjAxNyAtIDIwMTgsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiA+ID4+ICsj DQo+ID4gPj4gKyMgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMN Cj4gPiA+PiArIyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVy bXMgYW5kIGNvbmRpdGlvbnMgb2YNCj4gdGhlDQo+ID4gQlNEIExpY2Vuc2UNCj4gPiA+PiArIyAg d2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRo ZSBsaWNlbnNlIG1heQ0KPiBiZQ0KPiA+IGZvdW5kIGF0DQo+ID4gPj4gKyMgIGh0dHA6Ly9vcGVu c291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4gPiA+PiArIw0KPiA+ID4+ICsj ICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4g IkFTDQo+IElTIg0KPiA+IEJBU0lTLA0KPiA+ID4+ICsjICBXSVRIT1VUIFdBUlJBTlRJRVMgT1Ig UkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVINCj4gPiBFWFBSRVNTIE9SIElNUExJ RUQuDQo+ID4gPj4gKyMjDQo+ID4gPj4gKw0KPiA+ID4+ICtbRGVmaW5lc10NCj4gPiA+PiArICBJ TkZfVkVSU0lPTiAgICA9IDB4MDAwMTAwMTkNCj4gPiA+PiArICBCQVNFX05BTUUgICAgICA9IFhz ZHRQYXJzZXJMaWINCj4gPiA+PiArICBGSUxFX0dVSUQgICAgICA9IEE1N0VEN0EyLTRDRDYtNDIz OS05QTRELUY3RjBEQkRDRkNGQQ0KPiA+ID4+ICsgIFZFUlNJT05fU1RSSU5HID0gMS4wDQo+ID4g Pj4gKyAgTU9EVUxFX1RZUEUgICAgPSBEWEVfRFJJVkVSDQo+ID4gPj4gKyAgTElCUkFSWV9DTEFT UyAgPSBOVUxMfERYRV9EUklWRVINCj4gPiA+PiArICBDT05TVFJVQ1RPUiAgICA9IFhzZHRQYXJz ZXJMaWJDb25zdHJ1Y3Rvcg0KPiA+ID4+ICsgIERFU1RSVUNUT1IgICAgID0gWHNkdFBhcnNlckxp YkRlc3RydWN0b3INCj4gPiA+PiArDQo+ID4gPj4gK1tTb3VyY2VzXQ0KPiA+ID4+ICsgIFhzZHRQ YXJzZXIuYw0KPiA+ID4+ICsNCj4gPiA+PiArW1BhY2thZ2VzXQ0KPiA+ID4+ICsgIE1kZVBrZy9N ZGVQa2cuZGVjDQo+ID4gPj4gKyAgU2hlbGxQa2cvU2hlbGxQa2cuZGVjDQo+ID4gPj4gKyAgTWRl TW9kdWxlUGtnL01kZU1vZHVsZVBrZy5kZWMNCj4gPiA+PiArDQo+ID4gPj4gK1tMaWJyYXJ5Q2xh c3Nlc10NCj4gPiA+PiArICBTaGVsbEFjcGlWaWV3Q29tbWFuZExpYg0KPiA+ID4+IGRpZmYgLS1n aXQNCj4gPg0KPiBhL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGli L1VlZmlTaGVsbEFjcGlWaWV3Q29tbQ0KPiBhbmQNCj4gPiBMaWIuYw0KPiA+DQo+IGIvU2hlbGxQ a2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvVWVmaVNoZWxsQWNwaVZpZXdD b21tDQo+IGFuZA0KPiA+IExpYi5jDQo+ID4gPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiA+ PiBpbmRleA0KPiA+IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU4 ODAzMTBlOGZjZTM0NzFlYzUwYg0KPiA+IDg1ZDZmYWI5OTVhYTFjOTdhZTUNCj4gPiA+PiAtLS0g L2Rldi9udWxsDQo+ID4gPj4gKysrDQo+ID4NCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVs bEFjcGlWaWV3Q29tbWFuZExpYi9VZWZpU2hlbGxBY3BpVmlld0NvbW0NCj4gYW5kDQo+ID4gTGli LmMNCj4gPiA+PiBAQCAtMCwwICsxLDEwNiBAQA0KPiA+ID4+ICsvKioNCj4gPiA+PiArICBNYWlu IGZpbGUgZm9yICdhY3BpdmlldycgU2hlbGwgY29tbWFuZCBmdW5jdGlvbi4NCj4gPiA+PiArDQo+ ID4gPj4gKyAgQ29weXJpZ2h0IChjKSAyMDE2IC0gMjAxOCwgQVJNIExpbWl0ZWQuIEFsbCByaWdo dHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ID4+ICsgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFu eWluZyBtYXRlcmlhbHMNCj4gPiA+PiArICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxl IHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZg0KPiB0aGUNCj4gPiBCU0QgTGljZW5z ZQ0KPiA+ID4+ICsgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1 bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkNCj4gYmUNCj4gPiBmb3VuZCBhdA0KPiA+ID4+ICsg IGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4gPiA+PiAr DQo+ID4gPj4gKyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNF TlNFIE9OIEFOICJBUw0KPiBJUyINCj4gPiBCQVNJUywNCj4gPiA+PiArICBXSVRIT1VUIFdBUlJB TlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVINCj4gPiBFWFBSRVNT IE9SIElNUExJRUQuDQo+ID4gPj4gKyoqLw0KPiA+ID4+ICsNCj4gPiA+PiArI2luY2x1ZGUgPEd1 aWQvU2hlbGxMaWJIaWlHdWlkLmg+DQo+ID4gPj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0hpaUxpYi5o Pg0KPiA+ID4+ICsjaW5jbHVkZSA8TGlicmFyeS9TaGVsbENvbW1hbmRMaWIuaD4NCj4gPiA+PiAr I2luY2x1ZGUgPExpYnJhcnkvVWVmaUxpYi5oPg0KPiA+ID4+ICsjaW5jbHVkZSA8TGlicmFyeS9V ZWZpQm9vdFNlcnZpY2VzVGFibGVMaWIuaD4NCj4gPiA+PiArI2luY2x1ZGUgPFVlZmkuaD4NCj4g PiA+PiArI2luY2x1ZGUgIkFjcGlWaWV3LmgiDQo+ID4gPj4gKyNpbmNsdWRlICJVZWZpU2hlbGxB Y3BpVmlld0NvbW1hbmRMaWIuaCINCj4gPiA+PiArDQo+ID4gPj4gK0NPTlNUIENIQVIxNiBnU2hl bGxBY3BpVmlld0ZpbGVOYW1lW10gPSBMIlNoZWxsQ29tbWFuZCI7DQo+ID4gPj4gKw0KPiA+ID4+ ICsvKioNCj4gPiA+PiArICBSZXR1cm4gdGhlIGZpbGUgbmFtZSBvZiB0aGUgaGVscCB0ZXh0IGZp bGUgaWYgbm90IHVzaW5nIEhJSS4NCj4gPiA+PiArDQo+ID4gPj4gKyAgQHJldHVybiBUaGUgc3Ry aW5nIHBvaW50ZXIgdG8gdGhlIGZpbGUgbmFtZS4NCj4gPiA+PiArKi8NCj4gPiA+PiArQ09OU1Qg Q0hBUjE2Kg0KPiA+ID4+ICtFRklBUEkNCj4gPiA+PiArU2hlbGxDb21tYW5kR2V0TWFuRmlsZU5h bWVBY3BpVmlldyAoDQo+ID4gPj4gKyAgVk9JRA0KPiA+ID4+ICsgICkNCj4gPiA+PiArew0KPiA+ ID4+ICsgIHJldHVybiBnU2hlbGxBY3BpVmlld0ZpbGVOYW1lOw0KPiA+ID4+ICt9DQo+ID4gPj4g Kw0KPiA+ID4+ICsvKioNCj4gPiA+PiArICBDb25zdHJ1Y3RvciBmb3IgdGhlIFNoZWxsIEFjcGlW aWV3IENvbW1hbmQgbGlicmFyeS4NCj4gPiA+PiArDQo+ID4gPj4gKyAgSW5zdGFsbCB0aGUgaGFu ZGxlcnMgZm9yIGFjcGl2aWV3IFVFRkkgU2hlbGwgY29tbWFuZC4NCj4gPiA+PiArDQo+ID4gPj4g KyAgQHBhcmFtIEltYWdlSGFuZGxlICAgICAgICAgICAgVGhlIGltYWdlIGhhbmRsZSBvZiB0aGUg cHJvY2Vzcy4NCj4gPiA+PiArICBAcGFyYW0gU3lzdGVtVGFibGUgICAgICAgICAgICBUaGUgRUZJ IFN5c3RlbSBUYWJsZSBwb2ludGVyLg0KPiA+ID4+ICsNCj4gPiA+PiArICBAcmV0dmFsIEVGSV9T VUNDRVNTICAgICAgICAgICBUaGUgU2hlbGwgY29tbWFuZCBoYW5kbGVycyB3ZXJlDQo+ID4gaW5z dGFsbGVkDQo+ID4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VjY2Vzc2Z1 bGx5Lg0KPiA+ID4+ICsgIEByZXR2YWwgRUZJX0RFVklDRV9FUlJPUiAgICAgIEhpaSBwYWNrYWdl IGZhaWxlZCB0byBpbnN0YWxsLg0KPiA+ID4+ICsqLw0KPiA+ID4+ICtFRklfU1RBVFVTDQo+ID4g Pj4gK0VGSUFQSQ0KPiA+ID4+ICtTaGVsbEFjcGlWaWV3Q29tbWFuZExpYkNvbnN0cnVjdG9yICgN Cj4gPiA+PiArICBJTiBFRklfSEFORExFICAgICAgICBJbWFnZUhhbmRsZSwNCj4gPiA+PiArICBJ TiBFRklfU1lTVEVNX1RBQkxFICAqU3lzdGVtVGFibGUNCj4gPiA+PiArICApDQo+ID4gPj4gK3sN Cj4gPiA+PiArICBnU2hlbGxBY3BpVmlld0hpaUhhbmRsZSA9IE5VTEw7DQo+ID4gPj4gKw0KPiA+ ID4+ICsgIC8vIENoZWNrIFNoZWxsIFByb2ZpbGUgRGVidWcxIGJpdCBvZiB0aGUgcHJvZmlsZXMg bWFzaw0KPiA+ID4+ICsgIGlmICgoRml4ZWRQY2RHZXQ4IChQY2RTaGVsbFByb2ZpbGVNYXNrKSAm IEJJVDEpID09IDApIHsNCj4gPiA+PiArICAgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4gPiA+PiAr ICB9DQo+ID4gPj4gKw0KPiA+ID4+ICsgIGdTaGVsbEFjcGlWaWV3SGlpSGFuZGxlID0gSGlpQWRk UGFja2FnZXMgKA0KPiA+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZ1NoZWxs QWNwaVZpZXdIaWlHdWlkLA0KPiA+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn SW1hZ2VIYW5kbGUsDQo+ID4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVlZmlT aGVsbEFjcGlWaWV3Q29tbWFuZExpYlN0cmluZ3MsDQo+ID4gPj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIE5VTEwNCj4gPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KTsNCj4gPiA+PiArICBpZiAoZ1NoZWxsQWNwaVZpZXdIaWlIYW5kbGUgPT0gTlVMTCkgew0KPiA+ ID4+ICsgICAgcmV0dXJuIEVGSV9ERVZJQ0VfRVJST1I7DQo+ID4gPj4gKyAgfQ0KPiA+ID4+ICsg IC8vIEluc3RhbGwgb3VyIFNoZWxsIGNvbW1hbmQgaGFuZGxlcg0KPiA+ID4+ICsgIFNoZWxsQ29t bWFuZFJlZ2lzdGVyQ29tbWFuZE5hbWUgKA0KPiA+ID4+ICsgICAgTCJhY3BpdmlldyIsDQo+ID4g Pj4gKyAgICBTaGVsbENvbW1hbmRSdW5BY3BpVmlldywNCj4gPiA+PiArICAgIFNoZWxsQ29tbWFu ZEdldE1hbkZpbGVOYW1lQWNwaVZpZXcsDQo+ID4gPj4gKyAgICAwLA0KPiA+ID4+ICsgICAgTCJh Y3BpdmlldyIsDQo+ID4gPj4gKyAgICBUUlVFLA0KPiA+ID4+ICsgICAgZ1NoZWxsQWNwaVZpZXdI aWlIYW5kbGUsDQo+ID4gPj4gKyAgICBTVFJJTkdfVE9LRU4gKFNUUl9HRVRfSEVMUF9BQ1BJVklF VykNCj4gPiA+PiArICAgICk7DQo+ID4gPj4gKw0KPiA+ID4+ICsgIHJldHVybiBFRklfU1VDQ0VT UzsNCj4gPiA+PiArfQ0KPiA+ID4+ICsNCj4gPiA+PiArLyoqDQo+ID4gPj4gKyAgRGVzdHJ1Y3Rv ciBmb3IgdGhlIGxpYnJhcnkuIGZyZWUgYW55IHJlc291cmNlcy4NCj4gPiA+PiArDQo+ID4gPj4g KyAgQHBhcmFtIEltYWdlSGFuZGxlICAgICAgICAgICAgVGhlIGltYWdlIGhhbmRsZSBvZiB0aGUg cHJvY2Vzcy4NCj4gPiA+PiArICBAcGFyYW0gU3lzdGVtVGFibGUgICAgICAgICAgICBUaGUgRUZJ IFN5c3RlbSBUYWJsZSBwb2ludGVyLg0KPiA+ID4+ICsqLw0KPiA+ID4+ICtFRklfU1RBVFVTDQo+ ID4gPj4gK0VGSUFQSQ0KPiA+ID4+ICtTaGVsbEFjcGlWaWV3Q29tbWFuZExpYkRlc3RydWN0b3Ig KA0KPiA+ID4+ICsgIElOIEVGSV9IQU5ETEUgICAgICAgIEltYWdlSGFuZGxlLA0KPiA+ID4+ICsg IElOIEVGSV9TWVNURU1fVEFCTEUgICpTeXN0ZW1UYWJsZQ0KPiA+ID4+ICsgICkNCj4gPiA+PiAr ew0KPiA+ID4+ICsgIGlmIChnU2hlbGxBY3BpVmlld0hpaUhhbmRsZSAhPSBOVUxMKSB7DQo+ID4g Pj4gKyAgICBIaWlSZW1vdmVQYWNrYWdlcyAoZ1NoZWxsQWNwaVZpZXdIaWlIYW5kbGUpOw0KPiA+ ID4+ICsgIH0NCj4gPiA+PiArICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ID4gPj4gK30NCj4gPiA+ PiBkaWZmIC0tZ2l0DQo+ID4NCj4gYS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3 Q29tbWFuZExpYi9VZWZpU2hlbGxBY3BpVmlld0NvbW0NCj4gYW5kDQo+ID4gTGliLmgNCj4gPg0K PiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1VlZmlTaGVs bEFjcGlWaWV3Q29tbQ0KPiBhbmQNCj4gPiBMaWIuaA0KPiA+ID4+IG5ldyBmaWxlIG1vZGUgMTAw NjQ0DQo+ID4gPj4gaW5kZXgNCj4gPiAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwLi41OWM4ZTIxNTQ0ZDY4MjlhYzg3MjkNCj4gPiA1OGY2Yjg0MzU4ZTFmOTFiMDJmDQo+ ID4gPj4gLS0tIC9kZXYvbnVsbA0KPiA+ID4+ICsrKw0KPiA+DQo+IGIvU2hlbGxQa2cvTGlicmFy eS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvVWVmaVNoZWxsQWNwaVZpZXdDb21tDQo+IGFu ZA0KPiA+IExpYi5oDQo+ID4gPj4gQEAgLTAsMCArMSwzMiBAQA0KPiA+ID4+ICsvKioNCj4gPiA+ PiArICBIZWFkZXIgZmlsZSBmb3IgJ2FjcGl2aWV3JyBTaGVsbCBjb21tYW5kIGZ1bmN0aW9ucy4N Cj4gPiA+PiArDQo+ID4gPj4gKyAgQ29weXJpZ2h0IChjKSAyMDE2IC0gMjAxNywgQVJNIExpbWl0 ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ID4+ICsgIFRoaXMgcHJvZ3JhbSBhbmQg dGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCj4gPiA+PiArICBhcmUgbGljZW5zZWQgYW5kIG1h ZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZg0KPiB0aGUNCj4g PiBCU0QgTGljZW5zZQ0KPiA+ID4+ICsgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0 aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkNCj4gYmUNCj4gPiBmb3VuZCBh dA0KPiA+ID4+ICsgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5w aHANCj4gPiA+PiArDQo+ID4gPj4gKyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIg VEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUw0KPiBJUyINCj4gPiBCQVNJUywNCj4gPiA+PiArICBX SVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVIN Cj4gPiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ID4gPj4gKyoqLw0KPiA+ID4+ICsNCj4gPiA+PiAr I2lmbmRlZiBVRUZJX1NIRUxMX0FDUElWSUVXX0NPTU1BTkRfTElCX0hfDQo+ID4gPj4gKyNkZWZp bmUgVUVGSV9TSEVMTF9BQ1BJVklFV19DT01NQU5EX0xJQl9IXw0KPiA+ID4+ICsNCj4gPiA+PiAr ZXh0ZXJuIEVGSV9ISUlfSEFORExFIGdTaGVsbEFjcGlWaWV3SGlpSGFuZGxlOw0KPiA+ID4+ICsN Cj4gPiA+PiArLyoqDQo+ID4gPj4gKyAgRnVuY3Rpb24gZm9yICdhY3BpdmlldycgY29tbWFuZC4N Cj4gPiA+PiArDQo+ID4gPj4gKyAgQHBhcmFtW2luXSBJbWFnZUhhbmRsZSAgSGFuZGxlIHRvIHRo ZSBJbWFnZSAoTlVMTCBpZiBJbnRlcm5hbCkuDQo+ID4gPj4gKyAgQHBhcmFtW2luXSBTeXN0ZW1U YWJsZSAgUG9pbnRlciB0byB0aGUgU3lzdGVtIFRhYmxlIChOVUxMIGlmDQo+IEludGVybmFsKS4N Cj4gPiA+PiArKi8NCj4gPiA+PiArU0hFTExfU1RBVFVTDQo+ID4gPj4gK0VGSUFQSQ0KPiA+ID4+ ICtTaGVsbENvbW1hbmRSdW5BY3BpVmlldyAoDQo+ID4gPj4gKyAgSU4gRUZJX0hBTkRMRSAgICAg ICAgSW1hZ2VIYW5kbGUsDQo+ID4gPj4gKyAgSU4gRUZJX1NZU1RFTV9UQUJMRSAgKlN5c3RlbVRh YmxlDQo+ID4gPj4gKyAgKTsNCj4gPiA+PiArDQo+ID4gPj4gKyNlbmRpZiAvLyBVRUZJX1NIRUxM X0FDUElWSUVXX0NPTU1BTkRfTElCX0hfDQo+ID4gPj4gZGlmZiAtLWdpdA0KPiA+DQo+IGEvU2hl bGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvVWVmaVNoZWxsQWNwaVZp ZXdDb21tDQo+IGFuZA0KPiA+IExpYi5pbmYNCj4gPg0KPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVm aVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1VlZmlTaGVsbEFjcGlWaWV3Q29tbQ0KPiBhbmQNCj4g PiBMaWIuaW5mDQo+ID4gPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiA+PiBpbmRleA0KPiA+ IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU1M2IyODk4ZTFhZTZk ZGJjOGM3Yw0KPiA+IDBhMjkzMTJlNjAyYWIwNTQzYTMNCj4gPiA+PiAtLS0gL2Rldi9udWxsDQo+ ID4gPj4gKysrDQo+ID4NCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29t bWFuZExpYi9VZWZpU2hlbGxBY3BpVmlld0NvbW0NCj4gYW5kDQo+ID4gTGliLmluZg0KPiA+ID4+ IEBAIC0wLDAgKzEsNjAgQEANCj4gPiA+PiArIyMgIEBmaWxlDQo+ID4gPj4gKyMgUHJvdmlkZXMg U2hlbGwgJ2FjcGl2aWV3JyBjb21tYW5kIGZ1bmN0aW9ucw0KPiA+ID4+ICsjDQo+ID4gPj4gKyMg Q29weXJpZ2h0IChjKSAyMDE2IC0gMjAxOCwgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2 ZWQuPEJSPg0KPiA+ID4+ICsjDQo+ID4gPj4gKyMgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29t cGFueWluZyBtYXRlcmlhbHMNCj4gPiA+PiArIyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWls YWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YNCj4gdGhlDQo+ID4gQlNEIExp Y2Vuc2UNCj4gPiA+PiArIyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uIFRo ZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5DQo+IGJlDQo+ID4gZm91bmQgYXQNCj4gPiA+ PiArIyAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiA+ ID4+ICsjICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0Ug T04gQU4gIkFTDQo+IElTIg0KPiA+IEJBU0lTLA0KPiA+ID4+ICsjICBXSVRIT1VUIFdBUlJBTlRJ RVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVINCj4gPiBFWFBSRVNTIE9S IElNUExJRUQuDQo+ID4gPj4gKyMNCj4gPiA+PiArIw0KPiA+ID4+ICsjIw0KPiA+ID4+ICsNCj4g PiA+PiArW0RlZmluZXNdDQo+ID4gPj4gKyAgSU5GX1ZFUlNJT04gICAgICAgICAgICAgICAgICAg ID0gMHgwMDAxMDAwNg0KPiA+ID4+ICsgIEJBU0VfTkFNRSAgICAgICAgICAgICAgICAgICAgICA9 IFVlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYg0KPiA+ID4+ICsgIEZJTEVfR1VJRCAgICAgICAg ICAgICAgICAgICAgICA9DQo+ID4gRkI1QjMwNUUtODRGNS00NjFGLTk0MEQtODJEMzQ1NzU3QUZB DQo+ID4gPj4gKyAgTU9EVUxFX1RZUEUgICAgICAgICAgICAgICAgICAgID0gVUVGSV9EUklWRVIN Cj4gPiA+PiArICBWRVJTSU9OX1NUUklORyAgICAgICAgICAgICAgICAgPSAxLjANCj4gPiA+PiAr ICBMSUJSQVJZX0NMQVNTICAgICAgICAgICAgICAgICAgPQ0KPiA+IFNoZWxsQWNwaVZpZXdDb21t YW5kTGlifFVFRklfQVBQTElDQVRJT04gVUVGSV9EUklWRVINCj4gPiBEWEVfUlVOVElNRV9EUklW RVINCj4gPiA+PiArICBDT05TVFJVQ1RPUiAgICAgICAgICAgICAgICAgICAgPQ0KPiA+IFNoZWxs QWNwaVZpZXdDb21tYW5kTGliQ29uc3RydWN0b3INCj4gPiA+PiArICBERVNUUlVDVE9SICAgICAg ICAgICAgICAgICAgICAgPQ0KPiA+IFNoZWxsQWNwaVZpZXdDb21tYW5kTGliRGVzdHJ1Y3Rvcg0K PiA+ID4+ICsNCj4gPiA+PiArW1NvdXJjZXMuY29tbW9uXQ0KPiA+ID4+ICsgIFVlZmlTaGVsbEFj cGlWaWV3Q29tbWFuZExpYi51bmkNCj4gPiA+PiArICBVZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRM aWIuYw0KPiA+ID4+ICsgIFVlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi5oDQo+ID4gPj4gKyAg QWNwaVBhcnNlci5jDQo+ID4gPj4gKyAgQWNwaVRhYmxlUGFyc2VyLmMNCj4gPiA+PiArICBBY3Bp Vmlldy5jDQo+ID4gPj4gKw0KPiA+ID4+ICtbUGFja2FnZXNdDQo+ID4gPj4gKyAgTWRlUGtnL01k ZVBrZy5kZWMNCj4gPiA+PiArICBTaGVsbFBrZy9TaGVsbFBrZy5kZWMNCj4gPiA+PiArICBNZGVN b2R1bGVQa2cvTWRlTW9kdWxlUGtnLmRlYw0KPiA+ID4+ICsNCj4gPiA+PiArW0xpYnJhcnlDbGFz c2VzXQ0KPiA+ID4+ICsgIE1lbW9yeUFsbG9jYXRpb25MaWINCj4gPiA+PiArICBCYXNlTGliDQo+ ID4gPj4gKyAgQmFzZU1lbW9yeUxpYg0KPiA+ID4+ICsgIERlYnVnTGliDQo+ID4gPj4gKyAgU2hl bGxDb21tYW5kTGliDQo+ID4gPj4gKyAgU2hlbGxMaWINCj4gPiA+PiArICBVZWZpTGliDQo+ID4g Pj4gKyAgVWVmaVJ1bnRpbWVTZXJ2aWNlc1RhYmxlTGliDQo+ID4gPj4gKyAgVWVmaUJvb3RTZXJ2 aWNlc1RhYmxlTGliDQo+ID4gPj4gKyAgUGNkTGliDQo+ID4gPj4gKyAgSGlpTGliDQo+ID4gPj4g KyAgUHJpbnRMaWINCj4gPiA+PiArICBGaWxlSGFuZGxlTGliDQo+ID4gPj4gKw0KPiA+ID4+ICsN Cj4gPiA+PiArW0ZpeGVkUGNkXQ0KPiA+ID4+ICsgIGdFZmlTaGVsbFBrZ1Rva2VuU3BhY2VHdWlk LlBjZFNoZWxsUHJvZmlsZU1hc2sgIyMgQ09OU1VNRVMNCj4gPiA+PiArDQo+ID4gPj4gK1tHdWlk c10NCj4gPiA+PiArICBnU2hlbGxBY3BpVmlld0hpaUd1aWQgICAgICAgICAgICMjIENPTlNVTUVT ICMjIEhJSQ0KPiA+ID4+ICsgIGdFZmlBY3BpVGFibGVHdWlkICAgICAgICAgICAgICAgIyMgU09N RVRJTUVTX0NPTlNVTUVTICMjDQo+ID4gU3lzdGVtVGFibGUNCj4gPiA+PiBkaWZmIC0tZ2l0DQo+ ID4NCj4gYS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9VZWZp U2hlbGxBY3BpVmlld0NvbW0NCj4gYW5kDQo+ID4gTGliLnVuaQ0KPiA+DQo+IGIvU2hlbGxQa2cv TGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvVWVmaVNoZWxsQWNwaVZpZXdDb21t DQo+IGFuZA0KPiA+IExpYi51bmkNCj4gPiA+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+ID4+ IGluZGV4DQo+ID4gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWM0 ZDY2ZTFmZjUwNzA1NGQ0YWE0Mg0KPiA+IGJkNDdiZmFlODgyNGMyMThlNg0KPiA+ID4+IC0tLSAv ZGV2L251bGwNCj4gPiA+PiArKysNCj4gPg0KPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxs QWNwaVZpZXdDb21tYW5kTGliL1VlZmlTaGVsbEFjcGlWaWV3Q29tbQ0KPiBhbmQNCj4gPiBMaWIu dW5pDQo+ID4gPj4gQEAgLTAsMCArMSwxMjcgQEANCj4gPiA+PiArLy8gLyoqDQo+ID4gPj4gKy8v DQo+ID4gPj4gKy8vIENvcHlyaWdodCAoYykgMjAxNiAtIDIwMTcsIEFSTSBMaW1pdGVkLiBBbGwg cmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPiA+PiArLy8gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNj b21wYW55aW5nIG1hdGVyaWFscw0KPiA+ID4+ICsvLyBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZh aWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZg0KPiB0aGUNCj4gPiBCU0Qg TGljZW5zZQ0KPiA+ID4+ICsvLyB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4g VGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkNCj4gYmUNCj4gPiBmb3VuZCBhdA0KPiA+ ID4+ICsvLyBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ ID4gPj4gKy8vDQo+ID4gPj4gKy8vIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRI RSBCU0QgTElDRU5TRSBPTiBBTiAiQVMNCj4gSVMiDQo+ID4gQkFTSVMsDQo+ID4gPj4gKy8vIFdJ VEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUg0K PiA+IEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gPiA+PiArLy8NCj4gPiA+PiArLy8gTW9kdWxlIE5h bWU6DQo+ID4gPj4gKy8vDQo+ID4gPj4gKy8vIFVlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi51 bmkNCj4gPiA+PiArLy8NCj4gPiA+PiArLy8gQWJzdHJhY3Q6DQo+ID4gPj4gKy8vDQo+ID4gPj4g Ky8vIFN0cmluZyBkZWZpbml0aW9ucyBmb3IgVUVGSSBTaGVsbCBhY3BpdmlldyBjb21tYW5kDQo+ ID4gPj4gKy8vDQo+ID4gPj4gKy8vDQo+ID4gPj4gKy8vICovDQo+ID4gPj4gKw0KPiA+ID4+ICsv PSMNCj4gPiA+PiArDQo+ID4gPj4gKyNsYW5nZGVmICAgZW4tVVMgImVuZ2xpc2giDQo+ID4gPj4g Kw0KPiA+ID4+ICsjc3RyaW5nIFNUUl9HRU5fUFJPQkxFTSAgICAgICAgICAgI2xhbmd1YWdlIGVu LVVTICIlSCVzJU46DQo+ID4gVW5rbm93biBmbGFnIC0gJyVIJXMlTidcclxuIg0KPiA+ID4+ICsj c3RyaW5nIFNUUl9HRU5fTk9fVkFMVUUgICAgICAgICAgI2xhbmd1YWdlIGVuLVVTICIlSCVzJU46 DQo+ID4gTWlzc2luZyBhcmd1bWVudCBmb3IgZmxhZyAtICclSCVzJU4nXHJcbiINCj4gPiA+PiAr I3N0cmluZyBTVFJfR0VOX1RPT19NQU5ZICAgICAgICAgICNsYW5ndWFnZSBlbi1VUyAiJUglcyVO OiBUb28NCj4gPiBtYW55IGFyZ3VtZW50cy5cclxuIg0KPiA+ID4+ICsjc3RyaW5nIFNUUl9HRU5f TUlTU0lOR19PUFRJT04gICAgI2xhbmd1YWdlIGVuLVVTICIlSCVzJU46DQo+ID4gTWlzc2luZyBv cHRpb24gJyVIJXMlTicgcmVxdWlyZWQgYnkgZmxhZyAtICclSCVzJU4nXHJcbiINCj4gPiA+PiAr I3N0cmluZyBTVFJfR0VOX1JFQURPTkxZX01FRElBICAgICNsYW5ndWFnZSBlbi1VUyAiJUglcyVO Og0KPiA+IFVuYWJsZSB0byB3cml0ZSB0byB0aGUgY3VycmVudCBkaXJlY3RvcnksIGNoZWNrIGlm IG1lZGlhIGlzIHdyaXRhYmxlLlxyXG4iDQo+ID4gPj4gKw0KPiA+ID4+ICsjc3RyaW5nIFNUUl9H RVRfSEVMUF9BQ1BJVklFVyAgICNsYW5ndWFnZSBlbi1VUyAiIg0KPiA+ID4+ICsiLlRIIGFjcGl2 aWV3IDAgIkRpc3BsYXkgQUNQSSBpbmZvcm1hdGlvbi4iXHJcbiINCj4gPiA+PiArIi5TSCBOQU1F XHJcbiINCj4gPiA+PiArIkRpc3BsYXkgQUNQSSBUYWJsZSBpbmZvcm1hdGlvbi5cclxuIg0KPiA+ ID4+ICsiLlNIIFNZTk9QU0lTXHJcbiINCj4gPiA+PiArIiBcclxuIg0KPiA+ID4+ICsiQUNQSVZJ RVcgW1stP10gfCBbWy1sXSB8IFstcyBBY3BpVGFibGUgWy1kXV1dIFstY10gWy12XSBbLWggSGln aGxpZ2h0XV1cclxuIg0KPiA+ID4+ICsiIFxyXG4iDQo+ID4gPj4gKyIuU0ggT1BUSU9OU1xyXG4i DQo+ID4gPj4gKyIgXHJcbiINCj4gPiA+PiArIiAgLWwgLSBEaXNwbGF5IGxpc3Qgb2YgaW5zdGFs bGVkIEFDUEkgVGFibGVzLlxyXG4iDQo+ID4gPj4gKyIgIC1zIC0gRGlzcGxheSBvbmx5IHRoZSBz cGVjaWZpZWQgQWNwaVRhYmxlIHR5cGUuXHJcbiINCj4gPiA+PiArIiAgICAgICAgIEFjcGlUYWJs ZSAgICA6IFRoZSByZXF1aXJlZCBBQ1BJIFRhYmxlIHR5cGUuXHJcbiINCj4gPiA+PiArIiAgLWQg LSBHZW5lcmF0ZSBhIGJpbmFyeSBmaWxlIGR1bXAgb2YgdGhlIHNwZWNpZmllZCBBY3BpVGFibGUu XHJcbiINCj4gPiA+PiArIiAgLWMgLSBDb25zaXN0ZW5jeSBjaGVja2luZyAoZW5hYmxlZCBieSBk ZWZhdWx0KS5cclxuIg0KPiA+ID4+ICsiICAtdiAtIERpc3BsYXkgdmVyYm9zZSBkYXRhIChlbmFi bGVkIGJ5IGRlZmF1bHQpLlxyXG4iDQo+ID4gPj4gKyIgIC1oIC0gRW5hYmxlL0Rpc2FibGUgQ29s b3VyIEhpZ2hsaWdodGluZy5cclxuIg0KPiA+ID4+ICsiICAgICAgICAgSGlnaGxpZ2h0ICAgIDog VFJVRS9PTiBlbmFibGVzIGhpZ2hsaWdodGluZztcclxuIg0KPiA+ID4+ICsiICAgICAgICAgICAg ICAgICAgICAgICAgRkFMU0UvT0ZGIChkZWZhdWx0KSBkaXNhYmxlcyBoaWdobGlnaHRpbmcuXHJc biINCj4gPiA+PiArIiAgLT8gLSBTaG93IGhlbHAuXHJcbiINCj4gPiA+PiArIiBcclxuIg0KPiA+ ID4+ICsiLlNIIERFU0NSSVBUSU9OXHJcbiINCj4gPiA+PiArIiBcclxuIg0KPiA+ID4+ICsiICBU aGlzIHByb2dyYW0gaXMgcHJvdmlkZWQgdG8gYWxsb3cgZXhhbWluYXRpb24gb2YgQUNQSSB0YWJs ZSB2YWx1ZXMNCj4gZnJvbQ0KPiA+IHRoZVxyXG4iDQo+ID4gPj4gKyIgIFVFRkkgU2hlbGwuICBU aGlzIGNhbiBoZWxwIHdpdGggaW52ZXN0aWdhdGlvbnMsIGVzcGVjaWFsbHkgYXQgdGhhdCBzdGFn ZQ0KPiA+IHdoZXJlXHJcbiINCj4gPiA+PiArIiAgdGhlIHRhYmxlcyBhcmUgbm90IGVuYWJsaW5n IGFuIE9TIHRvIGJvb3QuXHJcbiINCj4gPiA+PiArIiAgVGhlIHByb2dyYW0gaXMgbm90IGV4aGF1 c3RpdmUsIGFuZCBvbmx5IGVuY2Fwc3VsYXRlcyBkZXRhaWxlZA0KPiA+IGtub3dsZWRnZSBvZiBh XHJcbiINCj4gPiA+PiArIiAgbGltaXRlZCBudW1iZXIgb2YgdGFibGUgdHlwZXMuXHJcbiINCj4g PiA+PiArIiBcclxuIg0KPiA+ID4+ICsiICBEZWZhdWx0IGJlaGF2aW91ciBpcyB0byBkaXNwbGF5 IHRoZSBjb250ZW50IG9mIGFsbCB0YWJsZXMgaW5zdGFsbGVkLlxyXG4iDQo+ID4gPj4gKyIgICdL bm93bicgdGFibGUgdHlwZXMgKGxpc3RlZCBpbiBOT1RFUyBiZWxvdykgd2lsbCBiZSBwYXJzZWQg YW5kDQo+ID4gZGlzcGxheWVkXHJcbiINCj4gPiA+PiArIiAgd2l0aCBkZXNjcmlwdGlvbnMgYW5k IGZpZWxkIHZhbHVlcy4gIFdoZXJlIGFwcHJvcHJpYXRlIGEgZGVncmVlIG9mDQo+ID4gY29uc2lz dGVuY3lcclxuIg0KPiA+ID4+ICsiICBjaGVja2luZyBpcyBkb25lIGFuZCBlcnJvcnMgbWF5IGJl IHJlcG9ydGVkIGluIHRoZSBvdXRwdXQuXHJcbiINCj4gPiA+PiArIiAgT3RoZXIgdGFibGUgdHlw ZXMgd2lsbCBiZSBkaXNwbGF5ZWQgYXMgYW4gYXJyYXkgb2YgSGV4YWRlY2ltYWwNCj4gPiBieXRl cy5cclxuIg0KPiA+ID4+ICsiIFxyXG4iDQo+ID4gPj4gKyIgIFRvIGZhY2lsaXRhdGUgZGVidWdn aW5nLCB0aGUgLXMgYW5kIC1kIG9wdGlvbnMgY2FuIGJlIHVzZWQgdG8NCj4gZ2VuZXJhdGUNCj4g PiBhXHJcbiINCj4gPiA+PiArIiAgYmluYXJ5IGZpbGUgaW1hZ2Ugb2YgYSB0YWJsZSB0aGF0IGNh biBiZSBjb3BpZWQgZWxzZXdoZXJlIGZvcg0KPiA+IGludmVzdGlnYXRpb25cclxuIg0KPiA+ID4+ ICsiICB1c2luZyB0b29scyBzdWNoIGFzIHRob3NlIHByb3ZpZGVkIGJ5IGFjcGljYS5vcmcuICBU aGlzIGlzIGVzcGVjaWFsbHkNCj4gPiByZWxldmFudFxyXG4iDQo+ID4gPj4gKyIgIGZvciBBTUwg dHlwZSB0YWJsZXMgbGlrZSBEU0RUIGFuZCBTU0RULlxyXG4iDQo+ID4gPj4gKyIgXHJcbiINCj4g PiA+PiArIk5PVEVTOlxyXG4iDQo+ID4gPj4gKyIgIDEuIFRoZSBBY3BpVGFibGUgcGFyYW1ldGVy IGNhbiBtYXRjaCBhbnkgaW5zdGFsbGVkIHRhYmxlIHR5cGUuXHJcbiINCj4gPiA+PiArIiAgICAg VGFibGVzIHdpdGhvdXQgc3BlY2lmaWMgaGFuZGxpbmcgd2lsbCBiZSBkaXNwbGF5ZWQgYXMgYSBy YXcgaGV4DQo+IGR1bXANCj4gPiAob3JcclxuIg0KPiA+ID4+ICsiICAgICBkdW1wZWQgdG8gYSBm aWxlIGlmIC1kIGlzIHVzZWQpLlxyXG4iDQo+ID4gPj4gKyIgIDIuIEZvcm1hdHRlZCBkaXNwbGF5 IGFuZCBjaGVja2luZyBpcyBwcm92aWRlZCBmb3IgdGhlc2Ugc2lnbmF0dXJlDQo+ID4gdHlwZXM6 XHJcbiINCj4gPiA+PiArIiAgICAgICBBUElDICAtIE11bHRpcGxlIEFQSUMgRGVzY3JpcHRpb24g VGFibGUgKE1BRFQpXHJcbiINCj4gPiA+PiArIiAgICAgICBCR1JUICAtIEJvb3QgR3JhcGhpY3Mg UmVzb3VyY2UgVGFibGVcclxuIg0KPiA+ID4+ICsiICAgICAgIERCRzIgIC0gRGVidWcgUG9ydCBU YWJsZSAyXHJcbiINCj4gPiA+PiArIiAgICAgICBGQUNQICAtIEZpeGVkIEFDUEkgRGVzY3JpcHRp b24gVGFibGUgKEZBRFQpXHJcbiINCj4gPiA+PiArIiAgICAgICBHVERUICAtIEdlbmVyaWMgVGlt ZXIgRGVzY3JpcHRpb24gVGFibGVcclxuIg0KPiA+ID4+ICsiICAgICAgIElPUlQgIC0gSU8gUmVt YXBwaW5nIFRhYmxlXHJcbiINCj4gPiA+PiArIiAgICAgICBNQ0ZHICAtIE1lbW9yeSBNYXBwZWQg Q29uZmlnIFNwYWNlIEJhc2UgQWRkcmVzcyBEZXNjcmlwdGlvbg0KPiA+IFRhYmxlXHJcbiINCj4g PiA+PiArIiAgICAgICBSU0RQICAtIFJvb3QgU3lzdGVtIERlc2NyaXB0aW9uIFBvaW50ZXJcclxu Ig0KPiA+ID4+ICsiICAgICAgIFNMSVQgIC0gU3lzdGVtIExvY2FsaXR5IEluZm9ybWF0aW9uIFRh YmxlXHJcbiINCj4gPiA+PiArIiAgICAgICBTUENSICAtIFNlcmlhbCBQb3J0IENvbnNvbGUgUmVk aXJlY3Rpb24gVGFibGVcclxuIg0KPiA+ID4+ICsiICAgICAgIFNSQVQgIC0gU3lzdGVtIFJlc291 cmNlIEFmZmluaXR5IFRhYmxlXHJcbiINCj4gPiA+PiArIiAgICAgICBYU0RUICAtIEV4dGVuZGVk IFN5c3RlbSBEZXNjcmlwdGlvbiBUYWJsZVxyXG4iDQo+ID4gPj4gKyIgXHJcbiINCj4gPiA+PiAr Ii5TSCBTVEFOREFSRFNcclxuIg0KPiA+ID4+ICsiIFxyXG4iDQo+ID4gPj4gKyIgIFRhYmxlIGRl dGFpbHMgY29ycmVzcG9uZCB0byB0aG9zZSBpbiAnQWR2YW5jZWQgQ29uZmlndXJhdGlvbiBhbmQN Cj4gPiBQb3dlclxyXG4iDQo+ID4gPj4gKyIgIEludGVyZmFjZSBTcGVjaWZpY2F0aW9uJyBWZXJz aW9uIDYuMiBFcnJhdGEgQSwgW1NlcHRlbWJlciAyMDE3XVxyXG4iDQo+ID4gPj4gKyINCj4gPg0K PiAoaHR0cDovL3d3dy51ZWZpLm9yZy9zaXRlcy9kZWZhdWx0L2ZpbGVzL3Jlc291cmNlcy9BQ1BJ JTIwNl8yX0FfU2VwdDI5Lg0KPiBwZGYpDQo+ID4gXHJcbiINCj4gPiA+PiArIiBcclxuIg0KPiA+ ID4+ICsiICBOT1RFOiBUaGUgbmF0dXJlIG9mIHRoZSBBQ1BJIHN0YW5kYXJkIG1lYW5zIHRoYXQg YWxtb3N0IGFsbCB0YWJsZXMNCj4gaW4gNi4xDQo+ID4gd2lsbFxyXG4iDQo+ID4gPj4gKyIgICAg ICAgIGJlICdiYWNrd2FyZHMgY29tcGF0aWJsZScgd2l0aCBwcmlvciB2ZXJzaW9uIG9mIHRoZSBz cGVjaWZpY2F0aW9uDQo+ID4gaW5cclxuIg0KPiA+ID4+ICsiICAgICAgICB0ZXJtcyBvZiBzdHJ1 Y3R1cmUsIHNvIGZvcm1hdHRlZCBvdXRwdXQgc2hvdWxkIGJlIGNvcnJlY3QuICBUaGUNCj4gPiBt YWluXHJcbiINCj4gPiA+PiArIiAgICAgICAgZXhjZXB0aW9uIHdpbGwgYmUgdGhhdCBwcmV2aW91 c2x5ICdyZXNlcnZlZCcgZmllbGRzIHdpbGwgYmUNCj4gPiByZXBvcnRlZFxyXG4iDQo+ID4gPj4g KyIgICAgICAgIHdpdGggbmV3IG5hbWVzLCB3aGVyZSB0aGV5IGhhdmUgYmVlbiBhZGRlZCBpbiBs YXRlciB2ZXJzaW9ucw0KPiBvZg0KPiA+IHRoZVxyXG4iDQo+ID4gPj4gKyIgICAgICAgIHNwZWNp ZmljYXRpb24uXHJcbiINCj4gPiA+PiArIiBcclxuIg0KPiA+ID4+ICsiLlNIIEVYQU1QTEVTXHJc biINCj4gPiA+PiArIiBcclxuIg0KPiA+ID4+ICsiIFxyXG4iDQo+ID4gPj4gKyJFWEFNUExFUzpc clxuIg0KPiA+ID4+ICsiICAqIFRvIGRpc3BsYXkgYSBsaXN0IG9mIHRoZSBpbnN0YWxsZWQgdGFi bGUgdHlwZXM6XHJcbiINCj4gPiA+PiArIiAgICBmczA6XD4gYWNwaXZpZXcgLWxcclxuIg0KPiA+ ID4+ICsiIFxyXG4iDQo+ID4gPj4gKyIgICogVG8gcGFyc2UgYW5kIGRpc3BsYXkgYSBzcGVjaWZp YyB0YWJsZSB0eXBlOlxyXG4iDQo+ID4gPj4gKyIgICAgZnMwOlw+IGFjcGl2aWV3IC1zIEdURFRc clxuIg0KPiA+ID4+ICsiIFxyXG4iDQo+ID4gPj4gKyIgICogVG8gc2F2ZSBhIGJpbmFyeSBkdW1w IG9mIHRoZSBjb250ZW50cyBvZiBhIHRhYmxlIHRvIGEgZmlsZVxyXG4iDQo+ID4gPj4gKyIgICAg aW4gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3Rvcnk6XHJcbiINCj4gPiA+PiArIiAgICBmczA6 XD4gYWNwaXZpZXcgLXMgRFNEVCAtZFxyXG4iDQo+ID4gPj4gKyIgXHJcbiINCj4gPiA+PiArIiAg KiBUbyBkaXNwbGF5IGNvbnRlbnRzIG9mIGFsbCBBQ1BJIHRhYmxlczpcclxuIg0KPiA+ID4+ICsi ICAgIGZzMDpcPiBhY3Bpdmlld1xyXG4iDQo+ID4gPj4gKyIgXHJcbiINCj4gPiA+PiArIi5TSCBS RVRVUk5WQUxVRVNcclxuIg0KPiA+ID4+ICsiIFxyXG4iDQo+ID4gPj4gKyJSRVRVUk4gVkFMVUVT OlxyXG4iDQo+ID4gPj4gKyIgIFNIRUxMX1NVQ0NFU1MgICAgICAgICAgICAgRGF0YSB3YXMgZGlz cGxheWVkIGFzIHJlcXVlc3RlZC5cclxuIg0KPiA+ID4+ICsiICBTSEVMTF9JTlZBTElEX1BBUkFN RVRFUiAgIEFDUEkgVGFibGUgcGFyc2luZyBmYWlsZWQuXHJcbiINCj4gPiA+PiArIiBcclxuIg0K PiA+ID4+ICsNCj4gPiA+PiBkaWZmIC0tZ2l0IGEvU2hlbGxQa2cvU2hlbGxQa2cuZGVjIGIvU2hl bGxQa2cvU2hlbGxQa2cuZGVjDQo+ID4gPj4gaW5kZXgNCj4gPiAwYzRmNzRmZjQxNzI2YzRhMjhl ZDA4Mjg0OWMxYjg2NGIxYzQ4NzUyLi5jMDkwYWE0ZDA4YmUzYWFkNGQ5YWVkYg0KPiA+IDU0MmMw MTA1NmJjZTQ2OTY5IDEwMDY0NA0KPiA+ID4+IC0tLSBhL1NoZWxsUGtnL1NoZWxsUGtnLmRlYw0K PiA+ID4+ICsrKyBiL1NoZWxsUGtnL1NoZWxsUGtnLmRlYw0KPiA+ID4+IEBAIC0zLDYgKzMsNyBA QA0KPiA+ID4+ICAgICMNCj4gPiA+PiAgICAjIChDKSBDb3B5cmlnaHQgMjAxMy0yMDE0IEhld2xl dHQtUGFja2FyZCBEZXZlbG9wbWVudCBDb21wYW55LA0KPiA+IEwuUC48QlI+DQo+ID4gPj4gICAg IyBDb3B5cmlnaHQgKGMpIDIwMDkgLSAyMDE4LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0 cyByZXNlcnZlZC48QlI+DQo+ID4gPj4gKyMgQ29weXJpZ2h0IChjKSAyMDE2IC0gMjAxOCwgQVJN IExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ID4+ICAgICMNCj4gPiA+PiAg ICAjIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIGxpY2Vu c2VkIGFuZCBtYWRlDQo+ID4gYXZhaWxhYmxlIHVuZGVyDQo+ID4gPj4gICAgIyB0aGUgdGVybXMg YW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJTRCBMaWNlbnNlIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMN Cj4gPiBkaXN0cmlidXRpb24uDQo+ID4gPj4gQEAgLTU2LDcgKzU3LDcgQEAgW0d1aWRzXQ0KPiA+ ID4+ICAgICAgZ1NoZWxsTmV0d29yazJIaWlHdWlkICAgICAgICAgICA9IHsweDE3NGIyYjUsIDB4 ZjUwNSwgMHg0YjEyLA0KPiA+IHsweGFhLCAweDYwLCAweDU5LCAweGRmLCAweGY4LCAweGQ2LCAw eGVhLCAweDM3fX0NCj4gPiA+PiAgICAgIGdTaGVsbFRmdHBIaWlHdWlkICAgICAgICAgICAgICAg PSB7MHg3MzhhOTMxNCwgMHg4MmMxLCAweDQ1OTIsDQo+ID4gezB4OGYsIDB4ZjcsIDB4YzEsIDB4 YmQsIDB4ZjEsIDB4YjIsIDB4MGUsIDB4ZDR9fQ0KPiA+ID4+ICAgICAgZ1NoZWxsQmNmZ0hpaUd1 aWQgICAgICAgICAgICAgICA9IHsweDVmNWY2MDVkLCAweDE1ODMsIDB4NGEyZCwNCj4gPiB7MHhh NiwgMHhiMiwgMHhlYiwgMHgxMiwgMHhkYSwgMHhiNCwgMHhhMiwgMHhiNn19DQo+ID4gPj4gLQ0K PiA+ID4+ICsgIGdTaGVsbEFjcGlWaWV3SGlpR3VpZCAgICAgICAgICAgPSB7MHhkYThjY2RmNCwg MHhlZDhmLCAweDRmZmMsIHsweGI1LA0KPiA+IDB4ZWYsIDB4MmUsIDB4ZjUsIDB4NWUsIDB4MjQs IDB4OTMsIDB4MmF9fQ0KPiA+ID4+ICAgICAgIyBGSUxFX0dVSUQgYXMgZGVmaW5lZCBpbiBTaGVs bFBrZy9BcHBsaWNhdGlvbi9TaGVsbC9TaGVsbC5pbmYNCj4gPiA+PiAgICAgIGdVZWZpU2hlbGxG aWxlR3VpZCAgICAgICAgICAgICAgPSB7MHg3YzA0YTU4MywgMHg5ZTNlLCAweDRmMWMsDQo+ID4g ezB4YWQsIDB4NjUsIDB4ZTAsIDB4NTIsIDB4NjgsIDB4ZDAsIDB4YjQsIDB4ZDF9fQ0KPiA+ID4+ DQo+ID4gPj4NCj4gPiA+DQo+ID4gPg0KPiA+DQo+ID4NCj4gPiAtLQ0KPiA+IFRoYW5rcywNCj4g PiBSYXkNCg==