From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=134.134.136.20; helo=mga02.intel.com; envelope-from=jian.j.wang@intel.com; receiver=edk2-devel@lists.01.org Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 83D05203525E2 for ; Tue, 31 Oct 2017 20:04:45 -0700 (PDT) Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by orsmga101.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 31 Oct 2017 20:08:35 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.44,326,1505804400"; d="scan'208,217";a="170313135" Received: from fmsmsx104.amr.corp.intel.com ([10.18.124.202]) by fmsmga006.fm.intel.com with ESMTP; 31 Oct 2017 20:08:35 -0700 Received: from fmsmsx111.amr.corp.intel.com (10.18.116.5) by fmsmsx104.amr.corp.intel.com (10.18.124.202) with Microsoft SMTP Server (TLS) id 14.3.319.2; Tue, 31 Oct 2017 20:08:34 -0700 Received: from shsmsx104.ccr.corp.intel.com (10.239.4.70) by fmsmsx111.amr.corp.intel.com (10.18.116.5) with Microsoft SMTP Server (TLS) id 14.3.319.2; Tue, 31 Oct 2017 20:08:33 -0700 Received: from shsmsx103.ccr.corp.intel.com ([169.254.4.213]) by SHSMSX104.ccr.corp.intel.com ([169.254.5.152]) with mapi id 14.03.0319.002; Wed, 1 Nov 2017 11:08:32 +0800 From: "Wang, Jian J" To: Fan Jeff , "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: AQHTUrSw7kMmlPjLfkaS9nSj0Ju2aqL+y3RDgAAGR9D//32YgIAAhq0g Date: Wed, 1 Nov 2017 03:08:31 +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: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiODBiZGU1MDYtNDZkZC00YzgwLThhNjAtZGJhZWIzMmM0N2E2IiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX0lDIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjIuNS4xOCIsIlRydXN0ZWRMYWJlbEhhc2giOiJzdWNDTVJZVzY4RXBKKzBHeHhCTjdDcHlGK2dkdDI5TUpLYWxkT1pOYnREVGJJR2ZOZ1VSSGRrYWF0SjZmRzdqIn0= x-ctpclassification: CTP_IC dlp-product: dlpe-windows dlp-version: 11.0.0.116 dlp-reaction: no-action x-originating-ip: [10.239.127.40] MIME-Version: 1.0 X-Content-Filtered-By: Mailman/MimeDel 2.1.22 Subject: Re: [PATCH 3/3] UefiCpuPkg/CpuExceptionHandlerLib: Add stack switch support 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:04:45 -0000 Content-Language: en-US Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: base64 SmVmZiwNCg0KU3RhY2sgZ3VhcmQgd2lsbCBzdGlsbCB3b3JrLiBCdXQgdGhlIGRldmVsb3BlciBj YW5ub3Qga25vdyB3aGF0oa9zIGdvaW5nIG9uIHdpdGhvdXQgZXhjZXB0aW9uIGR1bXBpbmcgbWVz c2FnZSB3aGVuIHN0YWNrIG92ZXJmbG93IG9jY3Vycy4NCg0KVGhhbmtzLA0KSmlhbg0KDQpGcm9t OiBGYW4gSmVmZiBbbWFpbHRvOnZhbmplZmZfOTE5QGhvdG1haWwuY29tXQ0KU2VudDogV2VkbmVz ZGF5LCBOb3ZlbWJlciAwMSwgMjAxNyAxMDo1OSBBTQ0KVG86IFdhbmcsIEppYW4gSiA8amlhbi5q LndhbmdAaW50ZWwuY29tPjsgWWFvLCBKaWV3ZW4gPGppZXdlbi55YW9AaW50ZWwuY29tPjsgZWRr Mi1kZXZlbEBsaXN0cy4wMS5vcmcNCkNjOiBLaW5uZXksIE1pY2hhZWwgRCA8bWljaGFlbC5kLmtp bm5leUBpbnRlbC5jb20+OyBEb25nLCBFcmljIDxlcmljLmRvbmdAaW50ZWwuY29tPjsgWmVuZywg U3RhciA8c3Rhci56ZW5nQGludGVsLmNvbT4NClN1YmplY3Q6ILTwuLQ6IFtQQVRDSCAzLzNdIFVl ZmlDcHVQa2cvQ3B1RXhjZXB0aW9uSGFuZGxlckxpYjogQWRkIHN0YWNrIHN3aXRjaCBzdXBwb3J0 DQoNCkppYW4sDQoNCk5vLiBJIHN1Z2dlc3QgdG8gZml4ICMxMDkgaW4gYW5vdGhlciBzZXBhcmF0 ZSBwYXRjaC4NCg0KQnV0IHRvIGZpeCAjMTA5LCB3ZSBoYXZlIHRvIG1ha2VzIHN1cmUgQXNtV3Jp dGVUcigpIGFuZCBzb21lIGRlZmluaXRpb25zIGFyZSBpbiBNZGVQa2cuDQpCdXQgSSBoYXZlIG5v IHN0cm9uZyBvcGluaW9uIHRvIGFkZCB0aGVtIGludG8gTWRlUGtnIGluIHRoaXMgcGF0Y2guDQoN CkkgaGF2ZSBhbm90aGVyIHF1ZXN0aW9uOiBJZiBOVUxMIENQVSBleGNlcHRpb24gaGFuZGxlciBp bnN0YW5jZSBpcyBjaG9zZW4sIGNvdWxkIFN0YWNrIFN3aXRjaCB3b3JrIGlmIFBDRCBQY2RDcHVT dGFja0d1YXJkIGlzIHNldCB0byBUUlVFLg0KDQpUaGFua3MhDQpKZWZmDQoNCreivP7IyzogV2Fu ZywgSmlhbiBKPG1haWx0bzpqaWFuLmoud2FuZ0BpbnRlbC5jb20+DQq3osvNyrG85DogMjAxN8Tq MTHUwjHI1SAxMDo0OA0KytW8/sjLOiBGYW4gSmVmZjxtYWlsdG86dmFuamVmZl85MTlAaG90bWFp bC5jb20+OyBZYW8sIEppZXdlbjxtYWlsdG86amlld2VuLnlhb0BpbnRlbC5jb20+OyBlZGsyLWRl dmVsQGxpc3RzLjAxLm9yZzxtYWlsdG86ZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmc+DQqzrcvNOiBL aW5uZXksIE1pY2hhZWwgRDxtYWlsdG86bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+OyBEb25n LCBFcmljPG1haWx0bzplcmljLmRvbmdAaW50ZWwuY29tPjsgWmVuZywgU3RhcjxtYWlsdG86c3Rh ci56ZW5nQGludGVsLmNvbT4NCtb3zOI6IFJFOiBbUEFUQ0ggMy8zXSBVZWZpQ3B1UGtnL0NwdUV4 Y2VwdGlvbkhhbmRsZXJMaWI6IEFkZCBzdGFjayBzd2l0Y2ggc3VwcG9ydA0KDQpIaSBKZWZmLA0K DQpUaGFua3MgZm9yIHRoZSBmZWVkYmFjay4gQXJlIHlvdSBzdWdnZXN0aW5nIHRvIGZpeCBCdWd6 aWxsYSAxMDkgaW4gdGhpcyBwYXRjaD8NCg0KVGhhbmtzLA0KSmlhbg0KDQpGcm9tOiBGYW4gSmVm ZiBbbWFpbHRvOnZhbmplZmZfOTE5QGhvdG1haWwuY29tXQ0KU2VudDogV2VkbmVzZGF5LCBOb3Zl bWJlciAwMSwgMjAxNyAxMDozMyBBTQ0KVG86IFlhbywgSmlld2VuIDxqaWV3ZW4ueWFvQGludGVs LmNvbTxtYWlsdG86amlld2VuLnlhb0BpbnRlbC5jb20+PjsgV2FuZywgSmlhbiBKIDxqaWFuLmou d2FuZ0BpbnRlbC5jb208bWFpbHRvOmppYW4uai53YW5nQGludGVsLmNvbT4+OyBlZGsyLWRldmVs QGxpc3RzLjAxLm9yZzxtYWlsdG86ZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmc+DQpDYzogS2lubmV5 LCBNaWNoYWVsIEQgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPG1haWx0bzptaWNoYWVsLmQu a2lubmV5QGludGVsLmNvbT4+OyBEb25nLCBFcmljIDxlcmljLmRvbmdAaW50ZWwuY29tPG1haWx0 bzplcmljLmRvbmdAaW50ZWwuY29tPj47IFplbmcsIFN0YXIgPHN0YXIuemVuZ0BpbnRlbC5jb208 bWFpbHRvOnN0YXIuemVuZ0BpbnRlbC5jb20+Pg0KU3ViamVjdDogtPC4tDogW1BBVENIIDMvM10g VWVmaUNwdVBrZy9DcHVFeGNlcHRpb25IYW5kbGVyTGliOiBBZGQgc3RhY2sgc3dpdGNoIHN1cHBv cnQNCg0KUGVyIGh0dHBzOi8vYnVnemlsbGEudGlhbm9jb3JlLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9 MTA5LCBUUiBzaG91bGQgYmUgc2V0dXAgKFN1Y2ggYXMgaW4gRHhlSXBsUGVpbSkgZXZlbiB0aG91 Z2ggTlVMTCBDcHUgRXhjZXB0aW9uIEhhbmRsZXIgaW5zdGFuY2UgaXMgY2hvc2VuLg0KDQpGb3Ig bG9uZyB0ZXJtLCBJIGFncmVlIHdlIG5lZWQgdG8gbW92ZSBBc21Xcml0ZVRyLCBJQTMyX1RBU0tf U1RBVEVfU0VHTUVOVCwgSUEzMl9UU1NfREVTQ1JJUFRPUiB0byBNZGVQa2coU3VjaCBhcyBCYXNl TGliKQ0KRm9yIHRoaXMgcGF0Y2gsIEkgaGF2ZSBubyBzdHJvbmcgb3Bpbmlvbi4NCg0KDQq3orz+ yMs6IFlhbywgSmlld2VuPG1haWx0bzpqaWV3ZW4ueWFvQGludGVsLmNvbT4NCreiy83KsbzkOiAy MDE3xOoxMdTCMcjVIDk6NTYNCsrVvP7IyzogV2FuZywgSmlhbiBKPG1haWx0bzpqaWFuLmoud2Fu Z0BpbnRlbC5jb20+OyBlZGsyLWRldmVsQGxpc3RzLjAxLm9yZzxtYWlsdG86ZWRrMi1kZXZlbEBs aXN0cy4wMS5vcmc+DQqzrcvNOiBLaW5uZXksIE1pY2hhZWwgRDxtYWlsdG86bWljaGFlbC5kLmtp bm5leUBpbnRlbC5jb20+OyBEb25nLCBFcmljPG1haWx0bzplcmljLmRvbmdAaW50ZWwuY29tPjsg WmVuZywgU3RhcjxtYWlsdG86c3Rhci56ZW5nQGludGVsLmNvbT4NCtb3zOI6IFJlOiBbZWRrMl0g W1BBVENIIDMvM10gVWVmaUNwdVBrZy9DcHVFeGNlcHRpb25IYW5kbGVyTGliOiBBZGQgc3RhY2sg c3dpdGNoIHN1cHBvcnQNCg0KSGkgSmlhbg0KVGhhbmtzIGZvciB0aGUgcGF0Y2guDQoNCkNhbiB3 ZSBtb3ZlIGFsbCBJQTMyIGRlZmluZWQgZGF0YSBzdHJ1Y3R1cmUgb3IgZnVuY3Rpb24gdG8gTWRl UGtnPw0KU3VjaCBhczogQXNtV3JpdGVUciwgSUEzMl9UQVNLX1NUQVRFX1NFR01FTlQsIElBMzJf VFNTX0RFU0NSSVBUT1INCg0KSSBhbSBhbHNvIGN1cmlvdXMgd2h5IHdlIHVzZSBkaWZmZXJlbnQg cG9saWN5IGZvciBvdGhlciBib290IG1vZGUuDQpDYW4gd2UgdXNlIGNvbnNpc3RlbnQgcG9saWN5 Pw0KPiArICBpZiAoUGNkR2V0Qm9vbCAoUGNkQ3B1U3RhY2tHdWFyZCkpIHsNCj4gKyAgICAvLw0K PiArICAgIC8vIFN0YWNrIEd1YXJkIHdvcmtzIHdpdGggdGhlIHN1cHBvcnQgb2YgcGFnZSB0YWJs ZSBlc3RhYmxpc2hlZCBhbmQNCj4gKyAgICAvLyBtZW1vcnkgbWFuYWdlbWVudC4gU28gd2UgaGF2 ZSB0byBleGNsdWRlIHRob3NlIGJvb3QgbW9kZXMNCj4gd2l0aG91dA0KPiArICAgIC8vIHRoZW0u DQo+ICsgICAgLy8NCj4gKyAgICBzd2l0Y2ggKEdldEJvb3RNb2RlSG9iKCkpIHsNCj4gKyAgICBj YXNlIEJPT1RfT05fRkxBU0hfVVBEQVRFOg0KPiArICAgIGNhc2UgQk9PVF9JTl9SRUNPVkVSWV9N T0RFOg0KPiArICAgIGNhc2UgQk9PVF9PTl9TM19SRVNVTUU6DQo+ICsgICAgICBicmVhazsNCj4g Kw0KPiArICAgIGRlZmF1bHQ6DQo+ICsgICAgICBBcmNoU2V0dXBFeGNwZXRpb25TdGFjayAoSWR0 VGFibGUpOw0KPiArICAgICAgYnJlYWs7DQo+ICsgICAgfQ0KPiArICB9DQoNCg0KVGhhbmsgeW91 DQpZYW8gSmlld2VuDQoNCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBX YW5nLCBKaWFuIEoNCj4gU2VudDogVHVlc2RheSwgT2N0b2JlciAzMSwgMjAxNyAxMDoyNCBQTQ0K PiBUbzogZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmc8bWFpbHRvOmVkazItZGV2ZWxAbGlzdHMuMDEu b3JnPg0KPiBDYzogWmVuZywgU3RhciA8c3Rhci56ZW5nQGludGVsLmNvbTxtYWlsdG86c3Rhci56 ZW5nQGludGVsLmNvbT4+OyBEb25nLCBFcmljIDxlcmljLmRvbmdAaW50ZWwuY29tPG1haWx0bzpl cmljLmRvbmdAaW50ZWwuY29tPj47IFlhbywNCj4gSmlld2VuIDxqaWV3ZW4ueWFvQGludGVsLmNv bTxtYWlsdG86amlld2VuLnlhb0BpbnRlbC5jb20+PjsgS2lubmV5LCBNaWNoYWVsIEQNCj4gPG1p Y2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPG1haWx0bzptaWNoYWVsLmQua2lubmV5QGludGVsLmNv bT4+DQo+IFN1YmplY3Q6IFtQQVRDSCAzLzNdIFVlZmlDcHVQa2cvQ3B1RXhjZXB0aW9uSGFuZGxl ckxpYjogQWRkIHN0YWNrIHN3aXRjaA0KPiBzdXBwb3J0DQo+DQo+IElmIFN0YWNrIEd1YXJkIGlz IGVuYWJsZWQgYW5kIHRoZXJlJ3MgcmVhbGx5IGEgc3RhY2sgb3ZlcmZsb3cgaGFwcGVuZWQgZHVy aW5nDQo+IGJvb3QsIGEgUGFnZSBGYXVsdCBleGNlcHRpb24gd2lsbCBiZSB0cmlnZ2VyZWQuIEJl Y2F1c2UgdGhlIHN0YWNrIGlzIG91dCBvZg0KPiB1c2FnZSwgdGhlIGV4Y2VwdGlvbiBoYW5kbGVy LCB3aGljaCBzaGFyZXMgdGhlIHN0YWNrIHdpdGggbm9ybWFsIFVFRkkgZHJpdmVyLA0KPiBjYW5u b3QgYmUgZXhlY3V0ZWQgYW5kIGNhbm5vdCBkdW1wIHRoZSBwcm9jZXNzb3IgaW5mb3JtYXRpb24u DQo+DQo+IFdpdGhvdXQgdGhvc2UgaW5mb3JtYXRpb24sIGl0J3MgdmVyeSBkaWZmaWN1bHQgZm9y IHRoZSBCSU9TIGRldmVsb3BlcnMgbG9jYXRlDQo+IHRoZSByb290IGNhdXNlIG9mIHN0YWNrIG92 ZXJmbG93LiBBbmQgd2l0aG91dCBhIHdvcmthYmxlIHN0YWNrLCB0aGUgZGV2ZWxvcGVyDQo+IGNh bm5vdCBldmVudCB1c2Ugc2luZ2xlIHN0ZXAgdG8gZGVidWcgdGhlIFVFRkkgZHJpdmVyIHdpdGgg SlRBRyBkZWJ1Z2dlci4NCj4NCj4gSW4gb3JkZXIgdG8gbWFrZSBzdXJlIHRoZSBleGNlcHRpb24g aGFuZGxlciB0byBleGVjdXRlIG5vcm1hbGx5IGFmdGVyIHN0YWNrDQo+IG92ZXJmbG93LiBXZSBu ZWVkIHNlcGFyYXRlIHN0YWNrcyBmb3IgZXhjZXB0aW9uIGhhbmRsZXJzIGluIGNhc2Ugb2YgdW51 c2FibGUNCj4gc3RhY2suDQo+DQo+IElBIHByb2Nlc3NvciBhbGxvd3MgdG8gc3dpdGNoIHRvIGEg bmV3IHN0YWNrIGR1cmluZyBoYW5kbGluZyBpbnRlcnJ1cHQgYW5kDQo+IGV4Y2VwdGlvbi4gQnV0 IFg2NCBhbmQgSUEzMiBwcm92aWRlcyBkaWZmZXJlbnQgd2F5cyB0byBtYWtlIGl0LiBYNjQgcHJv dmlkZXMNCj4gaW50ZXJydXB0IHN0YWNrIHRhYmxlIChJU1QpIHRvIGFsbG93IG1heGltdW0gNyBk aWZmZXJlbnQgZXhjZXB0aW9ucyB0byBoYXZlDQo+IG5ldyBzdGFjayBmb3IgaXRzIGhhbmRsZXIu IElBMzIgZG9lc24ndCBoYXZlIElTVCBtZWNoYW5pc20gYW5kIGNhbiBvbmx5IHVzZQ0KPiB0YXNr IGdhdGUgdG8gZG8gaXQgc2luY2UgdGFzayBzd2l0Y2ggYWxsb3dzIHRvIGxvYWQgYSBuZXcgc3Rh Y2sgdGhyb3VnaCBpdHMNCj4gdGFzay1zdGF0ZSBzZWdtZW50IChUU1MpLg0KPg0KPiBOb3RlOiBT dGFjayBzd2l0Y2ggbmVlZHMgdG8gYWxsb2NhdGUgbWVtb3J5IHBhZ2VzIHRvIGJlIG5ldyBzdGFj a3MuIFNvIHRoaXMNCj4gICAgICAgZnVuY3Rpb25hbGl0eSB3b3JrcyBvbmx5IGluIHRoZSBib290 IHBoYXNlcyBjYXBhYmxlIG9mIG1lbW9yeQ0KPiAgICAgICBhbGxvY2F0aW9uIChiZXNpZGVzIHRo ZSBwYWdpbmcsIGZvciB0aGUgc2FrZSBvZiBTdGFjayBHdWFyZCkuIEluDQo+ICAgICAgIG90aGVy IHdvcmRzLCBvbmx5IERYRSBwaGFzZSBjYW4gc3VwcG9ydHMgU3RhY2sgR3VhcmQgd2l0aCBzdGFj ayBzd2l0Y2guDQo+DQo+IENjOiBTdGFyIFplbmcgPHN0YXIuemVuZ0BpbnRlbC5jb208bWFpbHRv OnN0YXIuemVuZ0BpbnRlbC5jb20+Pg0KPiBDYzogRXJpYyBEb25nIDxlcmljLmRvbmdAaW50ZWwu Y29tPG1haWx0bzplcmljLmRvbmdAaW50ZWwuY29tPj4NCj4gQ2M6IEppZXdlbiBZYW8gPGppZXdl bi55YW9AaW50ZWwuY29tPG1haWx0bzpqaWV3ZW4ueWFvQGludGVsLmNvbT4+DQo+IENjOiBNaWNo YWVsIEtpbm5leSA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb208bWFpbHRvOm1pY2hhZWwuZC5r aW5uZXlAaW50ZWwuY29tPj4NCj4gU3VnZ2VzdGVkLWJ5OiBBeWVsbGV0IFdvbG1hbiA8YXllbGxl dC53b2xtYW5AaW50ZWwuY29tPG1haWx0bzpheWVsbGV0LndvbG1hbkBpbnRlbC5jb20+Pg0KPiBD b250cmlidXRlZC11bmRlcjogVGlhbm9Db3JlIENvbnRyaWJ1dGlvbiBBZ3JlZW1lbnQgMS4xDQo+ IFNpZ25lZC1vZmYtYnk6IEppYW4gSiBXYW5nIDxqaWFuLmoud2FuZ0BpbnRlbC5jb208bWFpbHRv OmppYW4uai53YW5nQGludGVsLmNvbT4+DQo+IC0tLQ0KPiAgLi4uL0NwdUV4Y2VwdGlvbkhhbmRs ZXJMaWIvQ3B1RXhjZXB0aW9uQ29tbW9uLmggICAgfCAgMjIgKysNCj4gIC4uLi9EeGVDcHVFeGNl cHRpb25IYW5kbGVyTGliLmluZiAgICAgICAgICAgICAgICAgIHwgICA1ICsNCj4gIC4uLi9MaWJy YXJ5L0NwdUV4Y2VwdGlvbkhhbmRsZXJMaWIvRHhlRXhjZXB0aW9uLmMgIHwgIDE5ICsNCj4gIC4u Li9JYTMyL0FyY2hFeGNlcHRpb25IYW5kbGVyLmMgICAgICAgICAgICAgICAgICAgIHwgMTM1ICsr KysrKysNCj4gIC4uLi9JYTMyL0FyY2hJbnRlcnJ1cHREZWZzLmggICAgICAgICAgICAgICAgICAg ICAgIHwgMTM2ICsrKysrKysNCj4gIC4uLi9JYTMyL0V4Y2VwdGlvblRzc0VudHJ5QXNtLm5hc20g ICAgICAgICAgICAgICAgIHwgMzk4DQo+ICsrKysrKysrKysrKysrKysrKysrKw0KPiAgLi4uL1Bl aUNwdUV4Y2VwdGlvbkhhbmRsZXJMaWIuaW5mICAgICAgICAgICAgICAgICAgfCAgIDEgKw0KPiAg Li4uL1NlY1BlaUNwdUV4Y2VwdGlvbkhhbmRsZXJMaWIuaW5mICAgICAgICAgICAgICAgfCAgIDMg Kw0KPiAgLi4uL1NtbUNwdUV4Y2VwdGlvbkhhbmRsZXJMaWIuaW5mICAgICAgICAgICAgICAgICAg fCAgIDEgKw0KPiAgLi4uL1g2NC9BcmNoRXhjZXB0aW9uSGFuZGxlci5jICAgICAgICAgICAgICAg ICAgICAgfCAxMDggKysrKysrDQo+ICAuLi4vQ3B1RXhjZXB0aW9uSGFuZGxlckxpYi9YNjQvQXJj aEludGVycnVwdERlZnMuaCB8ICA0MCArKysNCj4gIC4uLi9YNjQvRXhjZXB0aW9uSGFuZGxlckFz bS5TICAgICAgICAgICAgICAgICAgICAgIHwgIDEyICsNCj4gIC4uLi9YNjQvRXhjZXB0aW9uSGFu ZGxlckFzbS5hc20gICAgICAgICAgICAgICAgICAgIHwgIDEyICsNCj4gIC4uLi9YNjQvRXhjZXB0 aW9uSGFuZGxlckFzbS5uYXNtICAgICAgICAgICAgICAgICAgIHwgIDEyICsNCj4gIDE0IGZpbGVz IGNoYW5nZWQsIDkwNCBpbnNlcnRpb25zKCspDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQNCj4gVWVm aUNwdVBrZy9MaWJyYXJ5L0NwdUV4Y2VwdGlvbkhhbmRsZXJMaWIvSWEzMi9FeGNlcHRpb25Uc3NF bnRyeUFzbS5uYXNtDQo+DQo+IGRpZmYgLS1naXQNCj4gYS9VZWZpQ3B1UGtnL0xpYnJhcnkvQ3B1 RXhjZXB0aW9uSGFuZGxlckxpYi9DcHVFeGNlcHRpb25Db21tb24uaA0KPiBiL1VlZmlDcHVQa2cv TGlicmFyeS9DcHVFeGNlcHRpb25IYW5kbGVyTGliL0NwdUV4Y2VwdGlvbkNvbW1vbi5oDQo+IGlu ZGV4IDc0MGE1ODgyOGIuLmZkNGEyNmE0NTggMTAwNjQ0DQo+IC0tLSBhL1VlZmlDcHVQa2cvTGli cmFyeS9DcHVFeGNlcHRpb25IYW5kbGVyTGliL0NwdUV4Y2VwdGlvbkNvbW1vbi5oDQo+ICsrKyBi L1VlZmlDcHVQa2cvTGlicmFyeS9DcHVFeGNlcHRpb25IYW5kbGVyTGliL0NwdUV4Y2VwdGlvbkNv bW1vbi5oDQo+IEBAIC0yNSw2ICsyNSw3IEBADQo+ICAjaW5jbHVkZSA8TGlicmFyeS9CYXNlTWVt b3J5TGliLmg+DQo+ICAjaW5jbHVkZSA8TGlicmFyeS9TeW5jaHJvbml6YXRpb25MaWIuaD4NCj4g ICNpbmNsdWRlIDxMaWJyYXJ5L0NwdUV4Y2VwdGlvbkhhbmRsZXJMaWIuaD4NCj4gKyNpbmNsdWRl IDxMaWJyYXJ5L01lbW9yeUFsbG9jYXRpb25MaWIuaD4NCj4NCj4gICNkZWZpbmUgIENQVV9FWENF UFRJT05fTlVNICAgICAgICAgIDMyDQo+ICAjZGVmaW5lICBDUFVfSU5URVJSVVBUX05VTSAgICAg ICAgIDI1Ng0KPiBAQCAtMjg4LDUgKzI4OSwyNiBAQCBDb21tb25FeGNlcHRpb25IYW5kbGVyV29y a2VyICgNCj4gICAgSU4gRVhDRVBUSU9OX0hBTkRMRVJfREFUQSAgICAgICpFeGNlcHRpb25IYW5k bGVyRGF0YQ0KPiAgICApOw0KPg0KPiArLyoqDQo+ICsgIExvYWQgZ2l2ZW4gc2VsZWN0b3IgaW50 byBUUiByZWdpc3Rlcg0KPiArDQo+ICsgIEBwYXJhbSBTZWxlY3RvciAgICAgICAgIFRhc2sgc2Vn bWVudCBzZWxlY3Rvcg0KPiArKiovDQo+ICtWT0lEDQo+ICtBc21Xcml0ZVRyICgNCj4gKyAgVUlO VDE2IFNlbGVjdG9yDQo+ICsgICk7DQo+ICsNCj4gKy8qKg0KPiArICBTZXR1cCBzZXBhcmF0ZSBz dGFjayBmb3Igc3BlY2lmaWMgZXhjZXB0aW9ucy4NCj4gKw0KPiArICBAcGFyYW1baW5dIElkdFRh YmxlICAgICAgICBJRFQgdGFibGUgYmFzZS4NCj4gKyoqLw0KPiArVk9JRA0KPiArRUZJQVBJDQo+ ICtBcmNoU2V0dXBFeGNwZXRpb25TdGFjayAoDQo+ICsgIElOIElBMzJfSURUX0dBVEVfREVTQ1JJ UFRPUiAgICAgICAgICAgKklkdFRhYmxlDQo+ICsgICk7DQo+ICsNCj4gICNlbmRpZg0KPg0KPiBk aWZmIC0tZ2l0DQo+IGEvVWVmaUNwdVBrZy9MaWJyYXJ5L0NwdUV4Y2VwdGlvbkhhbmRsZXJMaWIv RHhlQ3B1RXhjZXB0aW9uSGFuZGxlckxpYi5pbmYNCj4gYi9VZWZpQ3B1UGtnL0xpYnJhcnkvQ3B1 RXhjZXB0aW9uSGFuZGxlckxpYi9EeGVDcHVFeGNlcHRpb25IYW5kbGVyTGliLmluZg0KPiBpbmRl eCBmNGE4ZDAxYzgwLi5iMDk5ZWY0ZGFkIDEwMDY0NA0KPiAtLS0NCj4gYS9VZWZpQ3B1UGtnL0xp YnJhcnkvQ3B1RXhjZXB0aW9uSGFuZGxlckxpYi9EeGVDcHVFeGNlcHRpb25IYW5kbGVyTGliLmlu Zg0KPiArKysNCj4gYi9VZWZpQ3B1UGtnL0xpYnJhcnkvQ3B1RXhjZXB0aW9uSGFuZGxlckxpYi9E eGVDcHVFeGNlcHRpb25IYW5kbGVyTGliLmluZg0KPiBAQCAtMzAsNiArMzAsNyBAQA0KPiAgW1Nv dXJjZXMuSWEzMl0NCj4gICAgSWEzMi9FeGNlcHRpb25IYW5kbGVyQXNtLmFzbQ0KPiAgICBJYTMy L0V4Y2VwdGlvbkhhbmRsZXJBc20ubmFzbQ0KPiArICBJYTMyL0V4Y2VwdGlvblRzc0VudHJ5QXNt Lm5hc20NCj4gICAgSWEzMi9FeGNlcHRpb25IYW5kbGVyQXNtLlMNCj4gICAgSWEzMi9BcmNoRXhj ZXB0aW9uSGFuZGxlci5jDQo+ICAgIElhMzIvQXJjaEludGVycnVwdERlZnMuaA0KPiBAQCAtNDcs NiArNDgsOSBAQA0KPiAgICBQZWlEeGVTbW1DcHVFeGNlcHRpb24uYw0KPiAgICBEeGVFeGNlcHRp b24uYw0KPg0KPiArW1BjZF0NCj4gKyAgZ0VmaU1kZU1vZHVsZVBrZ1Rva2VuU3BhY2VHdWlkLlBj ZENwdVN0YWNrR3VhcmQNCj4gKw0KPiAgW1BhY2thZ2VzXQ0KPiAgICBNZGVQa2cvTWRlUGtnLmRl Yw0KPiAgICBNZGVNb2R1bGVQa2cvTWRlTW9kdWxlUGtnLmRlYw0KPiBAQCAtNjEsMyArNjUsNCBA QA0KPiAgICBQZUNvZmZHZXRFbnRyeVBvaW50TGliDQo+ICAgIE1lbW9yeUFsbG9jYXRpb25MaWIN Cj4gICAgRGVidWdMaWINCj4gKyAgSG9iTGliDQo+IGRpZmYgLS1naXQgYS9VZWZpQ3B1UGtnL0xp YnJhcnkvQ3B1RXhjZXB0aW9uSGFuZGxlckxpYi9EeGVFeGNlcHRpb24uYw0KPiBiL1VlZmlDcHVQ a2cvTGlicmFyeS9DcHVFeGNlcHRpb25IYW5kbGVyTGliL0R4ZUV4Y2VwdGlvbi5jDQo+IGluZGV4 IDMxZmViZWM5NzYuLmU5ZGNkMDBlMDIgMTAwNjQ0DQo+IC0tLSBhL1VlZmlDcHVQa2cvTGlicmFy eS9DcHVFeGNlcHRpb25IYW5kbGVyTGliL0R4ZUV4Y2VwdGlvbi5jDQo+ICsrKyBiL1VlZmlDcHVQ a2cvTGlicmFyeS9DcHVFeGNlcHRpb25IYW5kbGVyTGliL0R4ZUV4Y2VwdGlvbi5jDQo+IEBAIC0x Niw2ICsxNiw3IEBADQo+ICAjaW5jbHVkZSAiQ3B1RXhjZXB0aW9uQ29tbW9uLmgiDQo+ICAjaW5j bHVkZSA8TGlicmFyeS9EZWJ1Z0xpYi5oPg0KPiAgI2luY2x1ZGUgPExpYnJhcnkvTWVtb3J5QWxs b2NhdGlvbkxpYi5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvSG9iTGliLmg+DQo+DQo+ICBDT05T VCBVSU5UTiAgICBtRG9GYXJSZXR1cm5GbGFnICA9IDA7DQo+DQo+IEBAIC0xNTUsNiArMTU2LDI0 IEBAIEluaXRpYWxpemVDcHVJbnRlcnJ1cHRIYW5kbGVycyAoDQo+DQo+ICAgIFVwZGF0ZUlkdFRh YmxlIChJZHRUYWJsZSwgJlRlbXBsYXRlTWFwLCAmbUV4Y2VwdGlvbkhhbmRsZXJEYXRhKTsNCj4N Cj4gKyAgaWYgKFBjZEdldEJvb2wgKFBjZENwdVN0YWNrR3VhcmQpKSB7DQo+ICsgICAgLy8NCj4g KyAgICAvLyBTdGFjayBHdWFyZCB3b3JrcyB3aXRoIHRoZSBzdXBwb3J0IG9mIHBhZ2UgdGFibGUg ZXN0YWJsaXNoZWQgYW5kDQo+ICsgICAgLy8gbWVtb3J5IG1hbmFnZW1lbnQuIFNvIHdlIGhhdmUg dG8gZXhjbHVkZSB0aG9zZSBib290IG1vZGVzDQo+IHdpdGhvdXQNCj4gKyAgICAvLyB0aGVtLg0K PiArICAgIC8vDQo+ICsgICAgc3dpdGNoIChHZXRCb290TW9kZUhvYigpKSB7DQo+ICsgICAgY2Fz ZSBCT09UX09OX0ZMQVNIX1VQREFURToNCj4gKyAgICBjYXNlIEJPT1RfSU5fUkVDT1ZFUllfTU9E RToNCj4gKyAgICBjYXNlIEJPT1RfT05fUzNfUkVTVU1FOg0KPiArICAgICAgYnJlYWs7DQo+ICsN Cj4gKyAgICBkZWZhdWx0Og0KPiArICAgICAgQXJjaFNldHVwRXhjcGV0aW9uU3RhY2sgKElkdFRh YmxlKTsNCj4gKyAgICAgIGJyZWFrOw0KPiArICAgIH0NCj4gKyAgfQ0KPiArDQo+ICAgIC8vDQo+ ICAgIC8vIExvYWQgSW50ZXJydXB0IERlc2NyaXB0b3IgVGFibGUNCj4gICAgLy8NCj4gZGlmZiAt LWdpdA0KPiBhL1VlZmlDcHVQa2cvTGlicmFyeS9DcHVFeGNlcHRpb25IYW5kbGVyTGliL0lhMzIv QXJjaEV4Y2VwdGlvbkhhbmRsZXIuYw0KPiBiL1VlZmlDcHVQa2cvTGlicmFyeS9DcHVFeGNlcHRp b25IYW5kbGVyTGliL0lhMzIvQXJjaEV4Y2VwdGlvbkhhbmRsZXIuYw0KPiBpbmRleCBmMmMzOWVi MTkzLi4zZDQxZGY3NWE1IDEwMDY0NA0KPiAtLS0gYS9VZWZpQ3B1UGtnL0xpYnJhcnkvQ3B1RXhj ZXB0aW9uSGFuZGxlckxpYi9JYTMyL0FyY2hFeGNlcHRpb25IYW5kbGVyLmMNCj4gKysrDQo+IGIv VWVmaUNwdVBrZy9MaWJyYXJ5L0NwdUV4Y2VwdGlvbkhhbmRsZXJMaWIvSWEzMi9BcmNoRXhjZXB0 aW9uSGFuZGxlci5jDQo+IEBAIC0xNCw2ICsxNCwxOSBAQA0KPg0KPiAgI2luY2x1ZGUgIkNwdUV4 Y2VwdGlvbkNvbW1vbi5oIg0KPg0KPiArLy8NCj4gKy8vIExpc3Qgb2YgZXhjZXB0aW9ucyBuZWVk aW5nIHNlcGFyYXRlIHN0YWNrDQo+ICsvLw0KPiArU1RBVElDIElBMzJfRVhDRVBUSU9OX1RTX0VO VFJZIG1FeGNlcHRpb25zV2l0aFN0YWNrW10gPSB7DQo+ICsgIHs2LCAgRXhjZXB0aW9uVGFza1N3 dGljaEVudHJ5Nn0sICAvLyNVRDogSW52YWxpZCBPcGNvZGUgRXhjZXB0aW9uDQo+ICsgIHs4LCAg RXhjZXB0aW9uVGFza1N3dGljaEVudHJ5OH0sICAvLyNERjogRG91YmxlIEZhdWx0IEV4Y2VwdGlv bg0KPiArICB7MTIsIEV4Y2VwdGlvblRhc2tTd3RpY2hFbnRyeTEyfSwgLy8jU1M6IFN0YWNrIEZh dWx0IEV4Y2VwdGlvbg0KPiArICB7MTMsIEV4Y2VwdGlvblRhc2tTd3RpY2hFbnRyeTEzfSwgLy8j R1A6IEdlbmVyYWwgUHJvdGVjdGlvbiBFeGNlcHRpb24NCj4gKyAgezE0LCBFeGNlcHRpb25UYXNr U3d0aWNoRW50cnkxNH0sIC8vI1BGOiBQYWdlLUZhdWx0IEV4Y2VwdGlvbg0KPiArICB7MTcsIEV4 Y2VwdGlvblRhc2tTd3RpY2hFbnRyeTE3fSwgLy8jQUM6IEFsaWdubWVudCBDaGVjayBFeGNlcHRp b24NCj4gKyAgezE4LCBFeGNlcHRpb25UYXNrU3d0aWNoRW50cnkxOH0gIC8vI01DOiBNYWNoaW5l LUNoZWNrIEV4Y2VwdGlvbg0KPiArfTsNCj4gKw0KPiAgLyoqDQo+ICAgIFJldHVybiBhZGRyZXNz IG1hcCBvZiBleGNlcHRpb24gaGFuZGxlciB0ZW1wbGF0ZSBzbyB0aGF0IEMgY29kZSBjYW4NCj4g Z2VuZXJhdGUNCj4gICAgZXhjZXB0aW9uIHRhYmxlcy4NCj4gQEAgLTEwNyw2ICsxMjAsMTI4IEBA IEFyY2hSZXN0b3JlRXhjZXB0aW9uQ29udGV4dCAoDQo+ICAgIFN5c3RlbUNvbnRleHQuU3lzdGVt Q29udGV4dElhMzItPkV4Y2VwdGlvbkRhdGEgPQ0KPiBSZXNlcnZlZFZlY3RvcnNbRXhjZXB0aW9u VHlwZV0uRXhjZXB0aW9uRGF0YTsNCj4gIH0NCj4NCj4gKy8qKg0KPiArICBTZXR1cCBzZXBhcmF0 ZSBzdGFjayBmb3Igc3BlY2lmaWMgZXhjZXB0aW9ucy4NCj4gKw0KPiArICAgQHBhcmFtW2luXSBJ ZHRUYWJsZSAgICAgICAgSURUIHRhYmxlIGJhc2UuDQo+ICsqKi8NCj4gK1ZPSUQNCj4gK0VGSUFQ SQ0KPiArQXJjaFNldHVwRXhjcGV0aW9uU3RhY2sgKA0KPiArICBJTiBJQTMyX0lEVF9HQVRFX0RF U0NSSVBUT1IgICAgICAgICAgICpJZHRUYWJsZQ0KPiArICApDQo+ICt7DQo+ICsgIFZPSUQgICAg ICAgICAgICAgICAgICAgICAgKk5ld0dkdDsNCj4gKyAgSUEzMl9ERVNDUklQVE9SICAgICAgICAg ICBHZHREZXNjOw0KPiArICBVSU5UTiAgICAgICAgICAgICAgICAgICAgIE9sZEdkdFNpemU7DQo+ ICsgIFRTU19FTlRSSUVTICAgICAgICAgICAgICAgKlRzc0VudHJ5Ow0KPiArICBJQTMyX1RTU19E RVNDUklQVE9SICAgICAgICpUc3NEZXNjOw0KPiArICBJQTMyX1RBU0tfU1RBVEVfU0VHTUVOVCAg ICpUc3M7DQo+ICsgIFVJTlROICAgICAgICAgICAgICAgICAgICAgU3RhY2tCYXNlOw0KPiArICBV SU5UTiAgICAgICAgICAgICAgICAgICAgIFN0YWNrVG9wOw0KPiArICBVSU5UTiAgICAgICAgICAg ICAgICAgICAgIFN0YWNrU2l6ZTsNCj4gKyAgVUlOVE4gICAgICAgICAgICAgICAgICAgICBJbmRl eDsNCj4gKyAgVUlOVE4gICAgICAgICAgICAgICAgICAgICBWZWN0b3I7DQo+ICsgIFVJTlROICAg ICAgICAgICAgICAgICAgICAgVHNzQmFzZTsNCj4gKw0KPiArICAvLw0KPiArICAvLyBBbGxvY2F0 ZSBSdW50aW1lIERhdGEgZm9yIHRoZSBHRFQNCj4gKyAgLy8NCj4gKyAgQXNtUmVhZEdkdHIoJkdk dERlc2MpOw0KPiArICBPbGRHZHRTaXplID0gR2R0RGVzYy5MaW1pdCArIDE7DQo+ICsgIE5ld0dk dCA9IEFsbG9jYXRlUnVudGltZVplcm9Qb29sKE9sZEdkdFNpemUgKyBzaXplb2YoVFNTX0VOVFJJ RVMpDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgSUEzMl9HRFRfQUxJ R05NRU5UKTsNCj4gKyAgaWYgKE5ld0dkdCA9PSBOVUxMKSB7DQo+ICsgICAgcmV0dXJuOw0KPiAr ICB9DQo+ICsgIE5ld0dkdCA9IEFMSUdOX1BPSU5URVIgKE5ld0dkdCwgSUEzMl9HRFRfQUxJR05N RU5UKTsNCj4gKw0KPiArICAvLw0KPiArICAvLyBJbml0aWFsaXplIG5ldyBHRFQgZW50cmllcw0K PiArICAvLw0KPiArICBDb3B5TWVtKE5ld0dkdCwgKFZPSUQgKilHZHREZXNjLkJhc2UsIE9sZEdk dFNpemUpOw0KPiArICBHZHREZXNjLkJhc2UgPSAoVUlOVE4pKFZPSUQqKU5ld0dkdDsNCj4gKyAg R2R0RGVzYy5MaW1pdCA9IChVSU5UMTYpKE9sZEdkdFNpemUgKyBUU1NfT0ZGU0VUIC0gMSk7DQo+ ICsNCj4gKyAgLy8NCj4gKyAgLy8gUmVzZXJ2ZSBzdGF0Y2sgbWVtb3J5IGZvciBnaXZlbiBleGNl cHRpb25zDQo+ICsgIC8vDQo+ICsgIFN0YWNrU2l6ZSA9IEFSUkFZX1NJWkUgKG1FeGNlcHRpb25z V2l0aFN0YWNrKSAqIEVYQ0VQVElPTl9TVEFDS19TSVpFOw0KPiArICBTdGFja1NpemUgPSBFRklf UEFHRVNfVE9fU0laRSAoRUZJX1NJWkVfVE9fUEFHRVMgKFN0YWNrU2l6ZSkpOw0KPiArICBTdGFj a0Jhc2UgPSAoVUlOVDY0KShVSU5UTilBbGxvY2F0ZVBhZ2VzIChFRklfU0laRV9UT19QQUdFUw0K PiAoU3RhY2tTaXplKSk7DQo+ICsgIGlmIChTdGFja0Jhc2UgPT0gMCkgew0KPiArICAgIEZyZWVQ b29sIChOZXdHZHQpOw0KPiArICAgIHJldHVybjsNCj4gKyAgfQ0KPiArDQo+ICsgIC8vDQo+ICsg IC8vIEZpeHVwIFRTUyBkZXNjcmlwdG9ycyBhbmQgc2VnbWVudHMNCj4gKyAgLy8NCj4gKyAgVHNz RW50cnkgPSAoVk9JRCAqKShHZHREZXNjLkJhc2UgKyBPbGRHZHRTaXplKTsNCj4gKw0KPiArICBU c3NCYXNlID0gKFVJTlROKShWT0lEICopJlRzc0VudHJ5LT5Uc3M7DQo+ICsgIFRzc0VudHJ5LT5U c3NTZWcuTGltaXQxNV8wICAgICAgICAgICAgPQ0KPiBzaXplb2YoSUEzMl9UQVNLX1NUQVRFX1NF R01FTlQpIC0gMTsNCj4gKyAgVHNzRW50cnktPlRzc1NlZy5CYXNlMTVfMCAgICAgICAgICAgICA9 IChVSU5UMTYpVHNzQmFzZTsNCj4gKyAgVHNzRW50cnktPlRzc1NlZy5CYXNlMjNfMTYgICAgICAg ICAgICA9IChVSU5UOCkoVHNzQmFzZSA+PiAxNik7DQo+ICsgIFRzc0VudHJ5LT5Uc3NTZWcuVHlw ZSAgICAgICAgICAgICAgICAgPSBJQTMyX0dEVF9UWVBFX1RTUzsNCj4gKyAgVHNzRW50cnktPlRz c1NlZy5MaW1pdDE5XzE2X2FuZF9mbGFncyA9IDA7DQo+ICsgIFRzc0VudHJ5LT5Uc3NTZWcuQmFz ZTMxXzI0ICAgICAgICAgICAgPSAoVUlOVDgpKFRzc0Jhc2UgPj4gMjQpOw0KPiArDQo+ICsgIFN0 YWNrVG9wICA9IFN0YWNrQmFzZSArIFN0YWNrU2l6ZSAtIENQVV9TVEFDS19BTElHTk1FTlQ7DQo+ ICsgIFN0YWNrVG9wICA9IChVSU5UTilBTElHTl9QT0lOVEVSIChTdGFja1RvcCwgQ1BVX1NUQUNL X0FMSUdOTUVOVCk7DQo+ICsgIGZvciAoSW5kZXggPSAwOyBJbmRleCA8IEFSUkFZX1NJWkUgKG1F eGNlcHRpb25zV2l0aFN0YWNrKTsgKytJbmRleCkgew0KPiArICAgIC8vDQo+ICsgICAgLy8gRml4 dXAgVFNTIGRlc2NyaXB0b3INCj4gKyAgICAvLw0KPiArICAgIFRzc0Jhc2UgPSAoVUlOVE4pKFZP SUQgKikmVHNzRW50cnktPkV4Y2VwdGlvblRzc1tJbmRleF07DQo+ICsgICAgVHNzRGVzYyA9ICZU c3NFbnRyeS0+RXhjZXB0aW9uVHNzU2VnW0luZGV4XTsNCj4gKw0KPiArICAgIFRzc0Rlc2MtPkxp bWl0MTVfMCAgICAgICAgICAgID0gc2l6ZW9mKElBMzJfVEFTS19TVEFURV9TRUdNRU5UKSAtIDE7 DQo+ICsgICAgVHNzRGVzYy0+QmFzZTE1XzAgICAgICAgICAgICAgPSAoVUlOVDE2KVRzc0Jhc2U7 DQo+ICsgICAgVHNzRGVzYy0+QmFzZTIzXzE2ICAgICAgICAgICAgPSAoVUlOVDgpKFRzc0Jhc2Ug Pj4gMTYpOw0KPiArICAgIFRzc0Rlc2MtPlR5cGUgICAgICAgICAgICAgICAgID0gSUEzMl9HRFRf VFlQRV9UU1M7DQo+ICsgICAgVHNzRGVzYy0+TGltaXQxOV8xNl9hbmRfZmxhZ3MgPSAwOw0KPiAr ICAgIFRzc0Rlc2MtPkJhc2UzMV8yNCAgICAgICAgICAgID0gKFVJTlQ4KShUc3NCYXNlID4+IDI0 KTsNCj4gKw0KPiArICAgIC8vDQo+ICsgICAgLy8gRml4dXAgVFNTDQo+ICsgICAgLy8NCj4gKyAg ICBUc3MgPSAmVHNzRW50cnktPkV4Y2VwdGlvblRzc1tJbmRleF07DQo+ICsgICAgVHNzLT5DUjMg ICAgPSBBc21SZWFkQ3IzKCk7DQo+ICsgICAgVHNzLT5FSVAgICAgPSAoVUlOVDMyKW1FeGNlcHRp b25zV2l0aFN0YWNrW0luZGV4XS5FbnRyeVBvaW50Ow0KPiArICAgIFRzcy0+RUZMQUdTID0gMHgy Ow0KPiArICAgIFRzcy0+RVNQICAgID0gU3RhY2tUb3A7DQo+ICsgICAgVHNzLT5FUyAgICAgPSBB c21SZWFkRXMoKTsNCj4gKyAgICBUc3MtPkNTICAgICA9IEFzbVJlYWRDcygpOw0KPiArICAgIFRz cy0+U1MgICAgID0gQXNtUmVhZFNzKCk7DQo+ICsgICAgVHNzLT5EUyAgICAgPSBBc21SZWFkRHMo KTsNCj4gKyAgICBUc3MtPkZTICAgICA9IEFzbVJlYWRGcygpOw0KPiArICAgIFRzcy0+R1MgICAg ID0gQXNtUmVhZEdzKCk7DQo+ICsgICAgU3RhY2tUb3AgICAtPSBFWENFUFRJT05fU1RBQ0tfU0la RTsNCj4gKw0KPiArICAgIC8vDQo+ICsgICAgLy8gQ2hhbmdlIHNwZWNpZmllZCBleGNlcHRpb25z IGluIElEVCB0byB1c2UgVFNTDQo+ICsgICAgLy8NCj4gKyAgICBWZWN0b3IgPSBtRXhjZXB0aW9u c1dpdGhTdGFja1tJbmRleF0uVmVjdG9yOw0KPiArDQo+ICsgICAgSWR0VGFibGVbVmVjdG9yXS5C aXRzLk9mZnNldExvdyAgPSAwOw0KPiArICAgIElkdFRhYmxlW1ZlY3Rvcl0uQml0cy5TZWxlY3Rv ciAgID0gT2xkR2R0U2l6ZSArDQo+IEVYQ0VQVElPTl9UU1NfU0VMKEluZGV4KTsNCj4gKyAgICBJ ZHRUYWJsZVtWZWN0b3JdLkJpdHMuUmVzZXJ2ZWRfMCA9IDA7DQo+ICsgICAgSWR0VGFibGVbVmVj dG9yXS5CaXRzLkdhdGVUeXBlICAgPSBJQTMyX0lEVF9HQVRFX1RZUEVfVEFTSzsNCj4gKyAgICBJ ZHRUYWJsZVtWZWN0b3JdLkJpdHMuT2Zmc2V0SGlnaCA9IDA7DQo+ICsgIH0NCj4gKw0KPiArICAv Lw0KPiArICAvLyBQdWJsaXNoIHRoZSBjaGFuZ2VzDQo+ICsgIC8vDQo+ICsgIEFzbVdyaXRlR2R0 cigmR2R0RGVzYyk7DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8gTG9hZCB0YXNrIHJlZ2lzdGVyDQo+ ICsgIC8vDQo+ICsgIEFzbVdyaXRlVHIgKChVSU5UMTYpKE9sZEdkdFNpemUgKyBUU1NfU0VMKSk7 DQo+ICt9DQo+ICsNCj4gIC8qKg0KPiAgICBEaXNwbGF5IHByb2Nlc3NvciBjb250ZXh0Lg0KPg0K PiBkaWZmIC0tZ2l0DQo+IGEvVWVmaUNwdVBrZy9MaWJyYXJ5L0NwdUV4Y2VwdGlvbkhhbmRsZXJM aWIvSWEzMi9BcmNoSW50ZXJydXB0RGVmcy5oDQo+IGIvVWVmaUNwdVBrZy9MaWJyYXJ5L0NwdUV4 Y2VwdGlvbkhhbmRsZXJMaWIvSWEzMi9BcmNoSW50ZXJydXB0RGVmcy5oDQo+IGluZGV4IGE4ZDM1 NTZhODAuLjc3Y2M2Zjk5MTkgMTAwNjQ0DQo+IC0tLSBhL1VlZmlDcHVQa2cvTGlicmFyeS9DcHVF eGNlcHRpb25IYW5kbGVyTGliL0lhMzIvQXJjaEludGVycnVwdERlZnMuaA0KPiArKysgYi9VZWZp Q3B1UGtnL0xpYnJhcnkvQ3B1RXhjZXB0aW9uSGFuZGxlckxpYi9JYTMyL0FyY2hJbnRlcnJ1cHRE ZWZzLmgNCj4gQEAgLTQxLDQgKzQxLDE0MCBAQCB0eXBlZGVmIHN0cnVjdCB7DQo+ICAgIFVJTlQ4 ICAgICAgIEhvb2tBZnRlclN0dWJIZWFkZXJDb2RlW0hPT0tBRlRFUl9TVFVCX1NJWkVdOw0KPiAg fSBSRVNFUlZFRF9WRUNUT1JTX0RBVEE7DQo+DQo+ICsjcHJhZ21hIHBhY2sgKDEpDQo+ICsNCj4g KyNkZWZpbmUgRVhDRVBUSU9OX0xJU1RfTUFYICAgICAgICAgIDcNCj4gKyNkZWZpbmUgRVhDRVBU SU9OX1NUQUNLX1NJWkUgICAgICAgIEVGSV9QQUdFX1NJWkUNCj4gKyNkZWZpbmUgSUEzMl9HRFRf VFlQRV9UU1MgICAgICAgICAgIDB4ODkNCj4gKyNkZWZpbmUgSUEzMl9HRFRfQUxJR05NRU5UICAg ICAgICAgIDgNCj4gKw0KPiArLy8NCj4gKy8vIElBMzIgVFNTIERlZmluaXRpb24NCj4gKy8vDQo+ ICt0eXBlZGVmIHN0cnVjdCB7DQo+ICsgIFVJTlQxNiAgICBQcmV2aW91c1Rhc2tMaW5rOyAvLyAw MA0KPiArICBVSU5UMTYgICAgUmVzZXJ2ZWRfMjsNCj4gKyAgVUlOVDMyICAgIEVTUDA7ICAgICAg ICAgICAgIC8vIDA0DQo+ICsgIFVJTlQxNiAgICBTUzA7ICAgICAgICAgICAgICAvLyAwOA0KPiAr ICBVSU5UMTYgICAgUmVzZXJ2ZWRfMTA7DQo+ICsgIFVJTlQzMiAgICBFU1AxOyAgICAgICAgICAg ICAvLyAwQw0KPiArICBVSU5UMTYgICAgU1MxOyAgICAgICAgICAgICAgLy8gMTANCj4gKyAgVUlO VDE2ICAgIFJlc2VydmVkXzE4Ow0KPiArICBVSU5UMzIgICAgRVNQMjsgICAgICAgICAgICAgLy8g MTQNCj4gKyAgVUlOVDE2ICAgIFNTMjsgICAgICAgICAgICAgIC8vIDE4DQo+ICsgIFVJTlQxNiAg ICBSZXNlcnZlZF8yNjsNCj4gKyAgVUlOVDMyICAgIENSMzsgICAgICAgICAgICAgIC8vIDFDDQo+ ICsgIFVJTlQzMiAgICBFSVA7ICAgICAgICAgICAgICAvLyAyMA0KPiArICBVSU5UMzIgICAgRUZM QUdTOyAgICAgICAgICAgLy8gMjQNCj4gKyAgVUlOVDMyICAgIEVBWDsgICAgICAgICAgICAgIC8v IDI4DQo+ICsgIFVJTlQzMiAgICBFQ1g7ICAgICAgICAgICAgICAvLyAyQw0KPiArICBVSU5UMzIg ICAgRURYOyAgICAgICAgICAgICAgLy8gMzANCj4gKyAgVUlOVDMyICAgIEVCWDsgICAgICAgICAg ICAgIC8vIDM0DQo+ICsgIFVJTlQzMiAgICBFU1A7ICAgICAgICAgICAgICAvLyAzOA0KPiArICBV SU5UMzIgICAgRUJQOw0KPiArICBVSU5UMzIgICAgRVNJOw0KPiArICBVSU5UMzIgICAgRURJOw0K PiArICBVSU5UMTYgICAgRVM7DQo+ICsgIFVJTlQxNiAgICBSZXNlcnZlZF83NDsNCj4gKyAgVUlO VDE2ICAgIENTOw0KPiArICBVSU5UMTYgICAgUmVzZXJ2ZWRfNzg7DQo+ICsgIFVJTlQxNiAgICBT UzsNCj4gKyAgVUlOVDE2ICAgIFJlc2VydmVkXzgyOw0KPiArICBVSU5UMTYgICAgRFM7DQo+ICsg IFVJTlQxNiAgICBSZXNlcnZlZF84NjsNCj4gKyAgVUlOVDE2ICAgIEZTOw0KPiArICBVSU5UMTYg ICAgUmVzZXJ2ZWRfOTA7DQo+ICsgIFVJTlQxNiAgICBHUzsNCj4gKyAgVUlOVDE2ICAgIFJlc2Vy dmVkXzk0Ow0KPiArICBVSU5UMTYgICAgTERUU2VnbWVudFNlbGVjdG9yOw0KPiArICBVSU5UMTYg ICAgUmVzZXJ2ZWRfOTg7DQo+ICsgIFVJTlQxNiAgICBUOw0KPiArICBVSU5UMTYgICAgSU9NYXBC YXNlQWRkcmVzczsNCj4gK30gSUEzMl9UQVNLX1NUQVRFX1NFR01FTlQ7DQo+ICsNCj4gK3R5cGVk ZWYgc3RydWN0IHsNCj4gKyAgVUlOVDE2ICAgIExpbWl0MTVfMDsNCj4gKyAgVUlOVDE2ICAgIEJh c2UxNV8wOw0KPiArICBVSU5UOCAgICAgQmFzZTIzXzE2Ow0KPiArICBVSU5UOCAgICAgVHlwZTsN Cj4gKyAgVUlOVDggICAgIExpbWl0MTlfMTZfYW5kX2ZsYWdzOw0KPiArICBVSU5UOCAgICAgQmFz ZTMxXzI0Ow0KPiArfSBJQTMyX1RTU19ERVNDUklQVE9SOw0KPiArDQo+ICt0eXBlZGVmIHN0cnVj dCB7DQo+ICsgIElBMzJfVFNTX0RFU0NSSVBUT1IgICAgICAgICAgIFRzc1NlZzsNCj4gKyAgSUEz Ml9UU1NfREVTQ1JJUFRPUiAgICAgICAgICAgRXhjZXB0aW9uVHNzU2VnW0VYQ0VQVElPTl9MSVNU X01BWF07DQo+ICsgIElBMzJfVEFTS19TVEFURV9TRUdNRU5UICAgICAgIFRzczsNCj4gKyAgSUEz Ml9UQVNLX1NUQVRFX1NFR01FTlQgICAgICAgRXhjZXB0aW9uVHNzW0VYQ0VQVElPTl9MSVNUX01B WF07DQo+ICt9IFRTU19FTlRSSUVTOw0KPiArDQo+ICsjcHJhZ21hIHBhY2sgKCkNCj4gKw0KPiAr I2RlZmluZSBUU1NfU0VMICAgICAgICAgICAgICAgT0ZGU0VUX09GIChUU1NfRU5UUklFUywgVHNz U2VnKQ0KPiArI2RlZmluZSBFWENFUFRJT05fVFNTX1NFTChuKSAgT0ZGU0VUX09GIChUU1NfRU5U UklFUywNCj4gRXhjZXB0aW9uVHNzU2VnW25dKQ0KPiArI2RlZmluZSBUU1NfT0ZGU0VUICAgICAg ICAgICAgT0ZGU0VUX09GIChUU1NfRU5UUklFUywgVHNzKQ0KPiArDQo+ICt0eXBlZGVmIFZPSUQg KCpFWENFUFRJT05fRU5UUlkpIChWT0lEKTsNCj4gKw0KPiArdHlwZWRlZiBzdHJ1Y3Qgew0KPiAr ICBVSU5UTiAgICAgICAgICAgICBWZWN0b3I7DQo+ICsgIEVYQ0VQVElPTl9FTlRSWSAgIEVudHJ5 UG9pbnQ7DQo+ICt9IElBMzJfRVhDRVBUSU9OX1RTX0VOVFJZOw0KPiArDQo+ICsvKioNCj4gKyBF eGNlcHRpb24gaGFuZGxpbmcgZW50cnkgdGhyb3VnaCB0YXNrIGdhdGUgZm9yIGV4Y2VwdGlvbiAj VUQuDQo+ICsgKiovDQo+ICtWT0lEDQo+ICtFeGNlcHRpb25UYXNrU3d0aWNoRW50cnk2ICgNCj4g KyAgVk9JRA0KPiArICApOw0KPiArDQo+ICsvKioNCj4gKyBFeGNlcHRpb24gaGFuZGxpbmcgZW50 cnkgdGhyb3VnaCB0YXNrIGdhdGUgZm9yIGV4Y2VwdGlvbiAjREYuDQo+ICsgKiovDQo+ICtWT0lE DQo+ICtFeGNlcHRpb25UYXNrU3d0aWNoRW50cnk4ICgNCj4gKyAgVk9JRA0KPiArICApOw0KPiAr DQo+ICsvKioNCj4gKyBFeGNlcHRpb24gaGFuZGxpbmcgZW50cnkgdGhyb3VnaCB0YXNrIGdhdGUg Zm9yIGV4Y2VwdGlvbiAjU1MuDQo+ICsgKiovDQo+ICtWT0lEDQo+ICtFeGNlcHRpb25UYXNrU3d0 aWNoRW50cnkxMiAoDQo+ICsgIFZPSUQNCj4gKyAgKTsNCj4gKw0KPiArLyoqDQo+ICsgRXhjZXB0 aW9uIGhhbmRsaW5nIGVudHJ5IHRocm91Z2ggdGFzayBnYXRlIGZvciBleGNlcHRpb24gI0dQLg0K PiArICoqLw0KPiArVk9JRA0KPiArRXhjZXB0aW9uVGFza1N3dGljaEVudHJ5MTMgKA0KPiArICBW T0lEDQo+ICsgICk7DQo+ICsNCj4gKy8qKg0KPiArIEV4Y2VwdGlvbiBoYW5kbGluZyBlbnRyeSB0 aHJvdWdoIHRhc2sgZ2F0ZSBmb3IgZXhjZXB0aW9uICNQRi4NCj4gKyAqKi8NCj4gK1ZPSUQNCj4g K0V4Y2VwdGlvblRhc2tTd3RpY2hFbnRyeTE0ICgNCj4gKyAgVk9JRA0KPiArICApOw0KPiArDQo+ ICsvKioNCj4gKyBFeGNlcHRpb24gaGFuZGxpbmcgZW50cnkgdGhyb3VnaCB0YXNrIGdhdGUgZm9y IGV4Y2VwdGlvbiAjQUMuDQo+ICsgKiovDQo+ICtWT0lEDQo+ICtFeGNlcHRpb25UYXNrU3d0aWNo RW50cnkxNyAoDQo+ICsgIFZPSUQNCj4gKyAgKTsNCj4gKw0KPiArLyoqDQo+ICsgRXhjZXB0aW9u IGhhbmRsaW5nIGVudHJ5IHRocm91Z2ggdGFzayBnYXRlIGZvciBleGNlcHRpb24gI01DLg0KPiAr ICoqLw0KPiArVk9JRA0KPiArRXhjZXB0aW9uVGFza1N3dGljaEVudHJ5MTggKA0KPiArICBWT0lE DQo+ICsgICk7DQo+ICsNCj4gICNlbmRpZg0KPiBkaWZmIC0tZ2l0DQo+IGEvVWVmaUNwdVBrZy9M aWJyYXJ5L0NwdUV4Y2VwdGlvbkhhbmRsZXJMaWIvSWEzMi9FeGNlcHRpb25Uc3NFbnRyeUFzbS5u YXMNCj4gbQ0KPiBiL1VlZmlDcHVQa2cvTGlicmFyeS9DcHVFeGNlcHRpb25IYW5kbGVyTGliL0lh MzIvRXhjZXB0aW9uVHNzRW50cnlBc20ubmFzDQo+IG0NCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQN Cj4gaW5kZXggMDAwMDAwMDAwMC4uZGJmYmNmY2Y1MQ0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKw0K PiBiL1VlZmlDcHVQa2cvTGlicmFyeS9DcHVFeGNlcHRpb25IYW5kbGVyTGliL0lhMzIvRXhjZXB0 aW9uVHNzRW50cnlBc20ubmFzDQo+IG0NCj4gQEAgLTAsMCArMSwzOTggQEANCj4gKzstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0gOw0KPiArOyBDb3B5cmlnaHQgKGMpIDIwMTcsIEludGVsIENvcnBvcmF0 aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gKzsgVGhpcyBwcm9ncmFtIGFuZCB0aGUg YWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiArOyBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxh YmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgQlNEDQo+IExpY2Vuc2UN Cj4gKzsgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0 IG9mIHRoZSBsaWNlbnNlIG1heSBiZSBmb3VuZA0KPiBhdA0KPiArOyBodHRwOi8vb3BlbnNvdXJj ZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwLg0KPiArOw0KPiArOyBUSEUgUFJPR1JBTSBJ UyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIiBCQVNJUywN Cj4gKzsgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwg RUlUSEVSIEVYUFJFU1MNCj4gT1IgSU1QTElFRC4NCj4gKzsNCj4gKzsgTW9kdWxlIE5hbWU6DQo+ ICs7DQo+ICs7ICAgRXhjZXB0aW9uVHNzRW50cnlBc20uQXNtDQo+ICs7DQo+ICs7IEFic3RyYWN0 Og0KPiArOw0KPiArOyAgIElBMzIgQ1BVIEV4Y2VwdGlvbiBIYW5kbGVyIHdpdGggU2VwYXJhdGUg U3RhY2sNCj4gKzsNCj4gKzsgTm90ZXM6DQo+ICs7DQo+ICs7LS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t DQo+ICsNCj4gKzsNCj4gKzsgSUEzMiBUU1MgTWVtb3J5IExheW91dCBEZXNjcmlwdGlvbg0KPiAr Ow0KPiArc3RydWMgSUEzMl9UU1MNCj4gKyAgICAgICAgICAgICAgICAgICAgcmVzdyAxDQo+ICsg ICAgICAgICAgICAgICAgICAgIHJlc3cgMQ0KPiArICAuRVNQMDogICAgcmVzZCAxDQo+ICsgIC5T UzA6ICAgICByZXN3IDENCj4gKyAgICAgICAgICAgICAgICAgICAgcmVzdyAxDQo+ICsgIC5FU1Ax OiAgICByZXNkIDENCj4gKyAgLlNTMTogICAgIHJlc3cgMQ0KPiArICAgICAgICAgICAgICAgICAg ICByZXN3IDENCj4gKyAgLkVTUDI6ICAgIHJlc2QgMQ0KPiArICAuU1MyOiAgICAgcmVzdyAxDQo+ ICsgICAgICAgICAgICAgICAgICAgIHJlc3cgMQ0KPiArICAuX0NSMzogICAgcmVzZCAxDQo+ICsg IC5FSVA6ICAgICByZXNkIDENCj4gKyAgLkVGTEFHUzogIHJlc2QgMQ0KPiArICAuX0VBWDogICAg cmVzZCAxDQo+ICsgIC5fRUNYOiAgICByZXNkIDENCj4gKyAgLl9FRFg6ICAgIHJlc2QgMQ0KPiAr ICAuX0VCWDogICAgcmVzZCAxDQo+ICsgIC5fRVNQOiAgICByZXNkIDENCj4gKyAgLl9FQlA6ICAg IHJlc2QgMQ0KPiArICAuX0VTSTogICAgcmVzZCAxDQo+ICsgIC5fRURJOiAgICByZXNkIDENCj4g KyAgLl9FUzogICAgIHJlc3cgMQ0KPiArICAgICAgICAgICAgICAgICAgICByZXN3IDENCj4gKyAg Ll9DUzogICAgIHJlc3cgMQ0KPiArICAgICAgICAgICAgICAgICAgICByZXN3IDENCj4gKyAgLl9T UzogICAgIHJlc3cgMQ0KPiArICAgICAgICAgICAgICAgICAgICByZXN3IDENCj4gKyAgLl9EUzog ICAgIHJlc3cgMQ0KPiArICAgICAgICAgICAgICAgICAgICByZXN3IDENCj4gKyAgLl9GUzogICAg IHJlc3cgMQ0KPiArICAgICAgICAgICAgICAgICAgICByZXN3IDENCj4gKyAgLl9HUzogICAgIHJl c3cgMQ0KPiArICAgICAgICAgICAgICAgICAgICByZXN3IDENCj4gKyAgLkxEVDogICAgIHJlc3cg MQ0KPiArICAgICAgICAgICAgICAgICAgICByZXN3IDENCj4gKyAgICAgICAgICAgICAgICAgICAg cmVzdyAxDQo+ICsgICAgICAgICAgICAgICAgICAgIHJlc3cgMQ0KPiArZW5kc3RydWMNCj4gKw0K PiArOw0KPiArOyBDb21tb25FeGNlcHRpb25IYW5kbGVyKCkNCj4gKzsNCj4gK2V4dGVybiBBU01f UEZYKENvbW1vbkV4Y2VwdGlvbkhhbmRsZXIpDQo+ICsNCj4gK1NFQ1RJT04gLmRhdGENCj4gKw0K PiArU0VDVElPTiAudGV4dA0KPiArDQo+ICtBTElHTiAgIDgNCj4gKw0KPiArOw0KPiArOyBleGNl cHRpb24gaGFuZGxlciBzdHViIHRhYmxlDQo+ICs7DQo+ICslbWFjcm8gRGVmRXhjZXB0aW9uVGFz a1N3dGljaEVudHJ5IDENCj4gKyUlRG9JcmV0Og0KPiArICAgIGlyZXRkDQo+ICsNCj4gK2dsb2Jh bCBBU01fUEZYKEV4Y2VwdGlvblRhc2tTd3RpY2hFbnRyeSUxKQ0KPiArQVNNX1BGWChFeGNlcHRp b25UYXNrU3d0aWNoRW50cnklMSk6DQo+ICsgICAgZGIgICAgICAweDZhICAgICAgICA7IHB1c2gg ICNWZWN0b3JOdW0NCj4gKyAgICBkYiAgICAgICUxICAgICAgICAgIDsgVmVjdG9yTnVtDQo+ICsg ICAgbW92ICAgICBlYXgsIEFTTV9QRlgoQ29tbW9uVGFza1N3dGljaEVudHJ5UG9pbnQpDQo+ICsg ICAgY2FsbCAgICBlYXgNCj4gKyAgICBtb3YgICAgIGVzcCwgZWF4ICAgIDsgUmVzdG9yZSBzdGFj ayB0b3ANCj4gKyAgICBqbXAgICAgICUlRG9JcmV0DQo+ICslZW5kbWFjcm8NCj4gKw0KPiArZ2xv YmFsIEFTTV9QRlgoQ29tbW9uVGFza1N3dGljaEVudHJ5UG9pbnQpDQo+ICtBU01fUEZYKENvbW1v blRhc2tTd3RpY2hFbnRyeVBvaW50KToNCj4gKyAgICA7DQo+ICsgICAgOyBTdGFjazoNCj4gKyAg ICA7ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0rIDwtLSBFQlAgLSA4DQo+ICsgICAgOyArICAgICAg IFRTUyBCYXNlICAgICAgKw0KPiArICAgIDsgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgPC0tIEVC UCAtIDQNCj4gKyAgICA7ICsgICAgICBDUFVJRC5FRFggICAgICArDQo+ICsgICAgOyArLS0tLS0t LS0tLS0tLS0tLS0tLS0tKyA8LS0gRUJQDQo+ICsgICAgOyArICAgICAgICAgRUlQICAgICAgICAg Kw0KPiArICAgIDsgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgPC0tIEVCUCArIDQNCj4gKyAgICA7 ICsgICAgVmVjdG9yIE51bWJlciAgICArDQo+ICsgICAgOyArLS0tLS0tLS0tLS0tLS0tLS0tLS0t KyA8LS0gRUJQICsgOA0KPiArICAgIDsgKyAgICBFcnJvciBDb2RlICAgICAgICsNCj4gKyAgICA7 ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0rDQo+ICsgICAgOw0KPiArOw0KPiArOyBHZXQgVFNTIG9m IGludGVycnVwdGVkIHRhc2sNCj4gKzsNCj4gKyAgICBtb3YgICAgIGVicCwgZXNwICAgICAgICAg ICAgICAgICAgICA7IFN0YWNrIGZyYW1lDQo+ICsNCj4gKzsgVXNlIENQVUlEIHRvIGRldGVybWlu ZSBpZiBGWFNBVkUvRlhSRVNUT1IgYW5kIERFIGFyZSBzdXBwb3J0ZWQNCj4gKyAgICBtb3YgICAg IGVheCwgMQ0KPiArICAgIGNwdWlkDQo+ICsgICAgcHVzaCAgICBlZHgNCj4gKw0KPiArOyBHZXQg VFNTIGJhc2Ugb2YgaW50ZXJydXB0ZWQgdGFzayB0aHJvdWdoIFByZXZpb3VzVGFza0xpbmsgZmll bGQgaW4NCj4gKzsgY3VycmVudCBUU1MgYmFzZQ0KPiArICAgIHN1YiAgICAgZXNwLCA4DQo+ICsg ICAgc2dkdCAgICBbZXNwICsgMl0NCj4gKyAgICBtb3YgICAgIGVheCwgW2VzcCArIDRdICAgICAg ICAgICAgICA7IEdEVCBiYXNlDQo+ICsgICAgYWRkICAgICBlc3AsIDgNCj4gKw0KPiArICAgIHhv ciAgICAgZWJ4LCBlYngNCj4gKyAgICBzdHIgICAgIGJ4ICAgICAgICAgICAgICAgICAgICAgICAg ICA7IEN1cnJlbnQgVFINCj4gKw0KPiArICAgIG1vdiAgICAgZWN4LCBbZWF4ICsgZWJ4ICsgMl0N Cj4gKyAgICBzaGwgICAgIGVjeCwgOA0KPiArICAgIG1vdiAgICAgY2wsIFtlYXggKyBlYnggKyA3 XQ0KPiArICAgIHJvciAgICAgZWN4LCA4ICAgICAgICAgICAgICAgICAgICAgIDsgZWN4ID0gQ3Vy cmVudCBUU1MgYmFzZQ0KPiArICAgIHB1c2ggICAgZWN4ICAgICAgICAgICAgICAgICAgICAgICAg IDsga2VlcCBpdCBpbiBzdGFjayBmb3IgbGF0ZXIgdXNlDQo+ICsNCj4gKyAgICBtb3Z6eCAgIGVi eCwgd29yZCBbZWN4XSAgICAgICAgICAgICA7IFByZXZpb3VzIFRhc2sgTGluaw0KPiArICAgIG1v diAgICAgZWN4LCBbZWF4ICsgZWJ4ICsgMl0NCj4gKyAgICBzaGwgICAgIGVjeCwgOA0KPiArICAg IG1vdiAgICAgY2wsIFtlYXggKyBlYnggKyA3XQ0KPiArICAgIHJvciAgICAgZWN4LCA4ICAgICAg ICAgICAgICAgICAgICAgIDsgZWN4ID0gUHJldmlvdXMgVFNTIGJhc2UNCj4gKw0KPiArOw0KPiAr OyBBbGlnbiBzdGFjayB0byBtYWtlIHN1cmUgdGhhdCBFRklfRlhfU0FWRV9TVEFURV9JQTMyIG9m DQo+IEVGSV9TWVNURU1fQ09OVEVYVF9JQTMyDQo+ICs7IGlzIDE2LWJ5dGUgYWxpZ25lZA0KPiAr Ow0KPiArICAgIGFuZCAgICAgZXNwLCAweGZmZmZmZmYwDQo+ICsgICAgc3ViICAgICBlc3AsIDEy DQo+ICsNCj4gKzs7IFVJTlQzMiAgRWRpLCBFc2ksIEVicCwgRXNwLCBFYngsIEVkeCwgRWN4LCBF YXg7DQo+ICsgICAgcHVzaCAgICBkd29yZCBbZWN4ICsgSUEzMl9UU1MuX0VBWF0NCj4gKyAgICBw dXNoICAgIGR3b3JkIFtlY3ggKyBJQTMyX1RTUy5fRUNYXQ0KPiArICAgIHB1c2ggICAgZHdvcmQg W2VjeCArIElBMzJfVFNTLl9FRFhdDQo+ICsgICAgcHVzaCAgICBkd29yZCBbZWN4ICsgSUEzMl9U U1MuX0VCWF0NCj4gKyAgICBwdXNoICAgIGR3b3JkIFtlY3ggKyBJQTMyX1RTUy5fRVNQXQ0KPiAr ICAgIHB1c2ggICAgZHdvcmQgW2VjeCArIElBMzJfVFNTLl9FQlBdDQo+ICsgICAgcHVzaCAgICBk d29yZCBbZWN4ICsgSUEzMl9UU1MuX0VTSV0NCj4gKyAgICBwdXNoICAgIGR3b3JkIFtlY3ggKyBJ QTMyX1RTUy5fRURJXQ0KPiArDQo+ICs7OyBVSU5UMzIgIEdzLCBGcywgRXMsIERzLCBDcywgU3M7 DQo+ICsgICAgbW92enggICBlYXgsIHdvcmQgW2VjeCArIElBMzJfVFNTLl9TU10NCj4gKyAgICBw dXNoICAgIGVheA0KPiArICAgIG1vdnp4ICAgZWF4LCB3b3JkIFtlY3ggKyBJQTMyX1RTUy5fQ1Nd DQo+ICsgICAgcHVzaCAgICBlYXgNCj4gKyAgICBtb3Z6eCAgIGVheCwgd29yZCBbZWN4ICsgSUEz Ml9UU1MuX0RTXQ0KPiArICAgIHB1c2ggICAgZWF4DQo+ICsgICAgbW92enggICBlYXgsIHdvcmQg W2VjeCArIElBMzJfVFNTLl9FU10NCj4gKyAgICBwdXNoICAgIGVheA0KPiArICAgIG1vdnp4ICAg ZWF4LCB3b3JkIFtlY3ggKyBJQTMyX1RTUy5fRlNdDQo+ICsgICAgcHVzaCAgICBlYXgNCj4gKyAg ICBtb3Z6eCAgIGVheCwgd29yZCBbZWN4ICsgSUEzMl9UU1MuX0dTXQ0KPiArICAgIHB1c2ggICAg ZWF4DQo+ICsNCj4gKzs7IFVJTlQzMiAgRWlwOw0KPiArICAgIHB1c2ggICAgZHdvcmQgW2VjeCAr IElBMzJfVFNTLkVJUF0NCj4gKw0KPiArOzsgVUlOVDMyICBHZHRyWzJdLCBJZHRyWzJdOw0KPiAr ICAgIHN1YiAgICAgZXNwLCA4DQo+ICsgICAgc2lkdCAgICBbZXNwXQ0KPiArICAgIG1vdiAgICAg ZWF4LCBbZXNwICsgMl0NCj4gKyAgICB4Y2hnICAgIGVheCwgW2VzcF0NCj4gKyAgICBhbmQgICAg IGVheCwgMHhGRkZGDQo+ICsgICAgbW92ICAgICBbZXNwKzRdLCBlYXgNCj4gKw0KPiArICAgIHN1 YiAgICAgZXNwLCA4DQo+ICsgICAgc2dkdCAgICBbZXNwXQ0KPiArICAgIG1vdiAgICAgZWF4LCBb ZXNwICsgMl0NCj4gKyAgICB4Y2hnICAgIGVheCwgW2VzcF0NCj4gKyAgICBhbmQgICAgIGVheCwg MHhGRkZGDQo+ICsgICAgbW92ICAgICBbZXNwKzRdLCBlYXgNCj4gKw0KPiArOzsgVUlOVDMyICBM ZHRyLCBUcjsNCj4gKyAgICBtb3YgICAgIGVheCwgZWJ4ICAgIDsgZWJ4IHN0aWxsIGtlZXBzIHNl bGVjdG9yIG9mIGludGVycnVwdGVkIHRhc2sNCj4gKyAgICBwdXNoICAgIGVheA0KPiArICAgIG1v dnp4ICAgZWF4LCB3b3JkIFtlY3ggKyBJQTMyX1RTUy5MRFRdDQo+ICsgICAgcHVzaCAgICBlYXgN Cj4gKw0KPiArOzsgVUlOVDMyICBFRmxhZ3M7DQo+ICsgICAgcHVzaCAgICBkd29yZCBbZWN4ICsg SUEzMl9UU1MuRUZMQUdTXQ0KPiArDQo+ICs7OyBVSU5UMzIgIENyMCwgQ3IxLCBDcjIsIENyMywg Q3I0Ow0KPiArICAgIG1vdiAgICAgZWF4LCBjcjQNCj4gKyAgICBwdXNoICAgIGVheCAgICAgICAg ICAgICA7IHB1c2ggY3I0IGZpcnN0bHkNCj4gKw0KPiArICAgIG1vdiAgICAgZWR4LCBbZWJwIC0g NF0gIDsgY3B1aWQuZWR4DQo+ICsgICAgdGVzdCAgICBlZHgsIEJJVDI0ICAgICAgOyBUZXN0IGZv ciBGWFNBVkUvRlhSRVNUT1Igc3VwcG9ydA0KPiArICAgIGp6ICAgICAgLjENCj4gKyAgICBvciAg ICAgIGVheCwgQklUOSAgICAgICA7IFNldCBDUjQuT1NGWFNSDQo+ICsuMToNCj4gKyAgICB0ZXN0 ICAgIGVkeCwgQklUMiAgICAgICA7IFRlc3QgZm9yIERlYnVnZ2luZyBFeHRlbnNpb25zIHN1cHBv cnQNCj4gKyAgICBqeiAgICAgIC4yDQo+ICsgICAgb3IgICAgICBlYXgsIEJJVDMgICAgICAgOyBT ZXQgQ1I0LkRFDQo+ICsuMjoNCj4gKyAgICBtb3YgICAgIGNyNCwgZWF4DQo+ICsNCj4gKyAgICBt b3YgICAgIGVheCwgY3IzDQo+ICsgICAgcHVzaCAgICBlYXgNCj4gKyAgICBtb3YgICAgIGVheCwg Y3IyDQo+ICsgICAgcHVzaCAgICBlYXgNCj4gKyAgICB4b3IgICAgIGVheCwgZWF4DQo+ICsgICAg cHVzaCAgICBlYXgNCj4gKyAgICBtb3YgICAgIGVheCwgY3IwDQo+ICsgICAgcHVzaCAgICBlYXgN Cj4gKw0KPiArOzsgVUlOVDMyICBEcjAsIERyMSwgRHIyLCBEcjMsIERyNiwgRHI3Ow0KPiArICAg IG1vdiAgICAgZWF4LCBkcjcNCj4gKyAgICBwdXNoICAgIGVheA0KPiArICAgIG1vdiAgICAgZWF4 LCBkcjYNCj4gKyAgICBwdXNoICAgIGVheA0KPiArICAgIG1vdiAgICAgZWF4LCBkcjMNCj4gKyAg ICBwdXNoICAgIGVheA0KPiArICAgIG1vdiAgICAgZWF4LCBkcjINCj4gKyAgICBwdXNoICAgIGVh eA0KPiArICAgIG1vdiAgICAgZWF4LCBkcjENCj4gKyAgICBwdXNoICAgIGVheA0KPiArICAgIG1v diAgICAgZWF4LCBkcjANCj4gKyAgICBwdXNoICAgIGVheA0KPiArDQo+ICs7OyBGWF9TQVZFX1NU QVRFX0lBMzIgRnhTYXZlU3RhdGU7DQo+ICs7OyBDbGVhciBUUyBiaXQgaW4gQ1IwIHRvIGF2b2lk IERldmljZSBOb3QgQXZhaWxhYmxlIEV4Y2VwdGlvbiAoI05NKQ0KPiArOzsgd2hlbiBleGVjdXRp bmcgZnhzYXZlL2Z4cnN0b3IgaW5zdHJ1Y3Rpb24NCj4gKyAgICB0ZXN0ICAgIGVkeCwgQklUMjQg IDsgVGVzdCBmb3IgRlhTQVZFL0ZYUkVTVE9SIHN1cHBvcnQuDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICA7IGVkeCBzdGlsbCBjb250YWlucyByZXN1bHQgZnJvbSBDUFVJRCBhYm92ZQ0KPiAr ICAgIGp6ICAgICAgLjMNCj4gKyAgICBjbHRzDQo+ICsgICAgc3ViICAgICBlc3AsIDUxMg0KPiAr ICAgIG1vdiAgICAgZWRpLCBlc3ANCj4gKyAgICBkYiAgICAgIDB4ZiwgMHhhZSwgMHg3IDtmeHNh dmUgW2VkaV0NCj4gKy4zOg0KPiArDQo+ICs7OyBVSU5UMzIgIEV4Y2VwdGlvbkRhdGE7DQo+ICsg ICAgcHVzaCAgICBkd29yZCBbZWJwICsgOF0NCj4gKw0KPiArOzsgVUVGSSBjYWxsaW5nIGNvbnZl bnRpb24gZm9yIElBMzIgcmVxdWlyZXMgdGhhdCBEaXJlY3Rpb24gZmxhZyBpbiBFRkxBR3MgaXMg Y2xlYXINCj4gKyAgICBjbGQNCj4gKw0KPiArOzsgY2FsbCBpbnRvIGV4Y2VwdGlvbiBoYW5kbGVy DQo+ICsgICAgbW92ICAgICBlc2ksIGVjeCAgICAgICAgICAgIDsgS2VlcCBUU1MgYmFzZSB0byBh dm9pZCBvdmVyd3JpdGUNCj4gKyAgICBtb3YgICAgIGVheCwgQVNNX1BGWChDb21tb25FeGNlcHRp b25IYW5kbGVyKQ0KPiArDQo+ICs7OyBQcmVwYXJlIHBhcmFtZXRlciBhbmQgY2FsbA0KPiArICAg IG1vdiAgICAgZWR4LCBlc3ANCj4gKyAgICBwdXNoICAgIGVkeCAgICAgICAgICAgICAgICAgOyBF RklfU1lTVEVNX0NPTlRFWFQNCj4gKyAgICBwdXNoICAgIGR3b3JkIFtlYnAgKyA0XSAgICAgOyBF RklfRVhDRVBUSU9OX1RZUEUgKHZlY3RvciBudW1iZXIpDQo+ICsNCj4gKyAgICA7DQo+ICsgICAg OyBDYWxsIEV4dGVybmFsIEV4Y2VwdGlvbiBIYW5kbGVyDQo+ICsgICAgOw0KPiArICAgIGNhbGwg ICAgZWF4DQo+ICsgICAgYWRkICAgICBlc3AsIDggICAgICAgICAgICAgIDsgUmVzdG9yZSBzdGFj ayBiZWZvcmUgY2FsbGluZw0KPiArICAgIG1vdiAgICAgZWN4LCBlc2kgICAgICAgICAgICA7IFJl c3RvcmUgVFNTIGJhc2UNCj4gKw0KPiArOzsgVUlOVDMyICBFeGNlcHRpb25EYXRhOw0KPiArICAg IGFkZCAgICAgZXNwLCA0DQo+ICsNCj4gKzs7IEZYX1NBVkVfU1RBVEVfSUEzMiBGeFNhdmVTdGF0 ZTsNCj4gKyAgICBtb3YgICAgIGVkeCwgW2VicCAtIDRdICA7IGNwdWlkLmVkeA0KPiArICAgIHRl c3QgICAgZWR4LCBCSVQyNCAgICAgIDsgVGVzdCBmb3IgRlhTQVZFL0ZYUkVTVE9SIHN1cHBvcnQN Cj4gKyAgICBqeiAgICAgIC40DQo+ICsgICAgbW92ICAgICBlc2ksIGVzcA0KPiArICAgIGRiICAg ICAgMHhmLCAweGFlLCAweGUgIDsgZnhyc3RvciBbZXNpXQ0KPiArLjQ6DQo+ICsgICAgYWRkICAg ICBlc3AsIDUxMg0KPiArDQo+ICs7OyBVSU5UMzIgIERyMCwgRHIxLCBEcjIsIERyMywgRHI2LCBE cjc7DQo+ICs7OyBTa2lwIHJlc3RvcmF0aW9uIG9mIERSeCByZWdpc3RlcnMgdG8gc3VwcG9ydCBk ZWJ1Z2dlcnMNCj4gKzs7IHRoYXQgc2V0IGJyZWFrcG9pbnRzIGluIGludGVycnVwdC9leGNlcHRp b24gY29udGV4dA0KPiArICAgIGFkZCAgICAgZXNwLCA0ICogNg0KPiArDQo+ICs7OyBVSU5UMzIg IENyMCwgQ3IxLCBDcjIsIENyMywgQ3I0Ow0KPiArICAgIHBvcCAgICAgZWF4DQo+ICsgICAgbW92 ICAgICBjcjAsIGVheA0KPiArICAgIGFkZCAgICAgZXNwLCA0ICAgIDsgbm90IGZvciBDcjENCj4g KyAgICBwb3AgICAgIGVheA0KPiArICAgIG1vdiAgICAgY3IyLCBlYXgNCj4gKyAgICBwb3AgICAg IGVheA0KPiArICAgIG1vdiAgICAgZHdvcmQgW2VjeCArIElBMzJfVFNTLl9DUjNdLCBlYXgNCj4g KyAgICBwb3AgICAgIGVheA0KPiArICAgIG1vdiAgICAgY3I0LCBlYXgNCj4gKw0KPiArOzsgVUlO VDMyICBFRmxhZ3M7DQo+ICsgICAgcG9wICAgICBkd29yZCBbZWN4ICsgSUEzMl9UU1MuRUZMQUdT XQ0KPiArICAgIG1vdiAgICAgZWJ4LCBkd29yZCBbZWN4ICsgSUEzMl9UU1MuRUZMQUdTXQ0KPiAr ICAgIGJ0ciAgICAgZWJ4LCA5ICAgICAgOyBEbyAnY2xpJw0KPiArICAgIG1vdiAgICAgZHdvcmQg W2VjeCArIElBMzJfVFNTLkVGTEFHU10sIGVieA0KPiArDQo+ICs7OyBVSU5UMzIgIExkdHIsIFRy Ow0KPiArOzsgVUlOVDMyICBHZHRyWzJdLCBJZHRyWzJdOw0KPiArOzsgQmVzdCBub3QgbGV0IGFu eW9uZSBtZXNzIHdpdGggdGhlc2UgcGFydGljdWxhciByZWdpc3RlcnMuLi4NCj4gKyAgICBhZGQg ICAgIGVzcCwgMjQNCj4gKw0KPiArOzsgVUlOVDMyICBFaXA7DQo+ICsgICAgcG9wICAgICBkd29y ZCBbZWN4ICsgSUEzMl9UU1MuRUlQXQ0KPiArDQo+ICs7OyBVSU5UMzIgIEdzLCBGcywgRXMsIERz LCBDcywgU3M7DQo+ICs7OyBOT1RFIC0gbW9kaWZpZWQgc2VnbWVudCByZWdpc3RlcnMgY291bGQg aGFuZyB0aGUgZGVidWdnZXIuLi4gIFdlDQo+ICs7OyAgICAgICAgY291bGQgYXR0ZW1wdCB0byBp bnN1bGF0ZSBvdXJzZWx2ZXMgYWdhaW5zdCB0aGlzIHBvc3NpYmlsaXR5LA0KPiArOzsgICAgICAg IGJ1dCB0aGF0IHBvc2VzIHJpc2tzIGFzIHdlbGwuDQo+ICs7Ow0KPiArICAgIHBvcCAgICAgZWF4 DQo+ICtvMTYgbW92ICAgICBbZWN4ICsgSUEzMl9UU1MuX0dTXSwgYXgNCj4gKyAgICBwb3AgICAg IGVheA0KPiArbzE2IG1vdiAgICAgW2VjeCArIElBMzJfVFNTLl9GU10sIGF4DQo+ICsgICAgcG9w ICAgICBlYXgNCj4gK28xNiBtb3YgICAgIFtlY3ggKyBJQTMyX1RTUy5fRVNdLCBheA0KPiArICAg IHBvcCAgICAgZWF4DQo+ICtvMTYgbW92ICAgICBbZWN4ICsgSUEzMl9UU1MuX0RTXSwgYXgNCj4g KyAgICBwb3AgICAgIGVheA0KPiArbzE2IG1vdiAgICAgW2VjeCArIElBMzJfVFNTLl9DU10sIGF4 DQo+ICsgICAgcG9wICAgICBlYXgNCj4gK28xNiBtb3YgICAgIFtlY3ggKyBJQTMyX1RTUy5fU1Nd LCBheA0KPiArDQo+ICs7OyBVSU5UMzIgIEVkaSwgRXNpLCBFYnAsIEVzcCwgRWJ4LCBFZHgsIEVj eCwgRWF4Ow0KPiArICAgIHBvcCAgICAgZHdvcmQgW2VjeCArIElBMzJfVFNTLl9FREldDQo+ICsg ICAgcG9wICAgICBkd29yZCBbZWN4ICsgSUEzMl9UU1MuX0VTSV0NCj4gKyAgICBhZGQgICAgIGVz cCwgNCAgIDsgbm90IGZvciBlYnANCj4gKyAgICBhZGQgICAgIGVzcCwgNCAgIDsgbm90IGZvciBl c3ANCj4gKyAgICBwb3AgICAgIGR3b3JkIFtlY3ggKyBJQTMyX1RTUy5fRUJYXQ0KPiArICAgIHBv cCAgICAgZHdvcmQgW2VjeCArIElBMzJfVFNTLl9FRFhdDQo+ICsgICAgcG9wICAgICBkd29yZCBb ZWN4ICsgSUEzMl9UU1MuX0VDWF0NCj4gKyAgICBwb3AgICAgIGR3b3JkIFtlY3ggKyBJQTMyX1RT Uy5fRUFYXQ0KPiArDQo+ICs7IFNldCBzaW5nbGUgc3RlcCBEQiMgdG8gYWxsb3cgZGVidWdnZXIg dG8gYWJsZSB0byBnbyBiYWNrIHRvIHRoZSBFSVANCj4gKzsgd2hlcmUgdGhlIGV4Y2VwdGlvbiBp cyB0cmlnZ2VyZWQuDQo+ICsNCj4gKzs7IENyZWF0ZSByZXR1cm4gY29udGV4dCBmb3IgaXJldGQg aW4gc3R1YiBmdW5jdGlvbg0KPiArICAgIG1vdiAgICBlYXgsIGR3b3JkIFtlY3ggKyBJQTMyX1RT Uy5fRVNQXSAgICAgIDsgR2V0IG9sZCBzdGFjayBwb2ludGVyDQo+ICsgICAgbW92ICAgIGVieCwg ZHdvcmQgW2VjeCArIElBMzJfVFNTLkVJUF0NCj4gKyAgICBtb3YgICAgW2VheCAtIDB4Y10sIGVi eCAgICAgICAgICAgICAgICAgICAgICA7IGNyZWF0ZSBFSVAgaW4gb2xkIHN0YWNrDQo+ICsgICAg bW92enggIGVieCwgd29yZCBbZWN4ICsgSUEzMl9UU1MuX0NTXQ0KPiArICAgIG1vdiAgICBbZWF4 IC0gMHg4XSwgZWJ4ICAgICAgICAgICAgICAgICAgICAgIDsgY3JlYXRlIENTIGluIG9sZCBzdGFj aw0KPiArICAgIG1vdiAgICBlYngsIGR3b3JkIFtlY3ggKyBJQTMyX1RTUy5FRkxBR1NdDQo+ICsg ICAgYnRzICAgIGVieCwgOA0KPiArICAgIG1vdiAgICBbZWF4IC0gMHg0XSwgZWJ4ICAgICAgICAg ICAgICAgICAgICAgIDsgY3JlYXRlIGVmbGFncyBpbiBvbGQgc3RhY2sNCj4gKyAgICBtb3YgICAg ZHdvcmQgW2VjeCArIElBMzJfVFNTLkVGTEFHU10sIGVieCAgICA7IHVwZGF0ZSBlZmxhZ3MgaW4g b2xkIFRTUw0KPiArICAgIG1vdiAgICBlYXgsIGR3b3JkIFtlY3ggKyBJQTMyX1RTUy5fRVNQXSAg ICAgIDsgR2V0IG9sZCBzdGFjayBwb2ludGVyDQo+ICsgICAgc3ViICAgIGVheCwgMHhjICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgOyBtaW51cyAxMiBieXRlDQo+ICsgICAgbW92ICAgIGR3 b3JkIFtlY3ggKyBJQTMyX1RTUy5fRVNQXSwgZWF4ICAgICAgOyBTZXQgbmV3IHN0YWNrIHBvaW50 ZXINCj4gKw0KPiArOzsgUmVwbGFjZSB0aGUgRUlQIG9mIGludGVycnVwdGVkIHRhc2sgd2l0aCBz dHViIGZ1bmN0aW9uDQo+ICsgICAgbW92ICAgIGVheCwgQVNNX1BGWChTaW5nbGVTdGVwU3R1YkZ1 bmN0aW9uKQ0KPiArICAgIG1vdiAgICBkd29yZCBbZWN4ICsgSUEzMl9UU1MuRUlQXSwgZWF4DQo+ ICsNCj4gKyAgICBtb3YgICAgIGVjeCwgW2VicCAtIDhdICAgICAgICAgICAgICAgICAgICAgICA7 IEdldCBjdXJyZW50IFRTUyBiYXNlDQo+ICsgICAgbW92ICAgICBlYXgsIGR3b3JkIFtlY3ggKyBJ QTMyX1RTUy5fRVNQXSAgICAgOyBSZXR1cm4gY3VycmVudCBzdGFjayB0b3ANCj4gKyAgICBtb3Yg ICAgIGVzcCwgZWJwDQo+ICsNCj4gKyAgICByZXQNCj4gKw0KPiArZ2xvYmFsIEFTTV9QRlgoU2lu Z2xlU3RlcFN0dWJGdW5jdGlvbikNCj4gK0FTTV9QRlgoU2luZ2xlU3RlcFN0dWJGdW5jdGlvbik6 DQo+ICs7DQo+ICs7IHdlIG5lZWQgY2xlYW4gVFMgYml0IGluIENSMCB0byBleGVjdXRlDQo+ICs7 IHg4NyBGUFUvTU1YL1NTRS9TU0UyL1NTRTMvU1NTRTMvU1NFNCBpbnN0cnVjdGlvbnMuDQo+ICs7 DQo+ICsgICAgY2x0cw0KPiArICAgIGlyZXRkDQo+ICsNCj4gKzstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0NCj4gKzsgVk9JRA0KPiArOyBBc21Xcml0ZVRyICgNCj4gKzsgICBVSU5UMTYgU2VsZWN0b3IN Cj4gKzsgICApOw0KPiArOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiArZ2xvYmFsIEFTTV9QRlgo QXNtV3JpdGVUcikNCj4gK0FTTV9QRlgoQXNtV3JpdGVUcik6DQo+ICsgICAgbW92ICAgICBlYXgs IFtlc3ArNF0NCj4gKyAgICBsdHIgICAgIGF4DQo+ICsgICAgcmV0DQo+ICsNCj4gK0RlZkV4Y2Vw dGlvblRhc2tTd3RpY2hFbnRyeSA2DQo+ICtEZWZFeGNlcHRpb25UYXNrU3d0aWNoRW50cnkgOA0K PiArRGVmRXhjZXB0aW9uVGFza1N3dGljaEVudHJ5IDEyDQo+ICtEZWZFeGNlcHRpb25UYXNrU3d0 aWNoRW50cnkgMTMNCj4gK0RlZkV4Y2VwdGlvblRhc2tTd3RpY2hFbnRyeSAxNA0KPiArRGVmRXhj ZXB0aW9uVGFza1N3dGljaEVudHJ5IDE3DQo+ICtEZWZFeGNlcHRpb25UYXNrU3d0aWNoRW50cnkg MTgNCj4gKw0KPiBkaWZmIC0tZ2l0DQo+IGEvVWVmaUNwdVBrZy9MaWJyYXJ5L0NwdUV4Y2VwdGlv bkhhbmRsZXJMaWIvUGVpQ3B1RXhjZXB0aW9uSGFuZGxlckxpYi5pbmYNCj4gYi9VZWZpQ3B1UGtn L0xpYnJhcnkvQ3B1RXhjZXB0aW9uSGFuZGxlckxpYi9QZWlDcHVFeGNlcHRpb25IYW5kbGVyTGli LmluZg0KPiBpbmRleCA3NTQ0MzI4OGE5Li40YzBkNDM1MTM2IDEwMDY0NA0KPiAtLS0NCj4gYS9V ZWZpQ3B1UGtnL0xpYnJhcnkvQ3B1RXhjZXB0aW9uSGFuZGxlckxpYi9QZWlDcHVFeGNlcHRpb25I YW5kbGVyTGliLmluZg0KPiArKysNCj4gYi9VZWZpQ3B1UGtnL0xpYnJhcnkvQ3B1RXhjZXB0aW9u SGFuZGxlckxpYi9QZWlDcHVFeGNlcHRpb25IYW5kbGVyTGliLmluZg0KPiBAQCAtMzAsNiArMzAs NyBAQA0KPiAgW1NvdXJjZXMuSWEzMl0NCj4gICAgSWEzMi9FeGNlcHRpb25IYW5kbGVyQXNtLmFz bQ0KPiAgICBJYTMyL0V4Y2VwdGlvbkhhbmRsZXJBc20ubmFzbQ0KPiArICBJYTMyL0V4Y2VwdGlv blRzc0VudHJ5QXNtLm5hc20NCj4gICAgSWEzMi9FeGNlcHRpb25IYW5kbGVyQXNtLlMNCj4gICAg SWEzMi9BcmNoRXhjZXB0aW9uSGFuZGxlci5jDQo+ICAgIElhMzIvQXJjaEludGVycnVwdERlZnMu aA0KPiBkaWZmIC0tZ2l0DQo+IGEvVWVmaUNwdVBrZy9MaWJyYXJ5L0NwdUV4Y2VwdGlvbkhhbmRs ZXJMaWIvU2VjUGVpQ3B1RXhjZXB0aW9uSGFuZGxlckxpYi5pDQo+IG5mDQo+IGIvVWVmaUNwdVBr Zy9MaWJyYXJ5L0NwdUV4Y2VwdGlvbkhhbmRsZXJMaWIvU2VjUGVpQ3B1RXhjZXB0aW9uSGFuZGxl ckxpYi5pDQo+IG5mDQo+IGluZGV4IGQ3MGE5OWMxMDAuLmFkYjQxNWJhNWEgMTAwNjQ0DQo+IC0t LQ0KPiBhL1VlZmlDcHVQa2cvTGlicmFyeS9DcHVFeGNlcHRpb25IYW5kbGVyTGliL1NlY1BlaUNw dUV4Y2VwdGlvbkhhbmRsZXJMaWIuaQ0KPiBuZg0KPiArKysNCj4gYi9VZWZpQ3B1UGtnL0xpYnJh cnkvQ3B1RXhjZXB0aW9uSGFuZGxlckxpYi9TZWNQZWlDcHVFeGNlcHRpb25IYW5kbGVyTGliLmkN Cj4gbmYNCj4gQEAgLTMwLDYgKzMwLDcgQEANCj4gIFtTb3VyY2VzLklhMzJdDQo+ICAgIElhMzIv RXhjZXB0aW9uSGFuZGxlckFzbS5hc20NCj4gICAgSWEzMi9FeGNlcHRpb25IYW5kbGVyQXNtLm5h c20NCj4gKyAgSWEzMi9FeGNlcHRpb25Uc3NFbnRyeUFzbS5uYXNtDQo+ICAgIElhMzIvRXhjZXB0 aW9uSGFuZGxlckFzbS5TDQo+ICAgIElhMzIvQXJjaEV4Y2VwdGlvbkhhbmRsZXIuYw0KPiAgICBJ YTMyL0FyY2hJbnRlcnJ1cHREZWZzLmgNCj4gQEAgLTU3LDMgKzU4LDUgQEANCj4gICAgUHJpbnRM aWINCj4gICAgTG9jYWxBcGljTGliDQo+ICAgIFBlQ29mZkdldEVudHJ5UG9pbnRMaWINCj4gKyAg TWVtb3J5QWxsb2NhdGlvbkxpYg0KPiArDQo+IGRpZmYgLS1naXQNCj4gYS9VZWZpQ3B1UGtnL0xp YnJhcnkvQ3B1RXhjZXB0aW9uSGFuZGxlckxpYi9TbW1DcHVFeGNlcHRpb25IYW5kbGVyTGliLmlu Zg0KPiBiL1VlZmlDcHVQa2cvTGlicmFyeS9DcHVFeGNlcHRpb25IYW5kbGVyTGliL1NtbUNwdUV4 Y2VwdGlvbkhhbmRsZXJMaWIuaW5mDQo+IGluZGV4IDYzNGZmY2IyMWQuLjU2Yjg3NWI3YzggMTAw NjQ0DQo+IC0tLQ0KPiBhL1VlZmlDcHVQa2cvTGlicmFyeS9DcHVFeGNlcHRpb25IYW5kbGVyTGli L1NtbUNwdUV4Y2VwdGlvbkhhbmRsZXJMaWIuaW5mDQo+ICsrKw0KPiBiL1VlZmlDcHVQa2cvTGli cmFyeS9DcHVFeGNlcHRpb25IYW5kbGVyTGliL1NtbUNwdUV4Y2VwdGlvbkhhbmRsZXJMaWIuaW5m DQo+IEBAIC0zMCw2ICszMCw3IEBADQo+ICBbU291cmNlcy5JYTMyXQ0KPiAgICBJYTMyL0V4Y2Vw dGlvbkhhbmRsZXJBc20uYXNtDQo+ICAgIElhMzIvRXhjZXB0aW9uSGFuZGxlckFzbS5uYXNtDQo+ ICsgIElhMzIvRXhjZXB0aW9uVHNzRW50cnlBc20ubmFzbQ0KPiAgICBJYTMyL0V4Y2VwdGlvbkhh bmRsZXJBc20uUw0KPiAgICBJYTMyL0FyY2hFeGNlcHRpb25IYW5kbGVyLmMNCj4gICAgSWEzMi9B cmNoSW50ZXJydXB0RGVmcy5oDQo+IGRpZmYgLS1naXQNCj4gYS9VZWZpQ3B1UGtnL0xpYnJhcnkv Q3B1RXhjZXB0aW9uSGFuZGxlckxpYi9YNjQvQXJjaEV4Y2VwdGlvbkhhbmRsZXIuYw0KPiBiL1Vl ZmlDcHVQa2cvTGlicmFyeS9DcHVFeGNlcHRpb25IYW5kbGVyTGliL1g2NC9BcmNoRXhjZXB0aW9u SGFuZGxlci5jDQo+IGluZGV4IDY1ZjBjZmY2ODAuLjI0ZjJhODQ4NmEgMTAwNjQ0DQo+IC0tLSBh L1VlZmlDcHVQa2cvTGlicmFyeS9DcHVFeGNlcHRpb25IYW5kbGVyTGliL1g2NC9BcmNoRXhjZXB0 aW9uSGFuZGxlci5jDQo+ICsrKyBiL1VlZmlDcHVQa2cvTGlicmFyeS9DcHVFeGNlcHRpb25IYW5k bGVyTGliL1g2NC9BcmNoRXhjZXB0aW9uSGFuZGxlci5jDQo+IEBAIC0xNCw2ICsxNCwxOSBAQA0K Pg0KPiAgI2luY2x1ZGUgIkNwdUV4Y2VwdGlvbkNvbW1vbi5oIg0KPg0KPiArLy8NCj4gKy8vIExp c3Qgb2YgZXhjZXB0aW9ucyBuZWVkaW5nIHNlcGFyYXRlIHN0YWNrDQo+ICsvLw0KPiArU1RBVElD IFVJTlROICBtRXhjZXB0aW9uc1dpdGhTdGFja1tdID0gew0KPiArICA2LCAgLy8jVUQ6IEludmFs aWQgT3Bjb2RlIEV4Y2VwdGlvbg0KPiArICA4LCAgLy8jREY6IERvdWJsZSBGYXVsdCBFeGNlcHRp b24NCj4gKyAgMTIsIC8vI1NTOiBTdGFjayBGYXVsdCBFeGNlcHRpb24NCj4gKyAgMTMsIC8vI0dQ OiBHZW5lcmFsIFByb3RlY3Rpb24gRXhjZXB0aW9uDQo+ICsgIDE0LCAvLyNQRjogUGFnZS1GYXVs dCBFeGNlcHRpb24NCj4gKyAgMTcsIC8vI0FDOiBBbGlnbm1lbnQgQ2hlY2sgRXhjZXB0aW9uDQo+ ICsgIDE4ICAvLyNNQzogTWFjaGluZS1DaGVjayBFeGNlcHRpb24NCj4gKyAgfTsNCj4gKw0KPiAg LyoqDQo+ICAgIFJldHVybiBhZGRyZXNzIG1hcCBvZiBleGNlcHRpb24gaGFuZGxlciB0ZW1wbGF0 ZSBzbyB0aGF0IEMgY29kZSBjYW4NCj4gZ2VuZXJhdGUNCj4gICAgZXhjZXB0aW9uIHRhYmxlcy4N Cj4gQEAgLTExMiw2ICsxMjUsMTAxIEBAIEFyY2hSZXN0b3JlRXhjZXB0aW9uQ29udGV4dCAoDQo+ ICAgIFN5c3RlbUNvbnRleHQuU3lzdGVtQ29udGV4dFg2NC0+RXhjZXB0aW9uRGF0YSA9DQo+IFJl c2VydmVkVmVjdG9yc1tFeGNlcHRpb25UeXBlXS5FeGNlcHRpb25EYXRhOw0KPiAgfQ0KPg0KPiAr LyoqDQo+ICsgIFNldHVwIHNlcGFyYXRlIHN0YWNrIGZvciBzcGVjaWZpYyBleGNlcHRpb25zLg0K PiArDQo+ICsgIEBwYXJhbVtpbl0gSWR0VGFibGUgICAgICAgIElEVCB0YWJsZSBiYXNlLg0KPiAr KiovDQo+ICtWT0lEDQo+ICtFRklBUEkNCj4gK0FyY2hTZXR1cEV4Y3BldGlvblN0YWNrICgNCj4g KyAgSU4gSUEzMl9JRFRfR0FURV9ERVNDUklQVE9SICAgICAgICAgICAqSWR0VGFibGUNCj4gKyAg KQ0KPiArew0KPiArICBWT0lEICAgICAgICAgICAgICAgICAgICAgICpOZXdHZHQ7DQo+ICsgIElB MzJfREVTQ1JJUFRPUiAgICAgICAgICAgR2R0RGVzYzsNCj4gKyAgVUlOVE4gICAgICAgICAgICAg ICAgICAgICBPbGRHZHRTaXplOw0KPiArICBUU1NfRU5UUklFUyAgICAgICAgICAgICAgICpUc3NF bnRyeTsNCj4gKyAgVUlOVE4gICAgICAgICAgICAgICAgICAgICBTdGFja0Jhc2U7DQo+ICsgIFVJ TlROICAgICAgICAgICAgICAgICAgICAgU3RhY2tUb3A7DQo+ICsgIFVJTlROICAgICAgICAgICAg ICAgICAgICAgU3RhY2tTaXplOw0KPiArICBVSU5UTiAgICAgICAgICAgICAgICAgICAgIFRzc0Jh c2U7DQo+ICsgIFVJTlROICAgICAgICAgICAgICAgICAgICAgSW5kZXg7DQo+ICsNCj4gKyAgLy8N Cj4gKyAgLy8gQWxsb2NhdGUgUnVudGltZSBEYXRhIGZvciB0aGUgR0RUDQo+ICsgIC8vDQo+ICsg IEFzbVJlYWRHZHRyKCZHZHREZXNjKTsNCj4gKyAgT2xkR2R0U2l6ZSA9IEdkdERlc2MuTGltaXQg KyAxOw0KPiArICBOZXdHZHQgPSBBbGxvY2F0ZVJ1bnRpbWVaZXJvUG9vbChPbGRHZHRTaXplICsg c2l6ZW9mKFRTU19FTlRSSUVTKQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAr IElBMzJfR0RUX0FMSUdOTUVOVCk7DQo+ICsgIGlmIChOZXdHZHQgPT0gTlVMTCkgew0KPiArICAg IHJldHVybjsNCj4gKyAgfQ0KPiArICBOZXdHZHQgPSBBTElHTl9QT0lOVEVSIChOZXdHZHQsIElB MzJfR0RUX0FMSUdOTUVOVCk7DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8gSW5pdGlhbGl6ZSBuZXcg R0RUIGVudHJpZXMNCj4gKyAgLy8NCj4gKyAgQ29weU1lbShOZXdHZHQsIChWT0lEICopR2R0RGVz Yy5CYXNlLCBPbGRHZHRTaXplKTsNCj4gKyAgR2R0RGVzYy5CYXNlID0gKFVJTlROKShWT0lEKilO ZXdHZHQ7DQo+ICsgIEdkdERlc2MuTGltaXQgPSAoVUlOVDE2KShPbGRHZHRTaXplICsgVFNTX09G RlNFVCAtIDEpOw0KPiArDQo+ICsgIC8vDQo+ICsgIC8vIFJlc2VydmUgc3RhdGNrIG1lbW9yeSBm b3Igc3VwcG9ydGVkIGV4Y2VwdGlvbnMNCj4gKyAgLy8NCj4gKyAgU3RhY2tTaXplID0gQVJSQVlf U0laRSAobUV4Y2VwdGlvbnNXaXRoU3RhY2spICogRVhDRVBUSU9OX1NUQUNLX1NJWkU7DQo+ICsg IFN0YWNrU2l6ZSA9IEVGSV9QQUdFU19UT19TSVpFIChFRklfU0laRV9UT19QQUdFUyAoU3RhY2tT aXplKSk7DQo+ICsgIFN0YWNrQmFzZSA9IChVSU5UNjQpQWxsb2NhdGVQYWdlcyAoRUZJX1NJWkVf VE9fUEFHRVMgKFN0YWNrU2l6ZSkpOw0KPiArICBpZiAoU3RhY2tCYXNlID09IDApIHsNCj4gKyAg ICBGcmVlUG9vbCAoTmV3R2R0KTsNCj4gKyAgICByZXR1cm47DQo+ICsgIH0NCj4gKw0KPiArICAv Lw0KPiArICAvLyBGaXh1cCBUU1MgZGVzY3JpcHRvcnMNCj4gKyAgLy8NCj4gKyAgVHNzRW50cnkg PSAoVk9JRCAqKShHZHREZXNjLkJhc2UgKyBPbGRHZHRTaXplKTsNCj4gKyAgVHNzQmFzZSA9IChV SU5UTikoVk9JRCAqKSZUc3NFbnRyeS0+VHNzOw0KPiArDQo+ICsgIFRzc0VudHJ5LT5Uc3NTZWcu TGltaXQxNV8wICAgICAgICAgICAgPQ0KPiBzaXplb2YoSUEzMl9UQVNLX1NUQVRFX1NFR01FTlQp IC0gMTsNCj4gKyAgVHNzRW50cnktPlRzc1NlZy5CYXNlMTVfMCAgICAgICAgICAgICA9IChVSU5U MTYpVHNzQmFzZTsNCj4gKyAgVHNzRW50cnktPlRzc1NlZy5CYXNlMjNfMTYgICAgICAgICAgICA9 IChVSU5UOCkoVHNzQmFzZSA+PiAxNik7DQo+ICsgIFRzc0VudHJ5LT5Uc3NTZWcuVHlwZSAgICAg ICAgICAgICAgICAgPSBJQTMyX0dEVF9UWVBFX1RTUzsNCj4gKyAgVHNzRW50cnktPlRzc1NlZy5M aW1pdDE5XzE2X2FuZF9mbGFncyA9IDA7DQo+ICsgIFRzc0VudHJ5LT5Uc3NTZWcuQmFzZTMxXzI0 ICAgICAgICAgICAgPSAoVUlOVDgpKFRzc0Jhc2UgPj4gMjQpOw0KPiArICBUc3NFbnRyeS0+VHNz U2VnLkJhc2U2M18zMiAgICAgICAgICAgID0gKFVJTlQzMikoVHNzQmFzZSA+PiAzMik7DQo+ICsg IFRzc0VudHJ5LT5Uc3NTZWcuUmVzZXJ2ZWQgICAgICAgICAgICAgPSAwOw0KPiArDQo+ICsgIC8v DQo+ICsgIC8vIEVuYWJsZSBJbnRlcnJ1cHQgU3RhY2sgVGFibGUgKElTVCkgZm9yIGVhY2ggcmVx dWlyZWQgZXhjZXB0aW9uDQo+ICsgIC8vDQo+ICsgIFN0YWNrVG9wICA9IFN0YWNrQmFzZSArIFN0 YWNrU2l6ZSAtIENQVV9TVEFDS19BTElHTk1FTlQ7DQo+ICsgIFN0YWNrVG9wICA9IChVSU5UTilB TElHTl9QT0lOVEVSIChTdGFja1RvcCwgQ1BVX1NUQUNLX0FMSUdOTUVOVCk7DQo+ICsgIGZvciAo SW5kZXggPSAwOyBJbmRleCA8IEFSUkFZX1NJWkUgKG1FeGNlcHRpb25zV2l0aFN0YWNrKTsgKytJ bmRleCkgew0KPiArICAgIC8vDQo+ICsgICAgLy8gRml4dXAgVFNTDQo+ICsgICAgLy8NCj4gKyAg ICBUc3NFbnRyeS0+VHNzLklTVFtJbmRleF0gPSBTdGFja1RvcDsNCj4gKyAgICBTdGFja1RvcCAt PSBFWENFUFRJT05fU1RBQ0tfU0laRTsNCj4gKw0KPiArICAgIC8vDQo+ICsgICAgLy8gU2V0IHRo ZSBJU1QgZmllbGQgdG8gMSB0byBlbmFibGUgY29ycmVzcG9uZGluZyBJU1QNCj4gKyAgICAvLw0K PiArICAgIElkdFRhYmxlW21FeGNlcHRpb25zV2l0aFN0YWNrW0luZGV4XV0uQml0cy5SZXNlcnZl ZF8wID0gKFVJTlQ4KShJbmRleCArDQo+IDEpOw0KPiArICB9DQo+ICsNCj4gKyAgLy8NCj4gKyAg Ly8gUHVibGlzaCB0aGUgY2hhbmdlcw0KPiArICAvLw0KPiArICBBc21Xcml0ZUdkdHIoJkdkdERl c2MpOw0KPiArDQo+ICsgIC8vDQo+ICsgIC8vIExvYWQgdGFzayByZWdpc3Rlcg0KPiArICAvLw0K PiArICBBc21Xcml0ZVRyICgoVUlOVDE2KShPbGRHZHRTaXplICsgVFNTX1NFTCkpOw0KPiArfQ0K PiArDQo+ICAvKioNCj4gICAgRGlzcGxheSBDUFUgaW5mb3JtYXRpb24uDQo+DQo+IGRpZmYgLS1n aXQNCj4gYS9VZWZpQ3B1UGtnL0xpYnJhcnkvQ3B1RXhjZXB0aW9uSGFuZGxlckxpYi9YNjQvQXJj aEludGVycnVwdERlZnMuaA0KPiBiL1VlZmlDcHVQa2cvTGlicmFyeS9DcHVFeGNlcHRpb25IYW5k bGVyTGliL1g2NC9BcmNoSW50ZXJydXB0RGVmcy5oDQo+IGluZGV4IDkwNjQ4MDEzNGEuLjVhOTEz YmFlN2IgMTAwNjQ0DQo+IC0tLSBhL1VlZmlDcHVQa2cvTGlicmFyeS9DcHVFeGNlcHRpb25IYW5k bGVyTGliL1g2NC9BcmNoSW50ZXJydXB0RGVmcy5oDQo+ICsrKyBiL1VlZmlDcHVQa2cvTGlicmFy eS9DcHVFeGNlcHRpb25IYW5kbGVyTGliL1g2NC9BcmNoSW50ZXJydXB0RGVmcy5oDQo+IEBAIC00 Myw0ICs0Myw0NCBAQCB0eXBlZGVmIHN0cnVjdCB7DQo+ICAgIFVJTlQ4ICAgICAgIEhvb2tBZnRl clN0dWJIZWFkZXJDb2RlW0hPT0tBRlRFUl9TVFVCX1NJWkVdOw0KPiAgfSBSRVNFUlZFRF9WRUNU T1JTX0RBVEE7DQo+DQo+ICsjcHJhZ21hIHBhY2sgKDEpDQo+ICsNCj4gKyNkZWZpbmUgRVhDRVBU SU9OX0xJU1RfTUFYICAgICAgICA3DQo+ICsjZGVmaW5lIEVYQ0VQVElPTl9TVEFDS19TSVpFICAg ICAgRUZJX1BBR0VfU0laRQ0KPiArI2RlZmluZSBJQTMyX0dEVF9UWVBFX1RTUyAgICAgICAgIDB4 ODkNCj4gKyNkZWZpbmUgSUEzMl9HRFRfQUxJR05NRU5UICAgICAgICA4DQo+ICsNCj4gK3R5cGVk ZWYgc3RydWN0IHsNCj4gKyAgVUlOVDMyICAgIFJlc2VydmVkXzA7DQo+ICsgIFVJTlQ2NCAgICBS U1AwOw0KPiArICBVSU5UNjQgICAgUlNQMTsNCj4gKyAgVUlOVDY0ICAgIFJTUDI7DQo+ICsgIFVJ TlQ2NCAgICBSZXNlcnZlZF8yODsNCj4gKyAgVUlOVDY0ICAgIElTVFs3XTsNCj4gKyAgVUlOVDY0 ICAgIFJlc2VydmVkXzkyOw0KPiArICBVSU5UMTYgICAgUmVzZXJ2ZWRfMTAwOw0KPiArICBVSU5U MTYgICAgSU9NYXBCYXNlQWRkcmVzczsNCj4gK30gSUEzMl9UQVNLX1NUQVRFX1NFR01FTlQ7DQo+ ICsNCj4gK3R5cGVkZWYgc3RydWN0IHsNCj4gKyAgVUlOVDE2ICAgIExpbWl0MTVfMDsNCj4gKyAg VUlOVDE2ICAgIEJhc2UxNV8wOw0KPiArICBVSU5UOCAgICAgQmFzZTIzXzE2Ow0KPiArICBVSU5U OCAgICAgVHlwZTsNCj4gKyAgVUlOVDggICAgIExpbWl0MTlfMTZfYW5kX2ZsYWdzOw0KPiArICBV SU5UOCAgICAgQmFzZTMxXzI0Ow0KPiArICBVSU5UMzIgICAgQmFzZTYzXzMyOw0KPiArICBVSU5U MzIgICAgUmVzZXJ2ZWQ7DQo+ICt9IElBMzJfVFNTX0RFU0NSSVBUT1I7DQo+ICsNCj4gK3R5cGVk ZWYgc3RydWN0IHsNCj4gKyAgSUEzMl9UU1NfREVTQ1JJUFRPUiAgICAgICAgICAgVHNzU2VnOw0K PiArICBJQTMyX1RBU0tfU1RBVEVfU0VHTUVOVCAgICAgICBUc3M7DQo+ICt9IFRTU19FTlRSSUVT Ow0KPiArDQo+ICsjcHJhZ21hIHBhY2sgKCkNCj4gKw0KPiArI2RlZmluZSBUU1NfU0VMICAgICAg ICAgICBPRkZTRVRfT0YgKFRTU19FTlRSSUVTLCBUc3NTZWcpDQo+ICsjZGVmaW5lIFRTU19PRkZT RVQgICAgICAgIE9GRlNFVF9PRiAoVFNTX0VOVFJJRVMsIFRzcykNCj4gKw0KPiAgI2VuZGlmDQo+ IGRpZmYgLS1naXQNCj4gYS9VZWZpQ3B1UGtnL0xpYnJhcnkvQ3B1RXhjZXB0aW9uSGFuZGxlckxp Yi9YNjQvRXhjZXB0aW9uSGFuZGxlckFzbS5TDQo+IGIvVWVmaUNwdVBrZy9MaWJyYXJ5L0NwdUV4 Y2VwdGlvbkhhbmRsZXJMaWIvWDY0L0V4Y2VwdGlvbkhhbmRsZXJBc20uUw0KPiBpbmRleCBlZGQz NjNjZGFhLi5iZGFmMTMyY2Y1IDEwMDY0NA0KPiAtLS0gYS9VZWZpQ3B1UGtnL0xpYnJhcnkvQ3B1 RXhjZXB0aW9uSGFuZGxlckxpYi9YNjQvRXhjZXB0aW9uSGFuZGxlckFzbS5TDQo+ICsrKw0KPiBi L1VlZmlDcHVQa2cvTGlicmFyeS9DcHVFeGNlcHRpb25IYW5kbGVyTGliL1g2NC9FeGNlcHRpb25I YW5kbGVyQXNtLlMNCj4gQEAgLTQyOSw2ICs0MjksMTggQEAgQVNNX1BGWChBc21WZWN0b3JOdW1G aXh1cCk6DQo+ICAgICAgcG9wcSAgICAgICVyYnANCj4gICAgICByZXQNCj4NCj4gKyMtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0NCj4gKyMgVk9JRA0KPiArIyBBc21Xcml0ZVRyICgNCj4gKyMgICBVSU5U MTYgU2VsZWN0b3INCj4gKyMgICApOw0KPiArIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiArQVNN X0dMT0JBTCBBU01fUEZYKEFzbVdyaXRlVHIpDQo+ICtBU01fUEZYKEFzbVdyaXRlVHIpOg0KPiAr ICAgIG1vdmwgICAgJWVjeCwgJWVheA0KPiArICAgIGx0cncgICAgJWF4DQo+ICsgICAgcmV0DQo+ ICsNCj4gICNFTkQNCj4NCj4NCj4gZGlmZiAtLWdpdA0KPiBhL1VlZmlDcHVQa2cvTGlicmFyeS9D cHVFeGNlcHRpb25IYW5kbGVyTGliL1g2NC9FeGNlcHRpb25IYW5kbGVyQXNtLmFzbQ0KPiBiL1Vl ZmlDcHVQa2cvTGlicmFyeS9DcHVFeGNlcHRpb25IYW5kbGVyTGliL1g2NC9FeGNlcHRpb25IYW5k bGVyQXNtLmFzbQ0KPiBpbmRleCA3MjZjNjRhMTQwLi5hZWM1NmVmNGJmIDEwMDY0NA0KPiAtLS0N Cj4gYS9VZWZpQ3B1UGtnL0xpYnJhcnkvQ3B1RXhjZXB0aW9uSGFuZGxlckxpYi9YNjQvRXhjZXB0 aW9uSGFuZGxlckFzbS5hc20NCj4gKysrDQo+IGIvVWVmaUNwdVBrZy9MaWJyYXJ5L0NwdUV4Y2Vw dGlvbkhhbmRsZXJMaWIvWDY0L0V4Y2VwdGlvbkhhbmRsZXJBc20uYXNtDQo+IEBAIC0zODYsNCAr Mzg2LDE2IEBAIEFzbVZlY3Rvck51bUZpeHVwICAgUFJPQw0KPiAgICAgIHJldA0KPiAgQXNtVmVj dG9yTnVtRml4dXAgICBFTkRQDQo+DQo+ICs7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ICs7IFZP SUQNCj4gKzsgQXNtV3JpdGVUciAoDQo+ICs7ICAgVUlOVDE2IFNlbGVjdG9yDQo+ICs7ICAgKTsN Cj4gKzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gK0FzbVdyaXRlVHIgUFJPQyBQVUJMSUMNCj4g KyAgICBtb3YgICAgIGVheCwgZWN4DQo+ICsgICAgbHRyICAgICBheA0KPiArICAgIHJldA0KPiAr QXNtV3JpdGVUciBFTkRQDQo+ICsNCj4gIEVORA0KPiBkaWZmIC0tZ2l0DQo+IGEvVWVmaUNwdVBr Zy9MaWJyYXJ5L0NwdUV4Y2VwdGlvbkhhbmRsZXJMaWIvWDY0L0V4Y2VwdGlvbkhhbmRsZXJBc20u bmFzbQ0KPiBiL1VlZmlDcHVQa2cvTGlicmFyeS9DcHVFeGNlcHRpb25IYW5kbGVyTGliL1g2NC9F eGNlcHRpb25IYW5kbGVyQXNtLm5hc20NCj4gaW5kZXggYmE4OTkzZDg0Yi4uMWUyYWM0MTFiMCAx MDA2NDQNCj4gLS0tDQo+IGEvVWVmaUNwdVBrZy9MaWJyYXJ5L0NwdUV4Y2VwdGlvbkhhbmRsZXJM aWIvWDY0L0V4Y2VwdGlvbkhhbmRsZXJBc20ubmFzbQ0KPiArKysNCj4gYi9VZWZpQ3B1UGtnL0xp YnJhcnkvQ3B1RXhjZXB0aW9uSGFuZGxlckxpYi9YNjQvRXhjZXB0aW9uSGFuZGxlckFzbS5uYXNt DQo+IEBAIC0zODUsMyArMzg1LDE1IEBAIEFTTV9QRlgoQXNtVmVjdG9yTnVtRml4dXApOg0KPiAg ICAgIG1vdiAgICAgW3JjeCArIChAVmVjdG9yTnVtIC0gSG9va0FmdGVyU3R1YkhlYWRlckJlZ2lu KV0sIGFsDQo+ICAgICAgcmV0DQo+DQo+ICs7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ICs7IFZP SUQNCj4gKzsgQXNtV3JpdGVUciAoDQo+ICs7ICAgVUlOVDE2IFNlbGVjdG9yDQo+ICs7ICAgKTsN Cj4gKzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gK2dsb2JhbCBBU01fUEZYKEFzbVdyaXRlVHIp DQo+ICtBU01fUEZYKEFzbVdyaXRlVHIpOg0KPiArICAgIG1vdiAgICAgZWF4LCBlY3gNCj4gKyAg ICBsdHIgICAgIGF4DQo+ICsgICAgcmV0DQo+ICsNCj4gLS0NCj4gMi4xNC4xLndpbmRvd3MuMQ0K DQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KZWRrMi1k ZXZlbCBtYWlsaW5nIGxpc3QNCmVkazItZGV2ZWxAbGlzdHMuMDEub3JnPG1haWx0bzplZGsyLWRl dmVsQGxpc3RzLjAxLm9yZz4NCmh0dHBzOi8vbGlzdHMuMDEub3JnL21haWxtYW4vbGlzdGluZm8v ZWRrMi1kZXZlbA0KDQoNCg==