From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 244B6A2EFC for ; Fri, 20 Sep 2019 15:55:25 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 574FF1F4F7; Fri, 20 Sep 2019 15:55:23 +0200 (CEST) Received: from EUR02-VE1-obe.outbound.protection.outlook.com (mail-eopbgr20060.outbound.protection.outlook.com [40.107.2.60]) by dpdk.org (Postfix) with ESMTP id C60C01F4F6 for ; Fri, 20 Sep 2019 15:55:21 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=dwPQ79JzXiASiWt9eG3GhRWWY+jc21pbt+MuuuEdojRZxBZdg6cB/Up0YIOqH7Colyd+bEj/WS7M/nq3IAcEE95rZaD/BtgcTO0vm/snNHtC/jtZSe4I2CuVTwlj10f0xOJ+mLgmB38ljIATZWbSqpupDvsjgJB1HEY69zVpvY+ShTgaqBfTAl3ROdIhREMQ6YucWMwDEblO1sl09qHNMSzpduiptE7NQOuj30XegevmzQGzfpi/XJ7qQrYnU/ry5CLOlY8OLeVDac9LJCiUQrTtXGrCRR/KIjO0LuiWsqiIlaMGyVYqlW7D+xt3NngxcwFVmzAB4XTp/+Y/F1gvCg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=UXE38fQwbSRiUv4worv4V9KdvFdPJo+S/gFo+LtCYZg=; b=jxaX5pvu5hq7hat7uFfTa4vCPqvXi+d6xJyvYb5ky7yOXTIlUO1LLIaP5P1YrRPB7A/uhFCZkU3SqsbDdxFxWft4Uz+tR7+xtIcf1rRANADgB+NcDkmx0wA2yFA9XPr5E+6nSgPzSaqtX2g830rrpEJLvBgUe/UFcTddmunD1f4cFKudB846PfmMXr4D868rtD8YGqtME+mPqzVG6H9kTB7NN/cXqoKf4229bndxH1w0Aub0zkkXqkE1waoAH+/6W6jqSXTv1BuKZSUADcbrg+fRSJOJMKUKUPGAnmS2+mQgHUCH8DqLUuCOEa9jy0rKkL3NXgl4uuIYSEtJAd9PPg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mellanox.com; dmarc=pass action=none header.from=mellanox.com; dkim=pass header.d=mellanox.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=UXE38fQwbSRiUv4worv4V9KdvFdPJo+S/gFo+LtCYZg=; b=P5QWKQJ0IIiuwRWEOTVC83dZYpB0FrCCiroB3po/8O09SFq356BLAYil8EqyWGUErB8tXUZBhNri8eFy4GvvF6aw3k2kTpIcRCkK0ojXL49LZi1knMITs0NoFnDvM09LeW1t+HtrlFql88lJwuRdiKogbe1kNJY7+3nElCB5OVc= Received: from AM6PR05MB6567.eurprd05.prod.outlook.com (20.179.6.215) by AM6PR05MB4871.eurprd05.prod.outlook.com (20.177.35.225) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2284.18; Fri, 20 Sep 2019 13:55:20 +0000 Received: from AM6PR05MB6567.eurprd05.prod.outlook.com ([fe80::e02b:45ce:8dec:6027]) by AM6PR05MB6567.eurprd05.prod.outlook.com ([fe80::e02b:45ce:8dec:6027%6]) with mapi id 15.20.2284.023; Fri, 20 Sep 2019 13:55:20 +0000 From: Jack Min To: Ori Kam , Adrien Mazarguil , Wenzhuo Lu , Jingjing Wu , Bernard Iremonger CC: "dev@dpdk.org" Thread-Topic: [dpdk-dev] [RFC] app/testpmd: support multiple raw encap/decap Thread-Index: AQHVX9YocTS3dHsiIkCgwnKkp9aesKc0tlIA Date: Fri, 20 Sep 2019 13:55:19 +0000 Message-ID: <20190920135502.hdzsmib4r5hv4vmd@mellanox.com> References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: HK2PR02CA0169.apcprd02.prod.outlook.com (2603:1096:201:1f::29) To AM6PR05MB6567.eurprd05.prod.outlook.com (2603:10a6:20b:bc::23) authentication-results: spf=none (sender IP is ) smtp.mailfrom=jackmin@mellanox.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [2408:8025:34b:b6d0:4d22:270:1e4c:5115] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 956c95d7-5ace-4e1f-fe04-08d73dd22c3f x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(5600167)(711020)(4605104)(1401327)(4618075)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7193020); SRVR:AM6PR05MB4871; x-ms-traffictypediagnostic: AM6PR05MB4871:|AM6PR05MB4871: x-ld-processed: a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtAddr x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:5236; x-forefront-prvs: 0166B75B74 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(4636009)(366004)(376002)(136003)(396003)(346002)(39860400002)(189003)(199004)(6116002)(486006)(7736002)(2906002)(305945005)(46003)(71190400001)(71200400001)(36756003)(14454004)(316002)(186003)(102836004)(52116002)(478600001)(76176011)(6506007)(5660300002)(110136005)(476003)(2616005)(11346002)(86362001)(386003)(1076003)(4326008)(30864003)(8676002)(6246003)(81156014)(81166006)(14444005)(8936002)(256004)(446003)(6512007)(99286004)(64756008)(229853002)(6486002)(6436002)(66446008)(66476007)(66556008)(25786009)(66946007); DIR:OUT; SFP:1101; SCL:1; SRVR:AM6PR05MB4871; H:AM6PR05MB6567.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-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: Bkuceth2RJvCUEwulpabl/ot0cyzMwMnmyfGeCoiV5dlWOWmRTy+FvwAl3Q0ooAct6Avx2EPGNkbwDPK4Vub3fh77oCDL1AXLpMTsorcjqkgQvSVYxuzSNYUVe+Zf7fTYH+bFDNhAElyOS/6GwNOqYWDA7k9r2JRJcRFBnlcGdBVv0p8hDJ325RkVXD2lYg5sQrsohxKEE2CpFQTOwaoey1RjQNRccAE5Wt/FkTlHu/MINND/15A7LChXgo92+UYkI/ZdWYG0vWqKFnNvQ0xoo7CSWiPvXb4AQrbooWEZe/xBSyyNuE2dH2uPFQBwujjyBMI6ZlbABU6aOvKlboKqoBkj1KzB5H7EQuwt9nPKh0pm/CIrhpMHq4vgw5wYsU4dWkqx8gKzUs0ABu7imVah+QcrIb+5IoXaJS0K3wVRJU= Content-Type: text/plain; charset="utf-8" Content-ID: <5F3687D4C0E834478CDECEE12D65F724@eurprd05.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 956c95d7-5ace-4e1f-fe04-08d73dd22c3f X-MS-Exchange-CrossTenant-originalarrivaltime: 20 Sep 2019 13:55:19.9307 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 67OkJi9/QOqSESnMR1fZloCVTJ5653a/KJgizd2R95gZ/D/OB5nErn3AQYW2AiSHjJ4cfL9BI2W7xzYGlIoleA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR05MB4871 Subject: Re: [dpdk-dev] [RFC] app/testpmd: support multiple raw encap/decap 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: , Errors-To: dev-bounces@dpdk.org Sender: "dev" SGV5LA0KDQpBbnlvbmUgaGFzIGFueSBjb21tZW50cz8NCg0KLUphY2sNCg0KT24gU2F0LCAxOS0w OC0zMSwgMTY6MjgsIFhpYW95dSBNaW4gd3JvdGU6DQo+IEluIHNvbWUgc2NlbmFyaW9zLCB0aGUg cmF3X2VuY2FwL3Jhd19kZWNhcCBhY3Rpb25zIGNvdWxkIGJlIG11bHRpcGxlIGluDQo+IG9uZSBz aW5nbGUgZmxvdyAoZSxnLiBoaXJlcGluIGZsb3cpOg0KPiANCj4gICAuLi4gYWN0aW9ucyByYXdf ZGVjYXAgLyByYXdfZW5jYXAgLyByYXdfZGVjYXAgLyByYXdfZW5jYXAgLyAuLi4NCj4gDQo+IFRo aXMgcmVxdWlyZXMgdGhlIHRlc3RwbWQgc3VwcG9ydHMgbXVsdGlwbGUgcmF3X2VuY2FwL3Jhd19k ZWNhcCBkYXRhDQo+IHNldHRpbmdzIGFzIHdlbGwuDQo+IA0KPiBXaXRoIHRoZSBtdWx0aXBsZSBy YXdfZW5jYXAvcmF3X2RlY2FwIHNldHRpbmdzLCB0aGUgdGVzdHBtZCBjb21tYW5kcyDigJMNCj4g c2V0IHJhd19lbmNhcCAvIHNldCByYXdfZGVjYXAgd2lsbCBiZWNvbWU6DQo+IA0KPiAgIHNldCBy YXdfZW5jYXAgPGluZGV4PiA8aXRlbSBwYXR0ZXJuPg0KPiAgIHNldCByYXdfZW5jYXAgPGluZGV4 PiA8aXRlbSBwYXR0ZXJuPg0KPiANCj4gQW5kIHRoZSBhY3Rpb25zIOKAkyByYXdfZW5jYXAvcmF3 X2RlY2FwIGFsc28gY291bGQgb3B0aW9uYWxseSBjaG9vc2Ugd2hpY2gNCj4gZ2xvYmFsIHJhd19l bmNhcC9yYXdfZGVjYXAgY29uZnMgdG8gYmUgdXNlZCBieSBpbmRleDoNCj4gDQo+ICAgLi4uIGFj dGlvbnMgcmF3X2RlY2FwIGluZGV4IDEgLyByYXdfZW5jYXAgaW5kZXggMiAvIC4uLg0KPiANCj4g SWYgdGhlcmUgaXMgbm8gYGluZGV4YCBzcGVjaWZpZWQsIHRoZSBkZWZhdWx0IGluZGV4IGlzIDAu DQo+IA0KPiBTaWduZWQtb2ZmLWJ5OiBYaWFveXUgTWluIDxqYWNrbWluQG1lbGxhbm94LmNvbT4N Cj4gLS0tDQo+ICBhcHAvdGVzdC1wbWQvY21kbGluZV9mbG93LmMgfCAxOTggKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKy0tLS0tDQo+ICAxIGZpbGUgY2hhbmdlZCwgMTcxIGluc2VydGlv bnMoKyksIDI3IGRlbGV0aW9ucygtKQ0KPiANCj4gZGlmZiAtLWdpdCBhL2FwcC90ZXN0LXBtZC9j bWRsaW5lX2Zsb3cuYyBiL2FwcC90ZXN0LXBtZC9jbWRsaW5lX2Zsb3cuYw0KPiBpbmRleCA0OTU4 NzEzOTRlLi5mZjM4NGFkZTQyIDEwMDY0NA0KPiAtLS0gYS9hcHAvdGVzdC1wbWQvY21kbGluZV9m bG93LmMNCj4gKysrIGIvYXBwL3Rlc3QtcG1kL2NtZGxpbmVfZmxvdy5jDQo+IEBAIC01MSw2ICs1 MSw3IEBAIGVudW0gaW5kZXggew0KPiAgCS8qIFN1Yi1sZXZlIGNvbW1hbmRzLiAqLw0KPiAgCVNF VF9SQVdfRU5DQVAsDQo+ICAJU0VUX1JBV19ERUNBUCwNCj4gKwlTRVRfUkFXX0lOREVYLA0KPiAg DQo+ICAJLyogVG9wLWxldmVsIGNvbW1hbmQuICovDQo+ICAJRkxPVywNCj4gQEAgLTI5Nyw2ICsy OTgsMTAgQEAgZW51bSBpbmRleCB7DQo+ICAJQUNUSU9OX0RFQ19UQ1BfQUNLX1ZBTFVFLA0KPiAg CUFDVElPTl9SQVdfRU5DQVAsDQo+ICAJQUNUSU9OX1JBV19ERUNBUCwNCj4gKwlBQ1RJT05fUkFX X0VOQ0FQX0lOREVYLA0KPiArCUFDVElPTl9SQVdfRU5DQVBfSU5ERVhfVkFMVUUsDQo+ICsJQUNU SU9OX1JBV19ERUNBUF9JTkRFWCwNCj4gKwlBQ1RJT05fUkFXX0RFQ0FQX0lOREVYX1ZBTFVFLA0K PiAgfTsNCj4gIA0KPiAgLyoqIE1heGltdW0gc2l6ZSBmb3IgcGF0dGVybiBpbiBzdHJ1Y3QgcnRl X2Zsb3dfaXRlbV9yYXcuICovDQo+IEBAIC0zMjAsNiArMzI1LDcgQEAgc3RydWN0IGFjdGlvbl9y c3NfZGF0YSB7DQo+ICAjZGVmaW5lIEFDVElPTl9WWExBTl9FTkNBUF9JVEVNU19OVU0gNg0KPiAg DQo+ICAjZGVmaW5lIEFDVElPTl9SQVdfRU5DQVBfTUFYX0RBVEEgMTI4DQo+ICsjZGVmaW5lIFJB V19FTkNBUF9DT05GU19NQVhfTlVNIDgNCj4gIA0KPiAgLyoqIFN0b3JhZ2UgZm9yIHN0cnVjdCBy dGVfZmxvd19hY3Rpb25fcmF3X2VuY2FwLiAqLw0KPiAgc3RydWN0IHJhd19lbmNhcF9jb25mIHsN Cj4gQEAgLTMyOCw3ICszMzQsNyBAQCBzdHJ1Y3QgcmF3X2VuY2FwX2NvbmYgew0KPiAgCXNpemVf dCBzaXplOw0KPiAgfTsNCj4gIA0KPiAtc3RydWN0IHJhd19lbmNhcF9jb25mIHJhd19lbmNhcF9j b25mID0gey5zaXplID0gMH07DQo+ICtzdHJ1Y3QgcmF3X2VuY2FwX2NvbmYgcmF3X2VuY2FwX2Nv bmZzW1JBV19FTkNBUF9DT05GU19NQVhfTlVNXTsNCj4gIA0KPiAgLyoqIFN0b3JhZ2UgZm9yIHN0 cnVjdCBydGVfZmxvd19hY3Rpb25fcmF3X2RlY2FwLiAqLw0KPiAgc3RydWN0IHJhd19kZWNhcF9j b25mIHsNCj4gQEAgLTMzNiw3ICszNDIsNyBAQCBzdHJ1Y3QgcmF3X2RlY2FwX2NvbmYgew0KPiAg CXNpemVfdCBzaXplOw0KPiAgfTsNCj4gIA0KPiAtc3RydWN0IHJhd19kZWNhcF9jb25mIHJhd19k ZWNhcF9jb25mID0gey5zaXplID0gMH07DQo+ICtzdHJ1Y3QgcmF3X2RlY2FwX2NvbmYgcmF3X2Rl Y2FwX2NvbmZzW1JBV19FTkNBUF9DT05GU19NQVhfTlVNXTsNCj4gIA0KPiAgLyoqIFN0b3JhZ2Ug Zm9yIHN0cnVjdCBydGVfZmxvd19hY3Rpb25fdnhsYW5fZW5jYXAgaW5jbHVkaW5nIGV4dGVybmFs IGRhdGEuICovDQo+ICBzdHJ1Y3QgYWN0aW9uX3Z4bGFuX2VuY2FwX2RhdGEgew0KPiBAQCAtMzc2 LDEyICszODIsMTQgQEAgc3RydWN0IGFjdGlvbl9yYXdfZW5jYXBfZGF0YSB7DQo+ICAJc3RydWN0 IHJ0ZV9mbG93X2FjdGlvbl9yYXdfZW5jYXAgY29uZjsNCj4gIAl1aW50OF90IGRhdGFbQUNUSU9O X1JBV19FTkNBUF9NQVhfREFUQV07DQo+ICAJdWludDhfdCBwcmVzZXJ2ZVtBQ1RJT05fUkFXX0VO Q0FQX01BWF9EQVRBXTsNCj4gKwl1aW50MTZfdCBpZHg7DQo+ICB9Ow0KPiAgDQo+ICAvKiogU3Rv cmFnZSBmb3Igc3RydWN0IHJ0ZV9mbG93X2FjdGlvbl9yYXdfZGVjYXAgaW5jbHVkaW5nIGV4dGVy bmFsIGRhdGEuICovDQo+ICBzdHJ1Y3QgYWN0aW9uX3Jhd19kZWNhcF9kYXRhIHsNCj4gIAlzdHJ1 Y3QgcnRlX2Zsb3dfYWN0aW9uX3Jhd19kZWNhcCBjb25mOw0KPiAgCXVpbnQ4X3QgZGF0YVtBQ1RJ T05fUkFXX0VOQ0FQX01BWF9EQVRBXTsNCj4gKwl1aW50MTZfdCBpZHg7DQo+ICB9Ow0KPiAgDQo+ ICAvKiogTWF4aW11bSBudW1iZXIgb2Ygc3Vic2VxdWVudCB0b2tlbnMgYW5kIGFyZ3VtZW50cyBv biB0aGUgc3RhY2suICovDQo+IEBAIC0xMTQzLDYgKzExNTEsMTggQEAgc3RhdGljIGNvbnN0IGVu dW0gaW5kZXggYWN0aW9uX2RlY190Y3BfYWNrW10gPSB7DQo+ICAJWkVSTywNCj4gIH07DQo+ICAN Cj4gK3N0YXRpYyBjb25zdCBlbnVtIGluZGV4IGFjdGlvbl9yYXdfZW5jYXBbXSA9IHsNCj4gKwlB Q1RJT05fUkFXX0VOQ0FQX0lOREVYLA0KPiArCUFDVElPTl9ORVhULA0KPiArCVpFUk8sDQo+ICt9 Ow0KPiArDQo+ICtzdGF0aWMgY29uc3QgZW51bSBpbmRleCBhY3Rpb25fcmF3X2RlY2FwW10gPSB7 DQo+ICsJQUNUSU9OX1JBV19ERUNBUF9JTkRFWCwNCj4gKwlBQ1RJT05fTkVYVCwNCj4gKwlaRVJP LA0KPiArfTsNCj4gKw0KPiAgc3RhdGljIGludCBwYXJzZV9zZXRfcmF3X2VuY2FwX2RlY2FwKHN0 cnVjdCBjb250ZXh0ICosIGNvbnN0IHN0cnVjdCB0b2tlbiAqLA0KPiAgCQkJCSAgICAgY29uc3Qg Y2hhciAqLCB1bnNpZ25lZCBpbnQsDQo+ICAJCQkJICAgICB2b2lkICosIHVuc2lnbmVkIGludCk7 DQo+IEBAIC0xMjAxLDYgKzEyMjEsMTIgQEAgc3RhdGljIGludCBwYXJzZV92Y19hY3Rpb25fcmF3 X2VuY2FwKHN0cnVjdCBjb250ZXh0ICosDQo+ICBzdGF0aWMgaW50IHBhcnNlX3ZjX2FjdGlvbl9y YXdfZGVjYXAoc3RydWN0IGNvbnRleHQgKiwNCj4gIAkJCQkgICAgIGNvbnN0IHN0cnVjdCB0b2tl biAqLCBjb25zdCBjaGFyICosDQo+ICAJCQkJICAgICB1bnNpZ25lZCBpbnQsIHZvaWQgKiwgdW5z aWduZWQgaW50KTsNCj4gK3N0YXRpYyBpbnQgcGFyc2VfdmNfYWN0aW9uX3Jhd19lbmNhcF9pbmRl eChzdHJ1Y3QgY29udGV4dCAqLA0KPiArCQkJCQkgICBjb25zdCBzdHJ1Y3QgdG9rZW4gKiwgY29u c3QgY2hhciAqLA0KPiArCQkJCQkgICB1bnNpZ25lZCBpbnQsIHZvaWQgKiwgdW5zaWduZWQgaW50 KTsNCj4gK3N0YXRpYyBpbnQgcGFyc2VfdmNfYWN0aW9uX3Jhd19kZWNhcF9pbmRleChzdHJ1Y3Qg Y29udGV4dCAqLA0KPiArCQkJCQkgICBjb25zdCBzdHJ1Y3QgdG9rZW4gKiwgY29uc3QgY2hhciAq LA0KPiArCQkJCQkgICB1bnNpZ25lZCBpbnQsIHZvaWQgKiwgdW5zaWduZWQgaW50KTsNCj4gIHN0 YXRpYyBpbnQgcGFyc2VfZGVzdHJveShzdHJ1Y3QgY29udGV4dCAqLCBjb25zdCBzdHJ1Y3QgdG9r ZW4gKiwNCj4gIAkJCSBjb25zdCBjaGFyICosIHVuc2lnbmVkIGludCwNCj4gIAkJCSB2b2lkICos IHVuc2lnbmVkIGludCk7DQo+IEBAIC0zMDk1LDE4ICszMTIxLDQxIEBAIHN0YXRpYyBjb25zdCBz dHJ1Y3QgdG9rZW4gdG9rZW5fbGlzdFtdID0gew0KPiAgCQkubmFtZSA9ICJyYXdfZW5jYXAiLA0K PiAgCQkuaGVscCA9ICJlbmNhcHN1bGF0aW9uIGRhdGEsIGRlZmluZWQgYnkgc2V0IHJhd19lbmNh cCIsDQo+ICAJCS5wcml2ID0gUFJJVl9BQ1RJT04oUkFXX0VOQ0FQLA0KPiAtCQkJc2l6ZW9mKHN0 cnVjdCBydGVfZmxvd19hY3Rpb25fcmF3X2VuY2FwKSksDQo+IC0JCS5uZXh0ID0gTkVYVChORVhU X0VOVFJZKEFDVElPTl9ORVhUKSksDQo+ICsJCQlzaXplb2Yoc3RydWN0IGFjdGlvbl9yYXdfZW5j YXBfZGF0YSkpLA0KPiArCQkubmV4dCA9IE5FWFQoYWN0aW9uX3Jhd19lbmNhcCksDQo+ICAJCS5j YWxsID0gcGFyc2VfdmNfYWN0aW9uX3Jhd19lbmNhcCwNCj4gIAl9LA0KPiArCVtBQ1RJT05fUkFX X0VOQ0FQX0lOREVYXSA9IHsNCj4gKwkJLm5hbWUgPSAiaW5kZXgiLA0KPiArCQkuaGVscCA9ICJ0 aGUgaW5kZXggb2YgcmF3X2VuY2FwX2NvbmZzIiwNCj4gKwkJLm5leHQgPSBORVhUKE5FWFRfRU5U UlkoQUNUSU9OX1JBV19FTkNBUF9JTkRFWF9WQUxVRSkpLA0KPiArCX0sDQo+ICsJW0FDVElPTl9S QVdfRU5DQVBfSU5ERVhfVkFMVUVdID0gew0KPiArCQkubmFtZSA9ICJ7aW5kZXh9IiwNCj4gKwkJ LmhlbHAgPSAidGhlIGluZGV4IHZhbHVlIiwNCj4gKwkJLm5leHQgPSBORVhUKE5FWFRfRU5UUlko QUNUSU9OX05FWFQpKSwNCj4gKwkJLmNhbGwgPSBwYXJzZV92Y19hY3Rpb25fcmF3X2VuY2FwX2lu ZGV4LA0KPiArCX0sDQo+ICAJW0FDVElPTl9SQVdfREVDQVBdID0gew0KPiAgCQkubmFtZSA9ICJy YXdfZGVjYXAiLA0KPiAgCQkuaGVscCA9ICJkZWNhcHN1bGF0aW9uIGRhdGEsIGRlZmluZWQgYnkg c2V0IHJhd19lbmNhcCIsDQo+ICAJCS5wcml2ID0gUFJJVl9BQ1RJT04oUkFXX0RFQ0FQLA0KPiAt CQkJc2l6ZW9mKHN0cnVjdCBydGVfZmxvd19hY3Rpb25fcmF3X2RlY2FwKSksDQo+IC0JCS5uZXh0 ID0gTkVYVChORVhUX0VOVFJZKEFDVElPTl9ORVhUKSksDQo+ICsJCQlzaXplb2Yoc3RydWN0IGFj dGlvbl9yYXdfZGVjYXBfZGF0YSkpLA0KPiArCQkubmV4dCA9IE5FWFQoYWN0aW9uX3Jhd19kZWNh cCksDQo+ICAJCS5jYWxsID0gcGFyc2VfdmNfYWN0aW9uX3Jhd19kZWNhcCwNCj4gIAl9LA0KPiAr CVtBQ1RJT05fUkFXX0RFQ0FQX0lOREVYXSA9IHsNCj4gKwkJLm5hbWUgPSAiaW5kZXgiLA0KPiAr CQkuaGVscCA9ICJ0aGUgaW5kZXggb2YgcmF3X2RlY2FwX2NvbmZzIiwNCj4gKwkJLm5leHQgPSBO RVhUKE5FWFRfRU5UUlkoQUNUSU9OX05FWFQpKSwNCj4gKwkJLmNhbGwgPSBwYXJzZV92Y19hY3Rp b25fcmF3X2RlY2FwX2luZGV4LA0KPiArCX0sDQo+ICsJW0FDVElPTl9SQVdfREVDQVBfSU5ERVhf VkFMVUVdID0gew0KPiArCQkubmFtZSA9ICJ7aW5kZXh9IiwNCj4gKwkJLmhlbHAgPSAidGhlIGlu ZGV4IHZhbHVlIiwNCj4gKwkJLm5leHQgPSBORVhUKE5FWFRfRU5UUlkoQUNUSU9OX05FWFQpKSwN Cj4gKwkJLmNhbGwgPSBwYXJzZV92Y19hY3Rpb25fcmF3X2RlY2FwX2luZGV4LA0KPiArCX0sDQo+ ICAJLyogVG9wIGxldmVsIGNvbW1hbmQuICovDQo+ICAJW1NFVF0gPSB7DQo+ICAJCS5uYW1lID0g InNldCIsDQo+IEBAIC0zMTIxLDE0ICszMTcwLDIxIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdG9r ZW4gdG9rZW5fbGlzdFtdID0gew0KPiAgCVtTRVRfUkFXX0VOQ0FQXSA9IHsNCj4gIAkJLm5hbWUg PSAicmF3X2VuY2FwIiwNCj4gIAkJLmhlbHAgPSAic2V0IHJhdyBlbmNhcCBkYXRhIiwNCj4gLQkJ Lm5leHQgPSBORVhUKG5leHRfaXRlbSksDQo+ICsJCS5uZXh0ID0gTkVYVChuZXh0X2l0ZW0sIE5F WFRfRU5UUlkoU0VUX1JBV19JTkRFWCkpLA0KPiArCQkuYXJncyA9IEFSR1MoQVJHU19FTlRSWShz dHJ1Y3QgYnVmZmVyLCBwb3J0KSksDQo+ICAJCS5jYWxsID0gcGFyc2Vfc2V0X3Jhd19lbmNhcF9k ZWNhcCwNCj4gIAl9LA0KPiAgCVtTRVRfUkFXX0RFQ0FQXSA9IHsNCj4gIAkJLm5hbWUgPSAicmF3 X2RlY2FwIiwNCj4gIAkJLmhlbHAgPSAic2V0IHJhdyBkZWNhcCBkYXRhIiwNCj4gLQkJLm5leHQg PSBORVhUKG5leHRfaXRlbSksDQo+ICsJCS5uZXh0ID0gTkVYVChuZXh0X2l0ZW0sIE5FWFRfRU5U UlkoU0VUX1JBV19JTkRFWCkpLA0KPiAgCQkuY2FsbCA9IHBhcnNlX3NldF9yYXdfZW5jYXBfZGVj YXAsDQo+ICsJfSwNCj4gKwlbU0VUX1JBV19JTkRFWF0gPSB7DQo+ICsJCS5uYW1lID0gIntyYXdf aW5kZXh9IiwNCj4gKwkJLmhlbHAgPSAiaW5kZXggb2YgcmF3X2VuY2EvcmF3X2RlY2FwIGRhdGEi LA0KPiArCQkuY2FsbCA9IHBhcnNlX3BvcnQsDQo+ICsJCS5jb21wID0gY29tcF9ub25lLA0KPiAg CX0NCj4gIH07DQo+ICANCj4gQEAgLTQ0MjMsNiArNDQ3OSw5MiBAQCBwYXJzZV92Y19hY3Rpb25f bXBsc291ZHBfZGVjYXAoc3RydWN0IGNvbnRleHQgKmN0eCwgY29uc3Qgc3RydWN0IHRva2VuICp0 b2tlbiwNCj4gIAlyZXR1cm4gcmV0Ow0KPiAgfQ0KPiAgDQo+ICtzdGF0aWMgaW50DQo+ICtwYXJz ZV92Y19hY3Rpb25fcmF3X2RlY2FwX2luZGV4KHN0cnVjdCBjb250ZXh0ICpjdHgsIGNvbnN0IHN0 cnVjdCB0b2tlbiAqdG9rZW4sDQo+ICsJCQkJY29uc3QgY2hhciAqc3RyLCB1bnNpZ25lZCBpbnQg bGVuLCB2b2lkICpidWYsDQo+ICsJCQkJdW5zaWduZWQgaW50IHNpemUpDQo+ICt7DQo+ICsJc3Ry dWN0IGFjdGlvbl9yYXdfZGVjYXBfZGF0YSAqYWN0aW9uX3Jhd19kZWNhcF9kYXRhOw0KPiArCXN0 cnVjdCBydGVfZmxvd19hY3Rpb24gKmFjdGlvbjsNCj4gKwljb25zdCBzdHJ1Y3QgYXJnICphcmc7 DQo+ICsJc3RydWN0IGJ1ZmZlciAqb3V0ID0gYnVmOw0KPiArCXVpbnQ4X3QgKmRhdGEgPSBOVUxM Ow0KPiArCWludCByZXQ7DQo+ICsJdWludDE2X3QgaWR4Ow0KPiArDQo+ICsJUlRFX1NFVF9VU0VE KHRva2VuKTsNCj4gKwlSVEVfU0VUX1VTRUQoYnVmKTsNCj4gKwlSVEVfU0VUX1VTRUQoc2l6ZSk7 DQo+ICsJYXJnID0gQVJHU19FTlRSWV9BUkJfQk9VTkRFRA0KPiArCQkob2Zmc2V0b2Yoc3RydWN0 IGFjdGlvbl9yYXdfZGVjYXBfZGF0YSwgaWR4KSwNCj4gKwkJIHNpemVvZigoKHN0cnVjdCBhY3Rp b25fcmF3X2RlY2FwX2RhdGEgKikwKS0+aWR4KSwNCj4gKwkJIDAsIFJBV19FTkNBUF9DT05GU19N QVhfTlVNKTsNCj4gKwlpZiAocHVzaF9hcmdzKGN0eCwgYXJnKSkNCj4gKwkJcmV0dXJuIC0xOw0K PiArCXJldCA9IHBhcnNlX2ludChjdHgsIHRva2VuLCBzdHIsIGxlbiwgTlVMTCwgMCk7DQo+ICsJ aWYgKHJldCA8IDApIHsNCj4gKwkJcG9wX2FyZ3MoY3R4KTsNCj4gKwkJcmV0dXJuIC0xOw0KPiAr CX0NCj4gKwlpZiAoIWN0eC0+b2JqZWN0KQ0KPiArCQlyZXR1cm4gbGVuOw0KPiArCWFjdGlvbiA9 ICZvdXQtPmFyZ3MudmMuYWN0aW9uc1tvdXQtPmFyZ3MudmMuYWN0aW9uc19uIC0gMV07DQo+ICsJ YWN0aW9uX3Jhd19kZWNhcF9kYXRhID0gY3R4LT5vYmplY3Q7DQo+ICsJaWR4ID0gYWN0aW9uX3Jh d19kZWNhcF9kYXRhLT5pZHg7DQo+ICsJLyogZGF0YSBzdG9yZWQgZnJvbSB0YWlsIG9mIGRhdGEg YnVmZmVyICovDQo+ICsJZGF0YSA9ICh1aW50OF90ICopJihyYXdfZGVjYXBfY29uZnNbaWR4XS5k YXRhKSArDQo+ICsJCUFDVElPTl9SQVdfRU5DQVBfTUFYX0RBVEEgLSByYXdfZGVjYXBfY29uZnNb aWR4XS5zaXplOw0KPiArCWFjdGlvbl9yYXdfZGVjYXBfZGF0YS0+Y29uZi5kYXRhID0gZGF0YTsN Cj4gKwlhY3Rpb25fcmF3X2RlY2FwX2RhdGEtPmNvbmYuc2l6ZSA9IHJhd19kZWNhcF9jb25mc1tp ZHhdLnNpemU7DQo+ICsJYWN0aW9uLT5jb25mID0gJmFjdGlvbl9yYXdfZGVjYXBfZGF0YS0+Y29u ZjsNCj4gKwlyZXR1cm4gbGVuOw0KPiArfQ0KPiArDQo+ICsNCj4gK3N0YXRpYyBpbnQNCj4gK3Bh cnNlX3ZjX2FjdGlvbl9yYXdfZW5jYXBfaW5kZXgoc3RydWN0IGNvbnRleHQgKmN0eCwgY29uc3Qg c3RydWN0IHRva2VuICp0b2tlbiwNCj4gKwkJCQljb25zdCBjaGFyICpzdHIsIHVuc2lnbmVkIGlu dCBsZW4sIHZvaWQgKmJ1ZiwNCj4gKwkJCQl1bnNpZ25lZCBpbnQgc2l6ZSkNCj4gK3sNCj4gKwlz dHJ1Y3QgYWN0aW9uX3Jhd19lbmNhcF9kYXRhICphY3Rpb25fcmF3X2VuY2FwX2RhdGE7DQo+ICsJ c3RydWN0IHJ0ZV9mbG93X2FjdGlvbiAqYWN0aW9uOw0KPiArCWNvbnN0IHN0cnVjdCBhcmcgKmFy ZzsNCj4gKwlzdHJ1Y3QgYnVmZmVyICpvdXQgPSBidWY7DQo+ICsJdWludDhfdCAqZGF0YSA9IE5V TEw7DQo+ICsJaW50IHJldDsNCj4gKwl1aW50MTZfdCBpZHg7DQo+ICsNCj4gKwlSVEVfU0VUX1VT RUQodG9rZW4pOw0KPiArCVJURV9TRVRfVVNFRChidWYpOw0KPiArCVJURV9TRVRfVVNFRChzaXpl KTsNCj4gKwlpZiAoY3R4LT5jdXJyICE9IEFDVElPTl9SQVdfRU5DQVBfSU5ERVhfVkFMVUUpDQo+ ICsJCXJldHVybiAtMTsNCj4gKwlhcmcgPSBBUkdTX0VOVFJZX0FSQl9CT1VOREVEDQo+ICsJCShv ZmZzZXRvZihzdHJ1Y3QgYWN0aW9uX3Jhd19lbmNhcF9kYXRhLCBpZHgpLA0KPiArCQkgc2l6ZW9m KCgoc3RydWN0IGFjdGlvbl9yYXdfZW5jYXBfZGF0YSAqKTApLT5pZHgpLA0KPiArCQkgMCwgUkFX X0VOQ0FQX0NPTkZTX01BWF9OVU0pOw0KPiArCWlmIChwdXNoX2FyZ3MoY3R4LCBhcmcpKQ0KPiAr CQlyZXR1cm4gLTE7DQo+ICsJcmV0ID0gcGFyc2VfaW50KGN0eCwgdG9rZW4sIHN0ciwgbGVuLCBO VUxMLCAwKTsNCj4gKwlpZiAocmV0IDwgMCkgew0KPiArCQlwb3BfYXJncyhjdHgpOw0KPiArCQly ZXR1cm4gLTE7DQo+ICsJfQ0KPiArCWlmICghY3R4LT5vYmplY3QpDQo+ICsJCXJldHVybiBsZW47 DQo+ICsJYWN0aW9uID0gJm91dC0+YXJncy52Yy5hY3Rpb25zW291dC0+YXJncy52Yy5hY3Rpb25z X24gLSAxXTsNCj4gKwlhY3Rpb25fcmF3X2VuY2FwX2RhdGEgPSBjdHgtPm9iamVjdDsNCj4gKwlp ZHggPSBhY3Rpb25fcmF3X2VuY2FwX2RhdGEtPmlkeDsNCj4gKwkvKiBkYXRhIHN0b3JlZCBmcm9t IHRhaWwgb2YgZGF0YSBidWZmZXIgKi8NCj4gKwlkYXRhID0gKHVpbnQ4X3QgKikmKHJhd19lbmNh cF9jb25mc1tpZHhdLmRhdGEpICsNCj4gKwkJQUNUSU9OX1JBV19FTkNBUF9NQVhfREFUQSAtIHJh d19lbmNhcF9jb25mc1tpZHhdLnNpemU7DQo+ICsJYWN0aW9uX3Jhd19lbmNhcF9kYXRhLT5jb25m LmRhdGEgPSBkYXRhOw0KPiArCWFjdGlvbl9yYXdfZW5jYXBfZGF0YS0+Y29uZi5zaXplID0gcmF3 X2VuY2FwX2NvbmZzW2lkeF0uc2l6ZTsNCj4gKwlhY3Rpb25fcmF3X2VuY2FwX2RhdGEtPmNvbmYu cHJlc2VydmUgPSBOVUxMOw0KPiArCWFjdGlvbi0+Y29uZiA9ICZhY3Rpb25fcmF3X2VuY2FwX2Rh dGEtPmNvbmY7DQo+ICsJcmV0dXJuIGxlbjsNCj4gK30NCj4gKw0KPiAgc3RhdGljIGludA0KPiAg cGFyc2VfdmNfYWN0aW9uX3Jhd19lbmNhcChzdHJ1Y3QgY29udGV4dCAqY3R4LCBjb25zdCBzdHJ1 Y3QgdG9rZW4gKnRva2VuLA0KPiAgCQkJICBjb25zdCBjaGFyICpzdHIsIHVuc2lnbmVkIGludCBs ZW4sIHZvaWQgKmJ1ZiwNCj4gQEAgLTQ0MzAsNyArNDU3Miw3IEBAIHBhcnNlX3ZjX2FjdGlvbl9y YXdfZW5jYXAoc3RydWN0IGNvbnRleHQgKmN0eCwgY29uc3Qgc3RydWN0IHRva2VuICp0b2tlbiwN Cj4gIHsNCj4gIAlzdHJ1Y3QgYnVmZmVyICpvdXQgPSBidWY7DQo+ICAJc3RydWN0IHJ0ZV9mbG93 X2FjdGlvbiAqYWN0aW9uOw0KPiAtCXN0cnVjdCBydGVfZmxvd19hY3Rpb25fcmF3X2VuY2FwICph Y3Rpb25fcmF3X2VuY2FwX2NvbmYgPSBOVUxMOw0KPiArCXN0cnVjdCBhY3Rpb25fcmF3X2VuY2Fw X2RhdGEgKmFjdGlvbl9yYXdfZW5jYXBfZGF0YSA9IE5VTEw7DQo+ICAJdWludDhfdCAqZGF0YSA9 IE5VTEw7DQo+ICAJaW50IHJldDsNCj4gIA0KPiBAQCAtNDQ0NywxNCArNDU4OSwxNCBAQCBwYXJz ZV92Y19hY3Rpb25fcmF3X2VuY2FwKHN0cnVjdCBjb250ZXh0ICpjdHgsIGNvbnN0IHN0cnVjdCB0 b2tlbiAqdG9rZW4sDQo+ICAJY3R4LT5vYmplY3QgPSBvdXQtPmFyZ3MudmMuZGF0YTsNCj4gIAlj dHgtPm9iam1hc2sgPSBOVUxMOw0KPiAgCS8qIENvcHkgdGhlIGhlYWRlcnMgdG8gdGhlIGJ1ZmZl ci4gKi8NCj4gLQlhY3Rpb25fcmF3X2VuY2FwX2NvbmYgPSBjdHgtPm9iamVjdDsNCj4gKwlhY3Rp b25fcmF3X2VuY2FwX2RhdGEgPSBjdHgtPm9iamVjdDsNCj4gIAkvKiBkYXRhIHN0b3JlZCBmcm9t IHRhaWwgb2YgZGF0YSBidWZmZXIgKi8NCj4gLQlkYXRhID0gKHVpbnQ4X3QgKikmKHJhd19lbmNh cF9jb25mLmRhdGEpICsNCj4gLQkJQUNUSU9OX1JBV19FTkNBUF9NQVhfREFUQSAtIHJhd19lbmNh cF9jb25mLnNpemU7DQo+IC0JYWN0aW9uX3Jhd19lbmNhcF9jb25mLT5kYXRhID0gZGF0YTsNCj4g LQlhY3Rpb25fcmF3X2VuY2FwX2NvbmYtPnByZXNlcnZlID0gTlVMTDsNCj4gLQlhY3Rpb25fcmF3 X2VuY2FwX2NvbmYtPnNpemUgPSByYXdfZW5jYXBfY29uZi5zaXplOw0KPiAtCWFjdGlvbi0+Y29u ZiA9IGFjdGlvbl9yYXdfZW5jYXBfY29uZjsNCj4gKwlkYXRhID0gKHVpbnQ4X3QgKikmKHJhd19l bmNhcF9jb25mc1swXS5kYXRhKSArDQo+ICsJCUFDVElPTl9SQVdfRU5DQVBfTUFYX0RBVEEgLSBy YXdfZW5jYXBfY29uZnNbMF0uc2l6ZTsNCj4gKwlhY3Rpb25fcmF3X2VuY2FwX2RhdGEtPmNvbmYu ZGF0YSA9IGRhdGE7DQo+ICsJYWN0aW9uX3Jhd19lbmNhcF9kYXRhLT5jb25mLnByZXNlcnZlID0g TlVMTDsNCj4gKwlhY3Rpb25fcmF3X2VuY2FwX2RhdGEtPmNvbmYuc2l6ZSA9IHJhd19lbmNhcF9j b25mc1swXS5zaXplOw0KPiArCWFjdGlvbi0+Y29uZiA9ICZhY3Rpb25fcmF3X2VuY2FwX2RhdGEt PmNvbmY7DQo+ICAJcmV0dXJuIHJldDsNCj4gIH0NCj4gIA0KPiBAQCAtNDQ2NSw3ICs0NjA3LDcg QEAgcGFyc2VfdmNfYWN0aW9uX3Jhd19kZWNhcChzdHJ1Y3QgY29udGV4dCAqY3R4LCBjb25zdCBz dHJ1Y3QgdG9rZW4gKnRva2VuLA0KPiAgew0KPiAgCXN0cnVjdCBidWZmZXIgKm91dCA9IGJ1ZjsN Cj4gIAlzdHJ1Y3QgcnRlX2Zsb3dfYWN0aW9uICphY3Rpb247DQo+IC0Jc3RydWN0IHJ0ZV9mbG93 X2FjdGlvbl9yYXdfZGVjYXAgKmFjdGlvbl9yYXdfZGVjYXBfY29uZiA9IE5VTEw7DQo+ICsJc3Ry dWN0IGFjdGlvbl9yYXdfZGVjYXBfZGF0YSAqYWN0aW9uX3Jhd19kZWNhcF9kYXRhID0gTlVMTDsN Cj4gIAl1aW50OF90ICpkYXRhID0gTlVMTDsNCj4gIAlpbnQgcmV0Ow0KPiAgDQo+IEBAIC00NDgy LDEzICs0NjI0LDEzIEBAIHBhcnNlX3ZjX2FjdGlvbl9yYXdfZGVjYXAoc3RydWN0IGNvbnRleHQg KmN0eCwgY29uc3Qgc3RydWN0IHRva2VuICp0b2tlbiwNCj4gIAljdHgtPm9iamVjdCA9IG91dC0+ YXJncy52Yy5kYXRhOw0KPiAgCWN0eC0+b2JqbWFzayA9IE5VTEw7DQo+ICAJLyogQ29weSB0aGUg aGVhZGVycyB0byB0aGUgYnVmZmVyLiAqLw0KPiAtCWFjdGlvbl9yYXdfZGVjYXBfY29uZiA9IGN0 eC0+b2JqZWN0Ow0KPiArCWFjdGlvbl9yYXdfZGVjYXBfZGF0YSA9IGN0eC0+b2JqZWN0Ow0KPiAg CS8qIGRhdGEgc3RvcmVkIGZyb20gdGFpbCBvZiBkYXRhIGJ1ZmZlciAqLw0KPiAtCWRhdGEgPSAo dWludDhfdCAqKSYocmF3X2RlY2FwX2NvbmYuZGF0YSkgKw0KPiAtCQlBQ1RJT05fUkFXX0VOQ0FQ X01BWF9EQVRBIC0gcmF3X2RlY2FwX2NvbmYuc2l6ZTsNCj4gLQlhY3Rpb25fcmF3X2RlY2FwX2Nv bmYtPmRhdGEgPSBkYXRhOw0KPiAtCWFjdGlvbl9yYXdfZGVjYXBfY29uZi0+c2l6ZSA9IHJhd19k ZWNhcF9jb25mLnNpemU7DQo+IC0JYWN0aW9uLT5jb25mID0gYWN0aW9uX3Jhd19kZWNhcF9jb25m Ow0KPiArCWRhdGEgPSAodWludDhfdCAqKSYocmF3X2RlY2FwX2NvbmZzWzBdLmRhdGEpICsNCj4g KwkJQUNUSU9OX1JBV19FTkNBUF9NQVhfREFUQSAtIHJhd19kZWNhcF9jb25mc1swXS5zaXplOw0K PiArCWFjdGlvbl9yYXdfZGVjYXBfZGF0YS0+Y29uZi5kYXRhID0gZGF0YTsNCj4gKwlhY3Rpb25f cmF3X2RlY2FwX2RhdGEtPmNvbmYuc2l6ZSA9IHJhd19kZWNhcF9jb25mc1swXS5zaXplOw0KPiAr CWFjdGlvbi0+Y29uZiA9ICZhY3Rpb25fcmF3X2RlY2FwX2RhdGEtPmNvbmY7DQo+ICAJcmV0dXJu IHJldDsNCj4gIH0NCj4gIA0KPiBAQCAtNTE2Nyw2ICs1MzA5LDcgQEAgcGFyc2Vfc2V0X3Jhd19l bmNhcF9kZWNhcChzdHJ1Y3QgY29udGV4dCAqY3R4LCBjb25zdCBzdHJ1Y3QgdG9rZW4gKnRva2Vu LA0KPiAgCQlyZXR1cm4gLTE7DQo+ICAJY3R4LT5vYmpkYXRhID0gMDsNCj4gIAljdHgtPm9iam1h c2sgPSBOVUxMOw0KPiArCWN0eC0+b2JqZWN0ID0gb3V0Ow0KPiAgCWlmICghb3V0LT5jb21tYW5k KQ0KPiAgCQlyZXR1cm4gLTE7DQo+ICAJb3V0LT5jb21tYW5kID0gY3R4LT5jdXJyOw0KPiBAQCAt NTc3NywxNSArNTkyMCwxNiBAQCBjbWRfc2V0X3Jhd19wYXJzZWQoY29uc3Qgc3RydWN0IGJ1ZmZl ciAqaW4pDQo+ICAJc2l6ZV90ICp0b3RhbF9zaXplID0gTlVMTDsNCj4gIAl1aW50MTZfdCB1cHBl cl9sYXllciA9IDA7DQo+ICAJdWludDE2X3QgcHJvdG8gPSAwOw0KPiArCXVpbnQxNl90IGlkeCA9 IGluLT5wb3J0OyAvKiBXZSBib3Jyb3cgcG9ydCBmaWVsZCBhcyBpbmRleCAqLw0KPiAgDQo+ICAJ UlRFX0FTU0VSVChpbi0+Y29tbWFuZCA9PSBTRVRfUkFXX0VOQ0FQIHx8DQo+ICAJCSAgIGluLT5j b21tYW5kID09IFNFVF9SQVdfREVDQVApOw0KPiAgCWlmIChpbi0+Y29tbWFuZCA9PSBTRVRfUkFX X0VOQ0FQKSB7DQo+IC0JCXRvdGFsX3NpemUgPSAmcmF3X2VuY2FwX2NvbmYuc2l6ZTsNCj4gLQkJ ZGF0YSA9ICh1aW50OF90ICopJnJhd19lbmNhcF9jb25mLmRhdGE7DQo+ICsJCXRvdGFsX3NpemUg PSAmcmF3X2VuY2FwX2NvbmZzW2lkeF0uc2l6ZTsNCj4gKwkJZGF0YSA9ICh1aW50OF90ICopJnJh d19lbmNhcF9jb25mc1tpZHhdLmRhdGE7DQo+ICAJfSBlbHNlIHsNCj4gLQkJdG90YWxfc2l6ZSA9 ICZyYXdfZGVjYXBfY29uZi5zaXplOw0KPiAtCQlkYXRhID0gKHVpbnQ4X3QgKikmcmF3X2RlY2Fw X2NvbmYuZGF0YTsNCj4gKwkJdG90YWxfc2l6ZSA9ICZyYXdfZGVjYXBfY29uZnNbaWR4XS5zaXpl Ow0KPiArCQlkYXRhID0gKHVpbnQ4X3QgKikmcmF3X2RlY2FwX2NvbmZzW2lkeF0uZGF0YTsNCj4g IAl9DQo+ICAJKnRvdGFsX3NpemUgPSAwOw0KPiAgCW1lbXNldChkYXRhLCAweDAwLCBBQ1RJT05f UkFXX0VOQ0FQX01BWF9EQVRBKTsNCj4gLS0gDQo+IDIuMjEuMA0KPiANCg==