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.100; helo=mga07.intel.com; envelope-from=michael.d.kinney@intel.com; receiver=edk2-devel@lists.01.org Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) (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 DF5CB2110C836 for ; Mon, 4 Jun 2018 13:24:15 -0700 (PDT) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga007.jf.intel.com ([10.7.209.58]) by orsmga105.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 04 Jun 2018 13:24:14 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.49,476,1520924400"; d="scan'208";a="46379420" Received: from orsmsx109.amr.corp.intel.com ([10.22.240.7]) by orsmga007.jf.intel.com with ESMTP; 04 Jun 2018 13:24:14 -0700 Received: from orsmsx159.amr.corp.intel.com (10.22.240.24) by ORSMSX109.amr.corp.intel.com (10.22.240.7) with Microsoft SMTP Server (TLS) id 14.3.319.2; Mon, 4 Jun 2018 13:24:14 -0700 Received: from orsmsx113.amr.corp.intel.com ([169.254.9.88]) by ORSMSX159.amr.corp.intel.com ([169.254.11.44]) with mapi id 14.03.0319.002; Mon, 4 Jun 2018 13:24:13 -0700 From: "Kinney, Michael D" To: Ard Biesheuvel , Leif Lindholm , "Kinney, Michael D" CC: "edk2-devel@lists.01.org" , "Dong, Eric" , "Zeng, Star" Thread-Topic: [edk2] [Patch v3 2/3] MdeModulePkg: Add DisplayUpdateProgressLib instances Thread-Index: AQHT8+/sVf0vpljxBU6WphP3OFUc2qRKLRqAgAZqVlA= Date: Mon, 4 Jun 2018 20:24:13 +0000 Message-ID: References: <20180525061552.19840-1-michael.d.kinney@intel.com> <20180525061552.19840-3-michael.d.kinney@intel.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-version: 11.0.200.100 dlp-reaction: no-action x-originating-ip: [10.22.254.140] MIME-Version: 1.0 Subject: Re: [Patch v3 2/3] MdeModulePkg: Add DisplayUpdateProgressLib instances X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.26 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 04 Jun 2018 20:24:16 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 QXJkLA0KDQpUaGVyZSBhcmUgYSBudW1iZXIgb2YgY29uZGl0aW9ucyB0aGF0IA0KRGlzcGxheVVw ZGF0ZVByb2dyZXNzTGliR3JhcGhpY3Mgd2lsbCBub3QgZGlzcGxheSBhDQpQcm9ncmVzcyBiYXIu DQoqIE5vIEdPUA0KKiBObyBFREsgSUkgQm9vdCBMb2dvIDIgUHJvdG9jb2wNCiogVGhlIEVESyBJ SSBCb290IExvZ28gMiBQcm90b2NvbCBHZXRCb290TG9nbygpIHNlcnZpY2UgZG9lcw0KICBub3Qg cmV0dXJuIGEgbG9nbw0KDQpJZiBjYXBzdWxlcyBhcmUgcHJvY2Vzc2VkIHdoZW4gb25seSBhIHRl eHQgY29uc29sZQ0KaXMgcHJlc2VudCwgdGhlbiB0aGUgdGV4dCB2ZXJzaW9uIG9mIHRoZSBsaWIg c2hvdWxkIGJlDQp1c2VkLg0KDQogIERpc3BsYXlVcGRhdGVQcm9ncmVzc0xpYnxNZGVNb2R1bGVQ a2cvTGlicmFyeS9EaXNwbGF5VXBkYXRlUHJvZ3Jlc3NMaWJUZXh0L0Rpc3BsYXlVcGRhdGVQcm9n cmVzc0xpYlRleHQuaW5mDQoNCkJlc3QgcmVnYXJkcywNCg0KTWlrZQ0KDQo+IC0tLS0tT3JpZ2lu YWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IEFyZCBCaWVzaGV1dmVsIFttYWlsdG86YXJkLmJpZXNo ZXV2ZWxAbGluYXJvLm9yZ10NCj4gU2VudDogVGh1cnNkYXksIE1heSAzMSwgMjAxOCA0OjA5IEFN DQo+IFRvOiBLaW5uZXksIE1pY2hhZWwgRCA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+OyBM ZWlmDQo+IExpbmRob2xtIDxsZWlmLmxpbmRob2xtQGxpbmFyby5vcmc+DQo+IENjOiBlZGsyLWRl dmVsQGxpc3RzLjAxLm9yZzsgRG9uZywgRXJpYw0KPiA8ZXJpYy5kb25nQGludGVsLmNvbT47IFpl bmcsIFN0YXIgPHN0YXIuemVuZ0BpbnRlbC5jb20+DQo+IFN1YmplY3Q6IFJlOiBbZWRrMl0gW1Bh dGNoIHYzIDIvM10gTWRlTW9kdWxlUGtnOiBBZGQNCj4gRGlzcGxheVVwZGF0ZVByb2dyZXNzTGli IGluc3RhbmNlcw0KPiANCj4gKCsgTGVpZikNCj4gDQo+IE9uIDI1IE1heSAyMDE4IGF0IDA4OjE1 LCBNaWNoYWVsIEQgS2lubmV5DQo+IDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4gd3JvdGU6 DQo+ID4gaHR0cHM6Ly9idWd6aWxsYS50aWFub2NvcmUub3JnL3Nob3dfYnVnLmNnaT9pZD04MDEN Cj4gPg0KPiA+IEJhc2VkIG9uIGNvbnRlbnQgZnJvbSB0aGUgZm9sbG93aW5nIGJyYW5jaC9jb21t aXRzOg0KPiA+DQo+IGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvTVNfVUVGSS90cmVlL3No YXJlL01zQ2Fwc3VsDQo+IGVTdXBwb3J0DQo+ID4NCj4gPiBBZGQgRGlzcGxheVVwZGF0ZVByb2dy ZXNzTGliIGluc3RhbmNlcyBmb3IgdGV4dA0KPiBjb25zb2xlcw0KPiA+IGFuZCBncmFwaGljYWwg Y29uc29sZXMuDQo+ID4NCj4gDQo+IEhlbGxvIE1pa2UsDQo+IA0KPiBJcyBpdCBjb3JyZWN0IHRo YXQgRGlzcGxheVVwZGF0ZVByb2dyZXNzTGliR3JhcGhpY3MNCj4gc2hvd3Mgbm8gb3V0cHV0IGF0 DQo+IGFsbCBpZiBubyBHT1AgaW5zdGFuY2UgaXMgZGV0ZWN0ZWQ/DQo+IA0KPiBUaGUgY3VycmVu dCBGbGFzaEFjY2Vzc0xpYiBpbXBsZW1lbnRhdGlvbiBJIGhhdmUgZm9yDQo+IFN5blF1YWNlciBm YWxscw0KPiBiYWNrIHRvIGNvbnNvbGUgb3V0cHV0IGluIHRoYXQgY2FzZSwgc28gaXQgd291bGQg cmVncmVzcw0KPiB0byBoYXZpbmcgbm8NCj4gdmlzaWJsZSBwcm9ncmVzcyBpbmRpY2F0aW9uIHdo YXRzb2V2ZXIgaWYgSSBtb3ZlIGl0IHRvDQo+IHRoaXMgbGlicmFyeS4NCj4gV2hhdCBkbyB5b3Ug cmVjb21tZW5kIGluIHRoaXMgY2FzZT8gQ2FuIHdlIHVzZSB0aGUNCj4gcmVzdWx0IGNvZGUgb2Yg dGhlDQo+IHByb2dyZXNzIHJlcG9ydGluZyBjYWxsYmFjayBhcyBhbiBpbmRpY2F0aW9uIG9mIGEN Cj4gbWlzc2luZyBHT1AsIGFuZA0KPiByZXRhaW4gdGhlIGZhbGxiYWNrIGluIEZsYXNoQWNjZXNz TGliIGluIHRoaXMgY2FzZT8NCj4gDQo+IA0KPiANCj4gPiBDYzogU2VhbiBCcm9nYW4gPHNlYW4u YnJvZ2FuQG1pY3Jvc29mdC5jb20+DQo+ID4gQ2M6IFN0YXIgWmVuZyA8c3Rhci56ZW5nQGludGVs LmNvbT4NCj4gPiBDYzogRXJpYyBEb25nIDxlcmljLmRvbmdAaW50ZWwuY29tPg0KPiA+IFNpZ25l ZC1vZmYtYnk6IE1pY2hhZWwgRCBLaW5uZXkNCj4gPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29t Pg0KPiA+IENvbnRyaWJ1dGVkLXVuZGVyOiBUaWFub0NvcmUgQ29udHJpYnV0aW9uIEFncmVlbWVu dA0KPiAxLjENCj4gPiAtLS0NCj4gPiAgLi4uL0Rpc3BsYXlVcGRhdGVQcm9ncmVzc0xpYkdyYXBo aWNzLmMgICAgICAgICAgICAgfA0KPiA0NzUgKysrKysrKysrKysrKysrKysrKysrDQo+ID4gIC4u Li9EaXNwbGF5VXBkYXRlUHJvZ3Jlc3NMaWJHcmFwaGljcy5pbmYgICAgICAgICAgIHwNCj4gNjAg KysrDQo+ID4gIC4uLi9EaXNwbGF5VXBkYXRlUHJvZ3Jlc3NMaWJHcmFwaGljcy51bmkgICAgICAg ICAgIHwNCj4gMTggKw0KPiA+ICAuLi4vRGlzcGxheVVwZGF0ZVByb2dyZXNzTGliVGV4dC5jICAg ICAgICAgICAgICAgICB8DQo+IDE3NCArKysrKysrKw0KPiA+ICAuLi4vRGlzcGxheVVwZGF0ZVBy b2dyZXNzTGliVGV4dC5pbmYgICAgICAgICAgICAgICB8DQo+IDUzICsrKw0KPiA+ICAuLi4vRGlz cGxheVVwZGF0ZVByb2dyZXNzTGliVGV4dC51bmkgICAgICAgICAgICAgICB8DQo+IDE4ICsNCj4g PiAgTWRlTW9kdWxlUGtnL01kZU1vZHVsZVBrZy5kc2MgICAgICAgICAgICAgICAgICAgICAgfA0K PiAzICsNCj4gPiAgNyBmaWxlcyBjaGFuZ2VkLCA4MDEgaW5zZXJ0aW9ucygrKQ0KPiA+ICBjcmVh dGUgbW9kZSAxMDA2NDQNCj4gTWRlTW9kdWxlUGtnL0xpYnJhcnkvRGlzcGxheVVwZGF0ZVByb2dy ZXNzTGliR3JhcGhpY3MvRGkNCj4gc3BsYXlVcGRhdGVQcm9ncmVzc0xpYkdyYXBoaWNzLmMNCj4g PiAgY3JlYXRlIG1vZGUgMTAwNjQ0DQo+IE1kZU1vZHVsZVBrZy9MaWJyYXJ5L0Rpc3BsYXlVcGRh dGVQcm9ncmVzc0xpYkdyYXBoaWNzL0RpDQo+IHNwbGF5VXBkYXRlUHJvZ3Jlc3NMaWJHcmFwaGlj cy5pbmYNCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0DQo+IE1kZU1vZHVsZVBrZy9MaWJyYXJ5L0Rp c3BsYXlVcGRhdGVQcm9ncmVzc0xpYkdyYXBoaWNzL0RpDQo+IHNwbGF5VXBkYXRlUHJvZ3Jlc3NM aWJHcmFwaGljcy51bmkNCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0DQo+IE1kZU1vZHVsZVBrZy9M aWJyYXJ5L0Rpc3BsYXlVcGRhdGVQcm9ncmVzc0xpYlRleHQvRGlzcGxhDQo+IHlVcGRhdGVQcm9n cmVzc0xpYlRleHQuYw0KPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQNCj4gTWRlTW9kdWxlUGtnL0xp YnJhcnkvRGlzcGxheVVwZGF0ZVByb2dyZXNzTGliVGV4dC9EaXNwbGENCj4geVVwZGF0ZVByb2dy ZXNzTGliVGV4dC5pbmYNCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0DQo+IE1kZU1vZHVsZVBrZy9M aWJyYXJ5L0Rpc3BsYXlVcGRhdGVQcm9ncmVzc0xpYlRleHQvRGlzcGxhDQo+IHlVcGRhdGVQcm9n cmVzc0xpYlRleHQudW5pDQo+ID4NCj4gPiBkaWZmIC0tZ2l0DQo+IGEvTWRlTW9kdWxlUGtnL0xp YnJhcnkvRGlzcGxheVVwZGF0ZVByb2dyZXNzTGliR3JhcGhpY3MvDQo+IERpc3BsYXlVcGRhdGVQ cm9ncmVzc0xpYkdyYXBoaWNzLmMNCj4gYi9NZGVNb2R1bGVQa2cvTGlicmFyeS9EaXNwbGF5VXBk YXRlUHJvZ3Jlc3NMaWJHcmFwaGljcy8NCj4gRGlzcGxheVVwZGF0ZVByb2dyZXNzTGliR3JhcGhp Y3MuYw0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMDAwMC4uMDA3 NTIyY2VhMA0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysNCj4gYi9NZGVNb2R1bGVQa2cvTGli cmFyeS9EaXNwbGF5VXBkYXRlUHJvZ3Jlc3NMaWJHcmFwaGljcy8NCj4gRGlzcGxheVVwZGF0ZVBy b2dyZXNzTGliR3JhcGhpY3MuYw0KPiA+IEBAIC0wLDAgKzEsNDc1IEBADQo+ID4gKy8qKiAgQGZp bGUNCj4gPiArICBQcm92aWRlcyBzZXJ2aWNlcyB0byBkaXNwbGF5IGNvbXBsZXRpb24gcHJvZ3Jl c3Mgb2YNCj4gYSBmaXJtd2FyZSB1cGRhdGUgb24gYQ0KPiA+ICsgIGdyYXBoaWNhbCBjb25zb2xl IHRoYXQgc3VwcG9ydHMgdGhlIEdyYXBoaWNzIE91dHB1dA0KPiBQcm90b2NvbC4NCj4gPiArDQo+ ID4gKyAgQ29weXJpZ2h0IChjKSAyMDE2LCBNaWNyb3NvZnQgQ29ycG9yYXRpb24uIEFsbA0KPiBy aWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ICsgIENvcHlyaWdodCAoYykgMjAxOCwgSW50ZWwgQ29y cG9yYXRpb24uIEFsbCByaWdodHMNCj4gcmVzZXJ2ZWQuPEJSPg0KPiA+ICsNCj4gPiArICBSZWRp c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLA0KPiB3aXRoIG9y IHdpdGhvdXQNCj4gPiArICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh dCB0aGUNCj4gZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoNCj4gPiArICAxLiBSZWRpc3Ry aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlDQo+IGFib3ZlIGNvcHlyaWdo dCBub3RpY2UsDQo+ID4gKyAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp bmcNCj4gZGlzY2xhaW1lci4NCj4gPiArICAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv cm0gbXVzdCByZXByb2R1Y2UNCj4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsDQo+ID4gKyAg dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcNCj4gZGlzY2xhaW1lciBp biB0aGUgZG9jdW1lbnRhdGlvbg0KPiA+ICsgIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk ZWQgd2l0aCB0aGUNCj4gZGlzdHJpYnV0aW9uLg0KPiA+ICsNCj4gPiArICBUSElTIFNPRlRXQVJF IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUw0KPiBBTkQgQ09OVFJJQlVUT1JT ICJBUyBJUyIgQU5EDQo+ID4gKyAgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ TkNMVURJTkcsIEJVVA0KPiBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQNCj4gPiArICBXQVJS QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQQ0KPiBQQVJUSUNVTEFS IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuDQo+ID4gKyAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP UFlSSUdIVCBIT0xERVIgT1INCj4gQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD VCwNCj4gPiArICBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUg0K PiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywNCj4gPiArICBCVVQgTk9UIExJTUlU RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMNCj4gT1IgU0VSVklDRVM7IExP U1MgT0YgVVNFLA0KPiA+ICsgIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ VElPTikgSE9XRVZFUg0KPiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YNCj4gPiArICBMSUFC SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksDQo+IE9SIFRPUlQg KElOQ0xVRElORyBORUdMSUdFTkNFDQo+ID4gKyAgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YNCj4gVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRg0KPiA+ICsg IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLg0KPiA+ICsNCj4gPiAr KiovDQo+ID4gKw0KPiA+ICsjaW5jbHVkZSA8UGlEeGUuaD4NCj4gPiArI2luY2x1ZGUgPExpYnJh cnkvQmFzZU1lbW9yeUxpYi5oPg0KPiA+ICsjaW5jbHVkZSA8TGlicmFyeS9NZW1vcnlBbGxvY2F0 aW9uTGliLmg+DQo+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlCb290U2VydmljZXNUYWJsZUxp Yi5oPg0KPiA+ICsjaW5jbHVkZSA8TGlicmFyeS9EZWJ1Z0xpYi5oPg0KPiA+ICsjaW5jbHVkZSA8 TGlicmFyeS9CYXNlTGliLmg+DQo+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlMaWIuaD4NCj4g PiArDQo+ID4gKyNpbmNsdWRlIDxQcm90b2NvbC9HcmFwaGljc091dHB1dC5oPg0KPiA+ICsjaW5j bHVkZSA8UHJvdG9jb2wvQm9vdExvZ28yLmg+DQo+ID4gKw0KPiA+ICsvLw0KPiA+ICsvLyBWYWx1 ZXMgaW4gcGVyY2VudCBvZiBvZiBsb2dvIGhlaWdodC4NCj4gPiArLy8NCj4gPiArI2RlZmluZSBM T0dPX0JPVFRPTV9QQURESU5HICAgIDIwDQo+ID4gKyNkZWZpbmUgUFJPR1JFU1NfQkxPQ0tfSEVJ R0hUICAxMA0KPiA+ICsNCj4gPiArLy8NCj4gPiArLy8gR3JhcGhpY3MgT3V0cHV0IFByb3RvY29s IGluc3RhbmNlIHRvIGRpc3BsYXkNCj4gcHJvZ3Jlc3MgYmFyDQo+ID4gKy8vDQo+ID4gK0VGSV9H UkFQSElDU19PVVRQVVRfUFJPVE9DT0wgICptR29wID0gTlVMTDsNCj4gPiArDQo+ID4gKy8vDQo+ ID4gKy8vIFNldCB0byAxMDAgcGVyY2VudCBzbyBpdCBpcyByZXNldCBvbiBmaXJzdCBjYWxsLg0K PiA+ICsvLw0KPiA+ICtVSU5UTiBtUHJldmlvdXNQcm9ncmVzcyA9IDEwMDsNCj4gPiArDQo+ID4g Ky8vDQo+ID4gKy8vIERpc3BsYXkgY29vcmRpbmF0ZXMgZm9yIHRoZSBwcm9ncmVzcyBiYXIuDQo+ ID4gKy8vDQo+ID4gK1VJTlROICBtU3RhcnRYID0gMDsNCj4gPiArVUlOVE4gIG1TdGFydFkgPSAw Ow0KPiA+ICsNCj4gPiArLy8NCj4gPiArLy8gV2lkdGggYW5kIGhlaWdodCBvZiB0aGUgcHJvZ3Jl c3MgYmFyLg0KPiA+ICsvLw0KPiA+ICtVSU5UTiAgbUJsb2NrV2lkdGggID0gMDsNCj4gPiArVUlO VE4gIG1CbG9ja0hlaWdodCA9IDA7DQo+ID4gKw0KPiA+ICsvLw0KPiA+ICsvLyBHT1AgYml0bWFw IG9mIHRoZSBwcm9ncmVzcyBiYXIuIEluaXRpYWxpemVkIG9uDQo+IGV2ZXJ5IG5ldyBwcm9ncmVz cyBvZiAxMDAlDQo+ID4gKy8vDQo+ID4gK0VGSV9HUkFQSElDU19PVVRQVVRfQkxUX1BJWEVMICAq bUJsb2NrQml0bWFwOw0KPiA+ICsNCj4gPiArLy8NCj4gPiArLy8gR09QIGJpdG1hcCBvZiB0aGUg cHJvZ3Jlc3MgYmFyIGJhY2tyb3VuZC4NCj4gSW5pdGlhbGl6ZWQgb25jZS4NCj4gPiArLy8NCj4g PiArRUZJX0dSQVBISUNTX09VVFBVVF9CTFRfUElYRUwNCj4gKm1Qcm9ncmVzc0JhckJhY2tncm91 bmQ7DQo+ID4gKw0KPiA+ICsvLw0KPiA+ICsvLyBEZWZhdWx0IG1hc2sgdXNlZCB0byBkZXRlY3Qg dGhlIGxlZnQsIHJpZ2h0ICwgdG9wLA0KPiBhbmQgYm90dG9tIG9mIGxvZ28uICBPbmx5DQo+ID4g Ky8vIGdyZWVuIGFuZCBibHVlIHBpeGVscyBhcmUgdXNlZCBmb3IgbG9nbyBkZXRlY3Rpb24uDQo+ ID4gKy8vDQo+ID4gK2NvbnN0IEVGSV9HUkFQSElDU19PVVRQVVRfQkxUX1BJWEVMX1VOSU9ODQo+ IG1Mb2dvRGV0ZWN0aW9uQ29sb3JNYXNrID0gew0KPiA+ICsgIHsNCj4gPiArICAgIDB4RkYsICAv LyBCbHVlDQo+ID4gKyAgICAweEZGLCAgLy8gR3JlZW4NCj4gPiArICAgIDB4MDAsICAvLyBSZWQN Cj4gPiArICAgIDB4MDAgICAvLyBSZXNlcnZlZA0KPiA+ICsgIH0NCj4gPiArfTsNCj4gPiArDQo+ ID4gKy8vDQo+ID4gKy8vIEJhY2tncm91bmQgY29sb3Igb2YgcHJvZ3Jlc3MgYmFyLiAgR3JleS4N Cj4gPiArLy8NCj4gPiArY29uc3QgRUZJX0dSQVBISUNTX09VVFBVVF9CTFRfUElYRUxfVU5JT04N Cj4gbVByb2dyZXNzQmFyQmFja2dyb3VuZENvbG9yID0gew0KPiA+ICsgIHsNCj4gPiArICAgIDB4 ODAsICAvLyBCbHVlDQo+ID4gKyAgICAweDgwLCAgLy8gR3JlZW4NCj4gPiArICAgIDB4ODAsICAv LyBSZWQNCj4gPiArICAgIDB4MDAgICAvLyBSZXNlcnZlZA0KPiA+ICsgIH0NCj4gPiArfTsNCj4g PiArDQo+ID4gKy8vDQo+ID4gKy8vIERlZmF1bHQgY29sb3Igb2YgcHJvZ3Jlc3MgY29tcGxldGlv bi4gIFdoaXRlLg0KPiA+ICsvLw0KPiA+ICtjb25zdCBFRklfR1JBUEhJQ1NfT1VUUFVUX0JMVF9Q SVhFTF9VTklPTg0KPiBtUHJvZ3Jlc3NCYXJEZWZhdWx0Q29sb3IgPSB7DQo+ID4gKyAgew0KPiA+ ICsgICAgMHhGRiwgIC8vIEJsdWUNCj4gPiArICAgIDB4RkYsICAvLyBHcmVlbg0KPiA+ICsgICAg MHhGRiwgIC8vIFJlZA0KPiA+ICsgICAgMHgwMCAgIC8vIFJlc2VydmVkDQo+ID4gKyAgfQ0KPiA+ ICt9Ow0KPiA+ICsNCj4gPiArLy8NCj4gPiArLy8gU2V0IHRvIFRSVUUgaWYgYSB2YWxpZCBHcmFw aGljcyBPdXRwdXQgUHJvdG9jb2wgaXMNCj4gZm91bmQgYW5kIHRoZSBwcm9ncmVzcw0KPiA+ICsv LyBiYXIgZml0cyB1bmRlciB0aGUgYm9vdCBsb2dvIHVzaW5nIHRoZSBjdXJyZW50DQo+IGdyYXBo aWNzIG1vZGUuDQo+ID4gKy8vDQo+ID4gK0JPT0xFQU4gbUdyYXBoaWNzR29vZCA9IEZBTFNFOw0K PiA+ICsNCj4gPiArLyoNCj4gPiArICBJbnRlcm5hbCBmdW5jdGlvbiB1c2VkIHRvIGZpbmQgdGhl IGJvdW5kcyBvZiB0aGUNCj4gd2hpdGUgbG9nbyAob24gYmxhY2sgb3INCj4gPiArICByZWQgYmFj a2dyb3VuZCkuDQo+ID4gKw0KPiA+ICsgIFRoZXNlIGJvdW5kcyBhcmUgdGhlbiBjb21wdXRlZCB0 byBmaW5kIHRoZSBibG9jaw0KPiBzaXplLCAwJSwgMTAwJSwgZXRjLg0KPiA+ICsNCj4gPiArKi8N Cj4gPiArVk9JRA0KPiA+ICtGaW5kRGltICgNCj4gPiArICAgVk9JRA0KPiA+ICsgICkNCj4gPiAr ew0KPiA+ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0dXM7DQo+ ID4gKyAgSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvZ29YOw0KPiA+ICsg IElOVE4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dvU3RhcnRYOw0KPiA+ICsg IElOVE4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dvRW5kWDsNCj4gPiArICBJ TlROICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nb1k7DQo+ID4gKyAgSU5UTiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvZ29TdGFydFk7DQo+ID4gKyAgSU5UTiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvZ29FbmRZOw0KPiA+ICsgIFVJTlROICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPZmZzZXRYOw0KPiAvLyBMb2dvIHNjcmVlbiBj b29yZGluYXRlDQo+ID4gKyAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9m ZnNldFk7DQo+IC8vIExvZ28gc2NyZWVuIGNvb3JkaW5hdGUNCj4gPiArICBVSU5UTiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgV2lkdGg7DQo+IC8vIFdpZHRoIG9mIGxvZ28gaW4gcGl4 ZWxzDQo+ID4gKyAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhlaWdodDsN Cj4gLy8gSGVpZ2h0IG9mIGxvZ28gaW4gcGl4ZWxzDQo+ID4gKyAgRUZJX0dSQVBISUNTX09VVFBV VF9CTFRfUElYRUwgICAgICAgICpMb2dvOw0KPiA+ICsgIEVES0lJX0JPT1RfTE9HTzJfUFJPVE9D T0wgICAgICAgICAgICAqQm9vdExvZ287DQo+ID4gKyAgRUZJX0dSQVBISUNTX09VVFBVVF9CTFRf UElYRUxfVU5JT04gICpQaXhlbDsNCj4gPiArDQo+ID4gKyAgTG9nbyAgICAgPSBOVUxMOw0KPiA+ ICsgIEJvb3RMb2dvID0gTlVMTDsNCj4gPiArDQo+ID4gKyAgLy8NCj4gPiArICAvLyBSZXR1cm4g aWYgYSBHcmFwaGljcyBPdXRwdXQgUHJvdG9jb2wgaGEgc25vdA0KPiBiZWVuIGZvdW5kLg0KPiA+ ICsgIC8vDQo+ID4gKyAgaWYgKG1Hb3AgPT0gTlVMTCkgew0KPiA+ICsgICAgREVCVUcgKChERUJV R19FUlJPUiwgIk5vIEdPUCBmb3VuZC4gIE5vIHByb2dyZXNzDQo+IGJhciBzdXBwb3J0LiBcbiIp KTsNCj4gPiArICAgIHJldHVybjsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIC8vDQo+ID4gKyAg Ly8gR2V0IGJvb3QgbG9nbyBwcm90b2NvbCBzbyB3ZSBrbm93IHdoZXJlIG9uIHRoZQ0KPiBzY3Jl ZW4gdG8gZ3JhYg0KPiA+ICsgIC8vDQo+ID4gKyAgU3RhdHVzID0gZ0JTLT5Mb2NhdGVQcm90b2Nv bCAoDQo+ID4gKyAgICAgICAgICAgICAgICAgICZnRWRraWlCb290TG9nbzJQcm90b2NvbEd1aWQs DQo+ID4gKyAgICAgICAgICAgICAgICAgIE5VTEwsDQo+ID4gKyAgICAgICAgICAgICAgICAgIChW T0lEICoqKSZCb290TG9nbw0KPiA+ICsgICAgICAgICAgICAgICAgICApOw0KPiA+ICsgIGlmICgo Qm9vdExvZ28gPT0gTlVMTCkgfHwgKEVGSV9FUlJPUiAoU3RhdHVzKSkpIHsNCj4gPiArICAgIERF QlVHICgoREVCVUdfRVJST1IsICJGYWlsZWQgdG8gbG9jYXRlDQo+IGdFZGtpaUJvb3RMb2dvMlBy b3RvY29sR3VpZC4gIE5vIFByb2dyZXNzIGJhciBzdXBwb3J0Lg0KPiBcbiIsIFN0YXR1cykpOw0K PiA+ICsgICAgcmV0dXJuOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgLy8NCj4gPiArICAvLyBH ZXQgbG9nbyBsb2NhdGlvbiBhbmQgc2l6ZQ0KPiA+ICsgIC8vDQo+ID4gKyAgU3RhdHVzID0gQm9v dExvZ28tPkdldEJvb3RMb2dvICgNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBCb290TG9n bywNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAmTG9nbywNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAmT2Zmc2V0WCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAmT2Zmc2V0 WSwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAmV2lkdGgsDQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgJkhlaWdodA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICk7DQo+ID4g KyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ICsgICAgREVCVUcgKChERUJVR19FUlJP UiwgIkZhaWxlZCB0byBHZXQgQm9vdCBMb2dvDQo+IFN0YXR1cyA9ICVyLiAgTm8gUHJvZ3Jlc3Mg YmFyIHN1cHBvcnQuIFxuIiwgU3RhdHVzKSk7DQo+ID4gKyAgICByZXR1cm47DQo+ID4gKyAgfQ0K PiA+ICsNCj4gPiArICAvLw0KPiA+ICsgIC8vIFdpdGhpbiBsb2dvIGJ1ZmZlciBmaW5kIHdoZXJl IHRoZSBhY3R1YWwgbG9nbw0KPiBzdGFydHMvZW5kcw0KPiA+ICsgIC8vDQo+ID4gKyAgTG9nb0Vu ZFggPSAwOw0KPiA+ICsgIExvZ29FbmRZID0gMDsNCj4gPiArDQo+ID4gKyAgLy8NCj4gPiArICAv LyBGaW5kIGxlZnQgc2lkZSBvZiBsb2dvIGluIGxvZ28gY29vcmRpbmF0ZXMNCj4gPiArICAvLw0K PiA+ICsgIGZvciAoTG9nb1ggPSAwLCBMb2dvU3RhcnRYID0gV2lkdGg7IExvZ29YIDwNCj4gTG9n b1N0YXJ0WDsgTG9nb1grKykgew0KPiA+ICsgICAgUGl4ZWwgPSAoRUZJX0dSQVBISUNTX09VVFBV VF9CTFRfUElYRUxfVU5JT04NCj4gKikoTG9nbyArIExvZ29YKTsNCj4gPiArICAgIGZvciAoTG9n b1kgPSAwOyBMb2dvWSA8IChJTlROKUhlaWdodDsgTG9nb1krKykgew0KPiA+ICsgICAgICBpZiAo KFBpeGVsLT5SYXcgJiBtTG9nb0RldGVjdGlvbkNvbG9yTWFzay5SYXcpDQo+ICE9IDB4MCkgew0K PiA+ICsgICAgICAgIExvZ29TdGFydFggPSBMb2dvWDsNCj4gPiArICAgICAgICAvLw0KPiA+ICsg ICAgICAgIC8vIEZvciBsb29wIHNlYXJjaGVzIGZyb20gcmlnaHQgc2lkZSBiYWNrIHRvDQo+IHRo aXMgY29sdW1uLg0KPiA+ICsgICAgICAgIC8vDQo+ID4gKyAgICAgICAgTG9nb0VuZFggPSBMb2dv WDsNCj4gPiArICAgICAgICBERUJVRyAoKERFQlVHX0lORk8sICJTdGFydFggZm91bmQgYXQgKCVk LCAlZCkNCj4gQ29sb3IgaXM6IDB4JVggXG4iLCBMb2dvWCwgTG9nb1ksIFBpeGVsLT5SYXcpKTsN Cj4gPiArICAgICAgICBicmVhazsNCj4gPiArICAgICAgfQ0KPiA+ICsgICAgICBQaXhlbCA9IFBp eGVsICsgV2lkdGg7DQo+ID4gKyAgICB9DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICAvLw0KPiA+ ICsgIC8vIEZpbmQgcmlnaHQgc2lkZSBvZiBsb2dvDQo+ID4gKyAgLy8NCj4gPiArICBmb3IgKExv Z29YID0gV2lkdGggLSAxOyBMb2dvWCA+PSBMb2dvRW5kWDsgTG9nb1gtLSkNCj4gew0KPiA+ICsg ICAgUGl4ZWwgPSAoRUZJX0dSQVBISUNTX09VVFBVVF9CTFRfUElYRUxfVU5JT04NCj4gKikoTG9n byArIExvZ29YKTsNCj4gPiArICAgIGZvciAoTG9nb1kgPSAwOyBMb2dvWSA8IChJTlROKUhlaWdo dDsgTG9nb1krKykgew0KPiA+ICsgICAgICBpZiAoKFBpeGVsLT5SYXcgJiBtTG9nb0RldGVjdGlv bkNvbG9yTWFzay5SYXcpDQo+ICE9IDB4MCkgew0KPiA+ICsgICAgICAgIExvZ29FbmRYID0gTG9n b1g7DQo+ID4gKyAgICAgICAgREVCVUcgKChERUJVR19JTkZPLCAiRW5kWCBmb3VuZCBhdCAoJWQs ICVkKQ0KPiBDb2xvciBpczogMHglWCBcbiIsIExvZ29YLCBMb2dvWSwgUGl4ZWwtPlJhdykpOw0K PiA+ICsgICAgICAgIGJyZWFrOw0KPiA+ICsgICAgICB9DQo+ID4gKyAgICAgIFBpeGVsID0gUGl4 ZWwgKyBXaWR0aDsNCj4gPiArICAgIH0NCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIC8vDQo+ID4g KyAgLy8gQ29tcHV0ZSBtQmxvY2tXaWR0aA0KPiA+ICsgIC8vDQo+ID4gKyAgbUJsb2NrV2lkdGgg PSAoKExvZ29FbmRYIC0gTG9nb1N0YXJ0WCkgKyA5OSkgLyAxMDA7DQo+ID4gKw0KPiA+ICsgIC8v DQo+ID4gKyAgLy8gQWRqdXN0IG1TdGFydFggYmFzZWQgb24gYmxvY2sgd2lkdGggc28gaXQgaXMN Cj4gY2VudGVyZWQgdW5kZXIgbG9nbw0KPiA+ICsgIC8vDQo+ID4gKyAgbVN0YXJ0WCA9IExvZ29T dGFydFggKyBPZmZzZXRYIC0gKCgobUJsb2NrV2lkdGggKg0KPiAxMDApIC0gKExvZ29FbmRYIC0g TG9nb1N0YXJ0WCkpIC8gMik7DQo+ID4gKyAgREVCVUcgKChERUJVR19JTkZPLCAibUJsb2NrV2lk dGggc2V0IHRvIDB4JVhcbiIsDQo+IG1CbG9ja1dpZHRoKSk7DQo+ID4gKyAgREVCVUcgKChERUJV R19JTkZPLCAibVN0YXJ0WCBzZXQgdG8gMHglWFxuIiwNCj4gbVN0YXJ0WCkpOw0KPiA+ICsNCj4g PiArICAvLw0KPiA+ICsgIC8vIEZpbmQgdGhlIHRvcCBvZiB0aGUgbG9nbw0KPiA+ICsgIC8vDQo+ ID4gKyAgZm9yIChMb2dvWSA9IDAsIExvZ29TdGFydFkgPSBIZWlnaHQ7IExvZ29ZIDwNCj4gTG9n b1N0YXJ0WTsgTG9nb1krKykgew0KPiA+ICsgICAgUGl4ZWwgPSAoRUZJX0dSQVBISUNTX09VVFBV VF9CTFRfUElYRUxfVU5JT04NCj4gKikoTG9nbyArIChXaWR0aCAqIExvZ29ZKSk7DQo+ID4gKyAg ICBmb3IgKExvZ29YID0gMDsgTG9nb1ggPCAoSU5UTilXaWR0aDsgTG9nb1grKykgew0KPiA+ICsg ICAgICAvL25vdCBibGFjayBvciByZWQNCj4gPiArICAgICAgaWYgKChQaXhlbC0+UmF3ICYgbUxv Z29EZXRlY3Rpb25Db2xvck1hc2suUmF3KQ0KPiAhPSAweDApIHsNCj4gPiArICAgICAgICBMb2dv U3RhcnRZID0gTG9nb1k7DQo+ID4gKyAgICAgICAgTG9nb0VuZFkgPSBMb2dvWTsgLy9mb3IgbmV4 dCBsb29wIHdpbGwgc2VhcmNoDQo+IGZyb20gYm90dG9tIHNpZGUgYmFjayB0byB0aGlzIHJvdy4N Cj4gPiArICAgICAgICBERUJVRyAoKERFQlVHX0lORk8sICJTdGFydFkgZm91bmQgYXQgKCVkLCAl ZCkNCj4gQ29sb3IgaXM6IDB4JVggXG4iLCBMb2dvWCwgTG9nb1ksIFBpeGVsLT5SYXcpKTsNCj4g PiArICAgICAgICBicmVhazsNCj4gPiArICAgICAgfQ0KPiA+ICsgICAgICBQaXhlbCsrOw0KPiA+ ICsgICAgfQ0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgLy8NCj4gPiArICAvLyBGaW5kIHRoZSBi b3R0b20gb2YgdGhlIGxvZ28NCj4gPiArICAvLw0KPiA+ICsgIGZvciAoTG9nb1kgPSBIZWlnaHQg LSAxOyBMb2dvWSA+PSBMb2dvRW5kWTsgTG9nb1ktLQ0KPiApIHsNCj4gPiArICAgIFBpeGVsID0g KEVGSV9HUkFQSElDU19PVVRQVVRfQkxUX1BJWEVMX1VOSU9ODQo+ICopKExvZ28gKyAoV2lkdGgg KiBMb2dvWSkpOw0KPiA+ICsgICAgZm9yIChMb2dvWCA9IDA7IExvZ29YIDwgKElOVE4pV2lkdGg7 IExvZ29YKyspIHsNCj4gPiArICAgICAgaWYgKChQaXhlbC0+UmF3ICYgbUxvZ29EZXRlY3Rpb25D b2xvck1hc2suUmF3KQ0KPiAhPSAweDApIHsNCj4gPiArICAgICAgICBMb2dvRW5kWSA9IExvZ29Z Ow0KPiA+ICsgICAgICAgIERFQlVHICgoREVCVUdfSU5GTywgIkVuZFkgZm91bmQgYXQgKCVkLCAl ZCkNCj4gQ29sb3IgaXM6IDB4JVggXG4iLCBMb2dvWCwgTG9nb1ksIFBpeGVsLT5SYXcpKTsNCj4g PiArICAgICAgICBicmVhazsNCj4gPiArICAgICAgfQ0KPiA+ICsgICAgICBQaXhlbCsrOw0KPiA+ ICsgICAgfQ0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgLy8NCj4gPiArICAvLyBDb21wdXRlIGJv dHRvbSBwYWRkaW5nIChkaXN0YW5jZSBiZXR3ZWVuIGxvZ28NCj4gYm90dG9tIGFuZCBwcm9ncmVz cyBiYXIpDQo+ID4gKyAgLy8NCj4gPiArICBtU3RhcnRZID0gKCgoTG9nb0VuZFkgLSBMb2dvU3Rh cnRZKSAqDQo+IExPR09fQk9UVE9NX1BBRERJTkcpIC8gMTAwKSArIExvZ29FbmRZICsgT2Zmc2V0 WTsNCj4gPiArDQo+ID4gKyAgLy8NCj4gPiArICAvLyBDb21wdXRlIHByb2dyZXNzIGJhciBoZWln aHQNCj4gPiArICAvLw0KPiA+ICsgIG1CbG9ja0hlaWdodCA9ICgoKExvZ29FbmRZIC0gTG9nb1N0 YXJ0WSkgKg0KPiBQUk9HUkVTU19CTE9DS19IRUlHSFQpIC8gMTAwKTsNCj4gPiArDQo+ID4gKyAg REVCVUcgKChERUJVR19JTkZPLCAibUJsb2NrSGVpZ2h0IHNldCB0byAweCVYXG4iLA0KPiBtQmxv Y2tIZWlnaHQpKTsNCj4gPiArDQo+ID4gKyAgLy8NCj4gPiArICAvLyBDcmVhdGUgcHJvZ3Jlc3Mg YmFyIGJhY2tncm91bmQgKG9uZSB0aW1lIGluaXQpLg0KPiA+ICsgIC8vDQo+ID4gKyAgbVByb2dy ZXNzQmFyQmFja2dyb3VuZCA9IEFsbG9jYXRlUG9vbCAobUJsb2NrV2lkdGgNCj4gKiAxMDAgKiBt QmxvY2tIZWlnaHQgKiBzaXplb2YNCj4gKEVGSV9HUkFQSElDU19PVVRQVVRfQkxUX1BJWEVMKSk7 DQo+ID4gKyAgaWYgKG1Qcm9ncmVzc0JhckJhY2tncm91bmQgPT0gTlVMTCkgew0KPiA+ICsgICAg REVCVUcgKChERUJVR19FUlJPUiwgIkZhaWxlZCB0byBhbGxvY2F0ZSBwcm9ncmVzcw0KPiBiYXIg YmFja2dyb3VuZFxuIikpOw0KPiA+ICsgICAgcmV0dXJuOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4g KyAgLy8NCj4gPiArICAvLyBGaWxsIHRoZSBwcm9ncmVzcyBiYXIgd2l0aCB0aGUgYmFja2dyb3Vu ZCBjb2xvcg0KPiA+ICsgIC8vDQo+ID4gKyAgU2V0TWVtMzIgKA0KPiA+ICsgICAgbVByb2dyZXNz QmFyQmFja2dyb3VuZCwNCj4gPiArICAgIChtQmxvY2tXaWR0aCAqIDEwMCAqIG1CbG9ja0hlaWdo dCAqIHNpemVvZg0KPiAoRUZJX0dSQVBISUNTX09VVFBVVF9CTFRfUElYRUwpKSwNCj4gPiArICAg IG1Qcm9ncmVzc0JhckJhY2tncm91bmRDb2xvci5SYXcNCj4gPiArICAgICk7DQo+ID4gKw0KPiA+ ICsgIC8vDQo+ID4gKyAgLy8gQWxsb2NhdGUgbUJsb2NrQml0bWFwDQo+ID4gKyAgLy8NCj4gPiAr ICBtQmxvY2tCaXRtYXAgPSBBbGxvY2F0ZVBvb2wgKG1CbG9ja1dpZHRoICoNCj4gbUJsb2NrSGVp Z2h0ICogc2l6ZW9mIChFRklfR1JBUEhJQ1NfT1VUUFVUX0JMVF9QSVhFTCkpOw0KPiA+ICsgIGlm IChtQmxvY2tCaXRtYXAgPT0gTlVMTCkgew0KPiA+ICsgICAgRnJlZVBvb2wgKG1Qcm9ncmVzc0Jh ckJhY2tncm91bmQpOw0KPiA+ICsgICAgREVCVUcgKChERUJVR19FUlJPUiwgIkZhaWxlZCB0byBh bGxvY2F0ZQ0KPiBibG9ja1xuIikpOw0KPiA+ICsgICAgcmV0dXJuOw0KPiA+ICsgIH0NCj4gPiAr DQo+ID4gKyAgLy8NCj4gPiArICAvLyBDaGVjayBzY3JlZW4gd2lkdGggYW5kIGhlaWdodCBhbmQg bWFrZSBzdXJlIGl0DQo+IGZpdHMuDQo+ID4gKyAgLy8NCj4gPiArICBpZiAoKG1CbG9ja0hlaWdo dCA+IEhlaWdodCkgfHwgKG1CbG9ja1dpZHRoID4NCj4gV2lkdGgpIHx8IChtQmxvY2tIZWlnaHQg PCAxKSB8fCAobUJsb2NrV2lkdGggPCAxKSkgew0KPiA+ICsgICAgREVCVUcgKChERUJVR19FUlJP UiwgIkRpc3BsYXlVcGRhdGVQcm9ncmVzc0xpYiAtDQo+IFByb2dyZXNzIC0gRmFpbGVkIHRvIGdl dCB2YWxpZCB3aWR0aCBhbmQgaGVpZ2h0LlxuIikpOw0KPiA+ICsgICAgREVCVUcgKChERUJVR19F UlJPUiwgIkRpc3BsYXlVcGRhdGVQcm9ncmVzc0xpYiAtDQo+IFByb2dyZXNzIC0gbUJsb2NrSGVp Z2h0OiAweCVYICBtQmxvY2tXaWR0aDogMHglWC5cbiIsDQo+IG1CbG9ja0hlaWdodCwgbUJsb2Nr V2lkdGgpKTsNCj4gPiArICAgIEZyZWVQb29sIChtUHJvZ3Jlc3NCYXJCYWNrZ3JvdW5kKTsNCj4g PiArICAgIEZyZWVQb29sIChtQmxvY2tCaXRtYXApOw0KPiA+ICsgICAgcmV0dXJuOw0KPiA+ICsg IH0NCj4gPiArDQo+ID4gKyAgbUdyYXBoaWNzR29vZCA9IFRSVUU7DQo+ID4gK30NCj4gPiArDQo+ ID4gKy8qKg0KPiA+ICsgIEZ1bmN0aW9uIGluZGljYXRlcyB0aGUgY3VycmVudCBjb21wbGV0aW9u IHByb2dyZXNzDQo+IG9mIGEgZmlybXdhcmUgdXBkYXRlLg0KPiA+ICsgIFBsYXRmb3JtIG1heSBv dmVycmlkZSB3aXRoIGl0cyBvd24gc3BlY2lmaWMNCj4gZnVuY3Rpb24uDQo+ID4gKw0KPiA+ICsg IEBwYXJhbVtpbl0gQ29tcGxldGlvbiAgQSB2YWx1ZSBiZXR3ZWVuIDAgYW5kIDEwMA0KPiBpbmRp Y2F0aW5nIHRoZSBjdXJyZW50DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICBjb21wbGV0 aW9uIHByb2dyZXNzIG9mIGENCj4gZmlybXdhcmUgdXBkYXRlLiAgVGhpcw0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgdmFsdWUgbXVzdCB0aGUgdGhlIHNhbWUgb3INCj4gaGlnaGVyIHRo YW4gcHJldmlvdXMNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxzIHRvIHRoaXMg c2VydmljZS4gIFRoZQ0KPiBmaXJzdCBjYWxsIG9mIDAgb3IgYQ0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgdmFsdWUgb2YgMCBhZnRlciByZWFjaGluZyBhDQo+IHZhbHVlIG9mIDEwMCBy ZXNldHMNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBwcm9ncmVzcyBpbmRpY2F0 b3IgdG8gMC4NCj4gPiArICBAcGFyYW1baW5dIENvbG9yICAgICAgIENvbG9yIG9mIHRoZSBwcm9n cmVzcw0KPiBpbmRpY2F0b3IuICBPbmx5IHVzZWQgd2hlbg0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgQ29tcGxldGlvbiBpcyAwIHRvIHNldCB0aGUNCj4gY29sb3Igb2YgdGhlIHByb2dy ZXNzDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICBpbmRpY2F0b3IuICBJZiBDb2xvciBp cw0KPiBOVUxMLCB0aGVuIHRoZSBkZWZhdWx0IGNvbG9yDQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICBpcyB1c2VkLg0KPiA+ICsNCj4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAg ICAgICAgUHJvZ3Jlc3MgZGlzcGxheWVkDQo+IHN1Y2Nlc3NmdWxseS4NCj4gPiArICBAcmV0dmFs IEVGSV9JTlZBTElEX1BBUkFNRVRFUiAgQ29tcGxldGlvbiBpcyBub3QgaW4NCj4gcmFuZ2UgMC4u MTAwLg0KPiA+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSICBDb21wbGV0aW9uIGlz IGxlc3MNCj4gdGhhbiBDb21wbGV0aW9uIHZhbHVlIGZyb20NCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgYSBwcmV2aW91cyBjYWxsIHRvDQo+IHRoaXMgc2VydmljZS4NCj4g PiArICBAcmV0dmFsIEVGSV9OT1RfUkVBRFkgICAgICAgICAgVGhlIGRldmljZSB1c2VkIHRvDQo+ IGluZGljYXRlIHByb2dyZXNzIGlzIG5vdA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBhdmFpbGFibGUuDQo+ID4gKyoqLw0KPiA+ICtFRklfU1RBVFVTDQo+ID4gK0VGSUFQ SQ0KPiA+ICtEaXNwbGF5VXBkYXRlUHJvZ3Jlc3MgKA0KPiA+ICsgIElOIFVJTlROICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBDb21wbGV0aW9uLA0KPiA+ICsgIElOIEVGSV9HUkFQSElD U19PVVRQVVRfQkxUX1BJWEVMX1VOSU9OICAqQ29sb3INCj4gT1BUSU9OQUwNCj4gPiArICApDQo+ ID4gK3sNCj4gPiArICBFRklfU1RBVFVTICBTdGF0dXM7DQo+ID4gKyAgVUlOVE4gICAgICAgUHJl WDsNCj4gPiArICBVSU5UTiAgICAgICBJbmRleDsNCj4gPiArDQo+ID4gKyAgLy8NCj4gPiArICAv LyBDaGVjayByYW5nZQ0KPiA+ICsgIC8vDQo+ID4gKyAgaWYgKENvbXBsZXRpb24gPiAxMDApIHsN Cj4gPiArICAgIHJldHVybiBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+ID4gKyAgfQ0KPiA+ICsN Cj4gPiArICAvLw0KPiA+ICsgIC8vIENoZWNrIHRvIHNlZSBpZiB0aGlzIENvbXBsZXRpb24gcGVy Y2VudGFnZSBoYXMNCj4gYWxyZWFkeSBiZWVuIGRpc3BsYXllZA0KPiA+ICsgIC8vDQo+ID4gKyAg aWYgKENvbXBsZXRpb24gPT0gbVByZXZpb3VzUHJvZ3Jlc3MpIHsNCj4gPiArICAgIHJldHVybiBF RklfU1VDQ0VTUzsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIC8vDQo+ID4gKyAgLy8gRmluZCBH cmFwaGljcyBPdXRwdXQgUHJvdG9jb2wgaWYgbm90IGFscmVhZHkNCj4gc2V0LiAgMSB0aW1lLg0K PiA+ICsgIC8vDQo+ID4gKyAgaWYgKG1Hb3AgPT0gTlVMTCkgew0KPiA+ICsgICAgU3RhdHVzID0g Z0JTLT5IYW5kbGVQcm90b2NvbCAoDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgZ1NULT5Db25z b2xlT3V0SGFuZGxlLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICZnRWZpR3JhcGhpY3NPdXRw dXRQcm90b2NvbEd1aWQsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgKFZPSUQqKikmbUdvcA0K PiA+ICsgICAgICAgICAgICAgICAgICAgICk7DQo+ID4gKyAgICBpZiAoRUZJX0VSUk9SIChTdGF0 dXMpKSB7DQo+ID4gKyAgICAgIFN0YXR1cyA9IGdCUy0+TG9jYXRlUHJvdG9jb2wNCj4gKCZnRWZp R3JhcGhpY3NPdXRwdXRQcm90b2NvbEd1aWQsIE5VTEwsIChWT0lEICoqKSZtR29wKTsNCj4gPiAr ICAgICAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ICsgICAgICAgIG1Hb3AgPSBOVUxM Ow0KPiA+ICsgICAgICAgIERFQlVHICgoREVCVUdfRVJST1IsICJTaG93IFByb2dyZXNzIEZ1bmN0 aW9uDQo+IGNvdWxkIG5vdCBsb2NhdGUgR09QLiAgU3RhdHVzID0gJXJcbiIsIFN0YXR1cykpOw0K PiA+ICsgICAgICAgIHJldHVybiBFRklfTk9UX1JFQURZOw0KPiA+ICsgICAgICB9DQo+ID4gKyAg ICB9DQo+ID4gKw0KPiA+ICsgICAgLy8NCj4gPiArICAgIC8vIFJ1biBvbmNlDQo+ID4gKyAgICAv Lw0KPiA+ICsgICAgRmluZERpbSAoKTsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIC8vDQo+ID4g KyAgLy8gTWFrZSBzdXJlIGEgdmFsaWQgc3RhcnQsIGVuZCwgYW5kIHNpemUgaW5mbyBhcmUNCj4g YXZhaWxhYmxlIChmaW5kIHRoZSBMb2dvKQ0KPiA+ICsgIC8vDQo+ID4gKyAgaWYgKCFtR3JhcGhp Y3NHb29kKSB7DQo+ID4gKyAgICBERUJVRyAoKERFQlVHX0lORk8sICJHcmFwaGljcyBOb3QgR29v ZC4gIE5vdA0KPiBkb2luZyBhbnkgb25zY3JlZW4gdmlzdWFsIGRpc3BsYXlcbiIpKTsNCj4gPiAr ICAgIHJldHVybiBFRklfTk9UX1JFQURZOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgLy8NCj4g PiArICAvLyBEbyBzcGVjaWFsIGluaXQgb24gZmlyc3QgY2FsbCBvZiBlYWNoIHByb2dyZXNzDQo+ IHNlc3Npb24NCj4gPiArICAvLw0KPiA+ICsgIGlmIChtUHJldmlvdXNQcm9ncmVzcyA9PSAxMDAp IHsNCj4gPiArICAgIC8vDQo+ID4gKyAgICAvLyBEcmF3IHByb2dyZXNzIGJhciBiYWNrZ3JvdW5k DQo+ID4gKyAgICAvLw0KPiA+ICsgICAgbUdvcC0+Qmx0ICgNCj4gPiArICAgICAgICAgICAgbUdv cCwNCj4gPiArICAgICAgICAgICAgbVByb2dyZXNzQmFyQmFja2dyb3VuZCwNCj4gPiArICAgICAg ICAgICAgRWZpQmx0QnVmZmVyVG9WaWRlbywNCj4gPiArICAgICAgICAgICAgMCwNCj4gPiArICAg ICAgICAgICAgMCwNCj4gPiArICAgICAgICAgICAgbVN0YXJ0WCwNCj4gPiArICAgICAgICAgICAg bVN0YXJ0WSwNCj4gPiArICAgICAgICAgICAgKG1CbG9ja1dpZHRoICogMTAwKSwNCj4gPiArICAg ICAgICAgICAgbUJsb2NrSGVpZ2h0LA0KPiA+ICsgICAgICAgICAgICAwDQo+ID4gKyAgICAgICAg ICAgICk7DQo+ID4gKw0KPiA+ICsgICAgREVCVUcgKChERUJVR19WRVJCT1NFLCAiQ29sb3IgaXMg MHglWFxuIiwNCj4gPiArICAgICAgKENvbG9yID09IE5VTEwpID8gbVByb2dyZXNzQmFyRGVmYXVs dENvbG9yLlJhdw0KPiA6IENvbG9yLT5SYXcNCj4gPiArICAgICAgKSk7DQo+ID4gKw0KPiA+ICsg ICAgLy8NCj4gPiArICAgIC8vIFVwZGF0ZSBibG9jayBiaXRtYXAgd2l0aCBjb3JyZWN0IGNvbG9y DQo+ID4gKyAgICAvLw0KPiA+ICsgICAgU2V0TWVtMzIgKA0KPiA+ICsgICAgICBtQmxvY2tCaXRt YXAsDQo+ID4gKyAgICAgIChtQmxvY2tXaWR0aCAqIG1CbG9ja0hlaWdodCAqIHNpemVvZg0KPiAo RUZJX0dSQVBISUNTX09VVFBVVF9CTFRfUElYRUwpKSwNCj4gPiArICAgICAgKENvbG9yID09IE5V TEwpID8gbVByb2dyZXNzQmFyRGVmYXVsdENvbG9yLlJhdw0KPiA6IENvbG9yLT5SYXcNCj4gPiAr ICAgICAgKTsNCj4gPiArDQo+ID4gKyAgICAvLw0KPiA+ICsgICAgLy8gQ2xlYXIgcHJldmlvdXMN Cj4gPiArICAgIC8vDQo+ID4gKyAgICBtUHJldmlvdXNQcm9ncmVzcyA9IDA7DQo+ID4gKyAgfQ0K PiA+ICsNCj4gPiArICAvLw0KPiA+ICsgIC8vIENhbiBub3QgdXBkYXRlIHByb2dyZXNzIGJhciBp ZiBDb21wbGV0aW9uIGlzDQo+IGxlc3MgdGhhbiBwcmV2aW91cw0KPiA+ICsgIC8vDQo+ID4gKyAg aWYgKENvbXBsZXRpb24gPCBtUHJldmlvdXNQcm9ncmVzcykgew0KPiA+ICsgICAgREVCVUcgKChE RUJVR19XQVJOLCAiV0FSTklORzogQ29tcGxldGlvbiAoJWQpDQo+IHNob3VsZCBub3QgYmUgbGVz c3MgdGhhbiBQcmV2aW91cyAoJWQpISEhXG4iLA0KPiBDb21wbGV0aW9uLCBtUHJldmlvdXNQcm9n cmVzcykpOw0KPiA+ICsgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCj4gPiArICB9 DQo+ID4gKw0KPiA+ICsgIFByZVggPSAoKG1QcmV2aW91c1Byb2dyZXNzICogbUJsb2NrV2lkdGgp ICsNCj4gbVN0YXJ0WCk7DQo+ID4gKyAgZm9yIChJbmRleCA9IDA7IEluZGV4IDwgKENvbXBsZXRp b24gLQ0KPiBtUHJldmlvdXNQcm9ncmVzcyk7IEluZGV4KyspIHsNCj4gPiArICAgIC8vDQo+ID4g KyAgICAvLyBTaG93IHByb2dyZXNzIGJ5IGNvbG9yaW5nIG5ldyBhcmVhDQo+ID4gKyAgICAvLw0K PiA+ICsgICAgbUdvcC0+Qmx0ICgNCj4gPiArICAgICAgICAgICAgbUdvcCwNCj4gPiArICAgICAg ICAgICAgbUJsb2NrQml0bWFwLA0KPiA+ICsgICAgICAgICAgICBFZmlCbHRCdWZmZXJUb1ZpZGVv LA0KPiA+ICsgICAgICAgICAgICAwLA0KPiA+ICsgICAgICAgICAgICAwLA0KPiA+ICsgICAgICAg ICAgICBQcmVYLA0KPiA+ICsgICAgICAgICAgICBtU3RhcnRZLA0KPiA+ICsgICAgICAgICAgICBt QmxvY2tXaWR0aCwNCj4gPiArICAgICAgICAgICAgbUJsb2NrSGVpZ2h0LA0KPiA+ICsgICAgICAg ICAgICAwDQo+ID4gKyAgICAgICAgICAgICk7DQo+ID4gKyAgICBQcmVYICs9IG1CbG9ja1dpZHRo Ow0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgbVByZXZpb3VzUHJvZ3Jlc3MgPSBDb21wbGV0aW9u Ow0KPiA+ICsNCj4gPiArICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ID4gK30NCj4gPiBkaWZmIC0t Z2l0DQo+IGEvTWRlTW9kdWxlUGtnL0xpYnJhcnkvRGlzcGxheVVwZGF0ZVByb2dyZXNzTGliR3Jh cGhpY3MvDQo+IERpc3BsYXlVcGRhdGVQcm9ncmVzc0xpYkdyYXBoaWNzLmluZg0KPiBiL01kZU1v ZHVsZVBrZy9MaWJyYXJ5L0Rpc3BsYXlVcGRhdGVQcm9ncmVzc0xpYkdyYXBoaWNzLw0KPiBEaXNw bGF5VXBkYXRlUHJvZ3Jlc3NMaWJHcmFwaGljcy5pbmYNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0 NA0KPiA+IGluZGV4IDAwMDAwMDAwMDAuLmFkYTYwNzY3NzANCj4gPiAtLS0gL2Rldi9udWxsDQo+ ID4gKysrDQo+IGIvTWRlTW9kdWxlUGtnL0xpYnJhcnkvRGlzcGxheVVwZGF0ZVByb2dyZXNzTGli R3JhcGhpY3MvDQo+IERpc3BsYXlVcGRhdGVQcm9ncmVzc0xpYkdyYXBoaWNzLmluZg0KPiA+IEBA IC0wLDAgKzEsNjAgQEANCj4gPiArIyMgQGZpbGUNCj4gPiArIyAgUHJvdmlkZXMgc2VydmljZXMg dG8gZGlzcGxheSBjb21wbGV0aW9uIHByb2dyZXNzDQo+IG9mIGEgZmlybXdhcmUgdXBkYXRlIG9u IGENCj4gPiArIyAgZ3JhcGhpY2FsIGNvbnNvbGUgdGhhdCBzdXBwb3J0cyB0aGUgR3JhcGhpY3MN Cj4gT3V0cHV0IFByb3RvY29sLg0KPiA+ICsjDQo+ID4gKyMgIENvcHlyaWdodCAoYykgMjAxNiwg TWljcm9zb2Z0IENvcnBvcmF0aW9uLCBBbGwNCj4gcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPiAr IyAgQ29weXJpZ2h0IChjKSAyMDE4LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cw0KPiBy ZXNlcnZlZC48QlI+DQo+ID4gKyMNCj4gPiArIyAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz b3VyY2UgYW5kIGJpbmFyeSBmb3JtcywNCj4gd2l0aCBvciB3aXRob3V0DQo+ID4gKyMgIG1vZGlm aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZQ0KPiBmb2xsb3dpbmcgY29u ZGl0aW9ucyBhcmUgbWV0Og0KPiA+ICsjICAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv ZGUgbXVzdCByZXRhaW4gdGhlDQo+IGFib3ZlIGNvcHlyaWdodCBub3RpY2UsDQo+ID4gKyMgIHRo aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nDQo+IGRpc2NsYWltZXIuDQo+ ID4gKyMgIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZQ0K PiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwNCj4gPiArIyAgdGhpcyBsaXN0IG9mIGNvbmRp dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcNCj4gZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlv bg0KPiA+ICsjICBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlDQo+IGRp c3RyaWJ1dGlvbi4NCj4gPiArIw0KPiA+ICsjICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ IFRIRSBDT1BZUklHSFQgSE9MREVSUw0KPiBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EDQo+ ID4gKyMgIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQN Cj4gTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEDQo+ID4gKyMgIFdBUlJBTlRJRVMgT0YgTUVS Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBDQo+IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg RElTQ0xBSU1FRC4NCj4gPiArIyAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xE RVIgT1INCj4gQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwNCj4gPiArIyAg SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1INCj4gQ09OU0VRVUVO VElBTCBEQU1BR0VTIChJTkNMVURJTkcsDQo+ID4gKyMgIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP Q1VSRU1FTlQgT0YgU1VCU1RJVFVURQ0KPiBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us DQo+ID4gKyMgIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikNCj4g SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YNCj4gPiArIyAgTElBQklMSVRZLCBX SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLA0KPiBPUiBUT1JUIChJTkNMVURJ TkcgTkVHTElHRU5DRQ0KPiA+ICsjICBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP VVQgT0YgVEhFIFVTRSBPRg0KPiBUSElTIFNPRlRXQVJFLCBFVkVOIElGDQo+ID4gKyMgIEFEVklT RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLg0KPiA+ICsjIw0KPiA+ICsNCj4g PiArW0RlZmluZXNdDQo+ID4gKyAgSU5GX1ZFUlNJT04gICAgID0gMHgwMDAxMDAwNQ0KPiA+ICsg IEJBU0VfTkFNRSAgICAgICA9IERpc3BsYXlVcGRhdGVQcm9ncmVzc0xpYkdyYXBoaWNzDQo+ID4g KyAgTU9EVUxFX1VOSV9GSUxFID0NCj4gRGlzcGxheVVwZGF0ZVByb2dyZXNzTGliR3JhcGhpY3Mu dW5pDQo+ID4gKyAgRklMRV9HVUlEICAgICAgID0gMzE5RTlFMzctQjJENi00Njk5LTkwRjMtDQo+ IEI4QjcyQjZENENCRA0KPiA+ICsgIE1PRFVMRV9UWVBFICAgICA9IERYRV9EUklWRVINCj4gPiAr ICBWRVJTSU9OX1NUUklORyAgPSAxLjANCj4gPiArICBMSUJSQVJZX0NMQVNTICAgPQ0KPiBEaXNw bGF5VXBkYXRlUHJvZ3Jlc3NMaWJ8RFhFX0RSSVZFUiBVRUZJX0RSSVZFUg0KPiBVRUZJX0FQUExJ Q0FUSU9ODQo+ID4gKw0KPiA+ICsjDQo+ID4gKyMgVGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbiBp cyBmb3IgcmVmZXJlbmNlIG9ubHkgYW5kDQo+IG5vdCByZXF1aXJlZCBieSB0aGUgYnVpbGQgdG9v bHMuDQo+ID4gKyMNCj4gPiArIyAgVkFMSURfQVJDSElURUNUVVJFUyAgICAgICAgICAgPSBJQTMy IFg2NCBJUEYgRUJDDQo+ID4gKyMNCj4gPiArDQo+ID4gK1tTb3VyY2VzXQ0KPiA+ICsgIERpc3Bs YXlVcGRhdGVQcm9ncmVzc0xpYkdyYXBoaWNzLmMNCj4gPiArDQo+ID4gK1tQYWNrYWdlc10NCj4g PiArICBNZGVQa2cvTWRlUGtnLmRlYw0KPiA+ICsgIE1kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cu ZGVjDQo+ID4gKw0KPiA+ICtbTGlicmFyeUNsYXNzZXNdDQo+ID4gKyAgQmFzZU1lbW9yeUxpYg0K PiA+ICsgIERlYnVnTGliDQo+ID4gKyAgTWVtb3J5QWxsb2NhdGlvbkxpYg0KPiA+ICsgIFVlZmlC b290U2VydmljZXNUYWJsZUxpYg0KPiA+ICsgIEJhc2VMaWINCj4gPiArICBVZWZpTGliDQo+ID4g Kw0KPiA+ICtbUHJvdG9jb2xzXQ0KPiA+ICsgIGdFZmlHcmFwaGljc091dHB1dFByb3RvY29sR3Vp ZCAgIyBDT05TVU1FUw0KPiA+ICsgIGdFZGtpaUJvb3RMb2dvMlByb3RvY29sR3VpZCAgICAgIyBD T05TVU1FUw0KPiA+IGRpZmYgLS1naXQNCj4gYS9NZGVNb2R1bGVQa2cvTGlicmFyeS9EaXNwbGF5 VXBkYXRlUHJvZ3Jlc3NMaWJHcmFwaGljcy8NCj4gRGlzcGxheVVwZGF0ZVByb2dyZXNzTGliR3Jh cGhpY3MudW5pDQo+IGIvTWRlTW9kdWxlUGtnL0xpYnJhcnkvRGlzcGxheVVwZGF0ZVByb2dyZXNz TGliR3JhcGhpY3MvDQo+IERpc3BsYXlVcGRhdGVQcm9ncmVzc0xpYkdyYXBoaWNzLnVuaQ0KPiA+ IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMDAwMC4uZDdkYTY0MTMzOA0K PiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysNCj4gYi9NZGVNb2R1bGVQa2cvTGlicmFyeS9EaXNw bGF5VXBkYXRlUHJvZ3Jlc3NMaWJHcmFwaGljcy8NCj4gRGlzcGxheVVwZGF0ZVByb2dyZXNzTGli R3JhcGhpY3MudW5pDQo+ID4gQEAgLTAsMCArMSwxOCBAQA0KPiA+ICsvLyAvKiogQGZpbGUNCj4g PiArLy8gIFByb3ZpZGVzIHNlcnZpY2VzIHRvIGRpc3BsYXkgY29tcGxldGlvbiBwcm9ncmVzcw0K PiBvZiBhIGZpcm13YXJlIHVwZGF0ZSBvbiBhDQo+ID4gKy8vICBncmFwaGljYWwgY29uc29sZSB0 aGF0IHN1cHBvcnRzIHRoZSBHcmFwaGljcw0KPiBPdXRwdXQgUHJvdG9jb2wuDQo+ID4gKy8vDQo+ ID4gKy8vIENvcHlyaWdodCAoYykgMjAxOCwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMN Cj4gcmVzZXJ2ZWQuPEJSPg0KPiA+ICsvLw0KPiA+ICsvLyBUaGlzIHByb2dyYW0gYW5kIHRoZSBh Y2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ID4gKy8vIGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFp bGFibGUgdW5kZXIgdGhlIHRlcm1zDQo+IGFuZCBjb25kaXRpb25zIG9mIHRoZSBCU0QgTGljZW5z ZQ0KPiA+ICsvLyB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIGZ1bGwg dGV4dA0KPiBvZiB0aGUgbGljZW5zZSBtYXkgYmUgZm91bmQgYXQNCj4gPiArLy8gaHR0cDovL29w ZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiA+ICsvLyBUSEUgUFJPR1JB TSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UNCj4gT04gQU4gIkFTIElTIiBC QVNJUywNCj4gPiArLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBB TlkgS0lORCwNCj4gRUlUSEVSIEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gPiArLy8NCj4gPiArLy8g KiovDQo+ID4gKw0KPiA+ICsjc3RyaW5nIFNUUl9NT0RVTEVfQUJTVFJBQ1QgICAgICNsYW5ndWFn ZSBlbi1VUw0KPiAiUHJvdmlkZXMgc2VydmljZXMgdG8gZGlzcGxheSBjb21wbGV0aW9uIHByb2dy ZXNzIG9mIGENCj4gZmlybXdhcmUgdXBkYXRlIG9uIGEgZ3JhcGhpY2FsIGNvbnNvbGUgdGhhdCBz dXBwb3J0cyB0aGUNCj4gR3JhcGhpY3MgT3V0cHV0IFByb3RvY29sLiINCj4gPiArDQo+ID4gKyNz dHJpbmcgU1RSX01PRFVMRV9ERVNDUklQVElPTiAgI2xhbmd1YWdlIGVuLVVTDQo+ICJQcm92aWRl cyBzZXJ2aWNlcyB0byBkaXNwbGF5IGNvbXBsZXRpb24gcHJvZ3Jlc3Mgb2YgYQ0KPiBmaXJtd2Fy ZSB1cGRhdGUgb24gYSBncmFwaGljYWwgY29uc29sZSB0aGF0IHN1cHBvcnRzIHRoZQ0KPiBHcmFw aGljcyBPdXRwdXQgUHJvdG9jb2wuIg0KPiA+IGRpZmYgLS1naXQNCj4gYS9NZGVNb2R1bGVQa2cv TGlicmFyeS9EaXNwbGF5VXBkYXRlUHJvZ3Jlc3NMaWJUZXh0L0Rpc3ANCj4gbGF5VXBkYXRlUHJv Z3Jlc3NMaWJUZXh0LmMNCj4gYi9NZGVNb2R1bGVQa2cvTGlicmFyeS9EaXNwbGF5VXBkYXRlUHJv Z3Jlc3NMaWJUZXh0L0Rpc3ANCj4gbGF5VXBkYXRlUHJvZ3Jlc3NMaWJUZXh0LmMNCj4gPiBuZXcg ZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAwMDAuLjdhY2E4Yjg5ZDANCj4gPiAt LS0gL2Rldi9udWxsDQo+ID4gKysrDQo+IGIvTWRlTW9kdWxlUGtnL0xpYnJhcnkvRGlzcGxheVVw ZGF0ZVByb2dyZXNzTGliVGV4dC9EaXNwDQo+IGxheVVwZGF0ZVByb2dyZXNzTGliVGV4dC5jDQo+ ID4gQEAgLTAsMCArMSwxNzQgQEANCj4gPiArLyoqICBAZmlsZQ0KPiA+ICsgIFByb3ZpZGVzIHNl cnZpY2VzIHRvIGRpc3BsYXkgY29tcGxldGlvbiBwcm9ncmVzcyBvZg0KPiBhIGZpcm13YXJlIHVw ZGF0ZSBvbiBhDQo+ID4gKyAgdGV4dCBjb25zb2xlLg0KPiA+ICsNCj4gPiArICBDb3B5cmlnaHQg KGMpIDIwMTYsIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4gQWxsDQo+IHJpZ2h0cyByZXNlcnZlZC48 QlI+DQo+ID4gKyAgQ29weXJpZ2h0IChjKSAyMDE4LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJp Z2h0cw0KPiByZXNlcnZlZC48QlI+DQo+ID4gKw0KPiA+ICsgIFJlZGlzdHJpYnV0aW9uIGFuZCB1 c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsDQo+IHdpdGggb3Igd2l0aG91dA0KPiA+ICsg IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZQ0KPiBmb2xsb3dp bmcgY29uZGl0aW9ucyBhcmUgbWV0Og0KPiA+ICsgIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUNCj4gYWJvdmUgY29weXJpZ2h0IG5vdGljZSwNCj4gPiAr ICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZw0KPiBkaXNjbGFpbWVy Lg0KPiA+ICsgIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj ZQ0KPiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwNCj4gPiArICB0aGlzIGxpc3Qgb2YgY29u ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZw0KPiBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0 aW9uDQo+ID4gKyAgYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQ0KPiBk aXN0cmlidXRpb24uDQo+ID4gKw0KPiA+ICsgIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg VEhFIENPUFlSSUdIVCBIT0xERVJTDQo+IEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQNCj4g PiArICBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUDQo+ IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRA0KPiA+ICsgIFdBUlJBTlRJRVMgT0YgTUVSQ0hB TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBDQo+IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT Q0xBSU1FRC4NCj4gPiArICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBP Ug0KPiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULA0KPiA+ICsgIElORElS RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SDQo+IENPTlNFUVVFTlRJQUwg REFNQUdFUyAoSU5DTFVESU5HLA0KPiA+ICsgIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F TlQgT0YgU1VCU1RJVFVURSBHT09EUw0KPiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsDQo+ID4g KyAgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSDQo+ IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRg0KPiA+ICsgIExJQUJJTElUWSwgV0hFVEhFUiBJ TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwNCj4gT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ R0VOQ0UNCj4gPiArICBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF IFVTRSBPRg0KPiBUSElTIFNPRlRXQVJFLCBFVkVOIElGDQo+ID4gKyAgQURWSVNFRCBPRiBUSEUg UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArDQo+ID4g KyNpbmNsdWRlIDxQaUR4ZS5oPg0KPiA+ICsjaW5jbHVkZSA8TGlicmFyeS9EZWJ1Z0xpYi5oPg0K PiA+ICsjaW5jbHVkZSA8TGlicmFyeS9VZWZpQm9vdFNlcnZpY2VzVGFibGVMaWIuaD4NCj4gPiAr I2luY2x1ZGUgPExpYnJhcnkvVWVmaUxpYi5oPg0KPiA+ICsNCj4gPiArLy8NCj4gPiArLy8gQ29u dHJvbCBTdHlsZS4gIFNldCB0byAxMDAgc28gaXQgaXMgcmVzZXQgb24gZmlyc3QNCj4gY2FsbC4N Cj4gPiArLy8NCj4gPiArVUlOVE4gIG1QcmV2aW91c1Byb2dyZXNzID0gMTAwOw0KPiA+ICsNCj4g PiArLy8NCj4gPiArLy8gVGV4dCBmb3JlZ3JvdW5kIGNvbG9yIG9mIHByb2dyZXNzIGJhcg0KPiA+ ICsvLw0KPiA+ICtVSU5UTiAgbVByb2dyZXNzQmFyRm9yZWdyb3VuZENvbG9yOw0KPiA+ICsNCj4g PiArLyoqDQo+ID4gKyAgRnVuY3Rpb24gaW5kaWNhdGVzIHRoZSBjdXJyZW50IGNvbXBsZXRpb24g cHJvZ3Jlc3MNCj4gb2YgYSBmaXJtd2FyZSB1cGRhdGUuDQo+ID4gKyAgUGxhdGZvcm0gbWF5IG92 ZXJyaWRlIHdpdGggaXRzIG93biBzcGVjaWZpYw0KPiBmdW5jdGlvbi4NCj4gPiArDQo+ID4gKyAg QHBhcmFtW2luXSBDb21wbGV0aW9uICBBIHZhbHVlIGJldHdlZW4gMCBhbmQgMTAwDQo+IGluZGlj YXRpbmcgdGhlIGN1cnJlbnQNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRp b24gcHJvZ3Jlc3Mgb2YgYQ0KPiBmaXJtd2FyZSB1cGRhdGUuICBUaGlzDQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICB2YWx1ZSBtdXN0IHRoZSB0aGUgc2FtZSBvcg0KPiBoaWdoZXIgdGhh biBwcmV2aW91cw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbHMgdG8gdGhpcyBz ZXJ2aWNlLiAgVGhlDQo+IGZpcnN0IGNhbGwgb2YgMCBvciBhDQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICB2YWx1ZSBvZiAwIGFmdGVyIHJlYWNoaW5nIGENCj4gdmFsdWUgb2YgMTAwIHJl c2V0cw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHByb2dyZXNzIGluZGljYXRv ciB0byAwLg0KPiA+ICsgIEBwYXJhbVtpbl0gQ29sb3IgICAgICAgQ29sb3Igb2YgdGhlIHByb2dy ZXNzDQo+IGluZGljYXRvci4gIE9ubHkgdXNlZCB3aGVuDQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICBDb21wbGV0aW9uIGlzIDAgdG8gc2V0IHRoZQ0KPiBjb2xvciBvZiB0aGUgcHJvZ3Jl c3MNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgIGluZGljYXRvci4gIElmIENvbG9yIGlz DQo+IE5VTEwsIHRoZW4gdGhlIGRlZmF1bHQgY29sb3INCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgIGlzIHVzZWQuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAg ICAgICBQcm9ncmVzcyBkaXNwbGF5ZWQNCj4gc3VjY2Vzc2Z1bGx5Lg0KPiA+ICsgIEByZXR2YWwg RUZJX0lOVkFMSURfUEFSQU1FVEVSICBDb21wbGV0aW9uIGlzIG5vdCBpbg0KPiByYW5nZSAwLi4x MDAuDQo+ID4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgIENvbXBsZXRpb24gaXMg bGVzcw0KPiB0aGFuIENvbXBsZXRpb24gdmFsdWUgZnJvbQ0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBhIHByZXZpb3VzIGNhbGwgdG8NCj4gdGhpcyBzZXJ2aWNlLg0KPiA+ ICsgIEByZXR2YWwgRUZJX05PVF9SRUFEWSAgICAgICAgICBUaGUgZGV2aWNlIHVzZWQgdG8NCj4g aW5kaWNhdGUgcHJvZ3Jlc3MgaXMgbm90DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGF2YWlsYWJsZS4NCj4gPiArKiovDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArRUZJQVBJ DQo+ID4gK0Rpc3BsYXlVcGRhdGVQcm9ncmVzcyAoDQo+ID4gKyAgSU4gVUlOVE4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIENvbXBsZXRpb24sDQo+ID4gKyAgSU4gRUZJX0dSQVBISUNT X09VVFBVVF9CTFRfUElYRUxfVU5JT04gICpDb2xvcg0KPiBPUFRJT05BTA0KPiA+ICsgICkNCj4g PiArew0KPiA+ICsgIFVJTlROICBJbmRleDsNCj4gPiArICBVSU5UTiAgQ3VycmVudEF0dHJpYnV0 ZTsNCj4gPiArDQo+ID4gKyAgLy8NCj4gPiArICAvLyBDaGVjayByYW5nZQ0KPiA+ICsgIC8vDQo+ ID4gKyAgaWYgKENvbXBsZXRpb24gPiAxMDApIHsNCj4gPiArICAgIHJldHVybiBFRklfSU5WQUxJ RF9QQVJBTUVURVI7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICAvLw0KPiA+ICsgIC8vIENoZWNr IHRvIHNlZSBpZiB0aGlzIENvbXBsZXRpb24gcGVyY2VudGFnZSBoYXMNCj4gYWxyZWFkeSBiZWVu IGRpc3BsYXllZA0KPiA+ICsgIC8vDQo+ID4gKyAgaWYgKENvbXBsZXRpb24gPT0gbVByZXZpb3Vz UHJvZ3Jlc3MpIHsNCj4gPiArICAgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4gPiArICB9DQo+ID4g Kw0KPiA+ICsgIC8vDQo+ID4gKyAgLy8gRG8gc3BlY2lhbCBpbml0IG9uIGZpcnN0IGNhbGwgb2Yg ZWFjaCBwcm9ncmVzcw0KPiBzZXNzaW9uDQo+ID4gKyAgLy8NCj4gPiArICBpZiAobVByZXZpb3Vz UHJvZ3Jlc3MgPT0gMTAwKSB7DQo+ID4gKyAgICBQcmludCAoTCJcbiIpOw0KPiA+ICsNCj4gPiAr ICAgIC8vDQo+ID4gKyAgICAvLyBDb252ZXJ0IHBpeGVsIGNvbG9yIHRvIHRleHQgZm9yZWdyb3Vu ZCBjb2xvcg0KPiA+ICsgICAgLy8NCj4gPiArICAgIGlmIChDb2xvciA9PSBOVUxMKSB7DQo+ID4g KyAgICAgIG1Qcm9ncmVzc0JhckZvcmVncm91bmRDb2xvciA9IEVGSV9XSElURTsNCj4gPiArICAg IH0gZWxzZSB7DQo+ID4gKyAgICAgIG1Qcm9ncmVzc0JhckZvcmVncm91bmRDb2xvciA9IEVGSV9C TEFDSzsNCj4gPiArICAgICAgaWYgKENvbG9yLT5QaXhlbC5CbHVlID49IDB4NDApIHsNCj4gPiAr ICAgICAgICBtUHJvZ3Jlc3NCYXJGb3JlZ3JvdW5kQ29sb3IgfD0gRUZJX0JMVUU7DQo+ID4gKyAg ICAgIH0NCj4gPiArICAgICAgaWYgKENvbG9yLT5QaXhlbC5HcmVlbiA+PSAweDQwKSB7DQo+ID4g KyAgICAgICAgbVByb2dyZXNzQmFyRm9yZWdyb3VuZENvbG9yIHw9IEVGSV9HUkVFTjsNCj4gPiAr ICAgICAgfQ0KPiA+ICsgICAgICBpZiAoQ29sb3ItPlBpeGVsLlJlZCA+PSAweDQwKSB7DQo+ID4g KyAgICAgICAgbVByb2dyZXNzQmFyRm9yZWdyb3VuZENvbG9yIHw9IEVGSV9SRUQ7DQo+ID4gKyAg ICAgIH0NCj4gPiArICAgICAgaWYgKENvbG9yLT5QaXhlbC5CbHVlID49IDB4QzAgfHwgQ29sb3It DQo+ID5QaXhlbC5HcmVlbiA+PSAweEMwIHx8IENvbG9yLT5QaXhlbC5SZWQgPj0gMHhDMCkgew0K PiA+ICsgICAgICAgIG1Qcm9ncmVzc0JhckZvcmVncm91bmRDb2xvciB8PSBFRklfQlJJR0hUOw0K PiA+ICsgICAgICB9DQo+ID4gKyAgICAgIGlmIChtUHJvZ3Jlc3NCYXJGb3JlZ3JvdW5kQ29sb3Ig PT0gRUZJX0JMQUNLKSB7DQo+ID4gKyAgICAgICAgbVByb2dyZXNzQmFyRm9yZWdyb3VuZENvbG9y ID0gRUZJX1dISVRFOw0KPiA+ICsgICAgICB9DQo+ID4gKyAgICB9DQo+ID4gKw0KPiA+ICsgICAg Ly8NCj4gPiArICAgIC8vIENsZWFyIHByZXZpb3VzDQo+ID4gKyAgICAvLw0KPiA+ICsgICAgbVBy ZXZpb3VzUHJvZ3Jlc3MgPSAwOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgLy8NCj4gPiArICAv LyBDYW4gbm90IHVwZGF0ZSBwcm9ncmVzcyBiYXIgaWYgQ29tcGxldGlvbiBpcw0KPiBsZXNzIHRo YW4gcHJldmlvdXMNCj4gPiArICAvLw0KPiA+ICsgIGlmIChDb21wbGV0aW9uIDwgbVByZXZpb3Vz UHJvZ3Jlc3MpIHsNCj4gPiArICAgIERFQlVHICgoREVCVUdfV0FSTiwgIldBUk5JTkc6IENvbXBs ZXRpb24gKCVkKQ0KPiBzaG91bGQgbm90IGJlIGxlc3NzIHRoYW4gUHJldmlvdXMgKCVkKSEhIVxu IiwNCj4gQ29tcGxldGlvbiwgbVByZXZpb3VzUHJvZ3Jlc3MpKTsNCj4gPiArICAgIHJldHVybiBF RklfSU5WQUxJRF9QQVJBTUVURVI7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICAvLw0KPiA+ICsg IC8vIFNhdmUgY3VycmVudCB0ZXh0IGNvbG9yDQo+ID4gKyAgLy8NCj4gPiArICBDdXJyZW50QXR0 cmlidXRlID0gKFVJTlROKWdTVC0+Q29uT3V0LT5Nb2RlLQ0KPiA+QXR0cmlidXRlOw0KPiA+ICsN Cj4gPiArICAvLw0KPiA+ICsgIC8vIFByaW50IHByb2dyZXNzIHBlcmNlbnRhZ2UNCj4gPiArICAv Lw0KPiA+ICsgIFByaW50IChMIlxyVXBkYXRlIFByb2dyZXNzIC0gJTNkJSUgIiwgQ29tcGxldGlv bik7DQo+ID4gKw0KPiA+ICsgIC8vDQo+ID4gKyAgLy8gU2V0IHByb2dyZXNzIGJhciBjb2xvcg0K PiA+ICsgIC8vDQo+ID4gKyAgZ1NULT5Db25PdXQtPlNldEF0dHJpYnV0ZSAoDQo+ID4gKyAgICAg ICAgICAgICAgICAgZ1NULT5Db25PdXQsDQo+ID4gKyAgICAgICAgICAgICAgICAgRUZJX1RFWFRf QVRUUg0KPiAobVByb2dyZXNzQmFyRm9yZWdyb3VuZENvbG9yLCBFRklfQkxBQ0spDQo+ID4gKyAg ICAgICAgICAgICAgICAgKTsNCj4gPiArDQo+ID4gKyAgLy8NCj4gPiArICAvLyBQcmludCBjb21w bGV0ZWQgcG9ydGlvbiBvZiBwcm9ncmVzcyBiYXINCj4gPiArICAvLw0KPiA+ICsgIGZvciAoSW5k ZXggPSAwOyBJbmRleCA8IENvbXBsZXRpb24gLyAyOyBJbmRleCsrKSB7DQo+ID4gKyAgICBQcmlu dCAoTCIlYyIsIEJMT0NLRUxFTUVOVF9GVUxMX0JMT0NLKTsNCj4gPiArICB9DQo+ID4gKw0KPiA+ ICsgIC8vDQo+ID4gKyAgLy8gUmVzdG9yZSB0ZXh0IGNvbG9yDQo+ID4gKyAgLy8NCj4gPiArICBn U1QtPkNvbk91dC0+U2V0QXR0cmlidXRlIChnU1QtPkNvbk91dCwNCj4gQ3VycmVudEF0dHJpYnV0 ZSk7DQo+ID4gKw0KPiA+ICsgIC8vDQo+ID4gKyAgLy8gUHJpbnQgcmVtYWluaW5nIHBvcnRpb24g b2YgcHJvZ3Jlc3MgYmFyDQo+ID4gKyAgLy8NCj4gPiArICBmb3IgKDsgSW5kZXggPCA1MDsgSW5k ZXgrKykgew0KPiA+ICsgICAgUHJpbnQgKEwiJWMiLCBCTE9DS0VMRU1FTlRfTElHSFRfU0hBREUp Ow0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgbVByZXZpb3VzUHJvZ3Jlc3MgPSBDb21wbGV0aW9u Ow0KPiA+ICsNCj4gPiArICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ID4gK30NCj4gPiBkaWZmIC0t Z2l0DQo+IGEvTWRlTW9kdWxlUGtnL0xpYnJhcnkvRGlzcGxheVVwZGF0ZVByb2dyZXNzTGliVGV4 dC9EaXNwDQo+IGxheVVwZGF0ZVByb2dyZXNzTGliVGV4dC5pbmYNCj4gYi9NZGVNb2R1bGVQa2cv TGlicmFyeS9EaXNwbGF5VXBkYXRlUHJvZ3Jlc3NMaWJUZXh0L0Rpc3ANCj4gbGF5VXBkYXRlUHJv Z3Jlc3NMaWJUZXh0LmluZg0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAw MDAwMDAwMC4uYzMxMzQ0MzllNA0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysNCj4gYi9NZGVN b2R1bGVQa2cvTGlicmFyeS9EaXNwbGF5VXBkYXRlUHJvZ3Jlc3NMaWJUZXh0L0Rpc3ANCj4gbGF5 VXBkYXRlUHJvZ3Jlc3NMaWJUZXh0LmluZg0KPiA+IEBAIC0wLDAgKzEsNTMgQEANCj4gPiArIyMg QGZpbGUNCj4gPiArIyAgUHJvdmlkZXMgc2VydmljZXMgdG8gZGlzcGxheSBjb21wbGV0aW9uIHBy b2dyZXNzDQo+IG9mIGEgZmlybXdhcmUgdXBkYXRlIG9uIGENCj4gPiArIyAgdGV4dCBjb25zb2xl Lg0KPiA+ICsjDQo+ID4gKyMgIENvcHlyaWdodCAoYykgMjAxNiwgTWljcm9zb2Z0IENvcnBvcmF0 aW9uLCBBbGwNCj4gcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPiArIyAgQ29weXJpZ2h0IChjKSAy MDE4LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cw0KPiByZXNlcnZlZC48QlI+DQo+ID4g KyMNCj4gPiArIyAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm b3JtcywNCj4gd2l0aCBvciB3aXRob3V0DQo+ID4gKyMgIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p dHRlZCBwcm92aWRlZCB0aGF0IHRoZQ0KPiBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0Og0K PiA+ICsjICAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl DQo+IGFib3ZlIGNvcHlyaWdodCBub3RpY2UsDQo+ID4gKyMgIHRoaXMgbGlzdCBvZiBjb25kaXRp b25zIGFuZCB0aGUgZm9sbG93aW5nDQo+IGRpc2NsYWltZXIuDQo+ID4gKyMgIDIuIFJlZGlzdHJp YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZQ0KPiB0aGUgYWJvdmUgY29weXJp Z2h0IG5vdGljZSwNCj4gPiArIyAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs b3dpbmcNCj4gZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbg0KPiA+ICsjICBhbmQvb3Ig b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlDQo+IGRpc3RyaWJ1dGlvbi4NCj4gPiAr Iw0KPiA+ICsjICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M REVSUw0KPiBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EDQo+ID4gKyMgIEFOWSBFWFBSRVNT IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQNCj4gTk9UIExJTUlURUQgVE8s IFRIRSBJTVBMSUVEDQo+ID4gKyMgIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG SVRORVNTIEZPUiBBDQo+IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4NCj4gPiAr IyAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1INCj4gQ09OVFJJQlVU T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwNCj4gPiArIyAgSU5ESVJFQ1QsIElOQ0lERU5U QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1INCj4gQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM VURJTkcsDQo+ID4gKyMgIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ VFVURQ0KPiBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsDQo+ID4gKyMgIERBVEEsIE9S IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikNCj4gSE9XRVZFUiBDQVVTRUQgQU5E IE9OIEFOWSBUSEVPUlkgT0YNCj4gPiArIyAgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU LCBTVFJJQ1QgTElBQklMSVRZLA0KPiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRQ0KPiA+ ICsjICBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRg0K PiBUSElTIFNPRlRXQVJFLCBFVkVOIElGDQo+ID4gKyMgIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM SVRZIE9GIFNVQ0ggREFNQUdFLg0KPiA+ICsjIw0KPiA+ICsNCj4gPiArW0RlZmluZXNdDQo+ID4g KyAgSU5GX1ZFUlNJT04gICAgID0gMHgwMDAxMDAwNQ0KPiA+ICsgIEJBU0VfTkFNRSAgICAgICA9 IERpc3BsYXlVcGRhdGVQcm9ncmVzc0xpYlRleHQNCj4gPiArICBNT0RVTEVfVU5JX0ZJTEUgPSBE aXNwbGF5VXBkYXRlUHJvZ3Jlc3NMaWJUZXh0LnVuaQ0KPiA+ICsgIEZJTEVfR1VJRCAgICAgICA9 IENERUY4M0FFLTE5MDAtNEI0MS1CRjQ3LQ0KPiBBQUU5QkQ3MjlDQTUNCj4gPiArICBNT0RVTEVf VFlQRSAgICAgPSBEWEVfRFJJVkVSDQo+ID4gKyAgVkVSU0lPTl9TVFJJTkcgID0gMS4wDQo+ID4g KyAgTElCUkFSWV9DTEFTUyAgID0NCj4gRGlzcGxheVVwZGF0ZVByb2dyZXNzTGlifERYRV9EUklW RVIgVUVGSV9EUklWRVINCj4gVUVGSV9BUFBMSUNBVElPTg0KPiA+ICsNCj4gPiArIw0KPiA+ICsj IFRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb24gaXMgZm9yIHJlZmVyZW5jZSBvbmx5IGFuZA0KPiBu b3QgcmVxdWlyZWQgYnkgdGhlIGJ1aWxkIHRvb2xzLg0KPiA+ICsjDQo+ID4gKyMgIFZBTElEX0FS Q0hJVEVDVFVSRVMgICAgICAgICAgID0gSUEzMiBYNjQgSVBGIEVCQw0KPiA+ICsjDQo+ID4gKw0K PiA+ICtbU291cmNlc10NCj4gPiArICBEaXNwbGF5VXBkYXRlUHJvZ3Jlc3NMaWJUZXh0LmMNCj4g PiArDQo+ID4gK1tQYWNrYWdlc10NCj4gPiArICBNZGVQa2cvTWRlUGtnLmRlYw0KPiA+ICsgIE1k ZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVjDQo+ID4gKw0KPiA+ICtbTGlicmFyeUNsYXNzZXNd DQo+ID4gKyAgRGVidWdMaWINCj4gPiArICBVZWZpQm9vdFNlcnZpY2VzVGFibGVMaWINCj4gPiAr ICBVZWZpTGliDQo+ID4gZGlmZiAtLWdpdA0KPiBhL01kZU1vZHVsZVBrZy9MaWJyYXJ5L0Rpc3Bs YXlVcGRhdGVQcm9ncmVzc0xpYlRleHQvRGlzcA0KPiBsYXlVcGRhdGVQcm9ncmVzc0xpYlRleHQu dW5pDQo+IGIvTWRlTW9kdWxlUGtnL0xpYnJhcnkvRGlzcGxheVVwZGF0ZVByb2dyZXNzTGliVGV4 dC9EaXNwDQo+IGxheVVwZGF0ZVByb2dyZXNzTGliVGV4dC51bmkNCj4gPiBuZXcgZmlsZSBtb2Rl IDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAwMDAuLjNjNzgzNzIyYmMNCj4gPiAtLS0gL2Rldi9u dWxsDQo+ID4gKysrDQo+IGIvTWRlTW9kdWxlUGtnL0xpYnJhcnkvRGlzcGxheVVwZGF0ZVByb2dy ZXNzTGliVGV4dC9EaXNwDQo+IGxheVVwZGF0ZVByb2dyZXNzTGliVGV4dC51bmkNCj4gPiBAQCAt MCwwICsxLDE4IEBADQo+ID4gKy8vIC8qKiBAZmlsZQ0KPiA+ICsvLyAgUHJvdmlkZXMgc2Vydmlj ZXMgdG8gZGlzcGxheSBjb21wbGV0aW9uIHByb2dyZXNzDQo+IG9mIGEgZmlybXdhcmUgdXBkYXRl IG9uIGENCj4gPiArLy8gIHRleHQgY29uc29sZS4NCj4gPiArLy8NCj4gPiArLy8gQ29weXJpZ2h0 IChjKSAyMDE4LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cw0KPiByZXNlcnZlZC48QlI+ DQo+ID4gKy8vDQo+ID4gKy8vIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRl cmlhbHMNCj4gPiArLy8gYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUg dGVybXMNCj4gYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJTRCBMaWNlbnNlDQo+ID4gKy8vIHdoaWNo IGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgZnVsbCB0ZXh0DQo+IG9mIHRoZSBs aWNlbnNlIG1heSBiZSBmb3VuZCBhdA0KPiA+ICsvLyBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGlj ZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ID4gKy8vIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVE IFVOREVSIFRIRSBCU0QgTElDRU5TRQ0KPiBPTiBBTiAiQVMgSVMiIEJBU0lTLA0KPiA+ICsvLyBX SVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELA0KPiBFSVRI RVIgRVhQUkVTUyBPUiBJTVBMSUVELg0KPiA+ICsvLw0KPiA+ICsvLyAqKi8NCj4gPiArDQo+ID4g KyNzdHJpbmcgU1RSX01PRFVMRV9BQlNUUkFDVCAgICAgI2xhbmd1YWdlIGVuLVVTDQo+ICJQcm92 aWRlcyBzZXJ2aWNlcyB0byBkaXNwbGF5IGNvbXBsZXRpb24gcHJvZ3Jlc3Mgb2YgYQ0KPiBmaXJt d2FyZSB1cGRhdGUgb24gYSB0ZXh0IGNvbnNvbGUuIg0KPiA+ICsNCj4gPiArI3N0cmluZyBTVFJf TU9EVUxFX0RFU0NSSVBUSU9OICAjbGFuZ3VhZ2UgZW4tVVMNCj4gIlByb3ZpZGVzIHNlcnZpY2Vz IHRvIGRpc3BsYXkgY29tcGxldGlvbiBwcm9ncmVzcyBvZiBhDQo+IGZpcm13YXJlIHVwZGF0ZSBv biBhIHRleHQgY29uc29sZS4iDQo+ID4gZGlmZiAtLWdpdCBhL01kZU1vZHVsZVBrZy9NZGVNb2R1 bGVQa2cuZHNjDQo+IGIvTWRlTW9kdWxlUGtnL01kZU1vZHVsZVBrZy5kc2MNCj4gPiBpbmRleCBl YzI0YTUwYzdkLi5iNGU4YTcwM2FmIDEwMDY0NA0KPiA+IC0tLSBhL01kZU1vZHVsZVBrZy9NZGVN b2R1bGVQa2cuZHNjDQo+ID4gKysrIGIvTWRlTW9kdWxlUGtnL01kZU1vZHVsZVBrZy5kc2MNCj4g PiBAQCAtMTA4LDYgKzEwOCw3IEBAIFtMaWJyYXJ5Q2xhc3Nlc10NCj4gPg0KPiBDYXBzdWxlTGli fE1kZU1vZHVsZVBrZy9MaWJyYXJ5L0R4ZUNhcHN1bGVMaWJOdWxsL0R4ZUNhcA0KPiBzdWxlTGli TnVsbC5pbmYNCj4gPg0KPiBCbXBTdXBwb3J0TGlifE1kZU1vZHVsZVBrZy9MaWJyYXJ5L0Jhc2VC bXBTdXBwb3J0TGliL0Jhcw0KPiBlQm1wU3VwcG9ydExpYi5pbmYNCj4gPg0KPiBTYWZlSW50TGli fE1kZVBrZy9MaWJyYXJ5L0Jhc2VTYWZlSW50TGliL0Jhc2VTYWZlSW50TGliLg0KPiBpbmYNCj4g PiArDQo+IERpc3BsYXlVcGRhdGVQcm9ncmVzc0xpYnxNZGVNb2R1bGVQa2cvTGlicmFyeS9EaXNw bGF5VXBkDQo+IGF0ZVByb2dyZXNzTGliR3JhcGhpY3MvRGlzcGxheVVwZGF0ZVByb2dyZXNzTGli R3JhcGhpY3MuDQo+IGluZg0KPiA+DQo+ID4gIFtMaWJyYXJ5Q2xhc3Nlcy5FQkMuUEVJTV0NCj4g Pg0KPiBJb0xpYnxNZGVQa2cvTGlicmFyeS9QZWlJb0xpYkNwdUlvL1BlaUlvTGliQ3B1SW8uaW5m DQo+ID4gQEAgLTMyNyw2ICszMjgsOCBAQCBbQ29tcG9uZW50c10NCj4gPg0KPiBNZGVNb2R1bGVQ a2cvTGlicmFyeS9GcmFtZUJ1ZmZlckJsdExpYi9GcmFtZUJ1ZmZlckJsdExpYg0KPiAuaW5mDQo+ ID4NCj4gTWRlTW9kdWxlUGtnL0xpYnJhcnkvTm9uRGlzY292ZXJhYmxlRGV2aWNlUmVnaXN0cmF0 aW9uTGkNCj4gYi9Ob25EaXNjb3ZlcmFibGVEZXZpY2VSZWdpc3RyYXRpb25MaWIuaW5mDQo+ID4N Cj4gTWRlTW9kdWxlUGtnL0xpYnJhcnkvQmFzZUJtcFN1cHBvcnRMaWIvQmFzZUJtcFN1cHBvcnRM aWINCj4gLmluZg0KPiA+ICsNCj4gTWRlTW9kdWxlUGtnL0xpYnJhcnkvRGlzcGxheVVwZGF0ZVBy b2dyZXNzTGliR3JhcGhpY3MvRGkNCj4gc3BsYXlVcGRhdGVQcm9ncmVzc0xpYkdyYXBoaWNzLmlu Zg0KPiA+ICsNCj4gTWRlTW9kdWxlUGtnL0xpYnJhcnkvRGlzcGxheVVwZGF0ZVByb2dyZXNzTGli VGV4dC9EaXNwbGENCj4geVVwZGF0ZVByb2dyZXNzTGliVGV4dC5pbmYNCj4gPg0KPiA+ICAgIE1k ZU1vZHVsZVBrZy9Vbml2ZXJzYWwvQmRzRHhlL0Jkc0R4ZS5pbmYNCj4gPg0KPiBNZGVNb2R1bGVQ a2cvQXBwbGljYXRpb24vQm9vdE1hbmFnZXJNZW51QXBwL0Jvb3RNYW5hZ2VyTQ0KPiBlbnVBcHAu aW5mDQo+ID4gLS0NCj4gPiAyLjE0LjIud2luZG93cy4zDQo+ID4NCj4gPiBfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KPiA+IGVkazItZGV2ZWwgbWFpbGlu ZyBsaXN0DQo+ID4gZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmcNCj4gPiBodHRwczovL2xpc3RzLjAx Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2VkazItZGV2ZWwNCg==