From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR01-VE1-obe.outbound.protection.outlook.com (mail-ve1eur01on0055.outbound.protection.outlook.com [104.47.1.55]) by dpdk.org (Postfix) with ESMTP id C5F881B45C for ; Tue, 26 Jun 2018 12:51:05 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=3bN+BLcNUSNcHGRUz3/xqoDckHTQp3twGDlPnbYNjaA=; b=iYrQvKyUi0tlI1/dC01/qF6GLMI/pKZ1/yGz2+HlXi8IDU/yanzbCKRTLJ85yA5BkGom9xvHyoZtTAamQ6DrT14BPBnkbpL7DWYG9UDf1HHdZ5+afQMEO0AYeLahT1OXumbYF+UHsxAgkcre9I4LmiO5p3Q8/6o70qGHUejzhqY= Received: from AM4PR05MB3425.eurprd05.prod.outlook.com (10.171.187.142) by AM4PR05MB1569.eurprd05.prod.outlook.com (10.164.80.15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.884.22; Tue, 26 Jun 2018 10:51:04 +0000 Received: from AM4PR05MB3425.eurprd05.prod.outlook.com ([fe80::40df:8a0e:9661:6cf1]) by AM4PR05MB3425.eurprd05.prod.outlook.com ([fe80::40df:8a0e:9661:6cf1%3]) with mapi id 15.20.0884.023; Tue, 26 Jun 2018 10:51:04 +0000 From: Ori Kam To: =?utf-8?B?TsOpbGlvIExhcmFuamVpcm8=?= , "dev@dpdk.org" , Adrien Mazarguil , Wenzhuo Lu , Jingjing Wu , Bernard Iremonger , Mohammad Abdul Awal , Stephen Hemminger Thread-Topic: [PATCH v4 1/2] app/testpmd: add VXLAN encap/decap support Thread-Index: AQHUCS9hs3acjZqWfEShFbzyJiRXpqRyZJYA Date: Tue, 26 Jun 2018 10:51:03 +0000 Message-ID: References: <1182e18718fee65dd8a00de19c66f2f0abd82ce0.1529420040.git.nelio.laranjeiro@6wind.com> In-Reply-To: <1182e18718fee65dd8a00de19c66f2f0abd82ce0.1529420040.git.nelio.laranjeiro@6wind.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=orika@mellanox.com; x-originating-ip: [193.47.165.251] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; AM4PR05MB1569; 7:nBfnVRDGyO44yjp8gSQEL4DAdDsB0CH3ZzZR1HXq2qLcc0I5QgUwLU2flG8kwwWMdddp12BBzgiYez4knZm3+J54OOK/lcAdZ/6QZzn+PUPl78KMBbUqWABRwmm0HQdOh9lkZQ0xgARhMitp/JMnZ5l8M2/srRneEQ3j5jA34YnxnY8Li2Ye8K5nS+c22Z+swRQPQziT7rKJlLWC9zfd8k6Lmg9LP4zgg1lQM0uyvNTImnpAnI1o5p6TRIYkU7rE x-ms-exchange-antispam-srfa-diagnostics: SOS; x-ms-office365-filtering-correlation-id: db50654f-6fe8-4c23-ab4b-08d5db52b69b x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(8989117)(4534165)(4627221)(201703031133081)(201702281549075)(8990107)(5600026)(711020)(48565401081)(2017052603328)(7153060)(7193020); SRVR:AM4PR05MB1569; x-ms-traffictypediagnostic: AM4PR05MB1569: x-ld-processed: a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtAddr x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(228905959029699)(17755550239193); x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(3002001)(10201501046)(3231254)(944501410)(52105095)(93006095)(93001095)(6055026)(149027)(150027)(6041310)(20161123558120)(20161123560045)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123564045)(6072148)(201708071742011)(7699016); SRVR:AM4PR05MB1569; BCL:0; PCL:0; RULEID:; SRVR:AM4PR05MB1569; x-forefront-prvs: 071518EF63 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(136003)(39860400002)(396003)(346002)(366004)(376002)(189003)(199004)(13464003)(51234002)(6436002)(5250100002)(106356001)(55016002)(25786009)(5660300001)(229853002)(66066001)(110136005)(9686003)(6246003)(256004)(53936002)(53946003)(316002)(86362001)(68736007)(6116002)(3846002)(105586002)(6506007)(74316002)(11346002)(186003)(2501003)(97736004)(7736002)(14454004)(305945005)(7696005)(478600001)(26005)(76176011)(486006)(102836004)(476003)(81166006)(81156014)(2900100001)(8936002)(53546011)(33656002)(446003)(8676002)(99286004)(2906002)(14444005); DIR:OUT; SFP:1101; SCL:1; SRVR:AM4PR05MB1569; H:AM4PR05MB3425.eurprd05.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: gZjze7O2ulSL7wanBPFet3zs5PgZBuiLPGlJHmtK0qEl0wrqDFIAtdAJjqgahC2neUUdDMc3lPlSaPsOMGcF5CGkiyuZCBsn80sXWpijbunXKJmgqYc3QSepiEpG81MHcwIhOS0+qASgZyQ+GEN8pP763On1cBVNNjYJha5QjNHkXIvKmsHSnNyFo4khw3lqzmckupRuQC7Srnfv5hGrSiVd+VmlckVMJt6IAiCCU660gfLsbZJ0TROQGm1a5suSzJmO4JJAe0ddWTNGdBSyHreZt07eJNK/ghSGQGXo4e2y9Ya5ASTkU7b7IyoHyqP1IVgD0BBJi0KnRIVdBLrFFTyGMvVE/9dlO6s1UwAY3po= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: db50654f-6fe8-4c23-ab4b-08d5db52b69b X-MS-Exchange-CrossTenant-originalarrivaltime: 26 Jun 2018 10:51:03.8687 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM4PR05MB1569 Subject: Re: [dpdk-dev] [PATCH v4 1/2] app/testpmd: add VXLAN encap/decap support 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: Tue, 26 Jun 2018 10:51:06 -0000 QWNrZWQtYnk6IE9yaSBLYW0gPG9yaWthQG1lbGxhbm94LmNvbT4NCg0KPiAtLS0tLU9yaWdpbmFs IE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBOZWxpbyBMYXJhbmplaXJvIFttYWlsdG86bmVsaW8ubGFy YW5qZWlyb0A2d2luZC5jb21dDQo+IFNlbnQ6IFRodXJzZGF5LCBKdW5lIDIxLCAyMDE4IDEwOjE0 IEFNDQo+IFRvOiBkZXZAZHBkay5vcmc7IEFkcmllbiBNYXphcmd1aWwgPGFkcmllbi5tYXphcmd1 aWxANndpbmQuY29tPjsNCj4gV2Vuemh1byBMdSA8d2Vuemh1by5sdUBpbnRlbC5jb20+OyBKaW5n amluZyBXdQ0KPiA8amluZ2ppbmcud3VAaW50ZWwuY29tPjsgQmVybmFyZCBJcmVtb25nZXINCj4g PGJlcm5hcmQuaXJlbW9uZ2VyQGludGVsLmNvbT47IE1vaGFtbWFkIEFiZHVsIEF3YWwNCj4gPG1v aGFtbWFkLmFiZHVsLmF3YWxAaW50ZWwuY29tPjsgT3JpIEthbSA8b3Jpa2FAbWVsbGFub3guY29t PjsNCj4gU3RlcGhlbiBIZW1taW5nZXIgPHN0ZXBoZW5AbmV0d29ya3BsdW1iZXIub3JnPg0KPiBT dWJqZWN0OiBbUEFUQ0ggdjQgMS8yXSBhcHAvdGVzdHBtZDogYWRkIFZYTEFOIGVuY2FwL2RlY2Fw IHN1cHBvcnQNCj4gDQo+IER1ZSB0byB0aGUgY29tcGxleCBWWExBTl9FTkNBUCBmbG93IGFjdGlv biBhbmQgYmFzZWQgb24gdGhlIGZhY3QNCj4gdGVzdHBtZA0KPiBkb2VzIG5vdCBhbGxvY2F0ZSBt ZW1vcnksIHRoaXMgcGF0Y2ggYWRkcyBhIG5ldyBjb21tYW5kIGluIHRlc3RwbWQgdG8NCj4gaW5p dGlhbGlzZSBhIGdsb2JhbCBzdHJ1Y3R1cmUgY29udGFpbmluZyB0aGUgbmVjZXNzYXJ5IGluZm9y bWF0aW9uIHRvDQo+IG1ha2UgdGhlIG91dGVyIGxheWVyIG9mIHRoZSBwYWNrZXQuICBUaGlzIHNh bWUgZ2xvYmFsIHN0cnVjdHVyZSB3aWxsDQo+IHRoZW4gYmUgdXNlZCBieSB0aGUgZmxvdyBjb21t YW5kIGxpbmUgaW4gdGVzdHBtZCB3aGVuIHRoZSBhY3Rpb24NCj4gdnhsYW5fZW5jYXAgd2lsbCBi ZSBwYXJzZWQsIGF0IHRoaXMgcG9pbnQsIHRoZSBjb252ZXJzaW9uIGludG8gc3VjaA0KPiBhY3Rp b24gYmVjb21lcyB0cml2aWFsLg0KPiANCj4gVGhpcyBnbG9iYWwgc3RydWN0dXJlIGlzIG9ubHkg dXNlZCBmb3IgdGhlIGVuY2FwIGFjdGlvbi4NCj4gDQo+IFNpZ25lZC1vZmYtYnk6IE5lbGlvIExh cmFuamVpcm8gPG5lbGlvLmxhcmFuamVpcm9ANndpbmQuY29tPg0KPiAtLS0NCj4gIGFwcC90ZXN0 LXBtZC9jbWRsaW5lLmMgICAgICAgICAgICAgICAgICAgICAgfCAxMzQgKysrKysrKysrKysrKysr KysrKw0KPiAgYXBwL3Rlc3QtcG1kL2NtZGxpbmVfZmxvdy5jICAgICAgICAgICAgICAgICB8IDEz OSArKysrKysrKysrKysrKysrKysrKw0KPiAgYXBwL3Rlc3QtcG1kL3Rlc3RwbWQuYyAgICAgICAg ICAgICAgICAgICAgICB8ICAxNyArKysNCj4gIGFwcC90ZXN0LXBtZC90ZXN0cG1kLmggICAgICAg ICAgICAgICAgICAgICAgfCAgMTcgKysrDQo+ICBkb2MvZ3VpZGVzL3Rlc3RwbWRfYXBwX3VnL3Rl c3RwbWRfZnVuY3MucnN0IHwgIDM1ICsrKysrDQo+ICA1IGZpbGVzIGNoYW5nZWQsIDM0MiBpbnNl cnRpb25zKCspDQo+IA0KPiBkaWZmIC0tZ2l0IGEvYXBwL3Rlc3QtcG1kL2NtZGxpbmUuYyBiL2Fw cC90ZXN0LXBtZC9jbWRsaW5lLmMNCj4gaW5kZXggMjdlMmFhOGM4Li4wNDhmZmYyYmQgMTAwNjQ0 DQo+IC0tLSBhL2FwcC90ZXN0LXBtZC9jbWRsaW5lLmMNCj4gKysrIGIvYXBwL3Rlc3QtcG1kL2Nt ZGxpbmUuYw0KPiBAQCAtNzgxLDYgKzc4MSwxNCBAQCBzdGF0aWMgdm9pZCBjbWRfaGVscF9sb25n X3BhcnNlZCh2b2lkDQo+ICpwYXJzZWRfcmVzdWx0LA0KPiAgCQkJInBvcnQgdG0gaGllcmFyY2h5 IGNvbW1pdCAocG9ydF9pZCkNCj4gKGNsZWFuX29uX2ZhaWwpXG4iDQo+ICAJCQkiCUNvbW1pdCB0 bSBoaWVyYXJjaHkuXG5cbiINCj4gDQo+ICsJCQkidnhsYW4gaXB2NHxpcHY2IHZuaSB1ZHAtc3Jj IHVkcC1kc3QgaXAtc3JjIGlwLWRzdCINCj4gKwkJCSIgZXRoLXNyYyBldGgtZHN0XG4iDQo+ICsJ CQkiICAgICAgIENvbmZpZ3VyZSB0aGUgVlhMQU4gZW5jYXBzdWxhdGlvbiBmb3INCj4gZmxvd3Mu XG5cbiINCj4gKw0KPiArCQkJInZ4bGFuLXdpdGgtdmxhbiBpcHY0fGlwdjYgdm5pIHVkcC1zcmMg dWRwLWRzdCBpcC1zcmMNCj4gaXAtZHN0Ig0KPiArCQkJIiB2bGFuLXRjaSBldGgtc3JjIGV0aC1k c3RcbiINCj4gKwkJCSIgICAgICAgQ29uZmlndXJlIHRoZSBWWExBTiBlbmNhcHN1bGF0aW9uIGZv cg0KPiBmbG93cy5cblxuIg0KPiArDQo+ICAJCQksIGxpc3RfcGt0X2ZvcndhcmRpbmdfbW9kZXMo KQ0KPiAgCQkpOw0KPiAgCX0NCj4gQEAgLTE0ODM4LDYgKzE0ODQ2LDEzMCBAQCBjbWRsaW5lX3Bh cnNlX2luc3RfdA0KPiBjbWRfc2V0X3BvcnRfdG1faGllcmFyY2h5X2RlZmF1bHQgPSB7DQo+ICB9 Ow0KPiAgI2VuZGlmDQo+IA0KPiArLyoqIFNldCBWWExBTiBlbmNhcHN1bGF0aW9uIGRldGFpbHMg Ki8NCj4gK3N0cnVjdCBjbWRfc2V0X3Z4bGFuX3Jlc3VsdCB7DQo+ICsJY21kbGluZV9maXhlZF9z dHJpbmdfdCBzZXQ7DQo+ICsJY21kbGluZV9maXhlZF9zdHJpbmdfdCB2eGxhbjsNCj4gKwljbWRs aW5lX2ZpeGVkX3N0cmluZ190IGlwX3ZlcnNpb247DQo+ICsJdWludDMyX3Qgdmxhbl9wcmVzZW50 OjE7DQo+ICsJdWludDMyX3Qgdm5pOw0KPiArCXVpbnQxNl90IHVkcF9zcmM7DQo+ICsJdWludDE2 X3QgdWRwX2RzdDsNCj4gKwljbWRsaW5lX2lwYWRkcl90IGlwX3NyYzsNCj4gKwljbWRsaW5lX2lw YWRkcl90IGlwX2RzdDsNCj4gKwl1aW50MTZfdCB0Y2k7DQo+ICsJc3RydWN0IGV0aGVyX2FkZHIg ZXRoX3NyYzsNCj4gKwlzdHJ1Y3QgZXRoZXJfYWRkciBldGhfZHN0Ow0KPiArfTsNCj4gKw0KPiAr Y21kbGluZV9wYXJzZV90b2tlbl9zdHJpbmdfdCBjbWRfc2V0X3Z4bGFuX3NldCA9DQo+ICsJVE9L RU5fU1RSSU5HX0lOSVRJQUxJWkVSKHN0cnVjdCBjbWRfc2V0X3Z4bGFuX3Jlc3VsdCwgc2V0LA0K PiAic2V0Iik7DQo+ICtjbWRsaW5lX3BhcnNlX3Rva2VuX3N0cmluZ190IGNtZF9zZXRfdnhsYW5f dnhsYW4gPQ0KPiArCVRPS0VOX1NUUklOR19JTklUSUFMSVpFUihzdHJ1Y3QgY21kX3NldF92eGxh bl9yZXN1bHQsIHZ4bGFuLA0KPiAidnhsYW4iKTsNCj4gK2NtZGxpbmVfcGFyc2VfdG9rZW5fc3Ry aW5nX3QgY21kX3NldF92eGxhbl92eGxhbl93aXRoX3ZsYW4gPQ0KPiArCVRPS0VOX1NUUklOR19J TklUSUFMSVpFUihzdHJ1Y3QgY21kX3NldF92eGxhbl9yZXN1bHQsIHZ4bGFuLA0KPiArCQkJCSAi dnhsYW4td2l0aC12bGFuIik7DQo+ICtjbWRsaW5lX3BhcnNlX3Rva2VuX3N0cmluZ190IGNtZF9z ZXRfdnhsYW5faXBfdmVyc2lvbiA9DQo+ICsJVE9LRU5fU1RSSU5HX0lOSVRJQUxJWkVSKHN0cnVj dCBjbWRfc2V0X3Z4bGFuX3Jlc3VsdCwNCj4gaXBfdmVyc2lvbiwNCj4gKwkJCQkgImlwdjQjaXB2 NiIpOw0KPiArY21kbGluZV9wYXJzZV90b2tlbl9udW1fdCBjbWRfc2V0X3Z4bGFuX3ZuaSA9DQo+ ICsJVE9LRU5fTlVNX0lOSVRJQUxJWkVSKHN0cnVjdCBjbWRfc2V0X3Z4bGFuX3Jlc3VsdCwgdm5p LA0KPiBVSU5UMzIpOw0KPiArY21kbGluZV9wYXJzZV90b2tlbl9udW1fdCBjbWRfc2V0X3Z4bGFu X3VkcF9zcmMgPQ0KPiArCVRPS0VOX05VTV9JTklUSUFMSVpFUihzdHJ1Y3QgY21kX3NldF92eGxh bl9yZXN1bHQsIHVkcF9zcmMsDQo+IFVJTlQxNik7DQo+ICtjbWRsaW5lX3BhcnNlX3Rva2VuX251 bV90IGNtZF9zZXRfdnhsYW5fdWRwX2RzdCA9DQo+ICsJVE9LRU5fTlVNX0lOSVRJQUxJWkVSKHN0 cnVjdCBjbWRfc2V0X3Z4bGFuX3Jlc3VsdCwgdWRwX2RzdCwNCj4gVUlOVDE2KTsNCj4gK2NtZGxp bmVfcGFyc2VfdG9rZW5faXBhZGRyX3QgY21kX3NldF92eGxhbl9pcF9zcmMgPQ0KPiArCVRPS0VO X0lQQUREUl9JTklUSUFMSVpFUihzdHJ1Y3QgY21kX3NldF92eGxhbl9yZXN1bHQsIGlwX3NyYyk7 DQo+ICtjbWRsaW5lX3BhcnNlX3Rva2VuX2lwYWRkcl90IGNtZF9zZXRfdnhsYW5faXBfZHN0ID0N Cj4gKwlUT0tFTl9JUEFERFJfSU5JVElBTElaRVIoc3RydWN0IGNtZF9zZXRfdnhsYW5fcmVzdWx0 LCBpcF9kc3QpOw0KPiArY21kbGluZV9wYXJzZV90b2tlbl9udW1fdCBjbWRfc2V0X3Z4bGFuX3Zs YW4gPQ0KPiArCVRPS0VOX05VTV9JTklUSUFMSVpFUihzdHJ1Y3QgY21kX3NldF92eGxhbl9yZXN1 bHQsIHRjaSwgVUlOVDE2KTsNCj4gK2NtZGxpbmVfcGFyc2VfdG9rZW5fZXRoZXJhZGRyX3QgY21k X3NldF92eGxhbl9ldGhfc3JjID0NCj4gKwlUT0tFTl9FVEhFUkFERFJfSU5JVElBTElaRVIoc3Ry dWN0IGNtZF9zZXRfdnhsYW5fcmVzdWx0LA0KPiBldGhfc3JjKTsNCj4gK2NtZGxpbmVfcGFyc2Vf dG9rZW5fZXRoZXJhZGRyX3QgY21kX3NldF92eGxhbl9ldGhfZHN0ID0NCj4gKwlUT0tFTl9FVEhF UkFERFJfSU5JVElBTElaRVIoc3RydWN0IGNtZF9zZXRfdnhsYW5fcmVzdWx0LA0KPiBldGhfZHN0 KTsNCj4gKw0KPiArc3RhdGljIHZvaWQgY21kX3NldF92eGxhbl9wYXJzZWQodm9pZCAqcGFyc2Vk X3Jlc3VsdCwNCj4gKwlfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSBzdHJ1Y3QgY21kbGluZSAqY2ws DQo+ICsJX19hdHRyaWJ1dGVfXygodW51c2VkKSkgdm9pZCAqZGF0YSkNCj4gK3sNCj4gKwlzdHJ1 Y3QgY21kX3NldF92eGxhbl9yZXN1bHQgKnJlcyA9IHBhcnNlZF9yZXN1bHQ7DQo+ICsJdW5pb24g ew0KPiArCQl1aW50MzJfdCB2eGxhbl9pZDsNCj4gKwkJdWludDhfdCB2bmlbNF07DQo+ICsJfSBp ZCA9IHsNCj4gKwkJLnZ4bGFuX2lkID0gcnRlX2NwdV90b19iZV8zMihyZXMtPnZuaSkgJg0KPiBS VEVfQkUzMigweDAwZmZmZmZmKSwNCj4gKwl9Ow0KPiArDQo+ICsJaWYgKHN0cmNtcChyZXMtPnZ4 bGFuLCAidnhsYW4iKSA9PSAwKQ0KPiArCQl2eGxhbl9lbmNhcF9jb25mLnNlbGVjdF92bGFuID0g MDsNCj4gKwllbHNlIGlmIChzdHJjbXAocmVzLT52eGxhbiwgInZ4bGFuLXdpdGgtdmxhbiIpID09 IDApDQo+ICsJCXZ4bGFuX2VuY2FwX2NvbmYuc2VsZWN0X3ZsYW4gPSAxOw0KPiArCWlmIChzdHJj bXAocmVzLT5pcF92ZXJzaW9uLCAiaXB2NCIpID09IDApDQo+ICsJCXZ4bGFuX2VuY2FwX2NvbmYu c2VsZWN0X2lwdjQgPSAxOw0KPiArCWVsc2UgaWYgKHN0cmNtcChyZXMtPmlwX3ZlcnNpb24sICJp cHY2IikgPT0gMCkNCj4gKwkJdnhsYW5fZW5jYXBfY29uZi5zZWxlY3RfaXB2NCA9IDA7DQo+ICsJ ZWxzZQ0KPiArCQlyZXR1cm47DQo+ICsJcnRlX21lbWNweSh2eGxhbl9lbmNhcF9jb25mLnZuaSwg JmlkLnZuaVsxXSwgMyk7DQo+ICsJdnhsYW5fZW5jYXBfY29uZi51ZHBfc3JjID0gcnRlX2NwdV90 b19iZV8xNihyZXMtPnVkcF9zcmMpOw0KPiArCXZ4bGFuX2VuY2FwX2NvbmYudWRwX2RzdCA9IHJ0 ZV9jcHVfdG9fYmVfMTYocmVzLT51ZHBfZHN0KTsNCj4gKwlpZiAodnhsYW5fZW5jYXBfY29uZi5z ZWxlY3RfaXB2NCkgew0KPiArCQlJUFY0X0FERFJfVE9fVUlOVChyZXMtPmlwX3NyYywNCj4gdnhs YW5fZW5jYXBfY29uZi5pcHY0X3NyYyk7DQo+ICsJCUlQVjRfQUREUl9UT19VSU5UKHJlcy0+aXBf ZHN0LA0KPiB2eGxhbl9lbmNhcF9jb25mLmlwdjRfZHN0KTsNCj4gKwl9IGVsc2Ugew0KPiArCQlJ UFY2X0FERFJfVE9fQVJSQVkocmVzLT5pcF9zcmMsDQo+IHZ4bGFuX2VuY2FwX2NvbmYuaXB2Nl9z cmMpOw0KPiArCQlJUFY2X0FERFJfVE9fQVJSQVkocmVzLT5pcF9kc3QsDQo+IHZ4bGFuX2VuY2Fw X2NvbmYuaXB2Nl9kc3QpOw0KPiArCX0NCj4gKwlpZiAodnhsYW5fZW5jYXBfY29uZi5zZWxlY3Rf dmxhbikNCj4gKwkJdnhsYW5fZW5jYXBfY29uZi52bGFuX3RjaSA9IHJ0ZV9jcHVfdG9fYmVfMTYo cmVzLT50Y2kpOw0KPiArCXJ0ZV9tZW1jcHkodnhsYW5fZW5jYXBfY29uZi5ldGhfc3JjLCByZXMt PmV0aF9zcmMuYWRkcl9ieXRlcywNCj4gKwkJICAgRVRIRVJfQUREUl9MRU4pOw0KPiArCXJ0ZV9t ZW1jcHkodnhsYW5fZW5jYXBfY29uZi5ldGhfZHN0LCByZXMtPmV0aF9kc3QuYWRkcl9ieXRlcywN Cj4gKwkJICAgRVRIRVJfQUREUl9MRU4pOw0KPiArfQ0KPiArDQo+ICtjbWRsaW5lX3BhcnNlX2lu c3RfdCBjbWRfc2V0X3Z4bGFuID0gew0KPiArCS5mID0gY21kX3NldF92eGxhbl9wYXJzZWQsDQo+ ICsJLmRhdGEgPSBOVUxMLA0KPiArCS5oZWxwX3N0ciA9ICJzZXQgdnhsYW4gaXB2NHxpcHY2IDx2 bmk+IDx1ZHAtc3JjPiA8dWRwLWRzdD4gPGlwLXNyYz4iDQo+ICsJCSIgPGlwLWRzdD4gPGV0aC1z cmM+IDxldGgtZHN0PiIsDQo+ICsJLnRva2VucyA9IHsNCj4gKwkJKHZvaWQgKikmY21kX3NldF92 eGxhbl9zZXQsDQo+ICsJCSh2b2lkICopJmNtZF9zZXRfdnhsYW5fdnhsYW4sDQo+ICsJCSh2b2lk ICopJmNtZF9zZXRfdnhsYW5faXBfdmVyc2lvbiwNCj4gKwkJKHZvaWQgKikmY21kX3NldF92eGxh bl92bmksDQo+ICsJCSh2b2lkICopJmNtZF9zZXRfdnhsYW5fdWRwX3NyYywNCj4gKwkJKHZvaWQg KikmY21kX3NldF92eGxhbl91ZHBfZHN0LA0KPiArCQkodm9pZCAqKSZjbWRfc2V0X3Z4bGFuX2lw X3NyYywNCj4gKwkJKHZvaWQgKikmY21kX3NldF92eGxhbl9pcF9kc3QsDQo+ICsJCSh2b2lkICop JmNtZF9zZXRfdnhsYW5fZXRoX3NyYywNCj4gKwkJKHZvaWQgKikmY21kX3NldF92eGxhbl9ldGhf ZHN0LA0KPiArCQlOVUxMLA0KPiArCX0sDQo+ICt9Ow0KPiArDQo+ICtjbWRsaW5lX3BhcnNlX2lu c3RfdCBjbWRfc2V0X3Z4bGFuX3dpdGhfdmxhbiA9IHsNCj4gKwkuZiA9IGNtZF9zZXRfdnhsYW5f cGFyc2VkLA0KPiArCS5kYXRhID0gTlVMTCwNCj4gKwkuaGVscF9zdHIgPSAic2V0IHZ4bGFuLXdp dGgtdmxhbiBpcHY0fGlwdjYgPHZuaT4gPHVkcC1zcmM+IDx1ZHAtDQo+IGRzdD4iDQo+ICsJCSIg PGlwLXNyYz4gPGlwLWRzdD4gPHZsYW4tdGNpPiA8ZXRoLXNyYz4gPGV0aC1kc3Q+IiwNCj4gKwku dG9rZW5zID0gew0KPiArCQkodm9pZCAqKSZjbWRfc2V0X3Z4bGFuX3NldCwNCj4gKwkJKHZvaWQg KikmY21kX3NldF92eGxhbl92eGxhbl93aXRoX3ZsYW4sDQo+ICsJCSh2b2lkICopJmNtZF9zZXRf dnhsYW5faXBfdmVyc2lvbiwNCj4gKwkJKHZvaWQgKikmY21kX3NldF92eGxhbl92bmksDQo+ICsJ CSh2b2lkICopJmNtZF9zZXRfdnhsYW5fdWRwX3NyYywNCj4gKwkJKHZvaWQgKikmY21kX3NldF92 eGxhbl91ZHBfZHN0LA0KPiArCQkodm9pZCAqKSZjbWRfc2V0X3Z4bGFuX2lwX3NyYywNCj4gKwkJ KHZvaWQgKikmY21kX3NldF92eGxhbl9pcF9kc3QsDQo+ICsJCSh2b2lkICopJmNtZF9zZXRfdnhs YW5fdmxhbiwNCj4gKwkJKHZvaWQgKikmY21kX3NldF92eGxhbl9ldGhfc3JjLA0KPiArCQkodm9p ZCAqKSZjbWRfc2V0X3Z4bGFuX2V0aF9kc3QsDQo+ICsJCU5VTEwsDQo+ICsJfSwNCj4gK307DQo+ ICsNCj4gIC8qIFN0cmljdCBsaW5rIHByaW9yaXR5IHNjaGVkdWxpbmcgbW9kZSBzZXR0aW5nICov DQo+ICBzdGF0aWMgdm9pZA0KPiAgY21kX3N0cmljdF9saW5rX3ByaW9fcGFyc2VkKA0KPiBAQCAt MTc0NjIsNiArMTc1OTQsOCBAQCBjbWRsaW5lX3BhcnNlX2N0eF90IG1haW5fY3R4W10gPSB7DQo+ ICAjaWYgZGVmaW5lZCBSVEVfTElCUlRFX1BNRF9TT0ZUTklDICYmIGRlZmluZWQgUlRFX0xJQlJU RV9TQ0hFRA0KPiAgCShjbWRsaW5lX3BhcnNlX2luc3RfdCAqKSZjbWRfc2V0X3BvcnRfdG1faGll cmFyY2h5X2RlZmF1bHQsDQo+ICAjZW5kaWYNCj4gKwkoY21kbGluZV9wYXJzZV9pbnN0X3QgKikm Y21kX3NldF92eGxhbiwNCj4gKwkoY21kbGluZV9wYXJzZV9pbnN0X3QgKikmY21kX3NldF92eGxh bl93aXRoX3ZsYW4sDQo+ICAJKGNtZGxpbmVfcGFyc2VfaW5zdF90ICopJmNtZF9kZHBfYWRkLA0K PiAgCShjbWRsaW5lX3BhcnNlX2luc3RfdCAqKSZjbWRfZGRwX2RlbCwNCj4gIAkoY21kbGluZV9w YXJzZV9pbnN0X3QgKikmY21kX2RkcF9nZXRfbGlzdCwNCj4gZGlmZiAtLWdpdCBhL2FwcC90ZXN0 LXBtZC9jbWRsaW5lX2Zsb3cuYyBiL2FwcC90ZXN0LXBtZC9jbWRsaW5lX2Zsb3cuYw0KPiBpbmRl eCA5MzRjZjdlOTAuLjc4MjNhZGRiNyAxMDA2NDQNCj4gLS0tIGEvYXBwL3Rlc3QtcG1kL2NtZGxp bmVfZmxvdy5jDQo+ICsrKyBiL2FwcC90ZXN0LXBtZC9jbWRsaW5lX2Zsb3cuYw0KPiBAQCAtMjM5 LDYgKzIzOSw4IEBAIGVudW0gaW5kZXggew0KPiAgCUFDVElPTl9PRl9QT1BfTVBMU19FVEhFUlRZ UEUsDQo+ICAJQUNUSU9OX09GX1BVU0hfTVBMUywNCj4gIAlBQ1RJT05fT0ZfUFVTSF9NUExTX0VU SEVSVFlQRSwNCj4gKwlBQ1RJT05fVlhMQU5fRU5DQVAsDQo+ICsJQUNUSU9OX1ZYTEFOX0RFQ0FQ LA0KPiAgfTsNCj4gDQo+ICAvKiogTWF4aW11bSBzaXplIGZvciBwYXR0ZXJuIGluIHN0cnVjdCBy dGVfZmxvd19pdGVtX3Jhdy4gKi8NCj4gQEAgLTI1OCw2ICsyNjAsMjMgQEAgc3RydWN0IGFjdGlv bl9yc3NfZGF0YSB7DQo+ICAJdWludDE2X3QgcXVldWVbQUNUSU9OX1JTU19RVUVVRV9OVU1dOw0K PiAgfTsNCj4gDQo+ICsvKiogTWF4aW11bSBudW1iZXIgb2YgaXRlbXMgaW4gc3RydWN0IHJ0ZV9m bG93X2FjdGlvbl92eGxhbl9lbmNhcC4gKi8NCj4gKyNkZWZpbmUgQUNUSU9OX1ZYTEFOX0VOQ0FQ X0lURU1TX05VTSA2DQo+ICsNCj4gKy8qKiBTdG9yYWdlIGZvciBzdHJ1Y3QgcnRlX2Zsb3dfYWN0 aW9uX3Z4bGFuX2VuY2FwIGluY2x1ZGluZyBleHRlcm5hbCBkYXRhLg0KPiAqLw0KPiArc3RydWN0 IGFjdGlvbl92eGxhbl9lbmNhcF9kYXRhIHsNCj4gKwlzdHJ1Y3QgcnRlX2Zsb3dfYWN0aW9uX3Z4 bGFuX2VuY2FwIGNvbmY7DQo+ICsJc3RydWN0IHJ0ZV9mbG93X2l0ZW0gaXRlbXNbQUNUSU9OX1ZY TEFOX0VOQ0FQX0lURU1TX05VTV07DQo+ICsJc3RydWN0IHJ0ZV9mbG93X2l0ZW1fZXRoIGl0ZW1f ZXRoOw0KPiArCXN0cnVjdCBydGVfZmxvd19pdGVtX3ZsYW4gaXRlbV92bGFuOw0KPiArCXVuaW9u IHsNCj4gKwkJc3RydWN0IHJ0ZV9mbG93X2l0ZW1faXB2NCBpdGVtX2lwdjQ7DQo+ICsJCXN0cnVj dCBydGVfZmxvd19pdGVtX2lwdjYgaXRlbV9pcHY2Ow0KPiArCX07DQo+ICsJc3RydWN0IHJ0ZV9m bG93X2l0ZW1fdWRwIGl0ZW1fdWRwOw0KPiArCXN0cnVjdCBydGVfZmxvd19pdGVtX3Z4bGFuIGl0 ZW1fdnhsYW47DQo+ICt9Ow0KPiArDQo+ICAvKiogTWF4aW11bSBudW1iZXIgb2Ygc3Vic2VxdWVu dCB0b2tlbnMgYW5kIGFyZ3VtZW50cyBvbiB0aGUgc3RhY2suDQo+ICovDQo+ICAjZGVmaW5lIENU WF9TVEFDS19TSVpFIDE2DQo+IA0KPiBAQCAtNzc1LDYgKzc5NCw4IEBAIHN0YXRpYyBjb25zdCBl bnVtIGluZGV4IG5leHRfYWN0aW9uW10gPSB7DQo+ICAJQUNUSU9OX09GX1NFVF9WTEFOX1BDUCwN Cj4gIAlBQ1RJT05fT0ZfUE9QX01QTFMsDQo+ICAJQUNUSU9OX09GX1BVU0hfTVBMUywNCj4gKwlB Q1RJT05fVlhMQU5fRU5DQVAsDQo+ICsJQUNUSU9OX1ZYTEFOX0RFQ0FQLA0KPiAgCVpFUk8sDQo+ ICB9Ow0KPiANCj4gQEAgLTkwNSw2ICs5MjYsOSBAQCBzdGF0aWMgaW50IHBhcnNlX3ZjX2FjdGlv bl9yc3NfdHlwZShzdHJ1Y3QgY29udGV4dCAqLA0KPiBjb25zdCBzdHJ1Y3QgdG9rZW4gKiwNCj4g IHN0YXRpYyBpbnQgcGFyc2VfdmNfYWN0aW9uX3Jzc19xdWV1ZShzdHJ1Y3QgY29udGV4dCAqLCBj b25zdCBzdHJ1Y3QgdG9rZW4gKiwNCj4gIAkJCQkgICAgIGNvbnN0IGNoYXIgKiwgdW5zaWduZWQg aW50LCB2b2lkICosDQo+ICAJCQkJICAgICB1bnNpZ25lZCBpbnQpOw0KPiArc3RhdGljIGludCBw YXJzZV92Y19hY3Rpb25fdnhsYW5fZW5jYXAoc3RydWN0IGNvbnRleHQgKiwgY29uc3Qgc3RydWN0 IHRva2VuDQo+ICosDQo+ICsJCQkJICAgICAgIGNvbnN0IGNoYXIgKiwgdW5zaWduZWQgaW50LCB2 b2lkICosDQo+ICsJCQkJICAgICAgIHVuc2lnbmVkIGludCk7DQo+ICBzdGF0aWMgaW50IHBhcnNl X2Rlc3Ryb3koc3RydWN0IGNvbnRleHQgKiwgY29uc3Qgc3RydWN0IHRva2VuICosDQo+ICAJCQkg Y29uc3QgY2hhciAqLCB1bnNpZ25lZCBpbnQsDQo+ICAJCQkgdm9pZCAqLCB1bnNpZ25lZCBpbnQp Ow0KPiBAQCAtMjM4Nyw2ICsyNDExLDI0IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdG9rZW4gdG9r ZW5fbGlzdFtdID0gew0KPiAgCQkJICAgICAgZXRoZXJ0eXBlKSksDQo+ICAJCS5jYWxsID0gcGFy c2VfdmNfY29uZiwNCj4gIAl9LA0KPiArCVtBQ1RJT05fVlhMQU5fRU5DQVBdID0gew0KPiArCQku bmFtZSA9ICJ2eGxhbl9lbmNhcCIsDQo+ICsJCS5oZWxwID0gIlZYTEFOIGVuY2Fwc3VsYXRpb24s IHVzZXMgY29uZmlndXJhdGlvbiBzZXQgYnkNCj4gXCJzZXQiDQo+ICsJCQkiIHZ4bGFuXCIiLA0K PiArCQkucHJpdiA9IFBSSVZfQUNUSU9OKFZYTEFOX0VOQ0FQLA0KPiArCQkJCSAgICBzaXplb2Yo c3RydWN0IGFjdGlvbl92eGxhbl9lbmNhcF9kYXRhKSksDQo+ICsJCS5uZXh0ID0gTkVYVChORVhU X0VOVFJZKEFDVElPTl9ORVhUKSksDQo+ICsJCS5jYWxsID0gcGFyc2VfdmNfYWN0aW9uX3Z4bGFu X2VuY2FwLA0KPiArCX0sDQo+ICsJW0FDVElPTl9WWExBTl9ERUNBUF0gPSB7DQo+ICsJCS5uYW1l ID0gInZ4bGFuX2RlY2FwIiwNCj4gKwkJLmhlbHAgPSAiUGVyZm9ybXMgYSBkZWNhcHN1bGF0aW9u IGFjdGlvbiBieSBzdHJpcHBpbmcgYWxsIg0KPiArCQkJIiBoZWFkZXJzIG9mIHRoZSBWWExBTiB0 dW5uZWwgbmV0d29yayBvdmVybGF5IGZyb20NCj4gdGhlIg0KPiArCQkJIiBtYXRjaGVkIGZsb3cu IiwNCj4gKwkJLnByaXYgPSBQUklWX0FDVElPTihWWExBTl9ERUNBUCwgMCksDQo+ICsJCS5uZXh0 ID0gTkVYVChORVhUX0VOVFJZKEFDVElPTl9ORVhUKSksDQo+ICsJCS5jYWxsID0gcGFyc2VfdmMs DQo+ICsJfSwNCj4gIH07DQo+IA0KPiAgLyoqIFJlbW92ZSBhbmQgcmV0dXJuIGxhc3QgZW50cnkg ZnJvbSBhcmd1bWVudCBzdGFjay4gKi8NCj4gQEAgLTI5NTEsNiArMjk5MywxMDMgQEAgcGFyc2Vf dmNfYWN0aW9uX3Jzc19xdWV1ZShzdHJ1Y3QgY29udGV4dCAqY3R4LA0KPiBjb25zdCBzdHJ1Y3Qg dG9rZW4gKnRva2VuLA0KPiAgCXJldHVybiBsZW47DQo+ICB9DQo+IA0KPiArLyoqIFBhcnNlIFZY TEFOIGVuY2FwIGFjdGlvbi4gKi8NCj4gK3N0YXRpYyBpbnQNCj4gK3BhcnNlX3ZjX2FjdGlvbl92 eGxhbl9lbmNhcChzdHJ1Y3QgY29udGV4dCAqY3R4LCBjb25zdCBzdHJ1Y3QgdG9rZW4NCj4gKnRv a2VuLA0KPiArCQkJICAgIGNvbnN0IGNoYXIgKnN0ciwgdW5zaWduZWQgaW50IGxlbiwNCj4gKwkJ CSAgICB2b2lkICpidWYsIHVuc2lnbmVkIGludCBzaXplKQ0KPiArew0KPiArCXN0cnVjdCBidWZm ZXIgKm91dCA9IGJ1ZjsNCj4gKwlzdHJ1Y3QgcnRlX2Zsb3dfYWN0aW9uICphY3Rpb247DQo+ICsJ c3RydWN0IGFjdGlvbl92eGxhbl9lbmNhcF9kYXRhICphY3Rpb25fdnhsYW5fZW5jYXBfZGF0YTsN Cj4gKwlpbnQgcmV0Ow0KPiArDQo+ICsJcmV0ID0gcGFyc2VfdmMoY3R4LCB0b2tlbiwgc3RyLCBs ZW4sIGJ1Ziwgc2l6ZSk7DQo+ICsJaWYgKHJldCA8IDApDQo+ICsJCXJldHVybiByZXQ7DQo+ICsJ LyogTm90aGluZyBlbHNlIHRvIGRvIGlmIHRoZXJlIGlzIG5vIGJ1ZmZlci4gKi8NCj4gKwlpZiAo IW91dCkNCj4gKwkJcmV0dXJuIHJldDsNCj4gKwlpZiAoIW91dC0+YXJncy52Yy5hY3Rpb25zX24p DQo+ICsJCXJldHVybiAtMTsNCj4gKwlhY3Rpb24gPSAmb3V0LT5hcmdzLnZjLmFjdGlvbnNbb3V0 LT5hcmdzLnZjLmFjdGlvbnNfbiAtIDFdOw0KPiArCS8qIFBvaW50IHRvIHNlbGVjdGVkIG9iamVj dC4gKi8NCj4gKwljdHgtPm9iamVjdCA9IG91dC0+YXJncy52Yy5kYXRhOw0KPiArCWN0eC0+b2Jq bWFzayA9IE5VTEw7DQo+ICsJLyogU2V0IHVwIGRlZmF1bHQgY29uZmlndXJhdGlvbi4gKi8NCj4g KwlhY3Rpb25fdnhsYW5fZW5jYXBfZGF0YSA9IGN0eC0+b2JqZWN0Ow0KPiArCSphY3Rpb25fdnhs YW5fZW5jYXBfZGF0YSA9IChzdHJ1Y3QgYWN0aW9uX3Z4bGFuX2VuY2FwX2RhdGEpew0KPiArCQku Y29uZiA9IChzdHJ1Y3QgcnRlX2Zsb3dfYWN0aW9uX3Z4bGFuX2VuY2FwKXsNCj4gKwkJCS5kZWZp bml0aW9uID0gYWN0aW9uX3Z4bGFuX2VuY2FwX2RhdGEtPml0ZW1zLA0KPiArCQl9LA0KPiArCQku aXRlbXMgPSB7DQo+ICsJCQl7DQo+ICsJCQkJLnR5cGUgPSBSVEVfRkxPV19JVEVNX1RZUEVfRVRI LA0KPiArCQkJCS5zcGVjID0gJmFjdGlvbl92eGxhbl9lbmNhcF9kYXRhLQ0KPiA+aXRlbV9ldGgs DQo+ICsJCQkJLm1hc2sgPSAmcnRlX2Zsb3dfaXRlbV9ldGhfbWFzaywNCj4gKwkJCX0sDQo+ICsJ CQl7DQo+ICsJCQkJLnR5cGUgPSBSVEVfRkxPV19JVEVNX1RZUEVfVkxBTiwNCj4gKwkJCQkuc3Bl YyA9ICZhY3Rpb25fdnhsYW5fZW5jYXBfZGF0YS0NCj4gPml0ZW1fdmxhbiwNCj4gKwkJCQkubWFz ayA9ICZydGVfZmxvd19pdGVtX3ZsYW5fbWFzaywNCj4gKwkJCX0sDQo+ICsJCQl7DQo+ICsJCQkJ LnR5cGUgPSBSVEVfRkxPV19JVEVNX1RZUEVfSVBWNCwNCj4gKwkJCQkuc3BlYyA9ICZhY3Rpb25f dnhsYW5fZW5jYXBfZGF0YS0NCj4gPml0ZW1faXB2NCwNCj4gKwkJCQkubWFzayA9ICZydGVfZmxv d19pdGVtX2lwdjRfbWFzaywNCj4gKwkJCX0sDQo+ICsJCQl7DQo+ICsJCQkJLnR5cGUgPSBSVEVf RkxPV19JVEVNX1RZUEVfVURQLA0KPiArCQkJCS5zcGVjID0gJmFjdGlvbl92eGxhbl9lbmNhcF9k YXRhLQ0KPiA+aXRlbV91ZHAsDQo+ICsJCQkJLm1hc2sgPSAmcnRlX2Zsb3dfaXRlbV91ZHBfbWFz aywNCj4gKwkJCX0sDQo+ICsJCQl7DQo+ICsJCQkJLnR5cGUgPSBSVEVfRkxPV19JVEVNX1RZUEVf VlhMQU4sDQo+ICsJCQkJLnNwZWMgPSAmYWN0aW9uX3Z4bGFuX2VuY2FwX2RhdGEtDQo+ID5pdGVt X3Z4bGFuLA0KPiArCQkJCS5tYXNrID0gJnJ0ZV9mbG93X2l0ZW1fdnhsYW5fbWFzaywNCj4gKwkJ CX0sDQo+ICsJCQl7DQo+ICsJCQkJLnR5cGUgPSBSVEVfRkxPV19JVEVNX1RZUEVfRU5ELA0KPiAr CQkJfSwNCj4gKwkJfSwNCj4gKwkJLml0ZW1fZXRoLnR5cGUgPSAwLA0KPiArCQkuaXRlbV92bGFu LnRjaSA9IHZ4bGFuX2VuY2FwX2NvbmYudmxhbl90Y2ksDQo+ICsJCS5pdGVtX2lwdjQuaGRyID0g ew0KPiArCQkJLnNyY19hZGRyID0gdnhsYW5fZW5jYXBfY29uZi5pcHY0X3NyYywNCj4gKwkJCS5k c3RfYWRkciA9IHZ4bGFuX2VuY2FwX2NvbmYuaXB2NF9kc3QsDQo+ICsJCX0sDQo+ICsJCS5pdGVt X3VkcC5oZHIgPSB7DQo+ICsJCQkuc3JjX3BvcnQgPSB2eGxhbl9lbmNhcF9jb25mLnVkcF9zcmMs DQo+ICsJCQkuZHN0X3BvcnQgPSB2eGxhbl9lbmNhcF9jb25mLnVkcF9kc3QsDQo+ICsJCX0sDQo+ ICsJCS5pdGVtX3Z4bGFuLmZsYWdzID0gMCwNCj4gKwl9Ow0KPiArCW1lbWNweShhY3Rpb25fdnhs YW5fZW5jYXBfZGF0YS0+aXRlbV9ldGguZHN0LmFkZHJfYnl0ZXMsDQo+ICsJICAgICAgIHZ4bGFu X2VuY2FwX2NvbmYuZXRoX2RzdCwgRVRIRVJfQUREUl9MRU4pOw0KPiArCW1lbWNweShhY3Rpb25f dnhsYW5fZW5jYXBfZGF0YS0+aXRlbV9ldGguc3JjLmFkZHJfYnl0ZXMsDQo+ICsJICAgICAgIHZ4 bGFuX2VuY2FwX2NvbmYuZXRoX3NyYywgRVRIRVJfQUREUl9MRU4pOw0KPiArCWlmICghdnhsYW5f ZW5jYXBfY29uZi5zZWxlY3RfaXB2NCkgew0KPiArCQltZW1jcHkoJmFjdGlvbl92eGxhbl9lbmNh cF9kYXRhLQ0KPiA+aXRlbV9pcHY2Lmhkci5zcmNfYWRkciwNCj4gKwkJICAgICAgICZ2eGxhbl9l bmNhcF9jb25mLmlwdjZfc3JjLA0KPiArCQkgICAgICAgc2l6ZW9mKHZ4bGFuX2VuY2FwX2NvbmYu aXB2Nl9zcmMpKTsNCj4gKwkJbWVtY3B5KCZhY3Rpb25fdnhsYW5fZW5jYXBfZGF0YS0NCj4gPml0 ZW1faXB2Ni5oZHIuZHN0X2FkZHIsDQo+ICsJCSAgICAgICAmdnhsYW5fZW5jYXBfY29uZi5pcHY2 X2RzdCwNCj4gKwkJICAgICAgIHNpemVvZih2eGxhbl9lbmNhcF9jb25mLmlwdjZfZHN0KSk7DQo+ ICsJCWFjdGlvbl92eGxhbl9lbmNhcF9kYXRhLT5pdGVtc1syXSA9IChzdHJ1Y3QNCj4gcnRlX2Zs b3dfaXRlbSl7DQo+ICsJCQkudHlwZSA9IFJURV9GTE9XX0lURU1fVFlQRV9JUFY2LA0KPiArCQkJ LnNwZWMgPSAmYWN0aW9uX3Z4bGFuX2VuY2FwX2RhdGEtPml0ZW1faXB2NiwNCj4gKwkJCS5tYXNr ID0gJnJ0ZV9mbG93X2l0ZW1faXB2Nl9tYXNrLA0KPiArCQl9Ow0KPiArCX0NCj4gKwlpZiAoIXZ4 bGFuX2VuY2FwX2NvbmYuc2VsZWN0X3ZsYW4pDQo+ICsJCWFjdGlvbl92eGxhbl9lbmNhcF9kYXRh LT5pdGVtc1sxXS50eXBlID0NCj4gKwkJCVJURV9GTE9XX0lURU1fVFlQRV9WT0lEOw0KPiArCW1l bWNweShhY3Rpb25fdnhsYW5fZW5jYXBfZGF0YS0+aXRlbV92eGxhbi52bmksDQo+IHZ4bGFuX2Vu Y2FwX2NvbmYudm5pLA0KPiArCSAgICAgICBSVEVfRElNKHZ4bGFuX2VuY2FwX2NvbmYudm5pKSk7 DQo+ICsJYWN0aW9uLT5jb25mID0gJmFjdGlvbl92eGxhbl9lbmNhcF9kYXRhLT5jb25mOw0KPiAr CXJldHVybiByZXQ7DQo+ICt9DQo+ICsNCj4gIC8qKiBQYXJzZSB0b2tlbnMgZm9yIGRlc3Ryb3kg Y29tbWFuZC4gKi8NCj4gIHN0YXRpYyBpbnQNCj4gIHBhcnNlX2Rlc3Ryb3koc3RydWN0IGNvbnRl eHQgKmN0eCwgY29uc3Qgc3RydWN0IHRva2VuICp0b2tlbiwNCj4gZGlmZiAtLWdpdCBhL2FwcC90 ZXN0LXBtZC90ZXN0cG1kLmMgYi9hcHAvdGVzdC1wbWQvdGVzdHBtZC5jDQo+IGluZGV4IDI0YzE5 OTg0NC4uNWY1ODFjMzYwIDEwMDY0NA0KPiAtLS0gYS9hcHAvdGVzdC1wbWQvdGVzdHBtZC5jDQo+ ICsrKyBiL2FwcC90ZXN0LXBtZC90ZXN0cG1kLmMNCj4gQEAgLTM5Myw2ICszOTMsMjMgQEAgdWlu dDhfdCBiaXRyYXRlX2VuYWJsZWQ7DQo+ICBzdHJ1Y3QgZ3JvX3N0YXR1cyBncm9fcG9ydHNbUlRF X01BWF9FVEhQT1JUU107DQo+ICB1aW50OF90IGdyb19mbHVzaF9jeWNsZXMgPSBHUk9fREVGQVVM VF9GTFVTSF9DWUNMRVM7DQo+IA0KPiArc3RydWN0IHZ4bGFuX2VuY2FwX2NvbmYgdnhsYW5fZW5j YXBfY29uZiA9IHsNCj4gKwkuc2VsZWN0X2lwdjQgPSAxLA0KPiArCS5zZWxlY3RfdmxhbiA9IDAs DQo+ICsJLnZuaSA9ICJceDAwXHgwMFx4MDAiLA0KPiArCS51ZHBfc3JjID0gMCwNCj4gKwkudWRw X2RzdCA9IFJURV9CRTE2KDQ3ODkpLA0KPiArCS5pcHY0X3NyYyA9IElQdjQoMTI3LCAwLCAwLCAx KSwNCj4gKwkuaXB2NF9kc3QgPSBJUHY0KDI1NSwgMjU1LCAyNTUsIDI1NSksDQo+ICsJLmlwdjZf c3JjID0gIlx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIg0KPiArCQkiXHgwMFx4MDBc eDAwXHgwMFx4MDBceDAwXHgwMFx4MDEiLA0KPiArCS5pcHY2X2RzdCA9ICJceDAwXHgwMFx4MDBc eDAwXHgwMFx4MDBceDAwXHgwMCINCj4gKwkJIlx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MTFc eDExIiwNCj4gKwkudmxhbl90Y2kgPSAwLA0KPiArCS5ldGhfc3JjID0gIlx4MDBceDAwXHgwMFx4 MDBceDAwXHgwMCIsDQo+ICsJLmV0aF9kc3QgPSAiXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmIiwN Cj4gK307DQo+ICsNCj4gIC8qIEZvcndhcmQgZnVuY3Rpb24gZGVjbGFyYXRpb25zICovDQo+ICBz dGF0aWMgdm9pZCBtYXBfcG9ydF9xdWV1ZV9zdGF0c19tYXBwaW5nX3JlZ2lzdGVycyhwb3J0aWRf dCBwaSwNCj4gIAkJCQkJCSAgIHN0cnVjdCBydGVfcG9ydCAqcG9ydCk7DQo+IGRpZmYgLS1naXQg YS9hcHAvdGVzdC1wbWQvdGVzdHBtZC5oIGIvYXBwL3Rlc3QtcG1kL3Rlc3RwbWQuaA0KPiBpbmRl eCBmNTFjZDlkZDkuLjBkNjYxODc4OCAxMDA2NDQNCj4gLS0tIGEvYXBwL3Rlc3QtcG1kL3Rlc3Rw bWQuaA0KPiArKysgYi9hcHAvdGVzdC1wbWQvdGVzdHBtZC5oDQo+IEBAIC00NzksNiArNDc5LDIz IEBAIHN0cnVjdCBnc29fc3RhdHVzIHsNCj4gIGV4dGVybiBzdHJ1Y3QgZ3NvX3N0YXR1cyBnc29f cG9ydHNbUlRFX01BWF9FVEhQT1JUU107DQo+ICBleHRlcm4gdWludDE2X3QgZ3NvX21heF9zZWdt ZW50X3NpemU7DQo+IA0KPiArLyogVlhMQU4gZW5jYXAvZGVjYXAgcGFyYW1ldGVycy4gKi8NCj4g K3N0cnVjdCB2eGxhbl9lbmNhcF9jb25mIHsNCj4gKwl1aW50MzJfdCBzZWxlY3RfaXB2NDoxOw0K PiArCXVpbnQzMl90IHNlbGVjdF92bGFuOjE7DQo+ICsJdWludDhfdCB2bmlbM107DQo+ICsJcnRl X2JlMTZfdCB1ZHBfc3JjOw0KPiArCXJ0ZV9iZTE2X3QgdWRwX2RzdDsNCj4gKwlydGVfYmUzMl90 IGlwdjRfc3JjOw0KPiArCXJ0ZV9iZTMyX3QgaXB2NF9kc3Q7DQo+ICsJdWludDhfdCBpcHY2X3Ny Y1sxNl07DQo+ICsJdWludDhfdCBpcHY2X2RzdFsxNl07DQo+ICsJcnRlX2JlMTZfdCB2bGFuX3Rj aTsNCj4gKwl1aW50OF90IGV0aF9zcmNbRVRIRVJfQUREUl9MRU5dOw0KPiArCXVpbnQ4X3QgZXRo X2RzdFtFVEhFUl9BRERSX0xFTl07DQo+ICt9Ow0KPiArc3RydWN0IHZ4bGFuX2VuY2FwX2NvbmYg dnhsYW5fZW5jYXBfY29uZjsNCj4gKw0KPiAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQNCj4g IGxjb3JlX251bSh2b2lkKQ0KPiAgew0KPiBkaWZmIC0tZ2l0IGEvZG9jL2d1aWRlcy90ZXN0cG1k X2FwcF91Zy90ZXN0cG1kX2Z1bmNzLnJzdA0KPiBiL2RvYy9ndWlkZXMvdGVzdHBtZF9hcHBfdWcv dGVzdHBtZF9mdW5jcy5yc3QNCj4gaW5kZXggMGQ2ZmQ1MGNhLi4yNzQzMDQzZDMgMTAwNjQ0DQo+ IC0tLSBhL2RvYy9ndWlkZXMvdGVzdHBtZF9hcHBfdWcvdGVzdHBtZF9mdW5jcy5yc3QNCj4gKysr IGIvZG9jL2d1aWRlcy90ZXN0cG1kX2FwcF91Zy90ZXN0cG1kX2Z1bmNzLnJzdA0KPiBAQCAtMTUz NCw2ICsxNTM0LDEzIEBAIEVuYWJsZSBvciBkaXNhYmxlIGEgcGVyIHF1ZXVlIFR4IG9mZmxvYWRp bmcgb25seQ0KPiBvbiBhIHNwZWNpZmljIFR4IHF1ZXVlOjoNCj4gDQo+ICBUaGlzIGNvbW1hbmQg c2hvdWxkIGJlIHJ1biB3aGVuIHRoZSBwb3J0IGlzIHN0b3BwZWQsIG9yIGVsc2UgaXQgd2lsbCBm YWlsLg0KPiANCj4gK0NvbmZpZyBWWExBTiBFbmNhcCBvdXRlciBsYXllcnMNCj4gK35+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4NCj4gKw0KPiArQ29uZmlndXJlIHRoZSBvdXRlciBsYXll ciB0byBlbmNhcHN1bGF0ZSBhIHBhY2tldCBpbnNpZGUgYSBWWExBTiB0dW5uZWw6Og0KPiArDQo+ ICsgdGVzdHBtZD4gc2V0IHZ4bGFuIGlwdjR8aXB2NiAodm5pKSAodWRwLXNyYykgKHVkcC1kc3Qp IChpcC1zcmMpIChpcC1kc3QpDQo+IChtYWMtc3JjKSAobWFjLWRzdCkNCj4gKyB0ZXN0cG1kPiBz ZXQgdnhsYW4td2l0aC12bGFuIGlwdjR8aXB2NiAodm5pKSAodWRwLXNyYykgKHVkcC1kc3QpIChp cC1zcmMpDQo+IChpcC1kc3QpICh2bGFuLXRjaSkgKG1hYy1zcmMpIChtYWMtZHN0KQ0KPiANCj4g IFBvcnQgRnVuY3Rpb25zDQo+ICAtLS0tLS0tLS0tLS0tLQ0KPiBAQCAtMzY1MCw2ICszNjU3LDEy IEBAIFRoaXMgc2VjdGlvbiBsaXN0cyBzdXBwb3J0ZWQgYWN0aW9ucyBhbmQgdGhlaXINCj4gYXR0 cmlidXRlcywgaWYgYW55Lg0KPiANCj4gICAgLSBgYGV0aGVydHlwZWBgOiBFdGhlcnR5cGUuDQo+ IA0KPiArLSBgYHZ4bGFuX2VuY2FwYGA6IFBlcmZvcm1zIGEgVlhMQU4gZW5jYXBzdWxhdGlvbiwg b3V0ZXIgbGF5ZXINCj4gY29uZmlndXJhdGlvbg0KPiArICBpcyBkb25lIHRocm91Z2ggYENvbmZp ZyBWWExBTiBFbmNhcCBvdXRlciBsYXllcnNgXy4NCj4gKw0KPiArLSBgYHZ4bGFuX2RlY2FwYGA6 IFBlcmZvcm1zIGEgZGVjYXBzdWxhdGlvbiBhY3Rpb24gYnkgc3RyaXBwaW5nIGFsbCBoZWFkZXJz IG9mDQo+ICsgIHRoZSBWWExBTiB0dW5uZWwgbmV0d29yayBvdmVybGF5IGZyb20gdGhlIG1hdGNo ZWQgZmxvdy4NCj4gKw0KPiAgRGVzdHJveWluZyBmbG93IHJ1bGVzDQo+ICB+fn5+fn5+fn5+fn5+ fn5+fn5+fn4NCj4gDQo+IEBAIC0zOTE1LDYgKzM5MjgsMjggQEAgVmFsaWRhdGUgYW5kIGNyZWF0 ZSBhIFFpblEgcnVsZSBvbiBwb3J0IDAgdG8gc3RlZXINCj4gdHJhZmZpYyB0byBhIHF1ZXVlIG9u IHRoZSBob3MNCj4gICAgIDAgICAgICAgMCAgICAgICAwICAgICAgIGktICAgICAgRVRIIFZMQU4g VkxBTj0+VkYgUVVFVUUNCj4gICAgIDEgICAgICAgMCAgICAgICAwICAgICAgIGktICAgICAgRVRI IFZMQU4gVkxBTj0+UEYgUVVFVUUNCj4gDQo+ICtTYW1wbGUgVlhMQU4gZW5jYXBzdWxhdGlvbiBy dWxlDQo+ICt+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+DQo+ICsNCj4gK1ZYTEFOIGVu Y2Fwc3VsYXRpb24gb3V0ZXIgbGF5ZXIgaGFzIGRlZmF1bHQgdmFsdWUgcHJlLWNvbmZpZ3VyZWQg aW4NCj4gdGVzdHBtZA0KPiArc291cmNlIGNvZGUsIHRob3NlIGNhbiBiZSBjaGFuZ2VkIGJ5IHVz aW5nIHRoZSBmb2xsb3dpbmcgY29tbWFuZHM6Og0KPiArDQo+ICtJUHY0IFZYTEFOIG91dGVyIGhl YWRlcjo6DQo+ICsNCj4gKyAgdGVzdHBtZD4gc2V0IHZ4bGFuIGlwdjQgNCA0IDQgMTI3LjAuMC4x IDEyOC4wLjAuMSAxMToxMToxMToxMToxMToxMQ0KPiAyMjoyMjoyMjoyMjoyMjoyMg0KPiArICB0 ZXN0cG1kPiBmbG93IGNyZWF0ZSAwIGluZ3Jlc3MgcGF0dGVybiBlbmQgYWN0aW9ucyB2eGxhbl9l bmNhcCAvIHF1ZXVlDQo+IGluZGV4IDAgLyBlbmQNCj4gKw0KPiArICB0ZXN0cG1kPiBzZXQgdnhs YW4td2l0aC12bGFuIGlwdjQgNCA0IDQgMTI3LjAuMC4xIDEyOC4wLjAuMSAzNA0KPiAxMToxMTox MToxMToxMToxMSAyMjoyMjoyMjoyMjoyMjoyMg0KPiArICB0ZXN0cG1kPiBmbG93IGNyZWF0ZSAw IGluZ3Jlc3MgcGF0dGVybiBlbmQgYWN0aW9ucyB2eGxhbl9lbmNhcCAvIHF1ZXVlDQo+IGluZGV4 IDAgLyBlbmQNCj4gKw0KPiArSVB2NiBWWExBTiBvdXRlciBoZWFkZXI6Og0KPiArDQo+ICsgIHRl c3RwbWQ+IHNldCB2eGxhbiBpcHY2IDQgNCA0IDo6MSA6OjIyMjIgMTE6MTE6MTE6MTE6MTE6MTEg MjI6MjI6MjI6MjI6MjI6MjINCj4gKyAgdGVzdHBtZD4gZmxvdyBjcmVhdGUgMCBpbmdyZXNzIHBh dHRlcm4gZW5kIGFjdGlvbnMgdnhsYW5fZW5jYXAgLyBxdWV1ZQ0KPiBpbmRleCAwIC8gZW5kDQo+ ICsNCj4gKyAgdGVzdHBtZD4gc2V0IHZ4bGFuLXdpdGgtdmxhbiBpcHY2IDQgNCA0IDo6MSA6OjIy MjIgMzQgMTE6MTE6MTE6MTE6MTE6MTENCj4gMjI6MjI6MjI6MjI6MjI6MjINCj4gKyAgdGVzdHBt ZD4gZmxvdyBjcmVhdGUgMCBpbmdyZXNzIHBhdHRlcm4gZW5kIGFjdGlvbnMgdnhsYW5fZW5jYXAg LyBxdWV1ZQ0KPiBpbmRleCAwIC8gZW5kDQo+ICsNCj4gIEJQRiBGdW5jdGlvbnMNCj4gIC0tLS0t LS0tLS0tLS0tDQo+IA0KPiAtLQ0KPiAyLjE4LjAucmMyDQoNCg==