From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <dev-bounces@dpdk.org>
Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124])
	by inbox.dpdk.org (Postfix) with ESMTP id 0F8DCA04FF;
	Wed, 23 Mar 2022 10:31:38 +0100 (CET)
Received: from [217.70.189.124] (localhost [127.0.0.1])
	by mails.dpdk.org (Postfix) with ESMTP id F1219427F6;
	Wed, 23 Mar 2022 10:31:37 +0100 (CET)
Received: from mga07.intel.com (mga07.intel.com [134.134.136.100])
 by mails.dpdk.org (Postfix) with ESMTP id E5A4B41140
 for <dev@dpdk.org>; Wed, 23 Mar 2022 10:31:36 +0100 (CET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple;
 d=intel.com; i=@intel.com; q=dns/txt; s=Intel;
 t=1648027897; x=1679563897;
 h=from:to:cc:subject:date:message-id:references:
 in-reply-to:content-transfer-encoding:mime-version;
 bh=kZf0hHVreWjTAlu8G4zO/yVMfSsJY54BqSwSGVCO0hQ=;
 b=fR7BLr6gBYRLsgGVbmty4M0iYxzlWkzkBhC5XS1gCdMLWwsOXpOyvlS8
 HyEOyvQ2eS0NdUwGHvgNt3VZCXGXOS5oXAXEIaHjOc02/i5FYn3WohOLu
 JrKfzesbErGOFBFHIA2ezz+hNULAwgvz2W65Ti1XCQNzLDzoYkHa+0wDF
 SVyZQeBLHO/O1CU9eapTg3VzwmwJxzZ7FqXXe2Q/oRB9O8AJvUOVoUtid
 VPf/Wm3t9a2VOwyHm/xaZWzSbUf+X5V29EfdVwcDPI3a7i6TCxBCzmOvj
 6Ns0bXe2HRaywbaTzEPu09oqg5b7nJQiJLNepQjbOLDfd26a0fD9cy1nu Q==;
X-IronPort-AV: E=McAfee;i="6200,9189,10294"; a="321264444"
X-IronPort-AV: E=Sophos;i="5.90,203,1643702400"; d="scan'208";a="321264444"
Received: from orsmga007.jf.intel.com ([10.7.209.58])
 by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;
 23 Mar 2022 02:31:35 -0700
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="5.90,203,1643702400"; d="scan'208";a="544117508"
Received: from fmsmsx606.amr.corp.intel.com ([10.18.126.86])
 by orsmga007.jf.intel.com with ESMTP; 23 Mar 2022 02:31:35 -0700
Received: from shsmsx605.ccr.corp.intel.com (10.109.6.215) by
 fmsmsx606.amr.corp.intel.com (10.18.126.86) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.1.2308.27; Wed, 23 Mar 2022 02:31:34 -0700
Received: from shsmsx601.ccr.corp.intel.com (10.109.6.141) by
 SHSMSX605.ccr.corp.intel.com (10.109.6.215) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.1.2308.21; Wed, 23 Mar 2022 17:31:27 +0800
Received: from shsmsx601.ccr.corp.intel.com ([10.109.6.141]) by
 SHSMSX601.ccr.corp.intel.com ([10.109.6.141]) with mapi id 15.01.2308.021;
 Wed, 23 Mar 2022 17:31:27 +0800
From: "Pei, Andy" <andy.pei@intel.com>
To: Maxime Coquelin <maxime.coquelin@redhat.com>, "dev@dpdk.org" <dev@dpdk.org>
CC: "Xia, Chenbo" <chenbo.xia@intel.com>, "Cao, Gang" <gang.cao@intel.com>,
 "Liu, Changpeng" <changpeng.liu@intel.com>
Subject: RE: [PATCH v3 06/15] example/vdpa:add vdpa blk support in example
Thread-Topic: [PATCH v3 06/15] example/vdpa:add vdpa blk support in example
Thread-Index: AQHYPeAuLlbaJsht1ECMJMDIJmjM2qzMtXQw
Date: Wed, 23 Mar 2022 09:31:27 +0000
Message-ID: <d75fc29dd4c24f38a5bddc7b64b79afd@intel.com>
References: <1643093258-47258-2-git-send-email-andy.pei@intel.com>
 <1643425417-215270-1-git-send-email-andy.pei@intel.com>
 <1643425417-215270-7-git-send-email-andy.pei@intel.com>
 <4924bf97-80da-0ff6-0870-a129b0744225@redhat.com>
In-Reply-To: <4924bf97-80da-0ff6-0870-a129b0744225@redhat.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
dlp-product: dlpe-windows
dlp-version: 11.6.401.20
dlp-reaction: no-action
x-originating-ip: [10.239.127.36]
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-BeenThere: dev@dpdk.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: DPDK patches and discussions <dev.dpdk.org>
List-Unsubscribe: <https://mails.dpdk.org/options/dev>,
 <mailto:dev-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://mails.dpdk.org/archives/dev/>
List-Post: <mailto:dev@dpdk.org>
List-Help: <mailto:dev-request@dpdk.org?subject=help>
List-Subscribe: <https://mails.dpdk.org/listinfo/dev>,
 <mailto:dev-request@dpdk.org?subject=subscribe>
Errors-To: dev-bounces@dpdk.org

SGkgTWF4aW1lLA0KDQpJIHNlZW1zIGEgbG90IG9mIHByb2JsZW0gd2l0aCB0aGUgZXhhbXBsZS4N
CkkgdGhpbmsgSSB3aWxsIHJlLXdvcmsgdGhlIGV4YW1wbGUgYWNjb3JkaW5nIHRvIHlvdXIgY29t
bWVudHMuDQpUaGFua3MgZm9yIHlvdXIgY29tbWVudHMuDQoNCi0tLS0tT3JpZ2luYWwgTWVzc2Fn
ZS0tLS0tDQpGcm9tOiBNYXhpbWUgQ29xdWVsaW4gPG1heGltZS5jb3F1ZWxpbkByZWRoYXQuY29t
PiANClNlbnQ6IFR1ZXNkYXksIE1hcmNoIDIyLCAyMDIyIDc6MzAgUE0NClRvOiBQZWksIEFuZHkg
PGFuZHkucGVpQGludGVsLmNvbT47IGRldkBkcGRrLm9yZw0KQ2M6IFhpYSwgQ2hlbmJvIDxjaGVu
Ym8ueGlhQGludGVsLmNvbT47IENhbywgR2FuZyA8Z2FuZy5jYW9AaW50ZWwuY29tPjsgTGl1LCBD
aGFuZ3BlbmcgPGNoYW5ncGVuZy5saXVAaW50ZWwuY29tPg0KU3ViamVjdDogUmU6IFtQQVRDSCB2
MyAwNi8xNV0gZXhhbXBsZS92ZHBhOmFkZCB2ZHBhIGJsayBzdXBwb3J0IGluIGV4YW1wbGUNCg0K
DQoNCk9uIDEvMjkvMjIgMDQ6MDMsIEFuZHkgUGVpIHdyb3RlOg0KPiBBZGQgdmlydGlvIGJsayBk
ZXZpY2Ugc3VwcG9ydCB0byB2ZHBhIGV4YW1wbGUuDQo+IA0KPiBTaWduZWQtb2ZmLWJ5OiBBbmR5
IFBlaSA8YW5keS5wZWlAaW50ZWwuY29tPg0KPiAtLS0NCj4gICBleGFtcGxlcy92ZHBhL01ha2Vm
aWxlICAgICAgICAgICB8ICAgMiArLQ0KPiAgIGV4YW1wbGVzL3ZkcGEvbWFpbi5jICAgICAgICAg
ICAgIHwgICA4ICsrDQo+ICAgZXhhbXBsZXMvdmRwYS9tZXNvbi5idWlsZCAgICAgICAgfCAgIDEg
Kw0KPiAgIGV4YW1wbGVzL3ZkcGEvdmRwYV9ibGtfY29tcGFjdC5jIHwgMTUwICsrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysNCj4gICBleGFtcGxlcy92ZHBhL3ZkcGFfYmxrX2NvbXBhY3Qu
aCB8IDExNyArKysrKysrKysrKysrKysrKysrKysrKysNCj4gICBleGFtcGxlcy92ZHBhL3Zob3N0
X3VzZXIuaCAgICAgICB8IDE4OSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysNCj4gICA2IGZpbGVzIGNoYW5nZWQsIDQ2NiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0p
DQo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGV4YW1wbGVzL3ZkcGEvdmRwYV9ibGtfY29tcGFjdC5j
DQo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGV4YW1wbGVzL3ZkcGEvdmRwYV9ibGtfY29tcGFjdC5o
DQo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGV4YW1wbGVzL3ZkcGEvdmhvc3RfdXNlci5oDQo+IA0K
PiBkaWZmIC0tZ2l0IGEvZXhhbXBsZXMvdmRwYS9NYWtlZmlsZSBiL2V4YW1wbGVzL3ZkcGEvTWFr
ZWZpbGUgaW5kZXggDQo+IGQ5NzRkYjQuLjlkMDQ3OWIgMTAwNjQ0DQo+IC0tLSBhL2V4YW1wbGVz
L3ZkcGEvTWFrZWZpbGUNCj4gKysrIGIvZXhhbXBsZXMvdmRwYS9NYWtlZmlsZQ0KPiBAQCAtNSw3
ICs1LDcgQEANCj4gICBBUFAgPSB2ZHBhDQo+ICAgDQo+ICAgIyBhbGwgc291cmNlIGFyZSBzdG9y
ZWQgaW4gU1JDUy15DQo+IC1TUkNTLXkgOj0gbWFpbi5jDQo+ICtTUkNTLXkgOj0gbWFpbi5jIHZk
cGFfYmxrX2NvbXBhY3QuYw0KPiAgIENGTEFHUyArPSAtREFMTE9XX0VYUEVSSU1FTlRBTF9BUEkN
Cj4gICANCj4gICBQS0dDT05GID89IHBrZy1jb25maWcNCj4gZGlmZiAtLWdpdCBhL2V4YW1wbGVz
L3ZkcGEvbWFpbi5jIGIvZXhhbXBsZXMvdmRwYS9tYWluLmMgaW5kZXggDQo+IDVhYjA3NjUuLjky
NGFkN2IgMTAwNjQ0DQo+IC0tLSBhL2V4YW1wbGVzL3ZkcGEvbWFpbi5jDQo+ICsrKyBiL2V4YW1w
bGVzL3ZkcGEvbWFpbi5jDQo+IEBAIC0yMCw2ICsyMCw3IEBADQo+ICAgI2luY2x1ZGUgPGNtZGxp
bmVfcGFyc2Vfc3RyaW5nLmg+DQo+ICAgI2luY2x1ZGUgPGNtZGxpbmVfcGFyc2VfbnVtLmg+DQo+
ICAgI2luY2x1ZGUgPGNtZGxpbmUuaD4NCj4gKyNpbmNsdWRlICJ2ZHBhX2Jsa19jb21wYWN0Lmgi
DQo+ICAgDQo+ICAgI2RlZmluZSBNQVhfUEFUSF9MRU4gMTI4DQo+ICAgI2RlZmluZSBNQVhfVkRQ
QV9TQU1QTEVfUE9SVFMgMTAyNA0KPiBAQCAtMTU2LDYgKzE1Nyw3IEBAIHN0cnVjdCB2ZHBhX3Bv
cnQgew0KPiAgIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcnRlX3Zob3N0X2RldmljZV9vcHMgdmRwYV9z
YW1wbGVfZGV2b3BzID0gew0KPiAgIAkubmV3X2RldmljZSA9IG5ld19kZXZpY2UsDQo+ICAgCS5k
ZXN0cm95X2RldmljZSA9IGRlc3Ryb3lfZGV2aWNlLA0KPiArCS5uZXdfY29ubmVjdGlvbiA9IHJ0
ZV92aG9zdF9ibGtfc2Vzc2lvbl9pbnN0YWxsX3J0ZV9jb21wYXRfaG9va3MsDQo+ICAgfTsNCj4g
ICANCj4gICBzdGF0aWMgaW50DQo+IEBAIC0xOTIsNiArMTk0LDEyIEBAIHN0cnVjdCB2ZHBhX3Bv
cnQgew0KPiAgIAkJCSJhdHRhY2ggdmRwYSBkZXZpY2UgZmFpbGVkOiAlc1xuIiwNCj4gICAJCQlz
b2NrZXRfcGF0aCk7DQo+ICAgDQo+ICsJaWYgKHZkcGFfYmxrX2RldmljZV9zZXRfZmVhdHVyZXNf
YW5kX3Byb3RvY29sKHNvY2tldF9wYXRoLCB2cG9ydC0+ZGV2KQ0KPiArCQk8IDApDQo+ICsJCXJ0
ZV9leGl0KEVYSVRfRkFJTFVSRSwNCj4gKwkJCSJzZXQgdmhvc3QgYmxrIGRyaXZlciBmZWF0dXJl
cyBhbmQgcHJvdG9jb2wgZmVhdHVyZXMgZmFpbGVkOiAlc1xuIiwNCj4gKwkJCXNvY2tldF9wYXRo
KTsNCj4gKw0KDQpUaGF0IGRvZXMgbm90IGxvb2sgcmlnaHQsIGJsayBkZXZpY2VzIHNwZWNpdGlj
IGZ1bmN0aW9ucyBzaHVvbGQgYmUgY2FsbGVkIG9ubHkgZm9yIGJsb2NrIGRldmljZXMuDQoNCj4g
ICAJaWYgKHJ0ZV92aG9zdF9kcml2ZXJfc3RhcnQoc29ja2V0X3BhdGgpIDwgMCkNCj4gICAJCXJ0
ZV9leGl0KEVYSVRfRkFJTFVSRSwNCj4gICAJCQkic3RhcnQgdmhvc3QgZHJpdmVyIGZhaWxlZDog
JXNcbiIsIGRpZmYgLS1naXQgDQo+IGEvZXhhbXBsZXMvdmRwYS9tZXNvbi5idWlsZCBiL2V4YW1w
bGVzL3ZkcGEvbWVzb24uYnVpbGQgaW5kZXggDQo+IGJkMDg2MDUuLmYwZDExMWMgMTAwNjQ0DQo+
IC0tLSBhL2V4YW1wbGVzL3ZkcGEvbWVzb24uYnVpbGQNCj4gKysrIGIvZXhhbXBsZXMvdmRwYS9t
ZXNvbi5idWlsZA0KPiBAQCAtMTUsNCArMTUsNSBAQCBkZXBzICs9ICd2aG9zdCcNCj4gICBhbGxv
d19leHBlcmltZW50YWxfYXBpcyA9IHRydWUNCj4gICBzb3VyY2VzID0gZmlsZXMoDQo+ICAgICAg
ICAgICAnbWFpbi5jJywNCj4gKwkndmRwYV9ibGtfY29tcGFjdC5jJywNCj4gICApDQo+IGRpZmYg
LS1naXQgYS9leGFtcGxlcy92ZHBhL3ZkcGFfYmxrX2NvbXBhY3QuYyANCj4gYi9leGFtcGxlcy92
ZHBhL3ZkcGFfYmxrX2NvbXBhY3QuYw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAw
MDAwMDAwLi4wYzRkM2VlDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvZXhhbXBsZXMvdmRwYS92
ZHBhX2Jsa19jb21wYWN0LmMNCj4gQEAgLTAsMCArMSwxNTAgQEANCj4gKy8qICAgIElOVEVMIENP
TkZJREVOVElBTA0KPiArICoNCj4gKyAqICAgIENvcHlyaWdodCAoYykgSW50ZWwgQ29ycG9yYXRp
b24uDQo+ICsgKiAgICBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiArICoNCj4gKyAqICAgIFRoZSBz
b3VyY2UgY29kZSBjb250YWluZWQgb3IgZGVzY3JpYmVkIGhlcmVpbiBhbmQgYWxsIGRvY3VtZW50
cyByZWxhdGVkDQo+ICsgKiAgICB0byB0aGUgc291cmNlIGNvZGUgKCJNYXRlcmlhbCIpIGFyZSBv
d25lZCBieSBJbnRlbCBDb3Jwb3JhdGlvbiBvciBpdHMNCj4gKyAqICAgIHN1cHBsaWVycyBvciBs
aWNlbnNvcnMuICBUaXRsZSB0byB0aGUgTWF0ZXJpYWwgcmVtYWlucyB3aXRoIEludGVsDQo+ICsg
KiAgICBDb3Jwb3JhdGlvbiBvciBpdHMgc3VwcGxpZXJzIGFuZCBsaWNlbnNvcnMuICBUaGUgTWF0
ZXJpYWwgY29udGFpbnMgdHJhZGUNCj4gKyAqICAgIHNlY3JldHMgYW5kIHByb3ByaWV0YXJ5IGFu
ZCBjb25maWRlbnRpYWwgaW5mb3JtYXRpb24gb2YgSW50ZWwgb3IgaXRzDQo+ICsgKiAgICBzdXBw
bGllcnMgYW5kIGxpY2Vuc29ycy4gIFRoZSBNYXRlcmlhbCBpcyBwcm90ZWN0ZWQgYnkgd29ybGR3
aWRlDQo+ICsgKiAgICBjb3B5cmlnaHQgYW5kIHRyYWRlIHNlY3JldCBsYXdzIGFuZCB0cmVhdHkg
cHJvdmlzaW9ucy4gIE5vIHBhcnQgb2YgdGhlDQo+ICsgKiAgICBNYXRlcmlhbCBtYXkgYmUgdXNl
ZCwgY29waWVkLCByZXByb2R1Y2VkLCBtb2RpZmllZCwgcHVibGlzaGVkLCB1cGxvYWRlZCwNCj4g
KyAqICAgIHBvc3RlZCwgdHJhbnNtaXR0ZWQsIGRpc3RyaWJ1dGVkLCBvciBkaXNjbG9zZWQgaW4g
YW55IHdheSB3aXRob3V0IEludGVsJ3MNCj4gKyAqICAgIHByaW9yIGV4cHJlc3Mgd3JpdHRlbiBw
ZXJtaXNzaW9uLg0KPiArICoNCj4gKyAqICAgIE5vIGxpY2Vuc2UgdW5kZXIgYW55IHBhdGVudCwg
Y29weXJpZ2h0LCB0cmFkZSBzZWNyZXQgb3Igb3RoZXINCj4gKyAqICAgIGludGVsbGVjdHVhbCBw
cm9wZXJ0eSByaWdodCBpcyBncmFudGVkIHRvIG9yIGNvbmZlcnJlZCB1cG9uIHlvdSBieQ0KPiAr
ICogICAgZGlzY2xvc3VyZSBvciBkZWxpdmVyeSBvZiB0aGUgTWF0ZXJpYWxzLCBlaXRoZXIgZXhw
cmVzc2x5LCBieQ0KPiArICogICAgaW1wbGljYXRpb24sIGluZHVjZW1lbnQsIGVzdG9wcGVsIG9y
IG90aGVyd2lzZS4gIEFueSBsaWNlbnNlIHVuZGVyIHN1Y2gNCj4gKyAqICAgIGludGVsbGVjdHVh
bCBwcm9wZXJ0eSByaWdodHMgbXVzdCBiZSBleHByZXNzIGFuZCBhcHByb3ZlZCBieSBJbnRlbCBp
bg0KPiArICogICAgd3JpdGluZy4NCj4gKyAqLw0KPiArDQo+ICsvKiBAZmlsZQ0KPiArICoNCj4g
KyAqIEJsb2NrIGRldmljZSBzcGVjaWZpYyB2aG9zdCBsaWINCj4gKyAqLw0KPiArDQo+ICsjaW5j
bHVkZSA8c3RkYm9vbC5oPg0KPiArDQo+ICsjaW5jbHVkZSA8cnRlX21hbGxvYy5oPg0KPiArI2lu
Y2x1ZGUgPHZkcGFfZHJpdmVyLmg+DQoNClRoYXQncyB3cm9uZywgdGhlIGFwcGxpY2F0aW9uIGlz
IG5vdCBzdXBwb3NlZCB0byBpbmNsdWRlIHRoZSBkcml2ZXIgQVBJcy4NCg0KPiArI2luY2x1ZGUg
PHJ0ZV92aG9zdC5oPg0KPiArI2luY2x1ZGUgInZkcGFfYmxrX2NvbXBhY3QuaCINCj4gKyNpbmNs
dWRlICJ2aG9zdF91c2VyLmgiDQo+ICsNCj4gKyNkZWZpbmUgVkhPU1RfVVNFUl9HRVRfQ09ORklH
CTI0DQo+ICsjZGVmaW5lIFZIT1NUX1VTRVJfU0VUX0NPTkZJRwkyNQ0KPiArDQo+ICsjaWZuZGVm
IFZIT1NUX1VTRVJfUFJPVE9DT0xfRl9DT05GSUcNCj4gKyNkZWZpbmUgVkhPU1RfVVNFUl9QUk9U
T0NPTF9GX0NPTkZJRyAgIDkNCj4gKyNlbmRpZg0KPiArDQo+ICsvKg0KPiArICogRnVuY3Rpb24g
dG8gaGFuZGxlIHZob3N0IHVzZXIgYmxrIG1lc3NhZ2UgICovIHN0YXRpYyBlbnVtIA0KPiArcnRl
X3Zob3N0X21zZ19yZXN1bHQgcnRlX3Zob3N0X2Jsa19leHRlcm5fdmhvc3RfcHJlX21zZ19oYW5k
bGVyKGludCANCj4gK3ZpZCwgdm9pZCAqX21zZykgew0KPiArCXN0cnVjdCBWaG9zdFVzZXJNc2cg
Km1zZyA9IF9tc2c7DQo+ICsJc3RydWN0IHJ0ZV92ZHBhX2RldmljZSAqdmRldiA9IE5VTEw7DQo+
ICsNCj4gKwl2ZGV2ID0gcnRlX3Zob3N0X2dldF92ZHBhX2RldmljZSh2aWQpOw0KPiArCWlmICh2
ZGV2ID09IE5VTEwpDQo+ICsJCXJldHVybiBSVEVfVkhPU1RfTVNHX1JFU1VMVF9FUlI7DQo+ICsN
Cj4gKwlmcHJpbnRmKHN0ZGVyciwgIm1zZyBpcyAlZFxuIiwgbXNnLT5yZXF1ZXN0Lm1hc3Rlcik7
DQo+ICsJc3dpdGNoIChtc2ctPnJlcXVlc3QubWFzdGVyKSB7DQo+ICsJY2FzZSBWSE9TVF9VU0VS
X0dFVF9DT05GSUc6IHsNCj4gKwkJaW50IHJjID0gMDsNCj4gKw0KPiArCQlmcHJpbnRmKHN0ZG91
dCwgInJlYWQgbWVzc2FnZSBWSE9TVF9VU0VSX0dFVF9DT05GSUdcbiIpOw0KPiArDQo+ICsJCWlm
ICh2ZGV2LT5vcHMtPmdldF9jb25maWcpIHsNCj4gKwkJCWZwcmludGYoc3Rkb3V0LCAiZ2V0X2Nv
bmZpZygpIGZ1bmN0aW9uIGlzIHZhbGlkIVxuIik7DQo+ICsJCQlyYyA9IHZkZXYtPm9wcy0+Z2V0
X2NvbmZpZyh2aWQsDQo+ICsJCQkJCQkgICBtc2ctPnBheWxvYWQuY2ZnLnJlZ2lvbiwNCj4gKwkJ
CQkJCSAgIG1zZy0+cGF5bG9hZC5jZmcuc2l6ZSk7DQo+ICsJCQlpZiAocmMgIT0gMCkgew0KPiAr
CQkJCW1zZy0+c2l6ZSA9IDA7DQo+ICsJCQkJZnByaW50ZihzdGRvdXQsICJnZXRfY29uZmlnKCkg
cmV0dXJuIGVycm9yIVxuIik7DQo+ICsJCQl9DQo+ICsJCX0gZWxzZSB7DQo+ICsJCQlmcHJpbnRm
KHN0ZG91dCwgImdldF9jb25maWcoKSBmdW5jdGlvbiBpcyBpbnZhbGlkIVxuIik7DQo+ICsJCX0N
Cj4gKw0KPiArCQlyZXR1cm4gUlRFX1ZIT1NUX01TR19SRVNVTFRfUkVQTFk7DQo+ICsJfQ0KPiAr
CWNhc2UgVkhPU1RfVVNFUl9TRVRfQ09ORklHOiB7DQo+ICsJCWludCByYyA9IDA7DQo+ICsNCj4g
KwkJZnByaW50ZihzdGRvdXQsDQo+ICsJCQkicmVhZCBtZXNzYWdlIFZIT1NUX1VTRVJfU0VUX0NP
TkZJR1xuIik7DQo+ICsNCj4gKwkJaWYgKHZkZXYtPm9wcy0+c2V0X2NvbmZpZykgew0KPiArCQkJ
cmMgPSB2ZGV2LT5vcHMtPnNldF9jb25maWcodmlkLA0KPiArCQkJCW1zZy0+cGF5bG9hZC5jZmcu
cmVnaW9uLA0KPiArCQkJCW1zZy0+cGF5bG9hZC5jZmcub2Zmc2V0LA0KPiArCQkJCW1zZy0+cGF5
bG9hZC5jZmcuc2l6ZSwNCj4gKwkJCQltc2ctPnBheWxvYWQuY2ZnLmZsYWdzKTsNCj4gKwkJfQ0K
PiArDQo+ICsJCXJldHVybiByYyA9PSAwID8gUlRFX1ZIT1NUX01TR19SRVNVTFRfT0sgOiBSVEVf
VkhPU1RfTVNHX1JFU1VMVF9FUlI7DQo+ICsJfQ0KPiArCWRlZmF1bHQ6DQo+ICsJCWJyZWFrOw0K
PiArCX0NCj4gKw0KPiArCXJldHVybiBSVEVfVkhPU1RfTVNHX1JFU1VMVF9OT1RfSEFORExFRDsg
fQ0KDQpJIHRoaW5rIGFib3ZlIG1lc3NhZ2UgaGFuZGxpbmcgc2hvdWxkIGJlIGRvbmUgaW4gdGhl
IFZob3N0IGxpYnJhcnkgZGlyZWN0bHkuIFZIT1NUX1VTRVJfU0VUX0NPTkZJRyBhbmQgVkhPU1Rf
VVNFUl9HRVRfQ09ORklHIGFyZSBub3Qgc3BlY2lmaWMgdG8gYmxrIGJhY2tlbmRzLCB0aGVzZSBh
cmUgZ2VuZXJpYyBtZXNzYWdlcy4NCg0KPiArDQo+ICtzdHJ1Y3QgcnRlX3Zob3N0X3VzZXJfZXh0
ZXJuX29wcyBnX2Jsa19leHRlcm5fdmhvc3Rfb3BzID0gew0KPiArCS5wcmVfbXNnX2hhbmRsZSA9
IHJ0ZV92aG9zdF9ibGtfZXh0ZXJuX3Zob3N0X3ByZV9tc2dfaGFuZGxlciwNCj4gKwkucG9zdF9t
c2dfaGFuZGxlID0gTlVMTCwNCj4gK307DQo+ICsNCj4gK2ludA0KPiArcnRlX3Zob3N0X2Jsa19z
ZXNzaW9uX2luc3RhbGxfcnRlX2NvbXBhdF9ob29rcyhpbnQgdmlkKSB7DQo+ICsJaW50IHJjOw0K
PiArDQo+ICsJcmMgPSBydGVfdmhvc3RfZXh0ZXJuX2NhbGxiYWNrX3JlZ2lzdGVyKHZpZCwNCj4g
KwkJCQkJCSZnX2Jsa19leHRlcm5fdmhvc3Rfb3BzLA0KPiArCQkJCQkJTlVMTCk7DQo+ICsJaWYg
KHJjICE9IDApIHsNCj4gKwkJZnByaW50ZihzdGRlcnIsICIlcygpIGZhaWxlZCBmb3IgdmlkID0g
JWRcbiIsICBfX2Z1bmNfXywgdmlkKTsNCj4gKwkJcmV0dXJuIC0xOw0KPiArCX0NCj4gKwlmcHJp
bnRmKHN0ZG91dCwgInJlZ2lzdGVyIGV4dGVybiB2aG9zdCBvcHMgb24gdmlkID0gJWRcbiIsIHZp
ZCk7DQo+ICsJcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4gKw0KPiAraW50DQo+ICt2ZHBhX2Jsa19k
ZXZpY2Vfc2V0X2ZlYXR1cmVzX2FuZF9wcm90b2NvbChjb25zdCBjaGFyICpwYXRoLA0KPiArCXN0
cnVjdCBydGVfdmRwYV9kZXZpY2UgKnZkZXYpDQo+ICt7DQo+ICsJdWludDY0X3QgcHJvdG9jb2xf
ZmVhdHVyZXMgPSAwOw0KPiArDQo+ICsJaWYgKCF2ZGV2KSB7DQo+ICsJCWZwcmludGYoc3Rkb3V0
LCAidmRldiBpcyBOVUxMLlxuIik7DQo+ICsJCXJldHVybiAtRUlOVkFMOw0KPiArCX0NCj4gKw0K
PiArCS8qIHZkcGEgbmV0IGRvZXMgbm90IGhhdmUgdGhlIGdldF9jb25maWcgKi8NCj4gKwlpZiAo
IXZkZXYtPm9wcy0+Z2V0X2NvbmZpZykNCj4gKwkJcmV0dXJuIDA7DQoNClRoYXQncyBub3QgZ29v
ZCwgYXMgSSBzYWlkIGVhcmxpZXIsIHRoZSBkcml2ZXJzIGNhbGxiYWNrIHNob3VsZCBub3QgYmUg
dmlzaWJsZSB0byB0aGUgYXBwbGljYXRpb24uIE1heWJlIHRoZSBWRFBBIEFQSSBzaG91bGQgYmUg
ZXh0ZW5kZWQgdG8gcmV0dXJuIHRoZSBkZXZpY2UgdHlwZSwgSSdtIG5vdCBzdXJlLCBidXQgYWNj
ZXNzaW5nIHRoZSBkcml2ZXJzIG9wcyBpcyBwcm9oaWJpdGVkLg0KDQo+ICsJcnRlX3Zob3N0X2Ry
aXZlcl9zZXRfZmVhdHVyZXMocGF0aCwgU1BES19WSE9TVF9CTEtfRkVBVFVSRVNfQkFTRSk7DQo+
ICsJcnRlX3Zob3N0X2RyaXZlcl9kaXNhYmxlX2ZlYXR1cmVzKHBhdGgsDQo+ICsJCVNQREtfVkhP
U1RfQkxLX0RJU0FCTEVEX0ZFQVRVUkVTKTsNCj4gKw0KPiArCXJ0ZV92aG9zdF9kcml2ZXJfZ2V0
X3Byb3RvY29sX2ZlYXR1cmVzKHBhdGgsICZwcm90b2NvbF9mZWF0dXJlcyk7DQo+ICsJcHJvdG9j
b2xfZmVhdHVyZXMgfD0gKDFVTEwgPDwgVkhPU1RfVVNFUl9QUk9UT0NPTF9GX0NPTkZJRyk7DQo+
ICsJcHJvdG9jb2xfZmVhdHVyZXMgfD0gKDFVTEwgPDwgVkhPU1RfVVNFUl9QUk9UT0NPTF9GX0xP
R19TSE1GRCk7DQo+ICsJcnRlX3Zob3N0X2RyaXZlcl9zZXRfcHJvdG9jb2xfZmVhdHVyZXMocGF0
aCwgcHJvdG9jb2xfZmVhdHVyZXMpOw0KPiArDQo+ICsJcmV0dXJuIDA7DQo+ICt9DQo+IGRpZmYg
LS1naXQgYS9leGFtcGxlcy92ZHBhL3ZkcGFfYmxrX2NvbXBhY3QuaCANCj4gYi9leGFtcGxlcy92
ZHBhL3ZkcGFfYmxrX2NvbXBhY3QuaA0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAw
MDAwMDAwLi40MjBkNDhlDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvZXhhbXBsZXMvdmRwYS92
ZHBhX2Jsa19jb21wYWN0LmgNCj4gQEAgLTAsMCArMSwxMTcgQEANCj4gKy8qICAgIElOVEVMIENP
TkZJREVOVElBTA0KDQpJIGhvcGUgaXQgd2FzIG5vdCBzdXBwb3NlZCB0byBiZSBjb25maWRlbnRp
YWwgOikNCg0KPiArICoNCj4gKyAqICAgIENvcHlyaWdodCAoYykgSW50ZWwgQ29ycG9yYXRpb24u
DQo+ICsgKiAgICBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiArICoNCj4gKyAqICAgIFRoZSBzb3Vy
Y2UgY29kZSBjb250YWluZWQgb3IgZGVzY3JpYmVkIGhlcmVpbiBhbmQgYWxsIGRvY3VtZW50cyBy
ZWxhdGVkDQo+ICsgKiAgICB0byB0aGUgc291cmNlIGNvZGUgKCJNYXRlcmlhbCIpIGFyZSBvd25l
ZCBieSBJbnRlbCBDb3Jwb3JhdGlvbiBvciBpdHMNCj4gKyAqICAgIHN1cHBsaWVycyBvciBsaWNl
bnNvcnMuICBUaXRsZSB0byB0aGUgTWF0ZXJpYWwgcmVtYWlucyB3aXRoIEludGVsDQo+ICsgKiAg
ICBDb3Jwb3JhdGlvbiBvciBpdHMgc3VwcGxpZXJzIGFuZCBsaWNlbnNvcnMuICBUaGUgTWF0ZXJp
YWwgY29udGFpbnMgdHJhZGUNCj4gKyAqICAgIHNlY3JldHMgYW5kIHByb3ByaWV0YXJ5IGFuZCBj
b25maWRlbnRpYWwgaW5mb3JtYXRpb24gb2YgSW50ZWwgb3IgaXRzDQo+ICsgKiAgICBzdXBwbGll
cnMgYW5kIGxpY2Vuc29ycy4gIFRoZSBNYXRlcmlhbCBpcyBwcm90ZWN0ZWQgYnkgd29ybGR3aWRl
DQo+ICsgKiAgICBjb3B5cmlnaHQgYW5kIHRyYWRlIHNlY3JldCBsYXdzIGFuZCB0cmVhdHkgcHJv
dmlzaW9ucy4gIE5vIHBhcnQgb2YgdGhlDQo+ICsgKiAgICBNYXRlcmlhbCBtYXkgYmUgdXNlZCwg
Y29waWVkLCByZXByb2R1Y2VkLCBtb2RpZmllZCwgcHVibGlzaGVkLCB1cGxvYWRlZCwNCj4gKyAq
ICAgIHBvc3RlZCwgdHJhbnNtaXR0ZWQsIGRpc3RyaWJ1dGVkLCBvciBkaXNjbG9zZWQgaW4gYW55
IHdheSB3aXRob3V0IEludGVsJ3MNCj4gKyAqICAgIHByaW9yIGV4cHJlc3Mgd3JpdHRlbiBwZXJt
aXNzaW9uLg0KPiArICoNCj4gKyAqICAgIE5vIGxpY2Vuc2UgdW5kZXIgYW55IHBhdGVudCwgY29w
eXJpZ2h0LCB0cmFkZSBzZWNyZXQgb3Igb3RoZXINCj4gKyAqICAgIGludGVsbGVjdHVhbCBwcm9w
ZXJ0eSByaWdodCBpcyBncmFudGVkIHRvIG9yIGNvbmZlcnJlZCB1cG9uIHlvdSBieQ0KPiArICog
ICAgZGlzY2xvc3VyZSBvciBkZWxpdmVyeSBvZiB0aGUgTWF0ZXJpYWxzLCBlaXRoZXIgZXhwcmVz
c2x5LCBieQ0KPiArICogICAgaW1wbGljYXRpb24sIGluZHVjZW1lbnQsIGVzdG9wcGVsIG9yIG90
aGVyd2lzZS4gIEFueSBsaWNlbnNlIHVuZGVyIHN1Y2gNCj4gKyAqICAgIGludGVsbGVjdHVhbCBw
cm9wZXJ0eSByaWdodHMgbXVzdCBiZSBleHByZXNzIGFuZCBhcHByb3ZlZCBieSBJbnRlbCBpbg0K
PiArICogICAgd3JpdGluZy4NCj4gKyAqLw0KPiArDQo+ICsjaWZuZGVmIF9WRFBBX0JMS19DT01Q
QUNUX0hfDQo+ICsjZGVmaW5lIF9WRFBBX0JMS19DT01QQUNUX0hfDQo+ICsNCj4gKy8qKg0KPiAr
ICogQGZpbGUNCj4gKyAqDQo+ICsgKiBEZXZpY2Ugc3BlY2lmaWMgdmhvc3QgbGliDQo+ICsgKi8N
Cj4gKy92ZHBhDQo+ICsjaW5jbHVkZSA8c3RkYm9vbC5oPg0KPiArDQo+ICsjaW5jbHVkZSA8cnRl
X3BjaS5oPg0KPiArI2luY2x1ZGUgPHJ0ZV92aG9zdC5oPg0KPiArDQo+ICsvKiBGZWF0dXJlIGJp
dHMgKi8NCj4gKyNkZWZpbmUgVklSVElPX0JMS19GX1NJWkVfTUFYICAgICAxICAgIC8qIEluZGlj
YXRlcyBtYXhpbXVtIHNlZ21lbnQgc2l6ZSAqLw0KPiArI2RlZmluZSBWSVJUSU9fQkxLX0ZfU0VH
X01BWCAgICAgIDIgICAgLyogSW5kaWNhdGVzIG1heGltdW0gIyBvZiBzZWdtZW50cyAqLw0KPiAr
I2RlZmluZSBWSVJUSU9fQkxLX0ZfR0VPTUVUUlkgICAgIDQgICAgLyogTGVnYWN5IGdlb21ldHJ5
IGF2YWlsYWJsZSAgKi8NCj4gKyNkZWZpbmUgVklSVElPX0JMS19GX1JPICAgICAgICAgICA1ICAg
IC8qIERpc2sgaXMgcmVhZC1vbmx5ICovDQo+ICsjZGVmaW5lIFZJUlRJT19CTEtfRl9CTEtfU0la
RSAgICAgNiAgICAvKiBCbG9jayBzaXplIG9mIGRpc2sgaXMgYXZhaWxhYmxlICovDQo+ICsjZGVm
aW5lIFZJUlRJT19CTEtfRl9UT1BPTE9HWSAgICAgMTAgICAvKiBUb3BvbG9neSBpbmZvcm1hdGlv
biBpcyBhdmFpbGFibGUgKi8NCj4gKyNkZWZpbmUgVklSVElPX0JMS19GX01RICAgICAgICAgICAx
MiAgIC8qIHN1cHBvcnQgbW9yZSB0aGFuIG9uZSB2cSAqLw0KPiArI2RlZmluZSBWSVJUSU9fQkxL
X0ZfRElTQ0FSRCAgICAgIDEzICAgLyogRElTQ0FSRCBpcyBzdXBwb3J0ZWQgKi8NCj4gKyNkZWZp
bmUgVklSVElPX0JMS19GX1dSSVRFX1pFUk9FUyAxNCAgIC8qIFdSSVRFIFpFUk9FUyBpcyBzdXBw
b3J0ZWQgKi8NCj4gKw0KPiArLyogTGVnYWN5IGZlYXR1cmUgYml0cyAqLw0KPiArI2lmbmRlZiBW
SVJUSU9fQkxLX05PX0xFR0FDWQ0KPiArI2RlZmluZSBWSVJUSU9fQkxLX0ZfQkFSUklFUiAgICAg
IDAgICAgLyogRG9lcyBob3N0IHN1cHBvcnQgYmFycmllcnM/ICovDQo+ICsjZGVmaW5lIFZJUlRJ
T19CTEtfRl9TQ1NJICAgICAgICAgNyAgICAvKiBTdXBwb3J0cyBzY3NpIGNvbW1hbmQgcGFzc3Ro
cnUgKi8NCj4gKyNkZWZpbmUgVklSVElPX0JMS19GX0ZMVVNIICAgICAgICA5ICAgIC8qIEZsdXNo
IGNvbW1hbmQgc3VwcG9ydGVkICovDQo+ICsjZGVmaW5lIFZJUlRJT19CTEtfRl9DT05GSUdfV0NF
ICAgMTEgICAvKiBXcml0ZWJhY2sgbW9kZSBhdmFpbGFibGUgaW4gY29uZmlnICovDQo+ICsNCj4g
Ky8qIE9sZCAoZGVwcmVjYXRlZCkgbmFtZSBmb3IgVklSVElPX0JMS19GX0ZMVVNILiAqLyAjZGVm
aW5lIA0KPiArVklSVElPX0JMS19GX1dDRSBWSVJUSU9fQkxLX0ZfRkxVU0ggI2VuZGlmIC8qICFW
SVJUSU9fQkxLX05PX0xFR0FDWSANCj4gKyovDQo+ICsNCj4gKyNpZm5kZWYgVkhPU1RfVVNFUl9G
X1BST1RPQ09MX0ZFQVRVUkVTICNkZWZpbmUgDQo+ICtWSE9TVF9VU0VSX0ZfUFJPVE9DT0xfRkVB
VFVSRVMgMzAgI2VuZGlmDQo+ICsNCj4gKyNkZWZpbmUgU1BES19WSE9TVF9GRUFUVVJFUyAoKDFV
TEwgPDwgVkhPU1RfRl9MT0dfQUxMKSB8IFwNCg0KV2h5IHRoZXNlIHJlZmVyZW5jZXMgdG8gU1BE
Sz8NCg0KPiArCSgxVUxMIDw8IFZIT1NUX1VTRVJfRl9QUk9UT0NPTF9GRUFUVVJFUykgfCBcDQo+
ICsJKDFVTEwgPDwgVklSVElPX0ZfVkVSU0lPTl8xKSB8IFwNCj4gKwkoMVVMTCA8PCBWSVJUSU9f
Rl9OT1RJRllfT05fRU1QVFkpIHwgXA0KPiArCSgxVUxMIDw8IFZJUlRJT19SSU5HX0ZfRVZFTlRf
SURYKSB8IFwNCj4gKwkoMVVMTCA8PCBWSVJUSU9fUklOR19GX0lORElSRUNUX0RFU0MpKQ0KPiAr
DQo+ICsjZGVmaW5lIFNQREtfVkhPU1RfRElTQUJMRURfRkVBVFVSRVMgKCgxVUxMIDw8IFZJUlRJ
T19SSU5HX0ZfRVZFTlRfSURYKSB8IFwNCj4gKwkoMVVMTCA8PCBWSVJUSU9fRl9OT1RJRllfT05f
RU1QVFkpKQ0KPiArDQo+ICsjZGVmaW5lIFNQREtfVkhPU1RfQkxLX0ZFQVRVUkVTX0JBU0UgKFNQ
REtfVkhPU1RfRkVBVFVSRVMgfCBcDQo+ICsJKDFVTEwgPDwgVklSVElPX0JMS19GX1NJWkVfTUFY
KSB8ICgxVUxMIDw8IFZJUlRJT19CTEtfRl9TRUdfTUFYKSB8IFwNCj4gKwkoMVVMTCA8PCBWSVJU
SU9fQkxLX0ZfR0VPTUVUUlkpIHwgKDFVTEwgPDwgVklSVElPX0JMS19GX0JMS19TSVpFKSB8IFwN
Cj4gKwkoMVVMTCA8PCBWSVJUSU9fQkxLX0ZfVE9QT0xPR1kpIHwgKDFVTEwgPDwgVklSVElPX0JM
S19GX0JBUlJJRVIpICB8IFwNCj4gKwkoMVVMTCA8PCBWSVJUSU9fQkxLX0ZfU0NTSSkgICAgIHwg
KDFVTEwgPDwgVklSVElPX0JMS19GX0NPTkZJR19XQ0UpIHwgXA0KPiArCSgxVUxMIDw8IFZJUlRJ
T19CTEtfRl9NUSkpDQo+ICsNCj4gKy8qIE5vdCBzdXBwb3J0ZWQgZmVhdHVyZXMgKi8NCj4gKyNk
ZWZpbmUgU1BES19WSE9TVF9CTEtfRElTQUJMRURfRkVBVFVSRVMgKFNQREtfVkhPU1RfRElTQUJM
RURfRkVBVFVSRVMgfCBcDQo+ICsJKDFVTEwgPDwgVklSVElPX0JMS19GX0dFT01FVFJZKSB8ICgx
VUxMIDw8IFZJUlRJT19CTEtfRl9DT05GSUdfV0NFKSB8IFwNCj4gKwkoMVVMTCA8PCBWSVJUSU9f
QkxLX0ZfQkFSUklFUikgIHwgKDFVTEwgPDwgVklSVElPX0JMS19GX1NDU0kpKQ0KPiArDQo+ICsv
KiBWaG9zdC1ibGsgc3VwcG9ydCBwcm90b2NvbCBmZWF0dXJlcyAqLyAjZGVmaW5lIA0KPiArU1BE
S19WSE9TVF9CTEtfUFJPVE9DT0xfRkVBVFVSRVMgXA0KPiArCSgoMVVMTCA8PCBWSE9TVF9VU0VS
X1BST1RPQ09MX0ZfQ09ORklHKSB8IFwNCj4gKwkoMVVMTCA8PCBWSE9TVF9VU0VSX1BST1RPQ09M
X0ZfSU5GTElHSFRfU0hNRkQpKQ0KPiArDQo+ICsvKioNCj4gKyAqIEB3YXJuaW5nDQo+ICsgKiBA
YiBFWFBFUklNRU5UQUw6IHRoaXMgQVBJIG1heSBjaGFuZ2Ugd2l0aG91dCBwcmlvciBub3RpY2UN
Cj4gKyAqDQo+ICsgKiBUaGlzIGZ1bmN0aW9uIHdpbGwgc2V0IHZob3N0IHVzZXIgYmxvY2sNCj4g
KyAqDQo+ICsgKiBAcGFyYW0gcGF0aA0KPiArICogIHNvY2tldCBwYXRoDQo+ICsgKi8NCj4gK2lu
dA0KPiArdmRwYV9ibGtfZGV2aWNlX3NldF9mZWF0dXJlc19hbmRfcHJvdG9jb2woY29uc3QgY2hh
ciAqcGF0aCwNCj4gKwlzdHJ1Y3QgcnRlX3ZkcGFfZGV2aWNlICp2ZGV2KTsNCj4gKw0KPiArLyoq
DQo+ICsgKiBAd2FybmluZw0KPiArICogQGIgRVhQRVJJTUVOVEFMOiB0aGlzIEFQSSBtYXkgY2hh
bmdlIHdpdGhvdXQgcHJpb3Igbm90aWNlDQo+ICsgKg0KPiArICogSW5zdGFsbCBleHRlcm5hbCBo
b29rIHRvIGhhbmRsZSB2aG9zdCB1c2VyIGJsb2NrIG1lc3NhZ2UNCj4gKyAqDQo+ICsgKiBAcGFy
YW0gdmlkDQo+ICsgKiAgdmhvc3QgZGV2aWNlIGlkDQo+ICsgKi8NCj4gK2ludA0KPiArcnRlX3Zo
b3N0X2Jsa19zZXNzaW9uX2luc3RhbGxfcnRlX2NvbXBhdF9ob29rcyhpbnQgdmlkKTsNCj4gKw0K
PiArI2VuZGlmIC8qIF9WRFBBX0JMS19DT01QQUNUX0hfICovDQo+IGRpZmYgLS1naXQgYS9leGFt
cGxlcy92ZHBhL3Zob3N0X3VzZXIuaCBiL2V4YW1wbGVzL3ZkcGEvdmhvc3RfdXNlci5oIA0KPiBu
ZXcgZmlsZSBtb2RlIDEwMDY0NCBpbmRleCAwMDAwMDAwLi44Yjc0N2QwDQo+IC0tLSAvZGV2L251
bGwNCj4gKysrIGIvZXhhbXBsZXMvdmRwYS92aG9zdF91c2VyLmgNCj4gQEAgLTAsMCArMSwxODkg
QEANCj4gKy8qICAgIElOVEVMIENPTkZJREVOVElBTA0KPiArICoNCj4gKyAqICAgIENvcHlyaWdo
dCAoYykgSW50ZWwgQ29ycG9yYXRpb24uDQo+ICsgKiAgICBBbGwgcmlnaHRzIHJlc2VydmVkLg0K
PiArICoNCj4gKyAqICAgIFRoZSBzb3VyY2UgY29kZSBjb250YWluZWQgb3IgZGVzY3JpYmVkIGhl
cmVpbiBhbmQgYWxsIGRvY3VtZW50cyByZWxhdGVkDQo+ICsgKiAgICB0byB0aGUgc291cmNlIGNv
ZGUgKCJNYXRlcmlhbCIpIGFyZSBvd25lZCBieSBJbnRlbCBDb3Jwb3JhdGlvbiBvciBpdHMNCj4g
KyAqICAgIHN1cHBsaWVycyBvciBsaWNlbnNvcnMuICBUaXRsZSB0byB0aGUgTWF0ZXJpYWwgcmVt
YWlucyB3aXRoIEludGVsDQo+ICsgKiAgICBDb3Jwb3JhdGlvbiBvciBpdHMgc3VwcGxpZXJzIGFu
ZCBsaWNlbnNvcnMuICBUaGUgTWF0ZXJpYWwgY29udGFpbnMgdHJhZGUNCj4gKyAqICAgIHNlY3Jl
dHMgYW5kIHByb3ByaWV0YXJ5IGFuZCBjb25maWRlbnRpYWwgaW5mb3JtYXRpb24gb2YgSW50ZWwg
b3IgaXRzDQo+ICsgKiAgICBzdXBwbGllcnMgYW5kIGxpY2Vuc29ycy4gIFRoZSBNYXRlcmlhbCBp
cyBwcm90ZWN0ZWQgYnkgd29ybGR3aWRlDQo+ICsgKiAgICBjb3B5cmlnaHQgYW5kIHRyYWRlIHNl
Y3JldCBsYXdzIGFuZCB0cmVhdHkgcHJvdmlzaW9ucy4gIE5vIHBhcnQgb2YgdGhlDQo+ICsgKiAg
ICBNYXRlcmlhbCBtYXkgYmUgdXNlZCwgY29waWVkLCByZXByb2R1Y2VkLCBtb2RpZmllZCwgcHVi
bGlzaGVkLCB1cGxvYWRlZCwNCj4gKyAqICAgIHBvc3RlZCwgdHJhbnNtaXR0ZWQsIGRpc3RyaWJ1
dGVkLCBvciBkaXNjbG9zZWQgaW4gYW55IHdheSB3aXRob3V0IEludGVsJ3MNCj4gKyAqICAgIHBy
aW9yIGV4cHJlc3Mgd3JpdHRlbiBwZXJtaXNzaW9uLg0KPiArICoNCj4gKyAqICAgIE5vIGxpY2Vu
c2UgdW5kZXIgYW55IHBhdGVudCwgY29weXJpZ2h0LCB0cmFkZSBzZWNyZXQgb3Igb3RoZXINCj4g
KyAqICAgIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodCBpcyBncmFudGVkIHRvIG9yIGNvbmZl
cnJlZCB1cG9uIHlvdSBieQ0KPiArICogICAgZGlzY2xvc3VyZSBvciBkZWxpdmVyeSBvZiB0aGUg
TWF0ZXJpYWxzLCBlaXRoZXIgZXhwcmVzc2x5LCBieQ0KPiArICogICAgaW1wbGljYXRpb24sIGlu
ZHVjZW1lbnQsIGVzdG9wcGVsIG9yIG90aGVyd2lzZS4gIEFueSBsaWNlbnNlIHVuZGVyIHN1Y2gN
Cj4gKyAqICAgIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgbXVzdCBiZSBleHByZXNzIGFu
ZCBhcHByb3ZlZCBieSBJbnRlbCBpbg0KPiArICogICAgd3JpdGluZy4NCj4gKyAqLw0KPiArDQo+
ICsjaWZuZGVmIF9WSE9TVF9ORVRfVVNFUl9IDQo+ICsjZGVmaW5lIF9WSE9TVF9ORVRfVVNFUl9I
DQo+ICsNCj4gKyNpbmNsdWRlIDxzdGRpbnQuaD4NCj4gKyNpbmNsdWRlIDxsaW51eC92aG9zdC5o
Pg0KPiArDQo+ICsjaW5jbHVkZSAicnRlX3Zob3N0LmgiDQo+ICsNCj4gKy8qIHJlZmVyIHRvIGh3
L3ZpcnRpby92aG9zdC11c2VyLmMgKi8NCj4gKw0KPiArI2RlZmluZSBWSE9TVF9NRU1PUllfTUFY
X05SRUdJT05TIDgNCj4gKw0KPiArI2lmbmRlZiBWSE9TVF9VU0VSX01BWF9DT05GSUdfU0laRQ0K
PiArI2RlZmluZSBWSE9TVF9VU0VSX01BWF9DT05GSUdfU0laRQkJMjU2DQo+ICsjZW5kaWYNCj4g
Kw0KPiArI2RlZmluZSBWSE9TVF9VU0VSX1BST1RPQ09MX0ZFQVRVUkVTCSgoMVVMTCA8PCBWSE9T
VF9VU0VSX1BST1RPQ09MX0ZfTVEpIHwgXA0KPiArCQkJKDFVTEwgPDwgVkhPU1RfVVNFUl9QUk9U
T0NPTF9GX0xPR19TSE1GRCkgfFwNCj4gKwkJCSgxVUxMIDw8IFZIT1NUX1VTRVJfUFJPVE9DT0xf
Rl9SQVJQKSB8IFwNCj4gKwkJCSgxVUxMIDw8IFZIT1NUX1VTRVJfUFJPVE9DT0xfRl9SRVBMWV9B
Q0spIHwgXA0KPiArCQkJKDFVTEwgPDwgVkhPU1RfVVNFUl9QUk9UT0NPTF9GX05FVF9NVFUpIHwg
XA0KPiArCQkJKDFVTEwgPDwgVkhPU1RfVVNFUl9QUk9UT0NPTF9GX1NMQVZFX1JFUSkgfCBcDQo+
ICsJCQkoMVVMTCA8PCBWSE9TVF9VU0VSX1BST1RPQ09MX0ZfQ1JZUFRPX1NFU1NJT04pIHwgXA0K
PiArCQkJKDFVTEwgPDwgVkhPU1RfVVNFUl9QUk9UT0NPTF9GX1NMQVZFX1NFTkRfRkQpIHwgXA0K
PiArCQkJKDFVTEwgPDwgVkhPU1RfVVNFUl9QUk9UT0NPTF9GX0hPU1RfTk9USUZJRVIpIHwgXA0K
PiArCQkJKDFVTEwgPDwgVkhPU1RfVVNFUl9QUk9UT0NPTF9GX1BBR0VGQVVMVCkpDQo+ICsNCj4g
K3R5cGVkZWYgZW51bSBWaG9zdFVzZXJSZXF1ZXN0IHsNCj4gKwlWSE9TVF9VU0VSX05PTkUgPSAw
LA0KPiArCVZIT1NUX1VTRVJfR0VUX0ZFQVRVUkVTID0gMSwNCj4gKwlWSE9TVF9VU0VSX1NFVF9G
RUFUVVJFUyA9IDIsDQo+ICsJVkhPU1RfVVNFUl9TRVRfT1dORVIgPSAzLA0KPiArCVZIT1NUX1VT
RVJfUkVTRVRfT1dORVIgPSA0LA0KPiArCVZIT1NUX1VTRVJfU0VUX01FTV9UQUJMRSA9IDUsDQo+
ICsJVkhPU1RfVVNFUl9TRVRfTE9HX0JBU0UgPSA2LA0KPiArCVZIT1NUX1VTRVJfU0VUX0xPR19G
RCA9IDcsDQo+ICsJVkhPU1RfVVNFUl9TRVRfVlJJTkdfTlVNID0gOCwNCj4gKwlWSE9TVF9VU0VS
X1NFVF9WUklOR19BRERSID0gOSwNCj4gKwlWSE9TVF9VU0VSX1NFVF9WUklOR19CQVNFID0gMTAs
DQo+ICsJVkhPU1RfVVNFUl9HRVRfVlJJTkdfQkFTRSA9IDExLA0KPiArCVZIT1NUX1VTRVJfU0VU
X1ZSSU5HX0tJQ0sgPSAxMiwNCj4gKwlWSE9TVF9VU0VSX1NFVF9WUklOR19DQUxMID0gMTMsDQo+
ICsJVkhPU1RfVVNFUl9TRVRfVlJJTkdfRVJSID0gMTQsDQo+ICsJVkhPU1RfVVNFUl9HRVRfUFJP
VE9DT0xfRkVBVFVSRVMgPSAxNSwNCj4gKwlWSE9TVF9VU0VSX1NFVF9QUk9UT0NPTF9GRUFUVVJF
UyA9IDE2LA0KPiArCVZIT1NUX1VTRVJfR0VUX1FVRVVFX05VTSA9IDE3LA0KPiArCVZIT1NUX1VT
RVJfU0VUX1ZSSU5HX0VOQUJMRSA9IDE4LA0KPiArCVZIT1NUX1VTRVJfU0VORF9SQVJQID0gMTks
DQo+ICsJVkhPU1RfVVNFUl9ORVRfU0VUX01UVSA9IDIwLA0KPiArCVZIT1NUX1VTRVJfU0VUX1NM
QVZFX1JFUV9GRCA9IDIxLA0KPiArCVZIT1NUX1VTRVJfSU9UTEJfTVNHID0gMjIsDQo+ICsJVkhP
U1RfVVNFUl9DUllQVE9fQ1JFQVRFX1NFU1MgPSAyNiwNCj4gKwlWSE9TVF9VU0VSX0NSWVBUT19D
TE9TRV9TRVNTID0gMjcsDQo+ICsJVkhPU1RfVVNFUl9QT1NUQ09QWV9BRFZJU0UgPSAyOCwNCj4g
KwlWSE9TVF9VU0VSX1BPU1RDT1BZX0xJU1RFTiA9IDI5LA0KPiArCVZIT1NUX1VTRVJfUE9TVENP
UFlfRU5EID0gMzAsDQo+ICsJVkhPU1RfVVNFUl9HRVRfSU5GTElHSFRfRkQgPSAzMSwNCj4gKwlW
SE9TVF9VU0VSX1NFVF9JTkZMSUdIVF9GRCA9IDMyLA0KPiArCVZIT1NUX1VTRVJfTUFYID0gMzMN
Cj4gK30gVmhvc3RVc2VyUmVxdWVzdDsNCj4gKw0KPiArdHlwZWRlZiBlbnVtIFZob3N0VXNlclNs
YXZlUmVxdWVzdCB7DQo+ICsJVkhPU1RfVVNFUl9TTEFWRV9OT05FID0gMCwNCj4gKwlWSE9TVF9V
U0VSX1NMQVZFX0lPVExCX01TRyA9IDEsDQo+ICsJVkhPU1RfVVNFUl9TTEFWRV9WUklOR19IT1NU
X05PVElGSUVSX01TRyA9IDMsDQo+ICsJVkhPU1RfVVNFUl9TTEFWRV9NQVgNCj4gK30gVmhvc3RV
c2VyU2xhdmVSZXF1ZXN0Ow0KPiArDQo+ICt0eXBlZGVmIHN0cnVjdCBWaG9zdFVzZXJNZW1vcnlS
ZWdpb24gew0KPiArCXVpbnQ2NF90IGd1ZXN0X3BoeXNfYWRkcjsNCj4gKwl1aW50NjRfdCBtZW1v
cnlfc2l6ZTsNCj4gKwl1aW50NjRfdCB1c2Vyc3BhY2VfYWRkcjsNCj4gKwl1aW50NjRfdCBtbWFw
X29mZnNldDsNCj4gK30gVmhvc3RVc2VyTWVtb3J5UmVnaW9uOw0KPiArDQo+ICt0eXBlZGVmIHN0
cnVjdCBWaG9zdFVzZXJNZW1vcnkgew0KPiArCXVpbnQzMl90IG5yZWdpb25zOw0KPiArCXVpbnQz
Ml90IHBhZGRpbmc7DQo+ICsJVmhvc3RVc2VyTWVtb3J5UmVnaW9uIHJlZ2lvbnNbVkhPU1RfTUVN
T1JZX01BWF9OUkVHSU9OU107DQo+ICt9IFZob3N0VXNlck1lbW9yeTsNCj4gKw0KPiArdHlwZWRl
ZiBzdHJ1Y3QgVmhvc3RVc2VyTG9nIHsNCj4gKwl1aW50NjRfdCBtbWFwX3NpemU7DQo+ICsJdWlu
dDY0X3QgbW1hcF9vZmZzZXQ7DQo+ICt9IFZob3N0VXNlckxvZzsNCj4gKw0KPiArLyogQ29tcGx5
IHdpdGggQ3J5cHRvZGV2LUxpbnV4ICovDQo+ICsjZGVmaW5lIFZIT1NUX1VTRVJfQ1JZUFRPX01B
WF9ITUFDX0tFWV9MRU5HVEgJNTEyDQo+ICsjZGVmaW5lIFZIT1NUX1VTRVJfQ1JZUFRPX01BWF9D
SVBIRVJfS0VZX0xFTkdUSAk2NA0KPiArDQo+ICsvKiBTYW1lIHN0cnVjdHVyZSBhcyB2aG9zdC11
c2VyIGJhY2tlbmQgc2Vzc2lvbiBpbmZvICovIHR5cGVkZWYgDQo+ICtzdHJ1Y3QgVmhvc3RVc2Vy
Q3J5cHRvU2Vzc2lvblBhcmFtIHsNCj4gKwlpbnQ2NF90IHNlc3Npb25faWQ7DQo+ICsJdWludDMy
X3Qgb3BfY29kZTsNCj4gKwl1aW50MzJfdCBjaXBoZXJfYWxnbzsNCj4gKwl1aW50MzJfdCBjaXBo
ZXJfa2V5X2xlbjsNCj4gKwl1aW50MzJfdCBoYXNoX2FsZ287DQo+ICsJdWludDMyX3QgZGlnZXN0
X2xlbjsNCj4gKwl1aW50MzJfdCBhdXRoX2tleV9sZW47DQo+ICsJdWludDMyX3QgYWFkX2xlbjsN
Cj4gKwl1aW50OF90IG9wX3R5cGU7DQo+ICsJdWludDhfdCBkaXI7DQo+ICsJdWludDhfdCBoYXNo
X21vZGU7DQo+ICsJdWludDhfdCBjaGFpbmluZ19kaXI7DQo+ICsJdWludDhfdCAqY2lwaGVfa2V5
Ow0KPiArCXVpbnQ4X3QgKmF1dGhfa2V5Ow0KPiArCXVpbnQ4X3QgY2lwaGVyX2tleV9idWZbVkhP
U1RfVVNFUl9DUllQVE9fTUFYX0NJUEhFUl9LRVlfTEVOR1RIXTsNCj4gKwl1aW50OF90IGF1dGhf
a2V5X2J1ZltWSE9TVF9VU0VSX0NSWVBUT19NQVhfSE1BQ19LRVlfTEVOR1RIXTsNCj4gK30gVmhv
c3RVc2VyQ3J5cHRvU2Vzc2lvblBhcmFtOw0KPiArDQo+ICt0eXBlZGVmIHN0cnVjdCBWaG9zdFVz
ZXJWcmluZ0FyZWEgew0KPiArCXVpbnQ2NF90IHU2NDsNCj4gKwl1aW50NjRfdCBzaXplOw0KPiAr
CXVpbnQ2NF90IG9mZnNldDsNCj4gK30gVmhvc3RVc2VyVnJpbmdBcmVhOw0KPiArDQo+ICt0eXBl
ZGVmIHN0cnVjdCBWaG9zdFVzZXJJbmZsaWdodCB7DQo+ICsJdWludDY0X3QgbW1hcF9zaXplOw0K
PiArCXVpbnQ2NF90IG1tYXBfb2Zmc2V0Ow0KPiArCXVpbnQxNl90IG51bV9xdWV1ZXM7DQo+ICsJ
dWludDE2X3QgcXVldWVfc2l6ZTsNCj4gK30gVmhvc3RVc2VySW5mbGlnaHQ7DQo+ICsNCj4gKy8q
KiBHZXQvc2V0IGNvbmZpZyBtc2cgcGF5bG9hZCAqLw0KPiArc3RydWN0IHZob3N0X3VzZXJfY29u
ZmlnIHsNCj4gKwl1aW50MzJfdCBvZmZzZXQ7DQo+ICsJdWludDMyX3Qgc2l6ZTsNCj4gKwl1aW50
MzJfdCBmbGFnczsNCj4gKwl1aW50OF90IHJlZ2lvbltWSE9TVF9VU0VSX01BWF9DT05GSUdfU0la
RV07DQo+ICt9Ow0KPiArDQo+ICt0eXBlZGVmIHN0cnVjdCBWaG9zdFVzZXJNc2cgew0KPiArCXVu
aW9uIHsNCj4gKwkJdWludDMyX3QgbWFzdGVyOyAvKiBhIFZob3N0VXNlclJlcXVlc3QgdmFsdWUg
Ki8NCj4gKwkJdWludDMyX3Qgc2xhdmU7ICAvKiBhIFZob3N0VXNlclNsYXZlUmVxdWVzdCB2YWx1
ZSovDQo+ICsJfSByZXF1ZXN0Ow0KPiArDQo+ICsjZGVmaW5lIFZIT1NUX1VTRVJfVkVSU0lPTl9N
QVNLICAgICAweDMNCj4gKyNkZWZpbmUgVkhPU1RfVVNFUl9SRVBMWV9NQVNLICAgICAgICgweDEg
PDwgMikNCj4gKyNkZWZpbmUgVkhPU1RfVVNFUl9ORUVEX1JFUExZCQkoMHgxIDw8IDMpDQo+ICsJ
dWludDMyX3QgZmxhZ3M7DQo+ICsJdWludDMyX3Qgc2l6ZTsgLyogdGhlIGZvbGxvd2luZyBwYXls
b2FkIHNpemUgKi8NCj4gKwl1bmlvbiB7DQo+ICsjZGVmaW5lIFZIT1NUX1VTRVJfVlJJTkdfSURY
X01BU0sgICAweGZmDQo+ICsjZGVmaW5lIFZIT1NUX1VTRVJfVlJJTkdfTk9GRF9NQVNLICAoMHgx
PDw4KQ0KPiArCQl1aW50NjRfdCB1NjQ7DQo+ICsJCXN0cnVjdCB2aG9zdF92cmluZ19zdGF0ZSBz
dGF0ZTsNCj4gKwkJc3RydWN0IHZob3N0X3ZyaW5nX2FkZHIgYWRkcjsNCj4gKwkJVmhvc3RVc2Vy
TWVtb3J5IG1lbW9yeTsNCj4gKwkJVmhvc3RVc2VyTG9nICAgIGxvZzsNCj4gKwkJc3RydWN0IHZo
b3N0X2lvdGxiX21zZyBpb3RsYjsNCj4gKwkJVmhvc3RVc2VyQ3J5cHRvU2Vzc2lvblBhcmFtIGNy
eXB0b19zZXNzaW9uOw0KPiArCQlWaG9zdFVzZXJWcmluZ0FyZWEgYXJlYTsNCj4gKwkJVmhvc3RV
c2VySW5mbGlnaHQgaW5mbGlnaHQ7DQo+ICsJCXN0cnVjdCB2aG9zdF91c2VyX2NvbmZpZyBjZmc7
DQo+ICsJfSBwYXlsb2FkOw0KPiArCWludCBmZHNbVkhPU1RfTUVNT1JZX01BWF9OUkVHSU9OU107
DQo+ICsJaW50IGZkX251bTsNCj4gK30gX19hdHRyaWJ1dGUoKHBhY2tlZCkpIFZob3N0VXNlck1z
ZzsNCj4gKw0KPiArI2RlZmluZSBWSE9TVF9VU0VSX0hEUl9TSVpFIG9mZnNldG9mKFZob3N0VXNl
ck1zZywgcGF5bG9hZC51NjQpDQo+ICsNCj4gKy8qIFRoZSB2ZXJzaW9uIG9mIHRoZSBwcm90b2Nv
bCB3ZSBzdXBwb3J0ICovDQo+ICsjZGVmaW5lIFZIT1NUX1VTRVJfVkVSU0lPTiAgICAweDENCj4g
KyNlbmRpZg0KDQo=