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 B055FA034F; Sun, 3 Oct 2021 09:42:23 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 2ED774068E; Sun, 3 Oct 2021 09:42:23 +0200 (CEST) Received: from NAM02-SN1-obe.outbound.protection.outlook.com (mail-sn1anam02on2068.outbound.protection.outlook.com [40.107.96.68]) by mails.dpdk.org (Postfix) with ESMTP id CF0884067B for ; Sun, 3 Oct 2021 09:42:21 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=cpujoZ8XRRk+qhCRVhWEjRrjNu5hluKl+81WwCDp0SRKUd34p/hPCUjsx+4kf6TPgu84wbTO/ivrnRl4rl54ggzPZdvz47qEz0wHu/ulgmy7q5Gbvugkg3h6JIF2+MyLnJHIeiROZ9u60+RmvEBC0/JuGtw3YtvWtc3CMU4JSi5+6mRCFnskr0ZNgOfqykk5ICdEGLTgwiS8IncdE6vtPxk5yl1Dp/68zvZYx6QtF3CQFF5PEXswLUlXSlHbrjhkbs+/ckBEeuRrC+HaFO/F6suF41PDNDQj6f5pbJB3TZDiGuSRXbI34McIYRZGIDYn9uMVE8ABq+0+Hscvc26q9Q== 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=LFp7pC3NzaeXpd0a0DNn6OTJDh35HVDUBAbGq4CKC1M=; b=PF5xDWoxX2HskyeAj+DFrtXoLRmcXPICmZg87xt3CTm7aXZLvBcp1iX0yb9ZlyQrFQ83b0rixqOtNdP8s8y/I2m/SAdS3ZDna5UBaxtiM8qzEOOiHQwGsB6XHv+I7jwHGd6ZkA5kf9l4U3Hdgslzjm0dU1/aAGba4bFPSvPmYKSRGux8M7PcTNC34T0w3m9sdzixYzOdInBKDNkja+BRfG3vtHy+uecwg+YJVDOixCBRmET9vfhOUVK8fr6SgzhxiVbOLsyXAJZe2mOIdl8fQNX1sr5ZN1GrMjvgkZnqdbKeZf7DMnuNsQwLKIAGNaeG+1lPytal88N5DmxvOvKPlA== 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=LFp7pC3NzaeXpd0a0DNn6OTJDh35HVDUBAbGq4CKC1M=; b=udrLE2Y9y1uq3pJVbtaCCfb6fSv3ziLkY59pcTpaciOxJQCqzL7zMP34EXg7wCwwXqQO/pid7apsPnN/uoNygQjV4mjFwasNLoQnAo1dTED6rq1Bt4qtNDgbU3ozhDn/JFcVuQ+Hi7Dh+m+/CZfjF+aKJxlmymorRJdGmFK4+Ev+FT8KOy1VT6H+E51cqNcG6XqXPZgUnZUvGarODniq760NxyfUL+p32z5LUVmaKE3+di810W1oK5EPPR0JSfWrQ+cznIOqpMqfJTnGP2I/je84qUgiWh1qalOt8zA+LSLeMJa/XMF0CZxBdf1CtB8NGNrAKHQp4sdDVaCnz+xdpg== Received: from DM8PR12MB5400.namprd12.prod.outlook.com (2603:10b6:8:3b::12) by DM4PR12MB5310.namprd12.prod.outlook.com (2603:10b6:5:39e::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4566.16; Sun, 3 Oct 2021 07:42:19 +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 07:42:19 +0000 From: Ori Kam To: Andrew Rybchenko , Ivan Malov , "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: AQHXsG0EGYKwxu5FGk6rpb3sj4WbEKu8simggABJ14CAAMRGAIADKRXQ Date: Sun, 3 Oct 2021 07:42:19 +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> 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-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 70536220-0d01-4f3c-2f65-08d986415488 x-ms-traffictypediagnostic: DM4PR12MB5310: 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:454; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: r91rHQOhhgfBGIXG0rVOZ6Mo5Rfa0VcQ/VhAG21u/OWZaAaMbHaIojrzaTYRZWDbJBS1U0XMtjvJwk/LSKOlhMoE7sBF/fcgUTxvsEhDzPbu4ddURZ11QAFGXzcdbow2ITt/AFZcfuYBNbzMN/jmiuk/+ywj5Dg9QU15yQ+TilFZwRAyttEhwECHFTH54M52URKV7hvncaymjLRPXs07b5lbovfOxtqXoXK+fH9y5+QFvK6S6NFBkLsUMK90WagOl359FWG+WXftj8njq2I9Li0brIqCgNXewHUimIdbSs2//O5lyfOTaRc4FYA42fitpBT1MYc9NNXDWI4x43Fj+VjGOZbvd0AqtOybki0I2xg3TALxf80oN8n6PLMv9fBTYTITJ7bQikPLVbO8bbKaR/WqDGp/digsTrPVz//3pYBAQk1HhG8xRpLdADuzF4tTsNjFQuNgSAyiwRnAu3W2iXVinDLl8f8Q4IDFhfmGXiHN1eORhxp3MAw/g0WBeEfvWsTTU/ZTZmkJQxl59q5veStwQC4GZi1gBuGVqA2VZNx/uia5TaZKpj0rq7ECaOGp2z8OD645kLVLcEng2lUVZw1wVwNeXMVmZk29XoUXavKDtC3fD3Wr/rz284chVEkaHScALJaKV1vxIJBV/LPMMBnt5Eupxr/JcJ5qND0qLMlNqVQYCqkZZS6xhR1ubUGlj646asQG/1qNAS/Fja8qVw== 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)(6506007)(9686003)(38070700005)(55016002)(53546011)(71200400001)(54906003)(316002)(4326008)(66476007)(508600001)(83380400001)(30864003)(2906002)(38100700002)(76116006)(86362001)(8676002)(5660300002)(8936002)(7696005)(52536014)(33656002)(122000001)(110136005)(186003)(66446008)(66556008)(64756008)(66946007); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?TldxaGNETHEyekFoSGd0Ymh3dmNkTE1wSlo1b2tCL2tkcENiWjVjdWhHaWlx?= =?utf-8?B?encyYnQyQVkwTXZEVE1SdzMzVytGMHZBQnNLY1hadklmc2xzQTFpTWI5MFFS?= =?utf-8?B?TmZma2o2UDA0THZyaStrSnVqNUt3VCtnS0xqMElFTThKcG9LQktpa2ZUWlgr?= =?utf-8?B?Um1zQ0hJNDRscWwzT2hJMjdZYitlYlJzMFd1eEtvdHJaK1pSTmJ2M0pZSWFL?= =?utf-8?B?YzY0aXZ6UjI1WEoxbHl6WnV4Y050eGVveXBIZnZXbXNuL2hiUzJSUUtvaVRr?= =?utf-8?B?ZmRZbTlHRmNOdTcxakdZYnFEcHQ1MWJpV3dsR0VBUloxVWIwTU5OeVR2OWpu?= =?utf-8?B?UUJuUEJzODhPd25nTUtyNGFrOWVuQXhQdUVOZ01RcWRnUnBud1U0VFIxdVNB?= =?utf-8?B?SXlIc3daRkNWQWlwN2svT3czRjEvVlhRSWhRbndseTZXLzJmc3FkaDFIMDBP?= =?utf-8?B?R0lWYTZ0TWR0UllCTTRXZVU2M3ZzNjF1aHFSOUpTc0ZFM29QSitvWm9mKzNW?= =?utf-8?B?VFNJQXFMSTZDMGJxNzI4aWhYbjJheFJRd3JJS1JLVmRHNUtVdEwwSzRvNUli?= =?utf-8?B?aGFhOTNRL0xwblF2cEtmT0tKa2IrWFd1UWd6SlRlWFRKZGt2cEx4cDRwMzZN?= =?utf-8?B?SzNPbWxWeGNQb292SDJ6STFLekRZWi9jVm5hVTZWRnhYRmJ4ZTk4cFlQVk1y?= =?utf-8?B?cXluNS83LzVFdFZRNmt5V3djQndqZW81MDVxRXN0V3o3UnRqVUVScC8ydUVr?= =?utf-8?B?UVBHR2laMFVEY2ZFbDFiT1dRTkEvOU44NTA3b3Zsby9qZGxCTlFoOGFuSG5E?= =?utf-8?B?Y3d3bXF3R3dDWUhpWjlwZUZRYThVSXFTWnV1VU5hOXExWDQ4K0ZDandZRzZq?= =?utf-8?B?VzNFZnNZV0VZd2pXb1U4endkZkVZdU9lQU96NUJuU3RwRm9PeXdYTm5hVkdF?= =?utf-8?B?bEJjdkY0RDhaMU00VDJ3Yko0TEJDSEJNZ0kxVTUwdy9UV1RYN0hWZm1QWXJK?= =?utf-8?B?c0tMV1dQOWhPTTNlelFQcXdGcEZaMlc5ZTROMkw4aUNyVlNjSEo3Ym4rUGtE?= =?utf-8?B?Tklwb09aUjJJUTBxSjNHRWJrT1JLSVVlU1RVOWZxeFI0ejBISkZ0QUxGb09Y?= =?utf-8?B?RzZOS2ZMY0taOUpSdzdBYkU3RzdrTU56V1c4OWh3bjNTWDc4ZDNhR2p4V1hJ?= =?utf-8?B?a2dTWTY5SVkzbEFrNk1pTUJUVDdWNW9tbEhCOEhqQkVpL3VGZk15ZHMzelNO?= =?utf-8?B?akNlNGs5N2JnczJBcmhYUmcwdkIrZDM1ZlpkWWVaelowTXN6b1dkWUhVWnNM?= =?utf-8?B?aUVpQURTSzRmNTZaVTI0WmN3dnFNQndncjJ2MkdlWXNjSTJrMHdqNmE4Zjdq?= =?utf-8?B?bnlIYkZTck12aXduUWVmLzRmM2RLb2JFZWt5c251RTFZNThZelFzQU10dXB0?= =?utf-8?B?alZ0ejNqREd5KzdTbG1LOUVkeGI5cnM5cEpPTTdENStvNkJvajBNd3FVWjZ2?= =?utf-8?B?M1dyRmxHdEhvTS80MnF6Z0NZbVpwSGNiSUpWM2VKaThYVUR2eEh4ejA3OW54?= =?utf-8?B?d3l3djZ4ak1sSHNDdmhtNjlrcjFLNmFCNUduMHlSbkV6NkNiRWJIUnA1TmJV?= =?utf-8?B?MlRLN2ZTdjB0NjJNMmNuSWRkTE91T085NUd3cUNmV00rUjBKN2UzWWZEaDA5?= =?utf-8?B?a29WSXFZcy8yZ2pYdXR6cm9OQUpNK0RVQ2ZBZjJicS9sWUFKM2E2S0dyZnZK?= =?utf-8?B?UitVZDRVcnRYVmQ2T1BORWlmc3ViNVpFNy9xNXlyMEJDSjFUc1JhYSsrVWt1?= =?utf-8?B?aWtXbzBER0hMMEc5WjBvQW1TM1BpWjR1c0FiejU2Vyt0b001M2VLTGVaaldQ?= =?utf-8?Q?tLzmvEzNVcgt5?= 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: 70536220-0d01-4f3c-2f65-08d986415488 X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Oct 2021 07:42:19.7538 (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: gNr+WvtMFK2wLKjwRWg4dOJPNLEIrmCMHjkhwmDlcn4s9gEgZH2fdQTYcR7rRPtFPDDdxPZJoDACeu8xKW4QGg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB5310 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" SGkgQW5kcmV3IGFuZCBJdmFuLA0KDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4g RnJvbTogQW5kcmV3IFJ5YmNoZW5rbyA8YW5kcmV3LnJ5YmNoZW5rb0Bva3RldGxhYnMucnU+DQo+ IFNlbnQ6IEZyaWRheSwgT2N0b2JlciAxLCAyMDIxIDk6NTAgQU0NCj4gU3ViamVjdDogUmU6IFtQ QVRDSCB2MyAxLzVdIGV0aGRldjogYWRkIEFQSSB0byBuZWdvdGlhdGUgZGVsaXZlcnkgb2YgUngg bWV0YQ0KPiBkYXRhDQo+IA0KPiBPbiA5LzMwLzIxIDEwOjA3IFBNLCBJdmFuIE1hbG92IHdyb3Rl Og0KPiA+IEhpIE9yaSwNCj4gPg0KPiA+IE9uIDMwLzA5LzIwMjEgMTc6NTksIE9yaSBLYW0gd3Jv dGU6DQo+ID4+IEhpIEl2YW4sDQo+ID4+IFNvcnJ5IGZvciBqdW1waW5nIGluIGxhdGUuDQo+ID4N Cj4gPiBObyB3b3JyaWVzLiBUaGF0J3MgT0suDQo+ID4NCj4gPj4gSSBoYXZlIGEgY29uY2VybiB0 aGF0IHRoaXMgcGF0Y2ggYnJlYWtzIG90aGVyIFBNRHMuDQo+ID4NCj4gPiBJdCBkb2VzIG5vIHN1 Y2ggdGhpbmcuDQo+ID4NCj4gPj4+IEZyb20gdGhlIHJzdCBmaWxlICIgT25lIHNob3VsZCBuZWdv dGlhdGUgZmxhZyBkZWxpdmVyeSBiZWZvcmVoYW5kIg0KPiA+PiBzaW5jZSB5b3Ugb25seSBhZGRl ZCB0aGlzIGZ1bmN0aW9uIGZvciB5b3VyIFBNRCBhbGwgb3RoZXIgUE1EIHdpbGwgZmFpbC4NCj4g Pj4gSSBzZWUgdGhhdCB5b3UgYWRkZWQgZXhjZXB0aW9uIGluIHRoZcKgIGV4YW1wbGVzLCBidXQg aXQgZG9lc24ndCBtYWtlDQo+ID4+IHNlbnNlIHRoYXQgYXBwbGljYXRpb25zIHdpbGwgYWxzbyBu ZWVkIHRvIGFkZCB0aGlzIGV4Y2VwdGlvbiB3aGljaCBpcw0KPiA+PiBub3QgZG9jdW1lbnRlZC4N Cj4gPg0KPiA+IFNheSwgeW91IGhhdmUgYW4gYXBwbGljYXRpb24sIGFuZCB5b3UgdXNlIGl0IHdp dGggc29tZSBzcGVjaWZpYyBQTUQuDQo+ID4gU2F5LCB0aGF0IFBNRCBkb2Vzbid0IHJ1biBpbnRv IHRoZSBwcm9ibGVtIGFzIG91cnMgZG9lcy4gSW4gb3RoZXINCj4gPiB3b3JkcywgdGhlIHVzZXIg Y2FuIGluc2VydCBhIGZsb3cgd2l0aCBhY3Rpb24gTUFSSyBhdCBhbnkgcG9pbnQgYW5kDQo+ID4g Z2V0IG1hcmsgZGVsaXZlcnkgd29ya2luZyBzdGFydGluZyBmcm9tIHRoYXQgbW9tZW50IHdpdGhv dXQgYW55DQo+ID4gcHJvYmxlbS4gU2F5LCB0aGlzIGlzIGV4YWN0bHkgdGhlIHdheSBob3cgaXQg d29ya3MgZm9yIHlvdSBhdCB0aGUgbW9tZW50Lg0KPiA+DQo+ID4gTm93LiBUaGlzIG5ldyBBUEkg a2lja3MgaW4uIFdlIHVwZGF0ZSB0aGUgYXBwbGljYXRpb24gdG8gaW52b2tlIGl0IGFzDQo+ID4g ZWFybHkgYXMgcG9zc2libGUuIEJ1dCB5b3VyIFBNRCBpbiBxdWVzdGlvbiBzdGlsbCBkb2Vzbid0 IHN1cHBvcnQgdGhpcw0KPiA+IEFQSS4gVGhlIGNvbW1lbnQgaW4gdGhlIHBhdGNoIHNheXMgdGhh dCBpZiB0aGUgbWV0aG9kIHJldHVybnMgRU5PVFNVUCwNCj4gPiB0aGUgYXBwbGljYXRpb24gc2hv dWxkIGlnbm9yZSB0aGF0IHdpdGhvdXQgYmF0dGluZyBhbiBleWVsaWQuIEl0DQo+ID4gc2hvdWxk IGp1c3Qga2VlcCBvbiB3b3JraW5nIGFzIGl0IGRpZCBiZWZvcmUgdGhlIGludHJvZHVjdGlvbiBv ZiB0aGlzIEFQSS4NCj4gPg0KDQpJIHVuZGVyc3RhbmQgdGhhdCBpdCBpcyBuaWNlIHRvIHdyaXRl IGluIHRoZSBwYXRjaCBjb21tZW50IHRoYXQgYXBwbGljYXRpb24NCnNob3VsZCBkaXNyZWdhcmQg dGhpcyBmdW5jdGlvbiBpbiBjYXNlIG9mIA0KRU5PVFNVUCBidXQgaW4gYSBmZXcgbW9udGggc29t ZW9uZSB3aWxsIHJlYWQgdGhlIG9mZmljaWFsIGRvYywNCndoZXJlIGl0IGlzIHN0YXRlZCB0aGF0 IHRoaXMgZnVuY3Rpb24gY2FsbCBpcyBhIG11c3QgYW5kIHRoZW4gd2hhdCBkbyB5b3UNCnRoaW5r IHRoZSBhcHBsaWNhdGlvbiB3aWxsIGRvPw0KSSB0aGluayB0aGF0IHRoZSBjb3JyZWN0IHdheSBp cyB0byBhZGQgdGhpcyBmdW5jdGlvbiB0byBhbGwgUE1Ecy4NCkFub3RoZXIgb3B0aW9uIGlzIHRv IGFkZCB0byB0aGUgZG9jIHRoYXQgaWYgdGhlIGZ1bmN0aW9uIGlzIHJldHVybmluZyBFTk9UU1VQ DQp0aGUgYXBwbGljYXRpb24gc2hvdWxkIGFzc3VtZSB0aGF0IGFsbCBpcyBzdXBwb3J0ZWQuDQog DQpTbyBmcm9tIHRoaXMgcG9pbnQgb2YgdmlldyB0aGVyZSBpcyBBUEkgYnJlYWsuDQoNCj4gPiBN b3JlIHNwZWNpZmljIGV4YW1wbGU6DQo+ID4gU2F5LCB0aGUgYXBwbGljYXRpb24gZG9lc24ndCBt aW5kIHVzaW5nIGVpdGhlciAiUlNTICsgTUFSSyIgb3IgdHVubmVsDQo+ID4gb2ZmbG9hZC4gV2hh dCBpdCBkb2VzIHJpZ2h0IG5vdyBpcyBhdHRlbXB0IHRvIGluc2VydCB0dW5uZWwgZmxvd3MNCj4g PiBmaXJzdCBhbmQsIGlmIHRoaXMgZmFpbHMsIGZhbGwgYmFjayB0byAiUlNTICsgTUFSSyIuIFdp dGggdGhpcyBBUEksDQo+ID4gdGhlIGFwcGxpY2F0aW9uIHdpbGwgdHJ5IHRvIGludm9rZSB0aGlz IEFQSSB3aXRoICJVU0VSX01BUksgfA0KPiA+IFRVTk5FTF9JRCIgaW4gYWRhcHRlciBpbml0aWFs aXNlZCBzdGF0ZS4gSWYgdGhlIFBNRCBzYXlzIHRoYXQgaXQgY2FuDQo+ID4gb25seSBlbmFibGUg dGhlIHR1bm5lbCBvZmZsb2FkLCB0aGVuIHRoZSBhcHBsaWNhdGlvbiB3aWxsIGdldCB0aGUNCj4g PiBrbm93bGVkZ2UgdGhhdCBpdCBkb2Vzbid0IG1ha2Ugc2Vuc2UgdG8gZXZlbiB0cnkgaW5zZXJ0 aW5nICJSU1MgKw0KPiA+IE1BUksiIGZsb3dzLiBJdCBqdXN0IGNhbiBza2lwIHVzZWxlc3MgYWN0 aW9ucy4gQnV0IGlmIHRoZSBQTUQgZG9lc24ndA0KPiA+IHN1cHBvcnQgdGhlIG1ldGhvZCwgdGhl IGFwcGxpY2F0aW9uIHdpbGwgc2VlIEVOT1RTVVAgYW5kIGhhbmRsZSB0aGlzDQo+ID4gZ3JhY2Vm dWxseTogaXQgd2lsbCBtYWtlIG5vIGFzc3VtcHRpb25zIGFib3V0IHdoYXQncyBndWFyYW50ZWVk IHRvIGJlDQo+ID4gc3VwcG9ydGVkIGFuZCB3aGF0J3Mgbm90IGFuZCB3aWxsIGp1c3Qga2VlcCBv biBpdHMgb2xkIGJlaGF2aW9yOiB0cnkNCj4gPiB0byBpbnNlcnQgYSBmbG93LCBmYWlsLCBmYWxs IGJhY2sgdG8gYW5vdGhlciB0eXBlIG9mIGZsb3cuDQo+ID4NCg0KSSBmdWxseSBhZ3JlZSB3aXRo IHlvdXIgZXhhbXBsZSwgYW5kIHRoaW5rIHRoYXQgdGhpcyBpcyB0aGUgd2F5DQp0byBnbywgYXBw bGljYXRpb24gc2hvdWxkIHN1cHBseSBhcyBtdWNoIGluZm8gYXMgcG9zc2libGUgZHVyaW5nIHN0 YXJ0dXAuDQpNeSBxdWVzdGlvbi9jb21tZW50IGlzIHRoZSBuZWdvdGlhdGVkIHJlc3VsdCBtZWFu cyB0aGF0IGFsbCBvZiB0aGUgYWN0aW9ucw0KYXJlIHN1cHBvcnRlZCBvbiB0aGUgc2FtZSBydWxl Pw0KZm9yIGV4YW1wbGUgaWYgYXBwbGljYXRpb24gd2FudHMgdG8gYWRkIG1hcmsgYW5kIHRhZyBv biB0aGUgc2FtZSBydWxlLg0KKEkga25vdyBpdCBkb2Vzbid0IG1ha2UgbXVjaCBzZW5zZSkgYW5k IHRoZSBQTUQgY2FuIHN1cHBvcnQgYm90aCBvZiB0aGVtDQpidXQgbm90IG9uIHRoZSBzYW1lIHJ1 bGUsIHdoYXQgc2hvdWxkIGl0IHJldHVybj8NCk9yIGZvciBleGFtcGxlIGlmIHVzaW5nIHRoZSBt YXJrIGNhbiBvbmx5IGJlIHN1cHBvcnRlZCBpZiBubyBkZWNhcCBhY3Rpb24gaXMgc2V0DQpvbiB0 aGlzIHJ1bGUgd2hhdCBzaG91bGQgYmUgdGhlIHJlc3VsdD8NCkZyb20gbXkgdW5kc3RhbmRpbmcg dGhpcyBmdW5jdGlvbiBpcyBvbmx5IHRvIGxldCB0aGUgUE1EIGtub3cgdGhhdCBvbiBzb21lDQpy dWxlcyB0aGUgYXBwbGljYXRpb24gd2lsbCB1c2UgdGhvc2UgYWN0aW9ucywgdGhlIGNoZWNraW5n IGlmIHRoZSBhY3Rpb24gY29tYmluYXRpb24NCmlzIHZhbGlkIG9ubHkgaGFwcGVucyBvbiB2YWxp ZGF0ZSBmdW5jdGlvbiByaWdodD8NCg0KSW4gYW55IGNhc2UgSSB0aGluayB0aGlzIGlzIGdvb2Qg aWRlYSBhbmQgSSB3aWxsIHNlZSBob3cgd2UgY2FuIGFkZCBhIG1vcmUgZ2VuZXJpYyBhcHByb2Fj aCBvZg0KdGhpcyBBUEkgdG8gdGhlIG5ldyBBUEkgdGhhdCBJJ20gZ29pbmcgdG8gcHJlc2VudC4N Cg0KDQo+ID4gU28gbm8gYnJlYWthZ2VzIHdpdGggdGhpcyBBUEkuDQo+ID4NCj4gPj4NCj4gPj4g UGxlYXNlIHNlZSBtb3JlIGNvbW1lbnRzIGlubGluZS4NCj4gPj4NCj4gPj4gVGhhbmtzLA0KPiA+ PiBPcmkNCj4gPj4NCj4gPj4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4+PiBGcm9t OiBJdmFuIE1hbG92IDxpdmFuLm1hbG92QG9rdGV0bGFicy5ydT4NCj4gPj4+IFNlbnQ6IFRodXJz ZGF5LCBTZXB0ZW1iZXIgMjMsIDIwMjEgMjoyMCBQTQ0KPiA+Pj4gU3ViamVjdDogW1BBVENIIHYz IDEvNV0gZXRoZGV2OiBhZGQgQVBJIHRvIG5lZ290aWF0ZSBkZWxpdmVyeSBvZiBSeA0KPiA+Pj4g bWV0YSBkYXRhDQo+ID4+Pg0KPiA+Pj4gRGVsaXZlcnkgb2YgbWFyaywgZmxhZyBhbmQgdGhlIGxp a2VzIG1pZ2h0IGFmZmVjdCBzbWFsbCBwYWNrZXQNCj4gPj4+IHBlcmZvcm1hbmNlLg0KPiA+Pj4g SWYgdGhlc2UgZmVhdHVyZXMgYXJlIGRpc2FibGVkIGJ5IGRlZmF1bHQsIGVuYWJsaW5nIHRoZW0g aW4gc3RhcnRlZA0KPiA+Pj4gc3RhdGUgd2l0aG91dCBjYXVzaW5nIHRyYWZmaWMgZGlzcnVwdGlv biBtYXkgbm90IGFsd2F5cyBiZSBwb3NzaWJsZS4NCj4gPj4+DQo+ID4+PiBMZXQgYXBwbGljYXRp b25zIG5lZ290aWF0ZSBkZWxpdmVyeSBvZiBSeCBtZXRhIGRhdGEgYmVmb3JlaGFuZC4NCj4gPj4+ DQo+ID4+PiBTaWduZWQtb2ZmLWJ5OiBJdmFuIE1hbG92IDxpdmFuLm1hbG92QG9rdGV0bGFicy5y dT4NCj4gPj4+IFJldmlld2VkLWJ5OiBBbmRyZXcgUnliY2hlbmtvIDxhbmRyZXcucnliY2hlbmtv QG9rdGV0bGFicy5ydT4NCj4gPj4+IFJldmlld2VkLWJ5OiBBbmR5IE1vcmV0b24gPGFtb3JldG9u QHhpbGlueC5jb20+DQo+ID4+PiBBY2tlZC1ieTogUmF5IEtpbnNlbGxhIDxtZHJAYXNocm9lLmV1 Pg0KPiA+Pj4gQWNrZWQtYnk6IEplcmluIEphY29iIDxqZXJpbmpAbWFydmVsbC5jb20+DQo+ID4+ PiAtLS0NCj4gPj4+IMKgIGFwcC90ZXN0LWZsb3ctcGVyZi9tYWluLmPCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCB8IDIxICsrKysrKysrKysrKw0KPiA+Pj4gwqAgYXBwL3Rlc3QtcG1kL3Rlc3Rw bWQuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgMjYgKysrKysrKysrKysrKysr DQo+ID4+PiDCoCBkb2MvZ3VpZGVzL3JlbF9ub3Rlcy9yZWxlYXNlXzIxXzExLnJzdCB8wqAgOSAr KysrKysNCj4gPj4+IMKgIGxpYi9ldGhkZXYvZXRoZGV2X2RyaXZlci5owqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHwgMTkgKysrKysrKysrKysNCj4gPj4+IMKgIGxpYi9ldGhkZXYvcnRlX2V0aGRl di5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgMjUgKysrKysrKysrKysrKysNCj4g Pj4+IMKgIGxpYi9ldGhkZXYvcnRlX2V0aGRldi5owqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHwgNDUNCj4gPj4+ICsrKysrKysrKysrKysrKysrKysrKysrKysrDQo+ID4+PiDCoCBsaWIv ZXRoZGV2L3J0ZV9mbG93LmjCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgMTIg KysrKysrKw0KPiA+Pj4gwqAgbGliL2V0aGRldi92ZXJzaW9uLm1hcMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHzCoCAzICsrDQo+ID4+PiDCoCA4IGZpbGVzIGNoYW5nZWQsIDE2MCBp bnNlcnRpb25zKCspDQo+ID4+Pg0KPiA+Pj4gZGlmZiAtLWdpdCBhL2FwcC90ZXN0LWZsb3ctcGVy Zi9tYWluLmMgYi9hcHAvdGVzdC1mbG93LXBlcmYvbWFpbi5jDQo+ID4+PiBpbmRleCA5YmU4ZWRj MzFkLi40OGVhZmZmYjFkIDEwMDY0NA0KPiA+Pj4gLS0tIGEvYXBwL3Rlc3QtZmxvdy1wZXJmL21h aW4uYw0KPiA+Pj4gKysrIGIvYXBwL3Rlc3QtZmxvdy1wZXJmL21haW4uYw0KPiA+Pj4gQEAgLTE3 NjAsNiArMTc2MCwyNyBAQCBpbml0X3BvcnQodm9pZCkNCj4gPj4+IMKgwqDCoMKgwqDCoMKgwqDC oCBydGVfZXhpdChFWElUX0ZBSUxVUkUsICJFcnJvcjogY2FuJ3QgaW5pdCBtYnVmIHBvb2xcbiIp Ow0KPiA+Pj4NCj4gPj4+IMKgwqDCoMKgwqAgZm9yIChwb3J0X2lkID0gMDsgcG9ydF9pZCA8IG5y X3BvcnRzOyBwb3J0X2lkKyspIHsNCj4gPj4+ICvCoMKgwqDCoMKgwqDCoCB1aW50NjRfdCByeF9t ZXRhX2ZlYXR1cmVzID0gMDsNCj4gPj4+ICsNCj4gPj4+ICvCoMKgwqDCoMKgwqDCoCByeF9tZXRh X2ZlYXR1cmVzIHw9IFJURV9FVEhfUlhfTUVUQV9VU0VSX0ZMQUc7DQo+ID4+PiArwqDCoMKgwqDC oMKgwqAgcnhfbWV0YV9mZWF0dXJlcyB8PSBSVEVfRVRIX1JYX01FVEFfVVNFUl9NQVJLOw0KPiA+ Pj4gKw0KPiA+Pj4gK8KgwqDCoMKgwqDCoMKgIHJldCA9IHJ0ZV9ldGhfcnhfbWV0YV9uZWdvdGlh dGUocG9ydF9pZCwNCj4gPj4+ICZyeF9tZXRhX2ZlYXR1cmVzKTsNCj4gPj4+ICvCoMKgwqDCoMKg wqDCoCBpZiAocmV0ID09IDApIHsNCj4gPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmICgh KHJ4X21ldGFfZmVhdHVyZXMgJg0KPiA+Pj4gUlRFX0VUSF9SWF9NRVRBX1VTRVJfRkxBRykpIHsN Cj4gPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcHJpbnRmKCI6OiBmbG93IGFj dGlvbiBGTEFHIHdpbGwgbm90IGFmZmVjdCBSeA0KPiA+Pj4gbWJ1ZnMgb24gcG9ydD0ldVxuIiwN Cj4gPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwb3J0 X2lkKTsNCj4gPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0NCj4gPj4+ICsNCj4gPj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmICghKHJ4X21ldGFfZmVhdHVyZXMgJg0KPiA+Pj4gUlRF X0VUSF9SWF9NRVRBX1VTRVJfTUFSSykpIHsNCj4gPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgcHJpbnRmKCI6OiBmbG93IGFjdGlvbiBNQVJLIHdpbGwgbm90IGFmZmVjdCBSeA0K PiA+Pj4gbWJ1ZnMgb24gcG9ydD0ldVxuIiwNCj4gPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwb3J0X2lkKTsNCj4gPj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIH0NCj4gPj4+ICvCoMKgwqDCoMKgwqDCoCB9IGVsc2UgaWYgKHJldCAhPSAtRU5PVFNV UCkgew0KPiA+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcnRlX2V4aXQoRVhJVF9GQUlMVVJF LCAiRXJyb3Igd2hlbiBuZWdvdGlhdGluZyBSeA0KPiA+Pj4gbWV0YSBmZWF0dXJlcyBvbiBwb3J0 PSV1OiAlc1xuIiwNCj4gPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwb3J0 X2lkLCBydGVfc3RyZXJyb3IoLXJldCkpOw0KPiA+Pj4gK8KgwqDCoMKgwqDCoMKgIH0NCj4gPj4+ ICsNCj4gPj4+IMKgwqDCoMKgwqDCoMKgwqDCoCByZXQgPSBydGVfZXRoX2Rldl9pbmZvX2dldChw b3J0X2lkLCAmZGV2X2luZm8pOw0KPiA+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChyZXQgIT0g MCkNCj4gPj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJ0ZV9leGl0KEVYSVRfRkFJTFVS RSwgZGlmZiAtLWdpdA0KPiA+Pj4gYS9hcHAvdGVzdC1wbWQvdGVzdHBtZC5jIGIvYXBwL3Rlc3Qt cG1kL3Rlc3RwbWQuYyBpbmRleA0KPiA+Pj4gOTdhZTUyZTE3ZS4uN2E4ZGEzZDdhYiAxMDA2NDQN Cj4gPj4+IC0tLSBhL2FwcC90ZXN0LXBtZC90ZXN0cG1kLmMNCj4gPj4+ICsrKyBiL2FwcC90ZXN0 LXBtZC90ZXN0cG1kLmMNCj4gPj4+IEBAIC0xNDg1LDEwICsxNDg1LDM2IEBAIHN0YXRpYyB2b2lk DQo+ID4+PiDCoCBpbml0X2NvbmZpZ19wb3J0X29mZmxvYWRzKHBvcnRpZF90IHBpZCwgdWludDMy X3Qgc29ja2V0X2lkKcKgIHsNCj4gPj4+IMKgwqDCoMKgwqAgc3RydWN0IHJ0ZV9wb3J0ICpwb3J0 ID0gJnBvcnRzW3BpZF07DQo+ID4+PiArwqDCoMKgIHVpbnQ2NF90IHJ4X21ldGFfZmVhdHVyZXMg PSAwOw0KPiA+Pj4gwqDCoMKgwqDCoCB1aW50MTZfdCBkYXRhX3NpemU7DQo+ID4+PiDCoMKgwqDC oMKgIGludCByZXQ7DQo+ID4+PiDCoMKgwqDCoMKgIGludCBpOw0KPiA+Pj4NCj4gPj4+ICvCoMKg wqAgcnhfbWV0YV9mZWF0dXJlcyB8PSBSVEVfRVRIX1JYX01FVEFfVVNFUl9GTEFHOw0KPiA+Pj4g K8KgwqDCoCByeF9tZXRhX2ZlYXR1cmVzIHw9IFJURV9FVEhfUlhfTUVUQV9VU0VSX01BUks7DQo+ ID4+PiArwqDCoMKgIHJ4X21ldGFfZmVhdHVyZXMgfD0gUlRFX0VUSF9SWF9NRVRBX1RVTk5FTF9J RDsNCj4gPj4+ICsNCj4gPj4+ICvCoMKgwqAgcmV0ID0gcnRlX2V0aF9yeF9tZXRhX25lZ290aWF0 ZShwaWQsICZyeF9tZXRhX2ZlYXR1cmVzKTsNCj4gPj4+ICvCoMKgwqAgaWYgKHJldCA9PSAwKSB7 DQo+ID4+PiArwqDCoMKgwqDCoMKgwqAgaWYgKCEocnhfbWV0YV9mZWF0dXJlcyAmIFJURV9FVEhf UlhfTUVUQV9VU0VSX0ZMQUcpKSB7DQo+ID4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBURVNU UE1EX0xPRyhJTkZPLCAiRmxvdyBhY3Rpb24gRkxBRyB3aWxsIG5vdA0KPiA+Pj4gYWZmZWN0IFJ4 IG1idWZzIG9uIHBvcnQgJXVcbiIsDQo+ID4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgcGlkKTsNCj4gPj4+ICvCoMKgwqDCoMKgwqDCoCB9DQo+ID4+PiArDQo+ID4+ PiArwqDCoMKgwqDCoMKgwqAgaWYgKCEocnhfbWV0YV9mZWF0dXJlcyAmIFJURV9FVEhfUlhfTUVU QV9VU0VSX01BUkspKQ0KPiA+Pj4gew0KPiA+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgVEVT VFBNRF9MT0coSU5GTywgIkZsb3cgYWN0aW9uIE1BUksgd2lsbCBub3QNCj4gPj4+IGFmZmVjdCBS eCBtYnVmcyBvbiBwb3J0ICV1XG4iLA0KPiA+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHBpZCk7DQo+ID4+PiArwqDCoMKgwqDCoMKgwqAgfQ0KPiA+Pj4gKw0KPiA+ Pj4gK8KgwqDCoMKgwqDCoMKgIGlmICghKHJ4X21ldGFfZmVhdHVyZXMgJiBSVEVfRVRIX1JYX01F VEFfVFVOTkVMX0lEKSkgew0KPiA+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgVEVTVFBNRF9M T0coSU5GTywgIkZsb3cgdHVubmVsIG9mZmxvYWQgc3VwcG9ydA0KPiA+Pj4gbWlnaHQgYmUgbGlt aXRlZCBvciB1bmF2YWlsYWJsZSBvbiBwb3J0ICV1XG4iLA0KPiA+Pj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHBpZCk7DQo+ID4+PiArwqDCoMKgwqDCoMKgwqAgfQ0K PiA+Pj4gK8KgwqDCoCB9IGVsc2UgaWYgKHJldCAhPSAtRU5PVFNVUCkgew0KPiA+Pj4gK8KgwqDC oMKgwqDCoMKgIHJ0ZV9leGl0KEVYSVRfRkFJTFVSRSwgIkVycm9yIHdoZW4gbmVnb3RpYXRpbmcg UnggbWV0YQ0KPiA+Pj4gZmVhdHVyZXMgb24gcG9ydCAldTogJXNcbiIsDQo+ID4+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHBpZCwgcnRlX3N0cmVycm9yKC1yZXQpKTsNCj4gPj4+ICvCoMKg wqAgfQ0KPiA+Pj4gKw0KPiA+Pj4gwqDCoMKgwqDCoCBwb3J0LT5kZXZfY29uZi50eG1vZGUgPSB0 eF9tb2RlOw0KPiA+Pj4gwqDCoMKgwqDCoCBwb3J0LT5kZXZfY29uZi5yeG1vZGUgPSByeF9tb2Rl Ow0KPiA+Pj4NCj4gPj4+IGRpZmYgLS1naXQgYS9kb2MvZ3VpZGVzL3JlbF9ub3Rlcy9yZWxlYXNl XzIxXzExLnJzdA0KPiA+Pj4gYi9kb2MvZ3VpZGVzL3JlbF9ub3Rlcy9yZWxlYXNlXzIxXzExLnJz dA0KPiA+Pj4gaW5kZXggMTkzNTZhYzUzYy4uNjY3NGQ0NDc0YyAxMDA2NDQNCj4gPj4+IC0tLSBh L2RvYy9ndWlkZXMvcmVsX25vdGVzL3JlbGVhc2VfMjFfMTEucnN0DQo+ID4+PiArKysgYi9kb2Mv Z3VpZGVzL3JlbF9ub3Rlcy9yZWxlYXNlXzIxXzExLnJzdA0KPiA+Pj4gQEAgLTEwNiw2ICsxMDYs MTUgQEAgTmV3IEZlYXR1cmVzDQo+ID4+PiDCoMKgwqAgQWRkZWQgY29tbWFuZC1saW5lIG9wdGlv bnMgdG8gc3BlY2lmeSB0b3RhbCBudW1iZXIgb2YgcHJvY2Vzc2VzDQo+ID4+PiBhbmQNCj4gPj4+ IMKgwqDCoCBjdXJyZW50IHByb2Nlc3MgSUQuIEVhY2ggcHJvY2VzcyBvd25zIHN1YnNldCBvZiBS eCBhbmQgVHggcXVldWVzLg0KPiA+Pj4NCj4gPj4+ICsqICoqQWRkZWQgYW4gQVBJIHRvIG5lZ290 aWF0ZSBkZWxpdmVyeSBvZiBzcGVjaWZpYyBwYXJ0cyBvZiBSeCBtZXRhDQo+ID4+PiArZGF0YSoq DQo+ID4+PiArDQo+ID4+PiArwqAgQSBuZXcgQVBJLCBgYHJ0ZV9ldGhfcnhfbWV0YV9uZWdvdGlh dGUoKWBgLCB3YXMgYWRkZWQuDQo+ID4+PiArwqAgVGhlIGZvbGxvd2luZyBwYXJ0cyBvZiBSeCBt ZXRhIGRhdGEgd2VyZSBkZWZpbmVkOg0KPiA+Pj4gKw0KPiA+Pj4gK8KgICogYGBSVEVfRVRIX1JY X01FVEFfVVNFUl9GTEFHYGANCj4gPj4+ICvCoCAqIGBgUlRFX0VUSF9SWF9NRVRBX1VTRVJfTUFS S2BgDQo+ID4+PiArwqAgKiBgYFJURV9FVEhfUlhfTUVUQV9UVU5ORUxfSURgYA0KPiA+Pj4gKw0K PiA+Pj4NCj4gPj4+IMKgIFJlbW92ZWQgSXRlbXMNCj4gPj4+IMKgIC0tLS0tLS0tLS0tLS0NCj4g Pj4+IGRpZmYgLS1naXQgYS9saWIvZXRoZGV2L2V0aGRldl9kcml2ZXIuaCBiL2xpYi9ldGhkZXYv ZXRoZGV2X2RyaXZlci5oDQo+ID4+PiBpbmRleCA0MGU0NzRhYTdlLi45NmUwYzYwY2FlIDEwMDY0 NA0KPiA+Pj4gLS0tIGEvbGliL2V0aGRldi9ldGhkZXZfZHJpdmVyLmgNCj4gPj4+ICsrKyBiL2xp Yi9ldGhkZXYvZXRoZGV2X2RyaXZlci5oDQo+ID4+PiBAQCAtNzg5LDYgKzc4OSwyMiBAQCB0eXBl ZGVmIGludCAoKmV0aF9nZXRfbW9uaXRvcl9hZGRyX3QpKHZvaWQNCj4gPj4+ICpyeHEsIHR5cGVk ZWYgaW50ICgqZXRoX3JlcHJlc2VudG9yX2luZm9fZ2V0X3QpKHN0cnVjdCBydGVfZXRoX2Rldg0K PiA+Pj4gKmRldiwNCj4gPj4+IMKgwqDCoMKgwqAgc3RydWN0IHJ0ZV9ldGhfcmVwcmVzZW50b3Jf aW5mbyAqaW5mbyk7DQo+ID4+Pg0KPiA+Pj4gKy8qKg0KPiA+Pj4gKyAqIEBpbnRlcm5hbA0KPiA+ Pj4gKyAqIE5lZ290aWF0ZSBkZWxpdmVyeSBvZiBzcGVjaWZpYyBwYXJ0cyBvZiBSeCBtZXRhIGRh dGEuDQo+ID4+PiArICoNCj4gPj4+ICsgKiBAcGFyYW0gZGV2DQo+ID4+PiArICrCoMKgIFBvcnQg KGV0aGRldikgaGFuZGxlDQo+ID4+PiArICoNCj4gPj4+ICsgKiBAcGFyYW1baW5vdXRdIGZlYXR1 cmVzDQo+ID4+PiArICrCoMKgIEZlYXR1cmUgc2VsZWN0aW9uIGJ1ZmZlcg0KPiA+Pj4gKyAqDQo+ ID4+PiArICogQHJldHVybg0KPiA+Pj4gKyAqwqDCoCBOZWdhdGl2ZSBlcnJubyB2YWx1ZSBvbiBl cnJvciwgemVybyBvdGhlcndpc2UgICovIHR5cGVkZWYgaW50DQo+ID4+PiArKCpldGhfcnhfbWV0 YV9uZWdvdGlhdGVfdCkoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsDQo+ID4+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdWludDY0X3QgKmZlYXR1cmVzKTsN Cj4gPj4+ICsNCj4gPj4+IMKgIC8qKg0KPiA+Pj4gwqDCoCAqIEBpbnRlcm5hbCBBIHN0cnVjdHVy ZSBjb250YWluaW5nIHRoZSBmdW5jdGlvbnMgZXhwb3J0ZWQgYnkgYW4NCj4gPj4+IEV0aGVybmV0 IGRyaXZlci4NCj4gPj4+IMKgwqAgKi8NCj4gPj4+IEBAIC05NDksNiArOTY1LDkgQEAgc3RydWN0 IGV0aF9kZXZfb3BzIHsNCj4gPj4+DQo+ID4+PiDCoMKgwqDCoMKgIGV0aF9yZXByZXNlbnRvcl9p bmZvX2dldF90IHJlcHJlc2VudG9yX2luZm9fZ2V0Ow0KPiA+Pj4gwqDCoMKgwqDCoCAvKio8IEdl dCByZXByZXNlbnRvciBpbmZvLiAqLw0KPiA+Pj4gKw0KPiA+Pj4gK8KgwqDCoCBldGhfcnhfbWV0 YV9uZWdvdGlhdGVfdCByeF9tZXRhX25lZ290aWF0ZTsNCj4gPj4+ICvCoMKgwqAgLyoqPCBOZWdv dGlhdGUgZGVsaXZlcnkgb2Ygc3BlY2lmaWMgcGFydHMgb2YgUnggbWV0YSBkYXRhLiAqLw0KPiA+ Pj4gwqAgfTsNCj4gPj4+DQo+ID4+PiDCoCAvKioNCj4gPj4+IGRpZmYgLS1naXQgYS9saWIvZXRo ZGV2L3J0ZV9ldGhkZXYuYyBiL2xpYi9ldGhkZXYvcnRlX2V0aGRldi5jIGluZGV4DQo+ID4+PiBk YWY1Y2E5MjQyLi40OWNiODRkNjRjIDEwMDY0NA0KPiA+Pj4gLS0tIGEvbGliL2V0aGRldi9ydGVf ZXRoZGV2LmMNCj4gPj4+ICsrKyBiL2xpYi9ldGhkZXYvcnRlX2V0aGRldi5jDQo+ID4+PiBAQCAt NjMxMCw2ICs2MzEwLDMxIEBAIHJ0ZV9ldGhfcmVwcmVzZW50b3JfaW5mb19nZXQodWludDE2X3QN Cj4gPj4+IHBvcnRfaWQsDQo+ID4+PiDCoMKgwqDCoMKgIHJldHVybiBldGhfZXJyKHBvcnRfaWQs ICgqZGV2LT5kZXZfb3BzLQ0KPiA+Pj4+IHJlcHJlc2VudG9yX2luZm9fZ2V0KShkZXYsIGluZm8p KTvCoCB9DQo+ID4+Pg0KPiA+Pj4gK2ludA0KPiA+Pj4gK3J0ZV9ldGhfcnhfbWV0YV9uZWdvdGlh dGUodWludDE2X3QgcG9ydF9pZCwgdWludDY0X3QgKmZlYXR1cmVzKSB7DQo+ID4+PiArwqDCoMKg IHN0cnVjdCBydGVfZXRoX2RldiAqZGV2Ow0KPiA+Pj4gKw0KPiA+Pj4gK8KgwqDCoCBSVEVfRVRI X1ZBTElEX1BPUlRJRF9PUl9FUlJfUkVUKHBvcnRfaWQsIC1FTk9ERVYpOw0KPiA+Pj4gK8KgwqDC oCBkZXYgPSAmcnRlX2V0aF9kZXZpY2VzW3BvcnRfaWRdOw0KPiA+Pj4gKw0KPiA+Pj4gK8KgwqDC oCBpZiAoZGV2LT5kYXRhLT5kZXZfY29uZmlndXJlZCAhPSAwKSB7DQo+ID4+PiArwqDCoMKgwqDC oMKgwqAgUlRFX0VUSERFVl9MT0coRVJSLA0KPiA+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAg IlRoZSBwb3J0IChpZD0lIlBSSXUxNiIpIGlzIGFscmVhZHkgY29uZmlndXJlZFxuIiwNCj4gPj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHBvcnRfaWQpOw0KPiA+Pj4gK8KgwqDCoMKgwqDCoMKg IHJldHVybiAtRUJVU1k7DQo+ID4+PiArwqDCoMKgIH0NCj4gPj4+ICsNCj4gPj4+ICvCoMKgwqAg aWYgKGZlYXR1cmVzID09IE5VTEwpIHsNCj4gPj4+ICvCoMKgwqDCoMKgwqDCoCBSVEVfRVRIREVW X0xPRyhFUlIsICJJbnZhbGlkIGZlYXR1cmVzIChOVUxMKVxuIik7DQo+ID4+PiArwqDCoMKgwqDC oMKgwqAgcmV0dXJuIC1FSU5WQUw7DQo+ID4+PiArwqDCoMKgIH0NCj4gPj4+ICsNCj4gPj4+ICvC oMKgwqAgUlRFX0ZVTkNfUFRSX09SX0VSUl9SRVQoKmRldi0+ZGV2X29wcy0+cnhfbWV0YV9uZWdv dGlhdGUsDQo+ID4+PiAtRU5PVFNVUCk7DQo+ID4+PiArwqDCoMKgIHJldHVybiBldGhfZXJyKHBv cnRfaWQsDQo+ID4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAoKmRldi0+ZGV2X29w cy0+cnhfbWV0YV9uZWdvdGlhdGUpKGRldiwgZmVhdHVyZXMpKTsNCj4gPj4+ICt9DQo+ID4+PiAr DQo+ID4+PiDCoCBSVEVfTE9HX1JFR0lTVEVSX0RFRkFVTFQocnRlX2V0aF9kZXZfbG9ndHlwZSwg SU5GTyk7DQo+ID4+Pg0KPiA+Pj4gwqAgUlRFX0lOSVQoZXRoZGV2X2luaXRfdGVsZW1ldHJ5KQ0K PiA+Pj4gZGlmZiAtLWdpdCBhL2xpYi9ldGhkZXYvcnRlX2V0aGRldi5oIGIvbGliL2V0aGRldi9y dGVfZXRoZGV2LmggaW5kZXgNCj4gPj4+IDFkYTM3ODk2ZDguLjg0NjdhN2EzNjIgMTAwNjQ0DQo+ ID4+PiAtLS0gYS9saWIvZXRoZGV2L3J0ZV9ldGhkZXYuaA0KPiA+Pj4gKysrIGIvbGliL2V0aGRl di9ydGVfZXRoZGV2LmgNCj4gPj4+IEBAIC00ODg4LDYgKzQ4ODgsNTEgQEAgX19ydGVfZXhwZXJp bWVudGFswqAgaW50DQo+ID4+PiBydGVfZXRoX3JlcHJlc2VudG9yX2luZm9fZ2V0KHVpbnQxNl90 IHBvcnRfaWQsDQo+ID4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3Ry dWN0IHJ0ZV9ldGhfcmVwcmVzZW50b3JfaW5mbyAqaW5mbyk7DQo+ID4+Pg0KPiA+Pj4gKy8qKiBU aGUgZXRoZGV2IHNlZXMgZmxhZ2dlZCBwYWNrZXRzIGlmIHRoZXJlIGFyZSBmbG93cyB3aXRoIGFj dGlvbg0KPiA+Pj4gK0ZMQUcuICovICNkZWZpbmUgUlRFX0VUSF9SWF9NRVRBX1VTRVJfRkxBRyAo VUlOVDY0X0MoMSkgPDwgMCkNCj4gPj4+ICsNCj4gPj4+ICsvKiogVGhlIGV0aGRldiBzZWVzIG1h cmsgSURzIGluIHBhY2tldHMgaWYgdGhlcmUgYXJlIGZsb3dzIHdpdGgNCj4gPj4+ICthY3Rpb24g TUFSSy4gKi8gI2RlZmluZSBSVEVfRVRIX1JYX01FVEFfVVNFUl9NQVJLDQo+IChVSU5UNjRfQygx KSA8PA0KPiA+Pj4gKzEpDQo+ID4+PiArDQo+ID4+PiArLyoqIFRoZSBldGhkZXYgZGV0ZWN0cyBt aXNzZWQgcGFja2V0cyBpZiB0aGVyZSBhcmUgInR1bm5lbF9zZXQiDQo+ID4+PiArZmxvd3MgaW4g dXNlLiAqLyAjZGVmaW5lIFJURV9FVEhfUlhfTUVUQV9UVU5ORUxfSUQgKFVJTlQ2NF9DKDEpDQo+ IDw8DQo+ID4+PiArMikNCj4gPj4+ICsNCj4gPj4+ICsvKioNCj4gPj4+ICsgKiBAd2FybmluZw0K PiA+Pj4gKyAqIEBiIEVYUEVSSU1FTlRBTDogdGhpcyBBUEkgbWF5IGNoYW5nZSB3aXRob3V0IHBy aW9yIG5vdGljZQ0KPiA+Pj4gKyAqDQo+ID4+PiArICogTmVnb3RpYXRlIGRlbGl2ZXJ5IG9mIHNw ZWNpZmljIHBhcnRzIG9mIFJ4IG1ldGEgZGF0YS4NCj4gPj4+ICsgKg0KPiA+Pj4gKyAqIEludm9r ZSB0aGlzIEFQSSBiZWZvcmUgdGhlIGZpcnN0IHJ0ZV9ldGhfZGV2X2NvbmZpZ3VyZSgpDQo+ID4+ PiAraW52b2NhdGlvbg0KPiA+Pj4gKyAqIHRvIGxldCB0aGUgUE1EIG1ha2UgcHJlcGFyYXRpb25z IHRoYXQgYXJlIGluY29udmVuaWVudCB0byBkbyBsYXRlci4NCj4gPj4+ICsgKg0KPiA+Pj4gKyAq IFRoZSBuZWdvdGlhdGlvbiBwcm9jZXNzIGlzIGFzIGZvbGxvd3M6DQo+ID4+PiArICoNCj4gPj4+ ICsgKiAtIHRoZSBhcHBsaWNhdGlvbiByZXF1ZXN0cyBmZWF0dXJlcyBpbnRlbmRpbmcgdG8gdXNl IGF0IGxlYXN0DQo+ID4+PiArc29tZSBvZiB0aGVtOw0KPiA+Pj4gKyAqIC0gdGhlIFBNRCByZXNw b25kcyB3aXRoIHRoZSBndWFyYW50ZWVkIHN1YnNldCBvZiB0aGUgcmVxdWVzdGVkDQo+ID4+PiAr ZmVhdHVyZSBzZXQ7DQo+ID4+PiArICogLSB0aGUgYXBwbGljYXRpb24gY2FuIHJldHJ5IG5lZ290 aWF0aW9uIHdpdGggYW5vdGhlciBzZXQgb2YNCj4gPj4+ICtmZWF0dXJlczsNCj4gPj4+ICsgKiAt IHRoZSBhcHBsaWNhdGlvbiBjYW4gcGFzcyB6ZXJvIHRvIGNsZWFyIHRoZSBuZWdvdGlhdGlvbiBy ZXN1bHQ7DQo+ID4+PiArICogLSB0aGUgbGFzdCBuZWdvdGlhdGVkIHJlc3VsdCB0YWtlcyBlZmZl Y3QgdXBvbiB0aGUgZXRoZGV2IHN0YXJ0Lg0KPiA+Pj4gKyAqDQo+ID4+PiArICogSWYgdGhpcyBB UEkgaXMgdW5zdXBwb3J0ZWQsIHRoZSBhcHBsaWNhdGlvbiBzaG91bGQgZ3JhY2VmdWxseQ0KPiA+ Pj4gaWdub3JlIHRoYXQuDQo+ID4+PiArICoNCj4gPj4+ICsgKiBAcGFyYW0gcG9ydF9pZA0KPiA+ Pj4gKyAqwqDCoCBQb3J0IChldGhkZXYpIGlkZW50aWZpZXINCj4gPj4+ICsgKg0KPiA+Pj4gKyAq IEBwYXJhbVtpbm91dF0gZmVhdHVyZXMNCj4gPj4+ICsgKsKgwqAgRmVhdHVyZSBzZWxlY3Rpb24g YnVmZmVyDQo+ID4+PiArICoNCj4gPj4+ICsgKiBAcmV0dXJuDQo+ID4+PiArICrCoMKgIC0gKC1F QlVTWSkgaWYgdGhlIHBvcnQgY2FuJ3QgaGFuZGxlIHRoaXMgaW4gaXRzIGN1cnJlbnQgc3RhdGU7 DQo+ID4+PiArICrCoMKgIC0gKC1FTk9UU1VQKSBpZiB0aGUgbWV0aG9kIGl0c2VsZiBpcyBub3Qg c3VwcG9ydGVkIGJ5IHRoZSBQTUQ7DQo+ID4+PiArICrCoMKgIC0gKC1FTk9ERVYpIGlmICpwb3J0 X2lkKiBpcyBpbnZhbGlkOw0KPiA+Pj4gKyAqwqDCoCAtICgtRUlOVkFMKSBpZiAqZmVhdHVyZXMq IGlzIE5VTEw7DQo+ID4+PiArICrCoMKgIC0gKC1FSU8pIGlmIHRoZSBkZXZpY2UgaXMgcmVtb3Zl ZDsNCj4gPj4+ICsgKsKgwqAgLSAoMCkgb24gc3VjY2Vzcw0KPiA+Pj4gKyAqLw0KPiA+Pj4gK19f cnRlX2V4cGVyaW1lbnRhbA0KPiA+Pj4gK2ludCBydGVfZXRoX3J4X21ldGFfbmVnb3RpYXRlKHVp bnQxNl90IHBvcnRfaWQsIHVpbnQ2NF90DQo+ID4+PiArKmZlYXR1cmVzKTsNCj4gPj4NCj4gPj4g SSBkb24ndCB0aGluayBtZXRhIGlzIHRoZSBiZXN0IG5hbWUgc2luY2Ugd2UgYWxzbyBoYXZlIG1l dGEgaXRlbSBhbmQNCj4gPj4gdGhlIHdvcmQgbWV0YSBjYW4gYmUgdXNlZCBpbiBvdGhlciBjYXNl cy4NCj4gPg0KPiA+IEknbSBubyBleHBlcnQgaW4gbmFtaW5nLiBXaGF0IGNvdWxkIGJlIGEgYmV0 dGVyIHRlcm0gZm9yIHRoaXM/DQo+ID4gUGVyc29uYWxseSwgSSdkIHJhdGhlciBub3QgcGVyY2Vp dmUgIm1ldGEiIHRoZSB3YXkgeW91IGRlc2NyaWJlLiBJdCdzDQo+ID4gbm90IGp1c3QgIm1ldGEi LiBJdCdzICJyeF9tZXRhIiwgYW5kIHRoZSBmbGFncyBzdXBwbGllZCB3aXRoIHRoaXMgQVBJDQo+ ID4gcHJvdmlkZSBlbm91Z2ggY29udGV4dCB0byBleHBsYWluIHdoYXQgaXQncyBhbGwgYWJvdXQu DQo+IA0KPiBUaGlua2luZyBvdmVybmlnaHQgYWJvdXQgaXQgSSdkIHN1Z2dlc3QgZnVsbCAibWV0 YWRhdGEiLg0KPiBZZXMsIGl0IHdpbGwgbmFtZSBhIGJpdCBsb25nZXIsIGJ1dCBsZXNzIGNvbmZ1 c2luZyB2ZXJzdXMgdGVybSBNRVRBIGFscmVhZHkNCj4gdXNlZCBpbiBmbG93IEFQSS4NCj4gDQpG b2xsb3dpbmcgbXkgYWJvdmUgY29tbWVudHMsIEkgdGhpbmsgaXQgc2hvdWxkIGJlIHBhcnQgb2Yg dGhlIG5ldyBBUEkNCmJ1dCBpbiBhbnkgY2FzZSB3aGF0IGFib3V0IHJ4X2Zsb3dfYWN0aW9uX25l Z290aWF0ZT8NCg0KPiBBbmRyZXcuDQpCZXN0LA0KT3JpDQo=