From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by mx.groups.io with SMTP id smtpd.web11.2377.1585247000926778496 for ; Thu, 26 Mar 2020 11:23:20 -0700 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: intel.com, ip: 192.55.52.43, mailfrom: michael.d.kinney@intel.com) IronPort-SDR: Vpup1xS8gi5NoMvHL3STF0Hqdn+AfeOSTs7HDphUo9rFWPoXoJupU1dshytTSe+5+igiFydyXP 7L55T7xPHmNw== X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga003.jf.intel.com ([10.7.209.27]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 26 Mar 2020 11:23:20 -0700 IronPort-SDR: 3jvMKTf9X7vvYQzZq4w3SrJMQkLEbE7x+vwTWdbNrv7f1G8+kDRPTiv/eykCyWJNgkUJIbY3zF TX9rWqqHILtg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.72,309,1580803200"; d="scan'208";a="247638788" Received: from orsmsx106.amr.corp.intel.com ([10.22.225.133]) by orsmga003.jf.intel.com with ESMTP; 26 Mar 2020 11:23:19 -0700 Received: from orsmsx113.amr.corp.intel.com ([169.254.9.188]) by ORSMSX106.amr.corp.intel.com ([169.254.1.230]) with mapi id 14.03.0439.000; Thu, 26 Mar 2020 11:23:19 -0700 From: "Michael D Kinney" To: "Yao, Jiewen" , "Zurcher, Christopher J" , "devel@edk2.groups.io" , "Kinney, Michael D" CC: "Wang, Jian J" , "Lu, XiaoyuX" , Ard Biesheuvel , "david.harris4@hp.com" Subject: Re: [edk2-devel] [PATCH 1/1] CryptoPkg/OpensslLib: Add native instruction support for IA32 and X64 Thread-Topic: [edk2-devel] [PATCH 1/1] CryptoPkg/OpensslLib: Add native instruction support for IA32 and X64 Thread-Index: AQHV/EbN0hkyioBeokaR3ZH8SSw796haHaDggAAChCCAAI2HgIAABekAgAAGsgCAAAgOAIAAeRxA Date: Thu, 26 Mar 2020 18:23:19 +0000 Message-ID: References: <20200317102656.20032-1-christopher.j.zurcher@intel.com> <20200317102656.20032-2-christopher.j.zurcher@intel.com> <15FFB5A5A94CCE31.23217@groups.io> <74D8A39837DF1E4DA445A8C0B3885C503F99C64F@shsmsx102.ccr.corp.intel.com> <74D8A39837DF1E4DA445A8C0B3885C503F99C86E@shsmsx102.ccr.corp.intel.com> <74D8A39837DF1E4DA445A8C0B3885C503F99CA3E@shsmsx102.ccr.corp.intel.com> In-Reply-To: <74D8A39837DF1E4DA445A8C0B3885C503F99CA3E@shsmsx102.ccr.corp.intel.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-version: 11.2.0.6 dlp-reaction: no-action x-originating-ip: [10.22.254.140] MIME-Version: 1.0 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 VGhlIG1haW4gaXNzdWUgd2l0aCB1c2Ugb2YgZXh0ZW5kZWQgcmVnaXN0ZXJzIGlzDQp0aGF0IHRo ZSBkZWZhdWx0IGludGVycnVwdC9leGNlcHRpb24gaGFuZGxlciBmb3IgDQpJQTMyL1g2NCBkb2Vz IEZYU0FWRS9GWFJTVE9SLg0KDQpodHRwczovL2dpdGh1Yi5jb20vdGlhbm9jb3JlL2VkazIvYmxv Yi81ZjdjOTFmMGQ3MmVmY2EzYjUzNjI4MTYzODYxMjY1Yzg5MzA2ZjFmL1VlZmlDcHVQa2cvTGli cmFyeS9DcHVFeGNlcHRpb25IYW5kbGVyTGliL1g2NC9FeGNlcHRpb25IYW5kbGVyQXNtLm5hc20j TDI0NA0KDQpodHRwczovL2dpdGh1Yi5jb20vdGlhbm9jb3JlL2VkazIvYmxvYi81ZjdjOTFmMGQ3 MmVmY2EzYjUzNjI4MTYzODYxMjY1Yzg5MzA2ZjFmL1VlZmlDcHVQa2cvTGlicmFyeS9DcHVFeGNl cHRpb25IYW5kbGVyTGliL0lhMzIvRXhjZXB0aW9uSGFuZGxlckFzbS5uYXNtI0wyOTANCg0KVGhp cyBjb3ZlcnMgRlAvTU1YL1hNTSByZWdpc3RlcnMsIGJ1dCBubyBtb3JlLg0KDQpBbnkgY29kZSB0 aGF0IHVzZXMgbW9yZSB0aGFuIHRoaXMgaGFzIDIgb3B0aW9uczoNCjEpIEV4cGFuZCB0aGUgc3Rh dGUgc2F2ZWQgaW4gaW50ZXJydXB0cy9leGNlcHRpb24gaGFuZGxlcnMNCiAgIGZvciB0aGUgZW50 aXJlIHBsYXRmb3JtLg0KMikgRGlzYWJsZSBpbnRlcnJ1cHRzIHdoZW4gY2FsbGluZyBjb2RlIHRo YXQgdXNlcyANCiAgIGFkZGl0aW9uYWwgcmVnaXN0ZXIgc3RhdGUuDQoNCk1pa2UNCg0KPiAtLS0t LU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBZYW8sIEppZXdlbiA8amlld2VuLnlhb0Bp bnRlbC5jb20+DQo+IFNlbnQ6IFdlZG5lc2RheSwgTWFyY2ggMjUsIDIwMjAgODo1OCBQTQ0KPiBU bzogWnVyY2hlciwgQ2hyaXN0b3BoZXIgSg0KPiA8Y2hyaXN0b3BoZXIuai56dXJjaGVyQGludGVs LmNvbT47IGRldmVsQGVkazIuZ3JvdXBzLmlvDQo+IENjOiBXYW5nLCBKaWFuIEogPGppYW4uai53 YW5nQGludGVsLmNvbT47IEx1LCBYaWFveXVYDQo+IDx4aWFveXV4Lmx1QGludGVsLmNvbT47IEFy ZCBCaWVzaGV1dmVsDQo+IDxhcmQuYmllc2hldXZlbEBsaW5hcm8ub3JnPjsgZGF2aWQuaGFycmlz NEBocC5jb207DQo+IEtpbm5leSwgTWljaGFlbCBEIDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNv bT4NCj4gU3ViamVjdDogUkU6IFtlZGsyLWRldmVsXSBbUEFUQ0ggMS8xXQ0KPiBDcnlwdG9Qa2cv T3BlbnNzbExpYjogQWRkIG5hdGl2ZSBpbnN0cnVjdGlvbiBzdXBwb3J0IGZvcg0KPiBJQTMyIGFu ZCBYNjQNCj4gDQo+IFRoZXJlIGlzIGFuIG9sZCBzaGVsbCBiYXNlZCB0ZXN0IGFwcGxpY2F0aW9u LiBJdCBpcw0KPiByZW1vdmVkIGZyb20gZWRrMi1yZXBvLCBhbmQgaXQgc2hvdWxkIGJlIGluIGVk azItdGVzdA0KPiByZXBvIGluIHRoZSBmdXR1cmUuDQo+IA0KPiBCZWZvcmUgdGhlIGxhdHRlciBp cyByZWFkeSwgeW91IGNhbiBmaW5kIHRoZSBhcmNoaXZlIGF0DQo+IGh0dHBzOi8vZ2l0aHViLmNv bS9qeWFvMS9lZGsyL3RyZWUvZWRrMi0NCj4gY3J5cHRlc3QvQ3J5cHRvVGVzdFBrZy9DcnlwdGVz dA0KPiANCj4gQnV0IEkgYW0gbm90IHN1cmUgaWYgaXQgY292ZXJzIHRoZSBsYXRlc3QgaW50ZXJm YWNlLA0KPiBlc3BlY2lhbGx5IHRoZSBuZXcgYWRkZWQgb25lLiBBcyBmYXIgYXMgSSBrbm93LCBz b21lIFNNMw0KPiBpcyBub3QgYWRkZWQgdGhlcmUuDQo+IA0KPiBJIHN0aWxsIHJlY29tbWVuZCB5 b3UgZG91YmxlIGNoZWNrIHdoaWNoIGZ1bmN0aW9ucyB1c2UNCj4gdGhlIFlNTSBhbmQgbWFrZSBz dXJlIHRoZXNlIGZ1bmN0aW9ucyBhcmUgdGVzdGVkLg0KPiANCj4gSSBoYXZlIG5vIGNvbmNlcm4g b24gSEFTSCwgc2luY2UgeW91IGFscmVhZHkgcHJvdmlkZWQgdGhlDQo+IGRhdGEuDQo+IEJ1dCBv dGhlciBhbGdvLCBzdWNoIGFzIEFFUy9SU0EvSE1BQywgZXRjLg0KPiANCj4gDQo+IFRoYW5rIHlv dQ0KPiBZYW8gSmlld2VuDQo+IA0KPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4g RnJvbTogWnVyY2hlciwgQ2hyaXN0b3BoZXIgSg0KPiA8Y2hyaXN0b3BoZXIuai56dXJjaGVyQGlu dGVsLmNvbT4NCj4gPiBTZW50OiBUaHVyc2RheSwgTWFyY2ggMjYsIDIwMjAgMTE6MjkgQU0NCj4g PiBUbzogWWFvLCBKaWV3ZW4gPGppZXdlbi55YW9AaW50ZWwuY29tPjsNCj4gZGV2ZWxAZWRrMi5n cm91cHMuaW8NCj4gPiBDYzogV2FuZywgSmlhbiBKIDxqaWFuLmoud2FuZ0BpbnRlbC5jb20+OyBM dSwgWGlhb3l1WA0KPiA8eGlhb3l1eC5sdUBpbnRlbC5jb20+Ow0KPiA+IEFyZCBCaWVzaGV1dmVs IDxhcmQuYmllc2hldXZlbEBsaW5hcm8ub3JnPjsNCj4gZGF2aWQuaGFycmlzNEBocC5jb207IEtp bm5leSwNCj4gPiBNaWNoYWVsIEQgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPg0KPiA+IFN1 YmplY3Q6IFJFOiBbZWRrMi1kZXZlbF0gW1BBVENIIDEvMV0NCj4gQ3J5cHRvUGtnL09wZW5zc2xM aWI6IEFkZCBuYXRpdmUNCj4gPiBpbnN0cnVjdGlvbiBzdXBwb3J0IGZvciBJQTMyIGFuZCBYNjQN Cj4gPg0KPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+IEZyb206IFlhbywg Smlld2VuIDxqaWV3ZW4ueWFvQGludGVsLmNvbT4NCj4gPiA+IFNlbnQ6IFdlZG5lc2RheSwgTWFy Y2ggMjUsIDIwMjAgMjA6MDUNCj4gPiA+IFRvOiBadXJjaGVyLCBDaHJpc3RvcGhlciBKDQo+IDxj aHJpc3RvcGhlci5qLnp1cmNoZXJAaW50ZWwuY29tPjsNCj4gPiA+IGRldmVsQGVkazIuZ3JvdXBz LmlvDQo+ID4gPiBDYzogV2FuZywgSmlhbiBKIDxqaWFuLmoud2FuZ0BpbnRlbC5jb20+OyBMdSwg WGlhb3l1WA0KPiA+IDx4aWFveXV4Lmx1QGludGVsLmNvbT47DQo+ID4gPiBBcmQgQmllc2hldXZl bCA8YXJkLmJpZXNoZXV2ZWxAbGluYXJvLm9yZz47DQo+IGRhdmlkLmhhcnJpczRAaHAuY29tOyBL aW5uZXksDQo+ID4gPiBNaWNoYWVsIEQgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPg0KPiA+ ID4gU3ViamVjdDogUkU6IFtlZGsyLWRldmVsXSBbUEFUQ0ggMS8xXQ0KPiBDcnlwdG9Qa2cvT3Bl bnNzbExpYjogQWRkIG5hdGl2ZQ0KPiA+ID4gaW5zdHJ1Y3Rpb24gc3VwcG9ydCBmb3IgSUEzMiBh bmQgWDY0DQo+ID4gPg0KPiA+ID4gVGhhbmtzLiBDb21tZW50IGlubGluZToNCj4gPiA+DQo+ID4g PiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiA+IEZyb206IFp1cmNoZXIsIENo cmlzdG9waGVyIEoNCj4gPGNocmlzdG9waGVyLmouenVyY2hlckBpbnRlbC5jb20+DQo+ID4gPiA+ IFNlbnQ6IFRodXJzZGF5LCBNYXJjaCAyNiwgMjAyMCAxMDo0NCBBTQ0KPiA+ID4gPiBUbzogZGV2 ZWxAZWRrMi5ncm91cHMuaW87IFlhbywgSmlld2VuDQo+IDxqaWV3ZW4ueWFvQGludGVsLmNvbT4N Cj4gPiA+ID4gQ2M6IFdhbmcsIEppYW4gSiA8amlhbi5qLndhbmdAaW50ZWwuY29tPjsgTHUsDQo+ IFhpYW95dVgNCj4gPiA+IDx4aWFveXV4Lmx1QGludGVsLmNvbT47DQo+ID4gPiA+IEFyZCBCaWVz aGV1dmVsIDxhcmQuYmllc2hldXZlbEBsaW5hcm8ub3JnPjsNCj4gZGF2aWQuaGFycmlzNEBocC5j b207IEtpbm5leSwNCj4gPiA+ID4gTWljaGFlbCBEIDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNv bT4NCj4gPiA+ID4gU3ViamVjdDogUkU6IFtlZGsyLWRldmVsXSBbUEFUQ0ggMS8xXQ0KPiBDcnlw dG9Qa2cvT3BlbnNzbExpYjogQWRkIG5hdGl2ZQ0KPiA+ID4gPiBpbnN0cnVjdGlvbiBzdXBwb3J0 IGZvciBJQTMyIGFuZCBYNjQNCj4gPiA+ID4NCj4gPiA+ID4gVGhlIHNwZWNpZmljIHBlcmZvcm1h bmNlIGltcHJvdmVtZW50IGRlcGVuZHMgb24gdGhlDQo+IG9wZXJhdGlvbjsgdGhlIE9TDQo+ID4g PiA+IHByb3Zpc2lvbmluZyBJIG1lbnRpb25lZCBpbiB0aGUgW1BhdGNoIDAvMV0gdGhyZWFkDQo+ IHJlbW92ZWQgdGhlIGhhc2hpbmcgYXMgYQ0KPiA+ID4gPiBib3R0bGVuZWNrIGFuZCBpbXByb3Zl ZCB0aGUgb3ZlcmFsbCBvcGVyYXRpb24gc3BlZWQNCj4gb3ZlciA0eCAoc2F2aW5nIDIuNQ0KPiA+ ID4gPiBtaW51dGVzIG9mIGZsYXNoaW5nIHRpbWUpLCBidXQgYSBkaXJlY3QgU0hBMjU2DQo+IGJl bmNobWFyayBvbiB0aGUgcGFydGljdWxhcg0KPiA+ID4gPiBzaWxpY29uIEkgaGF2ZSBhdmFpbGFi bGUgc2hvd2VkIG92ZXIgMTJ4DQo+IGltcHJvdmVtZW50LiBJIGhhdmUgbm90DQo+ID4gPiBiZW5j aG1hcmtlZA0KPiA+ID4gPiB0aGUgaW1wcm92ZW1lbnRzIHRvIGJvb3QgdGltZS4gSSBkbyBub3Qg a25vdyB0aGUNCj4gdXNlIGNhc2UgdGFyZ2V0ZWQgYnkgQloNCj4gPiA+IDI1MDcNCj4gPiA+ID4g c28gSSBkb27igJl0IGtub3cgd2hhdCBiZW5lZml0IHdpbGwgYmUgc2VlbiB0aGVyZS4NCj4gPiA+ IFtKaWV3ZW5dIEkgZ3Vlc3MgdGhlcmUgbWlnaHQgYmUgc29tZSBpbXByb3ZlbWVudCBvbg0KPiBI VFRQUyBib290IGJlY2F1c2Ugb2YNCj4gPiA+IEFFUy1OSSBmb3IgVExTIHNlc3Npb24uDQo+ID4g PiBJIGFtIGp1c3QgY3VyaW91cyBvbiB0aGUgZGF0YS4gOi0pDQo+ID4gPg0KPiA+ID4NCj4gPiA+ ID4NCj4gPiA+ID4gSSB3aWxsIGxvb2sgYXQgdW5pZnlpbmcgdGhlIElORiBmaWxlcyBpbiB0aGUg bmV4dA0KPiBwYXRjaC1zZXQgYW5kIHdpbGwgYWxzbw0KPiA+ID4gYWRkIHRoZQ0KPiA+ID4gPiBP cGVuc3NsTGliQ3J5cHRvLmluZiBjYXNlLg0KPiA+ID4gW0ppZXdlbl0gVGhhbmtzIQ0KPiA+ID4N Cj4gPiA+DQo+ID4gPiA+DQo+ID4gPiA+IEkgaGF2ZSBub3QgZXhlcmNpc2VkIHRoZSBBVlggY29k ZSBzcGVjaWZpY2FsbHksIGFzDQo+IGl0IGlzIGNvbWluZyBkaXJlY3RseQ0KPiA+ID4gZnJvbQ0K PiA+ID4gPiBPcGVuU1NMIGFuZCBpbmNsdWRlcyBjaGVja3MgYWdhaW5zdCB0aGUgQ1BVSUQNCj4g Y2FwYWJpbGl0eSBmbGFncyBiZWZvcmUNCj4gPiA+IGV4ZWN1dGluZy4NCj4gPiA+ID4gSSdtIG5v dCBlbnRpcmVseSBmYW1pbGlhciB3aXRoIEFWWCByZXF1aXJlbWVudHM7IGlzDQo+IHRoZXJlIGEg a25vd24NCj4gPiA+IGVudmlyb25tZW50DQo+ID4gPiA+IHJlc3RyaWN0aW9uIGFnYWluc3QgQVZY IGluc3RydWN0aW9ucyBpbiBFREsyPw0KPiA+ID4gW0ppZXdlbl0gWWVzLiBVRUZJIHNwZWMgb25s eSByZXF1aXJlcyB0byBzZXQgZW52IGZvcg0KPiBYTU0gcmVnaXN0ZXIuDQo+ID4gPiBVc2luZyBv dGhlciByZWdpc3RlcnMgc3VjaCBhcyBZTU0gb3IgWk1NIG1heSByZXF1aXJlcw0KPiBzcGVjaWFs IHNldHVwLCBhbmQNCj4gPiA+IHNhdmUvcmVzdG9yZSBzb21lIEZQVSBzdGF0ZS4NCj4gPiA+IElm IGEgZnVuY3Rpb24gY29udGFpbmluZyB0aGUgWU1NIHJlZ2lzdGVyIGFjY2VzcyBhbmQNCj4gaXQg aXMgbGlua2VkIGludG8NCj4gPiA+IEJhc2VDcnlwdG9MaWIsIEkgaGlnaGx5IHJlY29tbWVuZCB5 b3UgcnVuIHNvbWUgdGVzdA0KPiB0byBtYWtlIHN1cmUgaXQgY2FuDQo+ID4gd29yaw0KPiA+ID4g Y29ycmVjdC4NCj4gPiA+DQo+ID4gPiBNYXliZSBJIHNob3VsZCBhc2sgbW9yZSBnZW5lcmljIHF1 ZXN0aW9uOiBIYXZlIHlvdQ0KPiB2YWxpZGF0ZWQgYWxsIGltcGFjdGVkDQo+ID4gPiBjcnlwdG8g bGliIEFQSSB0byBtYWtlIHN1cmUgdGhleSBzdGlsbCB3b3JrIHdlbGwgd2l0aA0KPiB0aGlzIGlt cHJvdmVtZW50Pw0KPiA+ID4NCj4gPg0KPiA+IEkgaGF2ZSBub3QuIElzIHRoZXJlIGFuIGV4aXN0 aW5nIHRlc3Qgc3VpdGUgdGhhdCB3YXMNCj4gdXNlZCBpbml0aWFsbHksIG9yIHVzZWQgd2l0aA0K PiA+IGVhY2ggT3BlblNTTCB2ZXJzaW9uIHVwZGF0ZT8NCj4gPg0KPiA+IFRoYW5rcywNCj4gPiBD aHJpc3RvcGhlciBadXJjaGVyDQo+ID4NCj4gPiA+DQo+ID4gPiA+DQo+ID4gPiA+IFJlZ2FyZGlu ZyBSTkcsIGl0IGxvb2tzIGxpa2Ugd2UgYWxyZWFkeSBoYXZlDQo+IGFyY2hpdGVjdHVyZS1zcGVj aWZpYyB2YXJpYW50cw0KPiA+ID4gb2YNCj4gPiA+ID4gUmRSYW5kLi4uPw0KPiA+ID4gW0ppZXdl bl0gWWVzLiBUaGF0IGlzIGluIFJuZ0xpYi4NCj4gPiA+IEkgYXNrIHRoaXMgcXVlc3Rpb24gYmVj YXVzZSBJIHNlZSBvcGVuc3NsIHdyYXBwZXIgaXMNCj4gdXNpbmcgUE1DL1RTQyBhcyBub2lzeS4N Cj4gPiA+DQo+ID4NCj4gaHR0cHM6Ly9naXRodWIuY29tL3RpYW5vY29yZS9lZGsyL2Jsb2IvbWFz dGVyL0NyeXB0b1BrZy9MDQo+IGlicmFyeS9PcGVuc3NsTGliLw0KPiA+IHJhDQo+ID4gPiBuZF9w b29sLmMNCj4gPiA+IFNpbmNlIHRoaXMgcGF0Y2ggYWRkcyBpbnN0cnVjdGlvbiBkZXBlbmRlbmN5 LCB3aHkgbm8NCj4gdXNlIFJORyBpbnN0cnVjdGlvbiBhcw0KPiA+ID4gd2VsbD8NCj4gPiA+DQo+ ID4gPg0KPiA+ID4gPg0KPiA+ID4gPiBUaGVyZSB3YXMgc29tZSBvZmYtbGlzdCBmZWVkYmFjayBy ZWdhcmRpbmcgdGhlDQo+IG51bWJlciBvZiBmaWxlcyByZXF1aXJlZCB0bw0KPiA+ID4gYmUNCj4g PiA+ID4gY2hlY2tlZCBpbiBoZXJlLiBPcGVuU1NMIGRvZXMgbm90IGluY2x1ZGUNCj4gYXNzZW1i bGVyLXNwZWNpZmljDQo+ID4gPiBpbXBsZW1lbnRhdGlvbnMNCj4gPiA+ID4gb2YgdGhlc2UgZmls ZXMgYW5kIGluc3RlYWQgcmVsaWVzIG9uICJwZXJsYXNtIg0KPiBzY3JpcHRzIHdoaWNoIGFyZSBw YXJzZWQgYnkNCj4gPiA+IGENCj4gPiA+ID4gdHJhbnNsYXRpb24gc2NyaXB0IGF0IGJ1aWxkIHRp bWUgKGluIHRoZSBub3JtYWwNCj4gT3BlblNTTCBidWlsZCBmbG93KSB0bw0KPiA+ID4gZ2VuZXJh dGUNCj4gPiA+ID4gdGhlIHJlc3VsdGluZyAubmFzbSBmaWxlcy4gVGhlIGltcGxlbWVudGF0aW9u IEkNCj4gaGF2ZSBzaGFyZWQgaGVyZSBnZW5lcmF0ZXMNCj4gPiA+IHRoZXNlDQo+ID4gPiA+IGZp bGVzIGFzIHBhcnQgb2YgdGhlIE9wZW5zc2xMaWIgbWFpbnRhaW5lciBwcm9jZXNzLA0KPiBzaW1p bGFyIHRvIHRoZSBleGlzdGluZw0KPiA+ID4gaGVhZGVyDQo+ID4gPiA+IGZpbGVzIHdoaWNoIGFy ZSBhbHNvIGdlbmVyYXRlZC4gU2luY2UNCj4gcHJvY2Vzc19maWxlcy5wbCBhbHJlYWR5IHJlcXVp cmVzIHRoZQ0KPiA+ID4gPiBwYWNrYWdlIG1haW50YWluZXIgdG8gaGF2ZSBhIFBlcmwgZW52aXJv bm1lbnQNCj4gaW5zdGFsbGVkLCB0aGlzIGRvZXMgbm90DQo+ID4gPiBwbGFjZSBhbnkNCj4gPiA+ ID4gYWRkaXRpb25hbCBidXJkZW4gb24gdGhlbS4NCj4gPiA+ID4gQW4gYWx0ZXJuYXRpdmUgaW1w bGVtZW50YXRpb24gaGFzIGJlZW4gcHJvcG9zZWQNCj4gd2hpY2ggd291bGQgc2VlIG9ubHkgYQ0K PiA+ID4gPiBsaXN0aW5nL3NjcmlwdCBvZiB0aGUgcmVxdWlyZWQgZ2VuZXJhdG9yIG9wZXJhdGlv bnMNCj4gdG8gYmUgY2hlY2tlZCBpbiwgYW5kDQo+ID4gPiBhbnkNCj4gPiA+ID4gcGxhdGZvcm0g YnVpbGQgd2hpY2ggaW50ZW5kZWQgdG8gdXRpbGl6ZSB0aGUgbmF0aXZlDQo+IGFsZ29yaXRobXMg d291bGQNCj4gPiA+IHJlcXVpcmUgYQ0KPiA+ID4gPiBsb2NhbCBQZXJsIGVudmlyb25tZW50IGFz IHdlbGwgYXMgYW55IHVuZGVybHlpbmcNCj4gZW52aXJvbm1lbnQgZGVwZW5kZW5jaWVzDQo+ID4g PiA+IChzdWNoIGFzIGEgdmVyc2lvbiBjaGVjayBhZ2FpbnN0IHRoZSBOQVNNDQo+IGV4ZWN1dGFi bGUpIGZvciBldmVyeSBkZXZlbG9wZXIsDQo+ID4gPiBhbmQNCj4gPiA+ID4gYWRkaXRpb25hbCBw cmUtYnVpbGQgc3RlcHMgdG8gcnVuIHRoZSBnZW5lcmF0b3INCj4gc2NyaXB0cy4NCj4gPiA+ID4N Cj4gPiA+ID4gQXJlIHRoZXJlIGFueSBzdHJvbmcgb3BpbmlvbnMgaGVyZSBhcm91bmQgYWRkaW5n DQo+IFBlcmwgYXMgYSBidWlsZA0KPiA+ID4gZW52aXJvbm1lbnQNCj4gPiA+ID4gZGVwZW5kZW5j eSB2cy4gY2hlY2tpbmcgaW4gbWFpbnRhaW5lci1nZW5lcmF0ZWQNCj4gYXNzZW1ibHkgImludGVy bWVkaWF0ZSINCj4gPiA+IGJ1aWxkDQo+ID4gPiA+IGZpbGVzPw0KPiA+ID4gW0ppZXdlbl0gR29v ZCBxdWVzdGlvbi4gRm9yIHRvb2wsIG1heWJlIE1pa2Ugb3INCj4gTGltaW5nIGNhbiBhbnN3ZXIu DQo+ID4gPiBBbmQgSSBkaWQgZ2V0IHNpbWlsYXIgaXNzdWUgd2l0aCB5b3UuDQo+ID4gPiBJIGdv dCBhIHN1Ym1vZHVsZSBjb2RlIG5lZWQgdXNpbmcgQ01ha2UgYW5kIHByZS0NCj4gcHJvY2Vzc29y IHRvIGdlbmVyYXRlIGENCj4gPiA+IGNvbW1vbiBpbmNsdWRlIGZpbGUuDQo+ID4gPiBIb3cgZG8g d2UgaGFuZGxlIHRoYXQ/IEkgbG9vayBmb3IgdGhlIHJlY29tbWVuZGF0aW9uDQo+IGFzIHdlbGwu DQo+ID4gPg0KPiA+ID4NCj4gPiA+ID4NCj4gPiA+ID4gVGhhbmtzLA0KPiA+ID4gPiBDaHJpc3Rv cGhlciBadXJjaGVyDQo+ID4gPiA+DQo+ID4gPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0t LS0NCj4gPiA+ID4gPiBGcm9tOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbyA8ZGV2ZWxAZWRrMi5ncm91 cHMuaW8+DQo+IE9uIEJlaGFsZiBPZiBZYW8sDQo+ID4gPiA+IEppZXdlbg0KPiA+ID4gPiA+IFNl bnQ6IFdlZG5lc2RheSwgTWFyY2ggMjUsIDIwMjAgMTg6MjMNCj4gPiA+ID4gPiBUbzogZGV2ZWxA ZWRrMi5ncm91cHMuaW87IFlhbywgSmlld2VuDQo+IDxqaWV3ZW4ueWFvQGludGVsLmNvbT47IFp1 cmNoZXIsDQo+ID4gPiA+ID4gQ2hyaXN0b3BoZXIgSiA8Y2hyaXN0b3BoZXIuai56dXJjaGVyQGlu dGVsLmNvbT4NCj4gPiA+ID4gPiBDYzogV2FuZywgSmlhbiBKIDxqaWFuLmoud2FuZ0BpbnRlbC5j b20+OyBMdSwNCj4gWGlhb3l1WA0KPiA+ID4gPiA8eGlhb3l1eC5sdUBpbnRlbC5jb20+Ow0KPiA+ ID4gPiA+IEV1Z2VuZSBDb2hlbiA8ZXVnZW5lQGhwLmNvbT47IEFyZCBCaWVzaGV1dmVsDQo+ID4g PGFyZC5iaWVzaGV1dmVsQGxpbmFyby5vcmc+DQo+ID4gPiA+ID4gU3ViamVjdDogUmU6IFtlZGsy LWRldmVsXSBbUEFUQ0ggMS8xXQ0KPiBDcnlwdG9Qa2cvT3BlbnNzbExpYjogQWRkIG5hdGl2ZQ0K PiA+ID4gPiA+IGluc3RydWN0aW9uIHN1cHBvcnQgZm9yIElBMzIgYW5kIFg2NA0KPiA+ID4gPiA+ DQo+ID4gPiA+ID4gU29tZSBtb3JlIGNvbW1lbnQ6DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiAzKSBE byB5b3UgY29uc2lkZXIgdG8gZW5hYmxlIFJORyBpbnN0cnVjdGlvbiBhcw0KPiB3ZWxsPw0KPiA+ ID4gPiA+DQo+ID4gPiA+ID4gNCkgSSBzYXcgeW91IGFkZGVkIHNvbWUgY29kZSBmb3IgQVZYIGlu c3RydWN0aW9uLA0KPiBzdWNoIGFzIFlNTSByZWdpc3Rlci4NCj4gPiA+ID4gPiBIYXZlIHlvdSB2 YWxpZGF0ZWQgdGhhdCBjb2RlLCB0byBtYWtlIHN1cmUgaXQgY2FuDQo+IHdvcmsgY29ycmVjdGx5 IGluDQo+ID4gPiBjdXJyZW50DQo+ID4gPiA+ID4gZW52aXJvbm1lbnQ/DQo+ID4gPiA+ID4NCj4g PiA+ID4gPg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiA+IC0tLS0tT3JpZ2luYWwg TWVzc2FnZS0tLS0tDQo+ID4gPiA+ID4gPiBGcm9tOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbw0KPiA8 ZGV2ZWxAZWRrMi5ncm91cHMuaW8+IE9uIEJlaGFsZiBPZiBZYW8sDQo+ID4gPiA+IEppZXdlbg0K PiA+ID4gPiA+ID4gU2VudDogVGh1cnNkYXksIE1hcmNoIDI2LCAyMDIwIDk6MTUgQU0NCj4gPiA+ ID4gPiA+IFRvOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbzsgWnVyY2hlciwgQ2hyaXN0b3BoZXINCj4g Sg0KPiA+ID4gPiA+ID4gPGNocmlzdG9waGVyLmouenVyY2hlckBpbnRlbC5jb20+DQo+ID4gPiA+ ID4gPiBDYzogV2FuZywgSmlhbiBKIDxqaWFuLmoud2FuZ0BpbnRlbC5jb20+OyBMdSwNCj4gWGlh b3l1WA0KPiA+ID4gPiA+IDx4aWFveXV4Lmx1QGludGVsLmNvbT47DQo+ID4gPiA+ID4gPiBFdWdl bmUgQ29oZW4gPGV1Z2VuZUBocC5jb20+OyBBcmQgQmllc2hldXZlbA0KPiA+ID4gPiA8YXJkLmJp ZXNoZXV2ZWxAbGluYXJvLm9yZz4NCj4gPiA+ID4gPiA+IFN1YmplY3Q6IFJlOiBbZWRrMi1kZXZl bF0gW1BBVENIIDEvMV0NCj4gQ3J5cHRvUGtnL09wZW5zc2xMaWI6IEFkZCBuYXRpdmUNCj4gPiA+ ID4gPiA+IGluc3RydWN0aW9uIHN1cHBvcnQgZm9yIElBMzIgYW5kIFg2NA0KPiA+ID4gPiA+ID4N Cj4gPiA+ID4gPiA+IEhJIENocmlzdG9waGVyDQo+ID4gPiA+ID4gPiBUaGFua3MgZm9yIHRoZSBj b250cmlidXRpb24uIEkgdGhpbmsgaXQgaXMgZ29vZA0KPiBlbmhhbmNlbWVudC4NCj4gPiA+ID4g PiA+DQo+ID4gPiA+ID4gPiBEbyB5b3UgaGF2ZSBhbnkgZGF0YSBzaG93IHdoYXQgcGVyZm9ybWFu Y2UNCj4gaW1wcm92ZW1lbnQgd2UgY2FuIGdldD8NCj4gPiA+ID4gPiA+IERpZCB0aGUgc3lzdGVt IGJvb3QgZmFzdGVyIHdpdGggdGhlIHRoaXM/IFdoaWNoDQo+IGZlYXR1cmUgPw0KPiA+ID4gPiA+ ID4gVUVGSSBTZWN1cmUgQm9vdD8gVENHIE1lYXN1cmVkIEJvb3Q/IEhUVFBTDQo+IGJvb3Q/DQo+ ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+IENvbW1lbnQgZm9yIHRoZSBjb2Rl Og0KPiA+ID4gPiA+ID4gMSkgSSBhbSBub3Qgc3VyZSBpZiB3ZSBuZWVkIHNlcGFyYXRlDQo+IE9w ZW5zc2xMaWJJYTMyIGFuZCBPcGVuc3NsTGliWDY0Lg0KPiA+ID4gPiA+ID4gQ2FuIHdlIGp1c3Qg ZGVmaW5lIHNpbmdsZSBJTkYsIHN1Y2ggYXMNCj4gT3BlbnNzbExpYkh3LmluZiA/DQo+ID4gPiA+ ID4gPg0KPiA+ID4gPiA+ID4gMikgRG8gd2UgYWxzbyBuZWVkIGFkZCBhIG5ldyB2ZXJzaW9uIGZv cg0KPiBPcGVuc3NsTGliQ3J5cHRvLmluZiA/DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4NCj4g PiA+ID4gPiA+DQo+ID4gPiA+ID4gPiBUaGFuayB5b3UNCj4gPiA+ID4gPiA+IFlhbyBKaWV3ZW4N Cj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ ID4gPiA+ID4gPiA+IEZyb206IGRldmVsQGVkazIuZ3JvdXBzLmlvDQo+IDxkZXZlbEBlZGsyLmdy b3Vwcy5pbz4gT24gQmVoYWxmIE9mDQo+ID4gPiA+IFp1cmNoZXIsDQo+ID4gPiA+ID4gPiA+IENo cmlzdG9waGVyIEoNCj4gPiA+ID4gPiA+ID4gU2VudDogVHVlc2RheSwgTWFyY2ggMTcsIDIwMjAg NjoyNyBQTQ0KPiA+ID4gPiA+ID4gPiBUbzogZGV2ZWxAZWRrMi5ncm91cHMuaW8NCj4gPiA+ID4g PiA+ID4gQ2M6IFdhbmcsIEppYW4gSiA8amlhbi5qLndhbmdAaW50ZWwuY29tPjsgTHUsDQo+IFhp YW95dVgNCj4gPiA+ID4gPiA+IDx4aWFveXV4Lmx1QGludGVsLmNvbT47DQo+ID4gPiA+ID4gPiA+ IEV1Z2VuZSBDb2hlbiA8ZXVnZW5lQGhwLmNvbT47IEFyZCBCaWVzaGV1dmVsDQo+ID4gPiA+IDxh cmQuYmllc2hldXZlbEBsaW5hcm8ub3JnPg0KPiA+ID4gPiA+ID4gPiBTdWJqZWN0OiBbZWRrMi1k ZXZlbF0gW1BBVENIIDEvMV0NCj4gQ3J5cHRvUGtnL09wZW5zc2xMaWI6IEFkZCBuYXRpdmUNCj4g PiA+ID4gPiA+IGluc3RydWN0aW9uDQo+ID4gPiA+ID4gPiA+IHN1cHBvcnQgZm9yIElBMzIgYW5k IFg2NA0KPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4g Pg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiANCj4gPiA+ID4NCj4gPiA+DQo+ID4N Cg0K