From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: mx.groups.io; dkim=pass header.i=@amdcloud.onmicrosoft.com header.s=selector2-amdcloud-onmicrosoft-com header.b=Z6tKF7KI; spf=none, err=SPF record not found (domain: amd.com, ip: 40.107.75.53, mailfrom: thomas.lendacky@amd.com) Received: from NAM02-BL2-obe.outbound.protection.outlook.com (NAM02-BL2-obe.outbound.protection.outlook.com [40.107.75.53]) by groups.io with SMTP; Wed, 25 Sep 2019 10:52:41 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=fXzbjgzZJI+JsQXFn7g7/SEBC8Gf29ZZ41UmQiggmlavHeBNo+OH09V1DpxAXrpvicyDYvY2Mlm3HHcZmS1zQqkjwGIHyVYvUxPQJ+e2uOJAGcpJQGdWSg5n9gI43+zGXpRvO8DJniGSgGh8nAk8ZYX3rXOhR6PNP1twS8wMA2g1waXf/H5ya4Knjc97BuJ9LoISEOFd+/nwDKAET0PrpXXWRWLz49CknqlM/dI/SndywIj22YFwCPxvxV2jf1nOYLUoyKv7mw2zEJpxN/7jUu6wGL2q+a3oTAwOuWXB6CYWKYJBkmtv7ATXE1bu4Z1cVJhEJOFRTBBKJC72MmxjWg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=CcGS+63cRhdFsdBLhakJsi6TsTmluTXv6MRomcGLzAU=; b=X77b4usHCCM4W1lBTaaBkR0hVIRx+GRub9OFbS5MqSCPTeMN81qyopCRQBCF2MI2YxY5V739jpqFpP+SRDVnbzKupO4kbPE6wjdlxe3gtf6+wEoqiP5tziPQe3PumuuGjH+wtvcrxZ2zt0srv+Wy/CkUsWtYmFUSgL1ATCVc0zs6Zk7ufI8zDXF9iA8KrrhqA9XmBLMuH26oT+1a6fJkpY4oUsEWIDVviv73CswCt2s3R6pUfdZneyj/IT3c2MuA4n4yQPFbPam+8uPReSEFwnM4sWrtY0rUyX7y2cu3DvTmxlWIVUURKlwiGutXo0XaZfPsUgrxibSKQufRgCECBw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector2-amdcloud-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=CcGS+63cRhdFsdBLhakJsi6TsTmluTXv6MRomcGLzAU=; b=Z6tKF7KIug+OE6WTzV2GXU/8zhcAzmAkpNl1EjrfgbMzLkXVuRvM88wdSSw5y7AvcRe8FVqHMuft225yDvmptjNbICN5UqWws4ky9mF4C/Xdxhpz4zrv0nVoeWhheJQ07p6U5tRX16IPhbS+QnAwB+cCqugY6bJM1TNXWbUiKno= Received: from DM6PR12MB3163.namprd12.prod.outlook.com (20.179.104.150) by DM6PR12MB2665.namprd12.prod.outlook.com (20.176.116.26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2284.23; Wed, 25 Sep 2019 17:52:38 +0000 Received: from DM6PR12MB3163.namprd12.prod.outlook.com ([fe80::400e:f0c3:7ca:2fcc]) by DM6PR12MB3163.namprd12.prod.outlook.com ([fe80::400e:f0c3:7ca:2fcc%6]) with mapi id 15.20.2284.023; Wed, 25 Sep 2019 17:52:38 +0000 From: "Lendacky, Thomas" To: Laszlo Ersek , "devel@edk2.groups.io" CC: Jordan Justen , Ard Biesheuvel , Michael D Kinney , Liming Gao , Eric Dong , Ray Ni , "Singh, Brijesh" , Anthony Perard , Julien Grall Subject: Re: [edk2-devel] [RFC PATCH v2 07/44] OvmfPkg/PlatformPei: Reserve GHCB-related areas if S3 is supported Thread-Topic: [edk2-devel] [RFC PATCH v2 07/44] OvmfPkg/PlatformPei: Reserve GHCB-related areas if S3 is supported Thread-Index: AQHVbyPGa4HeapA1b0u8+VTJxQpZ4ac8F8QAgACd+wA= Date: Wed, 25 Sep 2019 17:52:38 +0000 Message-ID: <39c75e3e-fa21-9eb2-480a-a7febc9f2255@amd.com> References: <5aedd92ee8bcf72a70a0feaeb8f1a2a178cd9cb0.1568922728.git.thomas.lendacky@amd.com> <1b2c4e93-df0d-9bb7-75d1-abc76f05460c@redhat.com> In-Reply-To: <1b2c4e93-df0d-9bb7-75d1-abc76f05460c@redhat.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: SN6PR02CA0018.namprd02.prod.outlook.com (2603:10b6:805:a2::31) To DM6PR12MB3163.namprd12.prod.outlook.com (2603:10b6:5:182::22) authentication-results: spf=none (sender IP is ) smtp.mailfrom=Thomas.Lendacky@amd.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [165.204.78.1] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 2c13d9eb-9988-417d-6602-08d741e12784 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(5600167)(711020)(4605104)(1401327)(4618075)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7193020);SRVR:DM6PR12MB2665; x-ms-traffictypediagnostic: DM6PR12MB2665: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:4303; x-forefront-prvs: 01713B2841 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(4636009)(366004)(136003)(376002)(346002)(39860400002)(396003)(199004)(189003)(256004)(14444005)(229853002)(478600001)(305945005)(476003)(7736002)(386003)(64756008)(53546011)(66946007)(66556008)(66476007)(6486002)(86362001)(7416002)(2906002)(76176011)(2616005)(11346002)(52116002)(6436002)(5660300002)(8936002)(26005)(446003)(110136005)(54906003)(81156014)(486006)(8676002)(81166006)(66446008)(6506007)(6246003)(31696002)(66066001)(71200400001)(71190400001)(99286004)(3846002)(2501003)(4326008)(6116002)(186003)(36756003)(14454004)(19627235002)(6512007)(31686004)(25786009)(102836004)(316002);DIR:OUT;SFP:1101;SCL:1;SRVR:DM6PR12MB2665;H:DM6PR12MB3163.namprd12.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; received-spf: None (protection.outlook.com: amd.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: R+IjJpnYVIpVBRWTnmSKt8pZ8ahNRJ1vCY29qqEClc+y/wVV/G2wFX55lav7r5qxHTAJhQF4xvB5jsQmlDch11kPLwZZY8TFOKmmdN383hg0gvnjm8Osl6kFn3FoazThaLKO9sokOIIK6momRgX5ud/uYyBYReOKnllQHpPPz5GGgFn3VDaK0PrzeXRwYf8kxTD7ECZM2ELoapIKcD1Kcy9qPZwUCa0O2Xe7QOB5wuGv+W1Kgx2sDJcDQnO998dCKZNHbzYOzf+b22NnXO/NXoJpQilhbe9rvqwJjz1w17Nn1aWq4KE/uKggrMiyfUwmT95M/uyrm58N4NoREihOHx4uYAZpqj10KM2Pc2YMC3ty418ocfuGiyqGWeMcYq/pQeP6GrNdHFAjGFSnQB0VVOAf34zVR8oIq0FCXKmGv8A= MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2c13d9eb-9988-417d-6602-08d741e12784 X-MS-Exchange-CrossTenant-originalarrivaltime: 25 Sep 2019 17:52:38.4099 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: PKinKGZF2klI9cVKyKe9be3wd8+qmp6pVmMDhftJllIhYV3VPEOgr0oQcsR3S9dphnZWjcCI2zRgzP/BzaNxlQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB2665 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-ID: <6F0559DA890E3A41B546B5945F36EC93@namprd12.prod.outlook.com> Content-Transfer-Encoding: base64 T24gOS8yNS8xOSAzOjI3IEFNLCBMYXN6bG8gRXJzZWsgd3JvdGU6DQo+IE9uIDA5LzE5LzE5IDIx OjUyLCBMZW5kYWNreSwgVGhvbWFzIHdyb3RlOg0KPj4gRnJvbTogVG9tIExlbmRhY2t5IDx0aG9t YXMubGVuZGFja3lAYW1kLmNvbT4NCj4+DQo+PiBQcm90ZWN0IHRoZSBtZW1vcnkgdXNlZCBieSBh biBTRVYtRVMgZ3Vlc3Qgd2hlbiBTMyBpcyBzdXBwb3J0ZWQuIFRoaXMNCj4+IGluY2x1ZGVzIHRo ZSBwYWdlIHRhYmxlIHVzZWQgdG8gYnJlYWsgZG93biB0aGUgMk1CIHBhZ2UgdGhhdCBjb250YWlu cw0KPj4gdGhlIEdIQ0Igc28gdGhhdCBpdCBjYW4gYmUgbWFya2VkIHVuLWVuY3J5cHRlZCwgYXMg d2VsbCBhcyB0aGUgR0hDQg0KPj4gYXJlYS4NCj4+DQo+PiBSZWdhcmRpbmcgdGhlIGxpZmVjeWNs ZSBvZiB0aGUgR0hDQi1yZWxhdGVkIG1lbW9yeSBhcmVhczoNCj4+ICAgUGNkT3ZtZlNlY0doY2JQ YWdlVGFibGVCYXNlDQo+PiAgIFBjZE92bWZTZWNHaGNiQmFzZQ0KPj4NCj4+IChhKSB3aGVuIGFu ZCBob3cgaXQgaXMgaW5pdGlhbGl6ZWQgYWZ0ZXIgZmlyc3QgYm9vdCBvZiB0aGUgVk0NCj4+DQo+ PiAgIElmIFNFVi1FUyBpcyBlbmFibGVkLCB0aGUgR0hDQi1yZWxhdGVkIGFyZWFzIGFyZSBpbml0 aWFsaXplZCBkdXJpbmcNCj4+ICAgdGhlIFNFQyBwaGFzZSBbT3ZtZlBrZy9SZXNldFZlY3Rvci9J YTMyL1BhZ2VUYWJsZXM2NC5hc21dLg0KPj4NCj4+IChiKSBob3cgaXQgaXMgcHJvdGVjdGVkIGZy b20gbWVtb3J5IGFsbG9jYXRpb25zIGR1cmluZyBEWEUNCj4+DQo+PiAgIElmIFMzIGFuZCBTRVYt RVMgYXJlIGVuYWJsZWQsIHRoZW4gSW5pdGlhbGl6ZVJhbVJlZ2lvbnMoKQ0KPj4gICBbT3ZtZlBr Zy9QbGF0Zm9ybVBlaS9NZW1EZXRlY3QuY10gcHJvdGVjdHMgdGhlIHJhbmdlIHdpdGggYW4gQWNw aU5WUw0KPj4gICBtZW1vcnkgYWxsb2NhdGlvbiBIT0IsIGluIFBFSS4NCj4gDQo+ICgxKSBQbGVh c2Uga2VlcCAoYW5kIHVwZGF0ZSwgYXMgbmVlZGVkKSB0aGUgcGFyYWdyYXBoIGFib3V0IHRoZSAi UzMNCj4gZGlzYWJsZWQiIGNhc2UuIFRoZSBtYXRjaGluZyBwYXJ0IG9mIHRoZSB3aGl0ZXBhcGVy IHNheXMsIGluICgxYiksDQo+IA0KPiAiIiINCj4gSWYgUzMgd2FzIGRpc2FibGVkLCB0aGVuIHRo aXMgcmFuZ2UgaXMgbm90IHByb3RlY3RlZC4gRFhFJ3Mgb3duIHBhZ2UNCj4gdGFibGVzIGFyZSBm aXJzdCBidWlsdCB3aGlsZSBzdGlsbCBpbiBQRUkgKHNlZSBIYW5kT2ZmVG9EeGVDb3JlKCkNCj4g W01kZU1vZHVsZVBrZy9Db3JlL0R4ZUlwbFBlaW0vWDY0L0R4ZUxvYWRGdW5jLmNdKS4gVGhvc2Ug dGFibGVzIGFyZQ0KPiBsb2NhdGVkIGluIHBlcm1hbmVudCBQRUkgbWVtb3J5LiBBZnRlciBDUjMg aXMgc3dpdGNoZWQgb3ZlciB0byB0aGVtDQo+ICh3aGljaCBvY2N1cnMgYmVmb3JlIGp1bXBpbmcg dG8gdGhlIERYRSBjb3JlIGVudHJ5IHBvaW50KSwgd2UgZG9uJ3QgaGF2ZQ0KPiB0byBwcmVzZXJ2 ZSB0aGUgaW5pdGlhbCB0YWJsZXMuDQo+ICIiIg0KPiANCj4gSSBndWVzcyB3ZSBkb24ndCBoYXZl IHRvIGJlIGFzIHZlcmJvc2UgYXMgdGhpcy4gQnV0LCBpbiBjYXNlIHdlJ3JlIGdvaW5nDQo+IHRv IGJ1aWxkIGEgbmV3IEdIQ0IgZm9yIHRoZSBEWEUgcGhhc2UsIGFuZCB0aGVyZWZvcmUgd2UgY2Fu IHNpbXBseQ0KPiBmb3JnZXQgYWJvdXQgdGhlIGVhcmx5IEdIQ0Igc3RydWN0dXJlcyAod2l0aCBT MyBkaXNhYmxlZCksIHdlIHNob3VsZA0KPiBtZW50aW9uIHRoYXQgYnJpZWZseS4NCj4gDQoNCk9r LCB3aWxsIGRvLiAgTm90IHN1cmUgaG93IEkgbWlzc2VkIGluY2x1ZGluZyB0aGUgc2Vjb25kIHBh cmFncmFwaCB1bmRlcg0KImIiLg0KDQo+Pg0KPj4gKGMpIGhvdyBpdCBpcyBwcm90ZWN0ZWQgZnJv bSB0aGUgT1MNCj4+DQo+PiAgIElmIFMzIGlzIGVuYWJsZWQsIHRoZW4gKDFiKSByZXNlcnZlcyBp dCBmcm9tIHRoZSBPUyB0b28uDQo+IA0KPiAoMikgcy8xYi9iLw0KDQpZdXAsIEknbGwgZml4IGl0 IGhlcmUgYW5kIGluIHRoZSBvdGhlciBsb2NhdGlvbnMgaWRlbnRpZmllZC4NCg0KVGhhbmtzLA0K VG9tDQoNCj4gDQo+Pg0KPj4gICBJZiBTMyBpcyBkaXNhYmxlZCwgdGhlbiB0aGUgcmFuZ2UgbmVl ZHMgbm8gcHJvdGVjdGlvbi4NCj4gDQo+IFJpZ2h0LCBzbyB0aGlzIHNlZW1zIHRvIGJlIGNvbnNp c3RlbnQgd2l0aCB3aGF0IEknbSByZXF1ZXN0aW5nIHVuZGVyICgxKS4NCj4gDQo+Pg0KPj4gKGQp IGhvdyBpdCBpcyBhY2Nlc3NlZCBvbiB0aGUgUzMgcmVzdW1lIHBhdGgNCj4+DQo+PiAgIEl0IGlz IHJld3JpdHRlbiBzYW1lIGFzIGluICgxYSksIHdoaWNoIGlzIGZpbmUgYmVjYXVzZSAoMWIpIHJl c2VydmVkIGl0Lg0KPiANCj4gKDMpIHMvMWEvYS87IHMvMWIvYi8NCj4gDQo+IChBbHNvLCB0aGUg b3JpZ2luYWwgcmVmZXJzIHRvICgxYykgcmF0aGVyIHRoYW4gKDFiKSwgYW5kIHRoYXQncyBub3Qg YQ0KPiB0eXBvOyBidXQgdGhpcyB2YXJpYW50IGxvb2tzIGp1c3QgYXMgZmluZS4pDQo+IA0KPj4N Cj4+IChlKSBob3cgaXQgaXMgYWNjZXNzZWQgb24gdGhlIHdhcm0gcmVzZXQgcGF0aA0KPj4NCj4+ ICAgSXQgaXMgcmV3cml0dGVuIHNhbWUgYXMgaW4gKDFhKS4NCj4gDQo+ICg0KSBzLzFhL2EvDQo+ IA0KPj4NCj4+IENjOiBKb3JkYW4gSnVzdGVuIDxqb3JkYW4ubC5qdXN0ZW5AaW50ZWwuY29tPg0K Pj4gQ2M6IExhc3psbyBFcnNlayA8bGVyc2VrQHJlZGhhdC5jb20+DQo+PiBDYzogQXJkIEJpZXNo ZXV2ZWwgPGFyZC5iaWVzaGV1dmVsQGxpbmFyby5vcmc+DQo+PiBDYzogQW50aG9ueSBQZXJhcmQg PGFudGhvbnkucGVyYXJkQGNpdHJpeC5jb20+DQo+PiBDYzogSnVsaWVuIEdyYWxsIDxqdWxpZW4u Z3JhbGxAYXJtLmNvbT4NCj4+IFNpZ25lZC1vZmYtYnk6IFRvbSBMZW5kYWNreSA8dGhvbWFzLmxl bmRhY2t5QGFtZC5jb20+DQo+PiAtLS0NCj4+ICBPdm1mUGtnL1BsYXRmb3JtUGVpL1BsYXRmb3Jt UGVpLmluZiB8ICA0ICsrKysNCj4+ICBPdm1mUGtnL1BsYXRmb3JtUGVpL01lbURldGVjdC5jICAg ICB8IDIzICsrKysrKysrKysrKysrKysrKysrKysrDQo+PiAgMiBmaWxlcyBjaGFuZ2VkLCAyNyBp bnNlcnRpb25zKCspDQo+Pg0KPj4gZGlmZiAtLWdpdCBhL092bWZQa2cvUGxhdGZvcm1QZWkvUGxh dGZvcm1QZWkuaW5mIGIvT3ZtZlBrZy9QbGF0Zm9ybVBlaS9QbGF0Zm9ybVBlaS5pbmYNCj4+IGlu ZGV4IDI3MzYzNDdhMmUwMy4uYTllNDI0YTYwMTJhIDEwMDY0NA0KPj4gLS0tIGEvT3ZtZlBrZy9Q bGF0Zm9ybVBlaS9QbGF0Zm9ybVBlaS5pbmYNCj4+ICsrKyBiL092bWZQa2cvUGxhdGZvcm1QZWkv UGxhdGZvcm1QZWkuaW5mDQo+PiBAQCAtODQsNiArODQsMTAgQEAgW1BjZF0NCj4+ICAgIGdVZWZp T3ZtZlBrZ1Rva2VuU3BhY2VHdWlkLlBjZFBjaU1taW82NFNpemUNCj4+ICAgIGdVZWZpT3ZtZlBr Z1Rva2VuU3BhY2VHdWlkLlBjZE92bWZEZWNvbXByZXNzaW9uU2NyYXRjaEVuZA0KPj4gICAgZ1Vl ZmlPdm1mUGtnVG9rZW5TcGFjZUd1aWQuUGNkUTM1VHNlZ01ieXRlcw0KPj4gKyAgZ1VlZmlPdm1m UGtnVG9rZW5TcGFjZUd1aWQuUGNkT3ZtZlNlY0doY2JQYWdlVGFibGVCYXNlDQo+PiArICBnVWVm aU92bWZQa2dUb2tlblNwYWNlR3VpZC5QY2RPdm1mU2VjR2hjYlBhZ2VUYWJsZVNpemUNCj4+ICsg IGdVZWZpT3ZtZlBrZ1Rva2VuU3BhY2VHdWlkLlBjZE92bWZTZWNHaGNiQmFzZQ0KPj4gKyAgZ1Vl ZmlPdm1mUGtnVG9rZW5TcGFjZUd1aWQuUGNkT3ZtZlNlY0doY2JTaXplDQo+PiAgICBnRWZpTWRl UGtnVG9rZW5TcGFjZUd1aWQuUGNkR3VpZGVkRXh0cmFjdEhhbmRsZXJUYWJsZUFkZHJlc3MNCj4+ ICAgIGdFZmlNZGVNb2R1bGVQa2dUb2tlblNwYWNlR3VpZC5QY2RGbGFzaE52U3RvcmFnZUZ0d1Nw YXJlU2l6ZQ0KPj4gICAgZ0VmaU1kZU1vZHVsZVBrZ1Rva2VuU3BhY2VHdWlkLlBjZEZsYXNoTnZT dG9yYWdlVmFyaWFibGVTaXplDQo+IA0KPiAoNSkgQ2FuIHlvdSBwbGVhc2Uga2VlcCB0aGVzZSBh ZGRpdGlvbnMgY2xvc2UgdG8NCj4gUGNkT3ZtZlNlY1BhZ2VUYWJsZXNCYXNlIC8gUGNkT3ZtZlNl Y1BhZ2VUYWJsZXNTaXplPw0KPiANCj4+IGRpZmYgLS1naXQgYS9Pdm1mUGtnL1BsYXRmb3JtUGVp L01lbURldGVjdC5jIGIvT3ZtZlBrZy9QbGF0Zm9ybVBlaS9NZW1EZXRlY3QuYw0KPj4gaW5kZXgg ZDQ1MTk4OWYzMWM5Li5jZDJlM2FiYjdjOWIgMTAwNjQ0DQo+PiAtLS0gYS9Pdm1mUGtnL1BsYXRm b3JtUGVpL01lbURldGVjdC5jDQo+PiArKysgYi9Pdm1mUGtnL1BsYXRmb3JtUGVpL01lbURldGVj dC5jDQo+PiBAQCAtMzIsNiArMzIsNyBAQCBNb2R1bGUgTmFtZToNCj4+ICAjaW5jbHVkZSA8TGli cmFyeS9SZXNvdXJjZVB1YmxpY2F0aW9uTGliLmg+DQo+PiAgI2luY2x1ZGUgPExpYnJhcnkvTXRy ckxpYi5oPg0KPj4gICNpbmNsdWRlIDxMaWJyYXJ5L1FlbXVGd0NmZ0xpYi5oPg0KPj4gKyNpbmNs dWRlIDxMaWJyYXJ5L01lbUVuY3J5cHRTZXZMaWIuaD4NCj4+ICANCj4+ICAjaW5jbHVkZSAiUGxh dGZvcm0uaCINCj4+ICAjaW5jbHVkZSAiQ21vcy5oIg0KPj4gQEAgLTgwNSw2ICs4MDYsMjggQEAg SW5pdGlhbGl6ZVJhbVJlZ2lvbnMgKA0KPj4gICAgICAgIChVSU5UNjQpKFVJTlROKSBQY2RHZXQz MiAoUGNkT3ZtZlNlY1BhZ2VUYWJsZXNTaXplKSwNCj4+ICAgICAgICBFZmlBQ1BJTWVtb3J5TlZT DQo+PiAgICAgICAgKTsNCj4+ICsNCj4+ICsgICAgaWYgKE1lbUVuY3J5cHRTZXZFc0lzRW5hYmxl ZCAoKSkgew0KPj4gKyAgICAgIC8vDQo+PiArICAgICAgLy8gSWYgU0VWLUVTIGlzIGFjdGl2ZSwg cmVzZXJ2ZSB0aGUgR0hDQi1yZWxhdGVkIG1lbW9yeSBhcmVhLiBUaGlzDQo+PiArICAgICAgLy8g aW5jbHVkZXMgdGhlIGV4dHJhIHBhZ2UgdGFibGUgdXNlZCB0byBicmVhayBkb3duIHRoZSAyTUIg cGFnZQ0KPj4gKyAgICAgIC8vIG1hcHBpbmcgaW50byA0S0IgcGFnZSBlbnRyaWVzIHdoZXJlIHRo ZSBHSENCIHJlc2lkZXMgYW5kIHRoZQ0KPj4gKyAgICAgIC8vIEdIQ0IgYXJlYSBpdHNlbGYuDQo+ PiArICAgICAgLy8NCj4+ICsgICAgICAvLyBTaW5jZSB0aGlzIG1lbW9yeSByYW5nZSB3aWxsIGJl IHVzZWQgYnkgdGhlIFJlc2V0IFZlY3RvciBvbiBTMw0KPj4gKyAgICAgIC8vIHJlc3VtZSwgaXQg bXVzdCBiZSByZXNlcnZlZCBhcyBBQ1BJIE5WUy4NCj4+ICsgICAgICAvLw0KPj4gKyAgICAgIEJ1 aWxkTWVtb3J5QWxsb2NhdGlvbkhvYiAoDQo+PiArICAgICAgICAoRUZJX1BIWVNJQ0FMX0FERFJF U1MpKFVJTlROKSBQY2RHZXQzMiAoUGNkT3ZtZlNlY0doY2JQYWdlVGFibGVCYXNlKSwNCj4+ICsg ICAgICAgIChVSU5UNjQpKFVJTlROKSBQY2RHZXQzMiAoUGNkT3ZtZlNlY0doY2JQYWdlVGFibGVT aXplKSwNCj4+ICsgICAgICAgIEVmaUFDUElNZW1vcnlOVlMNCj4+ICsgICAgICAgICk7DQo+PiAr ICAgICAgQnVpbGRNZW1vcnlBbGxvY2F0aW9uSG9iICgNCj4+ICsgICAgICAgIChFRklfUEhZU0lD QUxfQUREUkVTUykoVUlOVE4pIFBjZEdldDMyIChQY2RPdm1mU2VjR2hjYkJhc2UpLA0KPj4gKyAg ICAgICAgKFVJTlQ2NCkoVUlOVE4pIFBjZEdldDMyIChQY2RPdm1mU2VjR2hjYlNpemUpLA0KPj4g KyAgICAgICAgRWZpQUNQSU1lbW9yeU5WUw0KPj4gKyAgICAgICAgKTsNCj4+ICsgICAgfQ0KPj4g ICNlbmRpZg0KPj4gICAgfQ0KPj4gIA0KPj4NCj4gDQo+IFdpdGggdGhlIHJlcXVlc3RlZCB1cGRh dGVzOg0KPiANCj4gUmV2aWV3ZWQtYnk6IExhc3psbyBFcnNlayA8bGVyc2VrQHJlZGhhdC5jb20+ DQo+IA0KPiBUaGFua3MhDQo+IExhc3psbw0KPiANCg==