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 B7271A0A0A; Thu, 3 Jun 2021 11:27:44 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 2F76240E78; Thu, 3 Jun 2021 11:27:44 +0200 (CEST) Received: from NAM04-DM6-obe.outbound.protection.outlook.com (mail-dm6nam08on2069.outbound.protection.outlook.com [40.107.102.69]) by mails.dpdk.org (Postfix) with ESMTP id 786EF40DF6 for ; Thu, 3 Jun 2021 11:27:42 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=MLmD472SG3Bz1mquK2CFa5+nb1yY/pEqt4PeSCLFU30DRiaa53lobnJ7/kD59WdzHvXyaYjJ8nCrPM3Fy4MtE/uejx++ARUOKI/yGGHWFJROUiMJLDwP49PJoL9NPHm6whgng6VuwR1wETu3qyCleeBqumxAOTNCjqQ+1b5YIoHn6vusO/iAhmgarv/1CH9myIC51NacDwHUalkajwTh36hgC1Y0VlhOcWb/KO8+B+xtnHKNNaqDXuTqIEg5mzYfbRZS6JhSc7c+StvWrpEzOM0l4U25OLV3iR5EB3oC09akTWJNF9ZtliRxqyKJTlrvUPj0kgftv+TA0etRWSgkSA== 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=USzDu0kj2Xys4rhgZUX1wBkerO8dOBSfmvdSNsRkfQs=; b=Wk2xwF0AZMk0soZOjXd9bMNQJvLInqurxWDdeY1YvNRv/Tu2fVc7mmLDirRQLvr3N/N45U6tH4mCKqwWmgwI/kUWP+30lL34WyQTd7BoJdu0rNmba5oICVCoVBM2odKQlICQrWooNxnhu3x0UYs0289pxMjQrysBNucTmrckM3sL39hQzB2XVvfgimviZZzHH/4gHrH6EPFAOWJEs3CJ67ooVQtzTFC4VY5s8+5YPkM+afhlsgOCb6Kha6sGe8+EMlmZ6O07vArlC7xqSY13zOVORex7G2Gcc7Si5/8SNAxZS9G2RVCHHp05aZUx0Am2y8NzHUUnBa1b/naRmUFGQg== 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=USzDu0kj2Xys4rhgZUX1wBkerO8dOBSfmvdSNsRkfQs=; b=HXNBtm8LYIw+ifSPBFlzINPVnZD+QdVAnZw5uSlUngnDB/w8J0WbeElUE0W8yJlXJzsuX3DjczAl6cBbVYoMGyk9Wl7E1bNyWM+9p4/O5ZKjD4tX606jNdJcmJ/J49i/DP9FbHBa2g0LL62WLi8RV2AGQiKwmBANpRcKy+0bTG/QVJDMoImc6dI8qETQyHsPOsQmosunjHqMxeBxTFXocu038NqBXQKONYTM7ug786TQWpoMsmS6uGjYLw3QNLoV3prKsywGDC2pBnlxW/QEjvP7vG4OImqXaZ7Vha0jAMG/9asao8eaNpgvqP1bkBwCmgUU4w/dA434RqDl7LMQQA== Received: from BL1PR12MB5335.namprd12.prod.outlook.com (2603:10b6:208:317::19) by BL1PR12MB5096.namprd12.prod.outlook.com (2603:10b6:208:316::7) 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 09:27:41 +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 09:27:41 +0000 From: Ori Kam To: Andrew Rybchenko , Ivan Malov , "dev@dpdk.org" CC: NBU-Contact-Thomas Monjalon , Ferruh Yigit , Ray Kinsella , Neil Horman , Eli Britstein , Ilya Maximets Thread-Topic: [RFC PATCH] ethdev: add support for testpmd-compliant flow rule dumping Thread-Index: AQHXUtHTVmOnBGTM6UKpSaUBdRK75qr7mK5QgAOg/oCAAYYpoIAABsYAgAEzHACAAAmRgIAACeAA Date: Thu, 3 Jun 2021 09:27:40 +0000 Message-ID: References: <20210527082504.3495-1-ivan.malov@oktetlabs.ru> <6175cb60-5d9a-832a-fa07-32326018661c@oktetlabs.ru> <81191eb5-7a74-2bd3-00e2-0250ef9ee689@oktetlabs.ru> In-Reply-To: <81191eb5-7a74-2bd3-00e2-0250ef9ee689@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-originating-ip: [147.236.145.254] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 00a90d8e-a4dc-40bd-56f0-08d92671d5d2 x-ms-traffictypediagnostic: BL1PR12MB5096: 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:8882; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: O4AEo6ewnU070HyPPeAIQO1ib8Gvgf1M3uPesA5Vxj6OV20eNhqSUreWYKjU3Aj7JpOFCzH6Tkv1lT4TPlvEtAbxdjEL4bDI6FIZlNBmi3RMioq8gRezfD494+s3S0UrVQl8crmuugAympNKUSpPOyVxt6npqwwjX0e6kQipvwJ7XjkFxa2+b22sMkDDrcfDqNHGdhslp9YxLcQJ0EQr6kDlC+9IhH7f+F/CLEd2OhlMBunO+3TL4HThNc3ZVvtOnzzFHPydeNa7jf8cOomjkI2Be/7VrQvhPOD3a1OYlRGlQFoONsyQgXQtIClDsCZu3QA7eqMYI8gFAVtq3wfP+82+g5sEd7wb41MACcclV5cJg+HXSx3qV3L0GQ/cF5Bn8ha16106U+YCoZ+Br/LAK3/loZd8+1eQxyEOn5iwp9cKSncrZtMv4M23h66eZWU+azRR0NwAahxaa4dB+h9h7fp9u70vJ/qvt7NSijYs1NrbYbyjnMpjc7865pe3bOcIJJQCxciPwIBzDnlDJLHVh3bcas4WGMEWpKo5xcOZAFh1G/xm0pQl1A/5HyriwQm2qvrgaFRbqyOjWAvx0tjdttrBRNgnYowNZ1qgSctU7MY= 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)(376002)(136003)(346002)(366004)(396003)(39860400002)(6506007)(4326008)(66946007)(316002)(76116006)(122000001)(38100700002)(86362001)(54906003)(33656002)(110136005)(7696005)(83380400001)(71200400001)(26005)(66556008)(478600001)(9686003)(8676002)(5660300002)(186003)(30864003)(2906002)(55016002)(52536014)(66476007)(64756008)(66446008)(53546011)(8936002); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata: =?utf-8?B?RktuK0xmVUpBMDkvZ01ySmJ4bzRIM0lOQ0F4ZHNORlRBazVJR1l2VWZmYkVD?= =?utf-8?B?ZW5NcHlVTDdGd0xpSEsvSXdTY1YrNXdGZFI0aWcwdVdRZk5zTXQ2OXZ3RlNE?= =?utf-8?B?L1JyeXlPeDhoUUlOVklQNTNHTmo5Sm1SWTlJak95WFRvQ1RuVjA0SkpWZWpF?= =?utf-8?B?ZUtoYjFmUlArVkhNTkl3NzlTM1dqR1BFTGNrdXVmdmNwNmtnMTZ6ekNNaGFH?= =?utf-8?B?MUZWeVA5dURoMlgwSzNWbnV4ai9rcHg1YVRPTjEyRmZzaXZubDJSdm9XSUNx?= =?utf-8?B?R0dQcENaNHdkek5LZ1RvRGRCWm1haFBuZ3ZjOTZiVkJvMmVOOVV4cGNvTHFn?= =?utf-8?B?MVNGUVdUWEdLQ3BhZ3RsUFJGTXZtUXUwMlRsSGRWRk5mS2NMc3RJTVB6R1VU?= =?utf-8?B?RGpqR1QwZk1jRWpWbkRkQlhldVFWRG9tVjAwY2Y1bkdReG9sT2x4bDBCUjh5?= =?utf-8?B?ci9iTVJjcnR0b2FTU2Rxc056N2JtSUlIL3VUSysxeUd4aWFROUNueGdva0dW?= =?utf-8?B?RXJLZ28wU1M1ODJWcjJyT3lpcXZEcG1tMDl4WGRHZ3BJOG8xNGdpeUdEL2xW?= =?utf-8?B?M0phNk94eXlsWTRGV3R2MGt1M2lMaWw1d3VYYUlHT2tnRnV5WWlXVjVXRmlH?= =?utf-8?B?dTZkRWVYMElWMW1DM1N3Nm9ETXE1bXFZc1hxOEdzUHJYMm9CZE9FTHpEQmxo?= =?utf-8?B?TXhuQkViRWpUeXgrNVV2OTd1aE55bUk0MjBUMzZJaThjY09wdHBOR3M4cEh4?= =?utf-8?B?bW43L01kbytOc1RSOHZMRndONW5jNjVDbVRZbWJKdmxaMVNPSG5SNHpnbkho?= =?utf-8?B?VVEzNzVvZ1hFSE9HdXAzSWlhbEE1dmpyd29TZERRYUtoZHY4azZSUnd6TTR5?= =?utf-8?B?S0lqMWI0TForRFRKcjd0d3dXdEpyRU43MUdWMkxGQXF4UjNYVlJUcWFCbi9R?= =?utf-8?B?UnpsQUlhK1VkNVFWV2RFT3R6Y0FPTmx5WkFVS0xVVDl2eEdYb3ZYR005Mjdt?= =?utf-8?B?eVB3SjBUY1AwRXl1S2JJTUpFaUpjYTh1Wm9QZTVEMy9WR3F2RExYNGwyTVFK?= =?utf-8?B?UUROUng3WjUwOE92dGVsUVgzckZhSmE3Q1B5TTE4aXpqWHFOQjM5ZElkYkVO?= =?utf-8?B?SGk5L1REbEdOZEsxQ0U4TFN2b3A4QWR1MFVwanY2WTg5RHNKTTN2WC93akpH?= =?utf-8?B?bkRlRTNBNEMrN1FuQzNQL2c2L05WckVsb29lSnd0eUtJNFFkU0RZdmdsM1VH?= =?utf-8?B?Sm0yNnpuQjhqc2ovZDFLcGhoL3RkNVphR3Nrdzd3YTZHZWl3N1NJYnJaei8r?= =?utf-8?B?cjUzTkIxNENOb1VIL3BHNG1MeWdRTU5qeWNLL0NIK2J2TnJFbVlTOVB1Z0Na?= =?utf-8?B?cm9qSktLcUZQaW5jcWxVSFcrMmNJZW9nSWhEaWxMcXE4OThvb1paY2NRTXlU?= =?utf-8?B?djJHd2FSTVI2OVZEK2NzM3VmVjNyY2xwenhiTXFlcGNROXc2ZGJKTzdHcXVu?= =?utf-8?B?bFdTZ29qRlJteEVJM3pLRE42RkQ5VVo1YjNhUTBDU25KU282UUtxc0Q5Nmp0?= =?utf-8?B?VW05T0R5eVVxUFBmY25sUHBCMTVSYTBwbk82eHR4ZU1DVzR6N2dCcit4eUEy?= =?utf-8?B?V0lZUjhpMk0zVUtRQXF6SlpOcWU2d1g3eE8zTUU2bER2ZTZqbzVDejNyTmNa?= =?utf-8?B?OCtyQWgzYk5HbWh4SWhXeFJZaE1QcVBHVis5VXdwcnFKZ2EzWER5Tk9ERGx3?= =?utf-8?Q?C3sAwhlDaa8AuCrRLw0ZG99TrG5YstzKb0n1uJG?= 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: 00a90d8e-a4dc-40bd-56f0-08d92671d5d2 X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Jun 2021 09:27:40.7688 (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: xwgEPf+e+kMxZjkcZ7pAMzOdXBcvIRfqw/C6zXUpc0zvH+sJQ025Jrl/um0AnSCnrvMJLOLYDLDp/1KNTZczqg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL1PR12MB5096 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 LA0KPiANCj4gQ2MgRWxpIGFuZCBJbHlhIHNpbmNlIEkgdGhpbmsgT3ZTIGNvdWxkIGJlIGludGVy ZXN0ZWQgaW4gdGhlIGZlYXR1cmUuDQo+IA0KPiBPbiA2LzMvMjEgMTE6MjUgQU0sIE9yaSBLYW0g d3JvdGU6DQo+ID4gSGkgQW5kcmV3LA0KPiA+DQo+ID4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0t LS0tDQo+ID4+IEZyb206IEFuZHJldyBSeWJjaGVua28gPGFuZHJldy5yeWJjaGVua29Ab2t0ZXRs YWJzLnJ1Pg0KPiA+Pg0KPiA+PiBIaSBPcmksDQo+ID4+DQo+ID4+IE9uIDYvMi8yMSA0OjMyIFBN LCBPcmkgS2FtIHdyb3RlOg0KPiA+Pj4gSGkgSXZhbiwNCj4gPj4+DQo+ID4+Pj4gLS0tLS1Pcmln aW5hbCBNZXNzYWdlLS0tLS0NCj4gPj4+PiBGcm9tOiBJdmFuIE1hbG92IDxJdmFuLk1hbG92QG9r dGV0bGFicy5ydT4NCj4gPj4+Pg0KPiA+Pj4+IEhpIE9yaSwNCj4gPj4+Pg0KPiA+Pj4+IFlvdXIg cmV2aWV3IGVmZm9ydHMgYXJlIG11Y2ggYXBwcmVjaWF0ZWQuIEkgdW5kZXJzdGFuZCB5b3VyIGNv bmNlcm4NCj4gPj4+PiBhYm91dCB0aGUgcGFydGlhbCBpdGVtL2FjdGlvbiBjb3ZlcmFnZSwgYnV0 IHRoZXJlIGFyZSBzb21lIHBvaW50cw0KPiA+Pj4+IHRvIGJlIGNvbnNpZGVyZWQgd2hlbiBhZGRy ZXNzaW5nIGl0Og0KPiA+Pj4+IC0gSXQncyBhbnl3YXkgaGFyZGx5IHBvc3NpYmxlIHRvIHVzZSB0 aGUgcHJpbnRlZCBmbG93IGRpcmVjdGx5IGluDQo+ID4+Pj4gdGVzdHBtZCBpZiBpdCBjb250YWlu cyAib3BhcXVlIiwgb3IgIlBNRC1zcGVjaWZpYyIsIGl0ZW1zL2FjdGlvbnMNCj4gPj4+PiBpbiB0 ZXJtcyBvZiB0aGUgdHVubmVsIG9mZmxvYWQgbW9kZWwuIFRoZXNlIGl0ZW1zL2FjdGlvbnMgaGF2 ZSB0bw0KPiA+Pj4+IGJlIG9taXR0ZWQgd2hlbiBwcmludGluZyB0aGUgZmxvdywgYW5kIHRoZWly IGFic2VuY2UgaW4gdGhlDQo+ID4+Pj4gcmVzdWx0aW5nIHN0cmluZyBtZWFucyB0aGF0IGNvcHkv cGFzdGluZyB0aGUgZmxvdyB0byB0ZXN0cG1kIGlzbid0DQo+ID4+Pj4gaGVscGZ1bCBpbiB0aGlz IHBhcnRpY3VsYXIgY2FzZS4NCj4gPj4+IEkgZnVsbHkgYWdyZWUgd2l0aCB5b3UgdGhhdCBzb21l IG9mIHRoZSBydWxlcyBjYW4ndCBiZSBwcmludGVkLiBUaGF0IGlzIHdoeS4NCj4gPj4+IEknbSBu b3Qgc3VyZSBoYXZpbmcgcGFydGlhbCBzb2x1dGlvbiBpcyB0aGUgd2F5IHRvIGdvLg0KPiA+Pg0K PiA+PiBTb3JyeSwgSSBkaXNhZ3JlZSB0aGF0IHBvc3NpYmlsaXR5IHRvIGNvdmVyIDk5JSBhbmQg aW1wb3NzaWJpbGl0eSB0bw0KPiA+PiBjb3ZlciBqdXN0IDElIGlzIHRoZSByZWFzb24gdG8gZGlz Y2FyZC4NCj4gPj4NCj4gPg0KPiA+IEkgYWdyZWUgd2l0aCB5b3UgdGhhdCA5OSUgaXMgYmV0dGVy IHRoYW4gMCDwn5iKIGJ1dCBpcyB0aGlzIHBhdGNoIDk5JT8NCj4gPiBtYXliZSB3ZSBjYW4gYWdy ZWUgZXZlbiBpZiBpdCBpcyA3MCUgaXQgaXMgZ29vZCBmb3IgdGhpcyBwYXRjaC4NCj4gDQo+IEhv bGQgb24uIEhlcmUgd2UncmUgdGFsa2luZyBhYm91dCBhIHRoZW9yZXRpY2FsIHBvc3NpYmlsaXR5 IHRvIGNvdmVyIDk5JS4NCj4gQ292ZXJhZ2UgaW4gdGhpcyBwYXRjaCBpcyBkaXNjdXNzZWQgYmVs b3cgaW4gdGVybXMgb2YgInRoZSBtb3N0IGJhc2ljDQo+IGNvbW1hbmRzIi4NCg0KSSAga25vdyB0 aGF0IHRoYXQgaXMgd2h5IEkgc2FpZCA3MCUuDQoNCj4gLg0KPiANCj4gPj4+IElmIE9WUyBmb3Ig ZXhhbXBsZSBjYXJlcyBhYm91dA0KPiA+Pj4gc29tZSBvZiB0aGUgaXRlbS9hY3Rpb24sIG1heWJl IHRoaXMgbG9nIHNob3VsZCBiZSBvbiB0aGVpciBwYXJ0Lg0KPiA+Pg0KPiA+PiBPdlMgZG9lcyBh bmQgYXMgZmFyIGFzIEkgY2FuIHNlZSBhbHJlYWR5IGhhcyBidWdzIHRoZXJlLg0KPiA+PiBPZiBj b3Vyc2UsIG5vYm9keSBzYXlzIHRoYXQgaXQgaXMgdGVzdHBtZC1jb21wbGllbnQgZm9ybWF0LCBi dXQgaXQNCj4gPj4gZGVmaW5pdGVseSBsb29rcyBzby4NCj4gPj4NCj4gPj4gQW55d2F5LCBpdCBz b3VuZHMgc3RyYW5nZSBkbyBkdXBsaWNhdGUgdGhlIGZ1bmN0aW9uYWxpdHkgaW4gbWFueS1tYW55 DQo+ID4+IERQREsgYXBwcy4gT2YgY291cnNlLCBpdCByZW1vdmVzIHRoZSBoZWFkYWNoZSBmcm9t IERQREsgbWFpbnRhaW5lcnMsDQo+ID4+IGJ1dCBpdCBpcyBoYXJkbHkgZnJpZW5kbHkgdG8gRFBE SyBjb21tdW5pdHkgaW4gZ2VuZXJhbC4NCj4gPj4NCj4gPg0KPiA+IEZ1bGx5IGFncmVlIHdpdGgg eW91IHRoYXQgaWYgc29tZSBmZWF0dXJlIGlzIHVzZWQgYnkgbnVtYmVyIG9mDQo+ID4gYXBwbGlj YXRpb25zLCB0aGVuIGl0IGlzIGJldHRlciBvciBhdCBsZWFzdCBuaWNlciB0byBoYXZlIGl0IGlu IERQREssDQo+ID4gYnV0IG15IHF1ZXN0aW9uIGlzIHRoYXQsIHRoZSBjdXJyZW50IHBhdGNoIGlz IGZvciB0aGUgT1ZTIHVzZSBjYXNlDQo+ID4gZnJvbSBteSB1bmRlcnN0YW5kaW5nIGFuZCBub3Qg Y29uc2lkZXJpbmcgYW55IG90aGVyIGFwcGxpY2F0aW9uLiBTbywgaW4gdGhpcw0KPiBjYXNlIGRv IHdlIHdhbnQgaXQgaW4gRFBESz8NCj4gDQo+IFRoZSBwcmltYXJ5IGdvYWwsIGluIGZhY3QsIGlz IG91ciB0ZXN0aW5nIGhhcm5lc3MgOikgT3ZTIGlzIGp1c3QgYW4gb3BlbiBzb3VyY2UNCj4gZXhh bXBsZS4gV2UgY291bGQgZWFzaWx5IGFkZCBpdCB0byBvdXIgY29kZSBidXQgZGVjaWRlZCB0aGF0 IGl0IHdvdWxkIGJlIHVzZWZ1bA0KPiBpbiBEUERLIHNpbmNlIHNlZW4gc3VjaCBtZXNzYWdlcyBp biBPdlMgbG9ncy4NCj4gDQpQcml2YXRlIGFwcGxpY2F0aW9uIGFyZSBhbHNvIGdvb2QgZXhhbXBs ZXMgZnJvbSBteSBwb2ludCBvZiB2aWV3LiANCg0KPiA+Pj4+IC0gVGhlcmUncyBhY3Rpb24gRU5D QVAgd2hpY2ggYWxzbyBjYW4ndCBiZSBmdWxseSByZXByZXNlbnRlZCBieSB0aGUNCj4gPj4+PiB0 b29sIGluIHF1ZXN0aW9uLCBzaW1wbHkgYmVjYXVzZSBpdCBoYXMgbm8gcGFyYW1ldGVycy4gSW4g dGVzcG1kLA0KPiA+Pj4+IG9uZSBmaXJzdCBoYXMgdG8gaXNzdWUgInNldCB2eGxhbiIgY29tbWFu ZCB0byBjb25maWd1cmUgdGhlIGVuY2FwLg0KPiA+Pj4+IGhlYWRlciwgd2hpbHN0ICJ2eGxhbiIg dG9rZW4gaW4gdGhlIGZsb3cgcnVsZSBzdHJpbmcganVzdCByZWZlcnMgdG8NCj4gPj4+PiB0aGUg cHJldmlvdXNseSBzZXQgZW5jYXAuIHBhcmFtZXRlcnMuIFRoZSBzdWdnZXN0ZWQgZmxvdyBwcmlu dA0KPiA+Pj4+IGhlbHBlciBjYW4ndCByZWxpYWJseSBwcmludCB0aGVzZSB0d28gY29tcG9uZW50 cyAoInNldCB2eGxhbiIgYW5kDQo+ID4+Pj4gdGhlIGZsb3cgcnVsZSBpdHNlbGYpIGFzIHRoZXkg YmVsb25nIHRvIGRpZmZlcmVudCB0ZXN0cG1kIGNvbW1hbmQgc3RyaW5ncy4NCj4gPj4+Pg0KPiA+ Pj4gQWdhaW4sIEkgYWdyZWUgd2l0aCB5b3UgYnV0IGxpa2UgbXkgYWJvdmUgYW5zd2VyLCBkbyB3 ZSB3YW50IGENCj4gPj4+IHBhcnRpYWwgc29sdXRpb24gaW4gRFBESz8NCj4gPj4NCj4gPj4gTXkg YW5zd2VyIGlzIFlFUy4NCj4gPj4NCj4gPg0KPiA+IEkgY2FuIGxpdmUgd2l0aCBzdWNoIGRlY2lz aW9uIGJ1dCBsaWtlIEkgc2FpZCBhYm92ZSBpdCBkZXBlbmRzIG9uIHRoZQ0KPiA+IHVzZSBjYXNl IGFuZCBob3cgcGFydGlhbCBpdCBpcy4NCj4gDQo+IFNlZSBhYm92ZS4NCj4gDQo+ID4+Pj4gQXMg eW91IG1pZ2h0IHNlZSwgY29tcGxldGVuZXNzIG9mIHRoZSBzb2x1dGlvbiB3b3VsZG4ndCBuZWNl c3NhcmlseQ0KPiA+Pj4+IGJlIHJlYWNoYWJsZSwgZXZlbiBpZiBmdWxsIGl0ZW0vYWN0aW9uIGNv dmVyYWdlIHdhcyBwcm92aWRlZC4NCj4gPj4+Pg0KPiA+Pj4+IEFzIGZvciB0aGUgaXRlbS9hY3Rp b24gY292ZXJhZ2UgaXRzZWxmLCBpdCdzIHJhdGhlciBjb250cm92ZXJzaWFsLg0KPiA+Pj4+IE9u IHRoZSBvbmUgaGFuZCwgeWVzLCB3ZSBzaG91bGQgcHJvYmFibHkgdHJ5IHRvIGNvdmVyIG1vcmUg aXRlbXMNCj4gPj4+PiBhbmQgYWN0aW9ucyBpbiB0aGUgc3VnZ2VzdGVkIHBhdGNoLCB0byB0aGUg ZXh0ZW50IGFsbG93ZWQgYnkgb3VyDQo+ID4+Pj4gY3VycmVudCBwcmlvcml0aWVzLiBCdXQgb24g dGhlIG90aGVyIGhhbmQsIHRoZSBleGlzdGluZyBjb3ZlcmFnZQ0KPiA+Pj4+IG1pZ2h0IG5vdCBi ZSB0aGF0IHBvb3I6IGl0J3MgZmFpcmx5IGVsYWJvcmF0ZSBhbmQgYXQgbGVhc3QgYWxsb3dzDQo+ ID4+Pj4gdG8gcHJpbnQgdGhlIG1vc3QgY29tbW9uIGZsb3cgcnVsZXMuDQo+ID4+Pj4NCj4gPj4+ IFRoYXQgaXMgbXkgbWFpbiBpc3N1ZSB5b3UgYXJlIGdvaW5nIHRvIHB1c2ggc29tZXRoaW5nIHRo YXQgaXMgZ29vZA0KPiA+Pj4gZm9yIHlvdSBhbmQgbWF5YmUgc29tZSBvdGhlciBjYXNlcywgYnV0 IGl0IGNhbid0IGJlIHVzZWQgYnkgYWxsDQo+ID4+PiBhcHBsaWNhdGlvbiwgZXZlbiB3aXRoIHRo ZSBtb3N0IGJhc2ljIGNvbW1hbmRzIGxpa2UgZW5jYXAuDQo+ID4+DQo+ID4+IElzbid0IGl0IGZh aXI6IGlmIG9uZSB3YW50cyB0byB1c2Ugc29tZXRoaW5nLCBiZSByZWFkeSB0byBoZWxwIGFuZA0K PiA+PiBleHRlbmQgaXQuIE5vIHBhaW4sIG5vIGdhaW4gOikgSm9rZXMgYXNpZGUgLSB3ZSdyZSBy ZWFkeSB0byBzdXBwb3J0DQo+ID4+ICJ0aGUgbW9zdCBiYXNpYyBjb21tYW5kcyIsIGp1c3QgbGlz dCBpdCwgYnV0IGRvIG5vdCBzYXkgZXZlcnl0aGluZyBpcw0KPiA+PiBiYXNpYy4gImV2ZXJ5dGhp bmciIHdpbGwgZGVsYXkgdGhlIGZlYXR1cmUgYW5kIHNpbXBseSB1bmZhaXIgdG8gZGVtYW5kDQo+ IChJTUhPKS4NCj4gPj4NCj4gPj4gSU1ITywgdGhlIGZlYXR1cmUgd291bGQgbWFrZSBmbG93IEFQ SSBtb3JlIGZyaWVuZGx5IGFuZCBlYXNpZXIgdG8NCj4gPj4gZGVidWcsIHJlcG9ydCBidWdzIGV0 Yy4NCj4gPj4NCj4gPiBJIGZ1bGx5IGFncmVlIHRoYXQgaWYgc29tZW9uZSB3YW50cyBmdW5jdGlv bmFsaXR5LCBoZSBzaG91bGQgd29yayBmb3IgaXQuDQo+ID4gQnV0IGFzIGEgZGV2ZWxvcGVyIG9m IHJ0ZV9mbG93IGFuZCBtYWludGFpbmVyIEkgbmVlZCB0byBhc2sgd2hvIHdpbGwNCj4gPiBhZGQg dGhlIG5ldyBmZWF0dXJlcy9taXNzaW5nIGZlYXR1cmVzPyBTaG91bGQgd2UgZW5mb3JjZSB0aGF0 IGVhY2gNCj4gPiBkZXZlbG9wZXIgd2hlbiBjb2RpbmcgYSBuZXcgaXRlbS9hY3Rpb24gd2lsbCBh ZGQgaXQgdG8gdGhlIHByaW50Pw0KPiA+IE9yIGp1c3QgdXNlcnMgdGhhdCBjYXJlIGFib3V0IHN1 Y2ggbG9nIHdpbGwgYWRkIGl0Pw0KPiANCj4gSXQgaXMgYSBnb29kIGFuZCB2YWxpZCBxdWVzdGlv bnMuIEZpcnN0IG9mIGFsbCB3ZSBjYW4gaGVscCB3aXRoIChvciBqdXN0IGNvbXBsZXRlbHkNCj4g dGFrZSBpdCkgdG8gbWFpbnRhaW4gdGhlIGZpbGUuDQoNClRoZSBpc3N1ZSBpcyBub3QgdGhlIG1h aW50YWluaW5nIG9mIHRoZSBmaWxlIGlzIHRoZSBleHRyYSB3b3JrIHJlcXVpcmVkIGZvciBlYWNo IG5ldyBmZWF0dXJlLg0KYW5kIHdoYXQgZG8gd2UgZG8gd2l0aCBmZWF0dXJlcyB0aGF0IGFyZSBo YXJkIHRvIHByaW50IGZvciBleGFtcGxlIGVuY2FwIGRhdGE/DQoNCj4gU2Vjb25kIGJhc2ljYWxs eSBhbnkgb3B0aW9uIGZyb20gYWJvdmUgaXMgT0sgZm9yIG1lLg0KPiBNeSBwZXJzb25hbCBwcmVm ZXJlbmNlIHdvdWxkIGJlIHRvIHJlcXVpcmUgaW1wbGVtZW50YXRpb24gZm9yIG5ldyBSVEUgZmxv dw0KPiBmZWF0dXJlcy4gSW4gZmFjdCwgdGVzdHBtZCBtYXkgc3RhcnQgdG8gdXNlIGl0IHRvIGxp c3QgY3JlYXRlZCBydWxlcyBldGMuDQo+IFdlJ2xsIHRyeSB0byBtYWtlIGl0IGVhc2llciB0byBh ZGQgbmV3IGl0ZW1zIGFuZCBhY3Rpb25zIHN1cHBvcnQuDQo+IA0KSSBhbHNvIHRoaW5rIHRoYXQg dGhlIGJlc3QgaXMgdGhhdCBhbGwgbmV3IGZlYXR1cmVzIHdpbGwgYmUgYWRkZWQgdG8gdGhpcyBw cmludA0KYnV0IHRoZSByZXF1aXJlbWVudCBpcyB0aGF0IGFkZGluZyBuZXcgdGhpcyBjb2RlIHdp bGwgbm90IGhhdmUgaGlnaCBvdmVyaGVhZC4NCklmIHdlIGNhbiBmaW5kIGFuZCBlYXN5IHdheSB0 byBkbyBpdCwgSSB0aGluayB0aGlzIHdpbGwgYmUgcGVyZmVjdC4NCg0KPiA+IFRvIHN1bW1hcml6 ZS4NCj4gPiBJIHRoaW5rIHRoZSBmb2xsb3dpbmcgcXVlc3Rpb24gbXVzdCBiZSBhbnN3ZXIgYmVm b3JlIGRlY2lkaW5nOg0KPiA+IDEuIGhvdyBtYW55IGFwcHMgYXJlIGdvaW5nIHRvIHVzZSB0aGlz IGZlYXR1cmU/DQo+IA0KPiBJJ2xsIGtlZXAgT3ZTIG1haW50YWluZXJzIHRvIGFuc3dlciBpZiBP dlMgd291bGQgbGlrZSB0byB1c2UgaXQuIFdlJ2xsIGRlZmluaXRlbHkNCj4gdXNlIGl0IChlaXRo ZXIgZnJvbSBEUERLIG9yIGZyb20gaW50ZXJuYWwgY29kZSBiYXNlIGlmIGl0IGlzIG5vdCBhY2Nl cHRlZCksIGJ1dCBJDQo+IGd1ZXNzIG5vdCBvcGVuIHNvdXJjZSBwcm9qZWN0cyBtYXkgYmUgbm90 IHRha2VuIGludG8gYWNjb3VudC4NCj4gDQpBZ3JlZSBsZXRzIHNlZSB0aGUgYXBwbGljYXRpb24g cHJvZ3JhbW1lcnMgdmlldyBwb2ludCBvbiB0aGlzLg0KDQo+ID4gMi4gaXQgdGhlIGNvdmVyYWdl IHN1ZmZpY2llbnQ/DQo+IA0KPiBJIGhvcGUgeWVzLCBzaW5jZSBpdCB0cmllcyB0byB3YXJuIGFi b3V0IG5vdCBzdXBwb3J0ZWQgZmVhdHVyZXMuIEkuZS4gaXQgZG9lcyBub3QgbGllDQo+IHNpbXBs eSBza2lwcGluZyBub3Qgc3VwcG9ydGVkIGJpdHMuDQo+IA0KDQpCdXQgdGhlbiB5b3UgY2FuJ3Qg Y29weSBwYXN0ZSBpdCB0byB0ZXN0cG1kIGFuZCB0ZXN0LCB3aGljaCBJIHRoaW5rIGlzIGEgdmVy eSBnb29kDQp3aHkgdG8gZGVidWcgaXNzdWVzIHRoYXQgY29zdHVtZXJzIG1heSBmaW5kLg0KDQo+ ID4gMy4gd2hvIGlzIHJlc3BvbnNpYmxlIHRvIHVwZGF0ZSBpdD8gKGVhY2ggZGV2ZWxvcGVyL3Ro ZSBpbnRlcmVzdGVkDQo+ID4gcGFydHkgbWVtYmVyPykNCj4gDQo+IFNlZSBhYm92ZS4NCj4gDQo+ IEkgaG9wZSB0byBzZWUgbW9yZSBhbnN3ZXJzIGhlcmUuDQo+IA0KKzENCg0KQmVzdCwNCk9yaQ0K DQo+IFdlJ2xsIHVwZGF0ZSBpdCB3aGVuIHdlIG5lZWQgbW9yZSBpdGVtcy9hY3Rpb25zIHRvIGR1 bXAuDQo+IA0KPiBUaGFua3MsDQo+IEFuZHJldy4NCj4gDQo+ID4gQmVzdCwNCj4gPiBPcmkNCj4g Pg0KPiA+Pj4+IFllcywgbWFjcm9zIGFuZCBzb21lIG90aGVyIGN1bm5pbmcgd2F5cyB0byBjb3Zl ciBtb3JlIGZsb3cNCj4gPj4+PiBzcGVjaWZpY3MgbWlnaHQgY29tZSBpbiBoYW5keSwgYnV0LCBh dCB0aGUgc2FtZSB0aW1lLCBjYW4gYmUgcmF0aGVyIGVycm9yDQo+IHByb25lLg0KPiA+Pj4+IFNv bWV0aW1lcyBpdCdzIG1vcmUgcm9idXN0IHRvIGp1c3Qgd3JpdGUgdGhlIGNvZGUgb3V0IGluIGZ1 bGwuDQo+ID4+Pj4NCj4gPj4+IEknbSBhbHdheXMgaW4gZmF2b3Igb2YgZWFzeSBvZiBleHRyYSBj b21wbGV4IGJ1dCB0b28gaGFyZCBpcyBhbHNvIG5vdCBnb29kLg0KPiA+Pj4NCj4gPj4+IFRoYW5r cywNCj4gPj4+IE9yaQ0KPiA+Pj4+IFRoYW5rIHlvdS4NCj4gPj4+Pg0KPiA+Pj4+IE9uIDMwLzA1 LzIwMjEgMTA6MjcsIE9yaSBLYW0gd3JvdGU6DQo+ID4+Pj4+IEhpIEl2YW4sDQo+ID4+Pj4+DQo+ ID4+Pj4+IEZpcnN0IG5pY2UgaWRlYSBhbmQgdGhhbmtzIGZvciB0aGUgcGlja2luZyB1cCB0aGUg YmFsbC4NCj4gPj4+Pj4NCj4gPj4+Pj4gQmVmb3JlIGEgZGV0YWlsIHJldmlldywNCj4gPj4+Pj4g VGhlIG1haW4gdGhpbmcgSSdtIGNvbmNlcm5lZCBhYm91dCBpcyB0aGF0IHRoaXMgcHJpbnQgd2ls bCBiZQ0KPiA+Pj4+PiBwYXJ0aWFsbHkNCj4gPj4+PiBzdXBwb3J0ZWQsDQo+ID4+Pj4+IEkga25v dyB0aGF0IHlvdSBjb3ZlcmVkIHRoaXMgaXNzdWUgYnkgcHJpbnRpbmcgdW5rbm93biBmb3INCj4g Pj4+Pj4gdW5zdXBwb3J0ZWQNCj4gPj4+PiBpdGVtL2FjdGlvbnMsDQo+ID4+Pj4+IGJ1dCB0aGlz IHdpbGwgbWVhbiB0aGF0IGl0IGlzIGVub3VnaCB0aGF0IG9uZSBpdGVtL2FjdGlvbiBpcyBub3QN Cj4gPj4+Pj4gc3VwcG9ydGVkDQo+ID4+Pj4gYW5kIGFscmVhZHkgdGhlDQo+ID4+Pj4+IGZsb3cg Y2FuJ3QgYmUgdXNlZCBpbiB0ZXN0cG1kLg0KPiA+Pj4+PiBUbyBnZXQgZnVsbCBzdXBwb3J0IGl0 IG1lYW5zIHRoYXQgdGhlIGRldmVsb3BlciBuZWVkcyB0byBhZGQgc3VjaA0KPiA+Pj4+PiBwcmlu dA0KPiA+Pj4+IHdpdGggZWFjaCBuZXcNCj4gPj4+Pj4gaXRlbS9hY3Rpb24uIEkgYWdyZWUgaXQg aXMgcG9zc2libGUsIGJ1dCBpdCBoYXMgaGlnaCBvdmVyaGVhZCBmb3INCj4gPj4+Pj4gZWFjaA0K PiA+PiBmZWF0dXJlLg0KPiA+Pj4+Pg0KPiA+Pj4+PiBNYXliZSB3ZSBzaG91bGQgc29tZWhvdyBj cmVhdGUgYSBtYWNyb3MgZm9yIHRoZSBwcmludHMgb3Igb3RoZXINCj4gPj4+Pj4gZWFzaWVyDQo+ ID4+Pj4gdG8gc3VwcG9ydCB3YXlzLg0KPiA+Pj4+Pg0KPiA+Pj4+PiBGb3IgZXhhbXBsZSwganVz dCBwcmludGluZyB0aGUgaXB2NCBoYXMgNyBmdW5jdGlvbiBjYWxscyBpbnNpZGUgb2YNCj4gPj4+ Pj4gaXQgZWFjaCBvbmUNCj4gPj4+PiB3aXRoIGVycm9yIGNoZWNraW5nLA0KPiA+Pj4+PiBhbmQg SSdtIG5vdCBjb3VudGluZyB0aGUgZGVkaWNhdGVkIGZ1bmN0aW9ucy4NCj4gPj4+Pj4NCj4gPj4+ Pj4NCj4gPj4+Pj4NCj4gPj4+Pj4gQmVzdCwNCj4gPj4+Pj4gT3JpDQo+ID4+Pj4+DQo+ID4+Pj4+ DQo+ID4+Pj4+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+Pj4+Pj4gRnJvbTogSXZh biBNYWxvdiA8aXZhbi5tYWxvdkBva3RldGxhYnMucnU+DQo+ID4+Pj4+PiBTZW50OiBUaHVyc2Rh eSwgTWF5IDI3LCAyMDIxIDExOjI1IEFNDQo+ID4+Pj4+PiBUbzogZGV2QGRwZGsub3JnDQo+ID4+ Pj4+PiBDYzogTkJVLUNvbnRhY3QtVGhvbWFzIE1vbmphbG9uIDx0aG9tYXNAbW9uamFsb24ubmV0 PjsgRmVycnVoDQo+ID4+Pj4gWWlnaXQNCj4gPj4+Pj4+IDxmZXJydWgueWlnaXRAaW50ZWwuY29t PjsgQW5kcmV3IFJ5YmNoZW5rbw0KPiA+Pj4+Pj4gPGFuZHJldy5yeWJjaGVua29Ab2t0ZXRsYWJz LnJ1PjsgT3JpIEthbSA8b3Jpa2FAbnZpZGlhLmNvbT47IFJheQ0KPiA+Pj4+Pj4gS2luc2VsbGEg PG1kckBhc2hyb2UuZXU+OyBOZWlsIEhvcm1hbiA8bmhvcm1hbkB0dXhkcml2ZXIuY29tPg0KPiA+ Pj4+Pj4gU3ViamVjdDogW1JGQyBQQVRDSF0gZXRoZGV2OiBhZGQgc3VwcG9ydCBmb3IgdGVzdHBt ZC1jb21wbGlhbnQNCj4gPj4+Pj4+IGZsb3cNCj4gPj4+PiBydWxlDQo+ID4+Pj4+PiBkdW1waW5n DQo+ID4+Pj4+Pg0KPiA+Pj4+Pj4gRFBESyBhcHBsaWNhdGlvbnMgKGZvciBleGFtcGxlLCBPdlMp IG9yIHRlc3RzIHdoaWNoIHVzZSBSVEUgZmxvdw0KPiA+Pj4+Pj4gQVBJDQo+ID4+Pj4gbmVlZCB0 bw0KPiA+Pj4+Pj4gbG9nIGNyZWF0ZWQgb3IgcmVqZWN0ZWQgZmxvdyBydWxlcyB0byBoZWxwIHRv IHJlY29nbmlzZSB3aGF0IGdvZXMNCj4gPj4+Pj4+IHJpZ2h0IG9yIHdyb25nLiBGcm9tIHRoaXMg c3RhbmRwb2ludCwgdGVzdHBtZC1jb21wbGlhbnQgZm9ybWF0IGlzDQo+ID4+Pj4+PiBuaWNlIGZv ciB0aGUgcHVycG9zZSBiZWNhdXNlIGl0IGFsbG93cyB0byBjb3B5LXBhc3RlIHRoZSBmbG93DQo+ ID4+Pj4+PiBydWxlcyBhbmQgZGVidWcgdXNpbmcgdGVzdHBtZC4NCj4gPj4+Pj4+DQo+ID4+Pj4+ PiBSZWNvZ25pc2FibGUgcGF0dGVybiBpdGVtczoNCj4gPj4+Pj4+IFZPSUQsIFZGLCBQRiwgUEhZ X1BPUlQsIFBPUlRfSUQsIEVUSCwgVkxBTiwgSVBWNCwgSVBWNiwgVURQLCBUQ1AsDQo+ID4+Pj4g VlhMQU4sDQo+ID4+Pj4+PiBOVkdSRSwgR0VORVZFLCBNQVJLLCBQUFBPRVMsIFBQUE9FRC4NCj4g Pj4+Pj4+DQo+ID4+Pj4+PiBSZWNvZ25pc2FibGUgYWN0aW9uczoNCj4gPj4+Pj4+IFZPSUQsIEpV TVAsIE1BUkssIEZMQUcsIFFVRVVFLCBEUk9QLCBDT1VOVCwgUlNTLCBQRiwgVkYsDQo+ID4+Pj4g UEhZX1BPUlQsDQo+ID4+Pj4+PiBQT1JUX0lELCBPRl9QT1BfVkxBTiwgT0ZfUFVTSF9WTEFOLCBP Rl9TRVRfVkxBTl9WSUQsDQo+ID4+Pj4+PiBPRl9TRVRfVkxBTl9QQ1AsIFZYTEFOX0VOQ0FQLCBW WExBTl9ERUNBUC4NCj4gPj4+Pj4+DQo+ID4+Pj4+PiBSZWNvZ25pc2FibGUgUlNTIHR5cGVzIChh Y3Rpb24gUlNTKToNCj4gPj4+Pj4+IElQVjQsIEZSQUdfSVBWNCwgTk9ORlJBR19JUFY0X1RDUCwg Tk9ORlJBR19JUFY0X1VEUCwNCj4gPj4+Pj4+IE5PTkZSQUdfSVBWNF9PVEhFUiwgSVBWNiwgRlJB R19JUFY2LCBOT05GUkFHX0lQVjZfVENQLA0KPiA+Pj4+Pj4gTk9ORlJBR19JUFY2X1VEUCwgTk9O RlJBR19JUFY2X09USEVSLCBJUFY2X0VYLA0KPiA+PiBJUFY2X1RDUF9FWCwNCj4gPj4+Pj4+IElQ VjZfVURQX0VYLCBMM19TUkNfT05MWSwgTDNfRFNUX09OTFksIEw0X1NSQ19PTkxZLA0KPiA+Pj4+ IEw0X0RTVF9PTkxZLg0KPiA+Pj4+Pj4NCj4gPj4+Pj4+IFVucmVjb2duaXNlZCBwYXJ0cyBvZiB0 aGUgZmxvdyBzcGVjaWZpY2F0aW9uIGFyZSByZXByZXNlbnRlZCBieQ0KPiA+Pj4+Pj4gdG9rZW5z ICJ7dW5rbm93bn0iIGFuZCAie3Vua25vd24gYml0c30iLiBJbnRlcmVzdGVkIHBhcnRpZXMgYXJl DQo+ID4+Pj4+PiB3ZWxjb21lIHRvIGV4dGVuZCB0aGlzIHRvb2wgdG8gcmVjb2duaXNlIG1vcmUg aXRlbXMgYW5kIGFjdGlvbnMuDQo+ID4+Pj4+Pg0KPiA+Pj4+Pj4gU2lnbmVkLW9mZi1ieTogSXZh biBNYWxvdiA8aXZhbi5tYWxvdkBva3RldGxhYnMucnU+DQoNCg==