From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM01-SN1-obe.outbound.protection.outlook.com (mail-sn1nam01on0052.outbound.protection.outlook.com [104.47.32.52]) by dpdk.org (Postfix) with ESMTP id 597C12E8A for ; Mon, 30 Jan 2017 20:05:39 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=onevmw.onmicrosoft.com; s=selector1-vmware-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=AW76NPvglDCoiMRMxxCN5x+U+RTuF3kuZfkOt4P4dhY=; b=A2+qeIGvEaHP0AZKKE3AmnZSvAbj8aF8l7Bhqndu4yAZ817e1KvqXEBT1QZCZw1TRbn4I2zQtCzJElcgf8DYKVzWJLUrBqPboGLYKZZO2nbDEB8s6Alh8E6cfpL6oeeHJx/tXaABPc8bbq7KFmPnWGjTbH5Zqwrcd+RC5Vg75xY= Received: from BY2PR05MB2359.namprd05.prod.outlook.com (10.166.113.11) by BY2PR05MB2360.namprd05.prod.outlook.com (10.166.113.12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.888.5; Mon, 30 Jan 2017 19:05:37 +0000 Received: from BY2PR05MB2359.namprd05.prod.outlook.com ([10.166.113.11]) by BY2PR05MB2359.namprd05.prod.outlook.com ([10.166.113.11]) with mapi id 15.01.0874.019; Mon, 30 Jan 2017 19:05:37 +0000 From: Yong Wang To: Ferruh Yigit , Thomas Monjalon CC: "dev@dpdk.org" Thread-Topic: [PATCH v5] net/kni: add KNI PMD Thread-Index: AQHSexn6N9bybLq5Yk213iWPoyzfvKFRVjuw Date: Mon, 30 Jan 2017 19:05:36 +0000 Message-ID: References: <20161130181228.25380-1-ferruh.yigit@intel.com> <20170130165739.16253-1-ferruh.yigit@intel.com> In-Reply-To: <20170130165739.16253-1-ferruh.yigit@intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=yongwang@vmware.com; x-originating-ip: [208.91.1.34] x-ms-office365-filtering-correlation-id: 73e311f8-027f-40c8-8408-08d44942f9a3 x-microsoft-antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001);SRVR:BY2PR05MB2360; x-microsoft-exchange-diagnostics: 1; BY2PR05MB2360; 7:rIdI2IcJZ/e6hMv2lb+Wh/z/omyLVbHXm3yzotSzRtY7fG+39bgzztTk+tEZadPSXvmaAj08pSPn9f4r8VAnzvbqPr11cowBTi/ycvdi7LnO9SPgt7SgM+VlCVIJyl845sL4/LrunnTQja58Qzqw3Wi0TORO9VhCzSm4VX9hCtFvfteHUsBykTSpiwriCjX/NpnkotLawWNw0p6J4TnDPMdiFPALYZkCdkTJHrtKKc6Igk0Qeeu5vU6IYBrsFwIEC0XjDt4lOFiyI4XpKo5yEGou8AvtgmyhP3D306gCLHY9HWOEyhjOULovZ6qA62MF9F1v2YF/sZFHoAecJyjOe0Lt5Zc9izPr1yQIUQscQa8j3qW2siRqvCoSJYTCY6WpNiBCcLVKShqIeaFIx0L2WPRJalkV+1y7ZMVRZmzkpu6zDSVrBgY+FHTegtMoSCOihj2fWb58qtzYzQ8cAxjrVQ==; 20:CYdO7RBqw7IqM+ilsnD9qz+9urW5rF1xaD5VuqTtqXKURMCaGRoed7MKzM7bb9EUzFur3nsT7n228Cd0GXSaXJQOvfVqc4cqpSDs0Lw9M3ULkf72emyXr6bJy9EoHCLDNkIDeTRZWy8ABrjfDFK1X9y+pOVtBe41F1eZt3kRt3U= x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(61668805478150)(190756311086443)(228905959029699); x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001)(6041248)(20161123558021)(20161123555025)(20161123564025)(20161123562025)(20161123560025)(6072148); SRVR:BY2PR05MB2360; BCL:0; PCL:0; RULEID:; SRVR:BY2PR05MB2360; x-forefront-prvs: 0203C93D51 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(6009001)(7916002)(39450400003)(189002)(199003)(13464003)(377454003)(3280700002)(66066001)(6116002)(53936002)(102836003)(3846002)(9686003)(16200700003)(53946003)(92566002)(4326007)(2906002)(97736004)(7736002)(189998001)(5001770100001)(68736007)(74316002)(86362001)(305945005)(3660700001)(2950100002)(7696004)(8936002)(33656002)(38730400001)(101416001)(105586002)(106116001)(25786008)(229853002)(81156014)(2900100001)(77096006)(6436002)(55016002)(106356001)(99286003)(6506006)(5660300001)(54356999)(122556002)(8676002)(81166006)(76176999)(50986999)(559001)(579004)(569005); DIR:OUT; SFP:1101; SCL:1; SRVR:BY2PR05MB2360; H:BY2PR05MB2359.namprd05.prod.outlook.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; received-spf: None (protection.outlook.com: vmware.com does not designate permitted sender hosts) spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: vmware.com X-MS-Exchange-CrossTenant-originalarrivaltime: 30 Jan 2017 19:05:36.8807 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b39138ca-3cee-4b4a-a4d6-cd83d9dd62f0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY2PR05MB2360 Subject: Re: [dpdk-dev] [PATCH v5] net/kni: add KNI PMD X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 30 Jan 2017 19:05:40 -0000 PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBGZXJydWggWWlnaXQgW21haWx0 bzpmZXJydWgueWlnaXRAaW50ZWwuY29tXQ0KPiBTZW50OiBNb25kYXksIEphbnVhcnkgMzAsIDIw MTcgODo1OCBBTQ0KPiBUbzogVGhvbWFzIE1vbmphbG9uIDx0aG9tYXMubW9uamFsb25ANndpbmQu Y29tPjsgWW9uZyBXYW5nDQo+IDx5b25nd2FuZ0B2bXdhcmUuY29tPg0KPiBDYzogZGV2QGRwZGsu b3JnOyBGZXJydWggWWlnaXQgPGZlcnJ1aC55aWdpdEBpbnRlbC5jb20+DQo+IFN1YmplY3Q6IFtQ QVRDSCB2NV0gbmV0L2tuaTogYWRkIEtOSSBQTUQNCj4gDQo+IEFkZCBLTkkgUE1EIHdoaWNoIHdy YXBzIGxpYnJ0ZV9rbmkgZm9yIGVhc2Ugb2YgdXNlLg0KPiANCj4gS05JIFBNRCBjYW4gYmUgdXNl ZCBhcyBhbnkgcmVndWxhciBQTUQgdG8gc2VuZCAvIHJlY2VpdmUgcGFja2V0cyB0byB0aGUNCj4g TGludXggbmV0d29ya2luZyBzdGFjay4NCj4gDQo+IFNpZ25lZC1vZmYtYnk6IEZlcnJ1aCBZaWdp dCA8ZmVycnVoLnlpZ2l0QGludGVsLmNvbT4NCj4gLS0tDQoNCkxvb2tzIGdvb2QgZXhjZXB0IGEg ZmV3IHR5cG9zIGluIHRoZSBkb2N1bWVudGF0aW9uIGFkZGVkLg0KDQpSZXZpZXdlZC1ieTogWW9u ZyBXYW5nIDx5b25nd2FuZ0B2bXdhcmUuY29tPg0KDQo+IA0KPiB2NToNCj4gKiBhZGQga3Zhcmdz ICJub19yZXF1ZXN0X3RocmVhZCIgdG8gZGlzYWJsZSBhIHNwZWNpZmljIHB0aHJlYWQgY3JlYXRp b24NCj4gdG8gaGFuZGxlIGNvbnRyb2wgcmVxdWVzdHMuDQo+ICogYWRkIGRvY3VtZW50YXRpb24N Cj4gDQo+IHY0Og0KPiAqIGFsbG93IG9ubHkgc2luZ2xlIHF1ZXVlDQo+ICogdXNlIGRyaXZlci5u YW1lIGFzIG5hbWUNCj4gDQo+IHYzOg0KPiAqIHJlYmFzZSBvbiB0b3Agb2YgbGF0ZXN0IG1hc3Rl cg0KPiANCj4gdjI6DQo+ICogdXBkYXRlZCBkcml2ZXIgbmFtZSBldGhfa25pIC0+IG5ldF9rbmkN Cj4gLS0tDQo+ICBNQUlOVEFJTkVSUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDUg Kw0KPiAgY29uZmlnL2NvbW1vbl9iYXNlICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsNCj4g IGNvbmZpZy9jb21tb25fbGludXhhcHAgICAgICAgICAgICAgICAgICB8ICAgMSArDQo+ICBkb2Mv Z3VpZGVzL25pY3MvZmVhdHVyZXMva25pLmluaSAgICAgICAgfCAgIDcgKw0KPiAgZG9jL2d1aWRl cy9uaWNzL2luZGV4LnJzdCAgICAgICAgICAgICAgIHwgICAxICsNCj4gIGRvYy9ndWlkZXMvbmlj cy9rbmkucnN0ICAgICAgICAgICAgICAgICB8IDE5NyArKysrKysrKysrKysNCj4gIGRyaXZlcnMv bmV0L01ha2VmaWxlICAgICAgICAgICAgICAgICAgICB8ICAgMSArDQo+ICBkcml2ZXJzL25ldC9r bmkvTWFrZWZpbGUgICAgICAgICAgICAgICAgfCAgNjQgKysrKw0KPiAgZHJpdmVycy9uZXQva25p L3J0ZV9ldGhfa25pLmMgICAgICAgICAgIHwgNTE1DQo+ICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrDQo+ICBkcml2ZXJzL25ldC9rbmkvcnRlX3BtZF9rbmlfdmVyc2lvbi5tYXAgfCAg IDQgKw0KPiAgbWsvcnRlLmFwcC5tayAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDEwICst DQo+ICAxMSBmaWxlcyBjaGFuZ2VkLCA4MDEgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkN Cj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkb2MvZ3VpZGVzL25pY3MvZmVhdHVyZXMva25pLmluaQ0K PiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRvYy9ndWlkZXMvbmljcy9rbmkucnN0DQo+ICBjcmVhdGUg bW9kZSAxMDA2NDQgZHJpdmVycy9uZXQva25pL01ha2VmaWxlDQo+ICBjcmVhdGUgbW9kZSAxMDA2 NDQgZHJpdmVycy9uZXQva25pL3J0ZV9ldGhfa25pLmMNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBk cml2ZXJzL25ldC9rbmkvcnRlX3BtZF9rbmlfdmVyc2lvbi5tYXANCj4gDQo+IGRpZmYgLS1naXQg YS9NQUlOVEFJTkVSUyBiL01BSU5UQUlORVJTDQo+IGluZGV4IGYwNzExMzguLjhlYjgzZjUgMTAw NjQ0DQo+IC0tLSBhL01BSU5UQUlORVJTDQo+ICsrKyBiL01BSU5UQUlORVJTDQo+IEBAIC00MDQs NiArNDA0LDExIEBAIE06IEtlaXRoIFdpbGVzIDxrZWl0aC53aWxlc0BpbnRlbC5jb20+DQo+ICBG OiBkcml2ZXJzL25ldC90YXAvDQo+ICBGOiBkb2MvZ3VpZGVzL25pY3MvdGFwLnJzdA0KPiANCj4g K0tOSSBQTUQNCj4gK006IEZlcnJ1aCBZaWdpdCA8ZmVycnVoLnlpZ2l0QGludGVsLmNvbT4NCj4g K0Y6IGRyaXZlcnMvbmV0L2tuaS8NCj4gK0Y6IGRvYy9ndWlkZXMvbmljcy9rbmkucnN0DQo+ICsN Cj4gIFJpbmcgUE1EDQo+ICBNOiBCcnVjZSBSaWNoYXJkc29uIDxicnVjZS5yaWNoYXJkc29uQGlu dGVsLmNvbT4NCj4gIEY6IGRyaXZlcnMvbmV0L3JpbmcvDQo+IGRpZmYgLS1naXQgYS9jb25maWcv Y29tbW9uX2Jhc2UgYi9jb25maWcvY29tbW9uX2Jhc2UNCj4gaW5kZXggNjFlZmI4Ny4uMmUxYmJk NSAxMDA2NDQNCj4gLS0tIGEvY29uZmlnL2NvbW1vbl9iYXNlDQo+ICsrKyBiL2NvbmZpZy9jb21t b25fYmFzZQ0KPiBAQCAtNTc2LDYgKzU3Niw3IEBAIENPTkZJR19SVEVfUElQRUxJTkVfU1RBVFNf Q09MTEVDVD1uDQo+ICAjIENvbXBpbGUgbGlicnRlX2tuaQ0KPiAgIw0KPiAgQ09ORklHX1JURV9M SUJSVEVfS05JPW4NCj4gK0NPTkZJR19SVEVfTElCUlRFX1BNRF9LTkk9bg0KPiAgQ09ORklHX1JU RV9LTklfS01PRD1uDQo+ICBDT05GSUdfUlRFX0tOSV9LTU9EX0VUSFRPT0w9bg0KPiAgQ09ORklH X1JURV9LTklfUFJFRU1QVF9ERUZBVUxUPXkNCj4gZGlmZiAtLWdpdCBhL2NvbmZpZy9jb21tb25f bGludXhhcHAgYi9jb25maWcvY29tbW9uX2xpbnV4YXBwDQo+IGluZGV4IDAwZWJhYWMuLmQwM2E2 MGEgMTAwNjQ0DQo+IC0tLSBhL2NvbmZpZy9jb21tb25fbGludXhhcHANCj4gKysrIGIvY29uZmln L2NvbW1vbl9saW51eGFwcA0KPiBAQCAtMzksNiArMzksNyBAQCBDT05GSUdfUlRFX0VBTF9JR0Jf VUlPPXkNCj4gIENPTkZJR19SVEVfRUFMX1ZGSU89eQ0KPiAgQ09ORklHX1JURV9LTklfS01PRD15 DQo+ICBDT05GSUdfUlRFX0xJQlJURV9LTkk9eQ0KPiArQ09ORklHX1JURV9MSUJSVEVfUE1EX0tO ST15DQo+ICBDT05GSUdfUlRFX0xJQlJURV9WSE9TVD15DQo+ICBDT05GSUdfUlRFX0xJQlJURV9Q TURfVkhPU1Q9eQ0KPiAgQ09ORklHX1JURV9MSUJSVEVfUE1EX0FGX1BBQ0tFVD15DQo+IGRpZmYg LS1naXQgYS9kb2MvZ3VpZGVzL25pY3MvZmVhdHVyZXMva25pLmluaQ0KPiBiL2RvYy9ndWlkZXMv bmljcy9mZWF0dXJlcy9rbmkuaW5pDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAw MDAwMDAuLjZkZWI2NmENCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9kb2MvZ3VpZGVzL25pY3Mv ZmVhdHVyZXMva25pLmluaQ0KPiBAQCAtMCwwICsxLDcgQEANCj4gKzsNCj4gKzsgU3VwcG9ydGVk IGZlYXR1cmVzIG9mIHRoZSAna25pJyBuZXR3b3JrIHBvbGwgbW9kZSBkcml2ZXIuDQo+ICs7DQo+ ICs7IFJlZmVyIHRvIGRlZmF1bHQuaW5pIGZvciB0aGUgZnVsbCBsaXN0IG9mIGF2YWlsYWJsZSBQ TUQgZmVhdHVyZXMuDQo+ICs7DQo+ICtbRmVhdHVyZXNdDQo+ICtVc2FnZSBkb2MgICAgICAgICAg ICA9IFkNCj4gZGlmZiAtLWdpdCBhL2RvYy9ndWlkZXMvbmljcy9pbmRleC5yc3QgYi9kb2MvZ3Vp ZGVzL25pY3MvaW5kZXgucnN0DQo+IGluZGV4IDg3ZjkzMzQuLjUyNDg2MjUgMTAwNjQ0DQo+IC0t LSBhL2RvYy9ndWlkZXMvbmljcy9pbmRleC5yc3QNCj4gKysrIGIvZG9jL2d1aWRlcy9uaWNzL2lu ZGV4LnJzdA0KPiBAQCAtNDYsNiArNDYsNyBAQCBOZXR3b3JrIEludGVyZmFjZSBDb250cm9sbGVy IERyaXZlcnMNCj4gICAgICBpNDBlDQo+ICAgICAgaXhnYmUNCj4gICAgICBpbnRlbF92Zg0KPiAr ICAgIGtuaQ0KPiAgICAgIG1seDQNCj4gICAgICBtbHg1DQo+ICAgICAgbmZwDQo+IGRpZmYgLS1n aXQgYS9kb2MvZ3VpZGVzL25pY3Mva25pLnJzdCBiL2RvYy9ndWlkZXMvbmljcy9rbmkucnN0DQo+ IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAuLjJlMjAzMmINCj4gLS0tIC9k ZXYvbnVsbA0KPiArKysgYi9kb2MvZ3VpZGVzL25pY3Mva25pLnJzdA0KPiBAQCAtMCwwICsxLDE5 NyBAQA0KPiArLi4gIEJTRCBMSUNFTlNFDQo+ICsgICAgQ29weXJpZ2h0KGMpIDIwMTcgSW50ZWwg Q29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ICsgICAgQWxsIHJpZ2h0cyByZXNl cnZlZC4NCj4gKw0KPiArICAgIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dA0KPiArICAgIG1vZGlmaWNhdGlvbiwgYXJlIHBl cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucw0KPiArICAgIGFy ZSBtZXQ6DQo+ICsNCj4gKyAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0 IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0DQo+ICsgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KPiArICAgICogUmVkaXN0 cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln aHQNCj4gKyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93 aW5nIGRpc2NsYWltZXIgaW4NCj4gKyAgICB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlDQo+ICsgICAgZGlzdHJpYnV0aW9uLg0KPiArICAg ICogTmVpdGhlciB0aGUgbmFtZSBvZiBJbnRlbCBDb3Jwb3JhdGlvbiBub3IgdGhlIG5hbWVzIG9m IGl0cw0KPiArICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v dGUgcHJvZHVjdHMgZGVyaXZlZA0KPiArICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4NCj4gKw0KPiArICAgIFRISVMgU09GVFdB UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORA0KPiBDT05UUklCVVRP UlMNCj4gKyAgICAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs IElOQ0xVRElORywgQlVUDQo+IE5PVA0KPiArICAgIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORA0KPiBGSVRORVNTIEZPUg0KPiArICAgIEEg UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUN Cj4gQ09QWVJJR0hUDQo+ICsgICAgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig QU5ZIERJUkVDVCwgSU5ESVJFQ1QsDQo+IElOQ0lERU5UQUwsDQo+ICsgICAgU1BFQ0lBTCwgRVhF TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUDQo+IE5PVA0K PiArICAgIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS VklDRVM7IExPU1MNCj4gT0YgVVNFLA0KPiArICAgIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQNCj4gQU5EIE9OIEFOWQ0KPiArICAgIFRI RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks IE9SIFRPUlQNCj4gKyAgICAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT SU5HIElOIEFOWSBXQVkgT1VUIE9GDQo+IFRIRSBVU0UNCj4gKyAgICBPRiBUSElTIFNPRlRXQVJF LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gNCj4gREFNQUdFLg0K PiArDQo+ICtLTkkgUG9sbCBNb2RlIERyaXZlcg0KPiArPT09PT09PT09PT09PT09PT09PT09PQ0K PiArDQo+ICtLTkkgUE1EIGlzIHdyYXBwZXIgdG8gdGhlIDpyZWY6YGxpYnJ0ZV9rbmkgPGtuaT5g IGxpYnJhcnkuDQo+ICsNCj4gK1RoaXMgUE1EIGVuYWJsZXMgdXNpbmcgS05JIHdpdGhvdXQgaGF2 aW5nIGEgS05JIHNwZWNpZmljIGFwcGxpY2F0aW9uLA0KPiArYW55IGZvcndhcmRpbmcgYXBwbGlj YXRpb24gY2FuIHVzZSBQTUQgaW50ZXJmYWNlIGZvciBLTkkuDQo+ICsNCj4gK1NlbmRpbmcgcGFj a2V0cyB0byB0aGUgYW55IERQREsgY29udHJvbGxlZCBpbnRlcmZhY2Ugb3Igc2VuZGluZyB0byB0 aGUNCg0KInRvIHRoZSBhbnkgRFBESyIgc2hvdWxkIGJlICJ0b28gYW55IERQREsiDQogDQo+ICtM aW51eCBuZXR3b3JraW5nIHN0YWNrIHdpbGwgYmUgdHJhbnNwYXJlbnQgdG8gdGhlIERQREsgYXBw bGljYXRpb24uDQo+ICsNCj4gK1RvIGNyZWF0ZSBhIEtOSSBkZXZpY2UgYGBuZXRfa25pI2BgIGRl dmljZSBuYW1lIHNob3VsZCBiZSB1c2VkLCBhbmQgdGhpcw0KPiArd2lsbCBjcmVhdGUgYGBrbmkj YGAgTGludXggdmlydHVhbCBuZXR3b3JrIGludGVyZmFjZS4NCj4gKw0KPiArVGhlcmUgaXMgbm8g cGh5c2ljYWwgZGV2aWNlIGJhY2tlbmQgZm9yIHRoZSB2aXJ0dWFsIEtOSSBkZXZpY2UuDQo+ICsN Cj4gK1BhY2tldHMgc2VudCB0byB0aGUgS05JIExpbnV4IGludGVyZmFjZSB3aWxsIGJlIHJlY2Vp dmVkIGJ5IHRoZSBEUERLDQo+ICthcHBsaWNhdGlvbiwgYW5kIERQREsgYXBwbGljYXRpb24gbWF5 IGZvcndhcmQgcGFja2V0cyB0byBhIHBoeXNpY2FsIE5JQw0KPiArb3IgdG8gYSB2aXJ0dWFsIGRl dmljZSAobGlrZSBhbm90aGVyIEtOSSBpbnRlcmZhY2Ugb3IgUENBUCBpbnRlcmZhY2UpLg0KPiAr DQo+ICtUbyBmb3J3YXJkIGFueSB0cmFmZmljIGZyb20gcGh5c2ljYWwgTklDIHRvIHRoZSBMaW51 eCBuZXR3b3JraW5nIHN0YWNrLA0KPiArYW4gYXBwbGljYXRpb24gc2hvdWxkIGNvbnRyb2wgYSBw aHlzaWNhbCBwb3J0IGFuZCBjcmVhdGUgb25lIHZpcnR1YWwgS05JIHBvcnQsDQo+ICthbmQgZm9y d2FyZCBiZXR3ZWVuIHR3by4NCj4gKw0KPiArVXNpbmcgdGhpcyBQTUQgcmVxdWlyZXMgS05JIGtl cm5lbCBtb2R1bGUgYmUgaW5zZXJ0ZWQuDQo+ICsNCj4gKw0KPiArVXNhZ2UNCj4gKy0tLS0tDQo+ ICsNCj4gK0VBTCBgYC0tdmRldmBgIGFyZ3VtZW50IGNhbiBiZSB1c2VkIHRvIGNyZWF0ZSBLTkkg ZGV2aWNlIGluc3RhbmNlLCBsaWtlOjoNCj4gKw0KPiArICAgICAgICB0ZXN0cG1kIC0tdmRldj1u ZXRfa25pMCAtLXZkZXY9bmV0X2tuMSAtLSAtaQ0KPiArDQo+ICtBYm92ZSBjb21tYW5kIHdpbGwg Y3JlYXRlIGBga25pMGBgIGFuZCBgYGtuaTFgYCBMaW51eCBuZXR3b3JrIGludGVyZmFjZXMsDQo+ ICt0aG9zZSBpbnRlcmZhY2VzIGNhbiBiZSBjb250cm9sbGVkIGJ5IHN0YW5kYXJkIExpbnV4IHRv b2xzLg0KPiArDQo+ICtXaGVuIHRlc3RwbWQgZm9yd2FyZGluZyBzdGFydGVkLCBhbnkgcGFja2V0 cyBzZW5kIHRvIGBga25pMGBgIGludGVyZmFjZQ0KDQpzL3N0YXJ0ZWQvc3RhcnRzDQpzL3NlbmQv c2VudA0KDQo+ICtmb3J3YXJkZWQgdG8gdGhlIGBga25pMWBgIGludGVyZmFjZSBhbmQgdmljZSB2 ZXJzYS4NCj4gKw0KPiArVGhlcmUgaXMgbm8gaGFyZCBsaW1pdCBvbiBudW1iZXIgb2YgaW50ZXJm YWNlcyBjYW4gYmUgY3JlYXRlZC4NCg0KQWRkICJ0aGF0IiBhZnRlciAiaW50ZXJmYWNlcyIuDQoN Cj4gKw0KPiArDQo+ICtEZWZhdWx0IGludGVyZmFjZSBjb25maWd1cmF0aW9uDQo+ICstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ICsNCj4gK2BgbGlicnRlX2tuaWBgIGNhbiBjcmVh dGUgTGludXggbmV0d29yayBpbnRlcmZhY2VzIHdpdGggZGlmZmVyZW50IGZlYXR1cmVzLA0KPiAr ZmVhdHVyZSBzZXQgY29udHJvbGxlZCBieSBhIGNvbmZpZ3VyYXRpb24gc3RydWN0LCBhbmQgS05J IFBNRCB1c2VzIGEgZml4ZWQNCj4gK2NvbmZpZ3VyYXRpb246DQo+ICsNCj4gKyAgICAuLiBjb2Rl LWJsb2NrOjogY29uc29sZQ0KPiArDQo+ICsgICAgICAgIEludGVyZmFjZSBuYW1lOiBrbmkjDQo+ ICsgICAgICAgIGZvcmNlIGJpbmQga2VybmVsIHRocmVhZCB0byBhIGNvcmUgOiBOTw0KPiArICAg ICAgICBtYnVmIHNpemU6IE1BWF9QQUNLRVRfU1oNCj4gKw0KPiArS05JIGNvbnRyb2wgcGF0aCBp cyBub3Qgc3VwcG9ydGVkIHdpdGggdGhlIFBNRCwgc2luY2UgdGhlcmUgaXMgbm8gcGh5c2ljYWwN Cj4gK2JhY2tlbmQgZGV2aWNlIGJ5IGRlZmF1bHQuDQo+ICsNCj4gKw0KPiArUE1EIGFyZ3VtZW50 cw0KPiArLS0tLS0tLS0tLS0tLQ0KPiArDQo+ICtgYG5vX3JlcXVlc3RfdGhyZWFkYGAsIGJ5IGRl ZmF1bHQgUE1EIGNyZWF0ZXMgYSBwaHRyZWFkIGZvciBlYWNoIEtOSQ0KPiBpbnRlcmZhY2UNCj4g K3RvIGhhbmRsZSBMaW51eCBuZXR3b3JrIGludGVyZmFjZSBjb250cm9sIGNvbW1hbmRzLCBsaWtl IGBgaWZjb25maWcga25pMCB1cGBgDQo+ICsNCj4gK1dpdGggYGBub19yZXF1ZXN0X3RocmVhZGBg IG9wdGlvbiwgcHRocmVhZCBpcyBub3QgY3JlYXRlZCBhbmQgY29udHJvbA0KPiBjb21tYW5kcw0K PiArbm90IGhhbmRsZWQgYnkgUE1ELg0KPiArDQo+ICtCeSBkZWZhdWx0IHJlcXVlc3QgdGhyZWFk IGlzIGVuYWJsZWQuIEFuZCB0aGlzIGFyZ3VtZW50IHNob3VsZCBub3QgYmUgdXNlZA0KPiArbW9z dCBvZiB0aGUgdGltZSwgdW5sZXNzIHRoaXMgUE1EIHVzZWQgd2l0aCBjdXN0b21pemVkIERQREsg YXBwbGljYXRpb24NCj4gdG8gaGFuZGxlDQo+ICtyZXF1ZXN0cyBpdHNlbGYuDQo+ICsNCj4gK0Fy Z3VtZW50IHVzYWdlOjoNCj4gKw0KPiArICAgICAgICB0ZXN0cG1kIC0tdmRldiAibmV0X2tuaTAs bm9fcmVxdWVzdF90aHJlYWQ9MSIgLS0gLWkNCj4gKw0KPiArDQo+ICtQTUQgbG9nIG1lc3NhZ2Vz DQo+ICstLS0tLS0tLS0tLS0tLS0tDQo+ICsNCj4gK0lmIEtOSSBrZXJuZWwgbW9kdWxlIChydGVf a25pLmtvKSBub3QgaW5zZXJ0ZWQsIGZvbGxvd2luZyBlcnJvciBsb2cgcHJpbnRlZDo6DQo+ICsN Cj4gKyAgICAgICAgIktOSTogS05JIHN1YnN5c3RlbSBoYXMgbm90IGJlZW4gaW5pdGlhbGl6ZWQu IEludm9rZSBydGVfa25pX2luaXQoKSBmaXJzdCINCj4gKw0KPiArDQo+ICtQTUQgdGVzdGluZw0K PiArLS0tLS0tLS0tLS0NCj4gKw0KPiArSXQgaXMgcG9zc2libGUgdG8gdGVzdCBQTUQgcXVpY2x5 IHVzaW5nIEtOSSBrZXJuZWwgbW9kdWxlIGxvb3BiYWNrIGZlYXR1cmU6DQoNCnMvcXVpY2x5L3F1 aWNrbHkNCg0KPiArDQo+ICsqIEluc2VydCBLTkkga2VybmVsIG1vZHVsZSB3aXRoIGxvb3BiYWNr IHN1cHBvcnQ6DQo+ICsNCj4gKyAgICAuLiBjb2RlLWJsb2NrOjogY29uc29sZQ0KPiArDQo+ICsg ICAgICAgIGluc21vZCBidWlsZC9rbW9kL3J0ZV9rbmkua28gbG9fbW9kZT1sb19tb2RlX2ZpZm9f c2tiDQo+ICsNCj4gKyogU3RhcnQgdGVzdHBtZCB3aXRoIG5vIHBoeXNpY2FsIGRldmljZSBidXQg dHdvIEtOSSB2aXJ0dWFsIGRldmljZXM6DQo+ICsNCj4gKyAgICAuLiBjb2RlLWJsb2NrOjogY29u c29sZQ0KPiArDQo+ICsgICAgICAgIC4vdGVzdHBtZCAtLXZkZXYgbmV0X2tuaTAgLS12ZGV2IG5l dF9rbmkxIC0tIC1pDQo+ICsNCj4gKyAgICAuLiBjb2RlLWJsb2NrOjogY29uc29sZQ0KPiArDQo+ ICsgICAgICAgIC4uLg0KPiArICAgICAgICBDb25maWd1cmluZyBQb3J0IDAgKHNvY2tldCAwKQ0K PiArICAgICAgICBLTkk6IHBjaTogMDA6MDA6MDAgICAgICAgYzU4MDpiOA0KPiArICAgICAgICBQ b3J0IDA6IDFBOjRBOjVCOjdDOkEyOjhDDQo+ICsgICAgICAgIENvbmZpZ3VyaW5nIFBvcnQgMSAo c29ja2V0IDApDQo+ICsgICAgICAgIEtOSTogcGNpOiAwMDowMDowMCAgICAgICA2MDA6YjkNCj4g KyAgICAgICAgUG9ydCAxOiBBRTo5NToyMTowNzo5MzpERA0KPiArICAgICAgICBDaGVja2luZyBs aW5rIHN0YXR1c2VzLi4uDQo+ICsgICAgICAgIFBvcnQgMCBMaW5rIFVwIC0gc3BlZWQgMTAwMDAg TWJwcyAtIGZ1bGwtZHVwbGV4DQo+ICsgICAgICAgIFBvcnQgMSBMaW5rIFVwIC0gc3BlZWQgMTAw MDAgTWJwcyAtIGZ1bGwtZHVwbGV4DQo+ICsgICAgICAgIERvbmUNCj4gKyAgICAgICAgdGVzdHBt ZD4NCj4gKw0KPiArKiBPYnNlcnZlIExpbnV4IGludGVyZmFjZXMNCj4gKw0KPiArICAgIC4uIGNv ZGUtYmxvY2s6OiBjb25zb2xlDQo+ICsNCj4gKyAgICAgICAgJCBpZmNvbmZpZyBrbmkwICYmIGlm Y29uZmlnIGtuaTENCj4gKyAgICAgICAga25pMDogZmxhZ3M9NDA5ODxCUk9BRENBU1QsTVVMVElD QVNUPiAgbXR1IDE1MDANCj4gKyAgICAgICAgICAgICAgICBldGhlciBhZTo4ZTo3OTo4ZTo5Yjpj OCAgdHhxdWV1ZWxlbiAxMDAwICAoRXRoZXJuZXQpDQo+ICsgICAgICAgICAgICAgICAgUlggcGFj a2V0cyAwICBieXRlcyAwICgwLjAgQikNCj4gKyAgICAgICAgICAgICAgICBSWCBlcnJvcnMgMCAg ZHJvcHBlZCAwICBvdmVycnVucyAwICBmcmFtZSAwDQo+ICsgICAgICAgICAgICAgICAgVFggcGFj a2V0cyAwICBieXRlcyAwICgwLjAgQikNCj4gKyAgICAgICAgICAgICAgICBUWCBlcnJvcnMgMCAg ZHJvcHBlZCAwIG92ZXJydW5zIDAgIGNhcnJpZXIgMCAgY29sbGlzaW9ucyAwDQo+ICsNCj4gKyAg ICAgICAga25pMTogZmxhZ3M9NDA5ODxCUk9BRENBU1QsTVVMVElDQVNUPiAgbXR1IDE1MDANCj4g KyAgICAgICAgICAgICAgICBldGhlciA5ZTo3Njo0Mzo1MzozZTo5YiAgdHhxdWV1ZWxlbiAxMDAw ICAoRXRoZXJuZXQpDQo+ICsgICAgICAgICAgICAgICAgUlggcGFja2V0cyAwICBieXRlcyAwICgw LjAgQikNCj4gKyAgICAgICAgICAgICAgICBSWCBlcnJvcnMgMCAgZHJvcHBlZCAwICBvdmVycnVu cyAwICBmcmFtZSAwDQo+ICsgICAgICAgICAgICAgICAgVFggcGFja2V0cyAwICBieXRlcyAwICgw LjAgQikNCj4gKyAgICAgICAgICAgICAgICBUWCBlcnJvcnMgMCAgZHJvcHBlZCAwIG92ZXJydW5z IDAgIGNhcnJpZXIgMCAgY29sbGlzaW9ucyAwDQo+ICsNCj4gKw0KPiArKiBTdGFydCBmb3J3YXJk aW5nIHdpdGggdHhfZmlyc3Q6DQo+ICsNCj4gKyAgICAuLiBjb2RlLWJsb2NrOjogY29uc29sZQ0K PiArDQo+ICsgICAgICAgIHRlc3RwbWQ+IHN0YXJ0IHR4X2ZpcnN0DQo+ICsNCj4gKyogUXVpdCBh bmQgY2hlY2sgZm9yd2FyZGluZyBzdGF0czoNCj4gKw0KPiArICAgIC4uIGNvZGUtYmxvY2s6OiBj b25zb2xlDQo+ICsNCj4gKyAgICAgICAgdGVzdHBtZD4gcXVpdA0KPiArICAgICAgICBUZWxsaW5n IGNvcmVzIHRvIHN0b3AuLi4NCj4gKyAgICAgICAgV2FpdGluZyBmb3IgbGNvcmVzIHRvIGZpbmlz aC4uLg0KPiArDQo+ICsgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRm9yd2FyZCBzdGF0 aXN0aWNzIGZvciBwb3J0IDAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gKyAgICAgICAgUlgt cGFja2V0czogMzU2Mzc5MDUgICAgICAgUlgtZHJvcHBlZDogMCAgICAgICAgICAgICBSWC10b3Rh bDogMzU2Mzc5MDUNCj4gKyAgICAgICAgVFgtcGFja2V0czogMzU2Mzc5NDcgICAgICAgVFgtZHJv cHBlZDogMCAgICAgICAgICAgICBUWC10b3RhbDogMzU2Mzc5NDcNCj4gKyAgICAgICAgLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQ0KPiArDQo+ICsgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRm9y d2FyZCBzdGF0aXN0aWNzIGZvciBwb3J0IDEgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gKyAg ICAgICAgUlgtcGFja2V0czogMzU2Mzc5MTUgICAgICAgUlgtZHJvcHBlZDogMCAgICAgICAgICAg ICBSWC10b3RhbDogMzU2Mzc5MTUNCj4gKyAgICAgICAgVFgtcGFja2V0czogMzU2Mzc5MzcgICAg ICAgVFgtZHJvcHBlZDogMCAgICAgICAgICAgICBUWC10b3RhbDogMzU2Mzc5MzcNCj4gKyAgICAg ICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiArDQo+ICsgICAgICAgICsrKysrKysrKysrKysrKyBB Y2N1bXVsYXRlZCBmb3J3YXJkIHN0YXRpc3RpY3MgZm9yIGFsbA0KPiBwb3J0cysrKysrKysrKysr KysrKw0KPiArICAgICAgICBSWC1wYWNrZXRzOiA3MTI3NTgyMCAgICAgICBSWC1kcm9wcGVkOiAw ICAgICAgICAgICAgIFJYLXRvdGFsOiA3MTI3NTgyMA0KPiArICAgICAgICBUWC1wYWNrZXRzOiA3 MTI3NTg4NCAgICAgICBUWC1kcm9wcGVkOiAwICAgICAgICAgICAgIFRYLXRvdGFsOiA3MTI3NTg4 NA0KPiArDQo+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysNCj4gKysrKysrKysrKysrKysrKysrDQo+ICsNCj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvbmV0L01ha2VmaWxlIGIvZHJpdmVycy9uZXQvTWFrZWZpbGUNCj4gaW5kZXggNDBmYzMz My4uOGZkNjc0NSAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9uZXQvTWFrZWZpbGUNCj4gKysrIGIv ZHJpdmVycy9uZXQvTWFrZWZpbGUNCj4gQEAgLTQxLDYgKzQxLDcgQEAgRElSUy0kKENPTkZJR19S VEVfTElCUlRFX0VOSUNfUE1EKSArPSBlbmljDQo+ICBESVJTLSQoQ09ORklHX1JURV9MSUJSVEVf Rk0xMEtfUE1EKSArPSBmbTEwaw0KPiAgRElSUy0kKENPTkZJR19SVEVfTElCUlRFX0k0MEVfUE1E KSArPSBpNDBlDQo+ICBESVJTLSQoQ09ORklHX1JURV9MSUJSVEVfSVhHQkVfUE1EKSArPSBpeGdi ZQ0KPiArRElSUy0kKENPTkZJR19SVEVfTElCUlRFX1BNRF9LTkkpICs9IGtuaQ0KPiAgRElSUy0k KENPTkZJR19SVEVfTElCUlRFX01MWDRfUE1EKSArPSBtbHg0DQo+ICBESVJTLSQoQ09ORklHX1JU RV9MSUJSVEVfTUxYNV9QTUQpICs9IG1seDUNCj4gIERJUlMtJChDT05GSUdfUlRFX0xJQlJURV9N UElQRV9QTUQpICs9IG1waXBlDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9rbmkvTWFrZWZp bGUgYi9kcml2ZXJzL25ldC9rbmkvTWFrZWZpbGUNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4g aW5kZXggMDAwMDAwMC4uYjMwMTdiMQ0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL2RyaXZlcnMv bmV0L2tuaS9NYWtlZmlsZQ0KPiBAQCAtMCwwICsxLDY0IEBADQo+ICsjICAgQlNEIExJQ0VOU0UN Cj4gKyMNCj4gKyMgICBDb3B5cmlnaHQoYykgMjAxNyBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJp Z2h0cyByZXNlcnZlZC4NCj4gKyMNCj4gKyMgICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCj4gKyMgICBtb2RpZmljYXRp b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMN Cj4gKyMgICBhcmUgbWV0Og0KPiArIw0KPiArIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291 cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodA0KPiArIyAgICAgICBub3Rp Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu DQo+ICsjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj ZSB0aGUgYWJvdmUgY29weXJpZ2h0DQo+ICsjICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbg0KPiArIyAgICAgICB0aGUg ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlDQo+ ICsjICAgICAgIGRpc3RyaWJ1dGlvbi4NCj4gKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBJ bnRlbCBDb3Jwb3JhdGlvbiBub3IgdGhlIG5hbWVzIG9mIGl0cw0KPiArIyAgICAgICBjb250cmli dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQN Cj4gKyMgICAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp dHRlbiBwZXJtaXNzaW9uLg0KPiArIw0KPiArIyAgIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORA0KPiBDT05UUklCVVRPUlMNCj4gKyMgICAiQVMg SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU DQo+IE5PVA0KPiArIyAgIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS Q0hBTlRBQklMSVRZIEFORA0KPiBGSVRORVNTIEZPUg0KPiArIyAgIEEgUEFSVElDVUxBUiBQVVJQ T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUNCj4gQ09QWVJJR0hUDQo+ ICsjICAgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E SVJFQ1QsDQo+IElOQ0lERU5UQUwsDQo+ICsjICAgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUDQo+IE5PVA0KPiArIyAgIExJTUlURUQg VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MNCj4g T0YgVVNFLA0KPiArIyAgIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP TikgSE9XRVZFUiBDQVVTRUQNCj4gQU5EIE9OIEFOWQ0KPiArIyAgIFRIRU9SWSBPRiBMSUFCSUxJ VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SDQo+IFRPUlQNCj4g KyMgICAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX QVkgT1VUIE9GDQo+IFRIRSBVU0UNCj4gKyMgICBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gNCj4gREFNQUdFLg0KPiArDQo+ICtpbmNs dWRlICQoUlRFX1NESykvbWsvcnRlLnZhcnMubWsNCj4gKw0KPiArIw0KPiArIyBsaWJyYXJ5IG5h bWUNCj4gKyMNCj4gK0xJQiA9IGxpYnJ0ZV9wbWRfa25pLmENCj4gKw0KPiArQ0ZMQUdTICs9IC1P Mw0KPiArQ0ZMQUdTICs9ICQoV0VSUk9SX0ZMQUdTKQ0KPiArTERMSUJTICs9IC1scHRocmVhZA0K PiArDQo+ICtFWFBPUlRfTUFQIDo9IHJ0ZV9wbWRfa25pX3ZlcnNpb24ubWFwDQo+ICsNCj4gK0xJ QkFCSVZFUiA6PSAxDQo+ICsNCj4gKyMNCj4gKyMgYWxsIHNvdXJjZSBhcmUgc3RvcmVkIGluIFNS Q1MteQ0KPiArIw0KPiArU1JDUy0kKENPTkZJR19SVEVfTElCUlRFX1BNRF9LTkkpICs9IHJ0ZV9l dGhfa25pLmMNCj4gKw0KPiArIw0KPiArIyBFeHBvcnQgaW5jbHVkZSBmaWxlcw0KPiArIw0KPiAr U1lNTElOSy15LWluY2x1ZGUgKz0NCj4gKw0KPiArIyB0aGlzIGxpYiBkZXBlbmRzIHVwb246DQo+ ICtERVBESVJTLSQoQ09ORklHX1JURV9MSUJSVEVfUE1EX0tOSSkgKz0gbGliL2xpYnJ0ZV9lYWwN Cj4gK0RFUERJUlMtJChDT05GSUdfUlRFX0xJQlJURV9QTURfS05JKSArPSBsaWIvbGlicnRlX2V0 aGVyDQo+ICtERVBESVJTLSQoQ09ORklHX1JURV9MSUJSVEVfUE1EX0tOSSkgKz0gbGliL2xpYnJ0 ZV9rbmkNCj4gK0RFUERJUlMtJChDT05GSUdfUlRFX0xJQlJURV9QTURfS05JKSArPSBsaWIvbGli cnRlX2t2YXJncw0KPiArREVQRElSUy0kKENPTkZJR19SVEVfTElCUlRFX1BNRF9LTkkpICs9IGxp Yi9saWJydGVfbWJ1Zg0KPiArREVQRElSUy0kKENPTkZJR19SVEVfTElCUlRFX1BNRF9LTkkpICs9 IGxpYi9saWJydGVfbWVtcG9vbA0KPiArDQo+ICtpbmNsdWRlICQoUlRFX1NESykvbWsvcnRlLmxp Yi5taw0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQva25pL3J0ZV9ldGhfa25pLmMgYi9kcml2 ZXJzL25ldC9rbmkvcnRlX2V0aF9rbmkuYw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRl eCAwMDAwMDAwLi41OTIwNWU3DQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvZHJpdmVycy9uZXQv a25pL3J0ZV9ldGhfa25pLmMNCj4gQEAgLTAsMCArMSw1MTUgQEANCj4gKy8qLQ0KPiArICogICBC U0QgTElDRU5TRQ0KPiArICoNCj4gKyAqICAgQ29weXJpZ2h0KGMpIDIwMTcgSW50ZWwgQ29ycG9y YXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ICsgKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQu DQo+ICsgKg0KPiArICogICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCj4gKyAqICAgbW9kaWZpY2F0aW9uLCBhcmUgcGVy bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zDQo+ICsgKiAgIGFy ZSBtZXQ6DQo+ICsgKg0KPiArICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQNCj4gKyAqICAgICAgIG5vdGljZSwgdGhp cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4NCj4gKyAq ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg YWJvdmUgY29weXJpZ2h0DQo+ICsgKiAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4NCj4gKyAqICAgICAgIHRoZSBkb2N1 bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUNCj4gKyAq ICAgICAgIGRpc3RyaWJ1dGlvbi4NCj4gKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgSW50 ZWwgQ29ycG9yYXRpb24gbm9yIHRoZSBuYW1lcyBvZiBpdHMNCj4gKyAqICAgICAgIGNvbnRyaWJ1 dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZA0K PiArICogICAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp dHRlbiBwZXJtaXNzaW9uLg0KPiArICoNCj4gKyAqICAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EDQo+IENPTlRSSUJVVE9SUw0KPiArICogICAi QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg QlVUDQo+IE5PVA0KPiArICogICBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G IE1FUkNIQU5UQUJJTElUWSBBTkQNCj4gRklUTkVTUyBGT1INCj4gKyAqICAgQSBQQVJUSUNVTEFS IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQ0KPiBDT1BZUklH SFQNCj4gKyAqICAgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD VCwgSU5ESVJFQ1QsDQo+IElOQ0lERU5UQUwsDQo+ICsgKiAgIFNQRUNJQUwsIEVYRU1QTEFSWSwg T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVA0KPiBOT1QNCj4gKyAqICAg TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg TE9TUw0KPiBPRiBVU0UsDQo+ICsgKiAgIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQNCj4gQU5EIE9OIEFOWQ0KPiArICogICBUSEVPUlkg T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUg0K PiBUT1JUDQo+ICsgKiAgIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ TkcgSU4gQU5ZIFdBWSBPVVQgT0YNCj4gVEhFIFVTRQ0KPiArICogICBPRiBUSElTIFNPRlRXQVJF LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gNCj4gREFNQUdFLg0K PiArICovDQo+ICsNCj4gKyNpbmNsdWRlIDxmY250bC5oPg0KPiArI2luY2x1ZGUgPHB0aHJlYWQu aD4NCj4gKyNpbmNsdWRlIDx1bmlzdGQuaD4NCj4gKw0KPiArI2luY2x1ZGUgPHJ0ZV9ldGhkZXYu aD4NCj4gKyNpbmNsdWRlIDxydGVfa25pLmg+DQo+ICsjaW5jbHVkZSA8cnRlX2t2YXJncy5oPg0K PiArI2luY2x1ZGUgPHJ0ZV9tYWxsb2MuaD4NCj4gKyNpbmNsdWRlIDxydGVfdmRldi5oPg0KPiAr DQo+ICsvKiBPbmx5IHNpbmdsZSBxdWV1ZSBzdXBwb3J0ZWQgKi8NCj4gKyNkZWZpbmUgS05JX01B WF9RVUVVRV9QRVJfUE9SVCAxDQo+ICsNCj4gKyNkZWZpbmUgTUFYX1BBQ0tFVF9TWiAyMDQ4DQo+ ICsjZGVmaW5lIE1BWF9LTklfUE9SVFMgOA0KPiArDQo+ICsjZGVmaW5lIEVUSF9LTklfTk9fUkVR VUVTVF9USFJFQURfQVJHCSJub19yZXF1ZXN0X3RocmVhZCINCj4gK3N0YXRpYyBjb25zdCBjaGFy ICogY29uc3QgdmFsaWRfYXJndW1lbnRzW10gPSB7DQo+ICsJRVRIX0tOSV9OT19SRVFVRVNUX1RI UkVBRF9BUkcsDQo+ICsJTlVMTA0KPiArfTsNCj4gKw0KPiArc3RydWN0IGV0aF9rbmlfYXJncyB7 DQo+ICsJaW50IG5vX3JlcXVlc3RfdGhyZWFkOw0KPiArfTsNCj4gKw0KPiArc3RydWN0IHBtZF9x dWV1ZV9zdGF0cyB7DQo+ICsJdWludDY0X3QgcGt0czsNCj4gKwl1aW50NjRfdCBieXRlczsNCj4g Kwl1aW50NjRfdCBlcnJfcGt0czsNCj4gK307DQo+ICsNCj4gK3N0cnVjdCBwbWRfcXVldWUgew0K PiArCXN0cnVjdCBwbWRfaW50ZXJuYWxzICppbnRlcm5hbHM7DQo+ICsJc3RydWN0IHJ0ZV9tZW1w b29sICptYl9wb29sOw0KPiArDQo+ICsJc3RydWN0IHBtZF9xdWV1ZV9zdGF0cyByeDsNCj4gKwlz dHJ1Y3QgcG1kX3F1ZXVlX3N0YXRzIHR4Ow0KPiArfTsNCj4gKw0KPiArc3RydWN0IHBtZF9pbnRl cm5hbHMgew0KPiArCXN0cnVjdCBydGVfa25pICprbmk7DQo+ICsJaW50IGlzX2tuaV9zdGFydGVk Ow0KPiArDQo+ICsJcHRocmVhZF90IHRocmVhZDsNCj4gKwlpbnQgc3RvcF90aHJlYWQ7DQo+ICsJ aW50IG5vX3JlcXVlc3RfdGhyZWFkOw0KPiArDQo+ICsJc3RydWN0IGV0aGVyX2FkZHIgZXRoX2Fk ZHI7DQo+ICsNCj4gKwlzdHJ1Y3QgcG1kX3F1ZXVlIHJ4X3F1ZXVlc1tLTklfTUFYX1FVRVVFX1BF Ul9QT1JUXTsNCj4gKwlzdHJ1Y3QgcG1kX3F1ZXVlIHR4X3F1ZXVlc1tLTklfTUFYX1FVRVVFX1BF Ul9QT1JUXTsNCj4gK307DQo+ICsNCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgcnRlX2V0aF9saW5r IHBtZF9saW5rID0gew0KPiArCQkubGlua19zcGVlZCA9IEVUSF9TUEVFRF9OVU1fMTBHLA0KPiAr CQkubGlua19kdXBsZXggPSBFVEhfTElOS19GVUxMX0RVUExFWCwNCj4gKwkJLmxpbmtfc3RhdHVz ID0gRVRIX0xJTktfRE9XTiwNCj4gKwkJLmxpbmtfYXV0b25lZyA9IEVUSF9MSU5LX1NQRUVEX0FV VE9ORUcsDQo+ICt9Ow0KPiArc3RhdGljIGludCBpc19rbmlfaW5pdGlhbGl6ZWQ7DQo+ICsNCj4g K3N0YXRpYyB1aW50MTZfdA0KPiArZXRoX2tuaV9yeCh2b2lkICpxLCBzdHJ1Y3QgcnRlX21idWYg KipidWZzLCB1aW50MTZfdCBuYl9idWZzKQ0KPiArew0KPiArCXN0cnVjdCBwbWRfcXVldWUgKmtu aV9xID0gcTsNCj4gKwlzdHJ1Y3QgcnRlX2tuaSAqa25pID0ga25pX3EtPmludGVybmFscy0+a25p Ow0KPiArCXVpbnQxNl90IG5iX3BrdHM7DQo+ICsNCj4gKwluYl9wa3RzID0gcnRlX2tuaV9yeF9i dXJzdChrbmksIGJ1ZnMsIG5iX2J1ZnMpOw0KPiArDQo+ICsJa25pX3EtPnJ4LnBrdHMgKz0gbmJf cGt0czsNCj4gKwlrbmlfcS0+cnguZXJyX3BrdHMgKz0gbmJfYnVmcyAtIG5iX3BrdHM7DQo+ICsN Cj4gKwlyZXR1cm4gbmJfcGt0czsNCj4gK30NCj4gKw0KPiArc3RhdGljIHVpbnQxNl90DQo+ICtl dGhfa25pX3R4KHZvaWQgKnEsIHN0cnVjdCBydGVfbWJ1ZiAqKmJ1ZnMsIHVpbnQxNl90IG5iX2J1 ZnMpDQo+ICt7DQo+ICsJc3RydWN0IHBtZF9xdWV1ZSAqa25pX3EgPSBxOw0KPiArCXN0cnVjdCBy dGVfa25pICprbmkgPSBrbmlfcS0+aW50ZXJuYWxzLT5rbmk7DQo+ICsJdWludDE2X3QgbmJfcGt0 czsNCj4gKw0KPiArCW5iX3BrdHMgPSAgcnRlX2tuaV90eF9idXJzdChrbmksIGJ1ZnMsIG5iX2J1 ZnMpOw0KPiArDQo+ICsJa25pX3EtPnR4LnBrdHMgKz0gbmJfcGt0czsNCj4gKwlrbmlfcS0+dHgu ZXJyX3BrdHMgKz0gbmJfYnVmcyAtIG5iX3BrdHM7DQo+ICsNCj4gKwlyZXR1cm4gbmJfcGt0czsN Cj4gK30NCj4gKw0KPiArc3RhdGljIHZvaWQgKg0KPiAra25pX2hhbmRsZV9yZXF1ZXN0KHZvaWQg KnBhcmFtKQ0KPiArew0KPiArCXN0cnVjdCBwbWRfaW50ZXJuYWxzICppbnRlcm5hbHMgPSBwYXJh bTsNCj4gKyNkZWZpbmUgTVMgMTAwMA0KPiArDQo+ICsJd2hpbGUgKCFpbnRlcm5hbHMtPnN0b3Bf dGhyZWFkKSB7DQo+ICsJCXJ0ZV9rbmlfaGFuZGxlX3JlcXVlc3QoaW50ZXJuYWxzLT5rbmkpOw0K PiArCQl1c2xlZXAoNTAwICogTVMpOw0KPiArCX0NCj4gKw0KPiArCXJldHVybiBwYXJhbTsNCj4g K30NCj4gKw0KPiArc3RhdGljIGludA0KPiArZXRoX2tuaV9zdGFydChzdHJ1Y3QgcnRlX2V0aF9k ZXYgKmRldikNCj4gK3sNCj4gKwlzdHJ1Y3QgcG1kX2ludGVybmFscyAqaW50ZXJuYWxzID0gZGV2 LT5kYXRhLT5kZXZfcHJpdmF0ZTsNCj4gKwl1aW50MTZfdCBwb3J0X2lkID0gZGV2LT5kYXRhLT5w b3J0X2lkOw0KPiArCXN0cnVjdCBydGVfbWVtcG9vbCAqbWJfcG9vbDsNCj4gKwlzdHJ1Y3QgcnRl X2tuaV9jb25mIGNvbmY7DQo+ICsJY29uc3QgY2hhciAqbmFtZSA9IGRldi0+ZGF0YS0+bmFtZSAr IDQ7IC8qIHJlbW92ZSBuZXRfICovDQo+ICsNCj4gKwlzbnByaW50Zihjb25mLm5hbWUsIFJURV9L TklfTkFNRVNJWkUsICIlcyIsIG5hbWUpOw0KPiArCWNvbmYuZm9yY2VfYmluZCA9IDA7DQo+ICsJ Y29uZi5ncm91cF9pZCA9IHBvcnRfaWQ7DQo+ICsJY29uZi5tYnVmX3NpemUgPSBNQVhfUEFDS0VU X1NaOw0KPiArCW1iX3Bvb2wgPSBpbnRlcm5hbHMtPnJ4X3F1ZXVlc1swXS5tYl9wb29sOw0KPiAr DQo+ICsJaW50ZXJuYWxzLT5rbmkgPSBydGVfa25pX2FsbG9jKG1iX3Bvb2wsICZjb25mLCBOVUxM KTsNCj4gKwlpZiAoaW50ZXJuYWxzLT5rbmkgPT0gTlVMTCkgew0KPiArCQlSVEVfTE9HKEVSUiwg UE1ELA0KPiArCQkJIkZhaWwgdG8gY3JlYXRlIGtuaSBpbnRlcmZhY2UgZm9yIHBvcnQ6ICVkXG4i LA0KPiArCQkJcG9ydF9pZCk7DQo+ICsJCXJldHVybiAtMTsNCj4gKwl9DQo+ICsNCj4gKwlyZXR1 cm4gMDsNCj4gK30NCj4gKw0KPiArc3RhdGljIGludA0KPiArZXRoX2tuaV9kZXZfc3RhcnQoc3Ry dWN0IHJ0ZV9ldGhfZGV2ICpkZXYpDQo+ICt7DQo+ICsJc3RydWN0IHBtZF9pbnRlcm5hbHMgKmlu dGVybmFscyA9IGRldi0+ZGF0YS0+ZGV2X3ByaXZhdGU7DQo+ICsJaW50IHJldDsNCj4gKw0KPiAr CWlmIChpbnRlcm5hbHMtPmlzX2tuaV9zdGFydGVkID09IDApIHsNCj4gKwkJcmV0ID0gZXRoX2tu aV9zdGFydChkZXYpOw0KPiArCQlpZiAocmV0KQ0KPiArCQkJcmV0dXJuIC0xOw0KPiArCQlpbnRl cm5hbHMtPmlzX2tuaV9zdGFydGVkID0gMTsNCj4gKwl9DQo+ICsNCj4gKwlpZiAoaW50ZXJuYWxz LT5ub19yZXF1ZXN0X3RocmVhZCA9PSAwKSB7DQo+ICsJCXJldCA9IHB0aHJlYWRfY3JlYXRlKCZp bnRlcm5hbHMtPnRocmVhZCwgTlVMTCwNCj4gKwkJCWtuaV9oYW5kbGVfcmVxdWVzdCwgaW50ZXJu YWxzKTsNCj4gKwkJaWYgKHJldCkgew0KPiArCQkJUlRFX0xPRyhFUlIsIFBNRCwNCj4gKwkJCQki RmFpbCB0byBjcmVhdGUga25pIHJlcXVlc3QgdGhyZWFkXG4iKTsNCj4gKwkJCXJldHVybiAtMTsN Cj4gKwkJfQ0KPiArCX0NCj4gKw0KPiArCWRldi0+ZGF0YS0+ZGV2X2xpbmsubGlua19zdGF0dXMg PSAxOw0KPiArDQo+ICsJcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyB2b2lkDQo+ICtl dGhfa25pX2Rldl9zdG9wKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2KQ0KPiArew0KPiArCXN0cnVj dCBwbWRfaW50ZXJuYWxzICppbnRlcm5hbHMgPSBkZXYtPmRhdGEtPmRldl9wcml2YXRlOw0KPiAr CWludCByZXQ7DQo+ICsNCj4gKwlpZiAoaW50ZXJuYWxzLT5ub19yZXF1ZXN0X3RocmVhZCA9PSAw KSB7DQo+ICsJCWludGVybmFscy0+c3RvcF90aHJlYWQgPSAxOw0KPiArDQo+ICsJCXJldCA9IHB0 aHJlYWRfY2FuY2VsKGludGVybmFscy0+dGhyZWFkKTsNCj4gKwkJaWYgKHJldCkNCj4gKwkJCVJU RV9MT0coRVJSLCBQTUQsICJDYW4ndCBjYW5jZWwgdGhlIHRocmVhZFxuIik7DQo+ICsNCj4gKwkJ cmV0ID0gcHRocmVhZF9qb2luKGludGVybmFscy0+dGhyZWFkLCBOVUxMKTsNCj4gKwkJaWYgKHJl dCkNCj4gKwkJCVJURV9MT0coRVJSLCBQTUQsICJDYW4ndCBqb2luIHRoZSB0aHJlYWRcbiIpOw0K PiArDQo+ICsJCWludGVybmFscy0+c3RvcF90aHJlYWQgPSAwOw0KPiArCX0NCj4gKw0KPiArCWRl di0+ZGF0YS0+ZGV2X2xpbmsubGlua19zdGF0dXMgPSAwOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMg aW50DQo+ICtldGhfa25pX2Rldl9jb25maWd1cmUoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYgX19y dGVfdW51c2VkKQ0KPiArew0KPiArCXJldHVybiAwOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgdm9p ZA0KPiArZXRoX2tuaV9kZXZfaW5mbyhzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiBfX3J0ZV91bnVz ZWQsDQo+ICsJCXN0cnVjdCBydGVfZXRoX2Rldl9pbmZvICpkZXZfaW5mbykNCj4gK3sNCj4gKwlk ZXZfaW5mby0+bWF4X21hY19hZGRycyA9IDE7DQo+ICsJZGV2X2luZm8tPm1heF9yeF9wa3RsZW4g PSBVSU5UMzJfTUFYOw0KPiArCWRldl9pbmZvLT5tYXhfcnhfcXVldWVzID0gS05JX01BWF9RVUVV RV9QRVJfUE9SVDsNCj4gKwlkZXZfaW5mby0+bWF4X3R4X3F1ZXVlcyA9IEtOSV9NQVhfUVVFVUVf UEVSX1BPUlQ7DQo+ICsJZGV2X2luZm8tPm1pbl9yeF9idWZzaXplID0gMDsNCj4gKwlkZXZfaW5m by0+cGNpX2RldiA9IE5VTEw7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQNCj4gK2V0aF9rbmlf cnhfcXVldWVfc2V0dXAoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsDQo+ICsJCXVpbnQxNl90IHJ4 X3F1ZXVlX2lkLA0KPiArCQl1aW50MTZfdCBuYl9yeF9kZXNjIF9fcnRlX3VudXNlZCwNCj4gKwkJ dW5zaWduZWQgaW50IHNvY2tldF9pZCBfX3J0ZV91bnVzZWQsDQo+ICsJCWNvbnN0IHN0cnVjdCBy dGVfZXRoX3J4Y29uZiAqcnhfY29uZiBfX3J0ZV91bnVzZWQsDQo+ICsJCXN0cnVjdCBydGVfbWVt cG9vbCAqbWJfcG9vbCkNCj4gK3sNCj4gKwlzdHJ1Y3QgcG1kX2ludGVybmFscyAqaW50ZXJuYWxz ID0gZGV2LT5kYXRhLT5kZXZfcHJpdmF0ZTsNCj4gKwlzdHJ1Y3QgcG1kX3F1ZXVlICpxOw0KPiAr DQo+ICsJcSA9ICZpbnRlcm5hbHMtPnJ4X3F1ZXVlc1tyeF9xdWV1ZV9pZF07DQo+ICsJcS0+aW50 ZXJuYWxzID0gaW50ZXJuYWxzOw0KPiArCXEtPm1iX3Bvb2wgPSBtYl9wb29sOw0KPiArDQo+ICsJ ZGV2LT5kYXRhLT5yeF9xdWV1ZXNbcnhfcXVldWVfaWRdID0gcTsNCj4gKw0KPiArCXJldHVybiAw Ow0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW50DQo+ICtldGhfa25pX3R4X3F1ZXVlX3NldHVwKHN0 cnVjdCBydGVfZXRoX2RldiAqZGV2LA0KPiArCQl1aW50MTZfdCB0eF9xdWV1ZV9pZCwNCj4gKwkJ dWludDE2X3QgbmJfdHhfZGVzYyBfX3J0ZV91bnVzZWQsDQo+ICsJCXVuc2lnbmVkIGludCBzb2Nr ZXRfaWQgX19ydGVfdW51c2VkLA0KPiArCQljb25zdCBzdHJ1Y3QgcnRlX2V0aF90eGNvbmYgKnR4 X2NvbmYgX19ydGVfdW51c2VkKQ0KPiArew0KPiArCXN0cnVjdCBwbWRfaW50ZXJuYWxzICppbnRl cm5hbHMgPSBkZXYtPmRhdGEtPmRldl9wcml2YXRlOw0KPiArCXN0cnVjdCBwbWRfcXVldWUgKnE7 DQo+ICsNCj4gKwlxID0gJmludGVybmFscy0+dHhfcXVldWVzW3R4X3F1ZXVlX2lkXTsNCj4gKwlx LT5pbnRlcm5hbHMgPSBpbnRlcm5hbHM7DQo+ICsNCj4gKwlkZXYtPmRhdGEtPnR4X3F1ZXVlc1t0 eF9xdWV1ZV9pZF0gPSBxOw0KPiArDQo+ICsJcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4gK3N0YXRp YyB2b2lkDQo+ICtldGhfa25pX3F1ZXVlX3JlbGVhc2Uodm9pZCAqcSBfX3J0ZV91bnVzZWQpDQo+ ICt7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQNCj4gK2V0aF9rbmlfbGlua191cGRhdGUoc3Ry dWN0IHJ0ZV9ldGhfZGV2ICpkZXYgX19ydGVfdW51c2VkLA0KPiArCQlpbnQgd2FpdF90b19jb21w bGV0ZSBfX3J0ZV91bnVzZWQpDQo+ICt7DQo+ICsJcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4gK3N0 YXRpYyB2b2lkDQo+ICtldGhfa25pX3N0YXRzX2dldChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwg c3RydWN0IHJ0ZV9ldGhfc3RhdHMgKnN0YXRzKQ0KPiArew0KPiArCXVuc2lnbmVkIGxvbmcgcnhf cGFja2V0c190b3RhbCA9IDAsIHJ4X2J5dGVzX3RvdGFsID0gMDsNCj4gKwl1bnNpZ25lZCBsb25n IHR4X3BhY2tldHNfdG90YWwgPSAwLCB0eF9ieXRlc190b3RhbCA9IDA7DQo+ICsJc3RydWN0IHJ0 ZV9ldGhfZGV2X2RhdGEgKmRhdGEgPSBkZXYtPmRhdGE7DQo+ICsJdW5zaWduZWQgbG9uZyB0eF9w YWNrZXRzX2Vycl90b3RhbCA9IDA7DQo+ICsJdW5zaWduZWQgaW50IGksIG51bV9zdGF0czsNCj4g KwlzdHJ1Y3QgcG1kX3F1ZXVlICpxOw0KPiArDQo+ICsJbnVtX3N0YXRzID0gUlRFX01JTigodW5z aWduZWQNCj4gaW50KVJURV9FVEhERVZfUVVFVUVfU1RBVF9DTlRSUywNCj4gKwkJCWRhdGEtPm5i X3J4X3F1ZXVlcyk7DQo+ICsJZm9yIChpID0gMDsgaSA8IG51bV9zdGF0czsgaSsrKSB7DQo+ICsJ CXEgPSBkYXRhLT5yeF9xdWV1ZXNbaV07DQo+ICsJCXN0YXRzLT5xX2lwYWNrZXRzW2ldID0gcS0+ cngucGt0czsNCj4gKwkJc3RhdHMtPnFfaWJ5dGVzW2ldID0gcS0+cnguYnl0ZXM7DQo+ICsJCXJ4 X3BhY2tldHNfdG90YWwgKz0gc3RhdHMtPnFfaXBhY2tldHNbaV07DQo+ICsJCXJ4X2J5dGVzX3Rv dGFsICs9IHN0YXRzLT5xX2lieXRlc1tpXTsNCj4gKwl9DQo+ICsNCj4gKwludW1fc3RhdHMgPSBS VEVfTUlOKCh1bnNpZ25lZA0KPiBpbnQpUlRFX0VUSERFVl9RVUVVRV9TVEFUX0NOVFJTLA0KPiAr CQkJZGF0YS0+bmJfdHhfcXVldWVzKTsNCj4gKwlmb3IgKGkgPSAwOyBpIDwgbnVtX3N0YXRzOyBp KyspIHsNCj4gKwkJcSA9IGRhdGEtPnR4X3F1ZXVlc1tpXTsNCj4gKwkJc3RhdHMtPnFfb3BhY2tl dHNbaV0gPSBxLT50eC5wa3RzOw0KPiArCQlzdGF0cy0+cV9vYnl0ZXNbaV0gPSBxLT50eC5ieXRl czsNCj4gKwkJc3RhdHMtPnFfZXJyb3JzW2ldID0gcS0+dHguZXJyX3BrdHM7DQo+ICsJCXR4X3Bh Y2tldHNfdG90YWwgKz0gc3RhdHMtPnFfb3BhY2tldHNbaV07DQo+ICsJCXR4X2J5dGVzX3RvdGFs ICs9IHN0YXRzLT5xX29ieXRlc1tpXTsNCj4gKwkJdHhfcGFja2V0c19lcnJfdG90YWwgKz0gc3Rh dHMtPnFfZXJyb3JzW2ldOw0KPiArCX0NCj4gKw0KPiArCXN0YXRzLT5pcGFja2V0cyA9IHJ4X3Bh Y2tldHNfdG90YWw7DQo+ICsJc3RhdHMtPmlieXRlcyA9IHJ4X2J5dGVzX3RvdGFsOw0KPiArCXN0 YXRzLT5vcGFja2V0cyA9IHR4X3BhY2tldHNfdG90YWw7DQo+ICsJc3RhdHMtPm9ieXRlcyA9IHR4 X2J5dGVzX3RvdGFsOw0KPiArCXN0YXRzLT5vZXJyb3JzID0gdHhfcGFja2V0c19lcnJfdG90YWw7 DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyB2b2lkDQo+ICtldGhfa25pX3N0YXRzX3Jlc2V0KHN0cnVj dCBydGVfZXRoX2RldiAqZGV2KQ0KPiArew0KPiArCXN0cnVjdCBydGVfZXRoX2Rldl9kYXRhICpk YXRhID0gZGV2LT5kYXRhOw0KPiArCXN0cnVjdCBwbWRfcXVldWUgKnE7DQo+ICsJdW5zaWduZWQg aW50IGk7DQo+ICsNCj4gKwlmb3IgKGkgPSAwOyBpIDwgZGF0YS0+bmJfcnhfcXVldWVzOyBpKysp IHsNCj4gKwkJcSA9IGRhdGEtPnJ4X3F1ZXVlc1tpXTsNCj4gKwkJcS0+cngucGt0cyA9IDA7DQo+ ICsJCXEtPnJ4LmJ5dGVzID0gMDsNCj4gKwl9DQo+ICsJZm9yIChpID0gMDsgaSA8IGRhdGEtPm5i X3R4X3F1ZXVlczsgaSsrKSB7DQo+ICsJCXEgPSBkYXRhLT50eF9xdWV1ZXNbaV07DQo+ICsJCXEt PnR4LnBrdHMgPSAwOw0KPiArCQlxLT50eC5ieXRlcyA9IDA7DQo+ICsJCXEtPnR4LmVycl9wa3Rz ID0gMDsNCj4gKwl9DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZXRoX2Rldl9v cHMgZXRoX2tuaV9vcHMgPSB7DQo+ICsJLmRldl9zdGFydCA9IGV0aF9rbmlfZGV2X3N0YXJ0LA0K PiArCS5kZXZfc3RvcCA9IGV0aF9rbmlfZGV2X3N0b3AsDQo+ICsJLmRldl9jb25maWd1cmUgPSBl dGhfa25pX2Rldl9jb25maWd1cmUsDQo+ICsJLmRldl9pbmZvc19nZXQgPSBldGhfa25pX2Rldl9p bmZvLA0KPiArCS5yeF9xdWV1ZV9zZXR1cCA9IGV0aF9rbmlfcnhfcXVldWVfc2V0dXAsDQo+ICsJ LnR4X3F1ZXVlX3NldHVwID0gZXRoX2tuaV90eF9xdWV1ZV9zZXR1cCwNCj4gKwkucnhfcXVldWVf cmVsZWFzZSA9IGV0aF9rbmlfcXVldWVfcmVsZWFzZSwNCj4gKwkudHhfcXVldWVfcmVsZWFzZSA9 IGV0aF9rbmlfcXVldWVfcmVsZWFzZSwNCj4gKwkubGlua191cGRhdGUgPSBldGhfa25pX2xpbmtf dXBkYXRlLA0KPiArCS5zdGF0c19nZXQgPSBldGhfa25pX3N0YXRzX2dldCwNCj4gKwkuc3RhdHNf cmVzZXQgPSBldGhfa25pX3N0YXRzX3Jlc2V0LA0KPiArfTsNCj4gKw0KPiArc3RhdGljIHN0cnVj dCBydGVfdmRldl9kcml2ZXIgZXRoX2tuaV9kcnY7DQo+ICsNCj4gK3N0YXRpYyBzdHJ1Y3QgcnRl X2V0aF9kZXYgKg0KPiArZXRoX2tuaV9jcmVhdGUoY29uc3QgY2hhciAqbmFtZSwgc3RydWN0IGV0 aF9rbmlfYXJncyAqYXJncywNCj4gKwkJdW5zaWduZWQgaW50IG51bWFfbm9kZSkNCj4gK3sNCj4g KwlzdHJ1Y3QgcG1kX2ludGVybmFscyAqaW50ZXJuYWxzID0gTlVMTDsNCj4gKwlzdHJ1Y3QgcnRl X2V0aF9kZXZfZGF0YSAqZGF0YTsNCj4gKwlzdHJ1Y3QgcnRlX2V0aF9kZXYgKmV0aF9kZXY7DQo+ ICsNCj4gKwlSVEVfTE9HKElORk8sIFBNRCwgIkNyZWF0aW5nIGtuaSBldGhkZXYgb24gbnVtYSBz b2NrZXQgJXVcbiIsDQo+ICsJCQludW1hX25vZGUpOw0KPiArDQo+ICsJZGF0YSA9IHJ0ZV96bWFs bG9jX3NvY2tldChuYW1lLCBzaXplb2YoKmRhdGEpLCAwLCBudW1hX25vZGUpOw0KPiArCWlmIChk YXRhID09IE5VTEwpDQo+ICsJCWdvdG8gZXJyb3I7DQo+ICsNCj4gKwlpbnRlcm5hbHMgPSBydGVf em1hbGxvY19zb2NrZXQobmFtZSwgc2l6ZW9mKCppbnRlcm5hbHMpLCAwLA0KPiBudW1hX25vZGUp Ow0KPiArCWlmIChpbnRlcm5hbHMgPT0gTlVMTCkNCj4gKwkJZ290byBlcnJvcjsNCj4gKw0KPiAr CS8qIHJlc2VydmUgYW4gZXRoZGV2IGVudHJ5ICovDQo+ICsJZXRoX2RldiA9IHJ0ZV9ldGhfZGV2 X2FsbG9jYXRlKG5hbWUpOw0KPiArCWlmIChldGhfZGV2ID09IE5VTEwpDQo+ICsJCWdvdG8gZXJy b3I7DQo+ICsNCj4gKwlkYXRhLT5kZXZfcHJpdmF0ZSA9IGludGVybmFsczsNCj4gKwlkYXRhLT5w b3J0X2lkID0gZXRoX2Rldi0+ZGF0YS0+cG9ydF9pZDsNCj4gKwltZW1tb3ZlKGRhdGEtPm5hbWUs IGV0aF9kZXYtPmRhdGEtPm5hbWUsIHNpemVvZihkYXRhLQ0KPiA+bmFtZSkpOw0KPiArCWRhdGEt Pm5iX3J4X3F1ZXVlcyA9IDE7DQo+ICsJZGF0YS0+bmJfdHhfcXVldWVzID0gMTsNCj4gKwlkYXRh LT5kZXZfbGluayA9IHBtZF9saW5rOw0KPiArCWRhdGEtPm1hY19hZGRycyA9ICZpbnRlcm5hbHMt PmV0aF9hZGRyOw0KPiArDQo+ICsJZXRoX3JhbmRvbV9hZGRyKGludGVybmFscy0+ZXRoX2FkZHIu YWRkcl9ieXRlcyk7DQo+ICsNCj4gKwlldGhfZGV2LT5kYXRhID0gZGF0YTsNCj4gKwlldGhfZGV2 LT5kZXZfb3BzID0gJmV0aF9rbmlfb3BzOw0KPiArCWV0aF9kZXYtPmRyaXZlciA9IE5VTEw7DQo+ ICsNCj4gKwlkYXRhLT5kZXZfZmxhZ3MgPSBSVEVfRVRIX0RFVl9ERVRBQ0hBQkxFOw0KPiArCWRh dGEtPmtkcnYgPSBSVEVfS0RSVl9OT05FOw0KPiArCWRhdGEtPmRydl9uYW1lID0gZXRoX2tuaV9k cnYuZHJpdmVyLm5hbWU7DQo+ICsJZGF0YS0+bnVtYV9ub2RlID0gbnVtYV9ub2RlOw0KPiArDQo+ ICsJaW50ZXJuYWxzLT5ub19yZXF1ZXN0X3RocmVhZCA9IGFyZ3MtPm5vX3JlcXVlc3RfdGhyZWFk Ow0KPiArDQo+ICsJcmV0dXJuIGV0aF9kZXY7DQo+ICsNCj4gK2Vycm9yOg0KPiArCXJ0ZV9mcmVl KGRhdGEpOw0KPiArCXJ0ZV9mcmVlKGludGVybmFscyk7DQo+ICsNCj4gKwlyZXR1cm4gTlVMTDsN Cj4gK30NCj4gKw0KPiArc3RhdGljIGludA0KPiAra25pX2luaXQodm9pZCkNCj4gK3sNCj4gKwlp ZiAoaXNfa25pX2luaXRpYWxpemVkID09IDApDQo+ICsJCXJ0ZV9rbmlfaW5pdChNQVhfS05JX1BP UlRTKTsNCj4gKw0KPiArCWlzX2tuaV9pbml0aWFsaXplZCsrOw0KPiArDQo+ICsJcmV0dXJuIDA7 DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQNCj4gK2V0aF9rbmlfa3ZhcmdzX3Byb2Nlc3Moc3Ry dWN0IGV0aF9rbmlfYXJncyAqYXJncywgY29uc3QgY2hhciAqcGFyYW1zKQ0KPiArew0KPiArCXN0 cnVjdCBydGVfa3ZhcmdzICprdmxpc3Q7DQo+ICsNCj4gKwlrdmxpc3QgPSBydGVfa3ZhcmdzX3Bh cnNlKHBhcmFtcywgdmFsaWRfYXJndW1lbnRzKTsNCj4gKwlpZiAoa3ZsaXN0ID09IE5VTEwpDQo+ ICsJCXJldHVybiAtMTsNCj4gKw0KPiArCW1lbXNldChhcmdzLCAwLCBzaXplb2Yoc3RydWN0IGV0 aF9rbmlfYXJncykpOw0KPiArDQo+ICsJaWYgKHJ0ZV9rdmFyZ3NfY291bnQoa3ZsaXN0LCBFVEhf S05JX05PX1JFUVVFU1RfVEhSRUFEX0FSRykNCj4gPT0gMSkNCj4gKwkJYXJncy0+bm9fcmVxdWVz dF90aHJlYWQgPSAxOw0KPiArDQo+ICsJcnRlX2t2YXJnc19mcmVlKGt2bGlzdCk7DQo+ICsNCj4g KwlyZXR1cm4gMDsNCj4gK30NCj4gKw0KPiArc3RhdGljIGludA0KPiArZXRoX2tuaV9wcm9iZShj b25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpwYXJhbXMpDQo+ICt7DQo+ICsJc3RydWN0IHJ0 ZV9ldGhfZGV2ICpldGhfZGV2Ow0KPiArCXN0cnVjdCBldGhfa25pX2FyZ3MgYXJnczsNCj4gKwlp bnQgcmV0Ow0KPiArDQo+ICsJUlRFX0xPRyhJTkZPLCBQTUQsICJJbml0aWFsaXppbmcgZXRoX2tu aSBmb3IgJXNcbiIsIG5hbWUpOw0KPiArDQo+ICsJcmV0ID0gZXRoX2tuaV9rdmFyZ3NfcHJvY2Vz cygmYXJncywgcGFyYW1zKTsNCj4gKwlpZiAocmV0IDwgMCkNCj4gKwkJcmV0dXJuIHJldDsNCj4g Kw0KPiArCXJldCA9IGtuaV9pbml0KCk7DQo+ICsJaWYgKHJldCA8IDApDQo+ICsJCXJldHVybiBy ZXQ7DQo+ICsNCj4gKwlldGhfZGV2ID0gZXRoX2tuaV9jcmVhdGUobmFtZSwgJmFyZ3MsIHJ0ZV9z b2NrZXRfaWQoKSk7DQo+ICsJaWYgKGV0aF9kZXYgPT0gTlVMTCkNCj4gKwkJZ290byBrbmlfdW5p bml0Ow0KPiArDQo+ICsJZXRoX2Rldi0+cnhfcGt0X2J1cnN0ID0gZXRoX2tuaV9yeDsNCj4gKwll dGhfZGV2LT50eF9wa3RfYnVyc3QgPSBldGhfa25pX3R4Ow0KPiArDQo+ICsJcmV0dXJuIDA7DQo+ ICsNCj4gK2tuaV91bmluaXQ6DQo+ICsJaXNfa25pX2luaXRpYWxpemVkLS07DQo+ICsJaWYgKGlz X2tuaV9pbml0aWFsaXplZCA9PSAwKQ0KPiArCQlydGVfa25pX2Nsb3NlKCk7DQo+ICsJcmV0dXJu IC0xOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW50DQo+ICtldGhfa25pX3JlbW92ZShjb25zdCBj aGFyICpuYW1lKQ0KPiArew0KPiArCXN0cnVjdCBydGVfZXRoX2RldiAqZXRoX2RldjsNCj4gKwlz dHJ1Y3QgcG1kX2ludGVybmFscyAqaW50ZXJuYWxzOw0KPiArDQo+ICsJUlRFX0xPRyhJTkZPLCBQ TUQsICJVbi1Jbml0aWFsaXppbmcgZXRoX2tuaSBmb3IgJXNcbiIsIG5hbWUpOw0KPiArDQo+ICsJ LyogZmluZCB0aGUgZXRoZGV2IGVudHJ5ICovDQo+ICsJZXRoX2RldiA9IHJ0ZV9ldGhfZGV2X2Fs bG9jYXRlZChuYW1lKTsNCj4gKwlpZiAoZXRoX2RldiA9PSBOVUxMKQ0KPiArCQlyZXR1cm4gLTE7 DQo+ICsNCj4gKwlldGhfa25pX2Rldl9zdG9wKGV0aF9kZXYpOw0KPiArDQo+ICsJaWYgKGV0aF9k ZXYtPmRhdGEpIHsNCj4gKwkJaW50ZXJuYWxzID0gZXRoX2Rldi0+ZGF0YS0+ZGV2X3ByaXZhdGU7 DQo+ICsJCXJ0ZV9rbmlfcmVsZWFzZShpbnRlcm5hbHMtPmtuaSk7DQo+ICsNCj4gKwkJcnRlX2Zy ZWUoaW50ZXJuYWxzKTsNCj4gKwl9DQo+ICsJcnRlX2ZyZWUoZXRoX2Rldi0+ZGF0YSk7DQo+ICsN Cj4gKwlydGVfZXRoX2Rldl9yZWxlYXNlX3BvcnQoZXRoX2Rldik7DQo+ICsNCj4gKwlpc19rbmlf aW5pdGlhbGl6ZWQtLTsNCj4gKwlpZiAoaXNfa25pX2luaXRpYWxpemVkID09IDApDQo+ICsJCXJ0 ZV9rbmlfY2xvc2UoKTsNCj4gKw0KPiArCXJldHVybiAwOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMg c3RydWN0IHJ0ZV92ZGV2X2RyaXZlciBldGhfa25pX2RydiA9IHsNCj4gKwkucHJvYmUgPSBldGhf a25pX3Byb2JlLA0KPiArCS5yZW1vdmUgPSBldGhfa25pX3JlbW92ZSwNCj4gK307DQo+ICsNCj4g K1JURV9QTURfUkVHSVNURVJfVkRFVihuZXRfa25pLCBldGhfa25pX2Rydik7DQo+ICtSVEVfUE1E X1JFR0lTVEVSX1BBUkFNX1NUUklORyhuZXRfa25pLA0KPiBFVEhfS05JX05PX1JFUVVFU1RfVEhS RUFEX0FSRyAiPTxpbnQ+Iik7DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9rbmkvcnRlX3Bt ZF9rbmlfdmVyc2lvbi5tYXANCj4gYi9kcml2ZXJzL25ldC9rbmkvcnRlX3BtZF9rbmlfdmVyc2lv bi5tYXANCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMC4uMzFlY2EzMg0K PiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL2RyaXZlcnMvbmV0L2tuaS9ydGVfcG1kX2tuaV92ZXJz aW9uLm1hcA0KPiBAQCAtMCwwICsxLDQgQEANCj4gK0RQREtfMTcuMDIgew0KPiArDQo+ICsJbG9j YWw6ICo7DQo+ICt9Ow0KPiBkaWZmIC0tZ2l0IGEvbWsvcnRlLmFwcC5tayBiL21rL3J0ZS5hcHAu bWsNCj4gaW5kZXggYTVkYWE4NC4uMmIzYTUzZCAxMDA2NDQNCj4gLS0tIGEvbWsvcnRlLmFwcC5t aw0KPiArKysgYi9tay9ydGUuYXBwLm1rDQo+IEBAIC01OSwxMSArNTksNiBAQCBfTERMSUJTLXkg Kz0gLUwkKFJURV9TREtfQklOKS9saWINCj4gICMNCj4gICMgT3JkZXIgaXMgaW1wb3J0YW50OiBm cm9tIGhpZ2hlciBsZXZlbCB0byBsb3dlciBsZXZlbA0KPiAgIw0KPiAtDQo+IC1pZmVxICgkKENP TkZJR19SVEVfRVhFQ19FTlZfTElOVVhBUFApLHkpDQo+IC1fTERMSUJTLSQoQ09ORklHX1JURV9M SUJSVEVfS05JKSAgICAgICAgICAgICs9IC1scnRlX2tuaQ0KPiAtZW5kaWYNCj4gLQ0KPiAgX0xE TElCUy0kKENPTkZJR19SVEVfTElCUlRFX1BJUEVMSU5FKSAgICAgICArPSAtbHJ0ZV9waXBlbGlu ZQ0KPiAgX0xETElCUy0kKENPTkZJR19SVEVfTElCUlRFX1RBQkxFKSAgICAgICAgICArPSAtbHJ0 ZV90YWJsZQ0KPiAgX0xETElCUy0kKENPTkZJR19SVEVfTElCUlRFX1BPUlQpICAgICAgICAgICAr PSAtbHJ0ZV9wb3J0DQo+IEBAIC04NCw2ICs3OSwxMCBAQCBfTERMSUJTLSQoQ09ORklHX1JURV9M SUJSVEVfUE9XRVIpICAgICAgICAgICs9IC0NCj4gbHJ0ZV9wb3dlcg0KPiANCj4gIF9MRExJQlMt eSArPSAtLXdob2xlLWFyY2hpdmUNCj4gDQo+ICtpZmVxICgkKENPTkZJR19SVEVfRVhFQ19FTlZf TElOVVhBUFApLHkpDQo+ICtfTERMSUJTLSQoQ09ORklHX1JURV9MSUJSVEVfS05JKSAgICAgICAg ICAgICs9IC1scnRlX2tuaQ0KPiArZW5kaWYNCj4gKw0KPiAgX0xETElCUy0kKENPTkZJR19SVEVf TElCUlRFX1RJTUVSKSAgICAgICAgICArPSAtbHJ0ZV90aW1lcg0KPiAgX0xETElCUy0kKENPTkZJ R19SVEVfTElCUlRFX0hBU0gpICAgICAgICAgICArPSAtbHJ0ZV9oYXNoDQo+ICBfTERMSUJTLSQo Q09ORklHX1JURV9MSUJSVEVfRUZEKSAgICAgICAgICAgICs9IC1scnRlX2VmZA0KPiBAQCAtMTE2 LDYgKzExNSw3IEBAIF9MRExJQlMtJChDT05GSUdfUlRFX0xJQlJURV9FTklDX1BNRCkgICAgICAg Kz0gLQ0KPiBscnRlX3BtZF9lbmljDQo+ICBfTERMSUJTLSQoQ09ORklHX1JURV9MSUJSVEVfRk0x MEtfUE1EKSAgICAgICs9IC1scnRlX3BtZF9mbTEwaw0KPiAgX0xETElCUy0kKENPTkZJR19SVEVf TElCUlRFX0k0MEVfUE1EKSAgICAgICArPSAtbHJ0ZV9wbWRfaTQwZQ0KPiAgX0xETElCUy0kKENP TkZJR19SVEVfTElCUlRFX0lYR0JFX1BNRCkgICAgICArPSAtbHJ0ZV9wbWRfaXhnYmUNCj4gK19M RExJQlMtJChDT05GSUdfUlRFX0xJQlJURV9QTURfS05JKSAgICAgICAgKz0gLWxydGVfcG1kX2tu aQ0KPiAgX0xETElCUy0kKENPTkZJR19SVEVfTElCUlRFX01MWDRfUE1EKSAgICAgICArPSAtbHJ0 ZV9wbWRfbWx4NCAtDQo+IGxpYnZlcmJzDQo+ICBfTERMSUJTLSQoQ09ORklHX1JURV9MSUJSVEVf TUxYNV9QTUQpICAgICAgICs9IC1scnRlX3BtZF9tbHg1IC0NCj4gbGlidmVyYnMNCj4gIF9MRExJ QlMtJChDT05GSUdfUlRFX0xJQlJURV9NUElQRV9QTUQpICAgICAgKz0gLWxydGVfcG1kX21waXBl IC1sZ3hpbw0KPiAtLQ0KPiAyLjkuMw0KDQo=