From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=134.134.136.20; helo=mga02.intel.com; envelope-from=jian.j.wang@intel.com; receiver=edk2-devel@lists.01.org Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 0393E2097174E for ; Thu, 19 Jul 2018 19:16:44 -0700 (PDT) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by orsmga101.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 19 Jul 2018 19:16:44 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.51,377,1526367600"; d="scan'208";a="66061655" Received: from fmsmsx103.amr.corp.intel.com ([10.18.124.201]) by FMSMGA003.fm.intel.com with ESMTP; 19 Jul 2018 19:16:40 -0700 Received: from shsmsx101.ccr.corp.intel.com (10.239.4.153) by FMSMSX103.amr.corp.intel.com (10.18.124.201) with Microsoft SMTP Server (TLS) id 14.3.319.2; Thu, 19 Jul 2018 19:16:40 -0700 Received: from shsmsx103.ccr.corp.intel.com ([169.254.4.100]) by SHSMSX101.ccr.corp.intel.com ([169.254.1.57]) with mapi id 14.03.0319.002; Fri, 20 Jul 2018 10:16:39 +0800 From: "Wang, Jian J" To: Laszlo Ersek , "edk2-devel@lists.01.org" CC: "Yao, Jiewen" , "Dong, Eric" , "Zeng, Star" Thread-Topic: [edk2] [PATCH] UefiCpuPkg/CpuDxe: fix incorrect check of SMM mode Thread-Index: AQHUHdufwGp+E2riAUa6h0EGAqnJh6SUOoFwgAHiNoCAAT18UA== Date: Fri, 20 Jul 2018 02:16:38 +0000 Message-ID: References: <20180713055357.4196-1-jian.j.wang@intel.com> <2b6a7d47-8d72-0a06-a41e-945226d57bf4@redhat.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiMmUxOWExYTUtYzkwOC00MTVhLThkOGQtMmNmNmQ5NDdkNmZhIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiRzRoQTQzVDJYTXlRSURxYThZaVcweDVsRUs3dndMV1pvMXFDQlJJZHkxTFZhVTAxZmdjT01KcE9BWDdZZHZzQyJ9 x-ctpclassification: CTP_NT dlp-product: dlpe-windows dlp-version: 11.0.200.100 dlp-reaction: no-action x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Subject: Re: [PATCH] UefiCpuPkg/CpuDxe: fix incorrect check of SMM mode X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.27 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 20 Jul 2018 02:16:45 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGkgTGF6bG8sDQoNClRoYW5rIHlvdSB2ZXJ5IG11Y2ggZm9yIHRoZSBlZmZvcnQuIFdlIGRvIGhh dmUgYW4gZW1lcmdlbmN5IHNpdHVhdGlvbi4NCg0KKDEpIEFncmVlLiBGaWxlZCBhIGJ1ZyAoaHR0 cHM6Ly9idWd6aWxsYS50aWFub2NvcmUub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDM5KQ0KICAgICBm b3IgaXQuDQooMikgSSB3ZW50IHRocm91Z2ggdGhlIGNvZGUgeW91IG1lbnRpb25lZC4gSSB0aGlu ayBpdCB3b24ndCBjYXVzZSBwcm9ibGVtDQogICAgIGJ1dCBpdCBtaWdodCBtaXNzIHByb3RlY3Rp bmcgY2VydGFpbiBpbWFnZXMgKHZlcnkgcmFyZSBjYXNlIGxpa2UgY2FsbGluZw0KICAgICBnQlMt PkxvYWRJbWFnZSgpIGZyb20gU01NIGRyaXZlciBlbnRyeSBwb2ludCkuIEknbGwgY29uc3VsdCBt b3JlIHJlbGV2YW50DQogICAgZXhwZXJ0cyBiZWZvcmUgZmlsaW5nIGEgYnVnLg0KKDMpIEknbGwg dXBkYXRlIHRoZSBjb21taXQgbWVzc2FnZSB0byByZWZsZWN0IHRoaXMgZm9yIHN1cmUuDQoNClJl Z2FyZHMsDQpKaWFuDQoNCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBM YXN6bG8gRXJzZWsgW21haWx0bzpsZXJzZWtAcmVkaGF0LmNvbV0NCj4gU2VudDogVGh1cnNkYXks IEp1bHkgMTksIDIwMTggMTA6NDYgUE0NCj4gVG86IFdhbmcsIEppYW4gSiA8amlhbi5qLndhbmdA aW50ZWwuY29tPjsgZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmcNCj4gQ2M6IFlhbywgSmlld2VuIDxq aWV3ZW4ueWFvQGludGVsLmNvbT47IERvbmcsIEVyaWMgPGVyaWMuZG9uZ0BpbnRlbC5jb20+Ow0K PiBaZW5nLCBTdGFyIDxzdGFyLnplbmdAaW50ZWwuY29tPg0KPiBTdWJqZWN0OiBSZTogW2VkazJd IFtQQVRDSF0gVWVmaUNwdVBrZy9DcHVEeGU6IGZpeCBpbmNvcnJlY3QgY2hlY2sgb2YgU01NDQo+ IG1vZGUNCj4gDQo+IE9uIDA3LzE4LzE4IDA0OjM1LCBXYW5nLCBKaWFuIEogd3JvdGU6DQo+ID4g SGkgTGFzemxvLA0KPiA+DQo+ID4NCj4gPiBSZWdhcmRzLA0KPiA+IEppYW4NCj4gPg0KPiA+DQo+ ID4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4+IEZyb206IExhc3psbyBFcnNlayBb bWFpbHRvOmxlcnNla0ByZWRoYXQuY29tXQ0KPiA+PiBTZW50OiBUdWVzZGF5LCBKdWx5IDE3LCAy MDE4IDEwOjM3IFBNDQo+ID4+IFRvOiBXYW5nLCBKaWFuIEogPGppYW4uai53YW5nQGludGVsLmNv bT47IGVkazItZGV2ZWxAbGlzdHMuMDEub3JnDQo+ID4+IENjOiBEb25nLCBFcmljIDxlcmljLmRv bmdAaW50ZWwuY29tPjsgWWFvLCBKaWV3ZW4gPGppZXdlbi55YW9AaW50ZWwuY29tPjsNCj4gPj4g WmVuZywgU3RhciA8c3Rhci56ZW5nQGludGVsLmNvbT4NCj4gPj4gU3ViamVjdDogUmU6IFtQQVRD SF0gVWVmaUNwdVBrZy9DcHVEeGU6IGZpeCBpbmNvcnJlY3QgY2hlY2sgb2YgU01NIG1vZGUNCj4g Pj4NCj4gPj4gT24gMDcvMTMvMTggMDc6NTMsIEppYW4gSiBXYW5nIHdyb3RlOg0KPiA+Pj4gQ3Vy cmVudCBJc0luU21tKCkgbWV0aG9kIG1ha2VzIHVzZSBvZg0KPiBnRWZpU21tQmFzZTJQcm90b2Nv bEd1aWQuSW5TbW0oKQ0KPiA+PiB0bw0KPiA+Pj4gY2hlY2sgaWYgY3VycmVudCBwcm9jZXNzb3Ig aXMgaW4gU01NIG1vZGUgb3Igbm90LiBCdXQgdGhpcyBpcyBub3QgY29ycmVjdA0KPiA+Pj4gYmVj YXVzZSBnRWZpU21tQmFzZTJQcm90b2NvbEd1aWQuSW5TbW0oKSBjYW4gb25seSBkZXRlY3QgaWYg dGhlIGNhbGxlciBpcw0KPiA+Pj4gcnVubmluZyBpbiBTTVJBTSBvciBmcm9tIFNNTSBkcml2ZXIu IEl0IGNhbm5vdCBndWFyYW50ZWUgaWYgdGhlIGNhbGxlciBpcw0KPiA+Pj4gcnVubmluZyBpbiBT TU0gbW9kZS4NCj4gPj4NCj4gPj4gV293LiBUaGlzIGlzIHRoZSBleGFjdCBkaWZmZXJlbmNlIHdo aWNoIEkgYXNrZWQgYWJvdXQsIGluIG15IHF1ZXN0aW9uDQo+ID4+ICg5YiksIGFuZCBJIHdhcyBh c3N1cmVkIHRoYXQgSW5TbW0oKSBhY3R1YWxseSBkZXRlcm1pbmVkIHdoZXRoZXIgd2Ugd2VyZQ0K PiA+PiBleGVjdXRpbmcgaW4gTWFuYWdlbWVudCBNb2RlIChtZWFuaW5nIHRoZSBwcm9jZXNzb3Ig b3BlcmF0aW5nIG1vZGUpLg0KPiA+Pg0KPiA+PiBodHRwOi8vbWlkLm1haWwtDQo+ID4+DQo+IGFy Y2hpdmUuY29tLzBDMDlBRkEwN0REMDQzNEQ5RTJBMEM2QUVCMDQ4MzEwM0JCNTVCNDZAc2hzbXN4 MTAyLmNjDQo+ID4+IHIuY29ycC5pbnRlbC5jb20NCj4gPj4NCj4gPj4gKFNjcm9sbCBkb3duIGlu IHRoYXQgbWVzc2FnZSB0byBzZWUgbXkgb3JpZ2luYWwgcXVlc3Rpb24gKDliKS4pDQo+ID4+DQo+ ID4+IFNvIHdoeSBkb2Vzbid0IFN0YXIncyBleHBsYW5hdGlvbiwgZnJvbSB0aGUgb3JpZ2luYWwg dGhyZWFkLCBhcHBseQ0KPiA+PiB1bHRpbWF0ZWx5Pw0KPiA+Pg0KPiA+DQo+ID4gV2UgZGlkIG1h bnkgdGVzdHMgZm9yIHRoaXMgYW5kIGRpZG4ndCBmb3VuZCBhbnkgaXNzdWUuIFNvIEkgdG9vayBh IHJpc2suIChJDQo+IHRob3VnaHQNCj4gPiBhIHZlcnkgcHJlY2lzZSBjaGVjayBvZiBTTU0gbW9k ZSBpcyBoYXJkIGFuZCB0aW1lIGNvbnN1bWluZy4pDQo+ID4NCj4gPj4+IEJlY2F1c2UgU01NIG1v ZGUgd2lsbCBsb2FkIGl0cyBvd24gcGFnZSB0YWJsZSwgYWRkaW5nDQo+ID4+PiBhbiBleHRyYSBj aGVjayBvZiBzYXZlZCBEWEUgcGFnZSB0YWJsZSBiYXNlIGFkZHJlc3MgYWdhaW5zdCBjdXJyZW50 IENSMw0KPiA+Pj4gcmVnaXN0ZXIgdmFsdWUgY2FuIGhlbHAgdG8gZ2V0IHRoZSBjb3JyZWN0IGFu c3dlciBmb3Igc3VyZSAoaW4gU01NIG1vZGUgb3INCj4gPj4+IG5vdCBpbiBTTU0gbW9kZSkuDQo+ ID4+DQo+ID4+IFNvLCBhcHBhcmVudGx5LCB0aGUgUEkgc3BlYyBvZmZlcnMgbm8gc3RhbmRhcmQg d2F5IGZvciBhIHBsYXRmb3JtIG1vZHVsZQ0KPiA+PiB0byBkZXRlcm1pbmUgd2hldGhlciBpdCBy dW5zIGluIE1hbmFnZW1lbnQgTW9kZSwgZGVzcGl0ZSBwcm90b2NvbA0KPiBtZW1iZXINCj4gPj4g YmVpbmcgY2FsbGVkICJJblNtbSIuIERvIHdlIG5lZWQgYSBQSSBzcGVjIEVDUiBmb3IgaW50cm9k dWNpbmcgdGhlDQo+ID4+IG5lZWRlZCBmYWNpbGl0eT8NCj4gPj4NCj4gPj4gQWx0ZXJuYXRpdmVs eSwgdGhlIFBJIHNwZWMgbWlnaHQgYWxyZWFkeSBpbnRlbmQgdG8gc3BlY2lmeSB0aGF0LCBidXQg dGhlDQo+ID4+IGVkazIgaW1wbGVtZW50YXRpb24gZG9lc24ndCBkbyB3aGF0IHRoZSBQSSBzcGVj IHJlcXVpcmVzLg0KPiA+Pg0KPiA+PiBXaGljaCBvbmUgaXMgdGhlIGNhc2U/DQo+ID4+DQo+ID4N Cj4gPiBUaGUgaW1wbGVtZW50YXRpb24gY29uZm9ybXMgdG8gdGhlIHNwZWMuIEl0J3MgbXkgbWlz dW5kZXJzdGFuZGluZy4gQnV0IGl0J3MNCj4gdHJ1ZQ0KPiA+IHRoYXQgdGhlcmUncyBubyBzcGVj aWZpYyBwcm90b2NvbCBBUEkgdG8gZGV0ZXJtaW5lIGlmIGl0J3MgaW4gU01NIG1vZGUgb3Igbm90 Lg0KPiA+DQo+ID4+Pg0KPiA+Pj4gVGhpcyBpcyBhbiBpc3N1ZSBjYXVzZWQgYnkgY2hlY2staW4g YXQNCj4gPj4+DQo+ID4+PiAgIGQxMDZjZjcxZWFiYWFjZmY2M2MxNDYyNmE0YTg3MzQ2YjkzMDc0 ZGQNCj4gPj4NCj4gPj4gSSBkaXNhZ3JlZTsgSSB0aGluayB0aGUgaXNzdWUgd2FzIGludHJvZHVj ZWQgaW4gY29tbWl0IDJhMTQwOGQxZDczOQ0KPiA+PiAoIlVlZmlDcHVQa2cvQ3B1RHhlOiBhbGxv dyBhY2Nlc3NpbmcgKERYRSkgcGFnZSB0YWJsZSBpbiBTTU0gbW9kZSIsDQo+ID4+IDIwMTgtMDYt MTkpLg0KPiA+Pg0KPiA+DQo+ID4gWW91J3JlIHJpZ2h0LiBUaGFua3MgZm9yIHBvaW50aW5nIHRo aXMgb3V0Lg0KPiA+DQo+ID4+DQo+ID4+IEhvdyBkaWQgeW91IGVuY291bnRlciAvIGZpbmQgdGhp cyBpc3N1ZT8NCj4gPj4NCj4gPg0KPiA+IEkgZGlkbid0IGZpbmQgaXQuIFRoZSBpc3N1ZSBjYW1l IHRvIG1lLiBJbiBvdGhlciB3b3JkcywgSSB0aGluayBpdCdzIHJhbmRvbSBhbmQNCj4gaGFyZA0K PiA+IHRvIHJlcHJvZHVjZSBpdC4gTWF5YmUgYSBzdWJ0bGUgY2hhbmdlIGluIGJvb3Qgc2VxdWVu Y2Ugd2lsbCBoaWRlIGl0IGF3YXkuDQo+ID4NCj4gPj4+DQo+ID4+PiBDYzogRXJpYyBEb25nIDxl cmljLmRvbmdAaW50ZWwuY29tPg0KPiA+Pj4gQ2M6IExhc3psbyBFcnNlayA8bGVyc2VrQHJlZGhh dC5jb20+DQo+ID4+PiBDYzogSmlld2VuIFlhbyA8amlld2VuLnlhb0BpbnRlbC5jb20+DQo+ID4+ PiBDYzogU3RhciBaZW5nIDxzdGFyLnplbmdAaW50ZWwuY29tPg0KPiA+Pj4gQ29udHJpYnV0ZWQt dW5kZXI6IFRpYW5vQ29yZSBDb250cmlidXRpb24gQWdyZWVtZW50IDEuMQ0KPiA+Pj4gU2lnbmVk LW9mZi1ieTogSmlhbiBKIFdhbmcgPGppYW4uai53YW5nQGludGVsLmNvbT4NCj4gPj4+IC0tLQ0K PiA+Pj4gIFVlZmlDcHVQa2cvQ3B1RHhlL0NwdVBhZ2VUYWJsZS5jIHwgOSArKysrKysrKy0NCj4g Pj4+ICAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pDQo+ID4+ Pg0KPiA+Pj4gZGlmZiAtLWdpdCBhL1VlZmlDcHVQa2cvQ3B1RHhlL0NwdVBhZ2VUYWJsZS5jDQo+ ID4+IGIvVWVmaUNwdVBrZy9DcHVEeGUvQ3B1UGFnZVRhYmxlLmMNCj4gPj4+IGluZGV4IDg1MGVl ZDYwZTcuLmRmMDIxNzk4YzAgMTAwNjQ0DQo+ID4+PiAtLS0gYS9VZWZpQ3B1UGtnL0NwdUR4ZS9D cHVQYWdlVGFibGUuYw0KPiA+Pj4gKysrIGIvVWVmaUNwdVBrZy9DcHVEeGUvQ3B1UGFnZVRhYmxl LmMNCj4gPj4+IEBAIC0xMzYsNyArMTM2LDE0IEBAIElzSW5TbW0gKA0KPiA+Pj4gICAgICBtU21t QmFzZTItPkluU21tIChtU21tQmFzZTIsICZJblNtbSk7DQo+ID4+PiAgICB9DQo+ID4+Pg0KPiA+ Pj4gLSAgcmV0dXJuIEluU21tOw0KPiA+Pj4gKyAgLy8NCj4gPj4+ICsgIC8vIG1TbW1CYXNlMi0+ SW5TbW0oKSBjYW4gb25seSBkZXRlY3QgaWYgdGhlIGNhbGxlciBpcyBydW5uaW5nIGluDQo+IFNN UkFNDQo+ID4+PiArICAvLyBvciBmcm9tIFNNTSBkcml2ZXIuIEl0IGNhbm5vdCB0ZWxsIGlmIHRo ZSBjYWxsZXIgaXMgcnVubmluZyBpbiBTTU0gbW9kZS4NCj4gPj4+ICsgIC8vIENoZWNrIHBhZ2Ug dGFibGUgYmFzZSBhZGRyZXNzIHRvIGd1YXJhbnRlZSB0aGF0IGJlY2F1c2UgU01NIG1vZGUNCj4g Pj4gd2lsbGwNCj4gPj4+ICsgIC8vIGxvYWQgaXRzIG93biBwYWdlIHRhYmxlLg0KPiA+Pj4gKyAg Ly8NCj4gPj4+ICsgIHJldHVybiAoSW5TbW0gJiYNCj4gPj4+ICsgICAgICAgICAgbVBhZ2luZ0Nv bnRleHQuQ29udGV4dERhdGEuWDY0LlBhZ2VUYWJsZUJhc2UgIT0NCj4gPj4gKFVJTlQ2NClBc21S ZWFkQ3IzKCkpOw0KPiA+Pj4gIH0NCj4gPj4+DQo+ID4+PiAgLyoqDQo+ID4+Pg0KPiA+Pg0KPiA+ PiBTaG91bGRuJ3Qgd2UgY29uc2lkZXIgSWEzMi5QYWdlVGFibGVCYXNlIHdoZW4gdGhhdCdzIGFw cHJvcHJpYXRlPyBGcm9tDQo+ID4+ICJVZWZpQ3B1UGtnL0NwdUR4ZS9DcHVQYWdlVGFibGUuaCI6 DQo+ID4+DQo+ID4+IHR5cGVkZWYgc3RydWN0IHsNCj4gPj4gICBVSU5UMzIgIFBhZ2VUYWJsZUJh c2U7DQo+ID4+ICAgVUlOVDMyICBSZXNlcnZlZDsNCj4gPj4gICBVSU5UMzIgIEF0dHJpYnV0ZXM7 DQo+ID4+IH0gUEFHRV9UQUJMRV9MSUJfUEFHSU5HX0NPTlRFWFRfSUEzMjsNCj4gPj4NCj4gPj4g dHlwZWRlZiBzdHJ1Y3Qgew0KPiA+PiAgIFVJTlQ2NCAgUGFnZVRhYmxlQmFzZTsNCj4gPj4gICBV SU5UMzIgIEF0dHJpYnV0ZXM7DQo+ID4+IH0gUEFHRV9UQUJMRV9MSUJfUEFHSU5HX0NPTlRFWFRf WDY0Ow0KPiA+Pg0KPiA+PiB0eXBlZGVmIHVuaW9uIHsNCj4gPj4gICBQQUdFX1RBQkxFX0xJQl9Q QUdJTkdfQ09OVEVYVF9JQTMyICBJYTMyOw0KPiA+PiAgIFBBR0VfVEFCTEVfTElCX1BBR0lOR19D T05URVhUX1g2NCAgIFg2NDsNCj4gPj4gfSBQQUdFX1RBQkxFX0xJQl9QQUdJTkdfQ09OVEVYVF9E QVRBOw0KPiA+Pg0KPiA+PiBUaGUgSWEzMi9YNjQgc3RydWN0dXJlIHR5cGVzIGFyZSBub3QgcGFj a2VkLCBhbmQgZXZlbiBpZiB0aGV5IHdlcmUsIEkNCj4gPj4gd291bGRuJ3QgdGhpbmsgd2Ugc2hv dWxkIHJlbHkgb24gIlJlc2VydmVkIiBiZWluZyB6ZXJvLg0KPiA+Pg0KPiA+DQo+ID4gbVBhZ2lu Z0NvbnRleHQgaXMgemVyby1lZCBhdCBlYWNoIHVwZGF0ZSBpbiBHZXRDdXJyZW50UGFnaW5nQ29u dGV4dCgpLg0KPiA+IEkgdGhpbmsgaXQgc2hvdWxkIGJlIG5vIHByb2JsZW0gdG8gdXNlIFg2NC4N Cj4gPg0KPiA+Pg0KPiA+PiBBbGwgaW4gYWxsLCBJIHRoaW5rIHRoYXQgZGV0ZXJtaW5pbmcgd2hl dGhlciB0aGUgcHJvY2Vzc29yIGlzIG9wZXJhdGluZw0KPiA+PiBpbiBNYW5hZ2VtZW50IE1vZGUg KHJlZ2FyZGxlc3Mgb2Ygd2hlcmUgaW4gUkFNIHRoZSBwcm9jZXNzb3IgaXMNCj4gPj4gZXhlY3V0 aW5nIGNvZGUgZnJvbSkgaXMgYSBjb3JlIGZ1bmN0aW9uYWxpdHkgdGhhdCBzaG91bGQgYmUgb2Zm ZXJlZCBhcyBhDQo+ID4+IGNlbnRyYWwgc2VydmljZSwgbm90IGp1c3QgYW4gaW50ZXJuYWwgQ3B1 RHhlIGZ1bmN0aW9uLiBJIHRoaW5rIHdlIG5lZWQNCj4gPj4gZWl0aGVyIGEgUEkgc3BlYyBhZGRp dGlvbiwgb3IgYXQgbGVhc3QgYW4gRURLSUkgZXh0ZW5zaW9uIHByb3RvY29sLiBJdCdzDQo+ID4+ IG9idmlvdXMgdGhhdCB0aGUgSW5TbW0oKSBiZWhhdmlvciBpcyB1bmNsZWFyIHRvIGRldmVsb3Bl cnMhIChNZQ0KPiA+PiBpbmNsdWRlZCwgb2YgY291cnNlLikNCj4gPj4NCj4gPg0KPiA+IEkgYWdy ZWUuDQo+IA0KPiAoMSkgUGxlYXNlIGZpbGUgYSBUaWFub0NvcmUgQlogYWJvdXQgZml4aW5nIHRo ZSBpbmRpc2NyaW1pbmF0ZQ0KPiBYNjQuUGFnZVRhYmxlQmFzZSBhY2Nlc3MgaW4gSXNJblNtbSgp Lg0KPiANCj4gVGhlIGFyZ3VtZW50IHlvdSBtYWtlIGFib3V0IEdldEN1cnJlbnRQYWdpbmdDb250 ZXh0KCkgaXMgbm90IHZhbGlkLCBpbg0KPiBteSBvcGluaW9uLiBJdCBib2lscyBkb3duIHRvLCAi eWVhaCwgd2UncmUgcG9zc2libHkgYWNjZXNzaW5nIGEgcmFuZG9tDQo+IGdhcCBpbiB0aGUgSUEz MiBzdHJ1Y3R1cmUsIGJ1dCBoZXkgdGhhdCdzIG5vIHByb2JsZW0sIHdlIHplcm8gaXQgb3V0DQo+ IGFueXdheSIuIFRoaXMgaXMgdmVyeSBiYWQgcHJvZ3JhbW1pbmcgcHJhY3RpY2UsIG5vdCB0byBt ZW50aW9uIHRoZQ0KPiBleHRyZW1lbHkgY29uZnVzaW5nIHNvdXJjZSBjb2RlIHJlZmVyZW5jZSB0 byAiWDY0IiB3aGVuIHdlIG1heSBiZQ0KPiBydW5uaW5nIG9uIElBMzIgaW4gZmFjdC4gSSBzZWUg c29tZSByZWZlcmVuY2VzIGluIHRoZSBjb2RlIHRvDQo+ICJJYTMyLlBhZ2VUYWJsZUJhc2UiIGFz IHdlbGwsIHNvIHRoZXJlIG11c3QgYmUgc29tZSB3YXkgdG8gdGVsbCBhcGFydA0KPiB0aGUgY2Fz ZXMuIEF0IHRoZSBtaW5pbXVtLCB0aGUgUEFHRV9UQUJMRV9MSUJfUEFHSU5HX0NPTlRFWFRfKg0K PiBzdHJ1Y3R1cmVzIHNob3VsZCBiZSBwYWNrZWQuDQo+IA0KPiAtIFRoZXJlZm9yZSwgcGxlYXNl IGZpbGUgYSBUaWFub0NvcmUgQlogYWJvdXQgY2xlYW5pbmcgdGhpcyB1cC4NCj4gDQo+IC0gSW4g YWRkaXRpb24sIHBsZWFzZSByZWZlcmVuY2UgdGhhdCBUaWFub0NvcmUgQlogaW4gdGhlIGNvbW1p dCBtZXNzYWdlLg0KPiANCj4gKE5vcm1hbGx5IEkgd291bGQgcmVxdWVzdCBhIG5ldyB2ZXJzaW9u IHdpdGggdGhpcyB1cGRhdGUsIGJ1dCBJIHJlYWxpemUNCj4gdGhpcyBwYXRjaCBtYXkgYmUgdXJn ZW50IGZvciB5b3UuIFNvIGxldCdzIGFkZCBhIGZvcndhcmQtcmVmZXJlbmNlIHRvDQo+IHRoZSBj b21taXQgbWVzc2FnZSwgaW4gdGhlIGZvcm0gb2YgYSBuZXcgVGlhbm9Db3JlIEJaLikNCj4gDQo+ ICgyKSBXZSBoYXZlIGFub3RoZXIgaW5zdGFuY2Ugb2YgSXNJblNtbSgpLCBpbg0KPiAiTWRlTW9k dWxlUGtnL0NvcmUvRHhlL01pc2MvTWVtb3J5UHJvdGVjdGlvbi5jIi4gUGxlYXNlIGV2YWx1YXRl DQo+IHdoZXRoZXINCj4gdGhlIHNhbWUgaXNzdWUgYWZmZWN0cyBpdC4gSWYgc28sIGNhbiB5b3Ug cGxlYXNlIGZpbGUgYW5vdGhlciBUaWFub0NvcmUNCj4gQlogYWJvdXQgZml4aW5nIHRoYXQ/DQo+ IA0KPiBGcm9tIG15IHNpZGUsIGl0IGlzIG5vdCBuZWNlc3NhcnkgdG8gcmVmZXJlbmNlICp0aGF0 KiBUaWFub0NvcmUgQlogaW4NCj4gdGhlIGNvbW1pdCBtZXNzYWdlLg0KPiANCj4gKDMpIFBsZWFz ZSBjb3JyZWN0IHRoZSBjb21taXQgaGFzaCByZWZlcmVuY2UgaW4gdGhlIGNvbW1pdCBtZXNzYWdl LCBmcm9tDQo+IGQxMDZjZjcxZWFiYWFjZmY2M2MxNDYyNmE0YTg3MzQ2YjkzMDc0ZGQgdG8gMmEx NDA4ZDFkNzM5Lg0KPiANCj4gDQo+IFdpdGggKDEpIGFuZCAoMykgYWRkcmVzc2VkLCB5b3UgY2Fu IGFkZCBteToNCj4gDQo+IFJlZ3Jlc3Npb24tdGVzdGVkLWJ5OiBMYXN6bG8gRXJzZWsgPGxlcnNl a0ByZWRoYXQuY29tPg0KPiANCj4gDQo+IEFsc28sIHNvcnJ5IGFib3V0IHRoZSBkZWxheS4NCj4g DQo+IFRoYW5rcywNCj4gTGFzemxvDQo=