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.43; helo=mga05.intel.com; envelope-from=jiewen.yao@intel.com; receiver=edk2-devel@lists.01.org Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) (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 6700121A10962 for ; Wed, 29 Nov 2017 17:31:42 -0800 (PST) Received: from orsmga002.jf.intel.com ([10.7.209.21]) by fmsmga105.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 29 Nov 2017 17:36:06 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.45,339,1508828400"; d="scan'208";a="13570241" Received: from fmsmsx107.amr.corp.intel.com ([10.18.124.205]) by orsmga002.jf.intel.com with ESMTP; 29 Nov 2017 17:36:06 -0800 Received: from fmsmsx124.amr.corp.intel.com (10.18.125.39) by fmsmsx107.amr.corp.intel.com (10.18.124.205) with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 29 Nov 2017 17:36:06 -0800 Received: from shsmsx151.ccr.corp.intel.com (10.239.6.50) by fmsmsx124.amr.corp.intel.com (10.18.125.39) with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 29 Nov 2017 17:36:05 -0800 Received: from shsmsx102.ccr.corp.intel.com ([169.254.2.175]) by SHSMSX151.ccr.corp.intel.com ([169.254.3.218]) with mapi id 14.03.0319.002; Thu, 30 Nov 2017 09:36:03 +0800 From: "Yao, Jiewen" To: "Wang, Jian J" CC: "edk2-devel@lists.01.org" Thread-Topic: [edk2] [PATCH 0/2] Enable page table write protection Thread-Index: AQHTaO6jTVQ3WoyKZki4Ia2jZfzVHqMqjU6AgAATUYCAAI7Rgf//kAIAgACcepeAADS9gIAAhuCQ//+CNACAAIsRgA== Date: Thu, 30 Nov 2017 01:36:02 +0000 Message-ID: <74D8A39837DF1E4DA445A8C0B3885C503AA3279A@shsmsx102.ccr.corp.intel.com> References: <20171129084640.20076-1-jian.j.wang@intel.com> <19004429-87DC-4620-8A78-4EF085D5AD9D@intel.com>, <47960CCE-CA63-49FE-99AF-48E61050EF05@intel.com>, <75B70EA2-DA2E-41E5-9580-FA23AB545AC2@intel.com> <74D8A39837DF1E4DA445A8C0B3885C503AA326DF@shsmsx102.ccr.corp.intel.com> In-Reply-To: Accept-Language: zh-CN, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiYjc1Yjg1YzEtMzZhNS00ZTYwLTkzZWItYTM3ZjkxYTFiOTFmIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX0lDIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjIuNS4xOCIsIlRydXN0ZWRMYWJlbEhhc2giOiJIWGJSNVRoOVNQZUtwVDR0UTFRbGNONFwvc3RkVjZ5V0Y1bGVKaGlQVk56NzVzTDVqaFhJT0ZPZCtWTXRiVW1vUyJ9 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 0/2] Enable page table write protection 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: Thu, 30 Nov 2017 01:31:42 -0000 Content-Language: en-US Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: base64 Q2FuIHlvdSBqdXN0IGFsbG9jYXRlIDEgbW9yZSBwYWdlIGZvciBzcGxpdD8NCklmIG5ldyBvbmUg bmVlZCBzcGxpdCwgeW91IGNhbiBqdXN0IHVzZSB0aGUgYWRkaXRpb25hbCBwYWdlLg0KSWYgbm90 LCB5b3UgY2FuIGZyZWUgaXQgbGF0ZXIuDQoNClRoYW5rIHlvdQ0KWWFvIEppZXdlbg0KDQoNCj4g LS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogV2FuZywgSmlhbiBKDQo+IFNlbnQ6 IFRodXJzZGF5LCBOb3ZlbWJlciAzMCwgMjAxNyA5OjE3IEFNDQo+IFRvOiBZYW8sIEppZXdlbiA8 amlld2VuLnlhb0BpbnRlbC5jb20+DQo+IENjOiBlZGsyLWRldmVsQGxpc3RzLjAxLm9yZw0KPiBT dWJqZWN0OiBSRTogW2VkazJdIFtQQVRDSCAwLzJdIEVuYWJsZSBwYWdlIHRhYmxlIHdyaXRlIHBy b3RlY3Rpb24NCj4gDQo+IFdoZW4geW91IHNwbGl0IHBhZ2UgdGFibGVzLCB5b3UgbmVlZCB0byBh bGxvY2F0ZSBuZXcgcGFnZXMgZm9yIG5ldyBwYWdlIHRhYmxlLg0KPiBTaW5jZSB5b3UgaGF2ZSBu ZXcgcGFnZSB0YWJsZXMgYWRkZWQsIHlvdSBuZWVkIHRvIG1hcmsgdGhlbSB0byBiZSByZWFkLW9u bHkNCj4gYXMgd2VsbCwgcmlnaHQ/IFdoZW4geW91IGRvIHRoaXMsIHRoZSBwYWdlIHRhYmxlIGZv ciB0aGUgbWVtb3J5IG5ld2x5IGFsbG9jYXRlZA0KPiBtaWdodCBzdGlsbCBuZWVkcyB0byBiZSBz cGxpdC4gVGhpcyBpcyB0aGUgd29yc3QgY2FzZSBidXQgdGhlcmUncyBzdGlsbCBjaGFuY2Ugb2Yg aXQsDQo+IHJpZ2h0PyBXZSBjYW5ub3QgZ3VhcmFudGVlLCB0aGVvcmV0aWNhbGx5LCB0aGUgcGFn ZSB0YWJsZSBmb3IgdGhlIG5ld2x5IGFsbG9jYXRlZA0KPiBwYWdlIHRhYmxlcyBpcyBpbiB0aGUg c2FtZSBhcyBqdXN0IHNwbGl0IG9uZXMuIFNvLCBpbiB3b3JzdCBjYXNlLCBvbmNlIHdlIHdhbnQg dG8NCj4gbWFyayBuZXcgcGFnZSB0YWJsZSB0byBiZSByZWFkLW9ubHksIHdlIG5lZWQgdG8gc3Bs aXQgdGhlIHBhZ2UgdGFibGUgbWFuYWdpbmcNCj4gdGhvc2UgbWVtb3J5LCBhbmQgaWYgd2UgbmVl ZCB0byBkbyBzcGxpdCwgd2UgbmVlZCB0byBhbGxvY2F0ZSBtb3JlIG5ldyBwYWdlcy4NCj4gVGhp cyBtaWdodCBmYWxsIGludG8gYSByZWN1cnNpdmUgc2l0dWF0aW9uIHVudGlsIGFsbCB0aGUgc21h bGxlc3QgcGFnZSB0YWJsZSBhcmUNCj4gY3JlYXRlZC4NCj4gSW4gcHJhY3RpY2UgaXQncyBhbG1v c3QgaW1wb3NzaWJsZSB0byBsZXQgaXQgaGFwcGVuIGJ1dCB0aGUgY2hhbmNlcyBhcmUgd2Ugd2ls bCBmYWxsDQo+IGludG8NCj4gc3VjaCByZWN1cnNpdmUgc2l0dWF0aW9uIG1vcmUgdGhhbiBvbmUg bGV2ZWwuDQo+IA0KPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gRnJvbTogWWFv LCBKaWV3ZW4NCj4gPiBTZW50OiBUaHVyc2RheSwgTm92ZW1iZXIgMzAsIDIwMTcgODo1MiBBTQ0K PiA+IFRvOiBXYW5nLCBKaWFuIEogPGppYW4uai53YW5nQGludGVsLmNvbT4NCj4gPiBDYzogZWRr Mi1kZXZlbEBsaXN0cy4wMS5vcmcNCj4gPiBTdWJqZWN0OiBSRTogW2VkazJdIFtQQVRDSCAwLzJd IEVuYWJsZSBwYWdlIHRhYmxlIHdyaXRlIHByb3RlY3Rpb24NCj4gPg0KPiA+IC0tIHdoZW5ldmVy IHlvdSdyZSB0cnlpbmcgdG8gbWFyayBvbmUgcGFnZSB1c2VkIGFzIHBhZ2UgdGFibGUgdG8gYmUg cmVhZC1vbmx5LA0KPiA+IHlvdSBuZWVkIHRvIHNwbGl0IGl0cyBwYWdlIHRhYmxlIGluIGFkdmFu Y2UNCj4gPiBbSmlld2VuXSBTb3JyeSwgSSBkbyBub3QgcXVpdGUgdW5kZXJzdGFuZCB0aGUgcHJv YmxlbSBzdGF0ZW1lbnQuDQo+ID4gVG8gc2V0IGEgcGFnZSB0byBiZSBSZWFkT25seSwgeW91IGp1 c3QgZmxpcCB0aGUgUi9XIGJpdCBpbiB0aGUgcGFnZSBlbnRyeS4NCj4gPiBUaGUgc3RlcCBJIGV4 cGVjdCBpczoNCj4gPiAxKSBZb3Ugc3BsaXQgcGFnZSB0YWJsZS4NCj4gPiAyKSBGaWxsIHRoZSBk YXRhIHN0cnVjdHVyZSBpbiB0aGUgbmV3IGVudHJ5Lg0KPiA+IDMpIEZsaXAgUi9XIGJpdCAoPD09 IFRoaXMgaXMgdGhlIG5ldyBzdGVwKS4NCj4gPiA0KSBGbHVzaFBhZ2VUYWJsZS4NCj4gPg0KPiA+ IFRoYW5rIHlvdQ0KPiA+IFlhbyBKaWV3ZW4NCj4gPg0KPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNz YWdlLS0tLS0NCj4gPiA+IEZyb206IFdhbmcsIEppYW4gSg0KPiA+ID4gU2VudDogVGh1cnNkYXks IE5vdmVtYmVyIDMwLCAyMDE3IDg6NDQgQU0NCj4gPiA+IFRvOiBZYW8sIEppZXdlbiA8amlld2Vu Lnlhb0BpbnRlbC5jb20+DQo+ID4gPiBDYzogZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmcNCj4gPiA+ IFN1YmplY3Q6IFJFOiBbZWRrMl0gW1BBVENIIDAvMl0gRW5hYmxlIHBhZ2UgdGFibGUgd3JpdGUg cHJvdGVjdGlvbg0KPiA+ID4NCj4gPiA+IEkgZGlkIHRoaW5rIG9mIHByb3RlY3RpbmcgbmV3IHBh Z2UgdGFibGUgaW4gY3B1IGRyaXZlci4gQnV0IEkgdGhpbmsgdGhlcmUncyByaXNrcw0KPiA+ID4g dG8gZG8gaXQsIHdoaWNoIGlzIHRoYXQgdGhlcmUgbWlnaHQgYmUgYSBjaGFuY2UgdGhhdCwgd2hl bmV2ZXIgeW91J3JlIHRyeWluZyB0bw0KPiA+ID4gbWFyayBvbmUgcGFnZSB1c2VkIGFzIHBhZ2Ug dGFibGUgdG8gYmUgcmVhZC1vbmx5LCB5b3UgbmVlZCB0byBzcGxpdCBpdHMgcGFnZQ0KPiA+ID4g dGFibGUgaW4gYWR2YW5jZSwgYW5kIGFnYWluIGFuZCBhZ2FpbiwgdW50aWwgYWxsIHBhZ2UgdGFi bGVzIGFyZSBmb3IgNEtCIHBhZ2VzLg0KPiA+ID4NCj4gPiA+IEFsdGhvdWdoIHRoaXMgaXMgYSBy YXJlIGNhc2UsIG9yIHRoZSBwYWdlIHRhYmxlICJzcGxpdCIgd2lsbCBqdXN0IGhhcHBlbiBmb3Ig YSBmZXcNCj4gPiA+IHRpbWVzLCBpdCB3aWxsIHNsb3cgZG93biB0aGUgYm9vdCBwcm9jZXNzIGEg bGl0dGxlIGJpdCBhbnl3YXkuIFNvIEkgdGhvdWdoICBpdCdzDQo+ID4gPiBzYWZlciBub3QgdG8g cHJvdGVjdCBuZXcgcGFnZSB0YWJsZXMgY3JlYXRlZCBhZnRlciBEeGVJcGwuDQo+ID4gPg0KPiA+ ID4gTWF5YmUgaXQncyBqdXN0IG92ZXIgd29ycnlpbmcgYWJvdXQgaXQuIE1heWJlIHdlIGp1c3Qg bmVlZCB0byBhZGQgYSBQQ0QgdG8NCj4gPiA+IHR1cm4gb24vb2ZmIGl0IGp1c3QgaW4gY2FzZS4g RG8geW91IGhhdmUgYW55IGlkZWFzIGluIG1pbmQ/DQo+ID4gPg0KPiA+ID4gPiAtLS0tLU9yaWdp bmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ID4gPiBGcm9tOiBZYW8sIEppZXdlbg0KPiA+ID4gPiBTZW50 OiBXZWRuZXNkYXksIE5vdmVtYmVyIDI5LCAyMDE3IDk6MzUgUE0NCj4gPiA+ID4gVG86IFdhbmcs IEppYW4gSiA8amlhbi5qLndhbmdAaW50ZWwuY29tPg0KPiA+ID4gPiBDYzogZWRrMi1kZXZlbEBs aXN0cy4wMS5vcmcNCj4gPiA+ID4gU3ViamVjdDogUmU6IFtlZGsyXSBbUEFUQ0ggMC8yXSBFbmFi bGUgcGFnZSB0YWJsZSB3cml0ZSBwcm90ZWN0aW9uDQo+ID4gPiA+DQo+ID4gPiA+IEkgZG8gdGhp bmsgd2UgbmVlZCB1cGRhdGUgQ1BVIGRyaXZlciB0byBwcm90ZWN0IG5ldyBhbGxvY2F0ZWQgc3Bs aXQgcGFnZS4NCj4gPiA+ID4NCj4gPiA+ID4gSWYgeW91IHZlcmlmaWVkIGluIHNoZWxsIGVudiwg SSB0aGluayBpdCB3aWxsIGV4cG9zZWQsIHBsZWFzZSBhZGQgYSB0ZXN0IHRvIHRyaWdnZXINCj4g PiA+ID4gcGFnZSBzcGxpdCBpbiBDUFUgZHJpdmVyLg0KPiA+ID4gPg0KPiA+ID4gPiBJIHJlY29t bWVuZCB0byB3cml0ZSBzb21lIHVuaXQgdGVzdCB0byBwYXJzZSBwYWdlIHRhYmxlIGluIHNoZWxs Lg0KPiA+ID4gPg0KPiA+ID4gPiB0aGFuayB5b3UhDQo+ID4gPiA+IFlhbywgSmlld2VuDQo+ID4g PiA+DQo+ID4gPiA+DQo+ID4gPiA+ID4g1NogMjAxN8TqMTHUwjI5yNWjrM/Czuc4OjE1o6xXYW5n LCBKaWFuIEogPGppYW4uai53YW5nQGludGVsLmNvbT4NCj4gPiA+INC0DQo+ID4gPiA+ILXAo7oN Cj4gPiA+ID4gPg0KPiA+ID4gPiA+IEl0J3MgaW4gdGhlIER4ZUlwbFBlaW0uDQo+ID4gPiA+ID4N Cj4gPiA+ID4gPiBCeSB0aGUgd2F5LCB0aGVyZSdzIGFuIGlzc3VlIGluIHRoaXMgcGF0Y2guIEkg Zm9yZ290IHRvIHByb3RlY3QgcGFnZSB0YWJsZSBmb3INCj4gPiA+IDMyLQ0KPiA+ID4gPiBiaXQg bW9kZS4NCj4gPiA+ID4gPiBTbyB0aGlzIHBhdGNoIHdvcmtzIG9ubHkgZm9yIDY0LWJpdCBtb2Rl LiBJJ2xsIGFkZCBpdCBpbiB2MiBwYXRjaC4NCj4gPiA+ID4gPg0KPiA+ID4gPiA+PiAtLS0tLU9y aWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ID4gPiA+PiBGcm9tOiBZYW8sIEppZXdlbg0KPiA+ID4g PiA+PiBTZW50OiBXZWRuZXNkYXksIE5vdmVtYmVyIDI5LCAyMDE3IDY6NTYgUE0NCj4gPiA+ID4g Pj4gVG86IFdhbmcsIEppYW4gSiA8amlhbi5qLndhbmdAaW50ZWwuY29tPg0KPiA+ID4gPiA+PiBD YzogZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmcNCj4gPiA+ID4gPj4gU3ViamVjdDogUmU6IFtlZGsy XSBbUEFUQ0ggMC8yXSBFbmFibGUgcGFnZSB0YWJsZSB3cml0ZSBwcm90ZWN0aW9uDQo+ID4gPiA+ ID4+DQo+ID4gPiA+ID4+IElzIHRoaXMgY29kZSBpbiBDUFUgZHJpdmVyPw0KPiA+ID4gPiA+Pg0K PiA+ID4gPiA+PiB0aGFuayB5b3UhDQo+ID4gPiA+ID4+IFlhbywgSmlld2VuDQo+ID4gPiA+ID4+ DQo+ID4gPiA+ID4+DQo+ID4gPiA+ID4+PiDU2iAyMDE3xOoxMdTCMjnI1aOsz8LO5zY6MjSjrFdh bmcsIEppYW4gSg0KPiA+IDxqaWFuLmoud2FuZ0BpbnRlbC5jb20+DQo+ID4gPiA+INC0DQo+ID4g PiA+ID4+ILXAo7oNCj4gPiA+ID4gPj4+DQo+ID4gPiA+ID4+PiBZZXMsIEkgdmFsaWRhdGVkIHRo ZW0gbWFudWFsbHkgd2l0aCBKVEFHIGRlYnVnIHRvb2wuDQo+ID4gPiA+ID4+Pg0KPiA+ID4gPiA+ Pj4gaWYgKChMM1BhZ2VUYWJsZVtJbmRleDNdICYgSUEzMl9QR19QUykgIT0gMCkgew0KPiA+ID4g PiA+Pj4gIC8vIDFHIHBhZ2UuIFNwbGl0IHRvIDJNLg0KPiA+ID4gPiA+Pj4gIEwyUGFnZVRhYmxl ID0gQWxsb2NhdGVQYWdlcyAoMSk7DQo+ID4gPiA+ID4+PiAgQVNTRVJUIChMMlBhZ2VUYWJsZSAh PSBOVUxMKTsNCj4gPiA+ID4gPj4+ICAgUGh5c2ljYWxBZGRyZXNzID0gTDNQYWdlVGFibGVbSW5k ZXgzXSAmDQo+ID4gPiBQQUdJTkdfMUdfQUREUkVTU19NQVNLXzY0Ow0KPiA+ID4gPiA+Pj4gICBm b3IgKEluZGV4ID0gMDsgSW5kZXggPCBFRklfUEFHRV9TSVpFL3NpemVvZiAoVUlOVDY0KTsgKytJ bmRleCkgew0KPiA+ID4gPiA+Pj4gICAgTDJQYWdlVGFibGVbSW5kZXhdID0gUGh5c2ljYWxBZGRy ZXNzICB8IEFkZHJlc3NFbmNNYXNrIHwNCj4gPiA+ID4gPj4+ICAgICAgICAgICAgICAgICAgICAg ICAgIElBMzJfUEdfUFMgfCBJQTMyX1BHX1AgfA0KPiBJQTMyX1BHX1JXOw0KPiA+ID4gPiA+Pj4g ICAgUGh5c2ljYWxBZGRyZXNzICs9IFNJWkVfMk1COw0KPiA+ID4gPiA+Pj4gIH0NCj4gPiA+ID4g Pj4+ICBMM1BhZ2VUYWJsZVtJbmRleDNdID0gKFVJTlQ2NCkgKFVJTlROKSBMMlBhZ2VUYWJsZSB8 DQo+ID4gPiBBZGRyZXNzRW5jTWFzayB8DQo+ID4gPiA+ID4+PiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgSUEzMl9QR19QIHwNCj4gPiA+IElBMzJfUEdfUlc7DQo+ID4g PiA+ID4+PiAgU2V0UGFnZVJlYWRPbmx5IChQYWdlVGFibGVCYXNlLA0KPiA+ID4gPiA+PiAoRUZJ X1BIWVNJQ0FMX0FERFJFU1MpKFVJTlROKUwyUGFnZVRhYmxlKTsNCj4gPiA+ID4gPj4+IH0NCj4g PiA+ID4gPj4+DQo+ID4gPiA+ID4+PiBUaGUgbmV3bHkgYWxsb2NhdGVkIHBhZ2UgdGFibGUgaXMg c2V0IGluIHRoZSBTZXRQYWdlUmVhZE9ubHkoKSBpdHNlbGYNCj4gPiA+ID4gPj4gcmVjdXJzaXZl bHksIGxpa2UNCj4gPiA+ID4gPj4+IGFib3ZlIGNvZGUgaW4gd2hpY2ggTDJQYWdlVGFibGUgaXMg YWxsb2NhdGVkIGFuZCB0aGVuIHNldCBpdCB0byBiZQ0KPiA+ID4gcmVhZC1vbmx5DQo+ID4gPiA+ ID4+IGFmdGVyDQo+ID4gPiA+ID4+PiBpbml0aWFsaXppbmcgdGhlIHRhYmxlIGNvbnRlbnQuDQo+ ID4gPiA+ID4+Pg0KPiA+ID4gPiA+Pj4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4g PiA+ID4+Pj4gRnJvbTogWWFvLCBKaWV3ZW4NCj4gPiA+ID4gPj4+PiBTZW50OiBXZWRuZXNkYXks IE5vdmVtYmVyIDI5LCAyMDE3IDU6MTYgUE0NCj4gPiA+ID4gPj4+PiBUbzogV2FuZywgSmlhbiBK IDxqaWFuLmoud2FuZ0BpbnRlbC5jb20+DQo+ID4gPiA+ID4+Pj4gQ2M6IGVkazItZGV2ZWxAbGlz dHMuMDEub3JnDQo+ID4gPiA+ID4+Pj4gU3ViamVjdDogUmU6IFtlZGsyXSBbUEFUQ0ggMC8yXSBF bmFibGUgcGFnZSB0YWJsZSB3cml0ZSBwcm90ZWN0aW9uDQo+ID4gPiA+ID4+Pj4NCj4gPiA+ID4g Pj4+PiBUaGFua3MuDQo+ID4gPiA+ID4+Pj4NCj4gPiA+ID4gPj4+PiBNYXkgSSBrbm93IGlmIHRo aXMgaXMgdmFsaWRhdGVkIGluIHVlZmkgc2hlbGwsIHRoYXQgYWxsIHBhZ2UgdGFibGUgaXMNCj4g PiByZWFkb25seT8NCj4gPiA+ID4gPj4+Pg0KPiA+ID4gPiA+Pj4+IEkgZGlkIG5vdCBmaW5kIHRo ZSBjb2RlIHRvIHNldCBuZXcgYWxsb2NhdGVkIHNwbGl0IHBhZ2UgdG8gYmUgcmVhZG9ubHkuDQo+ ID4gQ2FuDQo+ID4gPiA+IHlvdQ0KPiA+ID4gPiA+Pj4+IGdpdmUgbWUgYSBoYW5kIG9uIHRoYXQ/ DQo+ID4gPiA+ID4+Pj4NCj4gPiA+ID4gPj4+PiB0aGFuayB5b3UhDQo+ID4gPiA+ID4+Pj4gWWFv LCBKaWV3ZW4NCj4gPiA+ID4gPj4+Pg0KPiA+ID4gPiA+Pj4+DQo+ID4gPiA+ID4+Pj4+INTaIDIw MTfE6jEx1MIyOcjVo6zPws7nNDo0N6OsSmlhbiBKIFdhbmcNCj4gPiA+IDxqaWFuLmoud2FuZ0Bp bnRlbC5jb20+DQo+ID4gPiA+ID4+INC0DQo+ID4gPiA+ID4+Pj4gtcCjug0KPiA+ID4gPiA+Pj4+ Pg0KPiA+ID4gPiA+Pj4+PiBXcml0ZSBQcm90ZWN0IGZlYXR1cmUgKENSMC5XUCkgaXMgYWx3YXlz IGVuYWJsZWQgaW4gZHJpdmVyDQo+ID4gPiA+ID4+Pj4gVWVmaUNwdVBrZy9DcHVEeGUuDQo+ID4g PiA+ID4+Pj4+IEJ1dCB0aGUgbWVtb3J5IHBhZ2VzIHVzZWQgZm9yIHBhZ2UgdGFibGUgYXJlIG5v dCBzZXQgYXMgcmVhZC1vbmx5DQo+IGluDQo+ID4gPiB0aGUNCj4gPiA+ID4gPj4+PiBkcml2ZXIN Cj4gPiA+ID4gPj4+Pj4gRHhlSXBsUGVpbSwgYWZ0ZXIgdGhlIHBhZ2luZyBpcyBzZXR1cC4gVGhp cyBtaWdodCBqZW9wYXJkaXplIHRoZSBwYWdlDQo+ID4gPiA+IHRhYmxlDQo+ID4gPiA+ID4+Pj4+ IGludGVncml0eSBpZiB0aGVyZSdzIGJ1ZmZlciBvdmVyZmxvdyBvY2N1cmVkIGluIG90aGVyIHBh cnQgb2Ygc3lzdGVtLg0KPiA+ID4gPiA+Pj4+Pg0KPiA+ID4gPiA+Pj4+PiBUaGlzIHBhdGNoIHNl cmllcyB3aWxsIGNoYW5nZSB0aGlzIHNpdHVhdGlvbiBieSBjbGVhcmluZyBSL1cgYml0IGluDQo+ IHBhZ2UNCj4gPiA+ID4gPj4gYXR0cmlidXRlDQo+ID4gPiA+ID4+Pj4+IG9mIHRoZSBwYWdlcyB1 c2VkIGFzIHBhZ2UgdGFibGUuDQo+ID4gPiA+ID4+Pj4+DQo+ID4gPiA+ID4+Pj4+IFZhbGlkYXRp b24gd29ya3MgaW5jbHVkZSBib290aW5nIFdpbmRvd3MgKDEwL3NlcnZlciAyMDE2KSBhbmQNCj4g TGludXgNCj4gPiA+ID4gPj4+PiAoRmVkb3JhL1VidW50dSkNCj4gPiA+ID4gPj4+Pj4gb24gT1ZN RiBhbmQgSW50ZWwgcmVhbCBwbGF0Zm9ybS4NCj4gPiA+ID4gPj4+Pj4NCj4gPiA+ID4gPj4+Pj4g SmlhbiBKIFdhbmcgKDIpOg0KPiA+ID4gPiA+Pj4+PiBVZWZpQ3B1UGtnL0NwdUR4ZTogQ2hlY2sg Q1IwLldQIGJlZm9yZSBjaGFuZ2luZyBwYWdlIHRhYmxlDQo+ID4gPiA+ID4+Pj4+IE1kZU1vZHVs ZVBrZy9EeGVJcGw6IE1hcmsgcGFnZSB0YWJsZSBhcyByZWFkLW9ubHkNCj4gPiA+ID4gPj4+Pj4N Cj4gPiA+ID4gPj4+Pj4gTWRlTW9kdWxlUGtnL0NvcmUvRHhlSXBsUGVpbS9YNjQvVmlydHVhbE1l bW9yeS5jIHwgMTY2DQo+ID4gPiA+ID4+Pj4gKysrKysrKysrKysrKysrKysrKysrKysNCj4gPiA+ ID4gPj4+Pj4gTWRlTW9kdWxlUGtnL0NvcmUvRHhlSXBsUGVpbS9YNjQvVmlydHVhbE1lbW9yeS5o IHwgIDE0ICsrDQo+ID4gPiA+ID4+Pj4+IFVlZmlDcHVQa2cvQ3B1RHhlL0NwdVBhZ2VUYWJsZS5j ICAgICAgICAgICAgICAgICB8ICA2NQ0KPiA+ID4gKysrKysrKystDQo+ID4gPiA+ID4+Pj4+IDMg ZmlsZXMgY2hhbmdlZCwgMjQxIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pDQo+ID4gPiA+ ID4+Pj4+DQo+ID4gPiA+ID4+Pj4+IC0tDQo+ID4gPiA+ID4+Pj4+IDIuMTQuMS53aW5kb3dzLjEN Cj4gPiA+ID4gPj4+Pj4NCj4gPiA+ID4gPj4+Pj4gX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18NCj4gPiA+ID4gPj4+Pj4gZWRrMi1kZXZlbCBtYWlsaW5nIGxp c3QNCj4gPiA+ID4gPj4+Pj4gZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmcNCj4gPiA+ID4gPj4+Pj4g aHR0cHM6Ly9saXN0cy4wMS5vcmcvbWFpbG1hbi9saXN0aW5mby9lZGsyLWRldmVsDQo=