From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=40.107.5.53; helo=eur03-ve1-obe.outbound.protection.outlook.com; envelope-from=udit.kumar@nxp.com; receiver=edk2-devel@lists.01.org Received: from EUR03-VE1-obe.outbound.protection.outlook.com (mail-eopbgr50053.outbound.protection.outlook.com [40.107.5.53]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 281BB203369C7 for ; Tue, 28 Aug 2018 21:38:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=385kagqHOgFjz35VMk61U0KTswrkkARlVgrtszy0oMU=; b=ZiPBY59neCZ/wb5v27hNDhOsDocpyH8t65vQ6CjqxulVwW3wKLzbt1fO0oNqGvWZ/A3XPx3fv/DQ93xKnOZAJDb/nIKbW/drX1BKFB7SP1RbRNLQAiCHlV2s3xsxFFG9rimQrmaltW2eq9WOyr9r3Vzhs6jHVk69Mt0oZR7NThA= Received: from VI1PR04MB4640.eurprd04.prod.outlook.com (20.177.56.27) by VI1PR04MB4749.eurprd04.prod.outlook.com (20.177.48.206) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1080.17; Wed, 29 Aug 2018 04:38:18 +0000 Received: from VI1PR04MB4640.eurprd04.prod.outlook.com ([fe80::5185:a1ed:d35e:ff74]) by VI1PR04MB4640.eurprd04.prod.outlook.com ([fe80::5185:a1ed:d35e:ff74%4]) with mapi id 15.20.1080.015; Wed, 29 Aug 2018 04:38:17 +0000 From: Udit Kumar To: Sumit Garg , "achin.gupta@arm.com" CC: "Matteo.Carlini@arm.com" , Ard Biesheuvel , "edk2-devel@lists.01.org" , "tee-dev@lists.linaro.org" , Daniel Thompson , Jens Wiklander , Rod Dorris , "nd@arm.com" Thread-Topic: [edk2] [PATCH 1/1] ArmPkg/OpteeLib: Add APIs to communicate with OP-TEE Thread-Index: AQHUO4vs8UuJBPvtBkWU17h3sH57t6TPFMMggAAV1ACAAAFpMIAABn6AgAQviACAAcdIgIAAOa2AgADJeLA= Date: Wed, 29 Aug 2018 04:38:17 +0000 Message-ID: References: <1535102474-24383-1-git-send-email-sumit.garg@linaro.org> <20180828130822.GL28113@e104320-lin> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=udit.kumar@nxp.com; x-originating-ip: [14.143.30.134] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; VI1PR04MB4749; 6:lrFAVantvKXZYvz2JIwzM2uBY1G+ff4hyYKHGKjOzfAsTd0n4l/drCu6Bqzeek2svSZPD2LJUA2IqpZQ2zW8QMksiTl48+++UrWSPqUJY7UQ2lkhKCBvzkGYU8GpLrBycd8YNQk9BCNUsU+0CaHlvvRhl7+wBE2yvSYlool0AdXqqTUbkeudkuRg8+VpJrOpDH+MPu+kAnu7fc1l0vb5mKXE+r15PzwihYSB+2z8cHlZXljvRAFgkwnJd7iHLlIhoa4t82HJ7WEG3RTqvhfx0DlHzlfB1iv66cgEEEFnx+A3byOVY96dXSpsd3M+20tjnwN5DIffjXHn3Wpzfc2nKn1m6bJIF2pu9CWfdHEf49Y2KQGuP0mKtxbZd2EWvq177/+H8NJdoGNytJ4jFPX+j+ZDbN/c5Gskl9ijrCRnnnuFOmUki9DZFCHq1F+rNl/cvADTYqyScB7UtWM4T6tTdg==; 5:xJp6nBf4pr9/VCbQtlhRjMWigL+Drjw+xMWZQLuU+uNz1nOUFflFG/hjPuHZ3p55eSUt1Qbcc6KSqAyY0UVlwvVu3j1RyJrpFDaOU7SlfuDLoUBJQsNN27tRakh/k2rV/f+VLeaL/hok3q2N7cxlsb0F3As7KhKeMqBlGS6sN0Q=; 7:pFrysTebR6ENh0WbNrHJg3Bx+7V7o4K7tM1u6t94qStK7+5hsRinfR7VASYZ8q2+yAWpPQa0Z4d2CrBUy76XJIoL+ZwuxBWdVkPuDNz6Mj7dDbrP5US366jXMC06a2xlivl/nTuHPq2zwNmkwV3Yj5/YNfBtmPMj5/6pClS8ucm4wIR/l4ygDYQSU9zGEYB+ijl0lOgrxFgaYPpR3GVcaEa5bpkAuNeK2zLfCs4cQGwFQzwz0JEMXIu8Wev2+pM7 x-ms-exchange-antispam-srfa-diagnostics: SOS; x-ms-office365-filtering-correlation-id: 06e959f3-0b50-4864-5f8a-08d60d693dd8 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989137)(4534165)(4627221)(201703031133081)(201702281549075)(8990107)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020); SRVR:VI1PR04MB4749; x-ms-traffictypediagnostic: VI1PR04MB4749: x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(180628864354917)(189930954265078)(185117386973197)(162533806227266)(1553240931313)(45079756050767); x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(823301075)(3231311)(944501410)(52105095)(10201501046)(93006095)(93001095)(3002001)(6055026)(149027)(150027)(6041310)(20161123558120)(20161123562045)(20161123564045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(201708071742011)(7699016); SRVR:VI1PR04MB4749; BCL:0; PCL:0; RULEID:; SRVR:VI1PR04MB4749; x-forefront-prvs: 077929D941 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(39860400002)(136003)(366004)(396003)(376002)(346002)(189003)(199004)(13464003)(76176011)(99286004)(53936002)(45080400002)(53946003)(16799955002)(5660300001)(97736004)(81166006)(16200700003)(8676002)(81156014)(54906003)(478600001)(33656002)(3846002)(7696005)(229853002)(6116002)(93886005)(102836004)(26005)(6506007)(53546011)(55016002)(186003)(9686003)(68736007)(476003)(11346002)(446003)(6306002)(110136005)(966005)(8936002)(6436002)(316002)(66066001)(486006)(74316002)(105586002)(25786009)(305945005)(106356001)(6246003)(14444005)(256004)(7736002)(44832011)(4326008)(2900100001)(2501003)(5250100002)(14454004)(2906002)(575784001)(86362001)(5024004)(579004)(559001)(569006); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR04MB4749; H:VI1PR04MB4640.eurprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: Et8zSuajDVMA8aBMedvRVB6V4UGHHyunJHdimpE8Z9ROqS9mWwzMw/RKe+zzR0i+EOSwDz0thgdUSB3VG7gEJ56PjVA47QoW2tHMGdBKiXdwa+JocaLYwu+fha8z6ddnxIwPupBXaSPQqEQPMuyJzq7GcpyU8kXjN0h0Q+uCepV52QV2pt0uCmE1GKEQUAMo5bKf+ymoPyHJhODU+3WVYRc75lL5mARIOD4KKc1nY8WjPTh13bdf23VGfSdWuI5R7Lg+LJY0hcHxcITuScoUcvcJ2rOsjbrAbFhn5QBbdPpd08RP9OFzgPX77Z24JkwGrVgs/DzS6NY5q2xRZzDDgqMgPOUabXq3+Ln2QASNzoc= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 06e959f3-0b50-4864-5f8a-08d60d693dd8 X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Aug 2018 04:38:17.8883 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB4749 Subject: Re: [PATCH 1/1] ArmPkg/OpteeLib: Add APIs to communicate with OP-TEE X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 29 Aug 2018 04:38:24 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 IA0KPiA+IFNvIHlvdSBkbyBub3QgcmVhbGx5IG5lZWQgYW4gTU0gcGFydGl0aW9uIHJ1bm5pbmcg YWxvbmdzaWRlIE9QLVRFRT8NCj4gPg0KPiANCj4gQWdyZWUgdGhhdCBtb3N0IG9mIHNlY3VyZSBz ZXJ2aWNlcyBjYW4gYmUgaW1wbGVtZW50ZWQgYXMgc3RhdGljDQo+IChwc2V1ZG8pIFRBcy4gQnV0 IGlmIEkgdGhpbmsgYWJvdXQgc2VydmljZXMgbGlrZSBSQVMgZXJyb3IgaGFuZGxpbmcgYW5kDQo+ IGZpcm13YXJlIHVwZGF0ZXMuIElzIFRydXN0ZWQgT1MgKE9QLVRFRSBvciBhbnkgdGhpcmQgcGFy dHkgT1MpIGFuDQo+IGFwcHJvcHJpYXRlIHBsYWNlIHRvIGltcGxlbWVudCB0aGVzZSBwbGF0Zm9y bSBzcGVjaWZpYyBzZXJ2aWNlcz8NCg0KSW4gbXkgdmlldywgVUVGSS9NTSBzZXJ2aWNlcyBzaG91 bGQgYmUgVE9TIHNwZWNpZmljLiANClRoZXNlIG11c3QgYmUgaW5kZXBlbmRlbnQgb2YgVE9TLiAN Cg0KPiBSZWdhcmRzLA0KPiBTdW1pdA0KPiANCj4gPiA+DQo+ID4gPiBTbyBpdCBsb29rcyBsaWtl IHRoZXkgY29tcGxlbWVudCBlYWNoIG90aGVyIGFuZCB3ZSB3aWxsIGhhdmUgbW9yZQ0KPiA+ID4g cm9idXN0bmVzcyBvbmNlIHdlIG1pZ3JhdGUgdG8gdjguNCBTZWN1cmUtRUwyIEh5cGVydmlzb3Ig Zm9yDQo+ID4gPiBpc29sYXRpb24gc3VwcG9ydC4NCj4gPg0KPiA+IEluIGEgd2F5IHllcyEgVGhl IHJvYnVzdG5lc3MgYml0IGlzIG5vdCByZWFsbHkgcmVsYXRlZCB0byB0aGUNCj4gPiBpbnRlcmZh Y2UgdXNlZCB0byBhY2Nlc3MgYXMgc2VydmljZS4NCj4gPg0KPiA+ID4NCj4gPiA+IFBsZWFzZSBm ZWVsIGZyZWUgdG8gY29ycmVjdCBtZSBpZiBJIG1pc3NlZCBzb21ldGhpbmcuDQo+ID4NCj4gPiBI b3BlIHRoaXMgbWFrZXMgc2Vuc2UuDQo+ID4NCj4gPiBjaGVlcnMsDQo+ID4gQWNoaW4NCj4gPg0K PiA+ID4NCj4gPiA+IFJlZ2FyZHMsDQo+ID4gPiBTdW1pdA0KPiA+ID4NCj4gPiA+IFsxXQ0KPiA+ ID4NCj4gaHR0cHM6Ly9lbWVhMDEuc2FmZWxpbmtzLnByb3RlY3Rpb24ub3V0bG9vay5jb20vP3Vy bD1odHRwJTNBJTJGJTJGaW4NCj4gPiA+DQo+IGZvY2VudGVyLmFybS5jb20lMkZoZWxwJTJGdG9w aWMlMkZjb20uYXJtLmRvYy5kZW4wMDI4YiUyRkFSTV9ERQ0KPiBOMDAyOA0KPiA+ID4NCj4gQl9T TUNfQ2FsbGluZ19Db252ZW50aW9uLnBkZiZhbXA7ZGF0YT0wMiU3QzAxJTdDdWRpdC5rdW1hciU0 MG54cC4NCj4gY29tDQo+ID4gPg0KPiAlN0M4ZTNiMDgxNWM1NDI0ODE5YjU0ZjA4ZDYwZDA0MzQ5 OSU3QzY4NmVhMWQzYmMyYjRjNmZhOTJjZDk5YzUNCj4gYzMwMTYNCj4gPiA+DQo+IDM1JTdDMCU3 QzAlN0M2MzY3MTA3MDkwNTA4MDgxNTYmYW1wO3NkYXRhPWFkJTJCbHpGaEd1Wm85d2VVQQ0KPiBD TFl6M2glMg0KPiA+ID4gRmlHdFJSYmlib3VYN3VYeHJSUWZ3JTNEJmFtcDtyZXNlcnZlZD0wDQo+ ID4gPiBbMl0NCj4gPiA+DQo+IGh0dHBzOi8vZW1lYTAxLnNhZmVsaW5rcy5wcm90ZWN0aW9uLm91 dGxvb2suY29tLz91cmw9aHR0cCUzQSUyRiUyRmluDQo+ID4gPg0KPiBmb2NlbnRlci5hcm0uY29t JTJGaGVscCUyRnRvcGljJTJGY29tLmFybS5kb2MuZGVuMDA2MGElMkZERU4wMDYwDQo+IEFfQVIN Cj4gPiA+DQo+IE1fTU1fSW50ZXJmYWNlX1NwZWNpZmljYXRpb24ucGRmJmFtcDtkYXRhPTAyJTdD MDElN0N1ZGl0Lmt1bWFyJTQwDQo+IG54cA0KPiA+ID4NCj4gLmNvbSU3QzhlM2IwODE1YzU0MjQ4 MTliNTRmMDhkNjBkMDQzNDk5JTdDNjg2ZWExZDNiYzJiNGM2ZmE5MmNkDQo+IDk5YzVjDQo+ID4g Pg0KPiAzMDE2MzUlN0MwJTdDMCU3QzYzNjcxMDcwOTA1MDgwODE1NiZhbXA7c2RhdGE9Q2RWa0Zk WDBkWWtiJTJGDQo+IDhMelFYdEoNCj4gPiA+IFdqbEtqSXNCb0cxUUhqeFZ2VElsVjhrJTNEJmFt cDtyZXNlcnZlZD0wDQo+ID4gPg0KPiA+ID4gPiBUaGFua3MNCj4gPiA+ID4gTWF0dGVvDQo+ID4g PiA+DQo+ID4gPiA+IFsxXToNCj4gPiA+ID4NCj4gaHR0cHM6Ly9lbWVhMDEuc2FmZWxpbmtzLnBy b3RlY3Rpb24ub3V0bG9vay5jb20vP3VybD1odHRwcyUzQSUyRiUyDQo+ID4gPiA+DQo+IEZjb21t dW5pdHkuYXJtLmNvbSUyRnByb2Nlc3NvcnMlMkZiJTJGYmxvZyUyRnBvc3RzJTJGYXJjaGl0ZWN0 aW5nLQ0KPiA+ID4gPiBtb3JlLXNlY3VyZS13b3JsZC13aXRoLWlzb2xhdGlvbi1hbmQtdmlydHVh bGl6YXRpb24mYW1wO2RhdGE9MDIlN0MNCj4gPiA+ID4NCj4gMDElN0N1ZGl0Lmt1bWFyJTQwbnhw LmNvbSU3QzhlM2IwODE1YzU0MjQ4MTliNTRmMDhkNjBkMDQzNDk5JTcNCj4gQzY4Ng0KPiA+ID4g Pg0KPiBlYTFkM2JjMmI0YzZmYTkyY2Q5OWM1YzMwMTYzNSU3QzAlN0MwJTdDNjM2NzEwNzA5MDUw ODA4MTU2JmFtDQo+IHA7c2RhDQo+ID4gPiA+DQo+IHRhPWZDYVFBbWFZZDdRdXI4MUElMkJSUHZK MzczZTJ1UnVFMElKRlRVRHg4SnpmVSUzRCZhbXA7cmVzZXJ2ZQ0KPiBkPTANCj4gPiA+ID4NCj4g PiA+ID4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ID4gPiA+IEZyb206IFVkaXQg S3VtYXIgPHVkaXQua3VtYXJAbnhwLmNvbT4NCj4gPiA+ID4gPiBTZW50OiAyNCBBdWd1c3QgMjAx OCAxODo0Ng0KPiA+ID4gPiA+IFRvOiBBcmQgQmllc2hldXZlbCA8YXJkLmJpZXNoZXV2ZWxAbGlu YXJvLm9yZz47IE1hdHRlbyBDYXJsaW5pDQo+ID4gPiA+ID4gPE1hdHRlby5DYXJsaW5pQGFybS5j b20+DQo+ID4gPiA+ID4gQ2M6IFN1bWl0IEdhcmcgPHN1bWl0LmdhcmdAbGluYXJvLm9yZz47IGVk azItZGV2ZWxAbGlzdHMuMDEub3JnOw0KPiA+ID4gPiA+IHRlZS0gZGV2QGxpc3RzLmxpbmFyby5v cmc7IGRhbmllbC50aG9tcHNvbkBsaW5hcm8ub3JnOw0KPiA+ID4gPiA+IGplbnMud2lrbGFuZGVy QGxpbmFyby5vcmc7IFJvZCBEb3JyaXMgPHJvZC5kb3JyaXNAbnhwLmNvbT4NCj4gPiA+ID4gPiBT dWJqZWN0OiBSRTogW2VkazJdIFtQQVRDSCAxLzFdIEFybVBrZy9PcHRlZUxpYjogQWRkIEFQSXMg dG8NCj4gPiA+ID4gPiBjb21tdW5pY2F0ZSB3aXRoIE9QLVRFRQ0KPiA+ID4gPiA+DQo+ID4gPiA+ ID4gSGkgQXJkDQo+ID4gPiA+ID4NCj4gPiA+ID4gPiA+IElmIE1NIG1vZGUgaXMgZnVuZGFtZW50 YWxseSBpbmNvbXBhdGlibGUgd2l0aCBPUC1URUUsIHRoZW4geW91DQo+ID4gPiA+ID4gPiBjYW5u b3QgcnVuIGJvdGggYXQgdGhlIHNhbWUgdGltZSwNCj4gPiA+ID4gPg0KPiA+ID4gPiA+IEJvdGgg Y2Fubm90IGNvZXhpc3QgdW5sZXNzIHlvdSBoYXZlIHY4LjQgQ1BVDQo+ID4gPiA+ID4NCj4gPiA+ ID4gPiBSZWdhcmRzDQo+ID4gPiA+ID4gVWRpdA0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gPg0KPiA+ ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4g PiA+ID4gPiA+PiBGcm9tOiBlZGsyLWRldmVsIDxlZGsyLWRldmVsLWJvdW5jZXNAbGlzdHMuMDEu b3JnPiBPbg0KPiA+ID4gPiA+ID4gPj4gQmVoYWxmIE9mIFN1bWl0IEdhcmcNCj4gPiA+ID4gPiA+ ID4+IFNlbnQ6IEZyaWRheSwgQXVndXN0IDI0LCAyMDE4IDI6NTEgUE0NCj4gPiA+ID4gPiA+ID4+ IFRvOiBlZGsyLWRldmVsQGxpc3RzLjAxLm9yZw0KPiA+ID4gPiA+ID4gPj4gQ2M6IGRhbmllbC50 aG9tcHNvbkBsaW5hcm8ub3JnOyB0ZWUtZGV2QGxpc3RzLmxpbmFyby5vcmc7DQo+ID4gPiA+ID4g PiA+PiBqZW5zLndpa2xhbmRlckBsaW5hcm8ub3JnDQo+ID4gPiA+ID4gPiA+PiBTdWJqZWN0OiBb ZWRrMl0gW1BBVENIIDEvMV0gQXJtUGtnL09wdGVlTGliOiBBZGQgQVBJcyB0bw0KPiA+ID4gPiA+ ID4gPj4gY29tbXVuaWNhdGUgd2l0aCBPUC1URUUNCj4gPiA+ID4gPiA+ID4+DQo+ID4gPiA+ID4g PiA+PiBBZGQgZm9sbG93aW5nIEFQSXMgdG8gY29tbXVuaWNhdGUgd2l0aCBPUC1URUUgc3RhdGlj IFRBOg0KPiA+ID4gPiA+ID4gPj4gMS4gT3B0ZWVJbml0DQo+ID4gPiA+ID4gPiA+PiAyLiBPcHRl ZU9wZW5TZXNzaW9uDQo+ID4gPiA+ID4gPiA+PiAzLiBPcHRlZUNsb3NlU2Vzc2lvbg0KPiA+ID4g PiA+ID4gPj4gNC4gT3B0ZWVJbnZva2VGdW5jDQo+ID4gPiA+ID4gPiA+Pg0KPiA+ID4gPiA+ID4g Pj4gQ2M6IEFyZCBCaWVzaGV1dmVsIDxhcmQuYmllc2hldXZlbEBsaW5hcm8ub3JnPg0KPiA+ID4g PiA+ID4gPj4gQ2M6IExlaWYgTGluZGhvbG0gPGxlaWYubGluZGhvbG1AbGluYXJvLm9yZz4NCj4g PiA+ID4gPiA+ID4+IENvbnRyaWJ1dGVkLXVuZGVyOiBUaWFub0NvcmUgQ29udHJpYnV0aW9uIEFn cmVlbWVudCAxLjENCj4gPiA+ID4gPiA+ID4+IFNpZ25lZC1vZmYtYnk6IFN1bWl0IEdhcmcgPHN1 bWl0LmdhcmdAbGluYXJvLm9yZz4NCj4gPiA+ID4gPiA+ID4+IC0tLQ0KPiA+ID4gPiA+ID4gPj4g IEFybVBrZy9JbmNsdWRlL0xpYnJhcnkvT3B0ZWVMaWIuaCAgICAgICAgICAgICAgICAgIHwgMTAy ICsrKysrKw0KPiA+ID4gPiA+ID4gPj4gIEFybVBrZy9MaWJyYXJ5L09wdGVlTGliL09wdGVlLmMg ICAgICAgICAgICAgICAgICAgIHwgMzU4DQo+ID4gPiA+ID4gPiA+PiArKysrKysrKysrKysrKysr KysrKysNCj4gPiA+ID4gPiA+ID4+ICBBcm1Qa2cvTGlicmFyeS9PcHRlZUxpYi9PcHRlZUxpYi5p bmYgICAgICAgICAgICAgICB8ICAgMiArDQo+ID4gPiA+ID4gPiA+PiAgQXJtUGtnL0xpYnJhcnkv T3B0ZWVMaWIvT3B0ZWVTbWMuaCAgICAgICAgICAgICAgICAgfCAgNDMgKysrDQo+ID4gPiA+ID4g PiA+PiAgLi4uL0luY2x1ZGUvSW5kdXN0cnlTdGFuZGFyZC9HbG9iYWxQbGF0Zm9ybS5oICAgICAg fCAgNjAgKystLQ0KPiA+ID4gPiA+ID4gPj4gIDUgZmlsZXMgY2hhbmdlZCwgNTMxIGluc2VydGlv bnMoKyksIDM0IGRlbGV0aW9ucygtKQ0KPiA+ID4gPiA+ID4gPj4gY3JlYXRlIG1vZGUNCj4gPiA+ ID4gPiA+ID4+IDEwMDY0NCBBcm1Qa2cvTGlicmFyeS9PcHRlZUxpYi9PcHRlZVNtYy5oDQo+ID4g PiA+ID4gPiA+PiAgY29weSBBcm1Qa2cvSW5jbHVkZS9MaWJyYXJ5L09wdGVlTGliLmggPT4NCj4g PiA+ID4gPiA+ID4+IE1kZVBrZy9JbmNsdWRlL0luZHVzdHJ5U3RhbmRhcmQvR2xvYmFsUGxhdGZv cm0uaCAoNTMlKQ0KPiA+ID4gPiA+ID4gPj4NCj4gPiA+ID4gPiA+ID4+IGRpZmYgLS1naXQgYS9B cm1Qa2cvSW5jbHVkZS9MaWJyYXJ5L09wdGVlTGliLmgNCj4gPiA+ID4gPiA+ID4+IGIvQXJtUGtn L0luY2x1ZGUvTGlicmFyeS9PcHRlZUxpYi5oDQo+ID4gPiA+ID4gPiA+PiBpbmRleCBmNjVkODY3 NGQ5YjguLmMzMjNmNDkwNzJmOCAxMDA2NDQNCj4gPiA+ID4gPiA+ID4+IC0tLSBhL0FybVBrZy9J bmNsdWRlL0xpYnJhcnkvT3B0ZWVMaWIuaA0KPiA+ID4gPiA+ID4gPj4gKysrIGIvQXJtUGtnL0lu Y2x1ZGUvTGlicmFyeS9PcHRlZUxpYi5oDQo+ID4gPiA+ID4gPiA+PiBAQCAtMjUsMTAgKzI1LDEx MiBAQA0KPiA+ID4gPiA+ID4gPj4gICNkZWZpbmUgT1BURUVfT1NfVUlEMiAgICAgICAgICAweGFm NjMwMDAyDQo+ID4gPiA+ID4gPiA+PiAgI2RlZmluZSBPUFRFRV9PU19VSUQzICAgICAgICAgIDB4 YTVkNWM1MWINCj4gPiA+ID4gPiA+ID4+DQo+ID4gPiA+ID4gPiA+PiArI2RlZmluZSBPUFRFRV9N U0dfQVRUUl9UWVBFX05PTkUgICAgICAgICAgICAgICAgMHgwDQo+ID4gPiA+ID4gPiA+PiArI2Rl ZmluZSBPUFRFRV9NU0dfQVRUUl9UWVBFX1ZBTFVFX0lOUFVUICAgICAgICAgMHgxDQo+ID4gPiA+ ID4gPiA+PiArI2RlZmluZSBPUFRFRV9NU0dfQVRUUl9UWVBFX1ZBTFVFX09VVFBVVCAgICAgICAg MHgyDQo+ID4gPiA+ID4gPiA+PiArI2RlZmluZSBPUFRFRV9NU0dfQVRUUl9UWVBFX1ZBTFVFX0lO T1VUICAgICAgICAgMHgzDQo+ID4gPiA+ID4gPiA+PiArI2RlZmluZSBPUFRFRV9NU0dfQVRUUl9U WVBFX01FTV9JTlBVVCAgICAgICAgICAgMHg5DQo+ID4gPiA+ID4gPiA+PiArI2RlZmluZSBPUFRF RV9NU0dfQVRUUl9UWVBFX01FTV9PVVRQVVQgICAgICAgICAgMHhhDQo+ID4gPiA+ID4gPiA+PiAr I2RlZmluZSBPUFRFRV9NU0dfQVRUUl9UWVBFX01FTV9JTk9VVCAgICAgICAgICAgMHhiDQo+ID4g PiA+ID4gPiA+PiArDQo+ID4gPiA+ID4gPiA+PiArI2RlZmluZSBPUFRFRV9NU0dfQVRUUl9UWVBF X01BU0sgICAgICAgICAgICAgICAgMHhmZg0KPiA+ID4gPiA+ID4gPj4gKw0KPiA+ID4gPiA+ID4g Pj4gK3R5cGVkZWYgc3RydWN0IHsNCj4gPiA+ID4gPiA+ID4+ICsgIFVJTlQ2NCAgICBCdWZQdHI7 DQo+ID4gPiA+ID4gPiA+PiArICBVSU5UNjQgICAgU2l6ZTsNCj4gPiA+ID4gPiA+ID4+ICsgIFVJ TlQ2NCAgICBTaG1SZWY7DQo+ID4gPiA+ID4gPiA+PiArfSBPUFRFRV9NU0dfUEFSQU1fTUVNOw0K PiA+ID4gPiA+ID4gPj4gKw0KPiA+ID4gPiA+ID4gPj4gK3R5cGVkZWYgc3RydWN0IHsNCj4gPiA+ ID4gPiA+ID4+ICsgIFVJTlQ2NCAgICBBOw0KPiA+ID4gPiA+ID4gPj4gKyAgVUlOVDY0ICAgIEI7 DQo+ID4gPiA+ID4gPiA+PiArICBVSU5UNjQgICAgQzsNCj4gPiA+ID4gPiA+ID4+ICt9IE9QVEVF X01TR19QQVJBTV9WQUxVRTsNCj4gPiA+ID4gPiA+ID4+ICsNCj4gPiA+ID4gPiA+ID4+ICt0eXBl ZGVmIHN0cnVjdCB7DQo+ID4gPiA+ID4gPiA+PiArICBVSU5UNjQgQXR0cjsNCj4gPiA+ID4gPiA+ ID4+ICsgIHVuaW9uIHsNCj4gPiA+ID4gPiA+ID4+ICsgICAgT1BURUVfTVNHX1BBUkFNX01FTSAg ICAgIE1lbTsNCj4gPiA+ID4gPiA+ID4+ICsgICAgT1BURUVfTVNHX1BBUkFNX1ZBTFVFICAgIFZh bHVlOw0KPiA+ID4gPiA+ID4gPj4gKyAgfSBVOw0KPiA+ID4gPiA+ID4gPj4gK30gT1BURUVfTVNH X1BBUkFNOw0KPiA+ID4gPiA+ID4gPj4gKw0KPiA+ID4gPiA+ID4gPj4gKyNkZWZpbmUgTUFYX1BB UkFNUyAgICAgICAgICAgNA0KPiA+ID4gPiA+ID4gPj4gKw0KPiA+ID4gPiA+ID4gPj4gK3R5cGVk ZWYgc3RydWN0IHsNCj4gPiA+ID4gPiA+ID4+ICsgICAgICAgIFVJTlQzMiAgICAgICAgICAgICBD bWQ7DQo+ID4gPiA+ID4gPiA+PiArICAgICAgICBVSU5UMzIgICAgICAgICAgICAgRnVuYzsNCj4g PiA+ID4gPiA+ID4+ICsgICAgICAgIFVJTlQzMiAgICAgICAgICAgICBTZXNzaW9uOw0KPiA+ID4g PiA+ID4gPj4gKyAgICAgICAgVUlOVDMyICAgICAgICAgICAgIENhbmNlbElkOw0KPiA+ID4gPiA+ ID4gPj4gKyAgICAgICAgVUlOVDMyICAgICAgICAgICAgIFBhZDsNCj4gPiA+ID4gPiA+ID4+ICsg ICAgICAgIFVJTlQzMiAgICAgICAgICAgICBSZXQ7DQo+ID4gPiA+ID4gPiA+PiArICAgICAgICBV SU5UMzIgICAgICAgICAgICAgUmV0T3JpZ2luOw0KPiA+ID4gPiA+ID4gPj4gKyAgICAgICAgVUlO VDMyICAgICAgICAgICAgIE51bVBhcmFtczsNCj4gPiA+ID4gPiA+ID4+ICsNCj4gPiA+ID4gPiA+ ID4+ICsgICAgICAgIC8vIE51bVBhcmFtcyB0ZWxscyB0aGUgYWN0dWFsIG51bWJlciBvZiBlbGVt ZW50IGluDQo+IFBhcmFtcw0KPiA+ID4gPiA+ID4gPj4gKyAgICAgICAgT1BURUVfTVNHX1BBUkFN ICAgIFBhcmFtc1tNQVhfUEFSQU1TXTsNCj4gPiA+ID4gPiA+ID4+ICt9IE9QVEVFX01TR19BUkc7 DQo+ID4gPiA+ID4gPiA+PiArDQo+ID4gPiA+ID4gPiA+PiArI2RlZmluZSBPUFRFRV9VVUlEX0xF TiAgICAgICAxNg0KPiA+ID4gPiA+ID4gPj4gKw0KPiA+ID4gPiA+ID4gPj4gKy8vDQo+ID4gPiA+ ID4gPiA+PiArLy8gc3RydWN0IE9QVEVFX09QRU5fU0VTU0lPTl9BUkcgLSBPcGVuIHNlc3Npb24g YXJndW1lbnQNCj4gPiA+ID4gPiA+ID4+ICsvLyBAVXVpZDogICAgICAgW2luXSBVVUlEIG9mIHRo ZSBUcnVzdGVkIEFwcGxpY2F0aW9uDQo+ID4gPiA+ID4gPiA+PiArLy8gQFNlc3Npb246ICAgIFtv dXRdIFNlc3Npb24gaWQNCj4gPiA+ID4gPiA+ID4+ICsvLyBAUmV0OiAgICAgICAgW291dF0gUmV0 dXJuIHZhbHVlDQo+ID4gPiA+ID4gPiA+PiArLy8gQFJldE9yaWdpbiAgIFtvdXRdIE9yaWdpbiBv ZiB0aGUgcmV0dXJuIHZhbHVlDQo+ID4gPiA+ID4gPiA+PiArLy8NCj4gPiA+ID4gPiA+ID4+ICt0 eXBlZGVmIHN0cnVjdCB7DQo+ID4gPiA+ID4gPiA+PiArICAgICAgICBVSU5UOCAgICAgVXVpZFtP UFRFRV9VVUlEX0xFTl07DQo+ID4gPiA+ID4gPiA+PiArICAgICAgICBVSU5UMzIgICAgU2Vzc2lv bjsNCj4gPiA+ID4gPiA+ID4+ICsgICAgICAgIFVJTlQzMiAgICBSZXQ7DQo+ID4gPiA+ID4gPiA+ PiArICAgICAgICBVSU5UMzIgICAgUmV0T3JpZ2luOw0KPiA+ID4gPiA+ID4gPj4gK30gT1BURUVf T1BFTl9TRVNTSU9OX0FSRzsNCj4gPiA+ID4gPiA+ID4+ICsNCj4gPiA+ID4gPiA+ID4+ICsvLw0K PiA+ID4gPiA+ID4gPj4gKy8vIHN0cnVjdCBPUFRFRV9JTlZPS0VfRlVOQ19BUkcgLSBJbnZva2Ug ZnVuY3Rpb24NCj4gYXJndW1lbnQNCj4gPiA+ID4gPiA+ID4+ICsvLyBARnVuYzogICAgICAgW2lu XSBUcnVzdGVkIEFwcGxpY2F0aW9uIGZ1bmN0aW9uLCBzcGVjaWZpYyB0byB0aGUNCj4gVEENCj4g PiA+ID4gPiA+ID4+ICsvLyBAU2Vzc2lvbjogICAgW2luXSBTZXNzaW9uIGlkDQo+ID4gPiA+ID4g PiA+PiArLy8gQFJldDogICAgICAgIFtvdXRdIFJldHVybiB2YWx1ZQ0KPiA+ID4gPiA+ID4gPj4g Ky8vIEBSZXRPcmlnaW4gICBbb3V0XSBPcmlnaW4gb2YgdGhlIHJldHVybiB2YWx1ZQ0KPiA+ID4g PiA+ID4gPj4gKy8vIEBQYXJhbXMgICAgICBbaW5vdXRdIFBhcmFtZXRlcnMgZm9yIGZ1bmN0aW9u IHRvIGJlIGludm9rZWQNCj4gPiA+ID4gPiA+ID4+ICsvLw0KPiA+ID4gPiA+ID4gPj4gK3R5cGVk ZWYgc3RydWN0IHsNCj4gPiA+ID4gPiA+ID4+ICsgICAgICAgIFVJTlQzMiAgICAgICAgICAgICBG dW5jOw0KPiA+ID4gPiA+ID4gPj4gKyAgICAgICAgVUlOVDMyICAgICAgICAgICAgIFNlc3Npb247 DQo+ID4gPiA+ID4gPiA+PiArICAgICAgICBVSU5UMzIgICAgICAgICAgICAgUmV0Ow0KPiA+ID4g PiA+ID4gPj4gKyAgICAgICAgVUlOVDMyICAgICAgICAgICAgIFJldE9yaWdpbjsNCj4gPiA+ID4g PiA+ID4+ICsgICAgICAgIE9QVEVFX01TR19QQVJBTSAgICBQYXJhbXNbTUFYX1BBUkFNU107DQo+ ID4gPiA+ID4gPiA+PiArfSBPUFRFRV9JTlZPS0VfRlVOQ19BUkc7DQo+ID4gPiA+ID4gPiA+PiAr DQo+ID4gPiA+ID4gPiA+PiAgQk9PTEVBTg0KPiA+ID4gPiA+ID4gPj4gIEVGSUFQSQ0KPiA+ID4g PiA+ID4gPj4gIElzT3B0ZWVQcmVzZW50ICgNCj4gPiA+ID4gPiA+ID4+ICAgIFZPSUQNCj4gPiA+ ID4gPiA+ID4+ICAgICk7DQo+ID4gPiA+ID4gPiA+Pg0KPiA+ID4gPiA+ID4gPj4gK0VGSV9TVEFU VVMNCj4gPiA+ID4gPiA+ID4+ICtFRklBUEkNCj4gPiA+ID4gPiA+ID4+ICtPcHRlZUluaXQgKA0K PiA+ID4gPiA+ID4gPj4gKyAgVk9JRA0KPiA+ID4gPiA+ID4gPj4gKyAgKTsNCj4gPiA+ID4gPiA+ ID4+ICsNCj4gPiA+ID4gPiA+ID4+ICtFRklfU1RBVFVTDQo+ID4gPiA+ID4gPiA+PiArRUZJQVBJ DQo+ID4gPiA+ID4gPiA+PiArT3B0ZWVPcGVuU2Vzc2lvbiAoDQo+ID4gPiA+ID4gPiA+PiArICBJ TiBPVVQgT1BURUVfT1BFTl9TRVNTSU9OX0FSRyAgICAgICpPcGVuU2Vzc2lvbkFyZw0KPiA+ID4g PiA+ID4gPj4gKyAgKTsNCj4gPiA+ID4gPiA+ID4+ICsNCj4gPiA+ID4gPiA+ID4+ICtFRklfU1RB VFVTDQo+ID4gPiA+ID4gPiA+PiArRUZJQVBJDQo+ID4gPiA+ID4gPiA+PiArT3B0ZWVDbG9zZVNl c3Npb24gKA0KPiA+ID4gPiA+ID4gPj4gKyAgSU4gVUlOVDMyICAgICAgICAgICAgICAgICAgICAg IFNlc3Npb24NCj4gPiA+ID4gPiA+ID4+ICsgICk7DQo+ID4gPiA+ID4gPiA+PiArDQo+ID4gPiA+ ID4gPiA+PiArRUZJX1NUQVRVUw0KPiA+ID4gPiA+ID4gPj4gK0VGSUFQSQ0KPiA+ID4gPiA+ID4g Pj4gK09wdGVlSW52b2tlRnVuYyAoDQo+ID4gPiA+ID4gPiA+PiArICBJTiBPVVQgT1BURUVfSU5W T0tFX0ZVTkNfQVJHICAgICAgICpJbnZva2VGdW5jQXJnDQo+ID4gPiA+ID4gPiA+PiArICApOw0K PiA+ID4gPiA+ID4gPj4gKw0KPiA+ID4gPiA+ID4gPj4gICNlbmRpZg0KPiA+ID4gPiA+ID4gPj4g ZGlmZiAtLWdpdCBhL0FybVBrZy9MaWJyYXJ5L09wdGVlTGliL09wdGVlLmMNCj4gPiA+ID4gPiA+ ID4+IGIvQXJtUGtnL0xpYnJhcnkvT3B0ZWVMaWIvT3B0ZWUuYyBpbmRleA0KPiA+ID4gPiA+ID4g Pj4gNTc0NTI3ZjhiNWVhLi4yMTExMDIyZDM2NjINCj4gPiA+ID4gPiA+ID4+IDEwMDY0NA0KPiA+ ID4gPiA+ID4gPj4gLS0tIGEvQXJtUGtnL0xpYnJhcnkvT3B0ZWVMaWIvT3B0ZWUuYw0KPiA+ID4g PiA+ID4gPj4gKysrIGIvQXJtUGtnL0xpYnJhcnkvT3B0ZWVMaWIvT3B0ZWUuYw0KPiA+ID4gPiA+ ID4gPj4gQEAgLTE0LDExICsxNCwxOSBAQA0KPiA+ID4gPiA+ID4gPj4NCj4gPiA+ID4gPiA+ID4+ ICAqKi8NCj4gPiA+ID4gPiA+ID4+DQo+ID4gPiA+ID4gPiA+PiArI2luY2x1ZGUgPExpYnJhcnkv QXJtTW11TGliLmg+DQo+ID4gPiA+ID4gPiA+PiAgI2luY2x1ZGUgPExpYnJhcnkvQXJtU21jTGli Lmg+DQo+ID4gPiA+ID4gPiA+PiArI2luY2x1ZGUgPExpYnJhcnkvQmFzZU1lbW9yeUxpYi5oPg0K PiA+ID4gPiA+ID4gPj4gICNpbmNsdWRlIDxMaWJyYXJ5L0Jhc2VMaWIuaD4NCj4gPiA+ID4gPiA+ ID4+ICsjaW5jbHVkZSA8TGlicmFyeS9EZWJ1Z0xpYi5oPg0KPiA+ID4gPiA+ID4gPj4gICNpbmNs dWRlIDxMaWJyYXJ5L09wdGVlTGliLmg+DQo+ID4gPiA+ID4gPiA+Pg0KPiA+ID4gPiA+ID4gPj4g ICNpbmNsdWRlIDxJbmR1c3RyeVN0YW5kYXJkL0FybVN0ZFNtYy5oPg0KPiA+ID4gPiA+ID4gPj4g KyNpbmNsdWRlIDxJbmR1c3RyeVN0YW5kYXJkL0dsb2JhbFBsYXRmb3JtLmg+DQo+ID4gPiA+ID4g PiA+PiArI2luY2x1ZGUgPE9wdGVlU21jLmg+DQo+ID4gPiA+ID4gPiA+PiArI2luY2x1ZGUgPFVl ZmkuaD4NCj4gPiA+ID4gPiA+ID4+ICsNCj4gPiA+ID4gPiA+ID4+ICtTVEFUSUMgT1BURUVfU0hB UkVEX01FTU9SWV9JTkZPIE9wdGVlU2htSW5mbyA9IHsgMCB9Ow0KPiA+ID4gPiA+ID4gPj4NCj4g PiA+ID4gPiA+ID4+ICAvKioNCj4gPiA+ID4gPiA+ID4+ICAgIENoZWNrIGZvciBPUC1URUUgcHJl c2VuY2UuDQo+ID4gPiA+ID4gPiA+PiBAQCAtMzEsNiArMzksNyBAQCBJc09wdGVlUHJlc2VudCAo ICB7DQo+ID4gPiA+ID4gPiA+PiAgICBBUk1fU01DX0FSR1MgQXJtU21jQXJnczsNCj4gPiA+ID4g PiA+ID4+DQo+ID4gPiA+ID4gPiA+PiArICBaZXJvTWVtICgmQXJtU21jQXJncywgc2l6ZW9mIChB Uk1fU01DX0FSR1MpKTsNCj4gPiA+ID4gPiA+ID4+ICAgIC8vIFNlbmQgYSBUcnVzdGVkIE9TIENh bGxzIFVJRCBjb21tYW5kDQo+ID4gPiA+ID4gPiA+PiAgICBBcm1TbWNBcmdzLkFyZzAgPSBBUk1f U01DX0lEX1RPU19VSUQ7DQo+ID4gPiA+ID4gPiA+PiAgICBBcm1DYWxsU21jICgmQXJtU21jQXJn cyk7IEBAIC00NCwzICs1MywzNTIgQEANCj4gPiA+ID4gPiA+ID4+IElzT3B0ZWVQcmVzZW50ICgN Cj4gPiA+ID4gPiA+ID4+ICAgICAgcmV0dXJuIEZBTFNFOw0KPiA+ID4gPiA+ID4gPj4gICAgfQ0K PiA+ID4gPiA+ID4gPj4gIH0NCj4gPiA+ID4gPiA+ID4+ICsNCj4gPiA+ID4gPiA+ID4+ICtTVEFU SUMNCj4gPiA+ID4gPiA+ID4+ICtFRklfU1RBVFVTDQo+ID4gPiA+ID4gPiA+PiArT3B0ZWVTaG1N ZW1SZW1hcCAoDQo+ID4gPiA+ID4gPiA+PiArICBWT0lEDQo+ID4gPiA+ID4gPiA+PiArICApDQo+ ID4gPiA+ID4gPiA+PiArew0KPiA+ID4gPiA+ID4gPj4gKyAgQVJNX1NNQ19BUkdTICAgICAgICAg ICAgICAgICBBcm1TbWNBcmdzOw0KPiA+ID4gPiA+ID4gPj4gKyAgRUZJX1BIWVNJQ0FMX0FERFJF U1MgICAgICAgICBQYWRkcjsNCj4gPiA+ID4gPiA+ID4+ICsgIEVGSV9QSFlTSUNBTF9BRERSRVNT ICAgICAgICAgU3RhcnQ7DQo+ID4gPiA+ID4gPiA+PiArICBFRklfUEhZU0lDQUxfQUREUkVTUyAg ICAgICAgIEVuZDsNCj4gPiA+ID4gPiA+ID4+ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAg ICAgU3RhdHVzOw0KPiA+ID4gPiA+ID4gPj4gKyAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAg ICBTaXplOw0KPiA+ID4gPiA+ID4gPj4gKw0KPiA+ID4gPiA+ID4gPj4gKyAgWmVyb01lbSAoJkFy bVNtY0FyZ3MsIHNpemVvZiAoQVJNX1NNQ19BUkdTKSk7DQo+ID4gPiA+ID4gPiA+PiArICBBcm1T bWNBcmdzLkFyZzAgPSBPUFRFRV9TTUNfR0VUX1NITV9DT05GSUc7DQo+ID4gPiA+ID4gPiA+PiAr DQo+ID4gPiA+ID4gPiA+PiArICBBcm1DYWxsU21jICgmQXJtU21jQXJncyk7ICBpZiAoQXJtU21j QXJncy5BcmcwICE9DQo+ID4gPiA+ID4gPiA+PiArIE9QVEVFX1NNQ19SRVRVUk5fT0spIHsNCj4g PiA+ID4gPiA+ID4+ICsgICAgREVCVUcgKChERUJVR19XQVJOLCAiT1AtVEVFIHNoYXJlZCBtZW1v cnkgbm90DQo+IHN1cHBvcnRlZFxuIikpOw0KPiA+ID4gPiA+ID4gPj4gKyAgICByZXR1cm4gRUZJ X1VOU1VQUE9SVEVEOyAgfQ0KPiA+ID4gPiA+ID4gPj4gKw0KPiA+ID4gPiA+ID4gPj4gKyAgaWYg KEFybVNtY0FyZ3MuQXJnMyAhPSBPUFRFRV9TTUNfU0hNX0NBQ0hFRCkgew0KPiA+ID4gPiA+ID4g Pj4gKyAgICBERUJVRyAoKERFQlVHX1dBUk4sICJPUC1URUU6IE9ubHkgbm9ybWFsIGNhY2hlZCBz aGFyZWQNCj4gPiA+ID4gPiA+IG1lbW9yeQ0KPiA+ID4gPiA+ID4gPj4gc3VwcG9ydGVkXG4iKSk7 DQo+ID4gPiA+ID4gPiA+PiArICAgIHJldHVybiBFRklfVU5TVVBQT1JURUQ7ICB9DQo+ID4gPiA+ ID4gPiA+PiArDQo+ID4gPiA+ID4gPiA+PiArICBTdGFydCA9IChBcm1TbWNBcmdzLkFyZzEgKyBT SVpFXzRLQiAtIDEpICYgfihTSVpFXzRLQiAtDQo+ID4gPiA+ID4gPiA+PiArIDEpOyAgRW5kID0N Cj4gPiA+ID4gPiA+ID4+ICsgKEFybVNtY0FyZ3MuQXJnMSArIEFybVNtY0FyZ3MuQXJnMikgJiB+ KFNJWkVfNEtCIC0gMSk7DQo+ID4gPiA+ID4gPiA+PiArIFBhZGRyID0gU3RhcnQ7IFNpemUgPSBF bmQgLSBTdGFydDsNCj4gPiA+ID4gPiA+ID4+ICsNCj4gPiA+ID4gPiA+ID4+ICsgIGlmIChTaXpl IDwgU0laRV80S0IpIHsNCj4gPiA+ID4gPiA+ID4+ICsgICAgREVCVUcgKChERUJVR19XQVJOLCAi T1AtVEVFIHNoYXJlZCBtZW1vcnkgdG9vDQo+IHNtYWxsXG4iKSk7DQo+ID4gPiA+ID4gPiA+PiAr ICAgIHJldHVybiBFRklfQlVGRkVSX1RPT19TTUFMTDsgIH0NCj4gPiA+ID4gPiA+ID4+ICsNCj4g PiA+ID4gPiA+ID4+ICsgIFN0YXR1cyA9IEFybVNldE1lbW9yeUF0dHJpYnV0ZXMgKFBhZGRyLCBT aXplLA0KPiA+ID4gPiA+ID4gPj4gKyBFRklfTUVNT1JZX1dCKTsgaWYgKEVGSV9FUlJPUiAoU3Rh dHVzKSkgew0KPiA+ID4gPiA+ID4gPj4gKyAgICByZXR1cm4gU3RhdHVzOw0KPiA+ID4gPiA+ID4g Pj4gKyAgfQ0KPiA+ID4gPiA+ID4gPj4gKw0KPiA+ID4gPiA+ID4gPj4gKyAgT3B0ZWVTaG1JbmZv LkJhc2UgPSAoVUlOVE4pUGFkZHI7ICBPcHRlZVNobUluZm8uU2l6ZSA9DQo+ID4gPiA+ID4gPiA+ PiArIFNpemU7DQo+ID4gPiA+ID4gPiA+PiArDQo+ID4gPiA+ID4gPiA+PiArICByZXR1cm4gRUZJ X1NVQ0NFU1M7DQo+ID4gPiA+ID4gPiA+PiArfQ0KPiA+ID4gPiA+ID4gPj4gKw0KPiA+ID4gPiA+ ID4gPj4gK0VGSV9TVEFUVVMNCj4gPiA+ID4gPiA+ID4+ICtFRklBUEkNCj4gPiA+ID4gPiA+ID4+ ICtPcHRlZUluaXQgKA0KPiA+ID4gPiA+ID4gPj4gKyAgVk9JRA0KPiA+ID4gPiA+ID4gPj4gKyAg KQ0KPiA+ID4gPiA+ID4gPj4gK3sNCj4gPiA+ID4gPiA+ID4+ICsgIEVGSV9TVEFUVVMgICAgICBT dGF0dXM7DQo+ID4gPiA+ID4gPiA+PiArDQo+ID4gPiA+ID4gPiA+PiArICBpZiAoIUlzT3B0ZWVQ cmVzZW50ICgpKSB7DQo+ID4gPiA+ID4gPiA+PiArICAgIERFQlVHICgoREVCVUdfV0FSTiwgIk9Q LVRFRSBub3QgcHJlc2VudFxuIikpOw0KPiA+ID4gPiA+ID4gPj4gKyAgICByZXR1cm4gRUZJX1VO U1VQUE9SVEVEOyAgfQ0KPiA+ID4gPiA+ID4gPj4gKw0KPiA+ID4gPiA+ID4gPj4gKyAgU3RhdHVz ID0gT3B0ZWVTaG1NZW1SZW1hcCAoKTsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiA+ ID4gPiA+ID4+ICsgICAgREVCVUcgKChERUJVR19XQVJOLCAiT1AtVEVFIHNoYXJlZCBtZW1vcnkg cmVtYXANCj4gZmFpbGVkXG4iKSk7DQo+ID4gPiA+ID4gPiA+PiArICAgIHJldHVybiBTdGF0dXM7 DQo+ID4gPiA+ID4gPiA+PiArICB9DQo+ID4gPiA+ID4gPiA+PiArDQo+ID4gPiA+ID4gPiA+PiAr ICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ID4gPiA+ID4gPiA+PiArfQ0KPiA+ID4gPiA+ID4gPj4g Kw0KPiA+ID4gPiA+ID4gPj4gKy8qKg0KPiA+ID4gPiA+ID4gPj4gKyAgRG9lcyBTdGFuZGFyZCBT TUMgdG8gT1AtVEVFIGluIHNlY3VyZSB3b3JsZC4NCj4gPiA+ID4gPiA+ID4+ICsNCj4gPiA+ID4g PiA+ID4+ICsgIEBwYXJhbVtpbl0gIFBhcmcgICBQaHlzaWNhbCBhZGRyZXNzIG9mIG1lc3NhZ2Ug dG8gcGFzcyB0bw0KPiBzZWN1cmUgd29ybGQNCj4gPiA+ID4gPiA+ID4+ICsNCj4gPiA+ID4gPiA+ ID4+ICsgIEByZXR1cm4gICAgICAgICAgICAwIG9uIHN1Y2Nlc3MsIHNlY3VyZSB3b3JsZCByZXR1 cm4gY29kZQ0KPiBvdGhlcndpc2UNCj4gPiA+ID4gPiA+ID4+ICsNCj4gPiA+ID4gPiA+ID4+ICsq Ki8NCj4gPiA+ID4gPiA+ID4+ICtTVEFUSUMNCj4gPiA+ID4gPiA+ID4+ICtVSU5UMzINCj4gPiA+ ID4gPiA+ID4+ICtPcHRlZUNhbGxXaXRoQXJnICgNCj4gPiA+ID4gPiA+ID4+ICsgIElOIEVGSV9Q SFlTSUNBTF9BRERSRVNTIFBhcmcNCj4gPiA+ID4gPiA+ID4+ICsgICkNCj4gPiA+ID4gPiA+ID4+ ICt7DQo+ID4gPiA+ID4gPiA+PiArICBBUk1fU01DX0FSR1MgQXJtU21jQXJnczsNCj4gPiA+ID4g PiA+ID4+ICsNCj4gPiA+ID4gPiA+ID4+ICsgIFplcm9NZW0gKCZBcm1TbWNBcmdzLCBzaXplb2Yg KEFSTV9TTUNfQVJHUykpOw0KPiA+ID4gPiA+ID4gPj4gKyAgQXJtU21jQXJncy5BcmcwID0gT1BU RUVfU01DX0NBTExfV0lUSF9BUkc7DQo+ID4gPiA+ID4gPiA+PiArICBBcm1TbWNBcmdzLkFyZzEg PSAoVUlOVDMyKShQYXJnID4+IDMyKTsNCj4gPiA+ID4gPiA+ID4+ICsgIEFybVNtY0FyZ3MuQXJn MiA9IChVSU5UMzIpUGFyZzsNCj4gPiA+ID4gPiA+ID4+ICsNCj4gPiA+ID4gPiA+ID4+ICsgIHdo aWxlIChUUlVFKSB7DQo+ID4gPiA+ID4gPiA+PiArICAgIEFybUNhbGxTbWMgKCZBcm1TbWNBcmdz KTsNCj4gPiA+ID4gPiA+ID4+ICsNCj4gPiA+ID4gPiA+ID4+ICsgICAgaWYgKEFybVNtY0FyZ3Mu QXJnMCA9PQ0KPiBPUFRFRV9TTUNfUkVUVVJOX1JQQ19GT1JFSUdOX0lOVFIpIHsNCj4gPiA+ID4g PiA+ID4+ICsgICAgICAvLw0KPiA+ID4gPiA+ID4gPj4gKyAgICAgIC8vIEEgZm9yZWlnbiBpbnRl cnJ1cHQgd2FzIHJhaXNlZCB3aGlsZSBzZWN1cmUgd29ybGQgd2FzDQo+ID4gPiA+ID4gPiA+PiAr ICAgICAgLy8gZXhlY3V0aW5nLCBzaW5jZSB0aGV5IGFyZSBoYW5kbGVkIGluIFVFRkkgYSBkdW1t eSBSUEMgaXMNCj4gPiA+ID4gPiA+ID4+ICsgICAgICAvLyBwZXJmb3JtZWQgdG8gbGV0IFVFRkkg dGFrZSB0aGUgaW50ZXJydXB0IHRocm91Z2ggdGhlDQo+IG5vcm1hbA0KPiA+ID4gPiA+ID4gPj4g KyAgICAgIC8vIHZlY3Rvci4NCj4gPiA+ID4gPiA+ID4+ICsgICAgICAvLw0KPiA+ID4gPiA+ID4g Pj4gKyAgICAgIEFybVNtY0FyZ3MuQXJnMCA9IE9QVEVFX1NNQ19SRVRVUk5fRlJPTV9SUEM7DQo+ ID4gPiA+ID4gPiA+PiArICAgIH0gZWxzZSB7DQo+ID4gPiA+ID4gPiA+PiArICAgICAgYnJlYWs7 DQo+ID4gPiA+ID4gPiA+PiArICAgIH0NCj4gPiA+ID4gPiA+ID4+ICsgIH0NCj4gPiA+ID4gPiA+ ID4+ICsNCj4gPiA+ID4gPiA+ID4+ICsgIHJldHVybiBBcm1TbWNBcmdzLkFyZzA7DQo+ID4gPiA+ ID4gPiA+PiArfQ0KPiA+ID4gPiA+ID4gPj4gKw0KPiA+ID4gPiA+ID4gPj4gK0VGSV9TVEFUVVMN Cj4gPiA+ID4gPiA+ID4+ICtFRklBUEkNCj4gPiA+ID4gPiA+ID4+ICtPcHRlZU9wZW5TZXNzaW9u ICgNCj4gPiA+ID4gPiA+ID4+ICsgIElOIE9VVCBPUFRFRV9PUEVOX1NFU1NJT05fQVJHICAgICAg Kk9wZW5TZXNzaW9uQXJnDQo+ID4gPiA+ID4gPiA+PiArICApDQo+ID4gPiA+ID4gPiA+PiArew0K PiA+ID4gPiA+ID4gPj4gKyAgT1BURUVfTVNHX0FSRyAgICAqTXNnQXJnOw0KPiA+ID4gPiA+ID4g Pj4gKw0KPiA+ID4gPiA+ID4gPj4gKyAgTXNnQXJnID0gTlVMTDsNCj4gPiA+ID4gPiA+ID4+ICsN Cj4gPiA+ID4gPiA+ID4+ICsgIGlmIChPcHRlZVNobUluZm8uQmFzZSA9PSAwKSB7DQo+ID4gPiA+ ID4gPiA+PiArICAgIERFQlVHICgoREVCVUdfV0FSTiwgIk9QLVRFRSBub3QgaW5pdGlhbGl6ZWRc biIpKTsNCj4gPiA+ID4gPiA+ID4+ICsgICAgcmV0dXJuIEVGSV9OT1RfU1RBUlRFRDsgIH0NCj4g PiA+ID4gPiA+ID4+ICsNCj4gPiA+ID4gPiA+ID4+ICsgIE1zZ0FyZyA9IChPUFRFRV9NU0dfQVJH ICopT3B0ZWVTaG1JbmZvLkJhc2U7ICBaZXJvTWVtDQo+ID4gPiA+ID4gPiA+PiArIChNc2dBcmcs DQo+ID4gPiA+ID4gPiA+PiBzaXplb2YNCj4gPiA+ID4gPiA+ID4+ICsgKE9QVEVFX01TR19BUkcp KTsNCj4gPiA+ID4gPiA+ID4+ICsNCj4gPiA+ID4gPiA+ID4+ICsgIE1zZ0FyZy0+Q21kID0gT1BU RUVfTVNHX0NNRF9PUEVOX1NFU1NJT047DQo+ID4gPiA+ID4gPiA+PiArDQo+ID4gPiA+ID4gPiA+ PiArICAvLw0KPiA+ID4gPiA+ID4gPj4gKyAgLy8gSW5pdGlhbGl6ZSBhbmQgYWRkIHRoZSBtZXRh IHBhcmFtZXRlcnMgbmVlZGVkIHdoZW4NCj4gPiA+ID4gPiA+ID4+ICsgb3BlbmluZyBhIC8vIHNl c3Npb24uDQo+ID4gPiA+ID4gPiA+PiArICAvLw0KPiA+ID4gPiA+ID4gPj4gKyAgTXNnQXJnLT5Q YXJhbXNbMF0uQXR0ciA9DQo+IE9QVEVFX01TR19BVFRSX1RZUEVfVkFMVUVfSU5QVVQgfA0KPiA+ ID4gPiA+ID4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QVEVFX01TR19BVFRSX01F VEE7DQo+ID4gPiA+ID4gPiA+PiArIE1zZ0FyZy0+UGFyYW1zWzFdLkF0dHIgPQ0KPiBPUFRFRV9N U0dfQVRUUl9UWVBFX1ZBTFVFX0lOUFVUDQo+ID4gPiA+ID4gPiA+PiArIE1zZ0FyZy0+fA0KPiA+ ID4gPiA+ID4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QVEVFX01TR19BVFRSX01F VEE7ICBDb3B5TWVtDQo+ID4gPiA+ID4gPiA+PiArICgmTXNnQXJnLT5QYXJhbXNbMF0uVS5WYWx1 ZSwgT3BlblNlc3Npb25BcmctPlV1aWQsDQo+ID4gPiA+ID4gPiBPUFRFRV9VVUlEX0xFTik7DQo+ ID4gPiA+ID4gPiA+PiArIFplcm9NZW0gKCZNc2dBcmctPlBhcmFtc1sxXS5VLlZhbHVlLCBPUFRF RV9VVUlEX0xFTik7DQo+ID4gPiA+ID4gPiA+PiArIE1zZ0FyZy0+UGFyYW1zWzFdLlUuVmFsdWUu QyA9IFRFRV9MT0dJTl9QVUJMSUM7DQo+ID4gPiA+ID4gPiA+PiArDQo+ID4gPiA+ID4gPiA+PiAr ICBNc2dBcmctPk51bVBhcmFtcyA9IDI7DQo+ID4gPiA+ID4gPiA+PiArDQo+ID4gPiA+ID4gPiA+ PiArICBpZiAoT3B0ZWVDYWxsV2l0aEFyZyAoKEVGSV9QSFlTSUNBTF9BRERSRVNTKU1zZ0FyZykp IHsNCj4gPiA+ID4gPiA+ID4+ICsgICAgTXNnQXJnLT5SZXQgPSBURUVDX0VSUk9SX0NPTU1VTklD QVRJT047DQo+ID4gPiA+ID4gPiA+PiArICAgIE1zZ0FyZy0+UmV0T3JpZ2luID0gVEVFQ19PUklH SU5fQ09NTVM7ICB9DQo+ID4gPiA+ID4gPiA+PiArDQo+ID4gPiA+ID4gPiA+PiArICBPcGVuU2Vz c2lvbkFyZy0+U2Vzc2lvbiA9IE1zZ0FyZy0+U2Vzc2lvbjsNCj4gPiA+ID4gPiA+ID4+ICsgT3Bl blNlc3Npb25BcmctPlJldCA9DQo+ID4gPiA+ID4gPiA+PiArIE1zZ0FyZy0+UmV0OyAgT3BlblNl c3Npb25BcmctPlJldE9yaWdpbiA9DQo+ID4gPiA+ID4gPiA+PiArIE1zZ0FyZy0+TXNnQXJnLT5S ZXRPcmlnaW47DQo+ID4gPiA+ID4gPiA+PiArDQo+ID4gPiA+ID4gPiA+PiArICByZXR1cm4gRUZJ X1NVQ0NFU1M7DQo+ID4gPiA+ID4gPiA+PiArfQ0KPiA+ID4gPiA+ID4gPj4gKw0KPiA+ID4gPiA+ ID4gPj4gK0VGSV9TVEFUVVMNCj4gPiA+ID4gPiA+ID4+ICtFRklBUEkNCj4gPiA+ID4gPiA+ID4+ ICtPcHRlZUNsb3NlU2Vzc2lvbiAoDQo+ID4gPiA+ID4gPiA+PiArICBJTiBVSU5UMzIgICAgICAg ICAgICAgICAgICAgICAgU2Vzc2lvbg0KPiA+ID4gPiA+ID4gPj4gKyAgKQ0KPiA+ID4gPiA+ID4g Pj4gK3sNCj4gPiA+ID4gPiA+ID4+ICsgIE9QVEVFX01TR19BUkcgICAgKk1zZ0FyZzsNCj4gPiA+ ID4gPiA+ID4+ICsNCj4gPiA+ID4gPiA+ID4+ICsgIE1zZ0FyZyA9IE5VTEw7DQo+ID4gPiA+ID4g PiA+PiArDQo+ID4gPiA+ID4gPiA+PiArICBpZiAoT3B0ZWVTaG1JbmZvLkJhc2UgPT0gMCkgew0K PiA+ID4gPiA+ID4gPj4gKyAgICBERUJVRyAoKERFQlVHX1dBUk4sICJPUC1URUUgbm90IGluaXRp YWxpemVkXG4iKSk7DQo+ID4gPiA+ID4gPiA+PiArICAgIHJldHVybiBFRklfTk9UX1NUQVJURUQ7 ICB9DQo+ID4gPiA+ID4gPiA+PiArDQo+ID4gPiA+ID4gPiA+PiArICBNc2dBcmcgPSAoT1BURUVf TVNHX0FSRyAqKU9wdGVlU2htSW5mby5CYXNlOyAgWmVyb01lbQ0KPiA+ID4gPiA+ID4gPj4gKyAo TXNnQXJnLA0KPiA+ID4gPiA+ID4gPj4gc2l6ZW9mDQo+ID4gPiA+ID4gPiA+PiArIChPUFRFRV9N U0dfQVJHKSk7DQo+ID4gPiA+ID4gPiA+PiArDQo+ID4gPiA+ID4gPiA+PiArICBNc2dBcmctPkNt ZCA9IE9QVEVFX01TR19DTURfQ0xPU0VfU0VTU0lPTjsNCj4gPiA+ID4gPiA+ID4+ICsgTXNnQXJn LT5TZXNzaW9uDQo+ID4gPiA+ID4gPiA9DQo+ID4gPiA+ID4gPiA+PiArIFNlc3Npb247DQo+ID4g PiA+ID4gPiA+PiArDQo+ID4gPiA+ID4gPiA+PiArICBPcHRlZUNhbGxXaXRoQXJnICgoRUZJX1BI WVNJQ0FMX0FERFJFU1MpTXNnQXJnKTsNCj4gPiA+ID4gPiA+ID4+ICsNCj4gPiA+ID4gPiA+ID4+ ICsgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4gPiA+ID4gPiA+ID4+ICt9DQo+ID4gPiA+ID4gPiA+ PiArDQo+ID4gPiA+ID4gPiA+PiArU1RBVElDDQo+ID4gPiA+ID4gPiA+PiArRUZJX1NUQVRVUw0K PiA+ID4gPiA+ID4gPj4gK09wdGVlVG9Nc2dQYXJhbSAoDQo+ID4gPiA+ID4gPiA+PiArICBPVVQg T1BURUVfTVNHX1BBUkFNICAgICpNc2dQYXJhbXMsDQo+ID4gPiA+ID4gPiA+PiArICBJTiBVSU5U MzIgICAgICAgICAgICAgIE51bVBhcmFtcywNCj4gPiA+ID4gPiA+ID4+ICsgIElOIE9QVEVFX01T R19QQVJBTSAgICAgKkluUGFyYW1zDQo+ID4gPiA+ID4gPiA+PiArICApDQo+ID4gPiA+ID4gPiA+ PiArew0KPiA+ID4gPiA+ID4gPj4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAgSWR4Ow0KPiA+ ID4gPiA+ID4gPj4gKyAgVUlOVE4gICAgICAgICAgICAgICAgICAgUGFyYW1TaG1BZGRyOw0KPiA+ ID4gPiA+ID4gPj4gKyAgVUlOVE4gICAgICAgICAgICAgICAgICAgU2htU2l6ZTsNCj4gPiA+ID4g PiA+ID4+ICsgIFVJTlROICAgICAgICAgICAgICAgICAgIFNpemU7DQo+ID4gPiA+ID4gPiA+PiAr DQo+ID4gPiA+ID4gPiA+PiArICBTaXplID0gKHNpemVvZiAoT1BURUVfTVNHX0FSRykgKyBzaXpl b2YgKFVJTlQ2NCkgLSAxKSAmDQo+ID4gPiA+ID4gPiA+PiArIH4oc2l6ZW9mDQo+ID4gPiA+ID4g PiA+PiArIChVSU5UNjQpIC0gMSk7ICBQYXJhbVNobUFkZHIgPSBPcHRlZVNobUluZm8uQmFzZSAr IFNpemU7DQo+ID4gPiA+ID4gPiA+PiArIFNobVNpemUgPSBPcHRlZVNobUluZm8uU2l6ZSAtIFNp emU7DQo+ID4gPiA+ID4gPiA+PiArDQo+ID4gPiA+ID4gPiA+PiArICBmb3IgKElkeCA9IDA7IElk eCA8IE51bVBhcmFtczsgSWR4KyspIHsNCj4gPiA+ID4gPiA+ID4+ICsgICAgQ09OU1QgT1BURUVf TVNHX1BBUkFNICAgICpJcDsNCj4gPiA+ID4gPiA+ID4+ICsgICAgT1BURUVfTVNHX1BBUkFNICAg ICAgICAgICpNcDsNCj4gPiA+ID4gPiA+ID4+ICsgICAgVUlOVDMyICAgICAgICAgICAgICAgICAg IEF0dHI7DQo+ID4gPiA+ID4gPiA+PiArDQo+ID4gPiA+ID4gPiA+PiArICAgIElwID0gSW5QYXJh bXMgKyBJZHg7DQo+ID4gPiA+ID4gPiA+PiArICAgIE1wID0gTXNnUGFyYW1zICsgSWR4Ow0KPiA+ ID4gPiA+ID4gPj4gKyAgICBBdHRyID0gSXAtPkF0dHIgJiBPUFRFRV9NU0dfQVRUUl9UWVBFX01B U0s7DQo+ID4gPiA+ID4gPiA+PiArDQo+ID4gPiA+ID4gPiA+PiArICAgIHN3aXRjaCAoQXR0cikg ew0KPiA+ID4gPiA+ID4gPj4gKyAgICBjYXNlIE9QVEVFX01TR19BVFRSX1RZUEVfTk9ORToNCj4g PiA+ID4gPiA+ID4+ICsgICAgICBNcC0+QXR0ciA9IE9QVEVFX01TR19BVFRSX1RZUEVfTk9ORTsN Cj4gPiA+ID4gPiA+ID4+ICsgICAgICBaZXJvTWVtICgmTXAtPlUsIHNpemVvZiAoTXAtPlUpKTsN Cj4gPiA+ID4gPiA+ID4+ICsgICAgICBicmVhazsNCj4gPiA+ID4gPiA+ID4+ICsNCj4gPiA+ID4g PiA+ID4+ICsgICAgY2FzZSBPUFRFRV9NU0dfQVRUUl9UWVBFX1ZBTFVFX0lOUFVUOg0KPiA+ID4g PiA+ID4gPj4gKyAgICBjYXNlIE9QVEVFX01TR19BVFRSX1RZUEVfVkFMVUVfT1VUUFVUOg0KPiA+ ID4gPiA+ID4gPj4gKyAgICBjYXNlIE9QVEVFX01TR19BVFRSX1RZUEVfVkFMVUVfSU5PVVQ6DQo+ ID4gPiA+ID4gPiA+PiArICAgICAgTXAtPkF0dHIgPSBBdHRyOw0KPiA+ID4gPiA+ID4gPj4gKyAg ICAgIE1wLT5VLlZhbHVlLkEgPSBJcC0+VS5WYWx1ZS5BOw0KPiA+ID4gPiA+ID4gPj4gKyAgICAg IE1wLT5VLlZhbHVlLkIgPSBJcC0+VS5WYWx1ZS5COw0KPiA+ID4gPiA+ID4gPj4gKyAgICAgIE1w LT5VLlZhbHVlLkMgPSBJcC0+VS5WYWx1ZS5DOw0KPiA+ID4gPiA+ID4gPj4gKyAgICAgIGJyZWFr Ow0KPiA+ID4gPiA+ID4gPj4gKw0KPiA+ID4gPiA+ID4gPj4gKyAgICBjYXNlIE9QVEVFX01TR19B VFRSX1RZUEVfTUVNX0lOUFVUOg0KPiA+ID4gPiA+ID4gPj4gKyAgICBjYXNlIE9QVEVFX01TR19B VFRSX1RZUEVfTUVNX09VVFBVVDoNCj4gPiA+ID4gPiA+ID4+ICsgICAgY2FzZSBPUFRFRV9NU0df QVRUUl9UWVBFX01FTV9JTk9VVDoNCj4gPiA+ID4gPiA+ID4+ICsgICAgICBNcC0+QXR0ciA9IEF0 dHI7DQo+ID4gPiA+ID4gPiA+PiArDQo+ID4gPiA+ID4gPiA+PiArICAgICAgaWYgKElwLT5VLk1l bS5TaXplID4gU2htU2l6ZSkgew0KPiA+ID4gPiA+ID4gPj4gKyAgICAgICAgcmV0dXJuIEVGSV9P VVRfT0ZfUkVTT1VSQ0VTOw0KPiA+ID4gPiA+ID4gPj4gKyAgICAgIH0NCj4gPiA+ID4gPiA+ID4+ ICsNCj4gPiA+ID4gPiA+ID4+ICsgICAgICBDb3B5TWVtICgoVk9JRCAqKVBhcmFtU2htQWRkciwg KFZPSUQNCj4gPiA+ID4gPiA+ID4+ICsgKilJcC0+VS5NZW0uQnVmUHRyLCBJcC0NCj4gPiA+ID4g PiA+ID4+ID5VLk1lbS5TaXplKTsNCj4gPiA+ID4gPiA+ID4+ICsgICAgICBNcC0+VS5NZW0uQnVm UHRyID0gKFVJTlQ2NClQYXJhbVNobUFkZHI7DQo+ID4gPiA+ID4gPiA+PiArICAgICAgTXAtPlUu TWVtLlNpemUgPSBJcC0+VS5NZW0uU2l6ZTsNCj4gPiA+ID4gPiA+ID4+ICsNCj4gPiA+ID4gPiA+ ID4+ICsgICAgICBTaXplID0gKElwLT5VLk1lbS5TaXplICsgc2l6ZW9mIChVSU5UNjQpIC0gMSkg JiB+KHNpemVvZg0KPiAoVUlOVDY0KSAtIDEpOw0KPiA+ID4gPiA+ID4gPj4gKyAgICAgIFBhcmFt U2htQWRkciArPSBTaXplOw0KPiA+ID4gPiA+ID4gPj4gKyAgICAgIFNobVNpemUgLT0gU2l6ZTsN Cj4gPiA+ID4gPiA+ID4+ICsgICAgICBicmVhazsNCj4gPiA+ID4gPiA+ID4+ICsNCj4gPiA+ID4g PiA+ID4+ICsgICAgZGVmYXVsdDoNCj4gPiA+ID4gPiA+ID4+ICsgICAgICByZXR1cm4gRUZJX0lO VkFMSURfUEFSQU1FVEVSOw0KPiA+ID4gPiA+ID4gPj4gKyAgICB9DQo+ID4gPiA+ID4gPiA+PiAr ICB9DQo+ID4gPiA+ID4gPiA+PiArDQo+ID4gPiA+ID4gPiA+PiArICByZXR1cm4gRUZJX1NVQ0NF U1M7DQo+ID4gPiA+ID4gPiA+PiArfQ0KPiA+ID4gPiA+ID4gPj4gKw0KPiA+ID4gPiA+ID4gPj4g K1NUQVRJQw0KPiA+ID4gPiA+ID4gPj4gK0VGSV9TVEFUVVMNCj4gPiA+ID4gPiA+ID4+ICtPcHRl ZUZyb21Nc2dQYXJhbSAoDQo+ID4gPiA+ID4gPiA+PiArICBPVVQgT1BURUVfTVNHX1BBUkFNICAg ICpPdXRQYXJhbXMsDQo+ID4gPiA+ID4gPiA+PiArICBJTiBVSU5UMzIgICAgICAgICAgICAgIE51 bVBhcmFtcywNCj4gPiA+ID4gPiA+ID4+ICsgIElOIE9QVEVFX01TR19QQVJBTSAgICAgKk1zZ1Bh cmFtcw0KPiA+ID4gPiA+ID4gPj4gKyAgKQ0KPiA+ID4gPiA+ID4gPj4gK3sNCj4gPiA+ID4gPiA+ ID4+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgSWR4Ow0KPiA+ID4gPiA+ID4gPj4gKw0KPiA+ ID4gPiA+ID4gPj4gKyAgZm9yIChJZHggPSAwOyBJZHggPCBOdW1QYXJhbXM7IElkeCsrKSB7DQo+ ID4gPiA+ID4gPiA+PiArICAgIE9QVEVFX01TR19QQVJBTSAgICAgICAgICAqT3A7DQo+ID4gPiA+ ID4gPiA+PiArICAgIENPTlNUIE9QVEVFX01TR19QQVJBTSAgICAqTXA7DQo+ID4gPiA+ID4gPiA+ PiArICAgIFVJTlQzMiAgICAgICAgICAgICAgICAgICBBdHRyOw0KPiA+ID4gPiA+ID4gPj4gKw0K PiA+ID4gPiA+ID4gPj4gKyAgICBPcCA9IE91dFBhcmFtcyArIElkeDsNCj4gPiA+ID4gPiA+ID4+ ICsgICAgTXAgPSBNc2dQYXJhbXMgKyBJZHg7DQo+ID4gPiA+ID4gPiA+PiArICAgIEF0dHIgPSBN cC0+QXR0ciAmIE9QVEVFX01TR19BVFRSX1RZUEVfTUFTSzsNCj4gPiA+ID4gPiA+ID4+ICsNCj4g PiA+ID4gPiA+ID4+ICsgICAgc3dpdGNoIChBdHRyKSB7DQo+ID4gPiA+ID4gPiA+PiArICAgIGNh c2UgT1BURUVfTVNHX0FUVFJfVFlQRV9OT05FOg0KPiA+ID4gPiA+ID4gPj4gKyAgICAgIE9wLT5B dHRyID0gT1BURUVfTVNHX0FUVFJfVFlQRV9OT05FOw0KPiA+ID4gPiA+ID4gPj4gKyAgICAgIFpl cm9NZW0gKCZPcC0+VSwgc2l6ZW9mIChPcC0+VSkpOw0KPiA+ID4gPiA+ID4gPj4gKyAgICAgIGJy ZWFrOw0KPiA+ID4gPiA+ID4gPj4gKw0KPiA+ID4gPiA+ID4gPj4gKyAgICBjYXNlIE9QVEVFX01T R19BVFRSX1RZUEVfVkFMVUVfSU5QVVQ6DQo+ID4gPiA+ID4gPiA+PiArICAgIGNhc2UgT1BURUVf TVNHX0FUVFJfVFlQRV9WQUxVRV9PVVRQVVQ6DQo+ID4gPiA+ID4gPiA+PiArICAgIGNhc2UgT1BU RUVfTVNHX0FUVFJfVFlQRV9WQUxVRV9JTk9VVDoNCj4gPiA+ID4gPiA+ID4+ICsgICAgICBPcC0+ QXR0ciA9IEF0dHI7DQo+ID4gPiA+ID4gPiA+PiArICAgICAgT3AtPlUuVmFsdWUuQSA9IE1wLT5V LlZhbHVlLkE7DQo+ID4gPiA+ID4gPiA+PiArICAgICAgT3AtPlUuVmFsdWUuQiA9IE1wLT5VLlZh bHVlLkI7DQo+ID4gPiA+ID4gPiA+PiArICAgICAgT3AtPlUuVmFsdWUuQyA9IE1wLT5VLlZhbHVl LkM7DQo+ID4gPiA+ID4gPiA+PiArICAgICAgYnJlYWs7DQo+ID4gPiA+ID4gPiA+PiArDQo+ID4g PiA+ID4gPiA+PiArICAgIGNhc2UgT1BURUVfTVNHX0FUVFJfVFlQRV9NRU1fSU5QVVQ6DQo+ID4g PiA+ID4gPiA+PiArICAgIGNhc2UgT1BURUVfTVNHX0FUVFJfVFlQRV9NRU1fT1VUUFVUOg0KPiA+ ID4gPiA+ID4gPj4gKyAgICBjYXNlIE9QVEVFX01TR19BVFRSX1RZUEVfTUVNX0lOT1VUOg0KPiA+ ID4gPiA+ID4gPj4gKyAgICAgIE9wLT5BdHRyID0gQXR0cjsNCj4gPiA+ID4gPiA+ID4+ICsNCj4g PiA+ID4gPiA+ID4+ICsgICAgICBpZiAoTXAtPlUuTWVtLlNpemUgPiBPcC0+VS5NZW0uU2l6ZSkg ew0KPiA+ID4gPiA+ID4gPj4gKyAgICAgICAgcmV0dXJuIEVGSV9CQURfQlVGRkVSX1NJWkU7DQo+ ID4gPiA+ID4gPiA+PiArICAgICAgfQ0KPiA+ID4gPiA+ID4gPj4gKw0KPiA+ID4gPiA+ID4gPj4g KyAgICAgIENvcHlNZW0gKChWT0lEICopT3AtPlUuTWVtLkJ1ZlB0ciwgKFZPSUQNCj4gPiA+ID4g PiA+ID4+ICsgKilNcC0+VS5NZW0uQnVmUHRyLA0KPiA+ID4gPiA+ID4gPj4gTXAtPlUuTWVtLlNp emUpOw0KPiA+ID4gPiA+ID4gPj4gKyAgICAgIE9wLT5VLk1lbS5TaXplID0gTXAtPlUuTWVtLlNp emU7DQo+ID4gPiA+ID4gPiA+PiArICAgICAgYnJlYWs7DQo+ID4gPiA+ID4gPiA+PiArDQo+ID4g PiA+ID4gPiA+PiArICAgIGRlZmF1bHQ6DQo+ID4gPiA+ID4gPiA+PiArICAgICAgcmV0dXJuIEVG SV9JTlZBTElEX1BBUkFNRVRFUjsNCj4gPiA+ID4gPiA+ID4+ICsgICAgfQ0KPiA+ID4gPiA+ID4g Pj4gKyAgfQ0KPiA+ID4gPiA+ID4gPj4gKw0KPiA+ID4gPiA+ID4gPj4gKyAgcmV0dXJuIEVGSV9T VUNDRVNTOw0KPiA+ID4gPiA+ID4gPj4gK30NCj4gPiA+ID4gPiA+ID4+ICsNCj4gPiA+ID4gPiA+ ID4+ICtFRklfU1RBVFVTDQo+ID4gPiA+ID4gPiA+PiArRUZJQVBJDQo+ID4gPiA+ID4gPiA+PiAr T3B0ZWVJbnZva2VGdW5jICgNCj4gPiA+ID4gPiA+ID4+ICsgIElOIE9VVCBPUFRFRV9JTlZPS0Vf RlVOQ19BUkcgICAgICAgKkludm9rZUZ1bmNBcmcNCj4gPiA+ID4gPiA+ID4+ICsgICkNCj4gPiA+ ID4gPiA+ID4+ICt7DQo+ID4gPiA+ID4gPiA+PiArICBFRklfU1RBVFVTICAgICAgIFN0YXR1czsN Cj4gPiA+ID4gPiA+ID4+ICsgIE9QVEVFX01TR19BUkcgICAgKk1zZ0FyZzsNCj4gPiA+ID4gPiA+ ID4+ICsNCj4gPiA+ID4gPiA+ID4+ICsgIE1zZ0FyZyA9IE5VTEw7DQo+ID4gPiA+ID4gPiA+PiAr DQo+ID4gPiA+ID4gPiA+PiArICBpZiAoT3B0ZWVTaG1JbmZvLkJhc2UgPT0gMCkgew0KPiA+ID4g PiA+ID4gPj4gKyAgICBERUJVRyAoKERFQlVHX1dBUk4sICJPUC1URUUgbm90IGluaXRpYWxpemVk XG4iKSk7DQo+ID4gPiA+ID4gPiA+PiArICAgIHJldHVybiBFRklfTk9UX1NUQVJURUQ7ICB9DQo+ ID4gPiA+ID4gPiA+PiArDQo+ID4gPiA+ID4gPiA+PiArICBNc2dBcmcgPSAoT1BURUVfTVNHX0FS RyAqKU9wdGVlU2htSW5mby5CYXNlOyAgWmVyb01lbQ0KPiA+ID4gPiA+ID4gPj4gKyAoTXNnQXJn LA0KPiA+ID4gPiA+ID4gPj4gc2l6ZW9mDQo+ID4gPiA+ID4gPiA+PiArIChPUFRFRV9NU0dfQVJH KSk7DQo+ID4gPiA+ID4gPiA+PiArDQo+ID4gPiA+ID4gPiA+PiArICBNc2dBcmctPkNtZCA9IE9Q VEVFX01TR19DTURfSU5WT0tFX0NPTU1BTkQ7DQo+IE1zZ0FyZy0NCj4gPiA+ID4gPiA+ID5GdW5j ID0NCj4gPiA+ID4gPiA+ID4+ICsgSW52b2tlRnVuY0FyZy0+RnVuYzsgIE1zZ0FyZy0+U2Vzc2lv biA9DQo+ID4gPiA+ID4gPiA+PiArIEludm9rZUZ1bmNBcmctPkludm9rZUZ1bmNBcmctPlNlc3Np b247DQo+ID4gPiA+ID4gPiA+PiArDQo+ID4gPiA+ID4gPiA+PiArICBTdGF0dXMgPSBPcHRlZVRv TXNnUGFyYW0gKE1zZ0FyZy0+UGFyYW1zLCBNQVhfUEFSQU1TLA0KPiA+ID4gPiA+ID4gPj4gKyBJ bnZva2VGdW5jQXJnLT5QYXJhbXMpOyAgaWYgKFN0YXR1cykNCj4gPiA+ID4gPiA+ID4+ICsgICAg cmV0dXJuIFN0YXR1czsNCj4gPiA+ID4gPiA+ID4+ICsNCj4gPiA+ID4gPiA+ID4+ICsgIE1zZ0Fy Zy0+TnVtUGFyYW1zID0gTUFYX1BBUkFNUzsNCj4gPiA+ID4gPiA+ID4+ICsNCj4gPiA+ID4gPiA+ ID4+ICsgIGlmIChPcHRlZUNhbGxXaXRoQXJnICgoRUZJX1BIWVNJQ0FMX0FERFJFU1MpTXNnQXJn KSkgew0KPiA+ID4gPiA+ID4gPj4gKyAgICBNc2dBcmctPlJldCA9IFRFRUNfRVJST1JfQ09NTVVO SUNBVElPTjsNCj4gPiA+ID4gPiA+ID4+ICsgICAgTXNnQXJnLT5SZXRPcmlnaW4gPSBURUVDX09S SUdJTl9DT01NUzsgIH0NCj4gPiA+ID4gPiA+ID4+ICsNCj4gPiA+ID4gPiA+ID4+ICsgIGlmIChP cHRlZUZyb21Nc2dQYXJhbSAoSW52b2tlRnVuY0FyZy0+UGFyYW1zLA0KPiA+ID4gPiA+ID4gPj4g KyBNQVhfUEFSQU1TLA0KPiA+ID4gPiA+ID4gPj4gTXNnQXJnLT5QYXJhbXMpKSB7DQo+ID4gPiA+ ID4gPiA+PiArICAgIE1zZ0FyZy0+UmV0ID0gVEVFQ19FUlJPUl9DT01NVU5JQ0FUSU9OOw0KPiA+ ID4gPiA+ID4gPj4gKyAgICBNc2dBcmctPlJldE9yaWdpbiA9IFRFRUNfT1JJR0lOX0NPTU1TOyAg fQ0KPiA+ID4gPiA+ID4gPj4gKw0KPiA+ID4gPiA+ID4gPj4gKyAgSW52b2tlRnVuY0FyZy0+UmV0 ID0gTXNnQXJnLT5SZXQ7DQo+ID4gPiA+ID4gPiA+PiArIEludm9rZUZ1bmNBcmctPlJldE9yaWdp biA9DQo+ID4gPiA+ID4gPiA+PiArIE1zZ0FyZy0+UmV0T3JpZ2luOw0KPiA+ID4gPiA+ID4gPj4g Kw0KPiA+ID4gPiA+ID4gPj4gKyAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiA+ID4gPiA+ID4gPj4g K30NCj4gPiA+ID4gPiA+ID4+IGRpZmYgLS1naXQgYS9Bcm1Qa2cvTGlicmFyeS9PcHRlZUxpYi9P cHRlZUxpYi5pbmYNCj4gPiA+ID4gPiA+ID4+IGIvQXJtUGtnL0xpYnJhcnkvT3B0ZWVMaWIvT3B0 ZWVMaWIuaW5mDQo+ID4gPiA+ID4gPiA+PiBpbmRleCA1YWJkNDI3Mzc5Y2MuLmUwMzA1NGE3MTY3 ZCAxMDA2NDQNCj4gPiA+ID4gPiA+ID4+IC0tLSBhL0FybVBrZy9MaWJyYXJ5L09wdGVlTGliL09w dGVlTGliLmluZg0KPiA+ID4gPiA+ID4gPj4gKysrIGIvQXJtUGtnL0xpYnJhcnkvT3B0ZWVMaWIv T3B0ZWVMaWIuaW5mDQo+ID4gPiA+ID4gPiA+PiBAQCAtMjMsMTEgKzIzLDEzIEBAIFtEZWZpbmVz XQ0KPiA+ID4gPiA+ID4gPj4NCj4gPiA+ID4gPiA+ID4+ICBbU291cmNlc10NCj4gPiA+ID4gPiA+ ID4+ICAgIE9wdGVlLmMNCj4gPiA+ID4gPiA+ID4+ICsgIE9wdGVlU21jLmgNCj4gPiA+ID4gPiA+ ID4+DQo+ID4gPiA+ID4gPiA+PiAgW1BhY2thZ2VzXQ0KPiA+ID4gPiA+ID4gPj4gICAgQXJtUGtn L0FybVBrZy5kZWMNCj4gPiA+ID4gPiA+ID4+ICAgIE1kZVBrZy9NZGVQa2cuZGVjDQo+ID4gPiA+ ID4gPiA+Pg0KPiA+ID4gPiA+ID4gPj4gIFtMaWJyYXJ5Q2xhc3Nlc10NCj4gPiA+ID4gPiA+ID4+ ICsgIEFybU1tdUxpYg0KPiA+ID4gPiA+ID4gPj4gICAgQXJtU21jTGliDQo+ID4gPiA+ID4gPiA+ PiAgICBCYXNlTGliDQo+ID4gPiA+ID4gPiA+PiBkaWZmIC0tZ2l0IGEvQXJtUGtnL0xpYnJhcnkv T3B0ZWVMaWIvT3B0ZWVTbWMuaA0KPiA+ID4gPiA+ID4gPj4gYi9Bcm1Qa2cvTGlicmFyeS9PcHRl ZUxpYi9PcHRlZVNtYy5oDQo+ID4gPiA+ID4gPiA+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+ ID4gPiA+ID4gPj4gaW5kZXggMDAwMDAwMDAwMDAwLi5lMmVhMzU3ODRhMGENCj4gPiA+ID4gPiA+ ID4+IC0tLSAvZGV2L251bGwNCj4gPiA+ID4gPiA+ID4+ICsrKyBiL0FybVBrZy9MaWJyYXJ5L09w dGVlTGliL09wdGVlU21jLmgNCj4gPiA+ID4gPiA+ID4+IEBAIC0wLDAgKzEsNDMgQEANCj4gPiA+ ID4gPiA+ID4+ICsvKiogQGZpbGUNCj4gPiA+ID4gPiA+ID4+ICsgIE9QLVRFRSBTTUMgaGVhZGVy IGZpbGUuDQo+ID4gPiA+ID4gPiA+PiArDQo+ID4gPiA+ID4gPiA+PiArICBDb3B5cmlnaHQgKGMp IDIwMTgsIExpbmFybyBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ID4gPiA+ID4g Pj4gKw0KPiA+ID4gPiA+ID4gPj4gKyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5n IG1hdGVyaWFscyAgYXJlDQo+ID4gPiA+ID4gPiA+PiArIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWls YWJsZSB1bmRlciB0aGUgdGVybXMgYW5kDQo+ID4gPiA+ID4gPiA+PiArIGNvbmRpdGlvbnMgb2Yg dGhlIEJTRCBMaWNlbnNlIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMNCj4gPiA+ID4gPiA+ID4+ICsg ZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUgZm91bmQN Cj4gPiA+ID4gPiA+ID4+ICsgYXQNCj4gPiA+ID4gPiA+ID4+ICsNCj4gPiA+ID4gPiA+ID4+ICsN Cj4gPiA+ID4gPiA+ID4+DQo+ID4gPiA+ID4gPiBodHRwczovL2VtZWEwMS5zYWZlbGlua3MucHJv dGVjdGlvbi5vdXRsb29rLmNvbS8/dXJsPWh0dHAlM0ElMg0KPiA+ID4gPiA+ID4gRiUyRm9wZQ0K PiA+ID4gPiA+ID4gPj4gbg0KPiA+ID4gPiA+ID4gPj4gKyBzb3VyY2Uub3JnJTJGbGljZW5zZXMl MkZic2QtDQo+ID4gPiA+ID4gPiA+PiBsaWNlbnNlLnBocCZhbXA7ZGF0YT0wMiU3QzAxJTdDdWRp dC5rdW1hciUNCj4gPiA+ID4gPiA+ID4+ICsNCj4gPiA+ID4gPiA+ID4+DQo+ID4gPiA+ID4gPg0K PiA0MG54cC5jb20lN0NlOTU2MzVkMGMzYzc0ZWRiZjc5ODA4ZDYwOWEzMGM3YiU3QzY4NmVhMWQz YmMyYjRjNg0KPiA+ID4gPiA+ID4gZg0KPiA+ID4gPiA+ID4gPj4gYTkyY2Q5OQ0KPiA+ID4gPiA+ ID4gPj4gKw0KPiA+ID4gPiA+ID4gPj4NCj4gPiA+ID4gPiA+DQo+IGM1YzMwMTYzNSU3QzAlN0Mw JTdDNjM2NzA2OTkzMjUwNTM1MzcxJmFtcDtzZGF0YT1weVpGOUt1M3FFcHANCj4gPiA+ID4gPiA+ ID4+IE9PS0N5c2hiZw0KPiA+ID4gPiA+ID4gPj4gKyA5b0NUNFA2QXdNMm9sS1kzJTJCMkltV3Ml M0QmYW1wO3Jlc2VydmVkPTANCj4gPiA+ID4gPiA+ID4+ICsNCj4gPiA+ID4gPiA+ID4+ICsgIFRI RSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTg0KPiBBTiAi QVMgSVMiDQo+ID4gPiA+ID4gPiA+PiBCQVNJUywNCj4gPiA+ID4gPiA+ID4+ICsgV0lUSE9VVCBX QVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwNCj4gRUlUSEVSDQo+ID4g PiA+ID4gPiA+PiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ID4gPiA+ID4gPiA+PiArDQo+ID4gPiA+ ID4gPiA+PiArKiovDQo+ID4gPiA+ID4gPiA+PiArDQo+ID4gPiA+ID4gPiA+PiArI2lmbmRlZiBf T1BURUVfU01DX0hfDQo+ID4gPiA+ID4gPiA+PiArI2RlZmluZSBfT1BURUVfU01DX0hfDQo+ID4g PiA+ID4gPiA+PiArDQo+ID4gPiA+ID4gPiA+PiArLyogUmV0dXJuZWQgaW4gQXJnMCBvbmx5IGZy b20gVHJ1c3RlZCBPUyBmdW5jdGlvbnMgKi8NCj4gPiA+ID4gPiA+ID4+ICsjZGVmaW5lIE9QVEVF X1NNQ19SRVRVUk5fT0sgICAgICAgICAgICAgICAgICAgICAweDANCj4gPiA+ID4gPiA+ID4+ICsN Cj4gPiA+ID4gPiA+ID4+ICsjZGVmaW5lIE9QVEVFX1NNQ19SRVRVUk5fRlJPTV9SUEMgICAgICAg ICAgICAgICAweDMyMDAwMDAzDQo+ID4gPiA+ID4gPiA+PiArI2RlZmluZSBPUFRFRV9TTUNfQ0FM TF9XSVRIX0FSRyAgICAgICAgICAgICAgICAgMHgzMjAwMDAwNA0KPiA+ID4gPiA+ID4gPj4gKyNk ZWZpbmUgT1BURUVfU01DX0dFVF9TSE1fQ09ORklHICAgICAgICAgICAgICAgIDB4YjIwMDAwMDcN Cj4gPiA+ID4gPiA+ID4+ICsNCj4gPiA+ID4gPiA+ID4+ICsjZGVmaW5lIE9QVEVFX1NNQ19TSE1f Q0FDSEVEICAgICAgICAgICAgICAgICAgICAxDQo+ID4gPiA+ID4gPiA+PiArDQo+ID4gPiA+ID4g PiA+PiArI2RlZmluZSBPUFRFRV9TTUNfUkVUVVJOX1JQQ19GT1JFSUdOX0lOVFINCj4gMHhmZmZm MDAwNA0KPiA+ID4gPiA+ID4gPj4gKw0KPiA+ID4gPiA+ID4gPj4gKyNkZWZpbmUgT1BURUVfTVNH X0NNRF9PUEVOX1NFU1NJT04gICAgICAgICAgICAgIDANCj4gPiA+ID4gPiA+ID4+ICsjZGVmaW5l IE9QVEVFX01TR19DTURfSU5WT0tFX0NPTU1BTkQgICAgICAgICAgICAxDQo+ID4gPiA+ID4gPiA+ PiArI2RlZmluZSBPUFRFRV9NU0dfQ01EX0NMT1NFX1NFU1NJT04gICAgICAgICAgICAgMg0KPiA+ ID4gPiA+ID4gPj4gKw0KPiA+ID4gPiA+ID4gPj4gKyNkZWZpbmUgT1BURUVfTVNHX0FUVFJfTUVU QSAgICAgICAgICAgICAgICAgICAgIDB4MTAwDQo+ID4gPiA+ID4gPiA+PiArDQo+ID4gPiA+ID4g PiA+PiArI2RlZmluZSBURUVfTE9HSU5fUFVCTElDICAgICAgICAgICAgICAgICAgICAgICAgMHgw DQo+ID4gPiA+ID4gPiA+PiArDQo+ID4gPiA+ID4gPiA+PiArdHlwZWRlZiBzdHJ1Y3Qgew0KPiA+ ID4gPiA+ID4gPj4gKyAgVUlOVE4gICAgQmFzZTsNCj4gPiA+ID4gPiA+ID4+ICsgIFVJTlROICAg IFNpemU7DQo+ID4gPiA+ID4gPiA+PiArfSBPUFRFRV9TSEFSRURfTUVNT1JZX0lORk87DQo+ID4g PiA+ID4gPiA+PiArDQo+ID4gPiA+ID4gPiA+PiArI2VuZGlmDQo+ID4gPiA+ID4gPiA+PiBkaWZm IC0tZ2l0IGEvQXJtUGtnL0luY2x1ZGUvTGlicmFyeS9PcHRlZUxpYi5oDQo+ID4gPiA+ID4gPiA+ PiBiL01kZVBrZy9JbmNsdWRlL0luZHVzdHJ5U3RhbmRhcmQvR2xvYmFsUGxhdGZvcm0uaA0KPiA+ ID4gPiA+ID4gPj4gc2ltaWxhcml0eSBpbmRleCA1MyUNCj4gPiA+ID4gPiA+ID4+IGNvcHkgZnJv bSBBcm1Qa2cvSW5jbHVkZS9MaWJyYXJ5L09wdGVlTGliLmggY29weSB0bw0KPiA+ID4gPiA+ID4g Pj4gTWRlUGtnL0luY2x1ZGUvSW5kdXN0cnlTdGFuZGFyZC9HbG9iYWxQbGF0Zm9ybS5oDQo+ID4g PiA+ID4gPiA+PiBpbmRleCBmNjVkODY3NGQ5YjguLjE0YzYyMWQ4OTk3MSAxMDA2NDQNCj4gPiA+ ID4gPiA+ID4+IC0tLSBhL0FybVBrZy9JbmNsdWRlL0xpYnJhcnkvT3B0ZWVMaWIuaA0KPiA+ID4g PiA+ID4gPj4gKysrIGIvTWRlUGtnL0luY2x1ZGUvSW5kdXN0cnlTdGFuZGFyZC9HbG9iYWxQbGF0 Zm9ybS5oDQo+ID4gPiA+ID4gPiA+PiBAQCAtMSwzNCArMSwyNiBAQA0KPiA+ID4gPiA+ID4gPj4g LS8qKiBAZmlsZQ0KPiA+ID4gPiA+ID4gPj4gLSAgT1AtVEVFIHNwZWNpZmljIGhlYWRlciBmaWxl Lg0KPiA+ID4gPiA+ID4gPj4gLQ0KPiA+ID4gPiA+ID4gPj4gLSAgQ29weXJpZ2h0IChjKSAyMDE4 LCBMaW5hcm8gTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPiA+ID4gPiA+ID4+IC0N Cj4gPiA+ID4gPiA+ID4+IC0gIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRl cmlhbHMNCj4gPiA+ID4gPiA+ID4+IC0gIGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUg dW5kZXIgdGhlIHRlcm1zIGFuZA0KPiA+ID4gPiA+ID4gPj4gY29uZGl0aW9ucyBvZiB0aGUgQlNE IExpY2Vuc2UNCj4gPiA+ID4gPiA+ID4+IC0gIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJp YnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZg0KPiA+ID4gPiA+ID4gPj4gdGhlIGxpY2Vuc2UgbWF5 IGJlIGZvdW5kIGF0DQo+ID4gPiA+ID4gPiA+PiAtDQo+ID4gPiA+ID4gPiA+Pg0KPiA+ID4gPiA+ ID4gaHR0cHM6Ly9lbWVhMDEuc2FmZWxpbmtzLnByb3RlY3Rpb24ub3V0bG9vay5jb20vP3VybD1o dHRwJTNBJTINCj4gPiA+ID4gPiA+IEYlMkZvcGUNCj4gPiA+ID4gPiA+ID4+IG5zb3VyY2Uub3Jn JTJGbGljZW5zZXMlMkZic2QtDQo+ID4gPiA+ID4gPiA+Pg0KPiA+ID4gPiA+ID4NCj4gbGljZW5z ZS5waHAmYW1wO2RhdGE9MDIlN0MwMSU3Q3VkaXQua3VtYXIlNDBueHAuY29tJTdDZTk1NjM1ZDAN Cj4gPiA+ID4gPiA+IGMNCj4gPiA+ID4gPiA+ID4+DQo+ID4gPiA+ID4gPg0KPiAzYzc0ZWRiZjc5 ODA4ZDYwOWEzMGM3YiU3QzY4NmVhMWQzYmMyYjRjNmZhOTJjZDk5YzVjMzAxNjM1JTdDMA0KPiA+ ID4gPiA+ID4gJQ0KPiA+ID4gPiA+ID4gPj4NCj4gPiA+ID4gPiA+DQo+IDdDMCU3QzYzNjcwNjk5 MzI1MDUzNTM3MSZhbXA7c2RhdGE9cHlaRjlLdTNxRXBwT09LQ3lzaGJnOW9DVDQNCj4gPiA+ID4g PiA+ID4+IFA2QXdNMm9sS1kzJTJCMkltV3MlM0QmYW1wO3Jlc2VydmVkPTANCj4gPiA+ID4gPiA+ ID4+IC0NCj4gPiA+ID4gPiA+ID4+IC0gIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVS IFRIRSBCU0QgTElDRU5TRSBPTg0KPiBBTiAiQVMgSVMiDQo+ID4gPiA+ID4gPiA+PiBCQVNJUywN Cj4gPiA+ID4gPiA+ID4+IC0gIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMg T0YgQU5ZIEtJTkQsDQo+ID4gPiA+ID4gPiA+PiBFSVRIRVINCj4gPiA+ID4gPiA+IEVYUFJFU1MN Cj4gPiA+ID4gPiA+ID4+IE9SIElNUExJRUQuDQo+ID4gPiA+ID4gPiA+PiAtDQo+ID4gPiA+ID4g PiA+PiAtKiovDQo+ID4gPiA+ID4gPiA+PiAtDQo+ID4gPiA+ID4gPiA+PiAtI2lmbmRlZiBfT1BU RUVfSF8NCj4gPiA+ID4gPiA+ID4+IC0jZGVmaW5lIF9PUFRFRV9IXw0KPiA+ID4gPiA+ID4gPj4g LQ0KPiA+ID4gPiA+ID4gPj4gLS8qDQo+ID4gPiA+ID4gPiA+PiAtICogVGhlICdUcnVzdGVkIE9T IENhbGwgVUlEJyBpcyBzdXBwb3NlZCB0byByZXR1cm4gdGhlDQo+ID4gPiA+ID4gPiA+PiBmb2xs b3dpbmcgVVVJRCBmb3INCj4gPiA+ID4gPiA+ID4+IC0gKiBPUC1URUUgT1MuIFRoaXMgaXMgYSAx MjgtYml0IHZhbHVlLg0KPiA+ID4gPiA+ID4gPj4gLSAqLw0KPiA+ID4gPiA+ID4gPj4gLSNkZWZp bmUgT1BURUVfT1NfVUlEMCAgICAgICAgICAweDM4NGZiM2UwDQo+ID4gPiA+ID4gPiA+PiAtI2Rl ZmluZSBPUFRFRV9PU19VSUQxICAgICAgICAgIDB4ZTdmODExZTMNCj4gPiA+ID4gPiA+ID4+IC0j ZGVmaW5lIE9QVEVFX09TX1VJRDIgICAgICAgICAgMHhhZjYzMDAwMg0KPiA+ID4gPiA+ID4gPj4g LSNkZWZpbmUgT1BURUVfT1NfVUlEMyAgICAgICAgICAweGE1ZDVjNTFiDQo+ID4gPiA+ID4gPiA+ PiAtDQo+ID4gPiA+ID4gPiA+PiAtQk9PTEVBTg0KPiA+ID4gPiA+ID4gPj4gLUVGSUFQSQ0KPiA+ ID4gPiA+ID4gPj4gLUlzT3B0ZWVQcmVzZW50ICgNCj4gPiA+ID4gPiA+ID4+IC0gIFZPSUQNCj4g PiA+ID4gPiA+ID4+IC0gICk7DQo+ID4gPiA+ID4gPiA+PiAtDQo+ID4gPiA+ID4gPiA+PiAtI2Vu ZGlmDQo+ID4gPiA+ID4gPiA+PiArLyoqIEBmaWxlDQo+ID4gPiA+ID4gPiA+PiArICBTdGFuZGFy ZGl6ZWQgR2xvYmFsIFBsYXRmb3JtIGhlYWRlciBmaWxlLg0KPiA+ID4gPiA+ID4gPj4gKw0KPiA+ ID4gPiA+ID4gPj4gKyAgQ29weXJpZ2h0IChjKSAyMDE4LCBMaW5hcm8gTHRkLiBBbGwgcmlnaHRz IHJlc2VydmVkLjxCUj4NCj4gPiA+ID4gPiA+ID4+ICsNCj4gPiA+ID4gPiA+ID4+ICsgIFRoaXMg cHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgIGFyZQ0KPiA+ID4gPiA+ID4g Pj4gKyBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZA0KPiA+ ID4gPiA+ID4gPj4gKyBjb25kaXRpb25zIG9mIHRoZSBCU0QgTGljZW5zZSB3aGljaCBhY2NvbXBh bmllcyB0aGlzDQo+ID4gPiA+ID4gPiA+PiArIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQg b2YgdGhlIGxpY2Vuc2UgbWF5IGJlIGZvdW5kDQo+ID4gPiA+ID4gPiA+PiArIGF0DQo+ID4gPiA+ ID4gPiA+PiArDQo+ID4gPiA+ID4gPiA+PiArDQo+ID4gPiA+ID4gPiA+Pg0KPiA+ID4gPiA+ID4g aHR0cHM6Ly9lbWVhMDEuc2FmZWxpbmtzLnByb3RlY3Rpb24ub3V0bG9vay5jb20vP3VybD1odHRw JTNBJTINCj4gPiA+ID4gPiA+IEYlMkZvcGUNCj4gPiA+ID4gPiA+ID4+IG4NCj4gPiA+ID4gPiA+ ID4+ICsgc291cmNlLm9yZyUyRmxpY2Vuc2VzJTJGYnNkLQ0KPiA+ID4gPiA+ID4gPj4gbGljZW5z ZS5waHAmYW1wO2RhdGE9MDIlN0MwMSU3Q3VkaXQua3VtYXIlDQo+ID4gPiA+ID4gPiA+PiArDQo+ ID4gPiA+ID4gPiA+Pg0KPiA+ID4gPiA+ID4NCj4gNDBueHAuY29tJTdDZTk1NjM1ZDBjM2M3NGVk YmY3OTgwOGQ2MDlhMzBjN2IlN0M2ODZlYTFkM2JjMmI0YzYNCj4gPiA+ID4gPiA+IGYNCj4gPiA+ ID4gPiA+ID4+IGE5MmNkOTkNCj4gPiA+ID4gPiA+ID4+ICsNCj4gPiA+ID4gPiA+ID4+DQo+ID4g PiA+ID4gPg0KPiBjNWMzMDE2MzUlN0MwJTdDMCU3QzYzNjcwNjk5MzI1MDUzNTM3MSZhbXA7c2Rh dGE9cHlaRjlLdTNxRXBwDQo+ID4gPiA+ID4gPiA+PiBPT0tDeXNoYmcNCj4gPiA+ID4gPiA+ID4+ ICsgOW9DVDRQNkF3TTJvbEtZMyUyQjJJbVdzJTNEJmFtcDtyZXNlcnZlZD0wDQo+ID4gPiA+ID4g PiA+PiArDQo+ID4gPiA+ID4gPiA+PiArICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRF UiBUSEUgQlNEIExJQ0VOU0UgT04NCj4gQU4gIkFTIElTIg0KPiA+ID4gPiA+ID4gPj4gQkFTSVMs DQo+ID4gPiA+ID4gPiA+PiArIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMg T0YgQU5ZIEtJTkQsDQo+IEVJVEhFUg0KPiA+ID4gPiA+ID4gPj4gRVhQUkVTUyBPUiBJTVBMSUVE Lg0KPiA+ID4gPiA+ID4gPj4gKw0KPiA+ID4gPiA+ID4gPj4gKyoqLw0KPiA+ID4gPiA+ID4gPj4g Kw0KPiA+ID4gPiA+ID4gPj4gKyNpZm5kZWYgX0dMT0JBTF9QTEFURk9STV9IXyAjZGVmaW5lDQo+ IF9HTE9CQUxfUExBVEZPUk1fSF8NCj4gPiA+ID4gPiA+ID4+ICsNCj4gPiA+ID4gPiA+ID4+ICsj ZGVmaW5lIFRFRUNfT1JJR0lOX0NPTU1TICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAy DQo+ID4gPiA+ID4gPiA+PiArDQo+ID4gPiA+ID4gPiA+PiArI2RlZmluZSBURUVDX1NVQ0NFU1Mg ICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMA0KPiA+ID4gPiA+ID4gPj4gKyNk ZWZpbmUgVEVFQ19FUlJPUl9CQURfUEFSQU1FVEVSUyAgICAgICAgICAgICAgIDB4RkZGRjAwMDYN Cj4gPiA+ID4gPiA+ID4+ICsjZGVmaW5lIFRFRUNfRVJST1JfQ09NTVVOSUNBVElPTiAgICAgICAg ICAgICAgICAweEZGRkYwMDBFDQo+ID4gPiA+ID4gPiA+PiArI2RlZmluZSBURUVDX0VSUk9SX09V VF9PRl9NRU1PUlkgICAgICAgICAgICAgICAgMHhGRkZGMDAwQw0KPiA+ID4gPiA+ID4gPj4gKw0K PiA+ID4gPiA+ID4gPj4gKyNlbmRpZg0KPiA+ID4gPiA+ID4gPj4gLS0NCj4gPiA+ID4gPiA+ID4+ IDIuNy40DQo+ID4gPiA+ID4gPiA+Pg0KPiA+ID4gPiA+ID4gPj4gX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCj4gPiA+ID4gPiA+ID4+IGVkazItZGV2ZWwg bWFpbGluZyBsaXN0DQo+ID4gPiA+ID4gPiA+PiBlZGsyLWRldmVsQGxpc3RzLjAxLm9yZw0KPiA+ ID4gPiA+ID4gPj4NCj4gPiA+ID4gPiA+IGh0dHBzOi8vZW1lYTAxLnNhZmVsaW5rcy5wcm90ZWN0 aW9uLm91dGxvb2suY29tLz91cmw9aHR0cHMlM0ElDQo+ID4gPiA+ID4gPiAyRiUyRmxpDQo+ID4g PiA+ID4gPiA+PiBzdA0KPiA+ID4gPiA+ID4gPj4gcy4wMS5vcmclMkZtYWlsbWFuJTJGbGlzdGlu Zm8lMkZlZGsyLQ0KPiA+ID4gPiA+ID4gPj4NCj4gPiA+ID4gPiA+DQo+IGRldmVsJmFtcDtkYXRh PTAyJTdDMDElN0N1ZGl0Lmt1bWFyJTQwbnhwLmNvbSU3Q2U5NTYzNWQwYzNjNzRlDQo+ID4gPiA+ ID4gPiA+Pg0KPiA+ID4gPiA+ID4NCj4gZGJmNzk4MDhkNjA5YTMwYzdiJTdDNjg2ZWExZDNiYzJi NGM2ZmE5MmNkOTljNWMzMDE2MzUlN0MwJTdDMCUNCj4gPiA+ID4gPiA+ID4+DQo+ID4gPiA+ID4g Pg0KPiA3QzYzNjcwNjk5MzI1MDUzNTM3MSZhbXA7c2RhdGE9bXNBNmpHUkFrcFdvUTMzVnNEZmJX cWdHY0lNVFANCj4gPiA+ID4gPiA+ID4+IHUlMkZoY2RzM2o5YURQblUlM0QmYW1wO3Jlc2VydmVk PTANCj4gPiA+ID4gPiA+ID4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18NCj4gPiA+ID4gPiA+ID4gZWRrMi1kZXZlbCBtYWlsaW5nIGxpc3QNCj4gPiA+ID4g PiA+ID4gZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmcNCj4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ IGh0dHBzOi8vZW1lYTAxLnNhZmVsaW5rcy5wcm90ZWN0aW9uLm91dGxvb2suY29tLz91cmw9aHR0 cHMlM0ElDQo+ID4gPiA+ID4gPiAyRiUyRmxpcw0KPiA+ID4gPiA+ID4gPiB0cy4wMS5vcmclMkZt YWlsbWFuJTJGbGlzdGluZm8lMkZlZGsyLQ0KPiA+ID4gPiA+ID4gZGV2ZWwmYW1wO2RhdGE9MDIl N0MwMSU3Q3VkaXQua3UNCj4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+DQo+IG1hciU0MG54cC5j b20lN0M1MzExYzVkYzIyZDU0MDk1ZDc5ZDA4ZDYwOWU3ZmJmNSU3QzY4NmVhMWQzYmMyDQo+ID4g PiA+ID4gPiBiNGM2ZmE5Mg0KPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4NCj4gY2Q5OWM1YzMw MTYzNSU3QzAlN0MwJTdDNjM2NzA3Mjg5MzA1NTE5OTAzJmFtcDtzZGF0YT1kd0xVcThqOWYNCj4g PiA+ID4gPiA+IDlyeGViMzdWDQo+ID4gPiA+ID4gPiA+IDhmR1pLb2lXaDFUTkJuaFZGcW51RjVv TjNnJTNEJmFtcDtyZXNlcnZlZD0wDQo+ID4gPiA+IElNUE9SVEFOVCBOT1RJQ0U6IFRoZSBjb250 ZW50cyBvZiB0aGlzIGVtYWlsIGFuZCBhbnkgYXR0YWNobWVudHMNCj4gYXJlIGNvbmZpZGVudGlh bCBhbmQgbWF5IGFsc28gYmUgcHJpdmlsZWdlZC4gSWYgeW91IGFyZSBub3QgdGhlIGludGVuZGVk DQo+IHJlY2lwaWVudCwgcGxlYXNlIG5vdGlmeSB0aGUgc2VuZGVyIGltbWVkaWF0ZWx5IGFuZCBk byBub3QgZGlzY2xvc2UgdGhlDQo+IGNvbnRlbnRzIHRvIGFueSBvdGhlciBwZXJzb24sIHVzZSBp dCBmb3IgYW55IHB1cnBvc2UsIG9yIHN0b3JlIG9yIGNvcHkgdGhlDQo+IGluZm9ybWF0aW9uIGlu IGFueSBtZWRpdW0uIFRoYW5rIHlvdS4NCg==