From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) (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 7DB4521A04823 for ; Mon, 17 Apr 2017 08:14:01 -0700 (PDT) Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga101.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 17 Apr 2017 08:14:01 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.37,215,1488873600"; d="scan'208,217";a="75153013" Received: from fmsmsx104.amr.corp.intel.com ([10.18.124.202]) by orsmga002.jf.intel.com with ESMTP; 17 Apr 2017 08:14:00 -0700 Received: from fmsmsx111.amr.corp.intel.com (10.18.116.5) by fmsmsx104.amr.corp.intel.com (10.18.124.202) with Microsoft SMTP Server (TLS) id 14.3.319.2; Mon, 17 Apr 2017 08:14:00 -0700 Received: from shsmsx101.ccr.corp.intel.com (10.239.4.153) by fmsmsx111.amr.corp.intel.com (10.18.116.5) with Microsoft SMTP Server (TLS) id 14.3.319.2; Mon, 17 Apr 2017 08:13:59 -0700 Received: from shsmsx102.ccr.corp.intel.com ([169.254.2.246]) by SHSMSX101.ccr.corp.intel.com ([169.254.1.193]) with mapi id 14.03.0319.002; Mon, 17 Apr 2017 23:13:57 +0800 From: "Yao, Jiewen" To: Ard Biesheuvel CC: "edk2-devel@lists.01.org" , "Ni, Ruiyu" , Leo Duran , Brijesh Singh Thread-Topic: [RFC] [PATCH V3 1/3] MdeModulePkg/Include: Add IOMMU protocol definition. Thread-Index: AQHSt4B+VY6IkkM5sUCDG7goIijFHqHJmTbw Date: Mon, 17 Apr 2017 15:13:56 +0000 Message-ID: <74D8A39837DF1E4DA445A8C0B3885C503A92D302@shsmsx102.ccr.corp.intel.com> References: <1491289579-15888-1-git-send-email-jiewen.yao@intel.com> <1491289579-15888-2-git-send-email-jiewen.yao@intel.com> In-Reply-To: Accept-Language: zh-CN, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-version: 10.0.102.7 dlp-reaction: no-action x-originating-ip: [10.239.127.40] MIME-Version: 1.0 X-Content-Filtered-By: Mailman/MimeDel 2.1.22 Subject: Re: [RFC] [PATCH V3 1/3] MdeModulePkg/Include: Add IOMMU protocol definition. 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, 17 Apr 2017 15:14:01 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGkgQXJkDQpUaGFua3MgZm9yIHRoZSBmZWVkYmFjay4NCg0KRGV0YWlsZWQgY29tbWVudCBiZWxv dzoNCg0KDQpGcm9tOiBBcmQgQmllc2hldXZlbCBbbWFpbHRvOmFyZC5iaWVzaGV1dmVsQGxpbmFy by5vcmddDQpTZW50OiBNb25kYXksIEFwcmlsIDE3LCAyMDE3IDk6NDMgUE0NClRvOiBZYW8sIEpp ZXdlbiA8amlld2VuLnlhb0BpbnRlbC5jb20+DQpDYzogZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmc7 IE5pLCBSdWl5dSA8cnVpeXUubmlAaW50ZWwuY29tPjsgTGVvIER1cmFuIDxsZW8uZHVyYW5AYW1k LmNvbT47IEJyaWplc2ggU2luZ2ggPGJyaWplc2guc2luZ2hAYW1kLmNvbT4NClN1YmplY3Q6IFJl OiBbUkZDXSBbUEFUQ0ggVjMgMS8zXSBNZGVNb2R1bGVQa2cvSW5jbHVkZTogQWRkIElPTU1VIHBy b3RvY29sIGRlZmluaXRpb24uDQoNCk9uIDQgQXByaWwgMjAxNyBhdCAwODowNiwgSmlld2VuIFlh byA8amlld2VuLnlhb0BpbnRlbC5jb208bWFpbHRvOmppZXdlbi55YW9AaW50ZWwuY29tPj4gd3Jv dGU6DQo+IFRoaXMgcHJvdG9jb2wgaXMgdG8gYWJzdHJhY3QgRE1BIGFjY2VzcyBmcm9tIElPTU1V Lg0KPiAxKSBJbnRlbCAiRE1BUiIgQUNQSSB0YWJsZS4NCj4gMikgQU1EICJJVlJTIiBBQ1BJIHRh YmxlDQo+IDMpIEFSTSAiSU9SVCIgQUNQSSB0YWJsZS4NCj4NCj4gVGhlcmUgbWlnaHQgYmUgbXVs dGlwbGUgSU9NTVUgZW5naW5lcyBvbiBvbmUgcGxhdGZvcm0uDQo+IEZvciBleGFtcGxlLCBvbmUg Zm9yIGdyYXBoaWMgYW5kIG9uZSBmb3IgcmVzdCBQQ0kgZGV2aWNlcw0KPiAoc3VjaCBhcyBBVEEv VVNCKS4NCj4gQWxsIElPTU1VIGVuZ2luZXMgYXJlIHJlcG9ydGVkIGJ5IG9uZSBBQ1BJIHRhYmxl Lg0KPg0KPiBBbGwgSU9NTVUgcHJvdG9jb2wgcHJvdmlkZXIgc2hvdWxkIGJlIGJhc2VkIHVwb24g QUNQSSB0YWJsZS4NCj4gVGhpcyBzaW5nbGUgSU9NTVUgcHJvdG9jb2wgY2FuIGhhbmRsZSBtdWx0 aXBsZSBJT01NVSBlbmdpbmVzIG9uIG9uZSBzeXN0ZW0uDQo+DQo+IFRoaXMgSU9NTVUgcHJvdG9j b2wgcHJvdmlkZXIgY2FuIHVzZSBVRUZJIGRldmljZSBwYXRoIHRvIGRpc3Rpbmd1aXNoDQo+IGlm IHRoZSBkZXZpY2UgaXMgZ3JhcGhpYyBvciBBVEEvVVNCLCBhbmQgZmluZCBvdXQgY29ycmVzcG9u ZGluZw0KPiBJT01NVSBlbmdpbmUuDQo+DQo+IFRoZSBJT01NVSBwcm90b2NvbCBwcm92aWRlcyAy IGNhcGFiaWxpdGllczoNCj4gQSkgU2V0IERNQSBhY2Nlc3MgYXR0cmlidXRlIC0gc3VjaCBhcyB3 cml0ZS9yZWFkIGNvbnRyb2wuDQo+IEIpIFJlbWFwIERNQSBtZW1vcnkgLSBzdWNoIGFzIHJlbWFw IGFib3ZlIDRHaUIgc3lzdGVtIG1lbW9yeSBhZGRyZXNzDQo+IHRvIGJlbG93IDRHaUIgZGV2aWNl IGFkZHJlc3MuDQo+DQo+IDQpIEFNRCAiU0VWIiBmZWF0dXJlLg0KPiBXZSBjYW4gaGF2ZSBhbiBB TUQgU0VWIHNwZWNpZmljIElPTU1VIGRyaXZlciB0byBwcm9kdWNlIElPTU1VIHByb3RvY29sLA0K PiBhbmQgbWFuYWdlIFNFViBiaXQgaW4gU2V0QXR0cmlidXRlKCksIGFuZCByZXR1cm4gVU5TVVBQ T1JURUQNCj4gZm9yIFNldFJlbWFwQWRkcmVzcy9HZXRSZW1hcEFkZHJlc3MoKS4NCj4NCj4gQ2M6 IFJ1aXl1IE5pIDxydWl5dS5uaUBpbnRlbC5jb208bWFpbHRvOnJ1aXl1Lm5pQGludGVsLmNvbT4+ DQo+IENjOiBMZW8gRHVyYW4gPGxlby5kdXJhbkBhbWQuY29tPG1haWx0bzpsZW8uZHVyYW5AYW1k LmNvbT4+DQo+IENjOiBCcmlqZXNoIFNpbmdoIDxicmlqZXNoLnNpbmdoQGFtZC5jb208bWFpbHRv OmJyaWplc2guc2luZ2hAYW1kLmNvbT4+DQo+IENjOiBBcmQgQmllc2hldXZlbCA8YXJkLmJpZXNo ZXV2ZWxAbGluYXJvLm9yZzxtYWlsdG86YXJkLmJpZXNoZXV2ZWxAbGluYXJvLm9yZz4+DQo+IENv bnRyaWJ1dGVkLXVuZGVyOiBUaWFub0NvcmUgQ29udHJpYnV0aW9uIEFncmVlbWVudCAxLjANCj4g U2lnbmVkLW9mZi1ieTogSmlld2VuIFlhbyA8amlld2VuLnlhb0BpbnRlbC5jb208bWFpbHRvOmpp ZXdlbi55YW9AaW50ZWwuY29tPj4NCj4gLS0tDQo+ICBNZGVNb2R1bGVQa2cvSW5jbHVkZS9Qcm90 b2NvbC9Jb01tdS5oIHwgMTk2ICsrKysrKysrKysrKysrKysrKysrDQo+ICBNZGVNb2R1bGVQa2cv TWRlTW9kdWxlUGtnLmRlYyAgICAgICAgIHwgICAzICsNCj4gIDIgZmlsZXMgY2hhbmdlZCwgMTk5 IGluc2VydGlvbnMoKykNCj4NCj4gZGlmZiAtLWdpdCBhL01kZU1vZHVsZVBrZy9JbmNsdWRlL1By b3RvY29sL0lvTW11LmggYi9NZGVNb2R1bGVQa2cvSW5jbHVkZS9Qcm90b2NvbC9Jb01tdS5oDQo+ IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAuLjc2NmI5MTgNCj4gLS0tIC9k ZXYvbnVsbA0KPiArKysgYi9NZGVNb2R1bGVQa2cvSW5jbHVkZS9Qcm90b2NvbC9Jb01tdS5oDQo+ IEBAIC0wLDAgKzEsMTk2IEBADQo+ICsvKiogQGZpbGUNCj4gKyAgRUZJIElPTU1VIFByb3RvY29s Lg0KPiArDQo+ICtDb3B5cmlnaHQgKGMpIDIwMTcsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmln aHRzIHJlc2VydmVkLjxCUj4NCj4gK1RoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBt YXRlcmlhbHMgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlcg0KPiArdGhlIHRl cm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBCU0QgTGljZW5zZSB0aGF0IGFjY29tcGFuaWVzIHRo aXMgZGlzdHJpYnV0aW9uLg0KPiArVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUg Zm91bmQgYXQNCj4gK2h0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5w aHAuDQo+ICsNCj4gK1RIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElD RU5TRSBPTiBBTiAiQVMgSVMiIEJBU0lTLA0KPiArV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJF U0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSIEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gKw0K PiArKiovDQo+ICsNCj4gKw0KPiArI2lmbmRlZiBfX0lPTU1VX0hfXw0KPiArI2RlZmluZSBfX0lP TU1VX0hfXw0KPiArDQo+ICsvLw0KPiArLy8gSU9NTVUgUHJvdG9jb2wgR1VJRCB2YWx1ZQ0KPiAr Ly8NCj4gKyNkZWZpbmUgRURLSUlfSU9NTVVfUFJPVE9DT0xfR1VJRCBcDQo+ICsgICAgeyBcDQo+ ICsgICAgICAweDRlOTM5ZGU5LCAweGQ5NDgsIDB4NGIwZiwgeyAweDg4LCAweGVkLCAweGU2LCAw eGUxLCAweGNlLCAweDUxLCAweDdjLCAweDFlIH0gXA0KPiArICAgIH0NCj4gKw0KPiArLy8NCj4g Ky8vIEZvcndhcmQgcmVmZXJlbmNlIGZvciBwdXJlIEFOU0kgY29tcGF0YWJpbGl0eQ0KPiArLy8N Cj4gK3R5cGVkZWYgc3RydWN0IF9FREtJSV9JT01NVV9QUk9UT0NPTCAgRURLSUlfSU9NTVVfUFJP VE9DT0w7DQo+ICsNCj4gKy8vDQo+ICsvLyBSZXZpc2lvbiBUaGUgcmV2aXNpb24gdG8gd2hpY2gg dGhlIElPTU1VIGludGVyZmFjZSBhZGhlcmVzLg0KPiArLy8gICAgICAgICAgQWxsIGZ1dHVyZSBy ZXZpc2lvbnMgbXVzdCBiZSBiYWNrd2FyZHMgY29tcGF0aWJsZS4NCj4gKy8vICAgICAgICAgIElm IGEgZnV0dXJlIHZlcnNpb24gaXMgbm90IGJhY2sgd2FyZHMgY29tcGF0aWJsZSBpdCBpcyBub3Qg dGhlIHNhbWUgR1VJRC4NCj4gKy8vDQo+ICsjZGVmaW5lIEVES0lJX0lPTU1VX1BST1RPQ09MX1JF VklTSU9OIDB4MDAwMTAwMDANCj4gKw0KPiArLy8NCj4gKy8vIElPTU1VIGF0dHJpYnV0ZS4NCj4g Ky8vIFRoZXNlIHR5cGVzIGNhbiBiZSAiT1JlZCIgdG9nZXRoZXIgYXMgbmVlZGVkLg0KPiArLy8g QW55IHVuZGVmaW5lZCBiaXRzIGFyZSByZXNlcnZlZCBhbmQgbXVzdCBiZSB6ZXJvLg0KPiArLy8N Cj4gKyNkZWZpbmUgRURLSUlfSU9NTVVfQVRUUklCVVRFX1JFQUQgICAweDENCj4gKyNkZWZpbmUg RURLSUlfSU9NTVVfQVRUUklCVVRFX1dSSVRFICAweDINCj4gKw0KPiArLyoqDQo+ICsgIEdldCBJ T01NVSBwYWdlIHNpemUuDQo+ICsNCj4gKyAgVGhpcyBpcyB0aGUgbWluaW1hbCBzdXBwb3J0ZWQg cGFnZSBzaXplIGZvciBhIElPTU1VLg0KPiArICBGb3IgZXhhbXBsZSwgaWYgYW4gSU9NTVUgc3Vw cG9ydHMgNEtpQiwgMk1pQiBhbmQgMUdpQiwNCj4gKyAgNEtpQiBzaG91bGQgYmUgcmV0dXJuZWQu DQo+ICsNCj4gKyAgQHBhcmFtW2luXSAgVGhpcyAgICAgIFByb3RvY29sIGluc3RhbmNlIHBvaW50 ZXIuDQo+ICsgIEBwYXJhbVtvdXRdIFBhZ2VTaXplICBUaGUgbWluaW1hbCBzdXBwb3J0ZWQgcGFn ZSBzaXplIGZvciBhIElPTU1VLg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAg ICAgICBUaGUgcGFnZSBzaXplIGlzIHJldHVybmVkLg0KPiArICBAcmV0dmFsIEVGSV9JTlZBTElE X1BBUkFNRVRFUiAgUGFnZVNpemUgaXMgTlVMTC4NCj4gKw0KPiArKiovDQo+ICt0eXBlZGVmDQo+ ICtFRklfU1RBVFVTDQo+ICsoRUZJQVBJICpFREtJSV9JT01NVV9HRVRfUEFHRV9TSVpFKSgNCj4g KyAgSU4gIEVES0lJX0lPTU1VX1BST1RPQ09MICAqVGhpcywNCj4gKyAgT1VUIFVJTlROICAgICAg ICAgICAgICAgICAqUGFnZVNpemUNCj4gKyAgKTsNCj4gKw0KDQpXaGVuIGRvIHdlIGV4cGVjdCB0 byBuZWVkIHRoaXM/IElzIGl0IGNvbW1vbiBvbiB4ODYgdG8gaGF2ZSBJT01NVXMNCnRoYXQgZG9u J3Qgc3VwcG9ydCA0IEtCIHBhZ2Ugc2l6ZT8NCltKaWV3ZW5dIFllcy4gWDg2IElPTU1VIGRvZXMg c3VwcG9ydCA0S0IuDQpJIGFtIG5vdCBrbm93bGVkZ2VhYmxlIGVub3VnaCB0byBrbm93IGFsbCBv dGhlciBhcmNoaXRlY3R1cmVzLiBTbyB0aGlzIGlzIGEgZ2VuZXJpYyBkZXNpZ24uDQpPZiBjb3Vy c2UsIGlmIHdlIGNhbiBjb25maXJtIGFsbCBhcmNoIHN1cHBvcnQgNEtCIElPTU1VLCB0aGlzIEFQ SSBjYW4gYmUgcmVtb3ZlZC4g4pi6DQpBcmQsIGNhbiB5b3UgaGVscCB0byBkb3VibGUgY29uZmly bSBmb3IgQVJNL0FBcmNoNjQ/DQoNCg0KPiArLyoqDQo+ICsgIFNldCBJT01NVSBhdHRyaWJ1dGUg Zm9yIGEgc3lzdGVtIG1lbW9yeS4NCj4gKw0KPiArICBJZiB0aGUgSU9NTVUgcHJvdG9jb2wgZXhp c3RzLCB0aGUgc3lzdGVtIG1lbW9yeSBjYW5ub3QgYmUgdXNlZA0KPiArICBmb3IgRE1BIGJ5IGRl ZmF1bHQuDQo+ICsNCg0KSSBzdXBwb3NlIHRoaXMgaXMgcmVxdWlyZWQgZm9yIGVuY3J5cHRpb24g c3VwcG9ydCwgYnV0IGlzbid0IGl0IG92ZXJseQ0KcmVzdHJpY3RpdmUgaW4gdGhlIGdlbmVyYWwg Y2FzZT8NCk9uIEFSTSBzeXN0ZW1zLCBtYW55IGRyaXZlcnMgZXhpc3QgdGhhdCBhcmUgbm90IFBD SSBiYXNlZCBidXQgZG8NCnBlcmZvcm0gRE1BLiAoaS5lLiwgRG1hTGliKQ0KW0ppZXdlbl0gVGhp cyBpcyBub3QgZm9yIGVuY3J5cHRpb24gc3VwcG9ydC4NClRoaXMgaXMgdG8gcHJldmVudCBETUEg YXR0YWNrIGZvciBzZWN1cml0eSBjb25jZXJuLiBXaGVuIElPTU1VIGRyaXZlciBsYXVuY2hlcywg aXQgc2hvdWxkIHNldCBhbGwgbWVtb3J5IHRvIGJlIG5vdCBETUEgY2FwYWJsZS4gVGhlbiBvbmx5 IHJlcXVlc3RlZCBETUEgbWVtb3J5IGlzIG9wZW4gZm9yIHRoZSBkZXZpY2UuDQoNCkluIHlvdXIg YmVsb3cgY2FzZSwgeW91IGp1c3Qgd2FudCB0byByZW1hcCBhYm92ZSA0R2lCIHRvIGJlbG93IDRH aUIuIEl0IGlzIG5vdCBmb3Igc2VjdXJpdHkuDQpNYXliZSB3ZSBjYW4gdXNlIHdlYWsgdGVybSDi gJMgdGhlIHN5c3RlbSBtZW1vcnkgKm1pZ2h0IG5vdCogYmUgdXNlZCBmb3IgRE1BIGJ5IGRlZmF1 bHQuDQoNCg0KPiArICBXaGVuIGEgZGV2aWNlIHJlcXVlc3RzIGEgRE1BIGFjY2VzcyBmb3IgYSBz eXN0ZW0gbWVtb3J5LA0KPiArICB0aGUgZGV2aWNlIGRyaXZlciBuZWVkIHVzZSBTZXRBdHRyaWJ1 dGUoKSB0byB1cGRhdGUgdGhlIElPTU1VDQo+ICsgIGF0dHJpYnV0ZSB0byByZXF1ZXN0IERNQSBh Y2Nlc3MgKHJlYWQgYW5kL29yIHdyaXRlKS4NCj4gKw0KPiArICBUaGUgRGV2aWNlSGFuZGxlIGlz IHVzZWQgdG8gaWRlbnRpZnkgd2hpY2ggZGV2aWNlIHN1Ym1pdHMgdGhlIHJlcXVlc3QuDQo+ICsg IFRoZSBJT01NVSBpbXBsZW1lbnRhdGlvbiBuZWVkIHRyYW5zbGF0ZSB0aGUgZGV2aWNlIHBhdGgg dG8gYW4gSU9NTVUgZGV2aWNlIElELA0KPiArICBhbmQgc2V0IElPTU1VIGhhcmR3YXJlIHJlZ2lz dGVyIGFjY29yZGluZ2x5Lg0KPiArICAxKSBEZXZpY2VIYW5kbGUgY2FuIGJlIGEgc3RhbmRhcmQg UENJIGRldmljZS4NCj4gKyAgICAgVGhlIG1lbW9yeSBmb3IgQnVzTWFzdGVyUmVhZCBuZWVkIHNl dCBFREtJSV9JT01NVV9BVFRSSUJVVEVfUkVBRC4NCj4gKyAgICAgVGhlIG1lbW9yeSBmb3IgQnVz TWFzdGVyV3JpdGUgbmVlZCBzZXQgRURLSUlfSU9NTVVfQVRUUklCVVRFX1dSSVRFLg0KPiArICAg ICBUaGUgbWVtb3J5IGZvciBCdXNNYXN0ZXJDb21tb25CdWZmZXIgbmVlZCBzZXQgRURLSUlfSU9N TVVfQVRUUklCVVRFX1JFQUR8RURLSUlfSU9NTVVfQVRUUklCVVRFX1dSSVRFLg0KPiArICAgICBB ZnRlciB0aGUgbWVtb3J5IGlzIHVzZWQsIHRoZSBtZW1vcnkgbmVlZCBzZXQgMCB0byBrZWVwIGl0 IGJlaW5nIHByb3RlY3RlZC4NCj4gKyAgMikgRGV2aWNlSGFuZGxlIGNhbiBiZSBhbiBBQ1BJIGRl dmljZSAoSVNBLCBJMkMsIFNQSSwgZXRjKS4NCj4gKyAgICAgVGhlIG1lbW9yeSBmb3IgRE1BIGFj Y2VzcyBuZWVkIHNldCBFREtJSV9JT01NVV9BVFRSSUJVVEVfUkVBRCBhbmQvb3IgRURLSUlfSU9N TVVfQVRUUklCVVRFX1dSSVRFLg0KPiArDQo+ICsgIEBwYXJhbVtpbl0gIFRoaXMgICAgICAgICAg ICAgIFRoZSBwcm90b2NvbCBpbnN0YW5jZSBwb2ludGVyLg0KPiArICBAcGFyYW1baW5dICBEZXZp Y2VIYW5kbGUgICAgICBUaGUgZGV2aWNlIHdobyBpbml0aWF0ZXMgdGhlIERNQSBhY2Nlc3MgcmVx dWVzdC4NCj4gKyAgQHBhcmFtW2luXSAgRGV2aWNlQWRkcmVzcyAgICAgVGhlIGJhc2Ugb2YgZGV2 aWNlIG1lbW9yeSBhZGRyZXNzIHRvIGJlIHVzZWQgYXMgdGhlIERNQSBtZW1vcnkuDQo+ICsgIEBw YXJhbVtpbl0gIExlbmd0aCAgICAgICAgICAgIFRoZSBsZW5ndGggb2YgZGV2aWNlIG1lbW9yeSBh ZGRyZXNzIHRvIGJlIHVzZWQgYXMgdGhlIERNQSBtZW1vcnkuDQo+ICsgIEBwYXJhbVtpbl0gIElv TW11QXR0cmlidXRlICAgIFRoZSBJT01NVSBhdHRyaWJ1dGUuDQo+ICsNCj4gKyAgQHJldHZhbCBF RklfU1VDQ0VTUyAgICAgICAgICAgIFRoZSBJb01tdUF0dHJpYnV0ZSBpcyBzZXQgZm9yIHRoZSBt ZW1vcnkgcmFuZ2Ugc3BlY2lmaWVkIGJ5IERldmljZUFkZHJlc3MgYW5kIExlbmd0aC4NCj4gKyAg QHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgIERldmljZUhhbmRsZSBpcyBhbiBpbnZhbGlk IGhhbmRsZS4NCj4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgIERldmljZUFkZHJl c3MgaXMgbm90IElvTW11IFBhZ2Ugc2l6ZSBhbGlnbmVkLg0KPiArICBAcmV0dmFsIEVGSV9JTlZB TElEX1BBUkFNRVRFUiAgTGVuZ3RoIGlzIG5vdCBJb01tdSBQYWdlIHNpemUgYWxpZ25lZC4NCj4g KyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgIExlbmd0aCBpcyAwLg0KPiArICBAcmV0 dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiAgSW9NbXVBdHRyaWJ1dGUgc3BlY2lmaWVkIGFuIGls bGVnYWwgY29tYmluYXRpb24gb2YgYXR0cmlidXRlcy4NCj4gKyAgQHJldHZhbCBFRklfVU5TVVBQ T1JURUQgICAgICAgIERldmljZUhhbmRsZSBpcyB1bmtub3duIGJ5IHRoZSBJT01NVS4NCj4gKyAg QHJldHZhbCBFRklfVU5TVVBQT1JURUQgICAgICAgIFRoZSBiaXQgbWFzayBvZiBJb01tdUF0dHJp YnV0ZSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBJT01NVS4NCj4gKyAgQHJldHZhbCBFRklfVU5T VVBQT1JURUQgICAgICAgIFRoZSBJT01NVSBkb2VzIG5vdCBzdXBwb3J0IHRoZSBtZW1vcnkgcmFu Z2Ugc3BlY2lmaWVkIGJ5IERldmljZUFkZHJlc3MgYW5kIExlbmd0aC4NCj4gKyAgQHJldHZhbCBF RklfT1VUX09GX1JFU09VUkNFUyAgIFRoZXJlIGFyZSBub3QgZW5vdWdoIHJlc291cmNlcyBhdmFp bGFibGUgdG8gbW9kaWZ5IHRoZSBJT01NVSBhdHRyaWJ1dGUuDQo+ICsgIEByZXR2YWwgRUZJX0RF VklDRV9FUlJPUiAgICAgICBUaGUgSU9NTVUgZGV2aWNlIHJlcG9ydGVkIGFuIGVycm9yIHdoaWxl IGF0dGVtcHRpbmcgdGhlIG9wZXJhdGlvbi4NCj4gKw0KPiArKiovDQo+ICt0eXBlZGVmDQo+ICtF RklfU1RBVFVTDQo+ICsoRUZJQVBJICpFREtJSV9JT01NVV9TRVRfQVRUUklCVVRFKSgNCj4gKyAg SU4gRURLSUlfSU9NTVVfUFJPVE9DT0wgICpUaGlzLA0KPiArICBJTiBFRklfSEFORExFICAgICAg ICAgICAgRGV2aWNlSGFuZGxlLA0KPiArICBJTiBFRklfUEhZU0lDQUxfQUREUkVTUyAgRGV2aWNl QWRkcmVzcywNCj4gKyAgSU4gVUlOVDY0ICAgICAgICAgICAgICAgIExlbmd0aCwNCj4gKyAgSU4g VUlOVDY0ICAgICAgICAgICAgICAgIElvTW11QXR0cmlidXRlDQo+ICsgICk7DQo+ICsNCj4gKy8q Kg0KPiArICBSZW1hcCBhIGRldmljZSBhZGRyZXNzIHRvIGhvc3QgYWRkcmVzcy4NCj4gKw0KPiAr ICBGb3IgZXhhbXBsZSwgdGhpcyBmdW5jdGlvbiBtYXkgc3VwcG9ydCBtYXAgYW4gYWJvdmUgNEdp QiBob3N0IGFkZHJlc3MNCj4gKyAgdG8gYSBiZWxvdyA0R2lCIGRldmljZSBhZGRyZXNzLg0KPiAr DQo+ICsgIEBwYXJhbVtpbl0gIFRoaXMgICAgICAgICAgICAgIFRoZSBwcm90b2NvbCBpbnN0YW5j ZSBwb2ludGVyLg0KPiArICBAcGFyYW1baW5dICBEZXZpY2VIYW5kbGUgICAgICBUaGUgZGV2aWNl IHdobyBpbml0aWF0ZXMgdGhlIERNQSBhY2Nlc3MgcmVxdWVzdC4NCj4gKyAgQHBhcmFtW2luXSAg RGV2aWNlQWRkcmVzcyAgICAgVGhlIGJhc2Ugb2YgZGV2aWNlIG1lbW9yeSBhZGRyZXNzIHRvIGJl IHVzZWQgYXMgdGhlIERNQSBtZW1vcnkuDQo+ICsgIEBwYXJhbVtpbl0gIEhvc3RBZGRyZXNzICAg ICAgIFRoZSBiYXNlIG9mIGhvc3QgbWVtb3J5IGFkZHJlc3MgdG8gYmUgdXNlZCBhcyB0aGUgRE1B IG1lbW9yeS4NCj4gKyAgQHBhcmFtW2luXSAgTGVuZ3RoICAgICAgICAgICAgVGhlIGxlbmd0aCBv ZiBkZXZpY2UgbWVtb3J5IGFkZHJlc3MgdG8gYmUgdXNlZCBhcyB0aGUgRE1BIG1lbW9yeS4NCj4g Kw0KPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICAgVGhlIEhvc3RBZGRyZXNzIGlz IHJlbW1hcHBlZCBmb3IgdGhlIG1lbW9yeSByYW5nZSBzcGVjaWZpZWQgYnkgRGV2aWNlQWRkcmVz cyBhbmQgTGVuZ3RoLg0KPiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiAgRGV2aWNl SGFuZGxlIGlzIG5vdCBOVUxMLCBhbmQgaXQgaXMgYW4gaW52YWxpZCBoYW5kbGUuDQo+ICsgIEBy ZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSICBEZXZpY2VBZGRyZXNzIGlzIG5vdCBJb01tdSBQ YWdlIHNpemUgYWxpZ25lZC4NCj4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgIEhv c3RBZGRyZXNzIGlzIG5vdCBJb01tdSBQYWdlIHNpemUgYWxpZ25lZC4NCj4gKyAgQHJldHZhbCBF RklfSU5WQUxJRF9QQVJBTUVURVIgIExlbmd0aCBpcyBub3QgSW9NbXUgUGFnZSBzaXplIGFsaWdu ZWQuDQo+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSICBMZW5ndGggaXMgMC4NCj4g KyAgQHJldHZhbCBFRklfVU5TVVBQT1JURUQgICAgICAgIERldmljZUhhbmRsZSBpcyB1bmtub3du IGJ5IHRoZSBJT01NVS4NCj4gKyAgQHJldHZhbCBFRklfVU5TVVBQT1JURUQgICAgICAgIFRoZSBy ZW1hcCBmdW5jdGlvbiBpcyB1bnN1cHBvcnRlZCBieSB0aGUgSU9NTVUuDQo+ICsgIEByZXR2YWwg RUZJX1VOU1VQUE9SVEVEICAgICAgICBUaGUgSU9NTVUgZG9lcyBub3Qgc3VwcG9ydCB0aGUgbWVt b3J5IHJhbmdlIHNwZWNpZmllZCBieSBEZXZpY2VBZGRyZXNzIGFuZCBMZW5ndGguDQo+ICsgIEBy ZXR2YWwgRUZJX09VVF9PRl9SRVNPVVJDRVMgICBUaGVyZSBhcmUgbm90IGVub3VnaCByZXNvdXJj ZXMgYXZhaWxhYmxlIHRvIG1vZGlmeSB0aGUgSU9NTVUgYXR0cmlidXRlLg0KPiArICBAcmV0dmFs IEVGSV9ERVZJQ0VfRVJST1IgICAgICAgVGhlIElPTU1VIGRldmljZSByZXBvcnRlZCBhbiBlcnJv ciB3aGlsZSBhdHRlbXB0aW5nIHRoZSBvcGVyYXRpb24uDQo+ICsNCj4gKyoqLw0KPiArdHlwZWRl Zg0KPiArRUZJX1NUQVRVUw0KPiArKEVGSUFQSSAqRURLSUlfSU9NTVVfU0VUX1JFTUFQX0FERFJF U1MpKA0KPiArICBJTiBFREtJSV9JT01NVV9QUk9UT0NPTCAgKlRoaXMsDQo+ICsgIElOIEVGSV9I QU5ETEUgICAgICAgICAgICBEZXZpY2VIYW5kbGUsIE9QVElPTkFMDQo+ICsgIElOIEVGSV9QSFlT SUNBTF9BRERSRVNTICBEZXZpY2VBZGRyZXNzLA0KPiArICBJTiBWT0lEICAgICAgICAgICAgICAg ICAgKkhvc3RBZGRyZXNzLA0KPiArICBJTiBVSU5UNjQgICAgICAgICAgICAgICAgTGVuZ3RoDQo+ ICsgICk7DQo+ICsNCj4gKy8qKg0KPiArICBSZXR1cm4gYSByZW1hcHBlZCBob3N0IGFkZHJlc3Mg ZnJvbSBhIGRldmljZSBhZGRyZXNzLg0KPiArDQo+ICsgIEBwYXJhbVtpbl0gIFRoaXMgICAgICAg ICAgICAgIFRoZSBwcm90b2NvbCBpbnN0YW5jZSBwb2ludGVyLg0KPiArICBAcGFyYW1baW5dICBE ZXZpY2VIYW5kbGUgICAgICBUaGUgZGV2aWNlIHdobyBpbml0aWF0ZXMgdGhlIERNQSBhY2Nlc3Mg cmVxdWVzdC4NCj4gKyAgQHBhcmFtW2luXSAgRGV2aWNlQWRkcmVzcyAgICAgVGhlIGJhc2Ugb2Yg ZGV2aWNlIG1lbW9yeSBhZGRyZXNzIHRvIGJlIHVzZWQgYXMgdGhlIERNQSBtZW1vcnkuDQo+ICsg IEBwYXJhbVtvdXRdIEhvc3RBZGRyZXNzICAgICAgIFRoZSBiYXNlIG9mIGhvc3QgbWVtb3J5IGFk ZHJlc3MgdG8gYmUgdXNlZCBhcyB0aGUgRE1BIG1lbW9yeS4NCj4gKw0KPiArICBAcmV0dmFsIEVG SV9TVUNDRVNTICAgICAgICAgICAgVGhlIEhvc3RBZGRyZXNzIHJlbW1hcHBlZCBmb3IgdGhlIG1l bW9yeSByYW5nZSBzcGVjaWZpZWQgYnkgRGV2aWNlQWRkcmVzcyBpcyByZXR1cm5lZC4NCj4gKyAg QHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgIERldmljZUhhbmRsZSBpcyBub3QgTlVMTCwg YW5kIGl0IGlzIGFuIGludmFsaWQgaGFuZGxlLg0KPiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BB UkFNRVRFUiAgRGV2aWNlQWRkcmVzcyBpcyBub3QgSW9NbXUgUGFnZSBzaXplIGFsaWduZWQuDQo+ ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSICBIb3N0QWRkcmVzcyBpcyBOVUxMLg0K PiArICBAcmV0dmFsIEVGSV9VTlNVUFBPUlRFRCAgICAgICAgRGV2aWNlSGFuZGxlIGlzIHVua25v d24gYnkgdGhlIElPTU1VLg0KPiArICBAcmV0dmFsIEVGSV9VTlNVUFBPUlRFRCAgICAgICAgVGhl IHJlbWFwIGZ1bmN0aW9uIGlzIHVuc3VwcG9ydGVkIGJ5IHRoZSBJT01NVS4NCj4gKyAgQHJldHZh bCBFRklfTk9UX0ZPVU5EICAgICAgICAgIFRoZSBIb3N0QWRkcmVzcyBmb3IgRGV2aWNlQWRkcmVz cyBpcyBub3QgZm91bmQuDQo+ICsgIEByZXR2YWwgRUZJX0RFVklDRV9FUlJPUiAgICAgICBUaGUg SU9NTVUgZGV2aWNlIHJlcG9ydGVkIGFuIGVycm9yIHdoaWxlIGF0dGVtcHRpbmcgdGhlIG9wZXJh dGlvbi4NCj4gKw0KPiArKiovDQo+ICt0eXBlZGVmDQo+ICtFRklfU1RBVFVTDQo+ICsoRUZJQVBJ ICpFREtJSV9JT01NVV9HRVRfUkVNQVBfQUREUkVTUykoDQo+ICsgIElOIEVES0lJX0lPTU1VX1BS T1RPQ09MICAqVGhpcywNCj4gKyAgSU4gRUZJX0hBTkRMRSAgICAgICAgICAgIERldmljZUhhbmRs ZSwgT1BUSU9OQUwNCj4gKyAgSU4gRUZJX1BIWVNJQ0FMX0FERFJFU1MgIERldmljZUFkZHJlc3Ms DQo+ICsgIE9VVCBWT0lEICAgICAgICAgICAgICAgICAqKkhvc3RBZGRyZXNzDQo+ICsgICk7DQo+ ICsNCj4gKy8vLw0KPiArLy8vIElPTU1VIFByb3RvY29sIHN0cnVjdHVyZS4NCj4gKy8vLw0KPiAr c3RydWN0IF9FREtJSV9JT01NVV9QUk9UT0NPTCB7DQo+ICsgIFVJTlQ2NCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFJldmlzaW9uOw0KPiArICBFREtJSV9JT01NVV9HRVRfUEFHRV9TSVpF ICAgICAgICAgICBHZXRQYWdlU2l6ZTsNCj4gKyAgRURLSUlfSU9NTVVfU0VUX0FUVFJJQlVURSAg ICAgICAgICAgU2V0QXR0cmlidXRlOw0KPiArICBFREtJSV9JT01NVV9TRVRfUkVNQVBfQUREUkVT UyAgICAgICBTZXRSZW1hcEFkZHJlc3M7DQo+ICsgIEVES0lJX0lPTU1VX0dFVF9SRU1BUF9BRERS RVNTICAgICAgIEdldFJlbWFwQWRkcmVzczsNCj4gK307DQo+ICsNCj4gKy8vLw0KPiArLy8vIElP TU1VIFByb3RvY29sIEdVSUQgdmFyaWFibGUuDQo+ICsvLy8NCj4gK2V4dGVybiBFRklfR1VJRCBn RWRraWlJb01tdVByb3RvY29sR3VpZDsNCj4gKw0KPiArI2VuZGlmDQo+IGRpZmYgLS1naXQgYS9N ZGVNb2R1bGVQa2cvTWRlTW9kdWxlUGtnLmRlYyBiL01kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cu ZGVjDQo+IGluZGV4IDM1NmIzZTEuLmRiNTk2YjYgMTAwNjQ0DQo+IC0tLSBhL01kZU1vZHVsZVBr Zy9NZGVNb2R1bGVQa2cuZGVjDQo+ICsrKyBiL01kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVj DQo+IEBAIC01NDAsNiArNTQwLDkgQEANCj4gICAgIyMgSW5jbHVkZS9Qcm90b2NvbC9Ob25EaXNj b3ZlcmFibGVEZXZpY2UuaA0KPiAgICBnRWRraWlOb25EaXNjb3ZlcmFibGVEZXZpY2VQcm90b2Nv bEd1aWQgPSB7IDB4MGQ1MTkwNWIsIDB4Yjc3ZSwgMHg0NTJhLCB7MHhhMiwgMHhjMCwgMHhlYywg MHhhMCwgMHhjYywgMHg4ZCwgMHg1MSwgMHg0YSB9IH0NCj4NCj4gKyAgIyMgSW5jbHVkZS9Qcm90 b2NvbC9Jb01tdS5oDQo+ICsgIGdFZGtpaUlvTW11UHJvdG9jb2xHdWlkID0geyAweDRlOTM5ZGU5 LCAweGQ5NDgsIDB4NGIwZiwgeyAweDg4LCAweGVkLCAweGU2LCAweGUxLCAweGNlLCAweDUxLCAw eDdjLCAweDFlIH0gfQ0KPiArDQo+ICAjDQo+ICAjIFtFcnJvci5nRWZpTWRlTW9kdWxlUGtnVG9r ZW5TcGFjZUd1aWRdDQo+ICAjICAgMHg4MDAwMDAwMSB8IEludmFsaWQgdmFsdWUgcHJvdmlkZWQu DQoNCkkgc2VlIGhvdyB0aGlzIHByb3RvY29sIGludGVuZHMgdG8gY2F0ZXIgZm9yIGEgbG90IG9m IGRpZmZlcmVudCB1c2UNCmNhc2VzLCBidXQgdGhlIG9uZSB0aGF0IHdpbGwgYmUgdGhlIG1vc3Qg Y29tbW9uIG9uIDY0LWJpdCBBUk0gaXMgYQ0Kc2ltcGxlIHN0YXRpYyB0cmFuc2xhdGlvbiBiZXR3 ZWVuIHRoZSBzdGFydCBvZiBEUkFNICh3aGljaCBtYXkgYmUgPiA0DQpHQikgYW5kIFBDSSBhZGRy ZXNzIHJhbmdlIFsgMHgwLCA0IEdCICksIGFuZCBhIDE6MSB0cmFuc2xhdGlvbiBmb3IgYWxsDQpv dGhlciBtYXN0ZXJzLg0KDQpUaGlzIG1heSByZXF1aXJlIGJvdW5jZSBidWZmZXJpbmcgZm9yIG5v bi1jb2hlcmVudCBtYXBwaW5ncywgYnV0IGl0DQpjYW4gYmUgYWNoaWV2ZWQgd2l0aCBhIHZlcnkg c2ltcGxlIGRyaXZlci4gSSBpbXBsZW1lbnRlZCBhIHByb29mIG9mDQpjb25jZXB0IGJhc2VkIG9u IExlbydzIEJtRG1hTGliIGhlcmUNCmh0dHBzOi8vZ2l0aHViLmNvbS9hcmRiaWVzaGV1dmVsL09w ZW5QbGF0Zm9ybVBrZy9jb21taXQvZGMyNTFmMGJmN2E4NTIwNWZiMzU5MGNjYzk3ODhiMDcyYTJi ZGNiOA0KDQpJbXBsZW1lbnRpbmcgSU9NTVUgcHJvdG9jb2wgYXMgc3BlY2lmaWVkIGhlcmUsIHdp dGggcmVtYXAoKSBlbnRyeQ0KcG9pbnRzLCBmb3JjZXMgbWUgdG8gbWFuYWdlIHRoZSBJT01NVSBw YWdlIHRhYmxlcyBkeW5hbWljYWxseSwgd2hpY2gNCmlzIGEgbGV2ZWwgb2YgY29tcGxleGl0eSB0 aGF0IGlzIHJlYWxseSBub3QgbmVlZGVkIGZvciBteSB1c2UgY2FzZSwNCmVzcGVjaWFsbHkgZ2l2 ZW4gdGhlIHJlcXVpcmVkIFRMQiBtYWludGVuYW5jZSBhbmQgb3RoZXIgY29uY2VybnMgdGhhdA0K ZG9uJ3QgcmVhbGx5IGV4aXN0IGZvciBhIHN0YXRpYyBtYXBwaW5nLg0KW0ppZXdlbl0gSSBhZ3Jl ZS4gSW4geW91ciBjYXNlLCBpdCBzaG91bGQgYmUgdmVyeSBzaW1wbGUuDQoNCllvdSBjYW4gY29u ZmlndXJlIGEgc3RhdGljIElPTU1VIHRhYmxlIGF0IHRoZSBkcml2ZXIgZW50ZXJwb2ludCwgYnV0 IHRoZXJlIGlzIG5vIG5lZWQgdG8gdXBkYXRlIGl0Lg0KDQpWZXJ5IGdvb2QgZmVlZGJhY2suIExl dCBtZSB0aGluayBhYm91dCBpdC4NCk1heWJlIGFuIElPTU1VLT5HZXRSZW1hcEFkZHJlc3MoKSBp biB0aGUgYmVnaW5uaW5nIGNhbiBtYWtlIGl0IHNpbXBsZS4NCg0KSWYgSSBoYXZlIG5ldyB2ZXJz aW9uIHBhdGNoLCBJIHdpbGwgcHJvdmlkZSBJT01NVSBzYW1wbGUgY29kZSBmb3IgeW91ciA0Ry1y ZW1hcCBhbmQgTGVv4oCZcyBTRVYgY2FzZS4NCg0KDQpBbHNvLCBjb3VsZCB5b3UgZXhwbGFpbiB3 aHkgd2UgbmVlZCB0byBjaGFuZ2UgdGhlIHJvb3QgYnJpZGdlICphbmQqDQp0aGUgYnVzIGRyaXZl cj8NCg0KW0ppZXdlbl0gVmVyeSBnb29kIHF1ZXN0aW9uLg0KSW4gbXkgY2FzZSwgSSBuZWVkIHRv IGtub3cgd2hpY2ggUENJIGRldmljZSBzdWJtaXRzIERNQSByZXF1ZXN0LCBzbyB0aGF0IEkgY2Fu IGNvbmZpZ3VyZSBJT01NVSBmb3IgKnRoaXMgUENJIGRldmljZSogb25seS4gSSBhbSBub3QgYWJs ZSB0byBkbyB0aGF0IGluIFBjaUhvc3RCcmlkZ2UgZHJpdmVyLCBiZWNhdXNlIHRoZSBQQ0kgZGV2 aWNlIGluZm9ybWF0aW9uIGlzIGxvc3QuDQoqVGhhdCBpcyB0aGUgYmlnZ2VzdCByZWFzb24gdGhh dCBJIGFtIG5vdCBhYmxlIHRvIHVzZSBMZW/igJlzIEJtRG1hTGliIGRpcmVjdGx5LiogSSBtdXN0 IHVwZGF0ZSBQY2lCdXMgZHJpdmVyLg0KDQpQY2lCdXMgZHJpdmVyIGNhbiBkbyByZW1hcCBhY3Rp b24gYnkgaXRzZWxmIHRvIG1ha2UgcmVxdWVzdGVkIG1lbW9yeSB0byBiZSBJT01NVSBwYWdlIGFs aWduZWQuIEJ1dCB0aGF0IGlzIGFsc28gbm90IGVub3VnaC4NCg0KMSkgICAgICAgUGNpSG9zdEJy aWRnZSBkcml2ZXIgbWF5IG5lZWQgZG8gcmVtYXAgd2l0aCBJT01NVSBwYWdlIGFsaWdubWVudCBk dWUgdG8gNEdpQiBpc3N1ZS4NCg0KMikgICAgICAgUGNpSG9zdEJyaWRnZSBkcml2ZXIgQ29weU1l bSBpcyB1c2VsZXNzLCBiZWNhdXNlIENvcHlNZW0gc2hvdWxkIGhhcHBlbiBhZnRlciBTZXRBdHRy aWJ1dGUgdG8gY2xlYXIgU0VWIGJpdC4NCg0KSWYgd2UgY2FuIGFzc3VtZSA0S0IgSU9NTVUsIGlm IGRvdWJsZSBjb3B5IGlzIG5vdCBhIHByb2JsZW0sIG1heWJlIHdlIGNhbiBlbGltaW5hdGUgUGNp SG9zdEJyaWRnZSB1cGRhdGUuDQoNClRoYW5rIHlvdQ0KWWFvIEppZXdlbg0KDQoNCg==