From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 6D97DA0C4D; Wed, 13 Oct 2021 03:10:43 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id EDC6740150; Wed, 13 Oct 2021 03:10:42 +0200 (CEST) Received: from NAM10-BN7-obe.outbound.protection.outlook.com (mail-bn7nam10on2087.outbound.protection.outlook.com [40.107.92.87]) by mails.dpdk.org (Postfix) with ESMTP id 65C7440142 for ; Wed, 13 Oct 2021 03:10:41 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=a0aW4tK0EWQjHLWs3k9tkHYM5zWG/qZRsia3v3OEsElph/KLUv8E2N+++BkNShg99UR2EcXs+mP5kkDbxE3J+TpE2ld8qBcMrQPgdWMD+0eTTVQFoMsZ2sNEIO7SD+6viAezXlw0Baz+wy36hZHezKwbzGBaSWIl5ewM9zQMFuHBcTPgU3vCSGshREG396c9C0a3XVVPGu08RFNm3toZYE2ZZF6op2qtXt7fajScmVchz7RROINb2cYwXgoLEfBRGMaFkkdE1qvbTjtysQslGEoVdTHWQcxBaPx/w4AQ2N2xrRD1HszPjEXM2JNG0PEpsHWA4351n066P+TOy4sQQA== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=J0AmjBCUijIiBsarQZFKIEosqBCGp3UvsXvzc4ybY+4=; b=RSrOOSf5jVxnwaZbl/qAyPRtZwyvSQBa31zKSC5fEuQ7ZZOMn9E137NdtNmmqFhyS3UseeBW4qA32vTLvQmQN4ssNiovpqs8fSp81kOm+gieW/1Pmj1ewWlY2PpLdCld5K6qAxcZWlka8oVRCiVERINiBco1jUJCEF7yrX9IHi54MgST/RkZZCDFCMdsiygBV59JB4ZrkwSMZ368PU42R3BCVzBWRQWcnYQuOvDtf27ZzKgm3wVsAXcQ5/bu/75hsx8rUaZmBvK8eOcILvf+Nc5ko316aMMikBHK+Tcrw/v2k1eetN4JV9oSn0Q8j/6nJ1yYiIj87VcLyICdNqGDCA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=J0AmjBCUijIiBsarQZFKIEosqBCGp3UvsXvzc4ybY+4=; b=hAtfIVH717853PnyhN3IALtRL9z9gQlsU7gHHXSuhJFExqzDkNM20HPg93IU+P3SfWWuUXcuYelprcJol00QCQvnefv2iiyh8dZSE/h2lIMbRIpshtWMMmMkD3GdLZ1EUlnrwu/clKgQ0puUy86D61sUQ1OFmh/QQhU9pXCWErrq7Tpv2qwpNhG0KORfz5pYufNh5eJjI1BTkmfRH9+W4lHlOMVTJRsUZ6LyIoghx8dfSSxZqeIGortYUmCT98nCywa92Y6O3Xq4YBghcGygwRrz2ohg1+HMqXzdxiQIn5Tg83+6G9SbBdoFBH6iglnSLz+bZt/DSCK6uk2wKHDBQQ== Received: from DM5PR12MB2405.namprd12.prod.outlook.com (2603:10b6:4:b2::20) by DM6PR12MB4354.namprd12.prod.outlook.com (2603:10b6:5:28f::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4587.20; Wed, 13 Oct 2021 01:10:39 +0000 Received: from DM5PR12MB2405.namprd12.prod.outlook.com ([fe80::d59c:b5f3:3948:e483]) by DM5PR12MB2405.namprd12.prod.outlook.com ([fe80::d59c:b5f3:3948:e483%7]) with mapi id 15.20.4587.026; Wed, 13 Oct 2021 01:10:39 +0000 From: Alexander Kozyrev To: Ivan Malov , "dev@dpdk.org" CC: NBU-Contact-Thomas Monjalon , Ori Kam , "andrew.rybchenko@oktetlabs.ru" , "ferruh.yigit@intel.com" , "mohammad.abdul.awal@intel.com" , "qi.z.zhang@intel.com" , "jerinj@marvell.com" , "ajit.khaparde@broadcom.com" Thread-Topic: [PATCH 3/3] ethdev: add async queue-based flow rules operations Thread-Index: AQHXus69gfk6bLPMxkqszyP6lmkIDqvQC93g Date: Wed, 13 Oct 2021 01:10:39 +0000 Message-ID: References: <20211006044835.3936226-1-akozyrev@nvidia.com> <20211006044835.3936226-4-akozyrev@nvidia.com> <23842a48-9278-c22c-276a-063edb4dd63a@oktetlabs.ru> In-Reply-To: <23842a48-9278-c22c-276a-063edb4dd63a@oktetlabs.ru> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: oktetlabs.ru; dkim=none (message not signed) header.d=none;oktetlabs.ru; dmarc=none action=none header.from=nvidia.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: f847686e-489c-4870-1ee7-08d98de6456c x-ms-traffictypediagnostic: DM6PR12MB4354: x-ld-processed: 43083d15-7273-40c1-b7db-39efd9ccc17a,ExtAddr x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:9508; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: frr5n1s9ENOvE+qUo22JVcWxqoUeeLzoBMhZkl0d3o0VICtIi8nyLyTcbep9U184SAnKv/c53/2OxRifqhFt9KyWx9eS0/xb21konfqCrkoRb0o7nspleug8hkPaizBuVeC98rD07tRNTfVwDNdxHquVo2E89zsyYwXVinHm4wr0A9ZnlQFNxsuN2huLAhVebj7Tz/wODjYCKVTkYytVfL2w9iFw/ry5S9peqGUNIF2vPkei3ncYR0Mb4ZWZb0H/OLcxTNSCWcOlxk7kMm/hp4PPMzuppDv5W4uBiWLQLSnPAAuOuK32vEtdImNPxeIzZrNDHQx/6yNNEcYexRNaYr4YAr6QpCqpeI+AfmoE+Is8XtD229+JLbIROpj3mUaZXw0XmWxQmafrLjsoIQ071VKxXLMaEdGy7J0j6rwZYBPml7mw4Wi/ReEhPd+Q4EJcenaCt47SJe/uCK1YLXFs+5eqizMpRI+PZyBb+2MOAFcbZvRmFt4f/K8aWGx/HlSZasjemPh0EyDR+nHhyYXDouYPuo5MGTuM5A7s9IzWCG5GxxCH+Fn2I8FwsCVagfh3FRCt1qXSxl+60k7CadlZo2YBP1gefwg/S/L6PvEmg5dSUtwQ7291KLNZ0CVkVo2DCMqoHbVpMbydbB0V/I4gsAEJ5Qb+PWE9dQSGey+hsuOVq0qWAUqYZ+/bvDsnd1x30rNXGQxWeW9nwCY3OyoR/w== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM5PR12MB2405.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(66946007)(76116006)(4326008)(55016002)(66446008)(66556008)(38070700005)(52536014)(66476007)(64756008)(26005)(7696005)(30864003)(8936002)(2906002)(53546011)(54906003)(186003)(9686003)(122000001)(83380400001)(508600001)(86362001)(71200400001)(6506007)(8676002)(5660300002)(110136005)(33656002)(316002)(38100700002); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?OE1WMnBtRVRGcEUvSkk5b2NFYmp6a3grZTZhVXdSR1NSTUN2ZkdlSVVEZFI1?= =?utf-8?B?T29USGRRd3lXTkNtY3UxdmNYZUsxZFB1R3V4dG1VSWxOQkhiS0d1eHpwSHV2?= =?utf-8?B?Vno5VHdmQlVKZHdqSTEvY1VUSG11dUZUMEhMeThCdVNueWxGTFVBNFZlUUxG?= =?utf-8?B?OWJkbkdSeFpWaldBYjJRY0FyaGkxdUhTMlZFUXFiS2gzTFlMOTlSQ29Gc1BP?= =?utf-8?B?cXk3UlZUdHRlNlFtakNob095OVlTSXl4Q00vYmFSL21tZkt3NmE4ZndteFdn?= =?utf-8?B?cldFV0Y1NG4raHgzb2lqK3RnbDNwNWIyTSs1RkxuVEJ6c1RUdE41a1dhVkZq?= =?utf-8?B?aUhaUXhiQWRlZWJsVVpaeGc4d1ZaUGlLV1lHTjZWbHJ6NThaM0dJcWVUZFRx?= =?utf-8?B?bnFYNmRwRXczODVUQUxEem55cnFzbFR5dVgzNUZDVkdqTmV4UzlrRHhTblBi?= =?utf-8?B?dXB1VWhqMms3QkZHUW54Z0s2TitnTEFUUTgyd3ExWTdlQlRrK25CRmtyeHhw?= =?utf-8?B?NGd4OG16NmExNjYvR1crNVVBR3czYnFzcCtkVFJDN2dCME44V1BzR2ttWWNy?= =?utf-8?B?NFhXcDZtc09EYmxEb3IzTjVRYWlmVmFJcnM4dE9DdkRDTDA4eHRkZU1xMk5M?= =?utf-8?B?UzdLc1Y1T04ycDFMMHhoMWhSS2U3N3lVR2FhdHY2UHAwTEUzSHFYY042MGRB?= =?utf-8?B?ZGd2akNlZmRPQjZIQlVuTmcxZllIQ1VxNVNzVlVrWjNaaFhqeDZWNm55bG5n?= =?utf-8?B?TEZXcEZhY2FaK250eVoxUS96b2tyWHpMTE9zTngyNlVqTVhiM2szV2xyM3F4?= =?utf-8?B?eEhlUHFrTDNFMnRtVzJGMEdKS2Fyb1V6anFvV0MwSlNMeXVnUVJQTG9pZHo0?= =?utf-8?B?aHZEekVySVlTYkJyVk1Pc0MxYm5FcWVlY3NwNDd3V21XOGNIekNYQVZVQlNJ?= =?utf-8?B?ZUM0NWkxV3J1Q3RFdy9CZjRtTGZLdmovY3pBMklQb0pXd0o3S0hsOVA1MzJz?= =?utf-8?B?MGJQaGE3QitZNnQwNFB5V0VwaFZzNDl1S0FjaDhwUE02N1B2OXVRZ0h5ZUVY?= =?utf-8?B?WW9vNUdkbUFIOVl6bTRJUE5RWEF1UDZKUXorMDFuZ1IyYnpHWDJQYXRuRHhC?= =?utf-8?B?anJKWCtXVGVqandRWnVyZ3VWOEcvRDduYWFVWXdvYkIzaVNrazQwajl6UHpT?= =?utf-8?B?eDhVbmpnNldYc1Y3VFN6TFVJNkdib1RmUFBLT2pWcitBOExhcHZiOUV6TkE2?= =?utf-8?B?T2lUd2VLanJIWUFZWTB6cGI0NFBiOE0rbUM0TjRTaWs4K1lzc3ZVeWdmUGlw?= =?utf-8?B?bE5wZTJ2bkhLL2Z0RWpkTmVhMXNTaHFQdWFMdnNQRFM1djJ2VEk4MkZXVWxF?= =?utf-8?B?bytoLzZKNW1HRnUzbFdkbGRnWnp5R2VtOEZHaHVBVy8ySDUwRmExckZnYlZZ?= =?utf-8?B?d3lXMGNDQjBQYWxZMGVyaGZ6Z0hmdmhzb25TUmhkR3g1bW1Zd0F5T3lXcG1y?= =?utf-8?B?MFVHWFEwK3FCUzJrS3Frem4wSExmNkU1emlJRWZGTE53UXNpc29tY2FUM2tR?= =?utf-8?B?anpkbk5ZKzRhQXJGZjNnR1IrN3RjOVliM3JnVHpob0hSKzFMeGtSTU9kd3Js?= =?utf-8?B?UmhBTytEVHY3bmRqOTN2OG8wdzdDL1p1cldnMy9HazNqZTlSRFY3RTM5MDdK?= =?utf-8?B?dWIxK3pQOXNuV2E0RnlzaVV3V0tiUFcveDczWHVTVnFPVWlFV25oL2x6SE4x?= =?utf-8?Q?c1+QHFffkKY63vDnSKHr+r+vJjRq0Q1d5xNywCS?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM5PR12MB2405.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: f847686e-489c-4870-1ee7-08d98de6456c X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Oct 2021 01:10:39.4804 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: CHF/tV+2p9QayScgtozoYobC3fefBqTE9cINsCki9dvi8LoucD4IGeFB8OOTqvHVIGj4dPsGidV6ZTZSLNfirg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB4354 Subject: Re: [dpdk-dev] [PATCH 3/3] ethdev: add async queue-based flow rules operations X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 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" PiBGcm9tOiBJdmFuIE1hbG92IDxJdmFuLk1hbG92QG9rdGV0bGFicy5ydT4gb24gV2VkbmVzZGF5 LCBPY3RvYmVyIDYsIDIwMjEgMTI6MjUNCj4gT24gMDYvMTAvMjAyMSAwNzo0OCwgQWxleGFuZGVy IEtvenlyZXYgd3JvdGU6DQo+ID4gQSBuZXcsIGZhc3RlciwgcXVldWUtYmFzZWQgZmxvdyBydWxl cyBtYW5hZ2VtZW50IG1lY2hhbmlzbSBpcyBuZWVkZWQgZm9yDQo+ID4gYXBwbGljYXRpb25zIG9m ZmxvYWRpbmcgcnVsZXMgaW5zaWRlIHRoZSBkYXRhcGF0aC4gVGhpcyBhc3luY2hyb25vdXMNCj4g PiBhbmQgbG9ja2xlc3MgbWVjaGFuaXNtIGZyZWVzIHRoZSBDUFUgZm9yIGZ1cnRoZXIgcGFja2V0 IHByb2Nlc3NpbmcgYW5kDQo+ID4gcmVkdWNlcyB0aGUgcGVyZm9ybWFuY2UgaW1wYWN0IG9mIHRo ZSBmbG93IHJ1bGVzIGNyZWF0aW9uL2Rlc3RydWN0aW9uDQo+ID4gb24gdGhlIGRhdGFwYXRoLiBO b3RlIHRoYXQgcXVldWVzIGFyZSBub3QgdGhyZWFkLXNhZmUgYW5kIHF1ZXVlLWJhc2VkDQo+ID4g b3BlcmF0aW9ucyBjYW4gYmUgc2FmZWx5IGludm9rZWQgd2l0aG91dCBhbnkgbG9ja3MgZnJvbSBh IHNpbmdsZSB0aHJlYWQuDQo+ID4NCj4gPiBUaGUgcnRlX2Zsb3dfcV9mbG93X2NyZWF0ZSgpIGZ1 bmN0aW9uIGVucXVldWVzIGEgZmxvdyBjcmVhdGlvbiB0byB0aGUNCj4gPiByZXF1ZXN0ZWQgcXVl dWUuIEl0IGJlbmVmaXRzIGZyb20gYWxyZWFkeSBjb25maWd1cmVkIHJlc291cmNlcyBhbmQgc2V0 cw0KPiA+IHVuaXF1ZSB2YWx1ZXMgb24gdG9wIG9mIGl0ZW0gYW5kIGFjdGlvbiB0ZW1wbGF0ZXMu IEEgZmxvdyBydWxlIGlzIGVucXVldWVkDQo+ID4gb24gdGhlIHNwZWNpZmllZCBmbG93IHF1ZXVl IGFuZCBvZmZsb2FkZWQgYXN5bmNocm9ub3VzbHkgdG8gdGhlIGhhcmR3YXJlLg0KPiA+IFRoZSBm dW5jdGlvbiByZXR1cm5zIGltbWVkaWF0ZWx5IHRvIHNwYXJlIENQVSBmb3IgZnVydGhlciBwYWNr ZXQNCj4gPiBwcm9jZXNzaW5nLiBUaGUgYXBwbGljYXRpb24gbXVzdCBpbnZva2UgdGhlIHJ0ZV9m bG93X3FfZGVxdWV1ZSgpIGZ1bmN0aW9uDQo+ID4gdG8gY29tcGxldGUgdGhlIGZsb3cgcnVsZSBv cGVyYXRpb24gb2ZmbG9hZGluZywgdG8gY2xlYXIgdGhlIHF1ZXVlLCBhbmQgdG8NCj4gPiByZWNl aXZlIHRoZSBvcGVyYXRpb24gc3RhdHVzLiBUaGUgcnRlX2Zsb3dfcV9mbG93X2Rlc3Ryb3koKSBm dW5jdGlvbg0KPiA+IGVucXVldWVzIGEgZmxvdyBkZXN0cnVjdGlvbiB0byB0aGUgcmVxdWVzdGVk IHF1ZXVlLg0KPiA+DQo+ID4gU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEtvenlyZXYgPGFrb3p5 cmV2QG52aWRpYS5jb20+DQo+ID4gU3VnZ2VzdGVkLWJ5OiBPcmkgS2FtIDxvcmlrYUBudmlkaWEu Y29tPg0KPiA+IC0tLQ0KPiA+ICAgbGliL2V0aGRldi9ydGVfZmxvdy5oIHwgMjg4DQo+ICsrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KPiA+ICAgMSBmaWxlIGNoYW5n ZWQsIDI4OCBpbnNlcnRpb25zKCspDQo+ID4NCj4gPiBkaWZmIC0tZ2l0IGEvbGliL2V0aGRldi9y dGVfZmxvdy5oIGIvbGliL2V0aGRldi9ydGVfZmxvdy5oDQo+ID4gaW5kZXggYmEzMjA0YjE3ZS4u OGNkZmZkOGQyZSAxMDA2NDQNCj4gPiAtLS0gYS9saWIvZXRoZGV2L3J0ZV9mbG93LmgNCj4gPiAr KysgYi9saWIvZXRoZGV2L3J0ZV9mbG93LmgNCj4gPiBAQCAtNDI5OCw2ICs0Mjk4LDEzIEBAIHN0 cnVjdCBydGVfZmxvd19wb3J0X2F0dHIgew0KPiA+ICAgCSAqIFZlcnNpb24gb2YgdGhlIHN0cnVj dCBsYXlvdXQsIHNob3VsZCBiZSAwLg0KPiA+ICAgCSAqLw0KPiA+ICAgCXVpbnQzMl90IHZlcnNp b247DQo+ID4gKwkvKioNCj4gPiArCSAqIE51bWJlciBvZiBmbG93IHF1ZXVlcyB0byBiZSBjb25m aWd1cmVkLg0KPiA+ICsJICogRmxvdyBxdWV1ZXMgYXJlIHVzZWQgZm9yIGFzeW5jcm9ub3VzIGZs b3cgcnVsZSBjcmVhdGlvbi9kZXN0cnVjdGlvbi4NCj4gDQo+IFR5cG86IGFzeW5jcm9ub3VzIC0t PiBhc3luY2hyb25vdXMNClRoYW5rcyBmb3Igbm90aWNpbmcsIHdpbGwgY29ycmVjdCBhbGwgdGhl IHR5cG9zLg0KDQo+ID4gKwkgKiBUaGUgb3JkZXIgb2Ygb3BlcmF0aW9ucyBpcyBub3QgZ3VhcmFu dGVlZCBpbnNpZGUgYSBxdWV1ZS4NCj4gPiArCSAqIEZsb3cgcXVldWVzIGFyZSBub3QgdGhyZWFk LXNhZmUuDQo+ID4gKwkgKi8NCj4gPiArCXVpbnQxNl90IG5iX3F1ZXVlczsNCj4gPiAgIAkvKioN Cj4gPiAgIAkgKiBNZW1vcnkgc2l6ZSBhbGxvY2F0ZWQgZm9yIHRoZSBmbG93IHJ1bGVzIG1hbmFn ZW1lbnQuDQo+ID4gICAJICogSWYgc2V0IHRvIDAsIG1lbW9yeSBpcyBhbGxvY2F0ZWQgZHluYW1p Y2FsbHkuDQo+ID4gQEAgLTQzMzAsNiArNDMzNywyMSBAQCBzdHJ1Y3QgcnRlX2Zsb3dfcG9ydF9h dHRyIHsNCj4gPiAgIAl1aW50MzJfdCBmaXhlZF9yZXNvdXJjZV9zaXplOjE7DQo+ID4gICB9Ow0K PiA+DQo+ID4gKy8qKg0KPiA+ICsgKiBGbG93IGVuZ2luZSBxdWV1ZSBjb25maWd1cmF0aW9uLg0K PiA+ICsgKi8NCj4gPiArX19leHRlbnNpb25fXw0KPiA+ICtzdHJ1Y3QgcnRlX2Zsb3dfcXVldWVf YXR0ciB7DQo+IA0KPiBQZXJoYXBzICJzdHJ1Y3QgcnRlX2Zsb3dfcXVldWVfbW9kZSIgb3IgInN0 cnVjdCBydGVfZmxvd19xdWV1ZV9jb25mIi4gSQ0KPiBkb24ndCBpbnNpc3QuDQpJIHdvdWxkIHBy ZWZlciBzdGlja2luZyB0byBhdHRyaWJ1dGVzIGZvciBjb25zaXN0ZW5jeS4gV2UgaGF2ZSB0aGVt IGVsc2V3aGVyZS4NCg0KPiA+ICsJLyoqDQo+ID4gKwkgKiBWZXJzaW9uIG9mIHRoZSBzdHJ1Y3Qg bGF5b3V0LCBzaG91bGQgYmUgMC4NCj4gPiArCSAqLw0KPiA+ICsJdWludDMyX3QgdmVyc2lvbjsN Cj4gPiArCS8qKg0KPiA+ICsJICogTnVtYmVyIG9mIGZsb3cgcnVsZSBvcGVyYXRpb25zIGEgcXVl dWUgY2FuIGhvbGQuDQo+ID4gKwkgKi8NCj4gPiArCXVpbnQzMl90IHNpemU7DQo+ID4gK307DQo+ ID4gKw0KPiA+ICAgLyoqDQo+ID4gICAgKiBAd2FybmluZw0KPiA+ICAgICogQGIgRVhQRVJJTUVO VEFMOiB0aGlzIEFQSSBtYXkgY2hhbmdlIHdpdGhvdXQgcHJpb3Igbm90aWNlLg0KPiA+IEBAIC00 MzQ2LDYgKzQzNjgsOCBAQCBzdHJ1Y3QgcnRlX2Zsb3dfcG9ydF9hdHRyIHsNCj4gPiAgICAqICAg UG9ydCBpZGVudGlmaWVyIG9mIEV0aGVybmV0IGRldmljZS4NCj4gPiAgICAqIEBwYXJhbVtpbl0g cG9ydF9hdHRyDQo+ID4gICAgKiAgIFBvcnQgY29uZmlndXJhdGlvbiBhdHRyaWJ1dGVzLg0KPiA+ ICsgKiBAcGFyYW1baW5dIHF1ZXVlX2F0dHINCj4gPiArICogICBBcnJheSB0aGF0IGhvbGRzIGF0 dHJpYnV0ZXMgZm9yIGVhY2ggcXVldWUuDQo+IA0KPiBUaGlzIHNob3VsZCBwcm9iYWJseSBzYXkg dGhhdCB0aGUgbnVtYmVyIG9mIHF1ZXVlcyAvIGFycmF5IHNpemUgaXMgdGFrZW4NCj4gZnJvbSBw b3J0X2F0dHItPm5iX3F1ZXVlcy4NCkdvb2QgaWRlYSwgd2lsbCBtZW50aW9uIHRoaXMuDQo+IEFs c28sIGNvbnNpZGVyICIuLi4gZm9yIGVhY2ggZmxvdyBxdWV1ZSIuDQpTb3VuZHMgZ29vZC4NCg0K PiA+ICAgICogQHBhcmFtW291dF0gZXJyb3INCj4gPiAgICAqICAgUGVyZm9ybSB2ZXJib3NlIGVy cm9yIHJlcG9ydGluZyBpZiBub3QgTlVMTC4NCj4gPiAgICAqICAgUE1EcyBpbml0aWFsaXplIHRo aXMgc3RydWN0dXJlIGluIGNhc2Ugb2YgZXJyb3Igb25seS4NCj4gPiBAQCAtNDM1Nyw2ICs0Mzgx LDcgQEAgX19ydGVfZXhwZXJpbWVudGFsDQo+ID4gICBpbnQNCj4gPiAgIHJ0ZV9mbG93X2NvbmZp Z3VyZSh1aW50MTZfdCBwb3J0X2lkLA0KPiA+ICAgCQkgICBjb25zdCBzdHJ1Y3QgcnRlX2Zsb3df cG9ydF9hdHRyICpwb3J0X2F0dHIsDQo+ID4gKwkJICAgY29uc3Qgc3RydWN0IHJ0ZV9mbG93X3F1 ZXVlX2F0dHIgKnF1ZXVlX2F0dHJbXSwNCj4gPiAgIAkJICAgc3RydWN0IHJ0ZV9mbG93X2Vycm9y ICplcnJvcik7DQo+ID4NCj4gPiAgIC8qKg0KPiA+IEBAIC00NjI2LDYgKzQ2NTEsMjY5IEBAIF9f cnRlX2V4cGVyaW1lbnRhbA0KPiA+ICAgaW50DQo+ID4gICBydGVfZmxvd190YWJsZV9kZXN0cm95 KHVpbnQxNl90IHBvcnRfaWQsIHN0cnVjdCBydGVfZmxvd190YWJsZSAqdGFibGUsDQo+ID4gICAJ CSAgICAgICBzdHJ1Y3QgcnRlX2Zsb3dfZXJyb3IgKmVycm9yKTsNCj4gPiArDQo+ID4gKy8qKg0K PiA+ICsgKiBRdWV1ZSBvcGVyYXRpb24gYXR0cmlidXRlcw0KPiA+ICsgKi8NCj4gPiArX19leHRl bnNpb25fXw0KPiA+ICtzdHJ1Y3QgcnRlX2Zsb3dfcV9vcHNfYXR0ciB7DQo+ID4gKwkvKioNCj4g PiArCSAqIFZlcnNpb24gb2YgdGhlIHN0cnVjdCBsYXlvdXQsIHNob3VsZCBiZSAwLg0KPiA+ICsJ ICovDQo+ID4gKwl1aW50MzJfdCB2ZXJzaW9uOw0KPiA+ICsJLyoqDQo+ID4gKwkgKiBUaGUgdXNl ciBkYXRhIHRoYXQgd2lsbCBiZSByZXR1cm5lZCBvbiB0aGUgY29tcGxldGlvbi4NCj4gDQo+IE1h eWJlICJvbiBjb21wbGV0aW9uIGV2ZW50cyI/DQpBZ3JlZS4NCg0KPiA+ICsJICovDQo+ID4gKwl2 b2lkICp1c2VyX2RhdGE7DQo+ID4gKwkvKioNCj4gPiArCSAqIFdoZW4gc2V0LCB0aGUgcmVxdWVz dGVkIGFjdGlvbiBtdXN0IGJlIHNlbnQgdG8gdGhlIEhXIHdpdGhvdXQNCj4gPiArCSAqIGFueSBk ZWxheS4gQW55IHByaW9yIHJlcXVlc3RzIG11c3QgYmUgYWxzbyBzZW50IHRvIHRoZSBIVy4NCj4g PiArCSAqIElmIHRoaXMgYml0IGlzIGNsZWFyZWQsIHRoZSBhcHBsaWNhdGlvbiBtdXN0IGNhbGwg dGhlDQo+ID4gKwkgKiBydGVfZmxvd19xdWV1ZV9mbHVzaCBBUEkgdG8gYWN0dWFsbHkgc2VuZCB0 aGUgcmVxdWVzdCB0byB0aGUgSFcuDQo+IA0KPiBOb3Qgc3VyZSB0aGF0IEkgdW5kZXJzdGFuZCB0 aGUgIkFueSBwcmlvciByZXF1ZXN0cyAuLi4iIHBhcnQuIElmIHRoaXMNCj4gc3RydWN0dXJlIGNv bmZpZ3VyZXMgb3BlcmF0aW9uIG1vZGUgZm9yIHRoZSB3aG9sZSBxdWV1ZSBhbmQgbm90IGZvciBl YWNoDQo+IGVucXVldWUgcmVxdWVzdCwgdGhlbiBubyAicHJpb3IgcmVxdWVzdHMiIGNhbiBleGlz dCBpbiB0aGUgZmlyc3QgcGxhY2UNCj4gYmVjYXVzZSBlYWNoIHN1Ym1pc3Npb24gaXMgbWVhbnQg dG8gYmUgaW1tZWRpYXRlbHkgc2VudCB0byB0aGUgSFcuDQpUaGlzIHN0cnVjdHVyZSBjb25maWd1 cmVzIGF0dHJpYnV0ZXMgcGVyIHNpbmdsZSBvcGVyYXRpb24uIA0KVXNlciBjYW4gc2VuZCBtdWx0 aXBsZSBvcGVyYXRpb25zIHdpdGhvdXQgICJmbHVzaCIgYXR0cmlidXRlIHNldCB0byBrZWVwIHRo ZW0gaW4gYSBxdWV1ZS4NClRoZW4gaXQgaXMgcG9zc2libGUgdG8gaXNzdWUgb25lIG9wZXJhdGlv biB3aXRoICJmbHVzaCIgYXR0cmlidXRlIHNldCB0byBwdXJnZSB0aGUgd2hvbGUgcXVldWUuDQo+ IEJ1dCBpZiB0aGlzIHN0cnVjdHVyZSBjYW4gdmFyeSBhY3Jvc3MgZW5xdWV1ZSByZXF1ZXN0cywg dGhlbiB0aGlzDQo+IGRvY3VtZW50YXRpb24gc2hvdWxkIGJlIGltcHJvdmVkIHRvIHNheSB0aGlz IGNsZWFybHkuDQpJJ2xsIHRyeSB0byBtYWtlIGl0IGNsZWFyIHRoYXQgaXQgaXMgcGVyLW9wZXJh dGlvbiBhdHRyaWJ1dGVzIGluZGVlZC4NCg0KDQo+ID4gKwkgKi8NCj4gPiArCXVpbnQzMl90IGZs dXNoOjE7DQo+ID4gK307DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogQHdhcm5pbmcNCj4gPiAr ICogQGIgRVhQRVJJTUVOVEFMOiB0aGlzIEFQSSBtYXkgY2hhbmdlIHdpdGhvdXQgcHJpb3Igbm90 aWNlLg0KPiA+ICsgKg0KPiA+ICsgKiBFbnF1ZXVlIHJ1bGUgY3JlYXRpb24gb3BlcmF0aW9uLg0K PiA+ICsgKg0KPiA+ICsgKiBAcGFyYW0gcG9ydF9pZA0KPiA+ICsgKiAgIFBvcnQgaWRlbnRpZmll ciBvZiBFdGhlcm5ldCBkZXZpY2UuDQo+ID4gKyAqIEBwYXJhbSBxdWV1ZQ0KPiA+ICsgKiAgIEZs b3cgcXVldWUgdXNlZCB0byBpbnNlcnQgdGhlIHJ1bGUuDQo+ID4gKyAqIEBwYXJhbVtpbl0gYXR0 cg0KPiA+ICsgKiAgIFJ1bGUgY3JlYXRpb24gb3BlcmF0aW9uIGF0dHJpYnV0ZXMuDQo+IA0KPiBB dCBhIGJhcmUgbWluaW11bSwgcGxlYXNlIGNvbnNpZGVyIHJlbmFtaW5nIHRoaXMgdG8gInF1ZXVl X2F0dHIiLiBNb3JlDQo+IHZhcmlhbnRzIChzZWUgYWJvdmUpOiAicXVldWVfbW9kZSIsICJxdWV1 ZV9jb25mIi4gSSBzdWdnZXN0IGRvaW5nIHNvIHRvDQo+IGF2b2lkIGNvbmZ1c2lvbiB3aXRoICJz dHJ1Y3QgcnRlX2Zsb3dfYXR0ciIgd2hpY2ggc2l0cyBpbiAic3RydWN0DQo+IHJ0ZV9mbG93X3Rh YmxlX2F0dHIiIGluIGZhY3QuDQo+IElmIHRoaXMgc3RydWN0dXJlIG11c3QgYmUgZXhhY3RseSB0 aGUgc2FtZSBhcyB0aGUgb25lIHVzZWQgaW4NCj4gcnRlX2Zsb3dfY29uZmlndXJlKCksIHBsZWFz ZSBzYXkgc28uIElmLCBob3dldmVyLCB0aGlzIHN0cnVjdHVyZSBjYW4gYmUNCj4gY29tcGxldGVs eSBkaWZmZXJlbnQgb24gZW5xdWV1ZSBvcGVyYXRpb25zLCB0aGVuIHRoZSBhcmd1bWVudCBuYW1l DQo+IHNob3VsZCBpbmRpY2F0ZSBpdCBzb21laG93LiBNYXliZSwgIm92ZXJyaWRlX3F1ZXVlX2Nv bmYiLiBPdGhlcndpc2UsDQo+IGl0J3MgdW5jbGVhci4NClNvdW5kcyByZWFzb25hYmxlLCB3aWxs IGRvLiBBbHRob3VnaCBpdCBpcyBvcGVyYXRpb24gYXR0cmlidXRlcywgbm90IHRoZSBxdWV1ZSdz IG9uZXMuDQoNCj4gVGhlcmUgYXJlIHNpbWlsYXIgb2NjdXJyZW5jZXMgYmVsb3cuDQo+ID4gKyAq IEBwYXJhbVtpbl0gdGFibGUNCj4gPiArICogICBUYWJsZSB0byBzZWxlY3QgdGVtcGxhdGVzIGZy b20uDQo+IA0KPiBQZXJoYXBzICJ0ZW1wbGF0ZV90YWJsZSI/DQpOb3RlZC4NCg0KPiA+ICsgKiBA cGFyYW1baW5dIGl0ZW1zDQo+ID4gKyAqICAgTGlzdCBvZiBwYXR0ZXJuIGl0ZW1zIHRvIGJlIHVz ZWQuDQo+ID4gKyAqICAgVGhlIGxpc3Qgb3JkZXIgc2hvdWxkIG1hdGNoIHRoZSBvcmRlciBpbiB0 aGUgaXRlbSB0ZW1wbGF0ZS4NCj4gPiArICogICBUaGUgc3BlYyBpcyB0aGUgb25seSByZWxldmFu dCBtZW1iZXIgb2YgdGhlIGl0ZW0gdGhhdCBpcyBiZWluZyB1c2VkLg0KPiA+ICsgKiBAcGFyYW1b aW5dIGl0ZW1fdGVtcGxhdGVfaW5kZXgNCj4gPiArICogICBJdGVtIHRlbXBsYXRlIGluZGV4IGlu IHRoZSB0YWJsZS4NCj4gPiArICogQHBhcmFtW2luXSBhY3Rpb25zDQo+ID4gKyAqICAgTGlzdCBv ZiBhY3Rpb25zIHRvIGJlIHVzZWQuDQo+ID4gKyAqICAgVGhlIGxpc3Qgb3JkZXIgc2hvdWxkIG1h dGNoIHRoZSBvcmRlciBpbiB0aGUgYWN0aW9uIHRlbXBsYXRlLg0KPiA+ICsgKiBAcGFyYW1baW5d IGFjdGlvbl90ZW1wbGF0ZV9pbmRleA0KPiA+ICsgKiAgIEFjdGlvbiB0ZW1wbGF0ZSBpbmRleCBp biB0aGUgdGFibGUuDQo+ID4gKyAqIEBwYXJhbVtvdXRdIGVycm9yDQo+ID4gKyAqICAgUGVyZm9y bSB2ZXJib3NlIGVycm9yIHJlcG9ydGluZyBpZiBub3QgTlVMTC4NCj4gPiArICogICBQTURzIGlu aXRpYWxpemUgdGhpcyBzdHJ1Y3R1cmUgaW4gY2FzZSBvZiBlcnJvciBvbmx5Lg0KPiA+ICsgKg0K PiA+ICsgKiBAcmV0dXJuDQo+ID4gKyAqICAgSGFuZGxlIG9uIHN1Y2Nlc3MsIE5VTEwgb3RoZXJ3 aXNlIGFuZCBydGVfZXJybm8gaXMgc2V0Lg0KPiA+ICsgKiAgIFRoZSBydWxlIGhhbmRsZSBkb2Vz bid0IG1lYW4gdGhhdCB0aGUgcnVsZSB3YXMgb2ZmbG9hZGVkLg0KPiA+ICsgKiAgIE9ubHkgY29t cGxldGlvbiByZXN1bHQgaW5kaWNhdGVzIHRoYXQgdGhlIHJ1bGUgd2FzIG9mZmxvYWRlZC4NCj4g PiArICovDQo+ID4gK19fcnRlX2V4cGVyaW1lbnRhbA0KPiA+ICtzdHJ1Y3QgcnRlX2Zsb3cgKg0K PiA+ICtydGVfZmxvd19xX2Zsb3dfY3JlYXRlKHVpbnQxNl90IHBvcnRfaWQsIHVpbnQzMl90IHF1 ZXVlLA0KPiA+ICsJCSAgICAgICBjb25zdCBzdHJ1Y3QgcnRlX2Zsb3dfcV9vcHNfYXR0ciAqYXR0 ciwNCj4gPiArCQkgICAgICAgY29uc3Qgc3RydWN0IHJ0ZV9mbG93X3RhYmxlICp0YWJsZSwNCj4g PiArCQkJICAgY29uc3Qgc3RydWN0IHJ0ZV9mbG93X2l0ZW0gaXRlbXNbXSwNCj4gPiArCQkgICAg ICAgdWludDhfdCBpdGVtX3RlbXBsYXRlX2luZGV4LA0KPiA+ICsJCQkgICBjb25zdCBzdHJ1Y3Qg cnRlX2Zsb3dfYWN0aW9uIGFjdGlvbnNbXSwNCj4gPiArCQkgICAgICAgdWludDhfdCBhY3Rpb25f dGVtcGxhdGVfaW5kZXgsDQo+ID4gKwkJICAgICAgIHN0cnVjdCBydGVfZmxvd19lcnJvciAqZXJy b3IpOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIEB3YXJuaW5nDQo+ID4gKyAqIEBiIEVYUEVS SU1FTlRBTDogdGhpcyBBUEkgbWF5IGNoYW5nZSB3aXRob3V0IHByaW9yIG5vdGljZS4NCj4gPiAr ICoNCj4gPiArICogRW5xdWV1ZSBydWxlIGRlc3RydWN0aW9uIG9wZXJhdGlvbi4NCj4gPiArICoN Cj4gPiArICogVGhpcyBmdW5jdGlvbiBlbnF1ZXVlcyBhIGRlc3RydWN0aW9uIG9wZXJhdGlvbiBv biB0aGUgcXVldWUuDQo+ID4gKyAqIEFwcGxpY2F0aW9uIHNob3VsZCBhc3N1bWUgdGhhdCBhZnRl ciBjYWxsaW5nIHRoaXMgZnVuY3Rpb24NCj4gPiArICogdGhlIHJ1bGUgaGFuZGxlIGlzIG5vdCB2 YWxpZCBhbnltb3JlLg0KPiA+ICsgKiBDb21wbGV0aW9uIGluZGljYXRlcyB0aGUgZnVsbCByZW1v dmFsIG9mIHRoZSBydWxlIGZyb20gdGhlIEhXLg0KPiA+ICsgKg0KPiA+ICsgKiBAcGFyYW0gcG9y dF9pZA0KPiA+ICsgKiAgIFBvcnQgaWRlbnRpZmllciBvZiBFdGhlcm5ldCBkZXZpY2UuDQo+ID4g KyAqIEBwYXJhbSBxdWV1ZQ0KPiA+ICsgKiAgIEZsb3cgcXVldWUgd2hpY2ggaXMgdXNlZCB0byBk ZXN0cm95IHRoZSBydWxlLg0KPiA+ICsgKiAgIFRoaXMgbXVzdCBtYXRjaCB0aGUgcXVldWUgb24g d2hpY2ggdGhlIHJ1bGUgd2FzIGNyZWF0ZWQuDQo+ID4gKyAqIEBwYXJhbVtpbl0gYXR0cg0KPiA+ ICsgKiAgIFJ1bGUgZGVzdHJveSBvcGVyYXRpb24gYXR0cmlidXRlcy4NCj4gPiArICogQHBhcmFt W2luXSBmbG93DQo+ID4gKyAqICAgRmxvdyBoYW5kbGUgdG8gYmUgZGVzdHJveWVkLg0KPiA+ICsg KiBAcGFyYW1bb3V0XSBlcnJvcg0KPiA+ICsgKiAgIFBlcmZvcm0gdmVyYm9zZSBlcnJvciByZXBv cnRpbmcgaWYgbm90IE5VTEwuDQo+ID4gKyAqICAgUE1EcyBpbml0aWFsaXplIHRoaXMgc3RydWN0 dXJlIGluIGNhc2Ugb2YgZXJyb3Igb25seS4NCj4gPiArICoNCj4gPiArICogQHJldHVybg0KPiA+ ICsgKiAgIDAgb24gc3VjY2VzcywgYSBuZWdhdGl2ZSBlcnJubyB2YWx1ZSBvdGhlcndpc2UgYW5k IHJ0ZV9lcnJubyBpcyBzZXQuDQo+ID4gKyAqLw0KPiA+ICtfX3J0ZV9leHBlcmltZW50YWwNCj4g PiAraW50DQo+ID4gK3J0ZV9mbG93X3FfZmxvd19kZXN0cm95KHVpbnQxNl90IHBvcnRfaWQsIHVp bnQzMl90IHF1ZXVlLA0KPiA+ICsJCQlzdHJ1Y3QgcnRlX2Zsb3dfcV9vcHNfYXR0ciAqYXR0ciwN Cj4gPiArCQkJc3RydWN0IHJ0ZV9mbG93ICpmbG93LA0KPiA+ICsJCQlzdHJ1Y3QgcnRlX2Zsb3df ZXJyb3IgKmVycm9yKTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBAd2FybmluZw0KPiA+ICsg KiBAYiBFWFBFUklNRU5UQUw6IHRoaXMgQVBJIG1heSBjaGFuZ2Ugd2l0aG91dCBwcmlvciBub3Rp Y2UuDQo+ID4gKyAqDQo+ID4gKyAqIEVucXVldWUgaW5kaXJlY3QgcnVsZSBjcmVhdGlvbiBvcGVy YXRpb24uDQo+ID4gKyAqIEBzZWUgcnRlX2Zsb3dfYWN0aW9uX2hhbmRsZV9jcmVhdGUNCj4gDQo+ IFdoeSAiaW5kaXJlY3QgcnVsZSI/IFRoaXMgQVBJIHNlZW1zIHRvIGVucXVldWUgYW4gImluZGly ZWN0IGFjdGlvbiIuLi4NClRoYW5rcywgd2lsbCBjaGFuZ2UgdG8gYWN0aW9uLg0KDQo+ID4gKyAq DQo+ID4gKyAqIEBwYXJhbVtpbl0gcG9ydF9pZA0KPiA+ICsgKiAgIFBvcnQgaWRlbnRpZmllciBv ZiBFdGhlcm5ldCBkZXZpY2UuDQo+ID4gKyAqIEBwYXJhbVtpbl0gcXVldWUNCj4gPiArICogICBG bG93IHF1ZXVlIHdoaWNoIGlzIHVzZWQgdG8gY3JlYXRlIHRoZSBydWxlLg0KPiA+ICsgKiBAcGFy YW1baW5dIGF0dHINCj4gPiArICogICBRdWV1ZSBvcGVyYXRpb24gYXR0cmlidXRlcy4NCj4gPiAr ICogQHBhcmFtW2luXSBjb25mDQo+ID4gKyAqICAgQWN0aW9uIGNvbmZpZ3VyYXRpb24gZm9yIHRo ZSBpbmRpcmVjdCBhY3Rpb24gb2JqZWN0IGNyZWF0aW9uLg0KPiANCj4gUGVyaGFwcyAiaW5kaXJf Y29uZiIgb3IgImluZGlyX2FjdGlvbl9jb25mIj8NCk9rLg0KDQo+ID4gKyAqIEBwYXJhbVtpbl0g YWN0aW9uDQo+ID4gKyAqICAgU3BlY2lmaWMgY29uZmlndXJhdGlvbiBvZiB0aGUgaW5kaXJlY3Qg YWN0aW9uIG9iamVjdC4NCj4gPiArICogQHBhcmFtW291dF0gZXJyb3INCj4gPiArICogICBQZXJm b3JtIHZlcmJvc2UgZXJyb3IgcmVwb3J0aW5nIGlmIG5vdCBOVUxMLg0KPiA+ICsgKiAgIFBNRHMg aW5pdGlhbGl6ZSB0aGlzIHN0cnVjdHVyZSBpbiBjYXNlIG9mIGVycm9yIG9ubHkuDQo+ID4gKyAq DQo+ID4gKyAqIEByZXR1cm4NCj4gPiArICogICAtICgwKSBpZiBzdWNjZXNzLg0KPiA+ICsgKiAg IC0gKC1FTk9ERVYpIGlmICpwb3J0X2lkKiBpbnZhbGlkLg0KPiA+ICsgKiAgIC0gKC1FTk9TWVMp IGlmIHVuZGVybHlpbmcgZGV2aWNlIGRvZXMgbm90IHN1cHBvcnQgdGhpcyBmdW5jdGlvbmFsaXR5 Lg0KPiA+ICsgKiAgIC0gKC1FSU8pIGlmIHVuZGVybHlpbmcgZGV2aWNlIGlzIHJlbW92ZWQuDQo+ ID4gKyAqICAgLSAoLUVOT0VOVCkgaWYgYWN0aW9uIHBvaW50ZWQgYnkgKmFjdGlvbiogaGFuZGxl IHdhcyBub3QgZm91bmQuDQo+ID4gKyAqICAgLSAoLUVCVVNZKSBpZiBhY3Rpb24gcG9pbnRlZCBi eSAqYWN0aW9uKiBoYW5kbGUgc3RpbGwgdXNlZCBieSBzb21lIHJ1bGVzDQo+ID4gKyAqICAgcnRl X2Vycm5vIGlzIGFsc28gc2V0Lg0KPiA+ICsgKi8NCj4gPiArX19ydGVfZXhwZXJpbWVudGFsDQo+ ID4gK3N0cnVjdCBydGVfZmxvd19hY3Rpb25faGFuZGxlICoNCj4gPiArcnRlX2Zsb3dfcV9hY3Rp b25faGFuZGxlX2NyZWF0ZSh1aW50MTZfdCBwb3J0X2lkLCB1aW50MzJfdCBxdWV1ZSwNCj4gPiAr CQkJCWNvbnN0IHN0cnVjdCBydGVfZmxvd19xX29wc19hdHRyICphdHRyLA0KPiA+ICsJCQkJY29u c3Qgc3RydWN0IHJ0ZV9mbG93X2luZGlyX2FjdGlvbl9jb25mICpjb25mLA0KPiA+ICsJCQkJY29u c3Qgc3RydWN0IHJ0ZV9mbG93X2FjdGlvbiAqYWN0aW9uLA0KPiA+ICsJCQkJc3RydWN0IHJ0ZV9m bG93X2Vycm9yICplcnJvcik7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogQHdhcm5pbmcNCj4g PiArICogQGIgRVhQRVJJTUVOVEFMOiB0aGlzIEFQSSBtYXkgY2hhbmdlIHdpdGhvdXQgcHJpb3Ig bm90aWNlLg0KPiA+ICsgKg0KPiA+ICsgKiBFbnF1ZXVlIGluZGlyZWN0IHJ1bGUgZGVzdHJ1Y3Rp b24gb3BlcmF0aW9uLg0KPiANCj4gUGxlYXNlIHNlZSBhYm92ZS4gRGlkIHlvdSBtZWFuICJpbmRp cmVjdCBhY3Rpb24iPw0KQWdhaW4sIHlvdSBhcmUgcmlnaHQsIGFjdGlvbiBpcyBhIGJldHRlciB3 b3JkIGhlcmUuDQo=