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.65; helo=mga03.intel.com; envelope-from=zhichao.gao@intel.com; receiver=edk2-devel@lists.01.org Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) (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 DA2FA21B02822 for ; Mon, 25 Mar 2019 04:06:52 -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 orsmga103.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 25 Mar 2019 04:06:51 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.60,256,1549958400"; d="scan'208";a="143614948" Received: from fmsmsx106.amr.corp.intel.com ([10.18.124.204]) by FMSMGA003.fm.intel.com with ESMTP; 25 Mar 2019 04:06:51 -0700 Received: from shsmsx107.ccr.corp.intel.com (10.239.4.96) by FMSMSX106.amr.corp.intel.com (10.18.124.204) with Microsoft SMTP Server (TLS) id 14.3.408.0; Mon, 25 Mar 2019 04:06:50 -0700 Received: from shsmsx101.ccr.corp.intel.com ([169.254.1.158]) by SHSMSX107.ccr.corp.intel.com ([169.254.9.252]) with mapi id 14.03.0415.000; Mon, 25 Mar 2019 19:06:49 +0800 From: "Gao, Zhichao" To: Ard Biesheuvel CC: "edk2-devel@lists.01.org" , "Wang, Jian J" , "Wu, Hao A" , "Ni, Ray" , "Zeng, Star" , "Gao, Liming" Thread-Topic: [PATCH V2 1/2] MdeModulePkg/CapsuleRuntimeDxe: IA32 add cache flush function Thread-Index: AQHU4uRspdcdcd/UQEuZBG6wicGxyKYcEs/w Date: Mon, 25 Mar 2019 11:06:47 +0000 Message-ID: <3CE959C139B4C44DBEA1810E3AA6F9000B7B1944@SHSMSX101.ccr.corp.intel.com> References: <20190322030718.17676-1-zhichao.gao@intel.com> <20190322030718.17676-2-zhichao.gao@intel.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiMjQxZWExYzYtODBlYy00MjA5LThjNTMtYWU4NTk0YWQ0NTEwIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiZmd2MkNRSzVhZHBEXC9sU0NkYktia2NOaHRxZnp4N3d0Y2ZqSTl2M1J2NEVlaE9pVWFTd3UwUzBHOEdrcHErVzEifQ== x-ctpclassification: CTP_NT dlp-product: dlpe-windows dlp-version: 11.0.400.15 dlp-reaction: no-action x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Subject: Re: [PATCH V2 1/2] MdeModulePkg/CapsuleRuntimeDxe: IA32 add cache flush function X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 Mar 2019 11:06:53 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 U29ycnksIEkgYW0gbm90IGZhbWlsaWFyIHdpdGggRUJDLiBJIG9ubHkga2VlcCB0aGUgb3JpZ2lu YWwgbG9naWMgb2YgaXQuDQoNClRoYW5rcywNClpoaWNoYW8NCg0KPiAtLS0tLU9yaWdpbmFsIE1l c3NhZ2UtLS0tLQ0KPiBGcm9tOiBBcmQgQmllc2hldXZlbCBbbWFpbHRvOmFyZC5iaWVzaGV1dmVs QGxpbmFyby5vcmddDQo+IFNlbnQ6IE1vbmRheSwgTWFyY2ggMjUsIDIwMTkgNDoyNiBQTQ0KPiBU bzogR2FvLCBaaGljaGFvIDx6aGljaGFvLmdhb0BpbnRlbC5jb20+DQo+IENjOiBlZGsyLWRldmVs QGxpc3RzLjAxLm9yZzsgV2FuZywgSmlhbiBKIDxqaWFuLmoud2FuZ0BpbnRlbC5jb20+OyBXdSwg SGFvDQo+IEEgPGhhby5hLnd1QGludGVsLmNvbT47IE5pLCBSYXkgPHJheS5uaUBpbnRlbC5jb20+ OyBaZW5nLCBTdGFyDQo+IDxzdGFyLnplbmdAaW50ZWwuY29tPjsgR2FvLCBMaW1pbmcgPGxpbWlu Zy5nYW9AaW50ZWwuY29tPg0KPiBTdWJqZWN0OiBSZTogW1BBVENIIFYyIDEvMl0gTWRlTW9kdWxl UGtnL0NhcHN1bGVSdW50aW1lRHhlOiBJQTMyIGFkZA0KPiBjYWNoZSBmbHVzaCBmdW5jdGlvbg0K PiANCj4gT24gRnJpLCAyMiBNYXIgMjAxOSBhdCAwNDowOSwgWmhpY2hhbyBHYW8gPHpoaWNoYW8u Z2FvQGludGVsLmNvbT4gd3JvdGU6DQo+ID4NCj4gPiBCWjogaHR0cHM6Ly9idWd6aWxsYS50aWFu b2NvcmUub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDYyDQo+ID4NCj4gPiBUaGUgSUEzMiBBUkNIIG5l ZWQgY2FjaGUgZmx1c2ggZnVuY3Rpb24gZHVyaW5nIGNhcHN1bGUgdXBkYXRlLg0KPiA+IEJvdGgg YXJtIEFSQ0ggYW5kIElBMzIgZG8gbm90IG5lZWQgZmx1c2ggY2FjaGUgZnVuY3Rpb24sIHNvIG1l cmdlIHRoZQ0KPiA+IENhcHN1bGVDYWNoZVdyaXRlQmFjaygpIHRvIG9uZSBmaWxlLiBBbmQgYWRk IGEgbnVsbCB2ZXJzaW9uIGZvciBFQkMuDQo+ID4NCj4gDQo+IFdoYXQgaXMgdGhlIHBvaW50IG9m IGJlaW5nIGFibGUgdG8gYnVpbGQgYSBEWEVfUlVOVElNRV9EUklWRVIgbW9kdWxlIGZvcg0KPiBF QkM/DQo+IA0KPiA+IENvbnRyaWJ1dGVkLXVuZGVyOiBUaWFub0NvcmUgQ29udHJpYnV0aW9uIEFn cmVlbWVudCAxLjENCj4gPiBTaWduZWQtb2ZmLWJ5OiBaaGljaGFvIEdhbyA8emhpY2hhby5nYW9A aW50ZWwuY29tPg0KPiA+IENjOiBKaWFuIEogV2FuZyA8amlhbi5qLndhbmdAaW50ZWwuY29tPg0K PiA+IENjOiBIYW8gV3UgPGhhby5hLnd1QGludGVsLmNvbT4NCj4gPiBDYzogUmF5IE5pIDxyYXku bmlAaW50ZWwuY29tPg0KPiA+IENjOiBTdGFyIFplbmcgPHN0YXIuemVuZ0BpbnRlbC5jb20+DQo+ ID4gQ2M6IExpbWluZyBHYW8gPGxpbWluZy5nYW9AaW50ZWwuY29tPg0KPiA+IENjOiBBcmQgQmll c2hldXZlbCA8YXJkLmJpZXNoZXV2ZWxAbGluYXJvLm9yZz4NCj4gPiAtLS0NCj4gPiAgLi4uL1Vu aXZlcnNhbC9DYXBzdWxlUnVudGltZUR4ZS9Bcm0vQ2Fwc3VsZVJlc2V0LmMgfCAzNSArLS0tLS0t LS0tLS0NCj4gPiAgLi4uL1VuaXZlcnNhbC9DYXBzdWxlUnVudGltZUR4ZS9DYXBzdWxlQ2FjaGUu YyAgICAgfCA2Mw0KPiArKysrKysrKysrKysrKysrKysrKysrDQo+ID4gIC4uLi9Vbml2ZXJzYWwv Q2Fwc3VsZVJ1bnRpbWVEeGUvQ2Fwc3VsZUNhY2hlTnVsbC5jIHwgMzgNCj4gKysrKysrKysrKysr Kw0KPiA+ICAuLi4vVW5pdmVyc2FsL0NhcHN1bGVSdW50aW1lRHhlL0NhcHN1bGVSZXNldC5jICAg ICB8IDE2ICstLS0tLQ0KPiA+ICAuLi4vQ2Fwc3VsZVJ1bnRpbWVEeGUvQ2Fwc3VsZVJ1bnRpbWVE eGUuaW5mICAgICAgICB8IDIwICsrKystLS0NCj4gPiAgNSBmaWxlcyBjaGFuZ2VkLCAxMTUgaW5z ZXJ0aW9ucygrKSwgNTcgZGVsZXRpb25zKC0pDQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NA0KPiBN ZGVNb2R1bGVQa2cvVW5pdmVyc2FsL0NhcHN1bGVSdW50aW1lRHhlL0NhcHN1bGVDYWNoZS5jDQo+ ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NA0KPiBNZGVNb2R1bGVQa2cvVW5pdmVyc2FsL0NhcHN1bGVS dW50aW1lRHhlL0NhcHN1bGVDYWNoZU51bGwuYw0KPiA+DQo+ID4gZGlmZiAtLWdpdA0KPiBhL01k ZU1vZHVsZVBrZy9Vbml2ZXJzYWwvQ2Fwc3VsZVJ1bnRpbWVEeGUvQXJtL0NhcHN1bGVSZXNldC5j DQo+IGIvTWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9DYXBzdWxlUnVudGltZUR4ZS9Bcm0vQ2Fwc3Vs ZVJlc2V0LmMNCj4gPiBpbmRleCBkNzlkMmZjNjkzLi5lYzYzMGFiN2E4IDEwMDY0NA0KPiA+IC0t LSBhL01kZU1vZHVsZVBrZy9Vbml2ZXJzYWwvQ2Fwc3VsZVJ1bnRpbWVEeGUvQXJtL0NhcHN1bGVS ZXNldC5jDQo+ID4gKysrDQo+IGIvTWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9DYXBzdWxlUnVudGlt ZUR4ZS9Bcm0vQ2Fwc3VsZVJlc2V0LmMNCj4gPiBAQCAtMyw2ICszLDcgQEANCj4gPiAgICBQZXJz aXN0QWNyb3NzUmVzZXQgY2Fwc3VsZXMNCj4gPg0KPiA+ICAgIENvcHlyaWdodCAoYykgMjAxOCwg TGluYXJvLCBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ICsgIENvcHlyaWdodCAo YykgMjAxOSwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ DQo+ID4gICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUg bGljZW5zZWQgYW5kIG1hZGUNCj4gYXZhaWxhYmxlDQo+ID4gICAgdW5kZXIgdGhlIHRlcm1zIGFu ZCBjb25kaXRpb25zIG9mIHRoZSBCU0QgTGljZW5zZSB3aGljaCBhY2NvbXBhbmllcw0KPiB0aGlz DQo+ID4gQEAgLTE2LDggKzE3LDYgQEANCj4gPg0KPiA+ICAjaW5jbHVkZSAiQ2Fwc3VsZVNlcnZp Y2UuaCINCj4gPg0KPiA+IC0jaW5jbHVkZSA8TGlicmFyeS9DYWNoZU1haW50ZW5hbmNlTGliLmg+ DQo+ID4gLQ0KPiA+ICAvKioNCj4gPiAgICBXaGV0aGVyIHRoZSBwbGF0Zm9ybSBzdXBwb3J0cyBj YXBzdWxlcyB0aGF0IHBlcnNpc3QgYWNyb3NzIHJlc2V0LiBOb3RlDQo+IHRoYXQNCj4gPiAgICBz b21lIHBsYXRmb3JtcyBvbmx5IHN1cHBvcnQgc3VjaCBjYXBzdWxlcyBhdCBib290IHRpbWUuDQo+ ID4gQEAgLTQxLDM1ICs0MCwzIEBAIElzUGVyc2lzdEFjcm9zc1Jlc2V0Q2Fwc3VsZVN1cHBvcnRl ZCAoDQo+ID4gICAgcmV0dXJuIEZlYXR1cmVQY2RHZXQgKFBjZFN1cHBvcnRVcGRhdGVDYXBzdWxl UmVzZXQpDQo+ICYmICFFZmlBdFJ1bnRpbWUgKCk7DQo+ID4gIH0NCj4gPg0KPiA+IC0vKioNCj4g PiAtICBXcml0ZXMgQmFjayBhIHJhbmdlIG9mIGRhdGEgY2FjaGUgbGluZXMgY292ZXJpbmcgYSBz ZXQgb2YgY2Fwc3VsZXMgaW4NCj4gbWVtb3J5Lg0KPiA+IC0NCj4gPiAtICBXcml0ZXMgQmFjayB0 aGUgZGF0YSBjYWNoZSBsaW5lcyBzcGVjaWZpZWQgYnkgU2NhdHRlckdhdGhlckxpc3QuDQo+ID4g LQ0KPiA+IC0gIEBwYXJhbSAgU2NhdHRlckdhdGhlckxpc3QgUGh5c2ljYWwgYWRkcmVzcyBvZiB0 aGUgZGF0YSBzdHJ1Y3R1cmUgdGhhdA0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ZGVzY3JpYmVzIGEgc2V0IG9mIGNhcHN1bGVzIGluIG1lbW9yeQ0KPiA+IC0NCj4gPiAtKiovDQo+ ID4gLVZPSUQNCj4gPiAtQ2Fwc3VsZUNhY2hlV3JpdGVCYWNrICgNCj4gPiAtICBJTiAgRUZJX1BI WVNJQ0FMX0FERFJFU1MgICAgU2NhdHRlckdhdGhlckxpc3QNCj4gPiAtICApDQo+ID4gLXsNCj4g PiAtICBFRklfQ0FQU1VMRV9CTE9DS19ERVNDUklQVE9SICAgICpEZXNjOw0KPiA+IC0NCj4gPiAt ICBEZXNjID0gKEVGSV9DQVBTVUxFX0JMT0NLX0RFU0NSSVBUT1IgKikoVUlOVE4pU2NhdHRlckdh dGhlckxpc3Q7DQo+ID4gLSAgZG8gew0KPiA+IC0gICAgV3JpdGVCYWNrRGF0YUNhY2hlUmFuZ2Ug KERlc2MsIHNpemVvZiAqRGVzYyk7DQo+ID4gLQ0KPiA+IC0gICAgaWYgKERlc2MtPkxlbmd0aCA+ IDApIHsNCj4gPiAtICAgICAgV3JpdGVCYWNrRGF0YUNhY2hlUmFuZ2UgKChWT0lEICopKFVJTlRO KURlc2MtPlVuaW9uLkRhdGFCbG9jaywNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIERlc2MtPkxlbmd0aA0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsN Cj4gPiAtICAgICAgRGVzYysrOw0KPiA+IC0gICAgfSBlbHNlIGlmIChEZXNjLT5Vbmlvbi5Db250 aW51YXRpb25Qb2ludGVyID4gMCkgew0KPiA+IC0gICAgICBEZXNjID0gKEVGSV9DQVBTVUxFX0JM T0NLX0RFU0NSSVBUT1IgKikoVUlOVE4pRGVzYy0NCj4gPlVuaW9uLkNvbnRpbnVhdGlvblBvaW50 ZXI7DQo+ID4gLSAgICB9DQo+ID4gLSAgfSB3aGlsZSAoRGVzYy0+TGVuZ3RoID4gMCB8fCBEZXNj LT5Vbmlvbi5Db250aW51YXRpb25Qb2ludGVyID4gMCk7DQo+ID4gLQ0KPiA+IC0gIFdyaXRlQmFj a0RhdGFDYWNoZVJhbmdlIChEZXNjLCBzaXplb2YgKkRlc2MpOw0KPiA+IC19DQo+ID4gZGlmZiAt LWdpdCBhL01kZU1vZHVsZVBrZy9Vbml2ZXJzYWwvQ2Fwc3VsZVJ1bnRpbWVEeGUvQ2Fwc3VsZUNh Y2hlLmMNCj4gYi9NZGVNb2R1bGVQa2cvVW5pdmVyc2FsL0NhcHN1bGVSdW50aW1lRHhlL0NhcHN1 bGVDYWNoZS5jDQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRleCAwMDAwMDAwMDAw Li5hYjgxMjk2YTY1DQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL01kZU1vZHVsZVBrZy9V bml2ZXJzYWwvQ2Fwc3VsZVJ1bnRpbWVEeGUvQ2Fwc3VsZUNhY2hlLmMNCj4gPiBAQCAtMCwwICsx LDYzIEBADQo+ID4gKy8qKiBAZmlsZQ0KPiA+ICsgIEZsdXNoIHRoZSBjYWNoZSBpcyByZXF1aXJl ZCBmb3IgbW9zdCBhcmNoaXRlY3R1cmVzIHdoaWxlIGRvIGNhcHN1bGUNCj4gPiArICB1cGRhdGUu IEl0IGlzIG5vdCBzdXBwb3J0IGF0IFJ1bnRpbWUuDQo+ID4gKw0KPiA+ICsgIENvcHlyaWdodCAo YykgMjAxOCwgTGluYXJvLCBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ICsgIENv cHlyaWdodCAoYykgMjAxOSwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQu PEJSPg0KPiA+ICsNCj4gPiArICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0 ZXJpYWxzIGFyZSBsaWNlbnNlZCBhbmQgbWFkZQ0KPiBhdmFpbGFibGUNCj4gPiArICB1bmRlciB0 aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJTRCBMaWNlbnNlIHdoaWNoIGFjY29tcGFu aWVzDQo+IHRoaXMNCj4gPiArICBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBs aWNlbnNlIG1heSBiZSBmb3VuZCBhdA0KPiA+ICsgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNl bnNlcy9ic2QtbGljZW5zZS5waHANCj4gPiArDQo+ID4gKyAgVEhFIFBST0dSQU0gSVMgRElTVFJJ QlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyINCj4gQkFTSVMsDQo+ID4g KyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlU SEVSDQo+IEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICsNCj4gPiAr I2luY2x1ZGUgIkNhcHN1bGVTZXJ2aWNlLmgiDQo+ID4gKw0KPiA+ICsjaW5jbHVkZSA8TGlicmFy eS9DYWNoZU1haW50ZW5hbmNlTGliLmg+DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBXcml0ZXMg QmFjayBhIHJhbmdlIG9mIGRhdGEgY2FjaGUgbGluZXMgY292ZXJpbmcgYSBzZXQgb2YgY2Fwc3Vs ZXMgaW4NCj4gbWVtb3J5Lg0KPiA+ICsNCj4gPiArICBXcml0ZXMgQmFjayB0aGUgZGF0YSBjYWNo ZSBsaW5lcyBzcGVjaWZpZWQgYnkgU2NhdHRlckdhdGhlckxpc3QuDQo+ID4gKw0KPiA+ICsgIEBw YXJhbSAgU2NhdHRlckdhdGhlckxpc3QgUGh5c2ljYWwgYWRkcmVzcyBvZiB0aGUgZGF0YSBzdHJ1 Y3R1cmUgdGhhdA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpYmVzIGEg c2V0IG9mIGNhcHN1bGVzIGluIG1lbW9yeQ0KPiA+ICsNCj4gPiArKiovDQo+ID4gK1ZPSUQNCj4g PiArQ2Fwc3VsZUNhY2hlV3JpdGVCYWNrICgNCj4gPiArICBJTiAgRUZJX1BIWVNJQ0FMX0FERFJF U1MgICAgU2NhdHRlckdhdGhlckxpc3QNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBFRklfQ0FQ U1VMRV9CTE9DS19ERVNDUklQVE9SICAgICpEZXNjOw0KPiA+ICsNCj4gPiArICBpZiAoIUVmaUF0 UnVudGltZSAoKSkgew0KPiA+ICsgICAgRGVzYyA9IChFRklfQ0FQU1VMRV9CTE9DS19ERVNDUklQ VE9SICopKFVJTlROKVNjYXR0ZXJHYXRoZXJMaXN0Ow0KPiA+ICsgICAgZG8gew0KPiA+ICsgICAg ICBXcml0ZUJhY2tEYXRhQ2FjaGVSYW5nZSAoDQo+ID4gKyAgICAgICAgKFZPSUQgKikoVUlOVE4p RGVzYywNCj4gPiArICAgICAgICAoVUlOVE4pc2l6ZW9mICgqRGVzYykNCj4gPiArICAgICAgICAp Ow0KPiA+ICsNCj4gPiArICAgICAgaWYgKERlc2MtPkxlbmd0aCA+IDApIHsNCj4gPiArICAgICAg ICBXcml0ZUJhY2tEYXRhQ2FjaGVSYW5nZSAoDQo+ID4gKyAgICAgICAgICAoVk9JRCAqKShVSU5U TilEZXNjLT5Vbmlvbi5EYXRhQmxvY2ssDQo+ID4gKyAgICAgICAgICAoVUlOVE4pRGVzYy0+TGVu Z3RoDQo+ID4gKyAgICAgICAgICApOw0KPiA+ICsgICAgICAgIERlc2MrKzsNCj4gPiArICAgICAg fSBlbHNlIGlmIChEZXNjLT5Vbmlvbi5Db250aW51YXRpb25Qb2ludGVyID4gMCkgew0KPiA+ICsg ICAgICAgIERlc2MgPSAoRUZJX0NBUFNVTEVfQkxPQ0tfREVTQ1JJUFRPUiAqKShVSU5UTilEZXNj LQ0KPiA+VW5pb24uQ29udGludWF0aW9uUG9pbnRlcjsNCj4gPiArICAgICAgfQ0KPiA+ICsgICAg fSB3aGlsZSAoRGVzYy0+TGVuZ3RoID4gMCB8fCBEZXNjLT5Vbmlvbi5Db250aW51YXRpb25Qb2lu dGVyID4gMCk7DQo+ID4gKw0KPiA+ICsgICAgV3JpdGVCYWNrRGF0YUNhY2hlUmFuZ2UgKA0KPiA+ ICsgICAgICAoVk9JRCAqKShVSU5UTilEZXNjLA0KPiA+ICsgICAgICAoVUlOVE4pc2l6ZW9mICgq RGVzYykNCj4gPiArICAgICAgKTsNCj4gPiArICB9DQo+ID4gK30NCj4gPiArDQo+ID4gZGlmZiAt LWdpdA0KPiBhL01kZU1vZHVsZVBrZy9Vbml2ZXJzYWwvQ2Fwc3VsZVJ1bnRpbWVEeGUvQ2Fwc3Vs ZUNhY2hlTnVsbC5jDQo+IGIvTWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9DYXBzdWxlUnVudGltZUR4 ZS9DYXBzdWxlQ2FjaGVOdWxsLmMNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4 IDAwMDAwMDAwMDAuLmNmYjliYjFiZjENCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIvTWRl TW9kdWxlUGtnL1VuaXZlcnNhbC9DYXBzdWxlUnVudGltZUR4ZS9DYXBzdWxlQ2FjaGVOdWxsLmMN Cj4gPiBAQCAtMCwwICsxLDM4IEBADQo+ID4gKy8qKiBAZmlsZQ0KPiA+ICsgIE51bGwgZnVuY3Rp b24gdmVyc2lvbiBvZiBjYWNoZSBmdW5jdGlvbi4NCj4gPiArDQo+ID4gKyAgQ29weXJpZ2h0IChj KSAyMDE4LCBMaW5hcm8sIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ID4gKyAgQ29w eXJpZ2h0IChjKSAyMDE5LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48 QlI+DQo+ID4gKw0KPiA+ICsgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRl cmlhbHMgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlDQo+IGF2YWlsYWJsZQ0KPiA+ICsgIHVuZGVyIHRo ZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgQlNEIExpY2Vuc2Ugd2hpY2ggYWNjb21wYW5p ZXMNCj4gdGhpcw0KPiA+ICsgIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxp Y2Vuc2UgbWF5IGJlIGZvdW5kIGF0DQo+ID4gKyAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vu c2VzL2JzZC1saWNlbnNlLnBocA0KPiA+ICsNCj4gPiArICBUSEUgUFJPR1JBTSBJUyBESVNUUklC VVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIg0KPiBCQVNJUywNCj4gPiAr ICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRI RVINCj4gRVhQUkVTUyBPUiBJTVBMSUVELg0KPiA+ICsNCj4gPiArKiovDQo+ID4gKw0KPiA+ICsj aW5jbHVkZSAiQ2Fwc3VsZVNlcnZpY2UuaCINCj4gPiArDQo+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5 L0NhY2hlTWFpbnRlbmFuY2VMaWIuaD4NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFdyaXRlcyBC YWNrIGEgcmFuZ2Ugb2YgZGF0YSBjYWNoZSBsaW5lcyBjb3ZlcmluZyBhIHNldCBvZiBjYXBzdWxl cyBpbg0KPiBtZW1vcnkuDQo+ID4gKw0KPiA+ICsgIFdyaXRlcyBCYWNrIHRoZSBkYXRhIGNhY2hl IGxpbmVzIHNwZWNpZmllZCBieSBTY2F0dGVyR2F0aGVyTGlzdC4NCj4gPiArDQo+ID4gKyAgTnVs bCB2ZXJzaW9uLCBkbyBub3RoaW5nLg0KPiA+ICsNCj4gPiArICBAcGFyYW0gIFNjYXR0ZXJHYXRo ZXJMaXN0IFBoeXNpY2FsIGFkZHJlc3Mgb2YgdGhlIGRhdGEgc3RydWN0dXJlIHRoYXQNCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaWJlcyBhIHNldCBvZiBjYXBzdWxlcyBp biBtZW1vcnkNCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtWT0lEDQo+ID4gK0NhcHN1bGVDYWNoZVdy aXRlQmFjayAoDQo+ID4gKyAgSU4gIEVGSV9QSFlTSUNBTF9BRERSRVNTICAgIFNjYXR0ZXJHYXRo ZXJMaXN0DQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gK30NCj4gPiArDQo+ID4gZGlmZiAtLWdpdCBh L01kZU1vZHVsZVBrZy9Vbml2ZXJzYWwvQ2Fwc3VsZVJ1bnRpbWVEeGUvQ2Fwc3VsZVJlc2V0LmMN Cj4gYi9NZGVNb2R1bGVQa2cvVW5pdmVyc2FsL0NhcHN1bGVSdW50aW1lRHhlL0NhcHN1bGVSZXNl dC5jDQo+ID4gaW5kZXggMzUzZjZmMjA5MC4uODk5MGNmMmEzNSAxMDA2NDQNCj4gPiAtLS0gYS9N ZGVNb2R1bGVQa2cvVW5pdmVyc2FsL0NhcHN1bGVSdW50aW1lRHhlL0NhcHN1bGVSZXNldC5jDQo+ ID4gKysrIGIvTWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9DYXBzdWxlUnVudGltZUR4ZS9DYXBzdWxl UmVzZXQuYw0KPiA+IEBAIC0zLDYgKzMsNyBAQA0KPiA+ICAgIFBlcnNpc3RBY3Jvc3NSZXNldCBj YXBzdWxlcw0KPiA+DQo+ID4gICAgQ29weXJpZ2h0IChjKSAyMDE4LCBMaW5hcm8sIEx0ZC4gQWxs IHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ID4gKyAgQ29weXJpZ2h0IChjKSAyMDE5LCBJbnRlbCBD b3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ID4NCj4gPiAgICBUaGlzIHBy b2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBsaWNlbnNlZCBhbmQgbWFk ZQ0KPiBhdmFpbGFibGUNCj4gPiAgICB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2Yg dGhlIEJTRCBMaWNlbnNlIHdoaWNoIGFjY29tcGFuaWVzDQo+IHRoaXMNCj4gPiBAQCAtMzIsMTgg KzMzLDMgQEAgSXNQZXJzaXN0QWNyb3NzUmVzZXRDYXBzdWxlU3VwcG9ydGVkICgNCj4gPiAgICBy ZXR1cm4gRmVhdHVyZVBjZEdldCAoUGNkU3VwcG9ydFVwZGF0ZUNhcHN1bGVSZXNldCk7DQo+ID4g IH0NCj4gPg0KPiA+IC0vKioNCj4gPiAtICBXcml0ZXMgQmFjayBhIHJhbmdlIG9mIGRhdGEgY2Fj aGUgbGluZXMgY292ZXJpbmcgYSBzZXQgb2YgY2Fwc3VsZXMgaW4NCj4gbWVtb3J5Lg0KPiA+IC0N Cj4gPiAtICBXcml0ZXMgQmFjayB0aGUgZGF0YSBjYWNoZSBsaW5lcyBzcGVjaWZpZWQgYnkgU2Nh dHRlckdhdGhlckxpc3QuDQo+ID4gLQ0KPiA+IC0gIEBwYXJhbSAgU2NhdHRlckdhdGhlckxpc3Qg UGh5c2ljYWwgYWRkcmVzcyBvZiB0aGUgZGF0YSBzdHJ1Y3R1cmUgdGhhdA0KPiA+IC0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgZGVzY3JpYmVzIGEgc2V0IG9mIGNhcHN1bGVzIGluIG1lbW9y eQ0KPiA+IC0NCj4gPiAtKiovDQo+ID4gLVZPSUQNCj4gPiAtQ2Fwc3VsZUNhY2hlV3JpdGVCYWNr ICgNCj4gPiAtICBJTiAgRUZJX1BIWVNJQ0FMX0FERFJFU1MgICAgU2NhdHRlckdhdGhlckxpc3QN Cj4gPiAtICApDQo+ID4gLXsNCj4gPiAtfQ0KPiA+IGRpZmYgLS1naXQNCj4gYS9NZGVNb2R1bGVQ a2cvVW5pdmVyc2FsL0NhcHN1bGVSdW50aW1lRHhlL0NhcHN1bGVSdW50aW1lRHhlLmluZg0KPiBi L01kZU1vZHVsZVBrZy9Vbml2ZXJzYWwvQ2Fwc3VsZVJ1bnRpbWVEeGUvQ2Fwc3VsZVJ1bnRpbWVE eGUuaW5mDQo+ID4gaW5kZXggYWQ3YWY1ZmU2Mi4uYTBjYjMyYTA2ZiAxMDA2NDQNCj4gPiAtLS0N Cj4gYS9NZGVNb2R1bGVQa2cvVW5pdmVyc2FsL0NhcHN1bGVSdW50aW1lRHhlL0NhcHN1bGVSdW50 aW1lRHhlLmluZg0KPiA+ICsrKw0KPiBiL01kZU1vZHVsZVBrZy9Vbml2ZXJzYWwvQ2Fwc3VsZVJ1 bnRpbWVEeGUvQ2Fwc3VsZVJ1bnRpbWVEeGUuaW5mDQo+ID4gQEAgLTQsNyArNCw3IEBADQo+ID4g ICMgIEl0IGluc3RhbGxzIHRoZSBDYXBzdWxlIEFyY2hpdGVjdHVyYWwgUHJvdG9jb2wgZGVmaW5l ZCBpbiBQSTEuMGEgdG8gc2lnbmlmeQ0KPiA+ICAjICB0aGUgY2Fwc3VsZSBydW50aW1lIHNlcnZp Y2VzIGFyZSByZWFkeS4NCj4gPiAgIw0KPiA+IC0jICBDb3B5cmlnaHQgKGMpIDIwMDYgLSAyMDE4 LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ID4gKyMgIENv cHlyaWdodCAoYykgMjAwNiAtIDIwMTksIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJl c2VydmVkLjxCUj4NCj4gPiAgIyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1h dGVyaWFscw0KPiA+ICAjICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRo ZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUNCj4gQlNEIExpY2Vuc2UNCj4gPiAgIyAgd2hp Y2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBs aWNlbnNlIG1heSBiZQ0KPiBmb3VuZCBhdA0KPiA+IEBAIC0zNiwxNiArMzYsMjIgQEANCj4gPg0K PiA+ICBbU291cmNlcy5JYTMyLCBTb3VyY2VzLkVCQywgU291cmNlcy5BUk0sIFNvdXJjZXMuQUFS Q0g2NF0NCj4gPiAgICBTYXZlTG9uZ01vZGVDb250ZXh0LmMNCj4gPiAtICBDYXBzdWxlUmVzZXQu Yw0KPiA+DQo+ID4gLVtTb3VyY2VzLlg2NF0NCj4gPiAtICBYNjQvU2F2ZUxvbmdNb2RlQ29udGV4 dC5jDQo+ID4gK1tTb3VyY2VzLklhMzIsIFNvdXJjZXMuWDY0LCBTb3VyY2VzLkFSTSwgU291cmNl cy5BQVJDSDY0XQ0KPiA+ICsgIENhcHN1bGVDYWNoZS5jDQo+ID4gKw0KPiA+ICtbU291cmNlcy5J YTMyLCBTb3VyY2VzLlg2NCwgU291cmNlcy5FQkNdDQo+ID4gICAgQ2Fwc3VsZVJlc2V0LmMNCj4g Pg0KPiA+ICBbU291cmNlcy5BUk0sIFNvdXJjZXMuQUFSQ0g2NF0NCj4gPiAtICBTYXZlTG9uZ01v ZGVDb250ZXh0LmMNCj4gPiAgICBBcm0vQ2Fwc3VsZVJlc2V0LmMNCj4gPg0KPiA+ICtbU291cmNl cy5FQkNdDQo+ID4gKyAgQ2Fwc3VsZUNhY2hlTnVsbC5jDQo+ID4gKw0KPiA+ICtbU291cmNlcy5Y NjRdDQo+ID4gKyAgWDY0L1NhdmVMb25nTW9kZUNvbnRleHQuYw0KPiA+ICsNCj4gPiAgW1BhY2th Z2VzXQ0KPiA+ICAgIE1kZVBrZy9NZGVQa2cuZGVjDQo+ID4gICAgTWRlTW9kdWxlUGtnL01kZU1v ZHVsZVBrZy5kZWMNCj4gPiBAQCAtNjEsMTQgKzY3LDEyIEBADQo+ID4gICAgQmFzZUxpYg0KPiA+ ICAgIFByaW50TGliDQo+ID4gICAgQmFzZU1lbW9yeUxpYg0KPiA+ICsgIENhY2hlTWFpbnRlbmFu Y2VMaWINCj4gPg0KPiA+ICBbTGlicmFyeUNsYXNzZXMuWDY0XQ0KPiA+ICAgIFVlZmlMaWINCj4g PiAgICBCYXNlTWVtb3J5TGliDQo+ID4NCj4gPiAtW0xpYnJhcnlDbGFzc2VzLkFSTSwgTGlicmFy eUNsYXNzZXMuQUFSQ0g2NF0NCj4gPiAtICBDYWNoZU1haW50ZW5hbmNlTGliDQo+ID4gLQ0KPiA+ ICBbR3VpZHNdDQo+ID4gICAgIyMgU09NRVRJTUVTX1BST0RVQ0VTICAgIyMgVmFyaWFibGU6TCJD YXBzdWxlVXBkYXRlRGF0YSIgIw0KPiAoUHJvY2VzcyBhY3Jvc3MgcmVzZXQgY2Fwc3VsZSBpbWFn ZSkgZm9yIGNhcHN1bGUgdXBkYXRlZCBkYXRhDQo+ID4gICAgIyMgU09NRVRJTUVTX1BST0RVQ0VT ICAgIyMgVmFyaWFibGU6TCJDYXBzdWxlTG9uZ01vZGVCdWZmZXIiICMNCj4gVGhlIGxvbmcgbW9k ZSBidWZmZXIgdXNlZCBieSBJQTMyIENhcHN1bGUgUEVJTSB0byBjYWxsIFg2NCBDYXBzdWxlQ29h bGVzY2UNCj4gY29kZSB0byBoYW5kbGUgPjRHQiBjYXBzdWxlIGJsb2Nrcw0KPiA+IC0tDQo+ID4g Mi4xNi4yLndpbmRvd3MuMQ0KPiA+DQo=