From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR02-VE1-obe.outbound.protection.outlook.com (mail-eopbgr20064.outbound.protection.outlook.com [40.107.2.64]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id DCE7D21E3EA76 for ; Mon, 4 Sep 2017 01:34:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=o5rCeDoYP+tHObE6AHoiGGqKEZ7nS3/MICdt+GJhn7w=; b=bdUvPW36UIKHdB97Q3JvfgPmjGTJTUlORYh404sRcZByuh6GyoNM3EyhXXdFmWHKfiuXEQl9Prbj1UjWt6Wa2tWZIsNQYF+XN0zMTFb5D2TjkyGpM089Yg9ZYAjobk+C/h4T3Eyj1IkawkzvxQwUoD71isNT94XkMLs7HsYcijQ= Received: from DB5PR04MB0998.eurprd04.prod.outlook.com (10.161.199.12) by DB5PR04MB1670.eurprd04.prod.outlook.com (10.164.39.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.13.10; Mon, 4 Sep 2017 08:37:39 +0000 Received: from DB5PR04MB0998.eurprd04.prod.outlook.com ([fe80::b598:82e9:1137:1d56]) by DB5PR04MB0998.eurprd04.prod.outlook.com ([fe80::b598:82e9:1137:1d56%17]) with mapi id 15.20.0013.018; Mon, 4 Sep 2017 08:37:39 +0000 From: Meenakshi Aggarwal To: Jun Nie , Leif Lindholm CC: "edk2-devel@lists.01.org" , Haojian Zhuang , Meenakshi Aggarwal Thread-Topic: [edk2] [PATCH 2/2] SD : Updated CMD 6 implememtation. Thread-Index: AQHTIWqJ4QMoYdWOyU+fDBYrDUXGvKKeYEAAgAAr6QCAATm8sIAEk7fQ Date: Mon, 4 Sep 2017 08:37:38 +0000 Message-ID: References: <1504102859-13477-1-git-send-email-meenakshi.aggarwal@nxp.com> <1504102859-13477-2-git-send-email-meenakshi.aggarwal@nxp.com> <20170831120614.zhnmv34s4wuvsub2@bivouac.eciton.net> In-Reply-To: Accept-Language: en-GB, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=meenakshi.aggarwal@nxp.com; x-originating-ip: [192.88.169.1] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; DB5PR04MB1670; 6:vUsbHuRolNC8BjQD7S4Wcoqh3tEVCsRYWiz1ayQ0/zsuDz5UVBSeIowFFxbAXrZPjizX9gkBBfECw5/2avF3BHeH98VRd7CWC2Iwmu2idclLvWSEDF7uDvKhNkPGBiVLkHqvdvr3jgDt3fqpxlX6TbXyoqz6Lw4DSon/NXuqRnFv3Np6wA/sBlZeQvOLva3tlXqzI10SLV2T/v+C3Ezk5wrjFAsZ2IZHrj2SWqx1pTjrIROVOv+Y44hrKKnz4+cZy8CBkfcSXp4VlfZi6rqDyGPj3CjYKj0UFDHXcu50Zj3johNizKdIgMbDDbSFe1+tz8AawxEmbr1+K4ef/px60Q==; 5:QUkDlMJ53Y8OvdWYJGsqoV7AaLhthfAQH+urmfUyuguIeF/2NVy3Q/jJKUEdIT4gVWycgkktZb7AHR775y9x2xx1j4t4XyQoSlC3sjTHvhxto7ndimuyOB2+rBoObkMQFty/jxGIKOUpiwnjC2uJyQ==; 24:+K96qwrkBG+qnpNvGbygA6BhMXonPLITV7Lzjlq+OlG6mhd8n/OjDa0HMvdo+hYep+d6l4Oj7eCsKrzS6ftqBexh06oVp/KMoINKQTvnS6A=; 7:CiaoWjXJ4ZVE8t6/2D9zy25dqekOqiKEUSJIn2p15+0jgDbGQraJt1Lre1NIoDuAK/7mIOvkCoIscN/p7VygwOV68jxXj95sXAgmlWJWszYiIUOUXlXqoT1RIQRbXubRXJgmPGG3Z864GCWH3wHOPD33pHoArJdmpgSTc9m1efz3KKSHS3g2uJ1xOBT04tqNW97sNzE2ZpYQHdjW6rpdm62BBKuWhcZI45PaNgalp6A= x-ms-exchange-antispam-srfa-diagnostics: SSOS;SSOR; x-forefront-antispam-report: SFV:SKI; SCL:-1; SFV:NSPM; SFS:(10009020)(6009001)(39860400002)(377454003)(199003)(24454002)(189002)(13464003)(25786009)(97736004)(105586002)(106356001)(7110500001)(189998001)(9686003)(33656002)(6436002)(7696004)(2950100002)(6116002)(102836003)(93886005)(3846002)(4326008)(86362001)(575784001)(966005)(74316002)(5660300001)(54906002)(305945005)(10710500007)(3280700002)(7736002)(6306002)(8676002)(2906002)(81166006)(8936002)(76176999)(478600001)(14454004)(99286003)(55016002)(54356999)(50986999)(81156014)(5250100002)(229853002)(3660700001)(53546010)(53936002)(66066001)(6506006)(2420400007)(68736007)(101416001)(6246003)(15650500001)(53376002)(53366004)(2900100001)(10090945008); DIR:OUT; SFP:1101; SCL:1; SRVR:DB5PR04MB1670; H:DB5PR04MB0998.eurprd04.prod.outlook.com; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; x-ms-office365-filtering-correlation-id: b39705e3-260b-40be-ac5f-08d4f370336f x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(2017030254152)(48565401081)(300000503095)(300135400095)(2017052603199)(201703131423075)(201703031133081)(201702281549075)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:DB5PR04MB1670; x-ms-traffictypediagnostic: DB5PR04MB1670: x-exchange-antispam-report-test: UriScan:(131327999870524)(185117386973197)(162533806227266); x-microsoft-antispam-prvs: x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(2401047)(8121501046)(5005006)(10201501046)(100000703101)(100105400095)(93006095)(93001095)(3002001)(6055026)(6041248)(20161123558100)(20161123555025)(20161123564025)(20161123560025)(20161123562025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:DB5PR04MB1670; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:DB5PR04MB1670; x-forefront-prvs: 0420213CCD received-spf: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-originalarrivaltime: 04 Sep 2017 08:37:38.9363 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB5PR04MB1670 Subject: Re: [PATCH 2/2] SD : Updated CMD 6 implememtation. 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: Mon, 04 Sep 2017 08:34:55 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGkgSnVuLA0KDQoNCkkgY2hlY2tlZCBteSBob3N0IGNvbnRyb2xsZXIgZHJpdmVyIGFuZCBpIGFt IHRha2luZyBjYXJlIG9mIGl0cyBlbmRpYW5uZXNzIGluIGhvc3QgY29udHJvbGxlciBkcml2ZXIg aXRzZWxmLg0KDQoNCkkgcmVzZWFyY2hlZCBmdXJ0aGVyIG9uIHRoZSBiaXQgbnVtYmVyIEkgYW0g Y2hlY2tpbmcgZm9yIEhpZ2ggc3BlZWQgaW4gQ01ENiBkYXRhLiANCg0KSSB0cmllZCB0byBmaW5k IG91dCBpbiBTRCBzcGVjcyBpZiByZXNwb25zZSBmb3IgQ01EIDYgY29tZXMgaXQgTEUgb3IgQkUg Zm9ybWF0Lg0KDQpJIGRpZG4ndCBmaW5kIG91dCBhbnl0aGluZyBtZW50aW9uZWQgZGlyZWN0bHkg Zm9yIENNRDYgYnV0IHllcyBmb3IgQUNNRDUxIChTQ1IgY29tbWFuZCksIGl0IGZvbGxvd3MgQkUu DQoNCldlIGFyZSByZWFkaW5nIG9ubHkgOCBieXRlcyBpbiBTQ1IgcmVnaXN0ZXIgdG8gZ2V0IFNE IHZlcnNpb24sIHdoaWxlIFNEIHZlcnNpb24gY29tZXMgaW4gYml0IDU5OjU2Og0KDQoNClNEIE1l bW9yeSBDYXJkIC0gU3BlYy4gVmVyc2lvbiAgIFNEX1NQRUMgICAgIFs1OTo1Nl0NCg0KDQpJIHRo aW5rIHNpbWlsYXIgc3RhbmRzIHRydWUgZm9yIENNRDYgYXMgd2VsbC4gQml0IDUxMiBpcyBjb21p bmcgZmlyc3Qgb24gREFUQSBsaW5lLg0KDQpTbyBJIGFtIGNoZWNraW5nIGNvcnJlY3QgYml0cyBp biBwYXRjaC4NCg0KSSBoYXZlIHJlZmVyIGxpbnV4IGNvZGUgYWxzbywgdGhlcmUgYWxzbyB0aGV5 IGFyZSBjb25zaWRlcmluZyBiaXQgNTEyIGlzIGNvbWluZyBmaXJzdC4NCg0KUGxlYXNlIGNvbW1l bnQuDQoNCg0KVGhhbmtzLA0KTWVlbmFrc2hpDQoNCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2Ut LS0tLQ0KPiBGcm9tOiBlZGsyLWRldmVsIFttYWlsdG86ZWRrMi1kZXZlbC1ib3VuY2VzQGxpc3Rz LjAxLm9yZ10gT24gQmVoYWxmIE9mDQo+IE1lZW5ha3NoaSBBZ2dhcndhbA0KPiBTZW50OiBGcmlk YXksIFNlcHRlbWJlciAwMSwgMjAxNyAzOjAzIFBNDQo+IFRvOiBKdW4gTmllIDxqdW4ubmllQGxp bmFyby5vcmc+OyBMZWlmIExpbmRob2xtIDxsZWlmLmxpbmRob2xtQGxpbmFyby5vcmc+DQo+IENj OiBlZGsyLWRldmVsQGxpc3RzLjAxLm9yZzsgSGFvamlhbiBaaHVhbmcgPGhhb2ppYW4uemh1YW5n QGxpbmFyby5vcmc+DQo+IFN1YmplY3Q6IFJlOiBbZWRrMl0gW1BBVENIIDIvMl0gU0QgOiBVcGRh dGVkIENNRCA2IGltcGxlbWVtdGF0aW9uLg0KPiANCj4gW1RoaXMgc2VuZGVyIGZhaWxlZCBvdXIg ZnJhdWQgZGV0ZWN0aW9uIGNoZWNrcyBhbmQgbWF5IG5vdCBiZSB3aG8gdGhleQ0KPiBhcHBlYXIg dG8gYmUuIExlYXJuIGFib3V0IHNwb29maW5nIGF0IGh0dHA6Ly9ha2EubXMvTGVhcm5BYm91dFNw b29maW5nXQ0KPiANCj4gSGkgTGVpZiBhbmQgSnVuLA0KPiANCj4gDQo+IFRoYW5rcyBmb3IgeW91 ciByZXZpZXcuDQo+IA0KPiANCj4gTXkgY29tbWVudHMgYXJlIGlubGluZWQuDQo+IA0KPiBSZWdh cmRzLA0KPiBNZWVuYWtzaGkNCj4gDQo+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4g PiBGcm9tOiBKdW4gTmllIFttYWlsdG86anVuLm5pZUBsaW5hcm8ub3JnXQ0KPiA+IFNlbnQ6IFRo dXJzZGF5LCBBdWd1c3QgMzEsIDIwMTcgODoxMyBQTQ0KPiA+IFRvOiBMZWlmIExpbmRob2xtIDxs ZWlmLmxpbmRob2xtQGxpbmFyby5vcmc+OyBNZWVuYWtzaGkgQWdnYXJ3YWwNCj4gPiA8bWVlbmFr c2hpLmFnZ2Fyd2FsQG54cC5jb20+DQo+ID4gQ2M6IGVkazItZGV2ZWxAbGlzdHMuMDEub3JnOyBI YW9qaWFuIFpodWFuZw0KPiA+IDxoYW9qaWFuLnpodWFuZ0BsaW5hcm8ub3JnPg0KPiA+IFN1Ympl Y3Q6IFJlOiBbZWRrMl0gW1BBVENIIDIvMl0gU0QgOiBVcGRhdGVkIENNRCA2IGltcGxlbWVtdGF0 aW9uLg0KPiA+DQo+ID4gT24gMjAxN+W5tDA45pyIMzHml6UgMjA6MDYsIExlaWYgTGluZGhvbG0g d3JvdGU6DQo+ID4gPiBPbiBXZWQsIEF1ZyAzMCwgMjAxNyBhdCAwNzo1MDo1OVBNICswNTMwLCBN ZWVuYWtzaGkgQWdnYXJ3YWwgd3JvdGU6DQo+ID4gPj4gRm9yIHNldHRpbmcgaGlnaCBzcGVlZCBp biBTRCBjYXJkLA0KPiA+ID4+IEZpcnN0IENNRCA2IChTd2l0Y2gpIGlzIHNlbmQgdG8gY2hlY2sg aWYgY2FyZCBzdXBwb3J0cyBIaWdoIFNwZWVkDQo+ID4gPj4gYW5kIFNlY29uZCBjb21tYW5kIGlz IHNlbmQgdG8gc3dpdGNoIGNhcmQgdG8gaGlnaCBzcGVlZCBtb2RlLg0KPiA+ID4+DQo+ID4gPj4g SW4gY3VycmVudCBpbnBsZW1lbnRhdGlvbiwgQ01EIDYgd2FzIHNlbnQgb25seSBvbmNlIHRvIHN3 aXRjaCB0aGUNCj4gPiA+PiBjYXJkIGludG8gSFMgbW9kZSB3aXRob3V0IGNoZWNraW5nIGlmIGNh cmQgc3VwcG9ydHMgSFMgb3Igbm90LA0KPiA+ID4+IHdoaWNoIGlzIG5vdCBhcyBwZXIgc3BlY2lm aWNhdGlvbiBhbmQgYWxzbyB3ZSBhcmUgbm90IHNldHRpbmcgdGhlIEhTIGkuZS4NCj4gPiA+PiA1 MDAwMDAwMCBidXQgZGlyZWN0bHkgYXNraW5nIHRoZSBjYXJkIHRvIHN3aXRjaCB0byAyNjAwMDAw MCB3aGljaA0KPiA+ID4+IGlzIGluY29ycmVjdCBhcyBTRCBjYXJkIHN1cHBvcnRzIGVpdGhlciAy NTAwMDAwMCBvciA1MDAwMDAwMC4NCj4gPg0KPiA+IEdvb2QgY2F0Y2gsIGNoZWNrIHNob3VsZCBi ZSBkb25lIGJlZm9yZSBzZXR0aW5nIGZ1bmN0aW9uLiBBbmQgdGhlDQo+ID4gc2V0dGluZyByZXN1 bHQgc2hvdWxkIGJlIGNoZWNrZWQgYmVmb3JlIHJldHVybi4gTG9naWMgaXMgY29ycmVjdCBpbiB0 aGlzIHBhdGNoLg0KPiA+DQo+ID4gPg0KPiA+ID4gU2FtZSBhcyBwcmV2aW91cyBvbmU6IEp1biwg SGFvamlhbj8NCj4gPiA+DQo+ID4gPiBJIGRvIGhhdmUgYSBjb3VwbGUgb2Ygc3R5bGUgY29tbWVu dHMgYmVsb3cuDQo+ID4gPg0KPiA+ID4+IFNpZ25lZC1vZmYtYnk6IE1lZW5ha3NoaSBBZ2dhcndh bCA8bWVlbmFrc2hpLmFnZ2Fyd2FsQG54cC5jb20+DQo+ID4gPj4gLS0tDQo+ID4gPj4gICBFbWJl ZGRlZFBrZy9Vbml2ZXJzYWwvTW1jRHhlL01tY0lkZW50aWZpY2F0aW9uLmMgfCA2NA0KPiA+ICsr KysrKysrKysrKysrKysrKysrLS0tLQ0KPiA+ID4+ICAgMSBmaWxlIGNoYW5nZWQsIDU1IGluc2Vy dGlvbnMoKyksIDkgZGVsZXRpb25zKC0pDQo+ID4gPj4NCj4gPiA+PiBkaWZmIC0tZ2l0IGEvRW1i ZWRkZWRQa2cvVW5pdmVyc2FsL01tY0R4ZS9NbWNJZGVudGlmaWNhdGlvbi5jDQo+ID4gPj4gYi9F bWJlZGRlZFBrZy9Vbml2ZXJzYWwvTW1jRHhlL01tY0lkZW50aWZpY2F0aW9uLmMNCj4gPiA+PiBp bmRleCA3Zjc0YzU0Li4zMDcxYjNiIDEwMDY0NA0KPiA+ID4+IC0tLSBhL0VtYmVkZGVkUGtnL1Vu aXZlcnNhbC9NbWNEeGUvTW1jSWRlbnRpZmljYXRpb24uYw0KPiA+ID4+ICsrKyBiL0VtYmVkZGVk UGtnL1VuaXZlcnNhbC9NbWNEeGUvTW1jSWRlbnRpZmljYXRpb24uYw0KPiA+ID4+IEBAIC0zMTcs NiArMzE3LDI0IEBAIEluaXRpYWxpemVFbW1jRGV2aWNlICgNCj4gPiA+PiAgICAgcmV0dXJuIFN0 YXR1czsNCj4gPiA+PiAgIH0NCj4gPiA+Pg0KPiA+ID4+ICsNCj4gPiA+PiArU1RBVElDDQo+ID4g Pj4gK1VJTlQzMg0KPiA+ID4+ICtDcmVhdGVTd2l0Y2hDbWRBcmd1bWVudCAoDQo+ID4gPg0KPiA+ ID4gVGhpcyBoZWxwZXIgZnVuY3Rpb24gaXMgYSBnb29kIGFkZGl0aW9uLCB0aGFua3MuDQo+ID4g Pg0KPiA+ID4+ICsgIElOICBVSU5UOCAgTW9kZSwNCj4gPiA+PiArICBJTiAgVUlOVDggIEdyb3Vw LA0KPiA+ID4+ICsgIElOICBVSU5UOCAgVmFsdWUNCj4gPiA+PiArICApDQo+ID4gPj4gK3sNCj4g PiA+PiArICBVSU5UMzIgQXJndW1lbnQ7DQo+ID4gPj4gKw0KPiA+ID4+ICsgIEFyZ3VtZW50ID0g TW9kZSA8PCAzMSB8IDB4MDBGRkZGRkY7DQo+ID4gPg0KPiA+ID4gSnVzdCBiZWNhdXNlIEkgaGF0 ZSBpbXBsaWNpdCB0eXBlIHByb21vdGlvbiwgY291bGQgeW91IG1ha2UgTW9kZQ0KPiA+ID4gVUlO VDMyIGluIHRoZSBpbnB1dCwgcGxlYXNlPw0KPiA+ID4NCj4gSSB3aWxsIHN1cmVseSBkbyB0aGlz Lg0KPiANCj4gPiA+PiArICBBcmd1bWVudCAmPSB+KDB4RiA8PCAoR3JvdXAgKiA0KSk7ICBBcmd1 bWVudCB8PSBWYWx1ZSA8PCAoR3JvdXANCj4gPiA+PiArICogNCk7DQo+ID4gPj4gKw0KPiA+ID4+ ICsgIHJldHVybiBBcmd1bWVudDsNCj4gPiA+PiArfQ0KPiA+ID4+ICsNCj4gPiA+PiAgIFNUQVRJ Qw0KPiA+ID4+ICAgRUZJX1NUQVRVUw0KPiA+ID4+ICAgSW5pdGlhbGl6ZVNkTW1jRGV2aWNlICgN Cj4gPiA+PiBAQCAtMzI2LDYgKzM0NCw3IEBAIEluaXRpYWxpemVTZE1tY0RldmljZSAoDQo+ID4g Pj4gICAgIFVJTlQzMiAgICAgICAgQ21kQXJnOw0KPiA+ID4+ICAgICBVSU5UMzIgICAgICAgIFJl c3BvbnNlWzRdOw0KPiA+ID4+ICAgICBVSU5UMzIgICAgICAgIEJ1ZmZlclsxMjhdOw0KPiA+ID4+ ICsgIFVJTlQzMiAgICAgICAgU3BlZWQ7DQo+ID4gPj4gICAgIFVJTlROICAgICAgICAgQmxvY2tT aXplOw0KPiA+ID4+ICAgICBVSU5UTiAgICAgICAgIENhcmRTaXplOw0KPiA+ID4+ICAgICBVSU5U TiAgICAgICAgIE51bUJsb2NrczsNCj4gPiA+PiBAQCAtMzM0LDYgKzM1Myw3IEBAIEluaXRpYWxp emVTZE1tY0RldmljZSAoDQo+ID4gPj4gICAgIEVGSV9TVEFUVVMgICAgU3RhdHVzOw0KPiA+ID4+ ICAgICBFRklfTU1DX0hPU1RfUFJPVE9DT0wgICAgICpNbWNIb3N0Ow0KPiA+ID4+DQo+ID4gPj4g KyAgU3BlZWQgPSAyNTAwMDAwMDsNCj4gPiA+DQo+ID4gPiBDb3VsZCB0aGlzIGJlIGdpdmVuIGEg I2RlZmluZSB3aXRoIGEgZGVzY3JpcHRpdmUgbmFtZSwgaW4gTW1jLmg/DQo+ID4gPg0KPiBvaw0K PiA+ID4+ICAgICBNbWNIb3N0ID0gTW1jSG9zdEluc3RhbmNlLT5NbWNIb3N0Ow0KPiA+ID4+DQo+ ID4gPj4gICAgIC8vIFNlbmQgYSBjb21tYW5kIHRvIGdldCBDYXJkIHNwZWNpZmljIGRhdGEgQEAg LTQzOSw0MyArNDU5LDY5DQo+ID4gPj4gQEAgSW5pdGlhbGl6ZVNkTW1jRGV2aWNlICgNCj4gPiA+ PiAgICAgICB9DQo+ID4gPj4gICAgIH0NCj4gPiA+PiAgICAgaWYgKENjY1N3aXRjaCkgew0KPiA+ ID4+ICsgICAgLyogU0QgU3dpdGNoLCBNb2RlOjAsIEdyb3VwOjAsIFZhbHVlOjAgKi8NCj4gPiA+ PiArICAgIENtZEFyZyA9IENyZWF0ZVN3aXRjaENtZEFyZ3VtZW50KDAsIDAsIDApOw0KPiA+DQo+ ID4gQSBTRF9NT0RFX0NIRUNLL0dFVCBtYWNybyBpcyBjbGVhcmVyIHRoYW4gMCBhbmQgMSB2YWx1 ZSBmb3IgTW9kZS4NCj4gPg0KPiA+ID4+ICsgICAgU3RhdHVzID0gTW1jSG9zdC0+U2VuZENvbW1h bmQgKE1tY0hvc3QsIE1NQ19DTUQ2LA0KPiA+IENtZEFyZyk7DQo+ID4gPj4gKyAgICBpZiAoRUZJ X0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gPj4gKyAgICAgIERFQlVHICgoRUZJX0RfRVJST1IsICIl YShNTUNfQ01ENik6IEZhaWxlZCB3aXRoIFN0YXR1cyA9DQo+ID4gJXJcbiIsIF9fZnVuY19fLCBT dGF0dXMpKTsNCj4gPiA+PiArICAgICAgIHJldHVybiBTdGF0dXM7DQo+ID4gPj4gKyAgICB9IGVs c2Ugew0KPiA+ID4+ICsgICAgICBTdGF0dXMgPSBNbWNIb3N0LT5SZWFkQmxvY2tEYXRhIChNbWNI b3N0LCAwLCA2NCwgQnVmZmVyKTsNCj4gPiA+DQo+ID4gPiBXaGF0IGFyZSAwIGFuZCA2ND8NCj4g PiA+IEkgZ3Vlc3MgNjQgaXMgYSBzaXplPw0KPiA+ID4gSXMgdGhlcmUgYSAjZGVmaW5lIG9yIGEg c2l6ZW9mKCkgdGhhdCBjb3VsZCBtYWtlIGl0IG1vcmUgZGVzY3JpcHRpdmU/DQo+ID4gPg0KPiBZ ZXMgNjQgaXMgdGhlIG51bWJlciBvZiBieXRlcyB3ZSB3YW50IHRvIHJlYWQsIGFuZCAwIGlzIHRo ZSBibG9jayBvZmZzZXQuDQo+IEkgd2lsbCBhZGQgYSBtYWNybyBmb3Igc2l6ZS4NCj4gDQo+ID4g Pj4gKyAgICAgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiA+PiArICAgICAgICBERUJV RyAoKEVGSV9EX0VSUk9SLCAiJWEoTU1DX0NNRDYpOiBSZWFkQmxvY2tEYXRhIEZhaWxlZA0KPiA+ IHdpdGggU3RhdHVzID0gJXJcbiIsIF9fZnVuY19fLCBTdGF0dXMpKTsNCj4gPiA+PiArICAgICAg ICByZXR1cm4gU3RhdHVzOw0KPiA+ID4+ICsgICAgICB9DQo+ID4gPj4gKyAgICB9DQo+ID4gPj4g Kw0KPiA+ID4+ICsgICAgaWYgKCEoQnVmZmVyWzNdICYgMHgyMDAwMCkpIHsNCj4gPg0KPiA+IEJp dCA0MDEgaXMgSFMgc3VwcG9ydCBzdGF0dXMuIFNvIGJpdCBpbiBCdWZmZXJbMTJdIHNob3VsZCBi ZSB0ZXN0ZWQuDQo+ID4gT3IgSSBtaXNzIGFueXRoaW5nPyBJIGFtIGNoZWNraW5nICJTRCBTcGVj aWZpY2F0aW9ucyBQYXJ0IDEgUGh5c2ljYWwNCj4gPiBMYXllciBTcGVjaWZpY2F0aW9uIFZlcnNp b24gMi4wMCIuDQo+ID4NCj4gQWguLi4gWW91IGFyZSBjb3JyZWN0LCBteSBTRCBob3N0IGNvbnRy b2xsZXIgaXMgQmlnIEVuZGlhbiBhbmQgc28gaXMgdGhlDQo+IGRpZmZlcmVuY2UsIEkgd2lsbCB1 cGRhdGUgdGhlIHBhdGNoIGFuZCBzb29uIHNlbmQgVjIuDQo+ID4gPg0KPiA+ID4gSXMgdGhlcmUg bm8gc3RydWN0IGF2YWlsYWJsZSB0byBhY2Nlc3MgdGhpcyBpbmZvcm1hdGlvbiBpbiBtb3JlDQo+ ID4gPiBodW1hbiByZWFkYWJsZSBmb3JtPw0KPiA+ID4NCj4gTm8g4pi5DQo+IA0KPiA+ID4gQW5k IGEgI2RlZmluZSBmb3IgdGhlIDB4MjAwMDAsIHBsZWFzZS4NCj4gPiA+DQo+IEZvciBzdXJlDQo+ IA0KPiA+ID4+ICsgICAgICBERUJVRyAoKEVGSV9EX0VSUk9SLCAiJWFIaWdoIFNwZWVkIG5vdCBz dXBwb3J0ZWQgYnkgQ2FyZA0KPiA+ID4+ICsgJXJcbiIsDQo+ID4gX19mdW5jX18sIFN0YXR1cykp Ow0KPiA+ID4+ICsgICAgICByZXR1cm4gU3RhdHVzOw0KPiA+ID4+ICsgICAgfQ0KPiA+ID4+ICsN Cj4gPiA+PiArICAgIFNwZWVkID0gNTAwMDAwMDA7ICAgICAgIC8vSGlnaCBTcGVlZCBmb3IgU0Qg Y2FyZCBpcyA1MCBNSFoNCj4gPiA+DQo+ID4gPiBDb3VsZCB0aGlzIGJlIGdpdmVuIGEgI2RlZmlu ZSB3aXRoIGEgZGVzY3JpcHRpdmUgbmFtZSwgaW4gTW1jLmg/DQo+ID4gPg0KPiBPaw0KPiANCj4g PiA+PiArDQo+ID4gPj4gICAgICAgLyogU0QgU3dpdGNoLCBNb2RlOjEsIEdyb3VwOjAsIFZhbHVl OjEgKi8NCj4gPiA+PiAtICAgIENtZEFyZyA9IDEgPDwgMzEgfCAweDAwRkZGRkZGOw0KPiA+ID4+ IC0gICAgQ21kQXJnICY9IH4oMHhGIDw8ICgwICogNCkpOw0KPiA+ID4+IC0gICAgQ21kQXJnIHw9 IDEgPDwgKDAgKiA0KTsNCj4gPiA+PiArICAgIENtZEFyZyA9IENyZWF0ZVN3aXRjaENtZEFyZ3Vt ZW50KDEsIDAsIDEpOw0KPiA+ID4+ICAgICAgIFN0YXR1cyA9IE1tY0hvc3QtPlNlbmRDb21tYW5k IChNbWNIb3N0LCBNTUNfQ01ENiwNCj4gPiBDbWRBcmcpOw0KPiA+ID4+ICAgICAgIGlmIChFRklf RVJST1IgKFN0YXR1cykpIHsNCj4gPiA+PiAtICAgICAgREVCVUcgKChFRklfRF9FUlJPUiwgIiVh KE1NQ19DTUQ2KTogRXJyb3IgYW5kIFN0YXR1cyA9DQo+ICVyXG4iLA0KPiA+IFN0YXR1cykpOw0K PiA+ID4+ICsgICAgICBERUJVRyAoKEVGSV9EX0VSUk9SLCAiJWEoTU1DX0NNRDYpOiBFcnJvciBh bmQgU3RhdHVzID0NCj4gPiA+PiArICVyXG4iLCBfX2Z1bmNfXywgU3RhdHVzKSk7DQo+ID4gPg0K PiA+ID4gVGhpcyBsb29rcyBsaWtlIGFuIHVucmVsYXRlZCBidWdmaXg/IEl0IGlzIGdvb2QsIGFu ZCB0aGFuayB5b3UsIGJ1dA0KPiA+ID4gY291bGQgeW91IGJyZWFrIGl0IG91dCBpbnRvIGl0cyBv d24gcGF0Y2ggcGxlYXNlPw0KPiA+ID4gQWxzbywgX19GVU5DVElPTl9fIG1hdGNoZXMgdGhlIGNv ZGluZyBzdHlsZSBiZXR0ZXIgKEkga25vdyB3ZSBoYXZlDQo+ID4gPiBib3RoLCBidXQgX19mdW5j X18gYXBwZWFycyB0byBiZSBsb3NpbmcsIGFuZCBJIHdvdWxkIGxpa2UgdG8ga2VlcA0KPiA+ID4g dGhhdCBtb21lbnR1bSB1cC4NCj4gPiA+DQo+IE9rLi4uIHdpbGwgc2VuZCBhIHNlcGFyYXRlIHBh dGNoDQo+IA0KPiA+ID4+ICAgICAgICAgIHJldHVybiBTdGF0dXM7DQo+ID4gPj4gICAgICAgfSBl bHNlIHsNCj4gPiA+PiAgICAgICAgIFN0YXR1cyA9IE1tY0hvc3QtPlJlYWRCbG9ja0RhdGEgKE1t Y0hvc3QsIDAsIDY0LCBCdWZmZXIpOw0KPiA+ID4+ICAgICAgICAgaWYgKEVGSV9FUlJPUiAoU3Rh dHVzKSkgew0KPiA+ID4+IC0gICAgICAgIERFQlVHICgoRUZJX0RfRVJST1IsICIlYShNTUNfQ01E Nik6IFJlYWRCbG9ja0RhdGEgRXJyb3INCj4gYW5kDQo+ID4gU3RhdHVzID0gJXJcbiIsIFN0YXR1 cykpOw0KPiA+ID4+ICsgICAgICAgIERFQlVHICgoRUZJX0RfRVJST1IsICIlYShNTUNfQ01ENik6 IFJlYWRCbG9ja0RhdGEgRXJyb3INCj4gPiA+PiArIGFuZCBTdGF0dXMgPSAlclxuIixfX2Z1bmNf XywgU3RhdHVzKSk7DQo+ID4gPg0KPiA+ID4gVW5yZWxhdGVkIGJ1Z2ZpeCAoc2FtZSBhcyBjb21t ZW50IGFib3ZlLCBhbmQgc2FtZSBwYXRjaCBwbGVhc2UpLg0KPiA+ID4NCj4gPiA+PiArICAgICAg ICByZXR1cm4gU3RhdHVzOw0KPiA+ID4+ICsgICAgICB9DQo+ID4gPj4gKw0KPiA+ID4+ICsgICAg ICBpZiAoKEJ1ZmZlcls0XSAmIDB4MGYwMDAwMDApICE9IDB4MDEwMDAwMDApIHsNCj4gPg0KPiA+ IEhTIGZ1bmN0aW9uIGJ1c3kgc3RhdHVzIGlzIGJpdCAyODc6MjcyIGluIHJlc3BvbnNlLCBiaXQg MjczIGFjdHVhbGx5Lg0KPiA+IEJpdCAzNzk6Mzc2IGlzIGVycm9yIHN0YXR1cyBvciBmdW5jdGlv biBudW1iZXIgaWYgbm8gZXJyb3IuIFNvIEkgZ3Vlc3MNCj4gPiB5b3Ugc2hvdWxkIHRlc3QgYml0 IGluIG90aGVyIHR3byBlbGVtZW50cyBvZiBCdWZmZXJbXS4NCj4gPg0KPiBBZ2Fpbi4uLiBZb3Ug YXJlIGNvcnJlY3QsIEkgd2lsbCB1cGRhdGUgdGhlIHBhdGNoIGFuZCBzZW5kIFYyIHNvb24uDQo+ ID4gPg0KPiA+ID4gSXMgdGhlcmUgbm8gc3RydWN0IGF2YWlsYWJsZSB0byBhY2Nlc3MgdGhpcyBp bmZvcm1hdGlvbiBpbiBtb3JlDQo+ID4gPiBodW1hbiByZWFkYWJsZSBmb3JtPw0KPiA+ID4NCj4g Tm8NCj4gPiA+IEFuZCBhICNkZWZpbmUgZm9yIGJvdGggdGhlIG1hZ2ljIHZhbHVlcywgcGxlYXNl Lg0KPiA+ID4NCj4gT2sNCj4gDQo+ID4gPj4gKyAgICAgICAgREVCVUcoKEVGSV9EX0VSUk9SLCAi UHJvYmxlbSBzd2l0Y2hpbmcgU0QgY2FyZCBpbnRvDQo+ID4gPj4gKyBoaWdoLXNwZWVkIG1vZGVc biIpKTsNCj4gPiA+PiAgICAgICAgICAgcmV0dXJuIFN0YXR1czsNCj4gPiA+PiAgICAgICAgIH0N Cj4gPiA+PiAgICAgICB9DQo+ID4gPj4gICAgIH0NCj4gPiA+PiArDQo+ID4gPj4gICAgIGlmIChT Y3IuU0RfQlVTX1dJRFRIUyAmIFNEX0JVU19XSURUSF80QklUKSB7DQo+ID4gPj4gICAgICAgQ21k QXJnID0gTW1jSG9zdEluc3RhbmNlLT5DYXJkSW5mby5SQ0EgPDwgMTY7DQo+ID4gPj4gICAgICAg U3RhdHVzID0gTW1jSG9zdC0+U2VuZENvbW1hbmQgKE1tY0hvc3QsIE1NQ19DTUQ1NSwNCj4gPiBD bWRBcmcpOw0KPiA+ID4+ICAgICAgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiA+PiAt ICAgICAgREVCVUcgKChFRklfRF9FUlJPUiwgIiVhKE1NQ19DTUQ1NSk6IEVycm9yIGFuZCBTdGF0 dXMgPQ0KPiAlclxuIiwNCj4gPiBTdGF0dXMpKTsNCj4gPiA+PiArICAgICAgREVCVUcgKChFRklf RF9FUlJPUiwgIiVhKE1NQ19DTUQ1NSk6IEVycm9yIGFuZCBTdGF0dXMgPQ0KPiA+ICVyXG4iLA0K PiA+ID4+ICsgX19mdW5jX18sIFN0YXR1cykpOw0KPiA+ID4NCj4gPiA+IFVucmVsYXRlZCBidWdm aXggKHNhbWUgYXMgY29tbWVudCBhYm92ZSwgYW5kIHNhbWUgcGF0Y2ggcGxlYXNlKS4NCj4gPiA+ DQo+ID4gPj4gICAgICAgICByZXR1cm4gU3RhdHVzOw0KPiA+ID4+ICAgICAgIH0NCj4gPiA+PiAg ICAgICAvKiBXaWR0aDogNCAqLw0KPiA+ID4+ICAgICAgIFN0YXR1cyA9IE1tY0hvc3QtPlNlbmRD b21tYW5kIChNbWNIb3N0LCBNTUNfQ01ENiwgMik7DQo+ID4gPj4gICAgICAgaWYgKEVGSV9FUlJP UiAoU3RhdHVzKSkgew0KPiA+ID4+IC0gICAgICBERUJVRyAoKEVGSV9EX0VSUk9SLCAiJWEoTU1D X0NNRDYpOiBFcnJvciBhbmQgU3RhdHVzID0NCj4gJXJcbiIsDQo+ID4gU3RhdHVzKSk7DQo+ID4g Pj4gKyAgICAgIERFQlVHICgoRUZJX0RfRVJST1IsICIlYShNTUNfQ01ENik6IEVycm9yIGFuZCBT dGF0dXMgPQ0KPiA+ID4+ICsgJXJcbiIsIF9fZnVuY19fLCBTdGF0dXMpKTsNCj4gPiA+DQo+ID4g PiBVbnJlbGF0ZWQgYnVnZml4IChzYW1lIGFzIGNvbW1lbnQgYWJvdmUsIGFuZCBzYW1lIHBhdGNo IHBsZWFzZSkuDQo+ID4gPg0KPiA+ID4+ICAgICAgICAgcmV0dXJuIFN0YXR1czsNCj4gPiA+PiAg ICAgICB9DQo+ID4gPj4gICAgIH0NCj4gPiA+PiAgICAgaWYgKE1NQ19IT1NUX0hBU19TRVRJT1Mo TW1jSG9zdCkpIHsNCj4gPiA+PiAtICAgIFN0YXR1cyA9IE1tY0hvc3QtPlNldElvcyAoTW1jSG9z dCwgMjYgKiAxMDAwICogMTAwMCwgNCwNCj4gPiBFTU1DQkFDS1dBUkQpOw0KPiA+ID4+ICsgICAg U3RhdHVzID0gTW1jSG9zdC0+U2V0SW9zIChNbWNIb3N0LCBTcGVlZCwgNCwgRU1NQ0JBQ0tXQVJE KTsNCj4gPiA+PiAgICAgICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gPj4gLSAgICAg IERFQlVHICgoRUZJX0RfRVJST1IsICIlYShTZXRJb3MpOiBFcnJvciBhbmQgU3RhdHVzID0gJXJc biIsDQo+ID4gU3RhdHVzKSk7DQo+ID4gPj4gKyAgICAgIERFQlVHICgoRUZJX0RfRVJST1IsICIl YShTZXRJb3MpOiBFcnJvciBhbmQgU3RhdHVzID0gJXJcbiIsDQo+ID4gPj4gKyBfX2Z1bmNfXywg U3RhdHVzKSk7DQo+ID4gPg0KPiA+ID4gVW5yZWxhdGVkIGJ1Z2ZpeCAoc2FtZSBhcyBjb21tZW50 IGFib3ZlLCBhbmQgc2FtZSBwYXRjaCBwbGVhc2UpLg0KPiA+ID4NCj4gPiA+IC8NCj4gPiA+ICAg ICAgTGVpZg0KPiA+ID4NCj4gPiA+PiAgICAgICAgIHJldHVybiBTdGF0dXM7DQo+ID4gPj4gICAg ICAgfQ0KPiA+ID4+ICAgICB9DQo+ID4gPj4gKw0KPiA+ID4+ICAgICByZXR1cm4gRUZJX1NVQ0NF U1M7DQo+ID4gPj4gICB9DQo+ID4gPj4NCj4gPiA+PiAtLQ0KPiA+ID4+IDEuOS4xDQo+ID4gPj4N Cj4gPiA+PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0K PiA+ID4+IGVkazItZGV2ZWwgbWFpbGluZyBsaXN0DQo+ID4gPj4gZWRrMi1kZXZlbEBsaXN0cy4w MS5vcmcNCj4gPiA+PiBodHRwczovL2xpc3RzLjAxLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2VkazIt ZGV2ZWwNCj4gDQo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fDQo+IGVkazItZGV2ZWwgbWFpbGluZyBsaXN0DQo+IGVkazItZGV2ZWxAbGlzdHMuMDEub3Jn DQo+IGh0dHBzOi8vbGlzdHMuMDEub3JnL21haWxtYW4vbGlzdGluZm8vZWRrMi1kZXZlbA0K