From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=192.55.52.115; helo=mga14.intel.com; envelope-from=jian.j.wang@intel.com; receiver=edk2-devel@lists.01.org Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) (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 AE71920349D96 for ; Sun, 12 Nov 2017 19:26:02 -0800 (PST) Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by fmsmga103.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 12 Nov 2017 19:30:08 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.44,387,1505804400"; d="scan'208";a="1243687" Received: from fmsmsx103.amr.corp.intel.com ([10.18.124.201]) by FMSMGA003.fm.intel.com with ESMTP; 12 Nov 2017 19:30:07 -0800 Received: from shsmsx151.ccr.corp.intel.com (10.239.6.50) by FMSMSX103.amr.corp.intel.com (10.18.124.201) with Microsoft SMTP Server (TLS) id 14.3.319.2; Sun, 12 Nov 2017 19:30:06 -0800 Received: from shsmsx103.ccr.corp.intel.com ([169.254.4.213]) by SHSMSX151.ccr.corp.intel.com ([169.254.3.218]) with mapi id 14.03.0319.002; Mon, 13 Nov 2017 11:29:49 +0800 From: "Wang, Jian J" To: Laszlo Ersek CC: "edk2-devel@lists.01.org" , "Dong, Eric" , "Yao, Jiewen" , Ard Biesheuvel , Matt Fleming Thread-Topic: [PATCH v5] UefiCpuPkg/CpuDxe: Fix multiple entries of RT_CODE in memory map Thread-Index: AQHTWh7F8veaFCYph0uTMRM3TfcXLqMRpTHA Date: Mon, 13 Nov 2017 03:29:48 +0000 Message-ID: References: <20171110010223.12696-1-jian.j.wang@intel.com> <9f53346f-c82c-c0ee-bca8-f53116227926@redhat.com> In-Reply-To: <9f53346f-c82c-c0ee-bca8-f53116227926@redhat.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiMDk2MzFkNjItNTNhMi00ZTQyLWE3NWQtMzUzNWE5NjVmMjg1IiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX0lDIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjIuNS4xOCIsIlRydXN0ZWRMYWJlbEhhc2giOiJTTzRmd2YxVjJFQzVYTEtTWkNGSGR6MVhoQ3p6aThRb0E0ZWdzRVdzNHZ4cVk3Y1NwTWUzTEdzUmlBWUhIMW84In0= 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 Subject: Re: [PATCH v5] UefiCpuPkg/CpuDxe: Fix multiple entries of RT_CODE in memory map 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: Mon, 13 Nov 2017 03:26:02 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 VGhpcyBpcyByZWFsbHkgYSBzdXJwcmlzZS4gQW55d2F5LCB0aGFua3MgZm9yIHZhbGlkYXRpbmcg c28gbWFueSBPU3MuIEkgZ3Vlc3Mgd2UgDQpoYXZlIHRvIHR1cm4gdG8geW91ciBzdWdnZXN0aW9u IGJlZm9yZSwgd2hpY2ggaXMgYWRkaW5nIGNhcGFiaWxpdHkgdG8gYWZmZWN0ZWQgDQptZW1vcnkg YmxvY2sgb25seSwgbm90IGFsbCBtZW1vcnkgc3BhY2UuDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNz YWdlLS0tLS0NCj4gRnJvbTogTGFzemxvIEVyc2VrIFttYWlsdG86bGVyc2VrQHJlZGhhdC5jb21d DQo+IFNlbnQ6IEZyaWRheSwgTm92ZW1iZXIgMTAsIDIwMTcgODoyNCBQTQ0KPiBUbzogV2FuZywg SmlhbiBKIDxqaWFuLmoud2FuZ0BpbnRlbC5jb20+DQo+IENjOiBlZGsyLWRldmVsQGxpc3RzLjAx Lm9yZzsgRG9uZywgRXJpYyA8ZXJpYy5kb25nQGludGVsLmNvbT47IFlhbywgSmlld2VuDQo+IDxq aWV3ZW4ueWFvQGludGVsLmNvbT47IEFyZCBCaWVzaGV1dmVsIDxhcmQuYmllc2hldXZlbEBsaW5h cm8ub3JnPjsgTWF0dA0KPiBGbGVtaW5nIDxtYXR0QGNvZGVibHVlcHJpbnQuY28udWs+DQo+IFN1 YmplY3Q6IFJlOiBbUEFUQ0ggdjVdIFVlZmlDcHVQa2cvQ3B1RHhlOiBGaXggbXVsdGlwbGUgZW50 cmllcyBvZiBSVF9DT0RFIGluDQo+IG1lbW9yeSBtYXANCj4gDQo+IEhpIEppYW4sDQo+IA0KPiBJ J20gQ0MnaW5nIEFyZCBhbmQgTWF0dCwgYW5kIGNvbW1lbnRpbmcgYXQgdGhlIGJvdHRvbS4NCj4g DQo+IE9uIDExLzEwLzE3IDAyOjAyLCBKaWFuIEogV2FuZyB3cm90ZToNCj4gPj4gdjU6DQo+ID4+ ICAgIENvZGluZyBzdHlsZSBjbGVhbi11cA0KPiA+DQo+ID4+IHY0Og0KPiA+PiBhLiBSZW1vdmUg RG9VcGRhdGUgYW5kIGNoZWNrIGF0dHJpYnV0ZXMgbWlzbWF0Y2ggYWxsIHRoZSB0aW1lIHRvIGF2 b2lkDQo+ID4+ICAgIGEgbG9naWMgaG9sZQ0KPiA+PiBiLiBBZGQgd2FybmluZyBtZXNzYWdlIGlm IGZhaWxlZCB0byB1cGRhdGUgY2FwYWJpbGl0eQ0KPiA+PiBjLiBBZGQgbG9jYWwgdmFyaWFibGUg dG8gaG9sZCBuZXcgYXR0cmlidXRlcyB0byBtYWtlIGNvZGUgY2xlYW5lcg0KPiA+DQo+ID4+IHYz Og0KPiA+PiBhLiBBZGQgY29tbWVudCB0byBleHBsYWluIG1vcmUgb24gdXBkYXRpbmcgbWVtb3J5 IGNhcGFiaWxpdGllcw0KPiA+PiBiLiBGaXggbG9naWMgaG9sZSBpbiB1cGRhdGluZyBhdHRyaWJ1 dGVzDQo+ID4+IGMuIEluc3RlYWQgb2YgY2hlY2tpbmcgaWxsZWdhbCBtZW1vcnkgc3BhY2UgYWRk cmVzcyBhbmQgc2l6ZSwgdXNlIHJldHVybg0KPiA+PiAgICBzdGF0dXMgb2YgZ0RTLT5TZXRNZW1v cnlTcGFjZUNhcGFiaWxpdGllcygpIHRvIHNraXAgbWVtb3J5IGJsb2NrIHdoaWNoDQo+ID4+ICAg IGNhbm5vdCBiZSB1cGRhdGVkIHdpdGggbmV3IGNhcGFiaWxpdGllcy4NCj4gPg0KPiA+PiB2Mg0K PiA+PiBhLiBGaXggYW4gaXNzdWUgd2hpY2ggd2lsbCBjYXVzZSBzZXR0aW5nIGNhcGFiaWxpdHkg ZmFpbHVyZSBpZiBzaXplIGlzIHNtYWxsZXINCj4gPj4gICAgdGhhbiBhIHBhZ2UuDQo+ID4NCj4g PiBNb3JlIHRoYW4gb25lIGVudHJ5IG9mIFJUX0NPREUgbWVtb3J5IG1pZ2h0IGNhdXNlIGJvb3Qg cHJvYmxlbSBmb3INCj4gc29tZQ0KPiA+IG9sZCBPU3MuIFRoaXMgcGF0Y2ggd2lsbCBmaXggdGhp cyBpc3N1ZSB0byBrZWVwIE9TIGNvbXBhdGliaWxpdHkgYXMgbXVjaA0KPiA+IGFzIHBvc3NpYmxl Lg0KPiA+DQo+ID4gTW9yZSBkZXRhaWxlZCBpbmZvcm1hdGlvbiwgcGxlYXNlIHJlZmVyIHRvDQo+ ID4gICAgIGh0dHBzOi8vYnVnemlsbGEudGlhbm9jb3JlLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzUz DQo+ID4NCj4gPiBDYzogRXJpYyBEb25nIDxlcmljLmRvbmdAaW50ZWwuY29tPg0KPiA+IENjOiBK aWV3ZW4gWWFvIDxqaWV3ZW4ueWFvQGludGVsLmNvbT4NCj4gPiBDYzogTGFzemxvIEVyc2VrIDxs ZXJzZWtAcmVkaGF0LmNvbT4NCj4gPiBDb250cmlidXRlZC11bmRlcjogVGlhbm9Db3JlIENvbnRy aWJ1dGlvbiBBZ3JlZW1lbnQgMS4xDQo+ID4gU2lnbmVkLW9mZi1ieTogSmlhbiBKIFdhbmcgPGpp YW4uai53YW5nQGludGVsLmNvbT4NCj4gPiAtLS0NCj4gPiAgVWVmaUNwdVBrZy9DcHVEeGUvQ3B1 UGFnZVRhYmxlLmMgfCA2OQ0KPiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0t LS0tDQo+ID4gIDEgZmlsZSBjaGFuZ2VkLCA1MCBpbnNlcnRpb25zKCspLCAxOSBkZWxldGlvbnMo LSkNCj4gPg0KPiA+IGRpZmYgLS1naXQgYS9VZWZpQ3B1UGtnL0NwdUR4ZS9DcHVQYWdlVGFibGUu Yw0KPiBiL1VlZmlDcHVQa2cvQ3B1RHhlL0NwdVBhZ2VUYWJsZS5jDQo+ID4gaW5kZXggZDMxMmVi NjZmOC4uNjE1Mzc4MzhiNyAxMDA2NDQNCj4gPiAtLS0gYS9VZWZpQ3B1UGtnL0NwdUR4ZS9DcHVQ YWdlVGFibGUuYw0KPiA+ICsrKyBiL1VlZmlDcHVQa2cvQ3B1RHhlL0NwdVBhZ2VUYWJsZS5jDQo+ ID4gQEAgLTc4OSw4ICs3ODksNyBAQCBSZWZyZXNoR2NkTWVtb3J5QXR0cmlidXRlc0Zyb21QYWdp bmcgKA0KPiA+ICAgIFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJhc2VBZGRy ZXNzOw0KPiA+ICAgIFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhZ2VTdGFy dEFkZHJlc3M7DQo+ID4gICAgVUlOVDY0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXR0 cmlidXRlczsNCj4gPiAtICBVSU5UNjQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYXBh YmlsaXRpZXM7DQo+ID4gLSAgQk9PTEVBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRG9V cGRhdGU7DQo+ID4gKyAgVUlOVDY0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV3QXR0 cmlidXRlczsNCj4gPiAgICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRl eDsNCj4gPg0KPiA+ICAgIC8vDQo+ID4gQEAgLTgwMiw5ICs4MDEsOCBAQCBSZWZyZXNoR2NkTWVt b3J5QXR0cmlidXRlc0Zyb21QYWdpbmcgKA0KPiA+DQo+ID4gICAgR2V0Q3VycmVudFBhZ2luZ0Nv bnRleHQgKCZQYWdpbmdDb250ZXh0KTsNCj4gPg0KPiA+IC0gIERvVXBkYXRlICAgICAgPSBGQUxT RTsNCj4gPiAtICBDYXBhYmlsaXRpZXMgID0gMDsNCj4gPiAgICBBdHRyaWJ1dGVzICAgID0gMDsN Cj4gPiArICBOZXdBdHRyaWJ1dGVzID0gMDsNCj4gPiAgICBCYXNlQWRkcmVzcyAgID0gMDsNCj4g PiAgICBQYWdlTGVuZ3RoICAgID0gMDsNCj4gPg0KPiA+IEBAIC04MTMsNiArODExLDM0IEBAIFJl ZnJlc2hHY2RNZW1vcnlBdHRyaWJ1dGVzRnJvbVBhZ2luZyAoDQo+ID4gICAgICAgIGNvbnRpbnVl Ow0KPiA+ICAgICAgfQ0KPiA+DQo+ID4gKyAgICAvLw0KPiA+ICsgICAgLy8gU3luYyB0aGUgYWN0 dWFsIHBhZ2luZyByZWxhdGVkIGNhcGFiaWxpdGllcyBiYWNrIHRvIEdDRCBzZXJ2aWNlIGZpcnN0 Lg0KPiA+ICsgICAgLy8gQXMgYSBzaWRlIGVmZmVjdCAoZ29vZCBvbmUpLCB0aGlzIGNhbiBhbHNv IGhlbHAgdG8gYXZvaWQgdW5uZWNlc3NhcnkNCj4gPiArICAgIC8vIG1lbW9yeSBtYXAgZW50cmll cyBkdWUgdG8gdGhlIGRpZmZlcmVudCBjYXBhYmlsaXRpZXMgb2YgdGhlIHNhbWUgdHlwZQ0KPiA+ ICsgICAgLy8gbWVtb3J5LCBzdWNoIGFzIG11bHRpcGxlIFJUX0NPREUgYW5kIFJUX0RBVEEgZW50 cmllcyBpbiBtZW1vcnkNCj4gbWFwLA0KPiA+ICsgICAgLy8gd2hpY2ggY291bGQgY2F1c2UgYm9v dCBmYWlsdXJlIG9mIHNvbWUgb2xkIExpbnV4IGRpc3RybyAoYmVmb3JlIHY0LjMpLg0KPiA+ICsg ICAgLy8NCj4gPiArICAgIFN0YXR1cyA9IGdEUy0+U2V0TWVtb3J5U3BhY2VDYXBhYmlsaXRpZXMg KA0KPiA+ICsgICAgICAgICAgICAgICAgICAgIE1lbW9yeVNwYWNlTWFwW0luZGV4XS5CYXNlQWRk cmVzcywNCj4gPiArICAgICAgICAgICAgICAgICAgICBNZW1vcnlTcGFjZU1hcFtJbmRleF0uTGVu Z3RoLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgIE1lbW9yeVNwYWNlTWFwW0luZGV4XS5DYXBh YmlsaXRpZXMgfA0KPiA+ICsgICAgICAgICAgICAgICAgICAgIEVGSV9NRU1PUllfUEFHRVRZUEVf TUFTSw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICk7DQo+ID4gKyAgICBpZiAoRUZJX0VSUk9S IChTdGF0dXMpKSB7DQo+ID4gKyAgICAgIC8vDQo+ID4gKyAgICAgIC8vIElmIHdlIGNhbm5vdCB1 ZHBhdGUgdGhlIGNhcGFiaWxpdGllcywgd2UgY2Fubm90IHVwZGF0ZSBpdHMNCj4gPiArICAgICAg Ly8gYXR0cmlidXRlcyBlaXRoZXIuIFNvIGp1c3Qgc2ltcGx5IHNraXAgY3VycmVudCBibG9jayBv ZiBtZW1vcnkuDQo+ID4gKyAgICAgIC8vDQo+ID4gKyAgICAgIERFQlVHICgoDQo+ID4gKyAgICAg ICAgREVCVUdfV0FSTiwNCj4gPiArICAgICAgICAiRmFpbGVkIHRvIHVwZGF0ZSBjYXBhYmlsaXR5 OiBbJWx1XSAlMDE2bHggLSAlMDE2bHggKCUwMTZseCAtDQo+ID4gJTAxNmx4KVxyXG4iLA0KPiA+ ICsgICAgICAgIChVSU5UNjQpSW5kZXgsIEJhc2VBZGRyZXNzLCBCYXNlQWRkcmVzcyArIExlbmd0 aCAtIDEsDQo+ID4gKyAgICAgICAgTWVtb3J5U3BhY2VNYXBbSW5kZXhdLkNhcGFiaWxpdGllcywN Cj4gPiArICAgICAgICBNZW1vcnlTcGFjZU1hcFtJbmRleF0uQ2FwYWJpbGl0aWVzIHwgRUZJX01F TU9SWV9QQUdFVFlQRV9NQVNLDQo+ID4gKyAgICAgICAgKSk7DQo+ID4gKyAgICAgIGNvbnRpbnVl Ow0KPiA+ICsgICAgfQ0KPiA+ICsNCj4gPiAgICAgIGlmIChNZW1vcnlTcGFjZU1hcFtJbmRleF0u QmFzZUFkZHJlc3MgPj0gKEJhc2VBZGRyZXNzICsgUGFnZUxlbmd0aCkpIHsNCj4gPiAgICAgICAg Ly8NCj4gPiAgICAgICAgLy8gQ3VycmVudCBtZW1vcnkgc3BhY2Ugc3RhcnRzIGF0IGEgbmV3IHBh Z2UuIFJlc2V0dGluZyBQYWdlTGVuZ3RoIHdpbGwNCj4gPiBAQCAtODI2LDcgKzg1Miw5IEBAIFJl ZnJlc2hHY2RNZW1vcnlBdHRyaWJ1dGVzRnJvbVBhZ2luZyAoDQo+ID4gICAgICAgIFBhZ2VMZW5n dGggLT0gKE1lbW9yeVNwYWNlTWFwW0luZGV4XS5CYXNlQWRkcmVzcyAtIEJhc2VBZGRyZXNzKTsN Cj4gPiAgICAgIH0NCj4gPg0KPiA+IC0gICAgLy8gU3luYyByZWFsIHBhZ2UgYXR0cmlidXRlcyB0 byBHQ0QNCj4gPiArICAgIC8vDQo+ID4gKyAgICAvLyBTeW5jIGFjdHVhbCBwYWdlIGF0dHJpYnV0 ZXMgdG8gR0NEDQo+ID4gKyAgICAvLw0KPiA+ICAgICAgQmFzZUFkZHJlc3MgICAgICAgPSBNZW1v cnlTcGFjZU1hcFtJbmRleF0uQmFzZUFkZHJlc3M7DQo+ID4gICAgICBNZW1vcnlTcGFjZUxlbmd0 aCA9IE1lbW9yeVNwYWNlTWFwW0luZGV4XS5MZW5ndGg7DQo+ID4gICAgICB3aGlsZSAoTWVtb3J5 U3BhY2VMZW5ndGggPiAwKSB7DQo+ID4gQEAgLTg0MiwyMyArODcwLDI2IEBAIFJlZnJlc2hHY2RN ZW1vcnlBdHRyaWJ1dGVzRnJvbVBhZ2luZyAoDQo+ID4gICAgICAgICAgUGFnZVN0YXJ0QWRkcmVz cyAgPSAoKlBhZ2VFbnRyeSkgJg0KPiAoVUlOVDY0KVBhZ2VBdHRyaWJ1dGVUb01hc2soUGFnZUF0 dHJpYnV0ZSk7DQo+ID4gICAgICAgICAgUGFnZUxlbmd0aCAgICAgICAgPSBQYWdlQXR0cmlidXRl VG9MZW5ndGggKFBhZ2VBdHRyaWJ1dGUpIC0gKEJhc2VBZGRyZXNzIC0NCj4gUGFnZVN0YXJ0QWRk cmVzcyk7DQo+ID4gICAgICAgICAgQXR0cmlidXRlcyAgICAgICAgPSBHZXRBdHRyaWJ1dGVzRnJv bVBhZ2VFbnRyeSAoUGFnZUVudHJ5KTsNCj4gPiAtDQo+ID4gLSAgICAgICAgaWYgKEF0dHJpYnV0 ZXMgIT0gKE1lbW9yeVNwYWNlTWFwW0luZGV4XS5BdHRyaWJ1dGVzICYNCj4gRUZJX01FTU9SWV9Q QUdFVFlQRV9NQVNLKSkgew0KPiA+IC0gICAgICAgICAgRG9VcGRhdGUgPSBUUlVFOw0KPiA+IC0g ICAgICAgICAgQXR0cmlidXRlcyB8PSAoTWVtb3J5U3BhY2VNYXBbSW5kZXhdLkF0dHJpYnV0ZXMg Jg0KPiB+RUZJX01FTU9SWV9QQUdFVFlQRV9NQVNLKTsNCj4gPiAtICAgICAgICAgIENhcGFiaWxp dGllcyA9IEF0dHJpYnV0ZXMgfCBNZW1vcnlTcGFjZU1hcFtJbmRleF0uQ2FwYWJpbGl0aWVzOw0K PiA+IC0gICAgICAgIH0gZWxzZSB7DQo+ID4gLSAgICAgICAgICBEb1VwZGF0ZSA9IEZBTFNFOw0K PiA+IC0gICAgICAgIH0NCj4gPiAgICAgICAgfQ0KPiA+DQo+ID4gICAgICAgIExlbmd0aCA9IE1J TiAoUGFnZUxlbmd0aCwgTWVtb3J5U3BhY2VMZW5ndGgpOw0KPiA+IC0gICAgICBpZiAoRG9VcGRh dGUpIHsNCj4gPiAtICAgICAgICBnRFMtPlNldE1lbW9yeVNwYWNlQ2FwYWJpbGl0aWVzIChCYXNl QWRkcmVzcywgTGVuZ3RoLCBDYXBhYmlsaXRpZXMpOw0KPiA+IC0gICAgICAgIGdEUy0+U2V0TWVt b3J5U3BhY2VBdHRyaWJ1dGVzIChCYXNlQWRkcmVzcywgTGVuZ3RoLCBBdHRyaWJ1dGVzKTsNCj4g PiAtICAgICAgICBERUJVRyAoKERFQlVHX0lORk8sICJVcGRhdGUgbWVtb3J5IHNwYWNlIGF0dHJp YnV0ZTogWyUwMmRdICUwMTZseA0KPiAtICUwMTZseCAoJTA4bHggLT4gJTA4bHgpXHJcbiIsDQo+ ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXgsIEJhc2VBZGRyZXNzLCBCYXNl QWRkcmVzcyArIExlbmd0aCAtIDEsDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg TWVtb3J5U3BhY2VNYXBbSW5kZXhdLkF0dHJpYnV0ZXMsIEF0dHJpYnV0ZXMpKTsNCj4gPiArICAg ICAgaWYgKEF0dHJpYnV0ZXMgIT0gKE1lbW9yeVNwYWNlTWFwW0luZGV4XS5BdHRyaWJ1dGVzICYN Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgIEVGSV9NRU1PUllfUEFHRVRZUEVfTUFTSykp IHsNCj4gPiArICAgICAgICBOZXdBdHRyaWJ1dGVzID0gKE1lbW9yeVNwYWNlTWFwW0luZGV4XS5B dHRyaWJ1dGVzICYNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgIH5FRklfTUVNT1JZX1BB R0VUWVBFX01BU0spIHwgQXR0cmlidXRlczsNCj4gPiArICAgICAgICBTdGF0dXMgPSBnRFMtPlNl dE1lbW9yeVNwYWNlQXR0cmlidXRlcyAoDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIEJh c2VBZGRyZXNzLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBMZW5ndGgsDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgIE5ld0F0dHJpYnV0ZXMNCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgKTsNCj4gPiArICAgICAgICBBU1NFUlRfRUZJX0VSUk9SIChTdGF0dXMpOw0KPiA+ ICsgICAgICAgIERFQlVHICgoDQo+ID4gKyAgICAgICAgICBERUJVR19JTkZPLA0KPiA+ICsgICAg ICAgICAgIlVwZGF0ZWQgbWVtb3J5IHNwYWNlIGF0dHJpYnV0ZTogWyVsdV0gJTAxNmx4IC0gJTAx Nmx4ICglMDE2bHggLQ0KPiA+ICUwMTZseClcclxuIiwNCj4gPiArICAgICAgICAgIChVSU5UNjQp SW5kZXgsIEJhc2VBZGRyZXNzLCBCYXNlQWRkcmVzcyArIExlbmd0aCAtIDEsDQo+ID4gKyAgICAg ICAgICBNZW1vcnlTcGFjZU1hcFtJbmRleF0uQXR0cmlidXRlcywNCj4gPiArICAgICAgICAgIE5l d0F0dHJpYnV0ZXMNCj4gPiArICAgICAgICAgICkpOw0KPiA+ICAgICAgICB9DQo+ID4NCj4gPiAg ICAgICAgUGFnZUxlbmd0aCAgICAgICAgLT0gTGVuZ3RoOw0KPiA+DQo+IA0KPiBTbywgSSB3YXMg cmVhZHkgdG8gZ2l2ZSBteSBSLWIgZm9yIHRoaXMgcGF0Y2gsIGJ1dCB0aGVuIEkgYWxzbyB3YW50 ZWQgdG8NCj4gdGVzdCBpdC4gSSBhcHBsaWVkIHRoZSBwYXRjaCBvbiBjdXJyZW50IGVkazIgbWFz dGVyICg3ZTJhOGRmZThhOWEsDQo+ICJBcm1QbGF0Zm9ybVBrZy9QcmVQZWlDb3JlOiBzZWVkIHRl bXBvcmFyeSBzdGFjayBiZWZvcmUgZW50ZXJpbmcgUEVJDQo+IGNvcmUiLCAyMDE3LTEwLTIwKSwg YW5kIGJ1aWx0IE9WTUYgbGlrZSB0aGlzOg0KPiANCj4gJCBidWlsZCBcDQo+ICAgLWEgSUEzMiBc DQo+ICAgLWEgWDY0IFwNCj4gICAtcCBPdm1mUGtnL092bWZQa2dJYTMyWDY0LmRzYyBcDQo+ICAg LXQgR0NDNDggXA0KPiAgIC1iIE5PT1BUIFwNCj4gICAtRCBTTU1fUkVRVUlSRSBcDQo+ICAgLUQg U0VDVVJFX0JPT1RfRU5BQkxFIFwNCj4gICAtRCBFMTAwMF9FTkFCTEUgXA0KPiAgIC1EIEhUVFBf Qk9PVF9FTkFCTEUNCj4gDQo+IEZvciB0ZXN0aW5nIEkgdXNlZCBhIHJlY2VudC1pc2ggdXBzdHJl YW0gUUVNVSBkZXZlbG9wbWVudCBidWlsZA0KPiAoYWU0OWZiYmNkOGU0LCAiTWVyZ2UgcmVtb3Rl LXRyYWNraW5nIGJyYW5jaA0KPiAncmVtb3Rlcy9ydGgvdGFncy9wdWxsLXRjZy0yMDE3MTAyNScg aW50byBzdGFnaW5nIiwgMjAxNy0xMC0yNSksIHdpdGgNCj4gdGhlIFEzNSBtYWNoaW5lIHR5cGUg KHdoaWNoIGlzIHJlcXVpcmVkIGJ5IFNNTSBhbnl3YXkpLg0KPiANCj4gVGhlIHJlc3VsdHMgdmFy eSBhY3Jvc3MgZ3Vlc3QgT1NlczoNCj4gDQo+ICgxKSBVcC10by1kYXRlIEZlZG9yYSAyNiBndWVz dCBjcmFzaGVzIGR1cmluZyBib290LCB3aXRoIHRoZSBmb2xsb3dpbmcNCj4gY2FsbCBzdGFjazoN Cj4gDQo+IEJVRzogdW5hYmxlIHRvIGhhbmRsZSBrZXJuZWwgcGFnaW5nIHJlcXVlc3QgYXQgZmZm ZmZmZmVmZTg5MzAxOA0KPiBDYWxsIFRyYWNlOg0KPiAgPyBfX2NoYW5nZV9wYWdlX2F0dHJfc2V0 X2NscisweGFhNi8weGQ3MA0KPiAgPyBrZXJuZWxfbWFwX3BhZ2VzX2luX3BnZCsweGJjLzB4ZDAN Cj4gID8gZWZpX2NhbGwrMHg1OC8weDkwDQo+ICA/IHZpcnRfZWZpX3NldF92YXJpYWJsZS5wYXJ0 LjcrMHg2Ni8weDEyMA0KPiAgPyB2aXJ0X2VmaV9zZXRfdmFyaWFibGUrMHg0Zi8weDYwDQo+ICA/ IGVmaV9kZWxldGVfZHVtbXlfdmFyaWFibGUrMHg2Mi8weDkwDQo+ICA/IGVmaV9lbnRlcl92aXJ0 dWFsX21vZGUrMHg0ZDQvMHg0ZTgNCj4gID8gZWZpX2VudGVyX3ZpcnR1YWxfbW9kZSsweDRkNC8w eDRlOA0KPiAgPyBzdGFydF9rZXJuZWwrMHg0NDIvMHg0ZTYNCj4gID8gZWFybHlfaWR0X2hhbmRs ZXJfYXJyYXkrMHgxMjAvMHgxMjANCj4gID8geDg2XzY0X3N0YXJ0X3Jlc2VydmF0aW9ucysweDI0 LzB4MjYNCj4gID8geDg2XzY0X3N0YXJ0X2tlcm5lbCsweDEzZS8weDE2MQ0KPiAgPyBzZWNvbmRh cnlfc3RhcnR1cF82NCsweDlmLzB4OWYNCj4gDQo+ICgyKSBUaGUgZm9sbG93aW5nIFdpbmRvd3Mg T1NlcyBhbGwgYm9vdCBzdWNjZXNzZnVsbHk6DQo+IA0KPiAtIFdpbmRvd3MgNw0KPiAtIFdpbmRv d3MgU2VydmVyIDIwMDggUjINCj4gLSBXaW5kb3dzIDguMQ0KPiAtIFdpbmRvd3MgU2VydmVyIDIw MTIgUjINCj4gLSBXaW5kb3dzIDEwDQo+IA0KPiAoMykgV2luZG93cyBTZXJ2ZXIgMjAxNiBjcmFz aGVzIHdpdGggYSBCU09EOyByZXBvcnRpbmcgIkFUVEVNUFRFRCBXUklURQ0KPiBUTyBSRUFET05M WSBNRU1PUlkiLg0KPiANCj4gKFdpdGhvdXQgdGhlIHBhdGNoLCBhbGwgT1NlcyBib290IE9LLikN Cj4gDQo+IA0KPiBJJ20gYXR0YWNoaW5nIGEgWklQIGZpbGUgd2l0aCB0aGUgZm9sbG93aW5nIGNv bnRlbnRzIChub3RlIHRoYXQgSSdsbA0KPiBhdHRhY2ggdGhlIHNhbWUgZmlsZSB0byBUaWFub0Nv cmUgQlojNzUzIGFzIHdlbGwsIGJlY2F1c2UgdGhlIG1haWxpbmcNCj4gbGlzdCBhcmNoaXZlKHMp IGRvbid0IHNlZW0gdG8gcHJlc2VydmUgYXR0YWNobWVudHMpOg0KPiANCj4gLSAib3ZtZi5wcmUu dHh0IiwgInNoZWxsLm1lbW1hcC5wcmUudHh0IiwgImtlcm5lbC5wcmUudHh0IjogT1ZNRiBsb2cs DQo+IE1FTU1BUCBjb21tYW5kIG91dHB1dCBpbiB0aGUgVUVGSSBzaGVsbCwgYW5kIEZlZG9yYSAy NiBrZXJuZWwgYm9vdCBsb2cNCj4gKHN1Y2Nlc3NmdWwpICpiZWZvcmUqIGFwcGx5aW5nIHlvdXIg cGF0Y2guIFRoZSBrZXJuZWwgbG9nIGlzIGRldGFpbGVkDQo+ICh0aGUgY21kbGluZSBoYWQgImln bm9yZV9sb2dsZXZlbCIgYW5kICJlZmk9ZGVidWciKS4NCj4gDQo+IC0gIm92bWYucG9zdC50eHQi LCAic2hlbGwubWVtbWFwLnBvc3QudHh0IiwgImtlcm5lbC5wb3N0LnR4dCI6IHNhbWUNCj4gZmls ZXMgYXMgYWJvdmUsIGJ1dCBzYXZlZCAqYWZ0ZXIqIGFwcGx5aW5nIHlvdXIgcGF0Y2guIFRoaXMg aXMgd2hlbiB0aGUNCj4gRjI2IGtlcm5lbCBjcmFzaGVzLg0KPiANCj4gLSAid2luMjAxNi5wb3N0 LnBuZyI6IHNjcmVlbnNob3Qgb2YgdGhlIFdpbmRvd3MgU2VydmVyIDIwMTYgYm9vdCBmYWlsdXJl DQo+IChhZnRlciB0aGUgcGF0Y2ggd2FzIGFwcGxpZWQpLg0KPiANCj4gVGhhbmtzLA0KPiBMYXN6 bG8NCg==