From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) (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 DFB4321ECCB18 for ; Wed, 20 Sep 2017 01:10:57 -0700 (PDT) Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by fmsmga101.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 20 Sep 2017 01:14:03 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.42,420,1500966000"; d="scan'208";a="153427785" Received: from fmsmsx104.amr.corp.intel.com ([10.18.124.202]) by fmsmga005.fm.intel.com with ESMTP; 20 Sep 2017 01:14:03 -0700 Received: from fmsmsx126.amr.corp.intel.com (10.18.125.43) by fmsmsx104.amr.corp.intel.com (10.18.124.202) with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 20 Sep 2017 01:14:02 -0700 Received: from shsmsx151.ccr.corp.intel.com (10.239.6.50) by FMSMSX126.amr.corp.intel.com (10.18.125.43) with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 20 Sep 2017 01:14:02 -0700 Received: from shsmsx103.ccr.corp.intel.com ([169.254.4.213]) by SHSMSX151.ccr.corp.intel.com ([169.254.3.98]) with mapi id 14.03.0319.002; Wed, 20 Sep 2017 16:14:00 +0800 From: "Ni, Ruiyu" To: Paulo Alcantara , "edk2-devel@lists.01.org" CC: "Dong, Eric" , "Zeng, Star" , Laszlo Ersek Thread-Topic: [PATCH v2 2/3] MdeModulePkg/PartitionDxe: Fix creation of UDF logical partition Thread-Index: AQHTL7bdvEoQhbf3FUqqyg2jW1sWRKK5z7awgACD2ICAAxgBsA== Date: Wed, 20 Sep 2017 08:14:00 +0000 Message-ID: <734D49CCEBEEF84792F5B80ED585239D5BA63C82@SHSMSX103.ccr.corp.intel.com> References: <1321928015f9ed919425051e0d75c132de77348c.1505653040.git.pcacjr@zytor.com> <734D49CCEBEEF84792F5B80ED585239D5BA44216@SHSMSX151.ccr.corp.intel.com> <71ad2dca-6b6a-f6f7-cf4b-1018f7682306@zytor.com> In-Reply-To: <71ad2dca-6b6a-f6f7-cf4b-1018f7682306@zytor.com> Accept-Language: en-US, zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Subject: Re: [PATCH v2 2/3] MdeModulePkg/PartitionDxe: Fix creation of UDF logical partition 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, 20 Sep 2017 08:10:58 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 DQoNClRoYW5rcy9SYXkNCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBQ YXVsbyBBbGNhbnRhcmEgW21haWx0bzpwY2FjanJAenl0b3IuY29tXQ0KPiBTZW50OiBUdWVzZGF5 LCBTZXB0ZW1iZXIgMTksIDIwMTcgMTI6MzggQU0NCj4gVG86IE5pLCBSdWl5dSA8cnVpeXUubmlA aW50ZWwuY29tPjsgZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmcNCj4gQ2M6IERvbmcsIEVyaWMgPGVy aWMuZG9uZ0BpbnRlbC5jb20+OyBaZW5nLCBTdGFyIDxzdGFyLnplbmdAaW50ZWwuY29tPjsNCj4g TGFzemxvIEVyc2VrIDxsZXJzZWtAcmVkaGF0LmNvbT4NCj4gU3ViamVjdDogUmU6IFtQQVRDSCB2 MiAyLzNdIE1kZU1vZHVsZVBrZy9QYXJ0aXRpb25EeGU6IEZpeCBjcmVhdGlvbiBvZg0KPiBVREYg bG9naWNhbCBwYXJ0aXRpb24NCj4gDQo+IEhpLA0KPiANCj4gT24gOS8xNy8yMDE3IDk6NTQgUE0s IE5pLCBSdWl5dSB3cm90ZToNCj4gPiBQYXVsbywNCj4gPiBTZXZlcmFsIGNvbW1lbnRzOg0KPiA+ IDEuIENhbiBiZWxvdyBsb2dpYyBiZSByZW1vdmVkIGluIFBhcnRpdGlvbkR4ZS9VZGYuYz8NCj4g PiB3aGlsZSAoIUlzRGV2aWNlUGF0aEVuZCAoRGV2aWNlUGF0aE5vZGUpKSB7DQo+ID4gICAgICAv Lw0KPiA+ICAgICAgLy8gRG8gbm90IGFsbG93IGNoZWNraW5nIGZvciBVREYgZmlsZSBzeXN0ZW1z IGluIENEUk9NICJFbCBUb3JpdG8iDQo+ID4gICAgICAvLyBwYXJ0aXRpb25zLCBhbmQgc2tpcCBk dXBsaWNhdGUgaW5zdGFsbGF0aW9uIG9mIFVERiBmaWxlIHN5c3RlbSBjaGlsZA0KPiA+ICAgICAg Ly8gbm9kZXMuDQo+ID4gICAgICAvLw0KPiA+ICAgICAgaWYgKERldmljZVBhdGhUeXBlIChEZXZp Y2VQYXRoTm9kZSkgPT0gTUVESUFfREVWSUNFX1BBVEgpIHsNCj4gPiAgICAgICAgaWYgKERldmlj ZVBhdGhTdWJUeXBlIChEZXZpY2VQYXRoTm9kZSkgPT0gTUVESUFfQ0RST01fRFApIHsNCj4gPiAg ICAgICAgICByZXR1cm4gRUZJX05PVF9GT1VORDsNCj4gPiAgICAgICAgfQ0KPiA+ICAgICAgICBp ZiAoRGV2aWNlUGF0aFN1YlR5cGUgKERldmljZVBhdGhOb2RlKSA9PSBNRURJQV9WRU5ET1JfRFAp IHsNCj4gPiAgICAgICAgICBWZW5kb3JEZWZpbmVkR3VpZCA9IChFRklfR1VJRCAqKSgoVUlOVE4p RGV2aWNlUGF0aE5vZGUgKw0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIE9GRlNFVF9PRiAoVkVORE9SX0RFVklDRV9QQVRILCBHdWlkKSk7DQo+ID4gICAgICAg ICAgaWYgKENvbXBhcmVHdWlkIChWZW5kb3JEZWZpbmVkR3VpZCwgJlVkZkRldlBhdGhHdWlkKSkg ew0KPiA+ICAgICAgICAgICAgcmV0dXJuIEVGSV9OT1RfRk9VTkQ7DQo+ID4gICAgICAgICAgfQ0K PiA+ICAgICAgICB9DQo+ID4gICAgICB9DQo+ID4gICAgICAvLw0KPiA+ICAgICAgLy8gVHJ5IG5l eHQgZGV2aWNlIHBhdGggbm9kZQ0KPiA+ICAgICAgLy8NCj4gPiAgICAgIERldmljZVBhdGhOb2Rl ID0gTmV4dERldmljZVBhdGhOb2RlIChEZXZpY2VQYXRoTm9kZSk7DQo+ID4gICAgfQ0KPiANCj4g SSB0aGluayBpdCdzIG5vIGxvbmdlciBuZWNlc3NhcnksIHNvIEknbGwgcmVtb3ZlIGl0Lg0KPiAN Cj4gPg0KPiA+IDIuIENhbiB5b3UgYWRkIGZ1bmN0aW9uIGhlYWRlciBjb21tZW50cyBmb3IgdGhl IG5ld2x5IGFkZGVkIGZ1bmN0aW9ucz8NCj4gDQo+IFN1cmUuDQoNCldoZW4geW91IGFkZCB0aGUg aGVhZGVyIGNvbW1lbnRzLCBwbGVhc2UgcnVuDQpQeXRob24gQmFzZVRvb2xzL1NvdXJjZS9QeXRo b24vRWNjL0VjYy5weSAtdCBNZGVNb2R1bGVQa2cvVW5pdmVyc2FsL0Rpc2svUGFydGl0aW9uRHhl IC1zDQpUbyBtYWtlIHN1cmUgdGhlcmUgaXMgbm8gb3RoZXIgY29kaW5nIHN0eWxlIGlzc3VlLg0K DQo+IA0KPiA+DQo+ID4gMy4gQ2hhbmdlIHRoZSBjb25zdW1pbmcgY29kZSBvZiBJU19VREZfWFhY IG1hY3JvIGFmdGVyIHBhdGNoICMxIGlzDQo+IGNoYW5nZWQuDQo+IA0KPiBBQ0suDQoNCkkgdGhp bmsgeW91IG1heSBhbHNvIG5lZWQgdG8gZGVjbGFyZSB0aGUgQnVmZmVyIGFzIFVERl9ERVNDUklQ VE9SX1RBRy4NCg0KPiANCj4gPg0KPiA+IDQuIFBlcmhhcHMgdG8gYWRkIG1vcmUgY2hlY2tzIGZv ciB0aGVzZSBudW1iZXJzIHJlYWQgZnJvbSB0aGUgVURGDQo+IENEUk9NLg0KPiA+IEFzIEppZXdl biBtZW50aW9uZWQgaW4gYW5vdGhlciBtYWlsLCBzZWN1cmUgY29kZSBuZWVkcyB0byB2YWxpZGF0 ZSBhbGwNCj4gZXh0ZXJuYWwgaW5wdXRzLg0KPiA+IFdlIHNob3VsZG4ndCBhc3N1bWUgdGhlIFVE RiBDRFJPTSBpcyBhIHdlbGwtZm9ybWF0dGVkIENEUk9NLg0KPiA+IEEgaGFja2VyIG1heSBjcmVh dGUgYSBVREYgQ0RST00gdG8gaGFjayB0aGUgc3lzdGVtIGJ5IHVzaW5nIG1lY2hhbmlzbQ0KPiA+ IGxpa2UgYnVmZmVyIG92ZXJmbG93LCBpbnRlZ2VyIG92ZXJmbG93LCBldGMuDQo+IA0KPiBPSywg d2hlbiB3ZSBzdGFydCB0aGUgTWFpbiBWb2x1bWUgRGVzY3JpcHRvciBTZXF1ZW5jZSAoTVZEUyks IHdlIHJlbHkNCj4gb24gIkV4dGVudEFkLT5FeHRlbnRMb2NhdGlvbiIgdG8ga25vdyB0aGUgTEJB IHdoZXJlIHRvIHN0YXJ0IHRoZQ0KPiBzZXF1ZW5jZSwgYW5kIG9uICJFeHRlbnRBZC0+RXh0ZW50 TGVuZ3RoIiB0byBrbm93IG1hbnkgTEJBcyB0aGUNCj4gc2VxdWVuY2UgaGFzLiBXZSBvbmx5IGNh cmUgYWJvdXQgTFZELCBQRCBhbmQgVEQgZGVzY3JpcHRvcnMuIFdlIGN1cnJlbnRseQ0KPiBjaGVj ayB3aGV0aGVyIGEgVEQgZGVzY3JpcHRvciBleGlzdHMsIG9yIHRoZSBzZWFyY2ggZXhjZWVkIEV4 dGVudEFkLQ0KPiA+RXh0ZW50TGVuZ3RoIGJsb2NrcyB0byBkZXRlcm1pbmUgd2hlbiBzdG9wcGlu ZyB0aGUgc2VxdWVuY2UuIFRoYXQNCj4gZG9lc24ndCBzZWVtIHRvIGJlIHNhZmUgZW5vdWdoLCBi dXQgaGVyZSBhcmUgc29tZSB0aG91Z2h0czoNCj4gDQo+IGEuICJFeHRlbnRBZC0+RXh0ZW50TGVu Z3RoIiBtYXkgcG9pbnQgdG8gYSBiYWQgdmFsdWUuIElmIGl0J3MgZ3JlYXRlciB0aGFuIG9yDQo+ IGVxdWFsIHRvIEJsb2NrSW8tPk1lZGlhLT5MYXN0QmxvY2ssIGFuZCB0aGVyZSBpcyBubyBURCBk ZXNjcmlwdG9yLCB3ZSdsbCBoYXZlDQo+IHRvIHdhbGsgdGhlIGVudGlyZSBkaXNrIGFuZCB0aGVy ZSB3aWxsIHRvbyBtdWNoIEkvTyBvdmVyaGVhZCBhbmQgdGhlbg0KPiBpbXBhY3RpbmcgYm9vdHVw LiBPYnZpb3VzbHksIHdoZW4gaXQncyBncmVhdGVyIHRoYW4gTGFzdEJsb2NrLCBEaWtzSW8tDQo+ ID5SZWFkRGlzaygpIHNob3VsZCBub3QgYWxsb3cgdG8gcmVhZCBhIG5vbi1leGlzdGVudCBMQkEg YW5kIHRoZW4gcmV0dXJuDQo+IEVGSV9JTlZBTElEX1BBUkFNRVRFUiwgYXMgcGVyIFVFRkkgc3Bl Yy4NCj4gDQo+IGIuICJFeHRlbnRBZC0+RXh0ZW50TG9jYXRpb24iIG1pZ2h0IHBvaW50IHRvIGEg aW52YWxpZCBMQkEsIGFsdGhvdWdoDQo+IERpc2tJby0+UmVhZERpc2soKSB3b3VsZCBub3QgYWxs b3cgaXQuDQo+IA0KPiBTbywgaXQncyB0aW1lIHRvIGxvb2sgYXQgVURGIDIuNjAgc3BlYyBhZ2Fp bjoNCj4gDQo+ICA+IFZvbHVtZSBEZXNjcmlwdG9yIFNlcXVlbmNlIEV4dGVudA0KPiAgPg0KPiAg PiBCb3RoIHRoZSBtYWluIGFuZCByZXNlcnZlIHZvbHVtZSBkZXNjcmlwdG9yIHNlcXVlbmNlIGV4 dGVudHMgID4gc2hhbGwNCj4gZWFjaCBoYXZlIGEgbWluaW11bSBsZW5ndGggb2YgMTYgbG9naWNh bCBzZWN0b3JzLiBUaGUgVkRTICA+IEV4dGVudCBtYXkgYmUNCj4gdGVybWluYXRlZCBieSB0aGUg ZXh0ZW50IGxlbmd0aC4NCj4gDQo+IEl0IGRvZXNuJ3QgdGVsbCB1cyBlaXRoZXIgYSBsaW1pdCBv ZiBsb2dpY2FsIGJsb2Nrcywgb3IgYSBtYXhpbXVtIG51bWJlci4NCj4gDQo+IE5leHQ6DQo+IA0K PiAgPiA2LjkuMi4zIFN0ZXAgMy4gVm9sdW1lIERlc2NyaXB0b3IgU2VxdWVuY2UgID4gUmVhZCBs b2dpY2FsIHNlY3RvcnM6DQo+ICA+IE1WRFNfTG9jYXRpb24gdGhyb3VnaCBNVkRTX0xvY2F0aW9u ICsgKE1WRFNfTGVuZ3RoIC0gMSkgLw0KPiBTZWN0b3JTaXplICA+IC4uLg0KPiANCj4gTVZEU19M ZW5ndGggPT0gRXh0ZW50QWQtPkV4dGVudExlbmd0aCwgc28gc3RpbGwgaW5zdWZmaWNpZW50Lg0K PiANCj4gTmV4dDoNCj4gDQo+ICA+IFRoZSBkYXRhIGxvY2F0ZWQgaW4gYnl0ZXMgMC0zIGFuZCA1 IG9mIHRoZSBBbmNob3IgVm9sdW1lIERlc2NyaXB0b3INCj4gUG9pbnRlciBtYXkgYmUgID4gdXNl ZCBmb3IgZm9ybWF0IHZlcmlmaWNhdGlvbiBpZiBkZXNpcmVkLiBWZXJpZnlpbmcgdGhlIFRhZw0K PiBDaGVja3N1bSBpbiBieXRlIDQgYW5kICA+IERlc2NyaXB0b3IgQ1JDIGluIGJ5dGVzIDgtMTEg YXJlIGdvb2QgYWRkaXRpb25hbA0KPiB2ZXJpZmljYXRpb25zIHRvIHBlcmZvcm0uDQo+ICA+IE1W RFNfTG9jYXRpb24gYW5kIE1WRFNfTGVuZ3RoIGFyZSByZWFkIGZyb20gdGhpcyBzdHJ1Y3R1cmUu DQo+IA0KPiBTZWVtcyBsaWtlIGEgZ3JlYXQgY2hlY2sgcHJpb3IgdG8gcmVhZGluZyBFeHRlbnRB ZC0+RXh0ZW50TG9jYXRpb24gYW5kDQo+IEV4dGVudEFkLT5FeHRlbnRMZW5ndGggY29udGVudHMu IFdvdWxkIHRoYXQgYmUgc3VmZmljaWVudCB0byB5b3U/DQoNCg0KT0sgdG8gbWUuDQoNCj4gDQo+ IEkgaGF2ZW4ndCBmb3VuZCBhIHdheSB0byBsaW1pdCB0aGUgbnVtYmVyIG9mIGJsb2NrcyBhIFZv bHVtZSBEZXNjcmlwdG9yDQo+IFNlcXVlbmNlIG1pZ2h0IGhhdmUuDQo+IA0KPiBUaGFua3MsDQo+ IFBhdWxvDQo+IA0KPiA+DQo+ID4NCj4gPiBUaGFua3MvUmF5DQo+ID4NCj4gPj4gLS0tLS1Pcmln aW5hbCBNZXNzYWdlLS0tLS0NCj4gPj4gRnJvbTogUGF1bG8gQWxjYW50YXJhIFttYWlsdG86cGNh Y2pyQHp5dG9yLmNvbV0NCj4gPj4gU2VudDogU3VuZGF5LCBTZXB0ZW1iZXIgMTcsIDIwMTcgOTox MyBQTQ0KPiA+PiBUbzogZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmcNCj4gPj4gQ2M6IFBhdWxvIEFs Y2FudGFyYSA8cGNhY2pyQHp5dG9yLmNvbT47IERvbmcsIEVyaWMNCj4gPj4gPGVyaWMuZG9uZ0Bp bnRlbC5jb20+OyBOaSwgUnVpeXUgPHJ1aXl1Lm5pQGludGVsLmNvbT47IFplbmcsIFN0YXINCj4g Pj4gPHN0YXIuemVuZ0BpbnRlbC5jb20+OyBMYXN6bG8gRXJzZWsgPGxlcnNla0ByZWRoYXQuY29t Pg0KPiA+PiBTdWJqZWN0OiBbUEFUQ0ggdjIgMi8zXSBNZGVNb2R1bGVQa2cvUGFydGl0aW9uRHhl OiBGaXggY3JlYXRpb24gb2YNCj4gPj4gVURGIGxvZ2ljYWwgcGFydGl0aW9uDQo+ID4+DQo+ID4+ IERvIG5vdCB1c2UgZW50aXJlIGJsb2NrIGRldmljZSBzaXplIGZvciB0aGUgVURGIGxvZ2ljYWwg cGFydGl0aW9uLA0KPiA+PiBpbnN0ZWFkIHJlc2VydmUgdGhlIGFwcHJvcHJpYXRlIHNwYWNlIChM VkQgc3BhY2UpIGZvciBpdC4NCj4gPj4NCj4gPj4gQ2M6IEVyaWMgRG9uZyA8ZXJpYy5kb25nQGlu dGVsLmNvbT4NCj4gPj4gQ2M6IFJ1aXl1IE5pIDxydWl5dS5uaUBpbnRlbC5jb20+DQo+ID4+IENj OiBTdGFyIFplbmcgPHN0YXIuemVuZ0BpbnRlbC5jb20+DQo+ID4+IENjOiBMYXN6bG8gRXJzZWsg PGxlcnNla0ByZWRoYXQuY29tPg0KPiA+PiBSZXBvcnRlZC1ieTogUnVpeXUgTmkgPHJ1aXl1Lm5p QGludGVsLmNvbT4NCj4gPj4gQ29udHJpYnV0ZWQtdW5kZXI6IFRpYW5vQ29yZSBDb250cmlidXRp b24gQWdyZWVtZW50IDEuMQ0KPiA+PiBTaWduZWQtb2ZmLWJ5OiBQYXVsbyBBbGNhbnRhcmEgPHBj YWNqckB6eXRvci5jb20+DQo+ID4+IC0tLQ0KPiA+PiAgIE1kZU1vZHVsZVBrZy9Vbml2ZXJzYWwv RGlzay9QYXJ0aXRpb25EeGUvVWRmLmMgfCAzMjMNCj4gPj4gKysrKysrKysrKysrKysrKysrLS0N Cj4gPj4gICAxIGZpbGUgY2hhbmdlZCwgMjk5IGluc2VydGlvbnMoKyksIDI0IGRlbGV0aW9ucygt KQ0KPiA+Pg0KPiA+PiBkaWZmIC0tZ2l0IGEvTWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9EaXNrL1Bh cnRpdGlvbkR4ZS9VZGYuYw0KPiA+PiBiL01kZU1vZHVsZVBrZy9Vbml2ZXJzYWwvRGlzay9QYXJ0 aXRpb25EeGUvVWRmLmMNCj4gPj4gaW5kZXggNzg1NmI1ZGZjMS4uM2U4NDg4MjkyMiAxMDA2NDQN Cj4gPj4gLS0tIGEvTWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9EaXNrL1BhcnRpdGlvbkR4ZS9VZGYu Yw0KPiA+PiArKysgYi9NZGVNb2R1bGVQa2cvVW5pdmVyc2FsL0Rpc2svUGFydGl0aW9uRHhlL1Vk Zi5jDQo+ID4+IEBAIC04NCwyNCArODQsOCBAQCBGaW5kQW5jaG9yVm9sdW1lRGVzY3JpcHRvclBv aW50ZXIgKA0KPiA+PiAgICAgcmV0dXJuIEVGSV9WT0xVTUVfQ09SUlVQVEVEOw0KPiA+PiAgIH0N Cj4gPj4NCj4gPj4gLS8qKg0KPiA+PiAtICBDaGVjayBpZiBibG9jayBkZXZpY2Ugc3VwcG9ydHMg YSB2YWxpZCBVREYgZmlsZSBzeXN0ZW0gYXMNCj4gPj4gc3BlY2lmaWVkIGJ5IE9TVEENCj4gPj4g LSAgVW5pdmVyc2FsIERpc2sgRm9ybWF0IFNwZWNpZmljYXRpb24gMi42MC4NCj4gPj4gLQ0KPiA+ PiAtICBAcGFyYW1baW5dICAgQmxvY2tJbyAgQmxvY2tJbyBpbnRlcmZhY2UuDQo+ID4+IC0gIEBw YXJhbVtpbl0gICBEaXNrSW8gICBEaXNrSW8gaW50ZXJmYWNlLg0KPiA+PiAtDQo+ID4+IC0gIEBy ZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgVURGIGZpbGUgc3lzdGVtIGZvdW5kLg0KPiA+PiAt ICBAcmV0dmFsIEVGSV9VTlNVUFBPUlRFRCAgICAgIFVERiBmaWxlIHN5c3RlbSBub3QgZm91bmQu DQo+ID4+IC0gIEByZXR2YWwgRUZJX05PX01FRElBICAgICAgICAgVGhlIGRldmljZSBoYXMgbm8g bWVkaWEuDQo+ID4+IC0gIEByZXR2YWwgRUZJX0RFVklDRV9FUlJPUiAgICAgVGhlIGRldmljZSBy ZXBvcnRlZCBhbiBlcnJvci4NCj4gPj4gLSAgQHJldHZhbCBFRklfVk9MVU1FX0NPUlJVUFRFRCBU aGUgZmlsZSBzeXN0ZW0gc3RydWN0dXJlcyBhcmUNCj4gPj4gY29ycnVwdGVkLg0KPiA+PiAtICBA cmV0dmFsIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTIFRoZSBzY2FuIHdhcyBub3Qgc3VjY2Vzc2Z1bCBk dWUgdG8NCj4gPj4gbGFjayBvZg0KPiA+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHJlc291cmNlcy4NCj4gPj4gLQ0KPiA+PiAtKiovDQo+ID4+ICAgRUZJX1NUQVRVUw0KPiA+PiAt U3VwcG9ydFVkZkZpbGVTeXN0ZW0gKA0KPiA+PiArRmluZFVkZlZvbHVtZUlkZW50aWZpZXJzICgN Cj4gPj4gICAgIElOIEVGSV9CTE9DS19JT19QUk9UT0NPTCAgKkJsb2NrSW8sDQo+ID4+ICAgICBJ TiBFRklfRElTS19JT19QUk9UT0NPTCAgICpEaXNrSW8NCj4gPj4gICAgICkNCj4gPj4gQEAgLTEx MSw3ICs5NSw2IEBAIFN1cHBvcnRVZGZGaWxlU3lzdGVtICgNCj4gPj4gICAgIFVJTlQ2NCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgRW5kRGlza09mZnNldDsNCj4gPj4gICAgIENEUk9N X1ZPTFVNRV9ERVNDUklQVE9SICAgICAgICAgICAgICAgVm9sRGVzY3JpcHRvcjsNCj4gPj4gICAg IENEUk9NX1ZPTFVNRV9ERVNDUklQVE9SICAgICAgICAgICAgICAgVGVybWluYXRpbmdWb2xEZXNj cmlwdG9yOw0KPiA+PiAtICBVREZfQU5DSE9SX1ZPTFVNRV9ERVNDUklQVE9SX1BPSU5URVIgIEFu Y2hvclBvaW50Ow0KPiA+Pg0KPiA+PiAgICAgWmVyb01lbSAoKFZPSUQgKikmVGVybWluYXRpbmdW b2xEZXNjcmlwdG9yLCBzaXplb2YNCj4gPj4gKENEUk9NX1ZPTFVNRV9ERVNDUklQVE9SKSk7DQo+ ID4+DQo+ID4+IEBAIC0yMDcsMTIgKzE5MCwzMDIgQEAgU3VwcG9ydFVkZkZpbGVTeXN0ZW0gKA0K PiA+PiAgICAgICByZXR1cm4gRUZJX1VOU1VQUE9SVEVEOw0KPiA+PiAgICAgfQ0KPiA+Pg0KPiA+ PiArICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ID4+ICt9DQo+ID4+ICsNCj4gPj4gK0VGSV9TVEFU VVMNCj4gPj4gK0dldFBhcnRpdGlvbk51bWJlciAoDQo+ID4+ICsgIElOICAgVURGX0xPR0lDQUxf Vk9MVU1FX0RFU0NSSVBUT1IgICpMb2dpY2FsVm9sRGVzYywNCj4gPj4gKyAgT1VUICBVSU5UMTYg ICAgICAgICAgICAgICAgICAgICAgICAgKlBhcnRpdGlvbk51bQ0KPiA+PiArICApDQo+ID4+ICt7 DQo+ID4+ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICAgICAgU3RhdHVzOw0KPiA+PiAr ICBVREZfTE9OR19BTExPQ0FUSU9OX0RFU0NSSVBUT1IgICpMb25nQWQ7DQo+ID4+ICsNCj4gPj4g KyAgU3RhdHVzID0gRUZJX1NVQ0NFU1M7DQo+ID4+ICsNCj4gPj4gKyAgc3dpdGNoIChMVl9VREZf UkVWSVNJT04gKExvZ2ljYWxWb2xEZXNjKSkgeyAgY2FzZSAweDAxMDI6DQo+ID4+ICsgICAgLy8N Cj4gPj4gKyAgICAvLyBVREYgMS4yMCBvbmx5IHN1cHBvcnRzIFR5cGUgMSBQYXJ0aXRpb24NCj4g Pj4gKyAgICAvLw0KPiA+PiArICAgICpQYXJ0aXRpb25OdW0gPSAqKFVJTlQxNiAqKSgoVUlOVE4p JkxvZ2ljYWxWb2xEZXNjLQ0KPiA+Pj4gUGFydGl0aW9uTWFwc1s0XSk7DQo+ID4+ICsgICAgYnJl YWs7DQo+ID4+ICsgIGNhc2UgMHgwMTUwOg0KPiA+PiArICAgIC8vDQo+ID4+ICsgICAgLy8gRW5z dXJlIFR5cGUgMSBQYXJ0aXRpb24gbWFwDQo+ID4+ICsgICAgLy8NCj4gPj4gKyAgICBBU1NFUlQg KExvZ2ljYWxWb2xEZXNjLT5QYXJ0aXRpb25NYXBzWzBdID09IDEgJiYNCj4gPj4gKyAgICAgICAg ICAgIExvZ2ljYWxWb2xEZXNjLT5QYXJ0aXRpb25NYXBzWzFdID09IDYpOw0KPiA+PiArICAgICpQ YXJ0aXRpb25OdW0gPSAqKFVJTlQxNiAqKSgoVUlOVE4pJkxvZ2ljYWxWb2xEZXNjLQ0KPiA+Pj4g UGFydGl0aW9uTWFwc1s0XSk7DQo+ID4+ICsgICAgYnJlYWs7DQo+ID4+ICsgIGNhc2UgMHgwMjYw Og0KPiA+PiArICAgIExvbmdBZCA9ICZMb2dpY2FsVm9sRGVzYy0+TG9naWNhbFZvbHVtZUNvbnRl bnRzVXNlOw0KPiA+PiArICAgICpQYXJ0aXRpb25OdW0gPSBMb25nQWQtPkV4dGVudExvY2F0aW9u LlBhcnRpdGlvblJlZmVyZW5jZU51bWJlcjsNCj4gPj4gKyAgICBicmVhazsNCj4gPj4gKyAgZGVm YXVsdDoNCj4gPj4gKyAgICAvLw0KPiA+PiArICAgIC8vIFVuaGFuZGxlZCBVREYgcmV2aXNpb24N Cj4gPj4gKyAgICAvLw0KPiA+PiArICAgIFN0YXR1cyA9IEVGSV9WT0xVTUVfQ09SUlVQVEVEOw0K PiA+PiArICAgIGJyZWFrOw0KPiA+PiArICB9DQo+ID4+ICsNCj4gPj4gKyAgcmV0dXJuIFN0YXR1 czsNCj4gPj4gK30NCj4gPj4gKw0KPiA+PiArRUZJX1NUQVRVUw0KPiA+PiArRmluZExvZ2ljYWxW b2x1bWVMb2NhdGlvbiAoDQo+ID4+ICsgIElOICAgRUZJX0JMT0NLX0lPX1BST1RPQ09MICAgICAg ICAgICAgICAgICAqQmxvY2tJbywNCj4gPj4gKyAgSU4gICBFRklfRElTS19JT19QUk9UT0NPTCAg ICAgICAgICAgICAgICAgICpEaXNrSW8sDQo+ID4+ICsgIElOICAgVURGX0FOQ0hPUl9WT0xVTUVf REVTQ1JJUFRPUl9QT0lOVEVSICAqQW5jaG9yUG9pbnQsDQo+ID4+ICsgIE9VVCAgVUlOVDY0ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqTWFpblZkc1N0YXJ0THNuLA0KPiA+PiArICBP VVQgIFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKkxvZ2ljYWxWb2xFbmRM c24NCj4gPj4gKyAgKQ0KPiA+PiArew0KPiA+PiArICBFRklfU1RBVFVTICAgICAgICAgICAgICAg ICAgICAgU3RhdHVzOw0KPiA+PiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgICAgQmxv Y2tTaXplOw0KPiA+PiArICBFRklfTEJBICAgICAgICAgICAgICAgICAgICAgICAgTGFzdEJsb2Nr Ow0KPiA+PiArICBVREZfRVhURU5UX0FEICAgICAgICAgICAgICAgICAgKkV4dGVudEFkOw0KPiA+ PiArICBVSU5UNjQgICAgICAgICAgICAgICAgICAgICAgICAgU3RhcnRpbmdMc247DQo+ID4+ICsg IFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgICAgICBFbmRpbmdMc247DQo+ID4+ICsgIFZPSUQg ICAgICAgICAgICAgICAgICAgICAgICAgICAqQnVmZmVyOw0KPiA+PiArICBVREZfTE9HSUNBTF9W T0xVTUVfREVTQ1JJUFRPUiAgKkxvZ2ljYWxWb2xEZXNjOw0KPiA+PiArICBVREZfUEFSVElUSU9O X0RFU0NSSVBUT1IgICAgICAgKlBhcnRpdGlvbkRlc2M7DQo+ID4+ICsgIFVJTlQ2NCAgICAgICAg ICAgICAgICAgICAgICAgICBHdWFyZE1haW5WZHNTdGFydExzbjsNCj4gPj4gKyAgVUlOVDE2ICAg ICAgICAgICAgICAgICAgICAgICAgIFBhcnRpdGlvbk51bTsNCj4gPj4gKw0KPiA+PiArICBCbG9j a1NpemUgICAgICAgICAgICAgPSBCbG9ja0lvLT5NZWRpYS0+QmxvY2tTaXplOw0KPiA+PiArICBM YXN0QmxvY2sgICAgICAgICAgICAgPSBCbG9ja0lvLT5NZWRpYS0+TGFzdEJsb2NrOw0KPiA+PiAr ICBFeHRlbnRBZCAgICAgICAgICAgICAgPSAmQW5jaG9yUG9pbnQtDQo+ID5NYWluVm9sdW1lRGVz Y3JpcHRvclNlcXVlbmNlRXh0ZW50Ow0KPiA+PiArICBTdGFydGluZ0xzbiAgICAgICAgICAgPSAo VUlOVDY0KUV4dGVudEFkLT5FeHRlbnRMb2NhdGlvbjsNCj4gPj4gKyAgRW5kaW5nTHNuICAgICAg ICAgICAgID0NCj4gPj4gKyAgICBTdGFydGluZ0xzbiArIERpdlU2NHgzMiAoKFVJTlQ2NClFeHRl bnRBZC0+RXh0ZW50TGVuZ3RoLA0KPiA+PiArIEJsb2NrU2l6ZSk7DQo+ID4+ICsNCj4gPj4gKyAg TG9naWNhbFZvbERlc2MgICAgICAgID0gTlVMTDsNCj4gPj4gKyAgUGFydGl0aW9uRGVzYyAgICAg ICAgID0gTlVMTDsNCj4gPj4gKyAgR3VhcmRNYWluVmRzU3RhcnRMc24gID0gU3RhcnRpbmdMc247 DQo+ID4+ICsNCj4gPj4gKyAgLy8NCj4gPj4gKyAgLy8gQWxsb2NhdGUgYnVmZmVyIGZvciByZWFk aW5nIGRpc2sgYmxvY2tzICAvLyAgQnVmZmVyID0NCj4gPj4gKyBBbGxvY2F0ZVplcm9Qb29sIChC bG9ja1NpemUpOyAgaWYgKEJ1ZmZlciA9PSBOVUxMKSB7DQo+ID4+ICsgICAgcmV0dXJuIEVGSV9P VVRfT0ZfUkVTT1VSQ0VTOw0KPiA+PiArICB9DQo+ID4+ICsNCj4gPj4gKyAgU3RhdHVzID0gRUZJ X1ZPTFVNRV9DT1JSVVBURUQ7DQo+ID4+ICsNCj4gPj4gKyAgLy8NCj4gPj4gKyAgLy8gQXMgcGVy IFVERiAyLjYwIHNwZWNpZmljYXRpb246DQo+ID4+ICsgIC8vDQo+ID4+ICsgIC8vIFRoZXJlIHNo YWxsIGJlIGV4YWN0bHkgb25lIHByZXZhaWxpbmcgTG9naWNhbCBWb2x1bWUgRGVzY3JpcHRvcg0K PiA+PiArIC8vIHJlY29yZGVkIHBlciBWb2x1bWUgU2V0Lg0KPiA+PiArICAvLw0KPiA+PiArICAv LyBTdGFydCBNYWluIFZvbHVtZSBEZXNjcmlwdG9yIFNlcXVlbmNlIGFuZCBmaW5kIExvZ2ljYWwg Vm9sdW1lDQo+ID4+ICsgRGVzY3JpcHRvciAgLy8gIHdoaWxlIChTdGFydGluZ0xzbiA8PSBFbmRp bmdMc24pIHsNCj4gPj4gKyAgICAvLw0KPiA+PiArICAgIC8vIFJlYWQgZGlzayBibG9jaw0KPiA+ PiArICAgIC8vDQo+ID4+ICsgICAgU3RhdHVzID0gRGlza0lvLT5SZWFkRGlzayAoDQo+ID4+ICsg ICAgICBEaXNrSW8sDQo+ID4+ICsgICAgICBCbG9ja0lvLT5NZWRpYS0+TWVkaWFJZCwNCj4gPj4g KyAgICAgIE11bHRVNjR4MzIgKFN0YXJ0aW5nTHNuLCBCbG9ja1NpemUpLA0KPiA+PiArICAgICAg QmxvY2tTaXplLA0KPiA+PiArICAgICAgQnVmZmVyDQo+ID4+ICsgICAgICApOw0KPiA+PiArICAg IGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPj4gKyAgICAgIGdvdG8gT3V0X0ZyZWU7DQo+ ID4+ICsgICAgfQ0KPiA+PiArDQo+ID4+ICsgICAgLy8NCj4gPj4gKyAgICAvLyBDaGVjayBpZiBy ZWFkIGJsb2NrIGlzIGEgVGVybWluYXRpbmcgRGVzY3JpcHRvcg0KPiA+PiArICAgIC8vDQo+ID4+ ICsgICAgaWYgKElTX1REIChCdWZmZXIpKSB7DQo+ID4+ICsgICAgICAvLw0KPiA+PiArICAgICAg Ly8gU3RvcCBNYWluIFZvbHVtZSBEZXNjcmlwdG9yIFNlcXVlbmNlDQo+ID4+ICsgICAgICAvLw0K PiA+PiArICAgICAgYnJlYWs7DQo+ID4+ICsgICAgfQ0KPiA+PiArDQo+ID4+ICsgICAgLy8NCj4g Pj4gKyAgICAvLyBDaGVjayBpZiByZWFkIGJsb2NrIGlzIGEgTG9naWNhbCBWb2x1bWUgRGVzY3Jp cHRvcg0KPiA+PiArICAgIC8vDQo+ID4+ICsgICAgaWYgKElTX0xWRCAoQnVmZmVyKSkgew0KPiA+ PiArICAgICAgLy8NCj4gPj4gKyAgICAgIC8vIEVuc3VyZSBvbmx5IG9uZSBMVkQgKExvZ2ljYWwg Vm9sdW1lIERlc2NyaXB0b3IpIGlzIGhhbmRsZWQNCj4gPj4gKyAgICAgIC8vDQo+ID4+ICsgICAg ICBpZiAoTG9naWNhbFZvbERlc2MgIT0gTlVMTCkgew0KPiA+PiArICAgICAgICBTdGF0dXMgPSBF RklfVU5TVVBQT1JURUQ7DQo+ID4+ICsgICAgICAgIGdvdG8gT3V0X0ZyZWU7DQo+ID4+ICsgICAg ICB9DQo+ID4+ICsNCj4gPj4gKyAgICAgIC8vDQo+ID4+ICsgICAgICAvLyBBcyBwZXIgVURGIDIu NjAgc3BlY2lmaWNhdGlvbjoNCj4gPj4gKyAgICAgIC8vDQo+ID4+ICsgICAgICAvLyBGb3IgdGhl IHB1cnBvc2Ugb2YgaW50ZXJjaGFuZ2UsIFBhcnRpdGlvbiBNYXBzIHNoYWxsIGJlIGxpbWl0ZWQg dG8NCj4gPj4gKyAgICAgIC8vIFBhcnRpdGlvbiBNYXAgdHlwZSAxLCBleGNlcHQgdHlwZSAyIG1h cHMuDQo+ID4+ICsgICAgICAvLw0KPiA+PiArICAgICAgLy8gTk9URTogVHlwZSAxIFBhcnRpdGlv bnMgYXJlIHRoZSBvbmx5IHN1cHBvcnRlZCBpbiB0aGlzDQo+IGltcGxlbWVudGF0aW9uLg0KPiA+ PiArICAgICAgLy8NCj4gPj4gKyAgICAgIExvZ2ljYWxWb2xEZXNjID0gQWxsb2NhdGVaZXJvUG9v bCAoc2l6ZW9mICgqTG9naWNhbFZvbERlc2MpKTsNCj4gPj4gKyAgICAgIGlmIChMb2dpY2FsVm9s RGVzYyA9PSBOVUxMKSB7DQo+ID4+ICsgICAgICAgIFN0YXR1cyA9IEVGSV9PVVRfT0ZfUkVTT1VS Q0VTOw0KPiA+PiArICAgICAgICBnb3RvIE91dF9GcmVlOw0KPiA+PiArICAgICAgfQ0KPiA+PiAr DQo+ID4+ICsgICAgICAvLw0KPiA+PiArICAgICAgLy8gU2F2ZSBMb2dpY2FsIFZvbHVtZSBEZXNj cmlwdG9yDQo+ID4+ICsgICAgICAvLw0KPiA+PiArICAgICAgQ29weU1lbSAoTG9naWNhbFZvbERl c2MsIEJ1ZmZlciwgc2l6ZW9mICgqTG9naWNhbFZvbERlc2MpKTsNCj4gPj4gKyAgICB9IGVsc2Ug aWYgKElTX1BEIChCdWZmZXIpKSB7DQo+ID4+ICsgICAgICAvLw0KPiA+PiArICAgICAgLy8gRW5z dXJlIG9ubHkgb25lIFBEIChQYXJ0aXRpb24gRGVzY3JpcHRvcikgaXMgaGFuZGxlZA0KPiA+PiAr ICAgICAgLy8NCj4gPj4gKyAgICAgIGlmIChQYXJ0aXRpb25EZXNjICE9IE5VTEwpIHsNCj4gPj4g KyAgICAgICAgU3RhdHVzID0gRUZJX1VOU1VQUE9SVEVEOw0KPiA+PiArICAgICAgICBnb3RvIE91 dF9GcmVlOw0KPiA+PiArICAgICAgfQ0KPiA+PiArDQo+ID4+ICsgICAgICAvLw0KPiA+PiArICAg ICAgLy8gRm91bmQgYSBQYXJ0aXRpb24gRGVzY3JpcHRvci4NCj4gPj4gKyAgICAgIC8vDQo+ID4+ ICsgICAgICAvLyBBcyBwZXIgVURGIDIuNjAgc3BlY2lmaWNhdGlvbjoNCj4gPj4gKyAgICAgIC8v DQo+ID4+ICsgICAgICAvLyBBIFBhcnRpdGlvbiBEZXNjcmlwdG9yIEFjY2VzcyBUeXBlIG9mIHJl YWQtb25seSwgcmV3cml0YWJsZSwNCj4gPj4gKyAgICAgIC8vIG92ZXJ3cml0YWJsZSwgd3JpdGUt b25jZSBhbmQgcHNldWRvLW92ZXJ3cml0YWJsZSBzaGFsbCBiZQ0KPiA+PiArICAgICAgLy8gc3Vw cG9ydGVkLiBUaGVyZSBzaGFsbCBiZSBleGFjdGx5IG9uZSBwcmV2YWlsaW5nIFBhcnRpdGlvbg0K PiA+PiArICAgICAgLy8gRGVzY3JpcHRvciByZWNvcmRlZCBwZXIgdm9sdW1lLCB3aXRoIG9uZSBl eGNlcHRpb24uIEZvciBWb2x1bWUNCj4gPj4gKyAgICAgIC8vIFNldHMgdGhhdCBjb25zaXN0IG9m IHNpbmdsZSB2b2x1bWUsIHRoZSB2b2x1bWUgbWF5IGNvbnRhaW4gMiBub24tDQo+ID4+ICsgICAg ICAvLyBvdmVybGFwcGluZyBQYXJ0aXRpb25zIHdpdGggMiBwcmV2YWlsaW5nIFBhcnRpdGlvbiBE ZXNjcmlwdG9ycyBvbmx5DQo+ID4+ICsgICAgICAvLyBpZiBvbmUgaGFzIGFuIEFjY2VzcyBUeXBl IG9mIHJlYWQtb25seSBhbmQgdGhlIG90aGVyIGhhcyBhbg0KPiA+PiArICAgICAgLy8gQWNjZXNz IFR5cGUgb2YgcmV3cml0YWJsZSwgb3ZlcndyaXRhYmxlLCBvciB3cml0ZS1vbmNlLiBUaGUNCj4g Pj4gKyAgICAgIC8vIExvZ2ljYWwgVm9sdW1lIGZvciB0aGlzIHZvbHVtZSB3b3VsZCBjb25zaXN0 IG9mIHRoZSBjb250ZW50cyBvZg0KPiA+PiArICAgICAgLy8gYm90aCBwYXJ0aXRpb25zLg0KPiA+ PiArICAgICAgLy8NCj4gPj4gKyAgICAgIFBhcnRpdGlvbkRlc2MgPSBBbGxvY2F0ZVplcm9Qb29s IChzaXplb2YgKCpQYXJ0aXRpb25EZXNjKSk7DQo+ID4+ICsgICAgICBpZiAoUGFydGl0aW9uRGVz YyA9PSBOVUxMKSB7DQo+ID4+ICsgICAgICAgIFN0YXR1cyA9IEVGSV9PVVRfT0ZfUkVTT1VSQ0VT Ow0KPiA+PiArICAgICAgICBnb3RvIE91dF9GcmVlOw0KPiA+PiArICAgICAgfQ0KPiA+PiArDQo+ ID4+ICsgICAgICAvLw0KPiA+PiArICAgICAgLy8gU2F2ZSBQYXJ0aXRpb24gRGVzY3JpcHRvcg0K PiA+PiArICAgICAgLy8NCj4gPj4gKyAgICAgIENvcHlNZW0gKFBhcnRpdGlvbkRlc2MsIEJ1ZmZl ciwgc2l6ZW9mICgqUGFydGl0aW9uRGVzYykpOw0KPiA+PiArICAgIH0NCj4gPj4gKyAgICAvLw0K PiA+PiArICAgIC8vIEdvIHRvIG5leHQgZGlzayBibG9jaw0KPiA+PiArICAgIC8vDQo+ID4+ICsg ICAgU3RhcnRpbmdMc24rKzsNCj4gPj4gKyAgfQ0KPiA+PiArDQo+ID4+ICsgIFN0YXR1cyA9IEVG SV9WT0xVTUVfQ09SUlVQVEVEOw0KPiA+PiArDQo+ID4+ICsgIC8vDQo+ID4+ICsgIC8vIENoZWNr IGlmIExWRCBhbmQgUEQgd2VyZSBmb3VuZA0KPiA+PiArICAvLw0KPiA+PiArICBpZiAoTG9naWNh bFZvbERlc2MgIT0gTlVMTCAmJiBQYXJ0aXRpb25EZXNjICE9IE5VTEwpIHsNCj4gPj4gKyAgICAv Lw0KPiA+PiArICAgIC8vIEdldCBwYXJ0aXRpb24gbnVtYmVyIGZyb20gUGFydGl0aW9uIG1hcCBp biBMVkQgZGVzY3JpcHRvcg0KPiA+PiArICAgIC8vDQo+ID4+ICsgICAgU3RhdHVzID0gR2V0UGFy dGl0aW9uTnVtYmVyIChMb2dpY2FsVm9sRGVzYywgJlBhcnRpdGlvbk51bSk7DQo+ID4+ICsgICAg aWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+PiArICAgICAgZ290byBPdXRfRnJlZTsNCj4g Pj4gKyAgICB9DQo+ID4+ICsNCj4gPj4gKyAgICAvLw0KPiA+PiArICAgIC8vIE1ha2Ugc3VyZSB3 ZSdyZSBoYW5kbGluZyBleHBlY3RlZCBQYXJ0aXRpb24gRGVzY3JpcHRvcg0KPiA+PiArICAgIC8v DQo+ID4+ICsgICAgaWYgKFBhcnRpdGlvbkRlc2MtPlBhcnRpdGlvbk51bWJlciAhPSBQYXJ0aXRp b25OdW0pIHsNCj4gPj4gKyAgICAgIFN0YXR1cyA9IEVGSV9WT0xVTUVfQ09SUlVQVEVEOw0KPiA+ PiArICAgICAgZ290byBPdXRfRnJlZTsNCj4gPj4gKyAgICB9DQo+ID4+ICsNCj4gPj4gKyAgICAv Lw0KPiA+PiArICAgIC8vIENvdmVyIHRoZSBtYWluIFZEUyBhcmVhIHNvIFVkZkR4ZSBkcml2ZXIg d2lsbCBhbHNvIGJlIGFibGUgdG8NCj4gPj4gKyBnZXQgTFZEDQo+ID4+IGFuZA0KPiA+PiArICAg IC8vIFBEIGRlc2NyaXB0b3JzIG91dCBmcm9tIHRoZSBmaWxlIHN5c3RlbS4NCj4gPj4gKyAgICAv Lw0KPiA+PiArICAgICpNYWluVmRzU3RhcnRMc24gPSBHdWFyZE1haW5WZHNTdGFydExzbjsNCj4g Pj4gKyAgICAqTG9naWNhbFZvbEVuZExzbiA9ICpNYWluVmRzU3RhcnRMc24gKw0KPiA+PiArIChV SU5UNjQpRXh0ZW50QWQtPkV4dGVudExlbmd0aDsNCj4gPj4gKw0KPiA+PiArICAgIC8vDQo+ID4+ ICsgICAgLy8gQ292ZXIgVURGIHBhcnRpdGlvbiBhcmVhDQo+ID4+ICsgICAgLy8NCj4gPj4gKyAg ICAqTG9naWNhbFZvbEVuZExzbiArPQ0KPiA+PiArICAgICAgKChVSU5UNjQpUGFydGl0aW9uRGVz Yy0+UGFydGl0aW9uU3RhcnRpbmdMb2NhdGlvbiAtDQo+ID4+ICsgICAgICAgKkxvZ2ljYWxWb2xF bmRMc24pICsgUGFydGl0aW9uRGVzYy0+UGFydGl0aW9uTGVuZ3RoIC0gMTsNCj4gPj4gKyAgICAv Lw0KPiA+PiArICAgIC8vIEVuc3VyZSB0byBub3QgYXR0ZW1wdCByZWFkaW5nIHBhc3QgZW5kIG9m IGRldmljZQ0KPiA+PiArICAgIC8vDQo+ID4+ICsgICAgaWYgKCpMb2dpY2FsVm9sRW5kTHNuID4g TGFzdEJsb2NrKSB7DQo+ID4+ICsgICAgICBTdGF0dXMgPSBFRklfVk9MVU1FX0NPUlJVUFRFRDsN Cj4gPj4gKyAgICB9IGVsc2Ugew0KPiA+PiArICAgICAgU3RhdHVzID0gRUZJX1NVQ0NFU1M7DQo+ ID4+ICsgICAgfQ0KPiA+PiArICB9DQo+ID4+ICsNCj4gPj4gK091dF9GcmVlOg0KPiA+PiArICAv Lw0KPiA+PiArICAvLyBGcmVlIGJsb2NrIHJlYWQgYnVmZmVyDQo+ID4+ICsgIC8vDQo+ID4+ICsg IEZyZWVQb29sIChCdWZmZXIpOw0KPiA+PiArICAvLw0KPiA+PiArICAvLyBGcmVlIExvZ2ljYWwg Vm9sdW1lIERlc2NyaXB0b3INCj4gPj4gKyAgLy8NCj4gPj4gKyAgaWYgKExvZ2ljYWxWb2xEZXNj ICE9IE5VTEwpIHsNCj4gPj4gKyAgICBGcmVlUG9vbCAoTG9naWNhbFZvbERlc2MpOw0KPiA+PiAr ICB9DQo+ID4+ICsgIC8vDQo+ID4+ICsgIC8vIEZyZWUgUGFydGl0aW9uIERlc2NyaXB0b3INCj4g Pj4gKyAgLy8NCj4gPj4gKyAgaWYgKFBhcnRpdGlvbkRlc2MgIT0gTlVMTCkgew0KPiA+PiArICAg IEZyZWVQb29sIChQYXJ0aXRpb25EZXNjKTsNCj4gPj4gKyAgfQ0KPiA+PiArDQo+ID4+ICsgIHJl dHVybiBTdGF0dXM7DQo+ID4+ICt9DQo+ID4+ICsNCj4gPj4gK0VGSV9TVEFUVVMNCj4gPj4gK0Zp bmRVZGZMb2dpY2FsVm9sdW1lICgNCj4gPj4gKyAgSU4gRUZJX0JMT0NLX0lPX1BST1RPQ09MICAq QmxvY2tJbywNCj4gPj4gKyAgSU4gRUZJX0RJU0tfSU9fUFJPVE9DT0wgICAqRGlza0lvLA0KPiA+ PiArICBPVVQgRUZJX0xCQSAgICAgICAgICAgICAgICpTdGFydGluZ0xCQSwNCj4gPj4gKyAgT1VU IEVGSV9MQkEgICAgICAgICAgICAgICAqRW5kaW5nTEJBDQo+ID4+ICsgICkNCj4gPj4gK3sNCj4g Pj4gKyAgRUZJX1NUQVRVUyBTdGF0dXM7DQo+ID4+ICsgIFVERl9BTkNIT1JfVk9MVU1FX0RFU0NS SVBUT1JfUE9JTlRFUiAgQW5jaG9yUG9pbnQ7DQo+ID4+ICsNCj4gPj4gKyAgLy8NCj4gPj4gKyAg Ly8gRmluZCBVREYgdm9sdW1lIGlkZW50aWZpZXJzDQo+ID4+ICsgIC8vDQo+ID4+ICsgIFN0YXR1 cyA9IEZpbmRVZGZWb2x1bWVJZGVudGlmaWVycyAoQmxvY2tJbywgRGlza0lvKTsgIGlmDQo+ID4+ ICsgKEVGSV9FUlJPUg0KPiA+PiArIChTdGF0dXMpKSB7DQo+ID4+ICsgICAgcmV0dXJuIFN0YXR1 czsNCj4gPj4gKyAgfQ0KPiA+PiArDQo+ID4+ICsgIC8vDQo+ID4+ICsgIC8vIEZpbmQgQW5jaG9y IFZvbHVtZSBEZXNjcmlwdG9yIFBvaW50ZXIgIC8vDQo+ID4+ICAgICBTdGF0dXMgPSBGaW5kQW5j aG9yVm9sdW1lRGVzY3JpcHRvclBvaW50ZXIgKEJsb2NrSW8sIERpc2tJbywNCj4gPj4gJkFuY2hv clBvaW50KTsNCj4gPj4gICAgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPj4gLSAgICBy ZXR1cm4gRUZJX1VOU1VQUE9SVEVEOw0KPiA+PiArICAgIHJldHVybiBTdGF0dXM7DQo+ID4+ICAg ICB9DQo+ID4+DQo+ID4+IC0gIHJldHVybiBFRklfU1VDQ0VTUzsNCj4gPj4gKyAgLy8NCj4gPj4g KyAgLy8gRmluZCBMb2dpY2FsIFZvbHVtZSBsb2NhdGlvbg0KPiA+PiArICAvLw0KPiA+PiArICBT dGF0dXMgPSBGaW5kTG9naWNhbFZvbHVtZUxvY2F0aW9uICgNCj4gPj4gKyAgICBCbG9ja0lvLA0K PiA+PiArICAgIERpc2tJbywNCj4gPj4gKyAgICAmQW5jaG9yUG9pbnQsDQo+ID4+ICsgICAgKFVJ TlQ2NCAqKVN0YXJ0aW5nTEJBLA0KPiA+PiArICAgIChVSU5UNjQgKilFbmRpbmdMQkENCj4gPj4g KyAgICApOw0KPiA+PiArDQo+ID4+ICsgIHJldHVybiBTdGF0dXM7DQo+ID4+ICAgfQ0KPiA+Pg0K PiA+PiAgIC8qKg0KPiA+PiBAQCAtMjUwLDYgKzUyMyw4IEBAIFBhcnRpdGlvbkluc3RhbGxVZGZD aGlsZEhhbmRsZXMgKA0KPiA+PiAgICAgRUZJX0dVSUQgICAgICAgICAgICAgICAgICAgICAqVmVu ZG9yRGVmaW5lZEd1aWQ7DQo+ID4+ICAgICBFRklfR1VJRCAgICAgICAgICAgICAgICAgICAgIFVk ZkRldlBhdGhHdWlkID0gRUZJX1VERl9ERVZJQ0VfUEFUSF9HVUlEOw0KPiA+PiAgICAgRUZJX1BB UlRJVElPTl9JTkZPX1BST1RPQ09MICBQYXJ0aXRpb25JbmZvOw0KPiA+PiArICBFRklfTEJBICAg ICAgICAgICAgICAgICAgICAgIFN0YXJ0aW5nTEJBOw0KPiA+PiArICBFRklfTEJBICAgICAgICAg ICAgICAgICAgICAgIEVuZGluZ0xCQTsNCj4gPj4NCj4gPj4gICAgIE1lZGlhID0gQmxvY2tJby0+ TWVkaWE7DQo+ID4+DQo+ID4+IEBAIC0yOTEsOSArNTY2LDkgQEAgUGFydGl0aW9uSW5zdGFsbFVk ZkNoaWxkSGFuZGxlcyAoDQo+ID4+ICAgICB9DQo+ID4+DQo+ID4+ICAgICAvLw0KPiA+PiAtICAv LyBDaGVjayBpZiBibG9jayBkZXZpY2Ugc3VwcG9ydHMgYW4gVURGIGZpbGUgc3lzdGVtDQo+ID4+ ICsgIC8vIEZpbmQgVURGIGxvZ2ljYWwgdm9sdW1lIG9uIGJsb2NrIGRldmljZQ0KPiA+PiAgICAg Ly8NCj4gPj4gLSAgU3RhdHVzID0gU3VwcG9ydFVkZkZpbGVTeXN0ZW0gKEJsb2NrSW8sIERpc2tJ byk7DQo+ID4+ICsgIFN0YXR1cyA9IEZpbmRVZGZMb2dpY2FsVm9sdW1lIChCbG9ja0lvLCBEaXNr SW8sICZTdGFydGluZ0xCQSwNCj4gPj4gKyAmRW5kaW5nTEJBKTsNCj4gPj4gICAgIGlmIChFRklf RVJST1IgKFN0YXR1cykpIHsNCj4gPj4gICAgICAgcmV0dXJuIEVGSV9OT1RfRk9VTkQ7DQo+ID4+ ICAgICB9DQo+ID4+IEBAIC0zMTgsOCArNTkzLDggQEAgUGFydGl0aW9uSW5zdGFsbFVkZkNoaWxk SGFuZGxlcyAoDQo+ID4+ICAgICAgIERldmljZVBhdGgsDQo+ID4+ICAgICAgIChFRklfREVWSUNF X1BBVEhfUFJPVE9DT0wgKikmZ1VkZkRldmljZVBhdGgsDQo+ID4+ICAgICAgICZQYXJ0aXRpb25J bmZvLA0KPiA+PiAtICAgIDAsDQo+ID4+IC0gICAgTWVkaWEtPkxhc3RCbG9jaywNCj4gPj4gKyAg ICBTdGFydGluZ0xCQSwNCj4gPj4gKyAgICBFbmRpbmdMQkEsDQo+ID4+ICAgICAgIE1lZGlhLT5C bG9ja1NpemUNCj4gPj4gICAgICAgKTsNCj4gPj4gICAgIGlmICghRUZJX0VSUk9SIChTdGF0dXMp KSB7DQo+ID4+IC0tDQo+ID4+IDIuMTEuMA0KPiA+DQo+ID4NCg==