From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=104.47.0.51; helo=eur01-he1-obe.outbound.protection.outlook.com; envelope-from=sami.mujawar@arm.com; receiver=edk2-devel@lists.01.org Received: from EUR01-HE1-obe.outbound.protection.outlook.com (mail-he1eur01on0051.outbound.protection.outlook.com [104.47.0.51]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 5F76322135D2F for ; Wed, 7 Mar 2018 04:28:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector1-arm-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=vUrUtUFf1ZjDwa/G03ij/YaEVwS5KGx+n7FcKAKpGQE=; b=n6K5tt9j1HeYxgNvFmxtRK5yLoAm9DvNJaTbimmgN/w64prYDrd6Q4PI/UB3++yVcRXgkcdrpmtzgTJM+1agtzr5gjiaH2HxyqEQOAr65tqV2KIzYNhO50H4rRSKeSZFGf64MT90C2a0qux9r9eUWdfyVailReX6sEI9ZB4HJdk= Received: from DB5PR0801MB2710.eurprd08.prod.outlook.com (10.166.170.155) by DB5PR0801MB1527.eurprd08.prod.outlook.com (10.167.229.149) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.548.13; Wed, 7 Mar 2018 12:34:42 +0000 Received: from DB5PR0801MB2710.eurprd08.prod.outlook.com ([10.166.170.155]) by DB5PR0801MB2710.eurprd08.prod.outlook.com ([10.166.170.155]) with mapi id 15.20.0548.016; Wed, 7 Mar 2018 12:34:42 +0000 From: Sami Mujawar To: "Yao, Jiewen" , "Ni, Ruiyu" , "Carsey, Jaben" , "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: AQHTrRVeyHeFMUQhb02fe0jJ+y5TxKOzNSdQgBD4IoCAABCTAIAAVUWg Date: Wed, 7 Mar 2018 12:34:41 +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: <74D8A39837DF1E4DA445A8C0B3885C503AADF486@shsmsx102.ccr.corp.intel.com> Accept-Language: en-GB, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=Sami.Mujawar@arm.com; x-originating-ip: [217.140.96.140] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; DB5PR0801MB1527; 6:HdrSbsqwkIF35hqk3VIdG2JC8ugg4G3U4KTQFIQNx3IGjQPLCdEakG3cW1aN8qgPBjW8TjwjSeejv9v5Knh3FdsHzSNCd/Cew1OZP5F4No8G2PIFF54Zhph9iANxeGtgZQ/934i5ON9Xs/1LxkQD0feeHmhscQtheotYV+xQm+3l8Lauge0o5BacntgR84L6ZSBYNULlDQY8PPLKqtMEzd9q6sMXjRjqN4swQqXjVupM1ihta/pdhUfquyzJf0pwKezMgw8pLF0ilDrcMIMqL5r+rQ70hRDd/sLQYDz0TB0XTGkyj55NnlrdlgAIO6+VWoCLpM6T7T3PHkyw63UtCTD+eb7CqbUCQTMUmtGXibt3b/IeW32dZ0jwzZWjQLp3; 5:WzcGB2d2J0rSmBxiDj+G9uEAAdPP4uQp6P5lxvGznxCHNgpVv4J9WL/V+3B5yRy/uCn+Pn4Tnw1bAgRfO6chuT23IQ9Y8t3l78tOFfNOBO8KuKFd5OvzdyndJs7qfLGHdHbVpUeuzsJMGZLgjBanC27RL571da/TvQZfDuQIlls=; 24:ij9JZBBMWhgvqrZ5XlXAYkJw7m6TDcFdUbZgN4m3QwC5CPfHXovrAEjb83Kv0ujVBCbn96K3v4TCQ5w2yk37dDXiYFMzuZqkQlCHzcSYDmM=; 7:AAniWNZeHtPSUnXsj9YKIVtCcgD8etF6fI4bgzm2uqwH3wZhOrBwtUNKi01OjsYaPSplqL2L4bfEygYZf/3JncOC6TvrceyFjzVBBvGJPHdj0sBt1DCOfyyCgo0LNZoneYiqNvyUPgrP0l5aNeSEXAn8kO9tSN11Vt27nHEcA6gGwOiw44CJk6PaMpX8aB925Jj/awlM7+Tjwvje30l5Y9rqwCxn8kVSAcK3yS3q7KRq8cklWrB3upt9n3tYXnLG x-ms-exchange-antispam-srfa-diagnostics: SSOS;SSOR; x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: 127f7ada-f4af-4ae8-2575-08d58427cd15 x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(48565401081)(5600026)(4604075)(3008032)(4534165)(4627221)(201703031133081)(201702281549075)(2017052603328)(7153060)(7193020); SRVR:DB5PR0801MB1527; x-ms-traffictypediagnostic: DB5PR0801MB1527: nodisclaimer: True x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(158342451672863)(180628864354917)(166708455590820)(131327999870524)(162533806227266)(211171220733660)(228905959029699)(17755550239193); x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040501)(2401047)(8121501046)(5005006)(93006095)(93001095)(3002001)(3231220)(944501244)(52105095)(10201501046)(6055026)(6041288)(20161123562045)(20161123560045)(20161123558120)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011); SRVR:DB5PR0801MB1527; BCL:0; PCL:0; RULEID:; SRVR:DB5PR0801MB1527; x-forefront-prvs: 0604AFA86B x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(396003)(39380400002)(366004)(376002)(39860400002)(346002)(189003)(199004)(13464003)(16200700003)(5660300001)(53936002)(53376002)(6246003)(2906002)(6306002)(53946003)(25786009)(9686003)(45080400002)(7696005)(97736004)(2501003)(76176011)(6116002)(54906003)(110136005)(2900100001)(575784001)(3660700001)(86362001)(3846002)(2950100002)(8936002)(4326008)(3280700002)(26005)(478600001)(316002)(77096007)(102836004)(186003)(59450400001)(53546011)(81156014)(8676002)(33656002)(93886005)(99286004)(15188155005)(68736007)(81166006)(6506007)(6436002)(7736002)(305945005)(229853002)(966005)(55016002)(74316002)(105586002)(106356001)(14454004)(16799955002)(72206003)(66066001)(569006); DIR:OUT; SFP:1101; SCL:1; SRVR:DB5PR0801MB1527; H:DB5PR0801MB2710.eurprd08.prod.outlook.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; received-spf: None (protection.outlook.com: arm.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: n4EcwzP9fmT/TEGj4Rjq67pJaM7t7XBte4CtvzPXU8ER3hBZYByfxuHd7/HJOTptdkwRhjW81zsWO+c819FIkXY8GexgifE5pvzerqvfO+pv3NxPQzokCn+Of9yt535AJzn2fVwpLsFLwiAkdOoCD4yojhKCDF3G1Rx4vGufh9vYjNnbSpPpiY1Cat/bSSW6VeVmEpZgrPQFV6UdrquBFGIuWXbSo9xDXBooY1CtH5u2N7Eu4eQyzFV7y5PCBp2UaXyA2wjx+NtMWvsnQD6mEgur7uICocCjdh8MJLORZtQ7G7pV9k8XEXyvDqKkEXd0IkNjr8yuFZN4/a4sKpww1g== spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-Network-Message-Id: 127f7ada-f4af-4ae8-2575-08d58427cd15 X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Mar 2018 12:34:41.8036 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB5PR0801MB1527 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 12:28:37 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 UGxlYXNlIGZpbmQgbXkgcmVzcG9uc2UgYmVsb3cgbWFya2VkIFtTQU1JXS4NCg0KRG8gd2Ugd2Fu dCB0byBzdXBwb3J0IHBhcnNpbmcgYSBub24tQUNQSSBzcGVjIGRlZmluZWQgQUNQSSB0YWJsZT8N CltTQU1JXSBUaGlzIGlzIGN1cnJlbnRseSBwb3NzaWJsZS4gT25lIG9ubHkgbmVlZHMgdG8gaW1w bGVtZW50IGEgcGFyc2VyIGZvciB0aGUgY3VzdG9tIEFDUEkgdGFibGUuDQoNCkFzIHN1Y2gsIGV4 cG9zaW5nIHRoZSBBUEkgdG8gbGV0IHRoZSB0YWJsZSBwcm9kdWNlciBkZWZpbmUgaXRzIG93biBw YXJzaW5nIGxvZ2ljLCBpbnN0ZWFkIG9mIGluIFNoZWxsUGtnLg0KW1NBTUldIFRoaXMgd291bGQg YmUgYSBwb3NzaWJsZSBjaGFuZ2Ugc2hvdWxkIHlvdSB3aXNoIHRvIGNvbnRyaWJ1dGUgYXMgYSBm b2xsb3ctb24uIEFsdGhvdWdoIHRoZSBjdXJyZW50IGNvZGUgbWF5IGJlIGNhcGFibGUgb2YgZXh0 ZW5zaW9uLCB3ZSB0aGluayB0aGUgY3VycmVudCB2ZXJzaW9uIGlzIHVzZWZ1bCBhcyBpcyBhbmQg c3VnZ2VzdHMgdGhhdCBzdWNoIGNoYW5nZXMgd291bGQgYmUgYmVzdCBtYWRlIG9uY2UgdGhlIHNv dXJjZSBpcyBhdmFpbGFibGUgaW4gZWRrMi4NCg0KUmVnYXJkcywNCg0KU2FtaSBNdWphd2FyDQoN Ci0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQpGcm9tOiBZYW8sIEppZXdlbiBbbWFpbHRvOmpp ZXdlbi55YW9AaW50ZWwuY29tXSANClNlbnQ6IDA3IE1hcmNoIDIwMTggMDQ6MjMgQU0NClRvOiBO aSwgUnVpeXUgPHJ1aXl1Lm5pQGludGVsLmNvbT47IFNhbWkgTXVqYXdhciA8U2FtaS5NdWphd2Fy QGFybS5jb20+OyBlZGsyLWRldmVsQGxpc3RzLjAxLm9yZw0KQ2M6IEV2YW4gTGxveWQgPEV2YW4u TGxveWRAYXJtLmNvbT47IGxlaWYubGluZGhvbG1AbGluYXJvLm9yZzsgTWF0dGVvIENhcmxpbmkg PE1hdHRlby5DYXJsaW5pQGFybS5jb20+OyBTdGVwaGFuaWUgSHVnaGVzLUZpdHQgPFN0ZXBoYW5p ZS5IdWdoZXMtRml0dEBhcm0uY29tPjsgbmQgPG5kQGFybS5jb20+OyBDYXJzZXksIEphYmVuIDxq YWJlbi5jYXJzZXlAaW50ZWwuY29tPg0KU3ViamVjdDogUkU6IFtQQVRDSCB2NF0gU2hlbGxQa2c6 IEFkZCBhY3BpdmlldyB0b29sIHRvIGR1bXAgQUNQSSB0YWJsZXMNCg0KRG8gd2Ugd2FudCB0byBz dXBwb3J0IHBhcnNpbmcgYSBub24tQUNQSSBzcGVjIGRlZmluZWQgQUNQSSB0YWJsZT8NCg0KQXMg c3VjaCwgZXhwb3NpbmcgdGhlIEFQSSB0byBsZXQgdGhlIHRhYmxlIHByb2R1Y2VyIGRlZmluZSBp dHMgb3duIHBhcnNpbmcgbG9naWMsIGluc3RlYWQgb2YgaW4gU2hlbGxQa2cuDQoNClRoYW5rIHlv dQ0KWWFvIEppZXdlbg0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IE5p LCBSdWl5dQ0KPiBTZW50OiBXZWRuZXNkYXksIE1hcmNoIDcsIDIwMTggMTE6MjQgQU0NCj4gVG86 IFNhbWkgTXVqYXdhciA8U2FtaS5NdWphd2FyQGFybS5jb20+OyBlZGsyLWRldmVsQGxpc3RzLjAx Lm9yZw0KPiBDYzogRXZhbiBMbG95ZCA8RXZhbi5MbG95ZEBhcm0uY29tPjsgbGVpZi5saW5kaG9s bUBsaW5hcm8ub3JnOyBNYXR0ZW8gQ2FybGluaQ0KPiA8TWF0dGVvLkNhcmxpbmlAYXJtLmNvbT47 IFN0ZXBoYW5pZSBIdWdoZXMtRml0dA0KPiA8U3RlcGhhbmllLkh1Z2hlcy1GaXR0QGFybS5jb20+ OyBuZCA8bmRAYXJtLmNvbT47IENhcnNleSwgSmFiZW4NCj4gPGphYmVuLmNhcnNleUBpbnRlbC5j b20+OyBZYW8sIEppZXdlbiA8amlld2VuLnlhb0BpbnRlbC5jb20+DQo+IFN1YmplY3Q6IFJlOiBb UEFUQ0ggdjRdIFNoZWxsUGtnOiBBZGQgYWNwaXZpZXcgdG9vbCB0byBkdW1wIEFDUEkgdGFibGVz DQo+IA0KPiBPbiAyLzI3LzIwMTggMzoxNiBBTSwgU2FtaSBNdWphd2FyIHdyb3RlOg0KPiA+IEhp IFJheSwNCj4gPg0KPiA+IFBsZWFzZSBzZWUgbXkgcmVzcG9uc2UgYmVsb3cgbWFya2VkIFtTQU1J XS4NCj4gPg0KPiA+Pj4gICAgU2hlbGxQa2cvSW5jbHVkZS9MaWJyYXJ5L0FjcGlWaWV3L0FjcGlQ YXJzZXIuaA0KPiB8IDQ0OSArKysrKysrKysrKysNCj4gPj4+ICAgIFNoZWxsUGtnL0luY2x1ZGUv TGlicmFyeS9BY3BpVmlldy9BY3BpVGFibGVQYXJzZXIuaA0KPiB8IDEyNiArKysrDQo+ID4NCj4g Pj4gU2FtaSwgc2hvdWxkIHRoZSBhYm92ZSB0d28gbmV3IGZpbGVzIGJlIHJlbW92ZWQ/DQo+ID4N Cj4gPiBbU0FNSV0gVGhlIGluZGl2aWR1YWwgdGFibGUgcGFyc2VycyBhcmUgaW1wbGVtZW50ZWQg YXMgTlVMTCBsaWJyYXJpZXMgdGhhdA0KPiByZWdpc3RlciB0aGUgcGFyc2VyIHdpdGggVWVmaVNo ZWxsQWNwaVZpZXdDb21tYW5kTGliLiBUaGVzZSBwYXJzZXIgbGlicmFyaWVzDQo+IGFyZSBwcmVz ZW50IGluIHN1YiBmb2xkZXJzIGUuZy4NCj4gU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3Bp Vmlld0NvbW1hbmRMaWIvUGFyc2Vycy9CZ3J0OyBhIGNoYW5nZSB0aGF0DQo+IHdhcyBpbnRyb2R1 Y2VkIGluIHRoZSB2MyBwYXRjaCBpbiByZXNwb25zZSB0byByZXZpZXcgY29tbWVudHMuIEZvciBi dWlsZGluZyB0aGUNCj4gcGFyc2VyIGxpYnJhcmllcywgSSBuZWVkIGEgbWVjaGFuaXNtIHRvIGdl dCB0aGUgaW5jbHVkZSBwYXRoIHRvIHRoZSBoZWFkZXIgZmlsZXMNCj4gYWJvdmUgKHdoaWNoIGV4 cG9zZSB0aGUgcGFyc2VyIHJlZ2lzdHJhdGlvbiBmdW5jdGlvbnMgYW5kIHRoZSBjb21tb24NCj4g ZnVuY3Rpb25hbGl0eSBpbXBsZW1lbnRlZCBpbiBVZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIp LiBUaGVyZWZvcmUsIEkgaGF2ZQ0KPiBrZXB0IHRoZW0gdW5kZXIgU2hlbGxQa2cvSW5jbHVkZS9M aWJyYXJ5L0FjcGlWaWV3Lg0KPiANCj4gSSBwcmVmZXIgdG8ga2VlcCB0aGUgd2hvbGUgcGFyc2Vy IGFzIGEgc3RhbmRhbG9uZSBsaWJyYXJ5LiBJIGxpa2UgdGhlDQo+IGlkZWEgdG8gaGF2ZSBhIHBh cnNlciByZWdpc3RyYXRpb24gbWVjaGFuaXNtLiBCdXQgSSBkb24ndCB0aGluayB3ZSBuZWVkDQo+ IHRvIGV4cG9zZSB0aGUgcmVnaXN0cmF0aW9uIEFQSSBvdXRzaWRlIG9mIHRoZSBVZWZpU2hlbGxB Y3BpVmlld0NvbW1hbmRMaWIuDQo+IFRoYXQncyB0byBzYXksIGFueW9uZSB3aG8gd2FudHMgdG8g YWRkIHBhcnNlciBmb3IgbmV3IHRhYmxlcyBjYW4gYWRkIGENCj4gbmV3IGZ1bmN0aW9uL2ZpbGUg aW5zaWRlIFVlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi4gSW4gb3JkZXIgZm9yIHRoZQ0KPiBt YWluIHBhcnNlciB0byBjYWxsIHRoZSBuZXcgc3ViLXBhcnNlciwgaGUgY2FuIGVpdGhlciBkaXJl Y3RseSBtb2RpZnkNCj4gdGhlIGZ1bmN0aW9uIHRhYmxlIHRvIGFkZCBhIG5ldyBlbnRyeSwgb3Ig Y2FsbCBhIGludGVybmFsIHJlZ2lzdHJhdGlvbg0KPiBmdW5jdGlvbiB3aGljaCBpbmRpcmVjdGx5 IG1vZGlmaWVzIHRoZSBmdW5jdGlvbiB0YWJsZS4NCj4gDQo+ID4NCj4gPj4gU2luY2UgcGVyIHlv dXIgY29tbWVudHMsIHRoZSBpbnRlcmZhY2VzIGFyZSBrZXB0IGluc2lkZQ0KPiBVZWZpU2hlbGxB Y3BpVmlld0NvbW1hbmRMaWIuDQo+ID4NCj4gPiBbU0FNSV0gSXQgbG9va3MgbGlrZSBJIGhhZCBu b3QgZnVsbHkgdW5kZXJzdG9vZCB5b3VyICMyIGNvbW1lbnQuIEkgaGFkIGEgaGVscGVyDQo+IGxp YnJhcnkgZm9yIGV4cG9zaW5nIHRoZSByZWdpc3RyYXRpb24gZnVuY3Rpb25zIGFuZCBjb21tb24g ZnVuY3Rpb25hbGl0eS4gSQ0KPiBtb3ZlZCB0aGlzIGZ1bmN0aW9uYWxpdHkgdG8ga2VlcCB0aGVz ZSBpbnRlcmZhY2VzIGluc2lkZQ0KPiBVZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIuDQo+ID4g SG93ZXZlciBhcyBleHBsYWluZWQgYWJvdmUgSSBoYXZlIHRoZSBjb21tb24gZnVuY3Rpb25hbGl0 eSBpbXBsZW1lbnRlZCBhcw0KPiBwYXJ0IG9mIHRoZSBVZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRM aWIgd2hpY2ggaXMgdXRpbGl6ZWQgYnkgaW5kaXZpZHVhbCBwYXJzZXJzLg0KPiA+DQo+ID4gQ29u c2lkZXJpbmcgdGhlIGFib3ZlIEkgaG9wZSB0aGUgcGF0Y2ggT0suIEFsdGVybmF0aXZlbHksIGlm IHlvdSBjYW4gYWR2aXNlIG1lDQo+IG9uIGEgYmV0dGVyIHdheSBvZiBhY2hpZXZpbmcgdGhpcywg SSB3aWxsIGJlIGhhcHB5IHRvIGluY29ycG9yYXRlIHRoZSBjaGFuZ2VzLg0KPiA+DQo+ID4gUmVn YXJkcywNCj4gPg0KPiA+IFNhbWkgTXVqYXdhcg0KPiA+DQo+ID4gLS0tLS1PcmlnaW5hbCBNZXNz YWdlLS0tLS0NCj4gPiBGcm9tOiBOaSwgUnVpeXUgW21haWx0bzpydWl5dS5uaUBJbnRlbC5jb21d DQo+ID4gU2VudDogMjQgRmVicnVhcnkgMjAxOCAwMjoxNSBBTQ0KPiA+IFRvOiBTYW1pIE11amF3 YXIgPFNhbWkuTXVqYXdhckBhcm0uY29tPjsgZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmcNCj4gPiBD YzogRXZhbiBMbG95ZCA8RXZhbi5MbG95ZEBhcm0uY29tPjsgbGVpZi5saW5kaG9sbUBsaW5hcm8u b3JnOyBNYXR0ZW8NCj4gQ2FybGluaSA8TWF0dGVvLkNhcmxpbmlAYXJtLmNvbT47IFN0ZXBoYW5p ZSBIdWdoZXMtRml0dA0KPiA8U3RlcGhhbmllLkh1Z2hlcy1GaXR0QGFybS5jb20+OyBuZCA8bmRA YXJtLmNvbT47DQo+IGphYmVuLmNhcnNleUBpbnRlbC5jb207IGppZXdlbi55YW9AaW50ZWwuY29t DQo+ID4gU3ViamVjdDogUmU6IFtQQVRDSCB2NF0gU2hlbGxQa2c6IEFkZCBhY3BpdmlldyB0b29s IHRvIGR1bXAgQUNQSSB0YWJsZXMNCj4gPg0KPiA+IE9uIDIvMjQvMjAxOCAxMjo0NCBBTSwgU2Ft aSBNdWphd2FyIHdyb3RlOg0KPiA+PiBUaGlzIHByb2dyYW0gaXMgcHJvdmlkZWQgdG8gYWxsb3cg ZXhhbWluYXRpb24gb2YgQUNQSSB0YWJsZSBjb250ZW50cw0KPiA+PiBmcm9tIHRoZSBVRUZJIFNo ZWxsLiAgVGhpcyBjYW4gaGVscCB3aXRoIGludmVzdGlnYXRpb25zLCBlc3BlY2lhbGx5IGF0DQo+ ID4+IHRoYXQgc3RhZ2Ugd2hlcmUgdGhlIHRhYmxlcyBhcmUgbm90IGVuYWJsaW5nIGFuIE9TIHRv IGJvb3QuDQo+ID4+IFRoZSBwcm9ncmFtIGlzIG5vdCBleGhhdXN0aXZlLCBhbmQgb25seSBlbmNh cHN1bGF0ZXMgZGV0YWlsZWQga25vd2xlZGdlDQo+ID4+IG9mIGEgbGltaXRlZCBudW1iZXIgb2Yg dGFibGUgdHlwZXMuDQo+ID4+DQo+ID4+IERlZmF1bHQgYmVoYXZpb3VyIGlzIHRvIGRpc3BsYXkg dGhlIGNvbnRlbnQgb2YgYWxsIHRhYmxlcyBpbnN0YWxsZWQuDQo+ID4+ICdLbm93bicgdGFibGUg dHlwZXMgd2lsbCBiZSBwYXJzZWQgYW5kIGRpc3BsYXllZCB3aXRoIGRlc2NyaXB0aW9ucyBhbmQN Cj4gPj4gZmllbGQgdmFsdWVzLiAgV2hlcmUgYXBwcm9wcmlhdGUgYSBkZWdyZWUgb2YgY29uc2lz dGVuY3kgY2hlY2tpbmcgaXMNCj4gPj4gZG9uZSBhbmQgZXJyb3JzIG1heSBiZSByZXBvcnRlZCBp biB0aGUgb3V0cHV0Lg0KPiA+PiBPdGhlciB0YWJsZSB0eXBlcyB3aWxsIGJlIGRpc3BsYXllZCBh cyBhbiBhcnJheSBvZiBIZXhhZGVjaW1hbCBieXRlcy4NCj4gPj4NCj4gPj4gVG8gZmFjaWxpdGF0 ZSBkZWJ1Z2dpbmcsIHRoZSAtcyBhbmQgLWQgb3B0aW9ucyBjYW4gYmUgdXNlZCB0byBnZW5lcmF0 ZSBhDQo+ID4+IGJpbmFyeSBmaWxlIGltYWdlIG9mIGEgdGFibGUgdGhhdCBjYW4gYmUgY29waWVk IGVsc2V3aGVyZSBmb3INCj4gPj4gaW52ZXN0aWdhdGlvbiB1c2luZyB0b29scyBzdWNoIGFzIHRo b3NlIHByb3ZpZGVkIGJ5IGFjcGljYS5vcmcuICBUaGlzIGlzDQo+ID4+IGVzcGVjaWFsbHkgcmVs ZXZhbnQgZm9yIEFNTCB0eXBlIHRhYmxlcyBsaWtlIERTRFQgYW5kIFNTRFQuDQo+ID4+DQo+ID4+ IFRoZSBpbnNwaXJhdGlvbiBmb3IgdGhpcyBpcyB0aGUgZXhpc3Rpbmcgc21iaW9zdmlldyBEZWJ1 ZzEgU2hlbGwNCj4gPj4gY29tbWFuZC4NCj4gPj4NCj4gPj4gTWFueSB0YWJsZXMgYXJlIG5vdCBl eHBsaWNpdGx5IGhhbmRsZWQsIGluIHBhcnQgYmVjYXVzZSBubyBleGFtcGxlcyBhcmUNCj4gPj4g YXZhaWxhYmxlIGZvciBvdXIgdGVzdGluZy4NCj4gPj4NCj4gPj4gVGhlIHByb2dyYW0gaXMgZGVz aWduZWQgdG8gYmUgZXh0ZW5kZWQgdG8gbmV3IHRhYmxlcyB3aXRoIG1pbmltYWwNCj4gPj4gZWZm b3J0LCBhbmQgY29udHJpYnV0aW9ucyBhcmUgaW52aXRlZC4NCj4gPj4NCj4gPj4gQ29udHJpYnV0 ZWQtdW5kZXI6IFRpYW5vQ29yZSBDb250cmlidXRpb24gQWdyZWVtZW50IDEuMQ0KPiA+PiBTaWdu ZWQtb2ZmLWJ5OiBTYW1pIE11amF3YXIgPHNhbWkubXVqYXdhckBhcm0uY29tPg0KPiA+PiBTaWdu ZWQtb2ZmLWJ5OiBFdmFuIExsb3lkIDxldmFuLmxsb3lkQGFybS5jb20+DQo+ID4+IFJldmlld2Vk LWJ5OiBKYWJlbiBDYXJzZXkgPGphYmVuLmNhcnNleUBpbnRlbC5jb20+DQo+ID4+IC0tLQ0KPiA+ Pg0KPiA+PiBUaGUgdXBkYXRlZCBjaGFuZ2VzIGNhbiBiZSB2aWV3ZWQgYXQ6DQo+ID4+IAlodHRw czovL2dpdGh1Yi5jb20vc2FtaW11amF3YXIvZWRrMi90cmVlLzE4OF9hY3Bpdmlld192NA0KPiA+ Pg0KPiA+PiBOb3RlczoNCj4gPj4gICAgICAgdjQ6DQo+ID4+ICAgICAgIC0gRmlyc3RseSwgcHVi bGljIGxpYnJhcnkgQVBJcyBzaG91bGQgaGF2ZSAiRUZJQVBJIiBkZWNvcmF0b3IuDQo+IFtSQVld DQo+ID4+ICAgICAgIC0gUmVzdWJtaXR0aW5nIHVwZGF0ZWQgcGF0Y2ggd2l0aCAiRUZJQVBJIiBk ZWNvcmF0b3IuDQo+IFtTQU1JXQ0KPiA+Pg0KPiA+PiAgICAgICAtIFNlY29uZGx5LCBJIGFtIHdv bmRlcmluZyBpZiBpdCdzIHBvc3NpYmxlIHRvIG5vdCBleHBvc2UgYW55DQo+ID4+ICAgICAgICAg bGlicmFyeSBjbGFzc2VzIGZvciBoYW5kbGluZyBvZiBtb3JlIEFDUEkgdGFibGVzLg0KPiA+PiAg ICAgICAgIEkgYWdyZWUgdG8gaW1wbGVtZW50IFVlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYiBp biBhIHdheSBmb3INCj4gZWFzeQ0KPiA+PiAgICAgICAgIGV4dGVuc2lvbiBmb3IgaGFuZGxpbmcg b2YgbW9yZSBBQ1BJIHRhYmxlcywgYnV0IEkgcHJlZmVyIHRvIGtlZXAgdGhlDQo+ID4+ICAgICAg ICAgaW50ZXJmYWNlcyBpbnRlcm5hbGx5IGluc2lkZSB0aGUgVWVmaVNoZWxsQWNwaVZpZXdDb21t YW5kTGliLg0KPiBbUkFZXQ0KPiA+PiAgICAgICAtIFVwZGF0ZWQgYXMgc3VnZ2VzdGVkLg0KPiBb U0FNSV0NCj4gPj4NCj4gPj4gICAgICAgdjM6DQo+ID4+ICAgICAgIC0gQ2FuIHRoZSBpbmRpdmlk dWFsICJjaGlsZCIgbGlicmFyaWVzIGJlIHBsYWNlZCBpbnRvDQo+ID4+ICAgICAgICAgc3ViZGly ZWN0b3JpZXMgdW5kZXIgVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliIGRpcmVjdG9yeQ0KPiA+ PiAgICAgICAgIGZvciBjbGVhciBzZXBhcmF0aW9uPw0KPiBbSkFCRU5dDQo+ID4+ICAgICAgIC0g UGF0Y2ggdXBkYXRlZCB0byBtb3ZlIGluZGl2aWR1YWwgImNoaWxkIiBsaWJyYXJpZXMgaW50bw0K PiA+PiAgICAgICAgIHN1YmRpcmVjdG9yaWVzLg0KPiBbU0FNSV0NCj4gPj4NCj4gPj4gICAgICAg LSBJbiBVZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIsYyB3aGF0J3MgdGhlIG1vdGl2YXRpb24g Zm9yIGFsbA0KPiA+PiAgICAgICAgIHRoZSB3cmFwcGVycyBhcm91bmQgcHJpbnQ/IEkgc2VlIHRo YXQgc29tZSBhcmUgZm9yIG1lbW9yeSBhY2Nlc3MNCj4gPj4gICAgICAgICByZXN0cmljdGlvbnMs IGJ1dCB0aGUgcmVzdD8gIFByaW50R3VpZCwgbG9va3MgdGhlIHNhbWUgYXMgdXNpbmcNCj4gPj4g ICAgICAgICAlZyB3aXRoIFByaW50KCkuLi4NCj4gW0pBQkVOXQ0KPiA+PiAgICAgICAtIFRoZSBw cmludCB3cmFwcGVycyBlbmFibGUgYSBjb21tb24gc3R5bGVkIGZvcm1hdHRlZCBwcmludGluZyBm b3INCj4gPj4gICAgICAgICB0aGUgQUNQSSBmaWVsZHMuIFRoZSBBQ1BJdmlldyB0YWJsZSBwYXJz aW5nIGZyYW1ld29yayB1dGlsaXplcyBhDQo+ID4+ICAgICAgICAgdGFibGUtZHJpdmVuIGFwcHJv YWNoIGZvciBwYXJzaW5nIHRoZSB0YWJsZXMgYW5kIHRoZXNlIGZ1bmN0aW9ucw0KPiA+PiAgICAg ICAgIGFyZSBpbnZva2VkIGJ5IHRoZSBmcmFtZXdvcmsgYmFzZWQgb24gdGhlIGZpZWxkIHNpemUg YW5kIHR5cGUuDQo+ID4+ICAgICAgICAgSG93ZXZlciB5b3UgYXJlIHJpZ2h0LCBpdCBpcyBzdXBl cmZsdW91cyBpbiB0aGUgY2FzZSBvZiBQcmludEd1aWQNCj4gPj4gICAgICAgICAoV2hpY2ggaGFz IG5vdyBiZWVuIHJlbW92ZWQgaW4gdGhlIHVwZGF0ZWQgcGF0Y2gpLg0KPiBbU0FNSV0NCj4gPj4N Cj4gPj4gICAgICAgLSBEbyB3ZSB3YW50IHRvIGNoYW5nZSB0aGUgbWFpbiBlbnRyeXBvaW50IHRv IGEgRHluYW1pY0NvbW1hbmQNCj4gPj4gICAgICAgICBzaW5jZSB0aGlzIGNvbW1hbmQgaXMgbm90 IGluIHRoZSBzaGVsbCBzcGVjPyBJZiB5ZXMsIGRvIHdlIHdhbnQNCj4gPj4gICAgICAgICB0byBk byB0aGF0IGZpcnN0IG9yIGFmdGVyPw0KPiBbSkFCRU5dDQo+ID4+ICAgICAgIC0gVGhlIEVDUiAx Nzg0IGZvciBBQ1BJdmlldyBhcHBlYXJzIHRvIGJlICdBcHByb3ZlZCBhcyBuZXcgY29udGVudA0K PiA+PiAgICAgICAgIGZvciB0aGUgU2hlbGwgU3BlYy4nIGluIE1hbnRpcywNCj4gPj4gICAgICAg ICBzZWUgaHR0cHM6Ly9tYW50aXMudWVmaS5vcmcvbWFudGlzL3ZpZXcucGhwP2lkPTE3ODQuDQo+ ID4+ICAgICAgICAgQXMgSSB1bmRlcnN0YW5kIGl0LCB0aGUgRUNSIGNoYW5nZSBuZWVkcyB0byBi ZSBwcm9wYWdhdGVkIHRvIHRoZQ0KPiA+PiAgICAgICAgIFNoZWxsIHNwZWNpZmljYXRpb24gYW5k IGlzIHBlbmRpbmcuIEluIGxpZ2h0IG9mIHRoZSBhYm92ZSwgSSB0aGluaw0KPiA+PiAgICAgICAg IHRoYXQgYWRkaW5nIER5bmFtaWNDb21tYW5kIHN1cHBvcnQgaXMgbm90IG5lY2Vzc2FyeS4gUGxl YXNlIGxldA0KPiBtZQ0KPiA+PiAgICAgICAgIGtub3cgaWYgeW91IGZlZWwgb3RoZXJ3aXNlLg0K PiBbU0FNSV0NCj4gPj4NCj4gPj4gICAgU2hlbGxQa2cvSW5jbHVkZS9MaWJyYXJ5L0FjcGlWaWV3 L0FjcGlQYXJzZXIuaA0KPiB8IDQ0OSArKysrKysrKysrKysNCj4gPj4gICAgU2hlbGxQa2cvSW5j bHVkZS9MaWJyYXJ5L0FjcGlWaWV3L0FjcGlUYWJsZVBhcnNlci5oDQo+IHwgMTI2ICsrKysNCj4g Pg0KPiA+IFNhbWksIHNob3VsZCB0aGUgYWJvdmUgdHdvIG5ldyBmaWxlcyBiZSByZW1vdmVkPw0K PiA+IFNpbmNlIHBlciB5b3VyIGNvbW1lbnRzLCB0aGUgaW50ZXJmYWNlcyBhcmUga2VwdCBpbnNp ZGUNCj4gPiBVZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIuDQo+ID4NCj4gPj4gICAgU2hlbGxQ a2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvQWNwaVBhcnNlci5jDQo+IHwg NjYyICsrKysrKysrKysrKysrKysrDQo+ID4+ICAgIFNoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxs QWNwaVZpZXdDb21tYW5kTGliL0FjcGlUYWJsZVBhcnNlci5jDQo+IHwgMjE1ICsrKysrKw0KPiA+ PiAgICBTaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9BY3BpVmll dy5jDQo+IHwgNjAxICsrKysrKysrKysrKysrKysNCj4gPj4gICAgU2hlbGxQa2cvTGlicmFyeS9V ZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvQWNwaVZpZXcuaA0KPiB8IDEwMyArKysNCj4gPj4N Cj4gU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9C Z3J0L0JncnRQYXJzZXIuYw0KPiB8IDExNyArKysNCj4gPj4NCj4gU2hlbGxQa2cvTGlicmFyeS9V ZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9CZ3J0L0JncnRQYXJzZXJMaWIuaW5m DQo+IHwgIDMzICsNCj4gPj4NCj4gU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0Nv bW1hbmRMaWIvUGFyc2Vycy9EYmcyL0RiZzJQYXJzZXIuYw0KPiB8IDI4NyArKysrKysrKw0KPiA+ Pg0KPiBTaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJz L0RiZzIvRGJnMlBhcnNlckxpYi5pDQo+IG5mICB8ICAzMyArDQo+ID4+DQo+IFNoZWxsUGtnL0xp YnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvRHNkdC9Ec2R0UGFyc2Vy LmMNCj4gfCAgOTIgKysrDQo+ID4+DQo+IFNoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZp ZXdDb21tYW5kTGliL1BhcnNlcnMvRHNkdC9Ec2R0UGFyc2VyTGliLmluZg0KPiB8ICAzMyArDQo+ ID4+DQo+IFNoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNl cnMvRmFkdC9GYWR0UGFyc2VyLmMNCj4gfCAzMDkgKysrKysrKysNCj4gPj4NCj4gU2hlbGxQa2cv TGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9GYWR0L0ZhZHRQYXJz ZXJMaWIuaW5mDQo+IHwgIDMzICsNCj4gPj4NCj4gU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxB Y3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9HdGR0L0d0ZHRQYXJzZXIuYw0KPiB8IDMzOCArKysr KysrKysNCj4gPj4NCj4gU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRM aWIvUGFyc2Vycy9HdGR0L0d0ZHRQYXJzZXJMaWIuaW5mDQo+IHwgIDMzICsNCj4gPj4NCj4gU2hl bGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9Jb3J0L0lv cnRQYXJzZXIuYw0KPiB8IDc0NSArKysrKysrKysrKysrKysrKysrKw0KPiA+Pg0KPiBTaGVsbFBr Zy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL0lvcnQvSW9ydFBh cnNlckxpYi5pbmYNCj4gfCAgMzMgKw0KPiA+Pg0KPiBTaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVs bEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL01hZHQvTWFkdFBhcnNlci5jDQo+IHwgMzU4ICsr KysrKysrKysNCj4gPj4NCj4gU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1h bmRMaWIvUGFyc2Vycy9NYWR0L01hZHRQYXJzZXJMaWIuaQ0KPiBuZiAgfCAgMzMgKw0KPiA+Pg0K PiBTaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL01j ZmcvTWNmZ1BhcnNlci5jDQo+IHwgMTM5ICsrKysNCj4gPj4NCj4gU2hlbGxQa2cvTGlicmFyeS9V ZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9NY2ZnL01jZmdQYXJzZXJMaWIuaW4N Cj4gZiAgfCAgMzMgKw0KPiA+Pg0KPiBTaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3 Q29tbWFuZExpYi9QYXJzZXJzL1JzZHAvUnNkcFBhcnNlci5jDQo+IHwgMjE0ICsrKysrKw0KPiA+ Pg0KPiBTaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJz L1JzZHAvUnNkcFBhcnNlckxpYi5pbg0KPiBmICB8ICAzMyArDQo+ID4+ICAgIFNoZWxsUGtnL0xp YnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvU2xpdC9TbGl0UGFyc2Vy LmMNCj4gfCAxODcgKysrKysNCj4gPj4NCj4gU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3Bp Vmlld0NvbW1hbmRMaWIvUGFyc2Vycy9TbGl0L1NsaXRQYXJzZXJMaWIuaW5mDQo+IHwgIDMzICsN Cj4gPj4NCj4gU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFy c2Vycy9TcGNyL1NwY3JQYXJzZXIuYw0KPiB8IDIxMyArKysrKysNCj4gPj4NCj4gU2hlbGxQa2cv TGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9TcGNyL1NwY3JQYXJz ZXJMaWIuaW5mDQo+IHwgIDMzICsNCj4gPj4NCj4gU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxB Y3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9TcmF0L1NyYXRQYXJzZXIuYw0KPiB8IDM3NSArKysr KysrKysrDQo+ID4+DQo+IFNoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5k TGliL1BhcnNlcnMvU3JhdC9TcmF0UGFyc2VyTGliLmluZg0KPiB8ICAzMyArDQo+ID4+DQo+IFNo ZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvU3NkdC9T c2R0UGFyc2VyLmMNCj4gfCAgOTIgKysrDQo+ID4+DQo+IFNoZWxsUGtnL0xpYnJhcnkvVWVmaVNo ZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvU3NkdC9Tc2R0UGFyc2VyTGliLmluZg0KPiB8 ICAzMyArDQo+ID4+DQo+IFNoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5k TGliL1BhcnNlcnMvWHNkdC9Yc2R0UGFyc2VyLmMNCj4gfCAxOTggKysrKysrDQo+ID4+DQo+IFNo ZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvWHNkdC9Y c2R0UGFyc2VyTGliLmluZg0KPiB8ICAzMyArDQo+ID4+DQo+IFNoZWxsUGtnL0xpYnJhcnkvVWVm aVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpDQo+IGIu YyAgIHwgMTA2ICsrKw0KPiA+Pg0KPiBTaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3 Q29tbWFuZExpYi9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaQ0KPiBiLmggICB8ICAzMiArDQo+ ID4+DQo+IFNoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1VlZmlT aGVsbEFjcGlWaWV3Q29tbWFuZExpDQo+IGIuaW5mIHwgIDYwICsrDQo+ID4+DQo+IFNoZWxsUGtn L0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1VlZmlTaGVsbEFjcGlWaWV3Q29t bWFuZExpDQo+IGIudW5pIHwgMTI3ICsrKysNCj4gPj4gICAgU2hlbGxQa2cvU2hlbGxQa2cuZGVj DQo+IHwgICAzICstDQo+ID4+ICAgIDM5IGZpbGVzIGNoYW5nZWQsIDY2MDkgaW5zZXJ0aW9ucygr KSwgMSBkZWxldGlvbigtKQ0KPiA+Pg0KPiA+PiBkaWZmIC0tZ2l0IGEvU2hlbGxQa2cvSW5jbHVk ZS9MaWJyYXJ5L0FjcGlWaWV3L0FjcGlQYXJzZXIuaA0KPiBiL1NoZWxsUGtnL0luY2x1ZGUvTGli cmFyeS9BY3BpVmlldy9BY3BpUGFyc2VyLmgNCj4gPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4g Pj4gaW5kZXgNCj4gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTRk NzVlZWI5MjgyYTc2NDkyNDMzDQo+IGU0NjBhMTgwZGNjNGNkMTRjNGUNCj4gPj4gLS0tIC9kZXYv bnVsbA0KPiA+PiArKysgYi9TaGVsbFBrZy9JbmNsdWRlL0xpYnJhcnkvQWNwaVZpZXcvQWNwaVBh cnNlci5oDQo+ID4+IEBAIC0wLDAgKzEsNDQ5IEBADQo+ID4+ICsvKioNCj4gPj4gKyAgSGVhZGVy IGZpbGUgZm9yIEFDUEkgcGFyc2VyDQo+ID4+ICsNCj4gPj4gKyAgQ29weXJpZ2h0IChjKSAyMDE2 IC0gMjAxOCwgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ID4+ICsgIFRoaXMg cHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCj4gPj4gKyAgYXJlIGxpY2Vu c2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2Yg dGhlDQo+IEJTRCBMaWNlbnNlDQo+ID4+ICsgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJp YnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUNCj4gZm91bmQgYXQN Cj4gPj4gKyAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0K PiA+PiArDQo+ID4+ICsgIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0Qg TElDRU5TRSBPTiBBTiAiQVMgSVMiDQo+IEJBU0lTLA0KPiA+PiArICBXSVRIT1VUIFdBUlJBTlRJ RVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVINCj4gRVhQUkVTUyBPUiBJ TVBMSUVELg0KPiA+PiArKiovDQo+ID4+ICsNCj4gPj4gKyNpZm5kZWYgQUNQSVBBUlNFUl9IXw0K PiA+PiArI2RlZmluZSBBQ1BJUEFSU0VSX0hfDQo+ID4+ICsNCj4gPj4gKyNkZWZpbmUgT1VUUFVU X0ZJRUxEX0NPTFVNTl9XSURUSCAgMzYNCj4gPj4gKw0KPiA+PiArLy8vIFRoZSBSU0RQIHRhYmxl IHNpZ25hdHVyZSBpcyAiUlNEIFBUUiAiICg4IGJ5dGVzKQ0KPiA+PiArLy8vIEhvd2V2ZXIgVGhl IHNpZ25hdHVyZSBmb3IgQUNQSSB0YWJsZXMgaXMgNCBieXRlcy4NCj4gPj4gKy8vLyBUbyB3b3Jr IGFyb3VuZCB0aGlzIG9kZGl0eSBkZWZpbmUgYSBzaWduYXR1cmUgdHlwZQ0KPiA+PiArLy8vIHRo YXQgYWxsb3dzIHVzIHRvIHByb2Nlc3MgdGhlIGxvZyBvcHRpb25zLg0KPiA+PiArI2RlZmluZSBS U0RQX1RBQkxFX0lORk8gIFNJR05BVFVSRV8zMignUicsICdTJywgJ0QnLCAnUCcpDQo+ID4+ICsN Cj4gPj4gKy8qKiBUaGlzIGZ1bmN0aW9uIGluY3JlbWVudHMgdGhlIEFDUEkgdGFibGUgZXJyb3Ig Y291bnRlci4NCj4gPj4gKyovDQo+ID4+ICtWT0lEDQo+ID4+ICtFRklBUEkNCj4gPj4gK0luY3Jl bWVudEVycm9yQ291bnQgKA0KPiA+PiArICBWT0lEDQo+ID4+ICsgICk7DQo+ID4+ICsNCj4gPj4g Ky8qKiBUaGlzIGZ1bmN0aW9uIGluY3JlbWVudHMgdGhlIEFDUEkgdGFibGUgd2FybmluZyBjb3Vu dGVyLg0KPiA+PiArKi8NCj4gPj4gK1ZPSUQNCj4gPj4gK0VGSUFQSQ0KPiA+PiArSW5jcmVtZW50 V2FybmluZ0NvdW50ICgNCj4gPj4gKyAgVk9JRA0KPiA+PiArICApOw0KPiA+PiArDQo+ID4+ICsv KiogVGhpcyBmdW5jdGlvbiB2ZXJpZmllcyB0aGUgQUNQSSB0YWJsZSBjaGVja3N1bS4NCj4gPj4g Kw0KPiA+PiArICBUaGlzIGZ1bmN0aW9uIHZlcmlmaWVzIHRoZSBjaGVja3N1bSBmb3IgdGhlIEFD UEkgdGFibGUgYW5kIG9wdGlvbmFsbHkNCj4gPj4gKyAgcHJpbnRzIHRoZSBzdGF0dXMuDQo+ID4+ ICsNCj4gPj4gKyAgQHBhcmFtIFtpbl0gTG9nICAgICBJZiBUUlVFIGxvZyB0aGUgc3RhdHVzIG9m IHRoZSBjaGVja3N1bS4NCj4gPj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRo ZSBzdGFydCBvZiB0aGUgdGFibGUgYnVmZmVyLg0KPiA+PiArICBAcGFyYW0gW2luXSBMZW5ndGgg IFRoZSBsZW5ndGggb2YgdGhlIGJ1ZmZlci4NCj4gPj4gKw0KPiA+PiArICBAcmV0dmFsIFRSVUUg ICAgICAgICBUaGUgY2hlY2tzdW0gaXMgT0suDQo+ID4+ICsgIEByZXR2YWwgRkFMU0UgICAgICAg IFRoZSBjaGVja3N1bSBmYWlsZWQuDQo+ID4+ICsqLw0KPiA+PiArQk9PTEVBTg0KPiA+PiArRUZJ QVBJDQo+ID4+ICtWZXJpZnlDaGVja3N1bSAoDQo+ID4+ICsgIElOIEJPT0xFQU4gTG9nLA0KPiA+ PiArICBJTiBVSU5UOCogIFB0ciwNCj4gPj4gKyAgSU4gVUlOVDMyICBMZW5ndGgNCj4gPj4gKyAg KTsNCj4gPj4gKw0KPiA+PiArLyoqIFRoaXMgZnVuY3Rpb24gcGVyZm9ybXMgYSByYXcgZGF0YSBk dW1wIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiA+PiArDQo+ID4+ICsgIEBwYXJhbSBbaW5dIFB0ciAg ICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIHRhYmxlIGJ1ZmZlci4NCj4gPj4gKyAgQHBh cmFtIFtpbl0gTGVuZ3RoICBUaGUgbGVuZ3RoIG9mIHRoZSBidWZmZXIuDQo+ID4+ICsqLw0KPiA+ PiArVk9JRA0KPiA+PiArRUZJQVBJDQo+ID4+ICtEdW1wUmF3ICgNCj4gPj4gKyAgSU4gVUlOVDgq IFB0ciwNCj4gPj4gKyAgSU4gVUlOVDMyIExlbmd0aA0KPiA+PiArICApOw0KPiA+PiArDQo+ID4+ ICsvKiogVGhpcyBmdW5jdGlvbiB0cmFjZXMgMSBieXRlIG9mIGRhdHVtIGFzIHNwZWNpZmllZCBp biB0aGUNCj4gPj4gKyAgICBmb3JtYXQgc3RyaW5nLg0KPiA+PiArDQo+ID4+ICsgIEBwYXJhbSBb aW5dIEZvcm1hdCAgVGhlIGZvcm1hdCBzdHJpbmcgZm9yIHRyYWNpbmcgdGhlIGRhdGEuDQo+ID4+ ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZl ci4NCj4gPj4gKyovDQo+ID4+ICtWT0lEDQo+ID4+ICtFRklBUEkNCj4gPj4gK0R1bXBVaW50OCAo DQo+ID4+ICsgIElOIENPTlNUIENIQVIxNiogRm9ybWF0LA0KPiA+PiArICBJTiBVSU5UOCogICAg ICAgIFB0cg0KPiA+PiArICApOw0KPiA+PiArDQo+ID4+ICsvKiogVGhpcyBmdW5jdGlvbiB0cmFj ZXMgMiBieXRlcyBvZiBkYXRhIGFzIHNwZWNpZmllZCBpbiB0aGUNCj4gPj4gKyAgICBmb3JtYXQg c3RyaW5nLg0KPiA+PiArDQo+ID4+ICsgIEBwYXJhbSBbaW5dIEZvcm1hdCAgVGhlIGZvcm1hdCBz dHJpbmcgZm9yIHRyYWNpbmcgdGhlIGRhdGEuDQo+ID4+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAg UG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gPj4gKyovDQo+ID4+ICtWT0lE DQo+ID4+ICtFRklBUEkNCj4gPj4gK0R1bXBVaW50MTYgKA0KPiA+PiArICBJTiBDT05TVCBDSEFS MTYqIEZvcm1hdCwNCj4gPj4gKyAgSU4gVUlOVDgqICAgICAgICBQdHINCj4gPj4gKyAgKTsNCj4g Pj4gKw0KPiA+PiArLyoqIFRoaXMgZnVuY3Rpb24gdHJhY2VzIDQgYnl0ZXMgb2YgZGF0YSBhcyBz cGVjaWZpZWQgaW4gdGhlDQo+ID4+ICsgICAgZm9ybWF0IHN0cmluZy4NCj4gPj4gKw0KPiA+PiAr ICBAcGFyYW0gW2luXSBGb3JtYXQgIFRoZSBmb3JtYXQgc3RyaW5nIGZvciB0cmFjaW5nIHRoZSBk YXRhLg0KPiA+PiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9m IHRoZSBidWZmZXIuDQo+ID4+ICsqLw0KPiA+PiArVk9JRA0KPiA+PiArRUZJQVBJDQo+ID4+ICtE dW1wVWludDMyICgNCj4gPj4gKyAgSU4gQ09OU1QgQ0hBUjE2KiBGb3JtYXQsDQo+ID4+ICsgIElO IFVJTlQ4KiAgICAgICAgUHRyDQo+ID4+ICsgICk7DQo+ID4+ICsNCj4gPj4gKy8qKiBUaGlzIGZ1 bmN0aW9uIHRyYWNlcyA4IGJ5dGVzIG9mIGRhdGEgYXMgc3BlY2lmaWVkIGJ5IHRoZQ0KPiA+PiAr ICAgIGZvcm1hdCBzdHJpbmcuDQo+ID4+ICsNCj4gPj4gKyAgQHBhcmFtIFtpbl0gRm9ybWF0ICBU aGUgZm9ybWF0IHN0cmluZyBmb3IgdHJhY2luZyB0aGUgZGF0YS4NCj4gPj4gKyAgQHBhcmFtIFtp bl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiA+PiArKi8N Cj4gPj4gK1ZPSUQNCj4gPj4gK0VGSUFQSQ0KPiA+PiArRHVtcFVpbnQ2NCAoDQo+ID4+ICsgIElO IENPTlNUIENIQVIxNiogRm9ybWF0LA0KPiA+PiArICBJTiBVSU5UOCogICAgICAgIFB0cg0KPiA+ PiArICApOw0KPiA+PiArDQo+ID4+ICsvKiogVGhpcyBmdW5jdGlvbiB0cmFjZXMgMyBjaGFyYWN0 ZXJzIHdoaWNoIGNhbiBiZSBvcHRpb25hbGx5DQo+ID4+ICsgICBmb3JtYXRlZCB1c2luZyB0aGUg Zm9ybWF0IHN0cmluZyBpZiBzcGVjaWZpZWQuDQo+ID4+ICsNCj4gPj4gKyAgSWYgbm8gZm9ybWF0 IHN0cmluZyBpcyBzcGVjaWZpZWQgdGhlIEZvcm1hdCBtdXN0IGJlIE5VTEwuDQo+ID4+ICsNCj4g Pj4gKyAgQHBhcmFtIFtpbl0gRm9ybWF0ICBPcHRpb25hbCBmb3JtYXQgc3RyaW5nIGZvciB0cmFj aW5nIHRoZSBkYXRhLg0KPiA+PiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhl IHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ID4+ICsqLw0KPiA+PiArVk9JRA0KPiA+PiArRUZJQVBJ DQo+ID4+ICtEdW1wM0NoYXJzICgNCj4gPj4gKyAgSU4gQ09OU1QgQ0hBUjE2KiBGb3JtYXQgT1BU SU9OQUwsDQo+ID4+ICsgIElOIFVJTlQ4KiAgICAgICAgUHRyDQo+ID4+ICsgICk7DQo+ID4+ICsN Cj4gPj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHRyYWNlcyA0IGNoYXJhY3RlcnMgd2hpY2ggY2FuIGJl IG9wdGlvbmFsbHkNCj4gPj4gKyAgIGZvcm1hdGVkIHVzaW5nIHRoZSBmb3JtYXQgc3RyaW5nIGlm IHNwZWNpZmllZC4NCj4gPj4gKw0KPiA+PiArICBJZiBubyBmb3JtYXQgc3RyaW5nIGlzIHNwZWNp ZmllZCB0aGUgRm9ybWF0IG11c3QgYmUgTlVMTC4NCj4gPj4gKw0KPiA+PiArICBAcGFyYW0gW2lu XSBGb3JtYXQgIE9wdGlvbmFsIGZvcm1hdCBzdHJpbmcgZm9yIHRyYWNpbmcgdGhlIGRhdGEuDQo+ ID4+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1 ZmZlci4NCj4gPj4gKyovDQo+ID4+ICtWT0lEDQo+ID4+ICtFRklBUEkNCj4gPj4gK0R1bXA0Q2hh cnMgKA0KPiA+PiArICBJTiBDT05TVCBDSEFSMTYqIEZvcm1hdCBPUFRJT05BTCwNCj4gPj4gKyAg SU4gVUlOVDgqICAgICAgICBQdHINCj4gPj4gKyAgKTsNCj4gPj4gKw0KPiA+PiArLyoqIFRoaXMg ZnVuY3Rpb24gdHJhY2VzIDYgY2hhcmFjdGVycyB3aGljaCBjYW4gYmUgb3B0aW9uYWxseQ0KPiA+ PiArICAgZm9ybWF0ZWQgdXNpbmcgdGhlIGZvcm1hdCBzdHJpbmcgaWYgc3BlY2lmaWVkLg0KPiA+ PiArDQo+ID4+ICsgIElmIG5vIGZvcm1hdCBzdHJpbmcgaXMgc3BlY2lmaWVkIHRoZSBGb3JtYXQg bXVzdCBiZSBOVUxMLg0KPiA+PiArDQo+ID4+ICsgIEBwYXJhbSBbaW5dIEZvcm1hdCAgT3B0aW9u YWwgZm9ybWF0IHN0cmluZyBmb3IgdHJhY2luZyB0aGUgZGF0YS4NCj4gPj4gKyAgQHBhcmFtIFtp bl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiA+PiArKi8N Cj4gPj4gK1ZPSUQNCj4gPj4gK0VGSUFQSQ0KPiA+PiArRHVtcDZDaGFycyAoDQo+ID4+ICsgIElO IENPTlNUIENIQVIxNiogRm9ybWF0IE9QVElPTkFMLA0KPiA+PiArICBJTiBVSU5UOCogICAgICAg IFB0cg0KPiA+PiArICApOw0KPiA+PiArDQo+ID4+ICsvKiogVGhpcyBmdW5jdGlvbiB0cmFjZXMg OCBjaGFyYWN0ZXJzIHdoaWNoIGNhbiBiZSBvcHRpb25hbGx5DQo+ID4+ICsgICBmb3JtYXRlZCB1 c2luZyB0aGUgZm9ybWF0IHN0cmluZyBpZiBzcGVjaWZpZWQuDQo+ID4+ICsNCj4gPj4gKyAgSWYg bm8gZm9ybWF0IHN0cmluZyBpcyBzcGVjaWZpZWQgdGhlIEZvcm1hdCBtdXN0IGJlIE5VTEwuDQo+ ID4+ICsNCj4gPj4gKyAgQHBhcmFtIFtpbl0gRm9ybWF0ICBPcHRpb25hbCBmb3JtYXQgc3RyaW5n IGZvciB0cmFjaW5nIHRoZSBkYXRhLg0KPiA+PiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50 ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ID4+ICsqLw0KPiA+PiArVk9JRA0KPiA+ PiArRUZJQVBJDQo+ID4+ICtEdW1wOENoYXJzICgNCj4gPj4gKyAgSU4gQ09OU1QgQ0hBUjE2KiBG b3JtYXQgT1BUSU9OQUwsDQo+ID4+ICsgIElOIFVJTlQ4KiAgICAgICAgUHRyDQo+ID4+ICsgICk7 DQo+ID4+ICsNCj4gPj4gKy8qKiBUaGlzIGZ1bmN0aW9uIGluZGVudHMgYW5kIHByaW50cyB0aGUg QUNQSSB0YWJsZSBGaWVsZCBOYW1lLg0KPiA+PiArDQo+ID4+ICsgIEBwYXJhbSBbaW5dIEluZGVu dCAgICAgIE51bWJlciBvZiBzcGFjZXMgdG8gYWRkIHRvIHRoZSBnbG9iYWwgdGFibGUNCj4gPj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZW50LiBUaGUgZ2xvYmFsIHRhYmxlIGluZGVu dCBpcyAwIGJ5IGRlZmF1bHQ7DQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIGhvd2V2 ZXIgdGhpcyB2YWx1ZSBpcyB1cGRhdGVkIG9uIGVudHJ5IHRvIHRoZQ0KPiA+PiArICAgICAgICAg ICAgICAgICAgICAgICAgICBQYXJzZUFjcGkoKSBieSBhZGRpbmcgdGhlIGluZGVudCB2YWx1ZQ0K PiBwcm92aWRlZCB0bw0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICBQYXJzZUFjcGko KSBhbmQgcmVzdG9yZWQgYmFjayBvbiBleGl0Lg0KPiBUaGVyZWZvcmUNCj4gPj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgdGhlIHRvdGFsIGluZGVudCBpbiB0aGUgb3V0cHV0IGlzIGRlcGVu ZGVudCBvbg0KPiBmcm9tDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIHdoZXJlIHRo aXMgZnVuY3Rpb24gaXMgY2FsbGVkLg0KPiA+PiArICBAcGFyYW0gW2luXSBGaWVsZE5hbWUgICBQ b2ludGVyIHRvIHRoZSBGaWVsZCBOYW1lLg0KPiA+PiArKi8NCj4gPj4gK1ZPSUQNCj4gPj4gK0VG SUFQSQ0KPiA+PiArUHJpbnRGaWVsZE5hbWUgKA0KPiA+PiArICBJTiBVSU5UMzIgICAgICAgICBJ bmRlbnQsDQo+ID4+ICsgIElOIENPTlNUIENIQVIxNiogIEZpZWxkTmFtZQ0KPiA+PiArKTsNCj4g Pj4gKw0KPiA+PiArLyoqIFRoaXMgZnVuY3Rpb24gcG9pbnRlciBpcyB0aGUgdGVtcGxhdGUgZm9y IGN1c3RvbWl6aW5nIHRoZSB0cmFjZSBvdXRwdXQNCj4gPj4gKw0KPiA+PiArICBAcGFyYW0gW2lu XSBGb3JtYXQgIEZvcm1hdCBzdHJpbmcgZm9yIHRyYWNpbmcgdGhlIGRhdGEgYXMgc3BlY2lmaWVk IGJ5DQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgdGhlICdGb3JtYXQnIG1lbWJlciBvZiBB Q1BJX1BBUlNFUi4NCj4gPj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBz dGFydCBvZiB0aGUgYnVmZmVyLg0KPiA+PiArKi8NCj4gPj4gK3R5cGVkZWYgVk9JRCAoRUZJQVBJ ICpGTlBUUl9QUklOVF9GT1JNQVRURVIpKENPTlNUIENIQVIxNioNCj4gRm9ybWF0LCBVSU5UOCog UHRyKTsNCj4gPj4gKw0KPiA+PiArLyoqIFRoaXMgZnVuY3Rpb24gcG9pbnRlciBpcyB0aGUgdGVt cGxhdGUgZm9yIHZhbGlkYXRpbmcgYW4gQUNQSSB0YWJsZSBmaWVsZC4NCj4gPj4gKw0KPiA+PiAr ICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBmaWVsZCBk YXRhLg0KPiA+PiArICBAcGFyYW0gW2luXSBDb250ZXh0IFBvaW50ZXIgdG8gY29udGV4dCBzcGVj aWZpYyBpbmZvcm1hdGlvbiBhcyBzcGVjaWZpZWQNCj4gYnkNCj4gPj4gKyAgICAgICAgICAgICAg ICAgICAgICB0aGUgJ0NvbnRleHQnIG1lbWJlciBvZiB0aGUgQUNQSV9QQVJTRVIuDQo+ID4+ICsg ICAgICAgICAgICAgICAgICAgICAgZS5nLiB0aGlzIGNvdWxkIGJlIGEgcG9pbnRlciB0byB0aGUg QUNQSSB0YWJsZQ0KPiBoZWFkZXIuDQo+ID4+ICsqLw0KPiA+PiArdHlwZWRlZiBWT0lEIChFRklB UEkgKkZOUFRSX0ZJRUxEX1ZBTElEQVRPUikoVUlOVDgqIFB0ciwgVk9JRCoNCj4gQ29udGV4dCk7 DQo+ID4+ICsNCj4gPj4gKy8qKiBUaGUgQUNQSV9QQVJTRVIgc3RydWN0dXJlIGRlc2NyaWJlcyB0 aGUgZmllbGRzIG9mIGFuIEFDUEkgdGFibGUgYW5kDQo+ID4+ICsgICAgcHJvdmlkZXMgbWVhbnMg Zm9yIHRoZSBwYXJzZXIgdG8gaW50ZXJwcmV0IGFuZCB0cmFjZSBhcHByb3ByaWF0ZWx5Lg0KPiA+ PiArDQo+ID4+ICsgIFRoZSBmaXJzdCB0aHJlZSBtZW1iZXJzIGFyZSBwb3B1bGF0ZWQgYmFzZWQg b24gaW5mb3JtYXRpb24gcHJlc2VudCBpbg0KPiA+PiArICBpbiB0aGUgQUNQSSB0YWJsZSBzcGVj aWZpY2F0aW9ucy4gVGhlIHJlbWFpbmluZyBtZW1iZXJzIGRlc2NyaWJlIGhvdw0KPiA+PiArICB0 aGUgcGFyc2VyIHNob3VsZCByZXBvcnQgdGhlIGZpZWxkIGluZm9ybWF0aW9uLCB2YWxpZGF0ZSB0 aGUgZmllbGQgZGF0YQ0KPiA+PiArICBhbmQvb3IgdXBkYXRlIGFuIGV4dGVybmFsIHBvaW50ZXIg dG8gdGhlIGZpZWxkIChJdGVtUHRyKS4NCj4gPj4gKw0KPiA+PiArICBQYXJzZUFjcGkoKSB1c2Vz IHRoZSBmb3JtYXQgc3RyaW5nIHNwZWNpZmllZCBieSAnRm9ybWF0JyBmb3IgdHJhY2luZw0KPiA+ PiArICB0aGUgZmllbGQgZGF0YS4gSWYgdGhlIGZpZWxkIGlzIG1vcmUgY29tcGxleCBhbmQgcmVx dWlyZXMgYWRkaXRpb25hbA0KPiA+PiArICBwcm9jZXNzaW5nIGZvciBmb3JtYXR0aW5nIGFuZCBy ZXByZXNlbnRhdGlvbiBhIHByaW50IGZvcm1hdHRlciBmdW5jdGlvbg0KPiA+PiArICBjYW4gYmUg c3BlY2lmaWVkIGluICdQcmludEZvcm1hdHRlcicuDQo+ID4+ICsgIFRoZSBQcmludEZvcm1hdHRl ciBmdW5jdGlvbiBtYXkgY2hvb3NlIHRvIHVzZSB0aGUgZm9ybWF0IHN0cmluZw0KPiA+PiArICBz cGVjaWZpZWQgYnkgJ0Zvcm1hdCcgb3IgdXNlIGl0cyBvd24gaW50ZXJuYWwgZm9ybWF0IHN0cmlu Zy4NCj4gPj4gKw0KPiA+PiArICBUaGUgJ0Zvcm1hdCcgYW5kICdQcmludEZvcm1hdHRlcicgbWVt YmVycyBhbGxvdyBmbGV4aWJpbGl0eSBmb3INCj4gPj4gKyAgcmVwcmVzZW50aW5nIHRoZSBmaWVs ZCBkYXRhLg0KPiA+PiArKi8NCj4gPj4gK3R5cGVkZWYgc3RydWN0IEFjcGlQYXJzZXIgew0KPiA+ PiArDQo+ID4+ICsgIC8vLyBTdHJpbmcgZGVzY3JpYmluZyB0aGUgQUNQSSB0YWJsZSBmaWVsZA0K PiA+PiArICAvLy8gKEZpZWxkIGNvbHVtbiBmcm9tIEFDUEkgdGFibGUgc3BlYykNCj4gPj4gKyAg Q09OU1QgQ0hBUjE2KiAgICAgICAgIE5hbWVTdHI7DQo+ID4+ICsNCj4gPj4gKyAgLy8vIFRoZSBs ZW5ndGggb2YgdGhlIGZpZWxkLg0KPiA+PiArICAvLy8gKEJ5dGUgTGVuZ3RoIGNvbHVtbiBmcm9t IEFDUEkgdGFibGUgc3BlYykNCj4gPj4gKyAgVUlOVDMyICAgICAgICAgICAgICAgIExlbmd0aDsN Cj4gPj4gKw0KPiA+PiArICAvLy8gVGhlIG9mZnNldCBvZiB0aGUgZmllbGQgZnJvbSB0aGUgc3Rh cnQgb2YgdGhlIHRhYmxlLg0KPiA+PiArICAvLy8gKEJ5dGUgT2Zmc2V0IGNvbHVtbiBmcm9tIEFD UEkgdGFibGUgc3BlYykNCj4gPj4gKyAgVUlOVDMyICAgICAgICAgICAgICAgIE9mZnNldDsNCj4g Pj4gKw0KPiA+PiArICAvLy8gT3B0aW9uYWwgUHJpbnQoKSBzdHlsZSBmb3JtYXQgc3RyaW5nIGZv ciB0cmFjaW5nIHRoZSBkYXRhLiBJZiBub3QNCj4gPj4gKyAgLy8vIHVzZWQgdGhpcyBtdXN0IGJl IHNldCB0byBOVUxMLg0KPiA+PiArICBDT05TVCBDSEFSMTYqICAgICAgICAgRm9ybWF0Ow0KPiA+ PiArDQo+ID4+ICsgIC8vLyBPcHRpb25hbCBwb2ludGVyIHRvIGEgcHJpbnQgZm9ybWF0dGVyIGZ1 bmN0aW9uIHdoaWNoDQo+ID4+ICsgIC8vLyBpcyB0eXBpY2FsbHkgdXNlZCB0byB0cmFjZSBjb21w bGV4IGZpZWxkIGluZm9ybWF0aW9uLg0KPiA+PiArICAvLy8gSWYgbm90IHVzZWQgdGhpcyBtdXN0 IGJlIHNldCB0byBOVUxMLg0KPiA+PiArICAvLy8gVGhlIEZvcm1hdCBzdHJpbmcgaXMgcGFzc2Vk IHRvIHRoZSBQcmludEZvcm1hdHRlciBmdW5jdGlvbg0KPiA+PiArICAvLy8gYnV0IG1heSBiZSBp Z25vcmVkIGJ5IHRoZSBpbXBsZW1lbnRhdGlvbiBjb2RlLg0KPiA+PiArICBGTlBUUl9QUklOVF9G T1JNQVRURVIgUHJpbnRGb3JtYXR0ZXI7DQo+ID4+ICsNCj4gPj4gKyAgLy8vIE9wdGlvbmFsIHBv aW50ZXIgd2hpY2ggbWF5IGJlIHNldCB0byByZXF1ZXN0IHRoZSBwYXJzZXIgdG8gdXBkYXRlDQo+ ID4+ICsgIC8vLyBhIHBvaW50ZXIgdG8gdGhlIGZpZWxkIGRhdGEuIElmIHVudXNlZCB0aGlzIG11 c3QgYmUgc2V0IHRvIE5VTEwuDQo+ID4+ICsgIFZPSUQqKiAgICAgICAgICAgICAgICBJdGVtUHRy Ow0KPiA+PiArDQo+ID4+ICsgIC8vLyBPcHRpb25hbCBwb2ludGVyIHRvIGEgZmllbGQgdmFsaWRh dG9yIGZ1bmN0aW9uLg0KPiA+PiArICAvLy8gVGhlIGZ1bmN0aW9uIHNob3VsZCBkaXJlY3RseSBy ZXBvcnQgYW55IGFwcHJvcHJpYXRlIGVycm9yIG9yIHdhcm5pbmcNCj4gPj4gKyAgLy8vIGFuZCBp bnZva2UgdGhlIGFwcHJvcHJpYXRlIGNvdW50ZXIgdXBkYXRlIGZ1bmN0aW9uLg0KPiA+PiArICAv Ly8gSWYgbm90IHVzZWQgdGhpcyBwYXJhbWV0ZXIgbXVzdCBiZSBzZXQgdG8gTlVMTC4NCj4gPj4g KyAgRk5QVFJfRklFTERfVkFMSURBVE9SIEZpZWxkVmFsaWRhdG9yOw0KPiA+PiArDQo+ID4+ICsg IC8vLyBPcHRpb25hbCBwb2ludGVyIHRvIGNvbnRleHQgc3BlY2lmaWMgaW5mb3JtYXRpb24sDQo+ ID4+ICsgIC8vLyB3aGljaCB0aGUgRmllbGQgVmFsaWRhdG9yIGZ1bmN0aW9uIGNhbiB1c2UgdG8g ZGV0ZXJtaW5lDQo+ID4+ICsgIC8vLyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IHRoZSBB Q1BJIHRhYmxlIGFuZCBtYWtlDQo+ID4+ICsgIC8vLyBkZWNpc2lvbnMgYWJvdXQgdGhlIGZpZWxk IGJlaW5nIHZhbGlkYXRlZC4NCj4gPj4gKyAgLy8vIGUuZy4gdGhpcyBjb3VsZCBiZSBhIHBvaW50 ZXIgdG8gdGhlIEFDUEkgdGFibGUgaGVhZGVyDQo+ID4+ICsgIFZPSUQqICAgICAgICAgICAgICAg ICBDb250ZXh0Ow0KPiA+PiArfSBBQ1BJX1BBUlNFUjsNCj4gPj4gKw0KPiA+PiArLyoqIEEgc3Ry dWN0dXJlIHVzZWQgdG8gc3RvcmUgdGhlIHBvaW50ZXJzIHRvIHRoZSBtZW1iZXJzIG9mIHRoZQ0K PiA+PiArICAgIEFDUEkgZGVzY3JpcHRpb24gaGVhZGVyIHN0cnVjdHVyZSB0aGF0IHdhcyBwYXJz ZWQuDQo+ID4+ICsqLw0KPiA+PiArdHlwZWRlZiBzdHJ1Y3QgQWNwaURlc2NyaXB0aW9uSGVhZGVy SW5mbyB7DQo+ID4+ICsgIC8vLyBBQ1BJIHRhYmxlIHNpZ25hdHVyZQ0KPiA+PiArICBVSU5UMzIq IFNpZ25hdHVyZTsNCj4gPj4gKyAgLy8vIExlbmd0aCBvZiB0aGUgQUNQSSB0YWJsZQ0KPiA+PiAr ICBVSU5UMzIqIExlbmd0aDsNCj4gPj4gKyAgLy8vIFJldmlzaW9uDQo+ID4+ICsgIFVJTlQ4KiAg UmV2aXNpb247DQo+ID4+ICsgIC8vLyBDaGVja3N1bQ0KPiA+PiArICBVSU5UOCogIENoZWNrc3Vt Ow0KPiA+PiArICAvLy8gT0VNIElkIC0gbGVuZ3RoIGlzIDYgYnl0ZXMNCj4gPj4gKyAgVUlOVDgq ICBPZW1JZDsNCj4gPj4gKyAgLy8vIE9FTSB0YWJsZSBJZA0KPiA+PiArICBVSU5UNjQqIE9lbVRh YmxlSWQ7DQo+ID4+ICsgIC8vLyBPRU0gcmV2aXNpb24gSWQNCj4gPj4gKyAgVUlOVDMyKiBPZW1S ZXZpc2lvbjsNCj4gPj4gKyAgLy8vIENyZWF0b3IgSWQNCj4gPj4gKyAgVUlOVDMyKiBDcmVhdG9y SWQ7DQo+ID4+ICsgIC8vLyBDcmVhdG9yIHJldmlzaW9uDQo+ID4+ICsgIFVJTlQzMiogQ3JlYXRv clJldmlzaW9uOw0KPiA+PiArfSBBQ1BJX0RFU0NSSVBUSU9OX0hFQURFUl9JTkZPOw0KPiA+PiAr DQo+ID4+ICsvKiogVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIHBhcnNlIGFuIEFDUEkgdGFibGUg YnVmZmVyLg0KPiA+PiArDQo+ID4+ICsgIFRoZSBBQ1BJIHRhYmxlIGJ1ZmZlciBpcyBwYXJzZWQg dXNpbmcgdGhlIEFDUEkgdGFibGUgcGFyc2VyIGluZm9ybWF0aW9uDQo+ID4+ICsgIHNwZWNpZmll ZCBieSBhIHBvaW50ZXIgdG8gYW4gYXJyYXkgb2YgQUNQSV9QQVJTRVIgZWxlbWVudHMuIFRoaXMg cGFyc2VyDQo+ID4+ICsgIGZ1bmN0aW9uIGl0ZXJhdGVzIHRocm91Z2ggZWFjaCBpdGVtIG9uIHRo ZSBBQ1BJX1BBUlNFUiBhcnJheSBhbmQgbG9ncw0KPiB0aGUNCj4gPj4gKyAgQUNQSSB0YWJsZSBm aWVsZHMuDQo+ID4+ICsNCj4gPj4gKyAgVGhpcyBmdW5jdGlvbiBjYW4gb3B0aW9uYWxseSBiZSB1 c2VkIHRvIHBhcnNlIEFDUEkgdGFibGVzIGFuZCBmZXRjaCBzcGVjaWZpYw0KPiA+PiArICBmaWVs ZCB2YWx1ZXMuIFRoZSBJdGVtUHRyIG1lbWJlciBvZiB0aGUgQUNQSV9QQVJTRVIgc3RydWN0dXJl ICh3aGVyZQ0KPiB1c2VkKQ0KPiA+PiArICBpcyB1cGRhdGVkIGJ5IHRoaXMgcGFyc2VyIGZ1bmN0 aW9uIHRvIHBvaW50IHRvIHRoZSBzZWxlY3RlZCBmaWVsZCBkYXRhDQo+ID4+ICsgIChlLmcuIHVz ZWZ1bCBmb3IgdmFyaWFibGUgbGVuZ3RoIG5lc3RlZCBmaWVsZHMpLg0KPiA+PiArDQo+ID4+ICsg IEBwYXJhbSBbaW5dIFRyYWNlICAgICAgICBUcmFjZSB0aGUgQUNQSSBmaWVsZHMgVFJVRSBlbHNl IG9ubHkgcGFyc2UgdGhlDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZS4N Cj4gPj4gKyAgQHBhcmFtIFtpbl0gSW5kZW50ICAgICAgIE51bWJlciBvZiBzcGFjZXMgdG8gaW5k ZW50IHRoZSBvdXRwdXQuDQo+ID4+ICsgIEBwYXJhbSBbaW5dIEFzY2lpTmFtZSAgICBPcHRpb25h bCBwb2ludGVyIHRvIGFuIEFTQ0lJIHN0cmluZyB0aGF0DQo+IGRlc2NyaWJlcw0KPiA+PiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHRhYmxlIGJlaW5nIHBhcnNlZC4NCj4gPj4gKyAg QHBhcmFtIFtpbl0gUHRyICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZm ZXIuDQo+ID4+ICsgIEBwYXJhbSBbaW5dIExlbmd0aCAgICAgICBMZW5ndGggb2YgdGhlIGJ1ZmZl ciBwb2ludGVkIGJ5IFB0ci4NCj4gPj4gKyAgQHBhcmFtIFtpbl0gUGFyc2VyICAgICAgIFBvaW50 ZXIgdG8gYW4gYXJyYXkgb2YgQUNQSV9QQVJTRVIgc3RydWN0dXJlDQo+IHRoYXQNCj4gPj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaWJlcyB0aGUgdGFibGUgYmVpbmcgcGFyc2Vk Lg0KPiA+PiArICBAcGFyYW0gW2luXSBQYXJzZXJJdGVtcyAgTnVtYmVyIG9mIGl0ZW1zIGluIHRo ZSBBQ1BJX1BBUlNFUiBhcnJheS4NCj4gPj4gKw0KPiA+PiArICBAcmV0dmFsIE51bWJlciBvZiBi eXRlcyBwYXJzZWQuDQo+ID4+ICsqLw0KPiA+PiArVUlOVDMyDQo+ID4+ICtFRklBUEkNCj4gPj4g K1BhcnNlQWNwaSAoDQo+ID4+ICsgIElOIEJPT0xFQU4gICAgICAgICAgICBUcmFjZSwNCj4gPj4g KyAgSU4gVUlOVDMyICAgICAgICAgICAgIEluZGVudCwNCj4gPj4gKyAgSU4gQ09OU1QgQ0hBUjgq ICAgICAgIEFzY2lpTmFtZSBPUFRJT05BTCwNCj4gPj4gKyAgSU4gVUlOVDgqICAgICAgICAgICAg IFB0ciwNCj4gPj4gKyAgSU4gVUlOVDMyICAgICAgICAgICAgIExlbmd0aCwNCj4gPj4gKyAgSU4g Q09OU1QgQUNQSV9QQVJTRVIqIFBhcnNlciwNCj4gPj4gKyAgSU4gVUlOVDMyICAgICAgICAgICAg IFBhcnNlckl0ZW1zDQo+ID4+ICspOw0KPiA+PiArDQo+ID4+ICsvKiogVGhpcyBpcyBhIGhlbHBl ciBtYWNybyB0byBwYXNzIHBhcmFtZXRlcnMgdG8gdGhlIFBhcnNlciBmdW5jdGlvbnMuDQo+ID4+ ICsNCj4gPj4gKyAgQHBhcmFtIFtpbl0gUGFyc2VyIFRoZSBuYW1lIG9mIHRoZSBBQ1BJX1BBUlNF UiBhcnJheSBkZXNjcmliaW5nIHRoZQ0KPiA+PiArICAgICAgICAgICAgICBBQ1BJIHRhYmxlIGZp ZWxkcy4NCj4gPj4gKyovDQo+ID4+ICsjZGVmaW5lIFBBUlNFUl9QQVJBTVMoUGFyc2VyKSBQYXJz ZXIsIHNpemVvZiAoUGFyc2VyKSAvIHNpemVvZiAoUGFyc2VyWzBdKQ0KPiA+PiArDQo+ID4+ICsv KiogVGhpcyBpcyBhIGhlbHBlciBtYWNybyBmb3IgZGVzY3JpYmluZyB0aGUgQUNQSSBoZWFkZXIg ZmllbGRzLg0KPiA+PiArDQo+ID4+ICsgIEBwYXJhbSBbb3V0XSBJbmZvICBQb2ludGVyIHRvIHJl dHJpZXZlIHRoZSBBQ1BJIHRhYmxlIGhlYWRlcg0KPiBpbmZvcm1hdGlvbi4NCj4gPj4gKyovDQo+ ID4+ICsjZGVmaW5lIFBBUlNFX0FDUElfSEVBREVSKEluZm8pICAgICAgICAgICAgICAgICAgIFwN Cj4gPj4gKyAgeyBMIlNpZ25hdHVyZSIsIDQsIDAsIE5VTEwsIER1bXA0Q2hhcnMsICAgICAgICAg XA0KPiA+PiArICAgIChWT0lEKiopJihJbmZvKS0+U2lnbmF0dXJlICwgTlVMTCwgTlVMTCB9LCAg ICBcDQo+ID4+ICsgIHsgTCJMZW5ndGgiLCA0LCA0LCBMIiVkIiwgTlVMTCwgICAgICAgICAgICAg ICAgIFwNCj4gPj4gKyAgICAoVk9JRCoqKSYoSW5mbyktPkxlbmd0aCwgTlVMTCwgTlVMTCB9LCAg ICAgICAgXA0KPiA+PiArICB7IEwiUmV2aXNpb24iLCAxLCA4LCBMIiVkIiwgTlVMTCwgICAgICAg ICAgICAgICBcDQo+ID4+ICsgICAgKFZPSUQqKikmKEluZm8pLT5SZXZpc2lvbiwgTlVMTCwgTlVM TCB9LCAgICAgIFwNCj4gPj4gKyAgeyBMIkNoZWNrc3VtIiwgMSwgOSwgTCIweCVYIiwgTlVMTCwg ICAgICAgICAgICAgXA0KPiA+PiArICAgIChWT0lEKiopJihJbmZvKS0+Q2hlY2tzdW0sIE5VTEws IE5VTEwgfSwgICAgICBcDQo+ID4+ICsgIHsgTCJPZW0gSUQiLCA2LCAxMCwgTlVMTCwgRHVtcDZD aGFycywgICAgICAgICAgIFwNCj4gPj4gKyAgICAoVk9JRCoqKSYoSW5mbyktPk9lbUlkLCBOVUxM LCBOVUxMIH0sICAgICAgICAgXA0KPiA+PiArICB7IEwiT2VtIFRhYmxlIElEIiwgOCwgMTYsIE5V TEwsIER1bXA4Q2hhcnMsICAgICBcDQo+ID4+ICsgICAgKFZPSUQqKikmKEluZm8pLT5PZW1UYWJs ZUlkLCBOVUxMLCBOVUxMIH0sICAgIFwNCj4gPj4gKyAgeyBMIk9lbSBSZXZpc2lvbiIsIDQsIDI0 LCBMIjB4JVgiLCBOVUxMLCAgICAgICAgXA0KPiA+PiArICAgIChWT0lEKiopJihJbmZvKS0+T2Vt UmV2aXNpb24sIE5VTEwsIE5VTEwgfSwgICBcDQo+ID4+ICsgIHsgTCJDcmVhdG9yIElEIiwgNCwg MjgsIE5VTEwsIER1bXA0Q2hhcnMsICAgICAgIFwNCj4gPj4gKyAgICAoVk9JRCoqKSYoSW5mbykt PkNyZWF0b3JJZCwgTlVMTCwgTlVMTCB9LCAgICAgXA0KPiA+PiArICB7IEwiQ3JlYXRvciBSZXZp c2lvbiIsIDQsIDMyLCBMIjB4JVgiLCBOVUxMLCAgICBcDQo+ID4+ICsgICAgKFZPSUQqKikmKElu Zm8pLT5DcmVhdG9yUmV2aXNpb24sIE5VTEwsIE5VTEwgfQ0KPiA+PiArDQo+ID4+ICsvKiogTGVu Z3RoIG9mIHRoZSBBQ1BJIEdBUyBzdHJ1Y3R1cmUuDQo+ID4+ICsNCj4gPj4gKyAgTk9URTogVGhp cyBtaWdodCBub3JtYWxseSBiZSBkZWZpbmVkIGFzDQo+ID4+ICsgICAgICAgIHNpemVvZiAoRUZJ X0FDUElfNl8yX0dFTkVSSUNfQUREUkVTU19TVFJVQ1RVUkUpLg0KPiA+PiArICAgICAgICBIb3dl dmVyLCB3ZSBkZWxpYmVyYXRlbHkgbWluaW1pc2UgYW55IHJlZmVyZW5jZSB0byB0aGUgRURLMiBB Q1BJDQo+ID4+ICsgICAgICAgIGhlYWRlcnMgaW4gYW4gYXR0ZW1wdCB0byBwcm92aWRlIGNyb3Nz IGNoZWNraW5nLg0KPiA+PiArKi8NCj4gPj4gKyNkZWZpbmUgR0FTX0xFTkdUSCAgICAgICAgICAg ICAgICAgICAgIDEyDQo+ID4+ICsNCj4gPj4gKy8qKiBMZW5ndGggb2YgdGhlIEFDUEkgSGVhZGVy IHN0cnVjdHVyZS4NCj4gPj4gKw0KPiA+PiArICBOT1RFOiBUaGlzIG1pZ2h0IG5vcm1hbGx5IGJl IGRlZmluZWQgYXMNCj4gPj4gKyAgICAgICAgc2l6ZW9mIChFRklfQUNQSV9ERVNDUklQVElPTl9I RUFERVIpLg0KPiA+PiArICAgICAgICBIb3dldmVyLCB3ZSBkZWxpYmVyYXRlbHkgbWluaW1pc2Ug YW55IHJlZmVyZW5jZSB0byB0aGUgRURLMiBBQ1BJDQo+ID4+ICsgICAgICAgIGhlYWRlcnMgaW4g YW4gYXR0ZW1wdCB0byBwcm92aWRlIGNyb3NzIGNoZWNraW5nLg0KPiA+PiArKi8NCj4gPj4gKyNk ZWZpbmUgQUNQSV9ERVNDUklQVElPTl9IRUFERVJfTEVOR1RIICAzNg0KPiA+PiArDQo+ID4+ICsv KiogVGhpcyBmdW5jdGlvbiBpbmRlbnRzIGFuZCB0cmFjZXMgdGhlIEdBUyBzdHJ1Y3R1cmUgYXMg ZGVzY3JpYmVkDQo+ID4+ICsgICAgYnkgdGhlIEdhc1BhcnNlci4NCj4gPj4gKw0KPiA+PiArICBA cGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ ID4+ICsgIEBwYXJhbSBbaW5dIEluZGVudCAgTnVtYmVyIG9mIHNwYWNlcyB0byBpbmRlbnQgdGhl IG91dHB1dC4NCj4gPj4gKyovDQo+ID4+ICtWT0lEDQo+ID4+ICtFRklBUEkNCj4gPj4gK0R1bXBH YXNTdHJ1Y3QgKA0KPiA+PiArICBJTiBVSU5UOCogICAgICAgIFB0ciwNCj4gPj4gKyAgSU4gVUlO VDMyICAgICAgICBJbmRlbnQNCj4gPj4gKyAgKTsNCj4gPj4gKw0KPiA+PiArLyoqIFRoaXMgZnVu Y3Rpb24gdHJhY2VzIHRoZSBHQVMgc3RydWN0dXJlIGFzIGRlc2NyaWJlZCBieSB0aGUgR2FzUGFy c2VyLg0KPiA+PiArDQo+ID4+ICsgIEBwYXJhbSBbaW5dIEZvcm1hdCAgT3B0aW9uYWwgZm9ybWF0 IHN0cmluZyBmb3IgdHJhY2luZyB0aGUgZGF0YS4NCj4gPj4gKyAgQHBhcmFtIFtpbl0gUHRyICAg ICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiA+PiArKi8NCj4gPj4gK1ZP SUQNCj4gPj4gK0VGSUFQSQ0KPiA+PiArRHVtcEdhcyAoDQo+ID4+ICsgIElOIENPTlNUIENIQVIx NiogRm9ybWF0IE9QVElPTkFMLA0KPiA+PiArICBJTiBVSU5UOCogICAgICAgIFB0cg0KPiA+PiAr ICApOw0KPiA+PiArDQo+ID4+ICsvKiogVGhpcyBmdW5jdGlvbiB0cmFjZXMgdGhlIEFDUEkgaGVh ZGVyIGFzIGRlc2NyaWJlZCBieSB0aGUNCj4gQWNwaUhlYWRlclBhcnNlci4NCj4gPj4gKw0KPiA+ PiArICBAcGFyYW0gW2luXSBQdHIgICAgICAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhl IGJ1ZmZlci4NCj4gPj4gKw0KPiA+PiArICBAcmV0dmFsIE51bWJlciBvZiBieXRlcyBwYXJzZWQu DQo+ID4+ICsqLw0KPiA+PiArVUlOVDMyDQo+ID4+ICtFRklBUEkNCj4gPj4gK0R1bXBBY3BpSGVh ZGVyICgNCj4gPj4gKyAgSU4gVUlOVDgqIFB0cg0KPiA+PiArICApOw0KPiA+PiArDQo+ID4+ICsv KiogVGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIEFDUEkgaGVhZGVyIGFzIGRlc2NyaWJlZCBieSB0 aGUNCj4gQWNwaUhlYWRlclBhcnNlci4NCj4gPj4gKw0KPiA+PiArICBUaGlzIGZ1bmN0aW9uIG9w dGlvbmFsbHkgcmV0dXJucyB0aGUgU2lnbmF0dXJlLCBMZW5ndGggYW5kIHJldmlzaW9uIG9mIHRo ZQ0KPiA+PiArICBBQ1BJIHRhYmxlLg0KPiA+PiArDQo+ID4+ICsgIEBwYXJhbSBbaW5dICBQdHIg ICAgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ID4+ICsgIEBwYXJh bSBbb3V0XSBTaWduYXR1cmUgIEdldHMgbG9jYXRpb24gb2YgdGhlIEFDUEkgdGFibGUgc2lnbmF0 dXJlLg0KPiA+PiArICBAcGFyYW0gW291dF0gTGVuZ3RoICAgICBHZXRzIGxvY2F0aW9uIG9mIHRo ZSBsZW5ndGggb2YgdGhlIEFDUEkgdGFibGUuDQo+ID4+ICsgIEBwYXJhbSBbb3V0XSBSZXZpc2lv biAgIEdldHMgbG9jYXRpb24gb2YgdGhlIHJldmlzaW9uIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiA+ PiArDQo+ID4+ICsgIEByZXR2YWwgTnVtYmVyIG9mIGJ5dGVzIHBhcnNlZC4NCj4gPj4gKyovDQo+ ID4+ICtVSU5UMzINCj4gPj4gK0VGSUFQSQ0KPiA+PiArUGFyc2VBY3BpSGVhZGVyICgNCj4gPj4g KyAgSU4gIFVJTlQ4KiAgICAgICAgIFB0ciwNCj4gPj4gKyAgT1VUIENPTlNUIFVJTlQzMioqIFNp Z25hdHVyZSwNCj4gPj4gKyAgT1VUIENPTlNUIFVJTlQzMioqIExlbmd0aCwNCj4gPj4gKyAgT1VU IENPTlNUIFVJTlQ4KiogIFJldmlzaW9uDQo+ID4+ICsgICk7DQo+ID4+ICsNCj4gPj4gKyNlbmRp ZiAvLyBBQ1BJUEFSU0VSX0hfDQo+ID4+IGRpZmYgLS1naXQgYS9TaGVsbFBrZy9JbmNsdWRlL0xp YnJhcnkvQWNwaVZpZXcvQWNwaVRhYmxlUGFyc2VyLmgNCj4gYi9TaGVsbFBrZy9JbmNsdWRlL0xp YnJhcnkvQWNwaVZpZXcvQWNwaVRhYmxlUGFyc2VyLmgNCj4gPj4gbmV3IGZpbGUgbW9kZSAxMDA2 NDQNCj4gPj4gaW5kZXgNCj4gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MC4uYTY5ZDU2ZGE2Y2Y3MjhiYjk4ZGYyDQo+IDY1ZGUzYWUwMzBkODUxMjA0OTQNCj4gPj4gLS0t IC9kZXYvbnVsbA0KPiA+PiArKysgYi9TaGVsbFBrZy9JbmNsdWRlL0xpYnJhcnkvQWNwaVZpZXcv QWNwaVRhYmxlUGFyc2VyLmgNCj4gPj4gQEAgLTAsMCArMSwxMjYgQEANCj4gPj4gKy8qKg0KPiA+ PiArICBIZWFkZXIgZmlsZSBmb3IgQUNQSSB0YWJsZSBwYXJzZXINCj4gPj4gKw0KPiA+PiArICBD b3B5cmlnaHQgKGMpIDIwMTYgLSAyMDE4LCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZl ZC4NCj4gPj4gKyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0K PiA+PiArICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBh bmQgY29uZGl0aW9ucyBvZiB0aGUNCj4gQlNEIExpY2Vuc2UNCj4gPj4gKyAgd2hpY2ggYWNjb21w YW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1h eSBiZQ0KPiBmb3VuZCBhdA0KPiA+PiArICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMv YnNkLWxpY2Vuc2UucGhwDQo+ID4+ICsNCj4gPj4gKyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVU RUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyINCj4gQkFTSVMsDQo+ID4+ICsg IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhF Ug0KPiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ID4+ICsqKi8NCj4gPj4gKw0KPiA+PiArI2lmbmRl ZiBBQ1BJVEFCTEVQQVJTRVJfSF8NCj4gPj4gKyNkZWZpbmUgQUNQSVRBQkxFUEFSU0VSX0hfDQo+ ID4+ICsNCj4gPj4gKy8qKiBUaGUgbWF4aW11bSBudW1iZXIgb2YgQUNQSSB0YWJsZSBwYXJzZXJz Lg0KPiA+PiArKi8NCj4gPj4gKyNkZWZpbmUgTUFYX0FDUElfVEFCTEVfUEFSU0VSUyAgICAgICAg ICAxNg0KPiA+PiArDQo+ID4+ICsvKiogQW4gaW52YWxpZC9OVUxMIHNpZ25hdHVyZSB2YWx1ZS4N Cj4gPj4gKyovDQo+ID4+ICsjZGVmaW5lIEFDUElfUEFSU0VSX1NJR05BVFVSRV9OVUxMICAgICAg MA0KPiA+PiArDQo+ID4+ICsvKiogQSBmdW5jdGlvbiB0aGF0IHBhcnNlcyB0aGUgQUNQSSB0YWJs ZS4NCj4gPj4gKw0KPiA+PiArICBAcGFyYW0gW2luXSBUcmFjZSAgICAgICAgICAgICAgSWYgVFJV RSwgdHJhY2UgdGhlIEFDUEkgZmllbGRzLg0KPiA+PiArICBAcGFyYW0gW2luXSBQdHIgICAgICAg ICAgICAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gPj4gKyAgQHBh cmFtIFtpbl0gQWNwaVRhYmxlTGVuZ3RoICAgIExlbmd0aCBvZiB0aGUgQUNQSSB0YWJsZS4NCj4g Pj4gKyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxlUmV2aXNpb24gIFJldmlzaW9uIG9mIHRoZSBBQ1BJ IHRhYmxlLg0KPiA+PiArKi8NCj4gPj4gK3R5cGVkZWYNCj4gPj4gK1ZPSUQNCj4gPj4gKyhFRklB UEkgKiBQQVJTRV9BQ1BJX1RBQkxFX1BST0MpICgNCj4gPj4gKyAgSU4gQk9PTEVBTiBUcmFjZSwN Cj4gPj4gKyAgSU4gVUlOVDgqICBQdHIsDQo+ID4+ICsgIElOIFVJTlQzMiAgQWNwaVRhYmxlTGVu Z3RoLA0KPiA+PiArICBJTiBVSU5UOCAgIEFjcGlUYWJsZVJldmlzaW9uDQo+ID4+ICsgICk7DQo+ ID4+ICsNCj4gPj4gKy8qKiBUaGUgQUNQSSB0YWJsZSBwYXJzZXIgaW5mb3JtYXRpb24NCj4gPj4g KyovDQo+ID4+ICt0eXBlZGVmIHN0cnVjdCBBY3BpVGFibGVQYXJzZXIgew0KPiA+PiArICAvLy8g QUNQSSB0YWJsZSBzaWduYXR1cmUNCj4gPj4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAgU2ln bmF0dXJlOw0KPiA+PiArDQo+ID4+ICsgIC8vLyBUaGUgQUNQSSB0YWJsZSBwYXJzZXIgZnVuY3Rp b24uDQo+ID4+ICsgIFBBUlNFX0FDUElfVEFCTEVfUFJPQyAgIFBhcnNlcjsNCj4gPj4gK30gQUNQ SV9UQUJMRV9QQVJTRVI7DQo+ID4+ICsNCj4gPj4gKy8qKiBSZWdpc3RlciB0aGUgQUNQSSB0YWJs ZSBQYXJzZXINCj4gPj4gKw0KPiA+PiArICBUaGlzIGZ1bmN0aW9uIHJlZ2lzdGVycyB0aGUgQUNQ SSB0YWJsZSBwYXJzZXIuDQo+ID4+ICsNCj4gPj4gKyAgQHBhcmFtIFtpbl0gU2lnbmF0dXJlICAg VGhlIEFDUEkgdGFibGUgc2lnbmF0dXJlLg0KPiA+PiArICBAcGFyYW0gW2luXSBQYXJzZXJQcm9j ICBUaGUgQUNQSSB0YWJsZSBwYXJzZXIuDQo+ID4+ICsNCj4gPj4gKyAgQHJldHZhbCBFRklfU1VD Q0VTUyAgICAgICAgICAgVGhlIHBhcnNlciBpcyByZWdpc3RlcmVkLg0KPiA+PiArICBAcmV0dmFs IEVGSV9JTlZBTElEX1BBUkFNRVRFUiBBIHBhcmFtZXRlciBpcyBpbnZhbGlkLg0KPiA+PiArICBA cmV0dmFsIEVGSV9BTFJFQURZX1NUQVJURUQgICBUaGUgcGFyc2VyIGZvciB0aGUgVGFibGUNCj4g Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FzIGFscmVhZHkgcmVnaXN0ZXJl ZC4NCj4gPj4gKyAgQHJldHZhbCBFRklfT1VUX09GX1JFU09VUkNFUyAgTm8gc3BhY2UgdG8gcmVn aXN0ZXIgdGhlDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlci4N Cj4gPj4gKyovDQo+ID4+ICtFRklfU1RBVFVTDQo+ID4+ICtFRklBUEkNCj4gPj4gK1JlZ2lzdGVy UGFyc2VyICgNCj4gPj4gKyAgSU4gIFVJTlQzMiAgICAgICAgICAgICAgICAgIFNpZ25hdHVyZSwN Cj4gPj4gKyAgSU4gIFBBUlNFX0FDUElfVEFCTEVfUFJPQyAgIFBhcnNlclByb2MNCj4gPj4gKyk7 DQo+ID4+ICsNCj4gPj4gKy8qKiBEZXJlZ2lzdGVyIHRoZSBBQ1BJIHRhYmxlIFBhcnNlcg0KPiA+ PiArDQo+ID4+ICsgIFRoaXMgZnVuY3Rpb24gZGVyZWdpc3RlcnMgdGhlIEFDUEkgdGFibGUgcGFy c2VyLg0KPiA+PiArDQo+ID4+ICsgIEBwYXJhbSBbaW5dIFNpZ25hdHVyZSAgIFRoZSBBQ1BJIHRh YmxlIHNpZ25hdHVyZS4NCj4gPj4gKw0KPiA+PiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAg ICAgICBUaGUgcGFyc2VyIHdhcyBkZXJlZ2lzdGVyZWQuDQo+ID4+ICsgIEByZXR2YWwgRUZJX0lO VkFMSURfUEFSQU1FVEVSIEEgcGFyYW1ldGVyIGlzIGludmFsaWQuDQo+ID4+ICsgIEByZXR2YWwg RUZJX05PVF9GT1VORCAgICAgICAgIEEgcmVnaXN0ZXJlZCBwYXJzZXIgd2FzIG5vdCBmb3VuZC4N Cj4gPj4gKyovDQo+ID4+ICtFRklfU1RBVFVTDQo+ID4+ICtFRklBUEkNCj4gPj4gK0RlcmVnaXN0 ZXJQYXJzZXIgKA0KPiA+PiArICBJTiAgVUlOVDMyICAgICAgICAgICAgICAgICAgU2lnbmF0dXJl DQo+ID4+ICspOw0KPiA+PiArDQo+ID4+ICsvKiogVGhpcyBmdW5jdGlvbiBwcm9jZXNzZXMgdGhl IEFDUEkgdGFibGVzLg0KPiA+PiArICBUaGlzIGZ1bmN0aW9uIGNhbGxzIFByb2Nlc3NUYWJsZVJl cG9ydE9wdGlvbnMoKSB0byBsaXN0IHRoZSBBQ1BJDQo+ID4+ICsgIHRhYmxlcywgcGVyZm9ybSBi aW5hcnkgZHVtcCBvZiB0aGUgdGFibGVzIGFuZCBkZXRlcm1pbmUgaWYgdGhlDQo+ID4+ICsgIEFD UEkgZmllbGRzIHNob3VsZCBiZSB0cmFjZWQuDQo+ID4+ICsNCj4gPj4gKyAgVGhpcyBmdW5jdGlv biBhbHNvIGludm9rZXMgdGhlIHBhcnNlciBmb3IgdGhlIEFDUEkgdGFibGVzLg0KPiA+PiArDQo+ ID4+ICsgIFRoaXMgZnVuY3Rpb24gYWxzbyBwZXJmb3JtcyBhIFJBVyBkdW1wIG9mIHRoZSBBQ1BJ IHRhYmxlIGluY2x1ZGluZw0KPiA+PiArICB0aGUgdW5rbm93bi91bnBhcnNlZCBBQ1BJIHRhYmxl cyBhbmQgdmFsaWRhdGVzIHRoZSBjaGVja3N1bS4NCj4gPj4gKw0KPiA+PiArICBAcGFyYW0gW2lu XSBQdHIgICAgICAgICAgICAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIEFDUEkNCj4g Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlIGRhdGEgYnVmZmVyLg0K PiA+PiArKi8NCj4gPj4gK1ZPSUQNCj4gPj4gK0VGSUFQSQ0KPiA+PiArUHJvY2Vzc0FjcGlUYWJs ZSAoDQo+ID4+ICsgIElOIFVJTlQ4KiBQdHINCj4gPj4gKyAgKTsNCj4gPj4gKw0KPiA+PiArLyoq IEdldCB0aGUgQUNQSSB0YWJsZSBQYXJzZXINCj4gPj4gKw0KPiA+PiArICBUaGlzIGZ1bmN0aW9u IHJldHVybnMgdGhlIEFDUEkgdGFibGUgcGFyc2VyIHByb2MgZnJvbSB0aGUgbGlzdCBvZg0KPiA+ PiArICByZWdpc3RlcmVkIHBhcnNlcnMuDQo+ID4+ICsNCj4gPj4gKyAgQHBhcmFtIFtpbl0gIFNp Z25hdHVyZSAgIFRoZSBBQ1BJIHRhYmxlIHNpZ25hdHVyZS4NCj4gPj4gKyAgQHBhcmFtIFtvdXRd IFBhcnNlclByb2MgIFBvaW50ZXIgdG8gYSBBQ1BJIHRhYmxlIHBhcnNlciBwcm9jLg0KPiA+PiAr DQo+ID4+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBwYXJzZXIgd2FzIHJl dHVybmVkIHN1Y2Nlc3NmdWxseS4NCj4gPj4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVU RVIgQSBwYXJhbWV0ZXIgaXMgaW52YWxpZC4NCj4gPj4gKyAgQHJldHZhbCBFRklfTk9UX0ZPVU5E ICAgICAgICAgQSByZWdpc3RlcmVkIHBhcnNlciB3YXMgbm90IGZvdW5kLg0KPiA+PiArKi8NCj4g Pj4gK0VGSV9TVEFUVVMNCj4gPj4gK0VGSUFQSQ0KPiA+PiArR2V0UGFyc2VyICgNCj4gPj4gKyAg SU4gIFVJTlQzMiAgICAgICAgICAgICAgICAgICBTaWduYXR1cmUsDQo+ID4+ICsgIE9VVCBQQVJT RV9BQ1BJX1RBQkxFX1BST0MgKiAgUGFyc2VyUHJvYw0KPiA+PiArICApOw0KPiA+PiArDQo+ID4+ ICsjZW5kaWYgLy8gQUNQSVRBQkxFUEFSU0VSX0hfDQo+ID4+IGRpZmYgLS1naXQgYS9TaGVsbFBr Zy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9BY3BpUGFyc2VyLmMNCj4gYi9T aGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9BY3BpUGFyc2VyLmMN Cj4gPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPj4gaW5kZXgNCj4gMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODk3MTIwNjZlNjMyYjQzYzUwMjNhDQo+IGNkOWM4 YjViZWMxNTBlMDJkOWYNCj4gPj4gLS0tIC9kZXYvbnVsbA0KPiA+PiArKysgYi9TaGVsbFBrZy9M aWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9BY3BpUGFyc2VyLmMNCj4gPj4gQEAg LTAsMCArMSw2NjIgQEANCj4gPj4gKy8qKg0KPiA+PiArICBBQ1BJIHBhcnNlcg0KPiA+PiArDQo+ ID4+ICsgIENvcHlyaWdodCAoYykgMjAxNiAtIDIwMTgsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRz IHJlc2VydmVkLg0KPiA+PiArICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0 ZXJpYWxzDQo+ID4+ICsgIGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhl IHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZQ0KPiBCU0QgTGljZW5zZQ0KPiA+PiArICB3aGlj aCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxp Y2Vuc2UgbWF5IGJlDQo+IGZvdW5kIGF0DQo+ID4+ICsgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9s aWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4gPj4gKw0KPiA+PiArICBUSEUgUFJPR1JBTSBJUyBE SVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIg0KPiBCQVNJUywN Cj4gPj4gKyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lO RCwgRUlUSEVSDQo+IEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gPj4gKyoqLw0KPiA+PiArDQo+ID4+ ICsjaW5jbHVkZSA8VWVmaS5oPg0KPiA+PiArI2luY2x1ZGUgPExpYnJhcnkvVWVmaUxpYi5oPg0K PiA+PiArI2luY2x1ZGUgPExpYnJhcnkvVWVmaUJvb3RTZXJ2aWNlc1RhYmxlTGliLmg+DQo+ID4+ ICsjaW5jbHVkZSA8TGlicmFyeS9BY3BpVmlldy9BY3BpUGFyc2VyLmg+DQo+ID4+ICsjaW5jbHVk ZSAiQWNwaVZpZXcuaCINCj4gPj4gKw0KPiA+PiArU1RBVElDIFVJTlQzMiAgIGdJbmRlbnQ7DQo+ ID4+ICtTVEFUSUMgVUlOVDMyICAgbVRhYmxlRXJyb3JDb3VudDsNCj4gPj4gK1NUQVRJQyBVSU5U MzIgICBtVGFibGVXYXJuaW5nQ291bnQ7DQo+ID4+ICsNCj4gPj4gKy8qKiBUaGlzIGZ1bmN0aW9u IHJlc2V0cyB0aGUgQUNQSSB0YWJsZSBlcnJvciBjb3VudGVyIHRvIFplcm8uDQo+ID4+ICsqLw0K PiA+PiArVk9JRA0KPiA+PiArUmVzZXRFcnJvckNvdW50ICgNCj4gPj4gKyAgVk9JRA0KPiA+PiAr ICApDQo+ID4+ICt7DQo+ID4+ICsgIG1UYWJsZUVycm9yQ291bnQgPSAwOw0KPiA+PiArfQ0KPiA+ PiArDQo+ID4+ICsvKiogVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBBQ1BJIHRhYmxlIGVycm9y IGNvdW50Lg0KPiA+PiArDQo+ID4+ICsgIEByZXR2YWwgUmV0dXJucyB0aGUgY291bnQgb2YgZXJy b3JzIGRldGVjdGVkIGluIHRoZSBBQ1BJIHRhYmxlcy4NCj4gPj4gKyovDQo+ID4+ICtVSU5UMzIN Cj4gPj4gK0dldEVycm9yQ291bnQgKA0KPiA+PiArICBWT0lEDQo+ID4+ICsgICkNCj4gPj4gK3sN Cj4gPj4gKyAgcmV0dXJuIG1UYWJsZUVycm9yQ291bnQ7DQo+ID4+ICt9DQo+ID4+ICsNCj4gPj4g Ky8qKiBUaGlzIGZ1bmN0aW9uIHJlc2V0cyB0aGUgQUNQSSB0YWJsZSB3YXJuaW5nIGNvdW50ZXIg dG8gWmVyby4NCj4gPj4gKyovDQo+ID4+ICtWT0lEDQo+ID4+ICtSZXNldFdhcm5pbmdDb3VudCAo DQo+ID4+ICsgIFZPSUQNCj4gPj4gKyAgKQ0KPiA+PiArew0KPiA+PiArICBtVGFibGVXYXJuaW5n Q291bnQgPSAwOw0KPiA+PiArfQ0KPiA+PiArDQo+ID4+ICsvKiogVGhpcyBmdW5jdGlvbiByZXR1 cm5zIHRoZSBBQ1BJIHRhYmxlIHdhcm5pbmcgY291bnQuDQo+ID4+ICsNCj4gPj4gKyAgQHJldHZh bCBSZXR1cm5zIHRoZSBjb3VudCBvZiB3YXJuaW5nIGRldGVjdGVkIGluIHRoZSBBQ1BJIHRhYmxl cy4NCj4gPj4gKyovDQo+ID4+ICtVSU5UMzINCj4gPj4gK0dldFdhcm5pbmdDb3VudCAoDQo+ID4+ ICsgIFZPSUQNCj4gPj4gKyAgKQ0KPiA+PiArew0KPiA+PiArICByZXR1cm4gbVRhYmxlV2Fybmlu Z0NvdW50Ow0KPiA+PiArfQ0KPiA+PiArDQo+ID4+ICsvKiogVGhpcyBmdW5jdGlvbiBpbmNyZW1l bnRzIHRoZSBBQ1BJIHRhYmxlIGVycm9yIGNvdW50ZXIuDQo+ID4+ICsqLw0KPiA+PiArVk9JRA0K PiA+PiArRUZJQVBJDQo+ID4+ICtJbmNyZW1lbnRFcnJvckNvdW50ICgNCj4gPj4gKyAgVk9JRA0K PiA+PiArICApDQo+ID4+ICt7DQo+ID4+ICsgIG1UYWJsZUVycm9yQ291bnQrKzsNCj4gPj4gK30N Cj4gPj4gKw0KPiA+PiArLyoqIFRoaXMgZnVuY3Rpb24gaW5jcmVtZW50cyB0aGUgQUNQSSB0YWJs ZSB3YXJuaW5nIGNvdW50ZXIuDQo+ID4+ICsqLw0KPiA+PiArVk9JRA0KPiA+PiArRUZJQVBJDQo+ ID4+ICtJbmNyZW1lbnRXYXJuaW5nQ291bnQgKA0KPiA+PiArICBWT0lEDQo+ID4+ICsgICkNCj4g Pj4gK3sNCj4gPj4gKyAgbVRhYmxlV2FybmluZ0NvdW50Kys7DQo+ID4+ICt9DQo+ID4+ICsNCj4g Pj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHZlcmlmaWVzIHRoZSBBQ1BJIHRhYmxlIGNoZWNrc3VtLg0K PiA+PiArDQo+ID4+ICsgIFRoaXMgZnVuY3Rpb24gdmVyaWZpZXMgdGhlIGNoZWNrc3VtIGZvciB0 aGUgQUNQSSB0YWJsZSBhbmQgb3B0aW9uYWxseQ0KPiA+PiArICBwcmludHMgdGhlIHN0YXR1cy4N Cj4gPj4gKw0KPiA+PiArICBAcGFyYW0gW2luXSBMb2cgICAgIElmIFRSVUUgbG9nIHRoZSBzdGF0 dXMgb2YgdGhlIGNoZWNrc3VtLg0KPiA+PiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIg dG8gdGhlIHN0YXJ0IG9mIHRoZSB0YWJsZSBidWZmZXIuDQo+ID4+ICsgIEBwYXJhbSBbaW5dIExl bmd0aCAgVGhlIGxlbmd0aCBvZiB0aGUgYnVmZmVyLg0KPiA+PiArDQo+ID4+ICsgIEByZXR2YWwg VFJVRSAgICAgICAgVGhlIGNoZWNrc3VtIGlzIE9LLg0KPiA+PiArICBAcmV0dmFsIEZBTFNFICAg ICAgIFRoZSBjaGVja3N1bSBmYWlsZWQuDQo+ID4+ICsqLw0KPiA+PiArQk9PTEVBTg0KPiA+PiAr RUZJQVBJDQo+ID4+ICtWZXJpZnlDaGVja3N1bSAoDQo+ID4+ICsgIElOIEJPT0xFQU4gTG9nLA0K PiA+PiArICBJTiBVSU5UOCogIFB0ciwNCj4gPj4gKyAgSU4gVUlOVDMyICBMZW5ndGgNCj4gPj4g KyAgKQ0KPiA+PiArew0KPiA+PiArICBVSU5UTiBCeXRlQ291bnQgPSAwOw0KPiA+PiArICBVSU5U OCBDaGVja3N1bSA9IDA7DQo+ID4+ICsgIFVJTlROIE9yaWdpbmFsQXR0cmlidXRlOw0KPiA+PiAr DQo+ID4+ICsgIHdoaWxlIChCeXRlQ291bnQgPCBMZW5ndGgpIHsNCj4gPj4gKyAgICBDaGVja3N1 bSArPSAqKFB0cisrKTsNCj4gPj4gKyAgICBCeXRlQ291bnQrKzsNCj4gPj4gKyAgfQ0KPiA+PiAr DQo+ID4+ICsgIGlmIChMb2cpIHsNCj4gPj4gKyAgICBPcmlnaW5hbEF0dHJpYnV0ZSA9IGdTVC0+ Q29uT3V0LT5Nb2RlLT5BdHRyaWJ1dGU7DQo+ID4+ICsgICAgaWYgKENoZWNrc3VtID09IDApIHsN Cj4gPj4gKyAgICAgIGlmIChHZXRDb2xvdXJIaWdobGlnaHRpbmcgKCkpIHsNCj4gPj4gKyAgICAg ICAgZ1NULT5Db25PdXQtPlNldEF0dHJpYnV0ZSAoDQo+ID4+ICsgICAgICAgICAgICAgICAgICAg ICAgIGdTVC0+Q29uT3V0LA0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICBFRklfVEVYVF9B VFRSIChFRklfR1JFRU4sDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgKChPcmlnaW5h bEF0dHJpYnV0ZSYoQklUNHxCSVQ1fEJJVDYpKT4+NCkpDQo+ID4+ICsgICAgICAgICAgICAgICAg ICAgICAgICk7DQo+ID4+ICsgICAgICB9DQo+ID4+ICsgICAgICBQcmludCAoTCJcblxuVGFibGUg Q2hlY2tzdW0gOiBPS1xuXG4iKTsNCj4gPj4gKyAgICB9IGVsc2Ugew0KPiA+PiArICAgICAgSW5j cmVtZW50RXJyb3JDb3VudCAoKTsNCj4gPj4gKyAgICAgIGlmIChHZXRDb2xvdXJIaWdobGlnaHRp bmcgKCkpIHsNCj4gPj4gKyAgICAgICAgZ1NULT5Db25PdXQtPlNldEF0dHJpYnV0ZSAoDQo+ID4+ ICsgICAgICAgICAgICAgICAgICAgICAgIGdTVC0+Q29uT3V0LA0KPiA+PiArICAgICAgICAgICAg ICAgICAgICAgICBFRklfVEVYVF9BVFRSIChFRklfUkVELA0KPiA+PiArICAgICAgICAgICAgICAg ICAgICAgICAgICgoT3JpZ2luYWxBdHRyaWJ1dGUmKEJJVDR8QklUNXxCSVQ2KSk+PjQpKQ0KPiA+ PiArICAgICAgICAgICAgICAgICAgICAgICApOw0KPiA+PiArICAgICAgfQ0KPiA+PiArICAgICAg UHJpbnQgKEwiXG5cblRhYmxlIENoZWNrc3VtIDogRkFJTEVEICgweCVYKVxuXG4iLCBDaGVja3N1 bSk7DQo+ID4+ICsgICAgfQ0KPiA+PiArICAgIGlmIChHZXRDb2xvdXJIaWdobGlnaHRpbmcgKCkp IHsNCj4gPj4gKyAgICAgIGdTVC0+Q29uT3V0LT5TZXRBdHRyaWJ1dGUgKGdTVC0+Q29uT3V0LCBP cmlnaW5hbEF0dHJpYnV0ZSk7DQo+ID4+ICsgICAgfQ0KPiA+PiArICB9DQo+ID4+ICsNCj4gPj4g KyAgcmV0dXJuIChDaGVja3N1bSA9PSAwKTsNCj4gPj4gK30NCj4gPj4gKw0KPiA+PiArLyoqIFRo aXMgZnVuY3Rpb24gcGVyZm9ybXMgYSByYXcgZGF0YSBkdW1wIG9mIHRoZSBBQ1BJIHRhYmxlLg0K PiA+PiArDQo+ID4+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQg b2YgdGhlIHRhYmxlIGJ1ZmZlci4NCj4gPj4gKyAgQHBhcmFtIFtpbl0gTGVuZ3RoICBUaGUgbGVu Z3RoIG9mIHRoZSBidWZmZXIuDQo+ID4+ICsqLw0KPiA+PiArVk9JRA0KPiA+PiArRUZJQVBJDQo+ ID4+ICtEdW1wUmF3ICgNCj4gPj4gKyAgSU4gVUlOVDgqIFB0ciwNCj4gPj4gKyAgSU4gVUlOVDMy IExlbmd0aA0KPiA+PiArICApDQo+ID4+ICt7DQo+ID4+ICsgIFVJTlROIEJ5dGVDb3VudCA9IDA7 DQo+ID4+ICsgIFVJTlROIFBhcnRMaW5lQ2hhcnM7DQo+ID4+ICsgIFVJTlROIEFzY2lpQnVmZmVy SW5kZXggPSAwOw0KPiA+PiArICBDSEFSOCBBc2NpaUJ1ZmZlclsxN107DQo+ID4+ICsNCj4gPj4g KyAgUHJpbnQgKEwiQWRkcmVzcyAgOiAweCVwXG4iLCBQdHIpOw0KPiA+PiArICBQcmludCAoTCJM ZW5ndGggICA6ICVkXG4iLCBMZW5ndGgpOw0KPiA+PiArDQo+ID4+ICsgIHdoaWxlIChCeXRlQ291 bnQgPCBMZW5ndGgpIHsNCj4gPj4gKyAgICBpZiAoKEJ5dGVDb3VudCAmIDB4MEYpID09IDApIHsN Cj4gPj4gKyAgICAgIEFzY2lpQnVmZmVyW0FzY2lpQnVmZmVySW5kZXhdID0gJ1wwJzsNCj4gPj4g KyAgICAgIFByaW50IChMIiAgJWFcbiUwOFggOiAiLCBBc2NpaUJ1ZmZlciwgQnl0ZUNvdW50KTsN Cj4gPj4gKyAgICAgIEFzY2lpQnVmZmVySW5kZXggPSAwOw0KPiA+PiArICAgIH0gZWxzZSBpZiAo KEJ5dGVDb3VudCAmIDB4MDcpID09IDApIHsNCj4gPj4gKyAgICAgIFByaW50IChMIi0gIik7DQo+ ID4+ICsgICAgfQ0KPiA+PiArDQo+ID4+ICsgICAgaWYgKCgqUHRyID49ICcgJykgJiYgKCpQdHIg PCAweDdGKSkgew0KPiA+PiArICAgICAgQXNjaWlCdWZmZXJbQXNjaWlCdWZmZXJJbmRleCsrXSA9 ICpQdHI7DQo+ID4+ICsgICAgfSBlbHNlIHsNCj4gPj4gKyAgICAgIEFzY2lpQnVmZmVyW0FzY2lp QnVmZmVySW5kZXgrK10gPSAnLic7DQo+ID4+ICsgICAgfQ0KPiA+PiArDQo+ID4+ICsgICAgUHJp bnQgKEwiJTAyWCAiLCAqUHRyKyspOw0KPiA+PiArDQo+ID4+ICsgICAgQnl0ZUNvdW50Kys7DQo+ ID4+ICsgIH0NCj4gPj4gKw0KPiA+PiArICAvLyBKdXN0aWZ5IHRoZSBmaW5hbCBsaW5lIHVzaW5n IHNwYWNlcyBiZWZvcmUgcHJpbnRpbmcNCj4gPj4gKyAgLy8gdGhlIEFTQ0lJIGRhdGEuDQo+ID4+ ICsgIFBhcnRMaW5lQ2hhcnMgPSAoTGVuZ3RoICYgMHgwRik7DQo+ID4+ICsgIGlmIChQYXJ0TGlu ZUNoYXJzICE9IDApIHsNCj4gPj4gKyAgICBQYXJ0TGluZUNoYXJzID0gNDggLSAoUGFydExpbmVD aGFycyAqIDMpOw0KPiA+PiArICAgIGlmICgoTGVuZ3RoICYgMHgwRikgPD0gOCkgew0KPiA+PiAr ICAgICAgUGFydExpbmVDaGFycyArPSAyOw0KPiA+PiArICAgIH0NCj4gPj4gKyAgICB3aGlsZSAo UGFydExpbmVDaGFycyA+IDApIHsNCj4gPj4gKyAgICAgIFByaW50IChMIiAiKTsNCj4gPj4gKyAg ICAgIFBhcnRMaW5lQ2hhcnMtLTsNCj4gPj4gKyAgICB9DQo+ID4+ICsgIH0NCj4gPj4gKw0KPiA+ PiArICAvLyBQcmludCBBU0NJSSBkYXRhIGZvciB0aGUgZmluYWwgbGluZS4NCj4gPj4gKyAgQXNj aWlCdWZmZXJbQXNjaWlCdWZmZXJJbmRleF0gPSAnXDAnOw0KPiA+PiArICBQcmludCAoTCIgICVh IiwgQXNjaWlCdWZmZXIpOw0KPiA+PiArfQ0KPiA+PiArDQo+ID4+ICsvKiogVGhpcyBmdW5jdGlv biB0cmFjZXMgMSBieXRlIG9mIGRhdGEgYXMgc3BlY2lmaWVkIGluIHRoZQ0KPiA+PiArICAgIGZv cm1hdCBzdHJpbmcuDQo+ID4+ICsNCj4gPj4gKyAgQHBhcmFtIFtpbl0gRm9ybWF0ICBUaGUgZm9y bWF0IHN0cmluZyBmb3IgdHJhY2luZyB0aGUgZGF0YS4NCj4gPj4gKyAgQHBhcmFtIFtpbl0gUHRy ICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiA+PiArKi8NCj4gPj4g K1ZPSUQNCj4gPj4gK0VGSUFQSQ0KPiA+PiArRHVtcFVpbnQ4ICgNCj4gPj4gKyAgSU4gQ09OU1Qg Q0hBUjE2KiBGb3JtYXQsDQo+ID4+ICsgIElOIFVJTlQ4KiAgICAgICAgUHRyDQo+ID4+ICsgICkN Cj4gPj4gK3sNCj4gPj4gKyAgUHJpbnQgKEZvcm1hdCwgKlB0cik7DQo+ID4+ICt9DQo+ID4+ICsN Cj4gPj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHRyYWNlcyAyIGJ5dGVzIG9mIGRhdGEgYXMgc3BlY2lm aWVkIGluIHRoZQ0KPiA+PiArICAgIGZvcm1hdCBzdHJpbmcuDQo+ID4+ICsNCj4gPj4gKyAgQHBh cmFtIFtpbl0gRm9ybWF0ICBUaGUgZm9ybWF0IHN0cmluZyBmb3IgdHJhY2luZyB0aGUgZGF0YS4N Cj4gPj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUg YnVmZmVyLg0KPiA+PiArKi8NCj4gPj4gK1ZPSUQNCj4gPj4gK0VGSUFQSQ0KPiA+PiArRHVtcFVp bnQxNiAoDQo+ID4+ICsgIElOIENPTlNUIENIQVIxNiogRm9ybWF0LA0KPiA+PiArICBJTiBVSU5U OCogICAgICAgIFB0cg0KPiA+PiArICApDQo+ID4+ICt7DQo+ID4+ICsgIFByaW50IChGb3JtYXQs ICooVUlOVDE2KilQdHIpOw0KPiA+PiArfQ0KPiA+PiArDQo+ID4+ICsvKiogVGhpcyBmdW5jdGlv biB0cmFjZXMgNCBieXRlcyBvZiBkYXRhIGFzIHNwZWNpZmllZCBpbiB0aGUNCj4gPj4gKyAgICBm b3JtYXQgc3RyaW5nLg0KPiA+PiArDQo+ID4+ICsgIEBwYXJhbSBbaW5dIEZvcm1hdCAgVGhlIGZv cm1hdCBzdHJpbmcgZm9yIHRyYWNpbmcgdGhlIGRhdGEuDQo+ID4+ICsgIEBwYXJhbSBbaW5dIFB0 ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gPj4gKyovDQo+ID4+ ICtWT0lEDQo+ID4+ICtFRklBUEkNCj4gPj4gK0R1bXBVaW50MzIgKA0KPiA+PiArICBJTiBDT05T VCBDSEFSMTYqIEZvcm1hdCwNCj4gPj4gKyAgSU4gVUlOVDgqICAgICAgICBQdHINCj4gPj4gKyAg KQ0KPiA+PiArew0KPiA+PiArICBQcmludCAoRm9ybWF0LCAqKFVJTlQzMiopUHRyKTsNCj4gPj4g K30NCj4gPj4gKw0KPiA+PiArLyoqIFRoaXMgZnVuY3Rpb24gdHJhY2VzIDggYnl0ZXMgb2YgZGF0 YSBhcyBzcGVjaWZpZWQgYnkgdGhlDQo+ID4+ICsgICAgZm9ybWF0IHN0cmluZy4NCj4gPj4gKw0K PiA+PiArICBAcGFyYW0gW2luXSBGb3JtYXQgIFRoZSBmb3JtYXQgc3RyaW5nIGZvciB0cmFjaW5n IHRoZSBkYXRhLg0KPiA+PiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0 YXJ0IG9mIHRoZSBidWZmZXIuDQo+ID4+ICsqLw0KPiA+PiArVk9JRA0KPiA+PiArRUZJQVBJDQo+ ID4+ICtEdW1wVWludDY0ICgNCj4gPj4gKyAgSU4gQ09OU1QgQ0hBUjE2KiBGb3JtYXQsDQo+ID4+ ICsgIElOIFVJTlQ4KiAgICAgICAgUHRyDQo+ID4+ICsgICkNCj4gPj4gK3sNCj4gPj4gKyAgLy8g U29tZSBmaWVsZHMgYXJlIG5vdCBhbGlnbmVkIGFuZCB0aGlzIGNhdXNlcyBhbGlnbm1lbnQgZmF1 bHRzDQo+ID4+ICsgIC8vIG9uIEFSTSBwbGF0Zm9ybXMgaWYgdGhlIGNvbXBpbGVyIGdlbmVyYXRl cyBMRFJEIGluc3RydWN0aW9ucy4NCj4gPj4gKyAgLy8gUGVyZm9ybSB3b3JkIGFjY2VzcyBzbyB0 aGF0IExEUkQgaW5zdHJ1Y3Rpb25zIGFyZSBub3QgZ2VuZXJhdGVkLg0KPiA+PiArICBVSU5UNjQg VmFsID0gKihVSU5UMzIqKShQdHIgKyBzaXplb2YgKFVJTlQzMikpOw0KPiA+PiArICBWYWwgPDw9 IDMyOw0KPiA+PiArICBWYWwgfD0gKihVSU5UMzIqKVB0cjsNCj4gPj4gKw0KPiA+PiArICBQcmlu dCAoRm9ybWF0LCBWYWwpOw0KPiA+PiArfQ0KPiA+PiArDQo+ID4+ICsvKiogVGhpcyBmdW5jdGlv biB0cmFjZXMgMyBjaGFyYWN0ZXJzIHdoaWNoIGNhbiBiZSBvcHRpb25hbGx5DQo+ID4+ICsgICBm b3JtYXRlZCB1c2luZyB0aGUgZm9ybWF0IHN0cmluZyBpZiBzcGVjaWZpZWQuDQo+ID4+ICsNCj4g Pj4gKyAgSWYgbm8gZm9ybWF0IHN0cmluZyBpcyBzcGVjaWZpZWQgdGhlIEZvcm1hdCBtdXN0IGJl IE5VTEwuDQo+ID4+ICsNCj4gPj4gKyAgQHBhcmFtIFtpbl0gRm9ybWF0ICBPcHRpb25hbCBmb3Jt YXQgc3RyaW5nIGZvciB0cmFjaW5nIHRoZSBkYXRhLg0KPiA+PiArICBAcGFyYW0gW2luXSBQdHIg ICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ID4+ICsqLw0KPiA+PiAr Vk9JRA0KPiA+PiArRUZJQVBJDQo+ID4+ICtEdW1wM0NoYXJzICgNCj4gPj4gKyAgSU4gQ09OU1Qg Q0hBUjE2KiBGb3JtYXQgT1BUSU9OQUwsDQo+ID4+ICsgIElOIFVJTlQ4KiAgICAgICAgUHRyDQo+ ID4+ICsgICkNCj4gPj4gK3sNCj4gPj4gKyAgUHJpbnQgKA0KPiA+PiArICAgIChGb3JtYXQgIT0g TlVMTCkgPyBGb3JtYXQgOiBMIiVjJWMlYyIsDQo+ID4+ICsgICAgUHRyWzBdLA0KPiA+PiArICAg IFB0clsxXSwNCj4gPj4gKyAgICBQdHJbMl0NCj4gPj4gKyAgICApOw0KPiA+PiArfQ0KPiA+PiAr DQo+ID4+ICsvKiogVGhpcyBmdW5jdGlvbiB0cmFjZXMgNCBjaGFyYWN0ZXJzIHdoaWNoIGNhbiBi ZSBvcHRpb25hbGx5DQo+ID4+ICsgICBmb3JtYXRlZCB1c2luZyB0aGUgZm9ybWF0IHN0cmluZyBp ZiBzcGVjaWZpZWQuDQo+ID4+ICsNCj4gPj4gKyAgSWYgbm8gZm9ybWF0IHN0cmluZyBpcyBzcGVj aWZpZWQgdGhlIEZvcm1hdCBtdXN0IGJlIE5VTEwuDQo+ID4+ICsNCj4gPj4gKyAgQHBhcmFtIFtp bl0gRm9ybWF0ICBPcHRpb25hbCBmb3JtYXQgc3RyaW5nIGZvciB0cmFjaW5nIHRoZSBkYXRhLg0K PiA+PiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBi dWZmZXIuDQo+ID4+ICsqLw0KPiA+PiArVk9JRA0KPiA+PiArRUZJQVBJDQo+ID4+ICtEdW1wNENo YXJzICgNCj4gPj4gKyAgSU4gQ09OU1QgQ0hBUjE2KiBGb3JtYXQgT1BUSU9OQUwsDQo+ID4+ICsg IElOIFVJTlQ4KiAgICAgICAgUHRyDQo+ID4+ICsgICkNCj4gPj4gK3sNCj4gPj4gKyAgUHJpbnQg KA0KPiA+PiArICAgIChGb3JtYXQgIT0gTlVMTCkgPyBGb3JtYXQgOiBMIiVjJWMlYyVjIiwNCj4g Pj4gKyAgICBQdHJbMF0sDQo+ID4+ICsgICAgUHRyWzFdLA0KPiA+PiArICAgIFB0clsyXSwNCj4g Pj4gKyAgICBQdHJbM10NCj4gPj4gKyAgICApOw0KPiA+PiArfQ0KPiA+PiArDQo+ID4+ICsvKiog VGhpcyBmdW5jdGlvbiB0cmFjZXMgNiBjaGFyYWN0ZXJzIHdoaWNoIGNhbiBiZSBvcHRpb25hbGx5 DQo+ID4+ICsgICBmb3JtYXRlZCB1c2luZyB0aGUgZm9ybWF0IHN0cmluZyBpZiBzcGVjaWZpZWQu DQo+ID4+ICsNCj4gPj4gKyAgSWYgbm8gZm9ybWF0IHN0cmluZyBpcyBzcGVjaWZpZWQgdGhlIEZv cm1hdCBtdXN0IGJlIE5VTEwuDQo+ID4+ICsNCj4gPj4gKyAgQHBhcmFtIFtpbl0gRm9ybWF0ICBP cHRpb25hbCBmb3JtYXQgc3RyaW5nIGZvciB0cmFjaW5nIHRoZSBkYXRhLg0KPiA+PiArICBAcGFy YW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ID4+ ICsqLw0KPiA+PiArVk9JRA0KPiA+PiArRUZJQVBJDQo+ID4+ICtEdW1wNkNoYXJzICgNCj4gPj4g KyAgSU4gQ09OU1QgQ0hBUjE2KiBGb3JtYXQgT1BUSU9OQUwsDQo+ID4+ICsgIElOIFVJTlQ4KiAg ICAgICAgUHRyDQo+ID4+ICsgICkNCj4gPj4gK3sNCj4gPj4gKyAgUHJpbnQgKA0KPiA+PiArICAg IChGb3JtYXQgIT0gTlVMTCkgPyBGb3JtYXQgOiBMIiVjJWMlYyVjJWMlYyIsDQo+ID4+ICsgICAg UHRyWzBdLA0KPiA+PiArICAgIFB0clsxXSwNCj4gPj4gKyAgICBQdHJbMl0sDQo+ID4+ICsgICAg UHRyWzNdLA0KPiA+PiArICAgIFB0cls0XSwNCj4gPj4gKyAgICBQdHJbNV0NCj4gPj4gKyAgICAp Ow0KPiA+PiArfQ0KPiA+PiArDQo+ID4+ICsvKiogVGhpcyBmdW5jdGlvbiB0cmFjZXMgOCBjaGFy YWN0ZXJzIHdoaWNoIGNhbiBiZSBvcHRpb25hbGx5DQo+ID4+ICsgICBmb3JtYXRlZCB1c2luZyB0 aGUgZm9ybWF0IHN0cmluZyBpZiBzcGVjaWZpZWQuDQo+ID4+ICsNCj4gPj4gKyAgSWYgbm8gZm9y bWF0IHN0cmluZyBpcyBzcGVjaWZpZWQgdGhlIEZvcm1hdCBtdXN0IGJlIE5VTEwuDQo+ID4+ICsN Cj4gPj4gKyAgQHBhcmFtIFtpbl0gRm9ybWF0ICBPcHRpb25hbCBmb3JtYXQgc3RyaW5nIGZvciB0 cmFjaW5nIHRoZSBkYXRhLg0KPiA+PiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8g dGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ID4+ICsqLw0KPiA+PiArVk9JRA0KPiA+PiArRUZJ QVBJDQo+ID4+ICtEdW1wOENoYXJzICgNCj4gPj4gKyAgSU4gQ09OU1QgQ0hBUjE2KiBGb3JtYXQg T1BUSU9OQUwsDQo+ID4+ICsgIElOIFVJTlQ4KiAgICAgICAgUHRyDQo+ID4+ICsgICkNCj4gPj4g K3sNCj4gPj4gKyAgUHJpbnQgKA0KPiA+PiArICAgIChGb3JtYXQgIT0gTlVMTCkgPyBGb3JtYXQg OiBMIiVjJWMlYyVjJWMlYyVjJWMiLA0KPiA+PiArICAgIFB0clswXSwNCj4gPj4gKyAgICBQdHJb MV0sDQo+ID4+ICsgICAgUHRyWzJdLA0KPiA+PiArICAgIFB0clszXSwNCj4gPj4gKyAgICBQdHJb NF0sDQo+ID4+ICsgICAgUHRyWzVdLA0KPiA+PiArICAgIFB0cls2XSwNCj4gPj4gKyAgICBQdHJb N10NCj4gPj4gKyAgICApOw0KPiA+PiArfQ0KPiA+PiArDQo+ID4+ICsvKiogVGhpcyBmdW5jdGlv biBpbmRlbnRzIGFuZCBwcmludHMgdGhlIEFDUEkgdGFibGUgRmllbGQgTmFtZS4NCj4gPj4gKw0K PiA+PiArICBAcGFyYW0gW2luXSBJbmRlbnQgICAgICBOdW1iZXIgb2Ygc3BhY2VzIHRvIGFkZCB0 byB0aGUgZ2xvYmFsIHRhYmxlDQo+IGluZGVudC4NCj4gPj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgVGhlIGdsb2JhbCB0YWJsZSBpbmRlbnQgaXMgMCBieSBkZWZhdWx0Ow0KPiBob3dldmVy DQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMgdmFsdWUgaXMgdXBkYXRlZCBv biBlbnRyeSB0byB0aGUNCj4gUGFyc2VBY3BpKCkNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgYnkgYWRkaW5nIHRoZSBpbmRlbnQgdmFsdWUgcHJvdmlkZWQgdG8NCj4gUGFyc2VBY3Bp KCkNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHJlc3RvcmVkIGJhY2sgb24g ZXhpdC4NCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlcmVmb3JlIHRoZSB0b3Rh bCBpbmRlbnQgaW4gdGhlIG91dHB1dCBpcw0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAg ICBkZXBlbmRlbnQgb24gZnJvbSB3aGVyZSB0aGlzIGZ1bmN0aW9uIGlzDQo+IGNhbGxlZC4NCj4g Pj4gKyAgQHBhcmFtIFtpbl0gRmllbGROYW1lICAgUG9pbnRlciB0byB0aGUgRmllbGQgTmFtZS4N Cj4gPj4gKyovDQo+ID4+ICtWT0lEDQo+ID4+ICtFRklBUEkNCj4gPj4gK1ByaW50RmllbGROYW1l ICgNCj4gPj4gKyAgSU4gVUlOVDMyICAgICAgICAgSW5kZW50LA0KPiA+PiArICBJTiBDT05TVCBD SEFSMTYqICBGaWVsZE5hbWUNCj4gPj4gKykNCj4gPj4gK3sNCj4gPj4gKyAgUHJpbnQgKA0KPiA+ PiArICAgIEwiJSphJS0qcyA6ICIsDQo+ID4+ICsgICAgZ0luZGVudCArIEluZGVudCwNCj4gPj4g KyAgICAiIiwNCj4gPj4gKyAgICAoT1VUUFVUX0ZJRUxEX0NPTFVNTl9XSURUSCAtIGdJbmRlbnQg LSBJbmRlbnQpLA0KPiA+PiArICAgIEZpZWxkTmFtZQ0KPiA+PiArICAgICk7DQo+ID4+ICt9DQo+ ID4+ICsNCj4gPj4gKy8qKiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gcGFyc2UgYW4gQUNQSSB0 YWJsZSBidWZmZXIuDQo+ID4+ICsNCj4gPj4gKyAgVGhlIEFDUEkgdGFibGUgYnVmZmVyIGlzIHBh cnNlZCB1c2luZyB0aGUgQUNQSSB0YWJsZSBwYXJzZXIgaW5mb3JtYXRpb24NCj4gPj4gKyAgc3Bl Y2lmaWVkIGJ5IGEgcG9pbnRlciB0byBhbiBhcnJheSBvZiBBQ1BJX1BBUlNFUiBlbGVtZW50cy4g VGhpcyBwYXJzZXINCj4gPj4gKyAgZnVuY3Rpb24gaXRlcmF0ZXMgdGhyb3VnaCBlYWNoIGl0ZW0g b24gdGhlIEFDUElfUEFSU0VSIGFycmF5IGFuZCBsb2dzDQo+IHRoZQ0KPiA+PiArICBBQ1BJIHRh YmxlIGZpZWxkcy4NCj4gPj4gKw0KPiA+PiArICBUaGlzIGZ1bmN0aW9uIGNhbiBvcHRpb25hbGx5 IGJlIHVzZWQgdG8gcGFyc2UgQUNQSSB0YWJsZXMgYW5kIGZldGNoIHNwZWNpZmljDQo+ID4+ICsg IGZpZWxkIHZhbHVlcy4gVGhlIEl0ZW1QdHIgbWVtYmVyIG9mIHRoZSBBQ1BJX1BBUlNFUiBzdHJ1 Y3R1cmUgKHdoZXJlDQo+IHVzZWQpDQo+ID4+ICsgIGlzIHVwZGF0ZWQgYnkgdGhpcyBwYXJzZXIg ZnVuY3Rpb24gdG8gcG9pbnQgdG8gdGhlIHNlbGVjdGVkIGZpZWxkIGRhdGENCj4gPj4gKyAgKGUu Zy4gdXNlZnVsIGZvciB2YXJpYWJsZSBsZW5ndGggbmVzdGVkIGZpZWxkcykuDQo+ID4+ICsNCj4g Pj4gKyAgQHBhcmFtIFtpbl0gVHJhY2UgICAgICAgIFRyYWNlIHRoZSBBQ1BJIGZpZWxkcyBUUlVF IGVsc2Ugb25seSBwYXJzZSB0aGUNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHRh YmxlLg0KPiA+PiArICBAcGFyYW0gW2luXSBJbmRlbnQgICAgICAgTnVtYmVyIG9mIHNwYWNlcyB0 byBpbmRlbnQgdGhlIG91dHB1dC4NCj4gPj4gKyAgQHBhcmFtIFtpbl0gQXNjaWlOYW1lICAgIE9w dGlvbmFsIHBvaW50ZXIgdG8gYW4gQVNDSUkgc3RyaW5nIHRoYXQNCj4gZGVzY3JpYmVzDQo+ID4+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgdGFibGUgYmVpbmcgcGFyc2VkLg0KPiA+ PiArICBAcGFyYW0gW2luXSBQdHIgICAgICAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhl IGJ1ZmZlci4NCj4gPj4gKyAgQHBhcmFtIFtpbl0gTGVuZ3RoICAgICAgIExlbmd0aCBvZiB0aGUg YnVmZmVyIHBvaW50ZWQgYnkgUHRyLg0KPiA+PiArICBAcGFyYW0gW2luXSBQYXJzZXIgICAgICAg UG9pbnRlciB0byBhbiBhcnJheSBvZiBBQ1BJX1BBUlNFUiBzdHJ1Y3R1cmUNCj4gdGhhdA0KPiA+ PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpYmVzIHRoZSB0YWJsZSBiZWluZyBw YXJzZWQuDQo+ID4+ICsgIEBwYXJhbSBbaW5dIFBhcnNlckl0ZW1zICBOdW1iZXIgb2YgaXRlbXMg aW4gdGhlIEFDUElfUEFSU0VSIGFycmF5Lg0KPiA+PiArDQo+ID4+ICsgIEByZXR2YWwgTnVtYmVy IG9mIGJ5dGVzIHBhcnNlZC4NCj4gPj4gKyovDQo+ID4+ICtVSU5UMzINCj4gPj4gK0VGSUFQSQ0K PiA+PiArUGFyc2VBY3BpICgNCj4gPj4gKyAgSU4gQk9PTEVBTiAgICAgICAgICAgIFRyYWNlLA0K PiA+PiArICBJTiBVSU5UMzIgICAgICAgICAgICAgSW5kZW50LA0KPiA+PiArICBJTiBDT05TVCBD SEFSOCogICAgICAgQXNjaWlOYW1lIE9QVElPTkFMLA0KPiA+PiArICBJTiBVSU5UOCogICAgICAg ICAgICAgUHRyLA0KPiA+PiArICBJTiBVSU5UMzIgICAgICAgICAgICAgTGVuZ3RoLA0KPiA+PiAr ICBJTiBDT05TVCBBQ1BJX1BBUlNFUiogUGFyc2VyLA0KPiA+PiArICBJTiBVSU5UMzIgICAgICAg ICAgICAgUGFyc2VySXRlbXMNCj4gPj4gKykNCj4gPj4gK3sNCj4gPj4gKyAgVUlOVDMyICBJbmRl eDsNCj4gPj4gKyAgVUlOVDMyICBPZmZzZXQgPSAwOw0KPiA+PiArDQo+ID4+ICsgIC8vIEluY3Jl bWVudCB0aGUgSW5kZW50DQo+ID4+ICsgIGdJbmRlbnQgKz0gSW5kZW50Ow0KPiA+PiArDQo+ID4+ ICsgIGlmIChUcmFjZSAmJiAoQXNjaWlOYW1lICE9IE5VTEwpKXsNCj4gPj4gKyAgICBCT09MRUFO IEhpZ2hMaWdodCA9IEdldENvbG91ckhpZ2hsaWdodGluZyAoKTsNCj4gPj4gKyAgICBVSU5UTiAg IE9yaWdpbmFsQXR0cmlidXRlOw0KPiA+PiArDQo+ID4+ICsgICAgaWYgKEhpZ2hMaWdodCkgew0K PiA+PiArICAgICAgT3JpZ2luYWxBdHRyaWJ1dGUgPSBnU1QtPkNvbk91dC0+TW9kZS0+QXR0cmli dXRlOw0KPiA+PiArICAgICAgZ1NULT5Db25PdXQtPlNldEF0dHJpYnV0ZSAoDQo+ID4+ICsgICAg ICAgICAgICAgICAgICAgICBnU1QtPkNvbk91dCwNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAg IEVGSV9URVhUX0FUVFIoRUZJX1lFTExPVywNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAg KChPcmlnaW5hbEF0dHJpYnV0ZSYoQklUNHxCSVQ1fEJJVDYpKT4+NCkpDQo+ID4+ICsgICAgICAg ICAgICAgICAgICAgICApOw0KPiA+PiArICAgIH0NCj4gPj4gKyAgICBQcmludCAoDQo+ID4+ICsg ICAgICBMIiUqYSUtKmEgOlxuIiwNCj4gPj4gKyAgICAgIGdJbmRlbnQsDQo+ID4+ICsgICAgICAi IiwNCj4gPj4gKyAgICAgIChPVVRQVVRfRklFTERfQ09MVU1OX1dJRFRIIC0gZ0luZGVudCksDQo+ ID4+ICsgICAgICBBc2NpaU5hbWUNCj4gPj4gKyAgICAgICk7DQo+ID4+ICsgICAgaWYgKEhpZ2hM aWdodCkgew0KPiA+PiArICAgICAgZ1NULT5Db25PdXQtPlNldEF0dHJpYnV0ZSAoZ1NULT5Db25P dXQsIE9yaWdpbmFsQXR0cmlidXRlKTsNCj4gPj4gKyAgICB9DQo+ID4+ICsgIH0NCj4gPj4gKw0K PiA+PiArICBmb3IgKEluZGV4ID0gMDsgSW5kZXggPCBQYXJzZXJJdGVtczsgSW5kZXgrKykgew0K PiA+PiArICAgIGlmICgoT2Zmc2V0ICsgUGFyc2VyW0luZGV4XS5MZW5ndGgpID4gTGVuZ3RoKSB7 DQo+ID4+ICsgICAgICAvLyBXZSBkb24ndCBwYXJzZSBwYXN0IHRoZSBlbmQgb2YgdGhlIG1heCBs ZW5ndGggc3BlY2lmaWVkDQo+ID4+ICsgICAgICBicmVhazsNCj4gPj4gKyAgICB9DQo+ID4+ICsN Cj4gPj4gKyAgICBpZiAoT2Zmc2V0ICE9IFBhcnNlcltJbmRleF0uT2Zmc2V0KSB7DQo+ID4+ICsg ICAgICBJbmNyZW1lbnRFcnJvckNvdW50ICgpOw0KPiA+PiArICAgICAgUHJpbnQgKA0KPiA+PiAr ICAgICAgICBMIlxuRVJST1I6ICVhOiBPZmZzZXQgTWlzbWF0Y2ggZm9yICVzXG4iDQo+ID4+ICsg ICAgICAgICAgIkN1cnJlbnRPZmZzZXQgPSAlZCBGaWVsZE9mZnNldCA9ICVkXG4iLA0KPiA+PiAr ICAgICAgICBBc2NpaU5hbWUsDQo+ID4+ICsgICAgICAgIFBhcnNlcltJbmRleF0uTmFtZVN0ciwN Cj4gPj4gKyAgICAgICAgT2Zmc2V0LA0KPiA+PiArICAgICAgICBQYXJzZXJbSW5kZXhdLk9mZnNl dA0KPiA+PiArICAgICAgICApOw0KPiA+PiArICAgIH0NCj4gPj4gKw0KPiA+PiArICAgIGlmIChU cmFjZSkgew0KPiA+PiArICAgICAgLy8gaWYgdGhlcmUgaXMgYSBGb3JtYXR0ZXIgZnVuY3Rpb24g bGV0IHRoZSBmdW5jdGlvbiBoYW5kbGUNCj4gPj4gKyAgICAgIC8vIHRoZSBwcmludGluZyBlbHNl IGlmIGEgRm9ybWF0IGlzIHNwZWNpZmllZCBpbiB0aGUgdGFibGUgdXNlDQo+ID4+ICsgICAgICAv LyB0aGUgRm9ybWF0IGZvciBwcmludGluZw0KPiA+PiArICAgICAgUHJpbnRGaWVsZE5hbWUgKDIs IFBhcnNlcltJbmRleF0uTmFtZVN0cik7DQo+ID4+ICsgICAgICBpZiAoUGFyc2VyW0luZGV4XS5Q cmludEZvcm1hdHRlciAhPSBOVUxMKSB7DQo+ID4+ICsgICAgICAgIFBhcnNlcltJbmRleF0uUHJp bnRGb3JtYXR0ZXIgKFBhcnNlcltJbmRleF0uRm9ybWF0LCBQdHIpOw0KPiA+PiArICAgICAgfSBl bHNlIGlmIChQYXJzZXJbSW5kZXhdLkZvcm1hdCAhPSBOVUxMKSB7DQo+ID4+ICsgICAgICAgIHN3 aXRjaCAoUGFyc2VyW0luZGV4XS5MZW5ndGgpIHsNCj4gPj4gKyAgICAgICAgICBjYXNlIDE6DQo+ ID4+ICsgICAgICAgICAgICBEdW1wVWludDggKFBhcnNlcltJbmRleF0uRm9ybWF0LCBQdHIpOw0K PiA+PiArICAgICAgICAgICAgYnJlYWs7DQo+ID4+ICsgICAgICAgICAgY2FzZSAyOg0KPiA+PiAr ICAgICAgICAgICAgRHVtcFVpbnQxNiAoUGFyc2VyW0luZGV4XS5Gb3JtYXQsIFB0cik7DQo+ID4+ ICsgICAgICAgICAgICBicmVhazsNCj4gPj4gKyAgICAgICAgICBjYXNlIDQ6DQo+ID4+ICsgICAg ICAgICAgICBEdW1wVWludDMyIChQYXJzZXJbSW5kZXhdLkZvcm1hdCwgUHRyKTsNCj4gPj4gKyAg ICAgICAgICAgIGJyZWFrOw0KPiA+PiArICAgICAgICAgIGNhc2UgODoNCj4gPj4gKyAgICAgICAg ICAgIER1bXBVaW50NjQgKFBhcnNlcltJbmRleF0uRm9ybWF0LCBQdHIpOw0KPiA+PiArICAgICAg ICAgICAgYnJlYWs7DQo+ID4+ICsgICAgICAgICAgZGVmYXVsdDoNCj4gPj4gKyAgICAgICAgICAg IFByaW50ICgNCj4gPj4gKyAgICAgICAgICAgICAgTCJcbkVSUk9SOiAlYTogQ0FOTk9UIFBBUlNF IFRISVMgRklFTEQsIEZpZWxkIExlbmd0aA0KPiA9ICVkXG4iLA0KPiA+PiArICAgICAgICAgICAg ICBBc2NpaU5hbWUsDQo+ID4+ICsgICAgICAgICAgICAgIFBhcnNlcltJbmRleF0uTGVuZ3RoDQo+ ID4+ICsgICAgICAgICAgICAgICk7DQo+ID4+ICsgICAgICAgIH0gLy8gc3dpdGNoDQo+ID4+ICsN Cj4gPj4gKyAgICAgICAgLy8gVmFsaWRhdGluZyBvbmx5IG1ha2VzIHNlbnNlIGlmIHdlIGFyZSB0 cmFjaW5nDQo+ID4+ICsgICAgICAgIC8vIHRoZSBwYXJzZWQgdGFibGUgZW50cmllcywgdG8gcmVw b3J0IGJ5IHRhYmxlIG5hbWUuDQo+ID4+ICsgICAgICAgIGlmIChQYXJzZXJbSW5kZXhdLkZpZWxk VmFsaWRhdG9yICE9IE5VTEwpIHsNCj4gPj4gKyAgICAgICAgICBQYXJzZXJbSW5kZXhdLkZpZWxk VmFsaWRhdG9yIChQdHIsIFBhcnNlcltJbmRleF0uQ29udGV4dCk7DQo+ID4+ICsgICAgICAgIH0N Cj4gPj4gKyAgICAgIH0NCj4gPj4gKyAgICAgIFByaW50IChMIlxuIik7DQo+ID4+ICsgICAgfSAv LyBpZiAoVHJhY2UpDQo+ID4+ICsNCj4gPj4gKyAgICBpZiAoUGFyc2VyW0luZGV4XS5JdGVtUHRy ICE9IE5VTEwpIHsNCj4gPj4gKyAgICAgICpQYXJzZXJbSW5kZXhdLkl0ZW1QdHIgPSAoVk9JRCop UHRyOw0KPiA+PiArICAgIH0NCj4gPj4gKw0KPiA+PiArICAgIFB0ciArPSBQYXJzZXJbSW5kZXhd Lkxlbmd0aDsNCj4gPj4gKyAgICBPZmZzZXQgKz0gUGFyc2VyW0luZGV4XS5MZW5ndGg7DQo+ID4+ ICsgIH0gLy8gZm9yDQo+ID4+ICsNCj4gPj4gKyAgLy8gRGVjcmVtZW50IHRoZSBJbmRlbnQNCj4g Pj4gKyAgZ0luZGVudCAtPSBJbmRlbnQ7DQo+ID4+ICsgIHJldHVybiBPZmZzZXQ7DQo+ID4+ICt9 DQo+ID4+ICsNCj4gPj4gKy8qKiBBbiBhcnJheSBkZXNjcmliaW5nIHRoZSBBQ1BJIEdlbmVyaWMg QWRkcmVzcyBTdHJ1Y3R1cmUuDQo+ID4+ICsgIFRoZSBHYXNQYXJzZXIgYXJyYXkgaXMgdXNlZCBi eSB0aGUgUGFyc2VBY3BpIGZ1bmN0aW9uIHRvIHBhcnNlIGFuZC9vcg0KPiB0cmFjZQ0KPiA+PiAr ICB0aGUgR0FTIHN0cnVjdHVyZS4NCj4gPj4gKyovDQo+ID4+ICtTVEFUSUMgQ09OU1QgQUNQSV9Q QVJTRVIgR2FzUGFyc2VyW10gPSB7DQo+ID4+ICsgIHtMIkFkZHJlc3MgU3BhY2UgSUQiLCAxLCAw LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiUmVnaXN0ZXIg Qml0IFdpZHRoIiwgMSwgMSwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4+ ICsgIHtMIlJlZ2lzdGVyIEJpdCBPZmZzZXQiLCAxLCAyLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBO VUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiQWRkcmVzcyBTaXplIiwgMSwgMywgTCIweCV4IiwgTlVM TCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4+ICsgIHtMIkFkZHJlc3MiLCA4LCA0LCBMIjB4JWx4 IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0NCj4gPj4gK307DQo+ID4+ICsNCj4gPj4gKy8qKiBU aGlzIGZ1bmN0aW9uIGluZGVudHMgYW5kIHRyYWNlcyB0aGUgR0FTIHN0cnVjdHVyZSBhcyBkZXNj cmliZWQNCj4gPj4gKyAgICBieSB0aGUgR2FzUGFyc2VyLg0KPiA+PiArDQo+ID4+ICsgIEBwYXJh bSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gPj4g KyAgQHBhcmFtIFtpbl0gSW5kZW50ICBOdW1iZXIgb2Ygc3BhY2VzIHRvIGluZGVudCB0aGUgb3V0 cHV0Lg0KPiA+PiArKi8NCj4gPj4gK1ZPSUQNCj4gPj4gK0VGSUFQSQ0KPiA+PiArRHVtcEdhc1N0 cnVjdCAoDQo+ID4+ICsgIElOIFVJTlQ4KiAgICAgICAgUHRyLA0KPiA+PiArICBJTiBVSU5UMzIg ICAgICAgIEluZGVudA0KPiA+PiArICApDQo+ID4+ICt7DQo+ID4+ICsgIFByaW50IChMIlxuIik7 DQo+ID4+ICsgIFBhcnNlQWNwaSAoDQo+ID4+ICsgICAgVFJVRSwNCj4gPj4gKyAgICBJbmRlbnQs DQo+ID4+ICsgICAgTlVMTCwNCj4gPj4gKyAgICBQdHIsDQo+ID4+ICsgICAgR0FTX0xFTkdUSCwN Cj4gPj4gKyAgICBQQVJTRVJfUEFSQU1TIChHYXNQYXJzZXIpDQo+ID4+ICsgICAgKTsNCj4gPj4g K30NCj4gPj4gKw0KPiA+PiArLyoqIFRoaXMgZnVuY3Rpb24gdHJhY2VzIHRoZSBHQVMgc3RydWN0 dXJlIGFzIGRlc2NyaWJlZCBieSB0aGUgR2FzUGFyc2VyLg0KPiA+PiArDQo+ID4+ICsgIEBwYXJh bSBbaW5dIEZvcm1hdCAgT3B0aW9uYWwgZm9ybWF0IHN0cmluZyBmb3IgdHJhY2luZyB0aGUgZGF0 YS4NCj4gPj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0 aGUgYnVmZmVyLg0KPiA+PiArKi8NCj4gPj4gK1ZPSUQNCj4gPj4gK0VGSUFQSQ0KPiA+PiArRHVt cEdhcyAoDQo+ID4+ICsgIElOIENPTlNUIENIQVIxNiogRm9ybWF0IE9QVElPTkFMLA0KPiA+PiAr ICBJTiBVSU5UOCogICAgICAgIFB0cg0KPiA+PiArICApDQo+ID4+ICt7DQo+ID4+ICsgIER1bXBH YXNTdHJ1Y3QgKFB0ciwgMik7DQo+ID4+ICt9DQo+ID4+ICsNCj4gPj4gKy8qKiBUaGlzIGZ1bmN0 aW9uIHRyYWNlcyB0aGUgQUNQSSBoZWFkZXIgYXMgZGVzY3JpYmVkIGJ5IHRoZQ0KPiBBY3BpSGVh ZGVyUGFyc2VyLg0KPiA+PiArDQo+ID4+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgICAgICBQb2lu dGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiA+PiArDQo+ID4+ICsgIEByZXR2YWwg TnVtYmVyIG9mIGJ5dGVzIHBhcnNlZC4NCj4gPj4gKyovDQo+ID4+ICtVSU5UMzINCj4gPj4gK0VG SUFQSQ0KPiA+PiArRHVtcEFjcGlIZWFkZXIgKA0KPiA+PiArICBJTiBVSU5UOCogUHRyDQo+ID4+ ICsgICkNCj4gPj4gK3sNCj4gPj4gKyAgQUNQSV9ERVNDUklQVElPTl9IRUFERVJfSU5GTyBBY3Bp SGRySW5mbzsNCj4gPj4gKyAgQUNQSV9QQVJTRVIgQWNwaUhlYWRlclBhcnNlcltdID0gew0KPiA+ PiArICAgIFBBUlNFX0FDUElfSEVBREVSICgmQWNwaUhkckluZm8pDQo+ID4+ICsgIH07DQo+ID4+ ICsNCj4gPj4gKyAgcmV0dXJuIFBhcnNlQWNwaSAoDQo+ID4+ICsgICAgICAgICAgIFRSVUUsDQo+ ID4+ICsgICAgICAgICAgIDAsDQo+ID4+ICsgICAgICAgICAgICJBQ1BJIFRhYmxlIEhlYWRlciIs DQo+ID4+ICsgICAgICAgICAgIFB0ciwNCj4gPj4gKyAgICAgICAgICAgQUNQSV9ERVNDUklQVElP Tl9IRUFERVJfTEVOR1RILA0KPiA+PiArICAgICAgICAgICBQQVJTRVJfUEFSQU1TIChBY3BpSGVh ZGVyUGFyc2VyKQ0KPiA+PiArICAgICAgICAgICApOw0KPiA+PiArfQ0KPiA+PiArDQo+ID4+ICsv KiogVGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIEFDUEkgaGVhZGVyIGFzIGRlc2NyaWJlZCBieSB0 aGUNCj4gQWNwaUhlYWRlclBhcnNlci4NCj4gPj4gKw0KPiA+PiArICBUaGlzIGZ1bmN0aW9uIG9w dGlvbmFsbHkgcmV0dXJucyB0aGUgc2lnbmF0dXJlLCBsZW5ndGggYW5kIHJldmlzaW9uIG9mIHRo ZQ0KPiA+PiArICBBQ1BJIHRhYmxlLg0KPiA+PiArDQo+ID4+ICsgIEBwYXJhbSBbaW5dICBQdHIg ICAgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ID4+ICsgIEBwYXJh bSBbb3V0XSBTaWduYXR1cmUgIEdldHMgbG9jYXRpb24gb2YgdGhlIEFDUEkgdGFibGUgc2lnbmF0 dXJlLg0KPiA+PiArICBAcGFyYW0gW291dF0gTGVuZ3RoICAgICBHZXRzIGxvY2F0aW9uIG9mIHRo ZSBsZW5ndGggb2YgdGhlIEFDUEkgdGFibGUuDQo+ID4+ICsgIEBwYXJhbSBbb3V0XSBSZXZpc2lv biAgIEdldHMgbG9jYXRpb24gb2YgdGhlIHJldmlzaW9uIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiA+ PiArDQo+ID4+ICsgIEByZXR2YWwgTnVtYmVyIG9mIGJ5dGVzIHBhcnNlZC4NCj4gPj4gKyovDQo+ ID4+ICtVSU5UMzINCj4gPj4gK0VGSUFQSQ0KPiA+PiArUGFyc2VBY3BpSGVhZGVyICgNCj4gPj4g KyAgSU4gIFVJTlQ4KiAgICAgICAgIFB0ciwNCj4gPj4gKyAgT1VUIENPTlNUIFVJTlQzMioqIFNp Z25hdHVyZSwNCj4gPj4gKyAgT1VUIENPTlNUIFVJTlQzMioqIExlbmd0aCwNCj4gPj4gKyAgT1VU IENPTlNUIFVJTlQ4KiogIFJldmlzaW9uDQo+ID4+ICsgICkNCj4gPj4gK3sNCj4gPj4gKyAgVUlO VDMyICAgICAgICAgICAgICAgICAgICAgICAgQnl0ZXNQYXJzZWQ7DQo+ID4+ICsgIEFDUElfREVT Q1JJUFRJT05fSEVBREVSX0lORk8gIEFjcGlIZHJJbmZvOw0KPiA+PiArICBBQ1BJX1BBUlNFUiBB Y3BpSGVhZGVyUGFyc2VyW10gPSB7DQo+ID4+ICsgICAgUEFSU0VfQUNQSV9IRUFERVIgKCZBY3Bp SGRySW5mbykNCj4gPj4gKyAgfTsNCj4gPj4gKw0KPiA+PiArICBCeXRlc1BhcnNlZCA9IFBhcnNl QWNwaSAoDQo+ID4+ICsgICAgICAgICAgICAgICAgICBGQUxTRSwNCj4gPj4gKyAgICAgICAgICAg ICAgICAgIDAsDQo+ID4+ICsgICAgICAgICAgICAgICAgICBOVUxMLA0KPiA+PiArICAgICAgICAg ICAgICAgICAgUHRyLA0KPiA+PiArICAgICAgICAgICAgICAgICAgQUNQSV9ERVNDUklQVElPTl9I RUFERVJfTEVOR1RILA0KPiA+PiArICAgICAgICAgICAgICAgICAgUEFSU0VSX1BBUkFNUyAoQWNw aUhlYWRlclBhcnNlcikNCj4gPj4gKyAgICAgICAgICAgICAgICAgICk7DQo+ID4+ICsNCj4gPj4g KyAgKlNpZ25hdHVyZSA9IEFjcGlIZHJJbmZvLlNpZ25hdHVyZTsNCj4gPj4gKyAgKkxlbmd0aCA9 IEFjcGlIZHJJbmZvLkxlbmd0aDsNCj4gPj4gKyAgKlJldmlzaW9uID0gQWNwaUhkckluZm8uUmV2 aXNpb247DQo+ID4+ICsNCj4gPj4gKyAgcmV0dXJuIEJ5dGVzUGFyc2VkOw0KPiA+PiArfQ0KPiA+ PiBkaWZmIC0tZ2l0IGEvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRM aWIvQWNwaVRhYmxlUGFyc2VyLmMNCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlW aWV3Q29tbWFuZExpYi9BY3BpVGFibGVQYXJzZXIuYw0KPiA+PiBuZXcgZmlsZSBtb2RlIDEwMDY0 NA0KPiA+PiBpbmRleA0KPiAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw Li41OTgzZWUyMTEyOWIwYzQwZTE5ZDcNCj4gNDFmYjYxMzU5YTIzZWU2MjJkMA0KPiA+PiAtLS0g L2Rldi9udWxsDQo+ID4+ICsrKyBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdD b21tYW5kTGliL0FjcGlUYWJsZVBhcnNlci5jDQo+ID4+IEBAIC0wLDAgKzEsMjE1IEBADQo+ID4+ ICsvKioNCj4gPj4gKyAgQUNQSSB0YWJsZSBwYXJzZXINCj4gPj4gKw0KPiA+PiArICBDb3B5cmln aHQgKGMpIDIwMTYgLSAyMDE4LCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4g Pj4gKyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiA+PiAr ICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29u ZGl0aW9ucyBvZiB0aGUNCj4gQlNEIExpY2Vuc2UNCj4gPj4gKyAgd2hpY2ggYWNjb21wYW5pZXMg dGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZQ0K PiBmb3VuZCBhdA0KPiA+PiArICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxp Y2Vuc2UucGhwDQo+ID4+ICsNCj4gPj4gKyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5E RVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyINCj4gQkFTSVMsDQo+ID4+ICsgIFdJVEhP VVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUg0KPiBF WFBSRVNTIE9SIElNUExJRUQuDQo+ID4+ICsqKi8NCj4gPj4gKw0KPiA+PiArI2luY2x1ZGUgPFVl ZmkuaD4NCj4gPj4gKyNpbmNsdWRlIDxJbmR1c3RyeVN0YW5kYXJkL0FjcGkuaD4NCj4gPj4gKyNp bmNsdWRlIDxMaWJyYXJ5L1VlZmlMaWIuaD4NCj4gPj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0FjcGlW aWV3L0FjcGlQYXJzZXIuaD4NCj4gPj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0FjcGlWaWV3L0FjcGlU YWJsZVBhcnNlci5oPg0KPiA+PiArI2luY2x1ZGUgIkFjcGlWaWV3LmgiDQo+ID4+ICsNCj4gPj4g Ky8qKiBBIGxpc3Qgb2YgcmVnaXN0ZXJlZCBBQ1BJIHRhYmxlIHBhcnNlcnMuDQo+ID4+ICsqLw0K PiA+PiArU1RBVElDIEFDUElfVEFCTEVfUEFSU0VSIG1UYWJsZVBhcnNlckxpc3RbTUFYX0FDUElf VEFCTEVfUEFSU0VSU107DQo+ID4+ICsNCj4gPj4gKy8qKiBSZWdpc3RlciB0aGUgQUNQSSB0YWJs ZSBQYXJzZXINCj4gPj4gKw0KPiA+PiArICBUaGlzIGZ1bmN0aW9uIHJlZ2lzdGVycyB0aGUgQUNQ SSB0YWJsZSBwYXJzZXIuDQo+ID4+ICsNCj4gPj4gKyAgQHBhcmFtIFtpbl0gU2lnbmF0dXJlICAg VGhlIEFDUEkgdGFibGUgc2lnbmF0dXJlLg0KPiA+PiArICBAcGFyYW0gW2luXSBQYXJzZXJQcm9j ICBUaGUgQUNQSSB0YWJsZSBwYXJzZXIuDQo+ID4+ICsNCj4gPj4gKyAgQHJldHZhbCBFRklfU1VD Q0VTUyAgICAgICAgICAgVGhlIHBhcnNlciBpcyByZWdpc3RlcmVkLg0KPiA+PiArICBAcmV0dmFs IEVGSV9JTlZBTElEX1BBUkFNRVRFUiBBIHBhcmFtZXRlciBpcyBpbnZhbGlkLg0KPiA+PiArICBA cmV0dmFsIEVGSV9BTFJFQURZX1NUQVJURUQgICBUaGUgcGFyc2VyIGZvciB0aGUgVGFibGUNCj4g Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FzIGFscmVhZHkgcmVnaXN0ZXJl ZC4NCj4gPj4gKyAgQHJldHZhbCBFRklfT1VUX09GX1JFU09VUkNFUyAgTm8gc3BhY2UgdG8gcmVn aXN0ZXIgdGhlDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlci4N Cj4gPj4gKyovDQo+ID4+ICtFRklfU1RBVFVTDQo+ID4+ICtFRklBUEkNCj4gPj4gK1JlZ2lzdGVy UGFyc2VyICgNCj4gPj4gKyAgSU4gIFVJTlQzMiAgICAgICAgICAgICAgICAgIFNpZ25hdHVyZSwN Cj4gPj4gKyAgSU4gIFBBUlNFX0FDUElfVEFCTEVfUFJPQyAgIFBhcnNlclByb2MNCj4gPj4gKyAg KQ0KPiA+PiArew0KPiA+PiArICBVSU5UMzIgaW5kZXg7DQo+ID4+ICsNCj4gPj4gKyAgaWYgKChQ YXJzZXJQcm9jID09IE5VTEwpIHx8IChTaWduYXR1cmUgPT0NCj4gQUNQSV9QQVJTRVJfU0lHTkFU VVJFX05VTEwpKSB7DQo+ID4+ICsgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCj4g Pj4gKyAgfQ0KPiA+PiArDQo+ID4+ICsgIC8vIFNlYXJjaCBpZiBhIHBhcnNlciBpcyBhbHJlYWR5 IGluc3RhbGxlZA0KPiA+PiArICBmb3IgKGluZGV4ID0gMDsNCj4gPj4gKyAgICAgICBpbmRleCA8 IChzaXplb2YgKG1UYWJsZVBhcnNlckxpc3QpIC8gc2l6ZW9mIChtVGFibGVQYXJzZXJMaXN0WzBd KSk7DQo+ID4+ICsgICAgICAgaW5kZXgrKykNCj4gPj4gKyAgew0KPiA+PiArICAgIGlmIChTaWdu YXR1cmUgPT0gbVRhYmxlUGFyc2VyTGlzdFtpbmRleF0uU2lnbmF0dXJlKSB7DQo+ID4+ICsgICAg ICBpZiAobVRhYmxlUGFyc2VyTGlzdFtpbmRleF0uUGFyc2VyICE9IE5VTEwpIHsNCj4gPj4gKyAg ICAgICAgcmV0dXJuIEVGSV9BTFJFQURZX1NUQVJURUQ7DQo+ID4+ICsgICAgICB9DQo+ID4+ICsg ICAgfQ0KPiA+PiArICB9DQo+ID4+ICsNCj4gPj4gKyAgLy8gRmluZCB0aGUgZmlyc3QgZnJlZSBz bG90IGFuZCByZWdpc3RlciB0aGUgcGFyc2VyDQo+ID4+ICsgIGZvciAoaW5kZXggPSAwOw0KPiA+ PiArICAgICAgaW5kZXggPCAoc2l6ZW9mIChtVGFibGVQYXJzZXJMaXN0KSAvIHNpemVvZiAobVRh YmxlUGFyc2VyTGlzdFswXSkpOw0KPiA+PiArICAgICAgaW5kZXgrKykNCj4gPj4gKyAgew0KPiA+ PiArICAgIGlmIChtVGFibGVQYXJzZXJMaXN0W2luZGV4XS5TaWduYXR1cmUgPT0NCj4gQUNQSV9Q QVJTRVJfU0lHTkFUVVJFX05VTEwpIHsNCj4gPj4gKyAgICAgIG1UYWJsZVBhcnNlckxpc3RbaW5k ZXhdLlNpZ25hdHVyZSA9IFNpZ25hdHVyZTsNCj4gPj4gKyAgICAgIG1UYWJsZVBhcnNlckxpc3Rb aW5kZXhdLlBhcnNlciA9IFBhcnNlclByb2M7DQo+ID4+ICsgICAgICByZXR1cm4gRUZJX1NVQ0NF U1M7DQo+ID4+ICsgICAgfQ0KPiA+PiArICB9DQo+ID4+ICsNCj4gPj4gKyAgLy8gTm8gZnJlZSBz bG90IGZvdW5kDQo+ID4+ICsgIHJldHVybiBFRklfT1VUX09GX1JFU09VUkNFUzsNCj4gPj4gK30N Cj4gPj4gKw0KPiA+PiArLyoqIERlcmVnaXN0ZXIgdGhlIEFDUEkgdGFibGUgUGFyc2VyDQo+ID4+ ICsNCj4gPj4gKyAgVGhpcyBmdW5jdGlvbiBkZXJlZ2lzdGVycyB0aGUgQUNQSSB0YWJsZSBwYXJz ZXIuDQo+ID4+ICsNCj4gPj4gKyAgQHBhcmFtIFtpbl0gU2lnbmF0dXJlICAgVGhlIEFDUEkgdGFi bGUgc2lnbmF0dXJlLg0KPiA+PiArDQo+ID4+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAg ICAgIFRoZSBwYXJzZXIgd2FzIGRlcmVnaXN0ZXJlZC4NCj4gPj4gKyAgQHJldHZhbCBFRklfSU5W QUxJRF9QQVJBTUVURVIgQSBwYXJhbWV0ZXIgaXMgaW52YWxpZC4NCj4gPj4gKyAgQHJldHZhbCBF RklfTk9UX0ZPVU5EICAgICAgICAgQSByZWdpc3RlcmVkIHBhcnNlciB3YXMgbm90IGZvdW5kLg0K PiA+PiArKi8NCj4gPj4gK0VGSV9TVEFUVVMNCj4gPj4gK0VGSUFQSQ0KPiA+PiArRGVyZWdpc3Rl clBhcnNlciAoDQo+ID4+ICsgIElOICBVSU5UMzIgICAgICAgICAgICAgICAgICBTaWduYXR1cmUN Cj4gPj4gKyAgKQ0KPiA+PiArew0KPiA+PiArICBVSU5UMzIgaW5kZXg7DQo+ID4+ICsNCj4gPj4g KyAgaWYgKFNpZ25hdHVyZSA9PSBBQ1BJX1BBUlNFUl9TSUdOQVRVUkVfTlVMTCkgew0KPiA+PiAr ICAgIHJldHVybiBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+ID4+ICsgIH0NCj4gPj4gKw0KPiA+ PiArICBmb3IgKGluZGV4ID0gMDsNCj4gPj4gKyAgICAgICBpbmRleCA8IChzaXplb2YgKG1UYWJs ZVBhcnNlckxpc3QpIC8gc2l6ZW9mIChtVGFibGVQYXJzZXJMaXN0WzBdKSk7DQo+ID4+ICsgICAg ICAgaW5kZXgrKykNCj4gPj4gKyAgew0KPiA+PiArICAgIGlmIChTaWduYXR1cmUgPT0gbVRhYmxl UGFyc2VyTGlzdFtpbmRleF0uU2lnbmF0dXJlKSB7DQo+ID4+ICsgICAgICBtVGFibGVQYXJzZXJM aXN0W2luZGV4XS5TaWduYXR1cmUgPQ0KPiBBQ1BJX1BBUlNFUl9TSUdOQVRVUkVfTlVMTDsNCj4g Pj4gKyAgICAgIG1UYWJsZVBhcnNlckxpc3RbaW5kZXhdLlBhcnNlciA9IE5VTEw7DQo+ID4+ICsg ICAgICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ID4+ICsgICAgfQ0KPiA+PiArICB9DQo+ID4+ICsN Cj4gPj4gKyAgLy8gTm8gbWF0Y2hpbmcgcmVnaXN0ZXJlZCBwYXJzZXIgZm91bmQuDQo+ID4+ICsg IHJldHVybiBFRklfTk9UX0ZPVU5EOw0KPiA+PiArfQ0KPiA+PiArDQo+ID4+ICsvKiogR2V0IHRo ZSBBQ1BJIHRhYmxlIFBhcnNlcg0KPiA+PiArDQo+ID4+ICsgIFRoaXMgZnVuY3Rpb24gcmV0dXJu cyB0aGUgQUNQSSB0YWJsZSBwYXJzZXIgcHJvYyBmcm9tIHRoZSBsaXN0IG9mDQo+ID4+ICsgIHJl Z2lzdGVyZWQgcGFyc2Vycy4NCj4gPj4gKw0KPiA+PiArICBAcGFyYW0gW2luXSAgU2lnbmF0dXJl ICAgVGhlIEFDUEkgdGFibGUgc2lnbmF0dXJlLg0KPiA+PiArICBAcGFyYW0gW291dF0gUGFyc2Vy UHJvYyAgUG9pbnRlciB0byBhIEFDUEkgdGFibGUgcGFyc2VyIHByb2MuDQo+ID4+ICsNCj4gPj4g KyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhlIHBhcnNlciB3YXMgcmV0dXJuZWQg c3VjY2Vzc2Z1bGx5Lg0KPiA+PiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiBBIHBh cmFtZXRlciBpcyBpbnZhbGlkLg0KPiA+PiArICBAcmV0dmFsIEVGSV9OT1RfRk9VTkQgICAgICAg ICBBIHJlZ2lzdGVyZWQgcGFyc2VyIHdhcyBub3QgZm91bmQuDQo+ID4+ICsqLw0KPiA+PiArRUZJ X1NUQVRVUw0KPiA+PiArRUZJQVBJDQo+ID4+ICtHZXRQYXJzZXIgKA0KPiA+PiArICBJTiAgVUlO VDMyICAgICAgICAgICAgICAgICAgIFNpZ25hdHVyZSwNCj4gPj4gKyAgT1VUIFBBUlNFX0FDUElf VEFCTEVfUFJPQyAqICBQYXJzZXJQcm9jDQo+ID4+ICsgICkNCj4gPj4gK3sNCj4gPj4gKyAgVUlO VDMyIGluZGV4Ow0KPiA+PiArDQo+ID4+ICsgIGlmICgoUGFyc2VyUHJvYyA9PSBOVUxMKSB8fCAo U2lnbmF0dXJlID09DQo+IEFDUElfUEFSU0VSX1NJR05BVFVSRV9OVUxMKSkgew0KPiA+PiArICAg IHJldHVybiBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+ID4+ICsgIH0NCj4gPj4gKw0KPiA+PiAr ICBmb3IgKGluZGV4ID0gMDsNCj4gPj4gKyAgICAgICBpbmRleCA8IChzaXplb2YgKG1UYWJsZVBh cnNlckxpc3QpIC8gc2l6ZW9mIChtVGFibGVQYXJzZXJMaXN0WzBdKSk7DQo+ID4+ICsgICAgICAg aW5kZXgrKykNCj4gPj4gKyAgew0KPiA+PiArICAgIGlmIChTaWduYXR1cmUgPT0gbVRhYmxlUGFy c2VyTGlzdFtpbmRleF0uU2lnbmF0dXJlKSB7DQo+ID4+ICsgICAgICAqUGFyc2VyUHJvYyA9IG1U YWJsZVBhcnNlckxpc3RbaW5kZXhdLlBhcnNlcjsNCj4gPj4gKyAgICAgIHJldHVybiBFRklfU1VD Q0VTUzsNCj4gPj4gKyAgICB9DQo+ID4+ICsgIH0NCj4gPj4gKw0KPiA+PiArICAvLyBObyBtYXRj aGluZyByZWdpc3RlcmVkIHBhcnNlciBmb3VuZC4NCj4gPj4gKyAgcmV0dXJuIEVGSV9OT1RfRk9V TkQ7DQo+ID4+ICt9DQo+ID4+ICsNCj4gPj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHByb2Nlc3NlcyB0 aGUgQUNQSSB0YWJsZXMuDQo+ID4+ICsgIFRoaXMgZnVuY3Rpb24gY2FsbHMgUHJvY2Vzc1RhYmxl UmVwb3J0T3B0aW9ucygpIHRvIGxpc3QgdGhlIEFDUEkNCj4gPj4gKyAgdGFibGVzLCBwZXJmb3Jt IGJpbmFyeSBkdW1wIG9mIHRoZSB0YWJsZXMgYW5kIGRldGVybWluZSBpZiB0aGUNCj4gPj4gKyAg QUNQSSBmaWVsZHMgc2hvdWxkIGJlIHRyYWNlZC4NCj4gPj4gKw0KPiA+PiArICBUaGlzIGZ1bmN0 aW9uIGFsc28gaW52b2tlcyB0aGUgcGFyc2VyIGZvciB0aGUgQUNQSSB0YWJsZXMuDQo+ID4+ICsN Cj4gPj4gKyAgVGhpcyBmdW5jdGlvbiBhbHNvIHBlcmZvcm1zIGEgUkFXIGR1bXAgb2YgdGhlIEFD UEkgdGFibGUgaW5jbHVkaW5nDQo+ID4+ICsgIHRoZSB1bmtub3duL3VucGFyc2VkIEFDUEkgdGFi bGVzIGFuZCB2YWxpZGF0ZXMgdGhlIGNoZWNrc3VtLg0KPiA+PiArDQo+ID4+ICsgIEBwYXJhbSBb aW5dIFB0ciAgICAgICAgICAgICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgQUNQSQ0K PiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGUgZGF0YSBidWZmZXIu DQo+ID4+ICsqLw0KPiA+PiArVk9JRA0KPiA+PiArRUZJQVBJDQo+ID4+ICtQcm9jZXNzQWNwaVRh YmxlICgNCj4gPj4gKyAgSU4gVUlOVDgqIFB0cg0KPiA+PiArICApDQo+ID4+ICt7DQo+ID4+ICsg IEVGSV9TVEFUVVMgICAgU3RhdHVzOw0KPiA+PiArICBCT09MRUFOICAgICAgIFRyYWNlOw0KPiA+ PiArICBDT05TVCBVSU5UMzIqIEFjcGlUYWJsZVNpZ25hdHVyZTsNCj4gPj4gKyAgQ09OU1QgVUlO VDMyKiBBY3BpVGFibGVMZW5ndGg7DQo+ID4+ICsgIENPTlNUIFVJTlQ4KiAgQWNwaVRhYmxlUmV2 aXNpb247DQo+ID4+ICsgIFBBUlNFX0FDUElfVEFCTEVfUFJPQyBQYXJzZXJQcm9jOw0KPiA+PiAr DQo+ID4+ICsgIFBhcnNlQWNwaUhlYWRlciAoDQo+ID4+ICsgICAgUHRyLA0KPiA+PiArICAgICZB Y3BpVGFibGVTaWduYXR1cmUsDQo+ID4+ICsgICAgJkFjcGlUYWJsZUxlbmd0aCwNCj4gPj4gKyAg ICAmQWNwaVRhYmxlUmV2aXNpb24NCj4gPj4gKyAgICApOw0KPiA+PiArDQo+ID4+ICsgIFRyYWNl ID0gUHJvY2Vzc1RhYmxlUmVwb3J0T3B0aW9ucyAoDQo+ID4+ICsgICAgICAgICAgICAqQWNwaVRh YmxlU2lnbmF0dXJlLA0KPiA+PiArICAgICAgICAgICAgUHRyLA0KPiA+PiArICAgICAgICAgICAg KkFjcGlUYWJsZUxlbmd0aA0KPiA+PiArICAgICAgICAgICAgKTsNCj4gPj4gKw0KPiA+PiArICBp ZiAoVHJhY2UpIHsNCj4gPj4gKyAgICBEdW1wUmF3IChQdHIsICpBY3BpVGFibGVMZW5ndGgpOw0K PiA+PiArICAgIFZlcmlmeUNoZWNrc3VtIChUUlVFLCBQdHIsICpBY3BpVGFibGVMZW5ndGgpOw0K PiA+PiArICB9DQo+ID4+ICsNCj4gPj4gKyAgU3RhdHVzID0gR2V0UGFyc2VyICgqQWNwaVRhYmxl U2lnbmF0dXJlLCAmUGFyc2VyUHJvYyk7DQo+ID4+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykp IHsNCj4gPj4gKyAgICAvLyBObyByZWdpc3RlcmVkIHBhcnNlciBmb3VuZCwgZG8gZGVmYXVsdCBo YW5kbGluZy4NCj4gPj4gKyAgICBpZiAoVHJhY2UpIHsNCj4gPj4gKyAgICAgIER1bXBBY3BpSGVh ZGVyIChQdHIpOw0KPiA+PiArICAgIH0NCj4gPj4gKyAgICByZXR1cm47DQo+ID4+ICsgIH0NCj4g Pj4gKw0KPiA+PiArICBQYXJzZXJQcm9jICgNCj4gPj4gKyAgICBUcmFjZSwNCj4gPj4gKyAgICBQ dHIsDQo+ID4+ICsgICAgKkFjcGlUYWJsZUxlbmd0aCwNCj4gPj4gKyAgICAqQWNwaVRhYmxlUmV2 aXNpb24NCj4gPj4gKyAgICApOw0KPiA+PiArfQ0KPiA+PiBkaWZmIC0tZ2l0IGEvU2hlbGxQa2cv TGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvQWNwaVZpZXcuYw0KPiBiL1NoZWxs UGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL0FjcGlWaWV3LmMNCj4gPj4g bmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPj4gaW5kZXgNCj4gMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMC4uNTg2ZTA1YWJiNzE2YjM2ZDM0YTljDQo+IDRlNTE1NjhkYzYz ZmVjYjEwODUNCj4gPj4gLS0tIC9kZXYvbnVsbA0KPiA+PiArKysgYi9TaGVsbFBrZy9MaWJyYXJ5 L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9BY3BpVmlldy5jDQo+ID4+IEBAIC0wLDAgKzEs NjAxIEBADQo+ID4+ICsvKioNCj4gPj4gKw0KPiA+PiArICBDb3B5cmlnaHQgKGMpIDIwMTYgLSAy MDE4LCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gPj4gKyAgVGhpcyBwcm9n cmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiA+PiArICBhcmUgbGljZW5zZWQg YW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUN Cj4gQlNEIExpY2Vuc2UNCj4gPj4gKyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRp b24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZQ0KPiBmb3VuZCBhdA0KPiA+ PiArICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ID4+ ICsNCj4gPj4gKyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNF TlNFIE9OIEFOICJBUyBJUyINCj4gQkFTSVMsDQo+ID4+ICsgIFdJVEhPVVQgV0FSUkFOVElFUyBP UiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUg0KPiBFWFBSRVNTIE9SIElNUExJ RUQuDQo+ID4+ICsqKi8NCj4gPj4gKw0KPiA+PiArI2luY2x1ZGUgPExpYnJhcnkvUHJpbnRMaWIu aD4NCj4gPj4gKyNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlMaWIuaD4NCj4gPj4gKyNpbmNsdWRlIDxM aWJyYXJ5L1NoZWxsTGliLmg+DQo+ID4+ICsjaW5jbHVkZSA8TGlicmFyeS9VZWZpQm9vdFNlcnZp Y2VzVGFibGVMaWIuaD4NCj4gPj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0Jhc2VNZW1vcnlMaWIuaD4N Cj4gPj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0RlYnVnTGliLmg+DQo+ID4+ICsjaW5jbHVkZSA8TGli cmFyeS9NZW1vcnlBbGxvY2F0aW9uTGliLmg+DQo+ID4+ICsjaW5jbHVkZSA8TGlicmFyeS9BY3Bp Vmlldy9BY3BpUGFyc2VyLmg+DQo+ID4+ICsjaW5jbHVkZSA8TGlicmFyeS9BY3BpVmlldy9BY3Bp VGFibGVQYXJzZXIuaD4NCj4gPj4gKyNpbmNsdWRlICJBY3BpVmlldy5oIg0KPiA+PiArI2luY2x1 ZGUgIlVlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi5oIg0KPiA+PiArDQo+ID4+ICtFRklfSElJ X0hBTkRMRSBnU2hlbGxBY3BpVmlld0hpaUhhbmRsZSA9IE5VTEw7DQo+ID4+ICsNCj4gPj4gKy8v IFJlcG9ydCB2YXJpYWJsZXMNCj4gPj4gK1NUQVRJQyBVSU5UMzIgICAgICAgICAgICAgbVNlbGVj dGVkQWNwaVRhYmxlOw0KPiA+PiArU1RBVElDIENPTlNUIENIQVIxNiogICAgICBtU2VsZWN0ZWRB Y3BpVGFibGVOYW1lOw0KPiA+PiArU1RBVElDIEJPT0xFQU4gICAgICAgICAgICBtU2VsZWN0ZWRB Y3BpVGFibGVGb3VuZDsNCj4gPj4gK1NUQVRJQyBFUkVQT1JUX09QVElPTiAgICAgbVJlcG9ydFR5 cGU7DQo+ID4+ICtTVEFUSUMgVUlOVDMyICAgICAgICAgICAgIG1UYWJsZUNvdW50Ow0KPiA+PiAr U1RBVElDIFVJTlQzMiAgICAgICAgICAgICBtQmluVGFibGVDb3VudDsNCj4gPj4gK1NUQVRJQyBC T09MRUFOICAgICAgICAgICAgbVZlcmJvc2U7DQo+ID4+ICtTVEFUSUMgQk9PTEVBTiAgICAgICAg ICAgIG1Db25zaXN0ZW5jeUNoZWNrOw0KPiA+PiArU1RBVElDIEJPT0xFQU4gICAgICAgICAgICBt Q29sb3VySGlnaGxpZ2h0aW5nOw0KPiA+PiArDQo+ID4+ICsvKiogQW4gYXJyYXkgb2YgYWNwaXZp ZXcgY29tbWFuZCBsaW5lIHBhcmFtZXRlcnMuDQo+ID4+ICsqLw0KPiA+PiArU1RBVElDIENPTlNU IFNIRUxMX1BBUkFNX0lURU0gUGFyYW1MaXN0W10gPSB7DQo+ID4+ICsgIHtMIi8/IiwgVHlwZUZs YWd9LA0KPiA+PiArICB7TCItYyIsIFR5cGVGbGFnfSwNCj4gPj4gKyAge0wiLWQiLCBUeXBlRmxh Z30sDQo+ID4+ICsgIHtMIi1oIiwgVHlwZVZhbHVlfSwNCj4gPj4gKyAge0wiLWwiLCBUeXBlRmxh Z30sDQo+ID4+ICsgIHtMIi1zIiwgVHlwZVZhbHVlfSwNCj4gPj4gKyAge0wiLXYiLCBUeXBlRmxh Z30sDQo+ID4+ICsgIHtOVUxMLCBUeXBlTWF4fQ0KPiA+PiArfTsNCj4gPj4gKw0KPiA+PiArLyoq IFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgY29sb3VyIGhpZ2hsaWdodGluZyBzdGF0dXMuDQo+ ID4+ICsNCj4gPj4gKyAgQHJldHZhbCBUUlVFIGlmIGNvbG91ciBoaWdobGlnaHRpbmcgaXMgZW5h YmxlZC4NCj4gPj4gKyovDQo+ID4+ICtCT09MRUFODQo+ID4+ICtHZXRDb2xvdXJIaWdobGlnaHRp bmcgKA0KPiA+PiArICBWT0lEDQo+ID4+ICsgICkNCj4gPj4gK3sNCj4gPj4gKyAgcmV0dXJuIG1D b2xvdXJIaWdobGlnaHRpbmc7DQo+ID4+ICt9DQo+ID4+ICsNCj4gPj4gKy8qKiBUaGlzIGZ1bmN0 aW9uIHNldHMgdGhlIGNvbG91ciBoaWdobGlnaHRpbmcgc3RhdHVzLg0KPiA+PiArDQo+ID4+ICsq Lw0KPiA+PiArVk9JRA0KPiA+PiArU2V0Q29sb3VySGlnaGxpZ2h0aW5nICgNCj4gPj4gKyAgQk9P TEVBTiBIaWdobGlnaHQNCj4gPj4gKyAgKQ0KPiA+PiArew0KPiA+PiArICBtQ29sb3VySGlnaGxp Z2h0aW5nID0gSGlnaGxpZ2h0Ow0KPiA+PiArfQ0KPiA+PiArDQo+ID4+ICsvKiogVGhpcyBmdW5j dGlvbiByZXR1cm5zIHRoZSByZXBvcnQgb3B0aW9ucy4NCj4gPj4gKw0KPiA+PiArICBAcmV0dmFs IFJldHVybnMgdGhlIHJlcG9ydCBvcHRpb24uDQo+ID4+ICsqLw0KPiA+PiArU1RBVElDDQo+ID4+ ICtFUkVQT1JUX09QVElPTg0KPiA+PiArR2V0UmVwb3J0T3B0aW9uICgNCj4gPj4gKyAgVk9JRA0K PiA+PiArICApDQo+ID4+ICt7DQo+ID4+ICsgIHJldHVybiBtUmVwb3J0VHlwZTsNCj4gPj4gK30N Cj4gPj4gKw0KPiA+PiArLyoqIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgc2VsZWN0ZWQgQUNQ SSB0YWJsZS4NCj4gPj4gKw0KPiA+PiArICBAcmV0dmFsIFJldHVybnMgc2lnbmF0dXJlIG9mIHRo ZSBzZWxlY3RlZCBBQ1BJIHRhYmxlLg0KPiA+PiArKi8NCj4gPj4gK1NUQVRJQw0KPiA+PiArVUlO VDMyDQo+ID4+ICtHZXRTZWxlY3RlZEFjcGlUYWJsZSAoDQo+ID4+ICsgIFZPSUQNCj4gPj4gKyAg KQ0KPiA+PiArew0KPiA+PiArICByZXR1cm4gbVNlbGVjdGVkQWNwaVRhYmxlOw0KPiA+PiArfQ0K PiA+PiArDQo+ID4+ICsvKiogVGhpcyBmdW5jdGlvbiBkdW1wcyB0aGUgQUNQSSB0YWJsZSB0byBh IGZpbGUuDQo+ID4+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgICBQb2ludGVyIHRvIHRoZSBBQ1BJ IHRhYmxlIGRhdGEuDQo+ID4+ICsgIEBwYXJhbSBbaW5dIExlbmd0aCAgICBUaGUgbGVuZ3RoIG9m IHRoZSBBQ1BJIHRhYmxlLg0KPiA+PiArDQo+ID4+ICsgIEByZXR2YWwgVFJVRSAgICAgICAgICBT dWNjZXNzLg0KPiA+PiArICBAcmV0dmFsIEZBTFNFICAgICAgICAgRmFpbHVyZS4NCj4gPj4gKyov DQo+ID4+ICtTVEFUSUMNCj4gPj4gK0JPT0xFQU4NCj4gPj4gK0R1bXBBY3BpVGFibGVUb0ZpbGUg KA0KPiA+PiArICBJTiBDT05TVCBVSU5UOCogIFB0ciwNCj4gPj4gKyAgSU4gQ09OU1QgVUlOVE4g ICBMZW5ndGgNCj4gPj4gKyAgKQ0KPiA+PiArew0KPiA+PiArICBFRklfU1RBVFVTICAgICAgICAg U3RhdHVzOw0KPiA+PiArICBDSEFSMTYgICAgICAgICAgICAgRmlsZU5hbWVCdWZmZXJbTUFYX0ZJ TEVfTkFNRV9MRU5dOw0KPiA+PiArICBTSEVMTF9GSUxFX0hBTkRMRSAgRHVtcEZpbGVIYW5kbGUg PSBOVUxMOw0KPiA+PiArICBVSU5UTiAgICAgICAgICAgICAgVHJhbnNmZXJCeXRlcyA9IExlbmd0 aDsNCj4gPj4gKw0KPiA+PiArICBVbmljb2RlU1ByaW50ICgNCj4gPj4gKyAgICBGaWxlTmFtZUJ1 ZmZlciwNCj4gPj4gKyAgICBzaXplb2YgKEZpbGVOYW1lQnVmZmVyKSwNCj4gPj4gKyAgICBMIi5c XCVzJTA0ZC5iaW4iLA0KPiA+PiArICAgIG1TZWxlY3RlZEFjcGlUYWJsZU5hbWUsDQo+ID4+ICsg ICAgbUJpblRhYmxlQ291bnQrKw0KPiA+PiArICAgICk7DQo+ID4+ICsNCj4gPj4gKyAgU3RhdHVz ID0gU2hlbGxPcGVuRmlsZUJ5TmFtZSAoDQo+ID4+ICsgICAgICAgICAgICAgRmlsZU5hbWVCdWZm ZXIsDQo+ID4+ICsgICAgICAgICAgICAgJkR1bXBGaWxlSGFuZGxlLA0KPiA+PiArICAgICAgICAg ICAgIEVGSV9GSUxFX01PREVfUkVBRCB8IEVGSV9GSUxFX01PREVfV1JJVEUgfA0KPiBFRklfRklM RV9NT0RFX0NSRUFURSwNCj4gPj4gKyAgICAgICAgICAgICAwDQo+ID4+ICsgICAgICAgICAgICAg KTsNCj4gPj4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+PiArICAgIFNoZWxsUHJp bnRIaWlFeCAoDQo+ID4+ICsgICAgICAtMSwNCj4gPj4gKyAgICAgIC0xLA0KPiA+PiArICAgICAg TlVMTCwNCj4gPj4gKyAgICAgIFNUUklOR19UT0tFTiAoU1RSX0dFTl9SRUFET05MWV9NRURJQSks DQo+ID4+ICsgICAgICBnU2hlbGxBY3BpVmlld0hpaUhhbmRsZSwNCj4gPj4gKyAgICAgIEwiYWNw aXZpZXciDQo+ID4+ICsgICAgICApOw0KPiA+PiArICAgIHJldHVybiBGQUxTRTsNCj4gPj4gKyAg fQ0KPiA+PiArDQo+ID4+ICsgIFByaW50IChMIkR1bXBpbmcgQUNQSSB0YWJsZSB0byA6ICVzIC4u LiAiLCBGaWxlTmFtZUJ1ZmZlcik7DQo+ID4+ICsNCj4gPj4gKyAgU3RhdHVzID0gU2hlbGxXcml0 ZUZpbGUgKA0KPiA+PiArICAgICAgICAgICAgIER1bXBGaWxlSGFuZGxlLA0KPiA+PiArICAgICAg ICAgICAgICZUcmFuc2ZlckJ5dGVzLA0KPiA+PiArICAgICAgICAgICAgIChWT0lEKilQdHINCj4g Pj4gKyAgICAgICAgICAgICApOw0KPiA+PiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ ID4+ICsgICAgUHJpbnQgKEwiRVJST1I6IEZhaWxlZCB0byBkdW1wIHRhYmxlIHRvIGJpbmFyeSBm aWxlLlxuIik7DQo+ID4+ICsgICAgVHJhbnNmZXJCeXRlcyA9IDA7DQo+ID4+ICsgIH0gZWxzZSB7 DQo+ID4+ICsgICAgUHJpbnQgKEwiRE9ORS5cbiIpOw0KPiA+PiArICB9DQo+ID4+ICsNCj4gPj4g KyAgU2hlbGxDbG9zZUZpbGUgKCZEdW1wRmlsZUhhbmRsZSk7DQo+ID4+ICsgIHJldHVybiAoTGVu Z3RoID09IFRyYW5zZmVyQnl0ZXMpOw0KPiA+PiArfQ0KPiA+PiArDQo+ID4+ICsvKiogVGhpcyBm dW5jdGlvbiBwcm9jZXNzZXMgdGhlIHRhYmxlIHJlcG9ydGluZyBvcHRpb25zIGZvciB0aGUgQUNQ SSB0YWJsZS4NCj4gPj4gKw0KPiA+PiArICBAcGFyYW0gW2luXSBTaWduYXR1cmUgVGhlIEFDUEkg dGFibGUgU2lnbmF0dXJlLg0KPiA+PiArICBAcGFyYW0gW2luXSBUYWJsZVB0ciAgUG9pbnRlciB0 byB0aGUgQUNQSSB0YWJsZSBkYXRhLg0KPiA+PiArICBAcGFyYW0gW2luXSBMZW5ndGggICAgVGhl IGxlbmd0aCBmbyB0aGUgQUNQSSB0YWJsZS4NCj4gPj4gKw0KPiA+PiArICBAcmV0dmFsIFJldHVy bnMgVFJVRSBpZiB0aGUgQUNQSSB0YWJsZSBzaG91bGQgYmUgdHJhY2VkLg0KPiA+PiArKi8NCj4g Pj4gK0JPT0xFQU4NCj4gPj4gK1Byb2Nlc3NUYWJsZVJlcG9ydE9wdGlvbnMgKA0KPiA+PiArICBJ TiBDT05TVCBVSU5UMzIgIFNpZ25hdHVyZSwNCj4gPj4gKyAgSU4gQ09OU1QgVUlOVDgqICBUYWJs ZVB0ciwNCj4gPj4gKyAgSU4gQ09OU1QgVUlOVDMyICBMZW5ndGgNCj4gPj4gKyAgKQ0KPiA+PiAr ew0KPiA+PiArICBVSU5UTiAgIE9yaWdpbmFsQXR0cmlidXRlOw0KPiA+PiArICBVSU5UOCogIFNp Z25hdHVyZVB0ciA9IChVSU5UOCopKFVJTlROKSZTaWduYXR1cmU7DQo+ID4+ICsgIEJPT0xFQU4g TG9nID0gRkFMU0U7DQo+ID4+ICsgIEJPT0xFQU4gSGlnaExpZ2h0ID0gR2V0Q29sb3VySGlnaGxp Z2h0aW5nICgpOw0KPiA+PiArICBzd2l0Y2ggKEdldFJlcG9ydE9wdGlvbiAoKSkgew0KPiA+PiAr ICAgIGNhc2UgRVJFUE9SVF9BTEw6DQo+ID4+ICsgICAgICBMb2cgPSBUUlVFOw0KPiA+PiArICAg ICAgYnJlYWs7DQo+ID4+ICsgICAgY2FzZSBFUkVQT1JUX1NFTEVDVEVEOg0KPiA+PiArICAgICAg aWYgKFNpZ25hdHVyZSA9PSBHZXRTZWxlY3RlZEFjcGlUYWJsZSAoKSkgew0KPiA+PiArICAgICAg ICBMb2cgPSBUUlVFOw0KPiA+PiArICAgICAgICBtU2VsZWN0ZWRBY3BpVGFibGVGb3VuZCA9IFRS VUU7DQo+ID4+ICsgICAgICB9DQo+ID4+ICsgICAgICBicmVhazsNCj4gPj4gKyAgICBjYXNlIEVS RVBPUlRfVEFCTEVfTElTVDoNCj4gPj4gKyAgICAgIGlmIChtVGFibGVDb3VudCA9PSAwKSB7DQo+ ID4+ICsgICAgICAgIGlmIChIaWdoTGlnaHQpIHsNCj4gPj4gKyAgICAgICAgICBPcmlnaW5hbEF0 dHJpYnV0ZSA9IGdTVC0+Q29uT3V0LT5Nb2RlLT5BdHRyaWJ1dGU7DQo+ID4+ICsgICAgICAgICAg Z1NULT5Db25PdXQtPlNldEF0dHJpYnV0ZSAoDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgZ1NULT5Db25PdXQsDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgRUZJX1RFWFRf QVRUUihFRklfQ1lBTiwNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgoT3JpZ2lu YWxBdHRyaWJ1dGUmKEJJVDR8QklUNXxCSVQ2KSk+PjQpKQ0KPiA+PiArICAgICAgICAgICAgICAg ICAgICAgICAgICk7DQo+ID4+ICsgICAgICAgIH0NCj4gPj4gKyAgICAgICAgUHJpbnQgKEwiXG5J bnN0YWxsZWQgVGFibGUocyk6XG4iKTsNCj4gPj4gKyAgICAgICAgaWYgKEhpZ2hMaWdodCkgew0K PiA+PiArICAgICAgICAgIGdTVC0+Q29uT3V0LT5TZXRBdHRyaWJ1dGUgKGdTVC0+Q29uT3V0LCBP cmlnaW5hbEF0dHJpYnV0ZSk7DQo+ID4+ICsgICAgICAgIH0NCj4gPj4gKyAgICAgIH0NCj4gPj4g KyAgICAgIFByaW50ICgNCj4gPj4gKyAgICAgICAgTCJcdCU0ZC4gJWMlYyVjJWNcbiIsDQo+ID4+ ICsgICAgICAgICsrbVRhYmxlQ291bnQsDQo+ID4+ICsgICAgICAgIFNpZ25hdHVyZVB0clswXSwN Cj4gPj4gKyAgICAgICAgU2lnbmF0dXJlUHRyWzFdLA0KPiA+PiArICAgICAgICBTaWduYXR1cmVQ dHJbMl0sDQo+ID4+ICsgICAgICAgIFNpZ25hdHVyZVB0clszXQ0KPiA+PiArICAgICAgICApOw0K PiA+PiArICAgICAgYnJlYWs7DQo+ID4+ICsgICAgY2FzZSBFUkVQT1JUX0RVTVBfQklOX0ZJTEU6 DQo+ID4+ICsgICAgICBpZiAoU2lnbmF0dXJlID09IEdldFNlbGVjdGVkQWNwaVRhYmxlICgpKSB7 DQo+ID4+ICsgICAgICAgIG1TZWxlY3RlZEFjcGlUYWJsZUZvdW5kID0gVFJVRTsNCj4gPj4gKyAg ICAgICAgRHVtcEFjcGlUYWJsZVRvRmlsZSAoVGFibGVQdHIsIExlbmd0aCk7DQo+ID4+ICsgICAg ICB9DQo+ID4+ICsgICAgICBicmVhazsNCj4gPj4gKyAgICBjYXNlIEVSRVBPUlRfTUFYOg0KPiA+ PiArICAgICAgLy8gV2Ugc2hvdWxkIG5ldmVyIGJlIGhlcmUuDQo+ID4+ICsgICAgICAvLyBUaGlz IGNhc2UgaXMgb25seSBwcmVzZW50IHRvIHByZXZlbnQgY29tcGlsZXIgd2FybmluZy4NCj4gPj4g KyAgICAgIGJyZWFrOw0KPiA+PiArICB9IC8vIHN3aXRjaA0KPiA+PiArDQo+ID4+ICsgIGlmIChM b2cpIHsNCj4gPj4gKyAgICBpZiAoSGlnaExpZ2h0KSB7DQo+ID4+ICsgICAgICBPcmlnaW5hbEF0 dHJpYnV0ZSA9IGdTVC0+Q29uT3V0LT5Nb2RlLT5BdHRyaWJ1dGU7DQo+ID4+ICsgICAgICBnU1Qt PkNvbk91dC0+U2V0QXR0cmlidXRlICgNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgIGdTVC0+ Q29uT3V0LA0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgRUZJX1RFWFRfQVRUUihFRklfTElH SFRCTFVFLA0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAoKE9yaWdpbmFsQXR0cmlidXRl JihCSVQ0fEJJVDV8QklUNikpPj40KSkNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICk7DQo+ ID4+ICsgICAgfQ0KPiA+PiArICAgIFByaW50ICgNCj4gPj4gKyAgICAgIEwiXG5cbiAtLS0tLS0t LS0tLS0tLS0gJWMlYyVjJWMgVGFibGUgLS0tLS0tLS0tLS0tLS0tIFxuXG4iLA0KPiA+PiArICAg ICAgU2lnbmF0dXJlUHRyWzBdLA0KPiA+PiArICAgICAgU2lnbmF0dXJlUHRyWzFdLA0KPiA+PiAr ICAgICAgU2lnbmF0dXJlUHRyWzJdLA0KPiA+PiArICAgICAgU2lnbmF0dXJlUHRyWzNdDQo+ID4+ ICsgICAgICApOw0KPiA+PiArICAgIGlmIChIaWdoTGlnaHQpIHsNCj4gPj4gKyAgICAgIGdTVC0+ Q29uT3V0LT5TZXRBdHRyaWJ1dGUgKGdTVC0+Q29uT3V0LCBPcmlnaW5hbEF0dHJpYnV0ZSk7DQo+ ID4+ICsgICAgfQ0KPiA+PiArICB9DQo+ID4+ICsNCj4gPj4gKyAgcmV0dXJuIExvZzsNCj4gPj4g K30NCj4gPj4gKw0KPiA+PiArLyoqIFRoaXMgZnVuY3Rpb24gY29udmVydHMgYSBzdHJpbmcgdG8g QUNQSSB0YWJsZSBzaWduYXR1cmUuDQo+ID4+ICsNCj4gPj4gKyAgQHBhcmFtIFtpbl0gU3RyICAg UG9pbnRlciB0byB0aGUgc3RyaW5nIHRvIGJlIGNvbnZlcnRlZCB0byB0aGUNCj4gPj4gKyAgICAg ICAgICAgICAgICAgICAgQUNQSSB0YWJsZSBzaWduYXR1cmUuDQo+ID4+ICsNCj4gPj4gKyAgQHJl dHZhbCBUaGUgQUNQSSB0YWJsZSBzaWduYXR1cmUuDQo+ID4+ICsqLw0KPiA+PiArU1RBVElDDQo+ ID4+ICtVSU5UMzINCj4gPj4gK0NvbnZlcnRTdHJUb0FjcGlTaWduYXR1cmUgKA0KPiA+PiArICBJ TiAgQ09OU1QgQ0hBUjE2KiBTdHINCj4gPj4gKyAgKQ0KPiA+PiArew0KPiA+PiArICBVSU5UOCBJ bmRleCA9IDA7DQo+ID4+ICsgIENIQVI4IFB0cls0XTsNCj4gPj4gKw0KPiA+PiArICAvLyBDb252 ZXJ0IHRvIFVwcGVyIGNhc2UgYW5kIGNvbnZlcnQgdG8gQVNDSUkNCj4gPj4gKyAgd2hpbGUgKChJ bmRleCA8IDQpICYmIChTdHJbSW5kZXhdICE9IDApKSB7DQo+ID4+ICsgICAgaWYgKFN0cltJbmRl eF0gPj0gTCdhJyAmJiBTdHJbSW5kZXhdIDw9IEwneicpIHsNCj4gPj4gKyAgICAgIFB0cltJbmRl eF0gPSAoQ0hBUjgpKFN0cltJbmRleF0gLSAoTCdhJyAtIEwnQScpKTsNCj4gPj4gKyAgICB9IGVs c2Ugew0KPiA+PiArICAgICAgUHRyW0luZGV4XSA9IChDSEFSOClTdHJbSW5kZXhdOw0KPiA+PiAr ICAgIH0NCj4gPj4gKyAgICBJbmRleCsrOw0KPiA+Pg0KPiA+PiArICB9DQo+ID4+ICsgIHJldHVy biAqKFVJTlQzMiopUHRyOw0KPiA+PiArfQ0KPiA+PiArDQo+ID4+ICsvKiogVGhpcyBmdW5jdGlv biBpdGVyYXRlcyB0aGUgY29uZmlndXJhdGlvbiB0YWJsZSBlbnRyaWVzIGluIHRoZQ0KPiA+PiAr ICAgIHN5c3RlbSB0YWJsZSwgcmV0cmlldmVzIHRoZSBSU0RQIHBvaW50ZXIgYW5kIHN0YXJ0cyBw YXJzaW5nDQo+ID4+ICsgICAgdGhlIEFDUEkgdGFibGVzLg0KPiA+PiArDQo+ID4+ICsgIEBwYXJh bSBbaW5dIFN5c3RlbVRhYmxlIFBvaW50ZXIgdG8gdGhlIEVGSSBzeXN0ZW0gdGFibGUuDQo+ID4+ ICsNCj4gPj4gKyAgQHJldHZhbCBSZXR1cm5zIEVGSV9OT1RfRk9VTkQgICBpZiB0aGUgUlNEUCBw b2ludGVyIGlzIG5vdCBmb3VuZC4NCj4gPj4gKyAgICAgICAgICBSZXR1cm5zIEVGSV9VTlNVUFBP UlRFRCBpZiB0aGUgUlNEUCB2ZXJzaW9uIGlzIGxlc3MgdGhhbiAyLg0KPiA+PiArICAgICAgICAg IFJldHVybnMgRUZJX1NVQ0NFU1MgICAgIGlmIHN1Y2Nlc3NmdWwuDQo+ID4+ICsqLw0KPiA+PiAr U1RBVElDDQo+ID4+ICtFRklfU1RBVFVTDQo+ID4+ICtFRklBUEkNCj4gPj4gK0FjcGlWaWV3ICgN Cj4gPj4gKyAgSU4gRUZJX1NZU1RFTV9UQUJMRSogU3lzdGVtVGFibGUNCj4gPj4gKyAgKQ0KPiA+ PiArew0KPiA+PiArICBFRklfU1RBVFVTICAgICAgICAgICAgICAgU3RhdHVzOw0KPiA+PiArICBV SU5UTiAgICAgICAgICAgICAgICAgICAgSW5kZXg7DQo+ID4+ICsgIEVGSV9DT05GSUdVUkFUSU9O X1RBQkxFKiBFZmlDb25maWd1cmF0aW9uVGFibGU7DQo+ID4+ICsgIEJPT0xFQU4gICAgICAgICAg ICAgICAgICBGb3VuZEFjcGlUYWJsZTsNCj4gPj4gKyAgVUlOVE4gICAgICAgICAgICAgICAgICAg IE9yaWdpbmFsQXR0cmlidXRlOw0KPiA+PiArICBVSU5UTiAgICAgICAgICAgICAgICAgICAgUHJp bnRBdHRyaWJ1dGU7DQo+ID4+ICsgIEVSRVBPUlRfT1BUSU9OICAgICAgICAgICBSZXBvcnRPcHRp b247DQo+ID4+ICsgIFVJTlQ4KiAgICAgICAgICAgICAgICAgICBSc2RwUHRyOw0KPiA+PiArICBV SU5UMzIgICAgICAgICAgICAgICAgICAgUnNkcExlbmd0aDsNCj4gPj4gKyAgVUlOVDggICAgICAg ICAgICAgICAgICAgIFJzZHBSZXZpc2lvbjsNCj4gPj4gKyAgUEFSU0VfQUNQSV9UQUJMRV9QUk9D ICAgIFJzZHBQYXJzZXJQcm9jOw0KPiA+PiArICBCT09MRUFOICAgICAgICAgICAgICAgICAgVHJh Y2U7DQo+ID4+ICsNCj4gPj4gKyAgLy8gU2VhcmNoIHRoZSB0YWJsZSBmb3IgYW4gZW50cnkgdGhh dCBtYXRjaGVzIHRoZSBBQ1BJIFRhYmxlIEd1aWQNCj4gPj4gKyAgRm91bmRBY3BpVGFibGUgPSBG QUxTRTsNCj4gPj4gKyAgZm9yIChJbmRleCA9IDA7IEluZGV4IDwgU3lzdGVtVGFibGUtPk51bWJl ck9mVGFibGVFbnRyaWVzOyBJbmRleCsrKSB7DQo+ID4+ICsgICAgaWYgKENvbXBhcmVHdWlkICgm Z0VmaUFjcGlUYWJsZUd1aWQsDQo+ID4+ICsgICAgICAgICAgJihTeXN0ZW1UYWJsZS0+Q29uZmln dXJhdGlvblRhYmxlW0luZGV4XS5WZW5kb3JHdWlkKSkpIHsNCj4gPj4gKyAgICAgIEVmaUNvbmZp Z3VyYXRpb25UYWJsZSA9ICZTeXN0ZW1UYWJsZS0+Q29uZmlndXJhdGlvblRhYmxlW0luZGV4XTsN Cj4gPj4gKyAgICAgIEZvdW5kQWNwaVRhYmxlID0gVFJVRTsNCj4gPj4gKyAgICAgIGJyZWFrOw0K PiA+PiArICAgIH0NCj4gPj4gKyAgfQ0KPiA+PiArDQo+ID4+ICsgIGlmIChGb3VuZEFjcGlUYWJs ZSkgew0KPiA+PiArICAgIFJzZHBQdHIgPSAoVUlOVDgqKUVmaUNvbmZpZ3VyYXRpb25UYWJsZS0+ VmVuZG9yVGFibGU7DQo+ID4+ICsNCj4gPj4gKyAgICAvLyBUaGUgUlNEUCByZXZpc2lvbiBpcyAx IGJ5dGUgc3RhcnRpbmcgYXQgb2Zmc2V0IDE1DQo+ID4+ICsgICAgUnNkcFJldmlzaW9uID0gKihS c2RwUHRyICsgUlNEUF9SRVZJU0lPTl9PRkZTRVQpOw0KPiA+PiArDQo+ID4+ICsgICAgaWYgKFJz ZHBSZXZpc2lvbiA8IDIpIHsNCj4gPj4gKyAgICAgIFByaW50ICgNCj4gPj4gKyAgICAgICAgTCJF UlJPUjogUlNEUCB2ZXJzaW9uIGxlc3MgdGhhbiAyIGlzIG5vdCBzdXBwb3J0ZWQuXG4iDQo+ID4+ ICsgICAgICAgICk7DQo+ID4+ICsgICAgICByZXR1cm4gRUZJX1VOU1VQUE9SVEVEOw0KPiA+PiAr ICAgIH0NCj4gPj4gKw0KPiA+PiArICAgIC8vIFRoZSBSU0RQIGxlbmd0aCBpcyA0IGJ5dGVzIHN0 YXJ0aW5nIGF0IG9mZnNldCAyMA0KPiA+PiArICAgIFJzZHBMZW5ndGggPSAqKFVJTlQzMiopKFJz ZHBQdHIgKyBSU0RQX0xFTkdUSF9PRkZTRVQpOw0KPiA+PiArDQo+ID4+ICsgICAgVHJhY2UgPSBQ cm9jZXNzVGFibGVSZXBvcnRPcHRpb25zIChSU0RQX1RBQkxFX0lORk8sIFJzZHBQdHIsDQo+IFJz ZHBMZW5ndGgpOw0KPiA+PiArDQo+ID4+ICsgICAgU3RhdHVzID0gR2V0UGFyc2VyIChSU0RQX1RB QkxFX0lORk8sICZSc2RwUGFyc2VyUHJvYyk7DQo+ID4+ICsgICAgaWYgKEVGSV9FUlJPUiAoU3Rh dHVzKSkgew0KPiA+PiArICAgICAgUHJpbnQgKA0KPiA+PiArICAgICAgICBMIkVSUk9SOiBObyBy ZWdpc3RlcmVkIHBhcnNlciBmb3VuZCBmb3IgUlNEUC5cbiINCj4gPj4gKyAgICAgICAgKTsNCj4g Pj4gKyAgICAgIHJldHVybiBTdGF0dXM7DQo+ID4+ICsgICAgfQ0KPiA+PiArDQo+ID4+ICsgICAg UnNkcFBhcnNlclByb2MgKA0KPiA+PiArICAgICAgVHJhY2UsDQo+ID4+ICsgICAgICBSc2RwUHRy LA0KPiA+PiArICAgICAgUnNkcExlbmd0aCwNCj4gPj4gKyAgICAgIFJzZHBSZXZpc2lvbg0KPiA+ PiArICAgICAgKTsNCj4gPj4gKw0KPiA+PiArICB9IGVsc2Ugew0KPiA+PiArICAgIEluY3JlbWVu dEVycm9yQ291bnQgKCk7DQo+ID4+ICsgICAgUHJpbnQgKA0KPiA+PiArICAgICAgTCJFUlJPUjog RmFpbGVkIHRvIGZpbmQgQUNQSSBUYWJsZSBHdWlkIGluIFN5c3RlbSBDb25maWd1cmF0aW9uDQo+ IFRhYmxlLlxuIg0KPiA+PiArICAgICAgKTsNCj4gPj4gKyAgICByZXR1cm4gRUZJX05PVF9GT1VO RDsNCj4gPj4gKyAgfQ0KPiA+PiArDQo+ID4+ICsgIFJlcG9ydE9wdGlvbiA9IEdldFJlcG9ydE9w dGlvbiAoKTsNCj4gPj4gKyAgaWYgKEVSRVBPUlRfVEFCTEVfTElTVCAhPSBSZXBvcnRPcHRpb24p IHsNCj4gPj4gKyAgICBpZiAoKChFUkVQT1JUX1NFTEVDVEVEID09IFJlcG9ydE9wdGlvbikgIHx8 DQo+ID4+ICsgICAgICAgICAoRVJFUE9SVF9EVU1QX0JJTl9GSUxFID09IFJlcG9ydE9wdGlvbikp ICYmDQo+ID4+ICsgICAgICAgICghbVNlbGVjdGVkQWNwaVRhYmxlRm91bmQpKSB7DQo+ID4+ICsg ICAgICBQcmludCAoTCJcblJlcXVlc3RlZCBBQ1BJIFRhYmxlIG5vdCBmb3VuZC5cbiIpOw0KPiA+ PiArICAgIH0gZWxzZSBpZiAoRVJFUE9SVF9EVU1QX0JJTl9GSUxFICE9IFJlcG9ydE9wdGlvbikg ew0KPiA+PiArICAgICAgT3JpZ2luYWxBdHRyaWJ1dGUgPSBnU1QtPkNvbk91dC0+TW9kZS0+QXR0 cmlidXRlOw0KPiA+PiArDQo+ID4+ICsgICAgICBQcmludCAoTCJcblRhYmxlIFN0YXRpc3RpY3M6 XG4iKTsNCj4gPj4gKw0KPiA+PiArICAgICAgaWYgKEdldENvbG91ckhpZ2hsaWdodGluZyAoKSkg ew0KPiA+PiArICAgICAgICBQcmludEF0dHJpYnV0ZSA9IChHZXRFcnJvckNvdW50ICgpID4gMCkg Pw0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVGSV9URVhUX0FUVFIgKA0KPiA+ PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUZJX1JFRCwNCj4gPj4gKw0KPiAoKE9y aWdpbmFsQXR0cmlidXRlJihCSVQ0fEJJVDV8QklUNikpPj40KQ0KPiA+PiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKSA6DQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg T3JpZ2luYWxBdHRyaWJ1dGU7DQo+ID4+ICsgICAgICAgIGdTVC0+Q29uT3V0LT5TZXRBdHRyaWJ1 dGUgKGdTVC0+Q29uT3V0LCBQcmludEF0dHJpYnV0ZSk7DQo+ID4+ICsgICAgICB9DQo+ID4+ICsg ICAgICBQcmludCAoTCJcdCVkIEVycm9yKHMpXG4iLCBHZXRFcnJvckNvdW50ICgpKTsNCj4gPj4g Kw0KPiA+PiArICAgICAgaWYgKEdldENvbG91ckhpZ2hsaWdodGluZyAoKSkgew0KPiA+PiArICAg ICAgICBQcmludEF0dHJpYnV0ZSA9IChHZXRXYXJuaW5nQ291bnQgKCkgPiAwKSA/DQo+ID4+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgRUZJX1RFWFRfQVRUUiAoDQo+ID4+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBFRklfUkVELA0KPiA+PiArDQo+ICgoT3JpZ2luYWxBdHRy aWJ1dGUmKEJJVDR8QklUNXxCSVQ2KSk+PjQpDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICApIDoNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcmlnaW5hbEF0 dHJpYnV0ZTsNCj4gPj4gKw0KPiA+PiArICAgICAgICBnU1QtPkNvbk91dC0+U2V0QXR0cmlidXRl IChnU1QtPkNvbk91dCwgUHJpbnRBdHRyaWJ1dGUpOw0KPiA+PiArICAgICAgfQ0KPiA+PiArICAg ICAgUHJpbnQgKEwiXHQlZCBXYXJuaW5nKHMpXG4iLCBHZXRXYXJuaW5nQ291bnQgKCkpOw0KPiA+ PiArDQo+ID4+ICsgICAgICBpZiAoR2V0Q29sb3VySGlnaGxpZ2h0aW5nICgpKSB7DQo+ID4+ICsg ICAgICAgIGdTVC0+Q29uT3V0LT5TZXRBdHRyaWJ1dGUgKGdTVC0+Q29uT3V0LCBPcmlnaW5hbEF0 dHJpYnV0ZSk7DQo+ID4+ICsgICAgICB9DQo+ID4+ICsgICAgfQ0KPiA+PiArICB9DQo+ID4+ICsg IHJldHVybiBFRklfU1VDQ0VTUzsNCj4gPj4gK30NCj4gPj4gKw0KPiA+PiArLyoqDQo+ID4+ICsg IEZ1bmN0aW9uIGZvciAnYWNwaXZpZXcnIGNvbW1hbmQuDQo+ID4+ICsNCj4gPj4gKyAgQHBhcmFt W2luXSBJbWFnZUhhbmRsZSAgSGFuZGxlIHRvIHRoZSBJbWFnZSAoTlVMTCBpZiBJbnRlcm5hbCku DQo+ID4+ICsgIEBwYXJhbVtpbl0gU3lzdGVtVGFibGUgIFBvaW50ZXIgdG8gdGhlIFN5c3RlbSBU YWJsZSAoTlVMTCBpZiBJbnRlcm5hbCkuDQo+ID4+ICsqLw0KPiA+PiArU0hFTExfU1RBVFVTDQo+ ID4+ICtFRklBUEkNCj4gPj4gK1NoZWxsQ29tbWFuZFJ1bkFjcGlWaWV3ICgNCj4gPj4gKyAgSU4g RUZJX0hBTkRMRSAgICAgICAgSW1hZ2VIYW5kbGUsDQo+ID4+ICsgIElOIEVGSV9TWVNURU1fVEFC TEUqIFN5c3RlbVRhYmxlDQo+ID4+ICsgICkNCj4gPj4gK3sNCj4gPj4gKyAgRUZJX1NUQVRVUyAg ICAgICAgIFN0YXR1czsNCj4gPj4gKyAgU0hFTExfU1RBVFVTICAgICAgIFNoZWxsU3RhdHVzID0g U0hFTExfU1VDQ0VTUzsNCj4gPj4gKyAgTElTVF9FTlRSWSogICAgICAgIFBhY2thZ2UgPSBOVUxM Ow0KPiA+PiArICBDSEFSMTYqICAgICAgICAgICAgUHJvYmxlbVBhcmFtOw0KPiA+PiArICBDT05T VCBDSEFSMTYqICAgICAgVGVtcDsNCj4gPj4gKyAgQ0hBUjggICAgICAgICAgICAgIENvbG91ck9w dGlvbls4XTsNCj4gPj4gKyAgU0hFTExfRklMRV9IQU5ETEUgIFRtcER1bXBGaWxlSGFuZGxlID0g TlVMTDsNCj4gPj4gKw0KPiA+PiArICAvLyBTZXQgRGVmYXVsdHMNCj4gPj4gKyAgbVJlcG9ydFR5 cGUgPSBFUkVQT1JUX0FMTDsNCj4gPj4gKyAgbVRhYmxlQ291bnQgPSAwOw0KPiA+PiArICBtQmlu VGFibGVDb3VudCA9IDA7DQo+ID4+ICsgIG1TZWxlY3RlZEFjcGlUYWJsZSA9IDA7DQo+ID4+ICsg IG1TZWxlY3RlZEFjcGlUYWJsZU5hbWUgPSBOVUxMOw0KPiA+PiArICBtU2VsZWN0ZWRBY3BpVGFi bGVGb3VuZCA9IEZBTFNFOw0KPiA+PiArICBtVmVyYm9zZSA9IFRSVUU7DQo+ID4+ICsgIG1Db25z aXN0ZW5jeUNoZWNrID0gVFJVRTsNCj4gPj4gKw0KPiA+PiArICAvLyBSZXNldCBUaGUgZXJyb3Iv d2FybmluZyBjb3VudGVycw0KPiA+PiArICBSZXNldEVycm9yQ291bnQgKCk7DQo+ID4+ICsgIFJl c2V0V2FybmluZ0NvdW50ICgpOw0KPiA+PiArDQo+ID4+ICsgIFN0YXR1cyA9IFNoZWxsQ29tbWFu ZExpbmVQYXJzZSAoUGFyYW1MaXN0LCAmUGFja2FnZSwgJlByb2JsZW1QYXJhbSwNCj4gVFJVRSk7 DQo+ID4+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPj4gKyAgICBpZiAoU3RhdHVz ID09IEVGSV9WT0xVTUVfQ09SUlVQVEVEICYmIFByb2JsZW1QYXJhbSAhPSBOVUxMKSB7DQo+ID4+ ICsgICAgICBTaGVsbFByaW50SGlpRXggKA0KPiA+PiArICAgICAgICAtMSwNCj4gPj4gKyAgICAg ICAgLTEsDQo+ID4+ICsgICAgICAgIE5VTEwsDQo+ID4+ICsgICAgICAgIFNUUklOR19UT0tFTiAo U1RSX0dFTl9QUk9CTEVNKSwNCj4gPj4gKyAgICAgICAgZ1NoZWxsQWNwaVZpZXdIaWlIYW5kbGUs DQo+ID4+ICsgICAgICAgIEwiYWNwaXZpZXciLA0KPiA+PiArICAgICAgICBQcm9ibGVtUGFyYW0N Cj4gPj4gKyAgICAgICAgKTsNCj4gPj4gKyAgICAgIEZyZWVQb29sIChQcm9ibGVtUGFyYW0pOw0K PiA+PiArICAgIH0gZWxzZSB7DQo+ID4+ICsgICAgICBQcmludCAoTCJhY3BpdmlldzogRXJyb3Ig cHJvY2Vzc2luZyBpbnB1dCBwYXJhbWV0ZXIocylcbiIpOw0KPiA+PiArICAgIH0NCj4gPj4gKyAg ICBTaGVsbFN0YXR1cyA9IFNIRUxMX0lOVkFMSURfUEFSQU1FVEVSOw0KPiA+PiArICB9IGVsc2Ug ew0KPiA+PiArICAgIGlmIChTaGVsbENvbW1hbmRMaW5lR2V0Q291bnQgKFBhY2thZ2UpID4gMSkg ew0KPiA+PiArICAgICAgU2hlbGxQcmludEhpaUV4ICgNCj4gPj4gKyAgICAgICAgLTEsDQo+ID4+ ICsgICAgICAgIC0xLA0KPiA+PiArICAgICAgICBOVUxMLA0KPiA+PiArICAgICAgICBTVFJJTkdf VE9LRU4gKFNUUl9HRU5fVE9PX01BTlkpLA0KPiA+PiArICAgICAgICBnU2hlbGxBY3BpVmlld0hp aUhhbmRsZSwNCj4gPj4gKyAgICAgICAgTCJhY3BpdmlldyINCj4gPj4gKyAgICAgICAgKTsNCj4g Pj4gKyAgICAgIFNoZWxsU3RhdHVzID0gU0hFTExfSU5WQUxJRF9QQVJBTUVURVI7DQo+ID4+ICsg ICAgfSBlbHNlIGlmIChTaGVsbENvbW1hbmRMaW5lR2V0RmxhZyAoUGFja2FnZSwgTCItPyIpKSB7 DQo+ID4+ICsgICAgICBTaGVsbFByaW50SGlpRXggKA0KPiA+PiArICAgICAgICAtMSwNCj4gPj4g KyAgICAgICAgLTEsDQo+ID4+ICsgICAgICAgIE5VTEwsDQo+ID4+ICsgICAgICAgIFNUUklOR19U T0tFTiAoU1RSX0dFVF9IRUxQX0FDUElWSUVXKSwNCj4gPj4gKyAgICAgICAgZ1NoZWxsQWNwaVZp ZXdIaWlIYW5kbGUsDQo+ID4+ICsgICAgICAgIEwiYWNwaXZpZXciDQo+ID4+ICsgICAgICAgICk7 DQo+ID4+ICsgICAgfSBlbHNlIGlmIChTaGVsbENvbW1hbmRMaW5lR2V0RmxhZyAoUGFja2FnZSwg TCItcyIpICYmDQo+ID4+ICsgICAgICAgICAgICAgICBTaGVsbENvbW1hbmRMaW5lR2V0VmFsdWUg KFBhY2thZ2UsIEwiLXMiKSA9PSBOVUxMKSB7DQo+ID4+ICsgICAgICBTaGVsbFByaW50SGlpRXgg KA0KPiA+PiArICAgICAgICAtMSwNCj4gPj4gKyAgICAgICAgLTEsDQo+ID4+ICsgICAgICAgIE5V TEwsDQo+ID4+ICsgICAgICAgIFNUUklOR19UT0tFTiAoU1RSX0dFTl9OT19WQUxVRSksDQo+ID4+ ICsgICAgICAgIGdTaGVsbEFjcGlWaWV3SGlpSGFuZGxlLA0KPiA+PiArICAgICAgICBMImFjcGl2 aWV3IiwNCj4gPj4gKyAgICAgICAgTCItcyINCj4gPj4gKyAgICAgICAgKTsNCj4gPj4gKyAgICAg IFNoZWxsU3RhdHVzID0gU0hFTExfSU5WQUxJRF9QQVJBTUVURVI7DQo+ID4+ICsgICAgfSBlbHNl IGlmICgoU2hlbGxDb21tYW5kTGluZUdldEZsYWcgKFBhY2thZ2UsIEwiLXMiKSAmJg0KPiA+PiAr ICAgICAgICAgICAgICAgIFNoZWxsQ29tbWFuZExpbmVHZXRGbGFnIChQYWNrYWdlLCBMIi1sIikp KSB7DQo+ID4+ICsgICAgICBTaGVsbFByaW50SGlpRXggKA0KPiA+PiArICAgICAgICAtMSwNCj4g Pj4gKyAgICAgICAgLTEsDQo+ID4+ICsgICAgICAgIE5VTEwsDQo+ID4+ICsgICAgICAgIFNUUklO R19UT0tFTiAoU1RSX0dFTl9UT09fTUFOWSksDQo+ID4+ICsgICAgICAgIGdTaGVsbEFjcGlWaWV3 SGlpSGFuZGxlLA0KPiA+PiArICAgICAgICBMImFjcGl2aWV3Ig0KPiA+PiArICAgICAgICApOw0K PiA+PiArICAgICAgU2hlbGxTdGF0dXMgPSBTSEVMTF9JTlZBTElEX1BBUkFNRVRFUjsNCj4gPj4g KyAgICB9IGVsc2UgaWYgKFNoZWxsQ29tbWFuZExpbmVHZXRGbGFnIChQYWNrYWdlLCBMIi1oIikg JiYNCj4gPj4gKyAgICAgICAgICAgICAgIFNoZWxsQ29tbWFuZExpbmVHZXRWYWx1ZSAoUGFja2Fn ZSwgTCItaCIpID09IE5VTEwpIHsNCj4gPj4gKyAgICAgICAgU2hlbGxQcmludEhpaUV4ICgNCj4g Pj4gKyAgICAgICAgICAtMSwNCj4gPj4gKyAgICAgICAgICAtMSwNCj4gPj4gKyAgICAgICAgICBO VUxMLA0KPiA+PiArICAgICAgICAgIFNUUklOR19UT0tFTiAoU1RSX0dFTl9OT19WQUxVRSksDQo+ ID4+ICsgICAgICAgICAgZ1NoZWxsQWNwaVZpZXdIaWlIYW5kbGUsDQo+ID4+ICsgICAgICAgICAg TCJhY3BpdmlldyIsDQo+ID4+ICsgICAgICAgICAgTCItaCINCj4gPj4gKyAgICAgICAgICApOw0K PiA+PiArICAgICAgICBTaGVsbFN0YXR1cyA9IFNIRUxMX0lOVkFMSURfUEFSQU1FVEVSOw0KPiA+ PiArICAgIH0gZWxzZSBpZiAoU2hlbGxDb21tYW5kTGluZUdldEZsYWcgKFBhY2thZ2UsIEwiLWQi KSAmJg0KPiA+PiArICAgICAgICAgICAgICAgIVNoZWxsQ29tbWFuZExpbmVHZXRGbGFnIChQYWNr YWdlLCBMIi1zIikpIHsNCj4gPj4gKyAgICAgICAgU2hlbGxQcmludEhpaUV4ICgNCj4gPj4gKyAg ICAgICAgICAtMSwNCj4gPj4gKyAgICAgICAgICAtMSwNCj4gPj4gKyAgICAgICAgICBOVUxMLA0K PiA+PiArICAgICAgICAgIFNUUklOR19UT0tFTiAoU1RSX0dFTl9NSVNTSU5HX09QVElPTiksDQo+ ID4+ICsgICAgICAgICAgZ1NoZWxsQWNwaVZpZXdIaWlIYW5kbGUsDQo+ID4+ICsgICAgICAgICAg TCJhY3BpdmlldyIsDQo+ID4+ICsgICAgICAgICAgTCItcyIsDQo+ID4+ICsgICAgICAgICAgTCIt ZCINCj4gPj4gKyAgICAgICAgICApOw0KPiA+PiArICAgICAgICBTaGVsbFN0YXR1cyA9IFNIRUxM X0lOVkFMSURfUEFSQU1FVEVSOw0KPiA+PiArICAgIH0gZWxzZSB7DQo+ID4+ICsgICAgICAvLyBD aGVjayBpZiB0aGUgY29sb3VyIG9wdGlvbiBpcyBzZXQNCj4gPj4gKyAgICAgIFRlbXAgPSBTaGVs bENvbW1hbmRMaW5lR2V0VmFsdWUgKFBhY2thZ2UsIEwiLWgiKTsNCj4gPj4gKyAgICAgIGlmIChU ZW1wICE9IE5VTEwpIHsNCj4gPj4gKyAgICAgICAgVW5pY29kZVN0clRvQXNjaWlTdHJTIChUZW1w LCBDb2xvdXJPcHRpb24sIHNpemVvZg0KPiAoQ29sb3VyT3B0aW9uKSk7DQo+ID4+ICsgICAgICAg IGlmICgoQXNjaWlTdHJpQ21wIChDb2xvdXJPcHRpb24sICJPTiIpID09IDApIHx8DQo+ID4+ICsg ICAgICAgICAgICAoQXNjaWlTdHJpQ21wIChDb2xvdXJPcHRpb24sICJUUlVFIikgPT0gMCkpIHsN Cj4gPj4gKyAgICAgICAgICBTZXRDb2xvdXJIaWdobGlnaHRpbmcgKFRSVUUpOw0KPiA+PiArICAg ICAgICB9IGVsc2UgaWYgKChBc2NpaVN0cmlDbXAgKENvbG91ck9wdGlvbiwgIk9GRiIpID09IDAp IHx8DQo+ID4+ICsgICAgICAgICAgICAgICAgICAgKEFzY2lpU3RyaUNtcCAoQ29sb3VyT3B0aW9u LCAiRkFMU0UiKSA9PSAwKSkgew0KPiA+PiArICAgICAgICAgIFNldENvbG91ckhpZ2hsaWdodGlu ZyAoRkFMU0UpOw0KPiA+PiArICAgICAgICB9DQo+ID4+ICsgICAgICB9DQo+ID4+ICsNCj4gPj4g KyAgICAgIGlmIChTaGVsbENvbW1hbmRMaW5lR2V0RmxhZyAoUGFja2FnZSwgTCItbCIpKSB7DQo+ ID4+ICsgICAgICAgIG1SZXBvcnRUeXBlID0gRVJFUE9SVF9UQUJMRV9MSVNUOw0KPiA+PiArICAg ICAgfSBlbHNlIHsNCj4gPj4gKyAgICAgICAgbVNlbGVjdGVkQWNwaVRhYmxlTmFtZSA9IFNoZWxs Q29tbWFuZExpbmVHZXRWYWx1ZSAoUGFja2FnZSwNCj4gTCItcyIpOw0KPiA+PiArICAgICAgICBp ZiAobVNlbGVjdGVkQWNwaVRhYmxlTmFtZSAhPSBOVUxMKSB7DQo+ID4+ICsgICAgICAgICAgbVNl bGVjdGVkQWNwaVRhYmxlID0gKFVJTlQzMilDb252ZXJ0U3RyVG9BY3BpU2lnbmF0dXJlICgNCj4g Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVNlbGVjdGVkQWNw aVRhYmxlTmFtZQ0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICApOw0KPiA+PiArICAgICAgICAgIG1SZXBvcnRUeXBlID0gRVJFUE9SVF9TRUxFQ1RFRDsNCj4g Pj4gKw0KPiA+PiArICAgICAgICAgIGlmIChTaGVsbENvbW1hbmRMaW5lR2V0RmxhZyAoUGFja2Fn ZSwgTCItZCIpKSAgew0KPiA+PiArICAgICAgICAgICAgLy8gQ3JlYXRlIGEgdGVtcG9yYXJ5IGZp bGUgdG8gY2hlY2sgaWYgdGhlIG1lZGlhIGlzIHdyaXRhYmxlLg0KPiA+PiArICAgICAgICAgICAg Q0hBUjE2IEZpbGVOYW1lQnVmZmVyW01BWF9GSUxFX05BTUVfTEVOXTsNCj4gPj4gKyAgICAgICAg ICAgIG1SZXBvcnRUeXBlID0gRVJFUE9SVF9EVU1QX0JJTl9GSUxFOw0KPiA+PiArDQo+ID4+ICsg ICAgICAgICAgICBVbmljb2RlU1ByaW50ICgNCj4gPj4gKyAgICAgICAgICAgICAgRmlsZU5hbWVC dWZmZXIsDQo+ID4+ICsgICAgICAgICAgICAgIHNpemVvZiAoRmlsZU5hbWVCdWZmZXIpLA0KPiA+ PiArICAgICAgICAgICAgICBMIi5cXCVzJTA0ZC50bXAiLA0KPiA+PiArICAgICAgICAgICAgICBt U2VsZWN0ZWRBY3BpVGFibGVOYW1lLA0KPiA+PiArICAgICAgICAgICAgICBtQmluVGFibGVDb3Vu dA0KPiA+PiArICAgICAgICAgICAgICApOw0KPiA+PiArDQo+ID4+ICsgICAgICAgICAgICBTdGF0 dXMgPSBTaGVsbE9wZW5GaWxlQnlOYW1lICgNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAg RmlsZU5hbWVCdWZmZXIsDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICZUbXBEdW1wRmls ZUhhbmRsZSwNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgRUZJX0ZJTEVfTU9ERV9SRUFE IHwNCj4gRUZJX0ZJTEVfTU9ERV9XUklURSB8DQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAg IEVGSV9GSUxFX01PREVfQ1JFQVRFLA0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAwDQo+ ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICk7DQo+ID4+ICsNCj4gPj4gKyAgICAgICAgICAg IGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPj4gKyAgICAgICAgICAgICAgU2hlbGxTdGF0 dXMgPSBTSEVMTF9JTlZBTElEX1BBUkFNRVRFUjsNCj4gPj4gKyAgICAgICAgICAgICAgVG1wRHVt cEZpbGVIYW5kbGUgPSBOVUxMOw0KPiA+PiArICAgICAgICAgICAgICBTaGVsbFByaW50SGlpRXgg KA0KPiA+PiArICAgICAgICAgICAgICAgIC0xLA0KPiA+PiArICAgICAgICAgICAgICAgIC0xLA0K PiA+PiArICAgICAgICAgICAgICAgIE5VTEwsDQo+ID4+ICsgICAgICAgICAgICAgICAgU1RSSU5H X1RPS0VOIChTVFJfR0VOX1JFQURPTkxZX01FRElBKSwNCj4gPj4gKyAgICAgICAgICAgICAgICBn U2hlbGxBY3BpVmlld0hpaUhhbmRsZSwNCj4gPj4gKyAgICAgICAgICAgICAgICBMImFjcGl2aWV3 Ig0KPiA+PiArICAgICAgICAgICAgICAgICk7DQo+ID4+ICsgICAgICAgICAgICAgIGdvdG8gRG9u ZTsNCj4gPj4gKyAgICAgICAgICAgIH0NCj4gPj4gKyAgICAgICAgICAgIC8vIERlbGV0ZSBUZW1w b3JhcnkgZmlsZS4NCj4gPj4gKyAgICAgICAgICAgIFNoZWxsRGVsZXRlRmlsZSAoJlRtcER1bXBG aWxlSGFuZGxlKTsNCj4gPj4gKyAgICAgICAgICB9IC8vIC1kDQo+ID4+ICsgICAgICAgIH0gLy8g LXMNCj4gPj4gKyAgICAgIH0NCj4gPj4gKw0KPiA+PiArICAgICAgLy8gUGFyc2UgQUNQSSBUYWJs ZSBpbmZvcm1hdGlvbg0KPiA+PiArICAgICAgU3RhdHVzID0gQWNwaVZpZXcgKFN5c3RlbVRhYmxl KTsNCj4gPj4gKyAgICAgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPj4gKyAgICAgICAg U2hlbGxTdGF0dXMgPSBTSEVMTF9OT1RfRk9VTkQ7DQo+ID4+ICsgICAgICB9DQo+ID4+ICsgICAg fQ0KPiA+PiArICB9DQo+ID4+ICsNCj4gPj4gK0RvbmU6DQo+ID4+ICsgIGlmIChQYWNrYWdlICE9 IE5VTEwpIHsNCj4gPj4gKyAgICBTaGVsbENvbW1hbmRMaW5lRnJlZVZhckxpc3QgKFBhY2thZ2Up Ow0KPiA+PiArICB9DQo+ID4+ICsgIHJldHVybiBTaGVsbFN0YXR1czsNCj4gPj4gK30NCj4gPj4g ZGlmZiAtLWdpdCBhL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGli L0FjcGlWaWV3LmgNCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFu ZExpYi9BY3BpVmlldy5oDQo+ID4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4+IGluZGV4DQo+ IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAzNTYxZWE4MTY4Njgy MWUzN2MwNQ0KPiBkOTBmMDUzNzMxZmRlNjNmYmI1DQo+ID4+IC0tLSAvZGV2L251bGwNCj4gPj4g KysrIGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvQWNwaVZp ZXcuaA0KPiA+PiBAQCAtMCwwICsxLDEwMyBAQA0KPiA+PiArLyoqDQo+ID4+ICsgIEhlYWRlciBm aWxlIGZvciBBY3BpVmlldw0KPiA+PiArDQo+ID4+ICsgIENvcHlyaWdodCAoYykgMjAxNiAtIDIw MTgsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiA+PiArICBUaGlzIHByb2dy YW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ID4+ICsgIGFyZSBsaWNlbnNlZCBh bmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZQ0K PiBCU0QgTGljZW5zZQ0KPiA+PiArICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlv bi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlDQo+IGZvdW5kIGF0DQo+ID4+ ICsgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4gPj4g Kw0KPiA+PiArICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VO U0UgT04gQU4gIkFTIElTIg0KPiBCQVNJUywNCj4gPj4gKyAgV0lUSE9VVCBXQVJSQU5USUVTIE9S IFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSDQo+IEVYUFJFU1MgT1IgSU1QTElF RC4NCj4gPj4gKyoqLw0KPiA+PiArDQo+ID4+ICsjaWZuZGVmIEFDUElWSUVXX0hfDQo+ID4+ICsj ZGVmaW5lIEFDUElWSUVXX0hfDQo+ID4+ICsNCj4gPj4gKy8qKiBBIG1hY3JvIHRvIGRlZmluZSB0 aGUgbWF4IGZpbGUgbmFtZSBsZW5ndGgNCj4gPj4gKyovDQo+ID4+ICsjZGVmaW5lIE1BWF9GSUxF X05BTUVfTEVOICAgIDEyOA0KPiA+PiArDQo+ID4+ICsvKiogT2Zmc2V0IHRvIHRoZSBSU0RQIHJl dmlzaW9uIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBSU0RQDQo+ID4+ICsqLw0KPiA+PiArI2RlZmlu ZSBSU0RQX1JFVklTSU9OX09GRlNFVCAxNQ0KPiA+PiArDQo+ID4+ICsvKiogT2Zmc2V0IHRvIHRo ZSBSU0RQIGxlbmd0aCBmcm9tIHRoZSBzdGFydCBvZiB0aGUgUlNEUA0KPiA+PiArKi8NCj4gPj4g KyNkZWZpbmUgUlNEUF9MRU5HVEhfT0ZGU0VUICAgMjANCj4gPj4gKw0KPiA+PiArLyoqIFRoZSBF UkVQT1JUX09QVElPTiBlbnVtIGRlc2NyaWJlcyBBQ1BJIHRhYmxlIFJlcG9ydGluZyBvcHRpb25z Lg0KPiA+PiArKi8NCj4gPj4gK3R5cGVkZWYgZW51bSBSZXBvcnRPcHRpb24gew0KPiA+PiArICBF UkVQT1JUX0FMTCwgICAgICAgICAgICAvLy88IFJlcG9ydCBBbGwgdGFibGVzLg0KPiA+PiArICBF UkVQT1JUX1NFTEVDVEVELCAgICAgICAvLy88IFJlcG9ydCBTZWxlY3RlZCB0YWJsZS4NCj4gPj4g KyAgRVJFUE9SVF9UQUJMRV9MSVNULCAgICAgLy8vPCBSZXBvcnQgTGlzdCBvZiB0YWJsZXMuDQo+ ID4+ICsgIEVSRVBPUlRfRFVNUF9CSU5fRklMRSwgIC8vLzwgRHVtcCBzZWxlY3RlZCB0YWJsZSB0 byBhIGZpbGUuDQo+ID4+ICsgIEVSRVBPUlRfTUFYDQo+ID4+ICt9IEVSRVBPUlRfT1BUSU9OOw0K PiA+PiArDQo+ID4+ICsvKiogVGhpcyBmdW5jdGlvbiByZXNldHMgdGhlIEFDUEkgdGFibGUgZXJy b3IgY291bnRlciB0byBaZXJvLg0KPiA+PiArKi8NCj4gPj4gK1ZPSUQNCj4gPj4gK1Jlc2V0RXJy b3JDb3VudCAoDQo+ID4+ICsgIFZPSUQNCj4gPj4gKyAgKTsNCj4gPj4gKw0KPiA+PiArLyoqIFRo aXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgQUNQSSB0YWJsZSBlcnJvciBjb3VudC4NCj4gPj4gKw0K PiA+PiArICBAcmV0dmFsIFJldHVybnMgdGhlIGNvdW50IG9mIGVycm9ycyBkZXRlY3RlZCBpbiB0 aGUgQUNQSSB0YWJsZXMuDQo+ID4+ICsqLw0KPiA+PiArVUlOVDMyDQo+ID4+ICtHZXRFcnJvckNv dW50ICgNCj4gPj4gKyAgVk9JRA0KPiA+PiArICApOw0KPiA+PiArDQo+ID4+ICsvKiogVGhpcyBm dW5jdGlvbiByZXNldHMgdGhlIEFDUEkgdGFibGUgd2FybmluZyBjb3VudGVyIHRvIFplcm8uDQo+ ID4+ICsqLw0KPiA+PiArVk9JRA0KPiA+PiArUmVzZXRXYXJuaW5nQ291bnQgKA0KPiA+PiArICBW T0lEDQo+ID4+ICsgICk7DQo+ID4+ICsNCj4gPj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHJldHVybnMg dGhlIEFDUEkgdGFibGUgd2FybmluZyBjb3VudC4NCj4gPj4gKw0KPiA+PiArICBAcmV0dmFsIFJl dHVybnMgdGhlIGNvdW50IG9mIHdhcm5pbmcgZGV0ZWN0ZWQgaW4gdGhlIEFDUEkgdGFibGVzLg0K PiA+PiArKi8NCj4gPj4gK1VJTlQzMg0KPiA+PiArR2V0V2FybmluZ0NvdW50ICgNCj4gPj4gKyAg Vk9JRA0KPiA+PiArICApOw0KPiA+PiArDQo+ID4+ICsvKiogVGhpcyBmdW5jdGlvbiByZXR1cm5z IHRoZSBjb2xvdXIgaGlnaGxpZ2h0aW5nIHN0YXR1cy4NCj4gPj4gKw0KPiA+PiArICBAcmV0dmFs IFRSVUUgaWYgY29sb3VyIGhpZ2hsaWdodGluZyBpcyBlbmFibGVkLg0KPiA+PiArKi8NCj4gPj4g K0JPT0xFQU4NCj4gPj4gK0dldENvbG91ckhpZ2hsaWdodGluZyAoDQo+ID4+ICsgIFZPSUQNCj4g Pj4gKyAgKTsNCj4gPj4gKw0KPiA+PiArLyoqIFRoaXMgZnVuY3Rpb24gc2V0cyB0aGUgY29sb3Vy IGhpZ2hsaWdodGluZyBzdGF0dXMuDQo+ID4+ICsNCj4gPj4gKyovDQo+ID4+ICtWT0lEDQo+ID4+ ICtTZXRDb2xvdXJIaWdobGlnaHRpbmcgKA0KPiA+PiArICBCT09MRUFOIEhpZ2hsaWdodA0KPiA+ PiArICApOw0KPiA+PiArDQo+ID4+ICsvKiogVGhpcyBmdW5jdGlvbiBwcm9jZXNzZXMgdGhlIHRh YmxlIHJlcG9ydGluZyBvcHRpb25zIGZvciB0aGUgQUNQSSB0YWJsZS4NCj4gPj4gKw0KPiA+PiAr ICBAcGFyYW0gW2luXSBTaWduYXR1cmUgVGhlIEFDUEkgdGFibGUgU2lnbmF0dXJlLg0KPiA+PiAr ICBAcGFyYW0gW2luXSBUYWJsZVB0ciAgUG9pbnRlciB0byB0aGUgQUNQSSB0YWJsZSBkYXRhLg0K PiA+PiArICBAcGFyYW0gW2luXSBMZW5ndGggICAgVGhlIGxlbmd0aCBmbyB0aGUgQUNQSSB0YWJs ZS4NCj4gPj4gKw0KPiA+PiArICBAcmV0dmFsIFJldHVybnMgVFJVRSBpZiB0aGUgQUNQSSB0YWJs ZSBzaG91bGQgYmUgdHJhY2VkLg0KPiA+PiArKi8NCj4gPj4gK0JPT0xFQU4NCj4gPj4gK1Byb2Nl c3NUYWJsZVJlcG9ydE9wdGlvbnMgKA0KPiA+PiArICBJTiBDT05TVCBVSU5UMzIgIFNpZ25hdHVy ZSwNCj4gPj4gKyAgSU4gQ09OU1QgVUlOVDgqICBUYWJsZVB0ciwNCj4gPj4gKyAgSU4gQ09OU1Qg VUlOVDMyICBMZW5ndGgNCj4gPj4gKyAgKTsNCj4gPj4gKw0KPiA+PiArI2VuZGlmIC8vIEFDUElW SUVXX0hfDQo+ID4+IGRpZmYgLS1naXQNCj4gYS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFj cGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL0JncnQvQmdydFBhcnNlci5jDQo+IGIvU2hlbGxQa2cv TGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9CZ3J0L0JncnRQYXJz ZXIuYw0KPiA+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+PiBpbmRleA0KPiAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNjZlODIwYmE3ODhhMGZiNzgxMDYNCj4g MWRiYWQxZjU3ZjkwYWNlZjc4Yw0KPiA+PiAtLS0gL2Rldi9udWxsDQo+ID4+ICsrKw0KPiBiL1No ZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvQmdydC9C Z3J0UGFyc2VyLmMNCj4gPj4gQEAgLTAsMCArMSwxMTcgQEANCj4gPj4gKy8qKg0KPiA+PiArICBC R1JUIHRhYmxlIHBhcnNlcg0KPiA+PiArDQo+ID4+ICsgIENvcHlyaWdodCAoYykgMjAxNyAtIDIw MTgsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiA+PiArICBUaGlzIHByb2dy YW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ID4+ICsgIGFyZSBsaWNlbnNlZCBh bmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZQ0K PiBCU0QgTGljZW5zZQ0KPiA+PiArICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlv bi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlDQo+IGZvdW5kIGF0DQo+ID4+ ICsgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4gPj4g Kw0KPiA+PiArICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VO U0UgT04gQU4gIkFTIElTIg0KPiBCQVNJUywNCj4gPj4gKyAgV0lUSE9VVCBXQVJSQU5USUVTIE9S IFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSDQo+IEVYUFJFU1MgT1IgSU1QTElF RC4NCj4gPj4gKw0KPiA+PiArICBAcGFyIFJlZmVyZW5jZShzKToNCj4gPj4gKyAgICAtIEFDUEkg Ni4yIFNwZWNpZmljYXRpb24gLSBFcnJhdGEgQSwgU2VwdGVtYmVyIDIwMTcNCj4gPj4gKyoqLw0K PiA+PiArDQo+ID4+ICsjaW5jbHVkZSA8SW5kdXN0cnlTdGFuZGFyZC9BY3BpLmg+DQo+ID4+ICsj aW5jbHVkZSA8TGlicmFyeS9VZWZpTGliLmg+DQo+ID4+ICsjaW5jbHVkZSA8TGlicmFyeS9BY3Bp Vmlldy9BY3BpUGFyc2VyLmg+DQo+ID4+ICsjaW5jbHVkZSA8TGlicmFyeS9BY3BpVmlldy9BY3Bp VGFibGVQYXJzZXIuaD4NCj4gPj4gKw0KPiA+PiArLy8gTG9jYWwgdmFyaWFibGVzDQo+ID4+ICtT VEFUSUMgQUNQSV9ERVNDUklQVElPTl9IRUFERVJfSU5GTyBBY3BpSGRySW5mbzsNCj4gPj4gKw0K PiA+PiArLyoqIEFuIEFDUElfUEFSU0VSIGFycmF5IGRlc2NyaWJpbmcgdGhlIEFDUEkgQkRSVCBU YWJsZS4NCj4gPj4gKyovDQo+ID4+ICtTVEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgQmdydFBhcnNl cltdID0gew0KPiA+PiArICBQQVJTRV9BQ1BJX0hFQURFUiAoJkFjcGlIZHJJbmZvKSwNCj4gPj4g KyAge0wiVmVyc2lvbiIsIDIsIDM2LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwN Cj4gPj4gKyAge0wiU3RhdHVzIiwgMSwgMzgsIEwiMHgleCIsIE5VTEwsICBOVUxMLCBOVUxMLCBO VUxMfSwNCj4gPj4gKyAge0wiSW1hZ2UgVHlwZSIsIDEsIDM5LCBMIjB4JXgiLCBOVUxMLCBOVUxM LCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiSW1hZ2UgQWRkcmVzcyIsIDgsIDQwLCBMIjB4JWx4 IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4+ICsgIHtMIkltYWdlIE9mZnNldCBYIiwg NCwgNDgsIEwiJWQiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiSW1hZ2Ug T2Zmc2V0IFkiLCA0LCA1MiwgTCIlZCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9DQo+ID4+ICt9 Ow0KPiA+PiArDQo+ID4+ICsvKiogVGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIEFDUEkgQkdSVCB0 YWJsZS4NCj4gPj4gKyAgV2hlbiB0cmFjZSBpcyBlbmFibGVkIHRoaXMgZnVuY3Rpb24gcGFyc2Vz IHRoZSBCR1JUIHRhYmxlIGFuZA0KPiA+PiArICB0cmFjZXMgdGhlIEFDUEkgdGFibGUgZmllbGRz Lg0KPiA+PiArDQo+ID4+ICsgIFRoaXMgZnVuY3Rpb24gYWxzbyBwYXJzZXMgdGhlIEFDUEkgaGVh ZGVyIGZvciB0aGUgRFNEVCB0YWJsZSBhbmQNCj4gPj4gKyAgaW52b2tlcyB0aGUgcGFyc2VyIGZv ciB0aGUgQUNQSSBEU0RUIHRhYmxlLg0KPiA+PiArDQo+ID4+ICsgIFRoaXMgZnVuY3Rpb24gYWxz byBwZXJmb3JtcyB2YWxpZGF0aW9uIG9mIHRoZSBBQ1BJIHRhYmxlIGZpZWxkcy4NCj4gPj4gKw0K PiA+PiArICBAcGFyYW0gW2luXSBUcmFjZSAgICAgICAgICAgICAgSWYgVFJVRSwgdHJhY2UgdGhl IEFDUEkgZmllbGRzLg0KPiA+PiArICBAcGFyYW0gW2luXSBQdHIgICAgICAgICAgICAgICAgUG9p bnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gPj4gKyAgQHBhcmFtIFtpbl0gQWNw aVRhYmxlTGVuZ3RoICAgIExlbmd0aCBvZiB0aGUgQUNQSSB0YWJsZS4NCj4gPj4gKyAgQHBhcmFt IFtpbl0gQWNwaVRhYmxlUmV2aXNpb24gIFJldmlzaW9uIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiA+ PiArKi8NCj4gPj4gK1ZPSUQNCj4gPj4gK0VGSUFQSQ0KPiA+PiArUGFyc2VBY3BpQmdydCAoDQo+ ID4+ICsgIElOIEJPT0xFQU4gVHJhY2UsDQo+ID4+ICsgIElOIFVJTlQ4KiAgUHRyLA0KPiA+PiAr ICBJTiBVSU5UMzIgIEFjcGlUYWJsZUxlbmd0aCwNCj4gPj4gKyAgSU4gVUlOVDggICBBY3BpVGFi bGVSZXZpc2lvbg0KPiA+PiArICApDQo+ID4+ICt7DQo+ID4+ICsgIGlmICghVHJhY2UpIHsNCj4g Pj4gKyAgICByZXR1cm47DQo+ID4+ICsgIH0NCj4gPj4gKw0KPiA+PiArICBQYXJzZUFjcGkgKA0K PiA+PiArICAgIFRyYWNlLA0KPiA+PiArICAgIDAsDQo+ID4+ICsgICAgIkJHUlQiLA0KPiA+PiAr ICAgIFB0ciwNCj4gPj4gKyAgICBBY3BpVGFibGVMZW5ndGgsDQo+ID4+ICsgICAgUEFSU0VSX1BB UkFNUyAoQmdydFBhcnNlcikNCj4gPj4gKyAgICApOw0KPiA+PiArfQ0KPiA+PiArDQo+ID4+ICsv KiogUmVnaXN0ZXIgdGhlIHBhcnNlci4NCj4gPj4gKw0KPiA+PiArICBAcGFyYW0gW2luXSAgSW1h Z2VIYW5kbGUgIFRoZSBoYW5kbGUgdG8gdGhlIGltYWdlLg0KPiA+PiArICBAcGFyYW0gW2luXSAg U3lzdGVtVGFibGUgIFBvaW50ZXIgdG8gdGhlIFN5c3RlbSBUYWJsZS4NCj4gPj4gKw0KPiA+PiAr ICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUgcGFyc2VyIGlzIHJlZ2lzdGVyZWQu DQo+ID4+ICsgIEByZXR2YWwgRUZJX0FMUkVBRFlfU1RBUlRFRCAgIFRoZSBwYXJzZXIgZm9yIHRo ZSBBQ1BJIFRhYmxlDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhcyBh bHJlYWR5IHJlZ2lzdGVyZWQuDQo+ID4+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVS IEEgcGFyYW1ldGVyIGlzIGludmFsaWQNCj4gPj4gKyAgQHJldHZhbCBFRklfT1VUX09GX1JFU09V UkNFUyAgTm8gc3BhY2UgdG8gcmVnaXN0ZXIgdGhlDQo+ID4+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHBhcnNlci4NCj4gPj4gKyovDQo+ID4+ICtFRklfU1RBVFVTDQo+ID4+ICtF RklBUEkNCj4gPj4gK0JncnRQYXJzZXJMaWJDb25zdHJ1Y3RvciAoDQo+ID4+ICsgIElOIENPTlNU IEVGSV9IQU5ETEUgICAgICAgICAgICAgICAgSW1hZ2VIYW5kbGUsDQo+ID4+ICsgIElOICAgICAg IEVGSV9TWVNURU1fVEFCTEUgICogQ09OU1QgU3lzdGVtVGFibGUNCj4gPj4gKyAgKQ0KPiA+PiAr ew0KPiA+PiArICByZXR1cm4gUmVnaXN0ZXJQYXJzZXIgKA0KPiA+PiArDQo+IEVGSV9BQ1BJXzZf Ml9CT09UX0dSQVBISUNTX1JFU09VUkNFX1RBQkxFX1NJR05BVFVSRSwNCj4gPj4gKyAgICAgICAg ICAgUGFyc2VBY3BpQmdydA0KPiA+PiArICAgICAgICAgICApOw0KPiA+PiArfQ0KPiA+PiArDQo+ ID4+ICsvKiogRGVyZWdpc3RlciB0aGUgcGFyc2VyLg0KPiA+PiArDQo+ID4+ICsgIEBwYXJhbSBb aW5dICBJbWFnZUhhbmRsZSAgVGhlIGhhbmRsZSB0byB0aGUgaW1hZ2UuDQo+ID4+ICsgIEBwYXJh bSBbaW5dICBTeXN0ZW1UYWJsZSAgUG9pbnRlciB0byB0aGUgU3lzdGVtIFRhYmxlLg0KPiA+PiAr DQo+ID4+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBwYXJzZXIgaXMgZGVy ZWdpc3RlcmVkLg0KPiA+PiArICBAcmV0dmFsIEVGSV9OT1RfRk9VTkQgICAgICAgICBUaGUgcGFy c2VyIHdhcyBub3QgcmVnaXN0ZXJlZC4NCj4gPj4gKyovDQo+ID4+ICtFRklfU1RBVFVTDQo+ID4+ ICtFRklBUEkNCj4gPj4gK0JncnRQYXJzZXJMaWJEZXN0cnVjdG9yICgNCj4gPj4gKyAgSU4gQ09O U1QgRUZJX0hBTkRMRSAgICAgICAgICAgICAgICBJbWFnZUhhbmRsZSwNCj4gPj4gKyAgSU4gICAg ICAgRUZJX1NZU1RFTV9UQUJMRSAgKiBDT05TVCBTeXN0ZW1UYWJsZQ0KPiA+PiArICApDQo+ID4+ ICt7DQo+ID4+ICsgIHJldHVybiBEZXJlZ2lzdGVyUGFyc2VyICgNCj4gPj4gKw0KPiBFRklfQUNQ SV82XzJfQk9PVF9HUkFQSElDU19SRVNPVVJDRV9UQUJMRV9TSUdOQVRVUkUNCj4gPj4gKyAgICAg ICAgICAgKTsNCj4gPj4gK30NCj4gPj4gZGlmZiAtLWdpdA0KPiBhL1NoZWxsUGtnL0xpYnJhcnkv VWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvQmdydC9CZ3J0UGFyc2VyTGliLmkN Cj4gbmYNCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9Q YXJzZXJzL0JncnQvQmdydFBhcnNlckxpYi5pDQo+IG5mDQo+ID4+IG5ldyBmaWxlIG1vZGUgMTAw NjQ0DQo+ID4+IGluZGV4DQo+IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAuLjBhNGQ0MGYwMGRhMWEyMGU0OGM4NA0KPiBlNGEzZDI1ZGQ3YTRkYjc0NzYxDQo+ID4+IC0t LSAvZGV2L251bGwNCj4gPj4gKysrDQo+IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3Bp Vmlld0NvbW1hbmRMaWIvUGFyc2Vycy9CZ3J0L0JncnRQYXJzZXJMaWIuaQ0KPiBuZg0KPiA+PiBA QCAtMCwwICsxLDMzIEBADQo+ID4+ICsjIyBAZmlsZQ0KPiA+PiArIw0KPiA+PiArIyAgQ29weXJp Z2h0IChjKSAyMDE3IC0gMjAxOCwgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ ID4+ICsjDQo+ID4+ICsjICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJp YWxzDQo+ID4+ICsjICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0 ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUNCj4gQlNEIExpY2Vuc2UNCj4gPj4gKyMgIHdoaWNo IGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGlj ZW5zZSBtYXkgYmUNCj4gZm91bmQgYXQNCj4gPj4gKyMgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9s aWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4gPj4gKyMNCj4gPj4gKyMgIFRIRSBQUk9HUkFNIElT IERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiDQo+IEJBU0lT LA0KPiA+PiArIyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkg S0lORCwgRUlUSEVSDQo+IEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gPj4gKyMjDQo+ID4+ICsNCj4g Pj4gK1tEZWZpbmVzXQ0KPiA+PiArICBJTkZfVkVSU0lPTiAgICA9IDB4MDAwMTAwMTkNCj4gPj4g KyAgQkFTRV9OQU1FICAgICAgPSBCZ3J0UGFyc2VyTGliDQo+ID4+ICsgIEZJTEVfR1VJRCAgICAg ID0gQzRDQ0Q5QjYtRjYyRi00QjA2LUEyNUQtRjgxNTUwN0I0OUUwDQo+ID4+ICsgIFZFUlNJT05f U1RSSU5HID0gMS4wDQo+ID4+ICsgIE1PRFVMRV9UWVBFICAgID0gRFhFX0RSSVZFUg0KPiA+PiAr ICBMSUJSQVJZX0NMQVNTICA9IE5VTEx8RFhFX0RSSVZFUg0KPiA+PiArICBDT05TVFJVQ1RPUiAg ICA9IEJncnRQYXJzZXJMaWJDb25zdHJ1Y3Rvcg0KPiA+PiArICBERVNUUlVDVE9SICAgICA9IEJn cnRQYXJzZXJMaWJEZXN0cnVjdG9yDQo+ID4+ICsNCj4gPj4gK1tTb3VyY2VzXQ0KPiA+PiArICBC Z3J0UGFyc2VyLmMNCj4gPj4gKw0KPiA+PiArW1BhY2thZ2VzXQ0KPiA+PiArICBNZGVQa2cvTWRl UGtnLmRlYw0KPiA+PiArICBTaGVsbFBrZy9TaGVsbFBrZy5kZWMNCj4gPj4gKyAgTWRlTW9kdWxl UGtnL01kZU1vZHVsZVBrZy5kZWMNCj4gPj4gKw0KPiA+PiArW0xpYnJhcnlDbGFzc2VzXQ0KPiA+ PiArICBTaGVsbEFjcGlWaWV3Q29tbWFuZExpYg0KPiA+PiBkaWZmIC0tZ2l0DQo+IGEvU2hlbGxQ a2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9EYmcyL0RiZzJQ YXJzZXIuYw0KPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGli L1BhcnNlcnMvRGJnMi9EYmcyUGFyc2VyLmMNCj4gPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4g Pj4gaW5kZXgNCj4gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTRk ZTlhMzY1Y2MxZjk2MWQzNTFlZg0KPiAyMjkxN2QzMDA5YTNlOWRjNTMNCj4gPj4gLS0tIC9kZXYv bnVsbA0KPiA+PiArKysNCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29t bWFuZExpYi9QYXJzZXJzL0RiZzIvRGJnMlBhcnNlci5jDQo+ID4+IEBAIC0wLDAgKzEsMjg3IEBA DQo+ID4+ICsvKioNCj4gPj4gKyAgREJHMiB0YWJsZSBwYXJzZXINCj4gPj4gKw0KPiA+PiArICBD b3B5cmlnaHQgKGMpIDIwMTYgLSAyMDE4LCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZl ZC4NCj4gPj4gKyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0K PiA+PiArICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBh bmQgY29uZGl0aW9ucyBvZiB0aGUNCj4gQlNEIExpY2Vuc2UNCj4gPj4gKyAgd2hpY2ggYWNjb21w YW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1h eSBiZQ0KPiBmb3VuZCBhdA0KPiA+PiArICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMv YnNkLWxpY2Vuc2UucGhwDQo+ID4+ICsNCj4gPj4gKyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVU RUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyINCj4gQkFTSVMsDQo+ID4+ICsg IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhF Ug0KPiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ID4+ICsNCj4gPj4gKyAgQHBhciBSZWZlcmVuY2Uo cyk6DQo+ID4+ICsgICAgLSBNaWNyb3NvZnQgRGVidWcgUG9ydCBUYWJsZSAyIChEQkcyKSBTcGVj aWZpY2F0aW9uIC0gRGVjZW1iZXIgMTAsDQo+IDIwMTUuDQo+ID4+ICsqKi8NCj4gPj4gKw0KPiA+ PiArI2luY2x1ZGUgPEluZHVzdHJ5U3RhbmRhcmQvRGVidWdQb3J0MlRhYmxlLmg+DQo+ID4+ICsj aW5jbHVkZSA8TGlicmFyeS9VZWZpTGliLmg+DQo+ID4+ICsjaW5jbHVkZSA8TGlicmFyeS9BY3Bp Vmlldy9BY3BpUGFyc2VyLmg+DQo+ID4+ICsjaW5jbHVkZSA8TGlicmFyeS9BY3BpVmlldy9BY3Bp VGFibGVQYXJzZXIuaD4NCj4gPj4gKw0KPiA+PiArLy8gTG9jYWwgdmFyaWFibGVzIHBvaW50aW5n IHRvIHRoZSB0YWJsZSBmaWVsZHMNCj4gPj4gK1NUQVRJQyBDT05TVCBVSU5UMzIqIE9mZnNldERi Z0RldmljZUluZm87DQo+ID4+ICtTVEFUSUMgQ09OU1QgVUlOVDMyKiBOdW1iZXJEYmdEZXZpY2VJ bmZvOw0KPiA+PiArU1RBVElDIENPTlNUIFVJTlQxNiogRGJnRGV2SW5mb0xlbjsNCj4gPj4gK1NU QVRJQyBDT05TVCBVSU5UOCogIEdhc0NvdW50Ow0KPiA+PiArU1RBVElDIENPTlNUIFVJTlQxNiog TmFtZVNwYWNlU3RyaW5nTGVuZ3RoOw0KPiA+PiArU1RBVElDIENPTlNUIFVJTlQxNiogTmFtZVNw YWNlU3RyaW5nT2Zmc2V0Ow0KPiA+PiArU1RBVElDIENPTlNUIFVJTlQxNiogT0VNRGF0YUxlbmd0 aDsNCj4gPj4gK1NUQVRJQyBDT05TVCBVSU5UMTYqIE9FTURhdGFPZmZzZXQ7DQo+ID4+ICtTVEFU SUMgQ09OU1QgVUlOVDE2KiBCYXNlQWRkclJlZ09mZnNldDsNCj4gPj4gK1NUQVRJQyBDT05TVCBV SU5UMTYqIEFkZHJTaXplT2Zmc2V0Ow0KPiA+PiArU1RBVElDIEFDUElfREVTQ1JJUFRJT05fSEVB REVSX0lORk8gQWNwaUhkckluZm87DQo+ID4+ICsNCj4gPj4gKy8qKiBUaGlzIGZ1bmN0aW9uIFZh bGlkYXRlcyB0aGUgTmFtZVNwYWNlIHN0cmluZyBsZW5ndGguDQo+ID4+ICsNCj4gPj4gKyAgQHBh cmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiA+ PiArICBAcGFyYW0gW2luXSBDb250ZXh0IFBvaW50ZXIgdG8gY29udGV4dCBzcGVjaWZpYyBpbmZv cm1hdGlvbiBlLmcuIHRoaXMNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICBjb3VsZCBiZSBh IHBvaW50ZXIgdG8gdGhlIEFDUEkgdGFibGUgaGVhZGVyLg0KPiA+PiArKi8NCj4gPj4gK1NUQVRJ Qw0KPiA+PiArVk9JRA0KPiA+PiArRUZJQVBJDQo+ID4+ICtWYWxpZGF0ZU5hbWVTcGFjZVN0ckxl biAoDQo+ID4+ICsgIElOICBVSU5UOCogUHRyLA0KPiA+PiArICBJTiAgVk9JRCogIENvbnRleHQN Cj4gPj4gKyAgKTsNCj4gPj4gKw0KPiA+PiArLyoqIFRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBk ZWJ1ZyBkZXZpY2UgaW5mb3JtYXRpb24gc3RydWN0dXJlLg0KPiA+PiArDQo+ID4+ICsgIEBwYXJh bSBbaW5dICBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ID4+ ICsgIEBwYXJhbSBbb3V0XSBMZW5ndGggIFBvaW50ZXIgaW4gd2hpY2ggdGhlIGxlbmd0aCBvZiB0 aGUgZGVidWcNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlIGluZm9ybWF0aW9u IGlzIHJldHVybmVkLg0KPiA+PiArKi8NCj4gPj4gK1NUQVRJQw0KPiA+PiArVk9JRA0KPiA+PiAr RUZJQVBJDQo+ID4+ICtEdW1wRGJnRGV2aWNlSW5mbyAoDQo+ID4+ICsgIElOICBVSU5UOCogIFB0 ciwNCj4gPj4gKyAgT1VUIFVJTlQzMiogTGVuZ3RoDQo+ID4+ICsgICk7DQo+ID4+ICsNCj4gPj4g Ky8vLyBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBBQ1BJIERCRzIgdGFibGUu DQo+ID4+ICtTVEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgRGJnMlBhcnNlcltdID0gew0KPiA+PiAr ICBQQVJTRV9BQ1BJX0hFQURFUiAoJkFjcGlIZHJJbmZvKSwNCj4gPj4gKyAge0wiT2Zmc2V0RGJn RGV2aWNlSW5mbyIsIDQsIDM2LCBMIjB4JXgiLCBOVUxMLA0KPiA+PiArICAgKFZPSUQqKikmT2Zm c2V0RGJnRGV2aWNlSW5mbywgTlVMTCwgTlVMTH0sDQo+ID4+ICsgIHtMIk51bWJlckRiZ0Rldmlj ZUluZm8iLCA0LCA0MCwgTCIlZCIsIE5VTEwsDQo+ID4+ICsgICAoVk9JRCoqKSZOdW1iZXJEYmdE ZXZpY2VJbmZvLCBOVUxMLCBOVUxMfQ0KPiA+PiArfTsNCj4gPj4gKw0KPiA+PiArLy8vIEFuIEFD UElfUEFSU0VSIGFycmF5IGRlc2NyaWJpbmcgdGhlIGRlYnVnIGRldmljZSBpbmZvcm1hdGlvbi4N Cj4gPj4gK1NUQVRJQyBDT05TVCBBQ1BJX1BBUlNFUiBEYmdEZXZJbmZvUGFyc2VyW10gPSB7DQo+ ID4+ICsgIHtMIlJldmlzaW9uIiwgMSwgMCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVM TH0sDQo+ID4+ICsgIHtMIkxlbmd0aCIsIDIsIDEsIEwiJWQiLCBOVUxMLCAoVk9JRCoqKSZEYmdE ZXZJbmZvTGVuLCBOVUxMLCBOVUxMfSwNCj4gPj4gKw0KPiA+PiArICB7TCJHZW5lcmljIEFkZHJl c3MgUmVnaXN0ZXJzIENvdW50IiwgMSwgMywgTCIweCV4IiwgTlVMTCwNCj4gPj4gKyAgIChWT0lE KiopJkdhc0NvdW50LCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiTmFtZVNwYWNlIFN0cmluZyBM ZW5ndGgiLCAyLCA0LCBMIiVkIiwgTlVMTCwNCj4gPj4gKyAgIChWT0lEKiopJk5hbWVTcGFjZVN0 cmluZ0xlbmd0aCwgVmFsaWRhdGVOYW1lU3BhY2VTdHJMZW4sIE5VTEx9LA0KPiA+PiArICB7TCJO YW1lU3BhY2UgU3RyaW5nIE9mZnNldCIsIDIsIDYsIEwiMHgleCIsIE5VTEwsDQo+ID4+ICsgICAo Vk9JRCoqKSZOYW1lU3BhY2VTdHJpbmdPZmZzZXQsIE5VTEwsIE5VTEx9LA0KPiA+PiArICB7TCJP RU0gRGF0YSBMZW5ndGgiLCAyLCA4LCBMIiVkIiwgTlVMTCwgKFZPSUQqKikmT0VNRGF0YUxlbmd0 aCwNCj4gPj4gKyAgIE5VTEwsIE5VTEx9LA0KPiA+PiArICB7TCJPRU0gRGF0YSBPZmZzZXQiLCAy LCAxMCwgTCIweCV4IiwgTlVMTCwgKFZPSUQqKikmT0VNRGF0YU9mZnNldCwNCj4gPj4gKyAgIE5V TEwsIE5VTEx9LA0KPiA+PiArDQo+ID4+ICsgIHtMIlBvcnQgVHlwZSIsIDIsIDEyLCBMIjB4JXgi LCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiUG9ydCBTdWJUeXBlIiwgMiwg MTQsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+PiArICB7TCJSZXNlcnZl ZCIsIDIsIDE2LCBMIiV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4+ICsNCj4gPj4g KyAge0wiQmFzZSBBZGRyZXNzIFJlZ2lzdGVyIE9mZnNldCIsIDIsIDE4LCBMIjB4JXgiLCBOVUxM LA0KPiA+PiArICAgKFZPSUQqKikmQmFzZUFkZHJSZWdPZmZzZXQsIE5VTEwsIE5VTEx9LA0KPiA+ PiArICB7TCJBZGRyZXNzIFNpemUgT2Zmc2V0IiwgMiwgMjAsIEwiMHgleCIsIE5VTEwsDQo+ID4+ ICsgICAoVk9JRCoqKSZBZGRyU2l6ZU9mZnNldCwgTlVMTCwgTlVMTH0NCj4gPj4gK307DQo+ID4+ ICsNCj4gPj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHZhbGlkYXRlcyB0aGUgTmFtZVNwYWNlIHN0cmlu ZyBsZW5ndGguDQo+ID4+ICsNCj4gPj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRv IHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiA+PiArICBAcGFyYW0gW2luXSBDb250ZXh0IFBv aW50ZXIgdG8gY29udGV4dCBzcGVjaWZpYyBpbmZvcm1hdGlvbiBlLmcuIHRoaXMNCj4gPj4gKyAg ICAgICAgICAgICAgICAgICAgICBjb3VsZCBiZSBhIHBvaW50ZXIgdG8gdGhlIEFDUEkgdGFibGUg aGVhZGVyLg0KPiA+PiArKi8NCj4gPj4gK1NUQVRJQw0KPiA+PiArVk9JRA0KPiA+PiArRUZJQVBJ DQo+ID4+ICtWYWxpZGF0ZU5hbWVTcGFjZVN0ckxlbiAoDQo+ID4+ICsgIElOIFVJTlQ4KiBQdHIs DQo+ID4+ICsgIElOIFZPSUQqICBDb250ZXh0DQo+ID4+ICsgICkNCj4gPj4gK3sNCj4gPj4gKyAg VUlOVDE2IE5hbWVTcGFjZVN0ckxlbiA9ICooVUlOVDE2KilQdHI7DQo+ID4+ICsgIGlmIChOYW1l U3BhY2VTdHJMZW4gPCAyKSB7DQo+ID4+ICsgICAgSW5jcmVtZW50RXJyb3JDb3VudCAoKTsNCj4g Pj4gKyAgICBQcmludCAoDQo+ID4+ICsgICAgICBMIlxuRVJST1I6IE5hbWVzcGFjZVN0cmluZyBM ZW5ndGggPSAlZC4gSWYgbm8gTmFtZXNwYWNlIGRldmljZQ0KPiBleGlzdHMsXG4iDQo+ID4+ICsg ICAgICAgIiAgICB0aGVuIE5hbWVzcGFjZVN0cmluZ1tdIG11c3QgY29udGFpbiBhIHBlcmlvZCAn LiciLA0KPiA+PiArICAgICAgTmFtZVNwYWNlU3RyTGVuDQo+ID4+ICsgICAgICApOw0KPiA+PiAr ICB9DQo+ID4+ICt9DQo+ID4+ICsNCj4gPj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUg ZGVidWcgZGV2aWNlIGluZm9ybWF0aW9uIHN0cnVjdHVyZS4NCj4gPj4gKw0KPiA+PiArICBAcGFy YW0gW2luXSAgUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiA+ PiArICBAcGFyYW0gW291dF0gUHRyICAgICBQb2ludGVyIGluIHdoaWNoIHRoZSBsZW5ndGggb2Yg dGhlIGRlYnVnDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgIGRldmljZSBpbmZvcm1hdGlv biBpcyByZXR1cm5lZC4NCj4gPj4gKyovDQo+ID4+ICtTVEFUSUMNCj4gPj4gK1ZPSUQNCj4gPj4g K0VGSUFQSQ0KPiA+PiArRHVtcERiZ0RldmljZUluZm8gKA0KPiA+PiArICBJTiAgVUlOVDgqICBQ dHIsDQo+ID4+ICsgIE9VVCBVSU5UMzIqIExlbmd0aA0KPiA+PiArICApDQo+ID4+ICt7DQo+ID4+ ICsgIFVJTlQxNiAgSW5kZXg7DQo+ID4+ICsgIFVJTlQ4KiAgRGF0YVB0cjsNCj4gPj4gKyAgVUlO VDMyKiBBZGRyU2l6ZTsNCj4gPj4gKw0KPiA+PiArICAvLyBQYXJzZSB0aGUgZGVidWcgZGV2aWNl IGluZm8gdG8gZ2V0IHRoZSBMZW5ndGgNCj4gPj4gKyAgUGFyc2VBY3BpICgNCj4gPj4gKyAgICBG QUxTRSwNCj4gPj4gKyAgICAwLA0KPiA+PiArICAgICJEZWJ1ZyBEZXZpY2UgSW5mbyIsDQo+ID4+ ICsgICAgUHRyLA0KPiA+PiArICAgIDMsICAvLyBMZW5ndGggaXMgMiBieXRlcyBzdGFydGluZyBh dCBvZmZzZXQgMQ0KPiA+PiArICAgIFBBUlNFUl9QQVJBTVMgKERiZ0RldkluZm9QYXJzZXIpDQo+ ID4+ICsgICAgKTsNCj4gPj4gKw0KPiA+PiArICBQYXJzZUFjcGkgKA0KPiA+PiArICAgIFRSVUUs DQo+ID4+ICsgICAgMiwNCj4gPj4gKyAgICAiRGVidWcgRGV2aWNlIEluZm8iLA0KPiA+PiArICAg IFB0ciwNCj4gPj4gKyAgICAqRGJnRGV2SW5mb0xlbiwNCj4gPj4gKyAgICBQQVJTRVJfUEFSQU1T IChEYmdEZXZJbmZvUGFyc2VyKQ0KPiA+PiArICAgICk7DQo+ID4+ICsNCj4gPj4gKyAgLy8gR0FT IGFuZCBBZGRyZXNzIFNpemUNCj4gPj4gKyAgSW5kZXggPSAwOw0KPiA+PiArICBEYXRhUHRyID0g UHRyICsgKCpCYXNlQWRkclJlZ09mZnNldCk7DQo+ID4+ICsgIEFkZHJTaXplID0gKFVJTlQzMiop KFB0ciArICgqQWRkclNpemVPZmZzZXQpKTsNCj4gPj4gKyAgd2hpbGUgKEluZGV4IDwgKCpHYXND b3VudCkpIHsNCj4gPj4gKyAgICBQcmludEZpZWxkTmFtZSAoNCwgTCJCYXNlQWRkcmVzc1JlZ2lz dGVyIik7DQo+ID4+ICsgICAgRHVtcEdhc1N0cnVjdCAoRGF0YVB0ciwgNCk7DQo+ID4+ICsgICAg UHJpbnRGaWVsZE5hbWUgKDQsIEwiQWRkcmVzcyBTaXplIik7DQo+ID4+ICsgICAgUHJpbnQgKEwi MHgleFxuIiwgQWRkclNpemVbSW5kZXhdKTsNCj4gPj4gKyAgICBEYXRhUHRyICs9IEdBU19MRU5H VEg7DQo+ID4+ICsgICAgSW5kZXgrKzsNCj4gPj4gKyAgfQ0KPiA+PiArDQo+ID4+ICsgIC8vIE5h bWVTcGFjZSBTdHJpbmcNCj4gPj4gKyAgSW5kZXggPSAwOw0KPiA+PiArICBEYXRhUHRyID0gUHRy ICsgKCpOYW1lU3BhY2VTdHJpbmdPZmZzZXQpOw0KPiA+PiArICBQcmludEZpZWxkTmFtZSAoNCwg TCJOYW1lU3BhY2UgU3RyaW5nIik7DQo+ID4+ICsgIHdoaWxlIChJbmRleCA8ICgqTmFtZVNwYWNl U3RyaW5nTGVuZ3RoKSkgew0KPiA+PiArICAgIFByaW50IChMIiVjIiwgRGF0YVB0cltJbmRleCsr XSk7DQo+ID4+ICsgIH0NCj4gPj4gKyAgUHJpbnQgKEwiXG4iKTsNCj4gPj4gKw0KPiA+PiArICAv LyBPRU0gRGF0YQ0KPiA+PiArICBJbmRleCA9IDA7DQo+ID4+ICsgIERhdGFQdHIgPSBQdHIgKyAo Kk9FTURhdGFPZmZzZXQpOw0KPiA+PiArICBQcmludEZpZWxkTmFtZSAoNCwgTCJPRU0gRGF0YSIp Ow0KPiA+PiArICB3aGlsZSAoSW5kZXggPCAoKk9FTURhdGFMZW5ndGgpKSB7DQo+ID4+ICsgICAg UHJpbnQgKEwiJXggIiwgRGF0YVB0cltJbmRleCsrXSk7DQo+ID4+ICsgICAgaWYgKChJbmRleCAm IDcpID09IDApIHsNCj4gPj4gKyAgICAgIFByaW50IChMIlxuJS0qcyAgICIsIE9VVFBVVF9GSUVM RF9DT0xVTU5fV0lEVEgsIEwiIik7DQo+ID4+ICsgICAgfQ0KPiA+PiArICB9DQo+ID4+ICsNCj4g Pj4gKyAgKkxlbmd0aCA9ICpEYmdEZXZJbmZvTGVuOw0KPiA+PiArfQ0KPiA+PiArDQo+ID4+ICsv KiogVGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIEFDUEkgREJHMiB0YWJsZS4NCj4gPj4gKyAgV2hl biB0cmFjZSBpcyBlbmFibGVkIHRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBEQkcyIHRhYmxlIGFu ZA0KPiA+PiArICB0cmFjZXMgdGhlIEFDUEkgdGFibGUgZmllbGRzLg0KPiA+PiArDQo+ID4+ICsg IFRoaXMgZnVuY3Rpb24gYWxzbyBwZXJmb3JtcyB2YWxpZGF0aW9uIG9mIHRoZSBBQ1BJIHRhYmxl IGZpZWxkcy4NCj4gPj4gKw0KPiA+PiArICBAcGFyYW0gW2luXSBUcmFjZSAgICAgICAgICAgICAg SWYgVFJVRSwgdHJhY2UgdGhlIEFDUEkgZmllbGRzLg0KPiA+PiArICBAcGFyYW0gW2luXSBQdHIg ICAgICAgICAgICAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gPj4g KyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxlTGVuZ3RoICAgIExlbmd0aCBvZiB0aGUgQUNQSSB0YWJs ZS4NCj4gPj4gKyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxlUmV2aXNpb24gIFJldmlzaW9uIG9mIHRo ZSBBQ1BJIHRhYmxlLg0KPiA+PiArKi8NCj4gPj4gK1ZPSUQNCj4gPj4gK0VGSUFQSQ0KPiA+PiAr UGFyc2VBY3BpRGJnMiAoDQo+ID4+ICsgIElOIEJPT0xFQU4gVHJhY2UsDQo+ID4+ICsgIElOIFVJ TlQ4KiAgUHRyLA0KPiA+PiArICBJTiBVSU5UMzIgIEFjcGlUYWJsZUxlbmd0aCwNCj4gPj4gKyAg SU4gVUlOVDggICBBY3BpVGFibGVSZXZpc2lvbg0KPiA+PiArICApDQo+ID4+ICt7DQo+ID4+ICsg IFVJTlQzMiBPZmZzZXQ7DQo+ID4+ICsgIFVJTlQzMiBEYmdEZXZpY2VJbmZvTGVuZ3RoOw0KPiA+ PiArICBVSU5UOCogRGV2SW5mb1B0cjsNCj4gPj4gKw0KPiA+PiArICBpZiAoIVRyYWNlKSB7DQo+ ID4+ICsgICAgcmV0dXJuOw0KPiA+PiArICB9DQo+ID4+ICsNCj4gPj4gKyAgT2Zmc2V0ID0gUGFy c2VBY3BpICgNCj4gPj4gKyAgICAgICAgICAgICBUUlVFLA0KPiA+PiArICAgICAgICAgICAgIDAs DQo+ID4+ICsgICAgICAgICAgICAgIkRCRzIiLA0KPiA+PiArICAgICAgICAgICAgIFB0ciwNCj4g Pj4gKyAgICAgICAgICAgICBBY3BpVGFibGVMZW5ndGgsDQo+ID4+ICsgICAgICAgICAgICAgUEFS U0VSX1BBUkFNUyAoRGJnMlBhcnNlcikNCj4gPj4gKyAgICAgICAgICAgICApOw0KPiA+PiArICBE ZXZJbmZvUHRyID0gUHRyICsgT2Zmc2V0Ow0KPiA+PiArDQo+ID4+ICsgIHdoaWxlIChPZmZzZXQg PCBBY3BpVGFibGVMZW5ndGgpIHsNCj4gPj4gKyAgICBEdW1wRGJnRGV2aWNlSW5mbyAoDQo+ID4+ ICsgICAgICBEZXZJbmZvUHRyLA0KPiA+PiArICAgICAgJkRiZ0RldmljZUluZm9MZW5ndGgNCj4g Pj4gKyAgICAgICk7DQo+ID4+ICsgICAgT2Zmc2V0ICs9IERiZ0RldmljZUluZm9MZW5ndGg7DQo+ ID4+ICsgICAgRGV2SW5mb1B0ciArPSBEYmdEZXZpY2VJbmZvTGVuZ3RoOw0KPiA+PiArICB9DQo+ ID4+ICt9DQo+ID4+ICsNCj4gPj4gKy8qKiBSZWdpc3RlciB0aGUgcGFyc2VyLg0KPiA+PiArDQo+ ID4+ICsgIEBwYXJhbSBbaW5dICBJbWFnZUhhbmRsZSAgVGhlIGhhbmRsZSB0byB0aGUgaW1hZ2Uu DQo+ID4+ICsgIEBwYXJhbSBbaW5dICBTeXN0ZW1UYWJsZSAgUG9pbnRlciB0byB0aGUgU3lzdGVt IFRhYmxlLg0KPiA+PiArDQo+ID4+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRo ZSBwYXJzZXIgaXMgcmVnaXN0ZXJlZC4NCj4gPj4gKyAgQHJldHZhbCBFRklfQUxSRUFEWV9TVEFS VEVEICAgVGhlIHBhcnNlciBmb3IgdGhlIEFDUEkgVGFibGUNCj4gPj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgd2FzIGFscmVhZHkgcmVnaXN0ZXJlZC4NCj4gPj4gKyAgQHJldHZh bCBFRklfSU5WQUxJRF9QQVJBTUVURVIgQSBwYXJhbWV0ZXIgaXMgaW52YWxpZA0KPiA+PiArICBA cmV0dmFsIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTICBObyBzcGFjZSB0byByZWdpc3RlciB0aGUNCj4g Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VyLg0KPiA+PiArKi8NCj4g Pj4gK0VGSV9TVEFUVVMNCj4gPj4gK0VGSUFQSQ0KPiA+PiArRGJnMlBhcnNlckxpYkNvbnN0cnVj dG9yICgNCj4gPj4gKyAgSU4gQ09OU1QgRUZJX0hBTkRMRSAgICAgICAgICAgICAgICBJbWFnZUhh bmRsZSwNCj4gPj4gKyAgSU4gICAgICAgRUZJX1NZU1RFTV9UQUJMRSAgKiBDT05TVCBTeXN0ZW1U YWJsZQ0KPiA+PiArICApDQo+ID4+ICt7DQo+ID4+ICsgIHJldHVybiBSZWdpc3RlclBhcnNlciAo DQo+ID4+ICsgICAgICAgICAgIEVGSV9BQ1BJXzZfMl9ERUJVR19QT1JUXzJfVEFCTEVfU0lHTkFU VVJFLA0KPiA+PiArICAgICAgICAgICBQYXJzZUFjcGlEYmcyDQo+ID4+ICsgICAgICAgICAgICk7 DQo+ID4+ICt9DQo+ID4+ICsNCj4gPj4gKy8qKiBEZXJlZ2lzdGVyIHRoZSBwYXJzZXIuDQo+ID4+ ICsNCj4gPj4gKyAgQHBhcmFtIFtpbl0gIEltYWdlSGFuZGxlICBUaGUgaGFuZGxlIHRvIHRoZSBp bWFnZS4NCj4gPj4gKyAgQHBhcmFtIFtpbl0gIFN5c3RlbVRhYmxlICBQb2ludGVyIHRvIHRoZSBT eXN0ZW0gVGFibGUuDQo+ID4+ICsNCj4gPj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAg ICAgVGhlIHBhcnNlciBpcyBkZXJlZ2lzdGVyZWQuDQo+ID4+ICsgIEByZXR2YWwgRUZJX05PVF9G T1VORCAgICAgICAgIFRoZSBwYXJzZXIgd2FzIG5vdCByZWdpc3RlcmVkLg0KPiA+PiArKi8NCj4g Pj4gK0VGSV9TVEFUVVMNCj4gPj4gK0VGSUFQSQ0KPiA+PiArRGJnMlBhcnNlckxpYkRlc3RydWN0 b3IgKA0KPiA+PiArICBJTiBDT05TVCBFRklfSEFORExFICAgICAgICAgICAgICAgIEltYWdlSGFu ZGxlLA0KPiA+PiArICBJTiAgICAgICBFRklfU1lTVEVNX1RBQkxFICAqIENPTlNUIFN5c3RlbVRh YmxlDQo+ID4+ICsgICkNCj4gPj4gK3sNCj4gPj4gKyAgcmV0dXJuIERlcmVnaXN0ZXJQYXJzZXIg KA0KPiA+PiArICAgICAgICAgICBFRklfQUNQSV82XzJfREVCVUdfUE9SVF8yX1RBQkxFX1NJR05B VFVSRQ0KPiA+PiArICAgICAgICAgICApOw0KPiA+PiArfQ0KPiA+PiBkaWZmIC0tZ2l0DQo+IGEv U2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9EYmcy L0RiZzJQYXJzZXJMaQ0KPiBiLmluZg0KPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNw aVZpZXdDb21tYW5kTGliL1BhcnNlcnMvRGJnMi9EYmcyUGFyc2VyTGkNCj4gYi5pbmYNCj4gPj4g bmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPj4gaW5kZXgNCj4gMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMC4uZTczYzBkZjkyY2ZmODcwYzgxMzRjMA0KPiAxNDhmODhkMjRj ZGVjNmYwYmENCj4gPj4gLS0tIC9kZXYvbnVsbA0KPiA+PiArKysNCj4gYi9TaGVsbFBrZy9MaWJy YXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL0RiZzIvRGJnMlBhcnNlckxp DQo+IGIuaW5mDQo+ID4+IEBAIC0wLDAgKzEsMzMgQEANCj4gPj4gKyMjIEBmaWxlDQo+ID4+ICsj DQo+ID4+ICsjICBDb3B5cmlnaHQgKGMpIDIwMTcgLSAyMDE4LCBBUk0gTGltaXRlZC4gQWxsIHJp Z2h0cyByZXNlcnZlZC4NCj4gPj4gKyMNCj4gPj4gKyMgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFj Y29tcGFueWluZyBtYXRlcmlhbHMNCj4gPj4gKyMgIGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFp bGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZQ0KPiBCU0QgTGljZW5z ZQ0KPiA+PiArIyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVs bCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZQ0KPiBmb3VuZCBhdA0KPiA+PiArIyAgaHR0cDov L29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiA+PiArIw0KPiA+PiAr IyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFO ICJBUyBJUyINCj4gQkFTSVMsDQo+ID4+ICsjICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVT RU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVINCj4gRVhQUkVTUyBPUiBJTVBMSUVELg0KPiA+ PiArIyMNCj4gPj4gKw0KPiA+PiArW0RlZmluZXNdDQo+ID4+ICsgIElORl9WRVJTSU9OICAgID0g MHgwMDAxMDAxOQ0KPiA+PiArICBCQVNFX05BTUUgICAgICA9IERiZzJQYXJzZXJMaWINCj4gPj4g KyAgRklMRV9HVUlEICAgICAgPSBGQjFGMTFBQS1GMkYwLTRENTgtOEQwNi0zNjVEQ0I2M0E2MTQN Cj4gPj4gKyAgVkVSU0lPTl9TVFJJTkcgPSAxLjANCj4gPj4gKyAgTU9EVUxFX1RZUEUgICAgPSBE WEVfRFJJVkVSDQo+ID4+ICsgIExJQlJBUllfQ0xBU1MgID0gTlVMTHxEWEVfRFJJVkVSDQo+ID4+ ICsgIENPTlNUUlVDVE9SICAgID0gRGJnMlBhcnNlckxpYkNvbnN0cnVjdG9yDQo+ID4+ICsgIERF U1RSVUNUT1IgICAgID0gRGJnMlBhcnNlckxpYkRlc3RydWN0b3INCj4gPj4gKw0KPiA+PiArW1Nv dXJjZXNdDQo+ID4+ICsgIERiZzJQYXJzZXIuYw0KPiA+PiArDQo+ID4+ICtbUGFja2FnZXNdDQo+ ID4+ICsgIE1kZVBrZy9NZGVQa2cuZGVjDQo+ID4+ICsgIFNoZWxsUGtnL1NoZWxsUGtnLmRlYw0K PiA+PiArICBNZGVNb2R1bGVQa2cvTWRlTW9kdWxlUGtnLmRlYw0KPiA+PiArDQo+ID4+ICtbTGli cmFyeUNsYXNzZXNdDQo+ID4+ICsgIFNoZWxsQWNwaVZpZXdDb21tYW5kTGliDQo+ID4+IGRpZmYg LS1naXQNCj4gYS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9Q YXJzZXJzL0RzZHQvRHNkdFBhcnNlci5jDQo+IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxB Y3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9Ec2R0L0RzZHRQYXJzZXIuYw0KPiA+PiBuZXcgZmls ZSBtb2RlIDEwMDY0NA0KPiA+PiBpbmRleA0KPiAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwLi5jNzZjYzdlODc3N2U3NWYzOTgzY2EzDQo+IDEwY2IzYzBkNDNmZWQwM2Jm NQ0KPiA+PiAtLS0gL2Rldi9udWxsDQo+ID4+ICsrKw0KPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVm aVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvRHNkdC9Ec2R0UGFyc2VyLmMNCj4gPj4g QEAgLTAsMCArMSw5MiBAQA0KPiA+PiArLyoqDQo+ID4+ICsgIERTRFQgdGFibGUgcGFyc2VyDQo+ ID4+ICsNCj4gPj4gKyAgQ29weXJpZ2h0IChjKSAyMDE2IC0gMjAxOCwgQVJNIExpbWl0ZWQuIEFs bCByaWdodHMgcmVzZXJ2ZWQuDQo+ID4+ICsgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFu eWluZyBtYXRlcmlhbHMNCj4gPj4gKyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1 bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlDQo+IEJTRCBMaWNlbnNlDQo+ID4+ ICsgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBv ZiB0aGUgbGljZW5zZSBtYXkgYmUNCj4gZm91bmQgYXQNCj4gPj4gKyAgaHR0cDovL29wZW5zb3Vy Y2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiA+PiArDQo+ID4+ICsgIFRIRSBQUk9H UkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiDQo+ IEJBU0lTLA0KPiA+PiArICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9G IEFOWSBLSU5ELCBFSVRIRVINCj4gRVhQUkVTUyBPUiBJTVBMSUVELg0KPiA+PiArDQo+ID4+ICsg IEBwYXIgUmVmZXJlbmNlKHMpOg0KPiA+PiArICAgIC0gQUNQSSA2LjIgU3BlY2lmaWNhdGlvbiAt IEVycmF0YSBBLCBTZXB0ZW1iZXIgMjAxNw0KPiA+PiArKiovDQo+ID4+ICsNCj4gPj4gKyNpbmNs dWRlIDxJbmR1c3RyeVN0YW5kYXJkL0FjcGkuaD4NCj4gPj4gKyNpbmNsdWRlIDxMaWJyYXJ5L1Vl ZmlMaWIuaD4NCj4gPj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0FjcGlWaWV3L0FjcGlQYXJzZXIuaD4N Cj4gPj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0FjcGlWaWV3L0FjcGlUYWJsZVBhcnNlci5oPg0KPiA+ PiArDQo+ID4+ICsvKiogVGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIEFDUEkgRFNEVCB0YWJsZS4N Cj4gPj4gKyAgV2hlbiB0cmFjZSBpcyBlbmFibGVkIHRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBE U0RUIHRhYmxlIGFuZA0KPiA+PiArICB0cmFjZXMgdGhlIEFDUEkgdGFibGUgZmllbGRzLg0KPiA+ PiArICBGb3IgdGhlIERTRFQgdGFibGUgb25seSB0aGUgQUNQSSBoZWFkZXIgZmllbGRzIGFyZSBw YXJzZWQgYW5kDQo+ID4+ICsgIHRyYWNlZC4NCj4gPj4gKw0KPiA+PiArICBAcGFyYW0gW2luXSBU cmFjZSAgICAgICAgICAgICAgSWYgVFJVRSwgdHJhY2UgdGhlIEFDUEkgZmllbGRzLg0KPiA+PiAr ICBAcGFyYW0gW2luXSBQdHIgICAgICAgICAgICAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2Yg dGhlIGJ1ZmZlci4NCj4gPj4gKyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxlTGVuZ3RoICAgIExlbmd0 aCBvZiB0aGUgQUNQSSB0YWJsZS4NCj4gPj4gKyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxlUmV2aXNp b24gIFJldmlzaW9uIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiA+PiArKi8NCj4gPj4gK1ZPSUQNCj4g Pj4gK0VGSUFQSQ0KPiA+PiArUGFyc2VBY3BpRHNkdCAoDQo+ID4+ICsgIElOIEJPT0xFQU4gVHJh Y2UsDQo+ID4+ICsgIElOIFVJTlQ4KiAgUHRyLA0KPiA+PiArICBJTiBVSU5UMzIgIEFjcGlUYWJs ZUxlbmd0aCwNCj4gPj4gKyAgSU4gVUlOVDggICBBY3BpVGFibGVSZXZpc2lvbg0KPiA+PiArICAp DQo+ID4+ICt7DQo+ID4+ICsgIGlmICghVHJhY2UpIHsNCj4gPj4gKyAgICByZXR1cm47DQo+ID4+ ICsgIH0NCj4gPj4gKw0KPiA+PiArICBEdW1wQWNwaUhlYWRlciAoUHRyKTsNCj4gPj4gK30NCj4g Pj4gKw0KPiA+PiArLyoqIFJlZ2lzdGVyIHRoZSBwYXJzZXIuDQo+ID4+ICsNCj4gPj4gKyAgQHBh cmFtIFtpbl0gIEltYWdlSGFuZGxlICBUaGUgaGFuZGxlIHRvIHRoZSBpbWFnZS4NCj4gPj4gKyAg QHBhcmFtIFtpbl0gIFN5c3RlbVRhYmxlICBQb2ludGVyIHRvIHRoZSBTeXN0ZW0gVGFibGUuDQo+ ID4+ICsNCj4gPj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhlIHBhcnNlciBp cyByZWdpc3RlcmVkLg0KPiA+PiArICBAcmV0dmFsIEVGSV9BTFJFQURZX1NUQVJURUQgICBUaGUg cGFyc2VyIGZvciB0aGUgQUNQSSBUYWJsZQ0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB3YXMgYWxyZWFkeSByZWdpc3RlcmVkLg0KPiA+PiArICBAcmV0dmFsIEVGSV9JTlZB TElEX1BBUkFNRVRFUiBBIHBhcmFtZXRlciBpcyBpbnZhbGlkDQo+ID4+ICsgIEByZXR2YWwgRUZJ X09VVF9PRl9SRVNPVVJDRVMgIE5vIHNwYWNlIHRvIHJlZ2lzdGVyIHRoZQ0KPiA+PiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXIuDQo+ID4+ICsqLw0KPiA+PiArRUZJX1NU QVRVUw0KPiA+PiArRUZJQVBJDQo+ID4+ICtEc2R0UGFyc2VyTGliQ29uc3RydWN0b3IgKA0KPiA+ PiArICBJTiBDT05TVCBFRklfSEFORExFICAgICAgICAgICAgICAgIEltYWdlSGFuZGxlLA0KPiA+ PiArICBJTiAgICAgICBFRklfU1lTVEVNX1RBQkxFICAqIENPTlNUIFN5c3RlbVRhYmxlDQo+ID4+ ICsgICkNCj4gPj4gK3sNCj4gPj4gKyAgcmV0dXJuIFJlZ2lzdGVyUGFyc2VyICgNCj4gPj4gKw0K PiBFRklfQUNQSV82XzJfRElGRkVSRU5USUFURURfU1lTVEVNX0RFU0NSSVBUSU9OX1RBQkxFX1NJ R05BVFVSRSwNCj4gPj4gKyAgICAgICAgICAgUGFyc2VBY3BpRHNkdA0KPiA+PiArICAgICAgICAg ICApOw0KPiA+PiArfQ0KPiA+PiArDQo+ID4+ICsvKiogRGVyZWdpc3RlciB0aGUgcGFyc2VyLg0K PiA+PiArDQo+ID4+ICsgIEBwYXJhbSBbaW5dICBJbWFnZUhhbmRsZSAgVGhlIGhhbmRsZSB0byB0 aGUgaW1hZ2UuDQo+ID4+ICsgIEBwYXJhbSBbaW5dICBTeXN0ZW1UYWJsZSAgUG9pbnRlciB0byB0 aGUgU3lzdGVtIFRhYmxlLg0KPiA+PiArDQo+ID4+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAg ICAgICAgIFRoZSBwYXJzZXIgaXMgZGVyZWdpc3RlcmVkLg0KPiA+PiArICBAcmV0dmFsIEVGSV9O T1RfRk9VTkQgICAgICAgICBUaGUgcGFyc2VyIHdhcyBub3QgcmVnaXN0ZXJlZC4NCj4gPj4gKyov DQo+ID4+ICtFRklfU1RBVFVTDQo+ID4+ICtFRklBUEkNCj4gPj4gK0RzZHRQYXJzZXJMaWJEZXN0 cnVjdG9yICgNCj4gPj4gKyAgSU4gQ09OU1QgRUZJX0hBTkRMRSAgICAgICAgICAgICAgICBJbWFn ZUhhbmRsZSwNCj4gPj4gKyAgSU4gICAgICAgRUZJX1NZU1RFTV9UQUJMRSAgKiBDT05TVCBTeXN0 ZW1UYWJsZQ0KPiA+PiArICApDQo+ID4+ICt7DQo+ID4+ICsgIHJldHVybiBEZXJlZ2lzdGVyUGFy c2VyICgNCj4gPj4gKw0KPiBFRklfQUNQSV82XzJfRElGRkVSRU5USUFURURfU1lTVEVNX0RFU0NS SVBUSU9OX1RBQkxFX1NJR05BVFVSRQ0KPiA+PiArICAgICAgICAgICApOw0KPiA+PiArfQ0KPiA+ PiBkaWZmIC0tZ2l0DQo+IGEvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1h bmRMaWIvUGFyc2Vycy9Ec2R0L0RzZHRQYXJzZXJMaWIuaQ0KPiBuZg0KPiBiL1NoZWxsUGtnL0xp YnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvRHNkdC9Ec2R0UGFyc2Vy TGliLmkNCj4gbmYNCj4gPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPj4gaW5kZXgNCj4gMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTZiZjIzOGUxY2IzODNjNjIz M2U3DQo+IDI4ZDI5N2NkNDI5MjkxOWVlZDMNCj4gPj4gLS0tIC9kZXYvbnVsbA0KPiA+PiArKysN Cj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJz L0RzZHQvRHNkdFBhcnNlckxpYi5pDQo+IG5mDQo+ID4+IEBAIC0wLDAgKzEsMzMgQEANCj4gPj4g KyMjIEBmaWxlDQo+ID4+ICsjDQo+ID4+ICsjICBDb3B5cmlnaHQgKGMpIDIwMTgsIEFSTSBMaW1p dGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiA+PiArIw0KPiA+PiArIyAgVGhpcyBwcm9ncmFt IGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiA+PiArIyAgYXJlIGxpY2Vuc2VkIGFu ZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlDQo+ IEJTRCBMaWNlbnNlDQo+ID4+ICsjICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlv bi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlDQo+IGZvdW5kIGF0DQo+ID4+ ICsjICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ID4+ ICsjDQo+ID4+ICsjICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJ Q0VOU0UgT04gQU4gIkFTIElTIg0KPiBCQVNJUywNCj4gPj4gKyMgIFdJVEhPVVQgV0FSUkFOVElF UyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUg0KPiBFWFBSRVNTIE9SIElN UExJRUQuDQo+ID4+ICsjIw0KPiA+PiArDQo+ID4+ICtbRGVmaW5lc10NCj4gPj4gKyAgSU5GX1ZF UlNJT04gICAgPSAweDAwMDEwMDE5DQo+ID4+ICsgIEJBU0VfTkFNRSAgICAgID0gRHNkdFBhcnNl ckxpYg0KPiA+PiArICBGSUxFX0dVSUQgICAgICA9IDMwNDc4NDJCLTlGQTYtNENBMi05NTEzLUQ3 RkQ2QUQwOTU3NA0KPiA+PiArICBWRVJTSU9OX1NUUklORyA9IDEuMA0KPiA+PiArICBNT0RVTEVf VFlQRSAgICA9IERYRV9EUklWRVINCj4gPj4gKyAgTElCUkFSWV9DTEFTUyAgPSBOVUxMfERYRV9E UklWRVINCj4gPj4gKyAgQ09OU1RSVUNUT1IgICAgPSBEc2R0UGFyc2VyTGliQ29uc3RydWN0b3IN Cj4gPj4gKyAgREVTVFJVQ1RPUiAgICAgPSBEc2R0UGFyc2VyTGliRGVzdHJ1Y3Rvcg0KPiA+PiAr DQo+ID4+ICtbU291cmNlc10NCj4gPj4gKyAgRHNkdFBhcnNlci5jDQo+ID4+ICsNCj4gPj4gK1tQ YWNrYWdlc10NCj4gPj4gKyAgTWRlUGtnL01kZVBrZy5kZWMNCj4gPj4gKyAgU2hlbGxQa2cvU2hl bGxQa2cuZGVjDQo+ID4+ICsgIE1kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVjDQo+ID4+ICsN Cj4gPj4gK1tMaWJyYXJ5Q2xhc3Nlc10NCj4gPj4gKyAgU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIN Cj4gPj4gZGlmZiAtLWdpdA0KPiBhL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdD b21tYW5kTGliL1BhcnNlcnMvRmFkdC9GYWR0UGFyc2VyLmMNCj4gYi9TaGVsbFBrZy9MaWJyYXJ5 L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL0ZhZHQvRmFkdFBhcnNlci5jDQo+ ID4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4+IGluZGV4DQo+IDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJjMTNhZjQwYmQ3ZjljNmY1NTAyOTQNCj4gMDI1MjM2 MGQwOTVkYmQ1OWQ0DQo+ID4+IC0tLSAvZGV2L251bGwNCj4gPj4gKysrDQo+IGIvU2hlbGxQa2cv TGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9GYWR0L0ZhZHRQYXJz ZXIuYw0KPiA+PiBAQCAtMCwwICsxLDMwOSBAQA0KPiA+PiArLyoqDQo+ID4+ICsgIEZBRFQgdGFi bGUgcGFyc2VyDQo+ID4+ICsNCj4gPj4gKyAgQ29weXJpZ2h0IChjKSAyMDE2IC0gMjAxOCwgQVJN IExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ID4+ICsgIFRoaXMgcHJvZ3JhbSBhbmQg dGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCj4gPj4gKyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRl IGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlDQo+IEJTRCBM aWNlbnNlDQo+ID4+ICsgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhl IGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUNCj4gZm91bmQgYXQNCj4gPj4gKyAgaHR0 cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiA+PiArDQo+ID4+ ICsgIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBB TiAiQVMgSVMiDQo+IEJBU0lTLA0KPiA+PiArICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVT RU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVINCj4gRVhQUkVTUyBPUiBJTVBMSUVELg0KPiA+ PiArDQo+ID4+ICsgIEBwYXIgUmVmZXJlbmNlKHMpOg0KPiA+PiArICAgIC0gQUNQSSA2LjIgU3Bl Y2lmaWNhdGlvbiAtIEVycmF0YSBBLCBTZXB0ZW1iZXIgMjAxNw0KPiA+PiArKiovDQo+ID4+ICsN Cj4gPj4gKyNpbmNsdWRlIDxJbmR1c3RyeVN0YW5kYXJkL0FjcGkuaD4NCj4gPj4gKyNpbmNsdWRl IDxMaWJyYXJ5L1VlZmlMaWIuaD4NCj4gPj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0FjcGlWaWV3L0Fj cGlQYXJzZXIuaD4NCj4gPj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0FjcGlWaWV3L0FjcGlUYWJsZVBh cnNlci5oPg0KPiA+PiArDQo+ID4+ICsvLyBMb2NhbCB2YXJpYWJsZXMNCj4gPj4gK1NUQVRJQyBD T05TVCBVSU5UMzIqIERzZHRBZGRyZXNzOw0KPiA+PiArU1RBVElDIENPTlNUIFVJTlQ2NCogWF9E c2R0QWRkcmVzczsNCj4gPj4gK1NUQVRJQyBDT05TVCBVSU5UOCogIEZhZHRNaW5vclJldmlzaW9u Ow0KPiA+PiArU1RBVElDIEFDUElfREVTQ1JJUFRJT05fSEVBREVSX0lORk8gQWNwaUhkckluZm87 DQo+ID4+ICsNCj4gPj4gKy8qKiBBIG1hY3JvIGRlZmluaW5nIHRoZSBIYXJkd2FyZSByZWR1Y2Vk IEFDUEkgZmxhZw0KPiA+PiArKi8NCj4gPj4gKyNkZWZpbmUgSFdfUkVEVUNFRF9BQ1BJICAgQklU MjANCj4gPj4gKw0KPiA+PiArLy8gRm9yd2FyZCBkZWNsYXJhdGlvbnMNCj4gPj4gK0NPTlNUIEFD UElfREVTQ1JJUFRJT05fSEVBREVSX0lORk8qIENPTlNUDQo+ID4+ICtFRklBUEkNCj4gPj4gK0dl dEFjcGlYc2R0SGVhZGVySW5mbyAoDQo+ID4+ICsgIFZPSUQNCj4gPj4gKyk7DQo+ID4+ICsNCj4g Pj4gK1NUQVRJQw0KPiA+PiArVk9JRA0KPiA+PiArRUZJQVBJDQo+ID4+ICtWYWxpZGF0ZUZpcm13 YXJlQ3RybCAoDQo+ID4+ICsgIElOIFVJTlQ4KiBQdHIsDQo+ID4+ICsgIElOIFZPSUQqICBDb250 ZXh0DQo+ID4+ICspOw0KPiA+PiArDQo+ID4+ICtTVEFUSUMNCj4gPj4gK1ZPSUQNCj4gPj4gK0VG SUFQSQ0KPiA+PiArVmFsaWRhdGVYRmlybXdhcmVDdHJsICgNCj4gPj4gKyAgSU4gVUlOVDgqIFB0 ciwNCj4gPj4gKyAgSU4gVk9JRCogIENvbnRleHQNCj4gPj4gKyk7DQo+ID4+ICsNCj4gPj4gK1NU QVRJQw0KPiA+PiArVk9JRA0KPiA+PiArRUZJQVBJDQo+ID4+ICtWYWxpZGF0ZUZsYWdzICgNCj4g Pj4gKyAgSU4gVUlOVDgqIFB0ciwNCj4gPj4gKyAgSU4gVk9JRCogIENvbnRleHQNCj4gPj4gKyk7 DQo+ID4+ICsNCj4gPj4gKy8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBB Q1BJIEZBRFQgVGFibGUuDQo+ID4+ICsqLw0KPiA+PiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VS IEZhZHRQYXJzZXJbXSA9IHsNCj4gPj4gKyAgUEFSU0VfQUNQSV9IRUFERVIgKCZBY3BpSGRySW5m byksDQo+ID4+ICsgIHtMIkZJUk1XQVJFX0NUUkwiLCA0LCAzNiwgTCIweCV4IiwgTlVMTCwgTlVM TCwgVmFsaWRhdGVGaXJtd2FyZUN0cmwsDQo+IE5VTEx9LA0KPiA+PiArICB7TCJEU0RUIiwgNCwg NDAsIEwiMHgleCIsIE5VTEwsIChWT0lEKiopJkRzZHRBZGRyZXNzLCBOVUxMLCBOVUxMfSwNCj4g Pj4gKyAge0wiUmVzZXJ2ZWQiLCAxLCA0NCwgTCIleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9 LA0KPiA+PiArICB7TCJQcmVmZXJyZWRfUE1fUHJvZmlsZSIsIDEsIDQ1LCBMIjB4JXgiLCBOVUxM LCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiU0NJX0lOVCIsIDIsIDQ2LCBMIjB4JXgi LCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiU01JX0NNRCIsIDQsIDQ4LCBM IjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiQUNQSV9FTkFCTEUi LCAxLCA1MiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4+ICsgIHtMIkFD UElfRElTQUJMRSIsIDEsIDUzLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4g Pj4gKyAge0wiUzRCSU9TX1JFUSIsIDEsIDU0LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBO VUxMfSwNCj4gPj4gKyAge0wiUFNUQVRFX0NOVCIsIDEsIDU1LCBMIjB4JXgiLCBOVUxMLCBOVUxM LCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiUE0xYV9FVlRfQkxLIiwgNCwgNTYsIEwiMHgleCIs IE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+PiArICB7TCJQTTFiX0VWVF9CTEsiLCA0LCA2 MCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4+ICsgIHtMIlBNMWFfQ05U X0JMSyIsIDQsIDY0LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAg e0wiUE0xYl9DTlRfQkxLIiwgNCwgNjgsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9 LA0KPiA+PiArICB7TCJQTTJfQ05UX0JMSyIsIDQsIDcyLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBO VUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiUE1fVE1SX0JMSyIsIDQsIDc2LCBMIjB4JXgiLCBOVUxM LCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiR1BFMF9CTEsiLCA0LCA4MCwgTCIweCV4 IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4+ICsgIHtMIkdQRTFfQkxLIiwgNCwgODQs IEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+PiArICB7TCJQTTFfRVZUX0xF TiIsIDEsIDg4LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wi UE0xX0NOVF9MRU4iLCAxLCA4OSwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ ID4+ICsgIHtMIlBNMl9DTlRfTEVOIiwgMSwgOTAsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEws IE5VTEx9LA0KPiA+PiArICB7TCJQTV9UTVJfTEVOIiwgMSwgOTEsIEwiMHgleCIsIE5VTEwsIE5V TEwsIE5VTEwsIE5VTEx9LA0KPiA+PiArICB7TCJHUEUwX0JMS19MRU4iLCAxLCA5MiwgTCIweCV4 IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4+ICsgIHtMIkdQRTFfQkxLX0xFTiIsIDEs IDkzLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiR1BFMV9C QVNFIiwgMSwgOTQsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+PiArICB7 TCJDU1RfQ05UIiwgMSwgOTUsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ PiArICB7TCJQX0xWTDJfTEFUIiwgMiwgOTYsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5V TEx9LA0KPiA+PiArICB7TCJQX0xWTDNfTEFUIiwgMiwgOTgsIEwiMHgleCIsIE5VTEwsIE5VTEws IE5VTEwsIE5VTEx9LA0KPiA+PiArICB7TCJGTFVTSF9TSVpFIiwgMiwgMTAwLCBMIjB4JXgiLCBO VUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiRkxVU0hfU1RSSURFIiwgMiwgMTAy LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiRFVUWV9PRkZT RVQiLCAxLCAxMDQsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+PiArICB7 TCJEVVRZX1dJRFRIIiwgMSwgMTA1LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwN Cj4gPj4gKyAge0wiREFZX0FMUk0iLCAxLCAxMDYsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEws IE5VTEx9LA0KPiA+PiArICB7TCJNT05fQUxSTSIsIDEsIDEwNywgTCIweCV4IiwgTlVMTCwgTlVM TCwgTlVMTCwgTlVMTH0sDQo+ID4+ICsgIHtMIkNFTlRVUlkiLCAxLCAxMDgsIEwiMHgleCIsIE5V TEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+PiArICB7TCJJQVBDX0JPT1RfQVJDSCIsIDIsIDEw OSwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4+ICsgIHtMIlJlc2VydmVk IiwgMSwgMTExLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wi RmxhZ3MiLCA0LCAxMTIsIEwiMHgleCIsIE5VTEwsIE5VTEwsIFZhbGlkYXRlRmxhZ3MsIE5VTEx9 LA0KPiA+PiArICB7TCJSRVNFVF9SRUciLCAxMiwgMTE2LCBOVUxMLCBEdW1wR2FzLCBOVUxMLCBO VUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiUkVTRVRfVkFMVUUiLCAxLCAxMjgsIEwiMHgleCIsIE5V TEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+PiArICB7TCJBUk1fQk9PVF9BUkNIIiwgMiwgMTI5 LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiRkFEVCBNaW5v ciBWZXJzaW9uIiwgMSwgMTMxLCBMIjB4JXgiLCBOVUxMLA0KPiAoVk9JRCoqKSZGYWR0TWlub3JS ZXZpc2lvbiwNCj4gPj4gKyAgICBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiWF9GSVJNV0FSRV9D VFJMIiwgOCwgMTMyLCBMIjB4JWx4IiwgTlVMTCwgTlVMTCwNCj4gPj4gKyAgICBWYWxpZGF0ZVhG aXJtd2FyZUN0cmwsIE5VTEx9LA0KPiA+PiArICB7TCJYX0RTRFQiLCA4LCAxNDAsIEwiMHglbHgi LCBOVUxMLCAoVk9JRCoqKSZYX0RzZHRBZGRyZXNzLCBOVUxMLA0KPiBOVUxMfSwNCj4gPj4gKyAg e0wiWF9QTTFhX0VWVF9CTEsiLCAxMiwgMTQ4LCBOVUxMLCBEdW1wR2FzLCBOVUxMLCBOVUxMLCBO VUxMfSwNCj4gPj4gKyAge0wiWF9QTTFiX0VWVF9CTEsiLCAxMiwgMTYwLCBOVUxMLCBEdW1wR2Fz LCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiWF9QTTFhX0NOVF9CTEsiLCAxMiwgMTcy LCBOVUxMLCBEdW1wR2FzLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiWF9QTTFiX0NO VF9CTEsiLCAxMiwgMTg0LCBOVUxMLCBEdW1wR2FzLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4g KyAge0wiWF9QTTJfQ05UX0JMSyIsIDEyLCAxOTYsIE5VTEwsIER1bXBHYXMsIE5VTEwsIE5VTEws IE5VTEx9LA0KPiA+PiArICB7TCJYX1BNX1RNUl9CTEsiLCAxMiwgMjA4LCBOVUxMLCBEdW1wR2Fz LCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiWF9HUEUwX0JMSyIsIDEyLCAyMjAsIE5V TEwsIER1bXBHYXMsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+PiArICB7TCJYX0dQRTFfQkxLIiwg MTIsIDIzMiwgTlVMTCwgRHVtcEdhcywgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4+ICsgIHtMIlNM RUVQX0NPTlRST0xfUkVHIiwgMTIsIDI0NCwgTlVMTCwgRHVtcEdhcywgTlVMTCwgTlVMTCwgTlVM TH0sDQo+ID4+ICsgIHtMIlNMRUVQX1NUQVRVU19SRUciLCAxMiwgMjU2LCBOVUxMLCBEdW1wR2Fz LCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiSHlwZXJ2aXNvciBWZW5kb3JJZGVudGl0 eSIsIDgsIDI2OCwgTCIlbHgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfQ0KPiA+PiArfTsNCj4g Pj4gKw0KPiA+PiArLyoqIFRoaXMgZnVuY3Rpb24gdmFsaWRhdGVzIHRoZSBGaXJtd2FyZSBDb250 cm9sIEZpZWxkLg0KPiA+PiArDQo+ID4+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0 byB0aGUgc3RhcnQgb2YgdGhlIGZpZWxkIGRhdGEuDQo+ID4+ICsgIEBwYXJhbSBbaW5dIENvbnRl eHQgUG9pbnRlciB0byBjb250ZXh0IHNwZWNpZmljIGluZm9ybWF0aW9uIGUuZy4gdGhpcw0KPiA+ PiArICAgICAgICAgICAgICAgICAgICAgIGNvdWxkIGJlIGEgcG9pbnRlciB0byB0aGUgQUNQSSB0 YWJsZSBoZWFkZXIuDQo+ID4+ICsqLw0KPiA+PiArU1RBVElDDQo+ID4+ICtWT0lEDQo+ID4+ICtF RklBUEkNCj4gPj4gK1ZhbGlkYXRlRmlybXdhcmVDdHJsICgNCj4gPj4gKyAgSU4gVUlOVDgqIFB0 ciwNCj4gPj4gKyAgSU4gVk9JRCogIENvbnRleHQNCj4gPj4gKykNCj4gPj4gK3sNCj4gPj4gKyNp ZiBkZWZpbmVkIChNREVfQ1BVX0FSTSkgfHwgZGVmaW5lZCAoTURFX0NQVV9BQVJDSDY0KQ0KPiA+ PiArICBpZiAoKihVSU5UMzIqKVB0ciAhPSAwKSB7DQo+ID4+ICsgICAgSW5jcmVtZW50RXJyb3JD b3VudCAoKTsNCj4gPj4gKyAgICBQcmludCAoDQo+ID4+ICsgICAgICBMIlxuRVJST1I6IEZpcm13 YXJlIENvbnRyb2wgbXVzdCBiZSB6ZXJvIGZvciBBUk0gcGxhdGZvcm1zLiINCj4gPj4gKyAgICAp Ow0KPiA+PiArICB9DQo+ID4+ICsjZW5kaWYNCj4gPj4gK30NCj4gPj4gKw0KPiA+PiArLyoqIFRo aXMgZnVuY3Rpb24gdmFsaWRhdGVzIHRoZSBYX0Zpcm13YXJlIENvbnRyb2wgRmllbGQuDQo+ID4+ ICsNCj4gPj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0 aGUgZmllbGQgZGF0YS4NCj4gPj4gKyAgQHBhcmFtIFtpbl0gQ29udGV4dCBQb2ludGVyIHRvIGNv bnRleHQgc3BlY2lmaWMgaW5mb3JtYXRpb24gZS5nLiB0aGlzDQo+ID4+ICsgICAgICAgICAgICAg ICAgICAgICAgY291bGQgYmUgYSBwb2ludGVyIHRvIHRoZSBBQ1BJIHRhYmxlIGhlYWRlci4NCj4g Pj4gKyovDQo+ID4+ICtTVEFUSUMNCj4gPj4gK1ZPSUQNCj4gPj4gK0VGSUFQSQ0KPiA+PiArVmFs aWRhdGVYRmlybXdhcmVDdHJsICgNCj4gPj4gKyAgSU4gVUlOVDgqIFB0ciwNCj4gPj4gKyAgSU4g Vk9JRCogIENvbnRleHQNCj4gPj4gKykNCj4gPj4gK3sNCj4gPj4gKyNpZiBkZWZpbmVkIChNREVf Q1BVX0FSTSkgfHwgZGVmaW5lZCAoTURFX0NQVV9BQVJDSDY0KQ0KPiA+PiArICBpZiAoKihVSU5U NjQqKVB0ciAhPSAwKSB7DQo+ID4+ICsgICAgSW5jcmVtZW50RXJyb3JDb3VudCAoKTsNCj4gPj4g KyAgICBQcmludCAoDQo+ID4+ICsgICAgICBMIlxuRVJST1I6IFggRmlybXdhcmUgQ29udHJvbCBt dXN0IGJlIHplcm8gZm9yIEFSTSBwbGF0Zm9ybXMuIg0KPiA+PiArICAgICk7DQo+ID4+ICsgIH0N Cj4gPj4gKyNlbmRpZg0KPiA+PiArfQ0KPiA+PiArDQo+ID4+ICsvKiogVGhpcyBmdW5jdGlvbiB2 YWxpZGF0ZXMgdGhlIGZsYWdzLg0KPiA+PiArDQo+ID4+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAg UG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGZpZWxkIGRhdGEuDQo+ID4+ICsgIEBwYXJhbSBb aW5dIENvbnRleHQgUG9pbnRlciB0byBjb250ZXh0IHNwZWNpZmljIGluZm9ybWF0aW9uIGUuZy4g dGhpcw0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgIGNvdWxkIGJlIGEgcG9pbnRlciB0byB0 aGUgQUNQSSB0YWJsZSBoZWFkZXIuDQo+ID4+ICsqLw0KPiA+PiArU1RBVElDDQo+ID4+ICtWT0lE DQo+ID4+ICtFRklBUEkNCj4gPj4gK1ZhbGlkYXRlRmxhZ3MgKA0KPiA+PiArICBJTiBVSU5UOCog UHRyLA0KPiA+PiArICBJTiBWT0lEKiAgQ29udGV4dA0KPiA+PiArKQ0KPiA+PiArew0KPiA+PiAr I2lmIGRlZmluZWQgKE1ERV9DUFVfQVJNKSB8fCBkZWZpbmVkIChNREVfQ1BVX0FBUkNINjQpDQo+ ID4+ICsgIGlmICgoKCooVUlOVDMyKilQdHIpICYgSFdfUkVEVUNFRF9BQ1BJKSA9PSAwKSB7DQo+ ID4+ICsgICAgSW5jcmVtZW50RXJyb3JDb3VudCAoKTsNCj4gPj4gKyAgICBQcmludCAoDQo+ID4+ ICsgICAgICBMIlxuRVJST1I6IEhXX1JFRFVDRURfQUNQSSBmbGFnIG11c3QgYmUgc2V0IGZvciBB Uk0NCj4gcGxhdGZvcm1zLiINCj4gPj4gKyAgICApOw0KPiA+PiArICB9DQo+ID4+ICsjZW5kaWYN Cj4gPj4gK30NCj4gPj4gKw0KPiA+PiArLyoqIFRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBBQ1BJ IEZBRFQgdGFibGUuDQo+ID4+ICsgIFRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBGQURUIHRhYmxl IGFuZCBvcHRpb25hbGx5IHRyYWNlcyB0aGUgQUNQSQ0KPiA+PiArICB0YWJsZSBmaWVsZHMuDQo+ ID4+ICsNCj4gPj4gKyAgVGhpcyBmdW5jdGlvbiBhbHNvIHBhcnNlcyB0aGUgQUNQSSBoZWFkZXIg Zm9yIHRoZSBEU0RUIHRhYmxlIGFuZA0KPiA+PiArICBpbnZva2VzIHRoZSBwYXJzZXIgZm9yIHRo ZSBBQ1BJIERTRFQgdGFibGUuDQo+ID4+ICsNCj4gPj4gKyAgVGhpcyBmdW5jdGlvbiBhbHNvIHBl cmZvcm1zIHZhbGlkYXRpb24gb2YgdGhlIEFDUEkgdGFibGUgZmllbGRzLg0KPiA+PiArDQo+ID4+ ICsgIEBwYXJhbSBbaW5dIFRyYWNlICAgICAgICAgICAgICBJZiBUUlVFLCB0cmFjZSB0aGUgQUNQ SSBmaWVsZHMuDQo+ID4+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgICAgICAgICAgICBQb2ludGVy IHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiA+PiArICBAcGFyYW0gW2luXSBBY3BpVGFi bGVMZW5ndGggICAgTGVuZ3RoIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiA+PiArICBAcGFyYW0gW2lu XSBBY3BpVGFibGVSZXZpc2lvbiAgUmV2aXNpb24gb2YgdGhlIEFDUEkgdGFibGUuDQo+ID4+ICsq Lw0KPiA+PiArVk9JRA0KPiA+PiArRUZJQVBJDQo+ID4+ICtQYXJzZUFjcGlGYWR0ICgNCj4gPj4g KyAgSU4gQk9PTEVBTiBUcmFjZSwNCj4gPj4gKyAgSU4gVUlOVDgqICBQdHIsDQo+ID4+ICsgIElO IFVJTlQzMiAgQWNwaVRhYmxlTGVuZ3RoLA0KPiA+PiArICBJTiBVSU5UOCAgIEFjcGlUYWJsZVJl dmlzaW9uDQo+ID4+ICsgICkNCj4gPj4gK3sNCj4gPj4gKyAgVUlOVDgqICBEc2R0UHRyOw0KPiA+ PiArDQo+ID4+ICsgIFBhcnNlQWNwaSAoDQo+ID4+ICsgICAgVHJhY2UsDQo+ID4+ICsgICAgMCwN Cj4gPj4gKyAgICAiRkFEVCIsDQo+ID4+ICsgICAgUHRyLA0KPiA+PiArICAgIEFjcGlUYWJsZUxl bmd0aCwNCj4gPj4gKyAgICBQQVJTRVJfUEFSQU1TIChGYWR0UGFyc2VyKQ0KPiA+PiArICAgICk7 DQo+ID4+ICsNCj4gPj4gKyAgaWYgKFRyYWNlKSB7DQo+ID4+ICsgICAgUHJpbnQgKEwiXG5TdW1t YXJ5OlxuIik7DQo+ID4+ICsgICAgUHJpbnRGaWVsZE5hbWUgKDIsIEwiRkFEVCBWZXJzaW9uIik7 DQo+ID4+ICsgICAgUHJpbnQgKEwiJWQuJWRcbiIsICAqQWNwaUhkckluZm8uUmV2aXNpb24sICpG YWR0TWlub3JSZXZpc2lvbik7DQo+ID4+ICsNCj4gPj4gKyAgICBpZiAoKkdldEFjcGlYc2R0SGVh ZGVySW5mbyAoKS0+T2VtVGFibGVJZCAhPQ0KPiAqQWNwaUhkckluZm8uT2VtVGFibGVJZCkgew0K PiA+PiArICAgICAgSW5jcmVtZW50RXJyb3JDb3VudCAoKTsNCj4gPj4gKyAgICAgIFByaW50IChM IkVSUk9SOiBPRU0gVGFibGUgSWQgZG9lcyBub3QgbWF0Y2ggd2l0aCBSU0RUL1hTRFQuXG4iKTsN Cj4gPj4gKyAgICB9DQo+ID4+ICsgIH0NCj4gPj4gKw0KPiA+PiArICAvLyBJZiBYX0RTRFQgaXMg bm90IHplcm8gdGhlbiB1c2UgWF9EU0RUIGFuZCBpZ25vcmUgRFNEVCwNCj4gPj4gKyAgLy8gZWxz ZSB1c2UgRFNEVC4NCj4gPj4gKyAgaWYgKCpYX0RzZHRBZGRyZXNzICE9IDApIHsNCj4gPj4gKyAg ICBEc2R0UHRyID0gKFVJTlQ4KikoVUlOVE4pKCpYX0RzZHRBZGRyZXNzKTsNCj4gPj4gKyAgfSBl bHNlIGlmICgqRHNkdEFkZHJlc3MgIT0gMCkgew0KPiA+PiArICAgIERzZHRQdHIgPSAoVUlOVDgq KShVSU5UTikoKkRzZHRBZGRyZXNzKTsNCj4gPj4gKyAgfSBlbHNlIHsNCj4gPj4gKyAgICAvLyBC b3RoIERTRFQgYW5kIFhfRFNEVCBjYW5ub3QgYmUgemVyby4NCj4gPj4gKyNpZiBkZWZpbmVkIChN REVfQ1BVX0FSTSkgfHwgZGVmaW5lZCAoTURFX0NQVV9BQVJDSDY0KQ0KPiA+PiArICAgIGlmIChU cmFjZSkgew0KPiA+PiArICAgICAgLy8gVGhlIERTRFQgVGFibGUgaXMgbWFuZGF0b3J5IGZvciBB Uk0gc3lzdGVtcw0KPiA+PiArICAgICAgLy8gYXMgdGhlIENQVSBpbmZvcm1hdGlvbiBNVVNUIGJl IHByZXNlbnRlZCBpbg0KPiA+PiArICAgICAgLy8gdGhlIERTRFQuDQo+ID4+ICsgICAgICBJbmNy ZW1lbnRFcnJvckNvdW50ICgpOw0KPiA+PiArICAgICAgUHJpbnQgKEwiRVJST1I6IEJvdGggWF9E U0RUIGFuZCBEU0RUIGFyZSBOVUxMLlxuIik7DQo+ID4+ICsgICAgfQ0KPiA+PiArI2VuZGlmDQo+ ID4+ICsgICAgcmV0dXJuOw0KPiA+PiArICB9DQo+ID4+ICsNCj4gPj4gKyAgUHJvY2Vzc0FjcGlU YWJsZSAoRHNkdFB0cik7DQo+ID4+ICt9DQo+ID4+ICsNCj4gPj4gKy8qKiBSZWdpc3RlciB0aGUg cGFyc2VyLg0KPiA+PiArDQo+ID4+ICsgIEBwYXJhbSBbaW5dICBJbWFnZUhhbmRsZSAgVGhlIGhh bmRsZSB0byB0aGUgaW1hZ2UuDQo+ID4+ICsgIEBwYXJhbSBbaW5dICBTeXN0ZW1UYWJsZSAgUG9p bnRlciB0byB0aGUgU3lzdGVtIFRhYmxlLg0KPiA+PiArDQo+ID4+ICsgIEByZXR2YWwgRUZJX1NV Q0NFU1MgICAgICAgICAgIFRoZSBwYXJzZXIgaXMgcmVnaXN0ZXJlZC4NCj4gPj4gKyAgQHJldHZh bCBFRklfQUxSRUFEWV9TVEFSVEVEICAgVGhlIHBhcnNlciBmb3IgdGhlIEFDUEkgVGFibGUNCj4g Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FzIGFscmVhZHkgcmVnaXN0ZXJl ZC4NCj4gPj4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgQSBwYXJhbWV0ZXIgaXMg aW52YWxpZA0KPiA+PiArICBAcmV0dmFsIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTICBObyBzcGFjZSB0 byByZWdpc3RlciB0aGUNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFy c2VyLg0KPiA+PiArKi8NCj4gPj4gK0VGSV9TVEFUVVMNCj4gPj4gK0VGSUFQSQ0KPiA+PiArRmFk dFBhcnNlckxpYkNvbnN0cnVjdG9yICgNCj4gPj4gKyAgSU4gQ09OU1QgRUZJX0hBTkRMRSAgICAg ICAgICAgICAgICBJbWFnZUhhbmRsZSwNCj4gPj4gKyAgSU4gICAgICAgRUZJX1NZU1RFTV9UQUJM RSAgKiBDT05TVCBTeXN0ZW1UYWJsZQ0KPiA+PiArICApDQo+ID4+ICt7DQo+ID4+ICsgIHJldHVy biBSZWdpc3RlclBhcnNlciAoDQo+ID4+ICsgICAgICAgICAgIEVGSV9BQ1BJXzZfMl9GSVhFRF9B Q1BJX0RFU0NSSVBUSU9OX1RBQkxFX1NJR05BVFVSRSwNCj4gPj4gKyAgICAgICAgICAgUGFyc2VB Y3BpRmFkdA0KPiA+PiArICAgICAgICAgICApOw0KPiA+PiArfQ0KPiA+PiArDQo+ID4+ICsvKiog RGVyZWdpc3RlciB0aGUgcGFyc2VyLg0KPiA+PiArDQo+ID4+ICsgIEBwYXJhbSBbaW5dICBJbWFn ZUhhbmRsZSAgVGhlIGhhbmRsZSB0byB0aGUgaW1hZ2UuDQo+ID4+ICsgIEBwYXJhbSBbaW5dICBT eXN0ZW1UYWJsZSAgUG9pbnRlciB0byB0aGUgU3lzdGVtIFRhYmxlLg0KPiA+PiArDQo+ID4+ICsg IEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBwYXJzZXIgaXMgZGVyZWdpc3RlcmVk Lg0KPiA+PiArICBAcmV0dmFsIEVGSV9OT1RfRk9VTkQgICAgICAgICBUaGUgcGFyc2VyIHdhcyBu b3QgcmVnaXN0ZXJlZC4NCj4gPj4gKyovDQo+ID4+ICtFRklfU1RBVFVTDQo+ID4+ICtFRklBUEkN Cj4gPj4gK0ZhZHRQYXJzZXJMaWJEZXN0cnVjdG9yICgNCj4gPj4gKyAgSU4gQ09OU1QgRUZJX0hB TkRMRSAgICAgICAgICAgICAgICBJbWFnZUhhbmRsZSwNCj4gPj4gKyAgSU4gICAgICAgRUZJX1NZ U1RFTV9UQUJMRSAgKiBDT05TVCBTeXN0ZW1UYWJsZQ0KPiA+PiArICApDQo+ID4+ICt7DQo+ID4+ ICsgIHJldHVybiBEZXJlZ2lzdGVyUGFyc2VyICgNCj4gPj4gKyAgICAgICAgICAgRUZJX0FDUElf Nl8yX0ZJWEVEX0FDUElfREVTQ1JJUFRJT05fVEFCTEVfU0lHTkFUVVJFDQo+ID4+ICsgICAgICAg ICAgICk7DQo+ID4+ICt9DQo+ID4+IGRpZmYgLS1naXQNCj4gYS9TaGVsbFBrZy9MaWJyYXJ5L1Vl ZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL0ZhZHQvRmFkdFBhcnNlckxpYi5pDQo+ IG5mDQo+IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFy c2Vycy9GYWR0L0ZhZHRQYXJzZXJMaWIuaQ0KPiBuZg0KPiA+PiBuZXcgZmlsZSBtb2RlIDEwMDY0 NA0KPiA+PiBpbmRleA0KPiAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw Li40MjhhMWEwMjZkZWVjMWI4N2NjYjkNCj4gM2RkNzc3NTAwNzhlMmE4ZWVmZA0KPiA+PiAtLS0g L2Rldi9udWxsDQo+ID4+ICsrKw0KPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZp ZXdDb21tYW5kTGliL1BhcnNlcnMvRmFkdC9GYWR0UGFyc2VyTGliLmkNCj4gbmYNCj4gPj4gQEAg LTAsMCArMSwzMyBAQA0KPiA+PiArIyMgQGZpbGUNCj4gPj4gKyMNCj4gPj4gKyMgIENvcHlyaWdo dCAoYykgMjAxNyAtIDIwMTgsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiA+ PiArIw0KPiA+PiArIyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFs cw0KPiA+PiArIyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVy bXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlDQo+IEJTRCBMaWNlbnNlDQo+ID4+ICsjICB3aGljaCBh Y2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vu c2UgbWF5IGJlDQo+IGZvdW5kIGF0DQo+ID4+ICsjICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGlj ZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ID4+ICsjDQo+ID4+ICsjICBUSEUgUFJPR1JBTSBJUyBE SVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIg0KPiBCQVNJUywN Cj4gPj4gKyMgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJ TkQsIEVJVEhFUg0KPiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ID4+ICsjIw0KPiA+PiArDQo+ID4+ ICtbRGVmaW5lc10NCj4gPj4gKyAgSU5GX1ZFUlNJT04gICAgPSAweDAwMDEwMDE5DQo+ID4+ICsg IEJBU0VfTkFNRSAgICAgID0gRmFkdFBhcnNlckxpYg0KPiA+PiArICBGSUxFX0dVSUQgICAgICA9 IDE1MDdFQzhBLTJCRDQtNDYwQi05ODMwLUQ3OEQwQkQ3RTBFNg0KPiA+PiArICBWRVJTSU9OX1NU UklORyA9IDEuMA0KPiA+PiArICBNT0RVTEVfVFlQRSAgICA9IERYRV9EUklWRVINCj4gPj4gKyAg TElCUkFSWV9DTEFTUyAgPSBOVUxMfERYRV9EUklWRVINCj4gPj4gKyAgQ09OU1RSVUNUT1IgICAg PSBGYWR0UGFyc2VyTGliQ29uc3RydWN0b3INCj4gPj4gKyAgREVTVFJVQ1RPUiAgICAgPSBGYWR0 UGFyc2VyTGliRGVzdHJ1Y3Rvcg0KPiA+PiArDQo+ID4+ICtbU291cmNlc10NCj4gPj4gKyAgRmFk dFBhcnNlci5jDQo+ID4+ICsNCj4gPj4gK1tQYWNrYWdlc10NCj4gPj4gKyAgTWRlUGtnL01kZVBr Zy5kZWMNCj4gPj4gKyAgU2hlbGxQa2cvU2hlbGxQa2cuZGVjDQo+ID4+ICsgIE1kZU1vZHVsZVBr Zy9NZGVNb2R1bGVQa2cuZGVjDQo+ID4+ICsNCj4gPj4gK1tMaWJyYXJ5Q2xhc3Nlc10NCj4gPj4g KyAgU2hlbGxBY3BpVmlld0NvbW1hbmRMaWINCj4gPj4gZGlmZiAtLWdpdA0KPiBhL1NoZWxsUGtn L0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvR3RkdC9HdGR0UGFy c2VyLmMNCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9Q YXJzZXJzL0d0ZHQvR3RkdFBhcnNlci5jDQo+ID4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4+ IGluZGV4DQo+IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc4NDEw NGE4YTRlNWM1ZmYwYmEyNjMNCj4gNzRhNjczNzdlNzdkZGZlMzliDQo+ID4+IC0tLSAvZGV2L251 bGwNCj4gPj4gKysrDQo+IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1h bmRMaWIvUGFyc2Vycy9HdGR0L0d0ZHRQYXJzZXIuYw0KPiA+PiBAQCAtMCwwICsxLDMzOCBAQA0K PiA+PiArLyoqDQo+ID4+ICsgIEdURFQgdGFibGUgcGFyc2VyDQo+ID4+ICsNCj4gPj4gKyAgQ29w eXJpZ2h0IChjKSAyMDE2IC0gMjAxOCwgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQu DQo+ID4+ICsgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCj4g Pj4gKyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5k IGNvbmRpdGlvbnMgb2YgdGhlDQo+IEJTRCBMaWNlbnNlDQo+ID4+ICsgIHdoaWNoIGFjY29tcGFu aWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkg YmUNCj4gZm91bmQgYXQNCj4gPj4gKyAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2Jz ZC1saWNlbnNlLnBocA0KPiA+PiArDQo+ID4+ICsgIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVE IFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiDQo+IEJBU0lTLA0KPiA+PiArICBX SVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVIN Cj4gRVhQUkVTUyBPUiBJTVBMSUVELg0KPiA+PiArDQo+ID4+ICsgIEBwYXIgUmVmZXJlbmNlKHMp Og0KPiA+PiArICAgIC0gQUNQSSA2LjIgU3BlY2lmaWNhdGlvbiAtIEVycmF0YSBBLCBTZXB0ZW1i ZXIgMjAxNw0KPiA+PiArICAqKi8NCj4gPj4gKw0KPiA+PiArI2luY2x1ZGUgPEluZHVzdHJ5U3Rh bmRhcmQvQWNwaS5oPg0KPiA+PiArI2luY2x1ZGUgPExpYnJhcnkvVWVmaUxpYi5oPg0KPiA+PiAr I2luY2x1ZGUgPExpYnJhcnkvQWNwaVZpZXcvQWNwaVBhcnNlci5oPg0KPiA+PiArI2luY2x1ZGUg PExpYnJhcnkvQWNwaVZpZXcvQWNwaVRhYmxlUGFyc2VyLmg+DQo+ID4+ICsNCj4gPj4gKy8vIExv Y2FsIHZhcmlhYmxlcw0KPiA+PiArU1RBVElDIENPTlNUIFVJTlQzMiogR3RkdFBsYXRmb3JtVGlt ZXJDb3VudDsNCj4gPj4gK1NUQVRJQyBDT05TVCBVSU5UMzIqIEd0ZHRQbGF0Zm9ybVRpbWVyT2Zm c2V0Ow0KPiA+PiArU1RBVElDIENPTlNUIFVJTlQ4KiAgUGxhdGZvcm1UaW1lclR5cGU7DQo+ID4+ ICtTVEFUSUMgQ09OU1QgVUlOVDE2KiBQbGF0Zm9ybVRpbWVyTGVuZ3RoOw0KPiA+PiArU1RBVElD IENPTlNUIFVJTlQzMiogR3RCbG9ja1RpbWVyQ291bnQ7DQo+ID4+ICtTVEFUSUMgQ09OU1QgVUlO VDMyKiBHdEJsb2NrVGltZXJPZmZzZXQ7DQo+ID4+ICtTVEFUSUMgQ09OU1QgVUlOVDE2KiBHdEJs b2NrTGVuZ3RoOw0KPiA+PiArU1RBVElDIEFDUElfREVTQ1JJUFRJT05fSEVBREVSX0lORk8gQWNw aUhkckluZm87DQo+ID4+ICsNCj4gPj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHZhbGlkYXRlcyB0aGUg R1QgQmxvY2sgdGltZXIgY291bnQuDQo+ID4+ICsNCj4gPj4gKyAgQHBhcmFtIFtpbl0gUHRyICAg ICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgZmllbGQgZGF0YS4NCj4gPj4gKyAgQHBhcmFt IFtpbl0gQ29udGV4dCBQb2ludGVyIHRvIGNvbnRleHQgc3BlY2lmaWMgaW5mb3JtYXRpb24gZS5n LiB0aGlzDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgY291bGQgYmUgYSBwb2ludGVyIHRv IHRoZSBBQ1BJIHRhYmxlIGhlYWRlci4NCj4gPj4gKyovDQo+ID4+ICtTVEFUSUMNCj4gPj4gK1ZP SUQNCj4gPj4gK0VGSUFQSQ0KPiA+PiArVmFsaWRhdGVHdEJsb2NrVGltZXJDb3VudCAoDQo+ID4+ ICsgIElOIFVJTlQ4KiBQdHIsDQo+ID4+ICsgIElOIFZPSUQqICBDb250ZXh0DQo+ID4+ICsgICk7 DQo+ID4+ICsNCj4gPj4gKy8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBB Q1BJIEdURFQgVGFibGUuDQo+ID4+ICsqLw0KPiA+PiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VS IEd0ZHRQYXJzZXJbXSA9IHsNCj4gPj4gKyAgUEFSU0VfQUNQSV9IRUFERVIgKCZBY3BpSGRySW5m byksDQo+ID4+ICsgIHtMIkNudENvbnRyb2xCYXNlIFBoeXNpY2FsIEFkZHJlc3MiLCA4LCAzNiwg TCIweCVseCIsIE5VTEwsIE5VTEwsDQo+ID4+ICsgICBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wi UmVzZXJ2ZWQiLCA0LCA0NCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4+ ICsgIHtMIlNlY3VyZSBFTDEgdGltZXIgR1NJViIsIDQsIDQ4LCBMIjB4JXgiLCBOVUxMLCBOVUxM LCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiU2VjdXJlIEVMMSB0aW1lciBGTEFHUyIsIDQsIDUy LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKw0KPiA+PiArICB7TCJO b24tU2VjdXJlIEVMMSB0aW1lciBHU0lWIiwgNCwgNTYsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5V TEwsIE5VTEx9LA0KPiA+PiArICB7TCJOb24tU2VjdXJlIEVMMSB0aW1lciBGTEFHUyIsIDQsIDYw LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLA0KPiBOVUxMfSwNCj4gPj4gKw0KPiA+PiArICB7 TCJWaXJ0dWFsIHRpbWVyIEdTSVYiLCA0LCA2NCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwg TlVMTH0sDQo+ID4+ICsgIHtMIlZpcnR1YWwgdGltZXIgRkxBR1MiLCA0LCA2OCwgTCIweCV4Iiwg TlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4+ICsNCj4gPj4gKyAge0wiTm9uLVNlY3VyZSBF TDIgdGltZXIgR1NJViIsIDQsIDcyLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwN Cj4gPj4gKyAge0wiTm9uLVNlY3VyZSBFTDIgdGltZXIgRkxBR1MiLCA0LCA3NiwgTCIweCV4Iiwg TlVMTCwgTlVMTCwgTlVMTCwNCj4gTlVMTH0sDQo+ID4+ICsNCj4gPj4gKyAge0wiQ250UmVhZEJh c2UgUGh5c2ljYWwgYWRkcmVzcyIsIDgsIDgwLCBMIjB4JWx4IiwgTlVMTCwgTlVMTCwgTlVMTCwN Cj4gTlVMTH0sDQo+ID4+ICsgIHtMIlBsYXRmb3JtIFRpbWVyIENvdW50IiwgNCwgODgsIEwiJWQi LCBOVUxMLA0KPiA+PiArICAgKFZPSUQqKikmR3RkdFBsYXRmb3JtVGltZXJDb3VudCwgTlVMTCwg TlVMTH0sDQo+ID4+ICsgIHtMIlBsYXRmb3JtIFRpbWVyIE9mZnNldCIsIDQsIDkyLCBMIjB4JXgi LCBOVUxMLA0KPiA+PiArICAgKFZPSUQqKikmR3RkdFBsYXRmb3JtVGltZXJPZmZzZXQsIE5VTEws IE5VTEx9DQo+ID4+ICt9Ow0KPiA+PiArDQo+ID4+ICsvKiogQW4gQUNQSV9QQVJTRVIgYXJyYXkg ZGVzY3JpYmluZyB0aGUgUGxhdGZvcm0gdGltZXIgaGVhZGVyLg0KPiA+PiArKi8NCj4gPj4gK1NU QVRJQyBDT05TVCBBQ1BJX1BBUlNFUiBHdFBsYXRmb3JtVGltZXJIZWFkZXJQYXJzZXJbXSA9IHsN Cj4gPj4gKyAge0wiVHlwZSIsIDEsIDAsIE5VTEwsIE5VTEwsIChWT0lEKiopJlBsYXRmb3JtVGlt ZXJUeXBlLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiTGVuZ3RoIiwgMiwgMSwgTlVMTCwgTlVM TCwgKFZPSUQqKikmUGxhdGZvcm1UaW1lckxlbmd0aCwgTlVMTCwNCj4gTlVMTH0sDQo+ID4+ICsg IHtMIlJlc2VydmVkIiwgMSwgMywgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0NCj4gPj4g K307DQo+ID4+ICsNCj4gPj4gKy8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRo ZSBQbGF0Zm9ybSBHVCBCbG9jay4NCj4gPj4gKyovDQo+ID4+ICtTVEFUSUMgQ09OU1QgQUNQSV9Q QVJTRVIgR3RCbG9ja1BhcnNlcltdID0gew0KPiA+PiArICB7TCJUeXBlIiwgMSwgMCwgTCIlZCIs IE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+PiArICB7TCJMZW5ndGgiLCAyLCAxLCBMIiVk IiwgTlVMTCwgKFZPSUQqKikmR3RCbG9ja0xlbmd0aCwgTlVMTCwgTlVMTH0sDQo+ID4+ICsgIHtM IlJlc2VydmVkIiwgMSwgMywgTCIleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+PiAr ICB7TCJQaHlzaWNhbCBhZGRyZXNzIChDbnRDdGxCYXNlKSIsIDgsIDQsIEwiMHglbHgiLCBOVUxM LCBOVUxMLCBOVUxMLA0KPiBOVUxMfSwNCj4gPj4gKyAge0wiVGltZXIgQ291bnQiLCA0LCAxMiwg TCIlZCIsIE5VTEwsIChWT0lEKiopJkd0QmxvY2tUaW1lckNvdW50LA0KPiA+PiArICAgVmFsaWRh dGVHdEJsb2NrVGltZXJDb3VudCwgTlVMTH0sDQo+ID4+ICsgIHtMIlRpbWVyIE9mZnNldCIsIDQs IDE2LCBMIiVkIiwgTlVMTCwgKFZPSUQqKikmR3RCbG9ja1RpbWVyT2Zmc2V0LA0KPiBOVUxMLA0K PiA+PiArICAgIE5VTEx9DQo+ID4+ICt9Ow0KPiA+PiArDQo+ID4+ICsvKiogQW4gQUNQSV9QQVJT RVIgYXJyYXkgZGVzY3JpYmluZyB0aGUgR1QgQmxvY2sgdGltZXIuDQo+ID4+ICsqLw0KPiA+PiAr U1RBVElDIENPTlNUIEFDUElfUEFSU0VSIEd0QmxvY2tUaW1lclBhcnNlcltdID0gew0KPiA+PiAr ICB7TCJGcmFtZSBOdW1iZXIiLCAxLCAwLCBMIiVkIiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0s DQo+ID4+ICsgIHtMIlJlc2VydmVkIiwgMywgMSwgTCIleCAleCAleCIsIER1bXAzQ2hhcnMsIE5V TEwsIE5VTEwsIE5VTEx9LA0KPiA+PiArICB7TCJQaHlzaWNhbCBhZGRyZXNzIChDbnRCYXNlWCki LCA4LCA0LCBMIjB4JWx4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4+ICsgIHtMIlBo eXNpY2FsIGFkZHJlc3MgKENudEVMMEJhc2VYKSIsIDgsIDEyLCBMIjB4JWx4IiwgTlVMTCwgTlVM TCwgTlVMTCwNCj4gPj4gKyAgICBOVUxMfSwNCj4gPj4gKyAge0wiUGh5c2ljYWwgVGltZXIgR1NJ ViIsIDQsIDIwLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wi UGh5c2ljYWwgVGltZXIgRmxhZ3MiLCA0LCAyNCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwg TlVMTH0sDQo+ID4+ICsgIHtMIlZpcnR1YWwgVGltZXIgR1NJViIsIDQsIDI4LCBMIjB4JXgiLCBO VUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiVmlydHVhbCBUaW1lciBGbGFncyIs IDQsIDMyLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiQ29t bW9uIEZsYWdzIiwgNCwgMzYsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9DQo+ID4+ ICt9Ow0KPiA+PiArDQo+ID4+ICsvKiogQW4gQUNQSV9QQVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0 aGUgUGxhdGZvcm0gV2F0Y2hkb2cuDQo+ID4+ICsqLw0KPiA+PiArU1RBVElDIENPTlNUIEFDUElf UEFSU0VSIFNCU0FHZW5lcmljV2F0Y2hkb2dQYXJzZXJbXSA9IHsNCj4gPj4gKyAge0wiVHlwZSIs IDEsIDAsIEwiJWQiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiTGVuZ3Ro IiwgMiwgMSwgTCIlZCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+PiArICB7TCJSZXNl cnZlZCIsIDEsIDMsIEwiJXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wi UmVmcmVzaEZyYW1lIFBoeXNpY2FsIGFkZHJlc3MiLCA4LCA0LCBMIjB4JWx4IiwgTlVMTCwgTlVM TCwgTlVMTCwNCj4gTlVMTH0sDQo+ID4+ICsgIHtMIkNvbnRyb2xGcmFtZSBQaHlzaWNhbCBhZGRy ZXNzIiwgOCwgMTIsIEwiMHglbHgiLCBOVUxMLCBOVUxMLCBOVUxMLA0KPiBOVUxMfSwNCj4gPj4g KyAge0wiV2F0Y2hkb2cgVGltZXIgR1NJViIsIDQsIDIwLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBO VUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiV2F0Y2hkb2cgVGltZXIgRmxhZ3MiLCA0LCAyNCwgTCIw eCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0NCj4gPj4gK307DQo+ID4+ICsNCj4gPj4gKy8q KiBUaGlzIGZ1bmN0aW9uIHZhbGlkYXRlcyB0aGUgR1QgQmxvY2sgdGltZXIgY291bnQuDQo+ID4+ ICsNCj4gPj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0 aGUgZmllbGQgZGF0YS4NCj4gPj4gKyAgQHBhcmFtIFtpbl0gQ29udGV4dCBQb2ludGVyIHRvIGNv bnRleHQgc3BlY2lmaWMgaW5mb3JtYXRpb24gZS5nLiB0aGlzDQo+ID4+ICsgICAgICAgICAgICAg ICAgICAgICAgY291bGQgYmUgYSBwb2ludGVyIHRvIHRoZSBBQ1BJIHRhYmxlIGhlYWRlci4NCj4g Pj4gKyovDQo+ID4+ICtTVEFUSUMNCj4gPj4gK1ZPSUQNCj4gPj4gK0VGSUFQSQ0KPiA+PiArVmFs aWRhdGVHdEJsb2NrVGltZXJDb3VudCAoDQo+ID4+ICsgIElOIFVJTlQ4KiBQdHIsDQo+ID4+ICsg IElOIFZPSUQqICBDb250ZXh0DQo+ID4+ICsgICkNCj4gPj4gK3sNCj4gPj4gKyAgVUlOVDMyIEJs b2NrVGltZXJDb3VudCA9ICooVUlOVDMyKilQdHI7DQo+ID4+ICsgIGlmIChCbG9ja1RpbWVyQ291 bnQgPiA4KSB7DQo+ID4+ICsgICAgSW5jcmVtZW50RXJyb3JDb3VudCAoKTsNCj4gPj4gKyAgICBQ cmludCAoDQo+ID4+ICsgICAgICBMIlxuRVJST1I6IFRpbWVyIENvdW50ID0gJWQuIE1heCBUaW1l ciBDb3VudCBpcyA4LiIsDQo+ID4+ICsgICAgICBCbG9ja1RpbWVyQ291bnQNCj4gPj4gKyAgICAg ICk7DQo+ID4+ICsgIH0NCj4gPj4gK30NCj4gPj4gKw0KPiA+PiArLyoqIFRoaXMgZnVuY3Rpb24g cGFyc2VzIHRoZSBQbGF0Zm9ybSBHVCBCbG9jay4NCj4gPj4gKw0KPiA+PiArICBAcGFyYW0gW2lu XSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBHVCBCbG9jayBkYXRhLg0KPiA+ PiArICBAcGFyYW0gW2luXSBMZW5ndGggIExlbmd0aCBvZiB0aGUgR1QgQmxvY2sgc3RydWN0dXJl Lg0KPiA+PiArKi8NCj4gPj4gK1NUQVRJQw0KPiA+PiArVk9JRA0KPiA+PiArRHVtcEdUQmxvY2sg KA0KPiA+PiArICBJTiBVSU5UOCogUHRyLA0KPiA+PiArICBJTiBVSU5UMTYgTGVuZ3RoDQo+ID4+ ICsgICkNCj4gPj4gK3sNCj4gPj4gKyAgVUlOVDMyIEluZGV4Ow0KPiA+PiArICBVSU5UMzIgT2Zm c2V0Ow0KPiA+PiArICBVSU5UMTYgR1RCbG9ja1RpbWVyTGVuZ3RoOw0KPiA+PiArDQo+ID4+ICsg IE9mZnNldCA9IFBhcnNlQWNwaSAoDQo+ID4+ICsgICAgICAgICAgICAgVFJVRSwNCj4gPj4gKyAg ICAgICAgICAgICAyLA0KPiA+PiArICAgICAgICAgICAgICJHVCBCbG9jayIsDQo+ID4+ICsgICAg ICAgICAgICAgUHRyLA0KPiA+PiArICAgICAgICAgICAgIExlbmd0aCwNCj4gPj4gKyAgICAgICAg ICAgICBQQVJTRVJfUEFSQU1TIChHdEJsb2NrUGFyc2VyKQ0KPiA+PiArICAgICAgICAgICAgICk7 DQo+ID4+ICsgIEdUQmxvY2tUaW1lckxlbmd0aCA9ICgqR3RCbG9ja0xlbmd0aCAtIE9mZnNldCkg LyAoKkd0QmxvY2tUaW1lckNvdW50KTsNCj4gPj4gKyAgTGVuZ3RoIC09IE9mZnNldDsNCj4gPj4g Kw0KPiA+PiArICBpZiAoKkd0QmxvY2tUaW1lckNvdW50ICE9IDApIHsNCj4gPj4gKyAgICBQdHIg Kz0gKCpHdEJsb2NrVGltZXJPZmZzZXQpOw0KPiA+PiArICAgIEluZGV4ID0gMDsNCj4gPj4gKyAg ICB3aGlsZSAoKEluZGV4IDwgKCpHdEJsb2NrVGltZXJDb3VudCkpICYmIChMZW5ndGggPj0NCj4g R1RCbG9ja1RpbWVyTGVuZ3RoKSkgew0KPiA+PiArICAgICAgT2Zmc2V0ID0gUGFyc2VBY3BpICgN Cj4gPj4gKyAgICAgICAgICAgICAgICAgVFJVRSwNCj4gPj4gKyAgICAgICAgICAgICAgICAgMiwN Cj4gPj4gKyAgICAgICAgICAgICAgICAgIkdUIEJsb2NrIFRpbWVyIiwNCj4gPj4gKyAgICAgICAg ICAgICAgICAgUHRyLA0KPiA+PiArICAgICAgICAgICAgICAgICBHVEJsb2NrVGltZXJMZW5ndGgs DQo+ID4+ICsgICAgICAgICAgICAgICAgIFBBUlNFUl9QQVJBTVMgKEd0QmxvY2tUaW1lclBhcnNl cikNCj4gPj4gKyAgICAgICAgICAgICAgICAgKTsNCj4gPj4gKyAgICAgIC8vIEluY3JlbWVudCBi eSBHVCBCbG9jayBUaW1lciBzdHJ1Y3R1cmUgc2l6ZQ0KPiA+PiArICAgICAgUHRyICs9IE9mZnNl dDsNCj4gPj4gKyAgICAgIExlbmd0aCAtPSBPZmZzZXQ7DQo+ID4+ICsgICAgICBJbmRleCsrOw0K PiA+PiArICAgIH0NCj4gPj4gKw0KPiA+PiArICAgIGlmIChMZW5ndGggIT0gMCkgew0KPiA+PiAr ICAgICAgSW5jcmVtZW50RXJyb3JDb3VudCAoKTsNCj4gPj4gKyAgICAgIFByaW50ICgNCj4gPj4g KyAgICAgICAgTCJFUlJPUjpHVCBCbG9jayBUaW1lciBsZW5ndGggbWlzbWF0Y2guIFVucGFyc2Vk ICVkIGJ5dGVzLlxuIiwNCj4gPj4gKyAgICAgICAgTGVuZ3RoDQo+ID4+ICsgICAgICAgICk7DQo+ ID4+ICsgICAgfQ0KPiA+PiArICB9DQo+ID4+ICt9DQo+ID4+ICsNCj4gPj4gKy8qKiBUaGlzIGZ1 bmN0aW9uIHBhcnNlcyB0aGUgUGxhdGZvcm0gV2F0Y2hkb2cgdGltZXIuDQo+ID4+ICsNCj4gPj4g KyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgd2F0Y2hk b2cgdGltZXIgZGF0YS4NCj4gPj4gKyAgQHBhcmFtIFtpbl0gTGVuZ3RoICBMZW5ndGggb2YgdGhl IHdhdGNoZG9nIHRpbWVyIHN0cnVjdHVyZS4NCj4gPj4gKyovDQo+ID4+ICtTVEFUSUMNCj4gPj4g K1ZPSUQNCj4gPj4gK0R1bXBXYXRjaGRvZ1RpbWVyICgNCj4gPj4gKyAgSU4gVUlOVDgqIFB0ciwN Cj4gPj4gKyAgSU4gVUlOVDE2IExlbmd0aA0KPiA+PiArICApDQo+ID4+ICt7DQo+ID4+ICsgIFBh cnNlQWNwaSAoDQo+ID4+ICsgICAgVFJVRSwNCj4gPj4gKyAgICAyLA0KPiA+PiArICAgICJTQlNB IEdlbmVyaWMgV2F0Y2hkb2ciLA0KPiA+PiArICAgIFB0ciwNCj4gPj4gKyAgICBMZW5ndGgsDQo+ ID4+ICsgICAgUEFSU0VSX1BBUkFNUyAoU0JTQUdlbmVyaWNXYXRjaGRvZ1BhcnNlcikNCj4gPj4g KyAgICApOw0KPiA+PiArfQ0KPiA+PiArDQo+ID4+ICsvKiogVGhpcyBmdW5jdGlvbiBwYXJzZXMg dGhlIEFDUEkgR1REVCB0YWJsZS4NCj4gPj4gKyAgV2hlbiB0cmFjZSBpcyBlbmFibGVkIHRoaXMg ZnVuY3Rpb24gcGFyc2VzIHRoZSBHVERUIHRhYmxlIGFuZA0KPiA+PiArICB0cmFjZXMgdGhlIEFD UEkgdGFibGUgZmllbGRzLg0KPiA+PiArDQo+ID4+ICsgIFRoaXMgZnVuY3Rpb24gYWxzbyBwYXJz ZXMgdGhlIGZvbGxvd2luZyBwbGF0Zm9ybSB0aW1lciBzdHJ1Y3R1cmVzOg0KPiA+PiArICAgIC0g R1QgQmxvY2sgdGltZXINCj4gPj4gKyAgICAtIFdhdGNoZG9nIHRpbWVyDQo+ID4+ICsNCj4gPj4g KyAgVGhpcyBmdW5jdGlvbiBhbHNvIHBlcmZvcm1zIHZhbGlkYXRpb24gb2YgdGhlIEFDUEkgdGFi bGUgZmllbGRzLg0KPiA+PiArDQo+ID4+ICsgIEBwYXJhbSBbaW5dIFRyYWNlICAgICAgICAgICAg ICBJZiBUUlVFLCB0cmFjZSB0aGUgQUNQSSBmaWVsZHMuDQo+ID4+ICsgIEBwYXJhbSBbaW5dIFB0 ciAgICAgICAgICAgICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiA+ PiArICBAcGFyYW0gW2luXSBBY3BpVGFibGVMZW5ndGggICAgTGVuZ3RoIG9mIHRoZSBBQ1BJIHRh YmxlLg0KPiA+PiArICBAcGFyYW0gW2luXSBBY3BpVGFibGVSZXZpc2lvbiAgUmV2aXNpb24gb2Yg dGhlIEFDUEkgdGFibGUuDQo+ID4+ICsqLw0KPiA+PiArVk9JRA0KPiA+PiArRUZJQVBJDQo+ID4+ ICtQYXJzZUFjcGlHdGR0ICgNCj4gPj4gKyAgSU4gQk9PTEVBTiBUcmFjZSwNCj4gPj4gKyAgSU4g VUlOVDgqICBQdHIsDQo+ID4+ICsgIElOIFVJTlQzMiAgQWNwaVRhYmxlTGVuZ3RoLA0KPiA+PiAr ICBJTiBVSU5UOCAgIEFjcGlUYWJsZVJldmlzaW9uDQo+ID4+ICsgICkNCj4gPj4gK3sNCj4gPj4g KyAgVUlOVDMyIEluZGV4Ow0KPiA+PiArICBVSU5UOCogVGltZXJQdHI7DQo+ID4+ICsNCj4gPj4g KyAgaWYgKCFUcmFjZSkgew0KPiA+PiArICAgIHJldHVybjsNCj4gPj4gKyAgfQ0KPiA+PiArDQo+ ID4+ICsgIFBhcnNlQWNwaSAoDQo+ID4+ICsgICAgVFJVRSwNCj4gPj4gKyAgICAwLA0KPiA+PiAr ICAgICJHVERUIiwNCj4gPj4gKyAgICBQdHIsDQo+ID4+ICsgICAgQWNwaVRhYmxlTGVuZ3RoLA0K PiA+PiArICAgIFBBUlNFUl9QQVJBTVMgKEd0ZHRQYXJzZXIpDQo+ID4+ICsgICAgKTsNCj4gPj4g Kw0KPiA+PiArICBpZiAoKkd0ZHRQbGF0Zm9ybVRpbWVyQ291bnQgIT0gMCkgew0KPiA+PiArICAg IFRpbWVyUHRyID0gUHRyICsgKCpHdGR0UGxhdGZvcm1UaW1lck9mZnNldCk7DQo+ID4+ICsgICAg SW5kZXggPSAwOw0KPiA+PiArICAgIGRvIHsNCj4gPj4gKyAgICAgIC8vIFBhcnNlIHRoZSBQbGF0 Zm9ybSBUaW1lciBIZWFkZXINCj4gPj4gKyAgICAgIFBhcnNlQWNwaSAoDQo+ID4+ICsgICAgICAg IEZBTFNFLA0KPiA+PiArICAgICAgICAwLA0KPiA+PiArICAgICAgICBOVUxMLA0KPiA+PiArICAg ICAgICBUaW1lclB0ciwNCj4gPj4gKyAgICAgICAgNCwgIC8vIEdUIFBsYXRmb3JtIFRpbWVyIHN0 cnVjdHVyZSBoZWFkZXIgbGVuZ3RoLg0KPiA+PiArICAgICAgICBQQVJTRVJfUEFSQU1TIChHdFBs YXRmb3JtVGltZXJIZWFkZXJQYXJzZXIpDQo+ID4+ICsgICAgICAgICk7DQo+ID4+ICsgICAgICBz d2l0Y2ggKCpQbGF0Zm9ybVRpbWVyVHlwZSkgew0KPiA+PiArICAgICAgICBjYXNlIEVGSV9BQ1BJ XzZfMl9HVERUX0dUX0JMT0NLOg0KPiA+PiArICAgICAgICAgIER1bXBHVEJsb2NrIChUaW1lclB0 ciwgKlBsYXRmb3JtVGltZXJMZW5ndGgpOw0KPiA+PiArICAgICAgICAgIGJyZWFrOw0KPiA+PiAr ICAgICAgICBjYXNlIEVGSV9BQ1BJXzZfMl9HVERUX1NCU0FfR0VORVJJQ19XQVRDSERPRzoNCj4g Pj4gKyAgICAgICAgICBEdW1wV2F0Y2hkb2dUaW1lciAoVGltZXJQdHIsICpQbGF0Zm9ybVRpbWVy TGVuZ3RoKTsNCj4gPj4gKyAgICAgICAgICBicmVhazsNCj4gPj4gKyAgICAgICAgZGVmYXVsdDoN Cj4gPj4gKyAgICAgICAgICBJbmNyZW1lbnRFcnJvckNvdW50ICgpOw0KPiA+PiArICAgICAgICAg IFByaW50ICgNCj4gPj4gKyAgICAgICAgICAgIEwiRVJST1I6IElOVkFMSUQgUGxhdGZvcm0gVGlt ZXIgVHlwZSA9ICVkXG4iLA0KPiA+PiArICAgICAgICAgICAgKlBsYXRmb3JtVGltZXJUeXBlDQo+ ID4+ICsgICAgICAgICAgICApOw0KPiA+PiArICAgICAgICAgIGJyZWFrOw0KPiA+PiArICAgICAg fSAvLyBzd2l0Y2gNCj4gPj4gKyAgICAgIFRpbWVyUHRyICs9ICgqUGxhdGZvcm1UaW1lckxlbmd0 aCk7DQo+ID4+ICsgICAgICBJbmRleCsrOw0KPiA+PiArICAgIH0gd2hpbGUgKEluZGV4IDwgKkd0 ZHRQbGF0Zm9ybVRpbWVyQ291bnQpOw0KPiA+PiArICB9DQo+ID4+ICt9DQo+ID4+ICsNCj4gPj4g Ky8qKiBSZWdpc3RlciB0aGUgcGFyc2VyLg0KPiA+PiArDQo+ID4+ICsgIEBwYXJhbSBbaW5dICBJ bWFnZUhhbmRsZSAgVGhlIGhhbmRsZSB0byB0aGUgaW1hZ2UuDQo+ID4+ICsgIEBwYXJhbSBbaW5d ICBTeXN0ZW1UYWJsZSAgUG9pbnRlciB0byB0aGUgU3lzdGVtIFRhYmxlLg0KPiA+PiArDQo+ID4+ ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBwYXJzZXIgaXMgcmVnaXN0ZXJl ZC4NCj4gPj4gKyAgQHJldHZhbCBFRklfQUxSRUFEWV9TVEFSVEVEICAgVGhlIHBhcnNlciBmb3Ig dGhlIEFDUEkgVGFibGUNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2Fz IGFscmVhZHkgcmVnaXN0ZXJlZC4NCj4gPj4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVU RVIgQSBwYXJhbWV0ZXIgaXMgaW52YWxpZA0KPiA+PiArICBAcmV0dmFsIEVGSV9PVVRfT0ZfUkVT T1VSQ0VTICBObyBzcGFjZSB0byByZWdpc3RlciB0aGUNCj4gPj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcGFyc2VyLg0KPiA+PiArKi8NCj4gPj4gK0VGSV9TVEFUVVMNCj4gPj4g K0VGSUFQSQ0KPiA+PiArR3RkdFBhcnNlckxpYkNvbnN0cnVjdG9yICgNCj4gPj4gKyAgSU4gQ09O U1QgRUZJX0hBTkRMRSAgICAgICAgICAgICAgICBJbWFnZUhhbmRsZSwNCj4gPj4gKyAgSU4gICAg ICAgRUZJX1NZU1RFTV9UQUJMRSAgKiBDT05TVCBTeXN0ZW1UYWJsZQ0KPiA+PiArICApDQo+ID4+ ICt7DQo+ID4+ICsgIHJldHVybiBSZWdpc3RlclBhcnNlciAoDQo+ID4+ICsNCj4gRUZJX0FDUElf Nl8yX0dFTkVSSUNfVElNRVJfREVTQ1JJUFRJT05fVEFCTEVfU0lHTkFUVVJFLA0KPiA+PiArICAg ICAgICAgICBQYXJzZUFjcGlHdGR0DQo+ID4+ICsgICAgICAgICAgICk7DQo+ID4+ICt9DQo+ID4+ ICsNCj4gPj4gKy8qKiBEZXJlZ2lzdGVyIHRoZSBwYXJzZXIuDQo+ID4+ICsNCj4gPj4gKyAgQHBh cmFtIFtpbl0gIEltYWdlSGFuZGxlICBUaGUgaGFuZGxlIHRvIHRoZSBpbWFnZS4NCj4gPj4gKyAg QHBhcmFtIFtpbl0gIFN5c3RlbVRhYmxlICBQb2ludGVyIHRvIHRoZSBTeXN0ZW0gVGFibGUuDQo+ ID4+ICsNCj4gPj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhlIHBhcnNlciBp cyBkZXJlZ2lzdGVyZWQuDQo+ID4+ICsgIEByZXR2YWwgRUZJX05PVF9GT1VORCAgICAgICAgIFRo ZSBwYXJzZXIgd2FzIG5vdCByZWdpc3RlcmVkLg0KPiA+PiArKi8NCj4gPj4gK0VGSV9TVEFUVVMN Cj4gPj4gK0VGSUFQSQ0KPiA+PiArR3RkdFBhcnNlckxpYkRlc3RydWN0b3IgKA0KPiA+PiArICBJ TiBDT05TVCBFRklfSEFORExFICAgICAgICAgICAgICAgIEltYWdlSGFuZGxlLA0KPiA+PiArICBJ TiAgICAgICBFRklfU1lTVEVNX1RBQkxFICAqIENPTlNUIFN5c3RlbVRhYmxlDQo+ID4+ICsgICkN Cj4gPj4gK3sNCj4gPj4gKyAgcmV0dXJuIERlcmVnaXN0ZXJQYXJzZXIgKA0KPiA+PiArDQo+IEVG SV9BQ1BJXzZfMl9HRU5FUklDX1RJTUVSX0RFU0NSSVBUSU9OX1RBQkxFX1NJR05BVFVSRQ0KPiA+ PiArICAgICAgICAgICApOw0KPiA+PiArfQ0KPiA+PiBkaWZmIC0tZ2l0DQo+IGEvU2hlbGxQa2cv TGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9HdGR0L0d0ZHRQYXJz ZXJMaWIuaQ0KPiBuZg0KPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21t YW5kTGliL1BhcnNlcnMvR3RkdC9HdGR0UGFyc2VyTGliLmkNCj4gbmYNCj4gPj4gbmV3IGZpbGUg bW9kZSAxMDA2NDQNCj4gPj4gaW5kZXgNCj4gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMC4uNGIxZTlkOTlmMjM1M2U3ZTY5NmY2Zg0KPiAwZmM3MTZkNDJiMjRiZmViOWUN Cj4gPj4gLS0tIC9kZXYvbnVsbA0KPiA+PiArKysNCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlT aGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL0d0ZHQvR3RkdFBhcnNlckxpYi5pDQo+IG5m DQo+ID4+IEBAIC0wLDAgKzEsMzMgQEANCj4gPj4gKyMjIEBmaWxlDQo+ID4+ICsjDQo+ID4+ICsj ICBDb3B5cmlnaHQgKGMpIDIwMTcgLSAyMDE4LCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNl cnZlZC4NCj4gPj4gKyMNCj4gPj4gKyMgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWlu ZyBtYXRlcmlhbHMNCj4gPj4gKyMgIGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5k ZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZQ0KPiBCU0QgTGljZW5zZQ0KPiA+PiAr IyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9m IHRoZSBsaWNlbnNlIG1heSBiZQ0KPiBmb3VuZCBhdA0KPiA+PiArIyAgaHR0cDovL29wZW5zb3Vy Y2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiA+PiArIw0KPiA+PiArIyAgVEhFIFBS T0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyIN Cj4gQkFTSVMsDQo+ID4+ICsjICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05T IE9GIEFOWSBLSU5ELCBFSVRIRVINCj4gRVhQUkVTUyBPUiBJTVBMSUVELg0KPiA+PiArIyMNCj4g Pj4gKw0KPiA+PiArW0RlZmluZXNdDQo+ID4+ICsgIElORl9WRVJTSU9OICAgID0gMHgwMDAxMDAx OQ0KPiA+PiArICBCQVNFX05BTUUgICAgICA9IEd0ZHRQYXJzZXJMaWINCj4gPj4gKyAgRklMRV9H VUlEICAgICAgPSA0NjM4QTU3Mi01OUMwLTRBQUYtQjk5MC1COTVGQTY3RDk2NTYNCj4gPj4gKyAg VkVSU0lPTl9TVFJJTkcgPSAxLjANCj4gPj4gKyAgTU9EVUxFX1RZUEUgICAgPSBEWEVfRFJJVkVS DQo+ID4+ICsgIExJQlJBUllfQ0xBU1MgID0gTlVMTHxEWEVfRFJJVkVSDQo+ID4+ICsgIENPTlNU UlVDVE9SICAgID0gR3RkdFBhcnNlckxpYkNvbnN0cnVjdG9yDQo+ID4+ICsgIERFU1RSVUNUT1Ig ICAgID0gR3RkdFBhcnNlckxpYkRlc3RydWN0b3INCj4gPj4gKw0KPiA+PiArW1NvdXJjZXNdDQo+ ID4+ICsgIEd0ZHRQYXJzZXIuYw0KPiA+PiArDQo+ID4+ICtbUGFja2FnZXNdDQo+ID4+ICsgIE1k ZVBrZy9NZGVQa2cuZGVjDQo+ID4+ICsgIFNoZWxsUGtnL1NoZWxsUGtnLmRlYw0KPiA+PiArICBN ZGVNb2R1bGVQa2cvTWRlTW9kdWxlUGtnLmRlYw0KPiA+PiArDQo+ID4+ICtbTGlicmFyeUNsYXNz ZXNdDQo+ID4+ICsgIFNoZWxsQWNwaVZpZXdDb21tYW5kTGliDQo+ID4+IGRpZmYgLS1naXQNCj4g YS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL0lv cnQvSW9ydFBhcnNlci5jDQo+IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0Nv bW1hbmRMaWIvUGFyc2Vycy9Jb3J0L0lvcnRQYXJzZXIuYw0KPiA+PiBuZXcgZmlsZSBtb2RlIDEw MDY0NA0KPiA+PiBpbmRleA0KPiAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwLi4zNWIyNTcxMjgyYzA0MjU3YTAxMGINCj4gZjZjODAwYWNmNzE0MGQwMjgzYg0KPiA+PiAt LS0gL2Rldi9udWxsDQo+ID4+ICsrKw0KPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNw aVZpZXdDb21tYW5kTGliL1BhcnNlcnMvSW9ydC9Jb3J0UGFyc2VyLmMNCj4gPj4gQEAgLTAsMCAr MSw3NDUgQEANCj4gPj4gKy8qKg0KPiA+PiArICBJT1JUIHRhYmxlIHBhcnNlcg0KPiA+PiArDQo+ ID4+ICsgIENvcHlyaWdodCAoYykgMjAxNiAtIDIwMTgsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRz IHJlc2VydmVkLg0KPiA+PiArICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0 ZXJpYWxzDQo+ID4+ICsgIGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhl IHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZQ0KPiBCU0QgTGljZW5zZQ0KPiA+PiArICB3aGlj aCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxp Y2Vuc2UgbWF5IGJlDQo+IGZvdW5kIGF0DQo+ID4+ICsgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9s aWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4gPj4gKw0KPiA+PiArICBUSEUgUFJPR1JBTSBJUyBE SVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIg0KPiBCQVNJUywN Cj4gPj4gKyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lO RCwgRUlUSEVSDQo+IEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gPj4gKw0KPiA+PiArICBAcGFyIFJl ZmVyZW5jZShzKToNCj4gPj4gKyAgICAtIElPIFJlbWFwcGluZyBUYWJsZSwgUGxhdGZvcm0gRGVz aWduIERvY3VtZW50LCBSZXZpc2lvbiBDLCAxNSBNYXkNCj4gMjAxNw0KPiA+PiArKiovDQo+ID4+ ICsNCj4gPj4gKyNpbmNsdWRlIDxJbmR1c3RyeVN0YW5kYXJkL0lvUmVtYXBwaW5nVGFibGUuaD4N Cj4gPj4gKyNpbmNsdWRlIDxMaWJyYXJ5L1ByaW50TGliLmg+DQo+ID4+ICsjaW5jbHVkZSA8TGli cmFyeS9VZWZpTGliLmg+DQo+ID4+ICsjaW5jbHVkZSA8TGlicmFyeS9BY3BpVmlldy9BY3BpUGFy c2VyLmg+DQo+ID4+ICsjaW5jbHVkZSA8TGlicmFyeS9BY3BpVmlldy9BY3BpVGFibGVQYXJzZXIu aD4NCj4gPj4gKw0KPiA+PiArLy8gTG9jYWwgdmFyaWFibGVzDQo+ID4+ICtTVEFUSUMgQUNQSV9E RVNDUklQVElPTl9IRUFERVJfSU5GTyBBY3BpSGRySW5mbzsNCj4gPj4gKw0KPiA+PiArLyoqIFRo ZSBFSU9SVF9OT0RFIGVudW0gZGVzY3JpYmVzIHRoZSBJT1JUIE5vZGUgdHlwZXMuDQo+ID4+ICsq Lw0KPiA+PiArdHlwZWRlZiBlbnVtIElvcnROb2RlIHsNCj4gPj4gKyAgRUlPUlRfTk9ERV9JVFNf R1JPVVAsICAgICAgICAvLy88IElUUyBHcm91cCBub2RlDQo+ID4+ICsgIEVJT1JUX05PREVfTkFN RURfQ09NUE9ORU5ULCAgLy8vPCBOYW1lZCBDb21wb25lbnQgbm9kZQ0KPiA+PiArICBFSU9SVF9O T0RFX1JPT1RfQ09NUExFWCwgICAgIC8vLzwgUm9vdCBDb21wbGV4IG5vZGUNCj4gPj4gKyAgRUlP UlRfTk9ERV9TTU1VVjFfVjIsICAgICAgICAvLy88IFNNTVUgdjEvdjIgbm9kZQ0KPiA+PiArICBF SU9SVF9OT0RFX1NNTVVWMywgICAgICAgICAgIC8vLzwgU01NVSB2MyBub2RlDQo+ID4+ICsgIEVJ T1JUX05PREVfUE1DRywgICAgICAgICAgICAgLy8vPCBQTUMgZ3JvdXAgbm9kZQ0KPiA+PiArICBF SU9SVF9OT0RFX01BWA0KPiA+PiArfSBFSU9SVF9OT0RFOw0KPiA+PiArDQo+ID4+ICsvLyBMb2Nh bCBWYXJpYWJsZXMNCj4gPj4gK1NUQVRJQyBDT05TVCBVSU5UMzIqIElvcnROb2RlQ291bnQ7DQo+ ID4+ICtTVEFUSUMgQ09OU1QgVUlOVDMyKiBJb3J0Tm9kZU9mZnNldDsNCj4gPj4gKw0KPiA+PiAr U1RBVElDIENPTlNUIFVJTlQ4KiBJb3J0Tm9kZVR5cGU7DQo+ID4+ICtTVEFUSUMgQ09OU1QgVUlO VDE2KiBJb3J0Tm9kZUxlbmd0aDsNCj4gPj4gK1NUQVRJQyBDT05TVCBVSU5UMzIqIElvcnRJZE1h cHBpbmdDb3VudDsNCj4gPj4gK1NUQVRJQyBDT05TVCBVSU5UMzIqIElvcnRJZE1hcHBpbmdPZmZz ZXQ7DQo+ID4+ICsNCj4gPj4gK1NUQVRJQyBDT05TVCBVSU5UMzIqIEludGVycnVwdENvbnRleHRD b3VudDsNCj4gPj4gK1NUQVRJQyBDT05TVCBVSU5UMzIqIEludGVycnVwdENvbnRleHRPZmZzZXQ7 DQo+ID4+ICtTVEFUSUMgQ09OU1QgVUlOVDMyKiBQbXVJbnRlcnJ1cHRDb3VudDsNCj4gPj4gK1NU QVRJQyBDT05TVCBVSU5UMzIqIFBtdUludGVycnVwdE9mZnNldDsNCj4gPj4gKw0KPiA+PiArU1RB VElDIENPTlNUIFVJTlQzMiogSXRzQ291bnQ7DQo+ID4+ICsNCj4gPj4gKy8qKiBUaGlzIGZ1bmN0 aW9uIHZhbGlkYXRlcyB0aGUgSUQgTWFwcGluZyBhcnJheSBjb3VudCBmb3IgdGhlIElUUyBub2Rl Lg0KPiA+PiArDQo+ID4+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3Rh cnQgb2YgdGhlIGZpZWxkIGRhdGEuDQo+ID4+ICsgIEBwYXJhbSBbaW5dIENvbnRleHQgUG9pbnRl ciB0byBjb250ZXh0IHNwZWNpZmljIGluZm9ybWF0aW9uIGUuZy4gdGhpcw0KPiA+PiArICAgICAg ICAgICAgICAgICAgICAgIGNvdWxkIGJlIGEgcG9pbnRlciB0byB0aGUgQUNQSSB0YWJsZSBoZWFk ZXIuDQo+ID4+ICsqLw0KPiA+PiArU1RBVElDDQo+ID4+ICtWT0lEDQo+ID4+ICtFRklBUEkNCj4g Pj4gK1ZhbGlkYXRlSXRzSWRNYXBwaW5nQ291bnQgKA0KPiA+PiArICBJTiBVSU5UOCogUHRyLA0K PiA+PiArICBJTiBWT0lEKiAgQ29udGV4dA0KPiA+PiArICApOw0KPiA+PiArDQo+ID4+ICsvKiog VGhpcyBmdW5jdGlvbiB2YWxpZGF0ZXMgdGhlIElEIE1hcHBpbmcgYXJyYXkgb2Zmc2V0IGZvciB0 aGUgSVRTIG5vZGUuDQo+ID4+ICsNCj4gPj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVy IHRvIHRoZSBzdGFydCBvZiB0aGUgZmllbGQgZGF0YS4NCj4gPj4gKyAgQHBhcmFtIFtpbl0gQ29u dGV4dCBQb2ludGVyIHRvIGNvbnRleHQgc3BlY2lmaWMgaW5mb3JtYXRpb24gZS5nLiB0aGlzDQo+ ID4+ICsgICAgICAgICAgICAgICAgICAgICAgY291bGQgYmUgYSBwb2ludGVyIHRvIHRoZSBBQ1BJ IHRhYmxlIGhlYWRlci4NCj4gPj4gKyovDQo+ID4+ICtTVEFUSUMNCj4gPj4gK1ZPSUQNCj4gPj4g K0VGSUFQSQ0KPiA+PiArVmFsaWRhdGVJdHNJZEFycmF5UmVmZXJlbmNlICgNCj4gPj4gKyAgSU4g VUlOVDgqIFB0ciwNCj4gPj4gKyAgSU4gVk9JRCogIENvbnRleHQNCj4gPj4gKyAgKTsNCj4gPj4g Kw0KPiA+PiArLyoqIEhlbHBlciBNYWNybyBmb3IgcG9wdWxhdGluZyB0aGUgSU9SVCBOb2RlIGhl YWRlciBpbiB0aGUgQUNQSV9QQVJTRVINCj4gPj4gKyAgICBhcnJheS4NCj4gPj4gKw0KPiA+PiAr ICBAcGFyYW0gW291dF0gVmFsaWRhdGVJZE1hcHBpbmdDb3VudCAgICBPcHRpb25hbCBwb2ludGVy IHRvIGENCj4gZnVuY3Rpb24gZm9yDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHZhbGlkYXRpbmcgdGhlIElEIE1hcHBpbmcNCj4gY291bnQuDQo+ID4+ICsg IEBwYXJhbSBbb3V0XSBWYWxpZGF0ZUlkQXJyYXlSZWZlcmVuY2UgIE9wdGlvbmFsIHBvaW50ZXIg dG8gYSBmdW5jdGlvbg0KPiBmb3INCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdmFsaWRhdGluZyB0aGUgSUQgQXJyYXkNCj4gcmVmZXJlbmNlLg0KPiA+PiAr Ki8NCj4gPj4gKyNkZWZpbmUgUEFSU0VfSU9SVF9OT0RFX0hFQURFUihWYWxpZGF0ZUlkTWFwcGlu Z0NvdW50LA0KPiBcDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRh dGVJZEFycmF5UmVmZXJlbmNlKQ0KPiBcDQo+ID4+ICsgIHsgTCJUeXBlIiwgMSwgMCwgTCIlZCIs IE5VTEwsIChWT0lEKiopJklvcnROb2RlVHlwZSwgTlVMTCwgTlVMTCB9LA0KPiBcDQo+ID4+ICsg IHsgTCJMZW5ndGgiLCAyLCAxLCBMIiVkIiwgTlVMTCwgKFZPSUQqKikmSW9ydE5vZGVMZW5ndGgs IE5VTEwsIE5VTEwgfSwNCj4gXA0KPiA+PiArICB7IEwiUmV2aXNpb24iLCAxLCAzLCBMIiVkIiwg TlVMTCwgTlVMTCwgTlVMTCwgTlVMTCB9LA0KPiBcDQo+ID4+ICsgIHsgTCJSZXNlcnZlZCIsIDQs IDQsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwgfSwNCj4gXA0KPiA+PiArICB7IEwi TnVtYmVyIG9mIElEIG1hcHBpbmdzIiwgNCwgOCwgTCIlZCIsIE5VTEwsDQo+IFwNCj4gPj4gKyAg ICAoVk9JRCoqKSZJb3J0SWRNYXBwaW5nQ291bnQsIFZhbGlkYXRlSWRNYXBwaW5nQ291bnQsIE5V TEwgfSwNCj4gXA0KPiA+PiArICB7IEwiUmVmZXJlbmNlIHRvIElEIEFycmF5IiwgNCwgMTIsIEwi MHgleCIsIE5VTEwsDQo+IFwNCj4gPj4gKyAgICAoVk9JRCoqKSZJb3J0SWRNYXBwaW5nT2Zmc2V0 LCBWYWxpZGF0ZUlkQXJyYXlSZWZlcmVuY2UsIE5VTEwgfQ0KPiA+PiArDQo+ID4+ICsvKiogQW4g QUNQSV9QQVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0aGUgQUNQSSBJT1JUIFRhYmxlDQo+ID4+ICsq Lw0KPiA+PiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VSIElvcnRQYXJzZXJbXSA9IHsNCj4gPj4g KyAgUEFSU0VfQUNQSV9IRUFERVIgKCZBY3BpSGRySW5mbyksDQo+ID4+ICsgIHtMIk51bWJlciBv ZiBJT1JUIE5vZGVzIiwgNCwgMzYsIEwiJWQiLCBOVUxMLA0KPiA+PiArICAgKFZPSUQqKikmSW9y dE5vZGVDb3VudCwgTlVMTCwgTlVMTH0sDQo+ID4+ICsgIHtMIk9mZnNldCB0byBBcnJheSBvZiBJ T1JUIE5vZGVzIiwgNCwgNDAsIEwiMHgleCIsIE5VTEwsDQo+ID4+ICsgICAoVk9JRCoqKSZJb3J0 Tm9kZU9mZnNldCwgTlVMTCwgTlVMTH0sDQo+ID4+ICsgIHtMIlJlc2VydmVkIiwgNCwgNDQsIEwi MHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9DQo+ID4+ICt9Ow0KPiA+PiArDQo+ID4+ICsv KiogQW4gQUNQSV9QQVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0aGUgSU9SVCBub2RlIGhlYWRlciBz dHJ1Y3R1cmUuDQo+ID4+ICsqLw0KPiA+PiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VSIElvcnRO b2RlSGVhZGVyUGFyc2VyW10gPSB7DQo+ID4+ICsgIFBBUlNFX0lPUlRfTk9ERV9IRUFERVIgKE5V TEwsIE5VTEwpDQo+ID4+ICt9Ow0KPiA+PiArDQo+ID4+ICsvKiogQW4gQUNQSV9QQVJTRVIgYXJy YXkgZGVzY3JpYmluZyB0aGUgSU9SVCBTTU1VdjEvMiBub2RlLg0KPiA+PiArKi8NCj4gPj4gK1NU QVRJQyBDT05TVCBBQ1BJX1BBUlNFUiBJb3J0Tm9kZVNtbXVWMVYyUGFyc2VyW10gPSB7DQo+ID4+ ICsgIFBBUlNFX0lPUlRfTk9ERV9IRUFERVIgKE5VTEwsIE5VTEwpLA0KPiA+PiArICB7TCJCYXNl IEFkZHJlc3MiLCA4LCAxNiwgTCIweCVseCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ PiArICB7TCJTcGFuIiwgOCwgMjQsIEwiMHglbHgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwN Cj4gPj4gKyAge0wiTW9kZWwiLCA0LCAzMiwgTCIlZCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9 LA0KPiA+PiArICB7TCJGbGFncyIsIDQsIDM2LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBO VUxMfSwNCj4gPj4gKyAge0wiUmVmZXJlbmNlIHRvIEdsb2JhbCBJbnRlcnJ1cHQgQXJyYXkiLCA0 LCA0MCwgTCIweCV4IiwgTlVMTCwgTlVMTCwNCj4gTlVMTCwNCj4gPj4gKyAgIE5VTEx9LA0KPiA+ PiArICB7TCJOdW1iZXIgb2YgY29udGV4dCBpbnRlcnJ1cHRzIiwgNCwgNDQsIEwiJWQiLCBOVUxM LA0KPiA+PiArICAgKFZPSUQqKikmSW50ZXJydXB0Q29udGV4dENvdW50LCBOVUxMLCBOVUxMfSwN Cj4gPj4gKyAge0wiUmVmZXJlbmNlIHRvIENvbnRleHQgSW50ZXJydXB0IEFycmF5IiwgNCwgNDgs IEwiMHgleCIsIE5VTEwsDQo+ID4+ICsgICAoVk9JRCoqKSZJbnRlcnJ1cHRDb250ZXh0T2Zmc2V0 LCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiTnVtYmVyIG9mIFBNVSBJbnRlcnJ1cHRzIiwgNCwg NTIsIEwiJWQiLCBOVUxMLA0KPiA+PiArICAgKFZPSUQqKikmUG11SW50ZXJydXB0Q291bnQsIE5V TEwsIE5VTEx9LA0KPiA+PiArICB7TCJSZWZlcmVuY2UgdG8gUE1VIEludGVycnVwdCBBcnJheSIs IDQsIDU2LCBMIjB4JXgiLCBOVUxMLA0KPiA+PiArICAgKFZPSUQqKikmUG11SW50ZXJydXB0T2Zm c2V0LCBOVUxMLCBOVUxMfSwNCj4gPj4gKw0KPiA+PiArICAvLyBJbnRlcnJ1cHQgQXJyYXkNCj4g Pj4gKyAge0wiU01NVV9OU2dJcnB0IiwgNCwgNjAsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEws IE5VTEx9LA0KPiA+PiArICB7TCJTTU1VX05TZ0lycHQgaW50ZXJydXB0IGZsYWdzIiwgNCwgNjQs IEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsDQo+IE5VTEx9LA0KPiA+PiArICB7TCJTTU1VX05T Z0NmZ0lycHQiLCA0LCA2OCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4+ ICsgIHtMIlNNTVVfTlNnQ2ZnSXJwdCBpbnRlcnJ1cHQgZmxhZ3MiLCA0LCA3MiwgTCIweCV4Iiwg TlVMTCwgTlVMTCwgTlVMTCwNCj4gTlVMTH0NCj4gPj4gK307DQo+ID4+ICsNCj4gPj4gKy8qKiBB biBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBTTU1VdjEvMiBOb2RlIEludGVycnVw dCBBcnJheS4NCj4gPj4gKyovDQo+ID4+ICtTVEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgSW50ZXJy dXB0QXJyYXlQYXJzZXJbXSA9IHsNCj4gPj4gKyAge0wiICBJbnRlcnJ1cHQgR1NJViIsIDQsIDAs IEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+PiArICB7TCIgIEZsYWdzIiwg NCwgNCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0NCj4gPj4gK307DQo+ID4+ICsN Cj4gPj4gKy8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBJT1JUIElEIE1h cHBpbmcuDQo+ID4+ICsqLw0KPiA+PiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VSIElvcnROb2Rl SWRNYXBwaW5nUGFyc2VyW10gPSB7DQo+ID4+ICsgIHtMIiAgSW5wdXQgYmFzZSIsIDQsIDAsIEwi MHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+PiArICB7TCIgIE51bWJlciBvZiBJ RHMiLCA0LCA0LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wi ICBPdXRwdXQgYmFzZSIsIDQsIDgsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0K PiA+PiArICB7TCIgIE91dHB1dCByZWZlcmVuY2UiLCA0LCAxMiwgTCIweCV4IiwgTlVMTCwgTlVM TCwgTlVMTCwgTlVMTH0sDQo+ID4+ICsgIHtMIiAgRmxhZ3MiLCA0LCAxNiwgTCIweCV4IiwgTlVM TCwgTlVMTCwgTlVMTCwgTlVMTH0NCj4gPj4gK307DQo+ID4+ICsNCj4gPj4gKy8qKiBBbiBBQ1BJ X1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBJT1JUIFNNTVV2MyBub2RlLg0KPiA+PiArKi8N Cj4gPj4gK1NUQVRJQyBDT05TVCBBQ1BJX1BBUlNFUiBJb3J0Tm9kZVNtbXVWM1BhcnNlcltdID0g ew0KPiA+PiArICBQQVJTRV9JT1JUX05PREVfSEVBREVSIChOVUxMLCBOVUxMKSwNCj4gPj4gKyAg e0wiQmFzZSBBZGRyZXNzIiwgOCwgMTYsIEwiMHglbHgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxM fSwNCj4gPj4gKyAge0wiRmxhZ3MiLCA0LCAyNCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwg TlVMTH0sDQo+ID4+ICsgIHtMIlJlc2VydmVkIiwgNCwgMjgsIEwiMHgleCIsIE5VTEwsIE5VTEws IE5VTEwsIE5VTEx9LA0KPiA+PiArICB7TCJWQVRPUyBBZGRyZXNzIiwgOCwgMzIsIEwiMHglbHgi LCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiTW9kZWwiLCA0LCA0MCwgTCIl ZCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+PiArICB7TCJFdmVudCIsIDQsIDQ0LCBM IjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiUFJJIiwgNCwgNDgs IEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+PiArICB7TCJHRVJSIiwgNCwg NTIsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+PiArICB7TCJTeW5jIiwg NCwgNTYsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9DQo+ID4+ICt9Ow0KPiA+PiAr DQo+ID4+ICsvKiogQW4gQUNQSV9QQVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0aGUgSU9SVCBJVFMg bm9kZS4NCj4gPj4gKyovDQo+ID4+ICtTVEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgSW9ydE5vZGVJ dHNQYXJzZXJbXSA9IHsNCj4gPj4gKyAgUEFSU0VfSU9SVF9OT0RFX0hFQURFUiAoDQo+ID4+ICsg ICAgVmFsaWRhdGVJdHNJZE1hcHBpbmdDb3VudCwNCj4gPj4gKyAgICBWYWxpZGF0ZUl0c0lkQXJy YXlSZWZlcmVuY2UNCj4gPj4gKyAgICApLA0KPiA+PiArICB7TCIgIE51bWJlciBvZiBJVFNzIiwg NCwgMTYsIEwiJWQiLCBOVUxMLCAoVk9JRCoqKSZJdHNDb3VudCwgTlVMTH0NCj4gPj4gK307DQo+ ID4+ICsNCj4gPj4gKy8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBJVFMg SUQuDQo+ID4+ICsqLw0KPiA+PiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VSIEl0c0lkUGFyc2Vy W10gPSB7DQo+ID4+ICsgIHsgTCIgIEdJQyBJVFMgSWRlbnRpZmllciIsIDQsIDAsIEwiJWQiLCBO VUxMLCBOVUxMLCBOVUxMIH0NCj4gPj4gK307DQo+ID4+ICsNCj4gPj4gKy8qKiBBbiBBQ1BJX1BB UlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBJT1JUIE5hbWVzIENvbXBvbmVudCBub2RlLg0KPiA+ PiArKi8NCj4gPj4gK1NUQVRJQyBDT05TVCBBQ1BJX1BBUlNFUiBJb3J0Tm9kZU5hbWVkQ29tcG9u ZW50UGFyc2VyW10gPSB7DQo+ID4+ICsgIFBBUlNFX0lPUlRfTk9ERV9IRUFERVIgKE5VTEwsIE5V TEwpLA0KPiA+PiArICB7TCJOb2RlIEZsYWdzIiwgNCwgMTYsIEwiJWQiLCBOVUxMLCBOVUxMLCBO VUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiTWVtb3J5IGFjY2VzcyBwcm9wZXJ0aWVzIiwgOCwgMjAs IEwiMHglbHgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiRGV2aWNlIG1l bW9yeSBhZGRyZXNzIHNpemUgbGltaXQiLCAxLCAyOCwgTCIlZCIsIE5VTEwsIE5VTEwsIE5VTEws DQo+IE5VTEx9DQo+ID4+ICt9Ow0KPiA+PiArDQo+ID4+ICsvKiogQW4gQUNQSV9QQVJTRVIgYXJy YXkgZGVzY3JpYmluZyB0aGUgSU9SVCBSb290IENvbXBsZXggbm9kZS4NCj4gPj4gKyovDQo+ID4+ ICtTVEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgSW9ydE5vZGVSb290Q29tcGxleFBhcnNlcltdID0g ew0KPiA+PiArICBQQVJTRV9JT1JUX05PREVfSEVBREVSIChOVUxMLCBOVUxMKSwNCj4gPj4gKyAg e0wiTWVtb3J5IGFjY2VzcyBwcm9wZXJ0aWVzIiwgOCwgMTYsIEwiMHglbHgiLCBOVUxMLCBOVUxM LCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiQVRTIEF0dHJpYnV0ZSIsIDQsIDI0LCBMIjB4JXgi LCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiUENJIFNlZ21lbnQgbnVtYmVy IiwgNCwgMjgsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9DQo+ID4+ICt9Ow0KPiA+ PiArDQo+ID4+ICsvKiogQW4gQUNQSV9QQVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0aGUgSU9SVCBQ TUNHIG5vZGUuDQo+ID4+ICsqLw0KPiA+PiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VSIElvcnRO b2RlUG1jZ1BhcnNlcltdID0gew0KPiA+PiArICBQQVJTRV9JT1JUX05PREVfSEVBREVSIChOVUxM LCBOVUxMKSwNCj4gPj4gKyAge0wiQmFzZSBBZGRyZXNzIiwgOCwgMTYsIEwiMHglbHgiLCBOVUxM LCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiT3ZlcmZsb3cgaW50ZXJydXB0IEdTSVYi LCA0LCAyNCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4+ICsgIHtMIk5v ZGUgcmVmZXJlbmNlIiwgNCwgMjgsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0K PiA+PiArfTsNCj4gPj4gKw0KPiA+PiArLyoqIFRoaXMgZnVuY3Rpb24gdmFsaWRhdGVzIHRoZSBJ RCBNYXBwaW5nIGFycmF5IGNvdW50IGZvciB0aGUgSVRTIG5vZGUuDQo+ID4+ICsNCj4gPj4gKyAg QHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgZmllbGQgZGF0 YS4NCj4gPj4gKyAgQHBhcmFtIFtpbl0gQ29udGV4dCBQb2ludGVyIHRvIGNvbnRleHQgc3BlY2lm aWMgaW5mb3JtYXRpb24gZS5nLiB0aGlzDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgY291 bGQgYmUgYSBwb2ludGVyIHRvIHRoZSBBQ1BJIHRhYmxlIGhlYWRlci4NCj4gPj4gKyovDQo+ID4+ ICtTVEFUSUMNCj4gPj4gK1ZPSUQNCj4gPj4gK0VGSUFQSQ0KPiA+PiArVmFsaWRhdGVJdHNJZE1h cHBpbmdDb3VudCAoDQo+ID4+ICsgIElOIFVJTlQ4KiBQdHIsDQo+ID4+ICsgIFZPSUQqICAgICBD b250ZXh0DQo+ID4+ICsgICkNCj4gPj4gK3sNCj4gPj4gKyAgaWYgKCooVUlOVDMyKilQdHIgIT0g MCkgew0KPiA+PiArICAgIEluY3JlbWVudEVycm9yQ291bnQgKCk7DQo+ID4+ICsgICAgUHJpbnQg KEwiXG5FUlJPUjogSU9SVCBJRCBNYXBwaW5nIGNvdW50IG11c3QgYmUgemVyby4iKTsNCj4gPj4g KyAgfQ0KPiA+PiArfQ0KPiA+PiArDQo+ID4+ICsvKiogVGhpcyBmdW5jdGlvbiB2YWxpZGF0ZXMg dGhlIElEIE1hcHBpbmcgYXJyYXkgb2Zmc2V0IGZvciB0aGUgSVRTIG5vZGUuDQo+ID4+ICsNCj4g Pj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgZmll bGQgZGF0YS4NCj4gPj4gKyAgQHBhcmFtIFtpbl0gQ29udGV4dCBQb2ludGVyIHRvIGNvbnRleHQg c3BlY2lmaWMgaW5mb3JtYXRpb24gZS5nLiB0aGlzDQo+ID4+ICsgICAgICAgICAgICAgICAgICAg ICAgY291bGQgYmUgYSBwb2ludGVyIHRvIHRoZSBBQ1BJIHRhYmxlIGhlYWRlci4NCj4gPj4gKyov DQo+ID4+ICtTVEFUSUMNCj4gPj4gK1ZPSUQNCj4gPj4gK0VGSUFQSQ0KPiA+PiArVmFsaWRhdGVJ dHNJZEFycmF5UmVmZXJlbmNlICgNCj4gPj4gKyAgSU4gVUlOVDgqIFB0ciwNCj4gPj4gKyAgSU4g Vk9JRCogIENvbnRleHQNCj4gPj4gKyAgKQ0KPiA+PiArew0KPiA+PiArICBpZiAoKihVSU5UMzIq KVB0ciAhPSAwKSB7DQo+ID4+ICsgICAgSW5jcmVtZW50RXJyb3JDb3VudCAoKTsNCj4gPj4gKyAg ICBQcmludCAoTCJcbkVSUk9SOiBJT1JUIElEIE1hcHBpbmcgb2Zmc2V0IG11c3QgYmUgemVyby4i KTsNCj4gPj4gKyAgfQ0KPiA+PiArfQ0KPiA+PiArDQo+ID4+ICsvKiogVGhpcyBmdW5jdGlvbiBw YXJzZXMgdGhlIElPUlQgTm9kZSBJZCBNYXBwaW5nIGFycmF5Lg0KPiA+PiArDQo+ID4+ICsgIEBw YXJhbSBbaW5dIFB0ciAgICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBJT1JU IFRhYmxlLg0KPiA+PiArICBAcGFyYW0gW2luXSBNYXBwaW5nQ291bnQgICBUaGUgSUQgTWFwcGlu ZyBjb3VudC4NCj4gPj4gKyAgQHBhcmFtIFtpbl0gTWFwcGluZ09mZnNldCAgVGhlIG9mZnNldCBv ZiB0aGUgSUQgTWFwcGluZyBhcnJheQ0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBmcm9tIHRoZSBzdGFydCBvZiB0aGUgSU9SVCB0YWJsZS4NCj4gPj4gKyovDQo+ID4+ICtTVEFU SUMNCj4gPj4gK1ZPSUQNCj4gPj4gK0R1bXBJb3J0Tm9kZUlkTWFwcGluZ3MgKA0KPiA+PiArICBJ TiBVSU5UOCogUHRyLA0KPiA+PiArICBJTiBVSU5UMzIgTWFwcGluZ0NvdW50LA0KPiA+PiArICBJ TiBVSU5UMzIgTWFwcGluZ09mZnNldA0KPiA+PiArICApDQo+ID4+ICt7DQo+ID4+ICsgIFVJTlQ4 KiBJZE1hcHBpbmdQdHI7DQo+ID4+ICsgIFVJTlQzMiBJbmRleDsNCj4gPj4gKyAgVUlOVDMyIE9m ZnNldDsNCj4gPj4gKyAgQ0hBUjggIEJ1ZmZlcls0MF07ICAvLyBVc2VkIGZvciBBc2NpaU5hbWUg cGFyYW0gb2YgUGFyc2VBY3BpDQo+ID4+ICsNCj4gPj4gKyAgSWRNYXBwaW5nUHRyID0gUHRyICsg TWFwcGluZ09mZnNldDsNCj4gPj4gKyAgSW5kZXggPSAwOw0KPiA+PiArICB3aGlsZSAoSW5kZXgg PCBNYXBwaW5nQ291bnQpIHsNCj4gPj4gKyAgICBBc2NpaVNQcmludCAoDQo+ID4+ICsgICAgICBC dWZmZXIsDQo+ID4+ICsgICAgICBzaXplb2YgKEJ1ZmZlciksDQo+ID4+ICsgICAgICAiSUQgTWFw cGluZyBbJWRdIiwNCj4gPj4gKyAgICAgIEluZGV4DQo+ID4+ICsgICAgICApOw0KPiA+PiArICAg IE9mZnNldCA9IFBhcnNlQWNwaSAoDQo+ID4+ICsgICAgICAgICAgICAgICBUUlVFLA0KPiA+PiAr ICAgICAgICAgICAgICAgNCwNCj4gPj4gKyAgICAgICAgICAgICAgIEJ1ZmZlciwNCj4gPj4gKyAg ICAgICAgICAgICAgIElkTWFwcGluZ1B0ciwNCj4gPj4gKyAgICAgICAgICAgICAgIDIwLA0KPiA+ PiArICAgICAgICAgICAgICAgUEFSU0VSX1BBUkFNUyAoSW9ydE5vZGVJZE1hcHBpbmdQYXJzZXIp DQo+ID4+ICsgICAgICAgICAgICAgICApOw0KPiA+PiArICAgIElkTWFwcGluZ1B0ciArPSBPZmZz ZXQ7DQo+ID4+ICsgICAgSW5kZXgrKzsNCj4gPj4gKyAgfQ0KPiA+PiArfQ0KPiA+PiArDQo+ID4+ ICsvKiogVGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIElPUlQgU01NVXYxLzIgbm9kZS4NCj4gPj4g Kw0KPiA+PiArICBAcGFyYW0gW2luXSBQdHIgICAgICAgICAgICBQb2ludGVyIHRvIHRoZSBzdGFy dCBvZiB0aGUgYnVmZmVyLg0KPiA+PiArICBAcGFyYW0gW2luXSBMZW5ndGggICAgICAgICBMZW5n dGggb2YgdGhlIGJ1ZmZlci4NCj4gPj4gKyAgQHBhcmFtIFtpbl0gTWFwcGluZ0NvdW50ICAgVGhl IElEIE1hcHBpbmcgY291bnQuDQo+ID4+ICsgIEBwYXJhbSBbaW5dIE1hcHBpbmdPZmZzZXQgIFRo ZSBvZmZzZXQgb2YgdGhlIElEIE1hcHBpbmcgYXJyYXkNCj4gPj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIElPUlQgdGFibGUuDQo+ID4+ICsqLw0K PiA+PiArU1RBVElDDQo+ID4+ICtWT0lEDQo+ID4+ICtEdW1wSW9ydE5vZGVTbW11VjFWMiAoDQo+ ID4+ICsgIElOIFVJTlQ4KiBQdHIsDQo+ID4+ICsgIElOIFVJTlQxNiBMZW5ndGgsDQo+ID4+ICsg IElOIFVJTlQzMiBNYXBwaW5nQ291bnQsDQo+ID4+ICsgIElOIFVJTlQzMiBNYXBwaW5nT2Zmc2V0 DQo+ID4+ICsgICkNCj4gPj4gK3sNCj4gPj4gKyAgVUlOVDMyIEluZGV4Ow0KPiA+PiArICBVSU5U MzIgT2Zmc2V0Ow0KPiA+PiArICBDSEFSOCAgQnVmZmVyWzUwXTsgIC8vIFVzZWQgZm9yIEFzY2lp TmFtZSBwYXJhbSBvZiBQYXJzZUFjcGkNCj4gPj4gKw0KPiA+PiArICBVSU5UOCogQXJyYXlQdHI7 DQo+ID4+ICsNCj4gPj4gKyAgUGFyc2VBY3BpICgNCj4gPj4gKyAgICBUUlVFLA0KPiA+PiArICAg IDIsDQo+ID4+ICsgICAgIlNNTVV2MSBvciBTTU1VdjIgTm9kZSIsDQo+ID4+ICsgICAgUHRyLA0K PiA+PiArICAgIExlbmd0aCwNCj4gPj4gKyAgICBQQVJTRVJfUEFSQU1TIChJb3J0Tm9kZVNtbXVW MVYyUGFyc2VyKQ0KPiA+PiArICAgICk7DQo+ID4+ICsNCj4gPj4gKyAgQXJyYXlQdHIgPSBQdHIg KyAqSW50ZXJydXB0Q29udGV4dE9mZnNldDsNCj4gPj4gKyAgSW5kZXggPSAwOw0KPiA+PiArICB3 aGlsZSAoSW5kZXggPCAqSW50ZXJydXB0Q29udGV4dENvdW50KSB7DQo+ID4+ICsgICAgQXNjaWlT UHJpbnQgKA0KPiA+PiArICAgICAgQnVmZmVyLA0KPiA+PiArICAgICAgc2l6ZW9mIChCdWZmZXIp LA0KPiA+PiArICAgICAgIkNvbnRleHQgSW50ZXJydXB0cyBBcnJheSBbJWRdIiwNCj4gPj4gKyAg ICAgIEluZGV4DQo+ID4+ICsgICAgICApOw0KPiA+PiArICAgIE9mZnNldCA9IFBhcnNlQWNwaSAo DQo+ID4+ICsgICAgICAgICAgICAgICBUUlVFLA0KPiA+PiArICAgICAgICAgICAgICAgNCwNCj4g Pj4gKyAgICAgICAgICAgICAgIEJ1ZmZlciwNCj4gPj4gKyAgICAgICAgICAgICAgIEFycmF5UHRy LA0KPiA+PiArICAgICAgICAgICAgICAgOCwNCj4gPj4gKyAgICAgICAgICAgICAgIFBBUlNFUl9Q QVJBTVMgKEludGVycnVwdEFycmF5UGFyc2VyKQ0KPiA+PiArICAgICAgICAgICAgICAgKTsNCj4g Pj4gKyAgICBBcnJheVB0ciArPSBPZmZzZXQ7DQo+ID4+ICsgICAgSW5kZXgrKzsNCj4gPj4gKyAg fQ0KPiA+PiArDQo+ID4+ICsgIEFycmF5UHRyID0gUHRyICsgKlBtdUludGVycnVwdE9mZnNldDsN Cj4gPj4gKyAgSW5kZXggPSAwOw0KPiA+PiArICB3aGlsZSAoSW5kZXggPCAqUG11SW50ZXJydXB0 Q291bnQpIHsNCj4gPj4gKyAgICBBc2NpaVNQcmludCAoDQo+ID4+ICsgICAgICBCdWZmZXIsDQo+ ID4+ICsgICAgICBzaXplb2YgKEJ1ZmZlciksDQo+ID4+ICsgICAgICAiUE1VIEludGVycnVwdHMg QXJyYXkgWyVkXSIsDQo+ID4+ICsgICAgICBJbmRleA0KPiA+PiArICAgICAgKTsNCj4gPj4gKyAg ICBPZmZzZXQgPSBQYXJzZUFjcGkgKA0KPiA+PiArICAgICAgICAgICAgICAgVFJVRSwNCj4gPj4g KyAgICAgICAgICAgICAgIDQsDQo+ID4+ICsgICAgICAgICAgICAgICBCdWZmZXIsDQo+ID4+ICsg ICAgICAgICAgICAgICBBcnJheVB0ciwNCj4gPj4gKyAgICAgICAgICAgICAgIDgsDQo+ID4+ICsg ICAgICAgICAgICAgICBQQVJTRVJfUEFSQU1TIChJbnRlcnJ1cHRBcnJheVBhcnNlcikNCj4gPj4g KyAgICAgICAgICAgICAgICk7DQo+ID4+ICsgICAgQXJyYXlQdHIgKz0gT2Zmc2V0Ow0KPiA+PiAr ICAgIEluZGV4Kys7DQo+ID4+ICsgIH0NCj4gPj4gKw0KPiA+PiArICBpZiAoKklvcnRJZE1hcHBp bmdDb3VudCAhPSAwKSB7DQo+ID4+ICsgICAgRHVtcElvcnROb2RlSWRNYXBwaW5ncyAoUHRyLCBN YXBwaW5nQ291bnQsIE1hcHBpbmdPZmZzZXQpOw0KPiA+PiArICB9DQo+ID4+ICt9DQo+ID4+ICsN Cj4gPj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgSU9SVCBTTU1VdjMgbm9kZS4NCj4g Pj4gKw0KPiA+PiArICBAcGFyYW0gW2luXSBQdHIgICAgICAgICAgICBQb2ludGVyIHRvIHRoZSBz dGFydCBvZiB0aGUgYnVmZmVyLg0KPiA+PiArICBAcGFyYW0gW2luXSBMZW5ndGggICAgICAgICBM ZW5ndGggb2YgdGhlIGJ1ZmZlci4NCj4gPj4gKyAgQHBhcmFtIFtpbl0gTWFwcGluZ0NvdW50ICAg VGhlIElEIE1hcHBpbmcgY291bnQuDQo+ID4+ICsgIEBwYXJhbSBbaW5dIE1hcHBpbmdPZmZzZXQg IFRoZSBvZmZzZXQgb2YgdGhlIElEIE1hcHBpbmcgYXJyYXkNCj4gPj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIElPUlQgdGFibGUuDQo+ID4+ICsq Lw0KPiA+PiArU1RBVElDDQo+ID4+ICtWT0lEDQo+ID4+ICtEdW1wSW9ydE5vZGVTbW11VjMgKA0K PiA+PiArICBJTiBVSU5UOCogUHRyLA0KPiA+PiArICBJTiBVSU5UMTYgTGVuZ3RoLA0KPiA+PiAr ICBJTiBVSU5UMzIgTWFwcGluZ0NvdW50LA0KPiA+PiArICBJTiBVSU5UMzIgTWFwcGluZ09mZnNl dA0KPiA+PiArICApDQo+ID4+ICt7DQo+ID4+ICsgIFBhcnNlQWNwaSAoDQo+ID4+ICsgICAgVFJV RSwNCj4gPj4gKyAgICAyLA0KPiA+PiArICAgICJTTU1VVjMgTm9kZSIsDQo+ID4+ICsgICAgUHRy LA0KPiA+PiArICAgIExlbmd0aCwNCj4gPj4gKyAgICBQQVJTRVJfUEFSQU1TIChJb3J0Tm9kZVNt bXVWM1BhcnNlcikNCj4gPj4gKyAgICApOw0KPiA+PiArDQo+ID4+ICsgIGlmICgqSW9ydElkTWFw cGluZ0NvdW50ICE9IDApIHsNCj4gPj4gKyAgICBEdW1wSW9ydE5vZGVJZE1hcHBpbmdzIChQdHIs IE1hcHBpbmdDb3VudCwgTWFwcGluZ09mZnNldCk7DQo+ID4+ICsgIH0NCj4gPj4gK30NCj4gPj4g Kw0KPiA+PiArLyoqIFRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBJT1JUIElUUyBub2RlLg0KPiA+ PiArDQo+ID4+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIHN0 YXJ0IG9mIHRoZSBidWZmZXIuDQo+ID4+ICsgIEBwYXJhbSBbaW5dIExlbmd0aCAgICAgICAgIExl bmd0aCBvZiB0aGUgYnVmZmVyLg0KPiA+PiArKi8NCj4gPj4gK1NUQVRJQw0KPiA+PiArVk9JRA0K PiA+PiArRHVtcElvcnROb2RlSXRzICgNCj4gPj4gKyAgSU4gVUlOVDgqIFB0ciwNCj4gPj4gKyAg SU4gVUlOVDE2IExlbmd0aA0KPiA+PiArICApDQo+ID4+ICt7DQo+ID4+ICsgIFVJTlQzMiBPZmZz ZXQ7DQo+ID4+ICsgIFVJTlQzMiBJbmRleDsNCj4gPj4gKyAgVUlOVDgqIEl0c0lkUHRyOw0KPiA+ PiArICBDSEFSOCAgQnVmZmVyWzgwXTsgIC8vIFVzZWQgZm9yIEFzY2lpTmFtZSBwYXJhbSBvZiBQ YXJzZUFjcGkNCj4gPj4gKw0KPiA+PiArICBPZmZzZXQgPSBQYXJzZUFjcGkgKA0KPiA+PiArICAg ICAgICAgICAgIFRSVUUsDQo+ID4+ICsgICAgICAgICAgICAgMiwNCj4gPj4gKyAgICAgICAgICAg ICAiSVRTIE5vZGUiLA0KPiA+PiArICAgICAgICAgICAgIFB0ciwNCj4gPj4gKyAgICAgICAgICAg ICBMZW5ndGgsDQo+ID4+ICsgICAgICAgICAgICAgUEFSU0VSX1BBUkFNUyAoSW9ydE5vZGVJdHNQ YXJzZXIpDQo+ID4+ICsgICAgICAgICAgICAgKTsNCj4gPj4gKw0KPiA+PiArICBJdHNJZFB0ciA9 IFB0ciArIE9mZnNldDsNCj4gPj4gKyAgSW5kZXggPSAwOw0KPiA+PiArICB3aGlsZSAoSW5kZXgg PCAqSXRzQ291bnQpIHsNCj4gPj4gKyAgICBBc2NpaVNQcmludCAoDQo+ID4+ICsgICAgICBCdWZm ZXIsDQo+ID4+ICsgICAgICBzaXplb2YgKEJ1ZmZlciksDQo+ID4+ICsgICAgICAiR0lDIElUUyBJ ZGVudGlmaWVyIEFycmF5IFslZF0iLA0KPiA+PiArICAgICAgSW5kZXgNCj4gPj4gKyAgICAgICk7 DQo+ID4+ICsgICAgT2Zmc2V0ID0gUGFyc2VBY3BpICgNCj4gPj4gKyAgICAgICAgICAgICAgIFRS VUUsDQo+ID4+ICsgICAgICAgICAgICAgICA0LA0KPiA+PiArICAgICAgICAgICAgICAgQnVmZmVy LA0KPiA+PiArICAgICAgICAgICAgICAgSXRzSWRQdHIsDQo+ID4+ICsgICAgICAgICAgICAgICA0 LA0KPiA+PiArICAgICAgICAgICAgICAgUEFSU0VSX1BBUkFNUyAoSXRzSWRQYXJzZXIpDQo+ID4+ ICsgICAgICAgICAgICAgICApOw0KPiA+PiArICAgIEl0c0lkUHRyICs9IE9mZnNldDsNCj4gPj4g KyAgICBJbmRleCsrOw0KPiA+PiArICB9DQo+ID4+ICsNCj4gPj4gKyAgLy8gTm90ZTogSVRTIGRv ZXMgbm90IGhhdmUgdGhlIElEIE1hcHBpbmdzIEFycmF5DQo+ID4+ICt9DQo+ID4+ICsNCj4gPj4g Ky8qKiBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgSU9SVCBOYW1lZCBDb21wb25lbnQgbm9kZS4N Cj4gPj4gKw0KPiA+PiArICBAcGFyYW0gW2luXSBQdHIgICAgICAgICAgICBQb2ludGVyIHRvIHRo ZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiA+PiArICBAcGFyYW0gW2luXSBMZW5ndGggICAgICAg ICBMZW5ndGggb2YgdGhlIGJ1ZmZlci4NCj4gPj4gKyAgQHBhcmFtIFtpbl0gTWFwcGluZ0NvdW50 ICAgVGhlIElEIE1hcHBpbmcgY291bnQuDQo+ID4+ICsgIEBwYXJhbSBbaW5dIE1hcHBpbmdPZmZz ZXQgIFRoZSBvZmZzZXQgb2YgdGhlIElEIE1hcHBpbmcgYXJyYXkNCj4gPj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIElPUlQgdGFibGUuDQo+ID4+ ICsqLw0KPiA+PiArU1RBVElDDQo+ID4+ICtWT0lEDQo+ID4+ICtEdW1wSW9ydE5vZGVOYW1lZENv bXBvbmVudCAoDQo+ID4+ICsgIElOIFVJTlQ4KiBQdHIsDQo+ID4+ICsgIElOIFVJTlQxNiBMZW5n dGgsDQo+ID4+ICsgIElOIFVJTlQzMiBNYXBwaW5nQ291bnQsDQo+ID4+ICsgIElOIFVJTlQzMiBN YXBwaW5nT2Zmc2V0DQo+ID4+ICsgICkNCj4gPj4gK3sNCj4gPj4gKyAgVUlOVDMyIE9mZnNldDsN Cj4gPj4gKyAgVUlOVDMyIEluZGV4Ow0KPiA+PiArICBVSU5UOCogRGV2aWNlTmFtZVB0cjsNCj4g Pj4gKyAgVUlOVDMyIERldmljZU5hbWVMZW5ndGg7DQo+ID4+ICsNCj4gPj4gKyAgT2Zmc2V0ID0g UGFyc2VBY3BpICgNCj4gPj4gKyAgICAgICAgICAgICBUUlVFLA0KPiA+PiArICAgICAgICAgICAg IDIsDQo+ID4+ICsgICAgICAgICAgICAgIk5hbWVkIENvbXBvbmVudCBOb2RlIiwNCj4gPj4gKyAg ICAgICAgICAgICBQdHIsDQo+ID4+ICsgICAgICAgICAgICAgTGVuZ3RoLA0KPiA+PiArICAgICAg ICAgICAgIFBBUlNFUl9QQVJBTVMgKElvcnROb2RlTmFtZWRDb21wb25lbnRQYXJzZXIpDQo+ID4+ ICsgICAgICAgICAgICAgKTsNCj4gPj4gKw0KPiA+PiArICBEZXZpY2VOYW1lUHRyID0gUHRyICsg T2Zmc2V0Ow0KPiA+PiArICAvLyBFc3RpbWF0ZSB0aGUgRGV2aWNlIE5hbWUgbGVuZ3RoDQo+ID4+ ICsgIERldmljZU5hbWVMZW5ndGggPSBMZW5ndGggLSBPZmZzZXQgLSAoTWFwcGluZ0NvdW50ICog MjApOw0KPiA+PiArICBQcmludEZpZWxkTmFtZSAoMiwgTCJEZXZpY2UgT2JqZWN0IE5hbWUiKTsN Cj4gPj4gKyAgSW5kZXggPSAwOw0KPiA+PiArICB3aGlsZSAoKEluZGV4IDwgRGV2aWNlTmFtZUxl bmd0aCkgJiYgKERldmljZU5hbWVQdHJbSW5kZXhdICE9IDApKSB7DQo+ID4+ICsgICAgUHJpbnQg KEwiJWMiLCBEZXZpY2VOYW1lUHRyW0luZGV4KytdKTsNCj4gPj4gKyAgfQ0KPiA+PiArICBQcmlu dCAoTCJcbiIpOw0KPiA+PiArDQo+ID4+ICsgIGlmICgqSW9ydElkTWFwcGluZ0NvdW50ICE9IDAp IHsNCj4gPj4gKyAgICBEdW1wSW9ydE5vZGVJZE1hcHBpbmdzIChQdHIsIE1hcHBpbmdDb3VudCwg TWFwcGluZ09mZnNldCk7DQo+ID4+ICsgIH0NCj4gPj4gK30NCj4gPj4gKw0KPiA+PiArLyoqIFRo aXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBJT1JUIFJvb3QgQ29tcGxleCBub2RlLg0KPiA+PiArDQo+ ID4+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9m IHRoZSBidWZmZXIuDQo+ID4+ICsgIEBwYXJhbSBbaW5dIExlbmd0aCAgICAgICAgIExlbmd0aCBv ZiB0aGUgYnVmZmVyLg0KPiA+PiArICBAcGFyYW0gW2luXSBNYXBwaW5nQ291bnQgICBUaGUgSUQg TWFwcGluZyBjb3VudC4NCj4gPj4gKyAgQHBhcmFtIFtpbl0gTWFwcGluZ09mZnNldCAgVGhlIG9m ZnNldCBvZiB0aGUgSUQgTWFwcGluZyBhcnJheQ0KPiA+PiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBmcm9tIHRoZSBzdGFydCBvZiB0aGUgSU9SVCB0YWJsZS4NCj4gPj4gKyovDQo+ID4+ ICtTVEFUSUMNCj4gPj4gK1ZPSUQNCj4gPj4gK0R1bXBJb3J0Tm9kZVJvb3RDb21wbGV4ICgNCj4g Pj4gKyAgSU4gVUlOVDgqIFB0ciwNCj4gPj4gKyAgSU4gVUlOVDE2IExlbmd0aCwNCj4gPj4gKyAg SU4gVUlOVDMyIE1hcHBpbmdDb3VudCwNCj4gPj4gKyAgSU4gVUlOVDMyIE1hcHBpbmdPZmZzZXQN Cj4gPj4gKyAgKQ0KPiA+PiArew0KPiA+PiArICBQYXJzZUFjcGkgKA0KPiA+PiArICAgIFRSVUUs DQo+ID4+ICsgICAgMiwNCj4gPj4gKyAgICAiUm9vdCBDb21wbGV4IE5vZGUiLA0KPiA+PiArICAg IFB0ciwNCj4gPj4gKyAgICBMZW5ndGgsDQo+ID4+ICsgICAgUEFSU0VSX1BBUkFNUyAoSW9ydE5v ZGVSb290Q29tcGxleFBhcnNlcikNCj4gPj4gKyAgICApOw0KPiA+PiArDQo+ID4+ICsgIGlmICgq SW9ydElkTWFwcGluZ0NvdW50ICE9IDApIHsNCj4gPj4gKyAgICBEdW1wSW9ydE5vZGVJZE1hcHBp bmdzIChQdHIsIE1hcHBpbmdDb3VudCwgTWFwcGluZ09mZnNldCk7DQo+ID4+ICsgIH0NCj4gPj4g K30NCj4gPj4gKw0KPiA+PiArLyoqIFRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBJT1JUIFBNQ0cg bm9kZS4NCj4gPj4gKw0KPiA+PiArICBAcGFyYW0gW2luXSBQdHIgICAgICAgICAgICBQb2ludGVy IHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiA+PiArICBAcGFyYW0gW2luXSBMZW5ndGgg ICAgICAgICBMZW5ndGggb2YgdGhlIGJ1ZmZlci4NCj4gPj4gKyAgQHBhcmFtIFtpbl0gTWFwcGlu Z0NvdW50ICAgVGhlIElEIE1hcHBpbmcgY291bnQuDQo+ID4+ICsgIEBwYXJhbSBbaW5dIE1hcHBp bmdPZmZzZXQgIFRoZSBvZmZzZXQgb2YgdGhlIElEIE1hcHBpbmcgYXJyYXkNCj4gPj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIElPUlQgdGFibGUu DQo+ID4+ICsqLw0KPiA+PiArU1RBVElDDQo+ID4+ICtWT0lEDQo+ID4+ICtEdW1wSW9ydE5vZGVQ bWNnICgNCj4gPj4gKyAgSU4gVUlOVDgqIFB0ciwNCj4gPj4gKyAgSU4gVUlOVDE2IExlbmd0aCwN Cj4gPj4gKyAgSU4gVUlOVDMyIE1hcHBpbmdDb3VudCwNCj4gPj4gKyAgSU4gVUlOVDMyIE1hcHBp bmdPZmZzZXQNCj4gPj4gKykNCj4gPj4gK3sNCj4gPj4gKyAgUGFyc2VBY3BpICgNCj4gPj4gKyAg ICBUUlVFLA0KPiA+PiArICAgIDIsDQo+ID4+ICsgICAgIlBNQ0cgTm9kZSIsDQo+ID4+ICsgICAg UHRyLA0KPiA+PiArICAgIExlbmd0aCwNCj4gPj4gKyAgICBQQVJTRVJfUEFSQU1TIChJb3J0Tm9k ZVBtY2dQYXJzZXIpDQo+ID4+ICsgICk7DQo+ID4+ICsNCj4gPj4gKyAgaWYgKCpJb3J0SWRNYXBw aW5nQ291bnQgIT0gMCkgew0KPiA+PiArICAgIER1bXBJb3J0Tm9kZUlkTWFwcGluZ3MgKFB0ciwg TWFwcGluZ0NvdW50LCBNYXBwaW5nT2Zmc2V0KTsNCj4gPj4gKyAgfQ0KPiA+PiArDQo+ID4+ICsg IGlmICgqSW9ydElkTWFwcGluZ0NvdW50ID4gMSkgew0KPiA+PiArICAgIEluY3JlbWVudEVycm9y Q291bnQgKCk7DQo+ID4+ICsgICAgUHJpbnQgKA0KPiA+PiArICAgICAgTCJFUlJPUjogSUQgbWFw cGluZyBtdXN0IG5vdCBiZSBncmVhdGVyIHRoYW4gMS4gSWQgTWFwcGluZyBDb3VudA0KPiA9JWRc biIsDQo+ID4+ICsgICAgICAqSW9ydElkTWFwcGluZ0NvdW50DQo+ID4+ICsgICAgICApOw0KPiA+ PiArICB9DQo+ID4+ICt9DQo+ID4+ICsNCj4gPj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0 aGUgQUNQSSBJT1JUIHRhYmxlLg0KPiA+PiArICBXaGVuIHRyYWNlIGlzIGVuYWJsZWQgdGhpcyBm dW5jdGlvbiBwYXJzZXMgdGhlIElPUlQgdGFibGUgYW5kDQo+ID4+ICsgIHRyYWNlcyB0aGUgQUNQ SSBmaWVsZHMuDQo+ID4+ICsNCj4gPj4gKyAgVGhpcyBmdW5jdGlvbiBhbHNvIHBhcnNlcyB0aGUg Zm9sbG93aW5nIG5vZGVzOg0KPiA+PiArICAgIC0gSVRTIEdyb3VwDQo+ID4+ICsgICAgLSBOYW1l ZCBDb21wb25lbnQNCj4gPj4gKyAgICAtIFJvb3QgQ29tcGxleA0KPiA+PiArICAgIC0gU01NVXYx LzINCj4gPj4gKyAgICAtIFNNTVV2Mw0KPiA+PiArICAgIC0gUE1DRw0KPiA+PiArDQo+ID4+ICsg IFRoaXMgZnVuY3Rpb24gYWxzbyBwZXJmb3JtcyB2YWxpZGF0aW9uIG9mIHRoZSBBQ1BJIHRhYmxl IGZpZWxkcy4NCj4gPj4gKw0KPiA+PiArICBAcGFyYW0gW2luXSBUcmFjZSAgICAgICAgICAgICAg SWYgVFJVRSwgdHJhY2UgdGhlIEFDUEkgZmllbGRzLg0KPiA+PiArICBAcGFyYW0gW2luXSBQdHIg ICAgICAgICAgICAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gPj4g KyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxlTGVuZ3RoICAgIExlbmd0aCBvZiB0aGUgQUNQSSB0YWJs ZS4NCj4gPj4gKyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxlUmV2aXNpb24gIFJldmlzaW9uIG9mIHRo ZSBBQ1BJIHRhYmxlLg0KPiA+PiArKi8NCj4gPj4gK1ZPSUQNCj4gPj4gK0VGSUFQSQ0KPiA+PiAr UGFyc2VBY3BpSW9ydCAoDQo+ID4+ICsgIElOIEJPT0xFQU4gVHJhY2UsDQo+ID4+ICsgIElOIFVJ TlQ4KiAgUHRyLA0KPiA+PiArICBJTiBVSU5UMzIgIEFjcGlUYWJsZUxlbmd0aCwNCj4gPj4gKyAg SU4gVUlOVDggICBBY3BpVGFibGVSZXZpc2lvbg0KPiA+PiArICApDQo+ID4+ICt7DQo+ID4+ICsg IFVJTlQzMiBPZmZzZXQ7DQo+ID4+ICsgIFVJTlQzMiBJbmRleDsNCj4gPj4gKyAgVUlOVDgqIE5v ZGVQdHI7DQo+ID4+ICsNCj4gPj4gKyAgaWYgKCFUcmFjZSkgew0KPiA+PiArICAgIHJldHVybjsN Cj4gPj4gKyAgfQ0KPiA+PiArDQo+ID4+ICsgIFBhcnNlQWNwaSAoDQo+ID4+ICsgICAgVFJVRSwN Cj4gPj4gKyAgICAwLA0KPiA+PiArICAgICJJT1JUIiwNCj4gPj4gKyAgICBQdHIsDQo+ID4+ICsg ICAgQWNwaVRhYmxlTGVuZ3RoLA0KPiA+PiArICAgIFBBUlNFUl9QQVJBTVMgKElvcnRQYXJzZXIp DQo+ID4+ICsgICAgKTsNCj4gPj4gKyAgT2Zmc2V0ID0gKklvcnROb2RlT2Zmc2V0Ow0KPiA+PiAr ICBOb2RlUHRyID0gUHRyICsgT2Zmc2V0Ow0KPiA+PiArICBJbmRleCA9IDA7DQo+ID4+ICsNCj4g Pj4gKyAgd2hpbGUgKChJbmRleCA8ICpJb3J0Tm9kZUNvdW50KSAmJiAoT2Zmc2V0IDwgQWNwaVRh YmxlTGVuZ3RoKSkgew0KPiA+PiArICAgIC8vIFBhcnNlIHRoZSBJT1JUIE5vZGUgSGVhZGVyDQo+ ID4+ICsgICAgUGFyc2VBY3BpICgNCj4gPj4gKyAgICAgIEZBTFNFLA0KPiA+PiArICAgICAgMCwN Cj4gPj4gKyAgICAgICJJT1JUIE5vZGUgSGVhZGVyIiwNCj4gPj4gKyAgICAgIE5vZGVQdHIsDQo+ ID4+ICsgICAgICAxNiwNCj4gPj4gKyAgICAgIFBBUlNFUl9QQVJBTVMgKElvcnROb2RlSGVhZGVy UGFyc2VyKQ0KPiA+PiArICAgICAgKTsNCj4gPj4gKyAgICBpZiAoKklvcnROb2RlTGVuZ3RoID09 IDApIHsNCj4gPj4gKyAgICAgIEluY3JlbWVudEVycm9yQ291bnQgKCk7DQo+ID4+ICsgICAgICBQ cmludCAoTCJFUlJPUjogUGFyc2VyIGVycm9yLiBJbnZhbGlkIHRhYmxlIGRhdGEuXG4iKTsNCj4g Pj4gKyAgICAgIHJldHVybjsNCj4gPj4gKyAgICB9DQo+ID4+ICsNCj4gPj4gKyAgICBQcmludEZp ZWxkTmFtZSAoMiwgTCIqIE5vZGUgT2Zmc2V0ICoiKTsNCj4gPj4gKyAgICBQcmludCAoTCIweCV4 XG4iLCBPZmZzZXQpOw0KPiA+PiArDQo+ID4+ICsgICAgc3dpdGNoICgqSW9ydE5vZGVUeXBlKSB7 DQo+ID4+ICsgICAgICBjYXNlIEVJT1JUX05PREVfSVRTX0dST1VQOg0KPiA+PiArICAgICAgICBE dW1wSW9ydE5vZGVJdHMgKA0KPiA+PiArICAgICAgICAgIE5vZGVQdHIsDQo+ID4+ICsgICAgICAg ICAgKklvcnROb2RlTGVuZ3RoDQo+ID4+ICsgICAgICAgICAgKTsNCj4gPj4gKyAgICAgICAgYnJl YWs7DQo+ID4+ICsgICAgICBjYXNlIEVJT1JUX05PREVfTkFNRURfQ09NUE9ORU5UOg0KPiA+PiAr ICAgICAgICBEdW1wSW9ydE5vZGVOYW1lZENvbXBvbmVudCAoDQo+ID4+ICsgICAgICAgICAgTm9k ZVB0ciwNCj4gPj4gKyAgICAgICAgICAqSW9ydE5vZGVMZW5ndGgsDQo+ID4+ICsgICAgICAgICAg KklvcnRJZE1hcHBpbmdDb3VudCwNCj4gPj4gKyAgICAgICAgICAqSW9ydElkTWFwcGluZ09mZnNl dA0KPiA+PiArICAgICAgICAgICk7DQo+ID4+ICsgICAgICAgIGJyZWFrOw0KPiA+PiArICAgICAg Y2FzZSBFSU9SVF9OT0RFX1JPT1RfQ09NUExFWDoNCj4gPj4gKyAgICAgICAgRHVtcElvcnROb2Rl Um9vdENvbXBsZXggKA0KPiA+PiArICAgICAgICAgIE5vZGVQdHIsDQo+ID4+ICsgICAgICAgICAg KklvcnROb2RlTGVuZ3RoLA0KPiA+PiArICAgICAgICAgICpJb3J0SWRNYXBwaW5nQ291bnQsDQo+ ID4+ICsgICAgICAgICAgKklvcnRJZE1hcHBpbmdPZmZzZXQNCj4gPj4gKyAgICAgICAgICApOw0K PiA+PiArICAgICAgICBicmVhazsNCj4gPj4gKyAgICAgIGNhc2UgRUlPUlRfTk9ERV9TTU1VVjFf VjI6DQo+ID4+ICsgICAgICAgIER1bXBJb3J0Tm9kZVNtbXVWMVYyICgNCj4gPj4gKyAgICAgICAg ICBOb2RlUHRyLA0KPiA+PiArICAgICAgICAgICpJb3J0Tm9kZUxlbmd0aCwNCj4gPj4gKyAgICAg ICAgICAqSW9ydElkTWFwcGluZ0NvdW50LA0KPiA+PiArICAgICAgICAgICpJb3J0SWRNYXBwaW5n T2Zmc2V0DQo+ID4+ICsgICAgICAgICAgKTsNCj4gPj4gKyAgICAgICAgYnJlYWs7DQo+ID4+ICsg ICAgICBjYXNlIEVJT1JUX05PREVfU01NVVYzOg0KPiA+PiArICAgICAgICBEdW1wSW9ydE5vZGVT bW11VjMgKA0KPiA+PiArICAgICAgICAgIE5vZGVQdHIsDQo+ID4+ICsgICAgICAgICAgKklvcnRO b2RlTGVuZ3RoLA0KPiA+PiArICAgICAgICAgICpJb3J0SWRNYXBwaW5nQ291bnQsDQo+ID4+ICsg ICAgICAgICAgKklvcnRJZE1hcHBpbmdPZmZzZXQNCj4gPj4gKyAgICAgICAgICApOw0KPiA+PiAr ICAgICAgICBicmVhazsNCj4gPj4gKyAgICAgIGNhc2UgRUlPUlRfTk9ERV9QTUNHOg0KPiA+PiAr ICAgICAgICBEdW1wSW9ydE5vZGVQbWNnICgNCj4gPj4gKyAgICAgICAgICBOb2RlUHRyLA0KPiA+ PiArICAgICAgICAgICpJb3J0Tm9kZUxlbmd0aCwNCj4gPj4gKyAgICAgICAgICAqSW9ydElkTWFw cGluZ0NvdW50LA0KPiA+PiArICAgICAgICAgICpJb3J0SWRNYXBwaW5nT2Zmc2V0DQo+ID4+ICsg ICAgICAgICk7DQo+ID4+ICsgICAgICAgIGJyZWFrOw0KPiA+PiArDQo+ID4+ICsgICAgICBkZWZh dWx0Og0KPiA+PiArICAgICAgICBJbmNyZW1lbnRFcnJvckNvdW50ICgpOw0KPiA+PiArICAgICAg ICBQcmludCAoTCJFUlJPUjogVW5zdXBwb3J0ZWQgSU9SVCBOb2RlIHR5cGUgPSAlZFxuIiwNCj4g KklvcnROb2RlVHlwZSk7DQo+ID4+ICsgICAgfSAvLyBzd2l0Y2gNCj4gPj4gKw0KPiA+PiArICAg IE5vZGVQdHIgKz0gKCpJb3J0Tm9kZUxlbmd0aCk7DQo+ID4+ICsgICAgT2Zmc2V0ICs9ICgqSW9y dE5vZGVMZW5ndGgpOw0KPiA+PiArICB9IC8vIHdoaWxlDQo+ID4+ICt9DQo+ID4+ICsNCj4gPj4g Ky8qKiBSZWdpc3RlciB0aGUgcGFyc2VyLg0KPiA+PiArDQo+ID4+ICsgIEBwYXJhbSBbaW5dICBJ bWFnZUhhbmRsZSAgVGhlIGhhbmRsZSB0byB0aGUgaW1hZ2UuDQo+ID4+ICsgIEBwYXJhbSBbaW5d ICBTeXN0ZW1UYWJsZSAgUG9pbnRlciB0byB0aGUgU3lzdGVtIFRhYmxlLg0KPiA+PiArDQo+ID4+ ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBwYXJzZXIgaXMgcmVnaXN0ZXJl ZC4NCj4gPj4gKyAgQHJldHZhbCBFRklfQUxSRUFEWV9TVEFSVEVEICAgVGhlIHBhcnNlciBmb3Ig dGhlIEFDUEkgVGFibGUNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2Fz IGFscmVhZHkgcmVnaXN0ZXJlZC4NCj4gPj4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVU RVIgQSBwYXJhbWV0ZXIgaXMgaW52YWxpZA0KPiA+PiArICBAcmV0dmFsIEVGSV9PVVRfT0ZfUkVT T1VSQ0VTICBObyBzcGFjZSB0byByZWdpc3RlciB0aGUNCj4gPj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcGFyc2VyLg0KPiA+PiArKi8NCj4gPj4gK0VGSV9TVEFUVVMNCj4gPj4g K0VGSUFQSQ0KPiA+PiArSW9ydFBhcnNlckxpYkNvbnN0cnVjdG9yICgNCj4gPj4gKyAgSU4gQ09O U1QgRUZJX0hBTkRMRSAgICAgICAgICAgICAgICBJbWFnZUhhbmRsZSwNCj4gPj4gKyAgSU4gICAg ICAgRUZJX1NZU1RFTV9UQUJMRSAgKiBDT05TVCBTeXN0ZW1UYWJsZQ0KPiA+PiArICApDQo+ID4+ ICt7DQo+ID4+ICsgIHJldHVybiBSZWdpc3RlclBhcnNlciAoDQo+ID4+ICsgICAgICAgICAgIEVG SV9BQ1BJXzZfMl9JT19SRU1BUFBJTkdfVEFCTEVfU0lHTkFUVVJFLA0KPiA+PiArICAgICAgICAg ICBQYXJzZUFjcGlJb3J0DQo+ID4+ICsgICAgICAgICAgICk7DQo+ID4+ICt9DQo+ID4+ICsNCj4g Pj4gKy8qKiBEZXJlZ2lzdGVyIHRoZSBwYXJzZXIuDQo+ID4+ICsNCj4gPj4gKyAgQHBhcmFtIFtp bl0gIEltYWdlSGFuZGxlICBUaGUgaGFuZGxlIHRvIHRoZSBpbWFnZS4NCj4gPj4gKyAgQHBhcmFt IFtpbl0gIFN5c3RlbVRhYmxlICBQb2ludGVyIHRvIHRoZSBTeXN0ZW0gVGFibGUuDQo+ID4+ICsN Cj4gPj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhlIHBhcnNlciBpcyBkZXJl Z2lzdGVyZWQuDQo+ID4+ICsgIEByZXR2YWwgRUZJX05PVF9GT1VORCAgICAgICAgIFRoZSBwYXJz ZXIgd2FzIG5vdCByZWdpc3RlcmVkLg0KPiA+PiArKi8NCj4gPj4gK0VGSV9TVEFUVVMNCj4gPj4g K0VGSUFQSQ0KPiA+PiArSW9ydFBhcnNlckxpYkRlc3RydWN0b3IgKA0KPiA+PiArICBJTiBDT05T VCBFRklfSEFORExFICAgICAgICAgICAgICAgIEltYWdlSGFuZGxlLA0KPiA+PiArICBJTiAgICAg ICBFRklfU1lTVEVNX1RBQkxFICAqIENPTlNUIFN5c3RlbVRhYmxlDQo+ID4+ICsgICkNCj4gPj4g K3sNCj4gPj4gKyAgcmV0dXJuIERlcmVnaXN0ZXJQYXJzZXIgKA0KPiA+PiArICAgICAgICAgICBF RklfQUNQSV82XzJfSU9fUkVNQVBQSU5HX1RBQkxFX1NJR05BVFVSRQ0KPiA+PiArICAgICAgICAg ICApOw0KPiA+PiArfQ0KPiA+PiBkaWZmIC0tZ2l0DQo+IGEvU2hlbGxQa2cvTGlicmFyeS9VZWZp U2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9Jb3J0L0lvcnRQYXJzZXJMaWIuaW5mDQo+ IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9J b3J0L0lvcnRQYXJzZXJMaWIuaW4NCj4gZg0KPiA+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+ PiBpbmRleA0KPiAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMGVk YmQ0ZmU3NzhiZDliNjAxZTINCj4gY2FmM2FjN2ZkMzM2OGQ5OTQ1Zg0KPiA+PiAtLS0gL2Rldi9u dWxsDQo+ID4+ICsrKw0KPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21t YW5kTGliL1BhcnNlcnMvSW9ydC9Jb3J0UGFyc2VyTGliLmluDQo+IGYNCj4gPj4gQEAgLTAsMCAr MSwzMyBAQA0KPiA+PiArIyMgQGZpbGUNCj4gPj4gKyMNCj4gPj4gKyMgIENvcHlyaWdodCAoYykg MjAxNyAtIDIwMTgsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiA+PiArIw0K PiA+PiArIyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiA+ PiArIyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5k IGNvbmRpdGlvbnMgb2YgdGhlDQo+IEJTRCBMaWNlbnNlDQo+ID4+ICsjICB3aGljaCBhY2NvbXBh bmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5 IGJlDQo+IGZvdW5kIGF0DQo+ID4+ICsjICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMv YnNkLWxpY2Vuc2UucGhwDQo+ID4+ICsjDQo+ID4+ICsjICBUSEUgUFJPR1JBTSBJUyBESVNUUklC VVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIg0KPiBCQVNJUywNCj4gPj4g KyMgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJ VEhFUg0KPiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ID4+ICsjIw0KPiA+PiArDQo+ID4+ICtbRGVm aW5lc10NCj4gPj4gKyAgSU5GX1ZFUlNJT04gICAgPSAweDAwMDEwMDE5DQo+ID4+ICsgIEJBU0Vf TkFNRSAgICAgID0gSW9ydFBhcnNlckxpYg0KPiA+PiArICBGSUxFX0dVSUQgICAgICA9IDMxQ0Y5 QTUwLTBCMkEtNEYzMy1CRDJDLTM2MDZFMzVBQTlFRg0KPiA+PiArICBWRVJTSU9OX1NUUklORyA9 IDEuMA0KPiA+PiArICBNT0RVTEVfVFlQRSAgICA9IERYRV9EUklWRVINCj4gPj4gKyAgTElCUkFS WV9DTEFTUyAgPSBOVUxMfERYRV9EUklWRVINCj4gPj4gKyAgQ09OU1RSVUNUT1IgICAgPSBJb3J0 UGFyc2VyTGliQ29uc3RydWN0b3INCj4gPj4gKyAgREVTVFJVQ1RPUiAgICAgPSBJb3J0UGFyc2Vy TGliRGVzdHJ1Y3Rvcg0KPiA+PiArDQo+ID4+ICtbU291cmNlc10NCj4gPj4gKyAgSW9ydFBhcnNl ci5jDQo+ID4+ICsNCj4gPj4gK1tQYWNrYWdlc10NCj4gPj4gKyAgTWRlUGtnL01kZVBrZy5kZWMN Cj4gPj4gKyAgU2hlbGxQa2cvU2hlbGxQa2cuZGVjDQo+ID4+ICsgIE1kZU1vZHVsZVBrZy9NZGVN b2R1bGVQa2cuZGVjDQo+ID4+ICsNCj4gPj4gK1tMaWJyYXJ5Q2xhc3Nlc10NCj4gPj4gKyAgU2hl bGxBY3BpVmlld0NvbW1hbmRMaWINCj4gPj4gZGlmZiAtLWdpdA0KPiBhL1NoZWxsUGtnL0xpYnJh cnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvTWFkdC9NYWR0UGFyc2VyLmMN Cj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJz L01hZHQvTWFkdFBhcnNlci5jDQo+ID4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4+IGluZGV4 DQo+IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVhMzBjMDQxOTUx NDVjODhkMzkyZA0KPiBkY2ExNjRhMDYwNjM5Yjc0NTZhDQo+ID4+IC0tLSAvZGV2L251bGwNCj4g Pj4gKysrDQo+IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIv UGFyc2Vycy9NYWR0L01hZHRQYXJzZXIuYw0KPiA+PiBAQCAtMCwwICsxLDM1OCBAQA0KPiA+PiAr LyoqDQo+ID4+ICsgIE1BRFQgdGFibGUgcGFyc2VyDQo+ID4+ICsNCj4gPj4gKyAgQ29weXJpZ2h0 IChjKSAyMDE2IC0gMjAxOCwgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ID4+ ICsgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCj4gPj4gKyAg YXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRp dGlvbnMgb2YgdGhlDQo+IEJTRCBMaWNlbnNlDQo+ID4+ICsgIHdoaWNoIGFjY29tcGFuaWVzIHRo aXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUNCj4g Zm91bmQgYXQNCj4gPj4gKyAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNl bnNlLnBocA0KPiA+PiArDQo+ID4+ICsgIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVS IFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiDQo+IEJBU0lTLA0KPiA+PiArICBXSVRIT1VU IFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVINCj4gRVhQ UkVTUyBPUiBJTVBMSUVELg0KPiA+PiArDQo+ID4+ICsgIEBwYXIgUmVmZXJlbmNlKHMpOg0KPiA+ PiArICAgIC0gQUNQSSA2LjIgU3BlY2lmaWNhdGlvbiAtIEVycmF0YSBBLCBTZXB0ZW1iZXIgMjAx Nw0KPiA+PiArKiovDQo+ID4+ICsNCj4gPj4gKyNpbmNsdWRlIDxJbmR1c3RyeVN0YW5kYXJkL0Fj cGkuaD4NCj4gPj4gKyNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlMaWIuaD4NCj4gPj4gKyNpbmNsdWRl IDxMaWJyYXJ5L0FjcGlWaWV3L0FjcGlQYXJzZXIuaD4NCj4gPj4gKyNpbmNsdWRlIDxMaWJyYXJ5 L0FjcGlWaWV3L0FjcGlUYWJsZVBhcnNlci5oPg0KPiA+PiArDQo+ID4+ICsvLyBMb2NhbCBWYXJp YWJsZXMNCj4gPj4gK1NUQVRJQyBDT05TVCBVSU5UOCogTWFkdEludGVycnVwdENvbnRyb2xsZXJU eXBlOw0KPiA+PiArU1RBVElDIENPTlNUIFVJTlQ4KiBNYWR0SW50ZXJydXB0Q29udHJvbGxlckxl bmd0aDsNCj4gPj4gK1NUQVRJQyBBQ1BJX0RFU0NSSVBUSU9OX0hFQURFUl9JTkZPIEFjcGlIZHJJ bmZvOw0KPiA+PiArDQo+ID4+ICsvLyBGb3J3YXJkIGRlY2xhcmF0aW9ucw0KPiA+PiArU1RBVElD DQo+ID4+ICtWT0lEDQo+ID4+ICtFRklBUEkNCj4gPj4gK1ZhbGlkYXRlR0lDRFN5c3RlbVZlY3Rv ckJhc2UgKA0KPiA+PiArICBJTiBVSU5UOCogUHRyLA0KPiA+PiArICBJTiBWT0lEKiAgQ29udGV4 dA0KPiA+PiArKTsNCj4gPj4gKw0KPiA+PiArLyoqIEFuIEFDUElfUEFSU0VSIGFycmF5IGRlc2Ny aWJpbmcgdGhlIEdJQ0MgSW50ZXJydXB0DQo+ID4+ICsgICAgQ29udHJvbGxlciBTdHJ1Y3R1cmUu DQo+ID4+ICsqLw0KPiA+PiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VSIEdpY0NQYXJzZXJbXSA9 IHsNCj4gPj4gKyAge0wiVHlwZSIsIDEsIDAsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5V TEx9LA0KPiA+PiArICB7TCJMZW5ndGgiLCAxLCAxLCBMIiVkIiwgTlVMTCwgTlVMTCwgTlVMTCwg TlVMTH0sDQo+ID4+ICsgIHtMIlJlc2VydmVkIiwgMiwgMiwgTCIweCV4IiwgTlVMTCwgTlVMTCwg TlVMTCwgTlVMTH0sDQo+ID4+ICsNCj4gPj4gKyAge0wiQ1BVIEludGVyZmFjZSBOdW1iZXIiLCA0 LCA0LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiQUNQSSBQ cm9jZXNzb3IgVUlEIiwgNCwgOCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ ID4+ICsgIHtMIkZsYWdzIiwgNCwgMTIsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9 LA0KPiA+PiArICB7TCJQYXJraW5nIFByb3RvY29sIFZlcnNpb24iLCA0LCAxNiwgTCIweCV4Iiwg TlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4+ICsNCj4gPj4gKyAge0wiUGVyZm9ybWFuY2Ug SW50ZXJydXB0IEdTSVYiLCA0LCAyMCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwNCj4gTlVM TH0sDQo+ID4+ICsgIHtMIlBhcmtlZCBBZGRyZXNzIiwgOCwgMjQsIEwiMHglbHgiLCBOVUxMLCBO VUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiUGh5c2ljYWwgQmFzZSBBZGRyZXNzIiwgOCwg MzIsIEwiMHglbHgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiR0lDViIs IDgsIDQwLCBMIjB4JWx4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4+ICsgIHtMIkdJ Q0giLCA4LCA0OCwgTCIweCVseCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+PiArICB7 TCJWR0lDIE1haW50ZW5hbmNlIGludGVycnVwdCIsIDQsIDU2LCBMIjB4JXgiLCBOVUxMLCBOVUxM LCBOVUxMLA0KPiBOVUxMfSwNCj4gPj4gKyAge0wiR0lDUiBCYXNlIEFkZHJlc3MiLCA4LCA2MCwg TCIweCVseCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+PiArICB7TCJNUElEUiIsIDgs IDY4LCBMIjB4JWx4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4+ICsgIHtMIlByb2Nl c3NvciBQb3dlciBFZmZpY2llbmN5IENsYXNzIiwgMSwgNzYsIEwiMHgleCIsIE5VTEwsIE5VTEws IE5VTEwsDQo+ID4+ICsgICBOVUxMfSwNCj4gPj4gKyAge0wiUmVzZXJ2ZWQiLCAzLCA3NywgTCIl eCAleCAleCIsIER1bXAzQ2hhcnMsIE5VTEwsIE5VTEwsIE5VTEx9DQo+ID4+ICt9Ow0KPiA+PiAr DQo+ID4+ICsvKiogQW4gQUNQSV9QQVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0aGUgR0lDRCBJbnRl cnJ1cHQNCj4gPj4gKyAgICBDb250cm9sbGVyIFN0cnVjdHVyZS4NCj4gPj4gKyovDQo+ID4+ICtT VEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgR2ljRFBhcnNlcltdID0gew0KPiA+PiArICB7TCJUeXBl IiwgMSwgMCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4+ICsgIHtMIkxl bmd0aCIsIDEsIDEsIEwiJWQiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wi UmVzZXJ2ZWQiLCAyLCAyLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4g Kw0KPiA+PiArICB7TCJHSUMgSUQiLCA0LCA0LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBO VUxMfSwNCj4gPj4gKyAge0wiUGh5c2ljYWwgQmFzZSBBZGRyZXNzIiwgOCwgOCwgTCIweCVseCIs IE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+PiArICB7TCJTeXN0ZW0gVmVjdG9yIEJhc2Ui LCA0LCAxNiwgTCIweCV4IiwgTlVMTCwgTlVMTCwNCj4gPj4gKyAgICBWYWxpZGF0ZUdJQ0RTeXN0 ZW1WZWN0b3JCYXNlLCBOVUxMfSwNCj4gPj4gKyAge0wiR0lDIFZlcnNpb24iLCAxLCAyMCwgTCIl ZCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+PiArICB7TCJSZXNlcnZlZCIsIDMsIDIx LCBMIiV4ICV4ICV4IiwgRHVtcDNDaGFycywgTlVMTCwgTlVMTCwgTlVMTH0NCj4gPj4gK307DQo+ ID4+ICsNCj4gPj4gKy8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBNU0kg RnJhbWUgSW50ZXJydXB0DQo+ID4+ICsgICAgQ29udHJvbGxlciBTdHJ1Y3R1cmUuDQo+ID4+ICsq Lw0KPiA+PiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VSIEdpY01TSUZyYW1lUGFyc2VyW10gPSB7 DQo+ID4+ICsgIHtMIlR5cGUiLCAxLCAwLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxM fSwNCj4gPj4gKyAge0wiTGVuZ3RoIiwgMSwgMSwgTCIlZCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5V TEx9LA0KPiA+PiArICB7TCJSZXNlcnZlZCIsIDIsIDIsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5V TEwsIE5VTEx9LA0KPiA+PiArDQo+ID4+ICsgIHtMIk1TSSBGcmFtZSBJRCIsIDQsIDQsIEwiMHgl eCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+PiArICB7TCJQaHlzaWNhbCBCYXNlIEFk ZHJlc3MiLCA4LCA4LCBMIjB4JWx4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4+ICsg IHtMIkZsYWdzIiwgNCwgMTYsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ PiArDQo+ID4+ICsgIHtMIlNQSSBDb3VudCIsIDIsIDIwLCBMIiVkIiwgTlVMTCwgTlVMTCwgTlVM TCwgTlVMTH0sDQo+ID4+ICsgIHtMIlNQSSBCYXNlIiwgMiwgMjIsIEwiMHgleCIsIE5VTEwsIE5V TEwsIE5VTEwsIE5VTEx9DQo+ID4+ICt9Ow0KPiA+PiArDQo+ID4+ICsvKiogQW4gQUNQSV9QQVJT RVIgYXJyYXkgZGVzY3JpYmluZyB0aGUgR0lDUiBJbnRlcnJ1cHQNCj4gPj4gKyAgICBDb250cm9s bGVyIFN0cnVjdHVyZS4NCj4gPj4gKyovDQo+ID4+ICtTVEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIg R2ljUlBhcnNlcltdID0gew0KPiA+PiArICB7TCJUeXBlIiwgMSwgMCwgTCIweCV4IiwgTlVMTCwg TlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4+ICsgIHtMIkxlbmd0aCIsIDEsIDEsIEwiJWQiLCBOVUxM LCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiUmVzZXJ2ZWQiLCAyLCAyLCBMIjB4JXgi LCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKw0KPiA+PiArICB7TCJEaXNjb3Zlcnkg UmFuZ2UgQmFzZSBBZGRyZXNzIiwgOCwgNCwgTCIweCVseCIsIE5VTEwsIE5VTEwsIE5VTEwsDQo+ ID4+ICsgICBOVUxMfSwNCj4gPj4gKyAge0wiRGlzY292ZXJ5IFJhbmdlIExlbmd0aCIsIDQsIDEy LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfQ0KPiA+PiArfTsNCj4gPj4gKw0KPiA+ PiArLyoqIEFuIEFDUElfUEFSU0VSIGFycmF5IGRlc2NyaWJpbmcgdGhlIEdJQyBJVFMgSW50ZXJy dXB0DQo+ID4+ICsgICAgQ29udHJvbGxlciBTdHJ1Y3R1cmUuDQo+ID4+ICsqLw0KPiA+PiArU1RB VElDIENPTlNUIEFDUElfUEFSU0VSIEdpY0lUU1BhcnNlcltdID0gew0KPiA+PiArICB7TCJUeXBl IiwgMSwgMCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4+ICsgIHtMIkxl bmd0aCIsIDEsIDEsIEwiJWQiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wi UmVzZXJ2ZWQiLCAyLCAyLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4g Kw0KPiA+PiArICB7TCJHSUMgSVRTIElEIiwgNCwgNCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVM TCwgTlVMTH0sDQo+ID4+ICsgIHtMIlBoeXNpY2FsIEJhc2UgQWRkcmVzcyIsIDgsIDgsIEwiMHgl bHgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiUmVzZXJ2ZWQiLCA0LCAx NiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0NCj4gPj4gK307DQo+ID4+ICsNCj4g Pj4gKy8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBBQ1BJIE1BRFQgVGFi bGUuDQo+ID4+ICsqLw0KPiA+PiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VSIE1hZHRQYXJzZXJb XSA9IHsNCj4gPj4gKyAgUEFSU0VfQUNQSV9IRUFERVIgKCZBY3BpSGRySW5mbyksDQo+ID4+ICsg IHtMIkxvY2FsIEludGVycnVwdCBDb250cm9sbGVyIEFkZHJlc3MiLCA0LCAzNiwgTCIweCV4Iiwg TlVMTCwgTlVMTCwgTlVMTCwNCj4gPj4gKyAgIE5VTEx9LA0KPiA+PiArICB7TCJGbGFncyIsIDQs IDQwLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfQ0KPiA+PiArfTsNCj4gPj4gKw0K PiA+PiArLyoqIEFuIEFDUElfUEFSU0VSIGFycmF5IGRlc2NyaWJpbmcgdGhlIE1BRFQgSW50ZXJy dXB0DQo+ID4+ICsgICAgQ29udHJvbGxlciBTdHJ1Y3R1cmUgSGVhZGVyIFN0cnVjdHVyZS4NCj4g Pj4gKyovDQo+ID4+ICtTVEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgTWFkdEludGVycnVwdENvbnRy b2xsZXJIZWFkZXJQYXJzZXJbXSA9IHsNCj4gPj4gKyAge05VTEwsIDEsIDAsIE5VTEwsIE5VTEws IChWT0lEKiopJk1hZHRJbnRlcnJ1cHRDb250cm9sbGVyVHlwZSwgTlVMTCwNCj4gTlVMTH0sDQo+ ID4+ICsgIHtMIkxlbmd0aCIsIDEsIDEsIE5VTEwsIE5VTEwsIChWT0lEKiopJk1hZHRJbnRlcnJ1 cHRDb250cm9sbGVyTGVuZ3RoLA0KPiBOVUxMLA0KPiA+PiArICAgTlVMTH0sDQo+ID4+ICsgIHtM IlJlc2VydmVkIiwgMiwgMiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0NCj4gPj4gK307 DQo+ID4+ICsNCj4gPj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHZhbGlkYXRlcyB0aGUgU3lzdGVtIFZl Y3RvciBCYXNlIGluIHRoZSBHSUNELg0KPiA+PiArDQo+ID4+ICsgIEBwYXJhbSBbaW5dIFB0ciAg ICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGZpZWxkIGRhdGEuDQo+ID4+ICsgIEBwYXJh bSBbaW5dIENvbnRleHQgUG9pbnRlciB0byBjb250ZXh0IHNwZWNpZmljIGluZm9ybWF0aW9uIGUu Zy4gdGhpcw0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgIGNvdWxkIGJlIGEgcG9pbnRlciB0 byB0aGUgQUNQSSB0YWJsZSBoZWFkZXIuDQo+ID4+ICsqLw0KPiA+PiArU1RBVElDDQo+ID4+ICtW T0lEDQo+ID4+ICtFRklBUEkNCj4gPj4gK1ZhbGlkYXRlR0lDRFN5c3RlbVZlY3RvckJhc2UgKA0K PiA+PiArICBJTiBVSU5UOCogUHRyLA0KPiA+PiArICBJTiBWT0lEKiAgQ29udGV4dA0KPiA+PiAr KQ0KPiA+PiArew0KPiA+PiArICBpZiAoKihVSU5UMzIqKVB0ciAhPSAwKSB7DQo+ID4+ICsgICAg SW5jcmVtZW50RXJyb3JDb3VudCAoKTsNCj4gPj4gKyAgICBQcmludCAoDQo+ID4+ICsgICAgICBM IlxuRVJST1I6IFN5c3RlbSBWZWN0b3IgQmFzZSBtdXN0IGJlIHplcm8uIg0KPiA+PiArICAgICk7 DQo+ID4+ICsgIH0NCj4gPj4gK30NCj4gPj4gKw0KPiA+PiArLyoqIFRoaXMgZnVuY3Rpb24gcGFy c2VzIHRoZSBBQ1BJIE1BRFQgdGFibGUuDQo+ID4+ICsgIFdoZW4gdHJhY2UgaXMgZW5hYmxlZCB0 aGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgTUFEVCB0YWJsZSBhbmQNCj4gPj4gKyAgdHJhY2VzIHRo ZSBBQ1BJIHRhYmxlIGZpZWxkcy4NCj4gPj4gKw0KPiA+PiArICBUaGlzIGZ1bmN0aW9uIGN1cnJl bnRseSBwYXJzZXMgdGhlIGZvbGxvd2luZyBJbnRlcnJ1cHQgQ29udHJvbGxlcg0KPiA+PiArICBT dHJ1Y3R1cmVzOg0KPiA+PiArICAgIC0gR0lDQw0KPiA+PiArICAgIC0gR0lDRA0KPiA+PiArICAg IC0gR0lDIE1TSSBGcmFtZQ0KPiA+PiArICAgIC0gR0lDUg0KPiA+PiArICAgIC0gR0lDIElUUw0K PiA+PiArDQo+ID4+ICsgIFRoaXMgZnVuY3Rpb24gYWxzbyBwZXJmb3JtcyB2YWxpZGF0aW9uIG9m IHRoZSBBQ1BJIHRhYmxlIGZpZWxkcy4NCj4gPj4gKw0KPiA+PiArICBAcGFyYW0gW2luXSBUcmFj ZSAgICAgICAgICAgICAgSWYgVFJVRSwgdHJhY2UgdGhlIEFDUEkgZmllbGRzLg0KPiA+PiArICBA cGFyYW0gW2luXSBQdHIgICAgICAgICAgICAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhl IGJ1ZmZlci4NCj4gPj4gKyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxlTGVuZ3RoICAgIExlbmd0aCBv ZiB0aGUgQUNQSSB0YWJsZS4NCj4gPj4gKyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxlUmV2aXNpb24g IFJldmlzaW9uIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiA+PiArKi8NCj4gPj4gK1ZPSUQNCj4gPj4g K0VGSUFQSQ0KPiA+PiArUGFyc2VBY3BpTWFkdCAoDQo+ID4+ICsgIElOIEJPT0xFQU4gVHJhY2Us DQo+ID4+ICsgIElOIFVJTlQ4KiAgUHRyLA0KPiA+PiArICBJTiBVSU5UMzIgIEFjcGlUYWJsZUxl bmd0aCwNCj4gPj4gKyAgSU4gVUlOVDggICBBY3BpVGFibGVSZXZpc2lvbg0KPiA+PiArICApDQo+ ID4+ICt7DQo+ID4+ICsgIFVJTlQzMiBPZmZzZXQ7DQo+ID4+ICsgIFVJTlQ4KiBJbnRlcnJ1cHRD b250b2xsZXJQdHI7DQo+ID4+ICsgIFVJTlQzMiBHSUNEQ291bnQgPSAwOw0KPiA+PiArDQo+ID4+ ICsgIGlmICghVHJhY2UpIHsNCj4gPj4gKyAgICByZXR1cm47DQo+ID4+ICsgIH0NCj4gPj4gKw0K PiA+PiArICBPZmZzZXQgPSBQYXJzZUFjcGkgKA0KPiA+PiArICAgICAgICAgICAgIFRSVUUsDQo+ ID4+ICsgICAgICAgICAgICAgMCwNCj4gPj4gKyAgICAgICAgICAgICAiTUFEVCIsDQo+ID4+ICsg ICAgICAgICAgICAgUHRyLA0KPiA+PiArICAgICAgICAgICAgIEFjcGlUYWJsZUxlbmd0aCwNCj4g Pj4gKyAgICAgICAgICAgICBQQVJTRVJfUEFSQU1TIChNYWR0UGFyc2VyKQ0KPiA+PiArICAgICAg ICAgICAgICk7DQo+ID4+ICsgIEludGVycnVwdENvbnRvbGxlclB0ciA9IFB0ciArIE9mZnNldDsN Cj4gPj4gKw0KPiA+PiArICB3aGlsZSAoT2Zmc2V0IDwgQWNwaVRhYmxlTGVuZ3RoKSB7DQo+ID4+ ICsgICAgLy8gUGFyc2UgSW50ZXJydXB0IENvbnRyb2xsZXIgU3RydWN0dXJlIHRvIG9idGFpbiBM ZW5ndGguDQo+ID4+ICsgICAgUGFyc2VBY3BpICgNCj4gPj4gKyAgICAgIEZBTFNFLA0KPiA+PiAr ICAgICAgMCwNCj4gPj4gKyAgICAgIE5VTEwsDQo+ID4+ICsgICAgICBJbnRlcnJ1cHRDb250b2xs ZXJQdHIsDQo+ID4+ICsgICAgICAyLCAgLy8gIExlbmd0aCBpcyAxIGJ5dGUgYXQgb2Zmc2V0IDEN Cj4gPj4gKyAgICAgIFBBUlNFUl9QQVJBTVMgKE1hZHRJbnRlcnJ1cHRDb250cm9sbGVySGVhZGVy UGFyc2VyKQ0KPiA+PiArICAgICAgKTsNCj4gPj4gKw0KPiA+PiArICAgIGlmICgoKE9mZnNldCAr ICgqTWFkdEludGVycnVwdENvbnRyb2xsZXJMZW5ndGgpKSA+IEFjcGlUYWJsZUxlbmd0aCkgfHwN Cj4gPj4gKyAgICAgICAgKCpNYWR0SW50ZXJydXB0Q29udHJvbGxlckxlbmd0aCA8IDQpKSB7DQo+ ID4+ICsgICAgICBJbmNyZW1lbnRFcnJvckNvdW50ICgpOw0KPiA+PiArICAgICAgUHJpbnQgKA0K PiA+PiArICAgICAgICAgTCJFUlJPUjogSW52YWxpZCBJbnRlcnJ1cHQgQ29udHJvbGxlciBMZW5n dGgsIg0KPiA+PiArICAgICAgICAgICIgVHlwZSA9ICVkLCBMZW5ndGggPSAlZFxuIiwNCj4gPj4g KyAgICAgICAgICpNYWR0SW50ZXJydXB0Q29udHJvbGxlclR5cGUsDQo+ID4+ICsgICAgICAgICAq TWFkdEludGVycnVwdENvbnRyb2xsZXJMZW5ndGgNCj4gPj4gKyAgICAgICAgICk7DQo+ID4+ICsg ICAgICBicmVhazsNCj4gPj4gKyAgICB9DQo+ID4+ICsNCj4gPj4gKyAgICBzd2l0Y2ggKCpNYWR0 SW50ZXJydXB0Q29udHJvbGxlclR5cGUpIHsNCj4gPj4gKyAgICAgIGNhc2UgRUZJX0FDUElfNl8y X0dJQzogew0KPiA+PiArICAgICAgICBQYXJzZUFjcGkgKA0KPiA+PiArICAgICAgICAgIFRSVUUs DQo+ID4+ICsgICAgICAgICAgMiwNCj4gPj4gKyAgICAgICAgICAiR0lDQyIsDQo+ID4+ICsgICAg ICAgICAgSW50ZXJydXB0Q29udG9sbGVyUHRyLA0KPiA+PiArICAgICAgICAgICpNYWR0SW50ZXJy dXB0Q29udHJvbGxlckxlbmd0aCwNCj4gPj4gKyAgICAgICAgICBQQVJTRVJfUEFSQU1TIChHaWND UGFyc2VyKQ0KPiA+PiArICAgICAgICAgICk7DQo+ID4+ICsgICAgICAgIGJyZWFrOw0KPiA+PiAr ICAgICAgfQ0KPiA+PiArDQo+ID4+ICsgICAgICBjYXNlIEVGSV9BQ1BJXzZfMl9HSUNEOiB7DQo+ ID4+ICsgICAgICAgIGlmICgrK0dJQ0RDb3VudCA+IDEpIHsNCj4gPj4gKyAgICAgICAgICBJbmNy ZW1lbnRFcnJvckNvdW50ICgpOw0KPiA+PiArICAgICAgICAgIFByaW50ICgNCj4gPj4gKyAgICAg ICAgICAgIEwiRVJST1I6IE9ubHkgb25lIEdJQ0QgbXVzdCBiZSBwcmVzZW50LCINCj4gPj4gKyAg ICAgICAgICAgICAgIiBHSUNEQ291bnQgPSAlZFxuIiwNCj4gPj4gKyAgICAgICAgICAgIEdJQ0RD b3VudA0KPiA+PiArICAgICAgICAgICAgKTsNCj4gPj4gKyAgICAgICAgfQ0KPiA+PiArICAgICAg ICBQYXJzZUFjcGkgKA0KPiA+PiArICAgICAgICAgIFRSVUUsDQo+ID4+ICsgICAgICAgICAgMiwN Cj4gPj4gKyAgICAgICAgICAiR0lDRCIsDQo+ID4+ICsgICAgICAgICAgSW50ZXJydXB0Q29udG9s bGVyUHRyLA0KPiA+PiArICAgICAgICAgICpNYWR0SW50ZXJydXB0Q29udHJvbGxlckxlbmd0aCwN Cj4gPj4gKyAgICAgICAgICBQQVJTRVJfUEFSQU1TIChHaWNEUGFyc2VyKQ0KPiA+PiArICAgICAg ICAgICk7DQo+ID4+ICsgICAgICAgIGJyZWFrOw0KPiA+PiArICAgICAgfQ0KPiA+PiArDQo+ID4+ ICsgICAgICBjYXNlIEVGSV9BQ1BJXzZfMl9HSUNfTVNJX0ZSQU1FOiB7DQo+ID4+ICsgICAgICAg IFBhcnNlQWNwaSAoDQo+ID4+ICsgICAgICAgICAgVFJVRSwNCj4gPj4gKyAgICAgICAgICAyLA0K PiA+PiArICAgICAgICAgICJHSUMgTVNJIEZyYW1lIiwNCj4gPj4gKyAgICAgICAgICBJbnRlcnJ1 cHRDb250b2xsZXJQdHIsDQo+ID4+ICsgICAgICAgICAgKk1hZHRJbnRlcnJ1cHRDb250cm9sbGVy TGVuZ3RoLA0KPiA+PiArICAgICAgICAgIFBBUlNFUl9QQVJBTVMgKEdpY01TSUZyYW1lUGFyc2Vy KQ0KPiA+PiArICAgICAgICAgICk7DQo+ID4+ICsgICAgICAgIGJyZWFrOw0KPiA+PiArICAgICAg fQ0KPiA+PiArDQo+ID4+ICsgICAgICBjYXNlIEVGSV9BQ1BJXzZfMl9HSUNSOiB7DQo+ID4+ICsg ICAgICAgIFBhcnNlQWNwaSAoDQo+ID4+ICsgICAgICAgICAgVFJVRSwNCj4gPj4gKyAgICAgICAg ICAyLA0KPiA+PiArICAgICAgICAgICJHSUNSIiwNCj4gPj4gKyAgICAgICAgICBJbnRlcnJ1cHRD b250b2xsZXJQdHIsDQo+ID4+ICsgICAgICAgICAgKk1hZHRJbnRlcnJ1cHRDb250cm9sbGVyTGVu Z3RoLA0KPiA+PiArICAgICAgICAgIFBBUlNFUl9QQVJBTVMgKEdpY1JQYXJzZXIpDQo+ID4+ICsg ICAgICAgICAgKTsNCj4gPj4gKyAgICAgICAgYnJlYWs7DQo+ID4+ICsgICAgICB9DQo+ID4+ICsN Cj4gPj4gKyAgICAgIGNhc2UgRUZJX0FDUElfNl8yX0dJQ19JVFM6IHsNCj4gPj4gKyAgICAgICAg UGFyc2VBY3BpICgNCj4gPj4gKyAgICAgICAgICBUUlVFLA0KPiA+PiArICAgICAgICAgIDIsDQo+ ID4+ICsgICAgICAgICAgIkdJQyBJVFMiLA0KPiA+PiArICAgICAgICAgIEludGVycnVwdENvbnRv bGxlclB0ciwNCj4gPj4gKyAgICAgICAgICAqTWFkdEludGVycnVwdENvbnRyb2xsZXJMZW5ndGgs DQo+ID4+ICsgICAgICAgICAgUEFSU0VSX1BBUkFNUyAoR2ljSVRTUGFyc2VyKQ0KPiA+PiArICAg ICAgICAgICk7DQo+ID4+ICsgICAgICAgIGJyZWFrOw0KPiA+PiArICAgICAgfQ0KPiA+PiArDQo+ ID4+ICsgICAgICBkZWZhdWx0OiB7DQo+ID4+ICsgICAgICAgIEluY3JlbWVudEVycm9yQ291bnQg KCk7DQo+ID4+ICsgICAgICAgIFByaW50ICgNCj4gPj4gKyAgICAgICAgICBMIkVSUk9SOiBVbmtu b3duIEludGVycnVwdCBDb250cm9sbGVyIFN0cnVjdHVyZSwiDQo+ID4+ICsgICAgICAgICAgICAi IFR5cGUgPSAlZCwgTGVuZ3RoID0gJWRcbiIsDQo+ID4+ICsgICAgICAgICAgKk1hZHRJbnRlcnJ1 cHRDb250cm9sbGVyVHlwZSwNCj4gPj4gKyAgICAgICAgICAqTWFkdEludGVycnVwdENvbnRyb2xs ZXJMZW5ndGgNCj4gPj4gKyAgICAgICAgICApOw0KPiA+PiArICAgICAgfQ0KPiA+PiArICAgIH0g Ly8gc3dpdGNoDQo+ID4+ICsNCj4gPj4gKyAgICBJbnRlcnJ1cHRDb250b2xsZXJQdHIgKz0gKk1h ZHRJbnRlcnJ1cHRDb250cm9sbGVyTGVuZ3RoOw0KPiA+PiArICAgIE9mZnNldCArPSAqTWFkdElu dGVycnVwdENvbnRyb2xsZXJMZW5ndGg7DQo+ID4+ICsgIH0gLy8gd2hpbGUNCj4gPj4gK30NCj4g Pj4gKw0KPiA+PiArLyoqIFJlZ2lzdGVyIHRoZSBwYXJzZXIuDQo+ID4+ICsNCj4gPj4gKyAgQHBh cmFtIFtpbl0gIEltYWdlSGFuZGxlICBUaGUgaGFuZGxlIHRvIHRoZSBpbWFnZS4NCj4gPj4gKyAg QHBhcmFtIFtpbl0gIFN5c3RlbVRhYmxlICBQb2ludGVyIHRvIHRoZSBTeXN0ZW0gVGFibGUuDQo+ ID4+ICsNCj4gPj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhlIHBhcnNlciBp cyByZWdpc3RlcmVkLg0KPiA+PiArICBAcmV0dmFsIEVGSV9BTFJFQURZX1NUQVJURUQgICBUaGUg cGFyc2VyIGZvciB0aGUgQUNQSSBUYWJsZQ0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB3YXMgYWxyZWFkeSByZWdpc3RlcmVkLg0KPiA+PiArICBAcmV0dmFsIEVGSV9JTlZB TElEX1BBUkFNRVRFUiBBIHBhcmFtZXRlciBpcyBpbnZhbGlkDQo+ID4+ICsgIEByZXR2YWwgRUZJ X09VVF9PRl9SRVNPVVJDRVMgIE5vIHNwYWNlIHRvIHJlZ2lzdGVyIHRoZQ0KPiA+PiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXIuDQo+ID4+ICsqLw0KPiA+PiArRUZJX1NU QVRVUw0KPiA+PiArRUZJQVBJDQo+ID4+ICtNYWR0UGFyc2VyTGliQ29uc3RydWN0b3IgKA0KPiA+ PiArICBJTiBDT05TVCBFRklfSEFORExFICAgICAgICAgICAgICAgIEltYWdlSGFuZGxlLA0KPiA+ PiArICBJTiAgICAgICBFRklfU1lTVEVNX1RBQkxFICAqIENPTlNUIFN5c3RlbVRhYmxlDQo+ID4+ ICsgICkNCj4gPj4gK3sNCj4gPj4gKyAgcmV0dXJuIFJlZ2lzdGVyUGFyc2VyICgNCj4gPj4gKw0K PiBFRklfQUNQSV82XzJfTVVMVElQTEVfQVBJQ19ERVNDUklQVElPTl9UQUJMRV9TSUdOQVRVUkUs DQo+ID4+ICsgICAgICAgICAgIFBhcnNlQWNwaU1hZHQNCj4gPj4gKyAgICAgICAgICAgKTsNCj4g Pj4gK30NCj4gPj4gKw0KPiA+PiArLyoqIERlcmVnaXN0ZXIgdGhlIHBhcnNlci4NCj4gPj4gKw0K PiA+PiArICBAcGFyYW0gW2luXSAgSW1hZ2VIYW5kbGUgIFRoZSBoYW5kbGUgdG8gdGhlIGltYWdl Lg0KPiA+PiArICBAcGFyYW0gW2luXSAgU3lzdGVtVGFibGUgIFBvaW50ZXIgdG8gdGhlIFN5c3Rl bSBUYWJsZS4NCj4gPj4gKw0KPiA+PiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBU aGUgcGFyc2VyIGlzIGRlcmVnaXN0ZXJlZC4NCj4gPj4gKyAgQHJldHZhbCBFRklfTk9UX0ZPVU5E ICAgICAgICAgVGhlIHBhcnNlciB3YXMgbm90IHJlZ2lzdGVyZWQuDQo+ID4+ICsqLw0KPiA+PiAr RUZJX1NUQVRVUw0KPiA+PiArRUZJQVBJDQo+ID4+ICtNYWR0UGFyc2VyTGliRGVzdHJ1Y3RvciAo DQo+ID4+ICsgIElOIENPTlNUIEVGSV9IQU5ETEUgICAgICAgICAgICAgICAgSW1hZ2VIYW5kbGUs DQo+ID4+ICsgIElOICAgICAgIEVGSV9TWVNURU1fVEFCTEUgICogQ09OU1QgU3lzdGVtVGFibGUN Cj4gPj4gKyAgKQ0KPiA+PiArew0KPiA+PiArICByZXR1cm4gRGVyZWdpc3RlclBhcnNlciAoDQo+ ID4+ICsNCj4gRUZJX0FDUElfNl8yX01VTFRJUExFX0FQSUNfREVTQ1JJUFRJT05fVEFCTEVfU0lH TkFUVVJFDQo+ID4+ICsgICAgICAgICAgICk7DQo+ID4+ICt9DQo+ID4+IGRpZmYgLS1naXQNCj4g YS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL01h ZHQvTWFkdFBhcnNlckxpDQo+IGIuaW5mDQo+IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxB Y3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9NYWR0L01hZHRQYXJzZXJMaQ0KPiBiLmluZg0KPiA+ PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+PiBpbmRleA0KPiAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYjJiNjA0MmJiZmI1MTA4MzFlODYNCj4gNmFhMWRjNDMz NDY3ZGFhYzQ5ZQ0KPiA+PiAtLS0gL2Rldi9udWxsDQo+ID4+ICsrKw0KPiBiL1NoZWxsUGtnL0xp YnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvTWFkdC9NYWR0UGFyc2Vy TGkNCj4gYi5pbmYNCj4gPj4gQEAgLTAsMCArMSwzMyBAQA0KPiA+PiArIyMgQGZpbGUNCj4gPj4g KyMNCj4gPj4gKyMgIENvcHlyaWdodCAoYykgMjAxNyAtIDIwMTgsIEFSTSBMaW1pdGVkLiBBbGwg cmlnaHRzIHJlc2VydmVkLg0KPiA+PiArIw0KPiA+PiArIyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUg YWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiA+PiArIyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2 YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlDQo+IEJTRCBMaWNl bnNlDQo+ID4+ICsjICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBm dWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlDQo+IGZvdW5kIGF0DQo+ID4+ICsjICBodHRw Oi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ID4+ICsjDQo+ID4+ ICsjICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04g QU4gIkFTIElTIg0KPiBCQVNJUywNCj4gPj4gKyMgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBS RVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUg0KPiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ ID4+ICsjIw0KPiA+PiArDQo+ID4+ICtbRGVmaW5lc10NCj4gPj4gKyAgSU5GX1ZFUlNJT04gICAg PSAweDAwMDEwMDE5DQo+ID4+ICsgIEJBU0VfTkFNRSAgICAgID0gTWFkdFBhcnNlckxpYg0KPiA+ PiArICBGSUxFX0dVSUQgICAgICA9IENBMEE2QUUxLTExQTEtNDhDOC1BNTYxLUQyQ0ZBOTE3OTYy QQ0KPiA+PiArICBWRVJTSU9OX1NUUklORyA9IDEuMA0KPiA+PiArICBNT0RVTEVfVFlQRSAgICA9 IERYRV9EUklWRVINCj4gPj4gKyAgTElCUkFSWV9DTEFTUyAgPSBOVUxMfERYRV9EUklWRVINCj4g Pj4gKyAgQ09OU1RSVUNUT1IgICAgPSBNYWR0UGFyc2VyTGliQ29uc3RydWN0b3INCj4gPj4gKyAg REVTVFJVQ1RPUiAgICAgPSBNYWR0UGFyc2VyTGliRGVzdHJ1Y3Rvcg0KPiA+PiArDQo+ID4+ICtb U291cmNlc10NCj4gPj4gKyAgTWFkdFBhcnNlci5jDQo+ID4+ICsNCj4gPj4gK1tQYWNrYWdlc10N Cj4gPj4gKyAgTWRlUGtnL01kZVBrZy5kZWMNCj4gPj4gKyAgU2hlbGxQa2cvU2hlbGxQa2cuZGVj DQo+ID4+ICsgIE1kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVjDQo+ID4+ICsNCj4gPj4gK1tM aWJyYXJ5Q2xhc3Nlc10NCj4gPj4gKyAgU2hlbGxBY3BpVmlld0NvbW1hbmRMaWINCj4gPj4gZGlm ZiAtLWdpdA0KPiBhL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGli L1BhcnNlcnMvTWNmZy9NY2ZnUGFyc2VyLmMNCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVs bEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL01jZmcvTWNmZ1BhcnNlci5jDQo+ID4+IG5ldyBm aWxlIG1vZGUgMTAwNjQ0DQo+ID4+IGluZGV4DQo+IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAuLjEwYmZlYzkwMWE3YzUwNGU3MDIyYzINCj4gMWFhZmJhYzRjODc1ZDg4 ODZjDQo+ID4+IC0tLSAvZGV2L251bGwNCj4gPj4gKysrDQo+IGIvU2hlbGxQa2cvTGlicmFyeS9V ZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9NY2ZnL01jZmdQYXJzZXIuYw0KPiA+ PiBAQCAtMCwwICsxLDEzOSBAQA0KPiA+PiArLyoqDQo+ID4+ICsgIE1DRkcgdGFibGUgcGFyc2Vy DQo+ID4+ICsNCj4gPj4gKyAgQ29weXJpZ2h0IChjKSAyMDE2IC0gMjAxOCwgQVJNIExpbWl0ZWQu IEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ID4+ICsgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29t cGFueWluZyBtYXRlcmlhbHMNCj4gPj4gKyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJs ZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlDQo+IEJTRCBMaWNlbnNlDQo+ ID4+ICsgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4 dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUNCj4gZm91bmQgYXQNCj4gPj4gKyAgaHR0cDovL29wZW5z b3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiA+PiArDQo+ID4+ICsgIFRIRSBQ Uk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMi DQo+IEJBU0lTLA0KPiA+PiArICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05T IE9GIEFOWSBLSU5ELCBFSVRIRVINCj4gRVhQUkVTUyBPUiBJTVBMSUVELg0KPiA+PiArDQo+ID4+ ICsgIEBwYXIgUmVmZXJlbmNlKHMpOg0KPiA+PiArICAgIC0gUENJIEZpcm13YXJlIFNwZWNpZmlj YXRpb24gLSBSZXZpc2lvbiAzLjIsIEphbnVhcnkgMjYsIDIwMTUuDQo+ID4+ICsqKi8NCj4gPj4g Kw0KPiA+PiArI2luY2x1ZGUgPEluZHVzdHJ5U3RhbmRhcmQvQWNwaS5oPg0KPiA+PiArI2luY2x1 ZGUgPExpYnJhcnkvVWVmaUxpYi5oPg0KPiA+PiArI2luY2x1ZGUgPExpYnJhcnkvQWNwaVZpZXcv QWNwaVBhcnNlci5oPg0KPiA+PiArI2luY2x1ZGUgPExpYnJhcnkvQWNwaVZpZXcvQWNwaVRhYmxl UGFyc2VyLmg+DQo+ID4+ICsNCj4gPj4gKy8vIExvY2FsIHZhcmlhYmxlcw0KPiA+PiArU1RBVElD IEFDUElfREVTQ1JJUFRJT05fSEVBREVSX0lORk8gQWNwaUhkckluZm87DQo+ID4+ICsNCj4gPj4g Ky8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBBQ1BJIE1DRkcgVGFibGUu DQo+ID4+ICsqLw0KPiA+PiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VSIE1jZmdQYXJzZXJbXSA9 IHsNCj4gPj4gKyAgUEFSU0VfQUNQSV9IRUFERVIgKCZBY3BpSGRySW5mbyksDQo+ID4+ICsgIHtM IlJlc2VydmVkIiwgOCwgMzYsIEwiMHglbHgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4g Pj4gK307DQo+ID4+ICsNCj4gPj4gKy8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5n IHRoZSBQQ0kgY29uZmlndXJhdGlvbiBTcGFjZQ0KPiA+PiArICAgIEJhc2UgQWRkcmVzcyBzdHJ1 Y3R1cmUuDQo+ID4+ICsqLw0KPiA+PiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VSIFBjaUNmZ1Nw YWNlQmFzZUFkZHJQYXJzZXJbXSA9IHsNCj4gPj4gKyAge0wiQmFzZSBBZGRyZXNzIiwgOCwgMCwg TCIweCVseCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+PiArICB7TCJQQ0kgU2VnbWVu dCBHcm91cCBOby4iLCAyLCA4LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4g Pj4gKyAge0wiU3RhcnQgQnVzIE5vLiIsIDEsIDEwLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxM LCBOVUxMfSwNCj4gPj4gKyAge0wiRW5kIEJ1cyBOby4iLCAxLCAxMSwgTCIweCV4IiwgTlVMTCwg TlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4+ICsgIHtMIlJlc2VydmVkIiwgNCwgMTIsIEwiMHgleCIs IE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9DQo+ID4+ICt9Ow0KPiA+PiArDQo+ID4+ICsvKiogVGhp cyBmdW5jdGlvbiBwYXJzZXMgdGhlIEFDUEkgTUNGRyB0YWJsZS4NCj4gPj4gKyAgV2hlbiB0cmFj ZSBpcyBlbmFibGVkIHRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBNQ0ZHIHRhYmxlIGFuZA0KPiA+ PiArICB0cmFjZXMgdGhlIEFDUEkgdGFibGUgZmllbGRzLg0KPiA+PiArDQo+ID4+ICsgIFRoaXMg ZnVuY3Rpb24gYWxzbyBwZXJmb3JtcyB2YWxpZGF0aW9uIG9mIHRoZSBBQ1BJIHRhYmxlIGZpZWxk cy4NCj4gPj4gKw0KPiA+PiArICBAcGFyYW0gW2luXSBUcmFjZSAgICAgICAgICAgICAgSWYgVFJV RSwgdHJhY2UgdGhlIEFDUEkgZmllbGRzLg0KPiA+PiArICBAcGFyYW0gW2luXSBQdHIgICAgICAg ICAgICAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gPj4gKyAgQHBh cmFtIFtpbl0gQWNwaVRhYmxlTGVuZ3RoICAgIExlbmd0aCBvZiB0aGUgQUNQSSB0YWJsZS4NCj4g Pj4gKyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxlUmV2aXNpb24gIFJldmlzaW9uIG9mIHRoZSBBQ1BJ IHRhYmxlLg0KPiA+PiArKi8NCj4gPj4gK1ZPSUQNCj4gPj4gK0VGSUFQSQ0KPiA+PiArUGFyc2VB Y3BpTWNmZyAoDQo+ID4+ICsgIElOIEJPT0xFQU4gVHJhY2UsDQo+ID4+ICsgIElOIFVJTlQ4KiAg UHRyLA0KPiA+PiArICBJTiBVSU5UMzIgIEFjcGlUYWJsZUxlbmd0aCwNCj4gPj4gKyAgSU4gVUlO VDggICBBY3BpVGFibGVSZXZpc2lvbg0KPiA+PiArICApDQo+ID4+ICt7DQo+ID4+ICsgIFVJTlQz MiBPZmZzZXQ7DQo+ID4+ICsgIFVJTlQzMiBQY2lDZmdPZmZzZXQ7DQo+ID4+ICsgIFVJTlQ4KiBQ Y2lDZmdTcGFjZVB0cjsNCj4gPj4gKw0KPiA+PiArICBpZiAoIVRyYWNlKSB7DQo+ID4+ICsgICAg cmV0dXJuOw0KPiA+PiArICB9DQo+ID4+ICsNCj4gPj4gKyAgT2Zmc2V0ID0gUGFyc2VBY3BpICgN Cj4gPj4gKyAgICAgICAgICAgICBUUlVFLA0KPiA+PiArICAgICAgICAgICAgIDAsDQo+ID4+ICsg ICAgICAgICAgICAgIk1DRkciLA0KPiA+PiArICAgICAgICAgICAgIFB0ciwNCj4gPj4gKyAgICAg ICAgICAgICBBY3BpVGFibGVMZW5ndGgsDQo+ID4+ICsgICAgICAgICAgICAgUEFSU0VSX1BBUkFN UyAoTWNmZ1BhcnNlcikNCj4gPj4gKyAgICAgICAgICAgICApOw0KPiA+PiArDQo+ID4+ICsgIFBj aUNmZ1NwYWNlUHRyID0gUHRyICsgT2Zmc2V0Ow0KPiA+PiArDQo+ID4+ICsgIHdoaWxlIChPZmZz ZXQgPCBBY3BpVGFibGVMZW5ndGgpIHsNCj4gPj4gKyAgICBQY2lDZmdPZmZzZXQgPSBQYXJzZUFj cGkgKA0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgVFJVRSwNCj4gPj4gKyAgICAgICAgICAg ICAgICAgICAgIDIsDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAiUENJIENvbmZpZ3VyYXRp b24gU3BhY2UiLA0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgUGNpQ2ZnU3BhY2VQdHIsDQo+ ID4+ICsgICAgICAgICAgICAgICAgICAgICAoQWNwaVRhYmxlTGVuZ3RoIC0gT2Zmc2V0KSwNCj4g Pj4gKyAgICAgICAgICAgICAgICAgICAgIFBBUlNFUl9QQVJBTVMgKFBjaUNmZ1NwYWNlQmFzZUFk ZHJQYXJzZXIpDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICApOw0KPiA+PiArICAgIFBjaUNm Z1NwYWNlUHRyICs9IFBjaUNmZ09mZnNldDsNCj4gPj4gKyAgICBPZmZzZXQgKz0gUGNpQ2ZnT2Zm c2V0Ow0KPiA+PiArICB9DQo+ID4+ICt9DQo+ID4+ICsNCj4gPj4gKy8qKiBSZWdpc3RlciB0aGUg cGFyc2VyLg0KPiA+PiArDQo+ID4+ICsgIEBwYXJhbSBbaW5dICBJbWFnZUhhbmRsZSAgVGhlIGhh bmRsZSB0byB0aGUgaW1hZ2UuDQo+ID4+ICsgIEBwYXJhbSBbaW5dICBTeXN0ZW1UYWJsZSAgUG9p bnRlciB0byB0aGUgU3lzdGVtIFRhYmxlLg0KPiA+PiArDQo+ID4+ICsgIEByZXR2YWwgRUZJX1NV Q0NFU1MgICAgICAgICAgIFRoZSBwYXJzZXIgaXMgcmVnaXN0ZXJlZC4NCj4gPj4gKyAgQHJldHZh bCBFRklfQUxSRUFEWV9TVEFSVEVEICAgVGhlIHBhcnNlciBmb3IgdGhlIEFDUEkgVGFibGUNCj4g Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FzIGFscmVhZHkgcmVnaXN0ZXJl ZC4NCj4gPj4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgQSBwYXJhbWV0ZXIgaXMg aW52YWxpZA0KPiA+PiArICBAcmV0dmFsIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTICBObyBzcGFjZSB0 byByZWdpc3RlciB0aGUNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFy c2VyLg0KPiA+PiArKi8NCj4gPj4gK0VGSV9TVEFUVVMNCj4gPj4gK0VGSUFQSQ0KPiA+PiArTWNm Z1BhcnNlckxpYkNvbnN0cnVjdG9yICgNCj4gPj4gKyAgSU4gQ09OU1QgRUZJX0hBTkRMRSAgICAg ICAgICAgICAgICBJbWFnZUhhbmRsZSwNCj4gPj4gKyAgSU4gICAgICAgRUZJX1NZU1RFTV9UQUJM RSAgKiBDT05TVCBTeXN0ZW1UYWJsZQ0KPiA+PiArICApDQo+ID4+ICt7DQo+ID4+ICsgIHJldHVy biBSZWdpc3RlclBhcnNlciAoDQo+ID4+ICsNCj4gRUZJX0FDUElfNl8yX1BDSV9FWFBSRVNTX01F TU9SWV9NQVBQRURfQ09ORklHVVJBVElPTl9TUEFDRV9CQQ0KPiBTRV9BRERSRVNTX0RFU0NSSVBU SU9OX1RBQkxFX1NJR05BVFVSRSwNCj4gPj4gKyAgICAgICAgICAgUGFyc2VBY3BpTWNmZw0KPiA+ PiArICAgICAgICAgICApOw0KPiA+PiArfQ0KPiA+PiArDQo+ID4+ICsvKiogRGVyZWdpc3RlciB0 aGUgcGFyc2VyLg0KPiA+PiArDQo+ID4+ICsgIEBwYXJhbSBbaW5dICBJbWFnZUhhbmRsZSAgVGhl IGhhbmRsZSB0byB0aGUgaW1hZ2UuDQo+ID4+ICsgIEBwYXJhbSBbaW5dICBTeXN0ZW1UYWJsZSAg UG9pbnRlciB0byB0aGUgU3lzdGVtIFRhYmxlLg0KPiA+PiArDQo+ID4+ICsgIEByZXR2YWwgRUZJ X1NVQ0NFU1MgICAgICAgICAgIFRoZSBwYXJzZXIgaXMgZGVyZWdpc3RlcmVkLg0KPiA+PiArICBA cmV0dmFsIEVGSV9OT1RfRk9VTkQgICAgICAgICBUaGUgcGFyc2VyIHdhcyBub3QgcmVnaXN0ZXJl ZC4NCj4gPj4gKyovDQo+ID4+ICtFRklfU1RBVFVTDQo+ID4+ICtFRklBUEkNCj4gPj4gK01jZmdQ YXJzZXJMaWJEZXN0cnVjdG9yICgNCj4gPj4gKyAgSU4gQ09OU1QgRUZJX0hBTkRMRSAgICAgICAg ICAgICAgICBJbWFnZUhhbmRsZSwNCj4gPj4gKyAgSU4gICAgICAgRUZJX1NZU1RFTV9UQUJMRSAg KiBDT05TVCBTeXN0ZW1UYWJsZQ0KPiA+PiArICApDQo+ID4+ICt7DQo+ID4+ICsgIHJldHVybiBE ZXJlZ2lzdGVyUGFyc2VyICgNCj4gPj4gKw0KPiBFRklfQUNQSV82XzJfUENJX0VYUFJFU1NfTUVN T1JZX01BUFBFRF9DT05GSUdVUkFUSU9OX1NQQUNFX0JBDQo+IFNFX0FERFJFU1NfREVTQ1JJUFRJ T05fVEFCTEVfU0lHTkFUVVJFDQo+ID4+ICsgICAgICAgICAgICk7DQo+ID4+ICt9DQo+ID4+IGRp ZmYgLS1naXQNCj4gYS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExp Yi9QYXJzZXJzL01jZmcvTWNmZ1BhcnNlckxpYg0KPiAuaW5mDQo+IGIvU2hlbGxQa2cvTGlicmFy eS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9NY2ZnL01jZmdQYXJzZXJMaWIN Cj4gLmluZg0KPiA+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+PiBpbmRleA0KPiAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40N2QxZDU2YTUyODk2ZWM3ZDQwMjEN Cj4gZThlMjNhZWYyYWZlZjI1NmNiMw0KPiA+PiAtLS0gL2Rldi9udWxsDQo+ID4+ICsrKw0KPiBi L1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvTWNm Zy9NY2ZnUGFyc2VyTGliDQo+IC5pbmYNCj4gPj4gQEAgLTAsMCArMSwzMyBAQA0KPiA+PiArIyMg QGZpbGUNCj4gPj4gKyMNCj4gPj4gKyMgIENvcHlyaWdodCAoYykgMjAxNyAtIDIwMTgsIEFSTSBM aW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiA+PiArIw0KPiA+PiArIyAgVGhpcyBwcm9n cmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiA+PiArIyAgYXJlIGxpY2Vuc2Vk IGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhl DQo+IEJTRCBMaWNlbnNlDQo+ID4+ICsjICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1 dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlDQo+IGZvdW5kIGF0DQo+ ID4+ICsjICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ ID4+ICsjDQo+ID4+ICsjICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNE IExJQ0VOU0UgT04gQU4gIkFTIElTIg0KPiBCQVNJUywNCj4gPj4gKyMgIFdJVEhPVVQgV0FSUkFO VElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUg0KPiBFWFBSRVNTIE9S IElNUExJRUQuDQo+ID4+ICsjIw0KPiA+PiArDQo+ID4+ICtbRGVmaW5lc10NCj4gPj4gKyAgSU5G X1ZFUlNJT04gICAgPSAweDAwMDEwMDE5DQo+ID4+ICsgIEJBU0VfTkFNRSAgICAgID0gTWNmZ1Bh cnNlckxpYg0KPiA+PiArICBGSUxFX0dVSUQgICAgICA9IDQ3RThDMTBELTZDRTAtNDU1Qy1BN0JD LTgzQTdCMDg5NUM5Rg0KPiA+PiArICBWRVJTSU9OX1NUUklORyA9IDEuMA0KPiA+PiArICBNT0RV TEVfVFlQRSAgICA9IERYRV9EUklWRVINCj4gPj4gKyAgTElCUkFSWV9DTEFTUyAgPSBOVUxMfERY RV9EUklWRVINCj4gPj4gKyAgQ09OU1RSVUNUT1IgICAgPSBNY2ZnUGFyc2VyTGliQ29uc3RydWN0 b3INCj4gPj4gKyAgREVTVFJVQ1RPUiAgICAgPSBNY2ZnUGFyc2VyTGliRGVzdHJ1Y3Rvcg0KPiA+ PiArDQo+ID4+ICtbU291cmNlc10NCj4gPj4gKyAgTWNmZ1BhcnNlci5jDQo+ID4+ICsNCj4gPj4g K1tQYWNrYWdlc10NCj4gPj4gKyAgTWRlUGtnL01kZVBrZy5kZWMNCj4gPj4gKyAgU2hlbGxQa2cv U2hlbGxQa2cuZGVjDQo+ID4+ICsgIE1kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVjDQo+ID4+ ICsNCj4gPj4gK1tMaWJyYXJ5Q2xhc3Nlc10NCj4gPj4gKyAgU2hlbGxBY3BpVmlld0NvbW1hbmRM aWINCj4gPj4gZGlmZiAtLWdpdA0KPiBhL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZp ZXdDb21tYW5kTGliL1BhcnNlcnMvUnNkcC9Sc2RwUGFyc2VyLmMNCj4gYi9TaGVsbFBrZy9MaWJy YXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL1JzZHAvUnNkcFBhcnNlci5j DQo+ID4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4+IGluZGV4DQo+IDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZlYzU1MDhkMjIyZWYxNGU5OWMyZDMNCj4gOTJh MDAzM2U2YzZkNWZhYTNlDQo+ID4+IC0tLSAvZGV2L251bGwNCj4gPj4gKysrDQo+IGIvU2hlbGxQ a2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9Sc2RwL1JzZHBQ YXJzZXIuYw0KPiA+PiBAQCAtMCwwICsxLDIxNCBAQA0KPiA+PiArLyoqDQo+ID4+ICsgIFJTRFAg dGFibGUgcGFyc2VyDQo+ID4+ICsNCj4gPj4gKyAgQ29weXJpZ2h0IChjKSAyMDE2IC0gMjAxOCwg QVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ID4+ICsgIFRoaXMgcHJvZ3JhbSBh bmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCj4gPj4gKyAgYXJlIGxpY2Vuc2VkIGFuZCBt YWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlDQo+IEJT RCBMaWNlbnNlDQo+ID4+ICsgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAg VGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUNCj4gZm91bmQgYXQNCj4gPj4gKyAg aHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiA+PiArDQo+ ID4+ICsgIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBP TiBBTiAiQVMgSVMiDQo+IEJBU0lTLA0KPiA+PiArICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQ UkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVINCj4gRVhQUkVTUyBPUiBJTVBMSUVELg0K PiA+PiArDQo+ID4+ICsgIEBwYXIgUmVmZXJlbmNlKHMpOg0KPiA+PiArICAgIC0gQUNQSSA2LjIg U3BlY2lmaWNhdGlvbiAtIEVycmF0YSBBLCBTZXB0ZW1iZXIgMjAxNw0KPiA+PiArKiovDQo+ID4+ ICsNCj4gPj4gKyNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlMaWIuaD4NCj4gPj4gKyNpbmNsdWRlIDxM aWJyYXJ5L0FjcGlWaWV3L0FjcGlQYXJzZXIuaD4NCj4gPj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0Fj cGlWaWV3L0FjcGlUYWJsZVBhcnNlci5oPg0KPiA+PiArDQo+ID4+ICsvLyBMb2NhbCBWYXJpYWJs ZXMNCj4gPj4gK1NUQVRJQyBDT05TVCBVSU5UNjQqIFhzZHRBZGRyZXNzOw0KPiA+PiArDQo+ID4+ ICsvKiogVGhpcyBmdW5jdGlvbiB2YWxpZGF0ZXMgdGhlIFJTRFQgQWRkcmVzcy4NCj4gPj4gKw0K PiA+PiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBm aWVsZCBkYXRhLg0KPiA+PiArICBAcGFyYW0gW2luXSBDb250ZXh0IFBvaW50ZXIgdG8gY29udGV4 dCBzcGVjaWZpYyBpbmZvcm1hdGlvbiBlLmcuIHRoaXMNCj4gPj4gKyAgICAgICAgICAgICAgICAg ICAgICBjb3VsZCBiZSBhIHBvaW50ZXIgdG8gdGhlIEFDUEkgdGFibGUgaGVhZGVyLg0KPiA+PiAr Ki8NCj4gPj4gK1NUQVRJQw0KPiA+PiArVk9JRA0KPiA+PiArRUZJQVBJDQo+ID4+ICtWYWxpZGF0 ZVJzZHRBZGRyZXNzICgNCj4gPj4gKyAgSU4gVUlOVDgqIFB0ciwNCj4gPj4gKyAgSU4gVk9JRCog IENvbnRleHQNCj4gPj4gKyAgKTsNCj4gPj4gKw0KPiA+PiArLyoqIFRoaXMgZnVuY3Rpb24gdmFs aWRhdGVzIHRoZSBYU0RUIEFkZHJlc3MuDQo+ID4+ICsNCj4gPj4gKyAgQHBhcmFtIFtpbl0gUHRy ICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgZmllbGQgZGF0YS4NCj4gPj4gKyAgQHBh cmFtIFtpbl0gQ29udGV4dCBQb2ludGVyIHRvIGNvbnRleHQgc3BlY2lmaWMgaW5mb3JtYXRpb24g ZS5nLiB0aGlzDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgY291bGQgYmUgYSBwb2ludGVy IHRvIHRoZSBBQ1BJIHRhYmxlIGhlYWRlci4NCj4gPj4gKyovDQo+ID4+ICtTVEFUSUMNCj4gPj4g K1ZPSUQNCj4gPj4gK0VGSUFQSQ0KPiA+PiArVmFsaWRhdGVYc2R0QWRkcmVzcyAoDQo+ID4+ICsg IElOIFVJTlQ4KiBQdHIsDQo+ID4+ICsgIElOIFZPSUQqICBDb250ZXh0DQo+ID4+ICsgICk7DQo+ ID4+ICsNCj4gPj4gKy8qKiBBbiBhcnJheSBkZXNjcmliaW5nIHRoZSBBQ1BJIFJTRFAgVGFibGUu DQo+ID4+ICsqLw0KPiA+PiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VSIFJzZHBQYXJzZXJbXSA9 IHsNCj4gPj4gKyAge0wiU2lnbmF0dXJlIiwgOCwgMCwgTlVMTCwgRHVtcDhDaGFycywgTlVMTCwg TlVMTCwgTlVMTH0sDQo+ID4+ICsgIHtMIkNoZWNrc3VtIiwgMSwgOCwgTCIweCV4IiwgTlVMTCwg TlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4+ICsgIHtMIk9lbSBJRCIsIDYsIDksIE5VTEwsIER1bXA2 Q2hhcnMsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+PiArICB7TCJSZXZpc2lvbiIsIDEsIDE1LCBM IiVkIiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4+ICsgIHtMIlJTRFQgQWRkcmVzcyIs IDQsIDE2LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBWYWxpZGF0ZVJzZHRBZGRyZXNzLA0KPiBOVUxM fSwNCj4gPj4gKyAge0wiTGVuZ3RoIiwgNCwgMjAsIEwiJWQiLCBOVUxMLCBOVUxMLCBOVUxMLCBO VUxMfSwNCj4gPj4gKyAge0wiWFNEVCBBZGRyZXNzIiwgOCwgMjQsIEwiMHglbHgiLCBOVUxMLCAo Vk9JRCoqKSZYc2R0QWRkcmVzcywNCj4gPj4gKyAgIFZhbGlkYXRlWHNkdEFkZHJlc3MsIE5VTEx9 LA0KPiA+PiArICB7TCJFeHRlbmRlZCBDaGVja3N1bSIsIDEsIDMyLCBMIjB4JXgiLCBOVUxMLCBO VUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiUmVzZXJ2ZWQiLCAzLCAzMywgTCIleCAleCAl eCIsIER1bXAzQ2hhcnMsIE5VTEwsIE5VTEwsIE5VTEx9DQo+ID4+ICt9Ow0KPiA+PiArDQo+ID4+ ICsvKiogVGhpcyBmdW5jdGlvbiB2YWxpZGF0ZXMgdGhlIFJTRFQgQWRkcmVzcy4NCj4gPj4gKw0K PiA+PiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBm aWVsZCBkYXRhLg0KPiA+PiArICBAcGFyYW0gW2luXSBDb250ZXh0IFBvaW50ZXIgdG8gY29udGV4 dCBzcGVjaWZpYyBpbmZvcm1hdGlvbiBlLmcuIHRoaXMNCj4gPj4gKyAgICAgICAgICAgICAgICAg ICAgICBjb3VsZCBiZSBhIHBvaW50ZXIgdG8gdGhlIEFDUEkgdGFibGUgaGVhZGVyLg0KPiA+PiAr Ki8NCj4gPj4gK1NUQVRJQw0KPiA+PiArVk9JRA0KPiA+PiArRUZJQVBJDQo+ID4+ICtWYWxpZGF0 ZVJzZHRBZGRyZXNzICgNCj4gPj4gKyAgSU4gVUlOVDgqIFB0ciwNCj4gPj4gKyAgSU4gVk9JRCog IENvbnRleHQNCj4gPj4gKyAgKQ0KPiA+PiArew0KPiA+PiArI2lmIGRlZmluZWQoTURFX0NQVV9B Uk0pIHx8IGRlZmluZWQgKE1ERV9DUFVfQUFSQ0g2NCkNCj4gPj4gKyAgLy8gUmVmZXJlbmNlOiBT ZXJ2ZXIgQmFzZSBCb290IFJlcXVpcmVtZW50cyBTeXN0ZW0gU29mdHdhcmUgb24gQVJNDQo+IFBs YXRmb3Jtcw0KPiA+PiArICAvLyBTZWN0aW9uOiA0LjIuMS4xIFJTRFANCj4gPj4gKyAgLy8gUm9v dCBTeXN0ZW0gRGVzY3JpcHRpb24gUG9pbnRlciAoUlNEUCksIEFDUEkg77+9IDUuMi41Lg0KPiA+ PiArICAvLyAgIC0gV2l0aGluIHRoZSBSU0RQLCB0aGUgUnNkdEFkZHJlc3MgZmllbGQgbXVzdCBi ZSBudWxsICh6ZXJvKSBhbmQgdGhlDQo+ID4+ICsgIC8vICAgICBYc2R0QWRkcmVzc3MgTVVTVCBi ZSBhIHZhbGlkLCBub24tbnVsbCwgNjQtYml0IHZhbHVlLg0KPiA+PiArICBVSU5UMzIgUnNkdEFk ZHIgPSAqKFVJTlQzMiopUHRyOw0KPiA+PiArICBpZiAoUnNkdEFkZHIgIT0gMCkgew0KPiA+PiAr ICAgIEluY3JlbWVudEVycm9yQ291bnQgKCk7DQo+ID4+ICsgICAgUHJpbnQgKA0KPiA+PiArICAg ICAgTCJcbkVSUk9SOiBSc2R0IEFkZHJlc3MgPSAweCVwLiBUaGlzIG11c3QgYmUgTlVMTCBvbiBB Uk0NCj4gUGxhdGZvcm1zLiIsDQo+ID4+ICsgICAgICBSc2R0QWRkcg0KPiA+PiArICAgICAgKTsN Cj4gPj4gKyAgfQ0KPiA+PiArI2VuZGlmDQo+ID4+ICt9DQo+ID4+ICsNCj4gPj4gKy8qKiBUaGlz IGZ1bmN0aW9uIHZhbGlkYXRlcyB0aGUgWFNEVCBBZGRyZXNzLg0KPiA+PiArDQo+ID4+ICsgIEBw YXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGZpZWxkIGRhdGEu DQo+ID4+ICsgIEBwYXJhbSBbaW5dIENvbnRleHQgUG9pbnRlciB0byBjb250ZXh0IHNwZWNpZmlj IGluZm9ybWF0aW9uIGUuZy4gdGhpcw0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgIGNvdWxk IGJlIGEgcG9pbnRlciB0byB0aGUgQUNQSSB0YWJsZSBoZWFkZXIuDQo+ID4+ICsqLw0KPiA+PiAr U1RBVElDDQo+ID4+ICtWT0lEDQo+ID4+ICtFRklBUEkNCj4gPj4gK1ZhbGlkYXRlWHNkdEFkZHJl c3MgKA0KPiA+PiArICBJTiBVSU5UOCogUHRyLA0KPiA+PiArICBJTiBWT0lEKiAgQ29udGV4dA0K PiA+PiArICApDQo+ID4+ICt7DQo+ID4+ICsjaWYgZGVmaW5lZChNREVfQ1BVX0FSTSkgfHwgZGVm aW5lZCAoTURFX0NQVV9BQVJDSDY0KQ0KPiA+PiArICAvLyBSZWZlcmVuY2U6IFNlcnZlciBCYXNl IEJvb3QgUmVxdWlyZW1lbnRzIFN5c3RlbSBTb2Z0d2FyZSBvbiBBUk0NCj4gUGxhdGZvcm1zDQo+ ID4+ICsgIC8vIFNlY3Rpb246IDQuMi4xLjEgUlNEUA0KPiA+PiArICAvLyBSb290IFN5c3RlbSBE ZXNjcmlwdGlvbiBQb2ludGVyIChSU0RQKSwgQUNQSSDvv70gNS4yLjUuDQo+ID4+ICsgIC8vICAg LSBXaXRoaW4gdGhlIFJTRFAsIHRoZSBSc2R0QWRkcmVzcyBmaWVsZCBtdXN0IGJlIG51bGwgKHpl cm8pIGFuZCB0aGUNCj4gPj4gKyAgLy8gICAgIFhzZHRBZGRyZXNzcyBNVVNUIGJlIGEgdmFsaWQs IG5vbi1udWxsLCA2NC1iaXQgdmFsdWUuDQo+ID4+ICsgIFVJTlQ2NCBYc2R0QWRkciA9ICooVUlO VDY0KilQdHI7DQo+ID4+ICsgIGlmIChYc2R0QWRkciA9PSAwKSB7DQo+ID4+ICsgICAgSW5jcmVt ZW50RXJyb3JDb3VudCAoKTsNCj4gPj4gKyAgICBQcmludCAoDQo+ID4+ICsgICAgICBMIlxuRVJS T1I6IFhzZHQgQWRkcmVzcyA9IDB4JXAuIFRoaXMgbXVzdCBub3QgYmUgTlVMTCBvbiBBUk0NCj4g UGxhdGZvcm1zLiIsDQo+ID4+ICsgICAgICBYc2R0QWRkcg0KPiA+PiArICAgICAgKTsNCj4gPj4g KyAgfQ0KPiA+PiArI2VuZGlmDQo+ID4+ICt9DQo+ID4+ICsNCj4gPj4gKy8qKiBUaGlzIGZ1bmN0 aW9uIHBhcnNlcyB0aGUgQUNQSSBSU0RQIHRhYmxlLg0KPiA+PiArDQo+ID4+ICsgIFRoaXMgZnVu Y3Rpb24gaW52b2tlcyB0aGUgcGFyc2VyIGZvciB0aGUgWFNEVCB0YWJsZS4NCj4gPj4gKyAgKiBO b3RlIC0gVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBzdXBwb3J0IHBhcnNpbmcgb2YgUlNEVCB0YWJs ZS4NCj4gPj4gKw0KPiA+PiArICBUaGlzIGZ1bmN0aW9uIGFsc28gcGVyZm9ybXMgYSBSQVcgZHVt cCBvZiB0aGUgQUNQSSB0YWJsZSBhbmQNCj4gPj4gKyAgdmFsaWRhdGVzIHRoZSBjaGVja3N1bS4N Cj4gPj4gKw0KPiA+PiArICBAcGFyYW0gW2luXSBUcmFjZSAgICAgICAgICAgICAgSWYgVFJVRSwg dHJhY2UgdGhlIEFDUEkgZmllbGRzLg0KPiA+PiArICBAcGFyYW0gW2luXSBQdHIgICAgICAgICAg ICAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gPj4gKyAgQHBhcmFt IFtpbl0gQWNwaVRhYmxlTGVuZ3RoICAgIExlbmd0aCBvZiB0aGUgQUNQSSB0YWJsZS4NCj4gPj4g KyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxlUmV2aXNpb24gIFJldmlzaW9uIG9mIHRoZSBBQ1BJIHRh YmxlLg0KPiA+PiArKi8NCj4gPj4gK1ZPSUQNCj4gPj4gK0VGSUFQSQ0KPiA+PiArUGFyc2VBY3Bp UnNkcCAoDQo+ID4+ICsgIElOIEJPT0xFQU4gVHJhY2UsDQo+ID4+ICsgIElOIFVJTlQ4KiAgUHRy LA0KPiA+PiArICBJTiBVSU5UMzIgIEFjcGlUYWJsZUxlbmd0aCwNCj4gPj4gKyAgSU4gVUlOVDgg ICBBY3BpVGFibGVSZXZpc2lvbg0KPiA+PiArICApDQo+ID4+ICt7DQo+ID4+ICsgIGlmIChUcmFj ZSkgew0KPiA+PiArICAgIER1bXBSYXcgKFB0ciwgQWNwaVRhYmxlTGVuZ3RoKTsNCj4gPj4gKyAg ICBWZXJpZnlDaGVja3N1bSAoVFJVRSwgUHRyLCBBY3BpVGFibGVMZW5ndGgpOw0KPiA+PiArICB9 DQo+ID4+ICsNCj4gPj4gKyAgUGFyc2VBY3BpIChUcmFjZSwgMCwgIlJTRFAiLCBQdHIsIEFjcGlU YWJsZUxlbmd0aCwgUEFSU0VSX1BBUkFNUw0KPiAoUnNkcFBhcnNlcikpOw0KPiA+PiArDQo+ID4+ ICsgIC8vIFRoaXMgY29kZSBjdXJyZW50bHkgc3VwcG9ydHMgcGFyc2luZyBvZiBYU0RUIHRhYmxl IG9ubHkNCj4gPj4gKyAgLy8gYW5kIGRvZXMgbm90IHBhcnNlIHRoZSBSU0RUIHRhYmxlLiBQbGF0 Zm9ybXMgcHJvdmlkZSB0aGUNCj4gPj4gKyAgLy8gUlNEVCB0byBlbmFibGUgY29tcGF0aWJpbGl0 eSB3aXRoIEFDUEkgMS4wIG9wZXJhdGluZyBzeXN0ZW1zLg0KPiA+PiArICAvLyBUaGVyZWZvcmUg dGhlIFJTRFQgc2hvdWxkIG5vdCBiZSB1c2VkIG9uIEFSTSBwbGF0Zm9ybXMuDQo+ID4+ICsgIGlm ICgoKlhzZHRBZGRyZXNzKSA9PSAwKSB7DQo+ID4+ICsgICAgSW5jcmVtZW50RXJyb3JDb3VudCAo KTsNCj4gPj4gKyAgICBQcmludCAoTCJFUlJPUjogWFNEVCBQb2ludGVyIGlzIG5vdCBzZXQuXG4i KTsNCj4gPj4gKyAgICByZXR1cm47DQo+ID4+ICsgIH0NCj4gPj4gKw0KPiA+PiArICBQcm9jZXNz QWNwaVRhYmxlICgoVUlOVDgqKShVSU5UTikoKlhzZHRBZGRyZXNzKSk7DQo+ID4+ICt9DQo+ID4+ ICsNCj4gPj4gKy8qKiBSZWdpc3RlciB0aGUgcGFyc2VyLg0KPiA+PiArDQo+ID4+ICsgIEBwYXJh bSBbaW5dICBJbWFnZUhhbmRsZSAgVGhlIGhhbmRsZSB0byB0aGUgaW1hZ2UuDQo+ID4+ICsgIEBw YXJhbSBbaW5dICBTeXN0ZW1UYWJsZSAgUG9pbnRlciB0byB0aGUgU3lzdGVtIFRhYmxlLg0KPiA+ PiArDQo+ID4+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBwYXJzZXIgaXMg cmVnaXN0ZXJlZC4NCj4gPj4gKyAgQHJldHZhbCBFRklfQUxSRUFEWV9TVEFSVEVEICAgVGhlIHBh cnNlciBmb3IgdGhlIEFDUEkgVGFibGUNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgd2FzIGFscmVhZHkgcmVnaXN0ZXJlZC4NCj4gPj4gKyAgQHJldHZhbCBFRklfSU5WQUxJ RF9QQVJBTUVURVIgQSBwYXJhbWV0ZXIgaXMgaW52YWxpZA0KPiA+PiArICBAcmV0dmFsIEVGSV9P VVRfT0ZfUkVTT1VSQ0VTICBObyBzcGFjZSB0byByZWdpc3RlciB0aGUNCj4gPj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VyLg0KPiA+PiArKi8NCj4gPj4gK0VGSV9TVEFU VVMNCj4gPj4gK0VGSUFQSQ0KPiA+PiArUnNkcFBhcnNlckxpYkNvbnN0cnVjdG9yICgNCj4gPj4g KyAgSU4gQ09OU1QgRUZJX0hBTkRMRSAgICAgICAgICAgICAgICBJbWFnZUhhbmRsZSwNCj4gPj4g KyAgSU4gICAgICAgRUZJX1NZU1RFTV9UQUJMRSAgKiBDT05TVCBTeXN0ZW1UYWJsZQ0KPiA+PiAr ICApDQo+ID4+ICt7DQo+ID4+ICsgIHJldHVybiBSZWdpc3RlclBhcnNlciAoDQo+ID4+ICsgICAg ICAgICAgIFJTRFBfVEFCTEVfSU5GTywNCj4gPj4gKyAgICAgICAgICAgUGFyc2VBY3BpUnNkcA0K PiA+PiArICAgICAgICAgICApOw0KPiA+PiArfQ0KPiA+PiArDQo+ID4+ICsvKiogRGVyZWdpc3Rl ciB0aGUgcGFyc2VyLg0KPiA+PiArDQo+ID4+ICsgIEBwYXJhbSBbaW5dICBJbWFnZUhhbmRsZSAg VGhlIGhhbmRsZSB0byB0aGUgaW1hZ2UuDQo+ID4+ICsgIEBwYXJhbSBbaW5dICBTeXN0ZW1UYWJs ZSAgUG9pbnRlciB0byB0aGUgU3lzdGVtIFRhYmxlLg0KPiA+PiArDQo+ID4+ICsgIEByZXR2YWwg RUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBwYXJzZXIgaXMgZGVyZWdpc3RlcmVkLg0KPiA+PiAr ICBAcmV0dmFsIEVGSV9OT1RfRk9VTkQgICAgICAgICBUaGUgcGFyc2VyIHdhcyBub3QgcmVnaXN0 ZXJlZC4NCj4gPj4gKyovDQo+ID4+ICtFRklfU1RBVFVTDQo+ID4+ICtFRklBUEkNCj4gPj4gK1Jz ZHBQYXJzZXJMaWJEZXN0cnVjdG9yICgNCj4gPj4gKyAgSU4gQ09OU1QgRUZJX0hBTkRMRSAgICAg ICAgICAgICAgICBJbWFnZUhhbmRsZSwNCj4gPj4gKyAgSU4gICAgICAgRUZJX1NZU1RFTV9UQUJM RSAgKiBDT05TVCBTeXN0ZW1UYWJsZQ0KPiA+PiArICApDQo+ID4+ICt7DQo+ID4+ICsgIHJldHVy biBEZXJlZ2lzdGVyUGFyc2VyICgNCj4gPj4gKyAgICAgICAgICAgUlNEUF9UQUJMRV9JTkZPDQo+ ID4+ICsgICAgICAgICAgICk7DQo+ID4+ICt9DQo+ID4+IGRpZmYgLS1naXQNCj4gYS9TaGVsbFBr Zy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL1JzZHAvUnNkcFBh cnNlckxpYi4NCj4gaW5mDQo+IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0Nv bW1hbmRMaWIvUGFyc2Vycy9Sc2RwL1JzZHBQYXJzZXJMaWIuDQo+IGluZg0KPiA+PiBuZXcgZmls ZSBtb2RlIDEwMDY0NA0KPiA+PiBpbmRleA0KPiAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwLi5jMzNiOGVmZGI2NmYwNjc4NjJhZTUwDQo+IDlkNjQ1NzgzMTlmYzYzYjlm OA0KPiA+PiAtLS0gL2Rldi9udWxsDQo+ID4+ICsrKw0KPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVm aVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvUnNkcC9Sc2RwUGFyc2VyTGliLg0KPiBp bmYNCj4gPj4gQEAgLTAsMCArMSwzMyBAQA0KPiA+PiArIyMgQGZpbGUNCj4gPj4gKyMNCj4gPj4g KyMgIENvcHlyaWdodCAoYykgMjAxOCwgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQu DQo+ID4+ICsjDQo+ID4+ICsjICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0 ZXJpYWxzDQo+ID4+ICsjICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRo ZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUNCj4gQlNEIExpY2Vuc2UNCj4gPj4gKyMgIHdo aWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUg bGljZW5zZSBtYXkgYmUNCj4gZm91bmQgYXQNCj4gPj4gKyMgIGh0dHA6Ly9vcGVuc291cmNlLm9y Zy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4gPj4gKyMNCj4gPj4gKyMgIFRIRSBQUk9HUkFN IElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiDQo+IEJB U0lTLA0KPiA+PiArIyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBB TlkgS0lORCwgRUlUSEVSDQo+IEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gPj4gKyMjDQo+ID4+ICsN Cj4gPj4gK1tEZWZpbmVzXQ0KPiA+PiArICBJTkZfVkVSU0lPTiAgICA9IDB4MDAwMTAwMTkNCj4g Pj4gKyAgQkFTRV9OQU1FICAgICAgPSBSc2RwUGFyc2VyTGliDQo+ID4+ICsgIEZJTEVfR1VJRCAg ICAgID0gOTM2NUNFQjMtNTJEQy00ODhELTlFMkUtQzRFMUUzMDYyRkE5DQo+ID4+ICsgIFZFUlNJ T05fU1RSSU5HID0gMS4wDQo+ID4+ICsgIE1PRFVMRV9UWVBFICAgID0gRFhFX0RSSVZFUg0KPiA+ PiArICBMSUJSQVJZX0NMQVNTICA9IE5VTEx8RFhFX0RSSVZFUg0KPiA+PiArICBDT05TVFJVQ1RP UiAgICA9IFJzZHBQYXJzZXJMaWJDb25zdHJ1Y3Rvcg0KPiA+PiArICBERVNUUlVDVE9SICAgICA9 IFJzZHBQYXJzZXJMaWJEZXN0cnVjdG9yDQo+ID4+ICsNCj4gPj4gK1tTb3VyY2VzXQ0KPiA+PiAr ICBSc2RwUGFyc2VyLmMNCj4gPj4gKw0KPiA+PiArW1BhY2thZ2VzXQ0KPiA+PiArICBNZGVQa2cv TWRlUGtnLmRlYw0KPiA+PiArICBTaGVsbFBrZy9TaGVsbFBrZy5kZWMNCj4gPj4gKyAgTWRlTW9k dWxlUGtnL01kZU1vZHVsZVBrZy5kZWMNCj4gPj4gKw0KPiA+PiArW0xpYnJhcnlDbGFzc2VzXQ0K PiA+PiArICBTaGVsbEFjcGlWaWV3Q29tbWFuZExpYg0KPiA+PiBkaWZmIC0tZ2l0DQo+IGEvU2hl bGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9TbGl0L1Ns aXRQYXJzZXIuYw0KPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5k TGliL1BhcnNlcnMvU2xpdC9TbGl0UGFyc2VyLmMNCj4gPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQN Cj4gPj4gaW5kZXgNCj4gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u ZjZhNGM0MTZhYTI1OWFmMTZhYTBiNw0KPiA3NmRjYzA1ODYwNGI1YzE3YzINCj4gPj4gLS0tIC9k ZXYvbnVsbA0KPiA+PiArKysNCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3 Q29tbWFuZExpYi9QYXJzZXJzL1NsaXQvU2xpdFBhcnNlci5jDQo+ID4+IEBAIC0wLDAgKzEsMTg3 IEBADQo+ID4+ICsvKioNCj4gPj4gKyAgU0xJVCB0YWJsZSBwYXJzZXINCj4gPj4gKw0KPiA+PiAr ICBDb3B5cmlnaHQgKGMpIDIwMTYgLSAyMDE4LCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNl cnZlZC4NCj4gPj4gKyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFs cw0KPiA+PiArICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJt cyBhbmQgY29uZGl0aW9ucyBvZiB0aGUNCj4gQlNEIExpY2Vuc2UNCj4gPj4gKyAgd2hpY2ggYWNj b21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNl IG1heSBiZQ0KPiBmb3VuZCBhdA0KPiA+PiArICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5z ZXMvYnNkLWxpY2Vuc2UucGhwDQo+ID4+ICsNCj4gPj4gKyAgVEhFIFBST0dSQU0gSVMgRElTVFJJ QlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyINCj4gQkFTSVMsDQo+ID4+ ICsgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJ VEhFUg0KPiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ID4+ICsNCj4gPj4gKyAgQHBhciBSZWZlcmVu Y2Uocyk6DQo+ID4+ICsgICAgLSBBQ1BJIDYuMiBTcGVjaWZpY2F0aW9uIC0gRXJyYXRhIEEsIFNl cHRlbWJlciAyMDE3DQo+ID4+ICsqKi8NCj4gPj4gKw0KPiA+PiArI2luY2x1ZGUgPEluZHVzdHJ5 U3RhbmRhcmQvQWNwaS5oPg0KPiA+PiArI2luY2x1ZGUgPExpYnJhcnkvUHJpbnRMaWIuaD4NCj4g Pj4gKyNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlMaWIuaD4NCj4gPj4gKyNpbmNsdWRlIDxMaWJyYXJ5 L0FjcGlWaWV3L0FjcGlQYXJzZXIuaD4NCj4gPj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0FjcGlWaWV3 L0FjcGlUYWJsZVBhcnNlci5oPg0KPiA+PiArDQo+ID4+ICsvLyBMb2NhbCBWYXJpYWJsZXMNCj4g Pj4gK1NUQVRJQyBDT05TVCBVSU5UNjQqIFNsaXRTeXN0ZW1Mb2NhbGl0eUNvdW50Ow0KPiA+PiAr U1RBVElDIEFDUElfREVTQ1JJUFRJT05fSEVBREVSX0lORk8gQWNwaUhkckluZm87DQo+ID4+ICsN Cj4gPj4gKy8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBBQ1BJIFNMSVQg dGFibGUuDQo+ID4+ICsqLw0KPiA+PiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VSIFNsaXRQYXJz ZXJbXSA9IHsNCj4gPj4gKyAgUEFSU0VfQUNQSV9IRUFERVIgKCZBY3BpSGRySW5mbyksDQo+ID4+ ICsgIHtMIk51bWJlciBvZiBTeXN0ZW0gTG9jYWxpdGllcyIsIDgsIDM2LCBMIjB4JWx4IiwgTlVM TCwNCj4gPj4gKyAgIChWT0lEKiopJlNsaXRTeXN0ZW1Mb2NhbGl0eUNvdW50LCBOVUxMLCBOVUxM fQ0KPiA+PiArfTsNCj4gPj4gKw0KPiA+PiArLyoqIE1hY3JvIHRvIGdldCB0aGUgdmFsdWUgb2Yg YSBTeXN0ZW0gTG9jYWxpdHkNCj4gPj4gKyovDQo+ID4+ICsjZGVmaW5lIFNMSVRfRUxFTUVOVChQ dHIsIGksIGopICooUHRyICsgKGkgKiBMb2NhbGl0eUNvdW50KSArIGopDQo+ID4+ICsNCj4gPj4g Ky8qKiBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgQUNQSSBTTElUIHRhYmxlLg0KPiA+PiArICBX aGVuIHRyYWNlIGlzIGVuYWJsZWQgdGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIFNMSVQgdGFibGUg YW5kDQo+ID4+ICsgIHRyYWNlcyB0aGUgQUNQSSB0YWJsZSBmaWVsZHMuDQo+ID4+ICsNCj4gPj4g KyAgVGhpcyBmdW5jdGlvbiBhbHNvIHZhbGlkYXRlcyBTeXN0ZW0gTG9jYWxpdGllcyBmb3IgdGhl IGZvbGxvd2luZzoNCj4gPj4gKyAgICAtIERpYWdvbmFsIGVsZW1lbnRzIGhhdmUgYSBub3JtYWxp emVkIHZhbHVlIG9mIDEwDQo+ID4+ICsgICAgLSBSZWxhdGl2ZSBkaXN0YW5jZSBmcm9tIFN5c3Rl bSBMb2NhbGl0eSBhdCBpKk4raiBpcyBzYW1lIGFzDQo+ID4+ICsgICAgICBqKk4raQ0KPiA+PiAr DQo+ID4+ICsgIEBwYXJhbSBbaW5dIFRyYWNlICAgICAgICAgICAgICBJZiBUUlVFLCB0cmFjZSB0 aGUgQUNQSSBmaWVsZHMuDQo+ID4+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgICAgICAgICAgICBQ b2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiA+PiArICBAcGFyYW0gW2luXSBB Y3BpVGFibGVMZW5ndGggICAgTGVuZ3RoIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiA+PiArICBAcGFy YW0gW2luXSBBY3BpVGFibGVSZXZpc2lvbiAgUmV2aXNpb24gb2YgdGhlIEFDUEkgdGFibGUuDQo+ ID4+ICsqLw0KPiA+PiArVk9JRA0KPiA+PiArRUZJQVBJDQo+ID4+ICtQYXJzZUFjcGlTbGl0ICgN Cj4gPj4gKyAgSU4gQk9PTEVBTiBUcmFjZSwNCj4gPj4gKyAgSU4gVUlOVDgqICBQdHIsDQo+ID4+ ICsgIElOIFVJTlQzMiAgQWNwaVRhYmxlTGVuZ3RoLA0KPiA+PiArICBJTiBVSU5UOCAgIEFjcGlU YWJsZVJldmlzaW9uDQo+ID4+ICsgICkNCj4gPj4gK3sNCj4gPj4gKyAgVUlOVDMyIE9mZnNldDsN Cj4gPj4gKyAgVUlOVDY0IGk7DQo+ID4+ICsgIFVJTlQ2NCBqOw0KPiA+PiArICBVSU5UNjQgTG9j YWxpdHlDb3VudDsNCj4gPj4gKyAgVUlOVDgqIExvY2FsaXR5UHRyOw0KPiA+PiArICBDSEFSMTYg QnVmZmVyWzgwXTsgIC8vIFVzZWQgZm9yIEFzY2lpTmFtZSBwYXJhbSBvZiBQYXJzZUFjcGkNCj4g Pj4gKw0KPiA+PiArICBpZiAoIVRyYWNlKSB7DQo+ID4+ICsgICAgcmV0dXJuOw0KPiA+PiArICB9 DQo+ID4+ICsNCj4gPj4gKyAgT2Zmc2V0ID0gUGFyc2VBY3BpICgNCj4gPj4gKyAgICAgICAgICAg ICBUUlVFLA0KPiA+PiArICAgICAgICAgICAgIDAsDQo+ID4+ICsgICAgICAgICAgICAgIlNMSVQi LA0KPiA+PiArICAgICAgICAgICAgIFB0ciwNCj4gPj4gKyAgICAgICAgICAgICBBY3BpVGFibGVM ZW5ndGgsDQo+ID4+ICsgICAgICAgICAgICAgUEFSU0VSX1BBUkFNUyAoU2xpdFBhcnNlcikNCj4g Pj4gKyAgICAgICAgICAgICApOw0KPiA+PiArICBMb2NhbGl0eVB0ciA9IFB0ciArIE9mZnNldDsN Cj4gPj4gKw0KPiA+PiArICBMb2NhbGl0eUNvdW50ID0gKlNsaXRTeXN0ZW1Mb2NhbGl0eUNvdW50 Ow0KPiA+PiArICAvLyBXZSBvbmx5IHByaW50IHRoZSBMb2NhbGl0aWVzIGlmIHRoZSBjb3VudCBp cyBsZXNzIHRoYW4gMTYNCj4gPj4gKyAgLy8gSWYgdGhlIGxvY2FsaXR5IGNvdW50IGlzIG1vcmUg dGhhbiAxNiB0aGVuIHJlZmVyIHRvIHRoZQ0KPiA+PiArICAvLyByYXcgZGF0YSBkdW1wLg0KPiA+ PiArICBpZiAoTG9jYWxpdHlDb3VudCA8IDE2KSB7DQo+ID4+ICsgICAgVW5pY29kZVNQcmludCAo DQo+ID4+ICsgICAgICBCdWZmZXIsDQo+ID4+ICsgICAgICBzaXplb2YgKEJ1ZmZlciksDQo+ID4+ ICsgICAgICBMIkVudHJ5WzB4JWx4XVsweCVseF0iLA0KPiA+PiArICAgICAgTG9jYWxpdHlDb3Vu dCwNCj4gPj4gKyAgICAgIExvY2FsaXR5Q291bnQNCj4gPj4gKyAgICAgICk7DQo+ID4+ICsgICAg UHJpbnRGaWVsZE5hbWUgKDAsIEJ1ZmZlcik7DQo+ID4+ICsgICAgUHJpbnQgKEwiXG4iKTsNCj4g Pj4gKyAgICBQcmludCAoTCIgICAgICAgIik7DQo+ID4+ICsgICAgZm9yIChqID0gMDsgaiA8IExv Y2FsaXR5Q291bnQ7IGorKykgew0KPiA+PiArICAgICAgUHJpbnQgKEwiICglM2QpICIsIGopOw0K PiA+PiArICAgIH0NCj4gPj4gKyAgICBQcmludCAoTCJcbiIpOw0KPiA+PiArICAgIGZvciAoaSA9 IDA7IGkgPCBMb2NhbGl0eUNvdW50OyBpKyspIHsNCj4gPj4gKyAgICAgIFByaW50IChMIiAoJTNk KSAiLCBpKTsNCj4gPj4gKyAgICAgIGZvciAoaiA9IDA7IGogPCBMb2NhbGl0eUNvdW50OyBqKysp IHsNCj4gPj4gKyAgICAgICAgUHJpbnQgKEwiICAlM2QgICIsIFNMSVRfRUxFTUVOVCAoTG9jYWxp dHlQdHIsIGksIGopKTsNCj4gPj4gKyAgICAgIH0NCj4gPj4gKyAgICAgIFByaW50IChMIlxuIik7 DQo+ID4+ICsgICAgfQ0KPiA+PiArICB9DQo+ID4+ICsNCj4gPj4gKyAgLy8gVmFsaWRhdGUNCj4g Pj4gKyAgZm9yIChpID0gMDsgaSA8IExvY2FsaXR5Q291bnQ7IGkrKykgew0KPiA+PiArICAgIGZv ciAoaiA9IDA7IGogPCBMb2NhbGl0eUNvdW50OyBqKyspIHsNCj4gPj4gKyAgICAgIC8vIEVsZW1l bnRbeF1beF0gbXVzdCBiZSBlcXVhbCB0byAxMA0KPiA+PiArICAgICAgaWYgKChpID09IGopICYm IChTTElUX0VMRU1FTlQgKExvY2FsaXR5UHRyLCBpLCBqKSAhPSAxMCkpIHsNCj4gPj4gKyAgICAg ICAgSW5jcmVtZW50RXJyb3JDb3VudCAoKTsNCj4gPj4gKyAgICAgICAgUHJpbnQgKA0KPiA+PiAr ICAgICAgICAgIEwiRVJST1I6IERpYWdvbmFsIEVsZW1lbnRbMHglbHhdWzB4JWx4XSAoJTNkKS4i DQo+ID4+ICsgICAgICAgICAgICAiIE5vcm1hbGl6ZWQgVmFsdWUgaXMgbm90IDEwXG4iLA0KPiA+ PiArICAgICAgICAgIGksDQo+ID4+ICsgICAgICAgICAgaiwNCj4gPj4gKyAgICAgICAgICBTTElU X0VMRU1FTlQgKExvY2FsaXR5UHRyLCBpLCBqKQ0KPiA+PiArICAgICAgICAgICk7DQo+ID4+ICsg ICAgICB9DQo+ID4+ICsgICAgICAvLyBFbGVtZW50W2ldW2pdIG11c3QgYmUgZXF1YWwgdG8gRWxl bWVudFtqXVtpXQ0KPiA+PiArICAgICAgaWYgKFNMSVRfRUxFTUVOVCAoTG9jYWxpdHlQdHIsIGks IGopICE9DQo+ID4+ICsgICAgICAgICAgU0xJVF9FTEVNRU5UIChMb2NhbGl0eVB0ciwgaiwgaSkp IHsNCj4gPj4gKyAgICAgICAgSW5jcmVtZW50RXJyb3JDb3VudCAoKTsNCj4gPj4gKyAgICAgICAg UHJpbnQgKA0KPiA+PiArICAgICAgICAgIEwiRVJST1I6IFJlbGF0aXZlIGRpc3RhbmNlcyBmb3Ig RWxlbWVudFsweCVseF1bMHglbHhdICglM2QpDQo+IGFuZCBcbiINCj4gPj4gKyAgICAgICAgICAg IkVsZW1lbnRbMHglbHhdWzB4JWx4XSAoJTNkKSBkbyBub3QgbWF0Y2guXG4iLA0KPiA+PiArICAg ICAgICAgIGksDQo+ID4+ICsgICAgICAgICAgaiwNCj4gPj4gKyAgICAgICAgICBTTElUX0VMRU1F TlQgKExvY2FsaXR5UHRyLCBpLCBqKSwNCj4gPj4gKyAgICAgICAgICBqLA0KPiA+PiArICAgICAg ICAgIGksDQo+ID4+ICsgICAgICAgICAgU0xJVF9FTEVNRU5UIChMb2NhbGl0eVB0ciwgaiwgaSkN Cj4gPj4gKyAgICAgICAgICApOw0KPiA+PiArICAgICAgfQ0KPiA+PiArICAgIH0NCj4gPj4gKyAg fQ0KPiA+PiArfQ0KPiA+PiArDQo+ID4+ICsvKiogUmVnaXN0ZXIgdGhlIHBhcnNlci4NCj4gPj4g Kw0KPiA+PiArICBAcGFyYW0gW2luXSAgSW1hZ2VIYW5kbGUgIFRoZSBoYW5kbGUgdG8gdGhlIGlt YWdlLg0KPiA+PiArICBAcGFyYW0gW2luXSAgU3lzdGVtVGFibGUgIFBvaW50ZXIgdG8gdGhlIFN5 c3RlbSBUYWJsZS4NCj4gPj4gKw0KPiA+PiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAg ICBUaGUgcGFyc2VyIGlzIHJlZ2lzdGVyZWQuDQo+ID4+ICsgIEByZXR2YWwgRUZJX0FMUkVBRFlf U1RBUlRFRCAgIFRoZSBwYXJzZXIgZm9yIHRoZSBBQ1BJIFRhYmxlDQo+ID4+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHdhcyBhbHJlYWR5IHJlZ2lzdGVyZWQuDQo+ID4+ICsgIEBy ZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSIEEgcGFyYW1ldGVyIGlzIGludmFsaWQNCj4gPj4g KyAgQHJldHZhbCBFRklfT1VUX09GX1JFU09VUkNFUyAgTm8gc3BhY2UgdG8gcmVnaXN0ZXIgdGhl DQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlci4NCj4gPj4gKyov DQo+ID4+ICtFRklfU1RBVFVTDQo+ID4+ICtFRklBUEkNCj4gPj4gK1NsaXRQYXJzZXJMaWJDb25z dHJ1Y3RvciAoDQo+ID4+ICsgIElOIENPTlNUIEVGSV9IQU5ETEUgICAgICAgICAgICAgICAgSW1h Z2VIYW5kbGUsDQo+ID4+ICsgIElOICAgICAgIEVGSV9TWVNURU1fVEFCTEUgICogQ09OU1QgU3lz dGVtVGFibGUNCj4gPj4gKyAgKQ0KPiA+PiArew0KPiA+PiArICByZXR1cm4gUmVnaXN0ZXJQYXJz ZXIgKA0KPiA+PiArDQo+IEVGSV9BQ1BJXzZfMl9TWVNURU1fTE9DQUxJVFlfSU5GT1JNQVRJT05f VEFCTEVfU0lHTkFUVVJFLA0KPiA+PiArICAgICAgICAgICBQYXJzZUFjcGlTbGl0DQo+ID4+ICsg ICAgICAgICAgICk7DQo+ID4+ICt9DQo+ID4+ICsNCj4gPj4gKy8qKiBEZXJlZ2lzdGVyIHRoZSBw YXJzZXIuDQo+ID4+ICsNCj4gPj4gKyAgQHBhcmFtIFtpbl0gIEltYWdlSGFuZGxlICBUaGUgaGFu ZGxlIHRvIHRoZSBpbWFnZS4NCj4gPj4gKyAgQHBhcmFtIFtpbl0gIFN5c3RlbVRhYmxlICBQb2lu dGVyIHRvIHRoZSBTeXN0ZW0gVGFibGUuDQo+ID4+ICsNCj4gPj4gKyAgQHJldHZhbCBFRklfU1VD Q0VTUyAgICAgICAgICAgVGhlIHBhcnNlciBpcyBkZXJlZ2lzdGVyZWQuDQo+ID4+ICsgIEByZXR2 YWwgRUZJX05PVF9GT1VORCAgICAgICAgIFRoZSBwYXJzZXIgd2FzIG5vdCByZWdpc3RlcmVkLg0K PiA+PiArKi8NCj4gPj4gK0VGSV9TVEFUVVMNCj4gPj4gK0VGSUFQSQ0KPiA+PiArU2xpdFBhcnNl ckxpYkRlc3RydWN0b3IgKA0KPiA+PiArICBJTiBDT05TVCBFRklfSEFORExFICAgICAgICAgICAg ICAgIEltYWdlSGFuZGxlLA0KPiA+PiArICBJTiAgICAgICBFRklfU1lTVEVNX1RBQkxFICAqIENP TlNUIFN5c3RlbVRhYmxlDQo+ID4+ICsgICkNCj4gPj4gK3sNCj4gPj4gKyAgcmV0dXJuIERlcmVn aXN0ZXJQYXJzZXIgKA0KPiA+PiArDQo+IEVGSV9BQ1BJXzZfMl9TWVNURU1fTE9DQUxJVFlfSU5G T1JNQVRJT05fVEFCTEVfU0lHTkFUVVJFDQo+ID4+ICsgICAgICAgICAgICk7DQo+ID4+ICt9DQo+ ID4+IGRpZmYgLS1naXQNCj4gYS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29t bWFuZExpYi9QYXJzZXJzL1NsaXQvU2xpdFBhcnNlckxpYi5pbmYNCj4gYi9TaGVsbFBrZy9MaWJy YXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL1NsaXQvU2xpdFBhcnNlckxp Yi5pbmYNCj4gPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPj4gaW5kZXgNCj4gMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTY0MzBlZDlhOThmMWNjY2NkZTA3NQ0K PiAyMmI0YmY5MGQ2ZDIyY2Q3OTINCj4gPj4gLS0tIC9kZXYvbnVsbA0KPiA+PiArKysNCj4gYi9T aGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL1NsaXQv U2xpdFBhcnNlckxpYi5pbmYNCj4gPj4gQEAgLTAsMCArMSwzMyBAQA0KPiA+PiArIyMgQGZpbGUN Cj4gPj4gKyMNCj4gPj4gKyMgIENvcHlyaWdodCAoYykgMjAxNyAtIDIwMTgsIEFSTSBMaW1pdGVk LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiA+PiArIw0KPiA+PiArIyAgVGhpcyBwcm9ncmFtIGFu ZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiA+PiArIyAgYXJlIGxpY2Vuc2VkIGFuZCBt YWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlDQo+IEJT RCBMaWNlbnNlDQo+ID4+ICsjICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4g IFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlDQo+IGZvdW5kIGF0DQo+ID4+ICsj ICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ID4+ICsj DQo+ID4+ICsjICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VO U0UgT04gQU4gIkFTIElTIg0KPiBCQVNJUywNCj4gPj4gKyMgIFdJVEhPVVQgV0FSUkFOVElFUyBP UiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUg0KPiBFWFBSRVNTIE9SIElNUExJ RUQuDQo+ID4+ICsjIw0KPiA+PiArDQo+ID4+ICtbRGVmaW5lc10NCj4gPj4gKyAgSU5GX1ZFUlNJ T04gICAgPSAweDAwMDEwMDE5DQo+ID4+ICsgIEJBU0VfTkFNRSAgICAgID0gU2xpdFBhcnNlckxp Yg0KPiA+PiArICBGSUxFX0dVSUQgICAgICA9IDNEQ0Y3MzMzLTM2N0ItNEQ0MC04NTZBLUZGMEY3 M0ZCNkI0OQ0KPiA+PiArICBWRVJTSU9OX1NUUklORyA9IDEuMA0KPiA+PiArICBNT0RVTEVfVFlQ RSAgICA9IERYRV9EUklWRVINCj4gPj4gKyAgTElCUkFSWV9DTEFTUyAgPSBOVUxMfERYRV9EUklW RVINCj4gPj4gKyAgQ09OU1RSVUNUT1IgICAgPSBTbGl0UGFyc2VyTGliQ29uc3RydWN0b3INCj4g Pj4gKyAgREVTVFJVQ1RPUiAgICAgPSBTbGl0UGFyc2VyTGliRGVzdHJ1Y3Rvcg0KPiA+PiArDQo+ ID4+ICtbU291cmNlc10NCj4gPj4gKyAgU2xpdFBhcnNlci5jDQo+ID4+ICsNCj4gPj4gK1tQYWNr YWdlc10NCj4gPj4gKyAgTWRlUGtnL01kZVBrZy5kZWMNCj4gPj4gKyAgU2hlbGxQa2cvU2hlbGxQ a2cuZGVjDQo+ID4+ICsgIE1kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVjDQo+ID4+ICsNCj4g Pj4gK1tMaWJyYXJ5Q2xhc3Nlc10NCj4gPj4gKyAgU2hlbGxBY3BpVmlld0NvbW1hbmRMaWINCj4g Pj4gZGlmZiAtLWdpdA0KPiBhL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21t YW5kTGliL1BhcnNlcnMvU3Bjci9TcGNyUGFyc2VyLmMNCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1Vl ZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL1NwY3IvU3BjclBhcnNlci5jDQo+ID4+ IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4+IGluZGV4DQo+IDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI0Njg3YTcwOGJiODI4YzUzY2ViNw0KPiBhNjFlOWUxMWNl MDBiNTgzY2Q1DQo+ID4+IC0tLSAvZGV2L251bGwNCj4gPj4gKysrDQo+IGIvU2hlbGxQa2cvTGli cmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9TcGNyL1NwY3JQYXJzZXIu Yw0KPiA+PiBAQCAtMCwwICsxLDIxMyBAQA0KPiA+PiArLyoqDQo+ID4+ICsgIFNQQ1IgdGFibGUg cGFyc2VyDQo+ID4+ICsNCj4gPj4gKyAgQ29weXJpZ2h0IChjKSAyMDE2IC0gMjAxOCwgQVJNIExp bWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ID4+ICsgIFRoaXMgcHJvZ3JhbSBhbmQgdGhl IGFjY29tcGFueWluZyBtYXRlcmlhbHMNCj4gPj4gKyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2 YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlDQo+IEJTRCBMaWNl bnNlDQo+ID4+ICsgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1 bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUNCj4gZm91bmQgYXQNCj4gPj4gKyAgaHR0cDov L29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiA+PiArDQo+ID4+ICsg IFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAi QVMgSVMiDQo+IEJBU0lTLA0KPiA+PiArICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5U QVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVINCj4gRVhQUkVTUyBPUiBJTVBMSUVELg0KPiA+PiAr DQo+ID4+ICsgIEBwYXIgUmVmZXJlbmNlKHMpOg0KPiA+PiArICAgIC0gTWljcm9zb2Z0IFNlcmlh bCBQb3J0IENvbnNvbGUgUmVkaXJlY3Rpb24gVGFibGUNCj4gPj4gKyAgICAgIFNwZWNpZmljYXRp b24gLSBWZXJzaW9uIDEuMDMgLSBBdWd1c3QgMTAsIDIwMTUuDQo+ID4+ICsqKi8NCj4gPj4gKw0K PiA+PiArI2luY2x1ZGUgPEluZHVzdHJ5U3RhbmRhcmQvQWNwaS5oPg0KPiA+PiArI2luY2x1ZGUg PEluZHVzdHJ5U3RhbmRhcmQvU2VyaWFsUG9ydENvbnNvbGVSZWRpcmVjdGlvblRhYmxlLmg+DQo+ ID4+ICsjaW5jbHVkZSA8TGlicmFyeS9VZWZpTGliLmg+DQo+ID4+ICsjaW5jbHVkZSA8TGlicmFy eS9BY3BpVmlldy9BY3BpUGFyc2VyLmg+DQo+ID4+ICsjaW5jbHVkZSA8TGlicmFyeS9BY3BpVmll dy9BY3BpVGFibGVQYXJzZXIuaD4NCj4gPj4gKw0KPiA+PiArLy8gTG9jYWwgdmFyaWFibGVzDQo+ ID4+ICtTVEFUSUMgQUNQSV9ERVNDUklQVElPTl9IRUFERVJfSU5GTyBBY3BpSGRySW5mbzsNCj4g Pj4gKw0KPiA+PiArLyoqIFRoaXMgZnVuY3Rpb24gdmFsaWRhdGVzIHRoZSBJbnRlcnJ1cHQgVHlw ZS4NCj4gPj4gKw0KPiA+PiArICBAcGFyYW0gW2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0 YXJ0IG9mIHRoZSBmaWVsZCBkYXRhLg0KPiA+PiArICBAcGFyYW0gW2luXSBDb250ZXh0IFBvaW50 ZXIgdG8gY29udGV4dCBzcGVjaWZpYyBpbmZvcm1hdGlvbiBlLmcuIHRoaXMNCj4gPj4gKyAgICAg ICAgICAgICAgICAgICAgICBjb3VsZCBiZSBhIHBvaW50ZXIgdG8gdGhlIEFDUEkgdGFibGUgaGVh ZGVyLg0KPiA+PiArKi8NCj4gPj4gK1NUQVRJQw0KPiA+PiArVk9JRA0KPiA+PiArRUZJQVBJDQo+ ID4+ICtWYWxpZGF0ZUludGVycnVwdFR5cGUgKA0KPiA+PiArICBJTiBVSU5UOCogUHRyLA0KPiA+ PiArICBJTiBWT0lEKiAgQ29udGV4dA0KPiA+PiArICApOw0KPiA+PiArDQo+ID4+ICsvKiogVGhp cyBmdW5jdGlvbiB2YWxpZGF0ZXMgdGhlIElycS4NCj4gPj4gKw0KPiA+PiArICBAcGFyYW0gW2lu XSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBmaWVsZCBkYXRhLg0KPiA+PiAr ICBAcGFyYW0gW2luXSBDb250ZXh0IFBvaW50ZXIgdG8gY29udGV4dCBzcGVjaWZpYyBpbmZvcm1h dGlvbiBlLmcuIHRoaXMNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICBjb3VsZCBiZSBhIHBv aW50ZXIgdG8gdGhlIEFDUEkgdGFibGUgaGVhZGVyLg0KPiA+PiArKi8NCj4gPj4gK1NUQVRJQw0K PiA+PiArVk9JRA0KPiA+PiArRUZJQVBJDQo+ID4+ICtWYWxpZGF0ZUlycSAoDQo+ID4+ICsgIElO IFVJTlQ4KiBQdHIsDQo+ID4+ICsgIElOIFZPSUQqICBDb250ZXh0DQo+ID4+ICsgICk7DQo+ID4+ ICsNCj4gPj4gKy8qKiBBbiBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBBQ1BJIFNQ Q1IgVGFibGUuDQo+ID4+ICsqLw0KPiA+PiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VSIFNwY3JQ YXJzZXJbXSA9IHsNCj4gPj4gKyAgUEFSU0VfQUNQSV9IRUFERVIgKCZBY3BpSGRySW5mbyksDQo+ ID4+ICsgIHtMIkludGVyZmFjZSBUeXBlIiwgMSwgMzYsIEwiJWQiLCBOVUxMLCBOVUxMLCBOVUxM LCBOVUxMfSwNCj4gPj4gKyAge0wiUmVzZXJ2ZWQiLCAzLCAzNywgTCIleCAleCAleCIsIER1bXAz Q2hhcnMsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+PiArICB7TCJCYXNlIEFkZHJlc3MiLCAxMiwg NDAsIE5VTEwsIER1bXBHYXMsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+PiArICB7TCJJbnRlcnJ1 cHQgVHlwZSIsIDEsIDUyLCBMIiVkIiwgTlVMTCwgTlVMTCwgVmFsaWRhdGVJbnRlcnJ1cHRUeXBl LA0KPiBOVUxMfSwNCj4gPj4gKyAge0wiSVJRIiwgMSwgNTMsIEwiJWQiLCBOVUxMLCBOVUxMLCBW YWxpZGF0ZUlycSwgTlVMTH0sDQo+ID4+ICsgIHtMIkdsb2JhbCBTeXN0ZW0gSW50ZXJydXB0Iiwg NCwgNTQsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+PiArICB7TCJCYXVk IFJhdGUiLCAxLCA1OCwgTCIlZCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+PiArICB7 TCJQYXJpdHkiLCAxLCA1OSwgTCIlZCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+PiAr ICB7TCJTdG9wIEJpdHMiLCAxLCA2MCwgTCIlZCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0K PiA+PiArICB7TCJGbG93IENvbnRyb2wiLCAxLCA2MSwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVM TCwgTlVMTH0sDQo+ID4+ICsgIHtMIlRlcm1pbmFsIFR5cGUiLCAxLCA2MiwgTCIlZCIsIE5VTEws IE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+PiArICB7TCJSZXNlcnZlZCIsIDEsIDYzLCBMIiV4Iiwg TlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4+ICsNCj4gPj4gKyAge0wiUENJIERldmljZSBJ RCIsIDIsIDY0LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wi UENJIFZlbmRvciBJRCIsIDIsIDY2LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwN Cj4gPj4gKyAge0wiUENJIEJ1cyBOdW1iZXIiLCAxLCA2OCwgTCIweCV4IiwgTlVMTCwgTlVMTCwg TlVMTCwgTlVMTH0sDQo+ID4+ICsgIHtMIlBDSSBEZXZpY2UgTnVtYmVyIiwgMSwgNjksIEwiMHgl eCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+PiArICB7TCJQQ0kgRnVuY3Rpb24gTnVt YmVyIiwgMSwgNzAsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+PiArICB7 TCJQQ0kgRmxhZ3MiLCA0LCA3MSwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ ID4+ICsgIHtMIlBDSSBTZWdtZW50IiwgMSwgNzUsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEws IE5VTEx9LA0KPiA+PiArICB7TCJSZXNlcnZlZCIsIDQsIDc2LCBMIiV4IiwgTlVMTCwgTlVMTCwg TlVMTCwgTlVMTH0NCj4gPj4gK307DQo+ID4+ICsNCj4gPj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHZh bGlkYXRlcyB0aGUgSW50ZXJydXB0IFR5cGUuDQo+ID4+ICsNCj4gPj4gKyAgQHBhcmFtIFtpbl0g UHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgZmllbGQgZGF0YS4NCj4gPj4gKyAg QHBhcmFtIFtpbl0gQ29udGV4dCBQb2ludGVyIHRvIGNvbnRleHQgc3BlY2lmaWMgaW5mb3JtYXRp b24gZS5nLiB0aGlzDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgY291bGQgYmUgYSBwb2lu dGVyIHRvIHRoZSBBQ1BJIHRhYmxlIGhlYWRlci4NCj4gPj4gKyovDQo+ID4+ICtTVEFUSUMNCj4g Pj4gK1ZPSUQNCj4gPj4gK0VGSUFQSQ0KPiA+PiArVmFsaWRhdGVJbnRlcnJ1cHRUeXBlICgNCj4g Pj4gKyAgSU4gVUlOVDgqIFB0ciwNCj4gPj4gKyAgSU4gVk9JRCogIENvbnRleHQNCj4gPj4gKyAg KQ0KPiA+PiArew0KPiA+PiArI2lmIGRlZmluZWQgKE1ERV9DUFVfQVJNKSB8fCBkZWZpbmVkIChN REVfQ1BVX0FBUkNINjQpDQo+ID4+ICsgIFVJTlQ4IEludGVycnVwdFR5cGUgPSAqUHRyOw0KPiA+ PiArICBpZiAoSW50ZXJydXB0VHlwZSAhPQ0KPiA+PiArDQo+IEVGSV9BQ1BJX1NFUklBTF9QT1JU X0NPTlNPTEVfUkVESVJFQ1RJT05fVEFCTEVfSU5URVJSVVBUX1RZUEVfR0lDKQ0KPiB7DQo+ID4+ ICsgICAgSW5jcmVtZW50RXJyb3JDb3VudCAoKTsNCj4gPj4gKyAgICBQcmludCAoDQo+ID4+ICsg ICAgICBMIlxuRVJST1I6IEludGVycnVwdFR5cGUgPSAlZC4gVGhpcyBtdXN0IGJlIDggb24gQVJN IFBsYXRmb3JtcyIsDQo+ID4+ICsgICAgICBJbnRlcnJ1cHRUeXBlDQo+ID4+ICsgICAgICApOw0K PiA+PiArICB9DQo+ID4+ICsjZW5kaWYNCj4gPj4gK30NCj4gPj4gKw0KPiA+PiArLyoqIFRoaXMg ZnVuY3Rpb24gdmFsaWRhdGVzIHRoZSBJcnEuDQo+ID4+ICsNCj4gPj4gKyAgQHBhcmFtIFtpbl0g UHRyICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgZmllbGQgZGF0YS4NCj4gPj4gKyAg QHBhcmFtIFtpbl0gQ29udGV4dCBQb2ludGVyIHRvIGNvbnRleHQgc3BlY2lmaWMgaW5mb3JtYXRp b24gZS5nLiB0aGlzDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgY291bGQgYmUgYSBwb2lu dGVyIHRvIHRoZSBBQ1BJIHRhYmxlIGhlYWRlci4NCj4gPj4gKyovDQo+ID4+ICtTVEFUSUMNCj4g Pj4gK1ZPSUQNCj4gPj4gK0VGSUFQSQ0KPiA+PiArVmFsaWRhdGVJcnEgKA0KPiA+PiArICBJTiBV SU5UOCogUHRyLA0KPiA+PiArICBJTiBWT0lEKiAgQ29udGV4dA0KPiA+PiArICApDQo+ID4+ICt7 DQo+ID4+ICsjaWYgZGVmaW5lZCAoTURFX0NQVV9BUk0pIHx8IGRlZmluZWQgKE1ERV9DUFVfQUFS Q0g2NCkNCj4gPj4gKyAgVUlOVDggSXJxID0gKlB0cjsNCj4gPj4gKyAgaWYgKElycSAhPSAwKSB7 DQo+ID4+ICsgICAgSW5jcmVtZW50RXJyb3JDb3VudCAoKTsNCj4gPj4gKyAgICBQcmludCAoDQo+ ID4+ICsgICAgICBMIlxuRVJST1I6IElycSA9ICVkLiBUaGlzIG11c3QgYmUgemVybyBvbiBBUk0g UGxhdGZvcm1zXG4iLA0KPiA+PiArICAgICAgSXJxDQo+ID4+ICsgICAgICApOw0KPiA+PiArICB9 DQo+ID4+ICsjZW5kaWYNCj4gPj4gK30NCj4gPj4gKw0KPiA+PiArLyoqIFRoaXMgZnVuY3Rpb24g cGFyc2VzIHRoZSBBQ1BJIFNQQ1IgdGFibGUuDQo+ID4+ICsgIFdoZW4gdHJhY2UgaXMgZW5hYmxl ZCB0aGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgU1BDUiB0YWJsZSBhbmQNCj4gPj4gKyAgdHJhY2Vz IHRoZSBBQ1BJIHRhYmxlIGZpZWxkcy4NCj4gPj4gKw0KPiA+PiArICBUaGlzIGZ1bmN0aW9uIGFs c28gcGVyZm9ybXMgdmFsaWRhdGlvbnMgb2YgdGhlIEFDUEkgdGFibGUgZmllbGRzLg0KPiA+PiAr DQo+ID4+ICsgIEBwYXJhbSBbaW5dIFRyYWNlICAgICAgICAgICAgICBJZiBUUlVFLCB0cmFjZSB0 aGUgQUNQSSBmaWVsZHMuDQo+ID4+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgICAgICAgICAgICBQ b2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiA+PiArICBAcGFyYW0gW2luXSBB Y3BpVGFibGVMZW5ndGggICAgTGVuZ3RoIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiA+PiArICBAcGFy YW0gW2luXSBBY3BpVGFibGVSZXZpc2lvbiAgUmV2aXNpb24gb2YgdGhlIEFDUEkgdGFibGUuDQo+ ID4+ICsqLw0KPiA+PiArVk9JRA0KPiA+PiArRUZJQVBJDQo+ID4+ICtQYXJzZUFjcGlTcGNyICgN Cj4gPj4gKyAgSU4gQk9PTEVBTiBUcmFjZSwNCj4gPj4gKyAgSU4gVUlOVDgqICBQdHIsDQo+ID4+ ICsgIElOIFVJTlQzMiAgQWNwaVRhYmxlTGVuZ3RoLA0KPiA+PiArICBJTiBVSU5UOCAgIEFjcGlU YWJsZVJldmlzaW9uDQo+ID4+ICsgICkNCj4gPj4gK3sNCj4gPj4gKyAgaWYgKCFUcmFjZSkgew0K PiA+PiArICAgIHJldHVybjsNCj4gPj4gKyAgfQ0KPiA+PiArDQo+ID4+ICsgIC8vIER1bXAgdGhl IFNQQ1INCj4gPj4gKyAgUGFyc2VBY3BpICgNCj4gPj4gKyAgICBUUlVFLA0KPiA+PiArICAgIDAs DQo+ID4+ICsgICAgIlNQQ1IiLA0KPiA+PiArICAgIFB0ciwNCj4gPj4gKyAgICBBY3BpVGFibGVM ZW5ndGgsDQo+ID4+ICsgICAgUEFSU0VSX1BBUkFNUyAoU3BjclBhcnNlcikNCj4gPj4gKyAgICAp Ow0KPiA+PiArfQ0KPiA+PiArDQo+ID4+ICsvKiogUmVnaXN0ZXIgdGhlIHBhcnNlci4NCj4gPj4g Kw0KPiA+PiArICBAcGFyYW0gW2luXSAgSW1hZ2VIYW5kbGUgIFRoZSBoYW5kbGUgdG8gdGhlIGlt YWdlLg0KPiA+PiArICBAcGFyYW0gW2luXSAgU3lzdGVtVGFibGUgIFBvaW50ZXIgdG8gdGhlIFN5 c3RlbSBUYWJsZS4NCj4gPj4gKw0KPiA+PiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAg ICBUaGUgcGFyc2VyIGlzIHJlZ2lzdGVyZWQuDQo+ID4+ICsgIEByZXR2YWwgRUZJX0FMUkVBRFlf U1RBUlRFRCAgIFRoZSBwYXJzZXIgZm9yIHRoZSBBQ1BJIFRhYmxlDQo+ID4+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHdhcyBhbHJlYWR5IHJlZ2lzdGVyZWQuDQo+ID4+ICsgIEBy ZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSIEEgcGFyYW1ldGVyIGlzIGludmFsaWQNCj4gPj4g KyAgQHJldHZhbCBFRklfT1VUX09GX1JFU09VUkNFUyAgTm8gc3BhY2UgdG8gcmVnaXN0ZXIgdGhl DQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlci4NCj4gPj4gKyov DQo+ID4+ICtFRklfU1RBVFVTDQo+ID4+ICtFRklBUEkNCj4gPj4gK1NwY3JQYXJzZXJMaWJDb25z dHJ1Y3RvciAoDQo+ID4+ICsgIElOIENPTlNUIEVGSV9IQU5ETEUgICAgICAgICAgICAgICAgSW1h Z2VIYW5kbGUsDQo+ID4+ICsgIElOICAgICAgIEVGSV9TWVNURU1fVEFCTEUgICogQ09OU1QgU3lz dGVtVGFibGUNCj4gPj4gKyAgKQ0KPiA+PiArew0KPiA+PiArICByZXR1cm4gUmVnaXN0ZXJQYXJz ZXIgKA0KPiA+PiArDQo+IEVGSV9BQ1BJXzZfMl9TRVJJQUxfUE9SVF9DT05TT0xFX1JFRElSRUNU SU9OX1RBQkxFX1NJR05BVFVSRSwNCj4gPj4gKyAgICAgICAgICAgUGFyc2VBY3BpU3Bjcg0KPiA+ PiArICAgICAgICAgICApOw0KPiA+PiArfQ0KPiA+PiArDQo+ID4+ICsvKiogRGVyZWdpc3RlciB0 aGUgcGFyc2VyLg0KPiA+PiArDQo+ID4+ICsgIEBwYXJhbSBbaW5dICBJbWFnZUhhbmRsZSAgVGhl IGhhbmRsZSB0byB0aGUgaW1hZ2UuDQo+ID4+ICsgIEBwYXJhbSBbaW5dICBTeXN0ZW1UYWJsZSAg UG9pbnRlciB0byB0aGUgU3lzdGVtIFRhYmxlLg0KPiA+PiArDQo+ID4+ICsgIEByZXR2YWwgRUZJ X1NVQ0NFU1MgICAgICAgICAgIFRoZSBwYXJzZXIgaXMgZGVyZWdpc3RlcmVkLg0KPiA+PiArICBA cmV0dmFsIEVGSV9OT1RfRk9VTkQgICAgICAgICBUaGUgcGFyc2VyIHdhcyBub3QgcmVnaXN0ZXJl ZC4NCj4gPj4gKyovDQo+ID4+ICtFRklfU1RBVFVTDQo+ID4+ICtFRklBUEkNCj4gPj4gK1NwY3JQ YXJzZXJMaWJEZXN0cnVjdG9yICgNCj4gPj4gKyAgSU4gQ09OU1QgRUZJX0hBTkRMRSAgICAgICAg ICAgICAgICBJbWFnZUhhbmRsZSwNCj4gPj4gKyAgSU4gICAgICAgRUZJX1NZU1RFTV9UQUJMRSAg KiBDT05TVCBTeXN0ZW1UYWJsZQ0KPiA+PiArICApDQo+ID4+ICt7DQo+ID4+ICsgIHJldHVybiBE ZXJlZ2lzdGVyUGFyc2VyICgNCj4gPj4gKw0KPiBFRklfQUNQSV82XzJfU0VSSUFMX1BPUlRfQ09O U09MRV9SRURJUkVDVElPTl9UQUJMRV9TSUdOQVRVUkUNCj4gPj4gKyAgICAgICAgICAgKTsNCj4g Pj4gK30NCj4gPj4gZGlmZiAtLWdpdA0KPiBhL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNw aVZpZXdDb21tYW5kTGliL1BhcnNlcnMvU3Bjci9TcGNyUGFyc2VyTGliLmkNCj4gbmYNCj4gYi9T aGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL1NwY3Iv U3BjclBhcnNlckxpYi5pDQo+IG5mDQo+ID4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4+IGlu ZGV4DQo+IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk0YWRkMzFk ZTAzMGFiNzc3MWZjMw0KPiAwM2ViYTdiOTIyMjcwMjY1OTcwDQo+ID4+IC0tLSAvZGV2L251bGwN Cj4gPj4gKysrDQo+IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRM aWIvUGFyc2Vycy9TcGNyL1NwY3JQYXJzZXJMaWIuaQ0KPiBuZg0KPiA+PiBAQCAtMCwwICsxLDMz IEBADQo+ID4+ICsjIyBAZmlsZQ0KPiA+PiArIw0KPiA+PiArIyAgQ29weXJpZ2h0IChjKSAyMDE3 IC0gMjAxOCwgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ID4+ICsjDQo+ID4+ ICsjICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ID4+ICsj ICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29u ZGl0aW9ucyBvZiB0aGUNCj4gQlNEIExpY2Vuc2UNCj4gPj4gKyMgIHdoaWNoIGFjY29tcGFuaWVz IHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUN Cj4gZm91bmQgYXQNCj4gPj4gKyMgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2Qt bGljZW5zZS5waHANCj4gPj4gKyMNCj4gPj4gKyMgIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVE IFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiDQo+IEJBU0lTLA0KPiA+PiArIyAg V0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVS DQo+IEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gPj4gKyMjDQo+ID4+ICsNCj4gPj4gK1tEZWZpbmVz XQ0KPiA+PiArICBJTkZfVkVSU0lPTiAgICA9IDB4MDAwMTAwMTkNCj4gPj4gKyAgQkFTRV9OQU1F ICAgICAgPSBTcGNyUGFyc2VyTGliDQo+ID4+ICsgIEZJTEVfR1VJRCAgICAgID0gMDhDMTdDNEMt RTYyRC00QUU0LTk1QzUtREVGNDJBMjRBNTZDDQo+ID4+ICsgIFZFUlNJT05fU1RSSU5HID0gMS4w DQo+ID4+ICsgIE1PRFVMRV9UWVBFICAgID0gRFhFX0RSSVZFUg0KPiA+PiArICBMSUJSQVJZX0NM QVNTICA9IE5VTEx8RFhFX0RSSVZFUg0KPiA+PiArICBDT05TVFJVQ1RPUiAgICA9IFNwY3JQYXJz ZXJMaWJDb25zdHJ1Y3Rvcg0KPiA+PiArICBERVNUUlVDVE9SICAgICA9IFNwY3JQYXJzZXJMaWJE ZXN0cnVjdG9yDQo+ID4+ICsNCj4gPj4gK1tTb3VyY2VzXQ0KPiA+PiArICBTcGNyUGFyc2VyLmMN Cj4gPj4gKw0KPiA+PiArW1BhY2thZ2VzXQ0KPiA+PiArICBNZGVQa2cvTWRlUGtnLmRlYw0KPiA+ PiArICBTaGVsbFBrZy9TaGVsbFBrZy5kZWMNCj4gPj4gKyAgTWRlTW9kdWxlUGtnL01kZU1vZHVs ZVBrZy5kZWMNCj4gPj4gKw0KPiA+PiArW0xpYnJhcnlDbGFzc2VzXQ0KPiA+PiArICBTaGVsbEFj cGlWaWV3Q29tbWFuZExpYg0KPiA+PiBkaWZmIC0tZ2l0DQo+IGEvU2hlbGxQa2cvTGlicmFyeS9V ZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9TcmF0L1NyYXRQYXJzZXIuYw0KPiBi L1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvU3Jh dC9TcmF0UGFyc2VyLmMNCj4gPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPj4gaW5kZXgNCj4g MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmVlNTFhN2VlNmEzNTUz ZmM0MGQxDQo+IDc2NzFhY2Q2NzFmMGJlMDFlNTkNCj4gPj4gLS0tIC9kZXYvbnVsbA0KPiA+PiAr KysNCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJz ZXJzL1NyYXQvU3JhdFBhcnNlci5jDQo+ID4+IEBAIC0wLDAgKzEsMzc1IEBADQo+ID4+ICsvKioN Cj4gPj4gKyAgU1JBVCB0YWJsZSBwYXJzZXINCj4gPj4gKw0KPiA+PiArICBDb3B5cmlnaHQgKGMp IDIwMTYgLSAyMDE4LCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gPj4gKyAg VGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiA+PiArICBhcmUg bGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9u cyBvZiB0aGUNCj4gQlNEIExpY2Vuc2UNCj4gPj4gKyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBk aXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZQ0KPiBmb3Vu ZCBhdA0KPiA+PiArICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2Uu cGhwDQo+ID4+ICsNCj4gPj4gKyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhF IEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyINCj4gQkFTSVMsDQo+ID4+ICsgIFdJVEhPVVQgV0FS UkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUg0KPiBFWFBSRVNT IE9SIElNUExJRUQuDQo+ID4+ICsNCj4gPj4gKyAgQHBhciBSZWZlcmVuY2Uocyk6DQo+ID4+ICsg ICAgLSBBQ1BJIDYuMiBTcGVjaWZpY2F0aW9uIC0gRXJyYXRhIEEsIFNlcHRlbWJlciAyMDE3DQo+ ID4+ICsqKi8NCj4gPj4gKw0KPiA+PiArI2luY2x1ZGUgPEluZHVzdHJ5U3RhbmRhcmQvQWNwaS5o Pg0KPiA+PiArI2luY2x1ZGUgPExpYnJhcnkvUHJpbnRMaWIuaD4NCj4gPj4gKyNpbmNsdWRlIDxM aWJyYXJ5L1VlZmlMaWIuaD4NCj4gPj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0FjcGlWaWV3L0FjcGlQ YXJzZXIuaD4NCj4gPj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0FjcGlWaWV3L0FjcGlUYWJsZVBhcnNl ci5oPg0KPiA+PiArDQo+ID4+ICsvLyBMb2NhbCBWYXJpYWJsZXMNCj4gPj4gK1NUQVRJQyBDT05T VCBVSU5UOCogU3JhdFJBVHlwZTsNCj4gPj4gK1NUQVRJQyBDT05TVCBVSU5UOCogU3JhdFJBTGVu Z3RoOw0KPiA+PiArU1RBVElDIEFDUElfREVTQ1JJUFRJT05fSEVBREVSX0lORk8gQWNwaUhkcklu Zm87DQo+ID4+ICsNCj4gPj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHZhbGlkYXRlcyB0aGUgUmVzZXJ2 ZWQgZmllbGQgaW4gdGhlIFNSQVQgdGFibGUgaGVhZGVyLg0KPiA+PiArDQo+ID4+ICsgIEBwYXJh bSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGZpZWxkIGRhdGEuDQo+ ID4+ICsgIEBwYXJhbSBbaW5dIENvbnRleHQgUG9pbnRlciB0byBjb250ZXh0IHNwZWNpZmljIGlu Zm9ybWF0aW9uIGUuZy4gdGhpcw0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgIGNvdWxkIGJl IGEgcG9pbnRlciB0byB0aGUgQUNQSSB0YWJsZSBoZWFkZXIuDQo+ID4+ICsqLw0KPiA+PiArU1RB VElDDQo+ID4+ICtWT0lEDQo+ID4+ICtFRklBUEkNCj4gPj4gK1ZhbGlkYXRlU3JhdFJlc2VydmVk ICgNCj4gPj4gKyAgSU4gVUlOVDgqIFB0ciwNCj4gPj4gKyAgSU4gVk9JRCogIENvbnRleHQNCj4g Pj4gKyAgKTsNCj4gPj4gKw0KPiA+PiArLyoqIFRoaXMgZnVuY3Rpb24gdHJhY2VzIHRoZSBBUElD IFByb3hpbWl0eSBEb21haW4gZmllbGQuDQo+ID4+ICsNCj4gPj4gKyAgQHBhcmFtIFtpbl0gRm9y bWF0ICBGb3JtYXQgc3RyaW5nIGZvciB0cmFjaW5nIHRoZSBkYXRhLg0KPiA+PiArICBAcGFyYW0g W2luXSBQdHIgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ID4+ICsq Lw0KPiA+PiArU1RBVElDDQo+ID4+ICtWT0lEDQo+ID4+ICtEdW1wU3JhdEFwaWNQcm94aW1pdHkg KA0KPiA+PiArICBJTiAgQ09OU1QgQ0hBUjE2KiAgRm9ybWF0LA0KPiA+PiArICBJTiAgVUlOVDgq ICAgICAgICAgUHRyDQo+ID4+ICsgICk7DQo+ID4+ICsNCj4gPj4gKy8qKiBBbiBBQ1BJX1BBUlNF UiBhcnJheSBkZXNjcmliaW5nIHRoZSBTUkFUIFRhYmxlLg0KPiA+PiArKi8NCj4gPj4gK1NUQVRJ QyBDT05TVCBBQ1BJX1BBUlNFUiBTcmF0UGFyc2VyW10gPSB7DQo+ID4+ICsgIFBBUlNFX0FDUElf SEVBREVSICgmQWNwaUhkckluZm8pLA0KPiA+PiArICB7TCJSZXNlcnZlZCIsIDQsIDM2LCBMIjB4 JXgiLCBOVUxMLCBOVUxMLCBWYWxpZGF0ZVNyYXRSZXNlcnZlZCwgTlVMTH0sDQo+ID4+ICsgIHtM IlJlc2VydmVkIiwgOCwgNDAsIEwiMHglbHgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfQ0KPiA+ PiArfTsNCj4gPj4gKw0KPiA+PiArLyoqIEFuIEFDUElfUEFSU0VSIGFycmF5IGRlc2NyaWJpbmcg dGhlIFJlc291cmNlIEFsbG9jYXRpb24NCj4gPj4gKyAgICBzdHJ1Y3R1cmUgaGVhZGVyLg0KPiA+ PiArKi8NCj4gPj4gK1NUQVRJQyBDT05TVCBBQ1BJX1BBUlNFUiBTcmF0UmVzb3VyY2VBbGxvY2F0 aW9uUGFyc2VyW10gPSB7DQo+ID4+ICsgIHtMIlR5cGUiLCAxLCAwLCBOVUxMLCBOVUxMLCAoVk9J RCoqKSZTcmF0UkFUeXBlLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiTGVuZ3RoIiwgMSwgMSwg TlVMTCwgTlVMTCwgKFZPSUQqKikmU3JhdFJBTGVuZ3RoLCBOVUxMLCBOVUxMfQ0KPiA+PiArfTsN Cj4gPj4gKw0KPiA+PiArLyoqIEFuIEFDUElfUEFSU0VSIGFycmF5IGRlc2NyaWJpbmcgdGhlIEdJ Q0MgQWZmaW5pdHkgc3RydWN0dXJlLg0KPiA+PiArKi8NCj4gPj4gK1NUQVRJQyBDT05TVCBBQ1BJ X1BBUlNFUiBTcmF0R2ljQ0FmZmluaXR5UGFyc2VyW10gPSB7DQo+ID4+ICsgIHtMIlR5cGUiLCAx LCAwLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiTGVuZ3Ro IiwgMSwgMSwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4+ICsNCj4gPj4g KyAge0wiUHJveGltaXR5IERvbWFpbiIsIDQsIDIsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEws IE5VTEx9LA0KPiA+PiArICB7TCJBQ1BJIFByb2Nlc3NvciBVSUQiLCA0LCA2LCBMIjB4JXgiLCBO VUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiRmxhZ3MiLCA0LCAxMCwgTCIweCV4 IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4+ICsgIHtMIkNsb2NrIERvbWFpbiIsIDQs IDE0LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfQ0KPiA+PiArfTsNCj4gPj4gKw0K PiA+PiArLyoqIEFuIEFDUElfUEFSU0VSIGFycmF5IGRlc2NyaWJpbmcgdGhlIEdJQyBJVFMgQWZm aW5pdHkgc3RydWN0dXJlLg0KPiA+PiArKi8NCj4gPj4gK1NUQVRJQyBDT05TVCBBQ1BJX1BBUlNF UiBTcmF0R2ljSVRTQWZmaW5pdHlQYXJzZXJbXSA9IHsNCj4gPj4gKyAge0wiVHlwZSIsIDEsIDAs IEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+PiArICB7TCJMZW5ndGgiLCAx LCAxLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKw0KPiA+PiArICB7 TCJQcm94aW1pdHkgRG9tYWluIiwgNCwgMiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVM TH0sDQo+ID4+ICsgIHtMIlJlc2VydmVkIiwgMiwgNiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVM TCwgTlVMTH0sDQo+ID4+ICsgIHtMIklUUyBJZCIsIDQsIDgsIEwiMHgleCIsIE5VTEwsIE5VTEws IE5VTEwsIE5VTEx9LA0KPiA+PiArfTsNCj4gPj4gKw0KPiA+PiArLyoqIEFuIEFDUElfUEFSU0VS IGFycmF5IGRlc2NyaWJpbmcgdGhlIE1lbW9yeSBBZmZpbml0eSBzdHJ1Y3R1cmUuDQo+ID4+ICsq Lw0KPiA+PiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VSIFNyYXRNZW1BZmZpbml0eVBhcnNlcltd ID0gew0KPiA+PiArICB7TCJUeXBlIiwgMSwgMCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwg TlVMTH0sDQo+ID4+ICsgIHtMIkxlbmd0aCIsIDEsIDEsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5V TEwsIE5VTEx9LA0KPiA+PiArDQo+ID4+ICsgIHtMIlByb3hpbWl0eSBEb21haW4iLCA0LCAyLCBM IjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiUmVzZXJ2ZWQiLCAy LCA2LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiQmFzZSBB ZGRyZXNzIExvdyIsIDQsIDgsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+ PiArICB7TCJCYXNlIEFkZHJlc3MgSGlnaCIsIDQsIDEyLCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBO VUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiTGVuZ3RoIExvdyIsIDQsIDE2LCBMIjB4JXgiLCBOVUxM LCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiTGVuZ3RoIEhpZ2giLCA0LCAyMCwgTCIw eCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4+ICsgIHtMIlJlc2VydmVkIiwgNCwg MjQsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+PiArICB7TCJGbGFncyIs IDQsIDI4LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiUmVz ZXJ2ZWQiLCA4LCAzMiwgTCIweCVseCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9DQo+ID4+ICt9 Ow0KPiA+PiArDQo+ID4+ICsvKiogQW4gQUNQSV9QQVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0aGUg QVBJQy9TQVBJQyBBZmZpbml0eSBzdHJ1Y3R1cmUuDQo+ID4+ICsqLw0KPiA+PiArU1RBVElDIENP TlNUIEFDUElfUEFSU0VSIFNyYXRBcGNpU2FwaWNBZmZpbml0eVBhcnNlcltdID0gew0KPiA+PiAr ICB7TCJUeXBlIiwgMSwgMCwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4+ ICsgIHtMIkxlbmd0aCIsIDEsIDEsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0K PiA+PiArDQo+ID4+ICsgIHtMIlByb3hpbWl0eSBEb21haW4gWzc6MF0iLCAxLCAyLCBMIjB4JXgi LCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiQVBJQyBJRCIsIDEsIDMsIEwi MHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+PiArICB7TCJGbGFncyIsIDQsIDQs IEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+PiArICB7TCJMb2NhbCBTQVBJ QyBFSUQiLCAxLCA4LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAg e0wiUHJveGltaXR5IERvbWFpbiBbMzE6OF0iLCAzLCA5LCBMIjB4JXgiLCBEdW1wU3JhdEFwaWNQ cm94aW1pdHksDQo+ID4+ICsgICBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiQ2xvY2sg RG9tYWluIiwgNCwgMTIsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9DQo+ID4+ICt9 Ow0KPiA+PiArDQo+ID4+ICsvKiogQW4gQUNQSV9QQVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0aGUg UHJvY2Vzc29yIExvY2FsIHgyQVBJQw0KPiA+PiArICAgIEFmZmluaXR5IHN0cnVjdHVyZS4NCj4g Pj4gKyovDQo+ID4+ICtTVEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgU3JhdFgyQXBjaUFmZmluaXR5 UGFyc2VyW10gPSB7DQo+ID4+ICsgIHtMIlR5cGUiLCAxLCAwLCBMIjB4JXgiLCBOVUxMLCBOVUxM LCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiTGVuZ3RoIiwgMSwgMSwgTCIweCV4IiwgTlVMTCwg TlVMTCwgTlVMTCwgTlVMTH0sDQo+ID4+ICsNCj4gPj4gKyAge0wiUmVzZXJ2ZWQiLCAyLCAyLCBM IjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiUHJveGltaXR5IERv bWFpbiIsIDQsIDQsIEwiMHgleCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEx9LA0KPiA+PiArICB7 TCJYMkFQSUMgSUQiLCA0LCA4LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfSwNCj4g Pj4gKyAge0wiRmxhZ3MiLCA0LCAxMiwgTCIweCV4IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0s DQo+ID4+ICsgIHtMIkNsb2NrIERvbWFpbiIsIDQsIDE2LCBMIjB4JXgiLCBOVUxMLCBOVUxMLCBO VUxMLCBOVUxMfSwNCj4gPj4gKyAge0wiUmVzZXJ2ZWQiLCA0LCAyMCwgTCIweCV4IiwgTlVMTCwg TlVMTCwgTlVMTCwgTlVMTH0NCj4gPj4gK307DQo+ID4+ICsNCj4gPj4gKy8qKiBUaGlzIGZ1bmN0 aW9uIHZhbGlkYXRlcyB0aGUgUmVzZXJ2ZWQgZmllbGQgaW4gdGhlIFNSQVQgdGFibGUgaGVhZGVy Lg0KPiA+PiArDQo+ID4+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgUG9pbnRlciB0byB0aGUgc3Rh cnQgb2YgdGhlIGZpZWxkIGRhdGEuDQo+ID4+ICsgIEBwYXJhbSBbaW5dIENvbnRleHQgUG9pbnRl ciB0byBjb250ZXh0IHNwZWNpZmljIGluZm9ybWF0aW9uIGUuZy4gdGhpcw0KPiA+PiArICAgICAg ICAgICAgICAgICAgICAgIGNvdWxkIGJlIGEgcG9pbnRlciB0byB0aGUgQUNQSSB0YWJsZSBoZWFk ZXIuDQo+ID4+ICsqLw0KPiA+PiArU1RBVElDDQo+ID4+ICtWT0lEDQo+ID4+ICtFRklBUEkNCj4g Pj4gK1ZhbGlkYXRlU3JhdFJlc2VydmVkICgNCj4gPj4gKyAgSU4gVUlOVDgqIFB0ciwNCj4gPj4g KyAgSU4gVk9JRCogIENvbnRleHQNCj4gPj4gKyAgKQ0KPiA+PiArew0KPiA+PiArICBpZiAoKihV SU5UMzIqKVB0ciAhPSAxKSB7DQo+ID4+ICsgICAgSW5jcmVtZW50RXJyb3JDb3VudCAoKTsNCj4g Pj4gKyAgICBQcmludCAoTCJcbkVSUk9SOiBSZXNlcnZlZCBzaG91bGQgYmUgMSBmb3IgYmFja3dh cmQNCj4gY29tcGF0aWJpbGl0eS5cbiIpOw0KPiA+PiArICB9DQo+ID4+ICt9DQo+ID4+ICsNCj4g Pj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHRyYWNlcyB0aGUgQVBJQyBQcm94aW1pdHkgRG9tYWluIGZp ZWxkLg0KPiA+PiArDQo+ID4+ICsgIEBwYXJhbSBbaW5dIEZvcm1hdCAgRm9ybWF0IHN0cmluZyBm b3IgdHJhY2luZyB0aGUgZGF0YS4NCj4gPj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICBQb2ludGVy IHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiA+PiArKi8NCj4gPj4gK1NUQVRJQw0KPiA+ PiArVk9JRA0KPiA+PiArRHVtcFNyYXRBcGljUHJveGltaXR5ICgNCj4gPj4gKyBJTiBDT05TVCBD SEFSMTYqIEZvcm1hdCwNCj4gPj4gKyBJTiBVSU5UOCogICAgICAgIFB0cg0KPiA+PiArICkNCj4g Pj4gK3sNCj4gPj4gKyAgVUlOVDMyIFByb3hpbWl0eURvbWFpbiA9IFB0clswXSB8IChQdHJbMV0g PDwgOCkgfCAoUHRyWzJdIDw8IDE2KTsNCj4gPj4gKyAgUHJpbnQgKEZvcm1hdCwgUHJveGltaXR5 RG9tYWluKTsNCj4gPj4gK30NCj4gPj4gKw0KPiA+PiArLyoqIFRoaXMgZnVuY3Rpb24gcGFyc2Vz IHRoZSBBQ1BJIFNSQVQgdGFibGUuDQo+ID4+ICsgIFdoZW4gdHJhY2UgaXMgZW5hYmxlZCB0aGlz IGZ1bmN0aW9uIHBhcnNlcyB0aGUgU1JBVCB0YWJsZSBhbmQNCj4gPj4gKyAgdHJhY2VzIHRoZSBB Q1BJIHRhYmxlIGZpZWxkcy4NCj4gPj4gKw0KPiA+PiArICBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0 aGUgZm9sbG93aW5nIFJlc291cmNlIEFsbG9jYXRpb24gU3RydWN0dXJlczoNCj4gPj4gKyAgICAt IFByb2Nlc3NvciBMb2NhbCBBUElDL1NBUElDIEFmZmluaXR5IFN0cnVjdHVyZQ0KPiA+PiArICAg IC0gTWVtb3J5IEFmZmluaXR5IFN0cnVjdHVyZQ0KPiA+PiArICAgIC0gUHJvY2Vzc29yIExvY2Fs IHgyQVBJQyBBZmZpbml0eSBTdHJ1Y3R1cmUNCj4gPj4gKyAgICAtIEdJQ0MgQWZmaW5pdHkgU3Ry dWN0dXJlDQo+ID4+ICsNCj4gPj4gKyAgVGhpcyBmdW5jdGlvbiBhbHNvIHBlcmZvcm1zIHZhbGlk YXRpb24gb2YgdGhlIEFDUEkgdGFibGUgZmllbGRzLg0KPiA+PiArDQo+ID4+ICsgIEBwYXJhbSBb aW5dIFRyYWNlICAgICAgICAgICAgICBJZiBUUlVFLCB0cmFjZSB0aGUgQUNQSSBmaWVsZHMuDQo+ ID4+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgICAgICAgICAgICBQb2ludGVyIHRvIHRoZSBzdGFy dCBvZiB0aGUgYnVmZmVyLg0KPiA+PiArICBAcGFyYW0gW2luXSBBY3BpVGFibGVMZW5ndGggICAg TGVuZ3RoIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiA+PiArICBAcGFyYW0gW2luXSBBY3BpVGFibGVS ZXZpc2lvbiAgUmV2aXNpb24gb2YgdGhlIEFDUEkgdGFibGUuDQo+ID4+ICsqLw0KPiA+PiArVk9J RA0KPiA+PiArRUZJQVBJDQo+ID4+ICtQYXJzZUFjcGlTcmF0ICgNCj4gPj4gKyAgSU4gQk9PTEVB TiBUcmFjZSwNCj4gPj4gKyAgSU4gVUlOVDgqICBQdHIsDQo+ID4+ICsgIElOIFVJTlQzMiAgQWNw aVRhYmxlTGVuZ3RoLA0KPiA+PiArICBJTiBVSU5UOCAgIEFjcGlUYWJsZVJldmlzaW9uDQo+ID4+ ICsgICkNCj4gPj4gK3sNCj4gPj4gKyAgVUlOVDMyIE9mZnNldDsNCj4gPj4gKyAgVUlOVDgqIFJl c291cmNlUHRyOw0KPiA+PiArICBVSU5UMzIgR2ljQ0FmZmluaXR5SW5kZXggPSAwOw0KPiA+PiAr ICBVSU5UMzIgR2ljSVRTQWZmaW5pdHlJbmRleCA9IDA7DQo+ID4+ICsgIFVJTlQzMiBNZW1vcnlB ZmZpbml0eUluZGV4ID0gMDsNCj4gPj4gKyAgVUlOVDMyIEFwaWNTYXBpY0FmZmluaXR5SW5kZXgg PSAwOw0KPiA+PiArICBVSU5UMzIgWDJBcGljQWZmaW5pdHlJbmRleCA9IDA7DQo+ID4+ICsgIENI QVI4ICBCdWZmZXJbODBdOyAgLy8gVXNlZCBmb3IgQXNjaWlOYW1lIHBhcmFtIG9mIFBhcnNlQWNw aQ0KPiA+PiArDQo+ID4+ICsgIGlmICghVHJhY2UpIHsNCj4gPj4gKyAgICByZXR1cm47DQo+ID4+ ICsgIH0NCj4gPj4gKw0KPiA+PiArICBPZmZzZXQgPSBQYXJzZUFjcGkgKA0KPiA+PiArICAgICAg ICAgICAgIFRSVUUsDQo+ID4+ICsgICAgICAgICAgICAgMCwNCj4gPj4gKyAgICAgICAgICAgICAi U1JBVCIsDQo+ID4+ICsgICAgICAgICAgICAgUHRyLA0KPiA+PiArICAgICAgICAgICAgIEFjcGlU YWJsZUxlbmd0aCwNCj4gPj4gKyAgICAgICAgICAgICBQQVJTRVJfUEFSQU1TIChTcmF0UGFyc2Vy KQ0KPiA+PiArICAgICAgICAgICAgICk7DQo+ID4+ICsgIFJlc291cmNlUHRyID0gUHRyICsgT2Zm c2V0Ow0KPiA+PiArDQo+ID4+ICsgIHdoaWxlIChPZmZzZXQgPCBBY3BpVGFibGVMZW5ndGgpIHsN Cj4gPj4gKyAgICBQYXJzZUFjcGkgKA0KPiA+PiArICAgICAgRkFMU0UsDQo+ID4+ICsgICAgICAw LA0KPiA+PiArICAgICAgTlVMTCwNCj4gPj4gKyAgICAgIFJlc291cmNlUHRyLA0KPiA+PiArICAg ICAgMiwgIC8vIFRoZSBsZW5ndGggaXMgMSBieXRlIGF0IG9mZnNldCAxDQo+ID4+ICsgICAgICBQ QVJTRVJfUEFSQU1TIChTcmF0UmVzb3VyY2VBbGxvY2F0aW9uUGFyc2VyKQ0KPiA+PiArICAgICAg KTsNCj4gPj4gKw0KPiA+PiArICAgIHN3aXRjaCAoKlNyYXRSQVR5cGUpIHsNCj4gPj4gKyAgICAg IGNhc2UgRUZJX0FDUElfNl8yX0dJQ0NfQUZGSU5JVFk6DQo+ID4+ICsgICAgICAgIEFzY2lpU1By aW50ICgNCj4gPj4gKyAgICAgICAgICBCdWZmZXIsDQo+ID4+ICsgICAgICAgICAgc2l6ZW9mIChC dWZmZXIpLA0KPiA+PiArICAgICAgICAgICJHSUNDIEFmZmluaXR5IFN0cnVjdHVyZSBbJWRdIiwN Cj4gPj4gKyAgICAgICAgICBHaWNDQWZmaW5pdHlJbmRleCsrDQo+ID4+ICsgICAgICAgICAgKTsN Cj4gPj4gKyAgICAgICAgUGFyc2VBY3BpICgNCj4gPj4gKyAgICAgICAgICBUUlVFLA0KPiA+PiAr ICAgICAgICAgIDIsDQo+ID4+ICsgICAgICAgICAgQnVmZmVyLA0KPiA+PiArICAgICAgICAgIFJl c291cmNlUHRyLA0KPiA+PiArICAgICAgICAgICpTcmF0UkFMZW5ndGgsDQo+ID4+ICsgICAgICAg ICAgUEFSU0VSX1BBUkFNUyAoU3JhdEdpY0NBZmZpbml0eVBhcnNlcikNCj4gPj4gKyAgICAgICAg ICApOw0KPiA+PiArICAgICAgICBicmVhazsNCj4gPj4gKw0KPiA+PiArICAgICAgY2FzZSBFRklf QUNQSV82XzJfR0lDX0lUU19BRkZJTklUWToNCj4gPj4gKyAgICAgICAgQXNjaWlTUHJpbnQgKA0K PiA+PiArICAgICAgICAgIEJ1ZmZlciwNCj4gPj4gKyAgICAgICAgICBzaXplb2YgKEJ1ZmZlciks DQo+ID4+ICsgICAgICAgICAgIkdJQyBJVFMgQWZmaW5pdHkgU3RydWN0dXJlIFslZF0iLA0KPiA+ PiArICAgICAgICAgIEdpY0lUU0FmZmluaXR5SW5kZXgrKw0KPiA+PiArICAgICAgICApOw0KPiA+ PiArICAgICAgICBQYXJzZUFjcGkgKA0KPiA+PiArICAgICAgICAgIFRSVUUsDQo+ID4+ICsgICAg ICAgICAgMiwNCj4gPj4gKyAgICAgICAgICBCdWZmZXIsDQo+ID4+ICsgICAgICAgICAgUmVzb3Vy Y2VQdHIsDQo+ID4+ICsgICAgICAgICAgKlNyYXRSQUxlbmd0aCwNCj4gPj4gKyAgICAgICAgICBQ QVJTRVJfUEFSQU1TIChTcmF0R2ljSVRTQWZmaW5pdHlQYXJzZXIpDQo+ID4+ICsgICAgICAgICk7 DQo+ID4+ICsgICAgICAgIGJyZWFrOw0KPiA+PiArDQo+ID4+ICsgICAgICBjYXNlIEVGSV9BQ1BJ XzZfMl9NRU1PUllfQUZGSU5JVFk6DQo+ID4+ICsgICAgICAgIEFzY2lpU1ByaW50ICgNCj4gPj4g KyAgICAgICAgICBCdWZmZXIsDQo+ID4+ICsgICAgICAgICAgc2l6ZW9mIChCdWZmZXIpLA0KPiA+ PiArICAgICAgICAgICJNZW1vcnkgQWZmaW5pdHkgU3RydWN0dXJlIFslZF0iLA0KPiA+PiArICAg ICAgICAgIE1lbW9yeUFmZmluaXR5SW5kZXgrKw0KPiA+PiArICAgICAgICAgICk7DQo+ID4+ICsg ICAgICAgIFBhcnNlQWNwaSAoDQo+ID4+ICsgICAgICAgICAgVFJVRSwNCj4gPj4gKyAgICAgICAg ICAyLA0KPiA+PiArICAgICAgICAgIEJ1ZmZlciwNCj4gPj4gKyAgICAgICAgICBSZXNvdXJjZVB0 ciwNCj4gPj4gKyAgICAgICAgICAqU3JhdFJBTGVuZ3RoLA0KPiA+PiArICAgICAgICAgIFBBUlNF Ul9QQVJBTVMgKFNyYXRNZW1BZmZpbml0eVBhcnNlcikNCj4gPj4gKyAgICAgICAgICApOw0KPiA+ PiArICAgICAgICBicmVhazsNCj4gPj4gKw0KPiA+PiArICAgICAgY2FzZSBFRklfQUNQSV82XzJf UFJPQ0VTU09SX0xPQ0FMX0FQSUNfU0FQSUNfQUZGSU5JVFk6DQo+ID4+ICsgICAgICAgIEFzY2lp U1ByaW50ICgNCj4gPj4gKyAgICAgICAgICBCdWZmZXIsDQo+ID4+ICsgICAgICAgICAgc2l6ZW9m IChCdWZmZXIpLA0KPiA+PiArICAgICAgICAgICJBUElDL1NBUElDIEFmZmluaXR5IFN0cnVjdHVy ZSBbJWRdIiwNCj4gPj4gKyAgICAgICAgICBBcGljU2FwaWNBZmZpbml0eUluZGV4KysNCj4gPj4g KyAgICAgICAgICApOw0KPiA+PiArICAgICAgICBQYXJzZUFjcGkgKA0KPiA+PiArICAgICAgICAg IFRSVUUsDQo+ID4+ICsgICAgICAgICAgMiwNCj4gPj4gKyAgICAgICAgICBCdWZmZXIsDQo+ID4+ ICsgICAgICAgICAgUmVzb3VyY2VQdHIsDQo+ID4+ICsgICAgICAgICAgKlNyYXRSQUxlbmd0aCwN Cj4gPj4gKyAgICAgICAgICBQQVJTRVJfUEFSQU1TIChTcmF0QXBjaVNhcGljQWZmaW5pdHlQYXJz ZXIpDQo+ID4+ICsgICAgICAgICAgKTsNCj4gPj4gKyAgICAgICAgYnJlYWs7DQo+ID4+ICsNCj4g Pj4gKyAgICAgIGNhc2UgRUZJX0FDUElfNl8yX1BST0NFU1NPUl9MT0NBTF9YMkFQSUNfQUZGSU5J VFk6DQo+ID4+ICsgICAgICAgIEFzY2lpU1ByaW50ICgNCj4gPj4gKyAgICAgICAgICBCdWZmZXIs DQo+ID4+ICsgICAgICAgICAgc2l6ZW9mIChCdWZmZXIpLA0KPiA+PiArICAgICAgICAgICJYMkFQ SUMgQWZmaW5pdHkgU3RydWN0dXJlIFslZF0iLA0KPiA+PiArICAgICAgICAgIFgyQXBpY0FmZmlu aXR5SW5kZXgrKw0KPiA+PiArICAgICAgICAgICk7DQo+ID4+ICsgICAgICAgIFBhcnNlQWNwaSAo DQo+ID4+ICsgICAgICAgICAgVFJVRSwNCj4gPj4gKyAgICAgICAgICAyLA0KPiA+PiArICAgICAg ICAgIEJ1ZmZlciwNCj4gPj4gKyAgICAgICAgICBSZXNvdXJjZVB0ciwNCj4gPj4gKyAgICAgICAg ICAqU3JhdFJBTGVuZ3RoLA0KPiA+PiArICAgICAgICAgIFBBUlNFUl9QQVJBTVMgKFNyYXRYMkFw Y2lBZmZpbml0eVBhcnNlcikNCj4gPj4gKyAgICAgICAgICApOw0KPiA+PiArICAgICAgICBicmVh azsNCj4gPj4gKw0KPiA+PiArICAgICAgZGVmYXVsdDoNCj4gPj4gKyAgICAgICAgSW5jcmVtZW50 RXJyb3JDb3VudCAoKTsNCj4gPj4gKyAgICAgICAgUHJpbnQgKEwiRVJST1I6IFVua25vd24gU1JB VCBBZmZpbml0eSB0eXBlID0gMHgleFxuIiwNCj4gKlNyYXRSQVR5cGUpOw0KPiA+PiArICAgICAg ICBicmVhazsNCj4gPj4gKyAgICB9DQo+ID4+ICsNCj4gPj4gKyAgICBSZXNvdXJjZVB0ciArPSAo KlNyYXRSQUxlbmd0aCk7DQo+ID4+ICsgICAgT2Zmc2V0ICs9ICgqU3JhdFJBTGVuZ3RoKTsNCj4g Pj4gKyAgfQ0KPiA+PiArfQ0KPiA+PiArDQo+ID4+ICsvKiogUmVnaXN0ZXIgdGhlIHBhcnNlci4N Cj4gPj4gKw0KPiA+PiArICBAcGFyYW0gW2luXSAgSW1hZ2VIYW5kbGUgIFRoZSBoYW5kbGUgdG8g dGhlIGltYWdlLg0KPiA+PiArICBAcGFyYW0gW2luXSAgU3lzdGVtVGFibGUgIFBvaW50ZXIgdG8g dGhlIFN5c3RlbSBUYWJsZS4NCj4gPj4gKw0KPiA+PiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAg ICAgICAgICBUaGUgcGFyc2VyIGlzIHJlZ2lzdGVyZWQuDQo+ID4+ICsgIEByZXR2YWwgRUZJX0FM UkVBRFlfU1RBUlRFRCAgIFRoZSBwYXJzZXIgZm9yIHRoZSBBQ1BJIFRhYmxlDQo+ID4+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhcyBhbHJlYWR5IHJlZ2lzdGVyZWQuDQo+ID4+ ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSIEEgcGFyYW1ldGVyIGlzIGludmFsaWQN Cj4gPj4gKyAgQHJldHZhbCBFRklfT1VUX09GX1JFU09VUkNFUyAgTm8gc3BhY2UgdG8gcmVnaXN0 ZXIgdGhlDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlci4NCj4g Pj4gKyovDQo+ID4+ICtFRklfU1RBVFVTDQo+ID4+ICtFRklBUEkNCj4gPj4gK1NyYXRQYXJzZXJM aWJDb25zdHJ1Y3RvciAoDQo+ID4+ICsgIElOIENPTlNUIEVGSV9IQU5ETEUgICAgICAgICAgICAg ICAgSW1hZ2VIYW5kbGUsDQo+ID4+ICsgIElOICAgICAgIEVGSV9TWVNURU1fVEFCTEUgICogQ09O U1QgU3lzdGVtVGFibGUNCj4gPj4gKyAgKQ0KPiA+PiArew0KPiA+PiArICByZXR1cm4gUmVnaXN0 ZXJQYXJzZXIgKA0KPiA+PiArDQo+IEVGSV9BQ1BJXzZfMl9TWVNURU1fUkVTT1VSQ0VfQUZGSU5J VFlfVEFCTEVfU0lHTkFUVVJFLA0KPiA+PiArICAgICAgICAgICBQYXJzZUFjcGlTcmF0DQo+ID4+ ICsgICAgICAgICAgICk7DQo+ID4+ICt9DQo+ID4+ICsNCj4gPj4gKy8qKiBEZXJlZ2lzdGVyIHRo ZSBwYXJzZXIuDQo+ID4+ICsNCj4gPj4gKyAgQHBhcmFtIFtpbl0gIEltYWdlSGFuZGxlICBUaGUg aGFuZGxlIHRvIHRoZSBpbWFnZS4NCj4gPj4gKyAgQHBhcmFtIFtpbl0gIFN5c3RlbVRhYmxlICBQ b2ludGVyIHRvIHRoZSBTeXN0ZW0gVGFibGUuDQo+ID4+ICsNCj4gPj4gKyAgQHJldHZhbCBFRklf U1VDQ0VTUyAgICAgICAgICAgVGhlIHBhcnNlciBpcyBkZXJlZ2lzdGVyZWQuDQo+ID4+ICsgIEBy ZXR2YWwgRUZJX05PVF9GT1VORCAgICAgICAgIFRoZSBwYXJzZXIgd2FzIG5vdCByZWdpc3RlcmVk Lg0KPiA+PiArKi8NCj4gPj4gK0VGSV9TVEFUVVMNCj4gPj4gK0VGSUFQSQ0KPiA+PiArU3JhdFBh cnNlckxpYkRlc3RydWN0b3IgKA0KPiA+PiArICBJTiBDT05TVCBFRklfSEFORExFICAgICAgICAg ICAgICAgIEltYWdlSGFuZGxlLA0KPiA+PiArICBJTiAgICAgICBFRklfU1lTVEVNX1RBQkxFICAq IENPTlNUIFN5c3RlbVRhYmxlDQo+ID4+ICsgICkNCj4gPj4gK3sNCj4gPj4gKyAgcmV0dXJuIERl cmVnaXN0ZXJQYXJzZXIgKA0KPiA+PiArDQo+IEVGSV9BQ1BJXzZfMl9TWVNURU1fUkVTT1VSQ0Vf QUZGSU5JVFlfVEFCTEVfU0lHTkFUVVJFDQo+ID4+ICsgICAgICAgICAgICk7DQo+ID4+ICt9DQo+ ID4+IGRpZmYgLS1naXQNCj4gYS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29t bWFuZExpYi9QYXJzZXJzL1NyYXQvU3JhdFBhcnNlckxpYi5pbg0KPiBmDQo+IGIvU2hlbGxQa2cv TGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9TcmF0L1NyYXRQYXJz ZXJMaWIuaQ0KPiBuZg0KPiA+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+PiBpbmRleA0KPiAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ODIzYmFiNTBkZjY0OTc0 ODhlNDENCj4gZmFhYTVhZTdhODEzYWVlNDc5Mg0KPiA+PiAtLS0gL2Rldi9udWxsDQo+ID4+ICsr Kw0KPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNl cnMvU3JhdC9TcmF0UGFyc2VyTGliLmkNCj4gbmYNCj4gPj4gQEAgLTAsMCArMSwzMyBAQA0KPiA+ PiArIyMgQGZpbGUNCj4gPj4gKyMNCj4gPj4gKyMgIENvcHlyaWdodCAoYykgMjAxNyAtIDIwMTgs IEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiA+PiArIw0KPiA+PiArIyAgVGhp cyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiA+PiArIyAgYXJlIGxp Y2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMg b2YgdGhlDQo+IEJTRCBMaWNlbnNlDQo+ID4+ICsjICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRp c3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlDQo+IGZvdW5k IGF0DQo+ID4+ICsjICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2Uu cGhwDQo+ID4+ICsjDQo+ID4+ICsjICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBU SEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIg0KPiBCQVNJUywNCj4gPj4gKyMgIFdJVEhPVVQg V0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUg0KPiBFWFBS RVNTIE9SIElNUExJRUQuDQo+ID4+ICsjIw0KPiA+PiArDQo+ID4+ICtbRGVmaW5lc10NCj4gPj4g KyAgSU5GX1ZFUlNJT04gICAgPSAweDAwMDEwMDE5DQo+ID4+ICsgIEJBU0VfTkFNRSAgICAgID0g U3JhdFBhcnNlckxpYg0KPiA+PiArICBGSUxFX0dVSUQgICAgICA9IDEwNkIyMkNDLTE0OTktNDZE NC1CNkZCLTM0MUJCODc4RkJDNQ0KPiA+PiArICBWRVJTSU9OX1NUUklORyA9IDEuMA0KPiA+PiAr ICBNT0RVTEVfVFlQRSAgICA9IERYRV9EUklWRVINCj4gPj4gKyAgTElCUkFSWV9DTEFTUyAgPSBO VUxMfERYRV9EUklWRVINCj4gPj4gKyAgQ09OU1RSVUNUT1IgICAgPSBTcmF0UGFyc2VyTGliQ29u c3RydWN0b3INCj4gPj4gKyAgREVTVFJVQ1RPUiAgICAgPSBTcmF0UGFyc2VyTGliRGVzdHJ1Y3Rv cg0KPiA+PiArDQo+ID4+ICtbU291cmNlc10NCj4gPj4gKyAgU3JhdFBhcnNlci5jDQo+ID4+ICsN Cj4gPj4gK1tQYWNrYWdlc10NCj4gPj4gKyAgTWRlUGtnL01kZVBrZy5kZWMNCj4gPj4gKyAgU2hl bGxQa2cvU2hlbGxQa2cuZGVjDQo+ID4+ICsgIE1kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVj DQo+ID4+ICsNCj4gPj4gK1tMaWJyYXJ5Q2xhc3Nlc10NCj4gPj4gKyAgU2hlbGxBY3BpVmlld0Nv bW1hbmRMaWINCj4gPj4gZGlmZiAtLWdpdA0KPiBhL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxs QWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvU3NkdC9Tc2R0UGFyc2VyLmMNCj4gYi9TaGVsbFBr Zy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL1NzZHQvU3NkdFBh cnNlci5jDQo+ID4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4+IGluZGV4DQo+IDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRjNTYyNDJiMzUxYzhjMDRkMzEyMw0K PiA0OTA4NmUzNTNjOTRlNDMwZjMyDQo+ID4+IC0tLSAvZGV2L251bGwNCj4gPj4gKysrDQo+IGIv U2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9Tc2R0 L1NzZHRQYXJzZXIuYw0KPiA+PiBAQCAtMCwwICsxLDkyIEBADQo+ID4+ICsvKioNCj4gPj4gKyAg U1NEVCB0YWJsZSBwYXJzZXINCj4gPj4gKw0KPiA+PiArICBDb3B5cmlnaHQgKGMpIDIwMTYgLSAy MDE4LCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gPj4gKyAgVGhpcyBwcm9n cmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiA+PiArICBhcmUgbGljZW5zZWQg YW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUN Cj4gQlNEIExpY2Vuc2UNCj4gPj4gKyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRp b24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZQ0KPiBmb3VuZCBhdA0KPiA+ PiArICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ID4+ ICsNCj4gPj4gKyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNF TlNFIE9OIEFOICJBUyBJUyINCj4gQkFTSVMsDQo+ID4+ICsgIFdJVEhPVVQgV0FSUkFOVElFUyBP UiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUg0KPiBFWFBSRVNTIE9SIElNUExJ RUQuDQo+ID4+ICsNCj4gPj4gKyAgQHBhciBSZWZlcmVuY2Uocyk6DQo+ID4+ICsgICAgLSBBQ1BJ IDYuMiBTcGVjaWZpY2F0aW9uIC0gRXJyYXRhIEEsIFNlcHRlbWJlciAyMDE3DQo+ID4+ICsqKi8N Cj4gPj4gKw0KPiA+PiArI2luY2x1ZGUgPEluZHVzdHJ5U3RhbmRhcmQvQWNwaS5oPg0KPiA+PiAr I2luY2x1ZGUgPExpYnJhcnkvVWVmaUxpYi5oPg0KPiA+PiArI2luY2x1ZGUgPExpYnJhcnkvQWNw aVZpZXcvQWNwaVBhcnNlci5oPg0KPiA+PiArI2luY2x1ZGUgPExpYnJhcnkvQWNwaVZpZXcvQWNw aVRhYmxlUGFyc2VyLmg+DQo+ID4+ICsNCj4gPj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0 aGUgQUNQSSBTU0RUIHRhYmxlLg0KPiA+PiArICBXaGVuIHRyYWNlIGlzIGVuYWJsZWQgdGhpcyBm dW5jdGlvbiBwYXJzZXMgdGhlIFNTRFQgdGFibGUgYW5kDQo+ID4+ICsgIHRyYWNlcyB0aGUgQUNQ SSB0YWJsZSBmaWVsZHMuDQo+ID4+ICsgIEZvciB0aGUgU1NEVCB0YWJsZSBvbmx5IHRoZSBBQ1BJ IGhlYWRlciBmaWVsZHMgYXJlDQo+ID4+ICsgIHBhcnNlZCBhbmQgdHJhY2VkLg0KPiA+PiArDQo+ ID4+ICsgIEBwYXJhbSBbaW5dIFRyYWNlICAgICAgICAgICAgICBJZiBUUlVFLCB0cmFjZSB0aGUg QUNQSSBmaWVsZHMuDQo+ID4+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgICAgICAgICAgICBQb2lu dGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiA+PiArICBAcGFyYW0gW2luXSBBY3Bp VGFibGVMZW5ndGggICAgTGVuZ3RoIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiA+PiArICBAcGFyYW0g W2luXSBBY3BpVGFibGVSZXZpc2lvbiAgUmV2aXNpb24gb2YgdGhlIEFDUEkgdGFibGUuDQo+ID4+ ICsqLw0KPiA+PiArVk9JRA0KPiA+PiArRUZJQVBJDQo+ID4+ICtQYXJzZUFjcGlTc2R0ICgNCj4g Pj4gKyAgSU4gQk9PTEVBTiBUcmFjZSwNCj4gPj4gKyAgSU4gVUlOVDgqICBQdHIsDQo+ID4+ICsg IElOIFVJTlQzMiAgQWNwaVRhYmxlTGVuZ3RoLA0KPiA+PiArICBJTiBVSU5UOCAgIEFjcGlUYWJs ZVJldmlzaW9uDQo+ID4+ICsgICkNCj4gPj4gK3sNCj4gPj4gKyAgaWYgKCFUcmFjZSkgew0KPiA+ PiArICAgIHJldHVybjsNCj4gPj4gKyAgfQ0KPiA+PiArDQo+ID4+ICsgIER1bXBBY3BpSGVhZGVy IChQdHIpOw0KPiA+PiArfQ0KPiA+PiArDQo+ID4+ICsvKiogUmVnaXN0ZXIgdGhlIHBhcnNlci4N Cj4gPj4gKw0KPiA+PiArICBAcGFyYW0gW2luXSAgSW1hZ2VIYW5kbGUgIFRoZSBoYW5kbGUgdG8g dGhlIGltYWdlLg0KPiA+PiArICBAcGFyYW0gW2luXSAgU3lzdGVtVGFibGUgIFBvaW50ZXIgdG8g dGhlIFN5c3RlbSBUYWJsZS4NCj4gPj4gKw0KPiA+PiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAg ICAgICAgICBUaGUgcGFyc2VyIGlzIHJlZ2lzdGVyZWQuDQo+ID4+ICsgIEByZXR2YWwgRUZJX0FM UkVBRFlfU1RBUlRFRCAgIFRoZSBwYXJzZXIgZm9yIHRoZSBBQ1BJIFRhYmxlDQo+ID4+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhcyBhbHJlYWR5IHJlZ2lzdGVyZWQuDQo+ID4+ ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSIEEgcGFyYW1ldGVyIGlzIGludmFsaWQN Cj4gPj4gKyAgQHJldHZhbCBFRklfT1VUX09GX1JFU09VUkNFUyAgTm8gc3BhY2UgdG8gcmVnaXN0 ZXIgdGhlDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlci4NCj4g Pj4gKyovDQo+ID4+ICtFRklfU1RBVFVTDQo+ID4+ICtFRklBUEkNCj4gPj4gK1NzZHRQYXJzZXJM aWJDb25zdHJ1Y3RvciAoDQo+ID4+ICsgIElOIENPTlNUIEVGSV9IQU5ETEUgICAgICAgICAgICAg ICAgSW1hZ2VIYW5kbGUsDQo+ID4+ICsgIElOICAgICAgIEVGSV9TWVNURU1fVEFCTEUgICogQ09O U1QgU3lzdGVtVGFibGUNCj4gPj4gKyAgKQ0KPiA+PiArew0KPiA+PiArICByZXR1cm4gUmVnaXN0 ZXJQYXJzZXIgKA0KPiA+PiArDQo+IEVGSV9BQ1BJXzZfMl9TRUNPTkRBUllfU1lTVEVNX0RFU0NS SVBUSU9OX1RBQkxFX1NJR05BVFVSRSwNCj4gPj4gKyAgICAgICAgICAgUGFyc2VBY3BpU3NkdA0K PiA+PiArICAgICAgICAgICApOw0KPiA+PiArfQ0KPiA+PiArDQo+ID4+ICsvKiogRGVyZWdpc3Rl ciB0aGUgcGFyc2VyLg0KPiA+PiArDQo+ID4+ICsgIEBwYXJhbSBbaW5dICBJbWFnZUhhbmRsZSAg VGhlIGhhbmRsZSB0byB0aGUgaW1hZ2UuDQo+ID4+ICsgIEBwYXJhbSBbaW5dICBTeXN0ZW1UYWJs ZSAgUG9pbnRlciB0byB0aGUgU3lzdGVtIFRhYmxlLg0KPiA+PiArDQo+ID4+ICsgIEByZXR2YWwg RUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBwYXJzZXIgaXMgZGVyZWdpc3RlcmVkLg0KPiA+PiAr ICBAcmV0dmFsIEVGSV9OT1RfRk9VTkQgICAgICAgICBUaGUgcGFyc2VyIHdhcyBub3QgcmVnaXN0 ZXJlZC4NCj4gPj4gKyovDQo+ID4+ICtFRklfU1RBVFVTDQo+ID4+ICtFRklBUEkNCj4gPj4gK1Nz ZHRQYXJzZXJMaWJEZXN0cnVjdG9yICgNCj4gPj4gKyAgSU4gQ09OU1QgRUZJX0hBTkRMRSAgICAg ICAgICAgICAgICBJbWFnZUhhbmRsZSwNCj4gPj4gKyAgSU4gICAgICAgRUZJX1NZU1RFTV9UQUJM RSAgKiBDT05TVCBTeXN0ZW1UYWJsZQ0KPiA+PiArICApDQo+ID4+ICt7DQo+ID4+ICsgIHJldHVy biBEZXJlZ2lzdGVyUGFyc2VyICgNCj4gPj4gKw0KPiBFRklfQUNQSV82XzJfU0VDT05EQVJZX1NZ U1RFTV9ERVNDUklQVElPTl9UQUJMRV9TSUdOQVRVUkUNCj4gPj4gKyAgICAgICAgICAgKTsNCj4g Pj4gK30NCj4gPj4gZGlmZiAtLWdpdA0KPiBhL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNw aVZpZXdDb21tYW5kTGliL1BhcnNlcnMvU3NkdC9Tc2R0UGFyc2VyTGliLmkNCj4gbmYNCj4gYi9T aGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL1NzZHQv U3NkdFBhcnNlckxpYi5pDQo+IG5mDQo+ID4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4+IGlu ZGV4DQo+IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU3ZTU1ZWFm MDgyNGI2YzhkMDVjZQ0KPiA5Yjc5ZDk1OThlZGQ4ZjY3M2Q5DQo+ID4+IC0tLSAvZGV2L251bGwN Cj4gPj4gKysrDQo+IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRM aWIvUGFyc2Vycy9Tc2R0L1NzZHRQYXJzZXJMaWIuaQ0KPiBuZg0KPiA+PiBAQCAtMCwwICsxLDMz IEBADQo+ID4+ICsjIyBAZmlsZQ0KPiA+PiArIw0KPiA+PiArIyAgQ29weXJpZ2h0IChjKSAyMDE3 IC0gMjAxOCwgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ID4+ICsjDQo+ID4+ ICsjICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ID4+ICsj ICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29u ZGl0aW9ucyBvZiB0aGUNCj4gQlNEIExpY2Vuc2UNCj4gPj4gKyMgIHdoaWNoIGFjY29tcGFuaWVz IHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUN Cj4gZm91bmQgYXQNCj4gPj4gKyMgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2Qt bGljZW5zZS5waHANCj4gPj4gKyMNCj4gPj4gKyMgIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVE IFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiDQo+IEJBU0lTLA0KPiA+PiArIyAg V0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVS DQo+IEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gPj4gKyMjDQo+ID4+ICsNCj4gPj4gK1tEZWZpbmVz XQ0KPiA+PiArICBJTkZfVkVSU0lPTiAgICA9IDB4MDAwMTAwMTkNCj4gPj4gKyAgQkFTRV9OQU1F ICAgICAgPSBTc2R0UGFyc2VyTGliDQo+ID4+ICsgIEZJTEVfR1VJRCAgICAgID0gQkMyRkY1Mzgt OEZFQi00OEUzLTkyRDEtRUNBMDFCMjc3QjJDDQo+ID4+ICsgIFZFUlNJT05fU1RSSU5HID0gMS4w DQo+ID4+ICsgIE1PRFVMRV9UWVBFICAgID0gRFhFX0RSSVZFUg0KPiA+PiArICBMSUJSQVJZX0NM QVNTICA9IE5VTEx8RFhFX0RSSVZFUg0KPiA+PiArICBDT05TVFJVQ1RPUiAgICA9IFNzZHRQYXJz ZXJMaWJDb25zdHJ1Y3Rvcg0KPiA+PiArICBERVNUUlVDVE9SICAgICA9IFNzZHRQYXJzZXJMaWJE ZXN0cnVjdG9yDQo+ID4+ICsNCj4gPj4gK1tTb3VyY2VzXQ0KPiA+PiArICBTc2R0UGFyc2VyLmMN Cj4gPj4gKw0KPiA+PiArW1BhY2thZ2VzXQ0KPiA+PiArICBNZGVQa2cvTWRlUGtnLmRlYw0KPiA+ PiArICBTaGVsbFBrZy9TaGVsbFBrZy5kZWMNCj4gPj4gKyAgTWRlTW9kdWxlUGtnL01kZU1vZHVs ZVBrZy5kZWMNCj4gPj4gKw0KPiA+PiArW0xpYnJhcnlDbGFzc2VzXQ0KPiA+PiArICBTaGVsbEFj cGlWaWV3Q29tbWFuZExpYg0KPiA+PiBkaWZmIC0tZ2l0DQo+IGEvU2hlbGxQa2cvTGlicmFyeS9V ZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9Yc2R0L1hzZHRQYXJzZXIuYw0KPiBi L1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvWHNk dC9Yc2R0UGFyc2VyLmMNCj4gPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPj4gaW5kZXgNCj4g MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWI5ZjMxNGI3NDhkNDI4 MWRjYzU2DQo+IGQ3MDc3OThlNmViMWMyZjcwMzkNCj4gPj4gLS0tIC9kZXYvbnVsbA0KPiA+PiAr KysNCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJz ZXJzL1hzZHQvWHNkdFBhcnNlci5jDQo+ID4+IEBAIC0wLDAgKzEsMTk4IEBADQo+ID4+ICsvKioN Cj4gPj4gKyAgWFNEVCB0YWJsZSBwYXJzZXINCj4gPj4gKw0KPiA+PiArICBDb3B5cmlnaHQgKGMp IDIwMTYgLSAyMDE4LCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gPj4gKyAg VGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiA+PiArICBhcmUg bGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9u cyBvZiB0aGUNCj4gQlNEIExpY2Vuc2UNCj4gPj4gKyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBk aXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZQ0KPiBmb3Vu ZCBhdA0KPiA+PiArICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2Uu cGhwDQo+ID4+ICsNCj4gPj4gKyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhF IEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyINCj4gQkFTSVMsDQo+ID4+ICsgIFdJVEhPVVQgV0FS UkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUg0KPiBFWFBSRVNT IE9SIElNUExJRUQuDQo+ID4+ICsNCj4gPj4gKyAgQHBhciBSZWZlcmVuY2Uocyk6DQo+ID4+ICsg ICAgLSBBQ1BJIDYuMiBTcGVjaWZpY2F0aW9uIC0gRXJyYXRhIEEsIFNlcHRlbWJlciAyMDE3DQo+ ID4+ICsqKi8NCj4gPj4gKw0KPiA+PiArI2luY2x1ZGUgPEluZHVzdHJ5U3RhbmRhcmQvQWNwaS5o Pg0KPiA+PiArI2luY2x1ZGUgPExpYnJhcnkvVWVmaUxpYi5oPg0KPiA+PiArI2luY2x1ZGUgPExp YnJhcnkvUHJpbnRMaWIuaD4NCj4gPj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0FjcGlWaWV3L0FjcGlQ YXJzZXIuaD4NCj4gPj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0FjcGlWaWV3L0FjcGlUYWJsZVBhcnNl ci5oPg0KPiA+PiArDQo+ID4+ICsvLyBMb2NhbCB2YXJpYWJsZXMNCj4gPj4gK1NUQVRJQyBBQ1BJ X0RFU0NSSVBUSU9OX0hFQURFUl9JTkZPIEFjcGlIZHJJbmZvOw0KPiA+PiArDQo+ID4+ICsvKiog QW4gQUNQSV9QQVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0aGUgQUNQSSBYU0RUIHRhYmxlLg0KPiA+ PiArKi8NCj4gPj4gK1NUQVRJQyBDT05TVCBBQ1BJX1BBUlNFUiBYc2R0UGFyc2VyW10gPSB7DQo+ ID4+ICsgIFBBUlNFX0FDUElfSEVBREVSICgmQWNwaUhkckluZm8pDQo+ID4+ICt9Ow0KPiA+PiAr DQo+ID4+ICtDT05TVCBBQ1BJX0RFU0NSSVBUSU9OX0hFQURFUl9JTkZPKiBDT05TVA0KPiA+PiAr RUZJQVBJDQo+ID4+ICtHZXRBY3BpWHNkdEhlYWRlckluZm8gKA0KPiA+PiArICBWT0lEDQo+ID4+ ICspDQo+ID4+ICt7DQo+ID4+ICsgIHJldHVybiAmQWNwaUhkckluZm87DQo+ID4+ICt9DQo+ID4+ ICsNCj4gPj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgQUNQSSBYU0RUIHRhYmxlDQo+ ID4+ICsgIGFuZCBvcHRpb25hbGx5IHRyYWNlcyB0aGUgQUNQSSB0YWJsZSBmaWVsZHMuDQo+ID4+ ICsNCj4gPj4gKyAgVGhpcyBmdW5jdGlvbiBhbHNvIHBlcmZvcm1zIHZhbGlkYXRpb24gb2YgdGhl IFhTRFQgdGFibGUuDQo+ID4+ICsNCj4gPj4gKyAgQHBhcmFtIFtpbl0gVHJhY2UgICAgICAgICAg ICAgIElmIFRSVUUsIHRyYWNlIHRoZSBBQ1BJIGZpZWxkcy4NCj4gPj4gKyAgQHBhcmFtIFtpbl0g UHRyICAgICAgICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ ID4+ICsgIEBwYXJhbSBbaW5dIEFjcGlUYWJsZUxlbmd0aCAgICBMZW5ndGggb2YgdGhlIEFDUEkg dGFibGUuDQo+ID4+ICsgIEBwYXJhbSBbaW5dIEFjcGlUYWJsZVJldmlzaW9uICBSZXZpc2lvbiBv ZiB0aGUgQUNQSSB0YWJsZS4NCj4gPj4gKyovDQo+ID4+ICtWT0lEDQo+ID4+ICtFRklBUEkNCj4g Pj4gK1BhcnNlQWNwaVhzZHQgKA0KPiA+PiArICBJTiBCT09MRUFOIFRyYWNlLA0KPiA+PiArICBJ TiBVSU5UOCogIFB0ciwNCj4gPj4gKyAgSU4gVUlOVDMyICBBY3BpVGFibGVMZW5ndGgsDQo+ID4+ ICsgIElOIFVJTlQ4ICAgQWNwaVRhYmxlUmV2aXNpb24NCj4gPj4gKyAgKQ0KPiA+PiArew0KPiA+ PiArICBVSU5UMzIgICAgICAgIE9mZnNldDsNCj4gPj4gKyAgVUlOVDMyICAgICAgICBUYWJsZU9m ZnNldDsNCj4gPj4gKyAgVUlOVDY0KiAgICAgICBUYWJsZVBvaW50ZXI7DQo+ID4+ICsgIFVJTlRO ICAgICAgICAgRW50cnlJbmRleDsNCj4gPj4gKyAgQ0hBUjE2ICAgICAgICBCdWZmZXJbMzJdOw0K PiA+PiArDQo+ID4+ICsgIC8vIFBhcnNlIHRoZSBBQ1BJIGhlYWRlciB0byBnZXQgdGhlIGxlbmd0 aA0KPiA+PiArICBQYXJzZUFjcGkgKA0KPiA+PiArICAgIEZBTFNFLA0KPiA+PiArICAgIDAsDQo+ ID4+ICsgICAgIlhTRFQiLA0KPiA+PiArICAgIFB0ciwNCj4gPj4gKyAgICBBQ1BJX0RFU0NSSVBU SU9OX0hFQURFUl9MRU5HVEgsDQo+ID4+ICsgICAgUEFSU0VSX1BBUkFNUyAoWHNkdFBhcnNlcikN Cj4gPj4gKyAgICApOw0KPiA+PiArDQo+ID4+ICsgIE9mZnNldCA9IFBhcnNlQWNwaSAoDQo+ID4+ ICsgICAgICAgICAgICAgVHJhY2UsDQo+ID4+ICsgICAgICAgICAgICAgMCwNCj4gPj4gKyAgICAg ICAgICAgICAiWFNEVCIsDQo+ID4+ICsgICAgICAgICAgICAgUHRyLA0KPiA+PiArICAgICAgICAg ICAgICpBY3BpSGRySW5mby5MZW5ndGgsDQo+ID4+ICsgICAgICAgICAgICAgUEFSU0VSX1BBUkFN UyAoWHNkdFBhcnNlcikNCj4gPj4gKyAgICAgICAgICAgICApOw0KPiA+PiArDQo+ID4+ICsgIFRh YmxlT2Zmc2V0ID0gT2Zmc2V0Ow0KPiA+PiArDQo+ID4+ICsgIGlmIChUcmFjZSkgew0KPiA+PiAr ICAgIEVudHJ5SW5kZXggPSAwOw0KPiA+PiArICAgIFRhYmxlUG9pbnRlciA9IChVSU5UNjQqKShQ dHIgKyBUYWJsZU9mZnNldCk7DQo+ID4+ICsgICAgd2hpbGUgKE9mZnNldCA8ICgqQWNwaUhkcklu Zm8uTGVuZ3RoKSkgew0KPiA+PiArICAgICAgQ09OU1QgVUlOVDMyKiBTaWduYXR1cmU7DQo+ID4+ ICsgICAgICBDT05TVCBVSU5UMzIqIExlbmd0aDsNCj4gPj4gKyAgICAgIENPTlNUIFVJTlQ4KiAg UmV2aXNpb247DQo+ID4+ICsNCj4gPj4gKyAgICAgIGlmICgoVUlOVDY0KikoVUlOVE4pKCpUYWJs ZVBvaW50ZXIpICE9IE5VTEwpIHsNCj4gPj4gKyAgICAgICAgVUlOVDgqICAgICAgUHRyOw0KPiA+ PiArDQo+ID4+ICsgICAgICAgIFBhcnNlQWNwaUhlYWRlciAoDQo+ID4+ICsgICAgICAgICAgKFVJ TlQ4KikoVUlOVE4pKCpUYWJsZVBvaW50ZXIpLA0KPiA+PiArICAgICAgICAgICZTaWduYXR1cmUs DQo+ID4+ICsgICAgICAgICAgJkxlbmd0aCwNCj4gPj4gKyAgICAgICAgICAmUmV2aXNpb24NCj4g Pj4gKyAgICAgICAgICApOw0KPiA+PiArDQo+ID4+ICsgICAgICAgIFB0ciA9IChVSU5UOCopU2ln bmF0dXJlOw0KPiA+PiArDQo+ID4+ICsgICAgICAgIFVuaWNvZGVTUHJpbnQgKA0KPiA+PiArICAg ICAgICAgIEJ1ZmZlciwNCj4gPj4gKyAgICAgICAgICBzaXplb2YgKEJ1ZmZlciksDQo+ID4+ICsg ICAgICAgICAgTCJFbnRyeVslZF0gLSAlYyVjJWMlYyIsDQo+ID4+ICsgICAgICAgICAgRW50cnlJ bmRleCsrLA0KPiA+PiArICAgICAgICAgIFB0clswXSwNCj4gPj4gKyAgICAgICAgICBQdHJbMV0s DQo+ID4+ICsgICAgICAgICAgUHRyWzJdLA0KPiA+PiArICAgICAgICAgIFB0clszXQ0KPiA+PiAr ICAgICAgICAgICk7DQo+ID4+ICsgICAgICB9IGVsc2Ugew0KPiA+PiArICAgICAgICBVbmljb2Rl U1ByaW50ICgNCj4gPj4gKyAgICAgICAgICBCdWZmZXIsDQo+ID4+ICsgICAgICAgICAgc2l6ZW9m IChCdWZmZXIpLA0KPiA+PiArICAgICAgICAgIEwiRW50cnlbJWRdIiwNCj4gPj4gKyAgICAgICAg ICBFbnRyeUluZGV4KysNCj4gPj4gKyAgICAgICAgICApOw0KPiA+PiArICAgICAgfQ0KPiA+PiAr DQo+ID4+ICsgICAgICBQcmludEZpZWxkTmFtZSAoMiwgQnVmZmVyKTsNCj4gPj4gKyAgICAgIFBy aW50IChMIjB4JWx4XG4iLCAqVGFibGVQb2ludGVyKTsNCj4gPj4gKw0KPiA+PiArICAgICAgLy8g VmFsaWRhdGUgdGhlIHRhYmxlIHBvaW50ZXJzIGFyZSBub3QgTlVMTA0KPiA+PiArICAgICAgaWYg KChVSU5UNjQqKShVSU5UTikoKlRhYmxlUG9pbnRlcikgPT0gTlVMTCkgew0KPiA+PiArICAgICAg ICBJbmNyZW1lbnRFcnJvckNvdW50ICgpOw0KPiA+PiArICAgICAgICBQcmludCAoDQo+ID4+ICsg ICAgICAgICAgTCJFUlJPUjogSW52YWxpZCB0YWJsZSBlbnRyeSBhdCAweCVseCwgdGFibGUgYWRk cmVzcyBpcyAweCVseFxuIiwNCj4gPj4gKyAgICAgICAgICBUYWJsZVBvaW50ZXIsDQo+ID4+ICsg ICAgICAgICAgKlRhYmxlUG9pbnRlcg0KPiA+PiArICAgICAgICAgICk7DQo+ID4+ICsgICAgICB9 DQo+ID4+ICsgICAgICBPZmZzZXQgKz0gc2l6ZW9mIChVSU5UNjQpOw0KPiA+PiArICAgICAgVGFi bGVQb2ludGVyKys7DQo+ID4+ICsgICAgfSAvLyB3aGlsZQ0KPiA+PiArICB9DQo+ID4+ICsNCj4g Pj4gKyAgLy8gUHJvY2VzcyB0aGUgdGFibGVzDQo+ID4+ICsgIE9mZnNldCA9IFRhYmxlT2Zmc2V0 Ow0KPiA+PiArICBUYWJsZVBvaW50ZXIgPSAoVUlOVDY0KikoUHRyICsgVGFibGVPZmZzZXQpOw0K PiA+PiArICB3aGlsZSAoT2Zmc2V0IDwgKCpBY3BpSGRySW5mby5MZW5ndGgpKSB7DQo+ID4+ICsg ICAgaWYgKChVSU5UNjQqKShVSU5UTikoKlRhYmxlUG9pbnRlcikgIT0gTlVMTCkgew0KPiA+PiAr ICAgICAgUHJvY2Vzc0FjcGlUYWJsZSAoKFVJTlQ4KikoVUlOVE4pKCpUYWJsZVBvaW50ZXIpKTsN Cj4gPj4gKyAgICB9DQo+ID4+ICsgICAgT2Zmc2V0ICs9IHNpemVvZiAoVUlOVDY0KTsNCj4gPj4g KyAgICBUYWJsZVBvaW50ZXIrKzsNCj4gPj4gKyAgfSAvLyB3aGlsZQ0KPiA+PiArfQ0KPiA+PiAr DQo+ID4+ICsvKiogUmVnaXN0ZXIgdGhlIHBhcnNlci4NCj4gPj4gKw0KPiA+PiArICBAcGFyYW0g W2luXSAgSW1hZ2VIYW5kbGUgIFRoZSBoYW5kbGUgdG8gdGhlIGltYWdlLg0KPiA+PiArICBAcGFy YW0gW2luXSAgU3lzdGVtVGFibGUgIFBvaW50ZXIgdG8gdGhlIFN5c3RlbSBUYWJsZS4NCj4gPj4g Kw0KPiA+PiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUgcGFyc2VyIGlzIHJl Z2lzdGVyZWQuDQo+ID4+ICsgIEByZXR2YWwgRUZJX0FMUkVBRFlfU1RBUlRFRCAgIFRoZSBwYXJz ZXIgZm9yIHRoZSBBQ1BJIFRhYmxlDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHdhcyBhbHJlYWR5IHJlZ2lzdGVyZWQuDQo+ID4+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURf UEFSQU1FVEVSIEEgcGFyYW1ldGVyIGlzIGludmFsaWQNCj4gPj4gKyAgQHJldHZhbCBFRklfT1VU X09GX1JFU09VUkNFUyAgTm8gc3BhY2UgdG8gcmVnaXN0ZXIgdGhlDQo+ID4+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHBhcnNlci4NCj4gPj4gKyovDQo+ID4+ICtFRklfU1RBVFVT DQo+ID4+ICtFRklBUEkNCj4gPj4gK1hzZHRQYXJzZXJMaWJDb25zdHJ1Y3RvciAoDQo+ID4+ICsg IElOIENPTlNUIEVGSV9IQU5ETEUgICAgICAgICAgICAgICAgSW1hZ2VIYW5kbGUsDQo+ID4+ICsg IElOICAgICAgIEVGSV9TWVNURU1fVEFCTEUgICogQ09OU1QgU3lzdGVtVGFibGUNCj4gPj4gKyAg KQ0KPiA+PiArew0KPiA+PiArICByZXR1cm4gUmVnaXN0ZXJQYXJzZXIgKA0KPiA+PiArDQo+IEVG SV9BQ1BJXzZfMl9FWFRFTkRFRF9TWVNURU1fREVTQ1JJUFRJT05fVEFCTEVfU0lHTkFUVVJFLA0K PiA+PiArICAgICAgICAgICBQYXJzZUFjcGlYc2R0DQo+ID4+ICsgICAgICAgICAgICk7DQo+ID4+ ICt9DQo+ID4+ICsNCj4gPj4gKy8qKiBEZXJlZ2lzdGVyIHRoZSBwYXJzZXIuDQo+ID4+ICsNCj4g Pj4gKyAgQHBhcmFtIFtpbl0gIEltYWdlSGFuZGxlICBUaGUgaGFuZGxlIHRvIHRoZSBpbWFnZS4N Cj4gPj4gKyAgQHBhcmFtIFtpbl0gIFN5c3RlbVRhYmxlICBQb2ludGVyIHRvIHRoZSBTeXN0ZW0g VGFibGUuDQo+ID4+ICsNCj4gPj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhl IHBhcnNlciBpcyBkZXJlZ2lzdGVyZWQuDQo+ID4+ICsgIEByZXR2YWwgRUZJX05PVF9GT1VORCAg ICAgICAgIFRoZSBwYXJzZXIgd2FzIG5vdCByZWdpc3RlcmVkLg0KPiA+PiArKi8NCj4gPj4gK0VG SV9TVEFUVVMNCj4gPj4gK0VGSUFQSQ0KPiA+PiArWHNkdFBhcnNlckxpYkRlc3RydWN0b3IgKA0K PiA+PiArICBJTiBDT05TVCBFRklfSEFORExFICAgICAgICAgICAgICAgIEltYWdlSGFuZGxlLA0K PiA+PiArICBJTiAgICAgICBFRklfU1lTVEVNX1RBQkxFICAqIENPTlNUIFN5c3RlbVRhYmxlDQo+ ID4+ICsgICkNCj4gPj4gK3sNCj4gPj4gKyAgcmV0dXJuIERlcmVnaXN0ZXJQYXJzZXIgKA0KPiA+ PiArDQo+IEVGSV9BQ1BJXzZfMl9FWFRFTkRFRF9TWVNURU1fREVTQ1JJUFRJT05fVEFCTEVfU0lH TkFUVVJFDQo+ID4+ICsgICAgICAgICAgICk7DQo+ID4+ICt9DQo+ID4+IGRpZmYgLS1naXQNCj4g YS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL1hz ZHQvWHNkdFBhcnNlckxpYi5pDQo+IG5mDQo+IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxB Y3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9Yc2R0L1hzZHRQYXJzZXJMaWIuaQ0KPiBuZg0KPiA+ PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+PiBpbmRleA0KPiAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYjlhMDU4MzY0MDU2Mzc1NTIwMWMNCj4gMDg5YWEyMDcw M2E4YjJjN2YwNA0KPiA+PiAtLS0gL2Rldi9udWxsDQo+ID4+ICsrKw0KPiBiL1NoZWxsUGtnL0xp YnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvWHNkdC9Yc2R0UGFyc2Vy TGliLmkNCj4gbmYNCj4gPj4gQEAgLTAsMCArMSwzMyBAQA0KPiA+PiArIyMgQGZpbGUNCj4gPj4g KyMNCj4gPj4gKyMgIENvcHlyaWdodCAoYykgMjAxNyAtIDIwMTgsIEFSTSBMaW1pdGVkLiBBbGwg cmlnaHRzIHJlc2VydmVkLg0KPiA+PiArIw0KPiA+PiArIyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUg YWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiA+PiArIyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2 YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlDQo+IEJTRCBMaWNl bnNlDQo+ID4+ICsjICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBm dWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlDQo+IGZvdW5kIGF0DQo+ID4+ICsjICBodHRw Oi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ID4+ICsjDQo+ID4+ ICsjICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04g QU4gIkFTIElTIg0KPiBCQVNJUywNCj4gPj4gKyMgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBS RVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUg0KPiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ ID4+ICsjIw0KPiA+PiArDQo+ID4+ICtbRGVmaW5lc10NCj4gPj4gKyAgSU5GX1ZFUlNJT04gICAg PSAweDAwMDEwMDE5DQo+ID4+ICsgIEJBU0VfTkFNRSAgICAgID0gWHNkdFBhcnNlckxpYg0KPiA+ PiArICBGSUxFX0dVSUQgICAgICA9IEE1N0VEN0EyLTRDRDYtNDIzOS05QTRELUY3RjBEQkRDRkNG QQ0KPiA+PiArICBWRVJTSU9OX1NUUklORyA9IDEuMA0KPiA+PiArICBNT0RVTEVfVFlQRSAgICA9 IERYRV9EUklWRVINCj4gPj4gKyAgTElCUkFSWV9DTEFTUyAgPSBOVUxMfERYRV9EUklWRVINCj4g Pj4gKyAgQ09OU1RSVUNUT1IgICAgPSBYc2R0UGFyc2VyTGliQ29uc3RydWN0b3INCj4gPj4gKyAg REVTVFJVQ1RPUiAgICAgPSBYc2R0UGFyc2VyTGliRGVzdHJ1Y3Rvcg0KPiA+PiArDQo+ID4+ICtb U291cmNlc10NCj4gPj4gKyAgWHNkdFBhcnNlci5jDQo+ID4+ICsNCj4gPj4gK1tQYWNrYWdlc10N Cj4gPj4gKyAgTWRlUGtnL01kZVBrZy5kZWMNCj4gPj4gKyAgU2hlbGxQa2cvU2hlbGxQa2cuZGVj DQo+ID4+ICsgIE1kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVjDQo+ID4+ICsNCj4gPj4gK1tM aWJyYXJ5Q2xhc3Nlc10NCj4gPj4gKyAgU2hlbGxBY3BpVmlld0NvbW1hbmRMaWINCj4gPj4gZGlm ZiAtLWdpdA0KPiBhL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGli L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZA0KPiBMaWIuYw0KPiBiL1NoZWxsUGtnL0xpYnJhcnkv VWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZA0KPiBM aWIuYw0KPiA+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+PiBpbmRleA0KPiAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lODgwMzEwZThmY2UzNDcxZWM1MGINCj4g ODVkNmZhYjk5NWFhMWM5N2FlNQ0KPiA+PiAtLS0gL2Rldi9udWxsDQo+ID4+ICsrKw0KPiBiL1No ZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1VlZmlTaGVsbEFjcGlW aWV3Q29tbWFuZA0KPiBMaWIuYw0KPiA+PiBAQCAtMCwwICsxLDEwNiBAQA0KPiA+PiArLyoqDQo+ ID4+ICsgIE1haW4gZmlsZSBmb3IgJ2FjcGl2aWV3JyBTaGVsbCBjb21tYW5kIGZ1bmN0aW9uLg0K PiA+PiArDQo+ID4+ICsgIENvcHlyaWdodCAoYykgMjAxNiAtIDIwMTgsIEFSTSBMaW1pdGVkLiBB bGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPj4gKyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNj b21wYW55aW5nIG1hdGVyaWFscw0KPiA+PiArICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxh YmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUNCj4gQlNEIExpY2Vuc2UN Cj4gPj4gKyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0 ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZQ0KPiBmb3VuZCBhdA0KPiA+PiArICBodHRwOi8vb3Bl bnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ID4+ICsNCj4gPj4gKyAgVEhF IFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJ UyINCj4gQkFTSVMsDQo+ID4+ICsgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElP TlMgT0YgQU5ZIEtJTkQsIEVJVEhFUg0KPiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ID4+ICsqKi8N Cj4gPj4gKw0KPiA+PiArI2luY2x1ZGUgPEd1aWQvU2hlbGxMaWJIaWlHdWlkLmg+DQo+ID4+ICsj aW5jbHVkZSA8TGlicmFyeS9IaWlMaWIuaD4NCj4gPj4gKyNpbmNsdWRlIDxMaWJyYXJ5L1NoZWxs Q29tbWFuZExpYi5oPg0KPiA+PiArI2luY2x1ZGUgPExpYnJhcnkvVWVmaUxpYi5oPg0KPiA+PiAr I2luY2x1ZGUgPExpYnJhcnkvVWVmaUJvb3RTZXJ2aWNlc1RhYmxlTGliLmg+DQo+ID4+ICsjaW5j bHVkZSA8VWVmaS5oPg0KPiA+PiArI2luY2x1ZGUgIkFjcGlWaWV3LmgiDQo+ID4+ICsjaW5jbHVk ZSAiVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliLmgiDQo+ID4+ICsNCj4gPj4gK0NPTlNUIENI QVIxNiBnU2hlbGxBY3BpVmlld0ZpbGVOYW1lW10gPSBMIlNoZWxsQ29tbWFuZCI7DQo+ID4+ICsN Cj4gPj4gKy8qKg0KPiA+PiArICBSZXR1cm4gdGhlIGZpbGUgbmFtZSBvZiB0aGUgaGVscCB0ZXh0 IGZpbGUgaWYgbm90IHVzaW5nIEhJSS4NCj4gPj4gKw0KPiA+PiArICBAcmV0dXJuIFRoZSBzdHJp bmcgcG9pbnRlciB0byB0aGUgZmlsZSBuYW1lLg0KPiA+PiArKi8NCj4gPj4gK0NPTlNUIENIQVIx NioNCj4gPj4gK0VGSUFQSQ0KPiA+PiArU2hlbGxDb21tYW5kR2V0TWFuRmlsZU5hbWVBY3BpVmll dyAoDQo+ID4+ICsgIFZPSUQNCj4gPj4gKyAgKQ0KPiA+PiArew0KPiA+PiArICByZXR1cm4gZ1No ZWxsQWNwaVZpZXdGaWxlTmFtZTsNCj4gPj4gK30NCj4gPj4gKw0KPiA+PiArLyoqDQo+ID4+ICsg IENvbnN0cnVjdG9yIGZvciB0aGUgU2hlbGwgQWNwaVZpZXcgQ29tbWFuZCBsaWJyYXJ5Lg0KPiA+ PiArDQo+ID4+ICsgIEluc3RhbGwgdGhlIGhhbmRsZXJzIGZvciBhY3BpdmlldyBVRUZJIFNoZWxs IGNvbW1hbmQuDQo+ID4+ICsNCj4gPj4gKyAgQHBhcmFtIEltYWdlSGFuZGxlICAgICAgICAgICAg VGhlIGltYWdlIGhhbmRsZSBvZiB0aGUgcHJvY2Vzcy4NCj4gPj4gKyAgQHBhcmFtIFN5c3RlbVRh YmxlICAgICAgICAgICAgVGhlIEVGSSBTeXN0ZW0gVGFibGUgcG9pbnRlci4NCj4gPj4gKw0KPiA+ PiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUgU2hlbGwgY29tbWFuZCBoYW5k bGVycyB3ZXJlDQo+IGluc3RhbGxlZA0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzdWNjZXNzZnVsbHkuDQo+ID4+ICsgIEByZXR2YWwgRUZJX0RFVklDRV9FUlJPUiAgICAg IEhpaSBwYWNrYWdlIGZhaWxlZCB0byBpbnN0YWxsLg0KPiA+PiArKi8NCj4gPj4gK0VGSV9TVEFU VVMNCj4gPj4gK0VGSUFQSQ0KPiA+PiArU2hlbGxBY3BpVmlld0NvbW1hbmRMaWJDb25zdHJ1Y3Rv ciAoDQo+ID4+ICsgIElOIEVGSV9IQU5ETEUgICAgICAgIEltYWdlSGFuZGxlLA0KPiA+PiArICBJ TiBFRklfU1lTVEVNX1RBQkxFICAqU3lzdGVtVGFibGUNCj4gPj4gKyAgKQ0KPiA+PiArew0KPiA+ PiArICBnU2hlbGxBY3BpVmlld0hpaUhhbmRsZSA9IE5VTEw7DQo+ID4+ICsNCj4gPj4gKyAgLy8g Q2hlY2sgU2hlbGwgUHJvZmlsZSBEZWJ1ZzEgYml0IG9mIHRoZSBwcm9maWxlcyBtYXNrDQo+ID4+ ICsgIGlmICgoRml4ZWRQY2RHZXQ4IChQY2RTaGVsbFByb2ZpbGVNYXNrKSAmIEJJVDEpID09IDAp IHsNCj4gPj4gKyAgICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ID4+ICsgIH0NCj4gPj4gKw0KPiA+ PiArICBnU2hlbGxBY3BpVmlld0hpaUhhbmRsZSA9IEhpaUFkZFBhY2thZ2VzICgNCj4gPj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZnU2hlbGxBY3BpVmlld0hpaUd1aWQsDQo+ID4+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnSW1hZ2VIYW5kbGUsDQo+ID4+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBVZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWJTdHJp bmdzLA0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTA0KPiA+PiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsNCj4gPj4gKyAgaWYgKGdTaGVsbEFjcGlWaWV3 SGlpSGFuZGxlID09IE5VTEwpIHsNCj4gPj4gKyAgICByZXR1cm4gRUZJX0RFVklDRV9FUlJPUjsN Cj4gPj4gKyAgfQ0KPiA+PiArICAvLyBJbnN0YWxsIG91ciBTaGVsbCBjb21tYW5kIGhhbmRsZXIN Cj4gPj4gKyAgU2hlbGxDb21tYW5kUmVnaXN0ZXJDb21tYW5kTmFtZSAoDQo+ID4+ICsgICAgTCJh Y3BpdmlldyIsDQo+ID4+ICsgICAgU2hlbGxDb21tYW5kUnVuQWNwaVZpZXcsDQo+ID4+ICsgICAg U2hlbGxDb21tYW5kR2V0TWFuRmlsZU5hbWVBY3BpVmlldywNCj4gPj4gKyAgICAwLA0KPiA+PiAr ICAgIEwiYWNwaXZpZXciLA0KPiA+PiArICAgIFRSVUUsDQo+ID4+ICsgICAgZ1NoZWxsQWNwaVZp ZXdIaWlIYW5kbGUsDQo+ID4+ICsgICAgU1RSSU5HX1RPS0VOIChTVFJfR0VUX0hFTFBfQUNQSVZJ RVcpDQo+ID4+ICsgICAgKTsNCj4gPj4gKw0KPiA+PiArICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ ID4+ICt9DQo+ID4+ICsNCj4gPj4gKy8qKg0KPiA+PiArICBEZXN0cnVjdG9yIGZvciB0aGUgbGli cmFyeS4gZnJlZSBhbnkgcmVzb3VyY2VzLg0KPiA+PiArDQo+ID4+ICsgIEBwYXJhbSBJbWFnZUhh bmRsZSAgICAgICAgICAgIFRoZSBpbWFnZSBoYW5kbGUgb2YgdGhlIHByb2Nlc3MuDQo+ID4+ICsg IEBwYXJhbSBTeXN0ZW1UYWJsZSAgICAgICAgICAgIFRoZSBFRkkgU3lzdGVtIFRhYmxlIHBvaW50 ZXIuDQo+ID4+ICsqLw0KPiA+PiArRUZJX1NUQVRVUw0KPiA+PiArRUZJQVBJDQo+ID4+ICtTaGVs bEFjcGlWaWV3Q29tbWFuZExpYkRlc3RydWN0b3IgKA0KPiA+PiArICBJTiBFRklfSEFORExFICAg ICAgICBJbWFnZUhhbmRsZSwNCj4gPj4gKyAgSU4gRUZJX1NZU1RFTV9UQUJMRSAgKlN5c3RlbVRh YmxlDQo+ID4+ICsgICkNCj4gPj4gK3sNCj4gPj4gKyAgaWYgKGdTaGVsbEFjcGlWaWV3SGlpSGFu ZGxlICE9IE5VTEwpIHsNCj4gPj4gKyAgICBIaWlSZW1vdmVQYWNrYWdlcyAoZ1NoZWxsQWNwaVZp ZXdIaWlIYW5kbGUpOw0KPiA+PiArICB9DQo+ID4+ICsgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4g Pj4gK30NCj4gPj4gZGlmZiAtLWdpdA0KPiBhL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNw aVZpZXdDb21tYW5kTGliL1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZA0KPiBMaWIuaA0KPiBiL1No ZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1VlZmlTaGVsbEFjcGlW aWV3Q29tbWFuZA0KPiBMaWIuaA0KPiA+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+PiBpbmRl eA0KPiAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41OWM4ZTIxNTQ0 ZDY4MjlhYzg3MjkNCj4gNThmNmI4NDM1OGUxZjkxYjAyZg0KPiA+PiAtLS0gL2Rldi9udWxsDQo+ ID4+ICsrKw0KPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGli L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZA0KPiBMaWIuaA0KPiA+PiBAQCAtMCwwICsxLDMyIEBA DQo+ID4+ICsvKioNCj4gPj4gKyAgSGVhZGVyIGZpbGUgZm9yICdhY3BpdmlldycgU2hlbGwgY29t bWFuZCBmdW5jdGlvbnMuDQo+ID4+ICsNCj4gPj4gKyAgQ29weXJpZ2h0IChjKSAyMDE2IC0gMjAx NywgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+PiArICBUaGlzIHBy b2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ID4+ICsgIGFyZSBsaWNlbnNl ZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRo ZQ0KPiBCU0QgTGljZW5zZQ0KPiA+PiArICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1 dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlDQo+IGZvdW5kIGF0DQo+ ID4+ICsgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4g Pj4gKw0KPiA+PiArICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJ Q0VOU0UgT04gQU4gIkFTIElTIg0KPiBCQVNJUywNCj4gPj4gKyAgV0lUSE9VVCBXQVJSQU5USUVT IE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSDQo+IEVYUFJFU1MgT1IgSU1Q TElFRC4NCj4gPj4gKyoqLw0KPiA+PiArDQo+ID4+ICsjaWZuZGVmIFVFRklfU0hFTExfQUNQSVZJ RVdfQ09NTUFORF9MSUJfSF8NCj4gPj4gKyNkZWZpbmUgVUVGSV9TSEVMTF9BQ1BJVklFV19DT01N QU5EX0xJQl9IXw0KPiA+PiArDQo+ID4+ICtleHRlcm4gRUZJX0hJSV9IQU5ETEUgZ1NoZWxsQWNw aVZpZXdIaWlIYW5kbGU7DQo+ID4+ICsNCj4gPj4gKy8qKg0KPiA+PiArICBGdW5jdGlvbiBmb3Ig J2FjcGl2aWV3JyBjb21tYW5kLg0KPiA+PiArDQo+ID4+ICsgIEBwYXJhbVtpbl0gSW1hZ2VIYW5k bGUgIEhhbmRsZSB0byB0aGUgSW1hZ2UgKE5VTEwgaWYgSW50ZXJuYWwpLg0KPiA+PiArICBAcGFy YW1baW5dIFN5c3RlbVRhYmxlICBQb2ludGVyIHRvIHRoZSBTeXN0ZW0gVGFibGUgKE5VTEwgaWYg SW50ZXJuYWwpLg0KPiA+PiArKi8NCj4gPj4gK1NIRUxMX1NUQVRVUw0KPiA+PiArRUZJQVBJDQo+ ID4+ICtTaGVsbENvbW1hbmRSdW5BY3BpVmlldyAoDQo+ID4+ICsgIElOIEVGSV9IQU5ETEUgICAg ICAgIEltYWdlSGFuZGxlLA0KPiA+PiArICBJTiBFRklfU1lTVEVNX1RBQkxFICAqU3lzdGVtVGFi bGUNCj4gPj4gKyAgKTsNCj4gPj4gKw0KPiA+PiArI2VuZGlmIC8vIFVFRklfU0hFTExfQUNQSVZJ RVdfQ09NTUFORF9MSUJfSF8NCj4gPj4gZGlmZiAtLWdpdA0KPiBhL1NoZWxsUGtnL0xpYnJhcnkv VWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZA0KPiBM aWIuaW5mDQo+IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIv VWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kDQo+IExpYi5pbmYNCj4gPj4gbmV3IGZpbGUgbW9kZSAx MDA2NDQNCj4gPj4gaW5kZXgNCj4gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMC4uNTUzYjI4OThlMWFlNmRkYmM4YzdjDQo+IDBhMjkzMTJlNjAyYWIwNTQzYTMNCj4gPj4g LS0tIC9kZXYvbnVsbA0KPiA+PiArKysNCj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFj cGlWaWV3Q29tbWFuZExpYi9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmQNCj4gTGliLmluZg0KPiA+ PiBAQCAtMCwwICsxLDYwIEBADQo+ID4+ICsjIyAgQGZpbGUNCj4gPj4gKyMgUHJvdmlkZXMgU2hl bGwgJ2FjcGl2aWV3JyBjb21tYW5kIGZ1bmN0aW9ucw0KPiA+PiArIw0KPiA+PiArIyBDb3B5cmln aHQgKGMpIDIwMTYgLSAyMDE4LCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+ DQo+ID4+ICsjDQo+ID4+ICsjICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0 ZXJpYWxzDQo+ID4+ICsjICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRo ZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUNCj4gQlNEIExpY2Vuc2UNCj4gPj4gKyMgIHdo aWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBs aWNlbnNlIG1heSBiZQ0KPiBmb3VuZCBhdA0KPiA+PiArIyAgaHR0cDovL29wZW5zb3VyY2Uub3Jn L2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiA+PiArIyAgVEhFIFBST0dSQU0gSVMgRElTVFJJ QlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyINCj4gQkFTSVMsDQo+ID4+ ICsjICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBF SVRIRVINCj4gRVhQUkVTUyBPUiBJTVBMSUVELg0KPiA+PiArIw0KPiA+PiArIw0KPiA+PiArIyMN Cj4gPj4gKw0KPiA+PiArW0RlZmluZXNdDQo+ID4+ICsgIElORl9WRVJTSU9OICAgICAgICAgICAg ICAgICAgICA9IDB4MDAwMTAwMDYNCj4gPj4gKyAgQkFTRV9OQU1FICAgICAgICAgICAgICAgICAg ICAgID0gVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliDQo+ID4+ICsgIEZJTEVfR1VJRCAgICAg ICAgICAgICAgICAgICAgICA9DQo+IEZCNUIzMDVFLTg0RjUtNDYxRi05NDBELTgyRDM0NTc1N0FG QQ0KPiA+PiArICBNT0RVTEVfVFlQRSAgICAgICAgICAgICAgICAgICAgPSBVRUZJX0RSSVZFUg0K PiA+PiArICBWRVJTSU9OX1NUUklORyAgICAgICAgICAgICAgICAgPSAxLjANCj4gPj4gKyAgTElC UkFSWV9DTEFTUyAgICAgICAgICAgICAgICAgID0NCj4gU2hlbGxBY3BpVmlld0NvbW1hbmRMaWJ8 VUVGSV9BUFBMSUNBVElPTiBVRUZJX0RSSVZFUg0KPiBEWEVfUlVOVElNRV9EUklWRVINCj4gPj4g KyAgQ09OU1RSVUNUT1IgICAgICAgICAgICAgICAgICAgID0NCj4gU2hlbGxBY3BpVmlld0NvbW1h bmRMaWJDb25zdHJ1Y3Rvcg0KPiA+PiArICBERVNUUlVDVE9SICAgICAgICAgICAgICAgICAgICAg PQ0KPiBTaGVsbEFjcGlWaWV3Q29tbWFuZExpYkRlc3RydWN0b3INCj4gPj4gKw0KPiA+PiArW1Nv dXJjZXMuY29tbW9uXQ0KPiA+PiArICBVZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIudW5pDQo+ ID4+ICsgIFVlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi5jDQo+ID4+ICsgIFVlZmlTaGVsbEFj cGlWaWV3Q29tbWFuZExpYi5oDQo+ID4+ICsgIEFjcGlQYXJzZXIuYw0KPiA+PiArICBBY3BpVGFi bGVQYXJzZXIuYw0KPiA+PiArICBBY3BpVmlldy5jDQo+ID4+ICsNCj4gPj4gK1tQYWNrYWdlc10N Cj4gPj4gKyAgTWRlUGtnL01kZVBrZy5kZWMNCj4gPj4gKyAgU2hlbGxQa2cvU2hlbGxQa2cuZGVj DQo+ID4+ICsgIE1kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVjDQo+ID4+ICsNCj4gPj4gK1tM aWJyYXJ5Q2xhc3Nlc10NCj4gPj4gKyAgTWVtb3J5QWxsb2NhdGlvbkxpYg0KPiA+PiArICBCYXNl TGliDQo+ID4+ICsgIEJhc2VNZW1vcnlMaWINCj4gPj4gKyAgRGVidWdMaWINCj4gPj4gKyAgU2hl bGxDb21tYW5kTGliDQo+ID4+ICsgIFNoZWxsTGliDQo+ID4+ICsgIFVlZmlMaWINCj4gPj4gKyAg VWVmaVJ1bnRpbWVTZXJ2aWNlc1RhYmxlTGliDQo+ID4+ICsgIFVlZmlCb290U2VydmljZXNUYWJs ZUxpYg0KPiA+PiArICBQY2RMaWINCj4gPj4gKyAgSGlpTGliDQo+ID4+ICsgIFByaW50TGliDQo+ ID4+ICsgIEZpbGVIYW5kbGVMaWINCj4gPj4gKw0KPiA+PiArDQo+ID4+ICtbRml4ZWRQY2RdDQo+ ID4+ICsgIGdFZmlTaGVsbFBrZ1Rva2VuU3BhY2VHdWlkLlBjZFNoZWxsUHJvZmlsZU1hc2sgIyMg Q09OU1VNRVMNCj4gPj4gKw0KPiA+PiArW0d1aWRzXQ0KPiA+PiArICBnU2hlbGxBY3BpVmlld0hp aUd1aWQgICAgICAgICAgICMjIENPTlNVTUVTICMjIEhJSQ0KPiA+PiArICBnRWZpQWNwaVRhYmxl R3VpZCAgICAgICAgICAgICAgICMjIFNPTUVUSU1FU19DT05TVU1FUyAjIw0KPiBTeXN0ZW1UYWJs ZQ0KPiA+PiBkaWZmIC0tZ2l0DQo+IGEvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmll d0NvbW1hbmRMaWIvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kDQo+IExpYi51bmkNCj4gYi9TaGVs bFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9VZWZpU2hlbGxBY3BpVmll d0NvbW1hbmQNCj4gTGliLnVuaQ0KPiA+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+PiBpbmRl eA0KPiAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYzRkNjZlMWZm NTA3MDU0ZDRhYTQyDQo+IGJkNDdiZmFlODgyNGMyMThlNg0KPiA+PiAtLS0gL2Rldi9udWxsDQo+ ID4+ICsrKw0KPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGli L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZA0KPiBMaWIudW5pDQo+ID4+IEBAIC0wLDAgKzEsMTI3 IEBADQo+ID4+ICsvLyAvKioNCj4gPj4gKy8vDQo+ID4+ICsvLyBDb3B5cmlnaHQgKGMpIDIwMTYg LSAyMDE3LCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ID4+ICsvLyBU aGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ID4+ICsvLyBhcmUg bGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9u cyBvZiB0aGUNCj4gQlNEIExpY2Vuc2UNCj4gPj4gKy8vIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMg ZGlzdHJpYnV0aW9uLiBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZQ0KPiBmb3Vu ZCBhdA0KPiA+PiArLy8gaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNl LnBocA0KPiA+PiArLy8NCj4gPj4gKy8vIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVS IFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiDQo+IEJBU0lTLA0KPiA+PiArLy8gV0lUSE9V VCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSDQo+IEVY UFJFU1MgT1IgSU1QTElFRC4NCj4gPj4gKy8vDQo+ID4+ICsvLyBNb2R1bGUgTmFtZToNCj4gPj4g Ky8vDQo+ID4+ICsvLyBVZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIudW5pDQo+ID4+ICsvLw0K PiA+PiArLy8gQWJzdHJhY3Q6DQo+ID4+ICsvLw0KPiA+PiArLy8gU3RyaW5nIGRlZmluaXRpb25z IGZvciBVRUZJIFNoZWxsIGFjcGl2aWV3IGNvbW1hbmQNCj4gPj4gKy8vDQo+ID4+ICsvLw0KPiA+ PiArLy8gKi8NCj4gPj4gKw0KPiA+PiArLz0jDQo+ID4+ICsNCj4gPj4gKyNsYW5nZGVmICAgZW4t VVMgImVuZ2xpc2giDQo+ID4+ICsNCj4gPj4gKyNzdHJpbmcgU1RSX0dFTl9QUk9CTEVNICAgICAg ICAgICAjbGFuZ3VhZ2UgZW4tVVMgIiVIJXMlTjoNCj4gVW5rbm93biBmbGFnIC0gJyVIJXMlTidc clxuIg0KPiA+PiArI3N0cmluZyBTVFJfR0VOX05PX1ZBTFVFICAgICAgICAgICNsYW5ndWFnZSBl bi1VUyAiJUglcyVOOg0KPiBNaXNzaW5nIGFyZ3VtZW50IGZvciBmbGFnIC0gJyVIJXMlTidcclxu Ig0KPiA+PiArI3N0cmluZyBTVFJfR0VOX1RPT19NQU5ZICAgICAgICAgICNsYW5ndWFnZSBlbi1V UyAiJUglcyVOOiBUb28NCj4gbWFueSBhcmd1bWVudHMuXHJcbiINCj4gPj4gKyNzdHJpbmcgU1RS X0dFTl9NSVNTSU5HX09QVElPTiAgICAjbGFuZ3VhZ2UgZW4tVVMgIiVIJXMlTjoNCj4gTWlzc2lu ZyBvcHRpb24gJyVIJXMlTicgcmVxdWlyZWQgYnkgZmxhZyAtICclSCVzJU4nXHJcbiINCj4gPj4g KyNzdHJpbmcgU1RSX0dFTl9SRUFET05MWV9NRURJQSAgICAjbGFuZ3VhZ2UgZW4tVVMgIiVIJXMl TjoNCj4gVW5hYmxlIHRvIHdyaXRlIHRvIHRoZSBjdXJyZW50IGRpcmVjdG9yeSwgY2hlY2sgaWYg bWVkaWEgaXMgd3JpdGFibGUuXHJcbiINCj4gPj4gKw0KPiA+PiArI3N0cmluZyBTVFJfR0VUX0hF TFBfQUNQSVZJRVcgICAjbGFuZ3VhZ2UgZW4tVVMgIiINCj4gPj4gKyIuVEggYWNwaXZpZXcgMCAi RGlzcGxheSBBQ1BJIGluZm9ybWF0aW9uLiJcclxuIg0KPiA+PiArIi5TSCBOQU1FXHJcbiINCj4g Pj4gKyJEaXNwbGF5IEFDUEkgVGFibGUgaW5mb3JtYXRpb24uXHJcbiINCj4gPj4gKyIuU0ggU1lO T1BTSVNcclxuIg0KPiA+PiArIiBcclxuIg0KPiA+PiArIkFDUElWSUVXIFtbLT9dIHwgW1stbF0g fCBbLXMgQWNwaVRhYmxlIFstZF1dXSBbLWNdIFstdl0gWy1oIEhpZ2hsaWdodF1dXHJcbiINCj4g Pj4gKyIgXHJcbiINCj4gPj4gKyIuU0ggT1BUSU9OU1xyXG4iDQo+ID4+ICsiIFxyXG4iDQo+ID4+ ICsiICAtbCAtIERpc3BsYXkgbGlzdCBvZiBpbnN0YWxsZWQgQUNQSSBUYWJsZXMuXHJcbiINCj4g Pj4gKyIgIC1zIC0gRGlzcGxheSBvbmx5IHRoZSBzcGVjaWZpZWQgQWNwaVRhYmxlIHR5cGUuXHJc biINCj4gPj4gKyIgICAgICAgICBBY3BpVGFibGUgICAgOiBUaGUgcmVxdWlyZWQgQUNQSSBUYWJs ZSB0eXBlLlxyXG4iDQo+ID4+ICsiICAtZCAtIEdlbmVyYXRlIGEgYmluYXJ5IGZpbGUgZHVtcCBv ZiB0aGUgc3BlY2lmaWVkIEFjcGlUYWJsZS5cclxuIg0KPiA+PiArIiAgLWMgLSBDb25zaXN0ZW5j eSBjaGVja2luZyAoZW5hYmxlZCBieSBkZWZhdWx0KS5cclxuIg0KPiA+PiArIiAgLXYgLSBEaXNw bGF5IHZlcmJvc2UgZGF0YSAoZW5hYmxlZCBieSBkZWZhdWx0KS5cclxuIg0KPiA+PiArIiAgLWgg LSBFbmFibGUvRGlzYWJsZSBDb2xvdXIgSGlnaGxpZ2h0aW5nLlxyXG4iDQo+ID4+ICsiICAgICAg ICAgSGlnaGxpZ2h0ICAgIDogVFJVRS9PTiBlbmFibGVzIGhpZ2hsaWdodGluZztcclxuIg0KPiA+ PiArIiAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFL09GRiAoZGVmYXVsdCkgZGlzYWJsZXMg aGlnaGxpZ2h0aW5nLlxyXG4iDQo+ID4+ICsiICAtPyAtIFNob3cgaGVscC5cclxuIg0KPiA+PiAr IiBcclxuIg0KPiA+PiArIi5TSCBERVNDUklQVElPTlxyXG4iDQo+ID4+ICsiIFxyXG4iDQo+ID4+ ICsiICBUaGlzIHByb2dyYW0gaXMgcHJvdmlkZWQgdG8gYWxsb3cgZXhhbWluYXRpb24gb2YgQUNQ SSB0YWJsZSB2YWx1ZXMgZnJvbQ0KPiB0aGVcclxuIg0KPiA+PiArIiAgVUVGSSBTaGVsbC4gIFRo aXMgY2FuIGhlbHAgd2l0aCBpbnZlc3RpZ2F0aW9ucywgZXNwZWNpYWxseSBhdCB0aGF0IHN0YWdl DQo+IHdoZXJlXHJcbiINCj4gPj4gKyIgIHRoZSB0YWJsZXMgYXJlIG5vdCBlbmFibGluZyBhbiBP UyB0byBib290LlxyXG4iDQo+ID4+ICsiICBUaGUgcHJvZ3JhbSBpcyBub3QgZXhoYXVzdGl2ZSwg YW5kIG9ubHkgZW5jYXBzdWxhdGVzIGRldGFpbGVkDQo+IGtub3dsZWRnZSBvZiBhXHJcbiINCj4g Pj4gKyIgIGxpbWl0ZWQgbnVtYmVyIG9mIHRhYmxlIHR5cGVzLlxyXG4iDQo+ID4+ICsiIFxyXG4i DQo+ID4+ICsiICBEZWZhdWx0IGJlaGF2aW91ciBpcyB0byBkaXNwbGF5IHRoZSBjb250ZW50IG9m IGFsbCB0YWJsZXMgaW5zdGFsbGVkLlxyXG4iDQo+ID4+ICsiICAnS25vd24nIHRhYmxlIHR5cGVz IChsaXN0ZWQgaW4gTk9URVMgYmVsb3cpIHdpbGwgYmUgcGFyc2VkIGFuZA0KPiBkaXNwbGF5ZWRc clxuIg0KPiA+PiArIiAgd2l0aCBkZXNjcmlwdGlvbnMgYW5kIGZpZWxkIHZhbHVlcy4gIFdoZXJl IGFwcHJvcHJpYXRlIGEgZGVncmVlIG9mDQo+IGNvbnNpc3RlbmN5XHJcbiINCj4gPj4gKyIgIGNo ZWNraW5nIGlzIGRvbmUgYW5kIGVycm9ycyBtYXkgYmUgcmVwb3J0ZWQgaW4gdGhlIG91dHB1dC5c clxuIg0KPiA+PiArIiAgT3RoZXIgdGFibGUgdHlwZXMgd2lsbCBiZSBkaXNwbGF5ZWQgYXMgYW4g YXJyYXkgb2YgSGV4YWRlY2ltYWwNCj4gYnl0ZXMuXHJcbiINCj4gPj4gKyIgXHJcbiINCj4gPj4g KyIgIFRvIGZhY2lsaXRhdGUgZGVidWdnaW5nLCB0aGUgLXMgYW5kIC1kIG9wdGlvbnMgY2FuIGJl IHVzZWQgdG8gZ2VuZXJhdGUNCj4gYVxyXG4iDQo+ID4+ICsiICBiaW5hcnkgZmlsZSBpbWFnZSBv ZiBhIHRhYmxlIHRoYXQgY2FuIGJlIGNvcGllZCBlbHNld2hlcmUgZm9yDQo+IGludmVzdGlnYXRp b25cclxuIg0KPiA+PiArIiAgdXNpbmcgdG9vbHMgc3VjaCBhcyB0aG9zZSBwcm92aWRlZCBieSBh Y3BpY2Eub3JnLiAgVGhpcyBpcyBlc3BlY2lhbGx5DQo+IHJlbGV2YW50XHJcbiINCj4gPj4gKyIg IGZvciBBTUwgdHlwZSB0YWJsZXMgbGlrZSBEU0RUIGFuZCBTU0RULlxyXG4iDQo+ID4+ICsiIFxy XG4iDQo+ID4+ICsiTk9URVM6XHJcbiINCj4gPj4gKyIgIDEuIFRoZSBBY3BpVGFibGUgcGFyYW1l dGVyIGNhbiBtYXRjaCBhbnkgaW5zdGFsbGVkIHRhYmxlIHR5cGUuXHJcbiINCj4gPj4gKyIgICAg IFRhYmxlcyB3aXRob3V0IHNwZWNpZmljIGhhbmRsaW5nIHdpbGwgYmUgZGlzcGxheWVkIGFzIGEg cmF3IGhleCBkdW1wDQo+IChvclxyXG4iDQo+ID4+ICsiICAgICBkdW1wZWQgdG8gYSBmaWxlIGlm IC1kIGlzIHVzZWQpLlxyXG4iDQo+ID4+ICsiICAyLiBGb3JtYXR0ZWQgZGlzcGxheSBhbmQgY2hl Y2tpbmcgaXMgcHJvdmlkZWQgZm9yIHRoZXNlIHNpZ25hdHVyZQ0KPiB0eXBlczpcclxuIg0KPiA+ PiArIiAgICAgICBBUElDICAtIE11bHRpcGxlIEFQSUMgRGVzY3JpcHRpb24gVGFibGUgKE1BRFQp XHJcbiINCj4gPj4gKyIgICAgICAgQkdSVCAgLSBCb290IEdyYXBoaWNzIFJlc291cmNlIFRhYmxl XHJcbiINCj4gPj4gKyIgICAgICAgREJHMiAgLSBEZWJ1ZyBQb3J0IFRhYmxlIDJcclxuIg0KPiA+ PiArIiAgICAgICBGQUNQICAtIEZpeGVkIEFDUEkgRGVzY3JpcHRpb24gVGFibGUgKEZBRFQpXHJc biINCj4gPj4gKyIgICAgICAgR1REVCAgLSBHZW5lcmljIFRpbWVyIERlc2NyaXB0aW9uIFRhYmxl XHJcbiINCj4gPj4gKyIgICAgICAgSU9SVCAgLSBJTyBSZW1hcHBpbmcgVGFibGVcclxuIg0KPiA+ PiArIiAgICAgICBNQ0ZHICAtIE1lbW9yeSBNYXBwZWQgQ29uZmlnIFNwYWNlIEJhc2UgQWRkcmVz cyBEZXNjcmlwdGlvbg0KPiBUYWJsZVxyXG4iDQo+ID4+ICsiICAgICAgIFJTRFAgIC0gUm9vdCBT eXN0ZW0gRGVzY3JpcHRpb24gUG9pbnRlclxyXG4iDQo+ID4+ICsiICAgICAgIFNMSVQgIC0gU3lz dGVtIExvY2FsaXR5IEluZm9ybWF0aW9uIFRhYmxlXHJcbiINCj4gPj4gKyIgICAgICAgU1BDUiAg LSBTZXJpYWwgUG9ydCBDb25zb2xlIFJlZGlyZWN0aW9uIFRhYmxlXHJcbiINCj4gPj4gKyIgICAg ICAgU1JBVCAgLSBTeXN0ZW0gUmVzb3VyY2UgQWZmaW5pdHkgVGFibGVcclxuIg0KPiA+PiArIiAg ICAgICBYU0RUICAtIEV4dGVuZGVkIFN5c3RlbSBEZXNjcmlwdGlvbiBUYWJsZVxyXG4iDQo+ID4+ ICsiIFxyXG4iDQo+ID4+ICsiLlNIIFNUQU5EQVJEU1xyXG4iDQo+ID4+ICsiIFxyXG4iDQo+ID4+ ICsiICBUYWJsZSBkZXRhaWxzIGNvcnJlc3BvbmQgdG8gdGhvc2UgaW4gJ0FkdmFuY2VkIENvbmZp Z3VyYXRpb24gYW5kDQo+IFBvd2VyXHJcbiINCj4gPj4gKyIgIEludGVyZmFjZSBTcGVjaWZpY2F0 aW9uJyBWZXJzaW9uIDYuMiBFcnJhdGEgQSwgW1NlcHRlbWJlciAyMDE3XVxyXG4iDQo+ID4+ICsi DQo+IChodHRwOi8vd3d3LnVlZmkub3JnL3NpdGVzL2RlZmF1bHQvZmlsZXMvcmVzb3VyY2VzL0FD UEklMjA2XzJfQV9TZXB0MjkucGRmKQ0KPiBcclxuIg0KPiA+PiArIiBcclxuIg0KPiA+PiArIiAg Tk9URTogVGhlIG5hdHVyZSBvZiB0aGUgQUNQSSBzdGFuZGFyZCBtZWFucyB0aGF0IGFsbW9zdCBh bGwgdGFibGVzIGluIDYuMQ0KPiB3aWxsXHJcbiINCj4gPj4gKyIgICAgICAgIGJlICdiYWNrd2Fy ZHMgY29tcGF0aWJsZScgd2l0aCBwcmlvciB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uDQo+ IGluXHJcbiINCj4gPj4gKyIgICAgICAgIHRlcm1zIG9mIHN0cnVjdHVyZSwgc28gZm9ybWF0dGVk IG91dHB1dCBzaG91bGQgYmUgY29ycmVjdC4gIFRoZQ0KPiBtYWluXHJcbiINCj4gPj4gKyIgICAg ICAgIGV4Y2VwdGlvbiB3aWxsIGJlIHRoYXQgcHJldmlvdXNseSAncmVzZXJ2ZWQnIGZpZWxkcyB3 aWxsIGJlDQo+IHJlcG9ydGVkXHJcbiINCj4gPj4gKyIgICAgICAgIHdpdGggbmV3IG5hbWVzLCB3 aGVyZSB0aGV5IGhhdmUgYmVlbiBhZGRlZCBpbiBsYXRlciB2ZXJzaW9ucyBvZg0KPiB0aGVcclxu Ig0KPiA+PiArIiAgICAgICAgc3BlY2lmaWNhdGlvbi5cclxuIg0KPiA+PiArIiBcclxuIg0KPiA+ PiArIi5TSCBFWEFNUExFU1xyXG4iDQo+ID4+ICsiIFxyXG4iDQo+ID4+ICsiIFxyXG4iDQo+ID4+ ICsiRVhBTVBMRVM6XHJcbiINCj4gPj4gKyIgICogVG8gZGlzcGxheSBhIGxpc3Qgb2YgdGhlIGlu c3RhbGxlZCB0YWJsZSB0eXBlczpcclxuIg0KPiA+PiArIiAgICBmczA6XD4gYWNwaXZpZXcgLWxc clxuIg0KPiA+PiArIiBcclxuIg0KPiA+PiArIiAgKiBUbyBwYXJzZSBhbmQgZGlzcGxheSBhIHNw ZWNpZmljIHRhYmxlIHR5cGU6XHJcbiINCj4gPj4gKyIgICAgZnMwOlw+IGFjcGl2aWV3IC1zIEdU RFRcclxuIg0KPiA+PiArIiBcclxuIg0KPiA+PiArIiAgKiBUbyBzYXZlIGEgYmluYXJ5IGR1bXAg b2YgdGhlIGNvbnRlbnRzIG9mIGEgdGFibGUgdG8gYSBmaWxlXHJcbiINCj4gPj4gKyIgICAgaW4g dGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3Rvcnk6XHJcbiINCj4gPj4gKyIgICAgZnMwOlw+IGFj cGl2aWV3IC1zIERTRFQgLWRcclxuIg0KPiA+PiArIiBcclxuIg0KPiA+PiArIiAgKiBUbyBkaXNw bGF5IGNvbnRlbnRzIG9mIGFsbCBBQ1BJIHRhYmxlczpcclxuIg0KPiA+PiArIiAgICBmczA6XD4g YWNwaXZpZXdcclxuIg0KPiA+PiArIiBcclxuIg0KPiA+PiArIi5TSCBSRVRVUk5WQUxVRVNcclxu Ig0KPiA+PiArIiBcclxuIg0KPiA+PiArIlJFVFVSTiBWQUxVRVM6XHJcbiINCj4gPj4gKyIgIFNI RUxMX1NVQ0NFU1MgICAgICAgICAgICAgRGF0YSB3YXMgZGlzcGxheWVkIGFzIHJlcXVlc3RlZC5c clxuIg0KPiA+PiArIiAgU0hFTExfSU5WQUxJRF9QQVJBTUVURVIgICBBQ1BJIFRhYmxlIHBhcnNp bmcgZmFpbGVkLlxyXG4iDQo+ID4+ICsiIFxyXG4iDQo+ID4+ICsNCj4gPj4gZGlmZiAtLWdpdCBh L1NoZWxsUGtnL1NoZWxsUGtnLmRlYyBiL1NoZWxsUGtnL1NoZWxsUGtnLmRlYw0KPiA+PiBpbmRl eA0KPiAwYzRmNzRmZjQxNzI2YzRhMjhlZDA4Mjg0OWMxYjg2NGIxYzQ4NzUyLi5jMDkwYWE0ZDA4 YmUzYWFkNGQ5YWVkYg0KPiA1NDJjMDEwNTZiY2U0Njk2OSAxMDA2NDQNCj4gPj4gLS0tIGEvU2hl bGxQa2cvU2hlbGxQa2cuZGVjDQo+ID4+ICsrKyBiL1NoZWxsUGtnL1NoZWxsUGtnLmRlYw0KPiA+ PiBAQCAtMyw2ICszLDcgQEANCj4gPj4gICAgIw0KPiA+PiAgICAjIChDKSBDb3B5cmlnaHQgMjAx My0yMDE0IEhld2xldHQtUGFja2FyZCBEZXZlbG9wbWVudCBDb21wYW55LA0KPiBMLlAuPEJSPg0K PiA+PiAgICAjIENvcHlyaWdodCAoYykgMjAwOSAtIDIwMTgsIEludGVsIENvcnBvcmF0aW9uLiBB bGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPj4gKyMgQ29weXJpZ2h0IChjKSAyMDE2IC0gMjAx OCwgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+PiAgICAjDQo+ID4+ ICAgICMgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbGlj ZW5zZWQgYW5kIG1hZGUNCj4gYXZhaWxhYmxlIHVuZGVyDQo+ID4+ICAgICMgdGhlIHRlcm1zIGFu ZCBjb25kaXRpb25zIG9mIHRoZSBCU0QgTGljZW5zZSB3aGljaCBhY2NvbXBhbmllcyB0aGlzDQo+ IGRpc3RyaWJ1dGlvbi4NCj4gPj4gQEAgLTU2LDcgKzU3LDcgQEAgW0d1aWRzXQ0KPiA+PiAgICAg IGdTaGVsbE5ldHdvcmsySGlpR3VpZCAgICAgICAgICAgPSB7MHgxNzRiMmI1LCAweGY1MDUsIDB4 NGIxMiwNCj4gezB4YWEsIDB4NjAsIDB4NTksIDB4ZGYsIDB4ZjgsIDB4ZDYsIDB4ZWEsIDB4Mzd9 fQ0KPiA+PiAgICAgIGdTaGVsbFRmdHBIaWlHdWlkICAgICAgICAgICAgICAgPSB7MHg3MzhhOTMx NCwgMHg4MmMxLCAweDQ1OTIsDQo+IHsweDhmLCAweGY3LCAweGMxLCAweGJkLCAweGYxLCAweGIy LCAweDBlLCAweGQ0fX0NCj4gPj4gICAgICBnU2hlbGxCY2ZnSGlpR3VpZCAgICAgICAgICAgICAg ID0gezB4NWY1ZjYwNWQsIDB4MTU4MywgMHg0YTJkLA0KPiB7MHhhNiwgMHhiMiwgMHhlYiwgMHgx MiwgMHhkYSwgMHhiNCwgMHhhMiwgMHhiNn19DQo+ID4+IC0NCj4gPj4gKyAgZ1NoZWxsQWNwaVZp ZXdIaWlHdWlkICAgICAgICAgICA9IHsweGRhOGNjZGY0LCAweGVkOGYsIDB4NGZmYywgezB4YjUs DQo+IDB4ZWYsIDB4MmUsIDB4ZjUsIDB4NWUsIDB4MjQsIDB4OTMsIDB4MmF9fQ0KPiA+PiAgICAg ICMgRklMRV9HVUlEIGFzIGRlZmluZWQgaW4gU2hlbGxQa2cvQXBwbGljYXRpb24vU2hlbGwvU2hl bGwuaW5mDQo+ID4+ICAgICAgZ1VlZmlTaGVsbEZpbGVHdWlkICAgICAgICAgICAgICA9IHsweDdj MDRhNTgzLCAweDllM2UsIDB4NGYxYywNCj4gezB4YWQsIDB4NjUsIDB4ZTAsIDB4NTIsIDB4Njgs IDB4ZDAsIDB4YjQsIDB4ZDF9fQ0KPiA+Pg0KPiA+Pg0KPiA+DQo+ID4NCj4gDQo+IA0KPiAtLQ0K PiBUaGFua3MsDQo+IFJheQ0K