From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=40.92.5.38; helo=nam02-sn1-obe.outbound.protection.outlook.com; envelope-from=vanjeff_919@hotmail.com; receiver=edk2-devel@lists.01.org Received: from NAM02-SN1-obe.outbound.protection.outlook.com (mail-oln040092005038.outbound.protection.outlook.com [40.92.5.38]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id E44CC2034A7AA for ; Tue, 31 Oct 2017 20:08:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=hotmail.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=Layh9O14cU/EKbR3/61KkseoE1pbdzy3/Msm61IsywE=; b=uPgMNWhCe78NbXaOtpn3PF/vS4MIaRHfyksZs4dWwCsTXgJ2zcrP/XKakYbB4rNUYcf++WAzPGbHZqoplkm5RuAqEX3DNNebt3BsKsk99nm6CLIulEnY0KBb0uPjcx8b2xpPzhv8+ZYBmiodM7sdQGKKZ81dv4F42HY9UmjhrcZuuuR2zq860pVCSKH4Zw6GlzSyRUku4QS88bf0i9hv/OaTz7TGR/a7akBhJkXhh6IoOY5jTzbd8tw8NRZMJ9dr/MVZOq4Ux5QLSIgsi0Ke64oNz4puBDjyTDTeJk4AD4wVC1iWhJcIjx//ymR5h86HijLf1aogRm+BwI+hySA7ow== Received: from SN1NAM02FT025.eop-nam02.prod.protection.outlook.com (10.152.72.59) by SN1NAM02HT082.eop-nam02.prod.protection.outlook.com (10.152.73.72) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.20.178.5; Wed, 1 Nov 2017 03:12:30 +0000 Received: from CY1PR19MB0283.namprd19.prod.outlook.com (10.152.72.52) by SN1NAM02FT025.mail.protection.outlook.com (10.152.72.87) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.20.178.5 via Frontend Transport; Wed, 1 Nov 2017 03:12:30 +0000 Received: from CY1PR19MB0283.namprd19.prod.outlook.com ([10.163.54.13]) by CY1PR19MB0283.namprd19.prod.outlook.com ([10.163.54.13]) with mapi id 15.20.0178.014; Wed, 1 Nov 2017 03:12:30 +0000 From: Fan Jeff To: "Wang, Jian J" , "Yao, Jiewen" , "edk2-devel@lists.01.org" CC: "Kinney, Michael D" , "Dong, Eric" , "Zeng, Star" Thread-Topic: [PATCH 3/3] UefiCpuPkg/CpuExceptionHandlerLib: Add stack switch support Thread-Index: AQHTUrSw3pJrU3cRZEmMYx4YdaVISaL+y3RDgAAG1oCAAAFSOIAABF6AgAAAkxI= Date: Wed, 1 Nov 2017 03:12:30 +0000 Message-ID: References: <20171031142412.21680-1-jian.j.wang@intel.com> <20171031142412.21680-4-jian.j.wang@intel.com>, <74D8A39837DF1E4DA445A8C0B3885C503AA0AED6@shsmsx102.ccr.corp.intel.com> , , In-Reply-To: Accept-Language: zh-CN, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: intel.com; dkim=none (message not signed) header.d=none;intel.com; dmarc=none action=none header.from=hotmail.com; x-incomingtopheadermarker: OriginalChecksum:DEE3608E17DF9CE961133CC827C2D98A262E9127F432D422CDF0F8A1F704775E; UpperCasedChecksum:32D25AA371B4BCDAC25C53F4D34679951B87FCC2FCDBEFF181B00C4CBB5D3B2D; SizeAsReceived:7766; Count:47 x-ms-exchange-messagesentrepresentingtype: 1 x-tmn: [GNLfsBsgtk3E+FOlc74iqpTAuedmF3MJ] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; SN1NAM02HT082; 6:2R8KDDVPBo2jOyExb/u7KdSLXvzG2kYFf1+jYKxnWqibg1D4mWXirv8LlhiM109FSSxeEprGq/td5tDPCLT/WgVCxnWlsstKS6k/6YwoRtTJO246vroE+mvetwojjHnSSmSIclQbbwg+IkeeSlwr1Rpa+YPRVZgNdanF1G939ETvFI4+Uo0B+IBf4zzV75L3MqP6495r1wBlEMQ/+Le/4zKa51DhXKluFwBXUgF5WUcEtdfhUcYlrKEpy+XW4DpDqFGTlwdlEdycLA6c5FCt9xu2UUQ35tmYq1Z/j+Pohy193qLldHSCFi09g0clV4tMkLrLpX8kE2m+eojM0Yr3vz+r0779ptJ83UhfHCzHf3A=; 5:gANfwDmwUez2ZNikkRCWweMNpeexYACL99Y3ZIV+9NY+L26gD/ElUqO2TXQJjxcZtah47h/eSA22EEZbFLpKSk8fI3PKYwnWKLgH9XjanJc/fmoouDAH6bsTk5dCF8GbKthuNtllZHFLNBwd/r3uwXLj/wbU/+V7ljehUMYTqcc=; 24:lcAaNYvr0gA2pAo53U9bChF3T07YVclIHZPhdVvHfLTFDaJ88TU2csPRUcD+4fde7wHWblc5Do108V6mBuQ1oE5lX+GnRp+hILgfOi0i93A=; 7:t0UzFqzXCSHB/GJG0lfvdCbTyxwLSsoV2XxzD9iLbOYF1r2XCyi6RxQDYnYwEOOmXLh7z+C5BrF4S7HYlgnHhIqMUasw4GfGVvSl0aLwiKcLZquzUjUiJCCBaXtOnM0BurqMO/jbF/KOTA9nd0wvwh366aaY27VJ1dQ9OnEVn5yNTG+SQbcExk4R22nzIFgGm4FjgZWIYcd2likojNDVWMm6K3c4Q3I8cyiXweBP3uvNRhKfec3onDj2EY7vgHyn x-incomingheadercount: 47 x-eopattributedmessage: 0 x-ms-office365-filtering-correlation-id: dcb70a1a-f374-4734-a7bb-08d520d6637c x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(201702061074)(5061506573)(5061507331)(1603103135)(2017031320274)(2017031324274)(2017031323274)(2017031322404)(1601125374)(1603101448)(1701031045); SRVR:SN1NAM02HT082; x-ms-traffictypediagnostic: SN1NAM02HT082: x-exchange-antispam-report-test: UriScan:(788757137089)(162533806227266)(194151415913766)(21748063052155)(228905959029699); x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(444000031); SRVR:SN1NAM02HT082; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:SN1NAM02HT082; x-forefront-prvs: 0478C23FE0 x-forefront-antispam-report: SFV:NSPM; SFS:(7070007)(98901004); DIR:OUT; SFP:1901; SCL:1; SRVR:SN1NAM02HT082; H:CY1PR19MB0283.namprd19.prod.outlook.com; FPR:; SPF:None; LANG:; spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: hotmail.com X-MS-Exchange-CrossTenant-Network-Message-Id: dcb70a1a-f374-4734-a7bb-08d520d6637c X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Nov 2017 03:12:30.6528 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Internet X-MS-Exchange-CrossTenant-id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN1NAM02HT082 X-Content-Filtered-By: Mailman/MimeDel 2.1.22 Subject: =?UTF-8?B?562U5aSNOiBbUEFUQ0ggMy8zXSBVZWZpQ3B1UGtnL0NwdUV4Y2VwdGlvbkhhbmRsZXJMaWI6IEFkZCBzdGFjayBzd2l0Y2ggc3VwcG9ydA==?= X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 01 Nov 2017 03:08:46 -0000 Content-Language: zh-CN Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: base64 VGhhdKGvcyBmaW5lLiBUaGFua3MNCg0KRGV2ZWxvcGVycyBzaG91bGQgaGF2ZSBzdWNoIGFzc3Vt cHRpb24gd2l0aG91dCBleGNlcHRpb24gZHVtcGluZyBtZXNzYWdlIGlmIE5VTEwgaW5zdGFuY2Ug dXNlZC4NCg0KSmVmZg0KDQq3orz+yMs6IFdhbmcsIEppYW4gSjxtYWlsdG86amlhbi5qLndhbmdA aW50ZWwuY29tPg0Kt6LLzcqxvOQ6IDIwMTfE6jEx1MIxyNUgMTE6MDgNCsrVvP7IyzogRmFuIEpl ZmY8bWFpbHRvOnZhbmplZmZfOTE5QGhvdG1haWwuY29tPjsgWWFvLCBKaWV3ZW48bWFpbHRvOmpp ZXdlbi55YW9AaW50ZWwuY29tPjsgZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmc8bWFpbHRvOmVkazIt ZGV2ZWxAbGlzdHMuMDEub3JnPg0Ks63LzTogS2lubmV5LCBNaWNoYWVsIEQ8bWFpbHRvOm1pY2hh ZWwuZC5raW5uZXlAaW50ZWwuY29tPjsgRG9uZywgRXJpYzxtYWlsdG86ZXJpYy5kb25nQGludGVs LmNvbT47IFplbmcsIFN0YXI8bWFpbHRvOnN0YXIuemVuZ0BpbnRlbC5jb20+DQrW98ziOiBSRTog W1BBVENIIDMvM10gVWVmaUNwdVBrZy9DcHVFeGNlcHRpb25IYW5kbGVyTGliOiBBZGQgc3RhY2sg c3dpdGNoIHN1cHBvcnQNCg0KSmVmZiwNCg0KU3RhY2sgZ3VhcmQgd2lsbCBzdGlsbCB3b3JrLiBC dXQgdGhlIGRldmVsb3BlciBjYW5ub3Qga25vdyB3aGF0oa9zIGdvaW5nIG9uIHdpdGhvdXQgZXhj ZXB0aW9uIGR1bXBpbmcgbWVzc2FnZSB3aGVuIHN0YWNrIG92ZXJmbG93IG9jY3Vycy4NCg0KVGhh bmtzLA0KSmlhbg0KDQpGcm9tOiBGYW4gSmVmZiBbbWFpbHRvOnZhbmplZmZfOTE5QGhvdG1haWwu Y29tXQ0KU2VudDogV2VkbmVzZGF5LCBOb3ZlbWJlciAwMSwgMjAxNyAxMDo1OSBBTQ0KVG86IFdh bmcsIEppYW4gSiA8amlhbi5qLndhbmdAaW50ZWwuY29tPjsgWWFvLCBKaWV3ZW4gPGppZXdlbi55 YW9AaW50ZWwuY29tPjsgZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmcNCkNjOiBLaW5uZXksIE1pY2hh ZWwgRCA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+OyBEb25nLCBFcmljIDxlcmljLmRvbmdA aW50ZWwuY29tPjsgWmVuZywgU3RhciA8c3Rhci56ZW5nQGludGVsLmNvbT4NClN1YmplY3Q6ILTw uLQ6IFtQQVRDSCAzLzNdIFVlZmlDcHVQa2cvQ3B1RXhjZXB0aW9uSGFuZGxlckxpYjogQWRkIHN0 YWNrIHN3aXRjaCBzdXBwb3J0DQoNCkppYW4sDQoNCk5vLiBJIHN1Z2dlc3QgdG8gZml4ICMxMDkg aW4gYW5vdGhlciBzZXBhcmF0ZSBwYXRjaC4NCg0KQnV0IHRvIGZpeCAjMTA5LCB3ZSBoYXZlIHRv IG1ha2VzIHN1cmUgQXNtV3JpdGVUcigpIGFuZCBzb21lIGRlZmluaXRpb25zIGFyZSBpbiBNZGVQ a2cuDQpCdXQgSSBoYXZlIG5vIHN0cm9uZyBvcGluaW9uIHRvIGFkZCB0aGVtIGludG8gTWRlUGtn IGluIHRoaXMgcGF0Y2guDQoNCkkgaGF2ZSBhbm90aGVyIHF1ZXN0aW9uOiBJZiBOVUxMIENQVSBl eGNlcHRpb24gaGFuZGxlciBpbnN0YW5jZSBpcyBjaG9zZW4sIGNvdWxkIFN0YWNrIFN3aXRjaCB3 b3JrIGlmIFBDRCBQY2RDcHVTdGFja0d1YXJkIGlzIHNldCB0byBUUlVFLg0KDQpUaGFua3MhDQpK ZWZmDQoNCreivP7IyzogV2FuZywgSmlhbiBKPG1haWx0bzpqaWFuLmoud2FuZ0BpbnRlbC5jb20+ DQq3osvNyrG85DogMjAxN8TqMTHUwjHI1SAxMDo0OA0KytW8/sjLOiBGYW4gSmVmZjxtYWlsdG86 dmFuamVmZl85MTlAaG90bWFpbC5jb20+OyBZYW8sIEppZXdlbjxtYWlsdG86amlld2VuLnlhb0Bp bnRlbC5jb20+OyBlZGsyLWRldmVsQGxpc3RzLjAxLm9yZzxtYWlsdG86ZWRrMi1kZXZlbEBsaXN0 cy4wMS5vcmc+DQqzrcvNOiBLaW5uZXksIE1pY2hhZWwgRDxtYWlsdG86bWljaGFlbC5kLmtpbm5l eUBpbnRlbC5jb20+OyBEb25nLCBFcmljPG1haWx0bzplcmljLmRvbmdAaW50ZWwuY29tPjsgWmVu ZywgU3RhcjxtYWlsdG86c3Rhci56ZW5nQGludGVsLmNvbT4NCtb3zOI6IFJFOiBbUEFUQ0ggMy8z XSBVZWZpQ3B1UGtnL0NwdUV4Y2VwdGlvbkhhbmRsZXJMaWI6IEFkZCBzdGFjayBzd2l0Y2ggc3Vw cG9ydA0KDQpIaSBKZWZmLA0KDQpUaGFua3MgZm9yIHRoZSBmZWVkYmFjay4gQXJlIHlvdSBzdWdn ZXN0aW5nIHRvIGZpeCBCdWd6aWxsYSAxMDkgaW4gdGhpcyBwYXRjaD8NCg0KVGhhbmtzLA0KSmlh bg0KDQpGcm9tOiBGYW4gSmVmZiBbbWFpbHRvOnZhbmplZmZfOTE5QGhvdG1haWwuY29tXQ0KU2Vu dDogV2VkbmVzZGF5LCBOb3ZlbWJlciAwMSwgMjAxNyAxMDozMyBBTQ0KVG86IFlhbywgSmlld2Vu IDxqaWV3ZW4ueWFvQGludGVsLmNvbTxtYWlsdG86amlld2VuLnlhb0BpbnRlbC5jb20+PjsgV2Fu ZywgSmlhbiBKIDxqaWFuLmoud2FuZ0BpbnRlbC5jb208bWFpbHRvOmppYW4uai53YW5nQGludGVs LmNvbT4+OyBlZGsyLWRldmVsQGxpc3RzLjAxLm9yZzxtYWlsdG86ZWRrMi1kZXZlbEBsaXN0cy4w MS5vcmc+DQpDYzogS2lubmV5LCBNaWNoYWVsIEQgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29t PG1haWx0bzptaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4+OyBEb25nLCBFcmljIDxlcmljLmRv bmdAaW50ZWwuY29tPG1haWx0bzplcmljLmRvbmdAaW50ZWwuY29tPj47IFplbmcsIFN0YXIgPHN0 YXIuemVuZ0BpbnRlbC5jb208bWFpbHRvOnN0YXIuemVuZ0BpbnRlbC5jb20+Pg0KU3ViamVjdDog tPC4tDogW1BBVENIIDMvM10gVWVmaUNwdVBrZy9DcHVFeGNlcHRpb25IYW5kbGVyTGliOiBBZGQg c3RhY2sgc3dpdGNoIHN1cHBvcnQNCg0KUGVyIGh0dHBzOi8vYnVnemlsbGEudGlhbm9jb3JlLm9y Zy9zaG93X2J1Zy5jZ2k/aWQ9MTA5LCBUUiBzaG91bGQgYmUgc2V0dXAgKFN1Y2ggYXMgaW4gRHhl SXBsUGVpbSkgZXZlbiB0aG91Z2ggTlVMTCBDcHUgRXhjZXB0aW9uIEhhbmRsZXIgaW5zdGFuY2Ug aXMgY2hvc2VuLg0KDQpGb3IgbG9uZyB0ZXJtLCBJIGFncmVlIHdlIG5lZWQgdG8gbW92ZSBBc21X cml0ZVRyLCBJQTMyX1RBU0tfU1RBVEVfU0VHTUVOVCwgSUEzMl9UU1NfREVTQ1JJUFRPUiB0byBN ZGVQa2coU3VjaCBhcyBCYXNlTGliKQ0KRm9yIHRoaXMgcGF0Y2gsIEkgaGF2ZSBubyBzdHJvbmcg b3Bpbmlvbi4NCg0KDQq3orz+yMs6IFlhbywgSmlld2VuPG1haWx0bzpqaWV3ZW4ueWFvQGludGVs LmNvbT4NCreiy83KsbzkOiAyMDE3xOoxMdTCMcjVIDk6NTYNCsrVvP7IyzogV2FuZywgSmlhbiBK PG1haWx0bzpqaWFuLmoud2FuZ0BpbnRlbC5jb20+OyBlZGsyLWRldmVsQGxpc3RzLjAxLm9yZzxt YWlsdG86ZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmc+DQqzrcvNOiBLaW5uZXksIE1pY2hhZWwgRDxt YWlsdG86bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+OyBEb25nLCBFcmljPG1haWx0bzplcmlj LmRvbmdAaW50ZWwuY29tPjsgWmVuZywgU3RhcjxtYWlsdG86c3Rhci56ZW5nQGludGVsLmNvbT4N Ctb3zOI6IFJlOiBbZWRrMl0gW1BBVENIIDMvM10gVWVmaUNwdVBrZy9DcHVFeGNlcHRpb25IYW5k bGVyTGliOiBBZGQgc3RhY2sgc3dpdGNoIHN1cHBvcnQNCg0KSGkgSmlhbg0KVGhhbmtzIGZvciB0 aGUgcGF0Y2guDQoNCkNhbiB3ZSBtb3ZlIGFsbCBJQTMyIGRlZmluZWQgZGF0YSBzdHJ1Y3R1cmUg b3IgZnVuY3Rpb24gdG8gTWRlUGtnPw0KU3VjaCBhczogQXNtV3JpdGVUciwgSUEzMl9UQVNLX1NU QVRFX1NFR01FTlQsIElBMzJfVFNTX0RFU0NSSVBUT1INCg0KSSBhbSBhbHNvIGN1cmlvdXMgd2h5 IHdlIHVzZSBkaWZmZXJlbnQgcG9saWN5IGZvciBvdGhlciBib290IG1vZGUuDQpDYW4gd2UgdXNl IGNvbnNpc3RlbnQgcG9saWN5Pw0KPiArICBpZiAoUGNkR2V0Qm9vbCAoUGNkQ3B1U3RhY2tHdWFy ZCkpIHsNCj4gKyAgICAvLw0KPiArICAgIC8vIFN0YWNrIEd1YXJkIHdvcmtzIHdpdGggdGhlIHN1 cHBvcnQgb2YgcGFnZSB0YWJsZSBlc3RhYmxpc2hlZCBhbmQNCj4gKyAgICAvLyBtZW1vcnkgbWFu YWdlbWVudC4gU28gd2UgaGF2ZSB0byBleGNsdWRlIHRob3NlIGJvb3QgbW9kZXMNCj4gd2l0aG91 dA0KPiArICAgIC8vIHRoZW0uDQo+ICsgICAgLy8NCj4gKyAgICBzd2l0Y2ggKEdldEJvb3RNb2Rl SG9iKCkpIHsNCj4gKyAgICBjYXNlIEJPT1RfT05fRkxBU0hfVVBEQVRFOg0KPiArICAgIGNhc2Ug Qk9PVF9JTl9SRUNPVkVSWV9NT0RFOg0KPiArICAgIGNhc2UgQk9PVF9PTl9TM19SRVNVTUU6DQo+ ICsgICAgICBicmVhazsNCj4gKw0KPiArICAgIGRlZmF1bHQ6DQo+ICsgICAgICBBcmNoU2V0dXBF eGNwZXRpb25TdGFjayAoSWR0VGFibGUpOw0KPiArICAgICAgYnJlYWs7DQo+ICsgICAgfQ0KPiAr ICB9DQoNCg0KVGhhbmsgeW91DQpZYW8gSmlld2VuDQoNCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3Nh Z2UtLS0tLQ0KPiBGcm9tOiBXYW5nLCBKaWFuIEoNCj4gU2VudDogVHVlc2RheSwgT2N0b2JlciAz MSwgMjAxNyAxMDoyNCBQTQ0KPiBUbzogZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmc8bWFpbHRvOmVk azItZGV2ZWxAbGlzdHMuMDEub3JnPg0KPiBDYzogWmVuZywgU3RhciA8c3Rhci56ZW5nQGludGVs LmNvbTxtYWlsdG86c3Rhci56ZW5nQGludGVsLmNvbT4+OyBEb25nLCBFcmljIDxlcmljLmRvbmdA aW50ZWwuY29tPG1haWx0bzplcmljLmRvbmdAaW50ZWwuY29tPj47IFlhbywNCj4gSmlld2VuIDxq aWV3ZW4ueWFvQGludGVsLmNvbTxtYWlsdG86amlld2VuLnlhb0BpbnRlbC5jb20+PjsgS2lubmV5 LCBNaWNoYWVsIEQNCj4gPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPG1haWx0bzptaWNoYWVs LmQua2lubmV5QGludGVsLmNvbT4+DQo+IFN1YmplY3Q6IFtQQVRDSCAzLzNdIFVlZmlDcHVQa2cv Q3B1RXhjZXB0aW9uSGFuZGxlckxpYjogQWRkIHN0YWNrIHN3aXRjaA0KPiBzdXBwb3J0DQo+DQo+ IElmIFN0YWNrIEd1YXJkIGlzIGVuYWJsZWQgYW5kIHRoZXJlJ3MgcmVhbGx5IGEgc3RhY2sgb3Zl cmZsb3cgaGFwcGVuZWQgZHVyaW5nDQo+IGJvb3QsIGEgUGFnZSBGYXVsdCBleGNlcHRpb24gd2ls bCBiZSB0cmlnZ2VyZWQuIEJlY2F1c2UgdGhlIHN0YWNrIGlzIG91dCBvZg0KPiB1c2FnZSwgdGhl IGV4Y2VwdGlvbiBoYW5kbGVyLCB3aGljaCBzaGFyZXMgdGhlIHN0YWNrIHdpdGggbm9ybWFsIFVF RkkgZHJpdmVyLA0KPiBjYW5ub3QgYmUgZXhlY3V0ZWQgYW5kIGNhbm5vdCBkdW1wIHRoZSBwcm9j ZXNzb3IgaW5mb3JtYXRpb24uDQo+DQo+IFdpdGhvdXQgdGhvc2UgaW5mb3JtYXRpb24sIGl0J3Mg dmVyeSBkaWZmaWN1bHQgZm9yIHRoZSBCSU9TIGRldmVsb3BlcnMgbG9jYXRlDQo+IHRoZSByb290 IGNhdXNlIG9mIHN0YWNrIG92ZXJmbG93LiBBbmQgd2l0aG91dCBhIHdvcmthYmxlIHN0YWNrLCB0 aGUgZGV2ZWxvcGVyDQo+IGNhbm5vdCBldmVudCB1c2Ugc2luZ2xlIHN0ZXAgdG8gZGVidWcgdGhl IFVFRkkgZHJpdmVyIHdpdGggSlRBRyBkZWJ1Z2dlci4NCj4NCj4gSW4gb3JkZXIgdG8gbWFrZSBz dXJlIHRoZSBleGNlcHRpb24gaGFuZGxlciB0byBleGVjdXRlIG5vcm1hbGx5IGFmdGVyIHN0YWNr DQo+IG92ZXJmbG93LiBXZSBuZWVkIHNlcGFyYXRlIHN0YWNrcyBmb3IgZXhjZXB0aW9uIGhhbmRs ZXJzIGluIGNhc2Ugb2YgdW51c2FibGUNCj4gc3RhY2suDQo+DQo+IElBIHByb2Nlc3NvciBhbGxv d3MgdG8gc3dpdGNoIHRvIGEgbmV3IHN0YWNrIGR1cmluZyBoYW5kbGluZyBpbnRlcnJ1cHQgYW5k DQo+IGV4Y2VwdGlvbi4gQnV0IFg2NCBhbmQgSUEzMiBwcm92aWRlcyBkaWZmZXJlbnQgd2F5cyB0 byBtYWtlIGl0LiBYNjQgcHJvdmlkZXMNCj4gaW50ZXJydXB0IHN0YWNrIHRhYmxlIChJU1QpIHRv IGFsbG93IG1heGltdW0gNyBkaWZmZXJlbnQgZXhjZXB0aW9ucyB0byBoYXZlDQo+IG5ldyBzdGFj ayBmb3IgaXRzIGhhbmRsZXIuIElBMzIgZG9lc24ndCBoYXZlIElTVCBtZWNoYW5pc20gYW5kIGNh biBvbmx5IHVzZQ0KPiB0YXNrIGdhdGUgdG8gZG8gaXQgc2luY2UgdGFzayBzd2l0Y2ggYWxsb3dz IHRvIGxvYWQgYSBuZXcgc3RhY2sgdGhyb3VnaCBpdHMNCj4gdGFzay1zdGF0ZSBzZWdtZW50IChU U1MpLg0KPg0KPiBOb3RlOiBTdGFjayBzd2l0Y2ggbmVlZHMgdG8gYWxsb2NhdGUgbWVtb3J5IHBh Z2VzIHRvIGJlIG5ldyBzdGFja3MuIFNvIHRoaXMNCj4gICAgICAgZnVuY3Rpb25hbGl0eSB3b3Jr cyBvbmx5IGluIHRoZSBib290IHBoYXNlcyBjYXBhYmxlIG9mIG1lbW9yeQ0KPiAgICAgICBhbGxv Y2F0aW9uIChiZXNpZGVzIHRoZSBwYWdpbmcsIGZvciB0aGUgc2FrZSBvZiBTdGFjayBHdWFyZCku IEluDQo+ICAgICAgIG90aGVyIHdvcmRzLCBvbmx5IERYRSBwaGFzZSBjYW4gc3VwcG9ydHMgU3Rh Y2sgR3VhcmQgd2l0aCBzdGFjayBzd2l0Y2guDQo+DQo+IENjOiBTdGFyIFplbmcgPHN0YXIuemVu Z0BpbnRlbC5jb208bWFpbHRvOnN0YXIuemVuZ0BpbnRlbC5jb20+Pg0KPiBDYzogRXJpYyBEb25n IDxlcmljLmRvbmdAaW50ZWwuY29tPG1haWx0bzplcmljLmRvbmdAaW50ZWwuY29tPj4NCj4gQ2M6 IEppZXdlbiBZYW8gPGppZXdlbi55YW9AaW50ZWwuY29tPG1haWx0bzpqaWV3ZW4ueWFvQGludGVs LmNvbT4+DQo+IENjOiBNaWNoYWVsIEtpbm5leSA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb208 bWFpbHRvOm1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPj4NCj4gU3VnZ2VzdGVkLWJ5OiBBeWVs bGV0IFdvbG1hbiA8YXllbGxldC53b2xtYW5AaW50ZWwuY29tPG1haWx0bzpheWVsbGV0LndvbG1h bkBpbnRlbC5jb20+Pg0KPiBDb250cmlidXRlZC11bmRlcjogVGlhbm9Db3JlIENvbnRyaWJ1dGlv biBBZ3JlZW1lbnQgMS4xDQo+IFNpZ25lZC1vZmYtYnk6IEppYW4gSiBXYW5nIDxqaWFuLmoud2Fu Z0BpbnRlbC5jb208bWFpbHRvOmppYW4uai53YW5nQGludGVsLmNvbT4+DQo+IC0tLQ0KPiAgLi4u L0NwdUV4Y2VwdGlvbkhhbmRsZXJMaWIvQ3B1RXhjZXB0aW9uQ29tbW9uLmggICAgfCAgMjIgKysN Cj4gIC4uLi9EeGVDcHVFeGNlcHRpb25IYW5kbGVyTGliLmluZiAgICAgICAgICAgICAgICAgIHwg ICA1ICsNCj4gIC4uLi9MaWJyYXJ5L0NwdUV4Y2VwdGlvbkhhbmRsZXJMaWIvRHhlRXhjZXB0aW9u LmMgIHwgIDE5ICsNCj4gIC4uLi9JYTMyL0FyY2hFeGNlcHRpb25IYW5kbGVyLmMgICAgICAgICAg ICAgICAgICAgIHwgMTM1ICsrKysrKysNCj4gIC4uLi9JYTMyL0FyY2hJbnRlcnJ1cHREZWZzLmgg ICAgICAgICAgICAgICAgICAgICAgIHwgMTM2ICsrKysrKysNCj4gIC4uLi9JYTMyL0V4Y2VwdGlv blRzc0VudHJ5QXNtLm5hc20gICAgICAgICAgICAgICAgIHwgMzk4DQo+ICsrKysrKysrKysrKysr KysrKysrKw0KPiAgLi4uL1BlaUNwdUV4Y2VwdGlvbkhhbmRsZXJMaWIuaW5mICAgICAgICAgICAg ICAgICAgfCAgIDEgKw0KPiAgLi4uL1NlY1BlaUNwdUV4Y2VwdGlvbkhhbmRsZXJMaWIuaW5mICAg ICAgICAgICAgICAgfCAgIDMgKw0KPiAgLi4uL1NtbUNwdUV4Y2VwdGlvbkhhbmRsZXJMaWIuaW5m ICAgICAgICAgICAgICAgICAgfCAgIDEgKw0KPiAgLi4uL1g2NC9BcmNoRXhjZXB0aW9uSGFuZGxl ci5jICAgICAgICAgICAgICAgICAgICAgfCAxMDggKysrKysrDQo+ICAuLi4vQ3B1RXhjZXB0aW9u SGFuZGxlckxpYi9YNjQvQXJjaEludGVycnVwdERlZnMuaCB8ICA0MCArKysNCj4gIC4uLi9YNjQv RXhjZXB0aW9uSGFuZGxlckFzbS5TICAgICAgICAgICAgICAgICAgICAgIHwgIDEyICsNCj4gIC4u Li9YNjQvRXhjZXB0aW9uSGFuZGxlckFzbS5hc20gICAgICAgICAgICAgICAgICAgIHwgIDEyICsN Cj4gIC4uLi9YNjQvRXhjZXB0aW9uSGFuZGxlckFzbS5uYXNtICAgICAgICAgICAgICAgICAgIHwg IDEyICsNCj4gIDE0IGZpbGVzIGNoYW5nZWQsIDkwNCBpbnNlcnRpb25zKCspDQo+ICBjcmVhdGUg bW9kZSAxMDA2NDQNCj4gVWVmaUNwdVBrZy9MaWJyYXJ5L0NwdUV4Y2VwdGlvbkhhbmRsZXJMaWIv SWEzMi9FeGNlcHRpb25Uc3NFbnRyeUFzbS5uYXNtDQo+DQo+IGRpZmYgLS1naXQNCj4gYS9VZWZp Q3B1UGtnL0xpYnJhcnkvQ3B1RXhjZXB0aW9uSGFuZGxlckxpYi9DcHVFeGNlcHRpb25Db21tb24u aA0KPiBiL1VlZmlDcHVQa2cvTGlicmFyeS9DcHVFeGNlcHRpb25IYW5kbGVyTGliL0NwdUV4Y2Vw dGlvbkNvbW1vbi5oDQo+IGluZGV4IDc0MGE1ODgyOGIuLmZkNGEyNmE0NTggMTAwNjQ0DQo+IC0t LSBhL1VlZmlDcHVQa2cvTGlicmFyeS9DcHVFeGNlcHRpb25IYW5kbGVyTGliL0NwdUV4Y2VwdGlv bkNvbW1vbi5oDQo+ICsrKyBiL1VlZmlDcHVQa2cvTGlicmFyeS9DcHVFeGNlcHRpb25IYW5kbGVy TGliL0NwdUV4Y2VwdGlvbkNvbW1vbi5oDQo+IEBAIC0yNSw2ICsyNSw3IEBADQo+ICAjaW5jbHVk ZSA8TGlicmFyeS9CYXNlTWVtb3J5TGliLmg+DQo+ICAjaW5jbHVkZSA8TGlicmFyeS9TeW5jaHJv bml6YXRpb25MaWIuaD4NCj4gICNpbmNsdWRlIDxMaWJyYXJ5L0NwdUV4Y2VwdGlvbkhhbmRsZXJM aWIuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L01lbW9yeUFsbG9jYXRpb25MaWIuaD4NCj4NCj4g ICNkZWZpbmUgIENQVV9FWENFUFRJT05fTlVNICAgICAgICAgIDMyDQo+ICAjZGVmaW5lICBDUFVf SU5URVJSVVBUX05VTSAgICAgICAgIDI1Ng0KPiBAQCAtMjg4LDUgKzI4OSwyNiBAQCBDb21tb25F eGNlcHRpb25IYW5kbGVyV29ya2VyICgNCj4gICAgSU4gRVhDRVBUSU9OX0hBTkRMRVJfREFUQSAg ICAgICpFeGNlcHRpb25IYW5kbGVyRGF0YQ0KPiAgICApOw0KPg0KPiArLyoqDQo+ICsgIExvYWQg Z2l2ZW4gc2VsZWN0b3IgaW50byBUUiByZWdpc3Rlcg0KPiArDQo+ICsgIEBwYXJhbSBTZWxlY3Rv ciAgICAgICAgIFRhc2sgc2VnbWVudCBzZWxlY3Rvcg0KPiArKiovDQo+ICtWT0lEDQo+ICtBc21X cml0ZVRyICgNCj4gKyAgVUlOVDE2IFNlbGVjdG9yDQo+ICsgICk7DQo+ICsNCj4gKy8qKg0KPiAr ICBTZXR1cCBzZXBhcmF0ZSBzdGFjayBmb3Igc3BlY2lmaWMgZXhjZXB0aW9ucy4NCj4gKw0KPiAr ICBAcGFyYW1baW5dIElkdFRhYmxlICAgICAgICBJRFQgdGFibGUgYmFzZS4NCj4gKyoqLw0KPiAr Vk9JRA0KPiArRUZJQVBJDQo+ICtBcmNoU2V0dXBFeGNwZXRpb25TdGFjayAoDQo+ICsgIElOIElB MzJfSURUX0dBVEVfREVTQ1JJUFRPUiAgICAgICAgICAgKklkdFRhYmxlDQo+ICsgICk7DQo+ICsN Cj4gICNlbmRpZg0KPg0KPiBkaWZmIC0tZ2l0DQo+IGEvVWVmaUNwdVBrZy9MaWJyYXJ5L0NwdUV4 Y2VwdGlvbkhhbmRsZXJMaWIvRHhlQ3B1RXhjZXB0aW9uSGFuZGxlckxpYi5pbmYNCj4gYi9VZWZp Q3B1UGtnL0xpYnJhcnkvQ3B1RXhjZXB0aW9uSGFuZGxlckxpYi9EeGVDcHVFeGNlcHRpb25IYW5k bGVyTGliLmluZg0KPiBpbmRleCBmNGE4ZDAxYzgwLi5iMDk5ZWY0ZGFkIDEwMDY0NA0KPiAtLS0N Cj4gYS9VZWZpQ3B1UGtnL0xpYnJhcnkvQ3B1RXhjZXB0aW9uSGFuZGxlckxpYi9EeGVDcHVFeGNl cHRpb25IYW5kbGVyTGliLmluZg0KPiArKysNCj4gYi9VZWZpQ3B1UGtnL0xpYnJhcnkvQ3B1RXhj ZXB0aW9uSGFuZGxlckxpYi9EeGVDcHVFeGNlcHRpb25IYW5kbGVyTGliLmluZg0KPiBAQCAtMzAs NiArMzAsNyBAQA0KPiAgW1NvdXJjZXMuSWEzMl0NCj4gICAgSWEzMi9FeGNlcHRpb25IYW5kbGVy QXNtLmFzbQ0KPiAgICBJYTMyL0V4Y2VwdGlvbkhhbmRsZXJBc20ubmFzbQ0KPiArICBJYTMyL0V4 Y2VwdGlvblRzc0VudHJ5QXNtLm5hc20NCj4gICAgSWEzMi9FeGNlcHRpb25IYW5kbGVyQXNtLlMN Cj4gICAgSWEzMi9BcmNoRXhjZXB0aW9uSGFuZGxlci5jDQo+ICAgIElhMzIvQXJjaEludGVycnVw dERlZnMuaA0KPiBAQCAtNDcsNiArNDgsOSBAQA0KPiAgICBQZWlEeGVTbW1DcHVFeGNlcHRpb24u Yw0KPiAgICBEeGVFeGNlcHRpb24uYw0KPg0KPiArW1BjZF0NCj4gKyAgZ0VmaU1kZU1vZHVsZVBr Z1Rva2VuU3BhY2VHdWlkLlBjZENwdVN0YWNrR3VhcmQNCj4gKw0KPiAgW1BhY2thZ2VzXQ0KPiAg ICBNZGVQa2cvTWRlUGtnLmRlYw0KPiAgICBNZGVNb2R1bGVQa2cvTWRlTW9kdWxlUGtnLmRlYw0K PiBAQCAtNjEsMyArNjUsNCBAQA0KPiAgICBQZUNvZmZHZXRFbnRyeVBvaW50TGliDQo+ICAgIE1l bW9yeUFsbG9jYXRpb25MaWINCj4gICAgRGVidWdMaWINCj4gKyAgSG9iTGliDQo+IGRpZmYgLS1n aXQgYS9VZWZpQ3B1UGtnL0xpYnJhcnkvQ3B1RXhjZXB0aW9uSGFuZGxlckxpYi9EeGVFeGNlcHRp b24uYw0KPiBiL1VlZmlDcHVQa2cvTGlicmFyeS9DcHVFeGNlcHRpb25IYW5kbGVyTGliL0R4ZUV4 Y2VwdGlvbi5jDQo+IGluZGV4IDMxZmViZWM5NzYuLmU5ZGNkMDBlMDIgMTAwNjQ0DQo+IC0tLSBh L1VlZmlDcHVQa2cvTGlicmFyeS9DcHVFeGNlcHRpb25IYW5kbGVyTGliL0R4ZUV4Y2VwdGlvbi5j DQo+ICsrKyBiL1VlZmlDcHVQa2cvTGlicmFyeS9DcHVFeGNlcHRpb25IYW5kbGVyTGliL0R4ZUV4 Y2VwdGlvbi5jDQo+IEBAIC0xNiw2ICsxNiw3IEBADQo+ICAjaW5jbHVkZSAiQ3B1RXhjZXB0aW9u Q29tbW9uLmgiDQo+ICAjaW5jbHVkZSA8TGlicmFyeS9EZWJ1Z0xpYi5oPg0KPiAgI2luY2x1ZGUg PExpYnJhcnkvTWVtb3J5QWxsb2NhdGlvbkxpYi5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvSG9i TGliLmg+DQo+DQo+ICBDT05TVCBVSU5UTiAgICBtRG9GYXJSZXR1cm5GbGFnICA9IDA7DQo+DQo+ IEBAIC0xNTUsNiArMTU2LDI0IEBAIEluaXRpYWxpemVDcHVJbnRlcnJ1cHRIYW5kbGVycyAoDQo+ DQo+ICAgIFVwZGF0ZUlkdFRhYmxlIChJZHRUYWJsZSwgJlRlbXBsYXRlTWFwLCAmbUV4Y2VwdGlv bkhhbmRsZXJEYXRhKTsNCj4NCj4gKyAgaWYgKFBjZEdldEJvb2wgKFBjZENwdVN0YWNrR3VhcmQp KSB7DQo+ICsgICAgLy8NCj4gKyAgICAvLyBTdGFjayBHdWFyZCB3b3JrcyB3aXRoIHRoZSBzdXBw b3J0IG9mIHBhZ2UgdGFibGUgZXN0YWJsaXNoZWQgYW5kDQo+ICsgICAgLy8gbWVtb3J5IG1hbmFn ZW1lbnQuIFNvIHdlIGhhdmUgdG8gZXhjbHVkZSB0aG9zZSBib290IG1vZGVzDQo+IHdpdGhvdXQN Cj4gKyAgICAvLyB0aGVtLg0KPiArICAgIC8vDQo+ICsgICAgc3dpdGNoIChHZXRCb290TW9kZUhv YigpKSB7DQo+ICsgICAgY2FzZSBCT09UX09OX0ZMQVNIX1VQREFURToNCj4gKyAgICBjYXNlIEJP T1RfSU5fUkVDT1ZFUllfTU9ERToNCj4gKyAgICBjYXNlIEJPT1RfT05fUzNfUkVTVU1FOg0KPiAr ICAgICAgYnJlYWs7DQo+ICsNCj4gKyAgICBkZWZhdWx0Og0KPiArICAgICAgQXJjaFNldHVwRXhj cGV0aW9uU3RhY2sgKElkdFRhYmxlKTsNCj4gKyAgICAgIGJyZWFrOw0KPiArICAgIH0NCj4gKyAg fQ0KPiArDQo+ICAgIC8vDQo+ICAgIC8vIExvYWQgSW50ZXJydXB0IERlc2NyaXB0b3IgVGFibGUN Cj4gICAgLy8NCj4gZGlmZiAtLWdpdA0KPiBhL1VlZmlDcHVQa2cvTGlicmFyeS9DcHVFeGNlcHRp b25IYW5kbGVyTGliL0lhMzIvQXJjaEV4Y2VwdGlvbkhhbmRsZXIuYw0KPiBiL1VlZmlDcHVQa2cv TGlicmFyeS9DcHVFeGNlcHRpb25IYW5kbGVyTGliL0lhMzIvQXJjaEV4Y2VwdGlvbkhhbmRsZXIu Yw0KPiBpbmRleCBmMmMzOWViMTkzLi4zZDQxZGY3NWE1IDEwMDY0NA0KPiAtLS0gYS9VZWZpQ3B1 UGtnL0xpYnJhcnkvQ3B1RXhjZXB0aW9uSGFuZGxlckxpYi9JYTMyL0FyY2hFeGNlcHRpb25IYW5k bGVyLmMNCj4gKysrDQo+IGIvVWVmaUNwdVBrZy9MaWJyYXJ5L0NwdUV4Y2VwdGlvbkhhbmRsZXJM aWIvSWEzMi9BcmNoRXhjZXB0aW9uSGFuZGxlci5jDQo+IEBAIC0xNCw2ICsxNCwxOSBAQA0KPg0K PiAgI2luY2x1ZGUgIkNwdUV4Y2VwdGlvbkNvbW1vbi5oIg0KPg0KPiArLy8NCj4gKy8vIExpc3Qg b2YgZXhjZXB0aW9ucyBuZWVkaW5nIHNlcGFyYXRlIHN0YWNrDQo+ICsvLw0KPiArU1RBVElDIElB MzJfRVhDRVBUSU9OX1RTX0VOVFJZIG1FeGNlcHRpb25zV2l0aFN0YWNrW10gPSB7DQo+ICsgIHs2 LCAgRXhjZXB0aW9uVGFza1N3dGljaEVudHJ5Nn0sICAvLyNVRDogSW52YWxpZCBPcGNvZGUgRXhj ZXB0aW9uDQo+ICsgIHs4LCAgRXhjZXB0aW9uVGFza1N3dGljaEVudHJ5OH0sICAvLyNERjogRG91 YmxlIEZhdWx0IEV4Y2VwdGlvbg0KPiArICB7MTIsIEV4Y2VwdGlvblRhc2tTd3RpY2hFbnRyeTEy fSwgLy8jU1M6IFN0YWNrIEZhdWx0IEV4Y2VwdGlvbg0KPiArICB7MTMsIEV4Y2VwdGlvblRhc2tT d3RpY2hFbnRyeTEzfSwgLy8jR1A6IEdlbmVyYWwgUHJvdGVjdGlvbiBFeGNlcHRpb24NCj4gKyAg ezE0LCBFeGNlcHRpb25UYXNrU3d0aWNoRW50cnkxNH0sIC8vI1BGOiBQYWdlLUZhdWx0IEV4Y2Vw dGlvbg0KPiArICB7MTcsIEV4Y2VwdGlvblRhc2tTd3RpY2hFbnRyeTE3fSwgLy8jQUM6IEFsaWdu bWVudCBDaGVjayBFeGNlcHRpb24NCj4gKyAgezE4LCBFeGNlcHRpb25UYXNrU3d0aWNoRW50cnkx OH0gIC8vI01DOiBNYWNoaW5lLUNoZWNrIEV4Y2VwdGlvbg0KPiArfTsNCj4gKw0KPiAgLyoqDQo+ ICAgIFJldHVybiBhZGRyZXNzIG1hcCBvZiBleGNlcHRpb24gaGFuZGxlciB0ZW1wbGF0ZSBzbyB0 aGF0IEMgY29kZSBjYW4NCj4gZ2VuZXJhdGUNCj4gICAgZXhjZXB0aW9uIHRhYmxlcy4NCj4gQEAg LTEwNyw2ICsxMjAsMTI4IEBAIEFyY2hSZXN0b3JlRXhjZXB0aW9uQ29udGV4dCAoDQo+ICAgIFN5 c3RlbUNvbnRleHQuU3lzdGVtQ29udGV4dElhMzItPkV4Y2VwdGlvbkRhdGEgPQ0KPiBSZXNlcnZl ZFZlY3RvcnNbRXhjZXB0aW9uVHlwZV0uRXhjZXB0aW9uRGF0YTsNCj4gIH0NCj4NCj4gKy8qKg0K PiArICBTZXR1cCBzZXBhcmF0ZSBzdGFjayBmb3Igc3BlY2lmaWMgZXhjZXB0aW9ucy4NCj4gKw0K PiArICAgQHBhcmFtW2luXSBJZHRUYWJsZSAgICAgICAgSURUIHRhYmxlIGJhc2UuDQo+ICsqKi8N Cj4gK1ZPSUQNCj4gK0VGSUFQSQ0KPiArQXJjaFNldHVwRXhjcGV0aW9uU3RhY2sgKA0KPiArICBJ TiBJQTMyX0lEVF9HQVRFX0RFU0NSSVBUT1IgICAgICAgICAgICpJZHRUYWJsZQ0KPiArICApDQo+ ICt7DQo+ICsgIFZPSUQgICAgICAgICAgICAgICAgICAgICAgKk5ld0dkdDsNCj4gKyAgSUEzMl9E RVNDUklQVE9SICAgICAgICAgICBHZHREZXNjOw0KPiArICBVSU5UTiAgICAgICAgICAgICAgICAg ICAgIE9sZEdkdFNpemU7DQo+ICsgIFRTU19FTlRSSUVTICAgICAgICAgICAgICAgKlRzc0VudHJ5 Ow0KPiArICBJQTMyX1RTU19ERVNDUklQVE9SICAgICAgICpUc3NEZXNjOw0KPiArICBJQTMyX1RB U0tfU1RBVEVfU0VHTUVOVCAgICpUc3M7DQo+ICsgIFVJTlROICAgICAgICAgICAgICAgICAgICAg U3RhY2tCYXNlOw0KPiArICBVSU5UTiAgICAgICAgICAgICAgICAgICAgIFN0YWNrVG9wOw0KPiAr ICBVSU5UTiAgICAgICAgICAgICAgICAgICAgIFN0YWNrU2l6ZTsNCj4gKyAgVUlOVE4gICAgICAg ICAgICAgICAgICAgICBJbmRleDsNCj4gKyAgVUlOVE4gICAgICAgICAgICAgICAgICAgICBWZWN0 b3I7DQo+ICsgIFVJTlROICAgICAgICAgICAgICAgICAgICAgVHNzQmFzZTsNCj4gKw0KPiArICAv Lw0KPiArICAvLyBBbGxvY2F0ZSBSdW50aW1lIERhdGEgZm9yIHRoZSBHRFQNCj4gKyAgLy8NCj4g KyAgQXNtUmVhZEdkdHIoJkdkdERlc2MpOw0KPiArICBPbGRHZHRTaXplID0gR2R0RGVzYy5MaW1p dCArIDE7DQo+ICsgIE5ld0dkdCA9IEFsbG9jYXRlUnVudGltZVplcm9Qb29sKE9sZEdkdFNpemUg KyBzaXplb2YoVFNTX0VOVFJJRVMpDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICsgSUEzMl9HRFRfQUxJR05NRU5UKTsNCj4gKyAgaWYgKE5ld0dkdCA9PSBOVUxMKSB7DQo+ ICsgICAgcmV0dXJuOw0KPiArICB9DQo+ICsgIE5ld0dkdCA9IEFMSUdOX1BPSU5URVIgKE5ld0dk dCwgSUEzMl9HRFRfQUxJR05NRU5UKTsNCj4gKw0KPiArICAvLw0KPiArICAvLyBJbml0aWFsaXpl IG5ldyBHRFQgZW50cmllcw0KPiArICAvLw0KPiArICBDb3B5TWVtKE5ld0dkdCwgKFZPSUQgKilH ZHREZXNjLkJhc2UsIE9sZEdkdFNpemUpOw0KPiArICBHZHREZXNjLkJhc2UgPSAoVUlOVE4pKFZP SUQqKU5ld0dkdDsNCj4gKyAgR2R0RGVzYy5MaW1pdCA9IChVSU5UMTYpKE9sZEdkdFNpemUgKyBU U1NfT0ZGU0VUIC0gMSk7DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8gUmVzZXJ2ZSBzdGF0Y2sgbWVt b3J5IGZvciBnaXZlbiBleGNlcHRpb25zDQo+ICsgIC8vDQo+ICsgIFN0YWNrU2l6ZSA9IEFSUkFZ X1NJWkUgKG1FeGNlcHRpb25zV2l0aFN0YWNrKSAqIEVYQ0VQVElPTl9TVEFDS19TSVpFOw0KPiAr ICBTdGFja1NpemUgPSBFRklfUEFHRVNfVE9fU0laRSAoRUZJX1NJWkVfVE9fUEFHRVMgKFN0YWNr U2l6ZSkpOw0KPiArICBTdGFja0Jhc2UgPSAoVUlOVDY0KShVSU5UTilBbGxvY2F0ZVBhZ2VzIChF RklfU0laRV9UT19QQUdFUw0KPiAoU3RhY2tTaXplKSk7DQo+ICsgIGlmIChTdGFja0Jhc2UgPT0g MCkgew0KPiArICAgIEZyZWVQb29sIChOZXdHZHQpOw0KPiArICAgIHJldHVybjsNCj4gKyAgfQ0K PiArDQo+ICsgIC8vDQo+ICsgIC8vIEZpeHVwIFRTUyBkZXNjcmlwdG9ycyBhbmQgc2VnbWVudHMN Cj4gKyAgLy8NCj4gKyAgVHNzRW50cnkgPSAoVk9JRCAqKShHZHREZXNjLkJhc2UgKyBPbGRHZHRT aXplKTsNCj4gKw0KPiArICBUc3NCYXNlID0gKFVJTlROKShWT0lEICopJlRzc0VudHJ5LT5Uc3M7 DQo+ICsgIFRzc0VudHJ5LT5Uc3NTZWcuTGltaXQxNV8wICAgICAgICAgICAgPQ0KPiBzaXplb2Yo SUEzMl9UQVNLX1NUQVRFX1NFR01FTlQpIC0gMTsNCj4gKyAgVHNzRW50cnktPlRzc1NlZy5CYXNl MTVfMCAgICAgICAgICAgICA9IChVSU5UMTYpVHNzQmFzZTsNCj4gKyAgVHNzRW50cnktPlRzc1Nl Zy5CYXNlMjNfMTYgICAgICAgICAgICA9IChVSU5UOCkoVHNzQmFzZSA+PiAxNik7DQo+ICsgIFRz c0VudHJ5LT5Uc3NTZWcuVHlwZSAgICAgICAgICAgICAgICAgPSBJQTMyX0dEVF9UWVBFX1RTUzsN Cj4gKyAgVHNzRW50cnktPlRzc1NlZy5MaW1pdDE5XzE2X2FuZF9mbGFncyA9IDA7DQo+ICsgIFRz c0VudHJ5LT5Uc3NTZWcuQmFzZTMxXzI0ICAgICAgICAgICAgPSAoVUlOVDgpKFRzc0Jhc2UgPj4g MjQpOw0KPiArDQo+ICsgIFN0YWNrVG9wICA9IFN0YWNrQmFzZSArIFN0YWNrU2l6ZSAtIENQVV9T VEFDS19BTElHTk1FTlQ7DQo+ICsgIFN0YWNrVG9wICA9IChVSU5UTilBTElHTl9QT0lOVEVSIChT dGFja1RvcCwgQ1BVX1NUQUNLX0FMSUdOTUVOVCk7DQo+ICsgIGZvciAoSW5kZXggPSAwOyBJbmRl eCA8IEFSUkFZX1NJWkUgKG1FeGNlcHRpb25zV2l0aFN0YWNrKTsgKytJbmRleCkgew0KPiArICAg IC8vDQo+ICsgICAgLy8gRml4dXAgVFNTIGRlc2NyaXB0b3INCj4gKyAgICAvLw0KPiArICAgIFRz c0Jhc2UgPSAoVUlOVE4pKFZPSUQgKikmVHNzRW50cnktPkV4Y2VwdGlvblRzc1tJbmRleF07DQo+ ICsgICAgVHNzRGVzYyA9ICZUc3NFbnRyeS0+RXhjZXB0aW9uVHNzU2VnW0luZGV4XTsNCj4gKw0K PiArICAgIFRzc0Rlc2MtPkxpbWl0MTVfMCAgICAgICAgICAgID0gc2l6ZW9mKElBMzJfVEFTS19T VEFURV9TRUdNRU5UKSAtIDE7DQo+ICsgICAgVHNzRGVzYy0+QmFzZTE1XzAgICAgICAgICAgICAg PSAoVUlOVDE2KVRzc0Jhc2U7DQo+ICsgICAgVHNzRGVzYy0+QmFzZTIzXzE2ICAgICAgICAgICAg PSAoVUlOVDgpKFRzc0Jhc2UgPj4gMTYpOw0KPiArICAgIFRzc0Rlc2MtPlR5cGUgICAgICAgICAg ICAgICAgID0gSUEzMl9HRFRfVFlQRV9UU1M7DQo+ICsgICAgVHNzRGVzYy0+TGltaXQxOV8xNl9h bmRfZmxhZ3MgPSAwOw0KPiArICAgIFRzc0Rlc2MtPkJhc2UzMV8yNCAgICAgICAgICAgID0gKFVJ TlQ4KShUc3NCYXNlID4+IDI0KTsNCj4gKw0KPiArICAgIC8vDQo+ICsgICAgLy8gRml4dXAgVFNT DQo+ICsgICAgLy8NCj4gKyAgICBUc3MgPSAmVHNzRW50cnktPkV4Y2VwdGlvblRzc1tJbmRleF07 DQo+ICsgICAgVHNzLT5DUjMgICAgPSBBc21SZWFkQ3IzKCk7DQo+ICsgICAgVHNzLT5FSVAgICAg PSAoVUlOVDMyKW1FeGNlcHRpb25zV2l0aFN0YWNrW0luZGV4XS5FbnRyeVBvaW50Ow0KPiArICAg IFRzcy0+RUZMQUdTID0gMHgyOw0KPiArICAgIFRzcy0+RVNQICAgID0gU3RhY2tUb3A7DQo+ICsg ICAgVHNzLT5FUyAgICAgPSBBc21SZWFkRXMoKTsNCj4gKyAgICBUc3MtPkNTICAgICA9IEFzbVJl YWRDcygpOw0KPiArICAgIFRzcy0+U1MgICAgID0gQXNtUmVhZFNzKCk7DQo+ICsgICAgVHNzLT5E UyAgICAgPSBBc21SZWFkRHMoKTsNCj4gKyAgICBUc3MtPkZTICAgICA9IEFzbVJlYWRGcygpOw0K PiArICAgIFRzcy0+R1MgICAgID0gQXNtUmVhZEdzKCk7DQo+ICsgICAgU3RhY2tUb3AgICAtPSBF WENFUFRJT05fU1RBQ0tfU0laRTsNCj4gKw0KPiArICAgIC8vDQo+ICsgICAgLy8gQ2hhbmdlIHNw ZWNpZmllZCBleGNlcHRpb25zIGluIElEVCB0byB1c2UgVFNTDQo+ICsgICAgLy8NCj4gKyAgICBW ZWN0b3IgPSBtRXhjZXB0aW9uc1dpdGhTdGFja1tJbmRleF0uVmVjdG9yOw0KPiArDQo+ICsgICAg SWR0VGFibGVbVmVjdG9yXS5CaXRzLk9mZnNldExvdyAgPSAwOw0KPiArICAgIElkdFRhYmxlW1Zl Y3Rvcl0uQml0cy5TZWxlY3RvciAgID0gT2xkR2R0U2l6ZSArDQo+IEVYQ0VQVElPTl9UU1NfU0VM KEluZGV4KTsNCj4gKyAgICBJZHRUYWJsZVtWZWN0b3JdLkJpdHMuUmVzZXJ2ZWRfMCA9IDA7DQo+ ICsgICAgSWR0VGFibGVbVmVjdG9yXS5CaXRzLkdhdGVUeXBlICAgPSBJQTMyX0lEVF9HQVRFX1RZ UEVfVEFTSzsNCj4gKyAgICBJZHRUYWJsZVtWZWN0b3JdLkJpdHMuT2Zmc2V0SGlnaCA9IDA7DQo+ ICsgIH0NCj4gKw0KPiArICAvLw0KPiArICAvLyBQdWJsaXNoIHRoZSBjaGFuZ2VzDQo+ICsgIC8v DQo+ICsgIEFzbVdyaXRlR2R0cigmR2R0RGVzYyk7DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8gTG9h ZCB0YXNrIHJlZ2lzdGVyDQo+ICsgIC8vDQo+ICsgIEFzbVdyaXRlVHIgKChVSU5UMTYpKE9sZEdk dFNpemUgKyBUU1NfU0VMKSk7DQo+ICt9DQo+ICsNCj4gIC8qKg0KPiAgICBEaXNwbGF5IHByb2Nl c3NvciBjb250ZXh0Lg0KPg0KPiBkaWZmIC0tZ2l0DQo+IGEvVWVmaUNwdVBrZy9MaWJyYXJ5L0Nw dUV4Y2VwdGlvbkhhbmRsZXJMaWIvSWEzMi9BcmNoSW50ZXJydXB0RGVmcy5oDQo+IGIvVWVmaUNw dVBrZy9MaWJyYXJ5L0NwdUV4Y2VwdGlvbkhhbmRsZXJMaWIvSWEzMi9BcmNoSW50ZXJydXB0RGVm cy5oDQo+IGluZGV4IGE4ZDM1NTZhODAuLjc3Y2M2Zjk5MTkgMTAwNjQ0DQo+IC0tLSBhL1VlZmlD cHVQa2cvTGlicmFyeS9DcHVFeGNlcHRpb25IYW5kbGVyTGliL0lhMzIvQXJjaEludGVycnVwdERl ZnMuaA0KPiArKysgYi9VZWZpQ3B1UGtnL0xpYnJhcnkvQ3B1RXhjZXB0aW9uSGFuZGxlckxpYi9J YTMyL0FyY2hJbnRlcnJ1cHREZWZzLmgNCj4gQEAgLTQxLDQgKzQxLDE0MCBAQCB0eXBlZGVmIHN0 cnVjdCB7DQo+ICAgIFVJTlQ4ICAgICAgIEhvb2tBZnRlclN0dWJIZWFkZXJDb2RlW0hPT0tBRlRF Ul9TVFVCX1NJWkVdOw0KPiAgfSBSRVNFUlZFRF9WRUNUT1JTX0RBVEE7DQo+DQo+ICsjcHJhZ21h IHBhY2sgKDEpDQo+ICsNCj4gKyNkZWZpbmUgRVhDRVBUSU9OX0xJU1RfTUFYICAgICAgICAgIDcN Cj4gKyNkZWZpbmUgRVhDRVBUSU9OX1NUQUNLX1NJWkUgICAgICAgIEVGSV9QQUdFX1NJWkUNCj4g KyNkZWZpbmUgSUEzMl9HRFRfVFlQRV9UU1MgICAgICAgICAgIDB4ODkNCj4gKyNkZWZpbmUgSUEz Ml9HRFRfQUxJR05NRU5UICAgICAgICAgIDgNCj4gKw0KPiArLy8NCj4gKy8vIElBMzIgVFNTIERl ZmluaXRpb24NCj4gKy8vDQo+ICt0eXBlZGVmIHN0cnVjdCB7DQo+ICsgIFVJTlQxNiAgICBQcmV2 aW91c1Rhc2tMaW5rOyAvLyAwMA0KPiArICBVSU5UMTYgICAgUmVzZXJ2ZWRfMjsNCj4gKyAgVUlO VDMyICAgIEVTUDA7ICAgICAgICAgICAgIC8vIDA0DQo+ICsgIFVJTlQxNiAgICBTUzA7ICAgICAg ICAgICAgICAvLyAwOA0KPiArICBVSU5UMTYgICAgUmVzZXJ2ZWRfMTA7DQo+ICsgIFVJTlQzMiAg ICBFU1AxOyAgICAgICAgICAgICAvLyAwQw0KPiArICBVSU5UMTYgICAgU1MxOyAgICAgICAgICAg ICAgLy8gMTANCj4gKyAgVUlOVDE2ICAgIFJlc2VydmVkXzE4Ow0KPiArICBVSU5UMzIgICAgRVNQ MjsgICAgICAgICAgICAgLy8gMTQNCj4gKyAgVUlOVDE2ICAgIFNTMjsgICAgICAgICAgICAgIC8v IDE4DQo+ICsgIFVJTlQxNiAgICBSZXNlcnZlZF8yNjsNCj4gKyAgVUlOVDMyICAgIENSMzsgICAg ICAgICAgICAgIC8vIDFDDQo+ICsgIFVJTlQzMiAgICBFSVA7ICAgICAgICAgICAgICAvLyAyMA0K PiArICBVSU5UMzIgICAgRUZMQUdTOyAgICAgICAgICAgLy8gMjQNCj4gKyAgVUlOVDMyICAgIEVB WDsgICAgICAgICAgICAgIC8vIDI4DQo+ICsgIFVJTlQzMiAgICBFQ1g7ICAgICAgICAgICAgICAv LyAyQw0KPiArICBVSU5UMzIgICAgRURYOyAgICAgICAgICAgICAgLy8gMzANCj4gKyAgVUlOVDMy ICAgIEVCWDsgICAgICAgICAgICAgIC8vIDM0DQo+ICsgIFVJTlQzMiAgICBFU1A7ICAgICAgICAg ICAgICAvLyAzOA0KPiArICBVSU5UMzIgICAgRUJQOw0KPiArICBVSU5UMzIgICAgRVNJOw0KPiAr ICBVSU5UMzIgICAgRURJOw0KPiArICBVSU5UMTYgICAgRVM7DQo+ICsgIFVJTlQxNiAgICBSZXNl cnZlZF83NDsNCj4gKyAgVUlOVDE2ICAgIENTOw0KPiArICBVSU5UMTYgICAgUmVzZXJ2ZWRfNzg7 DQo+ICsgIFVJTlQxNiAgICBTUzsNCj4gKyAgVUlOVDE2ICAgIFJlc2VydmVkXzgyOw0KPiArICBV SU5UMTYgICAgRFM7DQo+ICsgIFVJTlQxNiAgICBSZXNlcnZlZF84NjsNCj4gKyAgVUlOVDE2ICAg IEZTOw0KPiArICBVSU5UMTYgICAgUmVzZXJ2ZWRfOTA7DQo+ICsgIFVJTlQxNiAgICBHUzsNCj4g KyAgVUlOVDE2ICAgIFJlc2VydmVkXzk0Ow0KPiArICBVSU5UMTYgICAgTERUU2VnbWVudFNlbGVj dG9yOw0KPiArICBVSU5UMTYgICAgUmVzZXJ2ZWRfOTg7DQo+ICsgIFVJTlQxNiAgICBUOw0KPiAr ICBVSU5UMTYgICAgSU9NYXBCYXNlQWRkcmVzczsNCj4gK30gSUEzMl9UQVNLX1NUQVRFX1NFR01F TlQ7DQo+ICsNCj4gK3R5cGVkZWYgc3RydWN0IHsNCj4gKyAgVUlOVDE2ICAgIExpbWl0MTVfMDsN Cj4gKyAgVUlOVDE2ICAgIEJhc2UxNV8wOw0KPiArICBVSU5UOCAgICAgQmFzZTIzXzE2Ow0KPiAr ICBVSU5UOCAgICAgVHlwZTsNCj4gKyAgVUlOVDggICAgIExpbWl0MTlfMTZfYW5kX2ZsYWdzOw0K PiArICBVSU5UOCAgICAgQmFzZTMxXzI0Ow0KPiArfSBJQTMyX1RTU19ERVNDUklQVE9SOw0KPiAr DQo+ICt0eXBlZGVmIHN0cnVjdCB7DQo+ICsgIElBMzJfVFNTX0RFU0NSSVBUT1IgICAgICAgICAg IFRzc1NlZzsNCj4gKyAgSUEzMl9UU1NfREVTQ1JJUFRPUiAgICAgICAgICAgRXhjZXB0aW9uVHNz U2VnW0VYQ0VQVElPTl9MSVNUX01BWF07DQo+ICsgIElBMzJfVEFTS19TVEFURV9TRUdNRU5UICAg ICAgIFRzczsNCj4gKyAgSUEzMl9UQVNLX1NUQVRFX1NFR01FTlQgICAgICAgRXhjZXB0aW9uVHNz W0VYQ0VQVElPTl9MSVNUX01BWF07DQo+ICt9IFRTU19FTlRSSUVTOw0KPiArDQo+ICsjcHJhZ21h IHBhY2sgKCkNCj4gKw0KPiArI2RlZmluZSBUU1NfU0VMICAgICAgICAgICAgICAgT0ZGU0VUX09G IChUU1NfRU5UUklFUywgVHNzU2VnKQ0KPiArI2RlZmluZSBFWENFUFRJT05fVFNTX1NFTChuKSAg T0ZGU0VUX09GIChUU1NfRU5UUklFUywNCj4gRXhjZXB0aW9uVHNzU2VnW25dKQ0KPiArI2RlZmlu ZSBUU1NfT0ZGU0VUICAgICAgICAgICAgT0ZGU0VUX09GIChUU1NfRU5UUklFUywgVHNzKQ0KPiAr DQo+ICt0eXBlZGVmIFZPSUQgKCpFWENFUFRJT05fRU5UUlkpIChWT0lEKTsNCj4gKw0KPiArdHlw ZWRlZiBzdHJ1Y3Qgew0KPiArICBVSU5UTiAgICAgICAgICAgICBWZWN0b3I7DQo+ICsgIEVYQ0VQ VElPTl9FTlRSWSAgIEVudHJ5UG9pbnQ7DQo+ICt9IElBMzJfRVhDRVBUSU9OX1RTX0VOVFJZOw0K PiArDQo+ICsvKioNCj4gKyBFeGNlcHRpb24gaGFuZGxpbmcgZW50cnkgdGhyb3VnaCB0YXNrIGdh dGUgZm9yIGV4Y2VwdGlvbiAjVUQuDQo+ICsgKiovDQo+ICtWT0lEDQo+ICtFeGNlcHRpb25UYXNr U3d0aWNoRW50cnk2ICgNCj4gKyAgVk9JRA0KPiArICApOw0KPiArDQo+ICsvKioNCj4gKyBFeGNl cHRpb24gaGFuZGxpbmcgZW50cnkgdGhyb3VnaCB0YXNrIGdhdGUgZm9yIGV4Y2VwdGlvbiAjREYu DQo+ICsgKiovDQo+ICtWT0lEDQo+ICtFeGNlcHRpb25UYXNrU3d0aWNoRW50cnk4ICgNCj4gKyAg Vk9JRA0KPiArICApOw0KPiArDQo+ICsvKioNCj4gKyBFeGNlcHRpb24gaGFuZGxpbmcgZW50cnkg dGhyb3VnaCB0YXNrIGdhdGUgZm9yIGV4Y2VwdGlvbiAjU1MuDQo+ICsgKiovDQo+ICtWT0lEDQo+ ICtFeGNlcHRpb25UYXNrU3d0aWNoRW50cnkxMiAoDQo+ICsgIFZPSUQNCj4gKyAgKTsNCj4gKw0K PiArLyoqDQo+ICsgRXhjZXB0aW9uIGhhbmRsaW5nIGVudHJ5IHRocm91Z2ggdGFzayBnYXRlIGZv ciBleGNlcHRpb24gI0dQLg0KPiArICoqLw0KPiArVk9JRA0KPiArRXhjZXB0aW9uVGFza1N3dGlj aEVudHJ5MTMgKA0KPiArICBWT0lEDQo+ICsgICk7DQo+ICsNCj4gKy8qKg0KPiArIEV4Y2VwdGlv biBoYW5kbGluZyBlbnRyeSB0aHJvdWdoIHRhc2sgZ2F0ZSBmb3IgZXhjZXB0aW9uICNQRi4NCj4g KyAqKi8NCj4gK1ZPSUQNCj4gK0V4Y2VwdGlvblRhc2tTd3RpY2hFbnRyeTE0ICgNCj4gKyAgVk9J RA0KPiArICApOw0KPiArDQo+ICsvKioNCj4gKyBFeGNlcHRpb24gaGFuZGxpbmcgZW50cnkgdGhy b3VnaCB0YXNrIGdhdGUgZm9yIGV4Y2VwdGlvbiAjQUMuDQo+ICsgKiovDQo+ICtWT0lEDQo+ICtF eGNlcHRpb25UYXNrU3d0aWNoRW50cnkxNyAoDQo+ICsgIFZPSUQNCj4gKyAgKTsNCj4gKw0KPiAr LyoqDQo+ICsgRXhjZXB0aW9uIGhhbmRsaW5nIGVudHJ5IHRocm91Z2ggdGFzayBnYXRlIGZvciBl eGNlcHRpb24gI01DLg0KPiArICoqLw0KPiArVk9JRA0KPiArRXhjZXB0aW9uVGFza1N3dGljaEVu dHJ5MTggKA0KPiArICBWT0lEDQo+ICsgICk7DQo+ICsNCj4gICNlbmRpZg0KPiBkaWZmIC0tZ2l0 DQo+IGEvVWVmaUNwdVBrZy9MaWJyYXJ5L0NwdUV4Y2VwdGlvbkhhbmRsZXJMaWIvSWEzMi9FeGNl cHRpb25Uc3NFbnRyeUFzbS5uYXMNCj4gbQ0KPiBiL1VlZmlDcHVQa2cvTGlicmFyeS9DcHVFeGNl cHRpb25IYW5kbGVyTGliL0lhMzIvRXhjZXB0aW9uVHNzRW50cnlBc20ubmFzDQo+IG0NCj4gbmV3 IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMC4uZGJmYmNmY2Y1MQ0KPiAtLS0g L2Rldi9udWxsDQo+ICsrKw0KPiBiL1VlZmlDcHVQa2cvTGlicmFyeS9DcHVFeGNlcHRpb25IYW5k bGVyTGliL0lhMzIvRXhjZXB0aW9uVHNzRW50cnlBc20ubmFzDQo+IG0NCj4gQEAgLTAsMCArMSwz OTggQEANCj4gKzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gOw0KPiArOyBDb3B5cmlnaHQgKGMpIDIw MTcsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gKzsgVGhp cyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiArOyBhcmUgbGljZW5z ZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0 aGUgQlNEDQo+IExpY2Vuc2UNCj4gKzsgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRp b24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZSBmb3VuZA0KPiBhdA0KPiAr OyBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwLg0KPiArOw0K PiArOyBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04g QU4gIkFTIElTIiBCQVNJUywNCj4gKzsgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFU SU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSIEVYUFJFU1MNCj4gT1IgSU1QTElFRC4NCj4gKzsNCj4g KzsgTW9kdWxlIE5hbWU6DQo+ICs7DQo+ICs7ICAgRXhjZXB0aW9uVHNzRW50cnlBc20uQXNtDQo+ ICs7DQo+ICs7IEFic3RyYWN0Og0KPiArOw0KPiArOyAgIElBMzIgQ1BVIEV4Y2VwdGlvbiBIYW5k bGVyIHdpdGggU2VwYXJhdGUgU3RhY2sNCj4gKzsNCj4gKzsgTm90ZXM6DQo+ICs7DQo+ICs7LS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tDQo+ICsNCj4gKzsNCj4gKzsgSUEzMiBUU1MgTWVtb3J5IExheW91 dCBEZXNjcmlwdGlvbg0KPiArOw0KPiArc3RydWMgSUEzMl9UU1MNCj4gKyAgICAgICAgICAgICAg ICAgICAgcmVzdyAxDQo+ICsgICAgICAgICAgICAgICAgICAgIHJlc3cgMQ0KPiArICAuRVNQMDog ICAgcmVzZCAxDQo+ICsgIC5TUzA6ICAgICByZXN3IDENCj4gKyAgICAgICAgICAgICAgICAgICAg cmVzdyAxDQo+ICsgIC5FU1AxOiAgICByZXNkIDENCj4gKyAgLlNTMTogICAgIHJlc3cgMQ0KPiAr ICAgICAgICAgICAgICAgICAgICByZXN3IDENCj4gKyAgLkVTUDI6ICAgIHJlc2QgMQ0KPiArICAu U1MyOiAgICAgcmVzdyAxDQo+ICsgICAgICAgICAgICAgICAgICAgIHJlc3cgMQ0KPiArICAuX0NS MzogICAgcmVzZCAxDQo+ICsgIC5FSVA6ICAgICByZXNkIDENCj4gKyAgLkVGTEFHUzogIHJlc2Qg MQ0KPiArICAuX0VBWDogICAgcmVzZCAxDQo+ICsgIC5fRUNYOiAgICByZXNkIDENCj4gKyAgLl9F RFg6ICAgIHJlc2QgMQ0KPiArICAuX0VCWDogICAgcmVzZCAxDQo+ICsgIC5fRVNQOiAgICByZXNk IDENCj4gKyAgLl9FQlA6ICAgIHJlc2QgMQ0KPiArICAuX0VTSTogICAgcmVzZCAxDQo+ICsgIC5f RURJOiAgICByZXNkIDENCj4gKyAgLl9FUzogICAgIHJlc3cgMQ0KPiArICAgICAgICAgICAgICAg ICAgICByZXN3IDENCj4gKyAgLl9DUzogICAgIHJlc3cgMQ0KPiArICAgICAgICAgICAgICAgICAg ICByZXN3IDENCj4gKyAgLl9TUzogICAgIHJlc3cgMQ0KPiArICAgICAgICAgICAgICAgICAgICBy ZXN3IDENCj4gKyAgLl9EUzogICAgIHJlc3cgMQ0KPiArICAgICAgICAgICAgICAgICAgICByZXN3 IDENCj4gKyAgLl9GUzogICAgIHJlc3cgMQ0KPiArICAgICAgICAgICAgICAgICAgICByZXN3IDEN Cj4gKyAgLl9HUzogICAgIHJlc3cgMQ0KPiArICAgICAgICAgICAgICAgICAgICByZXN3IDENCj4g KyAgLkxEVDogICAgIHJlc3cgMQ0KPiArICAgICAgICAgICAgICAgICAgICByZXN3IDENCj4gKyAg ICAgICAgICAgICAgICAgICAgcmVzdyAxDQo+ICsgICAgICAgICAgICAgICAgICAgIHJlc3cgMQ0K PiArZW5kc3RydWMNCj4gKw0KPiArOw0KPiArOyBDb21tb25FeGNlcHRpb25IYW5kbGVyKCkNCj4g KzsNCj4gK2V4dGVybiBBU01fUEZYKENvbW1vbkV4Y2VwdGlvbkhhbmRsZXIpDQo+ICsNCj4gK1NF Q1RJT04gLmRhdGENCj4gKw0KPiArU0VDVElPTiAudGV4dA0KPiArDQo+ICtBTElHTiAgIDgNCj4g Kw0KPiArOw0KPiArOyBleGNlcHRpb24gaGFuZGxlciBzdHViIHRhYmxlDQo+ICs7DQo+ICslbWFj cm8gRGVmRXhjZXB0aW9uVGFza1N3dGljaEVudHJ5IDENCj4gKyUlRG9JcmV0Og0KPiArICAgIGly ZXRkDQo+ICsNCj4gK2dsb2JhbCBBU01fUEZYKEV4Y2VwdGlvblRhc2tTd3RpY2hFbnRyeSUxKQ0K PiArQVNNX1BGWChFeGNlcHRpb25UYXNrU3d0aWNoRW50cnklMSk6DQo+ICsgICAgZGIgICAgICAw eDZhICAgICAgICA7IHB1c2ggICNWZWN0b3JOdW0NCj4gKyAgICBkYiAgICAgICUxICAgICAgICAg IDsgVmVjdG9yTnVtDQo+ICsgICAgbW92ICAgICBlYXgsIEFTTV9QRlgoQ29tbW9uVGFza1N3dGlj aEVudHJ5UG9pbnQpDQo+ICsgICAgY2FsbCAgICBlYXgNCj4gKyAgICBtb3YgICAgIGVzcCwgZWF4 ICAgIDsgUmVzdG9yZSBzdGFjayB0b3ANCj4gKyAgICBqbXAgICAgICUlRG9JcmV0DQo+ICslZW5k bWFjcm8NCj4gKw0KPiArZ2xvYmFsIEFTTV9QRlgoQ29tbW9uVGFza1N3dGljaEVudHJ5UG9pbnQp DQo+ICtBU01fUEZYKENvbW1vblRhc2tTd3RpY2hFbnRyeVBvaW50KToNCj4gKyAgICA7DQo+ICsg ICAgOyBTdGFjazoNCj4gKyAgICA7ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0rIDwtLSBFQlAgLSA4 DQo+ICsgICAgOyArICAgICAgIFRTUyBCYXNlICAgICAgKw0KPiArICAgIDsgKy0tLS0tLS0tLS0t LS0tLS0tLS0tLSsgPC0tIEVCUCAtIDQNCj4gKyAgICA7ICsgICAgICBDUFVJRC5FRFggICAgICAr DQo+ICsgICAgOyArLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyA8LS0gRUJQDQo+ICsgICAgOyArICAg ICAgICAgRUlQICAgICAgICAgKw0KPiArICAgIDsgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgPC0t IEVCUCArIDQNCj4gKyAgICA7ICsgICAgVmVjdG9yIE51bWJlciAgICArDQo+ICsgICAgOyArLS0t LS0tLS0tLS0tLS0tLS0tLS0tKyA8LS0gRUJQICsgOA0KPiArICAgIDsgKyAgICBFcnJvciBDb2Rl ICAgICAgICsNCj4gKyAgICA7ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0rDQo+ICsgICAgOw0KPiAr Ow0KPiArOyBHZXQgVFNTIG9mIGludGVycnVwdGVkIHRhc2sNCj4gKzsNCj4gKyAgICBtb3YgICAg IGVicCwgZXNwICAgICAgICAgICAgICAgICAgICA7IFN0YWNrIGZyYW1lDQo+ICsNCj4gKzsgVXNl IENQVUlEIHRvIGRldGVybWluZSBpZiBGWFNBVkUvRlhSRVNUT1IgYW5kIERFIGFyZSBzdXBwb3J0 ZWQNCj4gKyAgICBtb3YgICAgIGVheCwgMQ0KPiArICAgIGNwdWlkDQo+ICsgICAgcHVzaCAgICBl ZHgNCj4gKw0KPiArOyBHZXQgVFNTIGJhc2Ugb2YgaW50ZXJydXB0ZWQgdGFzayB0aHJvdWdoIFBy ZXZpb3VzVGFza0xpbmsgZmllbGQgaW4NCj4gKzsgY3VycmVudCBUU1MgYmFzZQ0KPiArICAgIHN1 YiAgICAgZXNwLCA4DQo+ICsgICAgc2dkdCAgICBbZXNwICsgMl0NCj4gKyAgICBtb3YgICAgIGVh eCwgW2VzcCArIDRdICAgICAgICAgICAgICA7IEdEVCBiYXNlDQo+ICsgICAgYWRkICAgICBlc3As IDgNCj4gKw0KPiArICAgIHhvciAgICAgZWJ4LCBlYngNCj4gKyAgICBzdHIgICAgIGJ4ICAgICAg ICAgICAgICAgICAgICAgICAgICA7IEN1cnJlbnQgVFINCj4gKw0KPiArICAgIG1vdiAgICAgZWN4 LCBbZWF4ICsgZWJ4ICsgMl0NCj4gKyAgICBzaGwgICAgIGVjeCwgOA0KPiArICAgIG1vdiAgICAg Y2wsIFtlYXggKyBlYnggKyA3XQ0KPiArICAgIHJvciAgICAgZWN4LCA4ICAgICAgICAgICAgICAg ICAgICAgIDsgZWN4ID0gQ3VycmVudCBUU1MgYmFzZQ0KPiArICAgIHB1c2ggICAgZWN4ICAgICAg ICAgICAgICAgICAgICAgICAgIDsga2VlcCBpdCBpbiBzdGFjayBmb3IgbGF0ZXIgdXNlDQo+ICsN Cj4gKyAgICBtb3Z6eCAgIGVieCwgd29yZCBbZWN4XSAgICAgICAgICAgICA7IFByZXZpb3VzIFRh c2sgTGluaw0KPiArICAgIG1vdiAgICAgZWN4LCBbZWF4ICsgZWJ4ICsgMl0NCj4gKyAgICBzaGwg ICAgIGVjeCwgOA0KPiArICAgIG1vdiAgICAgY2wsIFtlYXggKyBlYnggKyA3XQ0KPiArICAgIHJv ciAgICAgZWN4LCA4ICAgICAgICAgICAgICAgICAgICAgIDsgZWN4ID0gUHJldmlvdXMgVFNTIGJh c2UNCj4gKw0KPiArOw0KPiArOyBBbGlnbiBzdGFjayB0byBtYWtlIHN1cmUgdGhhdCBFRklfRlhf U0FWRV9TVEFURV9JQTMyIG9mDQo+IEVGSV9TWVNURU1fQ09OVEVYVF9JQTMyDQo+ICs7IGlzIDE2 LWJ5dGUgYWxpZ25lZA0KPiArOw0KPiArICAgIGFuZCAgICAgZXNwLCAweGZmZmZmZmYwDQo+ICsg ICAgc3ViICAgICBlc3AsIDEyDQo+ICsNCj4gKzs7IFVJTlQzMiAgRWRpLCBFc2ksIEVicCwgRXNw LCBFYngsIEVkeCwgRWN4LCBFYXg7DQo+ICsgICAgcHVzaCAgICBkd29yZCBbZWN4ICsgSUEzMl9U U1MuX0VBWF0NCj4gKyAgICBwdXNoICAgIGR3b3JkIFtlY3ggKyBJQTMyX1RTUy5fRUNYXQ0KPiAr ICAgIHB1c2ggICAgZHdvcmQgW2VjeCArIElBMzJfVFNTLl9FRFhdDQo+ICsgICAgcHVzaCAgICBk d29yZCBbZWN4ICsgSUEzMl9UU1MuX0VCWF0NCj4gKyAgICBwdXNoICAgIGR3b3JkIFtlY3ggKyBJ QTMyX1RTUy5fRVNQXQ0KPiArICAgIHB1c2ggICAgZHdvcmQgW2VjeCArIElBMzJfVFNTLl9FQlBd DQo+ICsgICAgcHVzaCAgICBkd29yZCBbZWN4ICsgSUEzMl9UU1MuX0VTSV0NCj4gKyAgICBwdXNo ICAgIGR3b3JkIFtlY3ggKyBJQTMyX1RTUy5fRURJXQ0KPiArDQo+ICs7OyBVSU5UMzIgIEdzLCBG cywgRXMsIERzLCBDcywgU3M7DQo+ICsgICAgbW92enggICBlYXgsIHdvcmQgW2VjeCArIElBMzJf VFNTLl9TU10NCj4gKyAgICBwdXNoICAgIGVheA0KPiArICAgIG1vdnp4ICAgZWF4LCB3b3JkIFtl Y3ggKyBJQTMyX1RTUy5fQ1NdDQo+ICsgICAgcHVzaCAgICBlYXgNCj4gKyAgICBtb3Z6eCAgIGVh eCwgd29yZCBbZWN4ICsgSUEzMl9UU1MuX0RTXQ0KPiArICAgIHB1c2ggICAgZWF4DQo+ICsgICAg bW92enggICBlYXgsIHdvcmQgW2VjeCArIElBMzJfVFNTLl9FU10NCj4gKyAgICBwdXNoICAgIGVh eA0KPiArICAgIG1vdnp4ICAgZWF4LCB3b3JkIFtlY3ggKyBJQTMyX1RTUy5fRlNdDQo+ICsgICAg cHVzaCAgICBlYXgNCj4gKyAgICBtb3Z6eCAgIGVheCwgd29yZCBbZWN4ICsgSUEzMl9UU1MuX0dT XQ0KPiArICAgIHB1c2ggICAgZWF4DQo+ICsNCj4gKzs7IFVJTlQzMiAgRWlwOw0KPiArICAgIHB1 c2ggICAgZHdvcmQgW2VjeCArIElBMzJfVFNTLkVJUF0NCj4gKw0KPiArOzsgVUlOVDMyICBHZHRy WzJdLCBJZHRyWzJdOw0KPiArICAgIHN1YiAgICAgZXNwLCA4DQo+ICsgICAgc2lkdCAgICBbZXNw XQ0KPiArICAgIG1vdiAgICAgZWF4LCBbZXNwICsgMl0NCj4gKyAgICB4Y2hnICAgIGVheCwgW2Vz cF0NCj4gKyAgICBhbmQgICAgIGVheCwgMHhGRkZGDQo+ICsgICAgbW92ICAgICBbZXNwKzRdLCBl YXgNCj4gKw0KPiArICAgIHN1YiAgICAgZXNwLCA4DQo+ICsgICAgc2dkdCAgICBbZXNwXQ0KPiAr ICAgIG1vdiAgICAgZWF4LCBbZXNwICsgMl0NCj4gKyAgICB4Y2hnICAgIGVheCwgW2VzcF0NCj4g KyAgICBhbmQgICAgIGVheCwgMHhGRkZGDQo+ICsgICAgbW92ICAgICBbZXNwKzRdLCBlYXgNCj4g Kw0KPiArOzsgVUlOVDMyICBMZHRyLCBUcjsNCj4gKyAgICBtb3YgICAgIGVheCwgZWJ4ICAgIDsg ZWJ4IHN0aWxsIGtlZXBzIHNlbGVjdG9yIG9mIGludGVycnVwdGVkIHRhc2sNCj4gKyAgICBwdXNo ICAgIGVheA0KPiArICAgIG1vdnp4ICAgZWF4LCB3b3JkIFtlY3ggKyBJQTMyX1RTUy5MRFRdDQo+ ICsgICAgcHVzaCAgICBlYXgNCj4gKw0KPiArOzsgVUlOVDMyICBFRmxhZ3M7DQo+ICsgICAgcHVz aCAgICBkd29yZCBbZWN4ICsgSUEzMl9UU1MuRUZMQUdTXQ0KPiArDQo+ICs7OyBVSU5UMzIgIENy MCwgQ3IxLCBDcjIsIENyMywgQ3I0Ow0KPiArICAgIG1vdiAgICAgZWF4LCBjcjQNCj4gKyAgICBw dXNoICAgIGVheCAgICAgICAgICAgICA7IHB1c2ggY3I0IGZpcnN0bHkNCj4gKw0KPiArICAgIG1v diAgICAgZWR4LCBbZWJwIC0gNF0gIDsgY3B1aWQuZWR4DQo+ICsgICAgdGVzdCAgICBlZHgsIEJJ VDI0ICAgICAgOyBUZXN0IGZvciBGWFNBVkUvRlhSRVNUT1Igc3VwcG9ydA0KPiArICAgIGp6ICAg ICAgLjENCj4gKyAgICBvciAgICAgIGVheCwgQklUOSAgICAgICA7IFNldCBDUjQuT1NGWFNSDQo+ ICsuMToNCj4gKyAgICB0ZXN0ICAgIGVkeCwgQklUMiAgICAgICA7IFRlc3QgZm9yIERlYnVnZ2lu ZyBFeHRlbnNpb25zIHN1cHBvcnQNCj4gKyAgICBqeiAgICAgIC4yDQo+ICsgICAgb3IgICAgICBl YXgsIEJJVDMgICAgICAgOyBTZXQgQ1I0LkRFDQo+ICsuMjoNCj4gKyAgICBtb3YgICAgIGNyNCwg ZWF4DQo+ICsNCj4gKyAgICBtb3YgICAgIGVheCwgY3IzDQo+ICsgICAgcHVzaCAgICBlYXgNCj4g KyAgICBtb3YgICAgIGVheCwgY3IyDQo+ICsgICAgcHVzaCAgICBlYXgNCj4gKyAgICB4b3IgICAg IGVheCwgZWF4DQo+ICsgICAgcHVzaCAgICBlYXgNCj4gKyAgICBtb3YgICAgIGVheCwgY3IwDQo+ ICsgICAgcHVzaCAgICBlYXgNCj4gKw0KPiArOzsgVUlOVDMyICBEcjAsIERyMSwgRHIyLCBEcjMs IERyNiwgRHI3Ow0KPiArICAgIG1vdiAgICAgZWF4LCBkcjcNCj4gKyAgICBwdXNoICAgIGVheA0K PiArICAgIG1vdiAgICAgZWF4LCBkcjYNCj4gKyAgICBwdXNoICAgIGVheA0KPiArICAgIG1vdiAg ICAgZWF4LCBkcjMNCj4gKyAgICBwdXNoICAgIGVheA0KPiArICAgIG1vdiAgICAgZWF4LCBkcjIN Cj4gKyAgICBwdXNoICAgIGVheA0KPiArICAgIG1vdiAgICAgZWF4LCBkcjENCj4gKyAgICBwdXNo ICAgIGVheA0KPiArICAgIG1vdiAgICAgZWF4LCBkcjANCj4gKyAgICBwdXNoICAgIGVheA0KPiAr DQo+ICs7OyBGWF9TQVZFX1NUQVRFX0lBMzIgRnhTYXZlU3RhdGU7DQo+ICs7OyBDbGVhciBUUyBi aXQgaW4gQ1IwIHRvIGF2b2lkIERldmljZSBOb3QgQXZhaWxhYmxlIEV4Y2VwdGlvbiAoI05NKQ0K PiArOzsgd2hlbiBleGVjdXRpbmcgZnhzYXZlL2Z4cnN0b3IgaW5zdHJ1Y3Rpb24NCj4gKyAgICB0 ZXN0ICAgIGVkeCwgQklUMjQgIDsgVGVzdCBmb3IgRlhTQVZFL0ZYUkVTVE9SIHN1cHBvcnQuDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICA7IGVkeCBzdGlsbCBjb250YWlucyByZXN1bHQgZnJv bSBDUFVJRCBhYm92ZQ0KPiArICAgIGp6ICAgICAgLjMNCj4gKyAgICBjbHRzDQo+ICsgICAgc3Vi ICAgICBlc3AsIDUxMg0KPiArICAgIG1vdiAgICAgZWRpLCBlc3ANCj4gKyAgICBkYiAgICAgIDB4 ZiwgMHhhZSwgMHg3IDtmeHNhdmUgW2VkaV0NCj4gKy4zOg0KPiArDQo+ICs7OyBVSU5UMzIgIEV4 Y2VwdGlvbkRhdGE7DQo+ICsgICAgcHVzaCAgICBkd29yZCBbZWJwICsgOF0NCj4gKw0KPiArOzsg VUVGSSBjYWxsaW5nIGNvbnZlbnRpb24gZm9yIElBMzIgcmVxdWlyZXMgdGhhdCBEaXJlY3Rpb24g ZmxhZyBpbiBFRkxBR3MgaXMgY2xlYXINCj4gKyAgICBjbGQNCj4gKw0KPiArOzsgY2FsbCBpbnRv IGV4Y2VwdGlvbiBoYW5kbGVyDQo+ICsgICAgbW92ICAgICBlc2ksIGVjeCAgICAgICAgICAgIDsg S2VlcCBUU1MgYmFzZSB0byBhdm9pZCBvdmVyd3JpdGUNCj4gKyAgICBtb3YgICAgIGVheCwgQVNN X1BGWChDb21tb25FeGNlcHRpb25IYW5kbGVyKQ0KPiArDQo+ICs7OyBQcmVwYXJlIHBhcmFtZXRl ciBhbmQgY2FsbA0KPiArICAgIG1vdiAgICAgZWR4LCBlc3ANCj4gKyAgICBwdXNoICAgIGVkeCAg ICAgICAgICAgICAgICAgOyBFRklfU1lTVEVNX0NPTlRFWFQNCj4gKyAgICBwdXNoICAgIGR3b3Jk IFtlYnAgKyA0XSAgICAgOyBFRklfRVhDRVBUSU9OX1RZUEUgKHZlY3RvciBudW1iZXIpDQo+ICsN Cj4gKyAgICA7DQo+ICsgICAgOyBDYWxsIEV4dGVybmFsIEV4Y2VwdGlvbiBIYW5kbGVyDQo+ICsg ICAgOw0KPiArICAgIGNhbGwgICAgZWF4DQo+ICsgICAgYWRkICAgICBlc3AsIDggICAgICAgICAg ICAgIDsgUmVzdG9yZSBzdGFjayBiZWZvcmUgY2FsbGluZw0KPiArICAgIG1vdiAgICAgZWN4LCBl c2kgICAgICAgICAgICA7IFJlc3RvcmUgVFNTIGJhc2UNCj4gKw0KPiArOzsgVUlOVDMyICBFeGNl cHRpb25EYXRhOw0KPiArICAgIGFkZCAgICAgZXNwLCA0DQo+ICsNCj4gKzs7IEZYX1NBVkVfU1RB VEVfSUEzMiBGeFNhdmVTdGF0ZTsNCj4gKyAgICBtb3YgICAgIGVkeCwgW2VicCAtIDRdICA7IGNw dWlkLmVkeA0KPiArICAgIHRlc3QgICAgZWR4LCBCSVQyNCAgICAgIDsgVGVzdCBmb3IgRlhTQVZF L0ZYUkVTVE9SIHN1cHBvcnQNCj4gKyAgICBqeiAgICAgIC40DQo+ICsgICAgbW92ICAgICBlc2ks IGVzcA0KPiArICAgIGRiICAgICAgMHhmLCAweGFlLCAweGUgIDsgZnhyc3RvciBbZXNpXQ0KPiAr LjQ6DQo+ICsgICAgYWRkICAgICBlc3AsIDUxMg0KPiArDQo+ICs7OyBVSU5UMzIgIERyMCwgRHIx LCBEcjIsIERyMywgRHI2LCBEcjc7DQo+ICs7OyBTa2lwIHJlc3RvcmF0aW9uIG9mIERSeCByZWdp c3RlcnMgdG8gc3VwcG9ydCBkZWJ1Z2dlcnMNCj4gKzs7IHRoYXQgc2V0IGJyZWFrcG9pbnRzIGlu IGludGVycnVwdC9leGNlcHRpb24gY29udGV4dA0KPiArICAgIGFkZCAgICAgZXNwLCA0ICogNg0K PiArDQo+ICs7OyBVSU5UMzIgIENyMCwgQ3IxLCBDcjIsIENyMywgQ3I0Ow0KPiArICAgIHBvcCAg ICAgZWF4DQo+ICsgICAgbW92ICAgICBjcjAsIGVheA0KPiArICAgIGFkZCAgICAgZXNwLCA0ICAg IDsgbm90IGZvciBDcjENCj4gKyAgICBwb3AgICAgIGVheA0KPiArICAgIG1vdiAgICAgY3IyLCBl YXgNCj4gKyAgICBwb3AgICAgIGVheA0KPiArICAgIG1vdiAgICAgZHdvcmQgW2VjeCArIElBMzJf VFNTLl9DUjNdLCBlYXgNCj4gKyAgICBwb3AgICAgIGVheA0KPiArICAgIG1vdiAgICAgY3I0LCBl YXgNCj4gKw0KPiArOzsgVUlOVDMyICBFRmxhZ3M7DQo+ICsgICAgcG9wICAgICBkd29yZCBbZWN4 ICsgSUEzMl9UU1MuRUZMQUdTXQ0KPiArICAgIG1vdiAgICAgZWJ4LCBkd29yZCBbZWN4ICsgSUEz Ml9UU1MuRUZMQUdTXQ0KPiArICAgIGJ0ciAgICAgZWJ4LCA5ICAgICAgOyBEbyAnY2xpJw0KPiAr ICAgIG1vdiAgICAgZHdvcmQgW2VjeCArIElBMzJfVFNTLkVGTEFHU10sIGVieA0KPiArDQo+ICs7 OyBVSU5UMzIgIExkdHIsIFRyOw0KPiArOzsgVUlOVDMyICBHZHRyWzJdLCBJZHRyWzJdOw0KPiAr OzsgQmVzdCBub3QgbGV0IGFueW9uZSBtZXNzIHdpdGggdGhlc2UgcGFydGljdWxhciByZWdpc3Rl cnMuLi4NCj4gKyAgICBhZGQgICAgIGVzcCwgMjQNCj4gKw0KPiArOzsgVUlOVDMyICBFaXA7DQo+ ICsgICAgcG9wICAgICBkd29yZCBbZWN4ICsgSUEzMl9UU1MuRUlQXQ0KPiArDQo+ICs7OyBVSU5U MzIgIEdzLCBGcywgRXMsIERzLCBDcywgU3M7DQo+ICs7OyBOT1RFIC0gbW9kaWZpZWQgc2VnbWVu dCByZWdpc3RlcnMgY291bGQgaGFuZyB0aGUgZGVidWdnZXIuLi4gIFdlDQo+ICs7OyAgICAgICAg Y291bGQgYXR0ZW1wdCB0byBpbnN1bGF0ZSBvdXJzZWx2ZXMgYWdhaW5zdCB0aGlzIHBvc3NpYmls aXR5LA0KPiArOzsgICAgICAgIGJ1dCB0aGF0IHBvc2VzIHJpc2tzIGFzIHdlbGwuDQo+ICs7Ow0K PiArICAgIHBvcCAgICAgZWF4DQo+ICtvMTYgbW92ICAgICBbZWN4ICsgSUEzMl9UU1MuX0dTXSwg YXgNCj4gKyAgICBwb3AgICAgIGVheA0KPiArbzE2IG1vdiAgICAgW2VjeCArIElBMzJfVFNTLl9G U10sIGF4DQo+ICsgICAgcG9wICAgICBlYXgNCj4gK28xNiBtb3YgICAgIFtlY3ggKyBJQTMyX1RT Uy5fRVNdLCBheA0KPiArICAgIHBvcCAgICAgZWF4DQo+ICtvMTYgbW92ICAgICBbZWN4ICsgSUEz Ml9UU1MuX0RTXSwgYXgNCj4gKyAgICBwb3AgICAgIGVheA0KPiArbzE2IG1vdiAgICAgW2VjeCAr IElBMzJfVFNTLl9DU10sIGF4DQo+ICsgICAgcG9wICAgICBlYXgNCj4gK28xNiBtb3YgICAgIFtl Y3ggKyBJQTMyX1RTUy5fU1NdLCBheA0KPiArDQo+ICs7OyBVSU5UMzIgIEVkaSwgRXNpLCBFYnAs IEVzcCwgRWJ4LCBFZHgsIEVjeCwgRWF4Ow0KPiArICAgIHBvcCAgICAgZHdvcmQgW2VjeCArIElB MzJfVFNTLl9FREldDQo+ICsgICAgcG9wICAgICBkd29yZCBbZWN4ICsgSUEzMl9UU1MuX0VTSV0N Cj4gKyAgICBhZGQgICAgIGVzcCwgNCAgIDsgbm90IGZvciBlYnANCj4gKyAgICBhZGQgICAgIGVz cCwgNCAgIDsgbm90IGZvciBlc3ANCj4gKyAgICBwb3AgICAgIGR3b3JkIFtlY3ggKyBJQTMyX1RT Uy5fRUJYXQ0KPiArICAgIHBvcCAgICAgZHdvcmQgW2VjeCArIElBMzJfVFNTLl9FRFhdDQo+ICsg ICAgcG9wICAgICBkd29yZCBbZWN4ICsgSUEzMl9UU1MuX0VDWF0NCj4gKyAgICBwb3AgICAgIGR3 b3JkIFtlY3ggKyBJQTMyX1RTUy5fRUFYXQ0KPiArDQo+ICs7IFNldCBzaW5nbGUgc3RlcCBEQiMg dG8gYWxsb3cgZGVidWdnZXIgdG8gYWJsZSB0byBnbyBiYWNrIHRvIHRoZSBFSVANCj4gKzsgd2hl cmUgdGhlIGV4Y2VwdGlvbiBpcyB0cmlnZ2VyZWQuDQo+ICsNCj4gKzs7IENyZWF0ZSByZXR1cm4g Y29udGV4dCBmb3IgaXJldGQgaW4gc3R1YiBmdW5jdGlvbg0KPiArICAgIG1vdiAgICBlYXgsIGR3 b3JkIFtlY3ggKyBJQTMyX1RTUy5fRVNQXSAgICAgIDsgR2V0IG9sZCBzdGFjayBwb2ludGVyDQo+ ICsgICAgbW92ICAgIGVieCwgZHdvcmQgW2VjeCArIElBMzJfVFNTLkVJUF0NCj4gKyAgICBtb3Yg ICAgW2VheCAtIDB4Y10sIGVieCAgICAgICAgICAgICAgICAgICAgICA7IGNyZWF0ZSBFSVAgaW4g b2xkIHN0YWNrDQo+ICsgICAgbW92enggIGVieCwgd29yZCBbZWN4ICsgSUEzMl9UU1MuX0NTXQ0K PiArICAgIG1vdiAgICBbZWF4IC0gMHg4XSwgZWJ4ICAgICAgICAgICAgICAgICAgICAgIDsgY3Jl YXRlIENTIGluIG9sZCBzdGFjaw0KPiArICAgIG1vdiAgICBlYngsIGR3b3JkIFtlY3ggKyBJQTMy X1RTUy5FRkxBR1NdDQo+ICsgICAgYnRzICAgIGVieCwgOA0KPiArICAgIG1vdiAgICBbZWF4IC0g MHg0XSwgZWJ4ICAgICAgICAgICAgICAgICAgICAgIDsgY3JlYXRlIGVmbGFncyBpbiBvbGQgc3Rh Y2sNCj4gKyAgICBtb3YgICAgZHdvcmQgW2VjeCArIElBMzJfVFNTLkVGTEFHU10sIGVieCAgICA7 IHVwZGF0ZSBlZmxhZ3MgaW4gb2xkIFRTUw0KPiArICAgIG1vdiAgICBlYXgsIGR3b3JkIFtlY3gg KyBJQTMyX1RTUy5fRVNQXSAgICAgIDsgR2V0IG9sZCBzdGFjayBwb2ludGVyDQo+ICsgICAgc3Vi ICAgIGVheCwgMHhjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBtaW51cyAxMiBieXRl DQo+ICsgICAgbW92ICAgIGR3b3JkIFtlY3ggKyBJQTMyX1RTUy5fRVNQXSwgZWF4ICAgICAgOyBT ZXQgbmV3IHN0YWNrIHBvaW50ZXINCj4gKw0KPiArOzsgUmVwbGFjZSB0aGUgRUlQIG9mIGludGVy cnVwdGVkIHRhc2sgd2l0aCBzdHViIGZ1bmN0aW9uDQo+ICsgICAgbW92ICAgIGVheCwgQVNNX1BG WChTaW5nbGVTdGVwU3R1YkZ1bmN0aW9uKQ0KPiArICAgIG1vdiAgICBkd29yZCBbZWN4ICsgSUEz Ml9UU1MuRUlQXSwgZWF4DQo+ICsNCj4gKyAgICBtb3YgICAgIGVjeCwgW2VicCAtIDhdICAgICAg ICAgICAgICAgICAgICAgICA7IEdldCBjdXJyZW50IFRTUyBiYXNlDQo+ICsgICAgbW92ICAgICBl YXgsIGR3b3JkIFtlY3ggKyBJQTMyX1RTUy5fRVNQXSAgICAgOyBSZXR1cm4gY3VycmVudCBzdGFj ayB0b3ANCj4gKyAgICBtb3YgICAgIGVzcCwgZWJwDQo+ICsNCj4gKyAgICByZXQNCj4gKw0KPiAr Z2xvYmFsIEFTTV9QRlgoU2luZ2xlU3RlcFN0dWJGdW5jdGlvbikNCj4gK0FTTV9QRlgoU2luZ2xl U3RlcFN0dWJGdW5jdGlvbik6DQo+ICs7DQo+ICs7IHdlIG5lZWQgY2xlYW4gVFMgYml0IGluIENS MCB0byBleGVjdXRlDQo+ICs7IHg4NyBGUFUvTU1YL1NTRS9TU0UyL1NTRTMvU1NTRTMvU1NFNCBp bnN0cnVjdGlvbnMuDQo+ICs7DQo+ICsgICAgY2x0cw0KPiArICAgIGlyZXRkDQo+ICsNCj4gKzst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gKzsgVk9JRA0KPiArOyBBc21Xcml0ZVRyICgNCj4gKzsg ICBVSU5UMTYgU2VsZWN0b3INCj4gKzsgICApOw0KPiArOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0K PiArZ2xvYmFsIEFTTV9QRlgoQXNtV3JpdGVUcikNCj4gK0FTTV9QRlgoQXNtV3JpdGVUcik6DQo+ ICsgICAgbW92ICAgICBlYXgsIFtlc3ArNF0NCj4gKyAgICBsdHIgICAgIGF4DQo+ICsgICAgcmV0 DQo+ICsNCj4gK0RlZkV4Y2VwdGlvblRhc2tTd3RpY2hFbnRyeSA2DQo+ICtEZWZFeGNlcHRpb25U YXNrU3d0aWNoRW50cnkgOA0KPiArRGVmRXhjZXB0aW9uVGFza1N3dGljaEVudHJ5IDEyDQo+ICtE ZWZFeGNlcHRpb25UYXNrU3d0aWNoRW50cnkgMTMNCj4gK0RlZkV4Y2VwdGlvblRhc2tTd3RpY2hF bnRyeSAxNA0KPiArRGVmRXhjZXB0aW9uVGFza1N3dGljaEVudHJ5IDE3DQo+ICtEZWZFeGNlcHRp b25UYXNrU3d0aWNoRW50cnkgMTgNCj4gKw0KPiBkaWZmIC0tZ2l0DQo+IGEvVWVmaUNwdVBrZy9M aWJyYXJ5L0NwdUV4Y2VwdGlvbkhhbmRsZXJMaWIvUGVpQ3B1RXhjZXB0aW9uSGFuZGxlckxpYi5p bmYNCj4gYi9VZWZpQ3B1UGtnL0xpYnJhcnkvQ3B1RXhjZXB0aW9uSGFuZGxlckxpYi9QZWlDcHVF eGNlcHRpb25IYW5kbGVyTGliLmluZg0KPiBpbmRleCA3NTQ0MzI4OGE5Li40YzBkNDM1MTM2IDEw MDY0NA0KPiAtLS0NCj4gYS9VZWZpQ3B1UGtnL0xpYnJhcnkvQ3B1RXhjZXB0aW9uSGFuZGxlckxp Yi9QZWlDcHVFeGNlcHRpb25IYW5kbGVyTGliLmluZg0KPiArKysNCj4gYi9VZWZpQ3B1UGtnL0xp YnJhcnkvQ3B1RXhjZXB0aW9uSGFuZGxlckxpYi9QZWlDcHVFeGNlcHRpb25IYW5kbGVyTGliLmlu Zg0KPiBAQCAtMzAsNiArMzAsNyBAQA0KPiAgW1NvdXJjZXMuSWEzMl0NCj4gICAgSWEzMi9FeGNl cHRpb25IYW5kbGVyQXNtLmFzbQ0KPiAgICBJYTMyL0V4Y2VwdGlvbkhhbmRsZXJBc20ubmFzbQ0K PiArICBJYTMyL0V4Y2VwdGlvblRzc0VudHJ5QXNtLm5hc20NCj4gICAgSWEzMi9FeGNlcHRpb25I YW5kbGVyQXNtLlMNCj4gICAgSWEzMi9BcmNoRXhjZXB0aW9uSGFuZGxlci5jDQo+ICAgIElhMzIv QXJjaEludGVycnVwdERlZnMuaA0KPiBkaWZmIC0tZ2l0DQo+IGEvVWVmaUNwdVBrZy9MaWJyYXJ5 L0NwdUV4Y2VwdGlvbkhhbmRsZXJMaWIvU2VjUGVpQ3B1RXhjZXB0aW9uSGFuZGxlckxpYi5pDQo+ IG5mDQo+IGIvVWVmaUNwdVBrZy9MaWJyYXJ5L0NwdUV4Y2VwdGlvbkhhbmRsZXJMaWIvU2VjUGVp Q3B1RXhjZXB0aW9uSGFuZGxlckxpYi5pDQo+IG5mDQo+IGluZGV4IGQ3MGE5OWMxMDAuLmFkYjQx NWJhNWEgMTAwNjQ0DQo+IC0tLQ0KPiBhL1VlZmlDcHVQa2cvTGlicmFyeS9DcHVFeGNlcHRpb25I YW5kbGVyTGliL1NlY1BlaUNwdUV4Y2VwdGlvbkhhbmRsZXJMaWIuaQ0KPiBuZg0KPiArKysNCj4g Yi9VZWZpQ3B1UGtnL0xpYnJhcnkvQ3B1RXhjZXB0aW9uSGFuZGxlckxpYi9TZWNQZWlDcHVFeGNl cHRpb25IYW5kbGVyTGliLmkNCj4gbmYNCj4gQEAgLTMwLDYgKzMwLDcgQEANCj4gIFtTb3VyY2Vz LklhMzJdDQo+ICAgIElhMzIvRXhjZXB0aW9uSGFuZGxlckFzbS5hc20NCj4gICAgSWEzMi9FeGNl cHRpb25IYW5kbGVyQXNtLm5hc20NCj4gKyAgSWEzMi9FeGNlcHRpb25Uc3NFbnRyeUFzbS5uYXNt DQo+ICAgIElhMzIvRXhjZXB0aW9uSGFuZGxlckFzbS5TDQo+ICAgIElhMzIvQXJjaEV4Y2VwdGlv bkhhbmRsZXIuYw0KPiAgICBJYTMyL0FyY2hJbnRlcnJ1cHREZWZzLmgNCj4gQEAgLTU3LDMgKzU4 LDUgQEANCj4gICAgUHJpbnRMaWINCj4gICAgTG9jYWxBcGljTGliDQo+ICAgIFBlQ29mZkdldEVu dHJ5UG9pbnRMaWINCj4gKyAgTWVtb3J5QWxsb2NhdGlvbkxpYg0KPiArDQo+IGRpZmYgLS1naXQN Cj4gYS9VZWZpQ3B1UGtnL0xpYnJhcnkvQ3B1RXhjZXB0aW9uSGFuZGxlckxpYi9TbW1DcHVFeGNl cHRpb25IYW5kbGVyTGliLmluZg0KPiBiL1VlZmlDcHVQa2cvTGlicmFyeS9DcHVFeGNlcHRpb25I YW5kbGVyTGliL1NtbUNwdUV4Y2VwdGlvbkhhbmRsZXJMaWIuaW5mDQo+IGluZGV4IDYzNGZmY2Iy MWQuLjU2Yjg3NWI3YzggMTAwNjQ0DQo+IC0tLQ0KPiBhL1VlZmlDcHVQa2cvTGlicmFyeS9DcHVF eGNlcHRpb25IYW5kbGVyTGliL1NtbUNwdUV4Y2VwdGlvbkhhbmRsZXJMaWIuaW5mDQo+ICsrKw0K PiBiL1VlZmlDcHVQa2cvTGlicmFyeS9DcHVFeGNlcHRpb25IYW5kbGVyTGliL1NtbUNwdUV4Y2Vw dGlvbkhhbmRsZXJMaWIuaW5mDQo+IEBAIC0zMCw2ICszMCw3IEBADQo+ICBbU291cmNlcy5JYTMy XQ0KPiAgICBJYTMyL0V4Y2VwdGlvbkhhbmRsZXJBc20uYXNtDQo+ICAgIElhMzIvRXhjZXB0aW9u SGFuZGxlckFzbS5uYXNtDQo+ICsgIElhMzIvRXhjZXB0aW9uVHNzRW50cnlBc20ubmFzbQ0KPiAg ICBJYTMyL0V4Y2VwdGlvbkhhbmRsZXJBc20uUw0KPiAgICBJYTMyL0FyY2hFeGNlcHRpb25IYW5k bGVyLmMNCj4gICAgSWEzMi9BcmNoSW50ZXJydXB0RGVmcy5oDQo+IGRpZmYgLS1naXQNCj4gYS9V ZWZpQ3B1UGtnL0xpYnJhcnkvQ3B1RXhjZXB0aW9uSGFuZGxlckxpYi9YNjQvQXJjaEV4Y2VwdGlv bkhhbmRsZXIuYw0KPiBiL1VlZmlDcHVQa2cvTGlicmFyeS9DcHVFeGNlcHRpb25IYW5kbGVyTGli L1g2NC9BcmNoRXhjZXB0aW9uSGFuZGxlci5jDQo+IGluZGV4IDY1ZjBjZmY2ODAuLjI0ZjJhODQ4 NmEgMTAwNjQ0DQo+IC0tLSBhL1VlZmlDcHVQa2cvTGlicmFyeS9DcHVFeGNlcHRpb25IYW5kbGVy TGliL1g2NC9BcmNoRXhjZXB0aW9uSGFuZGxlci5jDQo+ICsrKyBiL1VlZmlDcHVQa2cvTGlicmFy eS9DcHVFeGNlcHRpb25IYW5kbGVyTGliL1g2NC9BcmNoRXhjZXB0aW9uSGFuZGxlci5jDQo+IEBA IC0xNCw2ICsxNCwxOSBAQA0KPg0KPiAgI2luY2x1ZGUgIkNwdUV4Y2VwdGlvbkNvbW1vbi5oIg0K Pg0KPiArLy8NCj4gKy8vIExpc3Qgb2YgZXhjZXB0aW9ucyBuZWVkaW5nIHNlcGFyYXRlIHN0YWNr DQo+ICsvLw0KPiArU1RBVElDIFVJTlROICBtRXhjZXB0aW9uc1dpdGhTdGFja1tdID0gew0KPiAr ICA2LCAgLy8jVUQ6IEludmFsaWQgT3Bjb2RlIEV4Y2VwdGlvbg0KPiArICA4LCAgLy8jREY6IERv dWJsZSBGYXVsdCBFeGNlcHRpb24NCj4gKyAgMTIsIC8vI1NTOiBTdGFjayBGYXVsdCBFeGNlcHRp b24NCj4gKyAgMTMsIC8vI0dQOiBHZW5lcmFsIFByb3RlY3Rpb24gRXhjZXB0aW9uDQo+ICsgIDE0 LCAvLyNQRjogUGFnZS1GYXVsdCBFeGNlcHRpb24NCj4gKyAgMTcsIC8vI0FDOiBBbGlnbm1lbnQg Q2hlY2sgRXhjZXB0aW9uDQo+ICsgIDE4ICAvLyNNQzogTWFjaGluZS1DaGVjayBFeGNlcHRpb24N Cj4gKyAgfTsNCj4gKw0KPiAgLyoqDQo+ICAgIFJldHVybiBhZGRyZXNzIG1hcCBvZiBleGNlcHRp b24gaGFuZGxlciB0ZW1wbGF0ZSBzbyB0aGF0IEMgY29kZSBjYW4NCj4gZ2VuZXJhdGUNCj4gICAg ZXhjZXB0aW9uIHRhYmxlcy4NCj4gQEAgLTExMiw2ICsxMjUsMTAxIEBAIEFyY2hSZXN0b3JlRXhj ZXB0aW9uQ29udGV4dCAoDQo+ICAgIFN5c3RlbUNvbnRleHQuU3lzdGVtQ29udGV4dFg2NC0+RXhj ZXB0aW9uRGF0YSA9DQo+IFJlc2VydmVkVmVjdG9yc1tFeGNlcHRpb25UeXBlXS5FeGNlcHRpb25E YXRhOw0KPiAgfQ0KPg0KPiArLyoqDQo+ICsgIFNldHVwIHNlcGFyYXRlIHN0YWNrIGZvciBzcGVj aWZpYyBleGNlcHRpb25zLg0KPiArDQo+ICsgIEBwYXJhbVtpbl0gSWR0VGFibGUgICAgICAgIElE VCB0YWJsZSBiYXNlLg0KPiArKiovDQo+ICtWT0lEDQo+ICtFRklBUEkNCj4gK0FyY2hTZXR1cEV4 Y3BldGlvblN0YWNrICgNCj4gKyAgSU4gSUEzMl9JRFRfR0FURV9ERVNDUklQVE9SICAgICAgICAg ICAqSWR0VGFibGUNCj4gKyAgKQ0KPiArew0KPiArICBWT0lEICAgICAgICAgICAgICAgICAgICAg ICpOZXdHZHQ7DQo+ICsgIElBMzJfREVTQ1JJUFRPUiAgICAgICAgICAgR2R0RGVzYzsNCj4gKyAg VUlOVE4gICAgICAgICAgICAgICAgICAgICBPbGRHZHRTaXplOw0KPiArICBUU1NfRU5UUklFUyAg ICAgICAgICAgICAgICpUc3NFbnRyeTsNCj4gKyAgVUlOVE4gICAgICAgICAgICAgICAgICAgICBT dGFja0Jhc2U7DQo+ICsgIFVJTlROICAgICAgICAgICAgICAgICAgICAgU3RhY2tUb3A7DQo+ICsg IFVJTlROICAgICAgICAgICAgICAgICAgICAgU3RhY2tTaXplOw0KPiArICBVSU5UTiAgICAgICAg ICAgICAgICAgICAgIFRzc0Jhc2U7DQo+ICsgIFVJTlROICAgICAgICAgICAgICAgICAgICAgSW5k ZXg7DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8gQWxsb2NhdGUgUnVudGltZSBEYXRhIGZvciB0aGUg R0RUDQo+ICsgIC8vDQo+ICsgIEFzbVJlYWRHZHRyKCZHZHREZXNjKTsNCj4gKyAgT2xkR2R0U2l6 ZSA9IEdkdERlc2MuTGltaXQgKyAxOw0KPiArICBOZXdHZHQgPSBBbGxvY2F0ZVJ1bnRpbWVaZXJv UG9vbChPbGRHZHRTaXplICsgc2l6ZW9mKFRTU19FTlRSSUVTKQ0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICArIElBMzJfR0RUX0FMSUdOTUVOVCk7DQo+ICsgIGlmIChOZXdHZHQg PT0gTlVMTCkgew0KPiArICAgIHJldHVybjsNCj4gKyAgfQ0KPiArICBOZXdHZHQgPSBBTElHTl9Q T0lOVEVSIChOZXdHZHQsIElBMzJfR0RUX0FMSUdOTUVOVCk7DQo+ICsNCj4gKyAgLy8NCj4gKyAg Ly8gSW5pdGlhbGl6ZSBuZXcgR0RUIGVudHJpZXMNCj4gKyAgLy8NCj4gKyAgQ29weU1lbShOZXdH ZHQsIChWT0lEICopR2R0RGVzYy5CYXNlLCBPbGRHZHRTaXplKTsNCj4gKyAgR2R0RGVzYy5CYXNl ID0gKFVJTlROKShWT0lEKilOZXdHZHQ7DQo+ICsgIEdkdERlc2MuTGltaXQgPSAoVUlOVDE2KShP bGRHZHRTaXplICsgVFNTX09GRlNFVCAtIDEpOw0KPiArDQo+ICsgIC8vDQo+ICsgIC8vIFJlc2Vy dmUgc3RhdGNrIG1lbW9yeSBmb3Igc3VwcG9ydGVkIGV4Y2VwdGlvbnMNCj4gKyAgLy8NCj4gKyAg U3RhY2tTaXplID0gQVJSQVlfU0laRSAobUV4Y2VwdGlvbnNXaXRoU3RhY2spICogRVhDRVBUSU9O X1NUQUNLX1NJWkU7DQo+ICsgIFN0YWNrU2l6ZSA9IEVGSV9QQUdFU19UT19TSVpFIChFRklfU0la RV9UT19QQUdFUyAoU3RhY2tTaXplKSk7DQo+ICsgIFN0YWNrQmFzZSA9IChVSU5UNjQpQWxsb2Nh dGVQYWdlcyAoRUZJX1NJWkVfVE9fUEFHRVMgKFN0YWNrU2l6ZSkpOw0KPiArICBpZiAoU3RhY2tC YXNlID09IDApIHsNCj4gKyAgICBGcmVlUG9vbCAoTmV3R2R0KTsNCj4gKyAgICByZXR1cm47DQo+ ICsgIH0NCj4gKw0KPiArICAvLw0KPiArICAvLyBGaXh1cCBUU1MgZGVzY3JpcHRvcnMNCj4gKyAg Ly8NCj4gKyAgVHNzRW50cnkgPSAoVk9JRCAqKShHZHREZXNjLkJhc2UgKyBPbGRHZHRTaXplKTsN Cj4gKyAgVHNzQmFzZSA9IChVSU5UTikoVk9JRCAqKSZUc3NFbnRyeS0+VHNzOw0KPiArDQo+ICsg IFRzc0VudHJ5LT5Uc3NTZWcuTGltaXQxNV8wICAgICAgICAgICAgPQ0KPiBzaXplb2YoSUEzMl9U QVNLX1NUQVRFX1NFR01FTlQpIC0gMTsNCj4gKyAgVHNzRW50cnktPlRzc1NlZy5CYXNlMTVfMCAg ICAgICAgICAgICA9IChVSU5UMTYpVHNzQmFzZTsNCj4gKyAgVHNzRW50cnktPlRzc1NlZy5CYXNl MjNfMTYgICAgICAgICAgICA9IChVSU5UOCkoVHNzQmFzZSA+PiAxNik7DQo+ICsgIFRzc0VudHJ5 LT5Uc3NTZWcuVHlwZSAgICAgICAgICAgICAgICAgPSBJQTMyX0dEVF9UWVBFX1RTUzsNCj4gKyAg VHNzRW50cnktPlRzc1NlZy5MaW1pdDE5XzE2X2FuZF9mbGFncyA9IDA7DQo+ICsgIFRzc0VudHJ5 LT5Uc3NTZWcuQmFzZTMxXzI0ICAgICAgICAgICAgPSAoVUlOVDgpKFRzc0Jhc2UgPj4gMjQpOw0K PiArICBUc3NFbnRyeS0+VHNzU2VnLkJhc2U2M18zMiAgICAgICAgICAgID0gKFVJTlQzMikoVHNz QmFzZSA+PiAzMik7DQo+ICsgIFRzc0VudHJ5LT5Uc3NTZWcuUmVzZXJ2ZWQgICAgICAgICAgICAg PSAwOw0KPiArDQo+ICsgIC8vDQo+ICsgIC8vIEVuYWJsZSBJbnRlcnJ1cHQgU3RhY2sgVGFibGUg KElTVCkgZm9yIGVhY2ggcmVxdWlyZWQgZXhjZXB0aW9uDQo+ICsgIC8vDQo+ICsgIFN0YWNrVG9w ICA9IFN0YWNrQmFzZSArIFN0YWNrU2l6ZSAtIENQVV9TVEFDS19BTElHTk1FTlQ7DQo+ICsgIFN0 YWNrVG9wICA9IChVSU5UTilBTElHTl9QT0lOVEVSIChTdGFja1RvcCwgQ1BVX1NUQUNLX0FMSUdO TUVOVCk7DQo+ICsgIGZvciAoSW5kZXggPSAwOyBJbmRleCA8IEFSUkFZX1NJWkUgKG1FeGNlcHRp b25zV2l0aFN0YWNrKTsgKytJbmRleCkgew0KPiArICAgIC8vDQo+ICsgICAgLy8gRml4dXAgVFNT DQo+ICsgICAgLy8NCj4gKyAgICBUc3NFbnRyeS0+VHNzLklTVFtJbmRleF0gPSBTdGFja1RvcDsN Cj4gKyAgICBTdGFja1RvcCAtPSBFWENFUFRJT05fU1RBQ0tfU0laRTsNCj4gKw0KPiArICAgIC8v DQo+ICsgICAgLy8gU2V0IHRoZSBJU1QgZmllbGQgdG8gMSB0byBlbmFibGUgY29ycmVzcG9uZGlu ZyBJU1QNCj4gKyAgICAvLw0KPiArICAgIElkdFRhYmxlW21FeGNlcHRpb25zV2l0aFN0YWNrW0lu ZGV4XV0uQml0cy5SZXNlcnZlZF8wID0gKFVJTlQ4KShJbmRleCArDQo+IDEpOw0KPiArICB9DQo+ ICsNCj4gKyAgLy8NCj4gKyAgLy8gUHVibGlzaCB0aGUgY2hhbmdlcw0KPiArICAvLw0KPiArICBB c21Xcml0ZUdkdHIoJkdkdERlc2MpOw0KPiArDQo+ICsgIC8vDQo+ICsgIC8vIExvYWQgdGFzayBy ZWdpc3Rlcg0KPiArICAvLw0KPiArICBBc21Xcml0ZVRyICgoVUlOVDE2KShPbGRHZHRTaXplICsg VFNTX1NFTCkpOw0KPiArfQ0KPiArDQo+ICAvKioNCj4gICAgRGlzcGxheSBDUFUgaW5mb3JtYXRp b24uDQo+DQo+IGRpZmYgLS1naXQNCj4gYS9VZWZpQ3B1UGtnL0xpYnJhcnkvQ3B1RXhjZXB0aW9u SGFuZGxlckxpYi9YNjQvQXJjaEludGVycnVwdERlZnMuaA0KPiBiL1VlZmlDcHVQa2cvTGlicmFy eS9DcHVFeGNlcHRpb25IYW5kbGVyTGliL1g2NC9BcmNoSW50ZXJydXB0RGVmcy5oDQo+IGluZGV4 IDkwNjQ4MDEzNGEuLjVhOTEzYmFlN2IgMTAwNjQ0DQo+IC0tLSBhL1VlZmlDcHVQa2cvTGlicmFy eS9DcHVFeGNlcHRpb25IYW5kbGVyTGliL1g2NC9BcmNoSW50ZXJydXB0RGVmcy5oDQo+ICsrKyBi L1VlZmlDcHVQa2cvTGlicmFyeS9DcHVFeGNlcHRpb25IYW5kbGVyTGliL1g2NC9BcmNoSW50ZXJy dXB0RGVmcy5oDQo+IEBAIC00Myw0ICs0Myw0NCBAQCB0eXBlZGVmIHN0cnVjdCB7DQo+ICAgIFVJ TlQ4ICAgICAgIEhvb2tBZnRlclN0dWJIZWFkZXJDb2RlW0hPT0tBRlRFUl9TVFVCX1NJWkVdOw0K PiAgfSBSRVNFUlZFRF9WRUNUT1JTX0RBVEE7DQo+DQo+ICsjcHJhZ21hIHBhY2sgKDEpDQo+ICsN Cj4gKyNkZWZpbmUgRVhDRVBUSU9OX0xJU1RfTUFYICAgICAgICA3DQo+ICsjZGVmaW5lIEVYQ0VQ VElPTl9TVEFDS19TSVpFICAgICAgRUZJX1BBR0VfU0laRQ0KPiArI2RlZmluZSBJQTMyX0dEVF9U WVBFX1RTUyAgICAgICAgIDB4ODkNCj4gKyNkZWZpbmUgSUEzMl9HRFRfQUxJR05NRU5UICAgICAg ICA4DQo+ICsNCj4gK3R5cGVkZWYgc3RydWN0IHsNCj4gKyAgVUlOVDMyICAgIFJlc2VydmVkXzA7 DQo+ICsgIFVJTlQ2NCAgICBSU1AwOw0KPiArICBVSU5UNjQgICAgUlNQMTsNCj4gKyAgVUlOVDY0 ICAgIFJTUDI7DQo+ICsgIFVJTlQ2NCAgICBSZXNlcnZlZF8yODsNCj4gKyAgVUlOVDY0ICAgIElT VFs3XTsNCj4gKyAgVUlOVDY0ICAgIFJlc2VydmVkXzkyOw0KPiArICBVSU5UMTYgICAgUmVzZXJ2 ZWRfMTAwOw0KPiArICBVSU5UMTYgICAgSU9NYXBCYXNlQWRkcmVzczsNCj4gK30gSUEzMl9UQVNL X1NUQVRFX1NFR01FTlQ7DQo+ICsNCj4gK3R5cGVkZWYgc3RydWN0IHsNCj4gKyAgVUlOVDE2ICAg IExpbWl0MTVfMDsNCj4gKyAgVUlOVDE2ICAgIEJhc2UxNV8wOw0KPiArICBVSU5UOCAgICAgQmFz ZTIzXzE2Ow0KPiArICBVSU5UOCAgICAgVHlwZTsNCj4gKyAgVUlOVDggICAgIExpbWl0MTlfMTZf YW5kX2ZsYWdzOw0KPiArICBVSU5UOCAgICAgQmFzZTMxXzI0Ow0KPiArICBVSU5UMzIgICAgQmFz ZTYzXzMyOw0KPiArICBVSU5UMzIgICAgUmVzZXJ2ZWQ7DQo+ICt9IElBMzJfVFNTX0RFU0NSSVBU T1I7DQo+ICsNCj4gK3R5cGVkZWYgc3RydWN0IHsNCj4gKyAgSUEzMl9UU1NfREVTQ1JJUFRPUiAg ICAgICAgICAgVHNzU2VnOw0KPiArICBJQTMyX1RBU0tfU1RBVEVfU0VHTUVOVCAgICAgICBUc3M7 DQo+ICt9IFRTU19FTlRSSUVTOw0KPiArDQo+ICsjcHJhZ21hIHBhY2sgKCkNCj4gKw0KPiArI2Rl ZmluZSBUU1NfU0VMICAgICAgICAgICBPRkZTRVRfT0YgKFRTU19FTlRSSUVTLCBUc3NTZWcpDQo+ ICsjZGVmaW5lIFRTU19PRkZTRVQgICAgICAgIE9GRlNFVF9PRiAoVFNTX0VOVFJJRVMsIFRzcykN Cj4gKw0KPiAgI2VuZGlmDQo+IGRpZmYgLS1naXQNCj4gYS9VZWZpQ3B1UGtnL0xpYnJhcnkvQ3B1 RXhjZXB0aW9uSGFuZGxlckxpYi9YNjQvRXhjZXB0aW9uSGFuZGxlckFzbS5TDQo+IGIvVWVmaUNw dVBrZy9MaWJyYXJ5L0NwdUV4Y2VwdGlvbkhhbmRsZXJMaWIvWDY0L0V4Y2VwdGlvbkhhbmRsZXJB c20uUw0KPiBpbmRleCBlZGQzNjNjZGFhLi5iZGFmMTMyY2Y1IDEwMDY0NA0KPiAtLS0gYS9VZWZp Q3B1UGtnL0xpYnJhcnkvQ3B1RXhjZXB0aW9uSGFuZGxlckxpYi9YNjQvRXhjZXB0aW9uSGFuZGxl ckFzbS5TDQo+ICsrKw0KPiBiL1VlZmlDcHVQa2cvTGlicmFyeS9DcHVFeGNlcHRpb25IYW5kbGVy TGliL1g2NC9FeGNlcHRpb25IYW5kbGVyQXNtLlMNCj4gQEAgLTQyOSw2ICs0MjksMTggQEAgQVNN X1BGWChBc21WZWN0b3JOdW1GaXh1cCk6DQo+ICAgICAgcG9wcSAgICAgICVyYnANCj4gICAgICBy ZXQNCj4NCj4gKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gKyMgVk9JRA0KPiArIyBBc21Xcml0 ZVRyICgNCj4gKyMgICBVSU5UMTYgU2VsZWN0b3INCj4gKyMgICApOw0KPiArIy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQ0KPiArQVNNX0dMT0JBTCBBU01fUEZYKEFzbVdyaXRlVHIpDQo+ICtBU01fUEZY KEFzbVdyaXRlVHIpOg0KPiArICAgIG1vdmwgICAgJWVjeCwgJWVheA0KPiArICAgIGx0cncgICAg JWF4DQo+ICsgICAgcmV0DQo+ICsNCj4gICNFTkQNCj4NCj4NCj4gZGlmZiAtLWdpdA0KPiBhL1Vl ZmlDcHVQa2cvTGlicmFyeS9DcHVFeGNlcHRpb25IYW5kbGVyTGliL1g2NC9FeGNlcHRpb25IYW5k bGVyQXNtLmFzbQ0KPiBiL1VlZmlDcHVQa2cvTGlicmFyeS9DcHVFeGNlcHRpb25IYW5kbGVyTGli L1g2NC9FeGNlcHRpb25IYW5kbGVyQXNtLmFzbQ0KPiBpbmRleCA3MjZjNjRhMTQwLi5hZWM1NmVm NGJmIDEwMDY0NA0KPiAtLS0NCj4gYS9VZWZpQ3B1UGtnL0xpYnJhcnkvQ3B1RXhjZXB0aW9uSGFu ZGxlckxpYi9YNjQvRXhjZXB0aW9uSGFuZGxlckFzbS5hc20NCj4gKysrDQo+IGIvVWVmaUNwdVBr Zy9MaWJyYXJ5L0NwdUV4Y2VwdGlvbkhhbmRsZXJMaWIvWDY0L0V4Y2VwdGlvbkhhbmRsZXJBc20u YXNtDQo+IEBAIC0zODYsNCArMzg2LDE2IEBAIEFzbVZlY3Rvck51bUZpeHVwICAgUFJPQw0KPiAg ICAgIHJldA0KPiAgQXNtVmVjdG9yTnVtRml4dXAgICBFTkRQDQo+DQo+ICs7LS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tDQo+ICs7IFZPSUQNCj4gKzsgQXNtV3JpdGVUciAoDQo+ICs7ICAgVUlOVDE2IFNl bGVjdG9yDQo+ICs7ICAgKTsNCj4gKzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gK0FzbVdyaXRl VHIgUFJPQyBQVUJMSUMNCj4gKyAgICBtb3YgICAgIGVheCwgZWN4DQo+ICsgICAgbHRyICAgICBh eA0KPiArICAgIHJldA0KPiArQXNtV3JpdGVUciBFTkRQDQo+ICsNCj4gIEVORA0KPiBkaWZmIC0t Z2l0DQo+IGEvVWVmaUNwdVBrZy9MaWJyYXJ5L0NwdUV4Y2VwdGlvbkhhbmRsZXJMaWIvWDY0L0V4 Y2VwdGlvbkhhbmRsZXJBc20ubmFzbQ0KPiBiL1VlZmlDcHVQa2cvTGlicmFyeS9DcHVFeGNlcHRp b25IYW5kbGVyTGliL1g2NC9FeGNlcHRpb25IYW5kbGVyQXNtLm5hc20NCj4gaW5kZXggYmE4OTkz ZDg0Yi4uMWUyYWM0MTFiMCAxMDA2NDQNCj4gLS0tDQo+IGEvVWVmaUNwdVBrZy9MaWJyYXJ5L0Nw dUV4Y2VwdGlvbkhhbmRsZXJMaWIvWDY0L0V4Y2VwdGlvbkhhbmRsZXJBc20ubmFzbQ0KPiArKysN Cj4gYi9VZWZpQ3B1UGtnL0xpYnJhcnkvQ3B1RXhjZXB0aW9uSGFuZGxlckxpYi9YNjQvRXhjZXB0 aW9uSGFuZGxlckFzbS5uYXNtDQo+IEBAIC0zODUsMyArMzg1LDE1IEBAIEFTTV9QRlgoQXNtVmVj dG9yTnVtRml4dXApOg0KPiAgICAgIG1vdiAgICAgW3JjeCArIChAVmVjdG9yTnVtIC0gSG9va0Fm dGVyU3R1YkhlYWRlckJlZ2luKV0sIGFsDQo+ICAgICAgcmV0DQo+DQo+ICs7LS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tDQo+ICs7IFZPSUQNCj4gKzsgQXNtV3JpdGVUciAoDQo+ICs7ICAgVUlOVDE2IFNl bGVjdG9yDQo+ICs7ICAgKTsNCj4gKzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gK2dsb2JhbCBB U01fUEZYKEFzbVdyaXRlVHIpDQo+ICtBU01fUEZYKEFzbVdyaXRlVHIpOg0KPiArICAgIG1vdiAg ICAgZWF4LCBlY3gNCj4gKyAgICBsdHIgICAgIGF4DQo+ICsgICAgcmV0DQo+ICsNCj4gLS0NCj4g Mi4xNC4xLndpbmRvd3MuMQ0KDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXw0KZWRrMi1kZXZlbCBtYWlsaW5nIGxpc3QNCmVkazItZGV2ZWxAbGlzdHMuMDEu b3JnPG1haWx0bzplZGsyLWRldmVsQGxpc3RzLjAxLm9yZz4NCmh0dHBzOi8vbGlzdHMuMDEub3Jn L21haWxtYW4vbGlzdGluZm8vZWRrMi1kZXZlbA0KDQoNCg0K