From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <gage.eads@intel.com>
Received: from mga14.intel.com (mga14.intel.com [192.55.52.115])
 by dpdk.org (Postfix) with ESMTP id 004945A33
 for <dev@dpdk.org>; Fri, 14 Oct 2016 17:01:00 +0200 (CEST)
Received: from fmsmga006.fm.intel.com ([10.253.24.20])
 by fmsmga103.fm.intel.com with ESMTP; 14 Oct 2016 08:00:59 -0700
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="5.31,493,1473145200"; d="scan'208";a="19591436"
Received: from fmsmsx107.amr.corp.intel.com ([10.18.124.205])
 by fmsmga006.fm.intel.com with ESMTP; 14 Oct 2016 08:00:58 -0700
Received: from fmsmsx124.amr.corp.intel.com (10.18.125.39) by
 fmsmsx107.amr.corp.intel.com (10.18.124.205) with Microsoft SMTP Server (TLS)
 id 14.3.248.2; Fri, 14 Oct 2016 08:00:58 -0700
Received: from fmsmsx108.amr.corp.intel.com ([169.254.9.94]) by
 fmsmsx124.amr.corp.intel.com ([169.254.8.236]) with mapi id 14.03.0248.002;
 Fri, 14 Oct 2016 08:00:58 -0700
From: "Eads, Gage" <gage.eads@intel.com>
To: Jerin Jacob <jerin.jacob@caviumnetworks.com>, "dev@dpdk.org" <dev@dpdk.org>
CC: "thomas.monjalon@6wind.com" <thomas.monjalon@6wind.com>, "Richardson,
 Bruce" <bruce.richardson@intel.com>, "Vangati, Narender"
 <narender.vangati@intel.com>, "hemant.agrawal@nxp.com"
 <hemant.agrawal@nxp.com>
Thread-Topic: [dpdk-dev] [RFC] [PATCH v2] libeventdev: event driven
 programming model framework for DPDK
Thread-Index: AQHSI/YNvEzO7rdOo0eii1P1kcIFBKCoDBoA
Date: Fri, 14 Oct 2016 15:00:57 +0000
Message-ID: <9184057F7FC11744A2107296B6B8EB1E01E179E0@FMSMSX108.amr.corp.intel.com>
References: <20161005072451.GA2358@localhost.localdomain>
 <1476214216-31982-1-git-send-email-jerin.jacob@caviumnetworks.com>
In-Reply-To: <1476214216-31982-1-git-send-email-jerin.jacob@caviumnetworks.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiOGRhNDYxOTQtM2I3OS00ODdmLWExMzMtODQyMzQ5NzE2YzljIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX0lDIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE1LjkuNi42IiwiVHJ1c3RlZExhYmVsSGFzaCI6Inh5R1BPT1pTVU9zb2lENTNsMkhkXC9XbmRRaGpvQ0xBXC82bVVPTCtHTkdIND0ifQ==
x-ctpclassification: CTP_IC
x-originating-ip: [10.1.200.107]
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
MIME-Version: 1.0
Subject: Re: [dpdk-dev] [RFC] [PATCH v2] libeventdev: event driven
 programming model framework for DPDK
X-BeenThere: dev@dpdk.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: patches and discussions about DPDK <dev.dpdk.org>
List-Unsubscribe: <http://dpdk.org/ml/options/dev>,
 <mailto:dev-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://dpdk.org/ml/archives/dev/>
List-Post: <mailto:dev@dpdk.org>
List-Help: <mailto:dev-request@dpdk.org?subject=help>
List-Subscribe: <http://dpdk.org/ml/listinfo/dev>,
 <mailto:dev-request@dpdk.org?subject=subscribe>
X-List-Received-Date: Fri, 14 Oct 2016 15:01:03 -0000

