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 A366DA0A0A; Thu, 3 Jun 2021 10:25:06 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 26A814069F; Thu, 3 Jun 2021 10:25:06 +0200 (CEST) Received: from NAM12-BN8-obe.outbound.protection.outlook.com (mail-bn8nam12on2042.outbound.protection.outlook.com [40.107.237.42]) by mails.dpdk.org (Postfix) with ESMTP id DE9E840689 for ; Thu, 3 Jun 2021 10:25:03 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=csH1qJqpwkm65D08Uq7KqZ3rjxoiMWXzbJeERXS6h7hg2N0T+qglYKUjNPlMe2EqLAc6gxueXPDIhVn7wxPIAnaSFXh5HY1cR3PTa51joNX+/sJ6ltYbWhCHByzbhiDz0uBn9+IXWf+uIeMPonvBxo2yZJDqvNaE1787t9tExi/hWfg+7Zf1h8CHWWeppoWkiA1nwCa95qK4YSaad96R4QRqTc2PciK3Xd1gIc1W0Gtl9tMsOnm+bryAXIKHhHeq1H6Like6fzu/eHQLO4j1poE09vM4w1d7YpdHp8tMIs1CM0PschKU3nul2ieDlaY5iRl8TwMJOP508jvWEcaxww== 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=hTo34ux7tR5La5t5byiT3LzjUQ9KUkWfg06lZ9hTDqE=; b=E3G9Zeza4RSkEbpOHqcrkn/VyjPG8v/7JsLjqBkT+GxqxObFJISThc5ZPAR5SgL/Z5D3WUJalc3iHK7tjpHHuZN0q9E4r0UyvT/YmV815FFHDEbG0rSpkj9lGz0iXOo27ll8YsZzPEq+8DpBlOrIBMPIzFaRC/MNDFHEt0QMuaDIZSqyvwxi9orcu+PHI1sIHvRaKCIEixLk5tvy6wpq4xJ3JBV5Z+eYq2Ld9S9NpxvA5I/Gk4H/2ydXy1fuedk0UeNJMCm+C+V/lMrXdjPVee01/8QZmbohazhtOyM3+OJcRgDPVxD301pdvFF0yg1pN6yvu4IOZPngpWysVXr/Eg== 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=hTo34ux7tR5La5t5byiT3LzjUQ9KUkWfg06lZ9hTDqE=; b=p4wtgp+TAzdOKmnJmVGTJdtwcNJBxVjScySa5xI79nSnSdB2oJd6Fidv9ea+MXlBNTrpADm6Gz9+Nls/sqTnh7aj1KINoeQ3qzZxWkjLY+ijNzFmf6LTB0nOANdCY9xNJ0yl7WLPLrtspd4QYj3qNrguojxEN2v65pzUA2ufWKb78K+r1l4Kt79Z0JF41y8amCjv8ToxYrQ6yHo/WQ5WORtQNE5Kkm94nQc6D9T/KATejPmO/VQeiNBW0K8wi2yXINCm6IMylkpmoYsWEZwvTdUNXAaaOx1vf7ZYySSm3zeB6QwCY8cqx92JfdHtUSOAnIR0NIMI6XUXah4ARGMU0Q== Received: from BL1PR12MB5335.namprd12.prod.outlook.com (2603:10b6:208:317::19) by BL1PR12MB5126.namprd12.prod.outlook.com (2603:10b6:208:312::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4195.23; Thu, 3 Jun 2021 08:25:02 +0000 Received: from BL1PR12MB5335.namprd12.prod.outlook.com ([fe80::6130:4ca:e5b6:4a36]) by BL1PR12MB5335.namprd12.prod.outlook.com ([fe80::6130:4ca:e5b6:4a36%9]) with mapi id 15.20.4195.023; Thu, 3 Jun 2021 08:25:02 +0000 From: Ori Kam To: Andrew Rybchenko , Ivan Malov , "dev@dpdk.org" CC: NBU-Contact-Thomas Monjalon , Ferruh Yigit , Ray Kinsella , Neil Horman Thread-Topic: [RFC PATCH] ethdev: add support for testpmd-compliant flow rule dumping Thread-Index: AQHXUtHTVmOnBGTM6UKpSaUBdRK75qr7mK5QgAOg/oCAAYYpoIAABsYAgAEzHAA= Date: Thu, 3 Jun 2021 08:25:02 +0000 Message-ID: References: <20210527082504.3495-1-ivan.malov@oktetlabs.ru> <6175cb60-5d9a-832a-fa07-32326018661c@oktetlabs.ru> In-Reply-To: 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-originating-ip: [147.236.145.254] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 7bfad6b4-e137-45ce-2451-08d92669159c x-ms-traffictypediagnostic: BL1PR12MB5126: x-ld-processed: 43083d15-7273-40c1-b7db-39efd9ccc17a,ExtAddr x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:9508; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 7FphMrBMlqVsHQ2FXFYtGZte6VmRXsBkfRdIr2oVH6ZL6eV29Ve+ibn324dbKD4w4xkBd4aKGuStvzuqH4hKobAOYEru24XBR01FyHwS+ToCQyiiII/5OLQ/6bRQCbqD6rXRi+Jhete1oejugOTpK69Fde9SVQe28FO73Kzgiajv0fKLJeSS4233rKItRF/dKO547aVURUwsq6iFoGRbF/11MTMkJAUXn35+jHTYsHc9oqcb1HtGX3G7U4uwRc8HEG21hG213ZdC1paA9ItGXJAYtAC8UOTaAQyZUfhadPbgbWqdOxtdVmBBfRYZsONtpyUy5fw67vQrpsa5RORF1PUGRnpG8jT6k2GlFCrhFfvEX4SNC1CeG9rHg8X9mDZAaHr5kyEA8fXRKMCu+pvQ2QbZmVzMqlpQ8BjH86w+S3F5oOl5xg/xV4BwmZhd2aXoSnxgGqJdkhTVOohmAUZT/pOkIMI0ES17Vm2V3PRRs1aFEHMY8s2ZGOJ+Icdr2MslPtKsnAfdY2ipA0miHifbVhK2iQKilMS/zFUbjwiKtcGmw2X8G/V18FKcf4UzB1cjb1y5i/JlrxcgnNB0UThvU70SzuKrO6+YNNzr0lacr3Y= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BL1PR12MB5335.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(396003)(346002)(136003)(366004)(39860400002)(376002)(8936002)(478600001)(64756008)(6506007)(66556008)(5660300002)(53546011)(76116006)(66476007)(8676002)(66946007)(26005)(33656002)(7696005)(55016002)(71200400001)(186003)(66446008)(9686003)(4326008)(122000001)(86362001)(83380400001)(38100700002)(52536014)(2906002)(316002)(110136005)(54906003); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata: =?utf-8?B?Mmhydkk0eXhwRGlRZUcvamV6WjE3TGNTR0RJTzZCOVkxclMxbXUyNFlONzdO?= =?utf-8?B?WkJad3Y1Y0pNMHZRN25SdWpyVFVnRkFVbVlHLzYrNWNpU1BqRmpJTFRicVJF?= =?utf-8?B?cThacTNPTzY0eWF2czVyWXgzL2JJdERLSFVZYWZWRUVldnRiem5HWTZFRHow?= =?utf-8?B?VkNtcmxNRGYxck1ITUhYcnAvQkJ3b1hPN0JtR1laV0ZpZjYrSFJHa1lNc2oz?= =?utf-8?B?Q3pjN1BRWjF0NjRuS3BFK3BaQkhTYVBoVWEyaEZ2RTlzQ25PMkc2cUptbzBh?= =?utf-8?B?cDg4NDlIc1BDRUVZZjBDNVM3aUhFQ3RnV0tHUkhHM1V3eGMwYjNRY0JyTmxJ?= =?utf-8?B?UmpuYnpJQXR0Y1B1emNjdGZ3MnBRT0loVXpKUFFXaGhidnZuMkI0WmY4Zldw?= =?utf-8?B?aU1LWjRaaEprekgrOU9NYkgrZVVLaWZRNmwzSXVwdzdsc1ZabTNIYjNnWmVk?= =?utf-8?B?emRrbmw2ZEtMcm9ZUFFtYWxPc2dYY0ViRVFzeFpPbTE2N0RDdlRDU2lmaS9O?= =?utf-8?B?L01BcDEyblZrUkp3YURhSmVnOVdrMllaTERRRGJkTGxOSUN5ZVphd2xRQ3g4?= =?utf-8?B?YmdpN0l0TG5tYS8vdHZyeVBwOUtHMFVZaklBTWJOUkZFU1pHN0NmS0JBVFhz?= =?utf-8?B?UUdCUmdzaWo0S1dRV3ZxRVFOWDNiamxLSkl3QU9OQXdRMHlsRjhRNlUxN3Rk?= =?utf-8?B?RWNsbTh0UHM2Z3Z1NE1QWWVFMXZSU3pTSWI0aW5YYkJOd3JCQzQxendiVVI2?= =?utf-8?B?T2VwclNERlNJZjROWkdDWHRlT2F1aDhCMk0yTnhHVzhnV0dpVmVxb0ZNUWxh?= =?utf-8?B?OUh3bEVJZ21YQURDR0NDbmY5emlQOGFSUlRQY1cxcDdZM3R3TktiaStYcVdp?= =?utf-8?B?YnlXdk9UQU11cW9IT3FuUnFuRzUzK0dLdjZkczBCSW5HY1NoQXhxM1IycXBa?= =?utf-8?B?Mk5SODkvNjlpdlovTkhzS3p0WHJzRDBOTEF6N2h0K0lsdkJRUENBZjkwTUtX?= =?utf-8?B?RHpaUFJKa3BrbU45UVQwSjl0NUNva2NCQlR0NHBKWWVXK2JybmI5Y0Fpdnl6?= =?utf-8?B?Q1BIOGtUSi9BWUZMVERQWUgzSGozeDNKSE9XS1NiVTlJZ09GdkJYTHdZVWJF?= =?utf-8?B?d25tU0dkb0UvVVlKK29GdEJYS3pSbEpURkwxWmJYUEhZOG1qN08wdHcxMnZr?= =?utf-8?B?VnJQalh0THY4Um12elp0Rk5vSDErUGJScjBRRGxGMFNyTHpPZ2w5L1Y2dkY2?= =?utf-8?B?WEtjYjlZenVrR2ZDekhVRzBwWHAyWUVZVkhtM1NuYXlsMnB5R1RGQlNKN0Ra?= =?utf-8?B?Y090cGp1c2RDa2t2anRDTXRuYjBaeEoyaWJWMW1PRC9rVDhJajJPb2UrOEhF?= =?utf-8?B?SnVnazluSDVhL2VvSnNVVWpLVnNURDJwSTZrallIbGs2TXZvaTlGTUhYUlla?= =?utf-8?B?OEszS05KYytzNUI5NnNvbDNERFEvTDlERVlwQSs2QVZhdXNsd2thNjBML2dR?= =?utf-8?B?SDlHNmlWaXVuMWNhVS9uZ1h5cEsyUnRralhobllPUkdSMTZrTVNkM1hRWDds?= =?utf-8?B?bzRrSDI2bnFWOG5MbHZVanhoRGNmL0JhRGdHQXRidVdWaDIraGJocHhLUjE3?= =?utf-8?B?UW9vQ081YWxaWUs1NFRMbThFUDE1YWJRY3ZMT1ZRWWhuSnJxZS93UTY2ZlBM?= =?utf-8?B?dWtjN3duUlZpUWxxclNZcVIzZE9WTjJUSzlPVmVaanNRcjJmMmNTakhJa1JK?= =?utf-8?Q?RLNCIh0H3TmXZOC9xLxGQJZEjrI5tZc368h/psQ?= x-ms-exchange-transport-forked: True 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: BL1PR12MB5335.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7bfad6b4-e137-45ce-2451-08d92669159c X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Jun 2021 08:25:02.3630 (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: b5LUNbJtZahlTbUM/d55bWwada3zZe17uq35NYEqorob2gAWdsJAQF3klD57ObjoE2gn5kxx6F0EGL5KmuPMKg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL1PR12MB5126 Subject: Re: [dpdk-dev] [RFC PATCH] ethdev: add support for testpmd-compliant flow rule dumping 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" SGkgQW5kcmV3LA0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IEFuZHJl dyBSeWJjaGVua28gPGFuZHJldy5yeWJjaGVua29Ab2t0ZXRsYWJzLnJ1Pg0KPiANCj4gSGkgT3Jp LA0KPiANCj4gT24gNi8yLzIxIDQ6MzIgUE0sIE9yaSBLYW0gd3JvdGU6DQo+ID4gSGkgSXZhbiwN Cj4gPg0KPiA+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+PiBGcm9tOiBJdmFuIE1h bG92IDxJdmFuLk1hbG92QG9rdGV0bGFicy5ydT4NCj4gPj4NCj4gPj4gSGkgT3JpLA0KPiA+Pg0K PiA+PiBZb3VyIHJldmlldyBlZmZvcnRzIGFyZSBtdWNoIGFwcHJlY2lhdGVkLiBJIHVuZGVyc3Rh bmQgeW91ciBjb25jZXJuDQo+ID4+IGFib3V0IHRoZSBwYXJ0aWFsIGl0ZW0vYWN0aW9uIGNvdmVy YWdlLCBidXQgdGhlcmUgYXJlIHNvbWUgcG9pbnRzIHRvDQo+ID4+IGJlIGNvbnNpZGVyZWQgd2hl biBhZGRyZXNzaW5nIGl0Og0KPiA+PiAtIEl0J3MgYW55d2F5IGhhcmRseSBwb3NzaWJsZSB0byB1 c2UgdGhlIHByaW50ZWQgZmxvdyBkaXJlY3RseSBpbg0KPiA+PiB0ZXN0cG1kIGlmIGl0IGNvbnRh aW5zICJvcGFxdWUiLCBvciAiUE1ELXNwZWNpZmljIiwgaXRlbXMvYWN0aW9ucyBpbg0KPiA+PiB0 ZXJtcyBvZiB0aGUgdHVubmVsIG9mZmxvYWQgbW9kZWwuIFRoZXNlIGl0ZW1zL2FjdGlvbnMgaGF2 ZSB0byBiZQ0KPiA+PiBvbWl0dGVkIHdoZW4gcHJpbnRpbmcgdGhlIGZsb3csIGFuZCB0aGVpciBh YnNlbmNlIGluIHRoZSByZXN1bHRpbmcNCj4gPj4gc3RyaW5nIG1lYW5zIHRoYXQgY29weS9wYXN0 aW5nIHRoZSBmbG93IHRvIHRlc3RwbWQgaXNuJ3QgaGVscGZ1bCBpbg0KPiA+PiB0aGlzIHBhcnRp Y3VsYXIgY2FzZS4NCj4gPiBJIGZ1bGx5IGFncmVlIHdpdGggeW91IHRoYXQgc29tZSBvZiB0aGUg cnVsZXMgY2FuJ3QgYmUgcHJpbnRlZC4gVGhhdCBpcyB3aHkuDQo+ID4gSSdtIG5vdCBzdXJlIGhh dmluZyBwYXJ0aWFsIHNvbHV0aW9uIGlzIHRoZSB3YXkgdG8gZ28uDQo+IA0KPiBTb3JyeSwgSSBk aXNhZ3JlZSB0aGF0IHBvc3NpYmlsaXR5IHRvIGNvdmVyIDk5JSBhbmQgaW1wb3NzaWJpbGl0eSB0 byBjb3ZlciBqdXN0DQo+IDElIGlzIHRoZSByZWFzb24gdG8gZGlzY2FyZC4NCj4gDQoNCkkgYWdy ZWUgd2l0aCB5b3UgdGhhdCA5OSUgaXMgYmV0dGVyIHRoYW4gMCDwn5iKIGJ1dCBpcyB0aGlzIHBh dGNoIDk5JT8NCm1heWJlIHdlIGNhbiBhZ3JlZSBldmVuIGlmIGl0IGlzIDcwJSBpdCBpcyBnb29k IGZvciB0aGlzIHBhdGNoLg0KDQo+ID4gSWYgT1ZTIGZvciBleGFtcGxlIGNhcmVzIGFib3V0DQo+ ID4gc29tZSBvZiB0aGUgaXRlbS9hY3Rpb24sIG1heWJlIHRoaXMgbG9nIHNob3VsZCBiZSBvbiB0 aGVpciBwYXJ0Lg0KPiANCj4gT3ZTIGRvZXMgYW5kIGFzIGZhciBhcyBJIGNhbiBzZWUgYWxyZWFk eSBoYXMgYnVncyB0aGVyZS4NCj4gT2YgY291cnNlLCBub2JvZHkgc2F5cyB0aGF0IGl0IGlzIHRl c3RwbWQtY29tcGxpZW50IGZvcm1hdCwgYnV0IGl0IGRlZmluaXRlbHkNCj4gbG9va3Mgc28uDQo+ IA0KPiBBbnl3YXksIGl0IHNvdW5kcyBzdHJhbmdlIGRvIGR1cGxpY2F0ZSB0aGUgZnVuY3Rpb25h bGl0eSBpbiBtYW55LW1hbnkgRFBESw0KPiBhcHBzLiBPZiBjb3Vyc2UsIGl0IHJlbW92ZXMgdGhl IGhlYWRhY2hlIGZyb20gRFBESyBtYWludGFpbmVycywgYnV0IGl0IGlzDQo+IGhhcmRseSBmcmll bmRseSB0byBEUERLIGNvbW11bml0eSBpbiBnZW5lcmFsLg0KPiANCg0KRnVsbHkgYWdyZWUgd2l0 aCB5b3UgdGhhdCBpZiBzb21lIGZlYXR1cmUgaXMgdXNlZCBieSBudW1iZXIgb2YgYXBwbGljYXRp b25zLCB0aGVuIGl0IGlzIGJldHRlcg0Kb3IgYXQgbGVhc3QgbmljZXIgdG8gaGF2ZSBpdCBpbiBE UERLLCBidXQgbXkgcXVlc3Rpb24gaXMgdGhhdCwgdGhlIGN1cnJlbnQgcGF0Y2ggaXMgZm9yIHRo ZSBPVlMgdXNlIGNhc2UNCmZyb20gbXkgdW5kZXJzdGFuZGluZyBhbmQgbm90IGNvbnNpZGVyaW5n IGFueSBvdGhlciBhcHBsaWNhdGlvbi4gU28sIGluIHRoaXMgY2FzZQ0KZG8gd2Ugd2FudCBpdCBp biBEUERLPw0KDQo+ID4+IC0gVGhlcmUncyBhY3Rpb24gRU5DQVAgd2hpY2ggYWxzbyBjYW4ndCBi ZSBmdWxseSByZXByZXNlbnRlZCBieSB0aGUNCj4gPj4gdG9vbCBpbiBxdWVzdGlvbiwgc2ltcGx5 IGJlY2F1c2UgaXQgaGFzIG5vIHBhcmFtZXRlcnMuIEluIHRlc3BtZCwgb25lDQo+ID4+IGZpcnN0 IGhhcyB0byBpc3N1ZSAic2V0IHZ4bGFuIiBjb21tYW5kIHRvIGNvbmZpZ3VyZSB0aGUgZW5jYXAu DQo+ID4+IGhlYWRlciwgd2hpbHN0ICJ2eGxhbiIgdG9rZW4gaW4gdGhlIGZsb3cgcnVsZSBzdHJp bmcganVzdCByZWZlcnMgdG8NCj4gPj4gdGhlIHByZXZpb3VzbHkgc2V0IGVuY2FwLiBwYXJhbWV0 ZXJzLiBUaGUgc3VnZ2VzdGVkIGZsb3cgcHJpbnQgaGVscGVyDQo+ID4+IGNhbid0IHJlbGlhYmx5 IHByaW50IHRoZXNlIHR3byBjb21wb25lbnRzICgic2V0IHZ4bGFuIiBhbmQgdGhlIGZsb3cNCj4g Pj4gcnVsZSBpdHNlbGYpIGFzIHRoZXkgYmVsb25nIHRvIGRpZmZlcmVudCB0ZXN0cG1kIGNvbW1h bmQgc3RyaW5ncy4NCj4gPj4NCj4gPiBBZ2FpbiwgSSBhZ3JlZSB3aXRoIHlvdSBidXQgbGlrZSBt eSBhYm92ZSBhbnN3ZXIsIGRvIHdlIHdhbnQgYSBwYXJ0aWFsDQo+ID4gc29sdXRpb24gaW4gRFBE Sz8NCj4gDQo+IE15IGFuc3dlciBpcyBZRVMuDQo+IA0KDQpJIGNhbiBsaXZlIHdpdGggc3VjaCBk ZWNpc2lvbiBidXQgbGlrZSBJIHNhaWQgYWJvdmUgaXQgZGVwZW5kcyBvbiB0aGUgdXNlIGNhc2UN CmFuZCBob3cgcGFydGlhbCBpdCBpcy4NCg0KPiA+PiBBcyB5b3UgbWlnaHQgc2VlLCBjb21wbGV0 ZW5lc3Mgb2YgdGhlIHNvbHV0aW9uIHdvdWxkbid0IG5lY2Vzc2FyaWx5DQo+ID4+IGJlIHJlYWNo YWJsZSwgZXZlbiBpZiBmdWxsIGl0ZW0vYWN0aW9uIGNvdmVyYWdlIHdhcyBwcm92aWRlZC4NCj4g Pj4NCj4gPj4gQXMgZm9yIHRoZSBpdGVtL2FjdGlvbiBjb3ZlcmFnZSBpdHNlbGYsIGl0J3MgcmF0 aGVyIGNvbnRyb3ZlcnNpYWwuIE9uDQo+ID4+IHRoZSBvbmUgaGFuZCwgeWVzLCB3ZSBzaG91bGQg cHJvYmFibHkgdHJ5IHRvIGNvdmVyIG1vcmUgaXRlbXMgYW5kDQo+ID4+IGFjdGlvbnMgaW4gdGhl IHN1Z2dlc3RlZCBwYXRjaCwgdG8gdGhlIGV4dGVudCBhbGxvd2VkIGJ5IG91ciBjdXJyZW50DQo+ ID4+IHByaW9yaXRpZXMuIEJ1dCBvbiB0aGUgb3RoZXIgaGFuZCwgdGhlIGV4aXN0aW5nIGNvdmVy YWdlIG1pZ2h0IG5vdCBiZQ0KPiA+PiB0aGF0IHBvb3I6IGl0J3MgZmFpcmx5IGVsYWJvcmF0ZSBh bmQgYXQgbGVhc3QgYWxsb3dzIHRvIHByaW50IHRoZQ0KPiA+PiBtb3N0IGNvbW1vbiBmbG93IHJ1 bGVzLg0KPiA+Pg0KPiA+IFRoYXQgaXMgbXkgbWFpbiBpc3N1ZSB5b3UgYXJlIGdvaW5nIHRvIHB1 c2ggc29tZXRoaW5nIHRoYXQgaXMgZ29vZCBmb3INCj4gPiB5b3UgYW5kIG1heWJlIHNvbWUgb3Ro ZXIgY2FzZXMsIGJ1dCBpdCBjYW4ndCBiZSB1c2VkIGJ5IGFsbA0KPiA+IGFwcGxpY2F0aW9uLCBl dmVuIHdpdGggdGhlIG1vc3QgYmFzaWMgY29tbWFuZHMgbGlrZSBlbmNhcC4NCj4gDQo+IElzbid0 IGl0IGZhaXI6IGlmIG9uZSB3YW50cyB0byB1c2Ugc29tZXRoaW5nLCBiZSByZWFkeSB0byBoZWxw IGFuZCBleHRlbmQgaXQuIE5vDQo+IHBhaW4sIG5vIGdhaW4gOikgSm9rZXMgYXNpZGUgLSB3ZSdy ZSByZWFkeSB0byBzdXBwb3J0ICJ0aGUgbW9zdCBiYXNpYw0KPiBjb21tYW5kcyIsIGp1c3QgbGlz dCBpdCwgYnV0IGRvIG5vdCBzYXkgZXZlcnl0aGluZyBpcyBiYXNpYy4gImV2ZXJ5dGhpbmciIHdp bGwNCj4gZGVsYXkgdGhlIGZlYXR1cmUgYW5kIHNpbXBseSB1bmZhaXIgdG8gZGVtYW5kIChJTUhP KS4NCj4gDQo+IElNSE8sIHRoZSBmZWF0dXJlIHdvdWxkIG1ha2UgZmxvdyBBUEkgbW9yZSBmcmll bmRseSBhbmQgZWFzaWVyIHRvIGRlYnVnLA0KPiByZXBvcnQgYnVncyBldGMuDQo+DQpJIGZ1bGx5 IGFncmVlIHRoYXQgaWYgc29tZW9uZSB3YW50cyBmdW5jdGlvbmFsaXR5LCBoZSBzaG91bGQgd29y ayBmb3IgaXQuDQpCdXQgYXMgYSBkZXZlbG9wZXIgb2YgcnRlX2Zsb3cgYW5kIG1haW50YWluZXIg SSBuZWVkIHRvIGFzayB3aG8gd2lsbCBhZGQgdGhlIG5ldw0KZmVhdHVyZXMvbWlzc2luZyBmZWF0 dXJlcz8gU2hvdWxkIHdlIGVuZm9yY2UgdGhhdCBlYWNoIGRldmVsb3BlciB3aGVuIGNvZGluZyBh IG5ldw0KaXRlbS9hY3Rpb24gd2lsbCBhZGQgaXQgdG8gdGhlIHByaW50Pw0KT3IganVzdCB1c2Vy cyB0aGF0IGNhcmUgYWJvdXQgc3VjaCBsb2cgd2lsbCBhZGQgaXQ/DQoNCg0KVG8gc3VtbWFyaXpl Lg0KSSB0aGluayB0aGUgZm9sbG93aW5nIHF1ZXN0aW9uIG11c3QgYmUgYW5zd2VyIGJlZm9yZSBk ZWNpZGluZzoNCjEuIGhvdyBtYW55IGFwcHMgYXJlIGdvaW5nIHRvIHVzZSB0aGlzIGZlYXR1cmU/ DQoyLiBpdCB0aGUgY292ZXJhZ2Ugc3VmZmljaWVudD8NCjMuIHdobyBpcyByZXNwb25zaWJsZSB0 byB1cGRhdGUgaXQ/IChlYWNoIGRldmVsb3Blci90aGUgaW50ZXJlc3RlZCBwYXJ0eSBtZW1iZXI/ KQ0KDQoNCkJlc3QsDQpPcmkNCiANCj4gPj4gWWVzLCBtYWNyb3MgYW5kIHNvbWUgb3RoZXIgY3Vu bmluZyB3YXlzIHRvIGNvdmVyIG1vcmUgZmxvdyBzcGVjaWZpY3MNCj4gPj4gbWlnaHQgY29tZSBp biBoYW5keSwgYnV0LCBhdCB0aGUgc2FtZSB0aW1lLCBjYW4gYmUgcmF0aGVyIGVycm9yIHByb25l Lg0KPiA+PiBTb21ldGltZXMgaXQncyBtb3JlIHJvYnVzdCB0byBqdXN0IHdyaXRlIHRoZSBjb2Rl IG91dCBpbiBmdWxsLg0KPiA+Pg0KPiA+IEknbSBhbHdheXMgaW4gZmF2b3Igb2YgZWFzeSBvZiBl eHRyYSBjb21wbGV4IGJ1dCB0b28gaGFyZCBpcyBhbHNvIG5vdCBnb29kLg0KPiA+DQo+ID4gVGhh bmtzLA0KPiA+IE9yaQ0KPiA+PiBUaGFuayB5b3UuDQo+ID4+DQo+ID4+IE9uIDMwLzA1LzIwMjEg MTA6MjcsIE9yaSBLYW0gd3JvdGU6DQo+ID4+PiBIaSBJdmFuLA0KPiA+Pj4NCj4gPj4+IEZpcnN0 IG5pY2UgaWRlYSBhbmQgdGhhbmtzIGZvciB0aGUgcGlja2luZyB1cCB0aGUgYmFsbC4NCj4gPj4+ DQo+ID4+PiBCZWZvcmUgYSBkZXRhaWwgcmV2aWV3LA0KPiA+Pj4gVGhlIG1haW4gdGhpbmcgSSdt IGNvbmNlcm5lZCBhYm91dCBpcyB0aGF0IHRoaXMgcHJpbnQgd2lsbCBiZQ0KPiA+Pj4gcGFydGlh bGx5DQo+ID4+IHN1cHBvcnRlZCwNCj4gPj4+IEkga25vdyB0aGF0IHlvdSBjb3ZlcmVkIHRoaXMg aXNzdWUgYnkgcHJpbnRpbmcgdW5rbm93biBmb3INCj4gPj4+IHVuc3VwcG9ydGVkDQo+ID4+IGl0 ZW0vYWN0aW9ucywNCj4gPj4+IGJ1dCB0aGlzIHdpbGwgbWVhbiB0aGF0IGl0IGlzIGVub3VnaCB0 aGF0IG9uZSBpdGVtL2FjdGlvbiBpcyBub3QNCj4gPj4+IHN1cHBvcnRlZA0KPiA+PiBhbmQgYWxy ZWFkeSB0aGUNCj4gPj4+IGZsb3cgY2FuJ3QgYmUgdXNlZCBpbiB0ZXN0cG1kLg0KPiA+Pj4gVG8g Z2V0IGZ1bGwgc3VwcG9ydCBpdCBtZWFucyB0aGF0IHRoZSBkZXZlbG9wZXIgbmVlZHMgdG8gYWRk IHN1Y2gNCj4gPj4+IHByaW50DQo+ID4+IHdpdGggZWFjaCBuZXcNCj4gPj4+IGl0ZW0vYWN0aW9u LiBJIGFncmVlIGl0IGlzIHBvc3NpYmxlLCBidXQgaXQgaGFzIGhpZ2ggb3ZlcmhlYWQgZm9yIGVh Y2gNCj4gZmVhdHVyZS4NCj4gPj4+DQo+ID4+PiBNYXliZSB3ZSBzaG91bGQgc29tZWhvdyBjcmVh dGUgYSBtYWNyb3MgZm9yIHRoZSBwcmludHMgb3Igb3RoZXINCj4gPj4+IGVhc2llcg0KPiA+PiB0 byBzdXBwb3J0IHdheXMuDQo+ID4+Pg0KPiA+Pj4gRm9yIGV4YW1wbGUsIGp1c3QgcHJpbnRpbmcg dGhlIGlwdjQgaGFzIDcgZnVuY3Rpb24gY2FsbHMgaW5zaWRlIG9mDQo+ID4+PiBpdCBlYWNoIG9u ZQ0KPiA+PiB3aXRoIGVycm9yIGNoZWNraW5nLA0KPiA+Pj4gYW5kIEknbSBub3QgY291bnRpbmcg dGhlIGRlZGljYXRlZCBmdW5jdGlvbnMuDQo+ID4+Pg0KPiA+Pj4NCj4gPj4+DQo+ID4+PiBCZXN0 LA0KPiA+Pj4gT3JpDQo+ID4+Pg0KPiA+Pj4NCj4gPj4+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2Ut LS0tLQ0KPiA+Pj4+IEZyb206IEl2YW4gTWFsb3YgPGl2YW4ubWFsb3ZAb2t0ZXRsYWJzLnJ1Pg0K PiA+Pj4+IFNlbnQ6IFRodXJzZGF5LCBNYXkgMjcsIDIwMjEgMTE6MjUgQU0NCj4gPj4+PiBUbzog ZGV2QGRwZGsub3JnDQo+ID4+Pj4gQ2M6IE5CVS1Db250YWN0LVRob21hcyBNb25qYWxvbiA8dGhv bWFzQG1vbmphbG9uLm5ldD47IEZlcnJ1aA0KPiA+PiBZaWdpdA0KPiA+Pj4+IDxmZXJydWgueWln aXRAaW50ZWwuY29tPjsgQW5kcmV3IFJ5YmNoZW5rbw0KPiA+Pj4+IDxhbmRyZXcucnliY2hlbmtv QG9rdGV0bGFicy5ydT47IE9yaSBLYW0gPG9yaWthQG52aWRpYS5jb20+OyBSYXkNCj4gPj4+PiBL aW5zZWxsYSA8bWRyQGFzaHJvZS5ldT47IE5laWwgSG9ybWFuIDxuaG9ybWFuQHR1eGRyaXZlci5j b20+DQo+ID4+Pj4gU3ViamVjdDogW1JGQyBQQVRDSF0gZXRoZGV2OiBhZGQgc3VwcG9ydCBmb3Ig dGVzdHBtZC1jb21wbGlhbnQgZmxvdw0KPiA+PiBydWxlDQo+ID4+Pj4gZHVtcGluZw0KPiA+Pj4+ DQo+ID4+Pj4gRFBESyBhcHBsaWNhdGlvbnMgKGZvciBleGFtcGxlLCBPdlMpIG9yIHRlc3RzIHdo aWNoIHVzZSBSVEUgZmxvdw0KPiA+Pj4+IEFQSQ0KPiA+PiBuZWVkIHRvDQo+ID4+Pj4gbG9nIGNy ZWF0ZWQgb3IgcmVqZWN0ZWQgZmxvdyBydWxlcyB0byBoZWxwIHRvIHJlY29nbmlzZSB3aGF0IGdv ZXMNCj4gPj4+PiByaWdodCBvciB3cm9uZy4gRnJvbSB0aGlzIHN0YW5kcG9pbnQsIHRlc3RwbWQt Y29tcGxpYW50IGZvcm1hdCBpcw0KPiA+Pj4+IG5pY2UgZm9yIHRoZSBwdXJwb3NlIGJlY2F1c2Ug aXQgYWxsb3dzIHRvIGNvcHktcGFzdGUgdGhlIGZsb3cgcnVsZXMNCj4gPj4+PiBhbmQgZGVidWcg dXNpbmcgdGVzdHBtZC4NCj4gPj4+Pg0KPiA+Pj4+IFJlY29nbmlzYWJsZSBwYXR0ZXJuIGl0ZW1z Og0KPiA+Pj4+IFZPSUQsIFZGLCBQRiwgUEhZX1BPUlQsIFBPUlRfSUQsIEVUSCwgVkxBTiwgSVBW NCwgSVBWNiwgVURQLCBUQ1AsDQo+ID4+IFZYTEFOLA0KPiA+Pj4+IE5WR1JFLCBHRU5FVkUsIE1B UkssIFBQUE9FUywgUFBQT0VELg0KPiA+Pj4+DQo+ID4+Pj4gUmVjb2duaXNhYmxlIGFjdGlvbnM6 DQo+ID4+Pj4gVk9JRCwgSlVNUCwgTUFSSywgRkxBRywgUVVFVUUsIERST1AsIENPVU5ULCBSU1Ms IFBGLCBWRiwNCj4gPj4gUEhZX1BPUlQsDQo+ID4+Pj4gUE9SVF9JRCwgT0ZfUE9QX1ZMQU4sIE9G X1BVU0hfVkxBTiwgT0ZfU0VUX1ZMQU5fVklELA0KPiA+Pj4+IE9GX1NFVF9WTEFOX1BDUCwgVlhM QU5fRU5DQVAsIFZYTEFOX0RFQ0FQLg0KPiA+Pj4+DQo+ID4+Pj4gUmVjb2duaXNhYmxlIFJTUyB0 eXBlcyAoYWN0aW9uIFJTUyk6DQo+ID4+Pj4gSVBWNCwgRlJBR19JUFY0LCBOT05GUkFHX0lQVjRf VENQLCBOT05GUkFHX0lQVjRfVURQLA0KPiA+Pj4+IE5PTkZSQUdfSVBWNF9PVEhFUiwgSVBWNiwg RlJBR19JUFY2LCBOT05GUkFHX0lQVjZfVENQLA0KPiA+Pj4+IE5PTkZSQUdfSVBWNl9VRFAsIE5P TkZSQUdfSVBWNl9PVEhFUiwgSVBWNl9FWCwNCj4gSVBWNl9UQ1BfRVgsDQo+ID4+Pj4gSVBWNl9V RFBfRVgsIEwzX1NSQ19PTkxZLCBMM19EU1RfT05MWSwgTDRfU1JDX09OTFksDQo+ID4+IEw0X0RT VF9PTkxZLg0KPiA+Pj4+DQo+ID4+Pj4gVW5yZWNvZ25pc2VkIHBhcnRzIG9mIHRoZSBmbG93IHNw ZWNpZmljYXRpb24gYXJlIHJlcHJlc2VudGVkIGJ5DQo+ID4+Pj4gdG9rZW5zICJ7dW5rbm93bn0i IGFuZCAie3Vua25vd24gYml0c30iLiBJbnRlcmVzdGVkIHBhcnRpZXMgYXJlDQo+ID4+Pj4gd2Vs Y29tZSB0byBleHRlbmQgdGhpcyB0b29sIHRvIHJlY29nbmlzZSBtb3JlIGl0ZW1zIGFuZCBhY3Rp b25zLg0KPiA+Pj4+DQo+ID4+Pj4gU2lnbmVkLW9mZi1ieTogSXZhbiBNYWxvdiA8aXZhbi5tYWxv dkBva3RldGxhYnMucnU+DQo=