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 BC514A034F; Sun, 3 Oct 2021 13:01:32 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 54A1541238; Sun, 3 Oct 2021 13:01:32 +0200 (CEST) Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2067.outbound.protection.outlook.com [40.107.244.67]) by mails.dpdk.org (Postfix) with ESMTP id BB1CE4122F for ; Sun, 3 Oct 2021 13:01:30 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=JhSVXKXnk7ZF4XXkDuw/KdHviz1YmMTS6M6dWWrLAqDfHqpPOYbKC0Ht3TybC1PYEBtaG9d7zx7FzTUtccoNUUPMzGyUTuo80Z9OV2XQ4/k4HOMQ6HRL857LdWoyuVovWEzAHVI/blEFEfCaVgN8bSHxIAiBez6/oh7WLWc1nup4UVQEyCvji1ZnRQqey2ssRxAj8SKVGc9r33IbfJO12FaSewVP7/T70reEBVrm9rLdwJq/E4cGJIwA3ZqYD2huDzJEClTxMlS2HSdJ3CaAIOtP4vYAUed8NdTfsPyFEsAux9/XWgR7+P8Oea8CEPooHbPyt785WnOdVpPkHMM6LA== 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=XQ1K/hiQBpSxNZZ5MHYrqkAlOzY/071KKg3Tgh3wF8w=; b=TxgW/cUp9scBeO8NjQaT1Ugg489TeoVXZA3+pMoNWTrlylbP13d4svSGCpaGTtIT2BmQHD4n7j8rODl3Dp0dQDwo+Uy5t2a4kKM9PrnwLWOX6TuUDBEc79fL7r4RqyiNGyKzmnerbZqMfl3zDTPRgT/VEiUjit6W0f6wLC+LtN0fiabfRaw/mDUnz7GirWb4RlVHRfcz/72w8Et+SC+fvC6Sf7z0CqG1PvmX5necZb0FarId0JaEMzvU7HgYE0RBjjgMrCRKUYNGflZrGWLVxe+u2UVylL3EUc0rSbMu8yjvdQZbLt6vcsk7DuEbyZhmDPdubEifV5CYZcMWRpCeeg== 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=XQ1K/hiQBpSxNZZ5MHYrqkAlOzY/071KKg3Tgh3wF8w=; b=ovNnO+2xD5fHPyzJQZYzVKo1dheTwvC0PL7Fu++xtgdDQ2csM7zyOLd87zXhFV2EXszUSbc8E5v4QVurAcQ5y3wjqkpcKhU6ktO+tMwGF33f4fH90VJHk4QiyE4DgNK1gN+fi58MO3cnxutKGiWB9lFol5FONTbYw0qZjcd9cRQwYev5+0BRK+NpYT66yfNyccalnZq35RPeQLLDaYSvIiCOrYERqIwQkdkTX7w+WdJTIn+suXGHaDgEUuJjAAVJ/yn3ZVKmOp/1Dqa23rZL0ZPKf6bkDySzDt07/bmrYcpOh7MTZYTWRVGzlIq9UJeLq/S8/ebS2azh2e1Ed6kjTg== Received: from DM8PR12MB5400.namprd12.prod.outlook.com (2603:10b6:8:3b::12) by DM4PR12MB5328.namprd12.prod.outlook.com (2603:10b6:5:39f::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4566.13; Sun, 3 Oct 2021 11:01:28 +0000 Received: from DM8PR12MB5400.namprd12.prod.outlook.com ([fe80::d03d:1f75:ca20:6a32]) by DM8PR12MB5400.namprd12.prod.outlook.com ([fe80::d03d:1f75:ca20:6a32%5]) with mapi id 15.20.4566.022; Sun, 3 Oct 2021 11:01:28 +0000 From: Ori Kam To: Ivan Malov , Andrew Rybchenko , "dev@dpdk.org" CC: Andy Moreton , Ray Kinsella , Jerin Jacob , Wisam Monther , Xiaoyun Li , NBU-Contact-Thomas Monjalon , Ferruh Yigit Thread-Topic: [PATCH v3 1/5] ethdev: add API to negotiate delivery of Rx meta data Thread-Index: AQHXsG0EGYKwxu5FGk6rpb3sj4WbEKu8simggABJ14CAAMRGAIADKRXQgAAoU4CAAA0j8A== Date: Sun, 3 Oct 2021 11:01:28 +0000 Message-ID: References: <20210902142359.28138-1-ivan.malov@oktetlabs.ru> <20210923112012.14595-1-ivan.malov@oktetlabs.ru> <20210923112012.14595-2-ivan.malov@oktetlabs.ru> <6e9703ae-9fe0-2656-c08f-da95e44bcdeb@oktetlabs.ru> In-Reply-To: <6e9703ae-9fe0-2656-c08f-da95e44bcdeb@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: 3977f51a-de94-4a3c-5fb7-08d9865d26b9 x-ms-traffictypediagnostic: DM4PR12MB5328: 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:949; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: j1ac7/GHUXvUydar9SHosONvwb1pg92+qh723DHhWknit64AteVTe5w69OJ0HJr3828JcyelZqUH328YrTRlvZKuvgr3azjS/jiRR4ePRK8m4hOwPWzGAfRStUKhkFR3Il1/KRSZAnwn1LrAJI/5/FjexWiaCgKU5kUXoJQGmPVdzK6B6OmUfPIAs3wQEoHX1U+UApz7KLRlXhS4+nsFXrPdStO8eYUV3/viN0f0wKlqFsbVYKghsLIHa7/OQ+vJL/73J13xEK6r/CgcjNKRa7joSlCVZ5b++PAXVVKnpWkAVAT0EELQq0HVxZoC9+cst9FvGI42YLVOBd724XK52z65+GlJ1cFqgXDRj9IgQvmuxygp9SNYdFsW7SEVNCjRmURwD+svAH8Pcvvz6YS9yJFrFmc9KTmDdMF93lSuIWcIIRnCboukxqvNYw3Xn1yuDuSBtVOYYRqbwVBOKtbEyuKb1Qe8MFKz/Cx+3CN0xFpgyF1vjT/55sC9EobVnxlgoAgD2Mpra6loWx/teiJ5G2+AQxm6jPoigk/E68bOmlwa6rE/l3ndOnzIzGZEA3be20StYO4hb49mW+bnsXLnu8d+B6aY6hx7uAe6YsFnvdKhp/xkLWCoxppgVB4ROqBiQ7/4YEopXXZoSqRffciCacNOsAsTOF8WgGJXxYK6hs1Qi3Up8CVee8/j/UP56BX3ZXEpD35BqEMaW655anijRdU2OgfrHUINMGaUCDDsXyCKGEfRvLlArg7Fo+HYru+GEVxYJqmwWZCRR/T5Bo+y9UG/vBkQpBdaTXn4hGWikj8= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM8PR12MB5400.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(9686003)(186003)(66556008)(66476007)(71200400001)(55016002)(30864003)(5660300002)(8676002)(64756008)(66446008)(33656002)(38070700005)(966005)(122000001)(8936002)(38100700002)(76116006)(52536014)(66946007)(53546011)(83380400001)(110136005)(4326008)(316002)(86362001)(508600001)(7696005)(2906002)(54906003)(6506007)(579004); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?VUQxUHFhMDNQeWF4TDlnbEZxNU81OUxTMWs3M1pTa0labm9LbFFNUnN3ZW1s?= =?utf-8?B?N0xZT3ZFUTFHck9QWDlvWkIzT3NOby9zSEN1YnI1VThhMUNvL05kU1phQ3gv?= =?utf-8?B?M3VESEJvUnZ1OFRVTURyek9jZjM5WkVwZFp0Mkd3bVNiWlIrWGZYMnlWMmJB?= =?utf-8?B?RVlINGF2Q0xXS1ljdkxaRzRCWC9KK3g0dU4venVrZndHWm90emllbXFBSmUz?= =?utf-8?B?d0t0Tis2b0xGY2I5RkU5dUt5ZTNMV2I3elNzbzc3T0VZbklZby9qTVp0R3l4?= =?utf-8?B?RE50Tk1odUxWZXZBUG96K2padlErUldXcWFSejVoR0FjOUhQRzNvcFdMNGc5?= =?utf-8?B?S21NenJFNi9ndGNHc1pvRThpMGN6cE1zcjRCS3lFTWg1TjYvbE1RdmtibTlY?= =?utf-8?B?Smk3VTgxYkxBSDZSd2FLeFdPWDdDWmd0eHQ2bkhtYkVrN3dYSDBSb2ROL1po?= =?utf-8?B?cXpuTGc1L0hjRk1uSE5yeEdXTFpPZ1I1ZnlLc3gxT0pDMWtPSklyS2lEb2lL?= =?utf-8?B?ZDBxc1ppR0pTaTFEV1N0SHB0eSs1S1VMM3V1OXRvem1UYSttaFR3d3dHUGRG?= =?utf-8?B?a1J3dTA5K2QvSEN6bnRsRFpHQmNUakFQRHBWUWxhR2Q0SENTaXVKb09Ra2Yv?= =?utf-8?B?dGM2OHA2a3Z5VEVOYWJSZFM3amp5Tk9xTVBRRXhkbU1tS0prSmFZMXhWdXhB?= =?utf-8?B?VFMyZzR3eUx1SzBVSFBYRjZaMVk5ZllzRXdESGRicldXeDJYejRvUFJRaXhG?= =?utf-8?B?N09WT1V5aFYzRG4rNmRoaVdoS2JTVTFwckF5dFEzQkJHWXBOZ3lwVzlSN2ho?= =?utf-8?B?ckpSZjNBZnlyaDhIWC81V1hMSnVmTmZwMU1VUEhoSkZJSzlNYUFsVzZ1dWUr?= =?utf-8?B?YVRHUmlMUUVoNys4T3YrVmNkRkJ3eGZ2VzZTZDBMTTR2dXNPbmJOK0hRN3Jh?= =?utf-8?B?eUVodzZYL3F4Q3BtMktGWWJPWkI4TzlWd1Q1MzNMZHBkemtIT05hNW1HdTVN?= =?utf-8?B?bW5tOXNqZlNiMmwrMGRvdDI1Z1VhWGxHUEV1S0VHaXVGc1FadHhjV0s0c1c1?= =?utf-8?B?ZDh1SU1JZFJpZE9GSU9oRG80M25SbThQbTVDZEZkci9xZnlZNU1XbVEvdVEr?= =?utf-8?B?cG4xZTlQMzhZbzRNcUlmQ0Y3V3RxbmVJWEg0NGYwNUNWYnFGNjNDQ0hGZ3FX?= =?utf-8?B?dWcxZzg1bjNnY1FYdEkwdDdReWdVK0hDVFJGdkZ4Q2EwTmlhOFF0WkxUcmJ2?= =?utf-8?B?empHMWJkc3hwY0VmS1djNFBZckoxWS9DU3ZDbUR2M3hUdFM2QUV1QzlDUEl1?= =?utf-8?B?OCtWUVNyWTg4V25kTnRWWmlHYk9BZE1hSFhNSEFON3hTNzZld2s5VFRLSTBk?= =?utf-8?B?dTVETzdlcnlzU05KTDJROTRVUG9LTmdmdW80Y01CTytBbFQ3a1I2azJJQUZF?= =?utf-8?B?ODkvdnBOU21IQ0tqZ3BGcmhKdjlFbWV2bmQvb0FRZHFxaHkvRTFBYnVEaDZR?= =?utf-8?B?dm5xbTFrdHpSMU5LckxnbGhXQXlSaVFXTVpWSlJzYWRXeU94aUUwVWZZNXNt?= =?utf-8?B?amtQOGxSZVB2NXNrQkNyN3J2TVAxR0RSVXBIZnpVR3p4a29rRWQ4RWNScExi?= =?utf-8?B?UmdlRXl1RkNZQjNRU1d2WmN6cE9OazlrcVBHZ2RjK3ovenVnZGU4VDIwaWYr?= =?utf-8?B?NHBuVGN0Q1BHamdrOEFlTjdydVVxVS9wY0JwQ3Jjc1JIRWx4cC9Oa09zSFN0?= =?utf-8?B?M3NjWVlvSm1mNW1hTTBIU0t2YzB3UHZkMk55aytabXlsK0hxbXFSY0thSWow?= =?utf-8?B?OE9SZUljdFJDMktqa20zeklhMzdzbHhnNTJlYlVucHJnWjdWeHNhUlhUNFdB?= =?utf-8?Q?5DKDcNNaPuchU?= 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: DM8PR12MB5400.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3977f51a-de94-4a3c-5fb7-08d9865d26b9 X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Oct 2021 11:01:28.8712 (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: 4DfIVQHG6+vQi2EP2L+E7XoZZa64zDmYfjwbNFe77y5tmRwU5NQe3Ge6C//Ir5WGtgfCeYH/MwokxxpuNaP4Xg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB5328 Subject: Re: [dpdk-dev] [PATCH v3 1/5] ethdev: add API to negotiate delivery of Rx meta data 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" SGkgSXZhbiwNCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBJdmFuIE1h bG92IDxJdmFuLk1hbG92QG9rdGV0bGFicy5ydT4NCj4gU2VudDogU3VuZGF5LCBPY3RvYmVyIDMs IDIwMjEgMTI6MzAgUE0NCj4gZGF0YQ0KPiANCj4gSGkgT3JpLA0KPiANCj4gVGhhbmtzIGZvciBy ZXZpZXdpbmcgdGhpcy4NCj4gDQoNCk5vIHByb2JsZW0uDQoNCj4gT24gMDMvMTAvMjAyMSAxMDo0 MiwgT3JpIEthbSB3cm90ZToNCj4gPiBIaSBBbmRyZXcgYW5kIEl2YW4sDQo+ID4NCj4gPg0KPiA+ PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+PiBGcm9tOiBBbmRyZXcgUnliY2hlbmtv IDxhbmRyZXcucnliY2hlbmtvQG9rdGV0bGFicy5ydT4NCj4gPj4gU2VudDogRnJpZGF5LCBPY3Rv YmVyIDEsIDIwMjEgOTo1MCBBTQ0KPiA+PiBTdWJqZWN0OiBSZTogW1BBVENIIHYzIDEvNV0gZXRo ZGV2OiBhZGQgQVBJIHRvIG5lZ290aWF0ZSBkZWxpdmVyeSBvZg0KPiA+PiBSeCBtZXRhIGRhdGEN Cj4gPj4NCj4gPj4gT24gOS8zMC8yMSAxMDowNyBQTSwgSXZhbiBNYWxvdiB3cm90ZToNCj4gPj4+ IEhpIE9yaSwNCj4gPj4+DQo+ID4+PiBPbiAzMC8wOS8yMDIxIDE3OjU5LCBPcmkgS2FtIHdyb3Rl Og0KPiA+Pj4+IEhpIEl2YW4sDQo+ID4+Pj4gU29ycnkgZm9yIGp1bXBpbmcgaW4gbGF0ZS4NCj4g Pj4+DQo+ID4+PiBObyB3b3JyaWVzLiBUaGF0J3MgT0suDQo+ID4+Pg0KPiA+Pj4+IEkgaGF2ZSBh IGNvbmNlcm4gdGhhdCB0aGlzIHBhdGNoIGJyZWFrcyBvdGhlciBQTURzLg0KPiA+Pj4NCj4gPj4+ IEl0IGRvZXMgbm8gc3VjaCB0aGluZy4NCj4gPj4+DQo+ID4+Pj4+ICBGcm9tIHRoZSByc3QgZmls ZSAiIE9uZSBzaG91bGQgbmVnb3RpYXRlIGZsYWcgZGVsaXZlcnkgYmVmb3JlaGFuZCINCj4gPj4+ PiBzaW5jZSB5b3Ugb25seSBhZGRlZCB0aGlzIGZ1bmN0aW9uIGZvciB5b3VyIFBNRCBhbGwgb3Ro ZXIgUE1EIHdpbGwgZmFpbC4NCj4gPj4+PiBJIHNlZSB0aGF0IHlvdSBhZGRlZCBleGNlcHRpb24g aW4gdGhlwqAgZXhhbXBsZXMsIGJ1dCBpdCBkb2Vzbid0DQo+ID4+Pj4gbWFrZSBzZW5zZSB0aGF0 IGFwcGxpY2F0aW9ucyB3aWxsIGFsc28gbmVlZCB0byBhZGQgdGhpcyBleGNlcHRpb24NCj4gPj4+ PiB3aGljaCBpcyBub3QgZG9jdW1lbnRlZC4NCj4gPj4+DQo+ID4+PiBTYXksIHlvdSBoYXZlIGFu IGFwcGxpY2F0aW9uLCBhbmQgeW91IHVzZSBpdCB3aXRoIHNvbWUgc3BlY2lmaWMgUE1ELg0KPiA+ Pj4gU2F5LCB0aGF0IFBNRCBkb2Vzbid0IHJ1biBpbnRvIHRoZSBwcm9ibGVtIGFzIG91cnMgZG9l cy4gSW4gb3RoZXINCj4gPj4+IHdvcmRzLCB0aGUgdXNlciBjYW4gaW5zZXJ0IGEgZmxvdyB3aXRo IGFjdGlvbiBNQVJLIGF0IGFueSBwb2ludCBhbmQNCj4gPj4+IGdldCBtYXJrIGRlbGl2ZXJ5IHdv cmtpbmcgc3RhcnRpbmcgZnJvbSB0aGF0IG1vbWVudCB3aXRob3V0IGFueQ0KPiA+Pj4gcHJvYmxl bS4gU2F5LCB0aGlzIGlzIGV4YWN0bHkgdGhlIHdheSBob3cgaXQgd29ya3MgZm9yIHlvdSBhdCB0 aGUNCj4gbW9tZW50Lg0KPiA+Pj4NCj4gPj4+IE5vdy4gVGhpcyBuZXcgQVBJIGtpY2tzIGluLiBX ZSB1cGRhdGUgdGhlIGFwcGxpY2F0aW9uIHRvIGludm9rZSBpdA0KPiA+Pj4gYXMgZWFybHkgYXMg cG9zc2libGUuIEJ1dCB5b3VyIFBNRCBpbiBxdWVzdGlvbiBzdGlsbCBkb2Vzbid0IHN1cHBvcnQN Cj4gPj4+IHRoaXMgQVBJLiBUaGUgY29tbWVudCBpbiB0aGUgcGF0Y2ggc2F5cyB0aGF0IGlmIHRo ZSBtZXRob2QgcmV0dXJucw0KPiA+Pj4gRU5PVFNVUCwgdGhlIGFwcGxpY2F0aW9uIHNob3VsZCBp Z25vcmUgdGhhdCB3aXRob3V0IGJhdHRpbmcgYW4NCj4gPj4+IGV5ZWxpZC4gSXQgc2hvdWxkIGp1 c3Qga2VlcCBvbiB3b3JraW5nIGFzIGl0IGRpZCBiZWZvcmUgdGhlIGludHJvZHVjdGlvbiBvZg0K PiB0aGlzIEFQSS4NCj4gPj4+DQo+ID4NCj4gPiBJIHVuZGVyc3RhbmQgdGhhdCBpdCBpcyBuaWNl IHRvIHdyaXRlIGluIHRoZSBwYXRjaCBjb21tZW50IHRoYXQNCj4gPiBhcHBsaWNhdGlvbiBzaG91 bGQgZGlzcmVnYXJkIHRoaXMgZnVuY3Rpb24gaW4gY2FzZSBvZiBFTk9UU1VQIGJ1dCBpbiBhDQo+ ID4gZmV3IG1vbnRoIHNvbWVvbmUgd2lsbCByZWFkIHRoZSBvZmZpY2lhbCBkb2MsIHdoZXJlIGl0 IGlzIHN0YXRlZCB0aGF0DQo+ID4gdGhpcyBmdW5jdGlvbiBjYWxsIGlzIGEgbXVzdCBhbmQgdGhl biB3aGF0IGRvIHlvdSB0aGluayB0aGUNCj4gPiBhcHBsaWNhdGlvbiB3aWxsIGRvPw0KPiA+IEkg dGhpbmsgdGhhdCB0aGUgY29ycmVjdCB3YXkgaXMgdG8gYWRkIHRoaXMgZnVuY3Rpb24gdG8gYWxs IFBNRHMuDQo+ID4gQW5vdGhlciBvcHRpb24gaXMgdG8gYWRkIHRvIHRoZSBkb2MgdGhhdCBpZiB0 aGUgZnVuY3Rpb24gaXMgcmV0dXJuaW5nDQo+ID4gRU5PVFNVUCB0aGUgYXBwbGljYXRpb24gc2hv dWxkIGFzc3VtZSB0aGF0IGFsbCBpcyBzdXBwb3J0ZWQuDQo+ID4NCj4gPiBTbyBmcm9tIHRoaXMg cG9pbnQgb2YgdmlldyB0aGVyZSBpcyBBUEkgYnJlYWsuDQo+IA0KPiBTbywgeW91IG1lYW4gYW4g QVBJIGJyZWFrYWdlIGluIHNvbWUgZm9ybWFsIHNlbnNlPyBJZiB0aGUgZG9jIGlzIGZpeGVkIGlu DQo+IGFjY29yZGFuY2Ugd2l0aCB0aGUgc2Vjb25kIG9wdGlvbiB5b3Ugc3VnZ2VzdCwgd2lsbCBp dCBzdWZmaWNlIHRvIGF2b2lkIHRoaXMNCj4gZm9ybWFsIEFQSSBicmVha2FnZT8NCj4gDQoNClll cywgYnV0IEkgdGhpbmsgaXQgd2lsbCBiZSBiZXR0ZXIgdG8gYWRkIHRoZSBtaXNzaW5nIGZ1bmN0 aW9uLg0KDQo+ID4NCj4gPj4+IE1vcmUgc3BlY2lmaWMgZXhhbXBsZToNCj4gPj4+IFNheSwgdGhl IGFwcGxpY2F0aW9uIGRvZXNuJ3QgbWluZCB1c2luZyBlaXRoZXIgIlJTUyArIE1BUksiIG9yDQo+ ID4+PiB0dW5uZWwgb2ZmbG9hZC4gV2hhdCBpdCBkb2VzIHJpZ2h0IG5vdyBpcyBhdHRlbXB0IHRv IGluc2VydCB0dW5uZWwNCj4gPj4+IGZsb3dzIGZpcnN0IGFuZCwgaWYgdGhpcyBmYWlscywgZmFs bCBiYWNrIHRvICJSU1MgKyBNQVJLIi4gV2l0aCB0aGlzDQo+ID4+PiBBUEksIHRoZSBhcHBsaWNh dGlvbiB3aWxsIHRyeSB0byBpbnZva2UgdGhpcyBBUEkgd2l0aCAiVVNFUl9NQVJLIHwNCj4gPj4+ IFRVTk5FTF9JRCIgaW4gYWRhcHRlciBpbml0aWFsaXNlZCBzdGF0ZS4gSWYgdGhlIFBNRCBzYXlz IHRoYXQgaXQgY2FuDQo+ID4+PiBvbmx5IGVuYWJsZSB0aGUgdHVubmVsIG9mZmxvYWQsIHRoZW4g dGhlIGFwcGxpY2F0aW9uIHdpbGwgZ2V0IHRoZQ0KPiA+Pj4ga25vd2xlZGdlIHRoYXQgaXQgZG9l c24ndCBtYWtlIHNlbnNlIHRvIGV2ZW4gdHJ5IGluc2VydGluZyAiUlNTICsNCj4gPj4+IE1BUksi IGZsb3dzLiBJdCBqdXN0IGNhbiBza2lwIHVzZWxlc3MgYWN0aW9ucy4gQnV0IGlmIHRoZSBQTUQN Cj4gPj4+IGRvZXNuJ3Qgc3VwcG9ydCB0aGUgbWV0aG9kLCB0aGUgYXBwbGljYXRpb24gd2lsbCBz ZWUgRU5PVFNVUCBhbmQNCj4gPj4+IGhhbmRsZSB0aGlzDQo+ID4+PiBncmFjZWZ1bGx5OiBpdCB3 aWxsIG1ha2Ugbm8gYXNzdW1wdGlvbnMgYWJvdXQgd2hhdCdzIGd1YXJhbnRlZWQgdG8NCj4gPj4+ IGJlIHN1cHBvcnRlZCBhbmQgd2hhdCdzIG5vdCBhbmQgd2lsbCBqdXN0IGtlZXAgb24gaXRzIG9s ZCBiZWhhdmlvcjoNCj4gPj4+IHRyeSB0byBpbnNlcnQgYSBmbG93LCBmYWlsLCBmYWxsIGJhY2sg dG8gYW5vdGhlciB0eXBlIG9mIGZsb3cuDQo+ID4+Pg0KPiA+DQo+ID4gSSBmdWxseSBhZ3JlZSB3 aXRoIHlvdXIgZXhhbXBsZSwgYW5kIHRoaW5rIHRoYXQgdGhpcyBpcyB0aGUgd2F5IHRvIGdvLA0K PiA+IGFwcGxpY2F0aW9uIHNob3VsZCBzdXBwbHkgYXMgbXVjaCBpbmZvIGFzIHBvc3NpYmxlIGR1 cmluZyBzdGFydHVwLg0KPiANCj4gUmlnaHQuDQo+IA0KPiA+IE15IHF1ZXN0aW9uL2NvbW1lbnQg aXMgdGhlIG5lZ290aWF0ZWQgcmVzdWx0IG1lYW5zIHRoYXQgYWxsIG9mIHRoZQ0KPiA+IGFjdGlv bnMgYXJlIHN1cHBvcnRlZCBvbiB0aGUgc2FtZSBydWxlPw0KPiA+IGZvciBleGFtcGxlIGlmIGFw cGxpY2F0aW9uIHdhbnRzIHRvIGFkZCBtYXJrIGFuZCB0YWcgb24gdGhlIHNhbWUgcnVsZS4NCj4g PiAoSSBrbm93IGl0IGRvZXNuJ3QgbWFrZSBtdWNoIHNlbnNlKSBhbmQgdGhlIFBNRCBjYW4gc3Vw cG9ydCBib3RoIG9mDQo+ID4gdGhlbSBidXQgbm90IG9uIHRoZSBzYW1lIHJ1bGUsIHdoYXQgc2hv dWxkIGl0IHJldHVybj8NCj4gPiBPciBmb3IgZXhhbXBsZSBpZiB1c2luZyB0aGUgbWFyayBjYW4g b25seSBiZSBzdXBwb3J0ZWQgaWYgbm8gZGVjYXANCj4gPiBhY3Rpb24gaXMgc2V0IG9uIHRoaXMg cnVsZSB3aGF0IHNob3VsZCBiZSB0aGUgcmVzdWx0Pw0KPiA+ICBGcm9tIG15IHVuZHN0YW5kaW5n IHRoaXMgZnVuY3Rpb24gaXMgb25seSB0byBsZXQgdGhlIFBNRCBrbm93IHRoYXQgb24NCj4gPiBz b21lIHJ1bGVzIHRoZSBhcHBsaWNhdGlvbiB3aWxsIHVzZSB0aG9zZSBhY3Rpb25zLCB0aGUgY2hl Y2tpbmcgaWYgdGhlDQo+ID4gYWN0aW9uIGNvbWJpbmF0aW9uIGlzIHZhbGlkIG9ubHkgaGFwcGVu cyBvbiB2YWxpZGF0ZSBmdW5jdGlvbiByaWdodD8NCj4gDQo+IFRoaXMgQVBJIGRvZXMgbm90IGJp bmQgaXRzZWxmIHRvIGZsb3cgQVBJLiBJdCdzICpub3QqIGFib3V0IGVuYWJsaW5nIHN1cHBvcnQg Zm9yDQo+IG1ldGFkYXRhICphY3Rpb25zKiAodGhleSBhcmUgY29uZHVjdGVkIGVudGlyZWx5ICpp bnNpZGUqIHRoZSBOSUMpLiBJdCdzDQo+IGFib3V0IGVuYWJsaW5nICpkZWxpdmVyeSogb2YgbWV0 YWRhdGEgZnJvbSB0aGUgTklDIHRvIGhvc3QuDQo+DQoNCkdvb2QgcG9pbnQgc28gd2h5IG5vdCB1 c2UgdGhlIHNhbWUgbG9naWMgYXMgdGhlIG1ldGFkYXRhIGFuZCByZWdpc3RlciBpdD8NClNpbmNl IGluIGFueSBjYXNlLCB0aGlzIGlzIHNvbWV0aGluZyBpbiB0aGUgbWJ1ZiBzbyBtYXliZSB0aGlz IHNob3VsZCBiZSB0aGUgYW5zd2VyPw0KIA0KPiBTYXksIHlvdSBpbnNlcnQgYSBmbG93IHJ1bGUg dG8gbWFyayBzb21lIHBhY2tldHMuIFRoZSBOSUMsIGludGVybmFsbHkgKGluIHRoZQ0KPiBlLXN3 aXRjaCkgYWRkcyB0aGUgbWFyayB0byBtYXRjaGluZyBwYWNrZXRzLiBZZXMsIGluIHRoZSBib3Vu ZGFyaWVzIG9mIHRoZQ0KPiBOSUMgSFcsIHRoZSBwYWNrZXRzIGJlYXIgdGhlIG1hcmsgb24gdGhl bS4gSXQgaGFzIGJlZW4gc2V0LCB5ZXMuIEJ1dCB3aGVuDQo+IHRpbWUgY29tZXMgdG8gKmRlbGl2 ZXIqIHRoZSBwYWNrZXRzIHRvIHRoZSBob3N0LCB0aGUgTklDIChhdCBsZWFzdCwgaW4gbmV0L3Nm Yw0KPiBjYXNlKSBoYXMgdHdvIG9wdGlvbnM6IGVpdGhlciBwcm92aWRlIG9ubHkgYSBzbWFsbCBj aHVuayBvZiB0aGUgbWV0YWRhdGEgZm9yDQo+IGVhY2ggcGFja2V0ICp0byB0aGUgaG9zdCosIHdo aWNoIGRvZXNuJ3QgaW5jbHVkZSBtYXJrIElELCBmbGFnIGFuZCBSU1MgaGFzaCwNCj4gT1IsIGFs dGVybmF0aXZlbHksIHByb3ZpZGUgdGhlIGZ1bGwgc2V0IG9mIG1ldGFkYXRhLiBJbiB0aGUgZm9y bWVyIG9wdGlvbiwgdGhlDQo+IG1hcmsgaXMgc2ltcGx5IG5vdCBkZWxpdmVyZWQuDQo+IE9uY2Ug YWdhaW46IGl0ICpoYXMgYmVlbiBzZXQqLCBidXQgc2ltcGx5IHdpbGwgbm90IGJlICpkZWxpdmVy ZWQgdG8gdGhlIGhvc3QqLg0KPiANCj4gU28sIHRoaXMgQVBJIGlzIGFib3V0IG5lZ290aWF0aW5n ICpkZWxpdmVyeSogb2YgbWV0YWRhdGEuIEluIHB1cmUgdGVjaG5pY2FsDQo+IHNlbnNlLiBBbmQg dGhlIHNldCBvZiBmbGFncyB0aGF0IHRoaXMgQVBJIHJldHVybnMgaW5kaWNhdGVzIHdoaWNoIGtp bmRzIG9mDQo+IG1ldGFkYXRhIHRoZSBOSUMgd2lsbCBiZSBhYmxlIHRvIGRlbGl2ZXIgc2ltdWx0 YW5lb3VzbHkuDQo+IA0KPiBGb3IgZXhhbXBsZSwgYXMgSSB1bmRlcnN0YW5kLCBpbiB0aGUgY2Fz ZSBvZiB0dW5uZWwgb2ZmbG9hZCwgTUxYNSBjbGFpbXMgUngNCj4gbWFyayBlbnRpcmVseSBmb3Ig dHVubmVsIElEIG1ldGFkYXRhLCBzbywgaWYgYW4gYXBwbGljYXRpb24gcmVxdWVzdHMgIk1BUksg fA0KPiBUVU5ORUxfSUQiIHdpdGggdGhpcyBBUEksIHRoaXMgUE1EIHNob3VsZCBwcm9iYWJseSB3 YW50IHRvIHJlc3BvbmQgd2l0aA0KPiBqdXN0ICJUVU5ORUxfSUQiLiBUaGUgYXBwbGljYXRpb24g d2lsbCBzZWUgdGhlIHJlc3BvbnNlIGFuZCByZWFsaXNlIHRoYXQsDQo+IGV2ZW4gaWYgaXQgYWRk cyBpdHMgKm93biogKHVzZXIpIGFjdGlvbiBNQVJLIHRvIGEgZmxvdyBhbmQgaWYgdGhlIGZsb3cg aXMgbm90DQo+IHJlamVjdGVkIGJ5IHRoZSBQTUQsIGl0IHdvbid0IGJlIGFibGUgdG8gc2VlIHRo ZSBtYXJrIGluIHRoZSByZWNlaXZlZCBtYnVmcw0KPiAob3IgdGhlIG1hcmsgd2lsbCBiZSBpbmNv cnJlY3QpLg0KPg0KU28gd2hhdCBzaG91bGQgdGhlIGFwcGxpY2F0aW9uIGRvIGlmIG9uIHNvbWUg Zmxvd3MgaXQgd2FudHMgTUFSSyBhbmQgb24gb3RoZXIgRkxBRz8NCkZyb20gRFBESyB2aWV3cG9p bnQgYm90aCBvZiB0aGVtIGNhbid0IGJlIHNoYXJlZCBvbiB0aGUgc2FtZSBydWxlDQoodGhleSBh cmUgdXNpbmcgdGhlIHNhbWUgc3BhY2UgaW4gbWJ1Zikgc28gdGhlIGFwcGxpY2F0aW9uIHdpbGwg bmV2ZXINCmFzayBmb3IgYm90aCBvZiB0aGVtIGluIHRoZSBzYW1lIHJ1bGUgYnV0IGhlIGNhbiBv biBzb21lIHJ1bGVzIGFzayBmb3IgbWFyaw0Kd2hpbGUgb24gb3RoZXIgcmVxdWVzdCBmb3IgRkxB RywgZXZlbiBpbiB5b3VyIGNvZGUgeW91IGFkZGVkIGJvdGggb2YgdGhlbS4NCg0KU28gd2hhdCBz aG91bGQgdGhlIFBNRCByZXR1cm4gaWYgaXQgY2FuIHN1cHBvcnQgYm90aCBvZiB0aGVtIGp1c3Qg bm90IGF0IHRoZSBzYW1lDQpydWxlPw0KDQpPbmUgb3B0aW9uIGlzIHRvIGRvY3VtZW50IHRoYXQg dGhlIHN1cHBvcnRlZCB2YWx1ZXMgYXJlIG5vdCBwZXIgcnVsZSBidXQgZm9yIHRoZSBlbnRpcmUN CnBvcnQuIEZvciBleGFtcGxlIGluIHRoZSBleGFtcGxlIHlvdSBnYXZlIE1MWDUgd2lsbCBzdXBw b3J0IG1hcmsgKyBmbGFnIGJ1dCB3aWxsIG5vdA0Kc3VwcG9ydCBtYXJrICsgdHVubmVsLg0KDQpB bHNvIGNvbnNpZGVyaW5nIHlvdXIgZXhhbXBsZSwgdGhlIG5lZ290aWF0aW9uIG1heSByZXN1bHQg aW4gc3VicGFyIHJlc3VsdC4NCnRha2luZyB5b3VyIGV4YW1wbGUgdGhlIFBNRCByZXR1cm5lZCAg VFVOTkVMX0lEIG1heWJlIGFwcGxpY2F0aW9uIHdvdWxkIHByZWZlcg0KdG8gaGF2ZSB0aGUgbWFy ayBhbmQgbm90IHRoZSBUVU5ORUxfSUQuIEkgdW5kZXJzdGFuZCB0aGF0IGFwcGxpY2F0aW9uIGNh biBjaGVjaw0KYW5kIHRyeSBhZ2FpbiB3aXRoIGp1c3QgdGhlIE1BUksuIA0KWW91IGFyZSBpbnNl cnRpbmcgbG9naWMgdG8gdGhlIFBNRCwgbWF5YmUgdGhlIGZ1bmN0aW9uIHNob3VsZCBqdXN0IGZh aWwgbWF5YmUNCnJldHVybmluZyB0aGUgY29uZmxpY3RpbmcgaXRlbXM/DQoNCg0KIA0KPiBCdXQg c29tZSBvdGhlciBQTURzIChuZXQvc2ZjLCBmb3IgaW5zdGFuY2UpIGNsYWltIG9ubHkgYSBzbWFs bCBmcmFjdGlvbiBvZiBiaXRzDQo+IGluIFJ4IG1hcmsgdG8gZGVsaXZlciB0dW5uZWwgSUQgaW5m b3JtYXRpb24uIFJlbWFpbmluZyBiaXRzIGFyZSBzdGlsbCBhdmFpbGFibGUNCj4gZm9yIGRlbGl2 ZXJ5IG9mICp1c2VyKiBtYXJrIElELiBQbGVhc2Ugc2VlIGFuIGV4YW1wbGUgYXQNCj4gaHR0cHM6 Ly9wYXRjaGVzLmRwZGsub3JnL3Byb2plY3QvZHBkay9wYXRjaC8yMDIxMDkyOTIwNTczMC43NzUt Mi0NCj4gaXZhbi5tYWxvdkBva3RldGxhYnMucnUvDQo+IC4gSW4gdGhpcyBjYXNlLCB0aGUgUE1E IG1heSB3YW50IHRvIHJldHVybiBib3RoIGZsYWdzIGluIHRoZSByZXNwb25zZToNCj4gIk1BUksg fCBUVU5ORUxfSUQiLiBUaGlzIHdheSwgdGhlIGFwcGxpY2F0aW9uIGtub3dzIHRoYXQgYm90aCBm ZWF0dXJlcw0KPiBhcmUgZW5hYmxlZCBhbmQgYXZhaWxhYmxlIGZvciB1c2UuDQo+IA0KPiBOb3cu IEkgYW50aWNpcGF0ZSBtb3JlIHF1ZXN0aW9ucyBhc2tpbmcgd2h5IHdvdWxkbid0IHdlIHByZWZl ciBmbG93IEFQSQ0KPiB0ZXJtaW5vbG9neSBvciB3aHkgd291bGRuJ3Qgd2UgYWRkIGFuIEFQSSBm b3IgbmVnb3RpYXRpbmcgc3VwcG9ydCBmb3INCj4gbWV0YWRhdGEgKmFjdGlvbnMqIGFuZCBub3Qg anVzdCBtZXRhZGF0YSAqZGVsaXZlcnkqLiBUaGVyZSdzIGFuIGFuc3dlci4NCj4gQWx3YXlzIGhh cyBiZWVuLg0KPiANCj4gVGhlIHRoaW5nIGlzLCB0aGUgdXNlIG9mICphY3Rpb25zKiBpcyB2ZXJ5 IGNvbXBsaWNhdGVkLiBGb3IgZXhhbXBsZSwgdGhlIFBNRA0KPiBtYXkgc3VwcG9ydCBhY3Rpb24g TUFSSyBmb3IgInRyYW5zZmVyIiBmbG93cyBidXQgbm90IGZvciBub24tInRyYW5zZmVyIg0KPiBv bmVzLiBBbHNvLCBzaW11bHRhbmVvdXMgdXNlIG9mIG11bHRpcGxlIGRpZmZlcmVudCBtZXRhZGF0 YSBhY3Rpb25zIG1heSBub3QNCj4gYmUgcG9zc2libGUuIEFuZCwgbGFzdCBidXQgbm90IGxlYXN0 LCBpZiB3ZSBmb3JjZSB0aGUgYXBwbGljYXRpb24gdG8gY2hlY2sNCj4gc3VwcG9ydCBmb3IgKmFj dGlvbnMqIG9uIGFjdGlvbi1hZnRlci1hY3Rpb24gYmFzaXMsIHRoZSBvcmRlciBvZiBjaGVja3Mg d2lsbCBiZQ0KPiB2ZXJ5IGNvbmZ1c2luZyB0byBhcHBsaWNhdGlvbnMuDQo+IA0KPiBQcmV2aW91 c2x5LCBpbiB0aGlzIHRocmVhZCwgVGhvbWFzIHN1Z2dlc3RlZCB0byBnbyBmb3IgZXhhY3RseSB0 aGlzIHR5cGUgb2YNCj4gQVBJLCB0byBjaGVjayBzdXBwb3J0IGZvciBhY3Rpb25zIG9uZS1ieS1v bmUsIHdpdGhvdXQgYW55IGNvbnRleHQNCj4gKCJ0cmFuc2ZlciIgLyBub24tInRyYW5zZmVyIiku IEknbSBhZnJhaWQsIHRoaXMgd29uJ3QgYmUgT0suDQo+IA0KKzEgdG8ga2VlcGluZyBpdCBhcyBh IHNlcGFyYXRlZCBBUEkuIChJIGFncmVlIGFjdGlvbnMgbGltaXRhdGlvbiBhcmUgdmVyeSBjb21w bGV4IG1ldHJpeCkNCg0KPiA+DQo+ID4gSW4gYW55IGNhc2UgSSB0aGluayB0aGlzIGlzIGdvb2Qg aWRlYSBhbmQgSSB3aWxsIHNlZSBob3cgd2UgY2FuIGFkZCBhDQo+ID4gbW9yZSBnZW5lcmljIGFw cHJvYWNoIG9mIHRoaXMgQVBJIHRvIHRoZSBuZXcgQVBJIHRoYXQgSSdtIGdvaW5nIHRvIHByZXNl bnQuDQo+ID4NCj4gPg0KPiA+Pj4gU28gbm8gYnJlYWthZ2VzIHdpdGggdGhpcyBBUEkuDQo+ID4+ Pg0KPiA+Pj4+DQo+ID4+Pj4gUGxlYXNlIHNlZSBtb3JlIGNvbW1lbnRzIGlubGluZS4NCj4gPj4+ Pg0KPiA+Pj4+IFRoYW5rcywNCj4gPj4+PiBPcmkNCj4gPj4+Pg0KPiA+Pj4+PiAtLS0tLU9yaWdp bmFsIE1lc3NhZ2UtLS0tLQ0KPiA+Pj4+PiBGcm9tOiBJdmFuIE1hbG92IDxpdmFuLm1hbG92QG9r dGV0bGFicy5ydT4NCj4gPj4+Pj4gU2VudDogVGh1cnNkYXksIFNlcHRlbWJlciAyMywgMjAyMSAy OjIwIFBNDQo+ID4+Pj4+IFN1YmplY3Q6IFtQQVRDSCB2MyAxLzVdIGV0aGRldjogYWRkIEFQSSB0 byBuZWdvdGlhdGUgZGVsaXZlcnkgb2YNCj4gPj4+Pj4gUnggbWV0YSBkYXRhDQo+ID4+Pj4+DQo+ ID4+Pj4+IERlbGl2ZXJ5IG9mIG1hcmssIGZsYWcgYW5kIHRoZSBsaWtlcyBtaWdodCBhZmZlY3Qg c21hbGwgcGFja2V0DQo+ID4+Pj4+IHBlcmZvcm1hbmNlLg0KPiA+Pj4+PiBJZiB0aGVzZSBmZWF0 dXJlcyBhcmUgZGlzYWJsZWQgYnkgZGVmYXVsdCwgZW5hYmxpbmcgdGhlbSBpbg0KPiA+Pj4+PiBz dGFydGVkIHN0YXRlIHdpdGhvdXQgY2F1c2luZyB0cmFmZmljIGRpc3J1cHRpb24gbWF5IG5vdCBh bHdheXMgYmUNCj4gcG9zc2libGUuDQo+ID4+Pj4+DQo+ID4+Pj4+IExldCBhcHBsaWNhdGlvbnMg bmVnb3RpYXRlIGRlbGl2ZXJ5IG9mIFJ4IG1ldGEgZGF0YSBiZWZvcmVoYW5kLg0KPiA+Pj4+Pg0K PiA+Pj4+PiBTaWduZWQtb2ZmLWJ5OiBJdmFuIE1hbG92IDxpdmFuLm1hbG92QG9rdGV0bGFicy5y dT4NCj4gPj4+Pj4gUmV2aWV3ZWQtYnk6IEFuZHJldyBSeWJjaGVua28NCj4gPGFuZHJldy5yeWJj aGVua29Ab2t0ZXRsYWJzLnJ1Pg0KPiA+Pj4+PiBSZXZpZXdlZC1ieTogQW5keSBNb3JldG9uIDxh bW9yZXRvbkB4aWxpbnguY29tPg0KPiA+Pj4+PiBBY2tlZC1ieTogUmF5IEtpbnNlbGxhIDxtZHJA YXNocm9lLmV1Pg0KPiA+Pj4+PiBBY2tlZC1ieTogSmVyaW4gSmFjb2IgPGplcmluakBtYXJ2ZWxs LmNvbT4NCj4gPj4+Pj4gLS0tDQo+ID4+Pj4+ICDCoCBhcHAvdGVzdC1mbG93LXBlcmYvbWFpbi5j wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCAyMSArKysrKysrKysrKysNCj4gPj4+Pj4gIMKg IGFwcC90ZXN0LXBtZC90ZXN0cG1kLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8 IDI2ICsrKysrKysrKysrKysrKw0KPiA+Pj4+PiAgwqAgZG9jL2d1aWRlcy9yZWxfbm90ZXMvcmVs ZWFzZV8yMV8xMS5yc3QgfMKgIDkgKysrKysrDQo+ID4+Pj4+ICDCoCBsaWIvZXRoZGV2L2V0aGRl dl9kcml2ZXIuaMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDE5ICsrKysrKysrKysrDQo+ID4+ Pj4+ICDCoCBsaWIvZXRoZGV2L3J0ZV9ldGhkZXYuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCB8IDI1ICsrKysrKysrKysrKysrDQo+ID4+Pj4+ICDCoCBsaWIvZXRoZGV2L3J0ZV9ldGhk ZXYuaMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQ1DQo+ID4+Pj4+ICsrKysrKysr KysrKysrKysrKysrKysrKysrDQo+ID4+Pj4+ICDCoCBsaWIvZXRoZGV2L3J0ZV9mbG93LmjCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgMTIgKysrKysrKw0KPiA+Pj4+PiAgwqAg bGliL2V0aGRldi92ZXJzaW9uLm1hcMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzC oCAzICsrDQo+ID4+Pj4+ICDCoCA4IGZpbGVzIGNoYW5nZWQsIDE2MCBpbnNlcnRpb25zKCspDQo+ ID4+Pj4+DQo+ID4+Pj4+IGRpZmYgLS1naXQgYS9hcHAvdGVzdC1mbG93LXBlcmYvbWFpbi5jIGIv YXBwL3Rlc3QtZmxvdy1wZXJmL21haW4uYw0KPiA+Pj4+PiBpbmRleCA5YmU4ZWRjMzFkLi40OGVh ZmZmYjFkIDEwMDY0NA0KPiA+Pj4+PiAtLS0gYS9hcHAvdGVzdC1mbG93LXBlcmYvbWFpbi5jDQo+ ID4+Pj4+ICsrKyBiL2FwcC90ZXN0LWZsb3ctcGVyZi9tYWluLmMNCj4gPj4+Pj4gQEAgLTE3NjAs NiArMTc2MCwyNyBAQCBpbml0X3BvcnQodm9pZCkNCj4gPj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqDC oCBydGVfZXhpdChFWElUX0ZBSUxVUkUsICJFcnJvcjogY2FuJ3QgaW5pdCBtYnVmDQo+ID4+Pj4+ IHBvb2xcbiIpOw0KPiA+Pj4+Pg0KPiA+Pj4+PiAgwqDCoMKgwqDCoCBmb3IgKHBvcnRfaWQgPSAw OyBwb3J0X2lkIDwgbnJfcG9ydHM7IHBvcnRfaWQrKykgew0KPiA+Pj4+PiArwqDCoMKgwqDCoMKg wqAgdWludDY0X3QgcnhfbWV0YV9mZWF0dXJlcyA9IDA7DQo+ID4+Pj4+ICsNCj4gPj4+Pj4gK8Kg wqDCoMKgwqDCoMKgIHJ4X21ldGFfZmVhdHVyZXMgfD0gUlRFX0VUSF9SWF9NRVRBX1VTRVJfRkxB RzsNCj4gPj4+Pj4gK8KgwqDCoMKgwqDCoMKgIHJ4X21ldGFfZmVhdHVyZXMgfD0gUlRFX0VUSF9S WF9NRVRBX1VTRVJfTUFSSzsNCj4gPj4+Pj4gKw0KPiA+Pj4+PiArwqDCoMKgwqDCoMKgwqAgcmV0 ID0gcnRlX2V0aF9yeF9tZXRhX25lZ290aWF0ZShwb3J0X2lkLA0KPiA+Pj4+PiAmcnhfbWV0YV9m ZWF0dXJlcyk7DQo+ID4+Pj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAocmV0ID09IDApIHsNCj4gPj4+ Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKCEocnhfbWV0YV9mZWF0dXJlcyAmDQo+ID4+ Pj4+IFJURV9FVEhfUlhfTUVUQV9VU0VSX0ZMQUcpKSB7DQo+ID4+Pj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgcHJpbnRmKCI6OiBmbG93IGFjdGlvbiBGTEFHIHdpbGwgbm90IGFm ZmVjdCBSeA0KPiA+Pj4+PiBtYnVmcyBvbiBwb3J0PSV1XG4iLA0KPiA+Pj4+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcG9ydF9pZCk7DQo+ID4+Pj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0NCj4gPj4+Pj4gKw0KPiA+Pj4+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBpZiAoIShyeF9tZXRhX2ZlYXR1cmVzICYNCj4gPj4+Pj4gUlRFX0VUSF9SWF9N RVRBX1VTRVJfTUFSSykpIHsNCj4gPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBwcmludGYoIjo6IGZsb3cgYWN0aW9uIE1BUksgd2lsbCBub3QgYWZmZWN0IFJ4DQo+ID4+Pj4+ IG1idWZzIG9uIHBvcnQ9JXVcbiIsDQo+ID4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBwb3J0X2lkKTsNCj4gPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqAgfQ0KPiA+Pj4+PiArwqDCoMKgwqDCoMKgwqAgfSBlbHNlIGlmIChyZXQgIT0gLUVOT1RT VVApIHsNCj4gPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcnRlX2V4aXQoRVhJVF9GQUlM VVJFLCAiRXJyb3Igd2hlbiBuZWdvdGlhdGluZyBSeA0KPiA+Pj4+PiBtZXRhIGZlYXR1cmVzIG9u IHBvcnQ9JXU6ICVzXG4iLA0KPiA+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgcG9ydF9pZCwgcnRlX3N0cmVycm9yKC1yZXQpKTsNCj4gPj4+Pj4gK8KgwqDCoMKgwqDCoMKg IH0NCj4gPj4+Pj4gKw0KPiA+Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgIHJldCA9IHJ0ZV9ldGhf ZGV2X2luZm9fZ2V0KHBvcnRfaWQsICZkZXZfaW5mbyk7DQo+ID4+Pj4+ICDCoMKgwqDCoMKgwqDC oMKgwqAgaWYgKHJldCAhPSAwKQ0KPiA+Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg cnRlX2V4aXQoRVhJVF9GQUlMVVJFLCBkaWZmIC0tZ2l0DQo+ID4+Pj4+IGEvYXBwL3Rlc3QtcG1k L3Rlc3RwbWQuYyBiL2FwcC90ZXN0LXBtZC90ZXN0cG1kLmMgaW5kZXgNCj4gPj4+Pj4gOTdhZTUy ZTE3ZS4uN2E4ZGEzZDdhYiAxMDA2NDQNCj4gPj4+Pj4gLS0tIGEvYXBwL3Rlc3QtcG1kL3Rlc3Rw bWQuYw0KPiA+Pj4+PiArKysgYi9hcHAvdGVzdC1wbWQvdGVzdHBtZC5jDQo+ID4+Pj4+IEBAIC0x NDg1LDEwICsxNDg1LDM2IEBAIHN0YXRpYyB2b2lkDQo+ID4+Pj4+ICDCoCBpbml0X2NvbmZpZ19w b3J0X29mZmxvYWRzKHBvcnRpZF90IHBpZCwgdWludDMyX3Qgc29ja2V0X2lkKcKgIHsNCj4gPj4+ Pj4gIMKgwqDCoMKgwqAgc3RydWN0IHJ0ZV9wb3J0ICpwb3J0ID0gJnBvcnRzW3BpZF07DQo+ID4+ Pj4+ICvCoMKgwqAgdWludDY0X3QgcnhfbWV0YV9mZWF0dXJlcyA9IDA7DQo+ID4+Pj4+ICDCoMKg wqDCoMKgIHVpbnQxNl90IGRhdGFfc2l6ZTsNCj4gPj4+Pj4gIMKgwqDCoMKgwqAgaW50IHJldDsN Cj4gPj4+Pj4gIMKgwqDCoMKgwqAgaW50IGk7DQo+ID4+Pj4+DQo+ID4+Pj4+ICvCoMKgwqAgcnhf bWV0YV9mZWF0dXJlcyB8PSBSVEVfRVRIX1JYX01FVEFfVVNFUl9GTEFHOw0KPiA+Pj4+PiArwqDC oMKgIHJ4X21ldGFfZmVhdHVyZXMgfD0gUlRFX0VUSF9SWF9NRVRBX1VTRVJfTUFSSzsNCj4gPj4+ Pj4gK8KgwqDCoCByeF9tZXRhX2ZlYXR1cmVzIHw9IFJURV9FVEhfUlhfTUVUQV9UVU5ORUxfSUQ7 DQo+ID4+Pj4+ICsNCj4gPj4+Pj4gK8KgwqDCoCByZXQgPSBydGVfZXRoX3J4X21ldGFfbmVnb3Rp YXRlKHBpZCwgJnJ4X21ldGFfZmVhdHVyZXMpOw0KPiA+Pj4+PiArwqDCoMKgIGlmIChyZXQgPT0g MCkgew0KPiA+Pj4+PiArwqDCoMKgwqDCoMKgwqAgaWYgKCEocnhfbWV0YV9mZWF0dXJlcyAmIFJU RV9FVEhfUlhfTUVUQV9VU0VSX0ZMQUcpKSB7DQo+ID4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIFRFU1RQTURfTE9HKElORk8sICJGbG93IGFjdGlvbiBGTEFHIHdpbGwgbm90DQo+ID4+Pj4+ IGFmZmVjdCBSeCBtYnVmcyBvbiBwb3J0ICV1XG4iLA0KPiA+Pj4+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcGlkKTsNCj4gPj4+Pj4gK8KgwqDCoMKgwqDCoMKgIH0N Cj4gPj4+Pj4gKw0KPiA+Pj4+PiArwqDCoMKgwqDCoMKgwqAgaWYgKCEocnhfbWV0YV9mZWF0dXJl cyAmIFJURV9FVEhfUlhfTUVUQV9VU0VSX01BUkspKQ0KPiA+Pj4+PiB7DQo+ID4+Pj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIFRFU1RQTURfTE9HKElORk8sICJGbG93IGFjdGlvbiBNQVJLIHdp bGwgbm90DQo+ID4+Pj4+IGFmZmVjdCBSeCBtYnVmcyBvbiBwb3J0ICV1XG4iLA0KPiA+Pj4+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcGlkKTsNCj4gPj4+Pj4gK8Kg wqDCoMKgwqDCoMKgIH0NCj4gPj4+Pj4gKw0KPiA+Pj4+PiArwqDCoMKgwqDCoMKgwqAgaWYgKCEo cnhfbWV0YV9mZWF0dXJlcyAmIFJURV9FVEhfUlhfTUVUQV9UVU5ORUxfSUQpKSB7DQo+ID4+Pj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFRFU1RQTURfTE9HKElORk8sICJGbG93IHR1bm5lbCBv ZmZsb2FkIHN1cHBvcnQNCj4gPj4+Pj4gbWlnaHQgYmUgbGltaXRlZCBvciB1bmF2YWlsYWJsZSBv biBwb3J0ICV1XG4iLA0KPiA+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgcGlkKTsNCj4gPj4+Pj4gK8KgwqDCoMKgwqDCoMKgIH0NCj4gPj4+Pj4gK8KgwqDCoCB9 IGVsc2UgaWYgKHJldCAhPSAtRU5PVFNVUCkgew0KPiA+Pj4+PiArwqDCoMKgwqDCoMKgwqAgcnRl X2V4aXQoRVhJVF9GQUlMVVJFLCAiRXJyb3Igd2hlbiBuZWdvdGlhdGluZyBSeCBtZXRhDQo+ID4+ Pj4+IGZlYXR1cmVzIG9uIHBvcnQgJXU6ICVzXG4iLA0KPiA+Pj4+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHBpZCwgcnRlX3N0cmVycm9yKC1yZXQpKTsNCj4gPj4+Pj4gK8KgwqDCoCB9DQo+ ID4+Pj4+ICsNCj4gPj4+Pj4gIMKgwqDCoMKgwqAgcG9ydC0+ZGV2X2NvbmYudHhtb2RlID0gdHhf bW9kZTsNCj4gPj4+Pj4gIMKgwqDCoMKgwqAgcG9ydC0+ZGV2X2NvbmYucnhtb2RlID0gcnhfbW9k ZTsNCj4gPj4+Pj4NCj4gPj4+Pj4gZGlmZiAtLWdpdCBhL2RvYy9ndWlkZXMvcmVsX25vdGVzL3Jl bGVhc2VfMjFfMTEucnN0DQo+ID4+Pj4+IGIvZG9jL2d1aWRlcy9yZWxfbm90ZXMvcmVsZWFzZV8y MV8xMS5yc3QNCj4gPj4+Pj4gaW5kZXggMTkzNTZhYzUzYy4uNjY3NGQ0NDc0YyAxMDA2NDQNCj4g Pj4+Pj4gLS0tIGEvZG9jL2d1aWRlcy9yZWxfbm90ZXMvcmVsZWFzZV8yMV8xMS5yc3QNCj4gPj4+ Pj4gKysrIGIvZG9jL2d1aWRlcy9yZWxfbm90ZXMvcmVsZWFzZV8yMV8xMS5yc3QNCj4gPj4+Pj4g QEAgLTEwNiw2ICsxMDYsMTUgQEAgTmV3IEZlYXR1cmVzDQo+ID4+Pj4+ICDCoMKgwqAgQWRkZWQg Y29tbWFuZC1saW5lIG9wdGlvbnMgdG8gc3BlY2lmeSB0b3RhbCBudW1iZXIgb2YNCj4gPj4+Pj4g cHJvY2Vzc2VzIGFuZA0KPiA+Pj4+PiAgwqDCoMKgIGN1cnJlbnQgcHJvY2VzcyBJRC4gRWFjaCBw cm9jZXNzIG93bnMgc3Vic2V0IG9mIFJ4IGFuZCBUeCBxdWV1ZXMuDQo+ID4+Pj4+DQo+ID4+Pj4+ ICsqICoqQWRkZWQgYW4gQVBJIHRvIG5lZ290aWF0ZSBkZWxpdmVyeSBvZiBzcGVjaWZpYyBwYXJ0 cyBvZiBSeA0KPiA+Pj4+PiArbWV0YQ0KPiA+Pj4+PiArZGF0YSoqDQo+ID4+Pj4+ICsNCj4gPj4+ Pj4gK8KgIEEgbmV3IEFQSSwgYGBydGVfZXRoX3J4X21ldGFfbmVnb3RpYXRlKClgYCwgd2FzIGFk ZGVkLg0KPiA+Pj4+PiArwqAgVGhlIGZvbGxvd2luZyBwYXJ0cyBvZiBSeCBtZXRhIGRhdGEgd2Vy ZSBkZWZpbmVkOg0KPiA+Pj4+PiArDQo+ID4+Pj4+ICvCoCAqIGBgUlRFX0VUSF9SWF9NRVRBX1VT RVJfRkxBR2BgDQo+ID4+Pj4+ICvCoCAqIGBgUlRFX0VUSF9SWF9NRVRBX1VTRVJfTUFSS2BgDQo+ ID4+Pj4+ICvCoCAqIGBgUlRFX0VUSF9SWF9NRVRBX1RVTk5FTF9JRGBgDQo+ID4+Pj4+ICsNCj4g Pj4+Pj4NCj4gPj4+Pj4gIMKgIFJlbW92ZWQgSXRlbXMNCj4gPj4+Pj4gIMKgIC0tLS0tLS0tLS0t LS0NCj4gPj4+Pj4gZGlmZiAtLWdpdCBhL2xpYi9ldGhkZXYvZXRoZGV2X2RyaXZlci5oDQo+ID4+ Pj4+IGIvbGliL2V0aGRldi9ldGhkZXZfZHJpdmVyLmggaW5kZXggNDBlNDc0YWE3ZS4uOTZlMGM2 MGNhZSAxMDA2NDQNCj4gPj4+Pj4gLS0tIGEvbGliL2V0aGRldi9ldGhkZXZfZHJpdmVyLmgNCj4g Pj4+Pj4gKysrIGIvbGliL2V0aGRldi9ldGhkZXZfZHJpdmVyLmgNCj4gPj4+Pj4gQEAgLTc4OSw2 ICs3ODksMjIgQEAgdHlwZWRlZiBpbnQgKCpldGhfZ2V0X21vbml0b3JfYWRkcl90KSh2b2lkDQo+ ID4+Pj4+ICpyeHEsIHR5cGVkZWYgaW50ICgqZXRoX3JlcHJlc2VudG9yX2luZm9fZ2V0X3QpKHN0 cnVjdCBydGVfZXRoX2Rldg0KPiA+Pj4+PiAqZGV2LA0KPiA+Pj4+PiAgwqDCoMKgwqDCoCBzdHJ1 Y3QgcnRlX2V0aF9yZXByZXNlbnRvcl9pbmZvICppbmZvKTsNCj4gPj4+Pj4NCj4gPj4+Pj4gKy8q Kg0KPiA+Pj4+PiArICogQGludGVybmFsDQo+ID4+Pj4+ICsgKiBOZWdvdGlhdGUgZGVsaXZlcnkg b2Ygc3BlY2lmaWMgcGFydHMgb2YgUnggbWV0YSBkYXRhLg0KPiA+Pj4+PiArICoNCj4gPj4+Pj4g KyAqIEBwYXJhbSBkZXYNCj4gPj4+Pj4gKyAqwqDCoCBQb3J0IChldGhkZXYpIGhhbmRsZQ0KPiA+ Pj4+PiArICoNCj4gPj4+Pj4gKyAqIEBwYXJhbVtpbm91dF0gZmVhdHVyZXMNCj4gPj4+Pj4gKyAq wqDCoCBGZWF0dXJlIHNlbGVjdGlvbiBidWZmZXINCj4gPj4+Pj4gKyAqDQo+ID4+Pj4+ICsgKiBA cmV0dXJuDQo+ID4+Pj4+ICsgKsKgwqAgTmVnYXRpdmUgZXJybm8gdmFsdWUgb24gZXJyb3IsIHpl cm8gb3RoZXJ3aXNlICAqLyB0eXBlZGVmDQo+ID4+Pj4+ICtpbnQgKCpldGhfcnhfbWV0YV9uZWdv dGlhdGVfdCkoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsDQo+ID4+Pj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1aW50NjRfdCAqZmVhdHVyZXMpOw0KPiA+ Pj4+PiArDQo+ID4+Pj4+ICDCoCAvKioNCj4gPj4+Pj4gIMKgwqAgKiBAaW50ZXJuYWwgQSBzdHJ1 Y3R1cmUgY29udGFpbmluZyB0aGUgZnVuY3Rpb25zIGV4cG9ydGVkIGJ5DQo+ID4+Pj4+IGFuIEV0 aGVybmV0IGRyaXZlci4NCj4gPj4+Pj4gIMKgwqAgKi8NCj4gPj4+Pj4gQEAgLTk0OSw2ICs5NjUs OSBAQCBzdHJ1Y3QgZXRoX2Rldl9vcHMgew0KPiA+Pj4+Pg0KPiA+Pj4+PiAgwqDCoMKgwqDCoCBl dGhfcmVwcmVzZW50b3JfaW5mb19nZXRfdCByZXByZXNlbnRvcl9pbmZvX2dldDsNCj4gPj4+Pj4g IMKgwqDCoMKgwqAgLyoqPCBHZXQgcmVwcmVzZW50b3IgaW5mby4gKi8NCj4gPj4+Pj4gKw0KPiA+ Pj4+PiArwqDCoMKgIGV0aF9yeF9tZXRhX25lZ290aWF0ZV90IHJ4X21ldGFfbmVnb3RpYXRlOw0K PiA+Pj4+PiArwqDCoMKgIC8qKjwgTmVnb3RpYXRlIGRlbGl2ZXJ5IG9mIHNwZWNpZmljIHBhcnRz IG9mIFJ4IG1ldGEgZGF0YS4gKi8NCj4gPj4+Pj4gIMKgIH07DQo+ID4+Pj4+DQo+ID4+Pj4+ICDC oCAvKioNCj4gPj4+Pj4gZGlmZiAtLWdpdCBhL2xpYi9ldGhkZXYvcnRlX2V0aGRldi5jIGIvbGli L2V0aGRldi9ydGVfZXRoZGV2LmMNCj4gPj4+Pj4gaW5kZXggZGFmNWNhOTI0Mi4uNDljYjg0ZDY0 YyAxMDA2NDQNCj4gPj4+Pj4gLS0tIGEvbGliL2V0aGRldi9ydGVfZXRoZGV2LmMNCj4gPj4+Pj4g KysrIGIvbGliL2V0aGRldi9ydGVfZXRoZGV2LmMNCj4gPj4+Pj4gQEAgLTYzMTAsNiArNjMxMCwz MSBAQCBydGVfZXRoX3JlcHJlc2VudG9yX2luZm9fZ2V0KHVpbnQxNl90DQo+ID4+Pj4+IHBvcnRf aWQsDQo+ID4+Pj4+ICDCoMKgwqDCoMKgIHJldHVybiBldGhfZXJyKHBvcnRfaWQsICgqZGV2LT5k ZXZfb3BzLQ0KPiA+Pj4+Pj4gcmVwcmVzZW50b3JfaW5mb19nZXQpKGRldiwgaW5mbykpO8KgIH0N Cj4gPj4+Pj4NCj4gPj4+Pj4gK2ludA0KPiA+Pj4+PiArcnRlX2V0aF9yeF9tZXRhX25lZ290aWF0 ZSh1aW50MTZfdCBwb3J0X2lkLCB1aW50NjRfdCAqZmVhdHVyZXMpIHsNCj4gPj4+Pj4gK8KgwqDC oCBzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldjsNCj4gPj4+Pj4gKw0KPiA+Pj4+PiArwqDCoMKgIFJU RV9FVEhfVkFMSURfUE9SVElEX09SX0VSUl9SRVQocG9ydF9pZCwgLUVOT0RFVik7DQo+ID4+Pj4+ ICvCoMKgwqAgZGV2ID0gJnJ0ZV9ldGhfZGV2aWNlc1twb3J0X2lkXTsNCj4gPj4+Pj4gKw0KPiA+ Pj4+PiArwqDCoMKgIGlmIChkZXYtPmRhdGEtPmRldl9jb25maWd1cmVkICE9IDApIHsNCj4gPj4+ Pj4gK8KgwqDCoMKgwqDCoMKgIFJURV9FVEhERVZfTE9HKEVSUiwNCj4gPj4+Pj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqAgIlRoZSBwb3J0IChpZD0lIlBSSXUxNiIpIGlzIGFscmVhZHkgY29uZmln dXJlZFxuIiwNCj4gPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcG9ydF9pZCk7DQo+ID4+ Pj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gLUVCVVNZOw0KPiA+Pj4+PiArwqDCoMKgIH0NCj4g Pj4+Pj4gKw0KPiA+Pj4+PiArwqDCoMKgIGlmIChmZWF0dXJlcyA9PSBOVUxMKSB7DQo+ID4+Pj4+ ICvCoMKgwqDCoMKgwqDCoCBSVEVfRVRIREVWX0xPRyhFUlIsICJJbnZhbGlkIGZlYXR1cmVzIChO VUxMKVxuIik7DQo+ID4+Pj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gLUVJTlZBTDsNCj4gPj4+ Pj4gK8KgwqDCoCB9DQo+ID4+Pj4+ICsNCj4gPj4+Pj4gK8KgwqDCoCBSVEVfRlVOQ19QVFJfT1Jf RVJSX1JFVCgqZGV2LT5kZXZfb3BzLQ0KPiA+cnhfbWV0YV9uZWdvdGlhdGUsDQo+ID4+Pj4+IC1F Tk9UU1VQKTsNCj4gPj4+Pj4gK8KgwqDCoCByZXR1cm4gZXRoX2Vycihwb3J0X2lkLA0KPiA+Pj4+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAoKmRldi0+ZGV2X29wcy0+cnhfbWV0YV9u ZWdvdGlhdGUpKGRldiwNCj4gPj4+Pj4gK2ZlYXR1cmVzKSk7IH0NCj4gPj4+Pj4gKw0KPiA+Pj4+ PiAgwqAgUlRFX0xPR19SRUdJU1RFUl9ERUZBVUxUKHJ0ZV9ldGhfZGV2X2xvZ3R5cGUsIElORk8p Ow0KPiA+Pj4+Pg0KPiA+Pj4+PiAgwqAgUlRFX0lOSVQoZXRoZGV2X2luaXRfdGVsZW1ldHJ5KSBk aWZmIC0tZ2l0DQo+ID4+Pj4+IGEvbGliL2V0aGRldi9ydGVfZXRoZGV2LmggYi9saWIvZXRoZGV2 L3J0ZV9ldGhkZXYuaCBpbmRleA0KPiA+Pj4+PiAxZGEzNzg5NmQ4Li44NDY3YTdhMzYyIDEwMDY0 NA0KPiA+Pj4+PiAtLS0gYS9saWIvZXRoZGV2L3J0ZV9ldGhkZXYuaA0KPiA+Pj4+PiArKysgYi9s aWIvZXRoZGV2L3J0ZV9ldGhkZXYuaA0KPiA+Pj4+PiBAQCAtNDg4OCw2ICs0ODg4LDUxIEBAIF9f cnRlX2V4cGVyaW1lbnRhbMKgIGludA0KPiA+Pj4+PiBydGVfZXRoX3JlcHJlc2VudG9yX2luZm9f Z2V0KHVpbnQxNl90IHBvcnRfaWQsDQo+ID4+Pj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgc3RydWN0IHJ0ZV9ldGhfcmVwcmVzZW50b3JfaW5mbyAqaW5mbyk7DQo+ID4+ Pj4+DQo+ID4+Pj4+ICsvKiogVGhlIGV0aGRldiBzZWVzIGZsYWdnZWQgcGFja2V0cyBpZiB0aGVy ZSBhcmUgZmxvd3Mgd2l0aA0KPiA+Pj4+PiArYWN0aW9uIEZMQUcuICovICNkZWZpbmUgUlRFX0VU SF9SWF9NRVRBX1VTRVJfRkxBRw0KPiAoVUlOVDY0X0MoMSkgPDwNCj4gPj4+Pj4gKzApDQo+ID4+ Pj4+ICsNCj4gPj4+Pj4gKy8qKiBUaGUgZXRoZGV2IHNlZXMgbWFyayBJRHMgaW4gcGFja2V0cyBp ZiB0aGVyZSBhcmUgZmxvd3Mgd2l0aA0KPiA+Pj4+PiArYWN0aW9uIE1BUksuICovICNkZWZpbmUg UlRFX0VUSF9SWF9NRVRBX1VTRVJfTUFSSw0KPiA+PiAoVUlOVDY0X0MoMSkgPDwNCj4gPj4+Pj4g KzEpDQo+ID4+Pj4+ICsNCj4gPj4+Pj4gKy8qKiBUaGUgZXRoZGV2IGRldGVjdHMgbWlzc2VkIHBh Y2tldHMgaWYgdGhlcmUgYXJlICJ0dW5uZWxfc2V0Ig0KPiA+Pj4+PiArZmxvd3MgaW4gdXNlLiAq LyAjZGVmaW5lIFJURV9FVEhfUlhfTUVUQV9UVU5ORUxfSUQNCj4gKFVJTlQ2NF9DKDEpDQo+ID4+ IDw8DQo+ID4+Pj4+ICsyKQ0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsvKioNCj4gPj4+Pj4gKyAqIEB3 YXJuaW5nDQo+ID4+Pj4+ICsgKiBAYiBFWFBFUklNRU5UQUw6IHRoaXMgQVBJIG1heSBjaGFuZ2Ug d2l0aG91dCBwcmlvciBub3RpY2UNCj4gPj4+Pj4gKyAqDQo+ID4+Pj4+ICsgKiBOZWdvdGlhdGUg ZGVsaXZlcnkgb2Ygc3BlY2lmaWMgcGFydHMgb2YgUnggbWV0YSBkYXRhLg0KPiA+Pj4+PiArICoN Cj4gPj4+Pj4gKyAqIEludm9rZSB0aGlzIEFQSSBiZWZvcmUgdGhlIGZpcnN0IHJ0ZV9ldGhfZGV2 X2NvbmZpZ3VyZSgpDQo+ID4+Pj4+ICtpbnZvY2F0aW9uDQo+ID4+Pj4+ICsgKiB0byBsZXQgdGhl IFBNRCBtYWtlIHByZXBhcmF0aW9ucyB0aGF0IGFyZSBpbmNvbnZlbmllbnQgdG8gZG8NCj4gbGF0 ZXIuDQo+ID4+Pj4+ICsgKg0KPiA+Pj4+PiArICogVGhlIG5lZ290aWF0aW9uIHByb2Nlc3MgaXMg YXMgZm9sbG93czoNCj4gPj4+Pj4gKyAqDQo+ID4+Pj4+ICsgKiAtIHRoZSBhcHBsaWNhdGlvbiBy ZXF1ZXN0cyBmZWF0dXJlcyBpbnRlbmRpbmcgdG8gdXNlIGF0IGxlYXN0DQo+ID4+Pj4+ICtzb21l IG9mIHRoZW07DQo+ID4+Pj4+ICsgKiAtIHRoZSBQTUQgcmVzcG9uZHMgd2l0aCB0aGUgZ3VhcmFu dGVlZCBzdWJzZXQgb2YgdGhlIHJlcXVlc3RlZA0KPiA+Pj4+PiArZmVhdHVyZSBzZXQ7DQo+ID4+ Pj4+ICsgKiAtIHRoZSBhcHBsaWNhdGlvbiBjYW4gcmV0cnkgbmVnb3RpYXRpb24gd2l0aCBhbm90 aGVyIHNldCBvZg0KPiA+Pj4+PiArZmVhdHVyZXM7DQo+ID4+Pj4+ICsgKiAtIHRoZSBhcHBsaWNh dGlvbiBjYW4gcGFzcyB6ZXJvIHRvIGNsZWFyIHRoZSBuZWdvdGlhdGlvbg0KPiA+Pj4+PiArcmVz dWx0Ow0KPiA+Pj4+PiArICogLSB0aGUgbGFzdCBuZWdvdGlhdGVkIHJlc3VsdCB0YWtlcyBlZmZl Y3QgdXBvbiB0aGUgZXRoZGV2IHN0YXJ0Lg0KPiA+Pj4+PiArICoNCj4gPj4+Pj4gKyAqIElmIHRo aXMgQVBJIGlzIHVuc3VwcG9ydGVkLCB0aGUgYXBwbGljYXRpb24gc2hvdWxkIGdyYWNlZnVsbHkN Cj4gPj4+Pj4gaWdub3JlIHRoYXQuDQo+ID4+Pj4+ICsgKg0KPiA+Pj4+PiArICogQHBhcmFtIHBv cnRfaWQNCj4gPj4+Pj4gKyAqwqDCoCBQb3J0IChldGhkZXYpIGlkZW50aWZpZXINCj4gPj4+Pj4g KyAqDQo+ID4+Pj4+ICsgKiBAcGFyYW1baW5vdXRdIGZlYXR1cmVzDQo+ID4+Pj4+ICsgKsKgwqAg RmVhdHVyZSBzZWxlY3Rpb24gYnVmZmVyDQo+ID4+Pj4+ICsgKg0KPiA+Pj4+PiArICogQHJldHVy bg0KPiA+Pj4+PiArICrCoMKgIC0gKC1FQlVTWSkgaWYgdGhlIHBvcnQgY2FuJ3QgaGFuZGxlIHRo aXMgaW4gaXRzIGN1cnJlbnQNCj4gPj4+Pj4gK3N0YXRlOw0KPiA+Pj4+PiArICrCoMKgIC0gKC1F Tk9UU1VQKSBpZiB0aGUgbWV0aG9kIGl0c2VsZiBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZQ0KPiA+ Pj4+PiArUE1EOw0KPiA+Pj4+PiArICrCoMKgIC0gKC1FTk9ERVYpIGlmICpwb3J0X2lkKiBpcyBp bnZhbGlkOw0KPiA+Pj4+PiArICrCoMKgIC0gKC1FSU5WQUwpIGlmICpmZWF0dXJlcyogaXMgTlVM TDsNCj4gPj4+Pj4gKyAqwqDCoCAtICgtRUlPKSBpZiB0aGUgZGV2aWNlIGlzIHJlbW92ZWQ7DQo+ ID4+Pj4+ICsgKsKgwqAgLSAoMCkgb24gc3VjY2Vzcw0KPiA+Pj4+PiArICovDQo+ID4+Pj4+ICtf X3J0ZV9leHBlcmltZW50YWwNCj4gPj4+Pj4gK2ludCBydGVfZXRoX3J4X21ldGFfbmVnb3RpYXRl KHVpbnQxNl90IHBvcnRfaWQsIHVpbnQ2NF90DQo+ID4+Pj4+ICsqZmVhdHVyZXMpOw0KPiA+Pj4+ DQo+ID4+Pj4gSSBkb24ndCB0aGluayBtZXRhIGlzIHRoZSBiZXN0IG5hbWUgc2luY2Ugd2UgYWxz byBoYXZlIG1ldGEgaXRlbQ0KPiA+Pj4+IGFuZCB0aGUgd29yZCBtZXRhIGNhbiBiZSB1c2VkIGlu IG90aGVyIGNhc2VzLg0KPiA+Pj4NCj4gPj4+IEknbSBubyBleHBlcnQgaW4gbmFtaW5nLiBXaGF0 IGNvdWxkIGJlIGEgYmV0dGVyIHRlcm0gZm9yIHRoaXM/DQo+ID4+PiBQZXJzb25hbGx5LCBJJ2Qg cmF0aGVyIG5vdCBwZXJjZWl2ZSAibWV0YSIgdGhlIHdheSB5b3UgZGVzY3JpYmUuDQo+ID4+PiBJ dCdzIG5vdCBqdXN0ICJtZXRhIi4gSXQncyAicnhfbWV0YSIsIGFuZCB0aGUgZmxhZ3Mgc3VwcGxp ZWQgd2l0aA0KPiA+Pj4gdGhpcyBBUEkgcHJvdmlkZSBlbm91Z2ggY29udGV4dCB0byBleHBsYWlu IHdoYXQgaXQncyBhbGwgYWJvdXQuDQo+ID4+DQo+ID4+IFRoaW5raW5nIG92ZXJuaWdodCBhYm91 dCBpdCBJJ2Qgc3VnZ2VzdCBmdWxsICJtZXRhZGF0YSIuDQo+ID4+IFllcywgaXQgd2lsbCBuYW1l IGEgYml0IGxvbmdlciwgYnV0IGxlc3MgY29uZnVzaW5nIHZlcnN1cyB0ZXJtIE1FVEENCj4gPj4g YWxyZWFkeSB1c2VkIGluIGZsb3cgQVBJLg0KPiA+Pg0KPiA+IEZvbGxvd2luZyBteSBhYm92ZSBj b21tZW50cywgSSB0aGluayBpdCBzaG91bGQgYmUgcGFydCBvZiB0aGUgbmV3IEFQSQ0KPiA+IGJ1 dCBpbiBhbnkgY2FzZSB3aGF0IGFib3V0IHJ4X2Zsb3dfYWN0aW9uX25lZ290aWF0ZT8NCj4gDQo+ IFNlZSBteSB0aG91Z2h0cyBhYm92ZS4gSXQgbWFrZXMgbm8gc2Vuc2UgdG8gbmVnb3RpYXRlICpz dXBwb3J0IGZvcg0KPiBhY3Rpb25zKi4gRXhpc3RpbmcgInJ0ZV9mbG93X3ZhbGlkYXRlKCkiIGFs cmVhZHkgZG9lcyB0aGF0IGpvYi4gVGhlIG5ldw0KPiAibmVnb3RpYXRlIFJ4IG1ldGFkYXRhKiBB UEkgaXMgYWxsIGFib3V0ICpkZWxpdmVyeSogb2YgbWV0YWRhdGEgd2hpY2ggaXMNCj4gc3VwcG9z ZWQgdG8gYmUgKmFscmVhZHkqIHNldCBmb3IgdGhlIHBhY2tldHMgKmluc2lkZSogdGhlIE5JQy4g U28sIHdlDQo+IG5lZ290aWF0ZSAqZGVsaXZlcnkgZnJvbSB0aGUgTklDIHRvIHRoZSBob3N0Ki4g Tm90aGluZyBtb3JlLg0KPiANCkFncmVlIHdpdGggeW91ciBjb21tZW50IGJ1dCB0aGVuIG1heWJl IHdlIHNob3VsZCBnbyB0byB0aGUgcmVnaXN0ZXINCmFwcHJvYWNoIGp1c3QgbGlrZSBtZXRhZGF0 YT8NCg0KQmVzdCwNCk9yaQ0KPiA+DQo+ID4+IEFuZHJldy4NCj4gPiBCZXN0LA0KPiA+IE9yaQ0K PiA+DQo+IA0KPiAtLQ0KPiBJdmFuIE0NCg==