VGhhbmtzIEplcmluLCB0aGlzIGxvb2tzIGdvb2QuIEkndmUgcHV0IGEgZmV3IG5vdGVzL3F1ZXN0
aW9ucyBpbmxpbmUuDQoNClRoYW5rcywNCkdhZ2UNCg0KPiAgLS0tLS1PcmlnaW5hbCBNZXNzYWdl
LS0tLS0NCj4gIEZyb206IEplcmluIEphY29iIFttYWlsdG86amVyaW4uamFjb2JAY2F2aXVtbmV0
d29ya3MuY29tXQ0KPiAgU2VudDogVHVlc2RheSwgT2N0b2JlciAxMSwgMjAxNiAyOjMwIFBNDQo+
ICBUbzogZGV2QGRwZGsub3JnDQo+ICBDYzogdGhvbWFzLm1vbmphbG9uQDZ3aW5kLmNvbTsgUmlj
aGFyZHNvbiwgQnJ1Y2UNCj4gIDxicnVjZS5yaWNoYXJkc29uQGludGVsLmNvbT47IFZhbmdhdGks
IE5hcmVuZGVyDQo+ICA8bmFyZW5kZXIudmFuZ2F0aUBpbnRlbC5jb20+OyBoZW1hbnQuYWdyYXdh
bEBueHAuY29tOyBFYWRzLCBHYWdlDQo+ICA8Z2FnZS5lYWRzQGludGVsLmNvbT47IEplcmluIEph
Y29iIDxqZXJpbi5qYWNvYkBjYXZpdW1uZXR3b3Jrcy5jb20+DQo+ICBTdWJqZWN0OiBbZHBkay1k
ZXZdIFtSRkNdIFtQQVRDSCB2Ml0gbGliZXZlbnRkZXY6IGV2ZW50IGRyaXZlbiBwcm9ncmFtbWlu
Zw0KPiAgbW9kZWwgZnJhbWV3b3JrIGZvciBEUERLDQo+ICANCj4gIFRoYW5rcyB0byBJbnRlbCBh
bmQgTlhQIGZvbGtzIGZvciB0aGUgcG9zaXRpdmUgYW5kIGNvbnN0cnVjdGl2ZSBmZWVkYmFjaw0K
PiAgSSd2ZSByZWNlaXZlZCBzbyBmYXIuIEhlcmUgaXMgdGhlIHVwZGF0ZWQgUkZDKHYyKS4NCj4g
IA0KPiAgSSd2ZSBhdHRlbXB0ZWQgdG8gYWRkcmVzcyBhcyBtYW55IGNvbW1lbnRzIGFzIHBvc3Np
YmxlLg0KPiAgDQo+ICBUaGlzIHNlcmllcyBhZGRzIHJ0ZV9ldmVudGRldi5oIHRvIHRoZSBEUERL
IHRyZWUgd2l0aA0KPiAgYWRlcXVhdGUgZG9jdW1lbnRhdGlvbiBpbiBkb3h5Z2VuIGZvcm1hdC4N
Cj4gIA0KPiAgVXBkYXRlcyBhcmUgYWxzbyBhdmFpbGFibGUgb25saW5lOg0KPiAgDQo+ICBSZWxh
dGVkIGRyYWZ0IGhlYWRlciBmaWxlICh0aGlzIHBhdGNoKToNCj4gIGh0dHBzOi8vcmF3Z2l0LmNv
bS9qZXJpbmphY29iay9saWJldmVudGRldi9tYXN0ZXIvcnRlX2V2ZW50ZGV2LmgNCj4gIA0KPiAg
UERGIHZlcnNpb24oZG94Z2VuIG91dHB1dCk6DQo+ICBodHRwczovL3Jhd2dpdC5jb20vamVyaW5q
YWNvYmsvbGliZXZlbnRkZXYvbWFzdGVyL2xpYnJ0ZV9ldmVudGRldl92Mi5wZGYNCj4gIA0KPiAg
UmVwbzoNCj4gIGh0dHBzOi8vZ2l0aHViLmNvbS9qZXJpbmphY29iay9saWJldmVudGRldg0KPiAg
DQo+ICB2MS4udjINCj4gIA0KPiAgLSBBZGRlZCBDYXZpdW0sIEludGVsLCBOWFAgY29weXJpZ2h0
cyBpbiBoZWFkZXIgZmlsZQ0KPiAgDQo+ICAtIENoYW5nZWQgdGhlIGNvbmNlcHQgb2YgZmxvdyBx
dWV1ZXMgdG8gZmxvdyBpZHMuDQo+ICBUaGlzIGlzIGF2b2lkIGRpY3RhdGluZyBhIHNwZWNpZmlj
IHN0cnVjdHVyZSB0byBob2xkIHRoZSBmbG93cy4NCj4gIEEgcy93IGltcGxlbWVudGF0aW9uIGNh
biBkbyBhdG9taWMgbG9hZCBiYWxhbmNpbmcgb24gbXVsdGlwbGUNCj4gIGZsb3cgaWRzIG1vcmUg
ZWZmaWNpZW50bHkgdGhhbiBtYWludGFpbmluZyBlYWNoIGV2ZW50IGluIGEgc3BlY2lmaWMgZmxv
dyBxdWV1ZS4NCj4gIA0KPiAgLSBDaGFuZ2UgdGhlIHNjaGVkdWxpbmcgZ3JvdXAgdG8gZXZlbnQg
cXVldWUuDQo+ICBBIHNjaGVkdWxpbmcgZ3JvdXAgaXMgbW9yZSBhIHN0cmVhbSBvZiBldmVudHMs
IHNvIGFuIGV2ZW50IHF1ZXVlIGlzIGEgYmV0dGVyDQo+ICAgYWJzdHJhY3Rpb24uDQo+ICANCj4g
IC0gSW50cm9kdWNlZCBldmVudCBwb3J0IGNvbmNlcHQsIEluc3RlYWQgb2YgdHJ5aW5nIGV2ZW50
ZGV2IGFjY2VzcyB0byB0aGUgbGNvcmUsDQo+ICBhIGhpZ2hlciBsZXZlbCBvZiBhYnN0cmFjdGlv
biBjYWxsZWQgZXZlbnQgcG9ydCBpcyBuZWVkZWQgd2hpY2ggaXMgdGhlDQo+ICBhcHBsaWNhdGlv
biBpL2YgdG8gdGhlIGV2ZW50ZGV2IHRvIGRlcXVldWUgYW5kIGVucXVldWUgdGhlIGV2ZW50cy4N
Cj4gIE9uZSBvciBtb3JlIGV2ZW50IHF1ZXVlcyBjYW4gYmUgbGlua2VkIHRvIHNpbmdsZSBldmVu
dCBwb3J0Lg0KPiAgVGhlcmUgY2FuIGJlIG1vcmUgdGhhbiBvbmUgZXZlbnQgcG9ydCBwZXIgbGNv
cmUgYWxsb3dpbmcgbXVsdGlwbGUgbGlnaHR3ZWlnaHQNCj4gIHRocmVhZHMgdG8gaGF2ZSB0aGVp
ciBvd24gaS9mIGludG8gZXZlbnRkZXYsIGlmIHRoZSBpbXBsZW1lbnRhdGlvbiBzdXBwb3J0cyBp
dC4NCj4gIEFuIGV2ZW50IHBvcnQgd2lsbCBiZSBib3VuZCB0byBhIGxjb3JlIG9yIGEgbGlnaHR3
ZWlnaHQgdGhyZWFkIHRvIGtlZXANCj4gIHBvcnRhYmxlIGFwcGxpY2F0aW9uIHdvcmtmbG93Lg0K
PiAgQW4gZXZlbnQgcG9ydCBhYnN0cmFjdGlvbiBhbHNvIGVuY2Fwc3VsYXRlcyBkZXF1ZXVlIGRl
cHRoIGFuZCBlbnF1ZXVlIGRlcHRoDQo+ICBmb3INCj4gIGEgc2NoZWR1bGVyIGltcGxlbWVudGF0
aW9ucyB3aGljaCBjYW4gc2NoZWR1bGUgbXVsdGlwbGUgZXZlbnRzIGF0IGEgdGltZSBhbmQNCj4g
IG91dHB1dCBldmVudHMgdGhhdCBjYW4gYmUgYnVmZmVyZWQuDQo+ICANCj4gIC0gQWRkZWQgY29u
ZmlndXJhdGlvbiBvcHRpb25zIHdpdGggZXZlbnQgcXVldWUobmJfYXRvbWljX2Zsb3dzLA0KPiAg
bmJfYXRvbWljX29yZGVyX3NlcXVlbmNlcywgc2luZ2xlIGNvbnN1bWVyIGV0YykNCj4gIGFuZCBl
dmVudCBwb3J0KGRlcXVldWVfcXVldWVfZGVwdGgsIGVucXVldWVfcXVldWVfZGVwdGggZXRjKSB0
byBkZWZpbmUNCj4gIHRoZQ0KPiAgbGltaXRzIG9uIHRoZSByZXNvdXJjZSB1c2FnZS4oVXNlZnVs
IGZvciBvcHRpbWl6ZWQgc29mdHdhcmUgaW1wbGVtZW50YXRpb24pDQo+ICANCj4gIC0gSW50cm9k
dWNlZCBSVEVfRVZFTlRfREVWX0NBUF9RVUVVRV9RT1MgYW5kDQo+ICBSVEVfRVZFTlRfREVWX0NB
UF9FVkVOVF9RT1MNCj4gIHNjaGVtZXMgb2YgcHJpb3JpdHkgaGFuZGxpbmcNCj4gIA0KPiAgLSBB
ZGRlZCBldmVudCBwb3J0IHRvIGV2ZW50IHF1ZXVlIHNlcnZpY2luZyBwcmlvcml0eS4NCj4gIFRo
aXMgYWxsb3dzIHR3byBldmVudCBwb3J0cyB0byBjb25uZWN0IHRvIHRoZSBzYW1lIGV2ZW50IHF1
ZXVlIHdpdGgNCj4gIGRpZmZlcmVudCBwcmlvcml0aWVzLg0KPiAgDQo+ICAtIENoYW5nZWQgdGhl
IHdvcmtmbG93IGFzIHNjaGVkdWxlL2RlcXVldWUvZW5xdWV1ZS4NCj4gIEFuIGltcGxlbWVudGF0
aW9uIGlzIGZyZWUgdG8gZGVmaW5lIHNjaGVkdWxlIGFzIE5PT1AuDQo+ICBBIGRpc3RyaWJ1dGVk
IHMvdyBzY2hlZHVsZXIgY2FuIHVzZSB0aGlzIHRvIHNjaGVkdWxlIGV2ZW50czsNCj4gIGFsc28g
YSBjZW50cmFsaXplZCBzL3cgc2NoZWR1bGVyIGNhbiBtYWtlIHRoaXMgYSBOT09QIG9uIG5vbi1z
Y2hlZHVsZXIgY29yZXMuDQo+ICANCj4gIC0gUmVtb3ZlZCBDYXZpdW0gSFcgc3BlY2lmaWMgc2No
ZWR1bGVfZnJvbV9ncm91cCBBUEkNCj4gIA0KPiAgLSBSZW1vdmVkIENhdml1bSBIVyBzcGVjaWZp
YyBjdHh0X3VwZGF0ZS9jdHh0X3dhaXQgQVBJcy4NCj4gICBJbnRyb2R1Y2VkIGEgbW9yZSBnZW5l
cmljICJldmVudCBwaW5uaW5nIiBjb25jZXB0LiBpLmUNCj4gIElmIHRoZSBub3JtYWwgd29ya2Zs
b3cgaXMgYSBkZXF1ZXVlIC0+IGRvIHdvcmsgYmFzZWQgb24gZXZlbnQgdHlwZSAtPg0KPiAgZW5x
dWV1ZSwNCj4gIGEgcGluX2V2ZW50IGFyZ3VtZW50IHRvIGVucXVldWUNCj4gIHdoZXJlIHRoZSBw
aW5uZWQgZXZlbnQgaXMgcmV0dXJuZWQgdGhyb3VnaCB0aGUgbm9ybWFsIGRlcXVldWUpDQo+ICBh
bGxvd3MgYXBwbGljYXRpb24gd29ya2Zsb3cgdG8gcmVtYWluIHRoZSBzYW1lIHdoZXRoZXIgb3Ig
bm90IGFuDQo+ICBpbXBsZW1lbnRhdGlvbiBzdXBwb3J0cyBpdC4NCj4gIA0KPiAgLSBBZGRlZCBk
ZXF1ZXVlKCkgYnVyc3QgdmFyaWFudA0KPiAgDQo+ICAtIEFkZGVkIHRoZSBkZWZpbml0aW9uIG9m
IGEgY2xvc2VkL29wZW4gc3lzdGVtIC0gd2hlcmUgb3BlbiBzeXN0ZW0gaXMgbWVtb3J5DQo+ICBi
YWNrZWQgYW5kIGNsb3NlZCBzeXN0ZW0gZXZlbnRkZXYgaGFzIGxpbWl0ZWQgY2FwYWNpdHkuDQo+
ICBJbiBzdWNoIHN5c3RlbXMsIGl0IGlzIGFsc28gdXNlZnVsIHRvIGRlbm90ZSBwZXIgZXZlbnQg
cG9ydCBob3cgbWFueSBwYWNrZXRzDQo+ICBjYW4gYmUgYWN0aXZlIGluIHRoZSBzeXN0ZW0uDQo+
ICBUaGlzIGNhbiBzZXJ2ZSBhcyBhIHRocmVzaG9sZCBmb3IgZXRoZGV2IGxpa2UgZGV2aWNlcyBz
byB0aGV5IGRvbid0IG92ZXJ3aGVsbQ0KPiAgY29yZSB0byBjb3JlIGV2ZW50cy4NCj4gIA0KPiAg
LSBBZGRlZCB0aGUgb3B0aW9uIHRvIHNwZWNpZnkgbWF4aW11bSBhbW91bnQgb2YgdGltZShpbiBu
cykgYXBwbGljYXRpb24gbmVlZHMNCj4gIHdhaXQgb24gZGVxdWV1ZSgpDQo+ICANCj4gIC0gUmVt
b3ZlZCB0aGUgc2NoZW1lIG9mIGV4cHJlc3NpbmcgdGhlIG51bWJlciBvZiBmbG93cyBpbiBsb2cy
IGZvcm1hdA0KPiAgDQo+ICBPcGVuIGl0ZW0gb3IgdGhlIGl0ZW0gbmVlZHMgaW1wcm92ZW1lbnQu
DQo+ICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ICAtIEFic3Ry
YWN0IHRoZSBkaWZmZXJlbmNlcyBpbiBldmVudCBRb1MgbWFuYWdlbWVudCB3aXRoIGRpZmZlcmVu
dCBwcmlvcml0eQ0KPiAgc2NoZW1lcw0KPiAgYXZhaWxhYmxlIGluIGRpZmZlcmVudCBIVyBvciBT
VyBpbXBsZW1lbnRhdGlvbnMgd2l0aCBwb3J0YWJsZSBhcHBsaWNhdGlvbg0KPiAgd29ya2Zsb3cu
DQo+ICANCj4gIEJhc2VkIG9uIHRoZSBmZWVkYmFjaywgdGhlcmUgdGhyZWUgZGlmZmVyZW50IGtp
bmRzIG9mIFFvUyBzdXBwb3J0IGF2YWlsYWJsZSBpbg0KPiAgdGhyZWUgZGlmZmVyZW50IEhXIG9y
IFNXIGltcGxlbWVudGF0aW9ucy4NCj4gIDEpIFByaW9yaXR5IGFzc29jaWF0ZWQgd2l0aCB0aGUg
ZXZlbnQgcXVldWUNCj4gIDIpIFByaW9yaXR5IGFzc29jaWF0ZWQgd2l0aCBlYWNoIGV2ZW50IGVu
cXVldWUNCj4gIChTYW1lIGZsb3cgY2FuIGhhdmUgdHdvIGRpZmZlcmVudCBwcmlvcml0eSBvbiB0
d28gc2VwYXJhdGUgZW5xdWV1ZSkNCj4gIDMpIFByaW9yaXR5IGFzc29jaWF0ZWQgd2l0aCB0aGUg
ZmxvdyhlYWNoIGZsb3cgaGFzIHVuaXF1ZSBwcmlvcml0eSkNCj4gIA0KPiAgSW4gdjIsIFRoZSBk
aWZmZXJlbmNlcyBhYnN0cmFjdGVkIGJhc2VkIG9uIGRldmljZSBjYXBhYmlsaXR5DQo+ICAoUlRF
X0VWRU5UX0RFVl9DQVBfUVVFVUVfUU9TIGZvciB0aGUgZmlyc3Qgc2NoZW1lLA0KPiAgUlRFX0VW
RU5UX0RFVl9DQVBfRVZFTlRfUU9TIGZvciB0aGUgc2Vjb25kIGFuZCB0aGlyZCBzY2hlbWUpLg0K
PiAgVGhpcyBzY2hlbWUgd291bGQgY2FsbCBmb3IgZGlmZmVyZW50IGFwcGxpY2F0aW9uIHdvcmtm
bG93IGZvcg0KPiAgbm9udHJpdmlhbCBRb1MtZW5hYmxlZCBhcHBsaWNhdGlvbnMuDQo+ICANCj4g
IExvb2tpbmcgZm9yd2FyZCB0byBnZXR0aW5nIGNvbW1lbnRzIGZyb20gYm90aCBhcHBsaWNhdGlv
biBhbmQgZHJpdmVyDQo+ICBpbXBsZW1lbnRhdGlvbiBwZXJzcGVjdGl2ZS4NCj4gIA0KPiAgL0pl
cmluDQo+ICANCj4gIC0tLQ0KPiAgIGRvYy9hcGkvZG94eS1hcGktaW5kZXgubWQgICAgICAgICAg
fCAgICAxICsNCj4gICBkb2MvYXBpL2RveHktYXBpLmNvbmYgICAgICAgICAgICAgIHwgICAgMSAr
DQo+ICAgbGliL2xpYnJ0ZV9ldmVudGRldi9ydGVfZXZlbnRkZXYuaCB8IDEyMDQNCj4gICsrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KPiAgIDMgZmlsZXMgY2hhbmdlZCwgMTIw
NiBpbnNlcnRpb25zKCspDQo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi9saWJydGVfZXZlbnRk
ZXYvcnRlX2V2ZW50ZGV2LmgNCj4gIA0KPiAgZGlmZiAtLWdpdCBhL2RvYy9hcGkvZG94eS1hcGkt
aW5kZXgubWQgYi9kb2MvYXBpL2RveHktYXBpLWluZGV4Lm1kDQo+ICBpbmRleCA2Njc1Zjk2Li4y
OGMxMzI5IDEwMDY0NA0KPiAgLS0tIGEvZG9jL2FwaS9kb3h5LWFwaS1pbmRleC5tZA0KPiAgKysr
IGIvZG9jL2FwaS9kb3h5LWFwaS1pbmRleC5tZA0KPiAgQEAgLTQwLDYgKzQwLDcgQEAgVGhlcmUg
YXJlIG1hbnkgbGlicmFyaWVzLCBzbyB0aGVpciBoZWFkZXJzIG1heSBiZQ0KPiAgZ3JvdXBlZCBi
eSB0b3BpY3M6DQo+ICAgICBbZXRoZGV2XSAgICAgICAgICAgICAoQHJlZiBydGVfZXRoZGV2Lmgp
LA0KPiAgICAgW2V0aGN0cmxdICAgICAgICAgICAgKEByZWYgcnRlX2V0aF9jdHJsLmgpLA0KPiAg
ICAgW2NyeXB0b2Rldl0gICAgICAgICAgKEByZWYgcnRlX2NyeXB0b2Rldi5oKSwNCj4gICsgIFtl
dmVudGRldl0gICAgICAgICAgIChAcmVmIHJ0ZV9ldmVudGRldi5oKSwNCj4gICAgIFtkZXZhcmdz
XSAgICAgICAgICAgIChAcmVmIHJ0ZV9kZXZhcmdzLmgpLA0KPiAgICAgW2JvbmRdICAgICAgICAg
ICAgICAgKEByZWYgcnRlX2V0aF9ib25kLmgpLA0KPiAgICAgW3Zob3N0XSAgICAgICAgICAgICAg
KEByZWYgcnRlX3ZpcnRpb19uZXQuaCksDQo+ICBkaWZmIC0tZ2l0IGEvZG9jL2FwaS9kb3h5LWFw
aS5jb25mIGIvZG9jL2FwaS9kb3h5LWFwaS5jb25mDQo+ICBpbmRleCA5ZGM3YWU1Li45ODQxNDc3
IDEwMDY0NA0KPiAgLS0tIGEvZG9jL2FwaS9kb3h5LWFwaS5jb25mDQo+ICArKysgYi9kb2MvYXBp
L2RveHktYXBpLmNvbmYNCj4gIEBAIC00MSw2ICs0MSw3IEBAIElOUFVUICAgICAgICAgICAgICAg
ICAgID0gZG9jL2FwaS9kb3h5LWFwaS1pbmRleC5tZCBcDQo+ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBsaWIvbGlicnRlX2NyeXB0b2RldiBcDQo+ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBsaWIvbGlicnRlX2Rpc3RyaWJ1dG9yIFwNCj4gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGxpYi9saWJydGVfZXRoZXIgXA0KPiAgKyAgICAgICAgICAgICAgICAgICAgICAgICAgbGli
L2xpYnJ0ZV9ldmVudGRldiBcDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWIvbGli
cnRlX2hhc2ggXA0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGliL2xpYnJ0ZV9pcF9m
cmFnIFwNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYi9saWJydGVfam9ic3RhdHMg
XA0KPiAgZGlmZiAtLWdpdCBhL2xpYi9saWJydGVfZXZlbnRkZXYvcnRlX2V2ZW50ZGV2LmgNCj4g
IGIvbGliL2xpYnJ0ZV9ldmVudGRldi9ydGVfZXZlbnRkZXYuaA0KPiAgbmV3IGZpbGUgbW9kZSAx
MDA2NDQNCj4gIGluZGV4IDAwMDAwMDAuLmY2MGU0NjENCj4gIC0tLSAvZGV2L251bGwNCj4gICsr
KyBiL2xpYi9saWJydGVfZXZlbnRkZXYvcnRlX2V2ZW50ZGV2LmgNCj4gIEBAIC0wLDAgKzEsMTIw
NCBAQA0KPiAgKy8qDQo+ICArICogICBCU0QgTElDRU5TRQ0KPiAgKyAqDQo+ICArICogICBDb3B5
cmlnaHQgMjAxNiBDYXZpdW0uDQo+ICArICogICBDb3B5cmlnaHQgMjAxNiBJbnRlbCBDb3Jwb3Jh
dGlvbi4NCj4gICsgKiAgIENvcHlyaWdodCAyMDE2IE5YUC4NCj4gICsgKg0KPiAgKyAqICAgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0DQo+ICArICogICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMNCj4gICsgKiAgIGFyZSBtZXQ6DQo+ICArICoNCj4g
ICsgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodA0KPiAgKyAqICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4NCj4gICsgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dA0KPiAgKyAqICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbg0KPiAgKyAqICAgICAgIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUNCj4gICsgKiAgICAgICBkaXN0
cmlidXRpb24uDQo+ICArICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBDYXZpdW0gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMNCj4gICsgKiAgICAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQNCj4gICsgKiAgICAgICBmcm9tIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uDQo+
ICArICoNCj4gICsgKiAgIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORA0KPiAgQ09OVFJJQlVUT1JTDQo+ICArICogICAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUDQo+ICBOT1QNCj4g
ICsgKiAgIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORA0KPiAgRklUTkVTUyBGT1INCj4gICsgKiAgIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUNCj4gIENPUFlSSUdIVA0KPiAgKyAq
ICAgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsDQo+ICBJTkNJREVOVEFMLA0KPiAgKyAqICAgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUDQo+ICBOT1QNCj4gICsgKiAgIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MN
Cj4gIE9GIFVTRSwNCj4gICsgKiAgIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQNCj4gIEFORCBPTiBBTlkNCj4gICsgKiAgIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SDQo+
ICBUT1JUDQo+ICArICogICAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GDQo+ICBUSEUgVVNFDQo+ICArICogICBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gNCj4gIERBTUFH
RS4NCj4gICsgKi8NCj4gICsNCj4gICsjaWZuZGVmIF9SVEVfRVZFTlRERVZfSF8NCj4gICsjZGVm
aW5lIF9SVEVfRVZFTlRERVZfSF8NCj4gICsNCj4gICsvKioNCj4gICsgKiBAZmlsZQ0KPiAgKyAq
DQo+ICArICogUlRFIEV2ZW50IERldmljZSBBUEkNCj4gICsgKg0KPiAgKyAqIFRoZSBFdmVudCBE
ZXZpY2UgQVBJIGlzIGNvbXBvc2VkIG9mIHR3byBwYXJ0czoNCj4gICsgKg0KPiAgKyAqIC0gVGhl
IGFwcGxpY2F0aW9uLW9yaWVudGVkIEV2ZW50IEFQSSB0aGF0IGluY2x1ZGVzIGZ1bmN0aW9ucyB0
byBzZXR1cA0KPiAgKyAqICAgYW4gZXZlbnQgZGV2aWNlIChjb25maWd1cmUgaXQsIHNldHVwIGl0
cyBxdWV1ZXMsIHBvcnRzIGFuZCBzdGFydCBpdCksIHRvDQo+ICArICogICBlc3RhYmxpc2ggdGhl
IGxpbmsgYmV0d2VlbiBxdWV1ZXMgdG8gcG9ydCBhbmQgdG8gcmVjZWl2ZSBldmVudHMsIGFuZCBz
byBvbi4NCj4gICsgKg0KPiAgKyAqIC0gVGhlIGRyaXZlci1vcmllbnRlZCBFdmVudCBBUEkgdGhh
dCBleHBvcnRzIGEgZnVuY3Rpb24gYWxsb3dpbmcNCj4gICsgKiAgIGFuIGV2ZW50IHBvbGwgTW9k
ZSBEcml2ZXIgKFBNRCkgdG8gc2ltdWx0YW5lb3VzbHkgcmVnaXN0ZXIgaXRzZWxmIGFzDQo+ICAr
ICogICBhbiBldmVudCBkZXZpY2UgZHJpdmVyLg0KPiAgKyAqDQo+ICArICogRXZlbnQgZGV2aWNl
IGNvbXBvbmVudHM6DQo+ICArICoNCj4gICsgKiAgICAgICAgICAgICAgICAgICAgICstLS0tLS0t
LS0tLS0tLS0tLSsNCj4gICsgKiAgICAgICAgICAgICAgICAgICAgIHwgKy0tLS0tLS0tLS0tLS0r
IHwNCj4gICsgKiAgICAgICAgKy0tLS0tLS0rICAgIHwgfCAgICBmbG93IDAgICB8IHwNCj4gICsg
KiAgICAgICAgfFBhY2tldCB8ICAgIHwgKy0tLS0tLS0tLS0tLS0rIHwNCj4gICsgKiAgICAgICAg
fGV2ZW50ICB8ICAgIHwgKy0tLS0tLS0tLS0tLS0rIHwNCj4gICsgKiAgICAgICAgfCAgICAgICB8
ICAgIHwgfCAgICBmbG93IDEgICB8IHxldmVudF9wb3J0X2xpbmsocG9ydDAsIHF1ZXVlMCkNCj4g
ICsgKiAgICAgICAgKy0tLS0tLS0rICAgIHwgKy0tLS0tLS0tLS0tLS0rIHwgICAgIHwgICAgICst
LS0tLS0tLSsNCj4gICsgKiAgICAgICAgKy0tLS0tLS0rICAgIHwgKy0tLS0tLS0tLS0tLS0rIG8t
LS0tLXYtLS0tLW8gICAgICAgIHxkZXF1ZXVlICstLS0tLS0rDQo+ICArICogICAgICAgIHxDcnlw
dG8gfCAgICB8IHwgICAgZmxvdyBuICAgfCB8ICAgICAgICAgICB8IGV2ZW50ICArLS0tLS0tLT58
Q29yZSAwfA0KPiAgKyAqICAgICAgICB8d29yayAgIHwgICAgfCArLS0tLS0tLS0tLS0tLSsgby0t
LS0rICAgICAgfCBwb3J0IDAgfCAgICAgICAgfCAgICAgIHwNCj4gICsgKiAgICAgICAgfGRvbmUg
ZXZ8ICAgIHwgIGV2ZW50IHF1ZXVlIDAgIHwgICAgfCAgICAgICstLS0tLS0tLSsgICAgICAgICst
LS0tLS0rDQo+ICArICogICAgICAgICstLS0tLS0tKyAgICArLS0tLS0tLS0tLS0tLS0tLS0rICAg
IHwNCj4gICsgKiAgICAgICAgKy0tLS0tLS0rICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0K
PiAgKyAqICAgICAgICB8VGltZXIgIHwgICAgKy0tLS0tLS0tLS0tLS0tLS0tKyAgICB8ICAgICAg
Ky0tLS0tLS0tKw0KPiAgKyAqICAgICAgICB8ZXhwaXJ5IHwgICAgfCArLS0tLS0tLS0tLS0tLSsg
fCAgICArLS0tLS0tbyAgICAgICAgfGRlcXVldWUgKy0tLS0tLSsNCj4gICsgKiAgICAgICAgfGV2
ZW50ICB8ICAgIHwgfCAgICBmbG93IDAgICB8IG8tLS0tLS0tLS0tLW8gZXZlbnQgICstLS0tLS0t
PnxDb3JlIDF8DQo+ICArICogICAgICAgICstLS0tLS0tKyAgICB8ICstLS0tLS0tLS0tLS0tKyB8
ICAgICAgKy0tLS1vIHBvcnQgMSB8ICAgICAgICB8ICAgICAgfA0KPiAgKyAqICAgICAgIEV2ZW50
IGVucXVldWUgfCArLS0tLS0tLS0tLS0tLSsgfCAgICAgIHwgICAgKy0tLS0tLS0tKyAgICAgICAg
Ky0tLS0tLSsNCj4gICsgKiAgICAgby0tLS0tLS0tLS0tLS0+IHwgfCAgICBmbG93IDEgICB8IHwg
ICAgICB8DQo+ICArICogICAgICAgIGVucXVldWUoICAgICB8ICstLS0tLS0tLS0tLS0tKyB8ICAg
ICAgfA0KPiAgKyAqICAgICAgICBxdWV1ZV9pZCwgICAgfCAgICAgICAgICAgICAgICAgfCAgICAg
IHwgICAgKy0tLS0tLS0tKyAgICAgICAgKy0tLS0tLSsNCj4gICsgKiAgICAgICAgZmxvd19pZCwg
ICAgIHwgKy0tLS0tLS0tLS0tLS0rIHwgICAgICB8ICAgIHwgICAgICAgIHxkZXF1ZXVlIHxDb3Jl
IDJ8DQo+ICArICogICAgICAgIHNjaGVkX3R5cGUsICB8IHwgICAgZmxvdyBuICAgfCBvLS0tLS0t
LS0tLS1vIGV2ZW50ICArLS0tLS0tLT58ICAgICAgfA0KPiAgKyAqICAgICAgICBldmVudF90eXBl
LCAgfCArLS0tLS0tLS0tLS0tLSsgfCAgICAgIHwgICAgfCBwb3J0IDIgfCAgICAgICAgKy0tLS0t
LSsNCj4gICsgKiAgICAgICAgc3ViZXZfdHlwZSwgIHwgIGV2ZW50IHF1ZXVlIDEgIHwgICAgICB8
ICAgICstLS0tLS0tLSsNCj4gICsgKiAgICAgICAgZXZlbnQpICAgICAgICstLS0tLS0tLS0tLS0t
LS0tLSsgICAgICB8ICAgICstLS0tLS0tLSsNCj4gICsgKiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8ICAgIHwgICAgICAgIHxkZXF1ZXVlICstLS0tLS0rDQo+
ICArICogICAgICAgICstLS0tLS0tKyAgICArLS0tLS0tLS0tLS0tLS0tLS0rICAgICAgfCAgICB8
IGV2ZW50ICArLS0tLS0tLT58Q29yZSBufA0KPiAgKyAqICAgICAgICB8Q29yZSAgIHwgICAgfCAr
LS0tLS0tLS0tLS0tLSsgby0tLS0tLS0tLS0tbyBwb3J0IG4gfCAgICAgICAgfCAgICAgIHwNCj4g
ICsgKiAgICAgICAgfChTVykgICB8ICAgIHwgfCAgICBmbG93IDAgICB8IHwgICAgICB8ICAgICst
LS0tLS0tLSsgICAgICAgICstLSstLS0rDQo+ICArICogICAgICAgIHxldmVudCAgfCAgICB8ICst
LS0tLS0tLS0tLS0tKyB8ICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICB8DQo+ICArICog
ICAgICAgICstLS0tLS0tKyAgICB8ICstLS0tLS0tLS0tLS0tKyB8ICAgICAgfCAgICAgICAgICAg
ICAgICAgICAgICAgICB8DQo+ICArICogICAgICAgICAgICBeICAgICAgICB8IHwgICAgZmxvdyAx
ICAgfCB8ICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICB8DQo+ICArICogICAgICAgICAg
ICB8ICAgICAgICB8ICstLS0tLS0tLS0tLS0tKyBvLS0tLS0tKyAgICAgICAgICAgICAgICAgICAg
ICAgICB8DQo+ICArICogICAgICAgICAgICB8ICAgICAgICB8ICstLS0tLS0tLS0tLS0tKyB8ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQo+ICArICogICAgICAgICAgICB8ICAgICAg
ICB8IHwgICAgZmxvdyBuICAgfCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQo+
ICArICogICAgICAgICAgICB8ICAgICAgICB8ICstLS0tLS0tLS0tLS0tKyB8ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8DQo+ICArICogICAgICAgICAgICB8ICAgICAgICB8ICBldmVu
dCBxdWV1ZSBuICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQo+ICArICogICAg
ICAgICAgICB8ICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8DQo+ICArICogICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQo+ICArICogICAgICAgICAgICAr
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0rDQo+ICArICoNCj4gICsgKg0KPiAgKyAqDQo+ICArICogRXZlbnQgZGV2aWNlOiBBIGhhcmR3
YXJlIG9yIHNvZnR3YXJlLWJhc2VkIGV2ZW50IHNjaGVkdWxlci4NCj4gICsgKg0KPiAgKyAqIEV2
ZW50OiBBIHVuaXQgb2Ygc2NoZWR1bGluZyB0aGF0IGVuY2Fwc3VsYXRlcyBhIHBhY2tldCBvciBv
dGhlciBkYXRhdHlwZQ0KPiAgKyAqIGxpa2UgU1cgZ2VuZXJhdGVkIGV2ZW50IGZyb20gdGhlIGNv
cmUsIENyeXB0byB3b3JrIGNvbXBsZXRpb24NCj4gIG5vdGlmaWNhdGlvbiwNCj4gICsgKiBUaW1l
ciBleHBpcnkgZXZlbnQgbm90aWZpY2F0aW9uIGV0YyBhcyB3ZWxsIGFzIG1ldGFkYXRhLg0KPiAg
KyAqIFRoZSBtZXRhZGF0YSBpbmNsdWRlcyBmbG93IElELCBzY2hlZHVsaW5nIHR5cGUsIGV2ZW50
IHByaW9yaXR5LCBldmVudF90eXBlLA0KPiAgKyAqIHN1Yl9ldmVudF90eXBlIGV0Yy4NCj4gICsg
Kg0KPiAgKyAqIEV2ZW50IHF1ZXVlOiBBIHF1ZXVlIGNvbnRhaW5pbmcgZXZlbnRzIHRoYXQgYXJl
IHNjaGVkdWxlZCBieSB0aGUgZXZlbnQNCj4gIGRldi4NCj4gICsgKiBBbiBldmVudCBxdWV1ZSBj
b250YWlucyBldmVudHMgb2YgZGlmZmVyZW50IGZsb3dzIGFzc29jaWF0ZWQgd2l0aA0KPiAgc2No
ZWR1bGluZw0KPiAgKyAqIHR5cGVzLCBzdWNoIGFzIGF0b21pYywgb3JkZXJlZCwgb3IgcGFyYWxs
ZWwuDQo+ICArICoNCj4gICsgKiBFdmVudCBwb3J0OiBBbiBhcHBsaWNhdGlvbidzIGludGVyZmFj
ZSBpbnRvIHRoZSBldmVudCBkZXYgZm9yIGVucXVldWUgYW5kDQo+ICArICogZGVxdWV1ZSBvcGVy
YXRpb25zLiBFYWNoIGV2ZW50IHBvcnQgY2FuIGJlIGxpbmtlZCB3aXRoIG9uZSBvciBtb3JlDQo+
ICArICogZXZlbnQgcXVldWVzIGZvciBkZXF1ZXVlIG9wZXJhdGlvbnMuDQo+ICArICoNCj4gICsg
KiBCeSBkZWZhdWx0LCBhbGwgdGhlIGZ1bmN0aW9ucyBvZiB0aGUgRXZlbnQgRGV2aWNlIEFQSSBl
eHBvcnRlZCBieSBhIFBNRA0KPiAgKyAqIGFyZSBsb2NrLWZyZWUgZnVuY3Rpb25zIHdoaWNoIGFz
c3VtZSB0byBub3QgYmUgaW52b2tlZCBpbiBwYXJhbGxlbCBvbg0KPiAgKyAqIGRpZmZlcmVudCBs
b2dpY2FsIGNvcmVzIHRvIHdvcmsgb24gdGhlIHNhbWUgdGFyZ2V0IG9iamVjdC4gRm9yIGluc3Rh
bmNlLA0KPiAgKyAqIHRoZSBkZXF1ZXVlIGZ1bmN0aW9uIG9mIGEgUE1EIGNhbm5vdCBiZSBpbnZv
a2VkIGluIHBhcmFsbGVsIG9uIHR3byBsb2dpY2FsDQo+ICArICogY29yZXMgdG8gb3BlcmF0ZXMg
b24gc2FtZSAgZXZlbnQgcG9ydC4gT2YgY291cnNlLCB0aGlzIGZ1bmN0aW9uDQo+ICArICogY2Fu
IGJlIGludm9rZWQgaW4gcGFyYWxsZWwgYnkgZGlmZmVyZW50IGxvZ2ljYWwgY29yZXMgb24gZGlm
ZmVyZW50IHBvcnRzLg0KPiAgKyAqIEl0IGlzIHRoZSByZXNwb25zaWJpbGl0eSBvZiB0aGUgdXBw
ZXIgbGV2ZWwgYXBwbGljYXRpb24gdG8gZW5mb3JjZSB0aGlzIHJ1bGUuDQo+ICArICoNCj4gICsg
KiBJbiBhbGwgZnVuY3Rpb25zIG9mIHRoZSBFdmVudCBBUEksIHRoZSBFdmVudCBkZXZpY2UgaXMN
Cj4gICsgKiBkZXNpZ25hdGVkIGJ5IGFuIGludGVnZXIgPj0gMCBuYW1lZCB0aGUgZGV2aWNlIGlk
ZW50aWZpZXIgKmRldl9pZCoNCj4gICsgKg0KPiAgKyAqIEF0IHRoZSBFdmVudCBkcml2ZXIgbGV2
ZWwsIEV2ZW50IGRldmljZXMgYXJlIHJlcHJlc2VudGVkIGJ5IGEgZ2VuZXJpYw0KPiAgKyAqIGRh
dGEgc3RydWN0dXJlIG9mIHR5cGUgKnJ0ZV9ldmVudF9kZXYqLg0KPiAgKyAqDQo+ICArICogRXZl
bnQgZGV2aWNlcyBhcmUgZHluYW1pY2FsbHkgcmVnaXN0ZXJlZCBkdXJpbmcgdGhlIFBDSS9Tb0Mg
ZGV2aWNlIHByb2JpbmcNCj4gICsgKiBwaGFzZSBwZXJmb3JtZWQgYXQgRUFMIGluaXRpYWxpemF0
aW9uIHRpbWUuDQo+ICArICogV2hlbiBhbiBFdmVudCBkZXZpY2UgaXMgYmVpbmcgcHJvYmVkLCBh
ICpydGVfZXZlbnRfZGV2KiBzdHJ1Y3R1cmUgYW5kDQo+ICArICogYSBuZXcgZGV2aWNlIGlkZW50
aWZpZXIgYXJlIGFsbG9jYXRlZCBmb3IgdGhhdCBkZXZpY2UuIFRoZW4sIHRoZQ0KPiAgKyAqIGV2
ZW50X2Rldl9pbml0KCkgZnVuY3Rpb24gc3VwcGxpZWQgYnkgdGhlIEV2ZW50IGRyaXZlciBtYXRj
aGluZyB0aGUgcHJvYmVkDQo+ICArICogZGV2aWNlIGlzIGludm9rZWQgdG8gcHJvcGVybHkgaW5p
dGlhbGl6ZSB0aGUgZGV2aWNlLg0KPiAgKyAqDQo+ICArICogVGhlIHJvbGUgb2YgdGhlIGRldmlj
ZSBpbml0IGZ1bmN0aW9uIGNvbnNpc3RzIG9mIHJlc2V0dGluZyB0aGUgaGFyZHdhcmUgb3INCj4g
ICsgKiBzb2Z0d2FyZSBldmVudCBkcml2ZXIgaW1wbGVtZW50YXRpb25zLg0KPiAgKyAqDQo+ICAr
ICogSWYgdGhlIGRldmljZSBpbml0IG9wZXJhdGlvbiBpcyBzdWNjZXNzZnVsLCB0aGUgY29ycmVz
cG9uZGVuY2UgYmV0d2Vlbg0KPiAgKyAqIHRoZSBkZXZpY2UgaWRlbnRpZmllciBhc3NpZ25lZCB0
byB0aGUgbmV3IGRldmljZSBhbmQgaXRzIGFzc29jaWF0ZWQNCj4gICsgKiAqcnRlX2V2ZW50X2Rl
diogc3RydWN0dXJlIGlzIGVmZmVjdGl2ZWx5IHJlZ2lzdGVyZWQuDQo+ICArICogT3RoZXJ3aXNl
LCBib3RoIHRoZSAqcnRlX2V2ZW50X2Rldiogc3RydWN0dXJlIGFuZCB0aGUgZGV2aWNlIGlkZW50
aWZpZXIgYXJlDQo+ICArICogZnJlZWQuDQo+ICArICoNCj4gICsgKiBUaGUgZnVuY3Rpb25zIGV4
cG9ydGVkIGJ5IHRoZSBhcHBsaWNhdGlvbiBFdmVudCBBUEkgdG8gc2V0dXAgYSBkZXZpY2UNCj4g
ICsgKiBkZXNpZ25hdGVkIGJ5IGl0cyBkZXZpY2UgaWRlbnRpZmllciBtdXN0IGJlIGludm9rZWQg
aW4gdGhlIGZvbGxvd2luZyBvcmRlcjoNCj4gICsgKiAgICAgLSBydGVfZXZlbnRfZGV2X2NvbmZp
Z3VyZSgpDQo+ICArICogICAgIC0gcnRlX2V2ZW50X3F1ZXVlX3NldHVwKCkNCj4gICsgKiAgICAg
LSBydGVfZXZlbnRfcG9ydF9zZXR1cCgpDQo+ICArICogICAgIC0gcnRlX2V2ZW50X3BvcnRfbGlu
aygpDQo+ICArICogICAgIC0gcnRlX2V2ZW50X2Rldl9zdGFydCgpDQo+ICArICoNCj4gICsgKiBU
aGVuLCB0aGUgYXBwbGljYXRpb24gY2FuIGludm9rZSwgaW4gYW55IG9yZGVyLCB0aGUgZnVuY3Rp
b25zDQo+ICArICogZXhwb3J0ZWQgYnkgdGhlIEV2ZW50IEFQSSB0byBzY2hlZHVsZSBldmVudHMs
IGRlcXVldWUgZXZlbnRzLCBlbnF1ZXVlDQo+ICBldmVudHMsDQo+ICArICogY2hhbmdlIGV2ZW50
IHF1ZXVlKHMpIHRvIGV2ZW50IHBvcnQgW3VuXWxpbmsgZXN0YWJsaXNobWVudCBhbmQgc28gb24u
DQo+ICArICoNCj4gICsgKiBBcHBsaWNhdGlvbiBtYXkgdXNlIHJ0ZV9ldmVudF9bcXVldWUvcG9y
dF1fZGVmYXVsdF9jb25mX2dldCgpIHRvIGdldCB0aGUNCj4gICsgKiBkZWZhdWx0IGNvbmZpZ3Vy
YXRpb24gdG8gc2V0IHVwIGFuIGV2ZW50IHF1ZXVlIG9yIGV2ZW50IHBvcnQgYnkNCj4gICsgKiBv
dmVycmlkaW5nIGZldyBkZWZhdWx0IHZhbHVlcy4NCj4gICsgKg0KPiAgKyAqIElmIHRoZSBhcHBs
aWNhdGlvbiB3YW50cyB0byBjaGFuZ2UgdGhlIGNvbmZpZ3VyYXRpb24gKGkuZS4gY2FsbA0KPiAg
KyAqIHJ0ZV9ldmVudF9kZXZfY29uZmlndXJlKCksIHJ0ZV9ldmVudF9xdWV1ZV9zZXR1cCgpLCBv
cg0KPiAgKyAqIHJ0ZV9ldmVudF9wb3J0X3NldHVwKCkpLCBpdCBtdXN0IGNhbGwgcnRlX2V2ZW50
X2Rldl9zdG9wKCkgZmlyc3QgdG8gc3RvcCB0aGUNCj4gICsgKiBkZXZpY2UgYW5kIHRoZW4gZG8g
dGhlIHJlY29uZmlndXJhdGlvbiBiZWZvcmUgY2FsbGluZyBydGVfZXZlbnRfZGV2X3N0YXJ0KCkN
Cj4gICsgKiBhZ2Fpbi4gVGhlIHNjaGVkdWxlLCBlbnF1ZXVlIGFuZCBkZXF1ZXVlIGZ1bmN0aW9u
cyBzaG91bGQgbm90IGJlIGludm9rZWQNCj4gICsgKiB3aGVuIHRoZSBkZXZpY2UgaXMgc3RvcHBl
ZC4NCj4gICsgKg0KPiAgKyAqIEZpbmFsbHksIGFuIGFwcGxpY2F0aW9uIGNhbiBjbG9zZSBhbiBF
dmVudCBkZXZpY2UgYnkgaW52b2tpbmcgdGhlDQo+ICArICogcnRlX2V2ZW50X2Rldl9jbG9zZSgp
IGZ1bmN0aW9uLg0KPiAgKyAqDQo+ICArICogRWFjaCBmdW5jdGlvbiBvZiB0aGUgYXBwbGljYXRp
b24gRXZlbnQgQVBJIGludm9rZXMgYSBzcGVjaWZpYyBmdW5jdGlvbg0KPiAgKyAqIG9mIHRoZSBQ
TUQgdGhhdCBjb250cm9scyB0aGUgdGFyZ2V0IGRldmljZSBkZXNpZ25hdGVkIGJ5IGl0cyBkZXZp
Y2UNCj4gICsgKiBpZGVudGlmaWVyLg0KPiAgKyAqDQo+ICArICogRm9yIHRoaXMgcHVycG9zZSwg
YWxsIGRldmljZS1zcGVjaWZpYyBmdW5jdGlvbnMgb2YgYW4gRXZlbnQgZHJpdmVyIGFyZQ0KPiAg
KyAqIHN1cHBsaWVkIHRocm91Z2ggYSBzZXQgb2YgcG9pbnRlcnMgY29udGFpbmVkIGluIGEgZ2Vu
ZXJpYyBzdHJ1Y3R1cmUgb2YgdHlwZQ0KPiAgKyAqICpldmVudF9kZXZfb3BzKi4NCj4gICsgKiBU
aGUgYWRkcmVzcyBvZiB0aGUgKmV2ZW50X2Rldl9vcHMqIHN0cnVjdHVyZSBpcyBzdG9yZWQgaW4g
dGhlDQo+ICAqcnRlX2V2ZW50X2RldioNCj4gICsgKiBzdHJ1Y3R1cmUgYnkgdGhlIGRldmljZSBp
bml0IGZ1bmN0aW9uIG9mIHRoZSBFdmVudCBkcml2ZXIsIHdoaWNoIGlzDQo+ICArICogaW52b2tl
ZCBkdXJpbmcgdGhlIFBDSS9Tb0MgZGV2aWNlIHByb2JpbmcgcGhhc2UsIGFzIGV4cGxhaW5lZCBl
YXJsaWVyLg0KPiAgKyAqDQo+ICArICogSW4gb3RoZXIgd29yZHMsIGVhY2ggZnVuY3Rpb24gb2Yg
dGhlIEV2ZW50IEFQSSBzaW1wbHkgcmV0cmlldmVzIHRoZQ0KPiAgKyAqICpydGVfZXZlbnRfZGV2
KiBzdHJ1Y3R1cmUgYXNzb2NpYXRlZCB3aXRoIHRoZSBkZXZpY2UgaWRlbnRpZmllciBhbmQNCj4g
ICsgKiBwZXJmb3JtcyBhbiBpbmRpcmVjdCBpbnZvY2F0aW9uIG9mIHRoZSBjb3JyZXNwb25kaW5n
IGRyaXZlciBmdW5jdGlvbg0KPiAgKyAqIHN1cHBsaWVkIGluIHRoZSAqZXZlbnRfZGV2X29wcyog
c3RydWN0dXJlIG9mIHRoZSAqcnRlX2V2ZW50X2RldioNCj4gIHN0cnVjdHVyZS4NCj4gICsgKg0K
PiAgKyAqIEZvciBwZXJmb3JtYW5jZSByZWFzb25zLCB0aGUgYWRkcmVzcyBvZiB0aGUgZmFzdC1w
YXRoIGZ1bmN0aW9ucyBvZiB0aGUNCj4gICsgKiBFdmVudCBkcml2ZXIgaXMgbm90IGNvbnRhaW5l
ZCBpbiB0aGUgKmV2ZW50X2Rldl9vcHMqIHN0cnVjdHVyZS4NCj4gICsgKiBJbnN0ZWFkLCB0aGV5
IGFyZSBkaXJlY3RseSBzdG9yZWQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgKnJ0ZV9ldmVudF9k
ZXYqDQo+ICArICogc3RydWN0dXJlIHRvIGF2b2lkIGFuIGV4dHJhIGluZGlyZWN0IG1lbW9yeSBh
Y2Nlc3MgZHVyaW5nIHRoZWlyIGludm9jYXRpb24uDQo+ICArICoNCj4gICsgKiBSVEUgZXZlbnQg
ZGV2aWNlIGRyaXZlcnMgZG8gbm90IHVzZSBpbnRlcnJ1cHRzIGZvciBlbnF1ZXVlIG9yIGRlcXVl
dWUNCj4gICsgKiBvcGVyYXRpb24uIEluc3RlYWQsIEV2ZW50IGRyaXZlcnMgZXhwb3J0IFBvbGwt
TW9kZSBlbnF1ZXVlIGFuZCBkZXF1ZXVlDQo+ICArICogZnVuY3Rpb25zIHRvIGFwcGxpY2F0aW9u
cy4NCj4gICsgKg0KPiAgKyAqIEFuIGV2ZW50IGRyaXZlbiBiYXNlZCBhcHBsaWNhdGlvbiBoYXMg
Zm9sbG93aW5nIHR5cGljYWwgd29ya2Zsb3cgb24NCj4gIGZhc3RwYXRoOg0KPiAgKyAqIFxjb2Rl
ey5jfQ0KPiAgKyAqCXdoaWxlICgxKSB7DQo+ICArICoNCj4gICsgKgkJcnRlX2V2ZW50X3NjaGVk
dWxlKGRldl9pZCk7DQo+ICArICoNCj4gICsgKgkJcnRlX2V2ZW50X2RlcXVldWUoLi4uKTsNCj4g
ICsgKg0KPiAgKyAqCQkoZXZlbnQgcHJvY2Vzc2luZykNCj4gICsgKg0KPiAgKyAqCQlydGVfZXZl
bnRfZW5xdWV1ZSguLi4pOw0KPiAgKyAqCX0NCj4gICsgKiBcZW5kY29kZQ0KPiAgKyAqDQo+ICAr
ICogVGhlICpzY2hlZHVsZSogb3BlcmF0aW9uIGlzIGludGVuZGVkIHRvIGRvIGV2ZW50IHNjaGVk
dWxpbmcsIGFuZCB0aGUNCj4gICsgKiAqZGVxdWV1ZSogb3BlcmF0aW9uIHJldHVybnMgdGhlIHNj
aGVkdWxlZCBldmVudHMuIEFuIGltcGxlbWVudGF0aW9uDQo+ICArICogaXMgZnJlZSB0byBkZWZp
bmUgdGhlIHNlbWFudGljcyBiZXR3ZWVuICpzY2hlZHVsZSogYW5kICpkZXF1ZXVlKi4gRm9yDQo+
ICArICogZXhhbXBsZSwgYSBzeXN0ZW0gYmFzZWQgb24gYSBoYXJkd2FyZSBzY2hlZHVsZXIgY2Fu
IGRlZmluZSBpdHMNCj4gICsgKiBydGVfZXZlbnRfc2NoZWR1bGUoKSB0byBiZSBhbiBOT09QLCB3
aGVyZWFzIGEgc29mdHdhcmUgc2NoZWR1bGVyIGNhbiB1c2UNCj4gICsgKiB0aGUgKnNjaGVkdWxl
KiBvcGVyYXRpb24gdG8gc2NoZWR1bGUgZXZlbnRzLg0KPiAgKyAqDQo+ICArICogVGhlIGV2ZW50
cyBhcmUgaW5qZWN0ZWQgdG8gZXZlbnQgZGV2aWNlIHRocm91Z2ggKmVucXVldWUqIG9wZXJhdGlv
biBieQ0KPiAgKyAqIGV2ZW50IHByb2R1Y2VycyBpbiB0aGUgc3lzdGVtLiBUaGUgdHlwaWNhbCBl
dmVudCBwcm9kdWNlcnMgYXJlIGV0aGRldg0KPiAgKyAqIHN1YnN5c3RlbSBmb3IgZ2VuZXJhdGlu
ZyBwYWNrZXQgZXZlbnRzLCBjb3JlKFNXKSBmb3IgZ2VuZXJhdGluZyBldmVudHMNCj4gIGJhc2Vk
DQo+ICArICogb24gZGlmZmVyZW50IHN0YWdlcyBvZiBhcHBsaWNhdGlvbiBwcm9jZXNzaW5nLCBj
cnlwdG9kZXYgZm9yIGdlbmVyYXRpbmcNCj4gICsgKiBjcnlwdG8gd29yayBjb21wbGV0aW9uIG5v
dGlmaWNhdGlvbiBldGMNCj4gICsgKg0KPiAgKyAqIFRoZSAqZGVxdWV1ZSogb3BlcmF0aW9uIGdl
dHMgb25lIG9yIG1vcmUgZXZlbnRzIGZyb20gdGhlIGV2ZW50IHBvcnRzLg0KPiAgKyAqIFRoZSBh
cHBsaWNhdGlvbiBwcm9jZXNzIHRoZSBldmVudHMgYW5kIHNlbmQgdG8gZG93bnN0cmVhbSBldmVu
dCBxdWV1ZQ0KPiAgdGhyb3VnaA0KPiAgKyAqIHJ0ZV9ldmVudF9lbnF1ZXVlKCkgaWYgaXQgaXMg
YW4gaW50ZXJtZWRpYXRlIHN0YWdlIG9mIGV2ZW50IHByb2Nlc3NpbmcsIG9uDQo+ICArICogdGhl
IGZpbmFsIHN0YWdlLCB0aGUgYXBwbGljYXRpb24gbWF5IHNlbmQgdG8gZGlmZmVyZW50IHN1YnN5
c3RlbSBsaWtlIGV0aGRldg0KPiAgKyAqIHRvIHNlbmQgdGhlIHBhY2tldC9ldmVudCBvbiB0aGUg
d2lyZSB1c2luZyBldGhkZXYgcnRlX2V0aF90eF9idXJzdCgpIEFQSS4NCj4gICsgKg0KPiAgKyAq
Lw0KPiAgKw0KPiAgKyNpZmRlZiBfX2NwbHVzcGx1cw0KPiAgK2V4dGVybiAiQyIgew0KPiAgKyNl
bmRpZg0KPiAgKw0KPiAgKyNpbmNsdWRlIDxydGVfcGNpLmg+DQo+ICArI2luY2x1ZGUgPHJ0ZV9k
ZXYuaD4NCj4gICsjaW5jbHVkZSA8cnRlX2RldmFyZ3MuaD4NCj4gICsjaW5jbHVkZSA8cnRlX2Vy
cm5vLmg+DQo+ICArDQo+ICArLyoqDQo+ICArICogR2V0IHRoZSB0b3RhbCBudW1iZXIgb2YgZXZl
bnQgZGV2aWNlcyB0aGF0IGhhdmUgYmVlbiBzdWNjZXNzZnVsbHkNCj4gICsgKiBpbml0aWFsaXNl
ZC4NCj4gICsgKg0KPiAgKyAqIEByZXR1cm4NCj4gICsgKiAgIFRoZSB0b3RhbCBudW1iZXIgb2Yg
dXNhYmxlIGV2ZW50IGRldmljZXMuDQo+ICArICovDQo+ICArZXh0ZXJuIHVpbnQ4X3QNCj4gICty
dGVfZXZlbnRfZGV2X2NvdW50KHZvaWQpOw0KPiAgKw0KPiAgKy8qKg0KPiAgKyAqIEdldCB0aGUg
ZGV2aWNlIGlkZW50aWZpZXIgZm9yIHRoZSBuYW1lZCBldmVudCBkZXZpY2UuDQo+ICArICoNCj4g
ICsgKiBAcGFyYW0gbmFtZQ0KPiAgKyAqICAgRXZlbnQgZGV2aWNlIG5hbWUgdG8gc2VsZWN0IHRo
ZSBldmVudCBkZXZpY2UgaWRlbnRpZmllci4NCj4gICsgKg0KPiAgKyAqIEByZXR1cm4NCj4gICsg
KiAgIFJldHVybnMgZXZlbnQgZGV2aWNlIGlkZW50aWZpZXIgb24gc3VjY2Vzcy4NCj4gICsgKiAg
IC0gPDA6IEZhaWx1cmUgdG8gZmluZCBuYW1lZCBldmVudCBkZXZpY2UuDQo+ICArICovDQo+ICAr
ZXh0ZXJuIHVpbnQ4X3QNCj4gICtydGVfZXZlbnRfZGV2X2dldF9kZXZfaWQoY29uc3QgY2hhciAq
bmFtZSk7DQoNClRoaXMgcmV0dXJuIHR5cGUgc2hvdWxkIGJlIGludDhfdCwgb3Igc29tZSBzaWdu
ZWQgdHlwZSwgdG8gc3VwcG9ydCB0aGUgZmFpbHVyZSBjYXNlLg0KDQo+ICArDQo+ICArLyoqDQo+
ICArICogUmV0dXJuIHRoZSBOVU1BIHNvY2tldCB0byB3aGljaCBhIGRldmljZSBpcyBjb25uZWN0
ZWQuDQo+ICArICoNCj4gICsgKiBAcGFyYW0gZGV2X2lkDQo+ICArICogICBUaGUgaWRlbnRpZmll
ciBvZiB0aGUgZGV2aWNlLg0KPiAgKyAqIEByZXR1cm4NCj4gICsgKiAgIFRoZSBOVU1BIHNvY2tl
dCBpZCB0byB3aGljaCB0aGUgZGV2aWNlIGlzIGNvbm5lY3RlZCBvcg0KPiAgKyAqICAgYSBkZWZh
dWx0IG9mIHplcm8gaWYgdGhlIHNvY2tldCBjb3VsZCBub3QgYmUgZGV0ZXJtaW5lZC4NCj4gICsg
KiAgIC0gLTE6IGRldl9pZCB2YWx1ZSBpcyBvdXQgb2YgcmFuZ2UuDQo+ICArICovDQo+ICArZXh0
ZXJuIGludA0KPiAgK3J0ZV9ldmVudF9kZXZfc29ja2V0X2lkKHVpbnQ4X3QgZGV2X2lkKTsNCj4g
ICsNCj4gICsvKiBFdmVudCBkZXZpY2UgY2FwYWJpbGl0eSBiaXRtYXAgZmxhZ3MgKi8NCj4gICsj
ZGVmaW5lIFJURV9FVkVOVF9ERVZfQ0FQX1FVRVVFX1FPUyAgICAgICAgKDEgPDwgMCkNCj4gICsv
Kio8IEV2ZW50IHNjaGVkdWxpbmcgcHJpb3JpdGl6YXRpb24gaXMgYmFzZWQgb24gdGhlIHByaW9y
aXR5IGFzc29jaWF0ZWQgd2l0aA0KPiAgKyAqICBlYWNoIGV2ZW50IHF1ZXVlLg0KPiAgKyAqDQo+
ICArICogIFxzZWUgcnRlX2V2ZW50X3F1ZXVlX3NldHVwKCksIFJURV9FVkVOVF9RVUVVRV9QUklP
UklUWV9OT1JNQUwNCj4gICsgKi8NCj4gICsjZGVmaW5lIFJURV9FVkVOVF9ERVZfQ0FQX0VWRU5U
X1FPUyAgICAgICAgKDEgPDwgMSkNCj4gICsvKio8IEV2ZW50IHNjaGVkdWxpbmcgcHJpb3JpdGl6
YXRpb24gaXMgYmFzZWQgb24gdGhlIHByaW9yaXR5IGFzc29jaWF0ZWQgd2l0aA0KPiAgKyAqICBl
YWNoIGV2ZW50LiBQcmlvcml0eSBvZiBlYWNoIGV2ZW50IGlzIHN1cHBsaWVkIGluICpydGVfZXZl
bnQqIHN0cnVjdHVyZQ0KPiAgKyAqICBvbiBlYWNoIGVucXVldWUgb3BlcmF0aW9uLg0KPiAgKyAq
DQo+ICArICogIFxzZWUgcnRlX2V2ZW50X2VucXVldWUoKQ0KPiAgKyAqLw0KPiAgKw0KPiAgKy8q
Kg0KPiAgKyAqIEV2ZW50IGRldmljZSBpbmZvcm1hdGlvbg0KPiAgKyAqLw0KPiAgK3N0cnVjdCBy
dGVfZXZlbnRfZGV2X2luZm8gew0KPiAgKwljb25zdCBjaGFyICpkcml2ZXJfbmFtZTsJLyoqPCBF
dmVudCBkcml2ZXIgbmFtZSAqLw0KPiAgKwlzdHJ1Y3QgcnRlX3BjaV9kZXZpY2UgKnBjaV9kZXY7
CS8qKjwgUENJIGluZm9ybWF0aW9uICovDQo+ICArCXVpbnQzMl90IG1pbl9kZXF1ZXVlX3dhaXRf
bnM7DQo+ICArCS8qKjwgTWluaW11bSBzdXBwb3J0ZWQgZ2xvYmFsIGRlcXVldWUgd2FpdCBkZWxh
eShucykgYnkgdGhpcyBkZXZpY2UNCj4gICovDQo+ICArCXVpbnQzMl90IG1heF9kZXF1ZXVlX3dh
aXRfbnM7DQo+ICArCS8qKjwgTWF4aW11bSBzdXBwb3J0ZWQgZ2xvYmFsIGRlcXVldWUgd2FpdCBk
ZWxheShucykgYnkgdGhpcyBkZXZpY2UNCj4gICovDQo+ICArCXVpbnQzMl90IGRlcXVldWVfd2Fp
dF9uczsNCj4gICsJLyoqPCBDb25maWd1cmVkIGdsb2JhbCBkZXF1ZXVlIHdhaXQgZGVsYXkobnMp
IGZvciB0aGlzIGRldmljZSAqLw0KPiAgKwl1aW50OF90IG1heF9ldmVudF9xdWV1ZXM7DQo+ICAr
CS8qKjwgTWF4aW11bSBldmVudF9xdWV1ZXMgc3VwcG9ydGVkIGJ5IHRoaXMgZGV2aWNlICovDQo+
ICArCXVpbnQzMl90IG1heF9ldmVudF9xdWV1ZV9mbG93czsNCj4gICsJLyoqPCBNYXhpbXVtIHN1
cHBvcnRlZCBmbG93cyBpbiBhbiBldmVudCBxdWV1ZSBieSB0aGlzIGRldmljZSovDQo+ICArCXVp
bnQ4X3QgbWF4X2V2ZW50X3F1ZXVlX3ByaW9yaXR5X2xldmVsczsNCj4gICsJLyoqPCBNYXhpbXVt
IG51bWJlciBvZiBldmVudCBxdWV1ZSBwcmlvcml0eSBsZXZlbHMgYnkgdGhpcyBkZXZpY2UuDQo+
ICArCSAqIFZhbGlkIHdoZW4gdGhlIGRldmljZSBoYXMgUlRFX0VWRU5UX0RFVl9DQVBfUVVFVUVf
UU9TDQo+ICBjYXBhYmlsaXR5DQo+ICArCSAqLw0KPiAgKwl1aW50OF90IG5iX2V2ZW50X3F1ZXVl
czsNCj4gICsJLyoqPCBDb25maWd1cmVkIG51bWJlciBvZiBldmVudCBxdWV1ZXMgZm9yIHRoaXMg
ZGV2aWNlICovDQo+ICArCXVpbnQ4X3QgbWF4X2V2ZW50X3ByaW9yaXR5X2xldmVsczsNCj4gICsJ
LyoqPCBNYXhpbXVtIG51bWJlciBvZiBldmVudCBwcmlvcml0eSBsZXZlbHMgYnkgdGhpcyBkZXZp
Y2UuDQo+ICArCSAqIFZhbGlkIHdoZW4gdGhlIGRldmljZSBoYXMgUlRFX0VWRU5UX0RFVl9DQVBf
RVZFTlRfUU9TDQo+ICBjYXBhYmlsaXR5DQo+ICArICAgICAgICAgKi8NCj4gICsJdWludDhfdCBt
YXhfZXZlbnRfcG9ydHM7DQo+ICArCS8qKjwgTWF4aW11bSBudW1iZXIgb2YgZXZlbnQgcG9ydHMg
c3VwcG9ydGVkIGJ5IHRoaXMgZGV2aWNlICovDQo+ICArCXVpbnQ4X3QgbmJfZXZlbnRfcG9ydHM7
DQo+ICArCS8qKjwgQ29uZmlndXJlZCBudW1iZXIgb2YgZXZlbnQgcG9ydHMgZm9yIHRoaXMgZGV2
aWNlICovDQo+ICArCXVpbnQ4X3QgbWF4X2V2ZW50X3BvcnRfZGVxdWV1ZV9xdWV1ZV9kZXB0aDsN
Cj4gICsJLyoqPCBNYXhpbXVtIGRlcXVldWUgcXVldWUgZGVwdGggZm9yIGFueSBldmVudCBwb3J0
Lg0KPiAgKwkgKiBJbXBsZW1lbnRhdGlvbnMgY2FuIHNjaGVkdWxlIE4gZXZlbnRzIGF0IGEgdGlt
ZSB0byBhbiBldmVudCBwb3J0Lg0KPiAgKwkgKiBBIGRldmljZSB0aGF0IGRvZXMgbm90IHN1cHBv
cnQgYnVsayBkZXF1ZXVlIHdpbGwgc2V0IHRoaXMgYXMgMS4NCj4gICsJICogXHNlZSBydGVfZXZl
bnRfcG9ydF9zZXR1cCgpDQo+ICArCSAqLw0KPiAgKwl1aW50MzJfdCBtYXhfZXZlbnRfcG9ydF9l
bnF1ZXVlX3F1ZXVlX2RlcHRoOw0KPiAgKwkvKio8IE1heGltdW0gZW5xdWV1ZSBxdWV1ZSBkZXB0
aCBmb3IgYW55IGV2ZW50IHBvcnQuDQo+ICBJbXBsZW1lbnRhdGlvbnMNCj4gICsJICogY2FuIGJh
dGNoIE4gZXZlbnRzIGF0IGEgdGltZSB0byBlbnF1ZXVlIHRocm91Z2ggZXZlbnQgcG9ydA0KPiAg
KwkgKiBcc2VlIHJ0ZV9ldmVudF9wb3J0X3NldHVwKCkNCj4gICsJICovDQo+ICArCWludDMyX3Qg
bWF4X251bV9ldmVudHM7DQo+ICArCS8qKjwgQSAqY2xvc2VkIHN5c3RlbSogZXZlbnQgZGV2IGhh
cyBhIGxpbWl0IG9uIHRoZSBudW1iZXIgb2YgZXZlbnRzDQo+ICBpdA0KPiAgKwkgKiBjYW4gbWFu
YWdlIGF0IGEgdGltZS4gQW4gKm9wZW4gc3lzdGVtKiBldmVudCBkZXYgZG9lcyBub3QgaGF2ZSBh
DQo+ICArCSAqIGxpbWl0IGFuZCB3aWxsIHNwZWNpZnkgdGhpcyBhcyAtMS4NCj4gICsJICovDQo+
ICArCXVpbnQzMl90IGV2ZW50X2Rldl9jYXA7DQo+ICArCS8qKjwgRXZlbnQgZGV2aWNlIGNhcGFi
aWxpdGllcyhSVEVfRVZFTlRfREVWX0NBUF8pKi8NCj4gICt9Ow0KPiAgKw0KPiAgKy8qKg0KPiAg
KyAqIFJldHJpZXZlIHRoZSBjb250ZXh0dWFsIGluZm9ybWF0aW9uIG9mIGFuIGV2ZW50IGRldmlj
ZS4NCj4gICsgKg0KPiAgKyAqIEBwYXJhbSBkZXZfaWQNCj4gICsgKiAgIFRoZSBpZGVudGlmaWVy
IG9mIHRoZSBkZXZpY2UuDQo+ICArICoNCj4gICsgKiBAcGFyYW1bb3V0XSBkZXZfaW5mbw0KPiAg
KyAqICAgQSBwb2ludGVyIHRvIGEgc3RydWN0dXJlIG9mIHR5cGUgKnJ0ZV9ldmVudF9kZXZfaW5m
byogdG8gYmUgZmlsbGVkIHdpdGggdGhlDQo+ICArICogICBjb250ZXh0dWFsIGluZm9ybWF0aW9u
IG9mIHRoZSBkZXZpY2UuDQo+ICArICoNCj4gICsgKi8NCj4gICtleHRlcm4gdm9pZA0KPiAgK3J0
ZV9ldmVudF9kZXZfaW5mb19nZXQodWludDhfdCBkZXZfaWQsIHN0cnVjdCBydGVfZXZlbnRfZGV2
X2luZm8NCj4gICpkZXZfaW5mbyk7DQoNCkknbSB3b25kZXJpbmcgaWYgdGhpcyByZXR1cm4gdHlw
ZSBzaG91bGQgYmUgaW50LCBzbyB3ZSBjYW4gcmV0dXJuIGFuIGVycm9yIGlmIHRoZSBkZXZfaWQg
aXMgaW52YWxpZC4NCg0KPiAgKw0KPiAgKy8qIEV2ZW50IGRldmljZSBjb25maWd1cmF0aW9uIGJp
dG1hcCBmbGFncyAqLw0KPiAgKyNkZWZpbmUgUlRFX0VWRU5UX0RFVl9DRkdfUEVSX0RFUVVFVUVf
V0FJVCAoMSA8PCAwKQ0KPiAgKy8qKjwgT3ZlcnJpZGUgdGhlIGdsb2JhbCAqZGVxdWV1ZV93YWl0
X25zKiBhbmQgdXNlIHBlciBkZXF1ZXVlIHdhaXQgaW4gbnMuDQo+ICArICogIFxzZWUgcnRlX2V2
ZW50X2RlcXVldWVfd2FpdF90aW1lKCksIHJ0ZV9ldmVudF9kZXF1ZXVlKCkNCj4gICsgKi8NCj4g
ICsNCj4gICsvKiogRXZlbnQgZGV2aWNlIGNvbmZpZ3VyYXRpb24gc3RydWN0dXJlICovDQo+ICAr
c3RydWN0IHJ0ZV9ldmVudF9kZXZfY29uZmlnIHsNCj4gICsJdWludDMyX3QgZGVxdWV1ZV93YWl0
X25zOw0KPiAgKwkvKio8IHJ0ZV9ldmVudF9kZXF1ZXVlKCkgd2FpdCBmb3IgKmRlcXVldWVfd2Fp
dF9ucyogbnMgb24gdGhpcw0KPiAgZGV2aWNlLg0KPiAgKwkgKiBUaGlzIHZhbHVlIHNob3VsZCBi
ZSBpbiB0aGUgcmFuZ2Ugb2YgKm1pbl9kZXF1ZXVlX3dhaXRfbnMqIGFuZA0KPiAgKwkgKiAqbWF4
X2RlcXVldWVfd2FpdF9ucyogd2hpY2ggcHJldmlvdXNseSBwcm92aWRlZCBpbg0KPiAgKwkgKiBy
dGVfZXZlbnRfZGV2X2luZm9fZ2V0KCkNCj4gICsJICogXHNlZSBSVEVfRVZFTlRfREVWX0NGR19Q
RVJfREVRVUVVRV9XQUlUDQo+ICArCSAqLw0KPiAgKwlpbnQzMl90IG5iX2V2ZW50c19saW1pdDsN
Cj4gICsJLyoqPCBBcHBsaWVzIHRvICpjbG9zZWQgc3lzdGVtKiBldmVudCBkZXYgb25seS4gVGhp
cyBmaWVsZCBpbmRpY2F0ZXMgYQ0KPiAgKwkgKiBsaW1pdCB0byBldGhkZXYtbGlrZSBkZXZpY2Vz
IHRvIGxpbWl0IHRoZSBudW1iZXIgb2YgZXZlbnRzIGluamVjdGVkDQo+ICArCSAqIGludG8gdGhl
IHN5c3RlbSB0byBub3Qgb3ZlcndoZWxtIGNvcmUtdG8tY29yZSBldmVudHMuDQo+ICArCSAqIFRo
aXMgdmFsdWUgY2Fubm90IGV4Y2VlZCB0aGUgKm1heF9udW1fZXZlbnRzKiB3aGljaCBwcmV2aW91
c2x5DQo+ICArCSAqIHByb3ZpZGVkIGluIHJ0ZV9ldmVudF9kZXZfaW5mb19nZXQoKQ0KPiAgKwkg
Ki8NCj4gICsJdWludDhfdCBuYl9ldmVudF9xdWV1ZXM7DQo+ICArCS8qKjwgTnVtYmVyIG9mIGV2
ZW50IHF1ZXVlcyB0byBjb25maWd1cmUgb24gdGhpcyBkZXZpY2UuDQo+ICArCSAqIFRoaXMgdmFs
dWUgY2Fubm90IGV4Y2VlZCB0aGUgKm1heF9ldmVudF9xdWV1ZXMqIHdoaWNoIHByZXZpb3VzbHkN
Cj4gICsJICogcHJvdmlkZWQgaW4gcnRlX2V2ZW50X2Rldl9pbmZvX2dldCgpDQo+ICArCSAqLw0K
PiAgKwl1aW50OF90IG5iX2V2ZW50X3BvcnRzOw0KPiAgKwkvKio8IE51bWJlciBvZiBldmVudCBw
b3J0cyB0byBjb25maWd1cmUgb24gdGhpcyBkZXZpY2UuDQo+ICArCSAqIFRoaXMgdmFsdWUgY2Fu
bm90IGV4Y2VlZCB0aGUgKm1heF9ldmVudF9wb3J0cyogd2hpY2ggcHJldmlvdXNseQ0KPiAgKwkg
KiBwcm92aWRlZCBpbiBydGVfZXZlbnRfZGV2X2luZm9fZ2V0KCkNCj4gICsJICovDQo+ICArCXVp
bnQzMl90IGV2ZW50X2Rldl9jZmc7DQo+ICArCS8qKjwgRXZlbnQgZGV2aWNlIGNvbmZpZyBmbGFn
cyhSVEVfRVZFTlRfREVWX0NGR18pKi8NCj4gICt9Ow0KPiAgKw0KPiAgKy8qKg0KPiAgKyAqIENv
bmZpZ3VyZSBhbiBldmVudCBkZXZpY2UuDQo+ICArICoNCj4gICsgKiBUaGlzIGZ1bmN0aW9uIG11
c3QgYmUgaW52b2tlZCBmaXJzdCBiZWZvcmUgYW55IG90aGVyIGZ1bmN0aW9uIGluIHRoZQ0KPiAg
KyAqIEFQSS4gVGhpcyBmdW5jdGlvbiBjYW4gYWxzbyBiZSByZS1pbnZva2VkIHdoZW4gYSBkZXZp
Y2UgaXMgaW4gdGhlDQo+ICArICogc3RvcHBlZCBzdGF0ZS4NCj4gICsgKg0KPiAgKyAqIFRoZSBj
YWxsZXIgbWF5IHVzZSBydGVfZXZlbnRfZGV2X2luZm9fZ2V0KCkgdG8gZ2V0IHRoZSBjYXBhYmls
aXR5IG9mIGVhY2gNCj4gICsgKiByZXNvdXJjZXMgYXZhaWxhYmxlIGZvciB0aGlzIGV2ZW50IGRl
dmljZS4NCj4gICsgKg0KPiAgKyAqIEBwYXJhbSBkZXZfaWQNCj4gICsgKiAgIFRoZSBpZGVudGlm
aWVyIG9mIHRoZSBkZXZpY2UgdG8gY29uZmlndXJlLg0KPiAgKyAqIEBwYXJhbSBjb25maWcNCj4g
ICsgKiAgIFRoZSBldmVudCBkZXZpY2UgY29uZmlndXJhdGlvbiBzdHJ1Y3R1cmUuDQo+ICArICoN
Cj4gICsgKiBAcmV0dXJuDQo+ICArICogICAtIDA6IFN1Y2Nlc3MsIGRldmljZSBjb25maWd1cmVk
Lg0KPiAgKyAqICAgLSA8MDogRXJyb3IgY29kZSByZXR1cm5lZCBieSB0aGUgZHJpdmVyIGNvbmZp
Z3VyYXRpb24gZnVuY3Rpb24uDQo+ICArICovDQo+ICArZXh0ZXJuIGludA0KPiAgK3J0ZV9ldmVu
dF9kZXZfY29uZmlndXJlKHVpbnQ4X3QgZGV2X2lkLCBzdHJ1Y3QgcnRlX2V2ZW50X2Rldl9jb25m
aWcNCj4gICpjb25maWcpOw0KPiAgKw0KPiAgKw0KPiAgKy8qIEV2ZW50IHF1ZXVlIHNwZWNpZmlj
IEFQSXMgKi8NCj4gICsNCj4gICsjZGVmaW5lIFJURV9FVkVOVF9RVUVVRV9QUklPUklUWV9ISUdI
RVNUICAgMA0KPiAgKy8qKjwgSGlnaGVzdCBldmVudCBxdWV1ZSBwcmlvcml0eSAqLw0KPiAgKyNk
ZWZpbmUgUlRFX0VWRU5UX1FVRVVFX1BSSU9SSVRZX05PUk1BTCAgICAxMjgNCj4gICsvKio8IE5v
cm1hbCBldmVudCBxdWV1ZSBwcmlvcml0eSAqLw0KPiAgKyNkZWZpbmUgUlRFX0VWRU5UX1FVRVVF
X1BSSU9SSVRZX0xPV0VTVCAgICAyNTUNCj4gICsvKio8IExvd2VzdCBldmVudCBxdWV1ZSBwcmlv
cml0eSAqLw0KPiAgKw0KPiAgKy8qIEV2ZW50IHF1ZXVlIGNvbmZpZ3VyYXRpb24gYml0bWFwIGZs
YWdzICovDQo+ICArI2RlZmluZSBSVEVfRVZFTlRfUVVFVUVfQ0ZHX1NJTkdMRV9DT05TVU1FUiAg
ICAoMSA8PCAwKQ0KPiAgKy8qKjwgVGhpcyBldmVudCBxdWV1ZSBsaW5rcyBvbmx5IHRvIGEgc2lu
Z2xlIGV2ZW50IHBvcnQuDQo+ICArICoNCj4gICsgKiAgXHNlZSBydGVfZXZlbnRfcG9ydF9zZXR1
cCgpLCBydGVfZXZlbnRfcG9ydF9saW5rKCkNCj4gICsgKi8NCj4gICsNCj4gICsvKiogRXZlbnQg
cXVldWUgY29uZmlndXJhdGlvbiBzdHJ1Y3R1cmUgKi8NCj4gICtzdHJ1Y3QgcnRlX2V2ZW50X3F1
ZXVlX2NvbmYgew0KPiAgKwl1aW50MzJfdCBuYl9hdG9taWNfZmxvd3M7DQo+ICArCS8qKjwgVGhl
IG1heGltdW0gbnVtYmVyIG9mIGFjdGl2ZSBmbG93cyB0aGlzIHF1ZXVlIGNhbiB0cmFjayBhdCBh
bnkNCj4gICsJICogZ2l2ZW4gdGltZS4gVGhlIHZhbHVlIG11c3QgYmUgaW4gdGhlIHJhbmdlIG9m
DQo+ICArCSAqIFsxIC0gbWF4X2V2ZW50X3F1ZXVlX2Zsb3dzKV0gd2hpY2ggcHJldmlvdXNseSBz
dXBwbGllZA0KPiAgKwkgKiB0byBydGVfZXZlbnRfZGV2X2NvbmZpZ3VyZSgpLg0KPiAgKwkgKi8N
Cj4gICsJdWludDMyX3QgbmJfYXRvbWljX29yZGVyX3NlcXVlbmNlczsNCj4gICsJLyoqPCBUaGUg
bWF4aW11bSBudW1iZXIgb2Ygb3V0c3RhbmRpbmcgZXZlbnRzIHdhaXRpbmcgdG8gYmUNCj4gIChl
Z3Jlc3MtKQ0KPiAgKwkgKiByZW9yZGVyZWQgYnkgdGhpcyBxdWV1ZS4gSW4gb3RoZXIgd29yZHMs
IHRoZSBudW1iZXIgb2YgZW50cmllcyBpbg0KPiAgKwkgKiB0aGlzIHF1ZXVl4oCZcyByZW9yZGVy
IGJ1ZmZlci5UaGUgdmFsdWUgbXVzdCBiZSBpbiB0aGUgcmFuZ2Ugb2YNCj4gICsJICogWzEgLSBt
YXhfZXZlbnRfcXVldWVfZmxvd3MpXSB3aGljaCBwcmV2aW91c2x5IHN1cHBsaWVkDQo+ICArCSAq
IHRvIHJ0ZV9ldmVudF9kZXZfY29uZmlndXJlKCkuDQo+ICArCSAqLw0KPiAgKwl1aW50MzJfdCBl
dmVudF9xdWV1ZV9jZmc7IC8qKjwgUXVldWUgY29uZmlnDQo+ICBmbGFncyhFVkVOVF9RVUVVRV9D
RkdfKSAqLw0KPiAgKwl1aW50OF90IHByaW9yaXR5Ow0KPiAgKwkvKio8IFByaW9yaXR5IGZvciB0
aGlzIGV2ZW50IHF1ZXVlIHJlbGF0aXZlIHRvIG90aGVyIGV2ZW50IHF1ZXVlcy4NCj4gICsJICog
VGhlIHJlcXVlc3RlZCBwcmlvcml0eSBzaG91bGQgaW4gdGhlIHJhbmdlIG9mDQo+ICArCSAqIFtS
VEVfRVZFTlRfUVVFVUVfUFJJT1JJVFlfSElHSEVTVCwNCj4gIFJURV9FVkVOVF9RVUVVRV9QUklP
UklUWV9MT1dFU1RdLg0KPiAgKwkgKiBUaGUgaW1wbGVtZW50YXRpb24gc2hhbGwgbm9ybWFsaXpl
IHRoZSByZXF1ZXN0ZWQgcHJpb3JpdHkgdG8NCj4gICsJICogZXZlbnQgZGV2aWNlIHN1cHBvcnRl
ZCBwcmlvcml0eSB2YWx1ZS4NCj4gICsJICogVmFsaWQgd2hlbiB0aGUgZGV2aWNlIGhhcyBSVEVf
RVZFTlRfREVWX0NBUF9RVUVVRV9RT1MNCj4gIGNhcGFiaWxpdHkNCj4gICsJICovDQo+ICArfTsN
Cj4gICsNCj4gICsvKioNCj4gICsgKiBSZXRyaWV2ZSB0aGUgZGVmYXVsdCBjb25maWd1cmF0aW9u
IGluZm9ybWF0aW9uIG9mIGFuIGV2ZW50IHF1ZXVlDQo+ICBkZXNpZ25hdGVkDQo+ICArICogYnkg
aXRzICpxdWV1ZV9pZCogZnJvbSB0aGUgZXZlbnQgZHJpdmVyIGZvciBhbiBldmVudCBkZXZpY2Uu
DQo+ICArICoNCj4gICsgKiBUaGlzIGZ1bmN0aW9uIGludGVuZGVkIHRvIGJlIHVzZWQgaW4gY29u
anVuY3Rpb24gd2l0aA0KPiAgcnRlX2V2ZW50X3F1ZXVlX3NldHVwKCkNCj4gICsgKiB3aGVyZSBj
YWxsZXIgbmVlZHMgdG8gc2V0IHVwIHRoZSBxdWV1ZSBieSBvdmVycmlkaW5nIGZldyBkZWZhdWx0
IHZhbHVlcy4NCj4gICsgKg0KPiAgKyAqIEBwYXJhbSBkZXZfaWQNCj4gICsgKiAgIFRoZSBpZGVu
dGlmaWVyIG9mIHRoZSBkZXZpY2UuDQo+ICArICogQHBhcmFtIHF1ZXVlX2lkDQo+ICArICogICBU
aGUgaW5kZXggb2YgdGhlIGV2ZW50IHF1ZXVlIHRvIGdldCB0aGUgY29uZmlndXJhdGlvbiBpbmZv
cm1hdGlvbi4NCj4gICsgKiAgIFRoZSB2YWx1ZSBtdXN0IGJlIGluIHRoZSByYW5nZSBbMCwgbmJf
ZXZlbnRfcXVldWVzIC0gMV0NCj4gICsgKiAgIHByZXZpb3VzbHkgc3VwcGxpZWQgdG8gcnRlX2V2
ZW50X2Rldl9jb25maWd1cmUoKS4NCj4gICsgKiBAcGFyYW1bb3V0XSBxdWV1ZV9jb25mDQo+ICAr
ICogICBUaGUgcG9pbnRlciB0byB0aGUgZGVmYXVsdCBldmVudCBxdWV1ZSBjb25maWd1cmF0aW9u
IGRhdGEuDQo+ICArICoNCj4gICsgKiBcc2VlIHJ0ZV9ldmVudF9xdWV1ZV9zZXR1cCgpDQo+ICAr
ICoNCj4gICsgKi8NCj4gICtleHRlcm4gdm9pZA0KPiAgK3J0ZV9ldmVudF9xdWV1ZV9kZWZhdWx0
X2NvbmZfZ2V0KHVpbnQ4X3QgZGV2X2lkLCB1aW50OF90IHF1ZXVlX2lkLA0KPiAgKwkJCQkgc3Ry
dWN0IHJ0ZV9ldmVudF9xdWV1ZV9jb25mICpxdWV1ZV9jb25mKTsNCj4gICsNCj4gICsvKioNCj4g
ICsgKiBBbGxvY2F0ZSBhbmQgc2V0IHVwIGFuIGV2ZW50IHF1ZXVlIGZvciBhbiBldmVudCBkZXZp
Y2UuDQo+ICArICoNCj4gICsgKiBAcGFyYW0gZGV2X2lkDQo+ICArICogICBUaGUgaWRlbnRpZmll
ciBvZiB0aGUgZGV2aWNlLg0KPiAgKyAqIEBwYXJhbSBxdWV1ZV9pZA0KPiAgKyAqICAgVGhlIGlu
ZGV4IG9mIHRoZSBldmVudCBxdWV1ZSB0byBzZXR1cC4gVGhlIHZhbHVlIG11c3QgYmUgaW4gdGhl
IHJhbmdlDQo+ICArICogICBbMCwgbmJfZXZlbnRfcXVldWVzIC0gMV0gcHJldmlvdXNseSBzdXBw
bGllZCB0bw0KPiAgcnRlX2V2ZW50X2Rldl9jb25maWd1cmUoKS4NCj4gICsgKiBAcGFyYW0gcXVl
dWVfY29uZg0KPiAgKyAqICAgVGhlIHBvaW50ZXIgdG8gdGhlIGNvbmZpZ3VyYXRpb24gZGF0YSB0
byBiZSB1c2VkIGZvciB0aGUgZXZlbnQgcXVldWUuDQo+ICArICogICBOVUxMIHZhbHVlIGlzIGFs
bG93ZWQsIGluIHdoaWNoIGNhc2UgZGVmYXVsdCBjb25maWd1cmF0aW9uCXVzZWQuDQo+ICArICoN
Cj4gICsgKiBcc2VlIHJ0ZV9ldmVudF9xdWV1ZV9kZWZhdWx0X2NvbmZfZ2V0KCkNCj4gICsgKg0K
PiAgKyAqIEByZXR1cm4NCj4gICsgKiAgIC0gMDogU3VjY2VzcywgZXZlbnQgcXVldWUgY29ycmVj
dGx5IHNldCB1cC4NCj4gICsgKiAgIC0gPDA6IGV2ZW50IHF1ZXVlIGNvbmZpZ3VyYXRpb24gZmFp
bGVkDQo+ICArICovDQo+ICArZXh0ZXJuIGludA0KPiAgK3J0ZV9ldmVudF9xdWV1ZV9zZXR1cCh1
aW50OF90IGRldl9pZCwgdWludDhfdCBxdWV1ZV9pZCwNCj4gICsJCSAgICAgIHN0cnVjdCBydGVf
ZXZlbnRfcXVldWVfY29uZiAqcXVldWVfY29uZik7DQo+ICArDQo+ICArLyoqDQo+ICArICogR2V0
IHRoZSBudW1iZXIgb2YgZXZlbnQgcXVldWVzIG9uIGEgc3BlY2lmaWMgZXZlbnQgZGV2aWNlDQo+
ICArICoNCj4gICsgKiBAcGFyYW0gZGV2X2lkDQo+ICArICogICBFdmVudCBkZXZpY2UgaWRlbnRp
Zmllci4NCj4gICsgKiBAcmV0dXJuDQo+ICArICogICAtIFRoZSBudW1iZXIgb2YgY29uZmlndXJl
ZCBldmVudCBxdWV1ZXMNCj4gICsgKi8NCj4gICtleHRlcm4gdWludDE2X3QNCj4gICtydGVfZXZl
bnRfcXVldWVfY291bnQodWludDhfdCBkZXZfaWQpOw0KPiAgKw0KPiAgKy8qKg0KPiAgKyAqIEdl
dCB0aGUgcHJpb3JpdHkgb2YgdGhlIGV2ZW50IHF1ZXVlIG9uIGEgc3BlY2lmaWMgZXZlbnQgZGV2
aWNlDQo+ICArICoNCj4gICsgKiBAcGFyYW0gZGV2X2lkDQo+ICArICogICBFdmVudCBkZXZpY2Ug
aWRlbnRpZmllci4NCj4gICsgKiBAcGFyYW0gcXVldWVfaWQNCj4gICsgKiAgIEV2ZW50IHF1ZXVl
IGlkZW50aWZpZXIuDQo+ICArICogQHJldHVybg0KPiAgKyAqICAgLSBJZiB0aGUgZGV2aWNlIGhh
cyBSVEVfRVZFTlRfREVWX0NBUF9RVUVVRV9RT1MgY2FwYWJpbGl0eSB0aGVuIHRoZQ0KPiAgKyAq
ICAgIGNvbmZpZ3VyZWQgcHJpb3JpdHkgb2YgdGhlIGV2ZW50IHF1ZXVlIGluDQo+ICArICogICAg
W1JURV9FVkVOVF9RVUVVRV9QUklPUklUWV9ISUdIRVNULA0KPiAgUlRFX0VWRU5UX1FVRVVFX1BS
SU9SSVRZX0xPV0VTVF0gcmFuZ2UNCj4gICsgKiAgICBlbHNlIHRoZSB2YWx1ZSBvbmUNCj4gICsg
Ki8NCj4gICtleHRlcm4gdWludDhfdA0KPiAgK3J0ZV9ldmVudF9xdWV1ZV9wcmlvcml0eSh1aW50
OF90IGRldl9pZCwgdWludDhfdCBxdWV1ZV9pZCk7DQo+ICArDQo+ICArLyogRXZlbnQgcG9ydCBz
cGVjaWZpYyBBUElzICovDQo+ICArDQo+ICArLyoqIEV2ZW50IHBvcnQgY29uZmlndXJhdGlvbiBz
dHJ1Y3R1cmUgKi8NCj4gICtzdHJ1Y3QgcnRlX2V2ZW50X3BvcnRfY29uZiB7DQo+ICArCWludDMy
X3QgbmV3X2V2ZW50X3RocmVzaG9sZDsNCj4gICsJLyoqPCBBIGJhY2twcmVzc3VyZSB0aHJlc2hv
bGQgZm9yIG5ldyBldmVudCBlbnF1ZXVlcyBvbiB0aGlzIHBvcnQuDQo+ICArCSAqIFVzZSBmb3Ig
KmNsb3NlZCBzeXN0ZW0qIGV2ZW50IGRldiB3aGVyZSBldmVudCBjYXBhY2l0eSBpcyBsaW1pdGVk
LA0KPiAgKwkgKiBhbmQgY2Fubm90IGV4Y2VlZCB0aGUgY2FwYWNpdHkgb2YgdGhlIGV2ZW50IGRl
di4NCj4gICsJICogQ29uZmlndXJpbmcgcG9ydHMgd2l0aCBkaWZmZXJlbnQgdGhyZXNob2xkcyBj
YW4gbWFrZSBoaWdoZXIgcHJpb3JpdHkNCj4gICsJICogdHJhZmZpYyBsZXNzIGxpa2VseSB0byAg
YmUgYmFja3ByZXNzdXJlZC4NCj4gICsJICogRm9yIGV4YW1wbGUsIGEgcG9ydCB1c2VkIHRvIGlu
amVjdCBOSUMgUnggcGFja2V0cyBpbnRvIHRoZSBldmVudCBkZXYNCj4gICsJICogY2FuIGhhdmUg
YSBsb3dlciB0aHJlc2hvbGQgc28gYXMgbm90IHRvIG92ZXJ3aGVsbSB0aGUgZGV2aWNlLA0KPiAg
KwkgKiB3aGlsZSBwb3J0cyB1c2VkIGZvciB3b3JrZXIgcG9vbHMgY2FuIGhhdmUgYSBoaWdoZXIg
dGhyZXNob2xkLg0KPiAgKwkgKi8NCj4gICsJdWludDhfdCBkZXF1ZXVlX3F1ZXVlX2RlcHRoOw0K
PiAgKwkvKio8IENvbmZpZ3VyZSBudW1iZXIgb2YgYnVsayBkZXF1ZXVlcyBmb3IgdGhpcyBldmVu
dCBwb3J0Lg0KPiAgKwkgKiBUaGlzIHZhbHVlIGNhbm5vdCBleGNlZWQgdGhlDQo+ICAqbWF4X2V2
ZW50X3BvcnRfZGVxdWV1ZV9xdWV1ZV9kZXB0aCoNCj4gICsJICogd2hpY2ggcHJldmlvdXNseSBz
dXBwbGllZCB0byBydGVfZXZlbnRfZGV2X2NvbmZpZ3VyZSgpDQo+ICArCSAqLw0KPiAgKwl1aW50
OF90IGVucXVldWVfcXVldWVfZGVwdGg7DQo+ICArCS8qKjwgQ29uZmlndXJlIG51bWJlciBvZiBi
dWxrIGVucXVldWVzIGZvciB0aGlzIGV2ZW50IHBvcnQuDQo+ICArCSAqIFRoaXMgdmFsdWUgY2Fu
bm90IGV4Y2VlZCB0aGUNCj4gICptYXhfZXZlbnRfcG9ydF9lbnF1ZXVlX3F1ZXVlX2RlcHRoKg0K
PiAgKwkgKiB3aGljaCBwcmV2aW91c2x5IHN1cHBsaWVkIHRvIHJ0ZV9ldmVudF9kZXZfY29uZmln
dXJlKCkNCj4gICsJICovDQo+ICArfTsNCj4gICsNCj4gICsvKioNCj4gICsgKiBSZXRyaWV2ZSB0
aGUgZGVmYXVsdCBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIG9mIGFuIGV2ZW50IHBvcnQgZGVz
aWduYXRlZA0KPiAgKyAqIGJ5IGl0cyAqcG9ydF9pZCogZnJvbSB0aGUgZXZlbnQgZHJpdmVyIGZv
ciBhbiBldmVudCBkZXZpY2UuDQo+ICArICoNCj4gICsgKiBUaGlzIGZ1bmN0aW9uIGludGVuZGVk
IHRvIGJlIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aA0KPiAgcnRlX2V2ZW50X3BvcnRfc2V0dXAo
KQ0KPiAgKyAqIHdoZXJlIGNhbGxlciBuZWVkcyB0byBzZXQgdXAgdGhlIHBvcnQgYnkgb3ZlcnJp
ZGluZyBmZXcgZGVmYXVsdCB2YWx1ZXMuDQo+ICArICoNCj4gICsgKiBAcGFyYW0gZGV2X2lkDQo+
ICArICogICBUaGUgaWRlbnRpZmllciBvZiB0aGUgZGV2aWNlLg0KPiAgKyAqIEBwYXJhbSBwb3J0
X2lkDQo+ICArICogICBUaGUgaW5kZXggb2YgdGhlIGV2ZW50IHBvcnQgdG8gZ2V0IHRoZSBjb25m
aWd1cmF0aW9uIGluZm9ybWF0aW9uLg0KPiAgKyAqICAgVGhlIHZhbHVlIG11c3QgYmUgaW4gdGhl
IHJhbmdlIFswLCBuYl9ldmVudF9wb3J0cyAtIDFdDQo+ICArICogICBwcmV2aW91c2x5IHN1cHBs
aWVkIHRvIHJ0ZV9ldmVudF9kZXZfY29uZmlndXJlKCkuDQo+ICArICogQHBhcmFtW291dF0gcG9y
dF9jb25mDQo+ICArICogICBUaGUgcG9pbnRlciB0byB0aGUgZGVmYXVsdCBldmVudCBwb3J0IGNv
bmZpZ3VyYXRpb24gZGF0YQ0KPiAgKyAqDQo+ICArICogXHNlZSBydGVfZXZlbnRfcG9ydF9zZXR1
cCgpDQo+ICArICoNCj4gICsgKi8NCj4gICtleHRlcm4gdm9pZA0KPiAgK3J0ZV9ldmVudF9wb3J0
X2RlZmF1bHRfY29uZl9nZXQodWludDhfdCBkZXZfaWQsIHVpbnQ4X3QgcG9ydF9pZCwNCj4gICsJ
CQkJc3RydWN0IHJ0ZV9ldmVudF9wb3J0X2NvbmYgKnBvcnRfY29uZik7DQo+ICArDQo+ICArLyoq
DQo+ICArICogQWxsb2NhdGUgYW5kIHNldCB1cCBhbiBldmVudCBwb3J0IGZvciBhbiBldmVudCBk
ZXZpY2UuDQo+ICArICoNCj4gICsgKiBAcGFyYW0gZGV2X2lkDQo+ICArICogICBUaGUgaWRlbnRp
ZmllciBvZiB0aGUgZGV2aWNlLg0KPiAgKyAqIEBwYXJhbSBwb3J0X2lkDQo+ICArICogICBUaGUg
aW5kZXggb2YgdGhlIGV2ZW50IHBvcnQgdG8gc2V0dXAuIFRoZSB2YWx1ZSBtdXN0IGJlIGluIHRo
ZSByYW5nZQ0KPiAgKyAqICAgWzAsIG5iX2V2ZW50X3BvcnRzIC0gMV0gcHJldmlvdXNseSBzdXBw
bGllZCB0byBydGVfZXZlbnRfZGV2X2NvbmZpZ3VyZSgpLg0KPiAgKyAqIEBwYXJhbSBwb3J0X2Nv
bmYNCj4gICsgKiAgIFRoZSBwb2ludGVyIHRvIHRoZSBjb25maWd1cmF0aW9uIGRhdGEgdG8gYmUg
dXNlZCBmb3IgdGhlIHF1ZXVlLg0KPiAgKyAqICAgTlVMTCB2YWx1ZSBpcyBhbGxvd2VkLCBpbiB3
aGljaCBjYXNlIGRlZmF1bHQgY29uZmlndXJhdGlvbgl1c2VkLg0KPiAgKyAqDQo+ICArICogXHNl
ZSBydGVfZXZlbnRfcG9ydF9kZWZhdWx0X2NvbmZfZ2V0KCkNCj4gICsgKg0KPiAgKyAqIEByZXR1
cm4NCj4gICsgKiAgIC0gMDogU3VjY2VzcywgZXZlbnQgcG9ydCBjb3JyZWN0bHkgc2V0IHVwLg0K
PiAgKyAqICAgLSA8MDogUG9ydCBjb25maWd1cmF0aW9uIGZhaWxlZA0KPiAgKyAqICAgLSAoLUVE
UVVPVCkgUXVvdGEgZXhjZWVkZWQoQXBwbGljYXRpb24gdHJpZWQgdG8gbGluayB0aGUgcXVldWUN
Cj4gIGNvbmZpZ3VyZWQNCj4gICsgKiAgIHdpdGggUlRFX0VWRU5UX1FVRVVFX0NGR19TSU5HTEVf
Q09OU1VNRVIgdG8gbW9yZSB0aGFuIG9uZQ0KPiAgZXZlbnQgcG9ydHMpDQo+ICArICovDQo+ICAr
ZXh0ZXJuIGludA0KPiAgK3J0ZV9ldmVudF9wb3J0X3NldHVwKHVpbnQ4X3QgZGV2X2lkLCB1aW50
OF90IHBvcnRfaWQsDQo+ICArCQkgICAgIHN0cnVjdCBydGVfZXZlbnRfcG9ydF9jb25mICpwb3J0
X2NvbmYpOw0KPiAgKw0KPiAgKy8qKg0KPiAgKyAqIEdldCB0aGUgbnVtYmVyIG9mIGRlcXVldWUg
cXVldWUgZGVwdGggY29uZmlndXJlZCBmb3IgZXZlbnQgcG9ydA0KPiAgZGVzaWduYXRlZA0KPiAg
KyAqIGJ5IGl0cyAqcG9ydF9pZCogb24gYSBzcGVjaWZpYyBldmVudCBkZXZpY2UNCj4gICsgKg0K
PiAgKyAqIEBwYXJhbSBkZXZfaWQNCj4gICsgKiAgIEV2ZW50IGRldmljZSBpZGVudGlmaWVyLg0K
PiAgKyAqIEBwYXJhbSBwb3J0X2lkDQo+ICArICogICBFdmVudCBwb3J0IGlkZW50aWZpZXIuDQo+
ICArICogQHJldHVybg0KPiAgKyAqICAgLSBUaGUgbnVtYmVyIG9mIGNvbmZpZ3VyZWQgZGVxdWV1
ZSBxdWV1ZSBkZXB0aA0KPiAgKyAqDQo+ICArICogXHNlZSBydGVfZXZlbnRfZGVxdWV1ZV9idXJz
dCgpDQo+ICArICovDQo+ICArZXh0ZXJuIHVpbnQ4X3QNCj4gICtydGVfZXZlbnRfcG9ydF9kZXF1
ZXVlX2RlcHRoKHVpbnQ4X3QgZGV2X2lkLCB1aW50OF90IHBvcnRfaWQpOw0KPiAgKw0KPiAgKy8q
Kg0KPiAgKyAqIEdldCB0aGUgbnVtYmVyIG9mIGVucXVldWUgcXVldWUgZGVwdGggY29uZmlndXJl
ZCBmb3IgZXZlbnQgcG9ydA0KPiAgZGVzaWduYXRlZA0KPiAgKyAqIGJ5IGl0cyAqcG9ydF9pZCog
b24gYSBzcGVjaWZpYyBldmVudCBkZXZpY2UNCj4gICsgKg0KPiAgKyAqIEBwYXJhbSBkZXZfaWQN
Cj4gICsgKiAgIEV2ZW50IGRldmljZSBpZGVudGlmaWVyLg0KPiAgKyAqIEBwYXJhbSBwb3J0X2lk
DQo+ICArICogICBFdmVudCBwb3J0IGlkZW50aWZpZXIuDQo+ICArICogQHJldHVybg0KPiAgKyAq
ICAgLSBUaGUgbnVtYmVyIG9mIGNvbmZpZ3VyZWQgZW5xdWV1ZSBxdWV1ZSBkZXB0aA0KPiAgKyAq
DQo+ICArICogXHNlZSBydGVfZXZlbnRfZW5xdWV1ZV9idXJzdCgpDQo+ICArICovDQo+ICArZXh0
ZXJuIHVpbnQ4X3QNCj4gICtydGVfZXZlbnRfcG9ydF9lbnF1ZXVlX2RlcHRoKHVpbnQ4X3QgZGV2
X2lkLCB1aW50OF90IHBvcnRfaWQpOw0KPiAgKw0KPiAgKy8qKg0KPiAgKyAqIEdldCB0aGUgbnVt
YmVyIG9mIHBvcnRzIG9uIGEgc3BlY2lmaWMgZXZlbnQgZGV2aWNlDQo+ICArICoNCj4gICsgKiBA
cGFyYW0gZGV2X2lkDQo+ICArICogICBFdmVudCBkZXZpY2UgaWRlbnRpZmllci4NCj4gICsgKiBA
cmV0dXJuDQo+ICArICogICAtIFRoZSBudW1iZXIgb2YgY29uZmlndXJlZCBwb3J0cw0KPiAgKyAq
Lw0KPiAgK2V4dGVybiB1aW50OF90DQo+ICArcnRlX2V2ZW50X3BvcnRfY291bnQodWludDhfdCBk
ZXZfaWQpOw0KPiAgKw0KPiAgKy8qKg0KPiAgKyAqIFN0YXJ0IGFuIGV2ZW50IGRldmljZS4NCj4g
ICsgKg0KPiAgKyAqIFRoZSBkZXZpY2Ugc3RhcnQgc3RlcCBpcyB0aGUgbGFzdCBvbmUgYW5kIGNv
bnNpc3RzIG9mIHNldHRpbmcgdGhlIGV2ZW50DQo+ICArICogcXVldWVzIHRvIHN0YXJ0IGFjY2Vw
dGluZyB0aGUgZXZlbnRzIGFuZCBzY2hlZHVsZXMgdG8gZXZlbnQgcG9ydHMuDQo+ICArICoNCj4g
ICsgKiBPbiBzdWNjZXNzLCBhbGwgYmFzaWMgZnVuY3Rpb25zIGV4cG9ydGVkIGJ5IHRoZSBBUEkg
KGV2ZW50IGVucXVldWUsDQo+ICArICogZXZlbnQgZGVxdWV1ZSBhbmQgc28gb24pIGNhbiBiZSBp
bnZva2VkLg0KPiAgKyAqDQo+ICArICogQHBhcmFtIGRldl9pZA0KPiAgKyAqICAgRXZlbnQgZGV2
aWNlIGlkZW50aWZpZXINCj4gICsgKiBAcmV0dXJuDQo+ICArICogICAtIDA6IFN1Y2Nlc3MsIGRl
dmljZSBzdGFydGVkLg0KPiAgKyAqICAgLSA8MDogRXJyb3IgY29kZSBvZiB0aGUgZHJpdmVyIGRl
dmljZSBzdGFydCBmdW5jdGlvbi4NCj4gICsgKi8NCj4gICtleHRlcm4gaW50DQo+ICArcnRlX2V2
ZW50X2Rldl9zdGFydCh1aW50OF90IGRldl9pZCk7DQo+ICArDQo+ICArLyoqDQo+ICArICogU3Rv
cCBhbiBldmVudCBkZXZpY2UuIFRoZSBkZXZpY2UgY2FuIGJlIHJlc3RhcnRlZCB3aXRoIGEgY2Fs
bCB0bw0KPiAgKyAqIHJ0ZV9ldmVudF9kZXZfc3RhcnQoKQ0KPiAgKyAqDQo+ICArICogQHBhcmFt
IGRldl9pZA0KPiAgKyAqICAgRXZlbnQgZGV2aWNlIGlkZW50aWZpZXIuDQo+ICArICovDQo+ICAr
ZXh0ZXJuIHZvaWQNCj4gICtydGVfZXZlbnRfZGV2X3N0b3AodWludDhfdCBkZXZfaWQpOw0KPiAg
Kw0KPiAgKy8qKg0KPiAgKyAqIENsb3NlIGFuIGV2ZW50IGRldmljZS4gVGhlIGRldmljZSBjYW5u
b3QgYmUgcmVzdGFydGVkIQ0KPiAgKyAqDQo+ICArICogQHBhcmFtIGRldl9pZA0KPiAgKyAqICAg
RXZlbnQgZGV2aWNlIGlkZW50aWZpZXINCj4gICsgKg0KPiAgKyAqIEByZXR1cm4NCj4gICsgKiAg
LSAwIG9uIHN1Y2Nlc3NmdWxseSBjbG9zaW5nIGRldmljZQ0KPiAgKyAqICAtIDwwIG9uIGZhaWx1
cmUgdG8gY2xvc2UgZGV2aWNlDQo+ICArICovDQo+ICArZXh0ZXJuIGludA0KPiAgK3J0ZV9ldmVu
dF9kZXZfY2xvc2UodWludDhfdCBkZXZfaWQpOw0KPiAgKw0KPiAgKy8qIFNjaGVkdWxlciB0eXBl
IGRlZmluaXRpb25zICovDQo+ICArI2RlZmluZSBSVEVfU0NIRURfVFlQRV9PUkRFUkVECQkwDQo+
ICArLyoqPCBPcmRlcmVkIHNjaGVkdWxpbmcNCj4gICsgKg0KPiAgKyAqIEV2ZW50cyBmcm9tIGFu
IG9yZGVyZWQgZmxvdyBvZiBhbiBldmVudCBxdWV1ZSBjYW4gYmUgc2NoZWR1bGVkIHRvDQo+ICBt
dWx0aXBsZQ0KPiAgKyAqIHBvcnRzIGZvciBjb25jdXJyZW50IHByb2Nlc3Npbmcgd2hpbGUgbWFp
bnRhaW5pbmcgdGhlIG9yaWdpbmFsIGV2ZW50IG9yZGVyLg0KPiAgKyAqIFRoaXMgc2NoZW1lIGVu
YWJsZXMgdGhlIHVzZXIgdG8gYWNoaWV2ZSBoaWdoIHNpbmdsZSBmbG93IHRocm91Z2hwdXQgYnkN
Cj4gICsgKiBhdm9pZGluZyBTVyBzeW5jaHJvbml6YXRpb24gZm9yIG9yZGVyaW5nIGJldHdlZW4g
cG9ydHMgd2hpY2ggYm91bmQgdG8NCj4gIGNvcmVzLg0KPiAgKyAqDQo+ICArICogVGhlIHNvdXJj
ZSBmbG93IG9yZGVyaW5nIGZyb20gYW4gZXZlbnQgcXVldWUgaXMgbWFpbnRhaW5lZCB3aGVuIGV2
ZW50cw0KPiAgYXJlDQo+ICArICogZW5xdWV1ZWQgdG8gdGhlaXIgZGVzdGluYXRpb24gcXVldWUg
d2l0aGluIHRoZSBzYW1lIG9yZGVyZWQgZmxvdyBjb250ZXh0Lg0KPiAgKyAqIEFuIGV2ZW50IHBv
cnQgaG9sZHMgdGhlIGNvbnRleHQgdW50aWwgYXBwbGljYXRpb24gY2FsbCBydGVfZXZlbnRfZGVx
dWV1ZSgpDQo+ICArICogZnJvbSB0aGUgc2FtZSBwb3J0LCB3aGljaCBpbXBsaWNpdGx5IHJlbGVh
c2VzIHRoZSBjb250ZXh0Lg0KPiAgKyAqIFVzZXIgbWF5IGFsbG93IHRoZSBzY2hlZHVsZXIgdG8g
cmVsZWFzZSB0aGUgY29udGV4dCBlYXJsaWVyIHRoYW4gdGhhdA0KPiAgKyAqIGJ5IGNhbGxpbmcg
cnRlX2V2ZW50X3JlbGVhc2UoKQ0KPiAgKyAqDQo+ICArICogRXZlbnRzIGZyb20gdGhlIHNvdXJj
ZSBxdWV1ZSBhcHBlYXIgaW4gdGhlaXIgb3JpZ2luYWwgb3JkZXIgd2hlbiBkZXF1ZXVlZA0KPiAg
KyAqIGZyb20gYSBkZXN0aW5hdGlvbiBxdWV1ZS4NCj4gICsgKiBFdmVudCBvcmRlcmluZyBpcyBi
YXNlZCBvbiB0aGUgcmVjZWl2ZWQgZXZlbnQocyksIGJ1dCBhbHNvIG90aGVyDQo+ICArICogKG5l
d2x5IGFsbG9jYXRlZCBvciBzdG9yZWQpIGV2ZW50cyBhcmUgb3JkZXJlZCB3aGVuIGVucXVldWVk
IHdpdGhpbiB0aGUNCj4gIHNhbWUNCj4gICsgKiBvcmRlcmVkIGNvbnRleHQuIEV2ZW50cyBub3Qg
ZW5xdWV1ZWQgKGUuZy4gcmVsZWFzZWQgb3Igc3RvcmVkKSB3aXRoaW4gdGhlDQo+ICArICogY29u
dGV4dCBhcmUgIGNvbnNpZGVyZWQgbWlzc2luZyBmcm9tIHJlb3JkZXJpbmcgYW5kIGFyZSBza2lw
cGVkIGF0IHRoaXMNCj4gIHRpbWUNCj4gICsgKiAoYnV0IGNhbiBiZSBvcmRlcmVkIGFnYWluIHdp
dGhpbiBhbm90aGVyIGNvbnRleHQpLg0KPiAgKyAqDQo+ICArICogXHNlZSBydGVfZXZlbnRfZGVx
dWV1ZSgpLCBydGVfZXZlbnRfcmVsZWFzZSgpDQo+ICArICovDQo+ICArDQo+ICArI2RlZmluZSBS
VEVfU0NIRURfVFlQRV9BVE9NSUMJCTENCj4gICsvKio8IEF0b21pYyBzY2hlZHVsaW5nDQo+ICAr
ICoNCj4gICsgKiBFdmVudHMgZnJvbSBhbiBhdG9taWMgZmxvdyBvZiBhbiBldmVudCBxdWV1ZSBj
YW4gYmUgc2NoZWR1bGVkIG9ubHkgdG8gYQ0KPiAgKyAqIHNpbmdsZSBwb3J0IGF0IGEgdGltZS4g
VGhlIHBvcnQgaXMgZ3VhcmFudGVlZCB0byBoYXZlIGV4Y2x1c2l2ZSAoYXRvbWljKQ0KPiAgKyAq
IGFjY2VzcyB0byB0aGUgYXNzb2NpYXRlZCBmbG93IGNvbnRleHQsIHdoaWNoIGVuYWJsZXMgdGhl
IHVzZXIgdG8gYXZvaWQgU1cNCj4gICsgKiBzeW5jaHJvbml6YXRpb24uIEF0b21pYyBmbG93cyBh
bHNvIGhlbHAgdG8gbWFpbnRhaW4gZXZlbnQgb3JkZXJpbmcNCj4gICsgKiBzaW5jZSBvbmx5IG9u
ZSBwb3J0IGF0IGEgdGltZSBjYW4gcHJvY2VzcyBldmVudHMgZnJvbSBhIGZsb3cgb2YgYW4NCj4g
ICsgKiBldmVudCBxdWV1ZS4NCj4gICsgKg0KPiAgKyAqIFRoZSBhdG9taWMgcXVldWUgc3luY2hy
b25pemF0aW9uIGNvbnRleHQgaXMgZGVkaWNhdGVkIHRvIHRoZSBwb3J0IHVudGlsDQo+ICArICog
YXBwbGljYXRpb24gY2FsbCBydGVfZXZlbnRfZGVxdWV1ZSgpIGZyb20gdGhlIHNhbWUgcG9ydCwg
d2hpY2ggaW1wbGljaXRseQ0KPiAgKyAqIHJlbGVhc2VzIHRoZSBjb250ZXh0LiBVc2VyIG1heSBh
bGxvdyB0aGUgc2NoZWR1bGVyIHRvIHJlbGVhc2UgdGhlIGNvbnRleHQNCj4gICsgKiBlYXJsaWVy
IHRoYW4gdGhhdCBieSBjYWxsaW5nIHJ0ZV9ldmVudF9yZWxlYXNlKCkNCj4gICsgKg0KPiAgKyAq
IFxzZWUgcnRlX2V2ZW50X2RlcXVldWUoKSwgcnRlX2V2ZW50X3JlbGVhc2UoKQ0KPiAgKyAqLw0K
PiAgKw0KPiAgKyNkZWZpbmUgUlRFX1NDSEVEX1RZUEVfUEFSQUxMRUwJCTINCj4gICsvKio8IFBh
cmFsbGVsIHNjaGVkdWxpbmcNCj4gICsgKg0KPiAgKyAqIFRoZSBzY2hlZHVsZXIgcGVyZm9ybXMg
cHJpb3JpdHkgc2NoZWR1bGluZywgbG9hZCBiYWxhbmNpbmcsIGV0Yy4gZnVuY3Rpb25zDQo+ICAr
ICogYnV0IGRvZXMgbm90IHByb3ZpZGUgYWRkaXRpb25hbCBldmVudCBzeW5jaHJvbml6YXRpb24g
b3Igb3JkZXJpbmcuDQo+ICArICogSXQgaXMgZnJlZSB0byBzY2hlZHVsZSBldmVudHMgZnJvbSBh
IHNpbmdsZSBwYXJhbGxlbCBmbG93IG9mIGFuIGV2ZW50IHF1ZXVlDQo+ICArICogdG8gbXVsdGlw
bGUgZXZlbnRzIHBvcnRzIGZvciBjb25jdXJyZW50IHByb2Nlc3NpbmcuDQo+ICArICogVGhlIGFw
cGxpY2F0aW9uIGlzIHJlc3BvbnNpYmxlIGZvciBmbG93IGNvbnRleHQgc3luY2hyb25pemF0aW9u
IGFuZA0KPiAgKyAqIGV2ZW50IG9yZGVyaW5nIChTVyBzeW5jaHJvbml6YXRpb24pLg0KPiAgKyAq
Lw0KPiAgKw0KPiAgKy8qIEV2ZW50IHR5cGVzIHRvIGNsYXNzaWZ5IHRoZSBldmVudCBzb3VyY2Ug
Ki8NCj4gICsjZGVmaW5lIFJURV9FVkVOVF9UWVBFX0VUSERFVgkJMHgwDQo+ICArLyoqPCBUaGUg
ZXZlbnQgZ2VuZXJhdGVkIGZyb20gZXRoZGV2IHN1YnN5c3RlbSAqLw0KPiAgKyNkZWZpbmUgUlRF
X0VWRU5UX1RZUEVfQ1JZUFRPREVWCTB4MQ0KPiAgKy8qKjwgVGhlIGV2ZW50IGdlbmVyYXRlZCBm
cm9tIGNyeXBvZGV2IHN1YnN5c3RlbSAqLw0KPiAgKyNkZWZpbmUgUlRFX0VWRU5UX1RZUEVfVElN
RVJERVYJCTB4Mg0KPiAgKy8qKjwgVGhlIGV2ZW50IGdlbmVyYXRlZCBmcm9tIHRpbWVyZGV2IHN1
YnN5c3RlbSAqLw0KPiAgKyNkZWZpbmUgUlRFX0VWRU5UX1RZUEVfQ09SRQkJMHgzDQo+ICArLyoq
PCBUaGUgZXZlbnQgZ2VuZXJhdGVkIGZyb20gY29yZS4NCj4gICsgKiBBcHBsaWNhdGlvbiBtYXkg
dXNlICpzdWJfZXZlbnRfdHlwZSogdG8gZnVydGhlciBjbGFzc2lmeSB0aGUgZXZlbnQNCj4gICsg
Ki8NCj4gICsjZGVmaW5lIFJURV9FVkVOVF9UWVBFX01BWAkJMHgxMA0KPiAgKy8qKjwgTWF4aW11
bSBudW1iZXIgb2YgZXZlbnQgdHlwZXMgKi8NCj4gICsNCj4gICsvKiBFdmVudCBwcmlvcml0eSAq
Lw0KPiAgKyNkZWZpbmUgUlRFX0VWRU5UX1BSSU9SSVRZX0hJR0hFU1QgICAgICAwDQo+ICArLyoq
PCBIaWdoZXN0IGV2ZW50IHByaW9yaXR5ICovDQo+ICArI2RlZmluZSBSVEVfRVZFTlRfUFJJT1JJ
VFlfTk9STUFMICAgICAgIDEyOA0KPiAgKy8qKjwgTm9ybWFsIGV2ZW50IHByaW9yaXR5ICovDQo+
ICArI2RlZmluZSBSVEVfRVZFTlRfUFJJT1JJVFlfTE9XRVNUICAgICAgIDI1NQ0KPiAgKy8qKjwg
TG93ZXN0IGV2ZW50IHByaW9yaXR5ICovDQo+ICArDQo+ICArLyoqDQo+ICArICogVGhlIGdlbmVy
aWMgKnJ0ZV9ldmVudCogc3RydWN0dXJlIHRvIGhvbGQgdGhlIGV2ZW50IGF0dHJpYnV0ZXMNCj4g
ICsgKiBmb3IgZGVxdWV1ZSBhbmQgZW5xdWV1ZSBvcGVyYXRpb24NCj4gICsgKi8NCj4gICtzdHJ1
Y3QgcnRlX2V2ZW50IHsNCj4gICsJLyoqIFdPUkQwICovDQo+ICArCVJURV9TVERfQzExDQo+ICAr
ICAgICAgICB1bmlvbiB7DQo+ICArCQl1aW50NjRfdCB1NjQ7DQo+ICArCQkvKiogRXZlbnQgYXR0
cmlidXRlcyBmb3IgZGVxdWV1ZSBvciBlbnF1ZXVlIG9wZXJhdGlvbiAqLw0KPiAgKwkJc3RydWN0
IHsNCj4gICsJCQl1aW50MzJfdCBmbG93X2lkOjI0Ow0KPiAgKwkJCS8qKjwgVGFyZ2V0ZWQgZmxv
dyBpZGVudGlmaWVyIGZvciB0aGUgZW5xdWV1ZSBhbmQNCj4gICsJCQkgKiBkZXF1ZXVlIG9wZXJh
dGlvbi4NCj4gICsJCQkgKiBUaGUgdmFsdWUgbXVzdCBiZSBpbiB0aGUgcmFuZ2Ugb2YNCj4gICsJ
CQkgKiBbMSAtIG1heF9ldmVudF9xdWV1ZV9mbG93cyldIHdoaWNoDQo+ICArCQkJICogcHJldmlv
dXNseSBzdXBwbGllZCB0byBydGVfZXZlbnRfZGV2X2NvbmZpZ3VyZSgpLg0KPiAgKwkJCSAqLw0K
PiAgKwkJCXVpbnQzMl90IHF1ZXVlX2lkOjg7DQo+ICArCQkJLyoqPCBUYXJnZXRlZCBldmVudCBx
dWV1ZSBpZGVudGlmaWVyIGZvciB0aGUgZW5xdWV1ZQ0KPiAgb3INCj4gICsJCQkgKiBkZXF1ZXVl
IG9wZXJhdGlvbi4NCj4gICsJCQkgKiBUaGUgdmFsdWUgbXVzdCBiZSBpbiB0aGUgcmFuZ2Ugb2YN
Cj4gICsJCQkgKiBbMCwgbmJfZXZlbnRfcXVldWVzIC0gMV0gd2hpY2ggcHJldmlvdXNseSBzdXBw
bGllZA0KPiAgdG8NCj4gICsJCQkgKiBydGVfZXZlbnRfZGV2X2NvbmZpZ3VyZSgpLg0KPiAgKwkJ
CSAqLw0KPiAgKwkJCXVpbnQ4X3QgIHNjaGVkX3R5cGU7DQo+ICArCQkJLyoqPCBTY2hlZHVsZXIg
c3luY2hyb25pemF0aW9uIHR5cGUNCj4gIChSVEVfU0NIRURfVFlQRV8pDQo+ICArCQkJICogYXNz
b2NpYXRlZCB3aXRoIGZsb3cgaWQgb24gYSBnaXZlbiBldmVudCBxdWV1ZQ0KPiAgKwkJCSAqIGZv
ciB0aGUgZW5xdWV1ZSBhbmQgZGVxdWV1ZSBvcGVyYXRpb24uDQo+ICArCQkJICovDQo+ICArCQkJ
dWludDhfdCAgZXZlbnRfdHlwZTsNCj4gICsJCQkvKio8IEV2ZW50IHR5cGUgdG8gY2xhc3NpZnkg
dGhlIGV2ZW50IHNvdXJjZS4gKi8NCj4gICsJCQl1aW50OF90ICBzdWJfZXZlbnRfdHlwZTsNCj4g
ICsJCQkvKio8IFN1Yi1ldmVudCB0eXBlcyBiYXNlZCBvbiB0aGUgZXZlbnQgc291cmNlLg0KPiAg
KwkJCSAqIFxzZWUgUlRFX0VWRU5UX1RZUEVfQ09SRQ0KPiAgKwkJCSAqLw0KPiAgKwkJCXVpbnQ4
X3QgIHByaW9yaXR5Ow0KPiAgKwkJCS8qKjwgRXZlbnQgcHJpb3JpdHkgcmVsYXRpdmUgdG8gb3Ro
ZXIgZXZlbnRzIGluIHRoZQ0KPiAgKwkJCSAqIGV2ZW50IHF1ZXVlLiBUaGUgcmVxdWVzdGVkIHBy
aW9yaXR5IHNob3VsZCBpbiB0aGUNCj4gICsJCQkgKiByYW5nZSBvZiAgW1JURV9FVkVOVF9QUklP
UklUWV9ISUdIRVNULA0KPiAgKwkJCSAqIFJURV9FVkVOVF9QUklPUklUWV9MT1dFU1RdLg0KPiAg
KwkJCSAqIFRoZSBpbXBsZW1lbnRhdGlvbiBzaGFsbCBub3JtYWxpemUgdGhlIHJlcXVlc3RlZA0K
PiAgKwkJCSAqIHByaW9yaXR5IHRvIHN1cHBvcnRlZCBwcmlvcml0eSB2YWx1ZS4NCj4gICsJCQkg
KiBWYWxpZCB3aGVuIHRoZSBkZXZpY2UgaGFzDQo+ICBSVEVfRVZFTlRfREVWX0NBUF9FVkVOVF9R
T1MNCj4gICsJCQkgKiBjYXBhYmlsaXR5Lg0KPiAgKwkJCSAqLw0KPiAgKwkJfTsNCj4gICsJfTsN
Cj4gICsJLyoqIFdPUkQxICovDQo+ICArCVJURV9TVERfQzExDQo+ICArCXVuaW9uIHsNCj4gICsJ
CXVpbnRwdHJfdCBldmVudDsNCj4gICsJCS8qKjwgT3BhcXVlIGV2ZW50IHBvaW50ZXIgKi8NCj4g
ICsJCXN0cnVjdCBydGVfbWJ1ZiAqbWJ1ZjsNCj4gICsJCS8qKjwgbWJ1ZiBwb2ludGVyIGlmIGRl
cXVldWVkIGV2ZW50IGlzIGFzc29jaWF0ZWQgd2l0aCBtYnVmDQo+ICAqLw0KPiAgKwl9Ow0KPiAg
K307DQo+ICArDQo+ICArLyoqDQo+ICArICogU2NoZWR1bGUgb25lIG9yIG1vcmUgZXZlbnRzIGlu
IHRoZSBldmVudCBkZXYuDQo+ICArICoNCj4gICsgKiBBbiBldmVudCBkZXYgaW1wbGVtZW50YXRp
b24gbWF5IGRlZmluZSB0aGlzIGlzIGEgTk9PUCwgZm9yIGluc3RhbmNlIGlmDQo+ICArICogdGhl
IGV2ZW50IGRldiBwZXJmb3JtcyBpdHMgc2NoZWR1bGluZyBpbiBoYXJkd2FyZS4NCj4gICsgKg0K
PiAgKyAqIEBwYXJhbSBkZXZfaWQNCj4gICsgKiAgIFRoZSBpZGVudGlmaWVyIG9mIHRoZSBkZXZp
Y2UuDQo+ICArICovDQo+ICArZXh0ZXJuIHZvaWQNCj4gICtydGVfZXZlbnRfc2NoZWR1bGUodWlu
dDhfdCBkZXZfaWQpOw0KDQpPbmUgaWRlYTogSGF2ZSB0aGUgZnVuY3Rpb24gcmV0dXJuIHRoZSBu
dW1iZXIgb2Ygc2NoZWR1bGVkIHBhY2tldHMgKG9yIDAgZm9yIGltcGxlbWVudGF0aW9ucyB0aGF0
IGRvIHNjaGVkdWxpbmcgaW4gaGFyZHdhcmUpLiBUaGlzIGNvdWxkIGJlIGEgaGVscGZ1bCBkaWFn
bm9zdGljIGZvciB0aGUgc29mdHdhcmUgc2NoZWR1bGVyLg0KDQo+ICArDQo+ICArLyoqDQo+ICAr
ICogRW5xdWV1ZSB0aGUgZXZlbnQgb2JqZWN0IHN1cHBsaWVkIGluIHRoZSAqcnRlX2V2ZW50KiBz
dHJ1Y3R1cmUgb24gYW4NCj4gICsgKiBldmVudCBkZXZpY2UgZGVzaWduYXRlZCBieSBpdHMgKmRl
dl9pZCogdGhyb3VnaCB0aGUgZXZlbnQgcG9ydCBzcGVjaWZpZWQgYnkNCj4gICsgKiAqcG9ydF9p
ZCouIFRoZSBldmVudCBvYmplY3Qgc3BlY2lmaWVzIHRoZSBldmVudCBxdWV1ZSBvbiB3aGljaCB0
aGlzDQo+ICArICogZXZlbnQgd2lsbCBiZSBlbnF1ZXVlZC4NCj4gICsgKg0KPiAgKyAqIEBwYXJh
bSBkZXZfaWQNCj4gICsgKiAgIEV2ZW50IGRldmljZSBpZGVudGlmaWVyLg0KPiAgKyAqIEBwYXJh
bSBwb3J0X2lkDQo+ICArICogICBUaGUgaWRlbnRpZmllciBvZiB0aGUgZXZlbnQgcG9ydC4NCj4g
ICsgKiBAcGFyYW0gZXYNCj4gICsgKiAgIFBvaW50ZXIgdG8gc3RydWN0IHJ0ZV9ldmVudA0KPiAg
KyAqIEBwYXJhbSBwaW5fZXZlbnQNCj4gICsgKiAgIEhpbnQgdG8gdGhlIHNjaGVkdWxlciB0aGF0
IHRoZSBldmVudCBjYW4gYmUgcGlubmVkIHRvIHRoZSBzYW1lIHBvcnQgZm9yDQo+ICArICogICB0
aGUgbmV4dCBzY2hlZHVsaW5nIHN0YWdlLiBGb3IgaW1wbGVtZW50YXRpb25zIHRoYXQgc3VwcG9y
dCBpdCwgdGhpcw0KPiAgKyAqICAgYWxsb3dzIHRoZSBzYW1lIGNvcmUgdG8gcHJvY2VzcyB0aGUg
bmV4dCBzdGFnZSBpbiB0aGUgcGlwZWxpbmUgZm9yIGEgZ2l2ZW4NCj4gICsgKiAgIGV2ZW50LCB0
YWtpbmcgYWR2YW50YWdlIG9mIGNhY2hlIGxvY2FsaXR5LiBUaGUgcGlubmVkIGV2ZW50IHdpbGwg
YmUNCj4gICsgKiAgIHJlY2VpdmVkIHRocm91Z2ggcnRlX2V2ZW50X2RlcXVldWUoKS4gVGhpcyBp
cyBhIGhpbnQgYW5kIHRoZSBldmVudCBpcw0KPiAgKyAqICAgbm90IGd1YXJhbnRlZWQgdG8gYmUg
cGlubmVkIHRvIHRoZSBwb3J0LiBUaGlzIGhpbnQgaXMgdmFsaWQgb25seSB3aGVuIHRoZQ0KPiAg
KyAqICAgZXZlbnQgaXMgZGVxdWV1ZWQgd2l0aCBydGVfZXZlbnRfZGVxdWV1ZSgpIGZvbGxvd2Vk
IGJ5DQo+ICBydGVfZXZlbnRfZW5xdWV1ZSgpLg0KPiAgKyAqDQo+ICArICogQHJldHVybg0KPiAg
KyAqICAtIDAgb24gc3VjY2Vzcw0KPiAgKyAqICAtIDwwIG9uIGZhaWx1cmUuIEZhaWx1cmUgY2Fu
IG9jY3VyIGlmIHRoZSBldmVudCBwb3J0J3Mgb3V0cHV0IHF1ZXVlIGlzDQo+ICArICogICAgIGJh
Y2twcmVzc3VyZWQsIGZvciBpbnN0YW5jZS4NCj4gICsgKi8NCj4gICtleHRlcm4gaW50DQo+ICAr
cnRlX2V2ZW50X2VucXVldWUodWludDhfdCBkZXZfaWQsIHVpbnQ4X3QgcG9ydF9pZCwgc3RydWN0
IHJ0ZV9ldmVudCAqZXYsDQo+ICArCQkgIGJvb2wgcGluX2V2ZW50KTsNCj4gICsNCj4gICsvKioN
Cj4gICsgKiBFbnF1ZXVlIGEgYnVyc3Qgb2YgZXZlbnRzIG9iamVjdHMgc3VwcGxpZWQgaW4gKnJ0
ZV9ldmVudCogc3RydWN0dXJlIG9uIGFuDQo+ICArICogZXZlbnQgZGV2aWNlIGRlc2lnbmF0ZWQg
YnkgaXRzICpkZXZfaWQqIHRocm91Z2ggdGhlIGV2ZW50IHBvcnQgc3BlY2lmaWVkIGJ5DQo+ICAr
ICogKnBvcnRfaWQqLiBFYWNoIGV2ZW50IG9iamVjdCBzcGVjaWZpZXMgdGhlIGV2ZW50IHF1ZXVl
IG9uIHdoaWNoIGl0DQo+ICArICogd2lsbCBiZSBlbnF1ZXVlZC4NCj4gICsgKg0KPiAgKyAqIFRo
ZSBydGVfZXZlbnRfZW5xdWV1ZV9idXJzdCgpIGZ1bmN0aW9uIGlzIGludm9rZWQgdG8gZW5xdWV1
ZQ0KPiAgKyAqIG11bHRpcGxlIGV2ZW50IG9iamVjdHMuDQo+ICArICogSXQgaXMgdGhlIGJ1cnN0
IHZhcmlhbnQgb2YgcnRlX2V2ZW50X2VucXVldWUoKSBmdW5jdGlvbi4NCj4gICsgKg0KPiAgKyAq
IFRoZSAqbnVtKiBwYXJhbWV0ZXIgaXMgdGhlIG51bWJlciBvZiBldmVudCBvYmplY3RzIHRvIGVu
cXVldWUgd2hpY2ggYXJlDQo+ICArICogc3VwcGxpZWQgaW4gdGhlICpldiogYXJyYXkgb2YgKnJ0
ZV9ldmVudCogc3RydWN0dXJlLg0KPiAgKyAqDQo+ICArICogVGhlIHJ0ZV9ldmVudF9lbnF1ZXVl
X2J1cnN0KCkgZnVuY3Rpb24gcmV0dXJucyB0aGUgbnVtYmVyIG9mDQo+ICArICogZXZlbnRzIG9i
amVjdHMgaXQgYWN0dWFsbHkgZW5xdWV1ZWQuIEEgcmV0dXJuIHZhbHVlIGVxdWFsIHRvICpudW0q
IG1lYW5zDQo+ICArICogdGhhdCBhbGwgZXZlbnQgb2JqZWN0cyBoYXZlIGJlZW4gZW5xdWV1ZWQu
DQo+ICArICoNCj4gICsgKiBAcGFyYW0gZGV2X2lkDQo+ICArICogICBUaGUgaWRlbnRpZmllciBv
ZiB0aGUgZGV2aWNlLg0KPiAgKyAqIEBwYXJhbSBwb3J0X2lkDQo+ICArICogICBUaGUgaWRlbnRp
ZmllciBvZiB0aGUgZXZlbnQgcG9ydC4NCj4gICsgKiBAcGFyYW0gZXYNCj4gICsgKiAgIEFuIGFy
cmF5IG9mICpudW0qIHBvaW50ZXJzIHRvICpydGVfZXZlbnQqIHN0cnVjdHVyZQ0KPiAgKyAqICAg
d2hpY2ggY29udGFpbiB0aGUgZXZlbnQgb2JqZWN0IGVucXVldWUgb3BlcmF0aW9ucyB0byBiZSBw
cm9jZXNzZWQuDQo+ICArICogQHBhcmFtIG51bQ0KPiAgKyAqICAgVGhlIG51bWJlciBvZiBldmVu
dCBvYmplY3RzIHRvIGVucXVldWUsIHR5cGljYWxseSBudW1iZXIgb2YNCj4gICsgKiAgIHJ0ZV9l
dmVudF9wb3J0X2VucXVldWVfZGVwdGgoKSBhdmFpbGFibGUgZm9yIHRoaXMgcG9ydC4NCj4gICsg
KiBAcGFyYW0gcGluX2V2ZW50DQo+ICArICogICBIaW50IHRvIHRoZSBzY2hlZHVsZXIgdGhhdCB0
aGUgZXZlbnQgY2FuIGJlIHBpbm5lZCB0byB0aGUgc2FtZSBwb3J0IGZvcg0KPiAgKyAqICAgdGhl
IG5leHQgc2NoZWR1bGluZyBzdGFnZS4gRm9yIGltcGxlbWVudGF0aW9ucyB0aGF0IHN1cHBvcnQg
aXQsIHRoaXMNCj4gICsgKiAgIGFsbG93cyB0aGUgc2FtZSBjb3JlIHRvIHByb2Nlc3MgdGhlIG5l
eHQgc3RhZ2UgaW4gdGhlIHBpcGVsaW5lIGZvciBhIGdpdmVuDQo+ICArICogICBldmVudCwgdGFr
aW5nIGFkdmFudGFnZSBvZiBjYWNoZSBsb2NhbGl0eS4gVGhlIHBpbm5lZCBldmVudCB3aWxsIGJl
DQo+ICArICogICByZWNlaXZlZCB0aHJvdWdoIHJ0ZV9ldmVudF9kZXF1ZXVlKCkuIFRoaXMgaXMg
YSBoaW50IGFuZCB0aGUgZXZlbnQgaXMNCj4gICsgKiAgIG5vdCBndWFyYW50ZWVkIHRvIGJlIHBp
bm5lZCB0byB0aGUgcG9ydC4gVGhpcyBoaW50IGlzIHZhbGlkIG9ubHkgd2hlbiB0aGUNCj4gICsg
KiAgIGV2ZW50IGlzIGRlcXVldWVkIHdpdGggcnRlX2V2ZW50X2RlcXVldWUoKSBmb2xsb3dlZCBi
eQ0KPiAgcnRlX2V2ZW50X2VucXVldWUoKS4NCj4gICsgKg0KPiAgKyAqIEByZXR1cm4NCj4gICsg
KiAgIFRoZSBudW1iZXIgb2YgZXZlbnQgb2JqZWN0cyBhY3R1YWxseSBlbnF1ZXVlZCBvbiB0aGUg
ZXZlbnQgZGV2aWNlLiBUaGUNCj4gICsgKiAgIHJldHVybiB2YWx1ZSBjYW4gYmUgbGVzcyB0aGFu
IHRoZSB2YWx1ZSBvZiB0aGUgKm51bSogcGFyYW1ldGVyIHdoZW4gdGhlDQo+ICArICogICBldmVu
dCBkZXZpY2VzIHF1ZXVlIGlzIGZ1bGwgb3IgaWYgaW52YWxpZCBwYXJhbWV0ZXJzIGFyZSBzcGVj
aWZpZWQgaW4gYQ0KPiAgKyAqICAgKnJ0ZV9ldmVudCouIElmIHJldHVybiB2YWx1ZSBpcyBsZXNz
IHRoYW4gKm51bSosIHRoZSByZW1haW5pbmcgZXZlbnRzIGF0DQo+ICArICogICB0aGUgZW5kIG9m
IGV2W10gYXJlIG5vdCBjb25zdW1lZCwgYW5kIHRoZSBjYWxsZXIgaGFzIHRvIHRha2UgY2FyZSBv
ZiB0aGVtLg0KPiAgKyAqDQo+ICArICogXHNlZSBydGVfZXZlbnRfZW5xdWV1ZSgpLCBydGVfZXZl
bnRfcG9ydF9lbnF1ZXVlX2RlcHRoKCkNCj4gICsgKi8NCj4gICtleHRlcm4gaW50DQo+ICArcnRl
X2V2ZW50X2VucXVldWVfYnVyc3QodWludDhfdCBkZXZfaWQsIHVpbnQ4X3QgcG9ydF9pZCwNCj4g
ICsJCQlzdHJ1Y3QgcnRlX2V2ZW50IGV2W10sIGludCBudW0sIGJvb2wgcGluX2V2ZW50KTsNCj4g
ICsNCj4gICsvKioNCj4gICsgKiBDb252ZXJ0cyBuYW5vc2Vjb25kcyB0byAqd2FpdCogdmFsdWUg
Zm9yIHJ0ZV9ldmVudF9kZXF1ZXVlKCkNCj4gICsgKg0KPiAgKyAqIElmIHRoZSBkZXZpY2UgaXMg
Y29uZmlndXJlZCB3aXRoDQo+ICBSVEVfRVZFTlRfREVWX0NGR19QRVJfREVRVUVVRV9XQUlUIGZs
YWcgdGhlbg0KPiAgKyAqIGFwcGxpY2F0aW9uIGNhbiB1c2UgdGhpcyBmdW5jdGlvbiB0byBjb252
ZXJ0IHdhaXQgdmFsdWUgaW4gbmFub3NlY29uZHMgdG8NCj4gICsgKiBpbXBsZW1lbnRhdGlvbnMg
c3BlY2lmaWMgd2FpdCB2YWx1ZSBzdXBwbGllZCBpbiBydGVfZXZlbnRfZGVxdWV1ZSgpDQo+ICAr
ICoNCj4gICsgKiBAcGFyYW0gZGV2X2lkDQo+ICArICogICBUaGUgaWRlbnRpZmllciBvZiB0aGUg
ZGV2aWNlLg0KPiAgKyAqIEBwYXJhbSBucw0KPiAgKyAqICAgV2FpdCB0aW1lIGluIG5hbm9zZWNv
bmQNCj4gICsgKg0KPiAgKyAqIEByZXR1cm4NCj4gICsgKiBWYWx1ZSBmb3IgdGhlICp3YWl0KiBw
YXJhbWV0ZXIgaW4gcnRlX2V2ZW50X2RlcXVldWUoKSBmdW5jdGlvbg0KPiAgKyAqDQo+ICArICog
XHNlZSBydGVfZXZlbnRfZGVxdWV1ZSgpLCBSVEVfRVZFTlRfREVWX0NGR19QRVJfREVRVUVVRV9X
QUlUDQo+ICArICogXHNlZSBydGVfZXZlbnRfZGV2X2NvbmZpZ3VyZSgpDQo+ICArICoNCj4gICsg
Ki8NCj4gICtleHRlcm4gdWludDY0X3QNCj4gICtydGVfZXZlbnRfZGVxdWV1ZV93YWl0X3RpbWUo
dWludDhfdCBkZXZfaWQsIHVpbnQ2NF90IG5zKTsNCj4gICsNCj4gICsvKioNCj4gICsgKiBEZXF1
ZXVlIGFuIGV2ZW50IGZyb20gdGhlIGV2ZW50IHBvcnQgc3BlY2lmaWVkIGJ5ICpwb3J0X2lkKiBv
biB0aGUNCj4gICsgKiBldmVudCBkZXZpY2UgZGVzaWduYXRlZCBieSBpdHMgKmRldl9pZCouDQo+
ICArICoNCj4gICsgKiBydGVfZXZlbnRfZGVxdWV1ZSgpIGRvZXMgbm90IGRpY3RhdGUgdGhlIHNw
ZWNpZmljcyBvZiBzY2hlZHVsaW5nIGFsZ29yaXRobQ0KPiAgYXMNCj4gICsgKiBlYWNoIGV2ZW50
ZGV2IGRyaXZlciBtYXkgaGF2ZSBkaWZmZXJlbnQgY3JpdGVyaWEgdG8gc2NoZWR1bGUgYW4gZXZl
bnQuDQo+ICArICogSG93ZXZlciwgaW4gZ2VuZXJhbCwgZnJvbSBhbiBhcHBsaWNhdGlvbiBwZXJz
cGVjdGl2ZSBzY2hlZHVsZXIgbWF5IHVzZSB0aGUNCj4gICsgKiBmb2xsb3dpbmcgc2NoZW1lIHRv
IGRpc3BhdGNoIGFuIGV2ZW50IHRvIHRoZSBwb3J0Lg0KPiAgKyAqDQo+ICArICogMSkgU2VsZWN0
aW9uIG9mIGV2ZW50IHF1ZXVlIGJhc2VkIG9uDQo+ICArICogICBhKSBUaGUgbGlzdCBvZiBldmVu
dCBxdWV1ZXMgYXJlIGxpbmtlZCB0byB0aGUgZXZlbnQgcG9ydC4NCj4gICsgKiAgIGIpIElmIHRo
ZSBkZXZpY2UgaGFzIFJURV9FVkVOVF9ERVZfQ0FQX1FVRVVFX1FPUyBjYXBhYmlsaXR5IHRoZW4N
Cj4gIGV2ZW50DQo+ICArICogICBxdWV1ZSBzZWxlY3Rpb24gZnJvbSBsaXN0IGlzIGJhc2VkIG9u
IGV2ZW50IHF1ZXVlIHByaW9yaXR5IHJlbGF0aXZlIHRvDQo+ICArICogICBvdGhlciBldmVudCBx
dWV1ZSBzdXBwbGllZCBhcyAqcHJpb3JpdHkqIGluIHJ0ZV9ldmVudF9xdWV1ZV9zZXR1cCgpDQo+
ICArICogICBjKSBJZiB0aGUgZGV2aWNlIGhhcyBSVEVfRVZFTlRfREVWX0NBUF9FVkVOVF9RT1Mg
Y2FwYWJpbGl0eSB0aGVuDQo+ICBldmVudA0KPiAgKyAqICAgcXVldWUgc2VsZWN0aW9uIGZyb20g
dGhlIGxpc3QgaXMgYmFzZWQgb24gZXZlbnQgcHJpb3JpdHkgc3VwcGxpZWQgYXMNCj4gICsgKiAg
ICpwcmlvcml0eSogaW4gcnRlX2V2ZW50X2VucXVldWVfYnVyc3QoKQ0KPiAgKyAqIDIpIFNlbGVj
dGlvbiBvZiBldmVudA0KPiAgKyAqICAgYSkgVGhlIG51bWJlciBvZiBmbG93cyBhdmFpbGFibGUg
aW4gc2VsZWN0ZWQgZXZlbnQgcXVldWUuDQo+ICArICogICBiKSBTY2hlZHVsZSB0eXBlIG1ldGhv
ZCBhc3NvY2lhdGVkIHdpdGggdGhlIGV2ZW50DQo+ICArICoNCj4gICsgKiBPbiBhIHN1Y2Nlc3Nm
dWwgZGVxdWV1ZSwgdGhlIGV2ZW50IHBvcnQgaG9sZHMgZmxvdyBpZCBhbmQgc2NoZWR1bGUgdHlw
ZQ0KPiAgKyAqIGNvbnRleHQgYXNzb2NpYXRlZCB3aXRoIHRoZSBkaXNwYXRjaGVkIGV2ZW50LiBU
aGUgY29udGV4dCBpcyBhdXRvbWF0aWNhbGx5DQo+ICArICogcmVsZWFzZWQgaW4gdGhlIG5leHQg
cnRlX2V2ZW50X2RlcXVldWUoKSBpbnZvY2F0aW9uLCBvciBydGVfZXZlbnRfcmVsZWFzZSgpDQo+
ICArICogY2FuIGJlIGNhbGxlZCB0byByZWxlYXNlIHRoZSBjb250ZXh0IGVhcmx5Lg0KPiAgKyAq
DQo+ICArICogQHBhcmFtIGRldl9pZA0KPiAgKyAqICAgVGhlIGlkZW50aWZpZXIgb2YgdGhlIGRl
dmljZS4NCj4gICsgKiBAcGFyYW0gcG9ydF9pZA0KPiAgKyAqICAgVGhlIGlkZW50aWZpZXIgb2Yg
dGhlIGV2ZW50IHBvcnQuDQo+ICArICogQHBhcmFtW291dF0gZXYNCj4gICsgKiAgIFBvaW50ZXIg
dG8gc3RydWN0IHJ0ZV9ldmVudC4gT24gc3VjY2Vzc2Z1bCBldmVudCBkaXNwYXRjaCwgaW1wbGVt
ZW50YXRpb24NCj4gICsgKiAgIHVwZGF0ZXMgdGhlIGV2ZW50IGF0dHJpYnV0ZXMuDQo+ICArICog
QHBhcmFtIHdhaXQNCj4gICsgKiAgIDAgLSBuby13YWl0LCByZXR1cm5zIGltbWVkaWF0ZWx5IGlm
IHRoZXJlIGlzIG5vIGV2ZW50Lg0KPiAgKyAqICAgPjAgLSB3YWl0IGZvciB0aGUgZXZlbnQsIGlm
IHRoZSBkZXZpY2UgaXMgY29uZmlndXJlZCB3aXRoDQo+ICArICogICBSVEVfRVZFTlRfREVWX0NG
R19QRVJfREVRVUVVRV9XQUlUIHRoZW4gdGhpcyBmdW5jdGlvbiB3aWxsIHdhaXQNCj4gIHVudGls
DQo+ICArICogICB0aGUgZXZlbnQgYXZhaWxhYmxlIG9yICp3YWl0KiB0aW1lLg0KPiAgKyAqICAg
aWYgdGhlIGRldmljZSBpcyBub3QgY29uZmlndXJlZCB3aXRoDQo+ICBSVEVfRVZFTlRfREVWX0NG
R19QRVJfREVRVUVVRV9XQUlUDQo+ICArICogICB0aGVuIHRoaXMgZnVuY3Rpb24gd2lsbCB3YWl0
IHVudGlsIHRoZSBldmVudCBhdmFpbGFibGUgb3IgKmRlcXVldWVfd2FpdF9ucyoNCj4gICsgKiAg
IG5zIHdoaWNoIHdhcyBwcmV2aW91c2x5IHN1cHBsaWVkIHRvIHJ0ZV9ldmVudF9kZXZfY29uZmln
dXJlKCkNCj4gICsgKg0KPiAgKyAqIEByZXR1cm4NCj4gICsgKiBXaGVuIHRydWUsIGEgdmFsaWQg
ZXZlbnQgaGFzIGJlZW4gZGlzcGF0Y2hlZCBieSB0aGUgc2NoZWR1bGVyLg0KPiAgKyAqDQo+ICAr
ICovDQo+ICArZXh0ZXJuIGJvb2wNCj4gICtydGVfZXZlbnRfZGVxdWV1ZSh1aW50OF90IGRldl9p
ZCwgdWludDhfdCBwb3J0X2lkLA0KPiAgKwkJICBzdHJ1Y3QgcnRlX2V2ZW50ICpldiwgdWludDY0
X3Qgd2FpdCk7DQo+ICArDQo+ICArLyoqDQo+ICArICogRGVxdWV1ZSBhIGJ1cnN0IG9mIGV2ZW50
cyBvYmplY3RzIGZyb20gdGhlIGV2ZW50IHBvcnQgZGVzaWduYXRlZCBieSBpdHMNCj4gICsgKiAq
ZXZlbnRfcG9ydF9pZCosIG9uIGFuIGV2ZW50IGRldmljZSBkZXNpZ25hdGVkIGJ5IGl0cyAqZGV2
X2lkKi4NCj4gICsgKg0KPiAgKyAqIFRoZSBydGVfZXZlbnRfZGVxdWV1ZV9idXJzdCgpIGZ1bmN0
aW9uIGlzIGludm9rZWQgdG8gZGVxdWV1ZQ0KPiAgKyAqIG11bHRpcGxlIGV2ZW50IG9iamVjdHMu
IEl0IGlzIHRoZSBidXJzdCB2YXJpYW50IG9mIHJ0ZV9ldmVudF9kZXF1ZXVlKCkNCj4gICsgKiBm
dW5jdGlvbi4NCj4gICsgKg0KPiAgKyAqIFRoZSAqbnVtKiBwYXJhbWV0ZXIgaXMgdGhlIG1heGlt
dW0gbnVtYmVyIG9mIGV2ZW50IG9iamVjdHMgdG8gZGVxdWV1ZQ0KPiAgd2hpY2gNCj4gICsgKiBh
cmUgcmV0dXJuZWQgaW4gdGhlICpldiogYXJyYXkgb2YgKnJ0ZV9ldmVudCogc3RydWN0dXJlLg0K
PiAgKyAqDQo+ICArICogVGhlIHJ0ZV9ldmVudF9kZXF1ZXVlX2J1cnN0KCkgZnVuY3Rpb24gcmV0
dXJucyB0aGUgbnVtYmVyIG9mDQo+ICArICogZXZlbnRzIG9iamVjdHMgaXQgYWN0dWFsbHkgZGVx
dWV1ZWQuIEEgcmV0dXJuIHZhbHVlIGVxdWFsIHRvDQo+ICArICogKm51bSogbWVhbnMgdGhhdCBh
bGwgZXZlbnQgb2JqZWN0cyBoYXZlIGJlZW4gZGVxdWV1ZWQuDQo+ICArICoNCj4gICsgKiBUaGUg
bnVtYmVyIG9mIGV2ZW50cyBkZXF1ZXVlZCBpcyB0aGUgbnVtYmVyIG9mIHNjaGVkdWxlciBjb250
ZXh0cyBoZWxkDQo+ICBieQ0KPiAgKyAqIHRoaXMgcG9ydC4gVGhlc2UgY29udGV4dHMgYXJlIGF1
dG9tYXRpY2FsbHkgcmVsZWFzZWQgaW4gdGhlIG5leHQNCj4gICsgKiBydGVfZXZlbnRfZGVxdWV1
ZSgpIGludm9jYXRpb24sIG9yIHJ0ZV9ldmVudF9yZWxlYXNlKCkgY2FuIGJlIGNhbGxlZCBvbmNl
DQo+ICArICogcGVyIGV2ZW50IHRvIHJlbGVhc2UgdGhlIGNvbnRleHRzIGVhcmx5Lg0KPiAgKyAq
DQo+ICArICogQHBhcmFtIGRldl9pZA0KPiAgKyAqICAgVGhlIGlkZW50aWZpZXIgb2YgdGhlIGRl
dmljZS4NCj4gICsgKiBAcGFyYW0gcG9ydF9pZA0KPiAgKyAqICAgVGhlIGlkZW50aWZpZXIgb2Yg
dGhlIGV2ZW50IHBvcnQuDQo+ICArICogQHBhcmFtW291dF0gZXYNCj4gICsgKiAgIEFuIGFycmF5
IG9mICpudW0qIHBvaW50ZXJzIHRvICpydGVfZXZlbnQqIHN0cnVjdHVyZSB3aGljaCBpcyBwb3B1
bGF0ZWQNCj4gICsgKiAgIHdpdGggdGhlIGRlcXVldWVkIGV2ZW50IG9iamVjdHMuDQo+ICArICog
QHBhcmFtIG51bQ0KPiAgKyAqICAgVGhlIG1heGltdW0gbnVtYmVyIG9mIGV2ZW50IG9iamVjdHMg
dG8gZGVxdWV1ZSwgdHlwaWNhbGx5IG51bWJlciBvZg0KPiAgKyAqICAgcnRlX2V2ZW50X3BvcnRf
ZGVxdWV1ZV9kZXB0aCgpIGF2YWlsYWJsZSBmb3IgdGhpcyBwb3J0Lg0KPiAgKyAqIEBwYXJhbSB3
YWl0DQo+ICArICogICAwIC0gbm8td2FpdCwgcmV0dXJucyBpbW1lZGlhdGVseSBpZiB0aGVyZSBp
cyBubyBldmVudC4NCj4gICsgKiAgID4wIC0gd2FpdCBmb3IgdGhlIGV2ZW50LCBpZiB0aGUgZGV2
aWNlIGlzIGNvbmZpZ3VyZWQgd2l0aA0KPiAgKyAqICAgUlRFX0VWRU5UX0RFVl9DRkdfUEVSX0RF
UVVFVUVfV0FJVCB0aGVuIHRoaXMgZnVuY3Rpb24gd2lsbCB3YWl0DQo+ICB1bnRpbCB0aGUNCj4g
ICsgKiAgIGV2ZW50IGF2YWlsYWJsZSBvciAqd2FpdCogdGltZS4NCj4gICsgKiAgIGlmIHRoZSBk
ZXZpY2UgaXMgbm90IGNvbmZpZ3VyZWQgd2l0aA0KPiAgUlRFX0VWRU5UX0RFVl9DRkdfUEVSX0RF
UVVFVUVfV0FJVA0KPiAgKyAqICAgdGhlbiB0aGlzIGZ1bmN0aW9uIHdpbGwgd2FpdCB1bnRpbCB0
aGUgZXZlbnQgYXZhaWxhYmxlIG9yICpkZXF1ZXVlX3dhaXRfbnMqDQo+ICArICogICBucyB3aGlj
aCB3YXMgcHJldmlvdXNseSBzdXBwbGllZCB0byBydGVfZXZlbnRfZGV2X2NvbmZpZ3VyZSgpDQo+
ICArICoNCj4gICsgKiBAcmV0dXJuDQo+ICArICogVGhlIG51bWJlciBvZiBldmVudCBvYmplY3Rz
IGFjdHVhbGx5IGRlcXVldWVkIGZyb20gdGhlIHBvcnQuIFRoZSByZXR1cm4NCj4gICsgKiB2YWx1
ZSBjYW4gYmUgbGVzcyB0aGFuIHRoZSB2YWx1ZSBvZiB0aGUgKm51bSogcGFyYW1ldGVyIHdoZW4g
dGhlDQo+ICArICogZXZlbnQgcG9ydCdzIHF1ZXVlIGlzIG5vdCBmdWxsLg0KPiAgKyAqDQo+ICAr
ICogXHNlZSBydGVfZXZlbnRfZGVxdWV1ZSgpLCBydGVfZXZlbnRfcG9ydF9kZXF1ZXVlX2RlcHRo
KCkNCj4gICsgKi8NCj4gICtleHRlcm4gaW50DQo+ICArcnRlX2V2ZW50X2RlcXVldWVfYnVyc3Qo
dWludDhfdCBkZXZfaWQsIHVpbnQ4X3QgcG9ydF9pZCwNCj4gICsJCQlzdHJ1Y3QgcnRlX2V2ZW50
ICpldiwgaW50IG51bSwgdWludDY0X3Qgd2FpdCk7DQo+ICArDQo+ICArLyoqDQo+ICArICogUmVs
ZWFzZSB0aGUgY3VycmVudCBmbG93IGNvbnRleHQgYXNzb2NpYXRlZCB3aXRoIGEgc2NoZWR1bGUg
dHlwZSB3aGljaA0KPiAgKyAqIGRlcXVldWVkIGZyb20gYSBnaXZlbiBldmVudCBxdWV1ZSB0aG91
Z2ggdGhlIGV2ZW50IHBvcnQgZGVzaWduYXRlZCBieQ0KPiAgKyAqIGl0cyAqcG9ydF9pZCoNCj4g
ICsgKg0KPiAgKyAqIElmIGN1cnJlbnQgZmxvdydzIHNjaGVkdWxlciB0eXBlIG1ldGhvZCBpcyAq
UlRFX1NDSEVEX1RZUEVfQVRPTUlDKg0KPiAgKyAqIHRoZW4gdGhpcyBmdW5jdGlvbiBoaW50cyB0
aGUgc2NoZWR1bGVyIHRoYXQgdGhlIHVzZXIgaGFzIGNvbXBsZXRlZCBjcml0aWNhbA0KPiAgKyAq
IHNlY3Rpb24gcHJvY2Vzc2luZyBpbiB0aGUgY3VycmVudCBhdG9taWMgY29udGV4dC4NCj4gICsg
KiBUaGUgc2NoZWR1bGVyIGlzIG5vdyBhbGxvd2VkIHRvIHNjaGVkdWxlIGV2ZW50cyBmcm9tIHRo
ZSBzYW1lIGZsb3cgZnJvbQ0KPiAgKyAqIGFuIGV2ZW50IHF1ZXVlIHRvIGFub3RoZXIgcG9ydC4g
SG93ZXZlciwgdGhlIGNvbnRleHQgbWF5IGJlIHN0aWxsIGhlbGQNCj4gICsgKiB1bnRpbCB0aGUg
bmV4dCBydGVfZXZlbnRfZGVxdWV1ZSgpIG9yIHJ0ZV9ldmVudF9kZXF1ZXVlX2J1cnN0KCkgY2Fs
bCwgdGhpcw0KPiAgKyAqIGNhbGwgYWxsb3dzIGJ1dCBkb2VzIG5vdCBmb3JjZSB0aGUgc2NoZWR1
bGVyIHRvIHJlbGVhc2UgdGhlIGNvbnRleHQgZWFybHkuDQo+ICArICoNCj4gICsgKiBFYXJseSBh
dG9taWMgY29udGV4dCByZWxlYXNlIG1heSBpbmNyZWFzZSBwYXJhbGxlbGlzbSBhbmQgdGh1cyBz
eXN0ZW0NCj4gICsgKiBwZXJmb3JtYW5jZSwgYnV0IHRoZSB1c2VyIG5lZWRzIHRvIGRlc2lnbiBj
YXJlZnVsbHkgdGhlIHNwbGl0IGludG8gY3JpdGljYWwNCj4gICsgKiB2cyBub24tY3JpdGljYWwg
c2VjdGlvbnMuDQo+ICArICoNCj4gICsgKiBJZiBjdXJyZW50IGZsb3cncyBzY2hlZHVsZXIgdHlw
ZSBtZXRob2QgaXMgKlJURV9TQ0hFRF9UWVBFX09SREVSRUQqDQo+ICArICogdGhlbiB0aGlzIGZ1
bmN0aW9uIGhpbnRzIHRoZSBzY2hlZHVsZXIgdGhhdCB0aGUgdXNlciBoYXMgZG9uZSBhbGwgdGhh
dCBuZWVkDQo+ICArICogdG8gbWFpbnRhaW4gZXZlbnQgb3JkZXIgaW4gdGhlIGN1cnJlbnQgb3Jk
ZXJlZCBjb250ZXh0Lg0KPiAgKyAqIFRoZSBzY2hlZHVsZXIgaXMgYWxsb3dlZCB0byByZWxlYXNl
IHRoZSBvcmRlcmVkIGNvbnRleHQgb2YgdGhpcyBwb3J0IGFuZA0KPiAgKyAqIGF2b2lkIHJlb3Jk
ZXJpbmcgYW55IGZvbGxvd2luZyBlbnF1ZXVlcy4NCj4gICsgKg0KPiAgKyAqIEVhcmx5IG9yZGVy
ZWQgY29udGV4dCByZWxlYXNlIG1heSBpbmNyZWFzZSBwYXJhbGxlbGlzbSBhbmQgdGh1cyBzeXN0
ZW0NCj4gICsgKiBwZXJmb3JtYW5jZS4NCj4gICsgKg0KPiAgKyAqIElmIGN1cnJlbnQgZmxvdydz
IHNjaGVkdWxlciB0eXBlIG1ldGhvZCBpcyAqUlRFX1NDSEVEX1RZUEVfUEFSQUxMRUwqDQo+ICAr
ICogb3Igbm8gc2NoZWR1bGluZyBjb250ZXh0IGlzIGhlbGQgdGhlbiB0aGlzIGZ1bmN0aW9uIG1h
eSBiZSBhbiBOT09QLA0KPiAgKyAqIGRlcGVuZGluZyBvbiB0aGUgaW1wbGVtZW50YXRpb24uDQo+
ICArICoNCj4gICsgKiBJZiBtdWx0aXBsZSBldmVudHMgYXJlIGRlcXVldWVkIHdpdGggcnRlX2V2
ZW50X2RlcXVldWVfYnVyc3QoKSwNCj4gICsgKiBydGVfZXZlbnRfcmVsZWFzZSgpIHdpbGwgcmVs
ZWFzZSBlYWNoIGZsb3cgY29udGV4dCBhc3NvY2lhdGVkIHdpdGggYQ0KPiAgKyAqIHNjaGVkdWxl
IHR5cGUgb2YgYW4gZXZlbnQgdGhvdWdoICppbmRleCosIGl0IGRlbm90ZXMgdGhlIG9yZGVyIGlu
DQo+ICArICogd2hpY2ggaXQgd2FzIGRlcXVldWVkIHdpdGggcnRlX2V2ZW50X2RlcXVldWVfYnVy
c3QoKQ0KPiAgKyAqDQo+ICArICogQHBhcmFtIGRldl9pZA0KPiAgKyAqICAgVGhlIGlkZW50aWZp
ZXIgb2YgdGhlIGRldmljZS4NCj4gICsgKiBAcGFyYW0gcG9ydF9pZA0KPiAgKyAqICAgVGhlIGlk
ZW50aWZpZXIgb2YgdGhlIGV2ZW50IHBvcnQuDQo+ICArICogQHBhcmFtIGluZGV4DQo+ICArICog
ICBUaGUgaW5kZXggb2YgdGhlIGV2ZW50IHRoYXQgZGVxdWV1ZWQgd2l0aCBydGVfZXZlbnRfZGVx
dWV1ZV9idXJzdCgpDQo+ICArICogICB3aGljaCBuZWVkcyB0byByZWxlYXNlLiBUaGUgdmFsdWUg
emVybyB1c2VkIGlmIHRoZSBldmVudCBkZXF1ZXVlZCB3aXRoDQo+ICArICogICBydGVfZXZlbnRf
ZGVxdWV1ZSgpDQo+ICArICoNCj4gICsgKiAgXHNlZSBydGVfZXZlbnRfZGVxdWV1ZSgpLCBydGVf
ZXZlbnRfZGVxdWV1ZV9idXJzdCgpDQo+ICArICovDQo+ICArZXh0ZXJuIHZvaWQNCj4gICtydGVf
ZXZlbnRfcmVsZWFzZSh1aW50OF90IGRldl9pZCwgdWludDhfdCBwb3J0X2lkLCB1aW50OF90IGlu
ZGV4KTsNCj4gICsNCj4gICsjZGVmaW5lIFJURV9FVkVOVF9RVUVVRV9TRVJWSUNFX1BSSU9SSVRZ
X0hJR0hFU1QgIDANCj4gICsvKio8IEhpZ2hlc3QgZXZlbnQgcXVldWUgc2VydmljaW5nIHByaW9y
aXR5ICovDQo+ICArI2RlZmluZSBSVEVfRVZFTlRfUVVFVUVfU0VSVklDRV9QUklPUklUWV9OT1JN
QUwgICAxMjgNCj4gICsvKio8IE5vcm1hbCBldmVudCBxdWV1ZSBzZXJ2aWNpbmcgcHJpb3JpdHkg
Ki8NCj4gICsjZGVmaW5lIFJURV9FVkVOVF9RVUVVRV9TRVJWSUNFX1BSSU9SSVRZX0xPV0VTVCAg
IDI1NQ0KPiAgKy8qKjwgTG93ZXN0IGV2ZW50IHF1ZXVlIHNlcnZpY2luZyBwcmlvcml0eSAqLw0K
PiAgKw0KPiAgKy8qKiBTdHJ1Y3R1cmUgdG8gaG9sZCB0aGUgcXVldWUgdG8gcG9ydCBsaW5rIGVz
dGFibGlzaG1lbnQgYXR0cmlidXRlcyAqLw0KPiAgK3N0cnVjdCBydGVfZXZlbnRfcXVldWVfbGlu
ayB7DQo+ICArCXVpbnQ4X3QgcXVldWVfaWQ7DQo+ICArCS8qKjwgRXZlbnQgcXVldWUgaWRlbnRp
ZmllciB0byBzZWxlY3QgdGhlIHNvdXJjZSBxdWV1ZSB0byBsaW5rICovDQo+ICArCXVpbnQ4X3Qg
cHJpb3JpdHk7DQo+ICArCS8qKjwgVGhlIHByaW9yaXR5IG9mIHRoZSBldmVudCBxdWV1ZSBmb3Ig
dGhpcyBldmVudCBwb3J0Lg0KPiAgKwkgKiBUaGUgcHJpb3JpdHkgZGVmaW5lcyB0aGUgZXZlbnQg
cG9ydCdzIHNlcnZpY2luZyBwcmlvcml0eSBmb3INCj4gICsJICogZXZlbnQgcXVldWUsIHdoaWNo
IG1heSBiZSBpZ25vcmVkIGJ5IGFuIGltcGxlbWVudGF0aW9uLg0KPiAgKwkgKiBUaGUgcmVxdWVz
dGVkIHByaW9yaXR5IHNob3VsZCBpbiB0aGUgcmFuZ2Ugb2YNCj4gICsJICogW1JURV9FVkVOVF9R
VUVVRV9TRVJWSUNFX1BSSU9SSVRZX0hJR0hFU1QsDQo+ICArCSAqIFJURV9FVkVOVF9RVUVVRV9T
RVJWSUNFX1BSSU9SSVRZX0xPV0VTVF0uDQo+ICArCSAqIFRoZSBpbXBsZW1lbnRhdGlvbiBzaGFs
bCBub3JtYWxpemUgdGhlIHJlcXVlc3RlZCBwcmlvcml0eSB0bw0KPiAgKwkgKiBpbXBsZW1lbnRh
dGlvbiBzdXBwb3J0ZWQgcHJpb3JpdHkgdmFsdWUuDQo+ICArCSAqLw0KPiAgK307DQo+ICArDQo+
ICArLyoqDQo+ICArICogTGluayBtdWx0aXBsZSBzb3VyY2UgZXZlbnQgcXVldWVzIHN1cHBsaWVk
IGluICpydGVfZXZlbnRfcXVldWVfbGluayoNCj4gICsgKiBzdHJ1Y3R1cmUgYXMgKnF1ZXVlX2lk
KiB0byB0aGUgZGVzdGluYXRpb24gZXZlbnQgcG9ydCBkZXNpZ25hdGVkIGJ5IGl0cw0KPiAgKyAq
ICpwb3J0X2lkKiBvbiB0aGUgZXZlbnQgZGV2aWNlIGRlc2lnbmF0ZWQgYnkgaXRzICpkZXZfaWQq
Lg0KPiAgKyAqDQo+ICArICogVGhlIGxpbmsgZXN0YWJsaXNobWVudCBzaGFsbCBlbmFibGUgdGhl
IGV2ZW50IHBvcnQgKnBvcnRfaWQqIGZyb20NCj4gICsgKiByZWNlaXZpbmcgZXZlbnRzIGZyb20g
dGhlIHNwZWNpZmllZCBldmVudCBxdWV1ZSAqcXVldWVfaWQqDQo+ICArICoNCj4gICsgKiBBbiBl
dmVudCBxdWV1ZSBtYXkgbGluayB0byBvbmUgb3IgbW9yZSBldmVudCBwb3J0cy4NCj4gICsgKiBU
aGUgbnVtYmVyIG9mIGxpbmtzIGNhbiBiZSBlc3RhYmxpc2hlZCBmcm9tIGFuIGV2ZW50IHF1ZXVl
IHRvIGV2ZW50IHBvcnQgaXMNCj4gICsgKiBpbXBsZW1lbnRhdGlvbiBkZWZpbmVkLg0KPiAgKyAq
DQo+ICArICogRXZlbnQgcXVldWUocykgdG8gZXZlbnQgcG9ydCBsaW5rIGVzdGFibGlzaG1lbnQg
Y2FuIGJlIGNoYW5nZWQgYXQgcnVudGltZQ0KPiAgKyAqIHdpdGhvdXQgcmUtY29uZmlndXJpbmcg
dGhlIGRldmljZSB0byBzdXBwb3J0IHNjYWxpbmcgYW5kIHRvIHJlZHVjZSB0aGUNCj4gICsgKiBs
YXRlbmN5IG9mIGNyaXRpY2FsIHdvcmsgYnkgZXN0YWJsaXNoaW5nIHRoZSBsaW5rIHdpdGggbW9y
ZSBldmVudCBwb3J0cw0KPiAgKyAqIGF0IHJ1bnRpbWUuDQo+ICArICoNCj4gICsgKiBAcGFyYW0g
ZGV2X2lkDQo+ICArICogICBUaGUgaWRlbnRpZmllciBvZiB0aGUgZGV2aWNlLg0KPiAgKyAqDQo+
ICArICogQHBhcmFtIHBvcnRfaWQNCj4gICsgKiAgIEV2ZW50IHBvcnQgaWRlbnRpZmllciB0byBz
ZWxlY3QgdGhlIGRlc3RpbmF0aW9uIHBvcnQgdG8gbGluay4NCj4gICsgKg0KPiAgKyAqIEBwYXJh
bSBsaW5rDQo+ICArICogICBBbiBhcnJheSBvZiAqbnVtKiBwb2ludGVycyB0byAqcnRlX2V2ZW50
X3F1ZXVlX2xpbmsqIHN0cnVjdHVyZQ0KPiAgKyAqICAgd2hpY2ggY29udGFpbiB0aGUgZXZlbnQg
cXVldWUgdG8gZXZlbnQgcG9ydCBsaW5rIGVzdGFibGlzaG1lbnQgYXR0cmlidXRlcy4NCj4gICsg
KiAgIE5VTEwgdmFsdWUgaXMgYWxsb3dlZCwgaW4gd2hpY2ggY2FzZSB0aGlzIGZ1bmN0aW9uIGxp
bmtzIGFsbCB0aGUgY29uZmlndXJlZA0KPiAgKyAqICAgZXZlbnQgcXVldWVzICpuYl9ldmVudF9x
dWV1ZXMqIHdoaWNoIHByZXZpb3VzbHkgc3VwcGxpZWQgdG8NCj4gICsgKiAgIHJ0ZV9ldmVudF9k
ZXZfY29uZmlndXJlKCkgdG8gdGhlIGV2ZW50IHBvcnQgKnBvcnRfaWQqIHdpdGggbm9ybWFsDQo+
ICBzZXJ2aWNpbmcNCj4gICsgKiAgIHByaW9yaXR5KFJURV9FVkVOVF9RVUVVRV9TRVJWSUNFX1BS
SU9SSVRZX05PUk1BTCkuDQo+ICArICoNCj4gICsgKiBAcGFyYW0gbnVtDQo+ICArICogICBUaGUg
bnVtYmVyIG9mIGxpbmtzIHRvIGVzdGFibGlzaA0KPiAgKyAqDQo+ICArICogQHJldHVybg0KPiAg
KyAqIFRoZSBudW1iZXIgb2YgbGlua3MgYWN0dWFsbHkgZXN0YWJsaXNoZWQgb24gdGhlIGV2ZW50
IGRldmljZS4gVGhlIHJldHVybg0KPiAgKyAqIHZhbHVlIGNhbiBiZSBsZXNzIHRoYW4gdGhlIHZh
bHVlIG9mIHRoZSAqbnVtKiBwYXJhbWV0ZXIgd2hlbiB0aGUNCj4gICsgKiBpbXBsZW1lbnRhdGlv
biBoYXMgdGhlIGxpbWl0YXRpb24gb24gc3BlY2lmaWMgcXVldWUgdG8gcG9ydCBsaW5rDQo+ICAr
ICogZXN0YWJsaXNobWVudCBvciBpZiBpbnZhbGlkIHBhcmFtZXRlcnMgYXJlIHNwZWNpZmllZA0K
PiAgKyAqIGluIGEgKnJ0ZV9ldmVudF9xdWV1ZV9saW5rKi4NCj4gICsgKiBJZiB0aGUgcmV0dXJu
IHZhbHVlIGlzIGxlc3MgdGhhbiAqbnVtKiwgdGhlIHJlbWFpbmluZyBsaW5rcyBhdCB0aGUgZW5k
IG9mDQo+ICArICogbGlua1tdIGFyZSBub3QgZXN0YWJsaXNoZWQsIGFuZCB0aGUgY2FsbGVyIGhh
cyB0byB0YWtlIGNhcmUgb2YgdGhlbS4NCj4gICsgKiBJZiByZXR1cm4gdmFsdWUgaXMgbGVzcyB0
aGFuICpudW0qIHRoZW4gaW1wbGVtZW50YXRpb24gc2hhbGwgdXBkYXRlIHRoZQ0KPiAgKyAqIHJ0
ZV9lcnJubyBhY2NvcmRpbmdseSwgUG9zc2libGUgcnRlX2Vycm5vIHZhbHVlcyBhcmUNCj4gICsg
KiAoLUVEUVVPVCkgUXVvdGEgZXhjZWVkZWQoQXBwbGljYXRpb24gdHJpZWQgdG8gbGluayB0aGUg
cXVldWUgY29uZmlndXJlZA0KPiAgd2l0aA0KPiAgKyAqICBSVEVfRVZFTlRfUVVFVUVfQ0ZHX1NJ
TkdMRV9DT05TVU1FUiB0byBtb3JlIHRoYW4gb25lIGV2ZW50DQo+ICBwb3J0cykNCj4gICsgKiAo
LUVJTlZBTCkgSW52YWxpZCBwYXJhbWV0ZXINCj4gICsgKg0KPiAgKyAqLw0KPiAgK2V4dGVybiBp
bnQNCj4gICtydGVfZXZlbnRfcG9ydF9saW5rKHVpbnQ4X3QgZGV2X2lkLCB1aW50OF90IHBvcnRf
aWQsDQo+ICArCQkgICAgc3RydWN0IHJ0ZV9ldmVudF9xdWV1ZV9saW5rIGxpbmtbXSwgaW50IG51
bSk7DQo+ICArDQo+ICArLyoqDQo+ICArICogVW5saW5rIG11bHRpcGxlIHNvdXJjZSBldmVudCBx
dWV1ZXMgc3VwcGxpZWQgaW4gKnF1ZXVlcyogZnJvbSB0aGUNCj4gIGRlc3RpbmF0aW9uDQo+ICAr
ICogZXZlbnQgcG9ydCBkZXNpZ25hdGVkIGJ5IGl0cyAqcG9ydF9pZCogb24gdGhlIGV2ZW50IGRl
dmljZSBkZXNpZ25hdGVkDQo+ICArICogYnkgaXRzICpkZXZfaWQqLg0KPiAgKyAqDQo+ICArICog
VGhlIHVubGluayBlc3RhYmxpc2htZW50IHNoYWxsIGRpc2FibGUgdGhlIGV2ZW50IHBvcnQgKnBv
cnRfaWQqIGZyb20NCj4gICsgKiByZWNlaXZpbmcgZXZlbnRzIGZyb20gdGhlIHNwZWNpZmllZCBl
dmVudCBxdWV1ZSAqcXVldWVfaWQqDQo+ICArICoNCj4gICsgKiBFdmVudCBxdWV1ZShzKSB0byBl
dmVudCBwb3J0IHVubGluayBlc3RhYmxpc2htZW50IGNhbiBiZSBjaGFuZ2VkIGF0DQo+ICBydW50
aW1lDQo+ICArICogd2l0aG91dCByZS1jb25maWd1cmluZyB0aGUgZGV2aWNlLg0KPiAgKyAqDQo+
ICArICogQHBhcmFtIGRldl9pZA0KPiAgKyAqICAgVGhlIGlkZW50aWZpZXIgb2YgdGhlIGRldmlj
ZS4NCj4gICsgKg0KPiAgKyAqIEBwYXJhbSBwb3J0X2lkDQo+ICArICogICBFdmVudCBwb3J0IGlk
ZW50aWZpZXIgdG8gc2VsZWN0IHRoZSBkZXN0aW5hdGlvbiBwb3J0IHRvIHVubGluay4NCj4gICsg
Kg0KPiAgKyAqIEBwYXJhbSBxdWV1ZXMNCj4gICsgKiAgIEFuIGFycmF5IG9mICpudW0qIGV2ZW50
IHF1ZXVlcyB0byBiZSB1bmxpbmtlZCBmcm9tIHRoZSBldmVudCBwb3J0Lg0KPiAgKyAqICAgTlVM
TCB2YWx1ZSBpcyBhbGxvd2VkLCBpbiB3aGljaCBjYXNlIHRoaXMgZnVuY3Rpb24gdW5saW5rcyBh
bGwgdGhlDQo+ICArICogICBldmVudCBxdWV1ZShzKSBmcm9tIHRoZSBldmVudCBwb3J0ICpwb3J0
X2lkKi4NCj4gICsgKg0KPiAgKyAqIEBwYXJhbSBudW0NCj4gICsgKiAgIFRoZSBudW1iZXIgb2Yg
dW5saW5rcyB0byBlc3RhYmxpc2gNCj4gICsgKg0KPiAgKyAqIEByZXR1cm4NCj4gICsgKiBUaGUg
bnVtYmVyIG9mIHVubGlua3MgYWN0dWFsbHkgZXN0YWJsaXNoZWQgb24gdGhlIGV2ZW50IGRldmlj
ZS4gVGhlIHJldHVybg0KPiAgKyAqIHZhbHVlIGNhbiBiZSBsZXNzIHRoYW4gdGhlIHZhbHVlIG9m
IHRoZSAqbnVtKiBwYXJhbWV0ZXIgd2hlbiB0aGUNCj4gICsgKiBpbXBsZW1lbnRhdGlvbiBoYXMg
dGhlIGxpbWl0YXRpb24gb24gc3BlY2lmaWMgcXVldWUgdG8gcG9ydCB1bmxpbmsNCj4gICsgKiBl
c3RhYmxpc2htZW50IG9yIGlmIGludmFsaWQgcGFyYW1ldGVycyBhcmUgc3BlY2lmaWVkLg0KPiAg
KyAqIElmIHRoZSByZXR1cm4gdmFsdWUgaXMgbGVzcyB0aGFuICpudW0qLCB0aGUgcmVtYWluaW5n
IHF1ZXVlcyBhdCB0aGUgZW5kIG9mDQo+ICArICogcXVldWVzW10gYXJlIG5vdCBlc3RhYmxpc2hl
ZCwgYW5kIHRoZSBjYWxsZXIgaGFzIHRvIHRha2UgY2FyZSBvZiB0aGVtLg0KPiAgKyAqIElmIHJl
dHVybiB2YWx1ZSBpcyBsZXNzIHRoYW4gKm51bSogdGhlbiBpbXBsZW1lbnRhdGlvbiBzaGFsbCB1
cGRhdGUgdGhlDQo+ICArICogcnRlX2Vycm5vIGFjY29yZGluZ2x5LCBQb3NzaWJsZSBydGVfZXJy
bm8gdmFsdWVzIGFyZQ0KPiAgKyAqICgtRUlOVkFMKSBJbnZhbGlkIHBhcmFtZXRlcg0KPiAgKyAq
DQo+ICArICovDQo+ICArZXh0ZXJuIGludA0KPiAgK3J0ZV9ldmVudF9wb3J0X3VubGluayh1aW50
OF90IGRldl9pZCwgdWludDhfdCBwb3J0X2lkLA0KPiAgKwkJICAgIHVpbnQ4X3QgcXVldWVzW10s
IGludCBudW0pOw0KPiAgKw0KPiAgKyNpZmRlZiBfX2NwbHVzcGx1cw0KPiAgK30NCj4gICsjZW5k
aWYNCj4gICsNCj4gICsjZW5kaWYgLyogX1JURV9FVkVOVERFVl9IXyAqLw0KPiAgLS0NCj4gIDIu
NS41DQoNCg==