From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=104.47.0.55; helo=eur01-he1-obe.outbound.protection.outlook.com; envelope-from=udit.kumar@nxp.com; receiver=edk2-devel@lists.01.org Received: from EUR01-HE1-obe.outbound.protection.outlook.com (mail-he1eur01on0055.outbound.protection.outlook.com [104.47.0.55]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id EB67821183286 for ; Tue, 5 Jun 2018 10:11:46 -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:X-MS-Exchange-SenderADCheck; bh=7JhiHZ8RHjqQrx2a7n05wYRLv81nxCrVbpVHpWTZYqk=; b=hq9x4vJLsGmcWedbz/dggpXxK5xfCo1fA6YuIRShJncMwoI1hvMANYBwEzPk/DYetPNo8sluUidsGb11ycRVvENTCY9RDLC8GdS4Ldg8kIYAnEq/2gm93W/yDSwG6KCteELa7UzTDtqJA3Qr33xpk6xXoohL6xlsHCpRBeIxjmY= Received: from AM6PR0402MB3334.eurprd04.prod.outlook.com (52.133.18.151) by AM6PR0402MB3575.eurprd04.prod.outlook.com (52.133.20.12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.820.11; Tue, 5 Jun 2018 17:11:43 +0000 Received: from AM6PR0402MB3334.eurprd04.prod.outlook.com ([fe80::397b:61de:4465:b93c]) by AM6PR0402MB3334.eurprd04.prod.outlook.com ([fe80::397b:61de:4465:b93c%2]) with mapi id 15.20.0820.012; Tue, 5 Jun 2018 17:11:43 +0000 From: Udit Kumar To: Ard Biesheuvel CC: "edk2-devel@lists.01.org" , Leif Lindholm Thread-Topic: [edk2][PATCH 1/2] ArmPlatformPkg: PL011 Dynamic clock freq Support Thread-Index: AQHT/MHWCxYmq1d8vUGBd1u/VKMBP6RRlpgAgABO9oA= Date: Tue, 5 Jun 2018 17:11:43 +0000 Message-ID: References: <1528155339-5050-1-git-send-email-udit.kumar@nxp.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=udit.kumar@nxp.com; x-originating-ip: [117.242.225.166] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; AM6PR0402MB3575; 7:u4F+VS6PttSoqOLkmekyIaQZCYedy7aGI/pCOMf+blsj1sDRho/6Is/e/RaW649xmjqkildDprg3f4QpSxYwSF8a5p2lv0iS8OYVhiIYwg0FC0TX2SUvoum3utiTk7OidnIhP1vkLVO62F+e2bLmZ2M0BDUB2ayR5O06wbVnNOtA4c/hUvUlNXaWWPLJUU2IipYbDD3avA40v1VOrnmjypzYrv/Lyn4cz8SGjF+bfHYwxg5bEviWS0QEj6eG6Lm2 x-ms-exchange-antispam-srfa-diagnostics: SOS; x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(48565401081)(4534165)(4627221)(201703031133081)(201702281549075)(2017052603328)(7153060)(7193020); SRVR:AM6PR0402MB3575; x-ms-traffictypediagnostic: AM6PR0402MB3575: x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(189930954265078)(185117386973197)(162533806227266)(45079756050767); x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(3002001)(93006095)(93001095)(3231254)(944501410)(52105095)(10201501046)(6055026)(149027)(150027)(6041310)(20161123560045)(20161123564045)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(6072148)(201708071742011)(7699016); SRVR:AM6PR0402MB3575; BCL:0; PCL:0; RULEID:; SRVR:AM6PR0402MB3575; x-forefront-prvs: 0694C54398 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(39860400002)(346002)(376002)(39380400002)(366004)(396003)(13464003)(199004)(189003)(53936002)(4326008)(186003)(6306002)(3846002)(9686003)(26005)(575784001)(25786009)(86362001)(446003)(11346002)(305945005)(486006)(6116002)(8676002)(33656002)(6436002)(3280700002)(2906002)(54906003)(102836004)(6246003)(14454004)(45080400002)(229853002)(2900100001)(55016002)(16799955002)(53546011)(106356001)(316002)(476003)(81166006)(5660300001)(3660700001)(66066001)(44832011)(478600001)(6506007)(7736002)(8936002)(97736004)(105586002)(81156014)(68736007)(76176011)(6916009)(7696005)(74316002)(5250100002)(99286004); DIR:OUT; SFP:1101; SCL:1; SRVR:AM6PR0402MB3575; H:AM6PR0402MB3334.eurprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: kkzEAVL23ZxFojNO5E0kZEu5fM28ZB97TvFTpqyboSmd3NKPpho8O+FxjDDkmuX2e2QsKlmFPV95ahEd9P3OF6sdDiYlK9gkm7mFQhnpaip0dcnXfZHPYSlh/3yrCq8n7aewWVxBk7s/WfheCalK5iUyyPqOVP32UHZ14KCMzlKKGZ/uFGh8tZdJ3bKa1jGw spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-MS-Office365-Filtering-Correlation-Id: 68c66de5-5a6f-4175-12a5-08d5cb076946 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 68c66de5-5a6f-4175-12a5-08d5cb076946 X-MS-Exchange-CrossTenant-originalarrivaltime: 05 Jun 2018 17:11:43.3562 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR0402MB3575 Subject: Re: [PATCH 1/2] ArmPlatformPkg: PL011 Dynamic clock freq Support X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.26 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 05 Jun 2018 17:11:47 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogQXJkIEJpZXNoZXV2ZWwg W21haWx0bzphcmQuYmllc2hldXZlbEBsaW5hcm8ub3JnXQ0KPiBTZW50OiBUdWVzZGF5LCBKdW5l IDUsIDIwMTggNTo1NCBQTQ0KPiBUbzogVWRpdCBLdW1hciA8dWRpdC5rdW1hckBueHAuY29tPg0K PiBDYzogZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmc7IExlaWYgTGluZGhvbG0gPGxlaWYubGluZGhv bG1AbGluYXJvLm9yZz4NCj4gU3ViamVjdDogUmU6IFtlZGsyXVtQQVRDSCAxLzJdIEFybVBsYXRm b3JtUGtnOiBQTDAxMSBEeW5hbWljIGNsb2NrIGZyZXENCj4gU3VwcG9ydA0KPiANCj4gT24gNSBK dW5lIDIwMTggYXQgMDE6MzUsIFVkaXQgS3VtYXIgPHVkaXQua3VtYXJAbnhwLmNvbT4gd3JvdGU6 DQo+ID4gU29tZSBwbGF0Zm9ybSBzdXBwb3J0IGR5bmFtaWMgY2xvY2tpbmcsIFdoaWNoIGlzIGNv bnRyb2xsZWQgYnkgc29tZQ0KPiA+IGp1bXBlciBzZXR0aW5nIG9yIGhhcmR3YXJlIHJlZ2lzdGVy cy4NCj4gPiBSZXN1bHQgb2YgdGhhdCBQQ0QgUEwwMTFVYXJ0Q2xrSW5IeiBuZWVkcyB0byBiZSB1 cGRhdGVkIGZvciBmcmVxdWVuY3kNCj4gPiBjaGFuZ2UuDQo+ID4gVGhpcyBwYXRjaCBpbXBsZW1l bnRzIHN1cHBvcnQgZm9yIGR5bmFtaWMgZnJlcXVlbmN5IGZvcg0KPiA+IFBMMDExIHVhcnQuDQo+ ID4gVGhpcyBwYXRjaCBpbXBsZW1lbnQgTlVMTCBsaWIgZm9yIHN1Y2ggcGxhdGZvcm0gd2hlcmUg UGNkIGNsb2NrDQo+ID4gZnJlcXVlbmN5IHRvIFBMMDExIGNhbiBjaGFuZ2UNCj4gPg0KPiA+IENv bnRyaWJ1dGVkLXVuZGVyOiBUaWFub0NvcmUgQ29udHJpYnV0aW9uIEFncmVlbWVudCAxLjENCj4g PiBTaWduZWQtb2ZmLWJ5OiBVZGl0IEt1bWFyIDx1ZGl0Lmt1bWFyQG54cC5jb20+DQo+IA0KPiBJ J20gbm90IGNyYXp5IGFib3V0IHRoaXMuIEhvdyBleGFjdGx5IGFyZSB5b3UgcmVhZGluZyB0aGUg ZnJlcXVlbmN5IGluIHlvdXINCj4gY2FzZT8NCg0KT24gb3VyIFNPQywgd2UgaGF2ZSBzeXNjbGss IHdoaWNoIGlzIGdvaW5nIHRvIHN5c3RlbSBQTEwuIFN5c3RlbSBQTEwgZ2VuZXJhdGUgdGhlDQpj bG9ja3MgZm9yIGRpZmZlcmVudCBJUHMuIA0KU3lzY2xrIGNhbiBiZSA2Nk1IeiB0byAxMDBNaHos IHRoZSB2YWx1ZSBvZiBzeXNjbGsgaXMgcmVhZCBmcm9tIEZQR0EgcmVnaXN0ZXIuDQpUbyBnZXQg SVAgY2xvY2ssIHdlIG5lZWQgdG8gcmVhZCBzeXN0ZW0gUExMIG11bHRpcGxpZXIsIFdoaWNoIGlz IGRlcml2ZWQgZnJvbSANCmEgcHJvZ3JhbW1hYmxlIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24gY2Fs bGVkIFJDVyAoUmVzZXQgY29uZmlndXJhdGlvbiBXb3JkKSAgIA0KDQogDQo+ID4gLS0tDQo+ID4g IC4uLi9JbmNsdWRlL0xpYnJhcnkvQXJtUGxhdGZvcm1DbG9ja0xpYi5oICAgICAgICAgIHwgMzIN Cj4gKysrKysrKysrKysrKysrKysrKysNCj4gPiAgLi4uL0FybVBsYXRmb3JtQ2xvY2tMaWIuaW5m ICAgICAgICAgICAgICAgICAgICAgICAgfCAzMyArKysrKysrKysrKysrKysrKysrKw0KPiA+ICAu Li4vQXJtUGxhdGZvcm1DbG9ja0xpYk51bGwuYyAgICAgICAgICAgICAgICAgICAgICB8IDM1DQo+ ICsrKysrKysrKysrKysrKysrKysrKysNCj4gPiAgMyBmaWxlcyBjaGFuZ2VkLCAxMDAgaW5zZXJ0 aW9ucygrKQ0KPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQNCj4gPiBBcm1QbGF0Zm9ybVBrZy9JbmNs dWRlL0xpYnJhcnkvQXJtUGxhdGZvcm1DbG9ja0xpYi5oDQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0 NA0KPiA+DQo+IEFybVBsYXRmb3JtUGtnL0xpYnJhcnkvQXJtUGxhdGZvcm1DbG9ja0xpYk51bGwv QXJtUGxhdGZvcm1DbG9ja0xpYi5pbmYNCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0DQo+ID4NCj4g QXJtUGxhdGZvcm1Qa2cvTGlicmFyeS9Bcm1QbGF0Zm9ybUNsb2NrTGliTnVsbC9Bcm1QbGF0Zm9y bUNsb2NrTGliTnVsbA0KPiA+IC5jDQo+ID4NCj4gDQo+IEFybVBsYXRmb3JtQ2xvY2tMaWIgZG9l c24ndCBtYWtlIHNlbnNlLCBzaW5jZSB0aGlzIGlzIHNwZWNpZmljIHRvIFBMMDExLCBubz8NCg0K T2ssIEkgd2lsbCByZW5hbWUgaXQgDQogDQo+IA0KPiA+IGRpZmYgLS1naXQgYS9Bcm1QbGF0Zm9y bVBrZy9JbmNsdWRlL0xpYnJhcnkvQXJtUGxhdGZvcm1DbG9ja0xpYi5oDQo+ID4gYi9Bcm1QbGF0 Zm9ybVBrZy9JbmNsdWRlL0xpYnJhcnkvQXJtUGxhdGZvcm1DbG9ja0xpYi5oDQo+ID4gbmV3IGZp bGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRleCAwMDAwMDAwLi5mOWQxNDI1DQo+ID4gLS0tIC9kZXYv bnVsbA0KPiA+ICsrKyBiL0FybVBsYXRmb3JtUGtnL0luY2x1ZGUvTGlicmFyeS9Bcm1QbGF0Zm9y bUNsb2NrTGliLmgNCj4gDQo+IFBsZWFzZSBhZGQgbmV3IGxpYnJhcnkgY2xhc3NlcyB0byB0aGUg cGFja2FnZSAuZGVjIGZpbGUNCg0KT2sgDQogDQo+ID4gQEAgLTAsMCArMSwzMiBAQA0KPiA+ICsv KiogQGZpbGUNCj4gPiArKg0KPiA+ICsqICBDb3B5cmlnaHQgMjAxOCBOWFANCj4gPiArKg0KPiA+ ICsqICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ID4gKyog IGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25k aXRpb25zIG9mDQo+ID4gK3RoZSBCU0QgTGljZW5zZQ0KPiA+ICsqICB3aGljaCBhY2NvbXBhbmll cyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UNCj4gPiAr bWF5IGJlIGZvdW5kIGF0DQo+ID4gKyoNCj4gPg0KPiAraHR0cHM6Ly9lbWVhMDEuc2FmZWxpbmtz LnByb3RlY3Rpb24ub3V0bG9vay5jb20vP3VybD1odHRwJTNBJTJGJTJGb3ANCj4gZQ0KPiA+ICtu c291cmNlLm9yZyUyRmxpY2Vuc2VzJTJGYnNkLQ0KPiBsaWNlbnNlLnBocCZkYXRhPTAyJTdDMDEl N0N1ZGl0Lmt1bWFyJTQwDQo+ID4NCj4gK254cC5jb20lN0NhZDU5MzA5NDllNzg0MzY0MGU0ZTA4 ZDVjYWRmMzE5MiU3QzY4NmVhMWQzYmMyYjQNCj4gYzZmYTkyY2Q5OWMNCj4gPg0KPiArNWMzMDE2 MzUlN0MwJTdDMCU3QzYzNjYzNzk4MjMyMTUwOTk1OSZzZGF0YT1FakJVWHpZJTJGMERjTQ0KPiBP WjIydGxPbFNLMA0KPiA+ICt0WnFBTlRxcmdTJTJCdGd6TFhMeHJZJTNEJnJlc2VydmVkPTANCj4g PiArKg0KPiA+ICsqICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJ Q0VOU0UgT04gQU4gIkFTIElTIg0KPiA+ICtCQVNJUywNCj4gPiArKiAgV0lUSE9VVCBXQVJSQU5U SUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSDQo+IEVYUFJFU1MgT1Ig SU1QTElFRC4NCj4gPiArKg0KPiA+ICsqKi8NCj4gPiArDQo+ID4gKyNpZm5kZWYgX0FSTVBMQVRG T1JNQ0xPQ0tMSUJfSF8NCj4gPiArI2RlZmluZSBfQVJNUExBVEZPUk1DTE9DS0xJQl9IXw0KPiA+ ICsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFJldHVybiBmcmVxdWVuY3kgb2YgUEwwMTEuDQo+ ID4gKw0KPiA+ICsgIElmIHRoaXMgZnVuY3Rpb24gcmV0dXJuIDAgdGhlbiBmaXhlZCB2YWx1ZSBp biBQY2Qgd2lsbCBiZSB1c2VkDQo+ID4gKw0KPiA+ICsgIEByZXR1cm4gUmV0dXJuIGZyZXF1ZW5j eSBvZiBQTDAxMQ0KPiA+ICsNCj4gPiArKiovDQo+ID4gK1VJTlQzMg0KPiA+ICtBcm1QbGF0Zm9y bUdldFBMMDExQ2xvY2tGcmVxICgNCj4gPiArICBWT0lEDQo+ID4gKyAgKTsNCj4gPiArDQo+ID4g KyNlbmRpZg0KPiA+IGRpZmYgLS1naXQNCj4gPg0KPiBhL0FybVBsYXRmb3JtUGtnL0xpYnJhcnkv QXJtUGxhdGZvcm1DbG9ja0xpYk51bGwvQXJtUGxhdGZvcm1DbG9ja0xpYi5pDQo+ID4gbmYNCj4g Pg0KPiBiL0FybVBsYXRmb3JtUGtnL0xpYnJhcnkvQXJtUGxhdGZvcm1DbG9ja0xpYk51bGwvQXJt UGxhdGZvcm1DbG9ja0xpYi5pDQo+ID4gbmYNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+ IGluZGV4IDAwMDAwMDAuLmI3MDhhZDMNCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrDQo+IGIv QXJtUGxhdGZvcm1Qa2cvTGlicmFyeS9Bcm1QbGF0Zm9ybUNsb2NrTGliTnVsbC9Bcm1QbGF0Zm9y bUNsb2NrTA0KPiA+ICsrKyBpYi5pbmYNCj4gPiBAQCAtMCwwICsxLDMzIEBADQo+ID4gKyMvKiBA ZmlsZQ0KPiA+ICsjICBDb3B5cmlnaHQgMjAxOCBOWFANCj4gPiArIw0KPiA+ICsjICBUaGlzIHBy b2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzICMgIGFyZSBsaWNlbnNlZCBhbmQN Cj4gPiArbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRo ZSBCU0QgTGljZW5zZSAjDQo+ID4gK3doaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9u LiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZQ0KPiA+ICttYXkgYmUgZm91bmQgYXQgIw0K PiA+DQo+ICtodHRwczovL2VtZWEwMS5zYWZlbGlua3MucHJvdGVjdGlvbi5vdXRsb29rLmNvbS8/ dXJsPWh0dHAlM0ElMkYlMkZvcA0KPiBlDQo+ID4gK25zb3VyY2Uub3JnJTJGbGljZW5zZXMlMkZi c2QtDQo+IGxpY2Vuc2UucGhwJmRhdGE9MDIlN0MwMSU3Q3VkaXQua3VtYXIlNDANCj4gPg0KPiAr bnhwLmNvbSU3Q2FkNTkzMDk0OWU3ODQzNjQwZTRlMDhkNWNhZGYzMTkyJTdDNjg2ZWExZDNiYzJi NA0KPiBjNmZhOTJjZDk5Yw0KPiA+DQo+ICs1YzMwMTYzNSU3QzAlN0MwJTdDNjM2NjM3OTgyMzIx NTA5OTU5JnNkYXRhPUVqQlVYelklMkYwRGNNDQo+IE9aMjJ0bE9sU0swDQo+ID4gK3RacUFOVHFy Z1MlMkJ0Z3pMWEx4clklM0QmcmVzZXJ2ZWQ9MA0KPiA+ICsjDQo+ID4gKyMgIFRIRSBQUk9HUkFN IElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiDQo+ID4g K0JBU0lTLCAjICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBL SU5ELA0KPiBFSVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVELg0KPiA+ICsjDQo+ID4gKyMqLw0KPiA+ ICsNCj4gPiArW0RlZmluZXNdDQo+ID4gKyAgSU5GX1ZFUlNJT04gICAgICAgICAgICAgICAgICAg ID0gMHgwMDAxMDAwQQ0KPiA+ICsgIEJBU0VfTkFNRSAgICAgICAgICAgICAgICAgICAgICA9IEFy bVBsYXRmb3JtQ2xvY2tMaWJOdWxsDQo+ID4gKyAgRklMRV9HVUlEICAgICAgICAgICAgICAgICAg ICAgID0gYWY4ZmVmMjQtYWZiYi00NzJhLWI4YjctMTMxMDFhNzk3MDNjDQo+ID4gKyAgTU9EVUxF X1RZUEUgICAgICAgICAgICAgICAgICAgID0gQkFTRQ0KPiA+ICsgIFZFUlNJT05fU1RSSU5HICAg ICAgICAgICAgICAgICA9IDEuMA0KPiA+ICsgIExJQlJBUllfQ0xBU1MgICAgICAgICAgICAgICAg ICA9IEFybVBsYXRmb3JtQ2xvY2tMaWINCj4gPiArDQo+ID4gK1tQYWNrYWdlc10NCj4gPiArICBN ZGVQa2cvTWRlUGtnLmRlYw0KPiA+ICsgIE1kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVjDQo+ ID4gKyAgQXJtUGtnL0FybVBrZy5kZWMNCj4gPiArICBBcm1QbGF0Zm9ybVBrZy9Bcm1QbGF0Zm9y bVBrZy5kZWMNCj4gPiArDQo+ID4gK1tMaWJyYXJ5Q2xhc3Nlc10NCj4gPiArICBBcm1MaWINCj4g PiArICBEZWJ1Z0xpYg0KPiA+ICsNCj4gPiArW1NvdXJjZXMuY29tbW9uXQ0KPiA+ICsgIEFybVBs YXRmb3JtQ2xvY2tMaWJOdWxsLmMNCj4gPiBkaWZmIC0tZ2l0DQo+ID4NCj4gYS9Bcm1QbGF0Zm9y bVBrZy9MaWJyYXJ5L0FybVBsYXRmb3JtQ2xvY2tMaWJOdWxsL0FybVBsYXRmb3JtQ2xvY2tMaWJO DQo+IHUNCj4gPiBsbC5jDQo+ID4NCj4gYi9Bcm1QbGF0Zm9ybVBrZy9MaWJyYXJ5L0FybVBsYXRm b3JtQ2xvY2tMaWJOdWxsL0FybVBsYXRmb3JtQ2xvY2tMaWJODQo+IHUNCj4gPiBsbC5jDQo+ID4g bmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRleCAwMDAwMDAwLi4yOGVhYTYzDQo+ID4gLS0t IC9kZXYvbnVsbA0KPiA+ICsrKw0KPiBiL0FybVBsYXRmb3JtUGtnL0xpYnJhcnkvQXJtUGxhdGZv cm1DbG9ja0xpYk51bGwvQXJtUGxhdGZvcm1DbG9ja0wNCj4gPiArKysgaWJOdWxsLmMNCj4gPiBA QCAtMCwwICsxLDM1IEBADQo+ID4gKy8qKiBAZmlsZQ0KPiA+ICsqDQo+ID4gKyogIENvcHlyaWdo dCAyMDE4IE5YUA0KPiA+ICsqDQo+ID4gKyogIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFu eWluZyBtYXRlcmlhbHMNCj4gPiArKiAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1 bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YNCj4gPiArdGhlIEJTRCBMaWNlbnNlDQo+ ID4gKyogIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4 dCBvZiB0aGUgbGljZW5zZQ0KPiA+ICttYXkgYmUgZm91bmQgYXQNCj4gPiArKg0KPiA+DQo+ICto dHRwczovL2VtZWEwMS5zYWZlbGlua3MucHJvdGVjdGlvbi5vdXRsb29rLmNvbS8/dXJsPWh0dHAl M0ElMkYlMkZvcA0KPiBlDQo+ID4gK25zb3VyY2Uub3JnJTJGbGljZW5zZXMlMkZic2QtDQo+IGxp Y2Vuc2UucGhwJmRhdGE9MDIlN0MwMSU3Q3VkaXQua3VtYXIlNDANCj4gPg0KPiArbnhwLmNvbSU3 Q2FkNTkzMDk0OWU3ODQzNjQwZTRlMDhkNWNhZGYzMTkyJTdDNjg2ZWExZDNiYzJiNA0KPiBjNmZh OTJjZDk5Yw0KPiA+DQo+ICs1YzMwMTYzNSU3QzAlN0MwJTdDNjM2NjM3OTgyMzIxNTA5OTU5JnNk YXRhPUVqQlVYelklMkYwRGNNDQo+IE9aMjJ0bE9sU0swDQo+ID4gK3RacUFOVHFyZ1MlMkJ0Z3pM WEx4clklM0QmcmVzZXJ2ZWQ9MA0KPiA+ICsqDQo+ID4gKyogIFRIRSBQUk9HUkFNIElTIERJU1RS SUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiDQo+ID4gK0JBU0lTLA0K PiA+ICsqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5E LCBFSVRIRVINCj4gRVhQUkVTUyBPUiBJTVBMSUVELg0KPiA+ICsqDQo+ID4gKyoqLw0KPiA+ICsN Cj4gPiArI2luY2x1ZGUgPExpYnJhcnkvQXJtUGxhdGZvcm1DbG9ja0xpYi5oPg0KPiA+ICsNCj4g PiArDQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBSZXR1cm4gY2xvY2sgaW4gZm9yIFBMMDExIFVh cnQgSVAuDQo+ID4gKyoqLw0KPiA+ICtVSU5UMzINCj4gPiArQXJtUGxhdGZvcm1HZXRQTDAxMUNs b2NrRnJlcSAoDQo+ID4gKyAgVk9JRA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIC8vIEltcGxl bWVudCBwbGF0Zm9ybSBzcGVjaWZpYyBjb2RlDQo+ID4gKyAgLy8gYW5kIHJldHVybiBQTDAxMSBm cmVxDQo+ID4gKw0KPiA+ICsgIC8vIFNvbWUgcGxhdGZvcm0gc3VwcG9ydHMgZHluYW1pYyBjbG9j a2luZywgIC8vIFRoaXMgZnVuY3Rpb24gbmVlZHMNCj4gPiArIHRvIGJlIGltcGxlbWVudGVkIG9u IHBsYXRmb3JtcyB3aGljaCBzdXBwb3J0cyAgLy8gZHluYW1pYyBjbG9ja2luZw0KPiA+ICsgdG8g YXZvaWQgcmUtYnVpbGRpbmcgb2YgVUVGSSBmaXJtd2FyZSBmb3IgUEwwMTEgIC8vIGNsb2NrIGNo YW5nZQ0KPiA+ICsgcmV0dXJuIDA7DQo+IA0KPiBXaHkgbm90IHJldHVybiB0aGUgUENEIHZhbHVl IGhlcmU/IFRoYXQgd2F5LCB5b3UgY2FuIGFsc28gZ2V0IHJpZCBvZiB0aGUNCj4gaG9ycmlkIGNv bmRpdGlvbmFsIGV4cHJlc3Npb24gaW4gdGhlIG5leHQgcGF0Y2guDQoNClRoYW5rcywgd2lsbCBk byBpbiB2Mi4gDQogDQo+ID4gK30NCj4gPiAtLQ0KPiA+IDEuOS4xDQo+ID4NCg==