<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>191867</bug_id>
          
          <creation_ts>2018-11-20 14:51:07 -0800</creation_ts>
          <short_desc>Move WebGPU platform code to platform/graphics/gpu</short_desc>
          <delta_ts>2018-11-21 09:25:09 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dean Jackson">dino</reporter>
          <assigned_to name="Dean Jackson">dino</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>graouts</cc>
    
    <cc>graouts</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1480599</commentid>
    <comment_count>0</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2018-11-20 14:51:07 -0800</bug_when>
    <thetext>Move WebGPU platform code to platform/graphics/gpu</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1480600</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-11-20 14:52:09 -0800</bug_when>
    <thetext>&lt;rdar://problem/46190993&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1480602</commentid>
    <comment_count>2</comment_count>
      <attachid>355367</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2018-11-20 15:08:11 -0800</bug_when>
    <thetext>Created attachment 355367
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1480635</commentid>
    <comment_count>3</comment_count>
      <attachid>355374</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2018-11-20 17:12:11 -0800</bug_when>
    <thetext>Created attachment 355374
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1480780</commentid>
    <comment_count>4</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2018-11-21 09:25:09 -0800</bug_when>
    <thetext>Committed r238419: &lt;https://trac.webkit.org/changeset/238419&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>355367</attachid>
            <date>2018-11-20 15:08:11 -0800</date>
            <delta_ts>2018-11-20 17:12:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191867-20181121100808.patch</filename>
            <type>text/plain</type>
            <size>544205</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4NDA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGRiYzkyYjc2NzAxODM5
NzgwNjU3Y2IyYzM1YTI3MjNmMDg4MzUyNi4uZWY0OWRhNzY4ZGM1NTZmMDkxM2RhODAxZDExYThk
ODNhZWU3NWNkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3MyBAQAorMjAxOC0xMS0yMCAgRGVh
biBKYWNrc29uICA8ZGlub0BhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBXZWJHUFUgcGxhdGZv
cm0gY29kZSB0byBwbGF0Zm9ybS9ncmFwaGljcy9ncHUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTg2NworICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NDYxOTA5OTM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhlIHVuZGVybHlpbmcgaW1wbGVtZW50YXRpb24gb2YgV2ViR1BVIGRvZXNuJ3QgbmVlZCB0
byBsaXZlIGluCisgICAgICAgIE1vZHVsZXMsIHNpbmNlIGl0IHRlY2huaWNhbGx5IGNvdWxkIGJl
IHVzZWQgYnkgb3RoZXIgcGFydHMgb2YgdGhlIHN5c3RlbS4gSXQKKyAgICAgICAgbWFrZXMgbW9y
ZSBzZW5zZSBmb3IgaXQgdG8gYmUgaW4gcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1LgorCisgICAgICAg
IE1vdmUuLi4KKyAgICAgICAgLSBNb2R1bGVzL3dlYmdwdS9HUFUqIC0+IHBsYXRmb3JtL2dyYXBo
aWNzL2dwdQorICAgICAgICAtIE1vZHVsZXMvd2ViZ3B1L2NvY29hIC0+IHBsYXRmb3JtL2dyYXBo
aWNzL2dwdS9jb2NvYQorICAgICAgICAtIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3kq
IC0+IHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvCisgICAgICAgIC0gcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L2NvY29hL0dQVUxlZ2FjeSogLT4gcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2Fj
eS9jb2NvYQorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogU291cmNlc0NvY29h
LnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUNvbW1hbmRCdWZmZXIuaDogUmVuYW1lZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVUNvbW1hbmRCdWZmZXIuaC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRGV2aWNlLmNwcDogUmVuYW1lZCBmcm9t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVURldmljZS5jcHAuCisgICAgICAgIChX
ZWJDb3JlOjpHUFVEZXZpY2U6OmNyZWF0ZVNoYWRlck1vZHVsZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpHUFVEZXZpY2U6OmNyZWF0ZVJlbmRlclBpcGVsaW5lIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkdQVURldmljZTo6Y3JlYXRlQ29tbWFuZEJ1ZmZlcik6CisgICAgICAgIChXZWJD
b3JlOjpHUFVEZXZpY2U6OmdldFF1ZXVlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
cHUvR1BVRGV2aWNlLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9HUFVEZXZpY2UuaC4KKyAgICAgICAgKFdlYkNvcmU6OkdQVURldmljZTo6cGxhdGZvcm1EZXZp
Y2UgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVQaXBlbGluZURl
c2NyaXB0b3JCYXNlLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9HUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmguCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0dQVVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvci5oLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVRdWV1ZS5oOiBSZW5hbWVkIGZyb20gU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVUXVldWUuaC4KKyAgICAgICAgKFdlYkNvcmU6
OkdQVVF1ZXVlOjpwbGF0Zm9ybVF1ZXVlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9ncHUvR1BVUmVuZGVyUGlwZWxpbmUuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L0dQVVJlbmRlclBpcGVsaW5lLmguCisgICAgICAgIChXZWJDb3JlOjpH
UFVSZW5kZXJQaXBlbGluZTo6cGxhdGZvcm1SZW5kZXJQaXBlbGluZSBjb25zdCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oOiBS
ZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVUmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yLmguCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVNoYWRl
ck1vZHVsZS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BV
U2hhZGVyTW9kdWxlLmguCisgICAgICAgIChXZWJDb3JlOjpHUFVTaGFkZXJNb2R1bGU6OnBsYXRm
b3JtU2hhZGVyTW9kdWxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUv
R1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVTd2FwQ2hhaW4uaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVN3YXBDaGFpbi5oLgorICAgICAgICAoV2ViQ29yZTo6
R1BVU3dhcENoYWluOjpwbGF0Zm9ybUxheWVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVVGV4dHVyZS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvR1BVVGV4dHVyZS5oLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dw
dS9HUFVUZXh0dXJlRm9ybWF0RW51bS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvR1BVVGV4dHVyZUZvcm1hdEVudW0uaC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9ncHUvY29jb2EvR1BVQ29tbWFuZEJ1ZmZlck1ldGFsLm1tOiBSZW5hbWVkIGZyb20g
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvY29jb2EvR1BVQ29tbWFuZEJ1ZmZlck1ldGFs
Lm1tLgorICAgICAgICAoV2ViQ29yZTo6R1BVQ29tbWFuZEJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdQVUNvbW1hbmRCdWZmZXI6OkdQVUNvbW1hbmRCdWZmZXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVEZXZpY2VNZXRhbC5tbTogUmVuYW1l
ZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L2NvY29hL0dQVURldmljZU1ldGFs
Lm1tLgorICAgICAgICAoV2ViQ29yZTo6R1BVRGV2aWNlOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6R1BVRGV2aWNlOjpHUFVEZXZpY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dwdS9jb2NvYS9HUFVRdWV1ZU1ldGFsLm1tOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvY29jb2EvR1BVUXVldWVNZXRhbC5tbS4KKyAgICAgICAgKFdlYkNvcmU6
OkdQVVF1ZXVlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R1BVUXVldWU6OkdQVVF1ZXVl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUmVuZGVyUGlwZWxp
bmVNZXRhbC5tbTogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L2Nv
Y29hL0dQVVJlbmRlclBpcGVsaW5lTWV0YWwubW0uCisgICAgICAgIChXZWJDb3JlOjpzZXRGdW5j
dGlvbnNGb3JQaXBlbGluZURlc2NyaXB0b3IpOgorICAgICAgICAoV2ViQ29yZTo6R1BVUmVuZGVy
UGlwZWxpbmU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHUFVSZW5kZXJQaXBlbGluZTo6
R1BVUmVuZGVyUGlwZWxpbmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2Nv
YS9HUFVTaGFkZXJNb2R1bGVNZXRhbC5tbTogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L2NvY29hL0dQVVNoYWRlck1vZHVsZU1ldGFsLm1tLgorICAgICAgICAoV2Vi
Q29yZTo6R1BVU2hhZGVyTW9kdWxlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R1BVU2hh
ZGVyTW9kdWxlOjpHUFVTaGFkZXJNb2R1bGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dwdS9jb2NvYS9HUFVTd2FwQ2hhaW5NZXRhbC5tbTogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L2NvY29hL0dQVVN3YXBDaGFpbk1ldGFsLm1tLgorICAgICAgICAo
V2ViQ29yZTo6R1BVU3dhcENoYWluOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R1BVU3dh
cENoYWluOjpHUFVTd2FwQ2hhaW4pOgorICAgICAgICAoV2ViQ29yZTo6R1BVU3dhcENoYWluOjpz
ZXREZXZpY2UpOgorICAgICAgICAoV2ViQ29yZTo6cGxhdGZvcm1UZXh0dXJlRm9ybWF0Rm9yR1BV
VGV4dHVyZUZvcm1hdCk6CisgICAgICAgIChXZWJDb3JlOjpHUFVTd2FwQ2hhaW46OnNldEZvcm1h
dCk6CisgICAgICAgIChXZWJDb3JlOjpHUFVTd2FwQ2hhaW46OnJlc2hhcGUpOgorICAgICAgICAo
V2ViQ29yZTo6R1BVU3dhcENoYWluOjpnZXROZXh0VGV4dHVyZSk6CisgICAgICAgIChXZWJDb3Jl
OjpHUFVTd2FwQ2hhaW46OnByZXNlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dw
dS9jb2NvYS9HUFVUZXh0dXJlTWV0YWwubW06IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9jb2NvYS9HUFVUZXh0dXJlTWV0YWwubW0uCisgICAgICAgIChXZWJDb3Jl
OjpHUFVUZXh0dXJlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R1BVVGV4dHVyZTo6R1BV
VGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpHUFVUZXh0dXJlOjpjcmVhdGVEZWZhdWx0VGV4
dHVyZVZpZXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvR1BVTGVn
YWN5QnVmZmVyLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9HUFVMZWdhY3lCdWZmZXIuY3BwLgorICAgICAgICAoV2ViQ29yZTo6R1BVTGVnYWN5
QnVmZmVyOjp+R1BVTGVnYWN5QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdQVUxlZ2FjeUJ1
ZmZlcjo6bGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVn
YWN5L0dQVUxlZ2FjeUJ1ZmZlci5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeUJ1ZmZlci5oLgorICAgICAgICAoV2ViQ29yZTo6R1BV
TGVnYWN5QnVmZmVyOjpjb250ZW50cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHUFVMZWdh
Y3lCdWZmZXI6Om1ldGFsIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUv
bGVnYWN5L0dQVUxlZ2FjeUNvbW1hbmRCdWZmZXIuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeUNvbW1hbmRCdWZmZXIuY3BwLgor
ICAgICAgICAoV2ViQ29yZTo6R1BVTGVnYWN5Q29tbWFuZEJ1ZmZlcjo6fkdQVUxlZ2FjeUNvbW1h
bmRCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvR1BVTGVn
YWN5Q29tbWFuZEJ1ZmZlci5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeUNvbW1hbmRCdWZmZXIuaC4KKyAgICAgICAgKFdlYkNvcmU6
OkdQVUxlZ2FjeUNvbW1hbmRCdWZmZXI6Om1ldGFsIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9ncHUvbGVnYWN5L0dQVUxlZ2FjeUNvbW1hbmRRdWV1ZS5jcHA6IFJlbmFtZWQg
ZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5Q29tbWFu
ZFF1ZXVlLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OkdQVUxlZ2FjeUNvbW1hbmRRdWV1ZTo6fkdQ
VUxlZ2FjeUNvbW1hbmRRdWV1ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xl
Z2FjeS9HUFVMZWdhY3lDb21tYW5kUXVldWUuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lDb21tYW5kUXVldWUuaC4KKyAgICAgICAg
KFdlYkNvcmU6OkdQVUxlZ2FjeUNvbW1hbmRRdWV1ZTo6bWV0YWwgY29uc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvR1BVTGVnYWN5Q29tcHV0ZUNvbW1hbmRFbmNv
ZGVyLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9HUFVMZWdhY3lDb21wdXRlQ29tbWFuZEVuY29kZXIuY3BwLgorICAgICAgICAoV2ViQ29yZTo6
R1BVTGVnYWN5Q29tcHV0ZUNvbW1hbmRFbmNvZGVyOjp+R1BVTGVnYWN5Q29tcHV0ZUNvbW1hbmRF
bmNvZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L0dQVUxlZ2Fj
eUNvbXB1dGVDb21tYW5kRW5jb2Rlci5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeUNvbXB1dGVDb21tYW5kRW5jb2Rlci5oLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvR1BVTGVnYWN5Q29tcHV0ZVBpcGVs
aW5lU3RhdGUuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0dQVUxlZ2FjeUNvbXB1dGVQaXBlbGluZVN0YXRlLmNwcC4KKyAgICAgICAgKFdlYkNv
cmU6OkdQVUxlZ2FjeUNvbXB1dGVQaXBlbGluZVN0YXRlOjp+R1BVTGVnYWN5Q29tcHV0ZVBpcGVs
aW5lU3RhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvR1BVTGVn
YWN5Q29tcHV0ZVBpcGVsaW5lU3RhdGUuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lDb21wdXRlUGlwZWxpbmVTdGF0ZS5oLgorICAg
ICAgICAoV2ViQ29yZTo6R1BVTGVnYWN5Q29tcHV0ZVBpcGVsaW5lU3RhdGU6Om1ldGFsIGNvbnN0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L0dQVUxlZ2FjeURlcHRo
U3RlbmNpbERlc2NyaXB0b3IuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeURlcHRoU3RlbmNpbERlc2NyaXB0b3IuY3BwLgorICAg
ICAgICAoV2ViQ29yZTo6R1BVTGVnYWN5RGVwdGhTdGVuY2lsRGVzY3JpcHRvcjo6fkdQVUxlZ2Fj
eURlcHRoU3RlbmNpbERlc2NyaXB0b3IpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dw
dS9sZWdhY3kvR1BVTGVnYWN5RGVwdGhTdGVuY2lsRGVzY3JpcHRvci5oOiBSZW5hbWVkIGZyb20g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeURlcHRoU3RlbmNp
bERlc2NyaXB0b3IuaC4KKyAgICAgICAgKFdlYkNvcmU6OkdQVUxlZ2FjeURlcHRoU3RlbmNpbERl
c2NyaXB0b3I6Om1ldGFsIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUv
bGVnYWN5L0dQVUxlZ2FjeURlcHRoU3RlbmNpbFN0YXRlLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lEZXB0aFN0ZW5jaWxTdGF0
ZS5jcHAuCisgICAgICAgIChXZWJDb3JlOjpHUFVMZWdhY3lEZXB0aFN0ZW5jaWxTdGF0ZTo6fkdQ
VUxlZ2FjeURlcHRoU3RlbmNpbFN0YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
cHUvbGVnYWN5L0dQVUxlZ2FjeURlcHRoU3RlbmNpbFN0YXRlLmg6IFJlbmFtZWQgZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5RGVwdGhTdGVuY2lsU3Rh
dGUuaC4KKyAgICAgICAgKFdlYkNvcmU6OkdQVUxlZ2FjeURlcHRoU3RlbmNpbFN0YXRlOjptZXRh
bCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9HUFVMZWdh
Y3lEZXZpY2UuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0dQVUxlZ2FjeURldmljZS5jcHAuCisgICAgICAgIChXZWJDb3JlOjpHUFVMZWdhY3lE
ZXZpY2U6On5HUFVMZWdhY3lEZXZpY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dw
dS9sZWdhY3kvR1BVTGVnYWN5RGV2aWNlLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5RGV2aWNlLmguCisgICAgICAgIChXZWJDb3Jl
OjpHUFVMZWdhY3lEZXZpY2U6OmxheWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdQVUxl
Z2FjeURldmljZTo6bWV0YWwgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R1BVTGVnYWN5RGV2
aWNlOjptYXJrTGF5ZXJDb21wb3NpdGVkIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9ncHUvbGVnYWN5L0dQVUxlZ2FjeURyYXdhYmxlLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lEcmF3YWJsZS5jcHAuCisg
ICAgICAgIChXZWJDb3JlOjpHUFVMZWdhY3lEcmF3YWJsZTo6fkdQVUxlZ2FjeURyYXdhYmxlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L0dQVUxlZ2FjeURyYXdhYmxl
Lmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BV
TGVnYWN5RHJhd2FibGUuaC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5
L0dQVUxlZ2FjeUVudW1zLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVTGVnYWN5RW51bXMuaC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvbGVnYWN5L0dQVUxlZ2FjeUZ1bmN0aW9uLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lGdW5jdGlvbi5jcHAuCisgICAg
ICAgIChXZWJDb3JlOjpHUFVMZWdhY3lGdW5jdGlvbjo6fkdQVUxlZ2FjeUZ1bmN0aW9uKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L0dQVUxlZ2FjeUZ1bmN0aW9uLmg6
IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVn
YWN5RnVuY3Rpb24uaC4KKyAgICAgICAgKFdlYkNvcmU6OkdQVUxlZ2FjeUZ1bmN0aW9uOjptZXRh
bCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9HUFVMZWdh
Y3lMaWJyYXJ5LmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9HUFVMZWdhY3lMaWJyYXJ5LmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OkdQVUxlZ2Fj
eUxpYnJhcnk6On5HUFVMZWdhY3lMaWJyYXJ5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvbGVnYWN5L0dQVUxlZ2FjeUxpYnJhcnkuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lMaWJyYXJ5LmguCisgICAgICAgIChX
ZWJDb3JlOjpHUFVMZWdhY3lMaWJyYXJ5OjptZXRhbCBjb25zdCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9HUFVMZWdhY3lSZW5kZXJDb21tYW5kRW5jb2Rlci5jcHA6
IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVn
YWN5UmVuZGVyQ29tbWFuZEVuY29kZXIuY3BwLgorICAgICAgICAoV2ViQ29yZTo6R1BVTGVnYWN5
UmVuZGVyQ29tbWFuZEVuY29kZXI6On5HUFVMZWdhY3lSZW5kZXJDb21tYW5kRW5jb2Rlcik6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9HUFVMZWdhY3lSZW5kZXJDb21t
YW5kRW5jb2Rlci5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0dQVUxlZ2FjeVJlbmRlckNvbW1hbmRFbmNvZGVyLmguCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9HUFVMZWdhY3lSZW5kZXJQYXNzQXR0YWNobWVudERlc2Ny
aXB0b3IuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L0dQVUxlZ2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5jcHAuCisgICAgICAg
IChXZWJDb3JlOjpHUFVMZWdhY3lSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3I6On5HUFVM
ZWdhY3lSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9sZWdhY3kvR1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlw
dG9yLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
R1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmguCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9HUFVMZWdhY3lSZW5kZXJQYXNzQ29sb3JBdHRhY2ht
ZW50RGVzY3JpcHRvci5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVTGVnYWN5UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3Iu
Y3BwLgorICAgICAgICAoV2ViQ29yZTo6R1BVTGVnYWN5UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVu
dERlc2NyaXB0b3I6On5HUFVMZWdhY3lSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRv
cik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9HUFVMZWdhY3lSZW5k
ZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeVJlbmRlclBhc3NDb2xvckF0dGFj
aG1lbnREZXNjcmlwdG9yLmguCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2Fj
eS9HUFVMZWdhY3lSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5jcHA6IFJlbmFt
ZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5UmVu
ZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IuY3BwLgorICAgICAgICAoV2ViQ29yZTo6
R1BVTGVnYWN5UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3I6On5HUFVMZWdhY3lS
ZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L2xlZ2FjeS9HUFVMZWdhY3lSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVz
Y3JpcHRvci5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L0dQVUxlZ2FjeVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmguCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9HUFVMZWdhY3lSZW5kZXJQYXNzRGVz
Y3JpcHRvci5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvR1BVTGVnYWN5UmVuZGVyUGFzc0Rlc2NyaXB0b3IuY3BwLgorICAgICAgICAoV2ViQ29y
ZTo6R1BVTGVnYWN5UmVuZGVyUGFzc0Rlc2NyaXB0b3I6On5HUFVMZWdhY3lSZW5kZXJQYXNzRGVz
Y3JpcHRvcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9HUFVMZWdh
Y3lSZW5kZXJQYXNzRGVzY3JpcHRvci5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeVJlbmRlclBhc3NEZXNjcmlwdG9yLmguCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9HUFVMZWdhY3lSZW5kZXJQaXBlbGlu
ZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeVJlbmRlclBpcGVsaW5lQ29sb3JBdHRh
Y2htZW50RGVzY3JpcHRvci5jcHAuCisgICAgICAgIChXZWJDb3JlOjpHUFVMZWdhY3lSZW5kZXJQ
aXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6On5HUFVMZWdhY3lSZW5kZXJQaXBlbGlu
ZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dwdS9sZWdhY3kvR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlw
dG9yLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
R1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmguCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9HUFVMZWdhY3lSZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3IuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVUxlZ2FjeVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5jcHAuCisgICAgICAg
IChXZWJDb3JlOjpHUFVMZWdhY3lSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6On5HUFVMZWdhY3lS
ZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dw
dS9sZWdhY3kvR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmg6IFJlbmFtZWQgZnJv
bSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5UmVuZGVyUGlw
ZWxpbmVEZXNjcmlwdG9yLmguCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2Fj
eS9HUFVMZWdhY3lSZW5kZXJQaXBlbGluZVN0YXRlLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lSZW5kZXJQaXBlbGluZVN0YXRl
LmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OkdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lU3RhdGU6On5H
UFVMZWdhY3lSZW5kZXJQaXBlbGluZVN0YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvbGVnYWN5L0dQVUxlZ2FjeVJlbmRlclBpcGVsaW5lU3RhdGUuaDogUmVuYW1lZCBmcm9t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lSZW5kZXJQaXBl
bGluZVN0YXRlLmguCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9HUFVM
ZWdhY3lTaXplLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvR1BVTGVnYWN5U2l6ZS5oLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9s
ZWdhY3kvR1BVTGVnYWN5VGV4dHVyZS5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5VGV4dHVyZS5jcHAuCisgICAgICAgIChXZWJD
b3JlOjpHUFVMZWdhY3lUZXh0dXJlOjp+R1BVTGVnYWN5VGV4dHVyZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9HUFVMZWdhY3lUZXh0dXJlLmg6IFJlbmFtZWQgZnJv
bSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5VGV4dHVyZS5o
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvR1BVTGVnYWN5VGV4dHVy
ZURlc2NyaXB0b3IuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVUxlZ2FjeVRleHR1cmVEZXNjcmlwdG9yLmNwcC4KKyAgICAgICAgKFdlYkNv
cmU6OkdQVUxlZ2FjeVRleHR1cmVEZXNjcmlwdG9yOjp+R1BVTGVnYWN5VGV4dHVyZURlc2NyaXB0
b3IpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvR1BVTGVnYWN5VGV4
dHVyZURlc2NyaXB0b3IuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9HUFVMZWdhY3lUZXh0dXJlRGVzY3JpcHRvci5oLgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvY29jb2EvR1BVTGVnYWN5QnVmZmVyTWV0YWwubW06IFJl
bmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVMZWdh
Y3lCdWZmZXJNZXRhbC5tbS4KKyAgICAgICAgKFdlYkNvcmU6OkdQVUxlZ2FjeUJ1ZmZlcjo6R1BV
TGVnYWN5QnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L2Nv
Y29hL0dQVUxlZ2FjeUNvbW1hbmRCdWZmZXJNZXRhbC5tbTogUmVuYW1lZCBmcm9tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVUxlZ2FjeUNvbW1hbmRCdWZmZXJNZXRh
bC5tbS4KKyAgICAgICAgKFdlYkNvcmU6OkdQVUxlZ2FjeUNvbW1hbmRCdWZmZXI6OkdQVUxlZ2Fj
eUNvbW1hbmRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R1BVTGVnYWN5Q29tbWFuZEJ1ZmZl
cjo6cHJlc2VudERyYXdhYmxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdQVUxlZ2FjeUNv
bW1hbmRCdWZmZXI6OmNvbW1pdCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L2xlZ2FjeS9jb2NvYS9HUFVMZWdhY3lDb21tYW5kUXVldWVNZXRhbC5tbTogUmVuYW1lZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVUxlZ2FjeUNvbW1h
bmRRdWV1ZU1ldGFsLm1tLgorICAgICAgICAoV2ViQ29yZTo6R1BVTGVnYWN5Q29tbWFuZFF1ZXVl
OjpHUFVMZWdhY3lDb21tYW5kUXVldWUpOgorICAgICAgICAoV2ViQ29yZTo6R1BVTGVnYWN5Q29t
bWFuZFF1ZXVlOjpsYWJlbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHUFVMZWdhY3lDb21t
YW5kUXVldWU6OnNldExhYmVsIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
cHUvbGVnYWN5L2NvY29hL0dQVUxlZ2FjeUNvbXB1dGVDb21tYW5kRW5jb2Rlck1ldGFsLm1tOiBS
ZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVn
YWN5Q29tcHV0ZUNvbW1hbmRFbmNvZGVyTWV0YWwubW0uCisgICAgICAgIChXZWJDb3JlOjpNVExT
aXplTWFrZSk6CisgICAgICAgIChXZWJDb3JlOjpHUFVMZWdhY3lDb21wdXRlQ29tbWFuZEVuY29k
ZXI6OkdQVUxlZ2FjeUNvbXB1dGVDb21tYW5kRW5jb2Rlcik6CisgICAgICAgIChXZWJDb3JlOjpH
UFVMZWdhY3lDb21wdXRlQ29tbWFuZEVuY29kZXI6OnNldENvbXB1dGVQaXBlbGluZVN0YXRlIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdQVUxlZ2FjeUNvbXB1dGVDb21tYW5kRW5jb2Rlcjo6
c2V0QnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdQVUxlZ2FjeUNvbXB1dGVDb21t
YW5kRW5jb2Rlcjo6ZGlzcGF0Y2ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R1BVTGVnYWN5
Q29tcHV0ZUNvbW1hbmRFbmNvZGVyOjplbmRFbmNvZGluZyBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9jb2NvYS9HUFVMZWdhY3lDb21wdXRlUGlwZWxpbmVT
dGF0ZU1ldGFsLm1tOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvbWV0YWwvR1BVTGVnYWN5Q29tcHV0ZVBpcGVsaW5lU3RhdGVNZXRhbC5tbS4KKyAgICAgICAg
KFdlYkNvcmU6OkdQVUxlZ2FjeUNvbXB1dGVQaXBlbGluZVN0YXRlOjpHUFVMZWdhY3lDb21wdXRl
UGlwZWxpbmVTdGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9j
b2NvYS9HUFVMZWdhY3lEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yTWV0YWwubW06IFJlbmFtZWQgZnJv
bSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVMZWdhY3lEZXB0aFN0
ZW5jaWxEZXNjcmlwdG9yTWV0YWwubW0uCisgICAgICAgIChXZWJDb3JlOjpHUFVMZWdhY3lEZXB0
aFN0ZW5jaWxEZXNjcmlwdG9yOjpHUFVMZWdhY3lEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdQVUxlZ2FjeURlcHRoU3RlbmNpbERlc2NyaXB0b3I6OmRlcHRoV3Jp
dGVFbmFibGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdQVUxlZ2FjeURlcHRoU3RlbmNp
bERlc2NyaXB0b3I6OnNldERlcHRoV3JpdGVFbmFibGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkdQVUxlZ2FjeURlcHRoU3RlbmNpbERlc2NyaXB0b3I6OmRlcHRoQ29tcGFyZUZ1bmN0aW9u
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdQVUxlZ2FjeURlcHRoU3RlbmNpbERlc2NyaXB0
b3I6OnNldERlcHRoQ29tcGFyZUZ1bmN0aW9uIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9ncHUvbGVnYWN5L2NvY29hL0dQVUxlZ2FjeURlcHRoU3RlbmNpbFN0YXRlTWV0YWwu
bW06IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9H
UFVMZWdhY3lEZXB0aFN0ZW5jaWxTdGF0ZU1ldGFsLm1tLgorICAgICAgICAoV2ViQ29yZTo6R1BV
TGVnYWN5RGVwdGhTdGVuY2lsU3RhdGU6OkdQVUxlZ2FjeURlcHRoU3RlbmNpbFN0YXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdQVUxlZ2FjeURlcHRoU3RlbmNpbFN0YXRlOjpsYWJlbCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpHUFVMZWdhY3lEZXB0aFN0ZW5jaWxTdGF0ZTo6c2V0TGFiZWwg
Y29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvY29jb2EvR1BV
TGVnYWN5RGV2aWNlTWV0YWwubW06IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tZXRhbC9HUFVMZWdhY3lEZXZpY2VNZXRhbC5tbS4KKyAgICAgICAgKFdlYkNv
cmU6OkdQVUxlZ2FjeURldmljZTo6R1BVTGVnYWN5RGV2aWNlKToKKyAgICAgICAgKFdlYkNvcmU6
OkdQVUxlZ2FjeURldmljZTo6ZGlzY29ubmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpHUFVMZWdh
Y3lEZXZpY2U6OnJlc2hhcGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R1BVTGVnYWN5RGV2
aWNlOjpwbGF0Zm9ybUxheWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdQVUxlZ2FjeURl
dmljZTo6b3BlcmF0b3IhIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUv
bGVnYWN5L2NvY29hL0dQVUxlZ2FjeURyYXdhYmxlTWV0YWwubW06IFJlbmFtZWQgZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVMZWdhY3lEcmF3YWJsZU1ldGFs
Lm1tLgorICAgICAgICAoV2ViQ29yZTo6R1BVTGVnYWN5RHJhd2FibGU6OkdQVUxlZ2FjeURyYXdh
YmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkdQVUxlZ2FjeURyYXdhYmxlOjpyZWxlYXNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdQVUxlZ2FjeURyYXdhYmxlOjptZXRhbCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpHUFVMZWdhY3lEcmF3YWJsZTo6dGV4dHVyZSBjb25zdCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9jb2NvYS9HUFVMZWdhY3lGdW5jdGlvbk1ldGFs
Lm1tOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwv
R1BVTGVnYWN5RnVuY3Rpb25NZXRhbC5tbS4KKyAgICAgICAgKFdlYkNvcmU6OkdQVUxlZ2FjeUZ1
bmN0aW9uOjpHUFVMZWdhY3lGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHUFVMZWdhY3lG
dW5jdGlvbjo6bmFtZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHUFVMZWdhY3lGdW5jdGlv
bjo6b3BlcmF0b3IhIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVn
YWN5L2NvY29hL0dQVUxlZ2FjeUxpYnJhcnlNZXRhbC5tbTogUmVuYW1lZCBmcm9tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVUxlZ2FjeUxpYnJhcnlNZXRhbC5tbS4K
KyAgICAgICAgKFdlYkNvcmU6OkdQVUxlZ2FjeUxpYnJhcnk6OkdQVUxlZ2FjeUxpYnJhcnkpOgor
ICAgICAgICAoV2ViQ29yZTo6R1BVTGVnYWN5TGlicmFyeTo6bGFiZWwgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6R1BVTGVnYWN5TGlicmFyeTo6c2V0TGFiZWwgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6R1BVTGVnYWN5TGlicmFyeTo6ZnVuY3Rpb25OYW1lcyBjb25zdCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9jb2NvYS9HUFVMZWdhY3lSZW5kZXJDb21t
YW5kRW5jb2Rlck1ldGFsLm1tOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5UmVuZGVyQ29tbWFuZEVuY29kZXJNZXRhbC5tbS4KKyAg
ICAgICAgKFdlYkNvcmU6OkdQVUxlZ2FjeVJlbmRlckNvbW1hbmRFbmNvZGVyOjpHUFVMZWdhY3lS
ZW5kZXJDb21tYW5kRW5jb2Rlcik6CisgICAgICAgIChXZWJDb3JlOjpHUFVMZWdhY3lSZW5kZXJD
b21tYW5kRW5jb2Rlcjo6c2V0UmVuZGVyUGlwZWxpbmVTdGF0ZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpHUFVMZWdhY3lSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0RGVwdGhTdGVuY2lsU3Rh
dGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R1BVTGVnYWN5UmVuZGVyQ29tbWFuZEVuY29k
ZXI6OnNldFZlcnRleEJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHUFVMZWdhY3lS
ZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0RnJhZ21lbnRCdWZmZXIgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6R1BVTGVnYWN5UmVuZGVyQ29tbWFuZEVuY29kZXI6OmRyYXdQcmltaXRpdmVzIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdQVUxlZ2FjeVJlbmRlckNvbW1hbmRFbmNvZGVyOjpl
bmRFbmNvZGluZyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2Fj
eS9jb2NvYS9HUFVMZWdhY3lSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3JNZXRhbC5tbTog
UmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVUxl
Z2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvck1ldGFsLm1tLgorICAgICAgICAoV2Vi
Q29yZTo6R1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjpHUFVMZWdhY3lS
ZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IpOgorICAgICAgICAoV2ViQ29yZTo6R1BVTGVn
YWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjpsb2FkQWN0aW9uIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdQVUxlZ2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjo6
c2V0TG9hZEFjdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHUFVMZWdhY3lSZW5kZXJQ
YXNzQXR0YWNobWVudERlc2NyaXB0b3I6OnN0b3JlQWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkdQVUxlZ2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjo6c2V0U3RvcmVB
Y3Rpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFj
aG1lbnREZXNjcmlwdG9yOjpzZXRUZXh0dXJlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdQ
VUxlZ2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjo6bWV0YWwgY29uc3QpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvY29jb2EvR1BVTGVnYWN5UmVuZGVy
UGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3JNZXRhbC5tbTogUmVuYW1lZCBmcm9tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVUxlZ2FjeVJlbmRlclBhc3NDb2xv
ckF0dGFjaG1lbnREZXNjcmlwdG9yTWV0YWwubW0uCisgICAgICAgIChXZWJDb3JlOjpHUFVMZWdh
Y3lSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6R1BVTGVnYWN5UmVuZGVyUGFz
c0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IpOgorICAgICAgICAoV2ViQ29yZTo6R1BVTGVnYWN5
UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6OmNsZWFyQ29sb3IgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6R1BVTGVnYWN5UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2Ny
aXB0b3I6OnNldENsZWFyQ29sb3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R1BVTGVnYWN5
UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6Om1ldGFsIGNvbnN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L2NvY29hL0dQVUxlZ2FjeVJlbmRlclBh
c3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yTWV0YWwubW06IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVMZWdhY3lSZW5kZXJQYXNzRGVwdGhB
dHRhY2htZW50RGVzY3JpcHRvck1ldGFsLm1tLgorICAgICAgICAoV2ViQ29yZTo6R1BVTGVnYWN5
UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3I6OkdQVUxlZ2FjeVJlbmRlclBhc3NE
ZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkdQVUxlZ2FjeVJl
bmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yOjpjbGVhckRlcHRoIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdQVUxlZ2FjeVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlw
dG9yOjpzZXRDbGVhckRlcHRoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdQVUxlZ2FjeVJl
bmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yOjptZXRhbCBjb25zdCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9jb2NvYS9HUFVMZWdhY3lSZW5kZXJQYXNz
RGVzY3JpcHRvck1ldGFsLm1tOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5UmVuZGVyUGFzc0Rlc2NyaXB0b3JNZXRhbC5tbS4KKyAg
ICAgICAgKFdlYkNvcmU6OkdQVUxlZ2FjeVJlbmRlclBhc3NEZXNjcmlwdG9yOjpHUFVMZWdhY3lS
ZW5kZXJQYXNzRGVzY3JpcHRvcik6CisgICAgICAgIChXZWJDb3JlOjpHUFVMZWdhY3lSZW5kZXJQ
YXNzRGVzY3JpcHRvcjo6Y29sb3JBdHRhY2htZW50cyBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpHUFVMZWdhY3lSZW5kZXJQYXNzRGVzY3JpcHRvcjo6ZGVwdGhBdHRhY2htZW50IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkdQVUxlZ2FjeVJlbmRlclBhc3NEZXNjcmlwdG9yOjptZXRhbCBj
b25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9jb2NvYS9HUFVM
ZWdhY3lSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3JNZXRhbC5tbTogUmVu
YW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVUxlZ2Fj
eVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvck1ldGFsLm1tLgorICAgICAg
ICAoV2ViQ29yZTo6R1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlw
dG9yOjpHUFVMZWdhY3lSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IpOgor
ICAgICAgICAoV2ViQ29yZTo6R1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnRE
ZXNjcmlwdG9yOjpwaXhlbEZvcm1hdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHUFVMZWdh
Y3lSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6OnNldFBpeGVsRm9ybWF0
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lQ29sb3JB
dHRhY2htZW50RGVzY3JpcHRvcjo6bWV0YWwgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2dwdS9sZWdhY3kvY29jb2EvR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9y
TWV0YWwubW06IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
ZXRhbC9HUFVMZWdhY3lSZW5kZXJQaXBlbGluZURlc2NyaXB0b3JNZXRhbC5tbS4KKyAgICAgICAg
KFdlYkNvcmU6OkdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6R1BVTGVnYWN5UmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkdQVUxlZ2FjeVJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvcjo6ZGVwdGhBdHRhY2htZW50UGl4ZWxGb3JtYXQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6R1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRE
ZXB0aEF0dGFjaG1lbnRQaXhlbEZvcm1hdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHUFVM
ZWdhY3lSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnNldFZlcnRleEZ1bmN0aW9uIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0
RnJhZ21lbnRGdW5jdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHUFVMZWdhY3lSZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3I6OmNvbG9yQXR0YWNobWVudHMgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6R1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpyZXNldCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpHUFVMZWdhY3lSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6Om1l
dGFsIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L2NvY29h
L0dQVUxlZ2FjeVJlbmRlclBpcGVsaW5lU3RhdGVNZXRhbC5tbTogUmVuYW1lZCBmcm9tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVUxlZ2FjeVJlbmRlclBpcGVsaW5l
U3RhdGVNZXRhbC5tbS4KKyAgICAgICAgKFdlYkNvcmU6OkdQVUxlZ2FjeVJlbmRlclBpcGVsaW5l
U3RhdGU6OkdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
R1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVTdGF0ZTo6bGFiZWwgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6R1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVTdGF0ZTo6c2V0TGFiZWwgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6R1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVTdGF0ZTo6bWV0YWwgY29uc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvY29jb2EvR1BVTGVnYWN5
VGV4dHVyZURlc2NyaXB0b3JNZXRhbC5tbTogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVUxlZ2FjeVRleHR1cmVEZXNjcmlwdG9yTWV0YWwubW0u
CisgICAgICAgIChXZWJDb3JlOjpHUFVMZWdhY3lUZXh0dXJlRGVzY3JpcHRvcjo6R1BVTGVnYWN5
VGV4dHVyZURlc2NyaXB0b3IpOgorICAgICAgICAoV2ViQ29yZTo6R1BVTGVnYWN5VGV4dHVyZURl
c2NyaXB0b3I6OndpZHRoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdQVUxlZ2FjeVRleHR1
cmVEZXNjcmlwdG9yOjpzZXRXaWR0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHUFVMZWdh
Y3lUZXh0dXJlRGVzY3JpcHRvcjo6aGVpZ2h0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdQ
VUxlZ2FjeVRleHR1cmVEZXNjcmlwdG9yOjpzZXRIZWlnaHQgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6R1BVTGVnYWN5VGV4dHVyZURlc2NyaXB0b3I6OnNhbXBsZUNvdW50IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdQVUxlZ2FjeVRleHR1cmVEZXNjcmlwdG9yOjpzZXRTYW1wbGVDb3Vu
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHUFVMZWdhY3lUZXh0dXJlRGVzY3JpcHRvcjo6
dGV4dHVyZVR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R1BVTGVnYWN5VGV4dHVyZURl
c2NyaXB0b3I6OnNldFRleHR1cmVUeXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdQVUxl
Z2FjeVRleHR1cmVEZXNjcmlwdG9yOjpzdG9yYWdlTW9kZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpHUFVMZWdhY3lUZXh0dXJlRGVzY3JpcHRvcjo6c2V0U3RvcmFnZU1vZGUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6R1BVTGVnYWN5VGV4dHVyZURlc2NyaXB0b3I6OnVzYWdlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkdQVUxlZ2FjeVRleHR1cmVEZXNjcmlwdG9yOjpzZXRVc2Fn
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHUFVMZWdhY3lUZXh0dXJlRGVzY3JpcHRvcjo6
bWV0YWwgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvY29j
b2EvR1BVTGVnYWN5VGV4dHVyZU1ldGFsLm1tOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5VGV4dHVyZU1ldGFsLm1tLgorICAgICAg
ICAoV2ViQ29yZTo6R1BVTGVnYWN5VGV4dHVyZTo6R1BVTGVnYWN5VGV4dHVyZSk6CisgICAgICAg
IChXZWJDb3JlOjpHUFVMZWdhY3lUZXh0dXJlOjp3aWR0aCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpHUFVMZWdhY3lUZXh0dXJlOjpoZWlnaHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
R1BVTGVnYWN5VGV4dHVyZTo6bWV0YWwgY29uc3QpOgorCiAyMDE4LTExLTIwICBaYW4gRG9iZXJz
ZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAogICAgICAgICBTZWdmYXVsdHMgb24gaHR0cHM6
Ly90ZXJtaW5hbGl6ZXIuY29tLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvR1BVQ29tbWFuZEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
R1BVQ29tbWFuZEJ1ZmZlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzM2M3MzMy
NWE0NmVjZmQ3NzFiYWYwNGVhNmE1NmI4YmJmOWIzNWVlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQ
VUNvbW1hbmRCdWZmZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmV0
YWluUHRyLmg+Ci0KLU9CSkNfUFJPVE9DT0woTVRMQ29tbWFuZEJ1ZmZlcik7Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotY2xhc3MgR1BVRGV2aWNlOwotCi11c2luZyBQbGF0Zm9ybUNvbW1hbmRC
dWZmZXIgPSBNVExDb21tYW5kQnVmZmVyOwotdXNpbmcgUGxhdGZvcm1Db21tYW5kQnVmZmVyU21h
cnRQdHIgPSBSZXRhaW5QdHI8TVRMQ29tbWFuZEJ1ZmZlcj47Ci0KLWNsYXNzIEdQVUNvbW1hbmRC
dWZmZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxHUFVDb21tYW5kQnVmZmVyPiB7Ci1wdWJsaWM6Ci0g
ICAgc3RhdGljIFJlZlB0cjxHUFVDb21tYW5kQnVmZmVyPiBjcmVhdGUoR1BVRGV2aWNlJik7Ci0K
LXByaXZhdGU6Ci0gICAgR1BVQ29tbWFuZEJ1ZmZlcihQbGF0Zm9ybUNvbW1hbmRCdWZmZXJTbWFy
dFB0ciYmKTsKLQotICAgIFBsYXRmb3JtQ29tbWFuZEJ1ZmZlclNtYXJ0UHRyIG1fcGxhdGZvcm1D
b21tYW5kQnVmZmVyOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8g
RU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L0dQVURldmljZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVEZXZpY2Uu
Y3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZjE3NzRlNmM4NWJhMmU1ZDZmMWM5
MTcyNmE5M2Q5YTVmZTM4MzZhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVURldmljZS5jcHAKKysr
IC9kZXYvbnVsbApAQCAtMSw2MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2luY2x1ZGUgIkdQVURldmljZS5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2lu
Y2x1ZGUgIkdQVVJlbmRlclBpcGVsaW5lLmgiCi0jaW5jbHVkZSAiR1BVUmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiR1BVU2hhZGVyTW9kdWxlLmgiCi0jaW5jbHVkZSAiR1BV
U2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVJlZlB0
cjxHUFVTaGFkZXJNb2R1bGU+IEdQVURldmljZTo6Y3JlYXRlU2hhZGVyTW9kdWxlKEdQVVNoYWRl
ck1vZHVsZURlc2NyaXB0b3ImJiBkZXNjcmlwdG9yKSBjb25zdAotewotICAgIHJldHVybiBHUFVT
aGFkZXJNb2R1bGU6OmNyZWF0ZSgqdGhpcywgV1RGTW92ZShkZXNjcmlwdG9yKSk7Ci19Ci0KLVJl
ZlB0cjxHUFVSZW5kZXJQaXBlbGluZT4gR1BVRGV2aWNlOjpjcmVhdGVSZW5kZXJQaXBlbGluZShH
UFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3ImJiBkZXNjcmlwdG9yKSBjb25zdAotewotICAgIHJl
dHVybiBHUFVSZW5kZXJQaXBlbGluZTo6Y3JlYXRlKCp0aGlzLCBXVEZNb3ZlKGRlc2NyaXB0b3Ip
KTsKLX0KLQotUmVmUHRyPEdQVUNvbW1hbmRCdWZmZXI+IEdQVURldmljZTo6Y3JlYXRlQ29tbWFu
ZEJ1ZmZlcigpCi17Ci0gICAgcmV0dXJuIEdQVUNvbW1hbmRCdWZmZXI6OmNyZWF0ZSgqdGhpcyk7
Ci19Ci0KLVJlZlB0cjxHUFVRdWV1ZT4gR1BVRGV2aWNlOjpnZXRRdWV1ZSgpCi17Ci0gICAgaWYg
KCFtX3F1ZXVlKQotICAgICAgICBtX3F1ZXVlID0gR1BVUXVldWU6OmNyZWF0ZSgqdGhpcyk7Ci0K
LSAgICByZXR1cm4gbV9xdWV1ZTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5k
aWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L0dQVURldmljZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVRGV2
aWNlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU4MTZmMTgzZmMwOTJkNzQ2ZmI5
NzMyMjQ0NmY4Y2IyMzNjMTRmZDAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVRGV2aWNlLmgKKysr
IC9kZXYvbnVsbApAQCAtMSw3MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0K
LSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVQ29tbWFuZEJ1ZmZlci5oIgotI2lu
Y2x1ZGUgIkdQVVF1ZXVlLmgiCi0KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0KLU9CSkNfUFJP
VE9DT0woTVRMRGV2aWNlKTsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi11c2luZyBQbGF0Zm9y
bURldmljZSA9IE1UTERldmljZTsKLXVzaW5nIFBsYXRmb3JtRGV2aWNlU21hcnRQdHIgPSBSZXRh
aW5QdHI8TVRMRGV2aWNlPjsKLQotY2xhc3MgR1BVUmVuZGVyUGlwZWxpbmU7Ci1jbGFzcyBHUFVT
aGFkZXJNb2R1bGU7Ci0KLXN0cnVjdCBHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yOwotc3RydWN0
IEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjsKLQotY2xhc3MgR1BVRGV2aWNlIDogcHVibGlj
IFJlZkNvdW50ZWQ8R1BVRGV2aWNlPiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxHUFVE
ZXZpY2U+IGNyZWF0ZSgpOwotCi0gICAgUmVmUHRyPEdQVVNoYWRlck1vZHVsZT4gY3JlYXRlU2hh
ZGVyTW9kdWxlKEdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3ImJikgY29uc3Q7Ci0gICAgUmVmUHRy
PEdQVVJlbmRlclBpcGVsaW5lPiBjcmVhdGVSZW5kZXJQaXBlbGluZShHUFVSZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3ImJikgY29uc3Q7Ci0KLSAgICBSZWZQdHI8R1BVQ29tbWFuZEJ1ZmZlcj4gY3Jl
YXRlQ29tbWFuZEJ1ZmZlcigpOwotCi0gICAgUmVmUHRyPEdQVVF1ZXVlPiBnZXRRdWV1ZSgpOwot
ICAgIFBsYXRmb3JtRGV2aWNlKiBwbGF0Zm9ybURldmljZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxh
dGZvcm1EZXZpY2UuZ2V0KCk7IH0KLQotcHJpdmF0ZToKLSAgICBHUFVEZXZpY2UoUGxhdGZvcm1E
ZXZpY2VTbWFydFB0ciYmKTsKLQotICAgIFBsYXRmb3JtRGV2aWNlU21hcnRQdHIgbV9wbGF0Zm9y
bURldmljZTsKLSAgICBSZWZQdHI8R1BVUXVldWU+IG1fcXVldWU7Ci19OwotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZTI3NTViOWUyNjZhMmU4YjM4ZmE1ZDRi
MDhmZDdlMTRlMjgxMjY5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVBpcGVsaW5lRGVzY3JpcHRv
ckJhc2UuaAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJh
Z21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVQaXBlbGluZVN0
YWdlRGVzY3JpcHRvci5oIgotCi0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLXN0cnVjdCBHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlIHsKLSAgICBWZWN0
b3I8R1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3I+IHN0YWdlczsKLX07Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvci5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3Iu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzQzMTQ1YjY2N2VmMDIwMWIwOGFlZTM1
NjhkMGRhZTczNjIxY2JiYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVQaXBlbGluZVN0YWdlRGVz
Y3JpcHRvci5oCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNw
cmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVVNoYWRlck1v
ZHVsZS5oIgotCi0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotc3RydWN0IEdQVVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yIHsKLSAgICBjb25z
dCBHUFVTaGFkZXJNb2R1bGUqIG1vZHVsZSA9IG51bGxwdHI7Ci0gICAgU3RyaW5nIGVudHJ5UG9p
bnQ7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VC
R1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVUXVldWUu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVF1ZXVlLmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDNmZGQwMGNmYThjMmExMWNmNjRlM2E0ZDUwMjU2OGRmNDIyMThi
ZGEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVUXVldWUuaAorKysgL2Rldi9udWxsCkBAIC0xLDU3
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUp
Ci0KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
LSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0KLU9CSkNfUFJPVE9DT0woTVRMQ29tbWFuZFF1
ZXVlKTsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHUFVEZXZpY2U7Ci0KLXVzaW5n
IFBsYXRmb3JtUXVldWUgPSBNVExDb21tYW5kUXVldWU7Ci11c2luZyBQbGF0Zm9ybVF1ZXVlU21h
cnRQdHIgPSBSZXRhaW5QdHI8TVRMQ29tbWFuZFF1ZXVlPjsKLQotY2xhc3MgR1BVUXVldWUgOiBw
dWJsaWMgUmVmQ291bnRlZDxHUFVRdWV1ZT4gewotcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8
R1BVUXVldWU+IGNyZWF0ZShjb25zdCBHUFVEZXZpY2UmKTsKLQotICAgIFBsYXRmb3JtUXVldWUq
IHBsYXRmb3JtUXVldWUoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtUXVldWUuZ2V0KCk7IH0K
LQotcHJpdmF0ZToKLSAgICBHUFVRdWV1ZShQbGF0Zm9ybVF1ZXVlU21hcnRQdHImJik7Ci0KLSAg
ICBQbGF0Zm9ybVF1ZXVlU21hcnRQdHIgbV9wbGF0Zm9ybVF1ZXVlOwotfTsKLQotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVJlbmRlclBpcGVsaW5lLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVSZW5kZXJQaXBlbGluZS5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA0MmZkOWEzMzVkYWE5MTRjNTJkOTY3MzU5ZDY3ODIzOTk5M2IyMzE0
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVJlbmRlclBpcGVsaW5lLmgKKysrIC9kZXYvbnVsbApA
QCAtMSw1OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUo
V0VCR1BVKQotCi0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotCi1PQkpDX1BST1RPQ09MKE1UTFJl
bmRlclBpcGVsaW5lU3RhdGUpOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEdQVURl
dmljZTsKLQotc3RydWN0IEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjsKLQotdXNpbmcgUGxh
dGZvcm1SZW5kZXJQaXBlbGluZSA9IE1UTFJlbmRlclBpcGVsaW5lU3RhdGU7Ci11c2luZyBQbGF0
Zm9ybVJlbmRlclBpcGVsaW5lU21hcnRQdHIgPSBSZXRhaW5QdHI8TVRMUmVuZGVyUGlwZWxpbmVT
dGF0ZT47Ci0KLWNsYXNzIEdQVVJlbmRlclBpcGVsaW5lIDogcHVibGljIFJlZkNvdW50ZWQ8R1BV
UmVuZGVyUGlwZWxpbmU+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPEdQVVJlbmRlclBp
cGVsaW5lPiBjcmVhdGUoY29uc3QgR1BVRGV2aWNlJiwgR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yJiYpOwotCi0gICAgUGxhdGZvcm1SZW5kZXJQaXBlbGluZSogcGxhdGZvcm1SZW5kZXJQaXBl
bGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1SZW5kZXJQaXBlbGluZS5nZXQoKTsgfQot
Ci1wcml2YXRlOgotICAgIEdQVVJlbmRlclBpcGVsaW5lKFBsYXRmb3JtUmVuZGVyUGlwZWxpbmVT
bWFydFB0ciYmKTsKLQotICAgIFBsYXRmb3JtUmVuZGVyUGlwZWxpbmVTbWFydFB0ciBtX3BsYXRm
b3JtUmVuZGVyUGlwZWxpbmU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRp
ZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9HUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMTRlYzdkMmY5N2ViYzQ0YzdiMzZiOTVlZTRhNWNhM2JjY2Q5YmQyOC4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaAorKysgL2Rl
di9udWxsCkBAIC0xLDUzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lm
IEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmgi
Ci0jaW5jbHVkZSAiR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuaCIKLQotI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdHJ1Y3QgR1BVUmVuZGVyUGlw
ZWxpbmVEZXNjcmlwdG9yIHsKLSAgICBlbnVtIGNsYXNzIFByaW1pdGl2ZVRvcG9sb2d5IHsKLSAg
ICAgICAgUG9pbnRMaXN0LAotICAgICAgICBMaW5lTGlzdCwKLSAgICAgICAgTGluZVN0cmlwLAot
ICAgICAgICBUcmlhbmdsZUxpc3QsCi0gICAgICAgIFRyaWFuZ2xlU3RyaXAKLSAgICB9OwotCi0g
ICAgR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IgdmVydGV4U3RhZ2U7Ci0gICAgR1BVUGlwZWxp
bmVTdGFnZURlc2NyaXB0b3IgZnJhZ21lbnRTdGFnZTsKLSAgICBQcmltaXRpdmVUb3BvbG9neSBw
cmltaXRpdmVUb3BvbG9neTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlm
IC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9HUFVTaGFkZXJNb2R1bGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQ
VVNoYWRlck1vZHVsZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYmZiM2Y5YmUw
NGFlYWFiMGI2NDY3MDQzYWJmMWE0OTU3MjAwOWRhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVNo
YWRlck1vZHVsZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5Q
dHIuaD4KLQotT0JKQ19QUk9UT0NPTChNVExMaWJyYXJ5KTsKLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1jbGFzcyBHUFVEZXZpY2U7Ci0KLXN0cnVjdCBHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9y
OwotCi11c2luZyBQbGF0Zm9ybVNoYWRlck1vZHVsZSA9IE1UTExpYnJhcnk7Ci11c2luZyBQbGF0
Zm9ybVNoYWRlck1vZHVsZVNtYXJ0UHRyID0gUmV0YWluUHRyPE1UTExpYnJhcnk+OwotCi1jbGFz
cyBHUFVTaGFkZXJNb2R1bGUgOiBwdWJsaWMgUmVmQ291bnRlZDxHUFVTaGFkZXJNb2R1bGU+IHsK
LXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPEdQVVNoYWRlck1vZHVsZT4gY3JlYXRlKGNvbnN0
IEdQVURldmljZSYsIEdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3ImJik7Ci0KLSAgICBQbGF0Zm9y
bVNoYWRlck1vZHVsZSogcGxhdGZvcm1TaGFkZXJNb2R1bGUoKSBjb25zdCB7IHJldHVybiBtX3Bs
YXRmb3JtU2hhZGVyTW9kdWxlLmdldCgpOyB9Ci0KLXByaXZhdGU6Ci0gICAgR1BVU2hhZGVyTW9k
dWxlKFBsYXRmb3JtU2hhZGVyTW9kdWxlU21hcnRQdHImJik7Ci0KLSAgICBQbGF0Zm9ybVNoYWRl
ck1vZHVsZVNtYXJ0UHRyIG1fcGxhdGZvcm1TaGFkZXJNb2R1bGU7Ci19OwotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2Y2ZlMGFkNWE4N2IzMmM0OGFlMzRiZDc2
ZDJmMWM1OTgxYmU3ZDVkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVNoYWRlck1vZHVsZURlc2Ny
aXB0b3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJh
Z21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdHJ1Y3QgR1BVU2hhZGVyTW9kdWxl
RGVzY3JpcHRvciB7Ci0gICAgU3RyaW5nIGNvZGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvR1BVU3dhcENoYWluLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9HUFVTd2FwQ2hhaW4uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzQ4
YzEwMTQ0MjU5NjgwODYwMmNjOTJhZGUyMTZiNmJjMWZkNDY2Mi4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9HUFVTd2FwQ2hhaW4uaAorKysgL2Rldi9udWxsCkBAIC0xLDY1ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotCi1PQkpDX0NMQVNTIENBTWV0
YWxMYXllcjsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHUFVEZXZpY2U7Ci1jbGFz
cyBHUFVUZXh0dXJlOwotCi1lbnVtIGNsYXNzIEdQVVRleHR1cmVGb3JtYXRFbnVtOwotCi11c2lu
ZyBQbGF0Zm9ybVN3YXBMYXllciA9IENBTWV0YWxMYXllcjsKLXVzaW5nIFBsYXRmb3JtU3dhcExh
eWVyU21hcnRQdHIgPSBSZXRhaW5QdHI8Q0FNZXRhbExheWVyPjsKLQotY2xhc3MgR1BVU3dhcENo
YWluIDogcHVibGljIFJlZkNvdW50ZWQ8R1BVU3dhcENoYWluPiB7Ci1wdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZlB0cjxHUFVTd2FwQ2hhaW4+IGNyZWF0ZSgpOwotCi0gICAgdm9pZCBzZXREZXZpY2Uo
Y29uc3QgR1BVRGV2aWNlJik7Ci0gICAgdm9pZCBzZXRGb3JtYXQoR1BVVGV4dHVyZUZvcm1hdEVu
dW0pOwotICAgIHZvaWQgcmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpOwotICAgIFJlZlB0
cjxHUFVUZXh0dXJlPiBnZXROZXh0VGV4dHVyZSgpOwotICAgIHZvaWQgcHJlc2VudCgpOwotCi0g
ICAgUGxhdGZvcm1Td2FwTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3Bs
YXRmb3JtU3dhcExheWVyLmdldCgpOyB9Ci0KLXByaXZhdGU6Ci0gICAgR1BVU3dhcENoYWluKFBs
YXRmb3JtU3dhcExheWVyU21hcnRQdHImJik7Ci0KLSAgICBQbGF0Zm9ybVN3YXBMYXllclNtYXJ0
UHRyIG1fcGxhdGZvcm1Td2FwTGF5ZXI7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0K
LSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvR1BVVGV4dHVyZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
R1BVVGV4dHVyZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4Mzc0NDBiYzliNjRm
Y2Y5NzRkYjRmODQwODVjZmY4NGU4NjA2MWUzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVRleHR1
cmUuaAorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21h
IG9uY2UKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlIDx3dGYvUmVmLmg+Ci0jaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0KLU9C
SkNfUFJPVE9DT0woTVRMVGV4dHVyZSk7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdXNpbmcg
UGxhdGZvcm1UZXh0dXJlID0gTVRMVGV4dHVyZTsKLXVzaW5nIFBsYXRmb3JtVGV4dHVyZVNtYXJ0
UHRyID0gUmV0YWluUHRyPE1UTFRleHR1cmU+OwotCi1jbGFzcyBHUFVUZXh0dXJlIDogcHVibGlj
IFJlZkNvdW50ZWQ8R1BVVGV4dHVyZT4gewotcHVibGljOgotICAgIHN0YXRpYyBSZWY8R1BVVGV4
dHVyZT4gY3JlYXRlKFBsYXRmb3JtVGV4dHVyZVNtYXJ0UHRyJiYpOwotCi0gICAgUmVmUHRyPEdQ
VVRleHR1cmU+IGNyZWF0ZURlZmF1bHRUZXh0dXJlVmlldygpOwotCi1wcml2YXRlOgotICAgIGV4
cGxpY2l0IEdQVVRleHR1cmUoUGxhdGZvcm1UZXh0dXJlU21hcnRQdHImJik7Ci0KLSAgICBQbGF0
Zm9ybVRleHR1cmVTbWFydFB0ciBtX3BsYXRmb3JtVGV4dHVyZTsKLX07Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVUZXh0dXJlRm9ybWF0RW51bS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVVGV4dHVyZUZvcm1hdEVudW0uaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggNzkxMTM0ZmUwNjRhNjg1NjM1MmJmYThjZmUzZTI0NzZmNGFi
Y2E3Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVUZXh0dXJlRm9ybWF0RW51bS5oCisrKyAvZGV2
L251bGwKQEAgLTEsNDMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYg
RU5BQkxFKFdFQkdQVSkKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1lbnVtIGNsYXNzIEdQVVRl
eHR1cmVGb3JtYXRFbnVtIHsKLSAgICBSOEc4QjhBOFVub3JtLAotICAgIFI4RzhCOEE4VWludCwK
LSAgICBCOEc4UjhBOFVub3JtLAotICAgIEQzMkZsb2F0UzhVaW50Ci19OwotCi11c2luZyBQbGF0
Zm9ybVRleHR1cmVGb3JtYXQgPSB1bnNpZ25lZCBsb25nOwotCi19Ci0KLSNlbmRpZiAvLyBFTkFC
TEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvY29j
b2EvR1BVQ29tbWFuZEJ1ZmZlck1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvY29jb2EvR1BVQ29tbWFuZEJ1ZmZlck1ldGFsLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA2MTI1OWQyMzRmYjNhMTI0Zjk5MTc4NGE1ZDhmZDY4ODcwMzdlMjA4Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L2NvY29hL0dQVUNvbW1hbmRCdWZmZXJNZXRhbC5tbQorKysgL2Rldi9udWxs
CkBAIC0xLDc3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBv
cnQgIkdQVUNvbW1hbmRCdWZmZXIuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbXBvcnQg
IkdQVURldmljZS5oIgotI2ltcG9ydCAiR1BVUXVldWUuaCIKLSNpbXBvcnQgIkxvZ2dpbmcuaCIK
LQotI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KLSNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRp
b25zLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUmVmUHRyPEdQVUNvbW1hbmRCdWZmZXI+
IEdQVUNvbW1hbmRCdWZmZXI6OmNyZWF0ZShHUFVEZXZpY2UmIGRldmljZSkKLXsKLSAgICBpZiAo
IWRldmljZS5wbGF0Zm9ybURldmljZSgpKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVDb21t
YW5kQnVmZmVyOjpjcmVhdGUoKTogSW52YWxpZCBHUFVEZXZpY2UhIik7Ci0gICAgICAgIHJldHVy
biBudWxscHRyOwotICAgIH0KLQotICAgIGF1dG8gZ3B1Q29tbWFuZFF1ZXVlID0gZGV2aWNlLmdl
dFF1ZXVlKCk7Ci0gICAgaWYgKCFncHVDb21tYW5kUXVldWUpCi0gICAgICAgIHJldHVybiBudWxs
cHRyOwotCi0gICAgYXV0byBtdGxRdWV1ZSA9IGdwdUNvbW1hbmRRdWV1ZS0+cGxhdGZvcm1RdWV1
ZSgpOwotCi0gICAgUGxhdGZvcm1Db21tYW5kQnVmZmVyU21hcnRQdHIgYnVmZmVyOwotCi0gICAg
QkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotCi0gICAgYnVmZmVyID0gcmV0YWluUHRyKFtt
dGxRdWV1ZSBjb21tYW5kQnVmZmVyXSk7Ci0KLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05T
OwotCi0gICAgaWYgKCFidWZmZXIpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVUNvbW1hbmRC
dWZmZXI6OmNyZWF0ZSgpOiBVbmFibGUgdG8gY3JlYXRlIE1UTENvbW1hbmRCdWZmZXIhIik7Ci0g
ICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIHJldHVybiBhZG9wdFJlZihuZXcg
R1BVQ29tbWFuZEJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpKTsKLX0KLQotR1BVQ29tbWFuZEJ1ZmZl
cjo6R1BVQ29tbWFuZEJ1ZmZlcihQbGF0Zm9ybUNvbW1hbmRCdWZmZXJTbWFydFB0ciYmIGJ1ZmZl
cikKLSAgICA6IG1fcGxhdGZvcm1Db21tYW5kQnVmZmVyKFdURk1vdmUoYnVmZmVyKSkKLXsKLSAg
ICBVTlVTRURfUEFSQU0obV9wbGF0Zm9ybUNvbW1hbmRCdWZmZXIpOwotfQotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvY29jb2EvR1BVRGV2aWNlTWV0YWwubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9jb2NvYS9HUFVEZXZpY2VNZXRhbC5tbQpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTgzODdhNzcxMWIwMjAwZWQ5MTkyZmExNDIwZDM1OTJm
OGU0ODE4OS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9jb2NvYS9HUFVEZXZpY2VNZXRhbC5tbQorKysg
L2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcu
aCIKLSNpbXBvcnQgIkdQVURldmljZS5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2ltcG9y
dCAiTG9nZ2luZy5oIgotCi0jaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgotI2ltcG9ydCA8d3RmL0Js
b2NrT2JqQ0V4Y2VwdGlvbnMuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1SZWZQdHI8R1BV
RGV2aWNlPiBHUFVEZXZpY2U6OmNyZWF0ZSgpCi17Ci0gICAgUGxhdGZvcm1EZXZpY2VTbWFydFB0
ciBkZXZpY2U7Ci0KLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0KLSAgICBkZXZp
Y2UgPSBhZG9wdE5TKE1UTENyZWF0ZVN5c3RlbURlZmF1bHREZXZpY2UoKSk7IC8vIEZJWE1FOiBU
YWtlIFdlYkdQVVBvd2VyUHJlZmVyZW5jZSBpbnRvIGFjY291bnQuCi0KLSAgICBFTkRfQkxPQ0tf
T0JKQ19FWENFUFRJT05TOwotCi0gICAgaWYgKCFkZXZpY2UpIHsKLSAgICAgICAgTE9HKFdlYkdQ
VSwgIkdQVURldmljZTo6R1BVRGV2aWNlKCk6IFVuYWJsZSB0byBjcmVhdGUgR1BVRGV2aWNlISIp
OwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICBMT0coV2ViR1BVLCAiR1BV
RGV2aWNlOjpHUFVEZXZpY2UoKTogTVRMRGV2aWNlIGlzICVwIiwgZGV2aWNlLmdldCgpKTsKLSAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IEdQVURldmljZShXVEZNb3ZlKGRldmljZSkpKTsKLX0KLQot
R1BVRGV2aWNlOjpHUFVEZXZpY2UoUGxhdGZvcm1EZXZpY2VTbWFydFB0ciYmIGRldmljZSkKLSAg
ICA6IG1fcGxhdGZvcm1EZXZpY2UoV1RGTW92ZShkZXZpY2UpKQotewotfQotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvY29jb2EvR1BVUXVldWVNZXRhbC5tbSBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L2NvY29hL0dQVVF1ZXVlTWV0YWwubW0KZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhlNjliZTNiY2M4NjBiYTc1ZDBmZjg4NTdmNTY4MTcyZTI1
NTU1OGIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvY29jb2EvR1BVUXVldWVNZXRhbC5tbQorKysgL2Rl
di9udWxsCkBAIC0xLDY5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIK
LSNpbXBvcnQgIkdQVVF1ZXVlLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW1wb3J0ICJH
UFVEZXZpY2UuaCIKLSNpbXBvcnQgIkxvZ2dpbmcuaCIKLQotI2ltcG9ydCA8TWV0YWwvTWV0YWwu
aD4KLSNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+Ci0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotUmVmUHRyPEdQVVF1ZXVlPiBHUFVRdWV1ZTo6Y3JlYXRlKGNvbnN0IEdQVURldmlj
ZSYgZGV2aWNlKQotewotICAgIGlmICghZGV2aWNlLnBsYXRmb3JtRGV2aWNlKCkpIHsKLSAgICAg
ICAgTE9HKFdlYkdQVSwgIkdQVVF1ZXVlOjpjcmVhdGUoKTogSW52YWxpZCBHUFVEZXZpY2UhIik7
Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIFBsYXRmb3JtUXVldWVTbWFy
dFB0ciBxdWV1ZTsKLQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLQotICAgIHF1
ZXVlID0gYWRvcHROUyhbZGV2aWNlLnBsYXRmb3JtRGV2aWNlKCkgbmV3Q29tbWFuZFF1ZXVlXSk7
Ci0KLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotCi0gICAgaWYgKCFxdWV1ZSkgewot
ICAgICAgICBMT0coV2ViR1BVLCAiR1BVUXVldWU6OmNyZWF0ZSgpOiBVbmFibGUgdG8gY3JlYXRl
IE1UTENvbW1hbmRRdWV1ZSEiKTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0g
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBHUFVRdWV1ZShXVEZNb3ZlKHF1ZXVlKSkpOwotfQotCi1H
UFVRdWV1ZTo6R1BVUXVldWUoUGxhdGZvcm1RdWV1ZVNtYXJ0UHRyJiYgcXVldWUpCi0gICAgOiBt
X3BsYXRmb3JtUXVldWUoV1RGTW92ZShxdWV1ZSkpCi17Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9jb2NvYS9HUFVSZW5kZXJQaXBlbGluZU1ldGFsLm1tIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvY29jb2EvR1BVUmVuZGVyUGlwZWxpbmVNZXRhbC5t
bQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzk0NmQ1NTA5ZDIyMjhkNDVmMDY0YjBm
NmQzNWJjY2E4NjBkN2VhZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9jb2NvYS9HUFVSZW5kZXJQaXBl
bGluZU1ldGFsLm1tCisrKyAvZGV2L251bGwKQEAgLTEsMTM3ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkdQVVJlbmRlclBpcGVsaW5lLmgiCi0KLSNp
ZiBFTkFCTEUoV0VCR1BVKQotCi0jaW1wb3J0ICJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3Iu
aCIKLSNpbXBvcnQgIkxvZ2dpbmcuaCIKLQotI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KLSNpbXBv
cnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
c3RhdGljIGJvb2wgc2V0RnVuY3Rpb25zRm9yUGlwZWxpbmVEZXNjcmlwdG9yKGNvbnN0IGNoYXIq
IGNvbnN0IGZ1bmN0aW9uTmFtZSwgTVRMUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yICptdGxEZXNj
cmlwdG9yLCBHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3ImJiBkZXNjcmlwdG9yKQotewotI2lm
IExPR19ESVNBQkxFRAotICAgIFVOVVNFRF9QQVJBTShmdW5jdGlvbk5hbWUpOwotI2VuZGlmCi0g
ICAgLy8gTWV0YWwgcmVxdWlyZXMgYSB2ZXJ0ZXggc2hhZGVyIGluIGFsbCByZW5kZXIgcGlwZWxp
bmVzLgotICAgIGNvbnN0IGF1dG8mIHZlcnRleFN0YWdlID0gZGVzY3JpcHRvci52ZXJ0ZXhTdGFn
ZTsKLSAgICBhdXRvIG10bExpYnJhcnkgPSB2ZXJ0ZXhTdGFnZS5tb2R1bGUtPnBsYXRmb3JtU2hh
ZGVyTW9kdWxlKCk7Ci0KLSAgICBpZiAoIW10bExpYnJhcnkpIHsKLSAgICAgICAgTE9HKFdlYkdQ
VSwgIiVzOiBNVExMaWJyYXJ5IGZvciB2ZXJ0ZXggc3RhZ2UgZG9lcyBub3QgZXhpc3QhIiwgZnVu
Y3Rpb25OYW1lKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGF1dG8gZnVu
Y3Rpb24gPSBhZG9wdE5TKFttdGxMaWJyYXJ5IG5ld0Z1bmN0aW9uV2l0aE5hbWU6dmVydGV4U3Rh
Z2UuZW50cnlQb2ludF0pOwotCi0gICAgaWYgKCFmdW5jdGlvbikgewotICAgICAgICBMT0coV2Vi
R1BVLCAiJXM6IFZlcnRleCBNVExGdW5jdGlvbiBcIiVzXCIgbm90IGZvdW5kISIsIGZ1bmN0aW9u
TmFtZSwgdmVydGV4U3RhZ2UuZW50cnlQb2ludC51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIH0KLQotICAgIFttdGxEZXNjcmlwdG9yIHNldFZlcnRleEZ1bmN0aW9u
OmZ1bmN0aW9uLmdldCgpXTsKLQotICAgIC8vIEhvd2V2ZXIsIGZyYWdtZW50IHNoYWRlcnMgYXJl
IG9wdGlvbmFsLgotICAgIGNvbnN0IGF1dG8gZnJhZ21lbnRTdGFnZSA9IGRlc2NyaXB0b3IuZnJh
Z21lbnRTdGFnZTsKLSAgICBpZiAoIWZyYWdtZW50U3RhZ2UubW9kdWxlIHx8ICFmcmFnbWVudFN0
YWdlLmVudHJ5UG9pbnQpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgbXRsTGlicmFyeSA9
IGZyYWdtZW50U3RhZ2UubW9kdWxlLT5wbGF0Zm9ybVNoYWRlck1vZHVsZSgpOwotCi0gICAgaWYg
KCFtdGxMaWJyYXJ5KSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICIlczogTVRMTGlicmFyeSBmb3Ig
ZnJhZ21lbnQgc3RhZ2UgZG9lcyBub3QgZXhpc3QhIiwgZnVuY3Rpb25OYW1lKTsKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGZ1bmN0aW9uID0gYWRvcHROUyhbbXRsTGlicmFy
eSBuZXdGdW5jdGlvbldpdGhOYW1lOmZyYWdtZW50U3RhZ2UuZW50cnlQb2ludF0pOwotCi0gICAg
aWYgKCFmdW5jdGlvbikgewotICAgICAgICBMT0coV2ViR1BVLCAiJXM6IEZyYWdtZW50IE1UTEZ1
bmN0aW9uIFwiJXNcIiBub3QgZm91bmQhIiwgZnVuY3Rpb25OYW1lLCBmcmFnbWVudFN0YWdlLmVu
dHJ5UG9pbnQudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0K
LSAgICBbbXRsRGVzY3JpcHRvciBzZXRGcmFnbWVudEZ1bmN0aW9uOmZ1bmN0aW9uLmdldCgpXTsK
LQotICAgIHJldHVybiB0cnVlOwotfQotCi1SZWZQdHI8R1BVUmVuZGVyUGlwZWxpbmU+IEdQVVJl
bmRlclBpcGVsaW5lOjpjcmVhdGUoY29uc3QgR1BVRGV2aWNlJiBkZXZpY2UsIEdQVVJlbmRlclBp
cGVsaW5lRGVzY3JpcHRvciYmIGRlc2NyaXB0b3IpCi17Ci0gICAgY29uc3QgY2hhciogY29uc3Qg
ZnVuY3Rpb25OYW1lID0gIkdQVVJlbmRlclBpcGVsaW5lOjpjcmVhdGUoKSI7Ci0KLSAgICBpZiAo
IWRldmljZS5wbGF0Zm9ybURldmljZSgpKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICIlczogTVRM
RGV2aWNlIGRvZXMgbm90IGV4aXN0ISIsIGZ1bmN0aW9uTmFtZSk7Ci0gICAgICAgIHJldHVybiBu
dWxscHRyOwotICAgIH0KLQotICAgIFJldGFpblB0cjxNVExSZW5kZXJQaXBlbGluZURlc2NyaXB0
b3I+IG10bERlc2NyaXB0b3I7Ci0KLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0K
LSAgICBtdGxEZXNjcmlwdG9yID0gYWRvcHROUyhbTVRMUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9y
IG5ld10pOwotCi0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLQotICAgIGlmICghbXRs
RGVzY3JpcHRvcikgewotICAgICAgICBMT0coV2ViR1BVLCAiJXM6IEVycm9yIGNyZWF0aW5nIE1U
TERlc2NyaXB0b3IhIiwgZnVuY3Rpb25OYW1lKTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0g
ICAgfQotCi0gICAgaWYgKCFzZXRGdW5jdGlvbnNGb3JQaXBlbGluZURlc2NyaXB0b3IoZnVuY3Rp
b25OYW1lLCBtdGxEZXNjcmlwdG9yLmdldCgpLCBXVEZNb3ZlKGRlc2NyaXB0b3IpKSkKLSAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICAvLyBGSVhNRTogR2V0IHRoZSBwaXhlbEZvcm1hdCBh
cyBjb25maWd1cmVkIGZvciB0aGUgY29udGV4dC9DQU1ldGFsTGF5ZXIuCi0gICAgbXRsRGVzY3Jp
cHRvci5nZXQoKS5jb2xvckF0dGFjaG1lbnRzWzBdLnBpeGVsRm9ybWF0ID0gTVRMUGl4ZWxGb3Jt
YXRCR1JBOFVub3JtOwotCi0gICAgUGxhdGZvcm1SZW5kZXJQaXBlbGluZVNtYXJ0UHRyIHBpcGVs
aW5lOwotCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotCi0gICAgcGlwZWxpbmUg
PSBhZG9wdE5TKFtkZXZpY2UucGxhdGZvcm1EZXZpY2UoKSBuZXdSZW5kZXJQaXBlbGluZVN0YXRl
V2l0aERlc2NyaXB0b3I6bXRsRGVzY3JpcHRvci5nZXQoKSBlcnJvcjpuaWxdKTsKLQotICAgIEVO
RF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0KLSAgICBpZiAoIXBpcGVsaW5lKSB7Ci0gICAgICAg
IExPRyhXZWJHUFUsICIlczogRXJyb3IgY3JlYXRpbmcgTVRMUmVuZGVyUGlwZWxpbmVTdGF0ZSEi
LCBmdW5jdGlvbk5hbWUpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IEdQVVJlbmRlclBpcGVsaW5lKFdURk1vdmUocGlwZWxpbmUpKSk7
Ci19Ci0KLUdQVVJlbmRlclBpcGVsaW5lOjpHUFVSZW5kZXJQaXBlbGluZShQbGF0Zm9ybVJlbmRl
clBpcGVsaW5lU21hcnRQdHImJiBwaXBlbGluZSkKLSAgICA6IG1fcGxhdGZvcm1SZW5kZXJQaXBl
bGluZShXVEZNb3ZlKHBpcGVsaW5lKSkKLXsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQot
Ci0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L2NvY29hL0dQVVNoYWRlck1vZHVsZU1ldGFsLm1tIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvY29jb2EvR1BVU2hhZGVyTW9kdWxlTWV0YWwubW0KZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc2ZTg1MzkwY2EyYzkxYmUwNGY5ZTE4YjIzMTYyMDZjMGQw
MzU0M2QuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvY29jb2EvR1BVU2hhZGVyTW9kdWxlTWV0YWwubW0K
KysrIC9kZXYvbnVsbApAQCAtMSw3MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29u
ZmlnLmgiCi0jaW1wb3J0ICJHUFVTaGFkZXJNb2R1bGUuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUp
Ci0KLSNpbXBvcnQgIkdQVURldmljZS5oIgotI2ltcG9ydCAiR1BVU2hhZGVyTW9kdWxlRGVzY3Jp
cHRvci5oIgotI2ltcG9ydCAiTG9nZ2luZy5oIgotCi0jaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgot
I2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1SZWZQdHI8R1BVU2hhZGVyTW9kdWxlPiBHUFVTaGFkZXJNb2R1bGU6OmNyZWF0ZShjb25z
dCBHUFVEZXZpY2UmIGRldmljZSwgR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvciYmIGRlc2NyaXB0
b3IpCi17Ci0gICAgaWYgKCFkZXZpY2UucGxhdGZvcm1EZXZpY2UoKSkgewotICAgICAgICBMT0co
V2ViR1BVLCAiR1BVU2hhZGVyTW9kdWxlOjpjcmVhdGUoKTogSW52YWxpZCBHUFVEZXZpY2UhIik7
Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIFBsYXRmb3JtU2hhZGVyTW9k
dWxlU21hcnRQdHIgbW9kdWxlOwotCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwot
Ci0gICAgTlNFcnJvciAqZXJyb3IgPSBbTlNFcnJvciBlcnJvcldpdGhEb21haW46QCJjb20uYXBw
bGUuV2ViS2l0LkdQVSIgY29kZToxIHVzZXJJbmZvOm5pbF07Ci0gICAgbW9kdWxlID0gYWRvcHRO
UyhbZGV2aWNlLnBsYXRmb3JtRGV2aWNlKCkgbmV3TGlicmFyeVdpdGhTb3VyY2U6ZGVzY3JpcHRv
ci5jb2RlIG9wdGlvbnM6bmlsIGVycm9yOiZlcnJvcl0pOwotICAgIGlmICghbW9kdWxlKQotICAg
ICAgICBMT0coV2ViR1BVLCAiU2hhZGVyIGNvbXBpbGF0aW9uIGVycm9yOiAlcyIsIFtbZXJyb3Ig
bG9jYWxpemVkRGVzY3JpcHRpb25dIFVURjhTdHJpbmddKTsKLQotICAgIEVORF9CTE9DS19PQkpD
X0VYQ0VQVElPTlM7Ci0KLSAgICBpZiAoIW1vZHVsZSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0KLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEdQVVNoYWRlck1vZHVsZShXVEZNb3ZlKG1vZHVs
ZSkpKTsKLX0KLQotR1BVU2hhZGVyTW9kdWxlOjpHUFVTaGFkZXJNb2R1bGUoUGxhdGZvcm1TaGFk
ZXJNb2R1bGVTbWFydFB0ciYmIG1vZHVsZSkKLSAgICA6IG1fcGxhdGZvcm1TaGFkZXJNb2R1bGUo
V1RGTW92ZShtb2R1bGUpKQotewotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvY29jb2EvR1BVU3dhcENo
YWluTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9jb2NvYS9HUFVTd2Fw
Q2hhaW5NZXRhbC5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTNmMThmNzA5ZWRi
OWU4OWJlYzgwN2E4MDNlYzdiNWE1Yzk3Mjg2Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9jb2NvYS9H
UFVTd2FwQ2hhaW5NZXRhbC5tbQorKysgL2Rldi9udWxsCkBAIC0xLDE0NSArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJHUFVTd2FwQ2hhaW4uaCIKLQot
I2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbXBvcnQgIkdQVURldmljZS5oIgotI2ltcG9ydCAiR1BV
VGV4dHVyZS5oIgotI2ltcG9ydCAiR1BVVGV4dHVyZUZvcm1hdEVudW0uaCIKLSNpbXBvcnQgIkxv
Z2dpbmcuaCIKLQotI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KLSNpbXBvcnQgPFF1YXJ0ekNvcmUv
UXVhcnR6Q29yZS5oPgotI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1SZWZQdHI8R1BVU3dhcENoYWluPiBHUFVTd2FwQ2hhaW46OmNy
ZWF0ZSgpCi17Ci0gICAgUGxhdGZvcm1Td2FwTGF5ZXJTbWFydFB0ciBwbGF0Zm9ybUxheWVyOwot
Ci0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotCi0gICAgcGxhdGZvcm1MYXllciA9
IGFkb3B0TlMoW1tDQU1ldGFsTGF5ZXIgYWxsb2NdIGluaXRdKTsKLQotICAgIFtwbGF0Zm9ybUxh
eWVyIHNldE9wYXF1ZTowXTsKLSAgICBbcGxhdGZvcm1MYXllciBzZXROYW1lOkAiV2ViR1BVIExh
eWVyIl07Ci0KLSAgICAvLyBGSVhNRTogRm9yIG5vdywgZGVmYXVsdCB0byB0aGlzIHVzYWdlIGZs
YWcuCi0gICAgW3BsYXRmb3JtTGF5ZXIgc2V0RnJhbWVidWZmZXJPbmx5OllFU107Ci0KLSAgICBF
TkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotCi0gICAgaWYgKCFwbGF0Zm9ybUxheWVyKSB7Ci0g
ICAgICAgIExPRyhXZWJHUFUsICJHUFVTd2FwQ2hhaW46OmNyZWF0ZSgpOiBVbmFibGUgdG8gY3Jl
YXRlIENBTWV0YWxMYXllciEiKTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0g
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBHUFVTd2FwQ2hhaW4oV1RGTW92ZShwbGF0Zm9ybUxheWVy
KSkpOwotfQotCi1HUFVTd2FwQ2hhaW46OkdQVVN3YXBDaGFpbihQbGF0Zm9ybVN3YXBMYXllclNt
YXJ0UHRyJiYgcGxhdGZvcm1MYXllcikKLSAgICA6IG1fcGxhdGZvcm1Td2FwTGF5ZXIoV1RGTW92
ZShwbGF0Zm9ybUxheWVyKSkKLXsKLX0KLQotdm9pZCBHUFVTd2FwQ2hhaW46OnNldERldmljZShj
b25zdCBHUFVEZXZpY2UmIGRldmljZSkKLXsKLSAgICBpZiAoIWRldmljZS5wbGF0Zm9ybURldmlj
ZSgpKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVTd2FwQ2hhaW46OnNldERldmljZSgpOiBN
VExEZXZpY2UgZG9lcyBub3QgZXhpc3QhIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBbbV9wbGF0Zm9ybVN3YXBMYXllciBzZXREZXZpY2U6ZGV2aWNlLnBsYXRmb3JtRGV2aWNlKCld
OwotfQotCi1zdGF0aWMgc3RkOjpvcHRpb25hbDxQbGF0Zm9ybVRleHR1cmVGb3JtYXQ+IHBsYXRm
b3JtVGV4dHVyZUZvcm1hdEZvckdQVVRleHR1cmVGb3JtYXQoR1BVVGV4dHVyZUZvcm1hdEVudW0g
Zm9ybWF0KQotewotICAgIHN3aXRjaCAoZm9ybWF0KSB7Ci0gICAgICAgIGNhc2UgR1BVVGV4dHVy
ZUZvcm1hdEVudW06OlI4RzhCOEE4VW5vcm06Ci0gICAgICAgICAgICByZXR1cm4gTVRMUGl4ZWxG
b3JtYXRSR0JBOFVub3JtOwotICAgICAgICBjYXNlIEdQVVRleHR1cmVGb3JtYXRFbnVtOjpSOEc4
QjhBOFVpbnQ6Ci0gICAgICAgICAgICByZXR1cm4gTVRMUGl4ZWxGb3JtYXRSR0JBOFVpbnQ7Ci0g
ICAgICAgIGNhc2UgR1BVVGV4dHVyZUZvcm1hdEVudW06OkI4RzhSOEE4VW5vcm06Ci0gICAgICAg
ICAgICByZXR1cm4gTVRMUGl4ZWxGb3JtYXRCR1JBOFVub3JtOwotICAgICAgICBjYXNlIEdQVVRl
eHR1cmVGb3JtYXRFbnVtOjpEMzJGbG9hdFM4VWludDoKLSAgICAgICAgICAgIHJldHVybiBNVExQ
aXhlbEZvcm1hdERlcHRoMzJGbG9hdF9TdGVuY2lsODsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAg
ICAgICAgIExPRyhXZWJHUFUsICJHUFVTd2FwQ2hhaW46OnNldEZvcm1hdCgpOiBJbnZhbGlkIHRl
eHR1cmUgZm9ybWF0IHNwZWNpZmllZCEiKTsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7Ci0gICAgfQotfQotCi12b2lkIEdQVVN3YXBDaGFpbjo6c2V0Rm9ybWF0KEdQVVRleHR1cmVG
b3JtYXRFbnVtIGZvcm1hdCkKLXsKLSAgICBhdXRvIHJlc3VsdCA9IHBsYXRmb3JtVGV4dHVyZUZv
cm1hdEZvckdQVVRleHR1cmVGb3JtYXQoZm9ybWF0KTsKLSAgICBpZiAoIXJlc3VsdCkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgYXV0byBtdGxSZXN1bHQgPSBzdGF0aWNfY2FzdDxNVExQaXhlbEZv
cm1hdD4ocmVzdWx0LnZhbHVlKCkpOwotCi0gICAgc3dpdGNoIChtdGxSZXN1bHQpIHsKLSAgICBj
YXNlIE1UTFBpeGVsRm9ybWF0QkdSQThVbm9ybToKLSAgICAvLyBGSVhNRTogQWRkIHRoZSBvdGhl
ciBzdXBwb3J0ZWQgc3dhcCBsYXllciBmb3JtYXRzIGFzIHRoZXkgYXJlIGFkZGVkIHRvIEdQVSBz
cGVjLgotICAgIC8vICBNVExQaXhlbEZvcm1hdEJHUkE4VW5vcm1fc1JHQiwgTVRMUGl4ZWxGb3Jt
YXRSR0JBMTZGbG9hdCwgTVRMUGl4ZWxGb3JtYXRCR1JBMTBfWFIsIGFuZCBNVExQaXhlbEZvcm1h
dEJHUkExMF9YUl9zUkdCLgotICAgICAgICBbbV9wbGF0Zm9ybVN3YXBMYXllciBzZXRQaXhlbEZv
cm1hdDptdGxSZXN1bHRdOwotICAgICAgICByZXR1cm47Ci0gICAgZGVmYXVsdDoKLSAgICAgICAg
TE9HKFdlYkdQVSwgIkdQVVN3YXBDaGFpbjo6c2V0Rm9ybWF0KCk6IFVuc3VwcG9ydGVkIE1UTFBp
eGVsRm9ybWF0ISIpOwotICAgIH0KLX0KLQotdm9pZCBHUFVTd2FwQ2hhaW46OnJlc2hhcGUoaW50
IHdpZHRoLCBpbnQgaGVpZ2h0KQotewotICAgIFttX3BsYXRmb3JtU3dhcExheWVyIHNldEJvdW5k
czpDR1JlY3RNYWtlKDAsIDAsIHdpZHRoLCBoZWlnaHQpXTsKLSAgICBbbV9wbGF0Zm9ybVN3YXBM
YXllciBzZXREcmF3YWJsZVNpemU6Q0dTaXplTWFrZSh3aWR0aCwgaGVpZ2h0KV07Ci19Ci0KLVJl
ZlB0cjxHUFVUZXh0dXJlPiBHUFVTd2FwQ2hhaW46OmdldE5leHRUZXh0dXJlKCkKLXsKLSAgICBS
ZXRhaW5QdHI8TVRMVGV4dHVyZT4gbXRsVGV4dHVyZTsKLQotICAgIGlmIChhdXRvIGRyYXdhYmxl
ID0gcmV0YWluUHRyKFttX3BsYXRmb3JtU3dhcExheWVyIG5leHREcmF3YWJsZV0pKQotICAgICAg
ICBtdGxUZXh0dXJlID0gcmV0YWluUHRyKFtkcmF3YWJsZSB0ZXh0dXJlXSk7Ci0KLSAgICBpZiAo
IW10bFRleHR1cmUpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVN3YXBDaGFpbjo6Z2V0TmV4
dFRleHR1cmUoKTogVW5hYmxlIHRvIGdldCBuZXh0IE1UTFRleHR1cmUhIik7Ci0gICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgIH0KLQotICAgIHJldHVybiBHUFVUZXh0dXJlOjpjcmVhdGUoV1RG
TW92ZShtdGxUZXh0dXJlKSk7Ci19Ci0KLXZvaWQgR1BVU3dhcENoYWluOjpwcmVzZW50KCkKLXsK
LSAgICAvLyBGSVhNRTogVW5pbXBsZW1lbnRlZCBzdHViLgotfQotCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvY29jb2EvR1BVVGV4dHVyZU1ldGFsLm1tIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvY29jb2EvR1BVVGV4dHVyZU1ldGFsLm1tCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA1MDc4NTdiNmYzYWI1NTRhYTBmYTVjYTdkM2FiYTQ5MGU0Yzdm
Yjc5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L2NvY29hL0dQVVRleHR1cmVNZXRhbC5tbQorKysgL2Rl
di9udWxsCkBAIC0xLDY0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIK
LSNpbXBvcnQgIkdQVVRleHR1cmUuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbXBvcnQg
IkxvZ2dpbmcuaCIKLQotI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KLSNpbXBvcnQgPHd0Zi9CbG9j
a09iakNFeGNlcHRpb25zLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUmVmPEdQVVRleHR1
cmU+IEdQVVRleHR1cmU6OmNyZWF0ZShQbGF0Zm9ybVRleHR1cmVTbWFydFB0ciYmIHRleHR1cmUp
Ci17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR1BVVGV4dHVyZShXVEZNb3ZlKHRleHR1cmUp
KSk7Ci19Ci0KLUdQVVRleHR1cmU6OkdQVVRleHR1cmUoUmV0YWluUHRyPE1UTFRleHR1cmU+JiYg
dGV4dHVyZSkKLSAgICA6IG1fcGxhdGZvcm1UZXh0dXJlKFdURk1vdmUodGV4dHVyZSkpCi17Ci19
Ci0KLVJlZlB0cjxHUFVUZXh0dXJlPiBHUFVUZXh0dXJlOjpjcmVhdGVEZWZhdWx0VGV4dHVyZVZp
ZXcoKQotewotICAgIFJldGFpblB0cjxNVExUZXh0dXJlPiB0ZXh0dXJlOwotCi0gICAgdGV4dHVy
ZSA9IGFkb3B0TlMoW21fcGxhdGZvcm1UZXh0dXJlIG5ld1RleHR1cmVWaWV3V2l0aFBpeGVsRm9y
bWF0Om1fcGxhdGZvcm1UZXh0dXJlLmdldCgpLnBpeGVsRm9ybWF0XSk7Ci0KLSAgICBpZiAoIXRl
eHR1cmUpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVRleHR1cmU6OmNyZWF0ZURlZmF1bHRU
ZXh0dXJlVmlldygpOiBVbmFibGUgdG8gY3JlYXRlIE1UTFRleHR1cmUgdmlldyEiKTsKLSAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgcmV0dXJuIEdQVVRleHR1cmU6OmNyZWF0
ZShXVEZNb3ZlKHRleHR1cmUpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5k
aWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMu
dHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggOTY1YTk1YmQ2ZWViNDc3ZmEw
OTJlYTNlNDIwZGZlNTRhODMzNjBhNy4uMjkzOWU4YWQ1M2U3ZDc1N2UzMTMyY2EyOTYyM2Y5Yzg3
NjQxNTVmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291
cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTMwMSw3ICszMDEsNiBAQCBNb2R1bGVzL3dlYnNv
Y2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcAogTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcAogCiBNb2R1bGVzL3dlYmdwdS9ET01XaW5kb3dX
ZWJHUFUuY3BwCi1Nb2R1bGVzL3dlYmdwdS9HUFVEZXZpY2UuY3BwCiBNb2R1bGVzL3dlYmdwdS9X
ZWJHUFUuY3BwCiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVBZGFwdGVyLmNwcAogTW9kdWxlcy93ZWJn
cHUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5jcHAKQEAgLTE3MzMsMjcgKzE3MzIsMjggQEAgcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvU291cmNlR3JhcGhpYy5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU3BvdExp
Z2h0U291cmNlLmNwcAogCi1wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5QnVmZmVyLmNw
cAotcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeUNvbW1hbmRCdWZmZXIuY3BwCi1wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5Q29tbWFuZFF1ZXVlLmNwcAotcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVUxlZ2FjeUNvbXB1dGVDb21tYW5kRW5jb2Rlci5jcHAKLXBsYXRmb3JtL2dy
YXBoaWNzL2dwdS9HUFVMZWdhY3lDb21wdXRlUGlwZWxpbmVTdGF0ZS5jcHAKLXBsYXRmb3JtL2dy
YXBoaWNzL2dwdS9HUFVMZWdhY3lEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmNwcAotcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeURlcHRoU3RlbmNpbFN0YXRlLmNwcAotcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVUxlZ2FjeURldmljZS5jcHAKLXBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVM
ZWdhY3lEcmF3YWJsZS5jcHAKLXBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lGdW5jdGlv
bi5jcHAKLXBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lMaWJyYXJ5LmNwcAotcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeVJlbmRlckNvbW1hbmRFbmNvZGVyLmNwcAotcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5j
cHAKLXBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lSZW5kZXJQYXNzQ29sb3JBdHRhY2ht
ZW50RGVzY3JpcHRvci5jcHAKLXBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lSZW5kZXJQ
YXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5jcHAKLXBsYXRmb3JtL2dyYXBoaWNzL2dwdS9H
UFVMZWdhY3lSZW5kZXJQYXNzRGVzY3JpcHRvci5jcHAKLXBsYXRmb3JtL2dyYXBoaWNzL2dwdS9H
UFVMZWdhY3lSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuY3BwCi1wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmNwcAot
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeVJlbmRlclBpcGVsaW5lU3RhdGUuY3BwCi1w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5VGV4dHVyZS5jcHAKLXBsYXRmb3JtL2dyYXBo
aWNzL2dwdS9HUFVMZWdhY3lUZXh0dXJlRGVzY3JpcHRvci5jcHAKK3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9HUFVEZXZpY2UuY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L0dQVUxlZ2Fj
eUJ1ZmZlci5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvR1BVTGVnYWN5Q29tbWFu
ZEJ1ZmZlci5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvR1BVTGVnYWN5Q29tbWFu
ZFF1ZXVlLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9HUFVMZWdhY3lDb21wdXRl
Q29tbWFuZEVuY29kZXIuY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L0dQVUxlZ2Fj
eUNvbXB1dGVQaXBlbGluZVN0YXRlLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9H
UFVMZWdhY3lEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L2xlZ2FjeS9HUFVMZWdhY3lEZXB0aFN0ZW5jaWxTdGF0ZS5jcHAKK3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9sZWdhY3kvR1BVTGVnYWN5RGV2aWNlLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xl
Z2FjeS9HUFVMZWdhY3lEcmF3YWJsZS5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kv
R1BVTGVnYWN5RnVuY3Rpb24uY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L0dQVUxl
Z2FjeUxpYnJhcnkuY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L0dQVUxlZ2FjeVJl
bmRlckNvbW1hbmRFbmNvZGVyLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9HUFVM
ZWdhY3lSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuY3BwCitwbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvbGVnYWN5L0dQVUxlZ2FjeVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9y
LmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9HUFVMZWdhY3lSZW5kZXJQYXNzRGVw
dGhBdHRhY2htZW50RGVzY3JpcHRvci5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kv
R1BVTGVnYWN5UmVuZGVyUGFzc0Rlc2NyaXB0b3IuY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9ncHUv
bGVnYWN5L0dQVUxlZ2FjeVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5j
cHAKK3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9HUFVMZWdhY3lSZW5k
ZXJQaXBlbGluZVN0YXRlLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9HUFVMZWdh
Y3lUZXh0dXJlLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9HUFVMZWdhY3lUZXh0
dXJlRGVzY3JpcHRvci5jcHAKIAogcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT0JveC5jcHAKIHBs
YXRmb3JtL2dyYXBoaWNzL2lzby9JU09PcmlnaW5hbEZvcm1hdEJveC5jcHAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
Q29jb2EudHh0CmluZGV4IGExNDgwZmJhNmY5NDBhNmI2ODdkM2MzZTkwZjBhNTFmMTMxZjc3MWIu
LmZkODMxZTY5MjY3OGQxNzE2M2U1NjEwNTViMWVjMDEyNjJjNzhkOTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNl
c0NvY29hLnR4dApAQCAtMjcsMTQgKzI3LDYgQEAgTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBs
dWdpblJlcGxhY2VtZW50Lm1tCiBNb2R1bGVzL3BsdWdpbnMvWW91VHViZVBsdWdpblJlcGxhY2Vt
ZW50LmNwcAogTW9kdWxlcy93ZWJkYXRhYmFzZS9jb2NvYS9EYXRhYmFzZU1hbmFnZXJDb2NvYS5t
bQogCi1Nb2R1bGVzL3dlYmdwdS9jb2NvYS9HUFVDb21tYW5kQnVmZmVyTWV0YWwubW0KLU1vZHVs
ZXMvd2ViZ3B1L2NvY29hL0dQVURldmljZU1ldGFsLm1tCi1Nb2R1bGVzL3dlYmdwdS9jb2NvYS9H
UFVRdWV1ZU1ldGFsLm1tCi1Nb2R1bGVzL3dlYmdwdS9jb2NvYS9HUFVSZW5kZXJQaXBlbGluZU1l
dGFsLm1tCi1Nb2R1bGVzL3dlYmdwdS9jb2NvYS9HUFVTaGFkZXJNb2R1bGVNZXRhbC5tbQotTW9k
dWxlcy93ZWJncHUvY29jb2EvR1BVU3dhcENoYWluTWV0YWwubW0KLU1vZHVsZXMvd2ViZ3B1L2Nv
Y29hL0dQVVRleHR1cmVNZXRhbC5tbQotCiBhY2Nlc3NpYmlsaXR5L2lvcy9BY2Nlc3NpYmlsaXR5
T2JqZWN0SU9TLm1tCiBhY2Nlc3NpYmlsaXR5L2lvcy9BWE9iamVjdENhY2hlSU9TLm1tCiBhY2Nl
c3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQpAQCAtMzI2
LDYgKzMxOCwxMyBAQCBwbGF0Zm9ybS9ncmFwaGljcy9jdi9QaXhlbEJ1ZmZlckNvbmZvcm1lckNW
LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVGV4dHVyZUNhY2hlQ1YubW0KIHBsYXRmb3JtL2dy
YXBoaWNzL2N2L1ZpZGVvVGV4dHVyZUNvcGllckNWLmNwcAogCitwbGF0Zm9ybS9ncmFwaGljcy9n
cHUvY29jb2EvR1BVQ29tbWFuZEJ1ZmZlck1ldGFsLm1tCitwbGF0Zm9ybS9ncmFwaGljcy9ncHUv
Y29jb2EvR1BVRGV2aWNlTWV0YWwubW0KK3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVR
dWV1ZU1ldGFsLm1tCitwbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUmVuZGVyUGlwZWxp
bmVNZXRhbC5tbQorcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVNoYWRlck1vZHVsZU1l
dGFsLm1tCitwbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVU3dhcENoYWluTWV0YWwubW0K
K3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVUZXh0dXJlTWV0YWwubW0KIHBsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9UZXh0dXJlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RpbGluZ0Rh
dGEuY3BwCiAKQEAgLTM1MiwyNyArMzUxLDI3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9TaW1w
bGVGb250RGF0YUNvcmVUZXh0LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLm1t
CiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViS2l0TlNJbWFnZUV4dHJhcy5tbQogCi1wbGF0Zm9y
bS9ncmFwaGljcy9tZXRhbC9HUFVMZWdhY3lCdWZmZXJNZXRhbC5tbQotcGxhdGZvcm0vZ3JhcGhp
Y3MvbWV0YWwvR1BVTGVnYWN5Q29tbWFuZEJ1ZmZlck1ldGFsLm1tCi1wbGF0Zm9ybS9ncmFwaGlj
cy9tZXRhbC9HUFVMZWdhY3lDb21tYW5kUXVldWVNZXRhbC5tbQotcGxhdGZvcm0vZ3JhcGhpY3Mv
bWV0YWwvR1BVTGVnYWN5Q29tcHV0ZUNvbW1hbmRFbmNvZGVyTWV0YWwubW0KLXBsYXRmb3JtL2dy
YXBoaWNzL21ldGFsL0dQVUxlZ2FjeUNvbXB1dGVQaXBlbGluZVN0YXRlTWV0YWwubW0KLXBsYXRm
b3JtL2dyYXBoaWNzL21ldGFsL0dQVUxlZ2FjeURlcHRoU3RlbmNpbERlc2NyaXB0b3JNZXRhbC5t
bQotcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5RGVwdGhTdGVuY2lsU3RhdGVNZXRh
bC5tbQotcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5RGV2aWNlTWV0YWwubW0KLXBs
YXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVUxlZ2FjeURyYXdhYmxlTWV0YWwubW0KLXBsYXRmb3Jt
L2dyYXBoaWNzL21ldGFsL0dQVUxlZ2FjeUZ1bmN0aW9uTWV0YWwubW0KLXBsYXRmb3JtL2dyYXBo
aWNzL21ldGFsL0dQVUxlZ2FjeUxpYnJhcnlNZXRhbC5tbQotcGxhdGZvcm0vZ3JhcGhpY3MvbWV0
YWwvR1BVTGVnYWN5UmVuZGVyQ29tbWFuZEVuY29kZXJNZXRhbC5tbQotcGxhdGZvcm0vZ3JhcGhp
Y3MvbWV0YWwvR1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yTWV0YWwubW0K
LXBsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVUxlZ2FjeVJlbmRlclBhc3NDb2xvckF0dGFjaG1l
bnREZXNjcmlwdG9yTWV0YWwubW0KLXBsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVUxlZ2FjeVJl
bmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yTWV0YWwubW0KLXBsYXRmb3JtL2dyYXBo
aWNzL21ldGFsL0dQVUxlZ2FjeVJlbmRlclBhc3NEZXNjcmlwdG9yTWV0YWwubW0KLXBsYXRmb3Jt
L2dyYXBoaWNzL21ldGFsL0dQVUxlZ2FjeVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVz
Y3JpcHRvck1ldGFsLm1tCi1wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVMZWdhY3lSZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3JNZXRhbC5tbQotcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVn
YWN5UmVuZGVyUGlwZWxpbmVTdGF0ZU1ldGFsLm1tCi1wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9H
UFVMZWdhY3lUZXh0dXJlRGVzY3JpcHRvck1ldGFsLm1tCi1wbGF0Zm9ybS9ncmFwaGljcy9tZXRh
bC9HUFVMZWdhY3lUZXh0dXJlTWV0YWwubW0KK3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kv
Y29jb2EvR1BVTGVnYWN5QnVmZmVyTWV0YWwubW0KK3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdh
Y3kvY29jb2EvR1BVTGVnYWN5Q29tbWFuZEJ1ZmZlck1ldGFsLm1tCitwbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvbGVnYWN5L2NvY29hL0dQVUxlZ2FjeUNvbW1hbmRRdWV1ZU1ldGFsLm1tCitwbGF0Zm9y
bS9ncmFwaGljcy9ncHUvbGVnYWN5L2NvY29hL0dQVUxlZ2FjeUNvbXB1dGVDb21tYW5kRW5jb2Rl
ck1ldGFsLm1tCitwbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L2NvY29hL0dQVUxlZ2FjeUNv
bXB1dGVQaXBlbGluZVN0YXRlTWV0YWwubW0KK3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kv
Y29jb2EvR1BVTGVnYWN5RGVwdGhTdGVuY2lsRGVzY3JpcHRvck1ldGFsLm1tCitwbGF0Zm9ybS9n
cmFwaGljcy9ncHUvbGVnYWN5L2NvY29hL0dQVUxlZ2FjeURlcHRoU3RlbmNpbFN0YXRlTWV0YWwu
bW0KK3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvY29jb2EvR1BVTGVnYWN5RGV2aWNlTWV0
YWwubW0KK3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvY29jb2EvR1BVTGVnYWN5RHJhd2Fi
bGVNZXRhbC5tbQorcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9jb2NvYS9HUFVMZWdhY3lG
dW5jdGlvbk1ldGFsLm1tCitwbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L2NvY29hL0dQVUxl
Z2FjeUxpYnJhcnlNZXRhbC5tbQorcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9jb2NvYS9H
UFVMZWdhY3lSZW5kZXJDb21tYW5kRW5jb2Rlck1ldGFsLm1tCitwbGF0Zm9ybS9ncmFwaGljcy9n
cHUvbGVnYWN5L2NvY29hL0dQVUxlZ2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvck1l
dGFsLm1tCitwbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L2NvY29hL0dQVUxlZ2FjeVJlbmRl
clBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yTWV0YWwubW0KK3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9sZWdhY3kvY29jb2EvR1BVTGVnYWN5UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2Ny
aXB0b3JNZXRhbC5tbQorcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9jb2NvYS9HUFVMZWdh
Y3lSZW5kZXJQYXNzRGVzY3JpcHRvck1ldGFsLm1tCitwbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVn
YWN5L2NvY29hL0dQVUxlZ2FjeVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRv
ck1ldGFsLm1tCitwbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L2NvY29hL0dQVUxlZ2FjeVJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvck1ldGFsLm1tCitwbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVn
YWN5L2NvY29hL0dQVUxlZ2FjeVJlbmRlclBpcGVsaW5lU3RhdGVNZXRhbC5tbQorcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L2xlZ2FjeS9jb2NvYS9HUFVMZWdhY3lUZXh0dXJlRGVzY3JpcHRvck1ldGFs
Lm1tCitwbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L2NvY29hL0dQVUxlZ2FjeVRleHR1cmVN
ZXRhbC5tbQogCiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uczNET3BlbkdMLmNw
cAogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTENvbW1vbi5jcHAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCBjMjMzNGM2MDRlNzNiODYwODI1Yjg5MDU3YmM5YTg5NDE5OWViMTM1Li4wNTIyODFlN2Zm
NmY5YjZmZDkxM2ZiY2NjNjE1NzViNzBlYzZjZjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04OTEsNiArODkxLDQwIEBACiAJ
CTMxMjg4RTc1MEUzMDA1RDYwMDM2MTlBRSAvKiBDU1NLZXlmcmFtZXNSdWxlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTI4OEU3MTBFMzAwNUQ2MDAz
NjE5QUUgLyogQ1NTS2V5ZnJhbWVzUnVsZS5oICovOyB9OwogCQkzMTI4Q0E2QjE0NzMzMTYzMDA3
NEM3MkEgLyogTm90aWZpY2F0aW9uQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEyOENBNkExNDczMzE2MzAwNzRDNzJBIC8qIE5vdGlm
aWNhdGlvbkNvbnRyb2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkzMTJDMEM0MTE0NkRDNkNDMDAxNkM5MTEgLyogTm90aWZpY2F0aW9uLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMzNGNzA0RjBG
QjQ5Q0EyMDA4RTEyQTYgLyogTm90aWZpY2F0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMzEyRkY5MTEyMUE0QzM2NTAwRUIxOTlEIC8qIEdQ
VUNvbW1hbmRCdWZmZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDMxMkZGOEJEMjFBNEMyRjEwMEVCMTk5RCAvKiBHUFVDb21tYW5kQnVmZmVyLmggKi87
IH07CisJCTMxMkZGOTEyMjFBNEMzNjUwMEVCMTk5RCAvKiBHUFVEZXZpY2UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMkZGOEJFMjFBNEMyRjEwMEVC
MTk5RCAvKiBHUFVEZXZpY2UuaCAqLzsgfTsKKwkJMzEyRkY5MTMyMUE0QzM2NTAwRUIxOTlEIC8q
IEdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDMxMkZGOEM0MjFBNEMyRjQwMEVCMTk5RCAvKiBHUFVQaXBlbGlu
ZURlc2NyaXB0b3JCYXNlLmggKi87IH07CisJCTMxMkZGOTE0MjFBNEMzNjUwMEVCMTk5RCAvKiBH
UFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMzEyRkY4QzIyMUE0QzJGMzAwRUIxOTlEIC8qIEdQVVBpcGVsaW5l
U3RhZ2VEZXNjcmlwdG9yLmggKi87IH07CisJCTMxMkZGOTE1MjFBNEMzNjUwMEVCMTk5RCAvKiBH
UFVRdWV1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MzEyRkY4QzEyMUE0QzJGMjAwRUIxOTlEIC8qIEdQVVF1ZXVlLmggKi87IH07CisJCTMxMkZGOTE2
MjFBNEMzNjUwMEVCMTk5RCAvKiBHUFVSZW5kZXJQaXBlbGluZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEyRkY4QjkyMUE0QzJFRjAwRUIxOTlEIC8q
IEdQVVJlbmRlclBpcGVsaW5lLmggKi87IH07CisJCTMxMkZGOTE3MjFBNEMzNjUwMEVCMTk5RCAv
KiBHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMkZGOEJDMjFBNEMyRjAwMEVCMTk5RCAvKiBHUFVSZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3IuaCAqLzsgfTsKKwkJMzEyRkY5MTgyMUE0QzM2NTAwRUIxOTlE
IC8qIEdQVVNoYWRlck1vZHVsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMzEyRkY4QkIyMUE0QzJGMDAwRUIxOTlEIC8qIEdQVVNoYWRlck1vZHVsZS5o
ICovOyB9OworCQkzMTJGRjkxOTIxQTRDMzY1MDBFQjE5OUQgLyogR1BVU2hhZGVyTW9kdWxlRGVz
Y3JpcHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MzEyRkY4QzAyMUE0QzJGMjAwRUIxOTlEIC8qIEdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaCAq
LzsgfTsKKwkJMzEyRkY5MUEyMUE0QzM2NTAwRUIxOTlEIC8qIEdQVVN3YXBDaGFpbi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEyRkY4QkEyMUE0QzJF
RjAwRUIxOTlEIC8qIEdQVVN3YXBDaGFpbi5oICovOyB9OworCQkzMTJGRjkxQjIxQTRDMzY1MDBF
QjE5OUQgLyogR1BVVGV4dHVyZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMzEyRkY4QzUyMUE0QzJGNDAwRUIxOTlEIC8qIEdQVVRleHR1cmUuaCAqLzsg
fTsKKwkJMzEyRkY5MUMyMUE0QzM2NTAwRUIxOTlEIC8qIEdQVVRleHR1cmVGb3JtYXRFbnVtLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTJGRjhDMzIx
QTRDMkYzMDBFQjE5OUQgLyogR1BVVGV4dHVyZUZvcm1hdEVudW0uaCAqLzsgfTsKKwkJMzEyRkY5
MUQyMUE0QzM3MzAwRUIxOTlEIC8qIEdQVUxlZ2FjeVJlbmRlclBhc3NEZXNjcmlwdG9yLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTJGRjhGRjIxQTRD
MzNGMDBFQjE5OUQgLyogR1BVTGVnYWN5UmVuZGVyUGFzc0Rlc2NyaXB0b3IuaCAqLzsgfTsKKwkJ
MzEyRkY5MUUyMUE0QzM3MzAwRUIxOTlEIC8qIEdQVUxlZ2FjeUJ1ZmZlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEyRkY5MDIyMUE0QzMzRjAwRUIx
OTlEIC8qIEdQVUxlZ2FjeUJ1ZmZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTMxMkZGOTFGMjFBNEMzNzMwMEVCMTk5RCAvKiBHUFVMZWdhY3lU
ZXh0dXJlRGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMzEyRkY5MDQyMUE0QzMzRjAwRUIxOTlEIC8qIEdQVUxlZ2FjeVRleHR1cmVEZXNj
cmlwdG9yLmggKi87IH07CisJCTMxMkZGOTIwMjFBNEMzNzMwMEVCMTk5RCAvKiBHUFVMZWdhY3lS
ZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMkZGOTBBMjFBNEMzM0YwMEVCMTk5RCAvKiBHUFVMZWdh
Y3lSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuaCAqLzsgfTsKKwkJMzEyRkY5MjEyMUE0
QzM3MzAwRUIxOTlEIC8qIEdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVz
Y3JpcHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MzEyRkY5MEIyMUE0QzMzRjAwRUIxOTlEIC8qIEdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lQ29sb3JB
dHRhY2htZW50RGVzY3JpcHRvci5oICovOyB9OworCQkzMTJGRjkyMjIxQTRDMzczMDBFQjE5OUQg
LyogR1BVTGVnYWN5TGlicmFyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMzEyRkY5MEMyMUE0QzMzRjAwRUIxOTlEIC8qIEdQVUxlZ2FjeUxpYnJhcnku
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkzMTJG
RjkyMzIxQTRDMzczMDBFQjE5OUQgLyogR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVTdGF0ZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEyRkY5MEUyMUE0
QzMzRjAwRUIxOTlEIC8qIEdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lU3RhdGUuaCAqLzsgfTsKKwkJ
MzEyRkY5MjQyMUE0QzM3MzAwRUIxOTlEIC8qIEdQVUxlZ2FjeUZ1bmN0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTJGRjkxMDIxQTRDMzNGMDBF
QjE5OUQgLyogR1BVTGVnYWN5RnVuY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQkzMTJGRjkyNTIxQTRDMzhCMDBFQjE5OUQgLyogR1BVTGVn
YWN5UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMkZGOEQxMjFBNEMzM0YwMEVCMTk5RCAv
KiBHUFVMZWdhY3lSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5oICovOyB9Owor
CQkzMTJGRjkyNjIxQTRDMzhCMDBFQjE5OUQgLyogR1BVTGVnYWN5RGVwdGhTdGVuY2lsRGVzY3Jp
cHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEy
RkY4RDIyMUE0QzMzRjAwRUIxOTlEIC8qIEdQVUxlZ2FjeURlcHRoU3RlbmNpbERlc2NyaXB0b3Iu
aCAqLzsgfTsKKwkJMzEyRkY5MjcyMUE0QzM4QjAwRUIxOTlEIC8qIEdQVUxlZ2FjeURldmljZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEyRkY4RDMy
MUE0QzMzRjAwRUIxOTlEIC8qIEdQVUxlZ2FjeURldmljZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTMxMkZGOTI4MjFBNEMzOEIwMEVCMTk5RCAv
KiBHUFVMZWdhY3lUZXh0dXJlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAzMTJGRjhENDIxQTRDMzNGMDBFQjE5OUQgLyogR1BVTGVnYWN5VGV4dHVyZS5o
ICovOyB9OworCQkzMTJGRjkyOTIxQTRDMzhCMDBFQjE5OUQgLyogR1BVTGVnYWN5UmVuZGVyQ29t
bWFuZEVuY29kZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDMxMkZGOEQ2MjFBNEMzM0YwMEVCMTk5RCAvKiBHUFVMZWdhY3lSZW5kZXJDb21tYW5kRW5j
b2Rlci5oICovOyB9OworCQkzMTJGRjkyQTIxQTRDMzhCMDBFQjE5OUQgLyogR1BVTGVnYWN5Q29t
bWFuZFF1ZXVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAzMTJGRjhEOTIxQTRDMzNGMDBFQjE5OUQgLyogR1BVTGVnYWN5Q29tbWFuZFF1ZXVlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMzEyRkY5MkIy
MUE0QzM4QjAwRUIxOTlEIC8qIEdQVUxlZ2FjeURyYXdhYmxlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTJGRjhEQjIxQTRDMzNGMDBFQjE5OUQgLyog
R1BVTGVnYWN5RHJhd2FibGUuaCAqLzsgfTsKKwkJMzEyRkY5MkMyMUE0QzM4QjAwRUIxOTlEIC8q
IEdQVUxlZ2FjeUVudW1zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAzMTJGRjhEQzIxQTRDMzNGMDBFQjE5OUQgLyogR1BVTGVnYWN5RW51bXMuaCAqLzsg
fTsKKwkJMzEyRkY5MkQyMUE0QzM4QjAwRUIxOTlEIC8qIEdQVUxlZ2FjeVNpemUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMkZGOERGMjFBNEMzM0Yw
MEVCMTk5RCAvKiBHUFVMZWdhY3lTaXplLmggKi87IH07CisJCTMxMkZGOTJFMjFBNEMzOEIwMEVC
MTk5RCAvKiBHUFVMZWdhY3lSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEyRkY4RTMyMUE0
QzMzRjAwRUIxOTlEIC8qIEdQVUxlZ2FjeVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlw
dG9yLmggKi87IH07CisJCTMxMkZGOTJGMjFBNEMzOEIwMEVCMTk5RCAvKiBHUFVMZWdhY3lDb21w
dXRlQ29tbWFuZEVuY29kZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDMxMkZGOEU0MjFBNEMzM0YwMEVCMTk5RCAvKiBHUFVMZWdhY3lDb21wdXRlQ29t
bWFuZEVuY29kZXIuaCAqLzsgfTsKKwkJMzEyRkY5MzAyMUE0QzM4QjAwRUIxOTlEIC8qIEdQVUxl
Z2FjeURlcHRoU3RlbmNpbFN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAzMTJGRjhFNjIxQTRDMzNGMDBFQjE5OUQgLyogR1BVTGVnYWN5RGVwdGhT
dGVuY2lsU3RhdGUuaCAqLzsgfTsKKwkJMzEyRkY5MzEyMUE0QzM4QjAwRUIxOTlEIC8qIEdQVUxl
Z2FjeVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMzEyRkY4RTcyMUE0QzMzRjAwRUIxOTlEIC8qIEdQVUxlZ2Fj
eVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oICovOyB9OworCQkzMTJGRjkzMjIxQTRDNTUyMDBF
QjE5OUQgLyogR1BVTGVnYWN5Q29tbWFuZEJ1ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEyRkY4REUyMUE0QzMzRjAwRUIxOTlEIC8qIEdQVUxl
Z2FjeUNvbW1hbmRCdWZmZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkzMTMxNzE1NjFGQjA3OUU1MDA4RDkxRkMgLyogQ2FudmFzQmFzZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEzMTcxNTQxRkIw
NzlEMTAwOEQ5MUZDIC8qIENhbnZhc0Jhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQkzMTM1OTEwNjFFN0REQzczMDBGMzA2MzAgLyogUlRDSWNl
Q29ubmVjdGlvblN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAzMTM1OTEwMDFFN0REQzYwMDBGMzA2MzAgLyogUlRDSWNlQ29ubmVjdGlvblN0YXRl
LmggKi87IH07CiAJCTMxMzU5MTA3MUU3RERDNzMwMEYzMDYzMCAvKiBSVENJY2VHYXRoZXJpbmdT
dGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEz
NTkxMDExRTdEREM2MDAwRjMwNjMwIC8qIFJUQ0ljZUdhdGhlcmluZ1N0YXRlLmggKi87IH07CkBA
IC05MTAsMjcgKzk0NCw3IEBACiAJCTMxNDg3N0U2MUZBQUIwMjUwMEMwNTc1OSAvKiBKU09mZnNj
cmVlbkNhbnZhcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMzE0ODc3RTQxRkFBQjAyMjAwQzA1NzU5IC8qIEpTT2Zmc2NyZWVuQ2FudmFzLmggKi87IH07
CiAJCTMxNEJFM0ExMUIzMEY2QjcwMDE0MTk4MiAvKiBDU1NOYW1lZEltYWdlVmFsdWUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxNEJFM0EwMUIzMEY2
QjcwMDE0MTk4MiAvKiBDU1NOYW1lZEltYWdlVmFsdWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkzMTRCRTNBNzFCMzEwM0ZCMDAxNDE5ODIgLyog
TmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAzMTRCRTNBNTFCMzEwM0ZCMDAxNDE5ODIgLyogTmFtZWRJbWFnZUdl
bmVyYXRlZEltYWdlLmggKi87IH07Ci0JCTMxNkJEQjg2MUU2RTBBMjcwMERFMEQ1QSAvKiBHUFVM
ZWdhY3lEZXZpY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDMxNkJEQjg1MUU2RTBBMjEwMERFMEQ1QSAvKiBHUFVMZWdhY3lEZXZpY2UuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkzMTZCREI4QzFFNkUx
NTMwMDBERTBENUEgLyogV2ViTWV0YWxMYXllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMzE2QkRCOEExRTZFMTUzMDAwREUwRDVBIC8qIFdlYk1ldGFs
TGF5ZXIuaCAqLzsgfTsKLQkJMzE2QkRCOTUxRTcwQzg5NzAwREUwRDVBIC8qIEdQVUxlZ2FjeUZ1
bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAz
MTZCREI5MzFFNzBDODk3MDBERTBENUEgLyogR1BVTGVnYWN5RnVuY3Rpb24uaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkzMTZCREI5QjFFNzBDQkJG
MDBERTBENUEgLyogR1BVTGVnYWN5TGlicmFyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMzE2QkRCOTkxRTcwQ0JCRjAwREUwRDVBIC8qIEdQVUxlZ2Fj
eUxpYnJhcnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwotCQkzMTZCREJBQTFFNzFGQTkzMDBERTBENUEgLyogR1BVTGVnYWN5QnVmZmVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTZCREJBODFFNzFGQTkz
MDBERTBENUEgLyogR1BVTGVnYWN5QnVmZmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMzE2QkRCQjIxRTczNTRCQjAwREUwRDVBIC8qIEdQVUxl
Z2FjeVRleHR1cmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDMxNkJEQkIwMUU3MzU0QkIwMERFMEQ1QSAvKiBHUFVMZWdhY3lUZXh0dXJlLmggKi87IH07
Ci0JCTMxNkJEQkI4MUU3MzU3Q0IwMERFMEQ1QSAvKiBHUFVMZWdhY3lUZXh0dXJlRGVzY3JpcHRv
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE2QkRC
QjYxRTczNTdDQjAwREUwRDVBIC8qIEdQVUxlZ2FjeVRleHR1cmVEZXNjcmlwdG9yLmggKi87IH07
Ci0JCTMxNkJEQkJDMUU3Mzg4MDYwMERFMEQ1QSAvKiBHUFVMZWdhY3lDb21tYW5kUXVldWUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxNkJEQkJBMUU3
Mzg4MDYwMERFMEQ1QSAvKiBHUFVMZWdhY3lDb21tYW5kUXVldWUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkzMTZCREJDRDFFNzVGMTg0MDBERTBE
NUEgLyogR1BVTGVnYWN5RHJhd2FibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDMxNkJEQkNCMUU3NUYxNzYwMERFMEQ1QSAvKiBHUFVMZWdhY3lEcmF3
YWJsZS5oICovOyB9OwotCQkzMTZCREJDRTFFNzVGMThBMDBERTBENUEgLyogR1BVTGVnYWN5Q29t
bWFuZEJ1ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMzE2QkRCQzUxRTc1RUUyNDAwREUwRDVBIC8qIEdQVUxlZ2FjeUNvbW1hbmRCdWZmZXIuaCAq
LzsgfTsKLQkJMzE2QkRCRDMxRTc1RjdCNjAwREUwRDVBIC8qIEdQVUxlZ2FjeVJlbmRlclBhc3NE
ZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAzMTZCREJEMTFFNzVGN0FFMDBERTBENUEgLyogR1BVTGVnYWN5UmVuZGVyUGFzc0Rlc2NyaXB0
b3IuaCAqLzsgfTsKLQkJMzE2QkRCREIxRTc2MTJFMjAwREUwRDVBIC8qIEdQVUxlZ2FjeVJlbmRl
clBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTZCREJEOTFFNzYxMkRCMDBERTBENUEgLyogR1BVTGVn
YWN5UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaCAqLzsgfTsKLQkJMzE2QkRC
REYxRTc2MTM3NTAwREUwRDVBIC8qIEdQVUxlZ2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3Jp
cHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE2
QkRCREQxRTc2MTM2QzAwREUwRDVBIC8qIEdQVUxlZ2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVz
Y3JpcHRvci5oICovOyB9OwotCQkzMTZCREJFNDFFNzYxRjA1MDBERTBENUEgLyogR1BVTGVnYWN5
UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxNkJEQkUzMUU3NjFFRkYwMERFMEQ1QSAvKiBH
UFVMZWdhY3lSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5oICovOyB9OwotCQkz
MTZCREJFQjFFNzYyNDREMDBERTBENUEgLyogR1BVTGVnYWN5UmVuZGVyQ29tbWFuZEVuY29kZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxNkJEQkU5
MUU3NjI0NDQwMERFMEQ1QSAvKiBHUFVMZWdhY3lSZW5kZXJDb21tYW5kRW5jb2Rlci5oICovOyB9
OwotCQkzMTZCREJGMDFFNzYyOTIwMDBERTBENUEgLyogR1BVTGVnYWN5RGVwdGhTdGVuY2lsU3Rh
dGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxNkJE
QkVGMUU3NjI5MUIwMERFMEQ1QSAvKiBHUFVMZWdhY3lEZXB0aFN0ZW5jaWxTdGF0ZS5oICovOyB9
OwotCQkzMTZCREJGNzFFNzYyQUQ1MDBERTBENUEgLyogR1BVTGVnYWN5RGVwdGhTdGVuY2lsRGVz
Y3JpcHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MzE2QkRCRjUxRTc2MkFDRDAwREUwRDVBIC8qIEdQVUxlZ2FjeURlcHRoU3RlbmNpbERlc2NyaXB0
b3IuaCAqLzsgfTsKLQkJMzE2QkRCRkIxRTc2MkQwNDAwREUwRDVBIC8qIEdQVUxlZ2FjeUVudW1z
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTZCREJG
QTFFNzYyRDA0MDBERTBENUEgLyogR1BVTGVnYWN5RW51bXMuaCAqLzsgfTsKLQkJMzE2QkRDMDIx
RTc2MkY2NDAwREUwRDVBIC8qIEdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE2QkRCRkQxRTc2
MkY1NzAwREUwRDVBIC8qIEdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oICovOyB9
OwotCQkzMTZCREMwMzFFNzYyRjY5MDBERTBENUEgLyogR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVT
dGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE2
QkRCRkYxRTc2MkY1NzAwREUwRDVBIC8qIEdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lU3RhdGUuaCAq
LzsgfTsKLQkJMzE2QkRDMEQxRTc2MzREMjAwREUwRDVBIC8qIEdQVUxlZ2FjeVJlbmRlclBpcGVs
aW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMzE2QkRDMDkxRTc2MzQyNzAwREUwRDVBIC8qIEdQVUxlZ2Fj
eVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oICovOyB9OwogCQkzMTZE
Q0IyMDFFNzhDQTU1MDAxQjVGODcgLyogSlNSVENPZmZlckFuc3dlck9wdGlvbnMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxNkRDQjFBMUU3OENBNTUw
MDFCNUY4NyAvKiBKU1JUQ09mZmVyQW5zd2VyT3B0aW9ucy5oICovOyB9OwogCQkzMTZEQ0IyMjFF
NzhDQTU1MDAxQjVGODcgLyogSlNSVENSdHBUcmFuc2NlaXZlckRpcmVjdGlvbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE2RENCMUMxRTc4Q0E1NTAw
MUI1Rjg3IC8qIEpTUlRDUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb24uaCAqLzsgfTsKIAkJMzE2RENC
NEMxRTc5MTBBNjAwMUI1Rjg3IC8qIEpTUlRDSWNlQ29ubmVjdGlvblN0YXRlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTZEQ0I0NjFFNzkxMEE2MDAx
QjVGODcgLyogSlNSVENJY2VDb25uZWN0aW9uU3RhdGUuaCAqLzsgfTsKQEAgLTI2NTEsOSArMjY2
NSw2IEBACiAJCTkzQTgwNjE3MUUwM0I1MUMwMDhBMUYyNiAvKiBMb25nUmFuZ2UuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQTgwNjEzMUUwM0I1MUMw
MDhBMUYyNiAvKiBMb25nUmFuZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk5M0E4MDYxRTFFMDNCNTg1MDA4QTFGMjYgLyogSlNEb3VibGVSYW5n
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNBODA2
MUExRTAzQjU4NTAwOEExRjI2IC8qIEpTRG91YmxlUmFuZ2UuaCAqLzsgfTsKIAkJOTNBODA2MjAx
RTAzQjU4NTAwOEExRjI2IC8qIEpTTG9uZ1JhbmdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0E4MDYxQzFFMDNCNTg1MDA4QTFGMjYgLyogSlNMb25n
UmFuZ2UuaCAqLzsgfTsKLQkJOTNBOTUzQjAyMEVCRDNDOTAwQTYxOUY2IC8qIEdQVUxlZ2FjeUNv
bXB1dGVQaXBlbGluZVN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAzODFFMzVFQzFFOEUyM0U0MDA0M0U4NTAgLyogR1BVTGVnYWN5Q29tcHV0ZVBp
cGVsaW5lU3RhdGUuaCAqLzsgfTsKLQkJOTNBOTUzQjQyMEVCRDQzMjAwQTYxOUY2IC8qIEdQVUxl
Z2FjeUNvbXB1dGVDb21tYW5kRW5jb2Rlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMzgxRTM1RUExRThFMjBEOTAwNDNFODUwIC8qIEdQVUxlZ2FjeUNv
bXB1dGVDb21tYW5kRW5jb2Rlci5oICovOyB9OwotCQk5M0E5NTNCNTIwRUM5QzNGMDBBNjE5RjYg
LyogR1BVTGVnYWN5U2l6ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMzgxRTM1RjYxRThFNEQwRTAwNDNFODUwIC8qIEdQVUxlZ2FjeVNpemUuaCAqLzsg
fTsKIAkJOTNCMkQ4MTYwRjk5MjBEMjAwNkFFNkIyIC8qIFN1ZGRlblRlcm1pbmF0aW9uLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0IyRDgxNTBGOTky
MEQyMDA2QUU2QjIgLyogU3VkZGVuVGVybWluYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0I2QTBFNjBCMEJDQTVDMDBGNTAyN0EgLyog
Q29udGV4dE1lbnUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDkzQjZBMEU1MEIwQkNBNUMwMEY1MDI3QSAvKiBDb250ZXh0TWVudS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzQjcwRDY0MDlFQjBDN0Mw
MDlEODQ2OCAvKiBKU0RPTUJpbmRpbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDkzQjcwRDQ4MDlFQjBDN0MwMDlEODQ2OCAvKiBKU0RPTUJpbmRpbmcu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNjg0
NSw2ICs2ODU2LDkxIEBACiAJCTMxMjg4RTcxMEUzMDA1RDYwMDM2MTlBRSAvKiBDU1NLZXlmcmFt
ZXNSdWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU0tleWZyYW1lc1J1
bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzEyOENBNjcxNDczMzE1MjAwNzRD
NzJBIC8qIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gTm90aWZpY2F0aW9uQ29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTMxMjhDQTZBMTQ3MzMxNjMwMDc0QzcyQSAvKiBOb3RpZmljYXRpb25D
b250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5vdGlmaWNhdGlv
bkNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzEyRkY4QjkyMUE0
QzJFRjAwRUIxOTlEIC8qIEdQVVJlbmRlclBpcGVsaW5lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVJl
bmRlclBpcGVsaW5lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxMkZGOEJBMjFB
NEMyRUYwMEVCMTk5RCAvKiBHUFVTd2FwQ2hhaW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVU3dhcENo
YWluLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxMkZGOEJCMjFBNEMyRjAwMEVC
MTk5RCAvKiBHUFVTaGFkZXJNb2R1bGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVU2hhZGVyTW9kdWxl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxMkZGOEJDMjFBNEMyRjAwMEVCMTk5
RCAvKiBHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVUmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMx
MkZGOEJEMjFBNEMyRjEwMEVCMTk5RCAvKiBHUFVDb21tYW5kQnVmZmVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEdQVUNvbW1hbmRCdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzEy
RkY4QkUyMUE0QzJGMTAwRUIxOTlEIC8qIEdQVURldmljZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVE
ZXZpY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzEyRkY4QkYyMUE0QzJGMTAw
RUIxOTlEIC8qIEdQVURldmljZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHUFVEZXZpY2UuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMTJGRjhDMDIxQTRDMkYyMDBFQjE5OUQg
LyogR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVTaGFkZXJN
b2R1bGVEZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxMkZGOEMx
MjFBNEMyRjIwMEVCMTk5RCAvKiBHUFVRdWV1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVRdWV1ZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMTJGRjhDMjIxQTRDMkYzMDBFQjE5OUQg
LyogR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVUGlwZWxp
bmVTdGFnZURlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzEyRkY4
QzMyMUE0QzJGMzAwRUIxOTlEIC8qIEdQVVRleHR1cmVGb3JtYXRFbnVtLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEdQVVRleHR1cmVGb3JtYXRFbnVtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTMxMkZGOEM0MjFBNEMyRjQwMEVCMTk5RCAvKiBHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMzEyRkY4QzUyMUE0QzJGNDAwRUIxOTlEIC8qIEdQVVRleHR1cmUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gR1BVVGV4dHVyZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkzMTJGRjhDNzIxQTRDMzI1MDBFQjE5OUQgLyogR1BVUXVldWVNZXRhbC5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IEdQVVF1ZXVlTWV0YWwubW07IHBhdGgg
PSBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUXVldWVNZXRhbC5tbTsgc291cmNlVHJl
ZSA9IFNPVVJDRV9ST09UOyB9OworCQkzMTJGRjhDODIxQTRDMzI1MDBFQjE5OUQgLyogR1BVVGV4
dHVyZU1ldGFsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gR1BV
VGV4dHVyZU1ldGFsLm1tOyBwYXRoID0gcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVRl
eHR1cmVNZXRhbC5tbTsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OworCQkzMTJGRjhDOTIx
QTRDMzI2MDBFQjE5OUQgLyogR1BVRGV2aWNlTWV0YWwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IG5hbWUgPSBHUFVEZXZpY2VNZXRhbC5tbTsgcGF0aCA9IHBsYXRmb3JtL2dy
YXBoaWNzL2dwdS9jb2NvYS9HUFVEZXZpY2VNZXRhbC5tbTsgc291cmNlVHJlZSA9IFNPVVJDRV9S
T09UOyB9OworCQkzMTJGRjhDQTIxQTRDMzI2MDBFQjE5OUQgLyogR1BVU2hhZGVyTW9kdWxlTWV0
YWwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBHUFVTaGFkZXJN
b2R1bGVNZXRhbC5tbTsgcGF0aCA9IHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVTaGFk
ZXJNb2R1bGVNZXRhbC5tbTsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OworCQkzMTJGRjhD
QjIxQTRDMzI3MDBFQjE5OUQgLyogR1BVU3dhcENoYWluTWV0YWwubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBHUFVTd2FwQ2hhaW5NZXRhbC5tbTsgcGF0aCA9IHBs
YXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVTd2FwQ2hhaW5NZXRhbC5tbTsgc291cmNlVHJl
ZSA9IFNPVVJDRV9ST09UOyB9OworCQkzMTJGRjhDQzIxQTRDMzI3MDBFQjE5OUQgLyogR1BVQ29t
bWFuZEJ1ZmZlck1ldGFsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1l
ID0gR1BVQ29tbWFuZEJ1ZmZlck1ldGFsLm1tOyBwYXRoID0gcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L2NvY29hL0dQVUNvbW1hbmRCdWZmZXJNZXRhbC5tbTsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09U
OyB9OworCQkzMTJGRjhDRDIxQTRDMzI4MDBFQjE5OUQgLyogR1BVUmVuZGVyUGlwZWxpbmVNZXRh
bC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IEdQVVJlbmRlclBp
cGVsaW5lTWV0YWwubW07IHBhdGggPSBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUmVu
ZGVyUGlwZWxpbmVNZXRhbC5tbTsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OworCQkzMTJG
RjhDRjIxQTRDMzNGMDBFQjE5OUQgLyogR1BVTGVnYWN5VGV4dHVyZURlc2NyaXB0b3IuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gR1BVTGVnYWN5VGV4dHVyZURlc2NyaXB0b3IuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkzMTJGRjhEMDIxQTRDMzNGMDBFQjE5OUQgLyogR1BVTGVn
YWN5UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdQVUxl
Z2FjeVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTMxMkZGOEQxMjFBNEMzM0YwMEVCMTk5RCAvKiBHUFVMZWdhY3lSZW5kZXJQYXNzRGVw
dGhBdHRhY2htZW50RGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVMZWdhY3lSZW5kZXJQ
YXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkzMTJGRjhEMjIxQTRDMzNGMDBFQjE5OUQgLyogR1BVTGVnYWN5RGVwdGhTdGVuY2lsRGVz
Y3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVMZWdhY3lEZXB0aFN0ZW5jaWxEZXNjcmlwdG9y
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxMkZGOEQzMjFBNEMzM0YwMEVCMTk5
RCAvKiBHUFVMZWdhY3lEZXZpY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVTGVnYWN5RGV2aWNlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxMkZGOEQ0MjFBNEMzM0YwMEVCMTk5RCAv
KiBHUFVMZWdhY3lUZXh0dXJlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUxlZ2FjeVRleHR1cmUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzEyRkY4RDUyMUE0QzMzRjAwRUIxOTlEIC8q
IEdQVUxlZ2FjeVRleHR1cmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR1BVTGVnYWN5VGV4dHVy
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxMkZGOEQ2MjFBNEMzM0YwMEVC
MTk5RCAvKiBHUFVMZWdhY3lSZW5kZXJDb21tYW5kRW5jb2Rlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBH
UFVMZWdhY3lSZW5kZXJDb21tYW5kRW5jb2Rlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkzMTJGRjhENzIxQTRDMzNGMDBFQjE5OUQgLyogR1BVTGVnYWN5Q29tcHV0ZVBpcGVsaW5l
U3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVTGVnYWN5Q29tcHV0ZVBpcGVsaW5lU3RhdGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzEyRkY4RDgyMUE0QzMzRjAwRUIxOTlEIC8q
IEdQVUxlZ2FjeUZ1bmN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdQVUxlZ2FjeUZ1bmN0
aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzEyRkY4RDkyMUE0QzMzRjAw
RUIxOTlEIC8qIEdQVUxlZ2FjeUNvbW1hbmRRdWV1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVMZWdh
Y3lDb21tYW5kUXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzEyRkY4REEy
MUE0QzMzRjAwRUIxOTlEIC8qIEdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50
RGVzY3JpcHRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHUFVMZWdhY3lSZW5kZXJQaXBlbGlu
ZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkzMTJGRjhEQjIxQTRDMzNGMDBFQjE5OUQgLyogR1BVTGVnYWN5RHJhd2FibGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gR1BVTGVnYWN5RHJhd2FibGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMzEyRkY4REMyMUE0QzMzRjAwRUIxOTlEIC8qIEdQVUxlZ2FjeUVudW1zLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEdQVUxlZ2FjeUVudW1zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTMxMkZGOEREMjFBNEMzM0YwMEVCMTk5RCAvKiBHUFVMZWdhY3lSZW5kZXJDb21tYW5kRW5jb2Rl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHUFVMZWdhY3lSZW5kZXJDb21tYW5kRW5jb2Rlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxMkZGOERFMjFBNEMzM0YwMEVCMTk5
RCAvKiBHUFVMZWdhY3lDb21tYW5kQnVmZmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUxlZ2FjeUNv
bW1hbmRCdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzEyRkY4REYyMUE0
QzMzRjAwRUIxOTlEIC8qIEdQVUxlZ2FjeVNpemUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVTGVnYWN5
U2l6ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMTJGRjhFMDIxQTRDMzNGMDBF
QjE5OUQgLyogR1BVTGVnYWN5QnVmZmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdQVUxlZ2Fj
eUJ1ZmZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxMkZGOEUxMjFBNEMz
M0YwMEVCMTk5RCAvKiBHUFVMZWdhY3lEZXB0aFN0ZW5jaWxTdGF0ZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBHUFVMZWdhY3lEZXB0aFN0ZW5jaWxTdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTMxMkZGOEUyMjFBNEMzM0YwMEVCMTk5RCAvKiBHUFVMZWdhY3lEZXZpY2Uu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR1BVTGVnYWN5RGV2aWNlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMzEyRkY4RTMyMUE0QzMzRjAwRUIxOTlEIC8qIEdQVUxlZ2FjeVJl
bmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUxl
Z2FjeVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTMxMkZGOEU0MjFBNEMzM0YwMEVCMTk5RCAvKiBHUFVMZWdhY3lDb21w
dXRlQ29tbWFuZEVuY29kZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVTGVnYWN5Q29tcHV0ZUNvbW1h
bmRFbmNvZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxMkZGOEU1MjFBNEMz
M0YwMEVCMTk5RCAvKiBHUFVMZWdhY3lSZW5kZXJQYXNzRGVzY3JpcHRvci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBHUFVMZWdhY3lSZW5kZXJQYXNzRGVzY3JpcHRvci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTMxMkZGOEU2MjFBNEMzM0YwMEVCMTk5RCAvKiBHUFVMZWdhY3lE
ZXB0aFN0ZW5jaWxTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVMZWdhY3lEZXB0aFN0ZW5jaWxT
dGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMTJGRjhFNzIxQTRDMzNGMDBF
QjE5OUQgLyogR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkzMTJGRjhFODIxQTRDMzNGMDBFQjE5OUQgLyogR1BVTGVnYWN5Q29tcHV0
ZVBpcGVsaW5lU3RhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR1BVTGVnYWN5Q29tcHV0ZVBp
cGVsaW5lU3RhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMTJGRjhFQTIx
QTRDMzNGMDBFQjE5OUQgLyogR1BVTGVnYWN5RGVwdGhTdGVuY2lsRGVzY3JpcHRvck1ldGFsLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVTGVnYWN5RGVwdGhTdGVuY2lsRGVzY3JpcHRvck1l
dGFsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMTJGRjhFQjIxQTRDMzNGMDBF
QjE5OUQgLyogR1BVTGVnYWN5UmVuZGVyQ29tbWFuZEVuY29kZXJNZXRhbC5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IEdQVUxlZ2FjeVJlbmRlckNvbW1hbmRFbmNvZGVyTWV0YWwubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxMkZGOEVDMjFBNEMzM0YwMEVCMTk5RCAvKiBHUFVM
ZWdhY3lUZXh0dXJlRGVzY3JpcHRvck1ldGFsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR1BV
TGVnYWN5VGV4dHVyZURlc2NyaXB0b3JNZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMzEyRkY4RUQyMUE0QzMzRjAwRUIxOTlEIC8qIEdQVUxlZ2FjeUZ1bmN0aW9uTWV0YWwu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVMZWdhY3lGdW5jdGlvbk1ldGFsLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMTJGRjhFRTIxQTRDMzNGMDBFQjE5OUQgLyogR1BV
TGVnYWN5RHJhd2FibGVNZXRhbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVUxlZ2FjeURy
YXdhYmxlTWV0YWwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxMkZGOEVGMjFB
NEMzM0YwMEVCMTk5RCAvKiBHUFVMZWdhY3lSZW5kZXJQaXBlbGluZURlc2NyaXB0b3JNZXRhbC5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
ck1ldGFsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMTJGRjhGMDIxQTRDMzNG
MDBFQjE5OUQgLyogR1BVTGVnYWN5UmVuZGVyUGFzc0Rlc2NyaXB0b3JNZXRhbC5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IEdQVUxlZ2FjeVJlbmRlclBhc3NEZXNjcmlwdG9yTWV0YWwubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxMkZGOEYxMjFBNEMzM0YwMEVCMTk5RCAvKiBH
UFVMZWdhY3lDb21tYW5kUXVldWVNZXRhbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVUxl
Z2FjeUNvbW1hbmRRdWV1ZU1ldGFsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkz
MTJGRjhGMjIxQTRDMzNGMDBFQjE5OUQgLyogR1BVTGVnYWN5TGlicmFyeU1ldGFsLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gR1BVTGVnYWN5TGlicmFyeU1ldGFsLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkzMTJGRjhGMzIxQTRDMzNGMDBFQjE5OUQgLyogR1BVTGVnYWN5Q29t
cHV0ZUNvbW1hbmRFbmNvZGVyTWV0YWwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVMZWdh
Y3lDb21wdXRlQ29tbWFuZEVuY29kZXJNZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMzEyRkY4RjQyMUE0QzMzRjAwRUIxOTlEIC8qIEdQVUxlZ2FjeVJlbmRlclBpcGVsaW5l
Q29sb3JBdHRhY2htZW50RGVzY3JpcHRvck1ldGFsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
R1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yTWV0YWwubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxMkZGOEY1MjFBNEMzM0YwMEVCMTk5RCAv
KiBHUFVMZWdhY3lSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvck1ldGFsLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVTGVnYWN5UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERl
c2NyaXB0b3JNZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzEyRkY4RjYy
MUE0QzMzRjAwRUIxOTlEIC8qIEdQVUxlZ2FjeUNvbW1hbmRCdWZmZXJNZXRhbC5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IEdQVUxlZ2FjeUNvbW1hbmRCdWZmZXJNZXRhbC5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzEyRkY4RjcyMUE0QzMzRjAwRUIxOTlEIC8qIEdQVUxlZ2Fj
eVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvck1ldGFsLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gR1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yTWV0YWwubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxMkZGOEY4MjFBNEMzM0YwMEVCMTk5RCAvKiBH
UFVMZWdhY3lEZXZpY2VNZXRhbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVUxlZ2FjeURl
dmljZU1ldGFsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMTJGRjhGOTIxQTRD
MzNGMDBFQjE5OUQgLyogR1BVTGVnYWN5RGVwdGhTdGVuY2lsU3RhdGVNZXRhbC5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IEdQVUxlZ2FjeURlcHRoU3RlbmNpbFN0YXRlTWV0YWwubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxMkZGOEZBMjFBNEMzM0YwMEVCMTk5RCAvKiBHUFVM
ZWdhY3lCdWZmZXJNZXRhbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVUxlZ2FjeUJ1ZmZl
ck1ldGFsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMTJGRjhGQjIxQTRDMzNG
MDBFQjE5OUQgLyogR1BVTGVnYWN5Q29tcHV0ZVBpcGVsaW5lU3RhdGVNZXRhbC5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IEdQVUxlZ2FjeUNvbXB1dGVQaXBlbGluZVN0YXRlTWV0YWwubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxMkZGOEZDMjFBNEMzM0YwMEVCMTk5RCAvKiBH
UFVMZWdhY3lSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvck1ldGFsLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gR1BVTGVnYWN5UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2Ny
aXB0b3JNZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzEyRkY4RkQyMUE0
QzMzRjAwRUIxOTlEIC8qIEdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lU3RhdGVNZXRhbC5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IEdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lU3RhdGVNZXRhbC5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzEyRkY4RkUyMUE0QzMzRjAwRUIxOTlEIC8q
IEdQVUxlZ2FjeVRleHR1cmVNZXRhbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVUxlZ2Fj
eVRleHR1cmVNZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzEyRkY4RkYy
MUE0QzMzRjAwRUIxOTlEIC8qIEdQVUxlZ2FjeVJlbmRlclBhc3NEZXNjcmlwdG9yLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEdQVUxlZ2FjeVJlbmRlclBhc3NEZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTMxMkZGOTAwMjFBNEMzM0YwMEVCMTk5RCAvKiBHUFVMZWdhY3lSZW5k
ZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBH
UFVMZWdhY3lSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxMkZGOTAxMjFBNEMzM0YwMEVCMTk5RCAvKiBHUFVMZWdh
Y3lSZW5kZXJQaXBlbGluZVN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdQVUxlZ2FjeVJl
bmRlclBpcGVsaW5lU3RhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMTJG
RjkwMjIxQTRDMzNGMDBFQjE5OUQgLyogR1BVTGVnYWN5QnVmZmVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEdQVUxlZ2FjeUJ1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMTJGRjkw
MzIxQTRDMzNGMDBFQjE5OUQgLyogR1BVTGVnYWN5Q29tbWFuZEJ1ZmZlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBHUFVMZWdhY3lDb21tYW5kQnVmZmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMzEyRkY5MDQyMUE0QzMzRjAwRUIxOTlEIC8qIEdQVUxlZ2FjeVRleHR1cmVE
ZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUxlZ2FjeVRleHR1cmVEZXNjcmlwdG9yLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxMkZGOTA1MjFBNEMzM0YwMEVCMTk5RCAv
KiBHUFVMZWdhY3lMaWJyYXJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdQVUxlZ2FjeUxpYnJh
cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMTJGRjkwNjIxQTRDMzNGMDBF
QjE5OUQgLyogR1BVTGVnYWN5Q29tcHV0ZUNvbW1hbmRFbmNvZGVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEdQVUxlZ2FjeUNvbXB1dGVDb21tYW5kRW5jb2Rlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTMxMkZGOTA3MjFBNEMzM0YwMEVCMTk5RCAvKiBHUFVMZWdhY3lEcmF3
YWJsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHUFVMZWdhY3lEcmF3YWJsZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxMkZGOTA4MjFBNEMzM0YwMEVCMTk5RCAvKiBHUFVM
ZWdhY3lEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdQVUxl
Z2FjeURlcHRoU3RlbmNpbERlc2NyaXB0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkzMTJGRjkwOTIxQTRDMzNGMDBFQjE5OUQgLyogR1BVTGVnYWN5UmVuZGVyUGFzc0RlcHRo
QXR0YWNobWVudERlc2NyaXB0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR1BVTGVnYWN5UmVu
ZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkzMTJGRjkwQTIxQTRDMzNGMDBFQjE5OUQgLyogR1BVTGVnYWN5UmVuZGVyUGFz
c0F0dGFjaG1lbnREZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUxlZ2FjeVJlbmRlclBh
c3NBdHRhY2htZW50RGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkz
MTJGRjkwQjIxQTRDMzNGMDBFQjE5OUQgLyogR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVDb2xvckF0
dGFjaG1lbnREZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUxlZ2FjeVJlbmRlclBpcGVs
aW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkzMTJGRjkwQzIxQTRDMzNGMDBFQjE5OUQgLyogR1BVTGVnYWN5TGlicmFyeS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBHUFVMZWdhY3lMaWJyYXJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTMxMkZGOTBEMjFBNEMzM0YwMEVCMTk5RCAvKiBHUFVMZWdhY3lSZW5kZXJQYXNzQXR0YWNo
bWVudERlc2NyaXB0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR1BVTGVnYWN5UmVuZGVyUGFz
c0F0dGFjaG1lbnREZXNjcmlwdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MzEyRkY5MEUyMUE0QzMzRjAwRUIxOTlEIC8qIEdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lU3RhdGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVTdGF0ZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkzMTJGRjkwRjIxQTRDMzNGMDBFQjE5OUQgLyogR1BVTGVn
YWN5Q29tbWFuZFF1ZXVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdQVUxlZ2FjeUNvbW1hbmRR
dWV1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxMkZGOTEwMjFBNEMzM0Yw
MEVCMTk5RCAvKiBHUFVMZWdhY3lGdW5jdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVMZWdhY3lG
dW5jdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTMxNzE1NDFGQjA3OUQx
MDA4RDkxRkMgLyogQ2FudmFzQmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBDYW52YXNCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxMzE3MTU3MUZC
MDk2OUUwMDhEOTFGQyAvKiBDYW52YXNCYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IENhbnZhc0Jhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkzMTM1OTEwMDFFN0REQzYwMDBGMzA2MzAgLyogUlRDSWNlQ29ubmVjdGlvblN0YXRlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJUQ0ljZUNvbm5lY3Rpb25TdGF0ZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjg4MSw2MyArNjk3NywyNCBAQAogCQkzMTRC
RTNBNDFCMzEwM0ZCMDAxNDE5ODIgLyogTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFn
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxNEJFM0E1MUIzMTAzRkIwMDE0
MTk4MiAvKiBOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTMxNTU3NENDMjE4RjY2RDAwMEQ4OEY2NiAvKiBQb2ludGVyRXZlbnRJT1Mu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUG9pbnRlckV2ZW50SU9T
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzE2QkRCODQxRTZFMEEyMTAwREUw
RDVBIC8qIEdQVUxlZ2FjeURldmljZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBHUFVMZWdhY3lEZXZpY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQkzMTZCREI4NTFFNkUwQTIxMDBERTBENUEgLyogR1BVTGVnYWN5RGV2aWNlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUxlZ2FjeURldmljZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkzMTZCREI4ODFFNkUxNDFDMDBERTBENUEgLyogR1BVTGVnYWN5RGV2
aWNlTWV0YWwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVM
ZWdhY3lEZXZpY2VNZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzE2QkRC
OEExRTZFMTUzMDAwREUwRDVBIC8qIFdlYk1ldGFsTGF5ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2ViTWV0YWxMYXllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQkzMTZCREI5MjFFNzBDODk3MDBERTBENUEgLyogR1BVTGVnYWN5RnVuY3Rpb24uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR1BVTGVnYWN5RnVuY3Rpb24uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTZCREI5MzFFNzBDODk3MDBERTBENUEg
LyogR1BVTGVnYWN5RnVuY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
R1BVTGVnYWN5RnVuY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzE2QkRC
OTYxRTcwQ0EyNDAwREUwRDVBIC8qIEdQVUxlZ2FjeUZ1bmN0aW9uTWV0YWwubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVMZWdhY3lGdW5jdGlvbk1ldGFsLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTZCREI5ODFFNzBDQkJGMDBERTBENUEg
LyogR1BVTGVnYWN5TGlicmFyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBHUFVMZWdhY3lMaWJyYXJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
MzE2QkRCOTkxRTcwQ0JCRjAwREUwRDVBIC8qIEdQVUxlZ2FjeUxpYnJhcnkuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVTGVnYWN5TGlicmFyeS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkzMTZCREI5QzFFNzBDRDkwMDBERTBENUEgLyogR1BVTGVnYWN5TGli
cmFyeU1ldGFsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR1BV
TGVnYWN5TGlicmFyeU1ldGFsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTZC
REJBNTFFNzFGQTZGMDBERTBENUEgLyogR1BVTGVnYWN5QnVmZmVyTWV0YWwubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVMZWdhY3lCdWZmZXJNZXRhbC5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzE2QkRCQTcxRTcxRkE5MzAwREUwRDVBIC8q
IEdQVUxlZ2FjeUJ1ZmZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBHUFVMZWdhY3lCdWZmZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTZC
REJBODFFNzFGQTkzMDBERTBENUEgLyogR1BVTGVnYWN5QnVmZmVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUxlZ2FjeUJ1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQkzMTZCREJBRjFFNzM1NEJCMDBERTBENUEgLyogR1BVTGVnYWN5VGV4dHVyZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHUFVMZWdhY3lUZXh0dXJl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzE2QkRCQjAxRTczNTRCQjAwREUw
RDVBIC8qIEdQVUxlZ2FjeVRleHR1cmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gR1BVTGVnYWN5VGV4dHVyZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTZC
REJCMzFFNzM1N0IwMDBERTBENUEgLyogR1BVTGVnYWN5VGV4dHVyZURlc2NyaXB0b3JNZXRhbC5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVUxlZ2FjeVRleHR1
cmVEZXNjcmlwdG9yTWV0YWwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxNkJE
QkI1MUU3MzU3Q0IwMERFMEQ1QSAvKiBHUFVMZWdhY3lUZXh0dXJlRGVzY3JpcHRvci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHUFVMZWdhY3lUZXh0dXJlRGVzY3Jp
cHRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxNkJEQkI2MUU3MzU3Q0Iw
MERFMEQ1QSAvKiBHUFVMZWdhY3lUZXh0dXJlRGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBHUFVMZWdhY3lUZXh0dXJlRGVzY3JpcHRvci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQkzMTZCREJCOTFFNzM4ODA2MDBERTBENUEgLyogR1BVTGVnYWN5
Q29tbWFuZFF1ZXVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdQ
VUxlZ2FjeUNvbW1hbmRRdWV1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMx
NkJEQkJBMUU3Mzg4MDYwMERFMEQ1QSAvKiBHUFVMZWdhY3lDb21tYW5kUXVldWUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVTGVnYWN5Q29tbWFuZFF1ZXVlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxNkJEQkJEMUU3Mzg4MTMwMERFMEQ1QSAvKiBHUFVM
ZWdhY3lDb21tYW5kUXVldWVNZXRhbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IEdQVUxlZ2FjeUNvbW1hbmRRdWV1ZU1ldGFsLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQkzMTZCREJDNDFFNzVFRTI0MDBERTBENUEgLyogR1BVTGVnYWN5Q29tbWFu
ZEJ1ZmZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHUFVMZWdh
Y3lDb21tYW5kQnVmZmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzE2QkRC
QzUxRTc1RUUyNDAwREUwRDVBIC8qIEdQVUxlZ2FjeUNvbW1hbmRCdWZmZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVTGVnYWN5Q29tbWFuZEJ1ZmZlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkzMTZCREJDNjFFNzVFRTNEMDBERTBENUEgLyogR1BVTGVn
YWN5Q29tbWFuZEJ1ZmZlck1ldGFsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gR1BVTGVnYWN5Q29tbWFuZEJ1ZmZlck1ldGFsLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkzMTZCREJDOTFFNzVGMTYyMDBERTBENUEgLyogR1BVTGVnYWN5RHJhd2Fi
bGVNZXRhbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVUxl
Z2FjeURyYXdhYmxlTWV0YWwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxNkJE
QkNBMUU3NUYxNzYwMERFMEQ1QSAvKiBHUFVMZWdhY3lEcmF3YWJsZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHUFVMZWdhY3lEcmF3YWJsZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxNkJEQkNCMUU3NUYxNzYwMERFMEQ1QSAvKiBHUFVMZWdh
Y3lEcmF3YWJsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVMZWdhY3lE
cmF3YWJsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTZCREJEMDFFNzVGN0FF
MDBERTBENUEgLyogR1BVTGVnYWN5UmVuZGVyUGFzc0Rlc2NyaXB0b3IuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR1BVTGVnYWN5UmVuZGVyUGFzc0Rlc2NyaXB0b3Iu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTZCREJEMTFFNzVGN0FFMDBERTBE
NUEgLyogR1BVTGVnYWN5UmVuZGVyUGFzc0Rlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gR1BVTGVnYWN5UmVuZGVyUGFzc0Rlc2NyaXB0b3IuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzE2QkRCRDQxRTc1RjdDQTAwREUwRDVBIC8qIEdQVUxlZ2Fj
eVJlbmRlclBhc3NEZXNjcmlwdG9yTWV0YWwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBHUFVMZWdhY3lSZW5kZXJQYXNzRGVzY3JpcHRvck1ldGFsLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTZCREJENjFFNzYxMkM0MDBERTBENUEgLyogR1BV
TGVnYWN5UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3JNZXRhbC5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVUxlZ2FjeVJlbmRlclBhc3NDb2xv
ckF0dGFjaG1lbnREZXNjcmlwdG9yTWV0YWwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTMxNkJEQkQ4MUU3NjEyREIwMERFMEQ1QSAvKiBHUFVMZWdhY3lSZW5kZXJQYXNzQ29sb3JB
dHRhY2htZW50RGVzY3JpcHRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBHUFVMZWdhY3lSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxNkJEQkQ5MUU3NjEyREIwMERFMEQ1QSAvKiBH
UFVMZWdhY3lSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVMZWdhY3lSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50
RGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTZCREJEQzFFNzYx
MzZDMDBERTBENUEgLyogR1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdQVUxlZ2FjeVJlbmRlclBh
c3NBdHRhY2htZW50RGVzY3JpcHRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTMxNkJEQkREMUU3NjEzNkMwMERFMEQ1QSAvKiBHUFVMZWdhY3lSZW5kZXJQYXNzQXR0YWNobWVu
dERlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVTGVnYWN5
UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTMxNkJEQkUwMUU3NjFDQjUwMERFMEQ1QSAvKiBHUFVMZWdhY3lSZW5kZXJQYXNzQXR0
YWNobWVudERlc2NyaXB0b3JNZXRhbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IEdQVUxlZ2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvck1ldGFsLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTZCREJFMjFFNzYxRUZGMDBERTBENUEg
LyogR1BVTGVnYWN5UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR1BVTGVnYWN5UmVuZGVyUGFzc0RlcHRo
QXR0YWNobWVudERlc2NyaXB0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkz
MTZCREJFMzFFNzYxRUZGMDBERTBENUEgLyogR1BVTGVnYWN5UmVuZGVyUGFzc0RlcHRoQXR0YWNo
bWVudERlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVTGVn
YWN5UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMzE2QkRCRTYxRTc2MUYyNzAwREUwRDVBIC8qIEdQVUxlZ2FjeVJlbmRl
clBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yTWV0YWwubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVMZWdhY3lSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50
RGVzY3JpcHRvck1ldGFsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTZCREJF
ODFFNzYyNDQzMDBERTBENUEgLyogR1BVTGVnYWN5UmVuZGVyQ29tbWFuZEVuY29kZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR1BVTGVnYWN5UmVuZGVyQ29tbWFu
ZEVuY29kZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTZCREJFOTFFNzYy
NDQ0MDBERTBENUEgLyogR1BVTGVnYWN5UmVuZGVyQ29tbWFuZEVuY29kZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVTGVnYWN5UmVuZGVyQ29tbWFuZEVuY29kZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzE2QkRCRUMxRTc2MjQ2QjAwREUwRDVBIC8q
IEdQVUxlZ2FjeVJlbmRlckNvbW1hbmRFbmNvZGVyTWV0YWwubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVMZWdhY3lSZW5kZXJDb21tYW5kRW5jb2Rlck1ldGFs
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTZCREJFRTFFNzYyOTFCMDBERTBE
NUEgLyogR1BVTGVnYWN5RGVwdGhTdGVuY2lsU3RhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gR1BVTGVnYWN5RGVwdGhTdGVuY2lsU3RhdGUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQkzMTZCREJFRjFFNzYyOTFCMDBERTBENUEgLyogR1BVTGVn
YWN5RGVwdGhTdGVuY2lsU3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
R1BVTGVnYWN5RGVwdGhTdGVuY2lsU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMzE2QkRCRjIxRTc2MjkzNzAwREUwRDVBIC8qIEdQVUxlZ2FjeURlcHRoU3RlbmNpbFN0YXRl
TWV0YWwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVMZWdh
Y3lEZXB0aFN0ZW5jaWxTdGF0ZU1ldGFsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQkzMTZCREJGNDFFNzYyQUNEMDBERTBENUEgLyogR1BVTGVnYWN5RGVwdGhTdGVuY2lsRGVzY3Jp
cHRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHUFVMZWdhY3lE
ZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
MzE2QkRCRjUxRTc2MkFDRDAwREUwRDVBIC8qIEdQVUxlZ2FjeURlcHRoU3RlbmNpbERlc2NyaXB0
b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVTGVnYWN5RGVwdGhTdGVu
Y2lsRGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTZCREJGODFF
NzYyQkVGMDBERTBENUEgLyogR1BVTGVnYWN5RGVwdGhTdGVuY2lsRGVzY3JpcHRvck1ldGFsLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVTGVnYWN5RGVwdGhT
dGVuY2lsRGVzY3JpcHRvck1ldGFsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkz
MTZCREJGQTFFNzYyRDA0MDBERTBENUEgLyogR1BVTGVnYWN5RW51bXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVTGVnYWN5RW51bXMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJMzE2QkRCRkMxRTc2MkY1NzAwREUwRDVBIC8qIEdQVUxlZ2FjeVJlbmRlclBp
cGVsaW5lRGVzY3JpcHRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBHUFVMZWdhY3lSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQkzMTZCREJGRDFFNzYyRjU3MDBERTBENUEgLyogR1BVTGVnYWN5UmVuZGVy
UGlwZWxpbmVEZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQ
VUxlZ2FjeVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQkzMTZCREJGRTFFNzYyRjU3MDBERTBENUEgLyogR1BVTGVnYWN5UmVuZGVyUGlwZWxp
bmVTdGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHUFVMZWdh
Y3lSZW5kZXJQaXBlbGluZVN0YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
MzE2QkRCRkYxRTc2MkY1NzAwREUwRDVBIC8qIEdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lU3RhdGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVTGVnYWN5UmVuZGVyUGlwZWxp
bmVTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTZCREMwNDFFNzYyRjdF
MDBERTBENUEgLyogR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yTWV0YWwubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVMZWdhY3lSZW5kZXJQaXBl
bGluZURlc2NyaXB0b3JNZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzE2
QkRDMDUxRTc2MkY3RTAwREUwRDVBIC8qIEdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lU3RhdGVNZXRh
bC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVUxlZ2FjeVJl
bmRlclBpcGVsaW5lU3RhdGVNZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
MzE2QkRDMDgxRTc2MzQyNzAwREUwRDVBIC8qIEdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lQ29sb3JB
dHRhY2htZW50RGVzY3JpcHRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBHUFVMZWdhY3lSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTZCREMwOTFFNzYzNDI3MDBERTBENUEg
LyogR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lQ29s
b3JBdHRhY2htZW50RGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkz
MTZCREMwQTFFNzYzNDM2MDBERTBENUEgLyogR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVDb2xvckF0
dGFjaG1lbnREZXNjcmlwdG9yTWV0YWwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBHUFVMZWdhY3lSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0
b3JNZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzE2RENCMTIxRTc4QkU0
MzAwMUI1Rjg3IC8qIFJUQ09mZmVyQW5zd2VyT3B0aW9ucy5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gUlRDT2ZmZXJBbnN3ZXJPcHRpb25zLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMzE2RENCMTcxRTc4QzMzMDAwMUI1Rjg3IC8qIFJUQ1J0cFRyYW5zY2VpdmVyRGlyZWN0
aW9uLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBSVENSdHBUcmFuc2NlaXZlckRpcmVjdGlvbi5pZGw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC03MjIxLDE0ICs3Mjc4LDkgQEAKIAkJMzgxRTM1RTcxRThFMUUw
QTAwNDNFODUwIC8qIFdlYkdQVUNvbXB1dGVDb21tYW5kRW5jb2Rlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVDb21wdXRlQ29tbWFuZEVuY29kZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzgxRTM1RTgxRThFMUUxNjAwNDNFODUwIC8qIFdlYkdQ
VUNvbXB1dGVDb21tYW5kRW5jb2Rlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXZWJHUFVDb21wdXRlQ29tbWFuZEVuY29kZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkzODFFMzVFOTFFOEUyMEFDMDA0M0U4NTAgLyogR1BVTGVnYWN5Q29tcHV0
ZUNvbW1hbmRFbmNvZGVyTWV0YWwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBHUFVMZWdhY3lDb21wdXRlQ29tbWFuZEVuY29kZXJNZXRhbC5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzgxRTM1RUExRThFMjBEOTAwNDNFODUwIC8qIEdQVUxlZ2Fj
eUNvbXB1dGVDb21tYW5kRW5jb2Rlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBHUFVMZWdhY3lDb21wdXRlQ29tbWFuZEVuY29kZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJMzgxRTM1RUIxRThFMjE5OTAwNDNFODUwIC8qIEdQVUxlZ2FjeUNvbXB1dGVDb21t
YW5kRW5jb2Rlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHUFVM
ZWdhY3lDb21wdXRlQ29tbWFuZEVuY29kZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQkzODFFMzVFQzFFOEUyM0U0MDA0M0U4NTAgLyogR1BVTGVnYWN5Q29tcHV0ZVBpcGVsaW5l
U3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVTGVnYWN5Q29tcHV0
ZVBpcGVsaW5lU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzgxRTM1RUQx
RThFMjQ3QTAwNDNFODUwIC8qIEdQVUxlZ2FjeUNvbXB1dGVQaXBlbGluZVN0YXRlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdQVUxlZ2FjeUNvbXB1dGVQaXBlbGlu
ZVN0YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzgxRTM1RUUxRThFMjRD
QjAwNDNFODUwIC8qIEdQVUxlZ2FjeUNvbXB1dGVQaXBlbGluZVN0YXRlTWV0YWwubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVMZWdhY3lDb21wdXRlUGlwZWxp
bmVTdGF0ZU1ldGFsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzODFFMzVFRjFF
OEUzRDdGMDA0M0U4NTAgLyogV2ViR1BVU2l6ZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
V2ViR1BVU2l6ZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM4MUUzNUY1MUU4
RTRDNDIwMDQzRTg1MCAvKiBXZWJHUFVTaXplLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYkdQVVNpemUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzgxRTM1
RjYxRThFNEQwRTAwNDNFODUwIC8qIEdQVUxlZ2FjeVNpemUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gR1BVTGVnYWN5U2l6ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkzODdBRTk1ODFFOEU5MkVGMDAwMERFOTYgLyogSlNXZWJHUFVTaXplLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2ViR1BVU2l6ZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM4N0FFOTU5MUU4RTkyRUYwMDAwREU5NiAvKiBKU1dlYkdQ
VVNpemUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNXZWJHUFVTaXplLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM4RjIzQUFFMUU4RTgzQzQwMENFNDZGNSAv
KiBKU1dlYkdQVUNvbXB1dGVDb21tYW5kRW5jb2Rlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU1dlYkdQVUNvbXB1dGVDb21tYW5kRW5jb2Rlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzgxNywyMSArMTM4NjksMTQgQEAKIAkJRDA0NUFE
MjEyMTY4MjQ3NDAwMEE2RTlCIC8qIFdlYk1ldGFsQnVmZmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdlYk1ldGFsQnVmZmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDA0
NUFEMjIyMTY4MjQ3NDAwMEE2RTlCIC8qIFdlYk1ldGFsQ29tbWFuZEJ1ZmZlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXZWJNZXRhbENvbW1hbmRCdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRDA0NUFEMjMyMTY4MjQ3NTAwMEE2RTlCIC8qIFdlYk1ldGFsQ29tbWFuZFF1ZXVlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYk1ldGFsQ29tbWFuZFF1ZXVlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA0NkZCNjUyMThEMDczQzAwQ0I4RjYyIC8qIEdQVVJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVSZW5kZXJQaXBlbGluZURl
c2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA0NkZCNjcyMThEMTgw
MzAwQ0I4RjYyIC8qIEdQVVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEdQVVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUQwNDZGQjY4MjE4RDE4Q0QwMENCOEY2MiAvKiBHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDA1NzNENDIyMTdFQjgxRTAwRDFCRTkxIC8qIEdQVUxlZ2Fj
eVRleHR1cmVNZXRhbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IEdQVUxlZ2FjeVRleHR1cmVNZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RDA1Q0VEMjcwQTQwQkIyQzAwQzVBRjM4IC8qIEZvcm1hdEJsb2NrQ29tbWFuZC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9ybWF0QmxvY2tDb21tYW5kLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDA1Q0VEMjgwQTQwQkIyQzAwQzVBRjM4IC8q
IEZvcm1hdEJsb2NrQ29tbWFuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Rm9ybWF0QmxvY2tDb21tYW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwNjBE
ODg0MjE4MjVENUYwMDMzOTMxOCAvKiBXZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBXZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRDA2MEQ4ODcyMTgyNjk3MDAwMzM5MzE4IC8qIFdlYkdQVVNoYWRlck1vZHVs
ZURlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRv
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDYwRDg4ODIxODI4MEMxMDAzMzkz
MTggLyogR1BVU2hhZGVyTW9kdWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVNoYWRlck1vZHVsZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDYwRDg4OTIxODI4MEMxMDAzMzkzMTgg
LyogR1BVU2hhZGVyTW9kdWxlTWV0YWwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVTaGFk
ZXJNb2R1bGVNZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDA2MTVGQ0My
MTdGRTVDNjAwOEE0OEE4IC8qIFdlYkdQVVNoYWRlck1vZHVsZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJHUFVTaGFkZXJNb2R1bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDA2MTVG
Q0QyMTdGRTVDNjAwOEE0OEE4IC8qIFdlYkdQVVNoYWRlck1vZHVsZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXZWJHUFVTaGFkZXJNb2R1bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlEMDYxNUZDRTIxN0ZFNUM2MDA4QTQ4QTggLyogV2ViR1BVU2hhZGVyTW9kdWxlLmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBXZWJHUFVTaGFkZXJNb2R1bGUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlEMDYxNUZDRjIxN0ZGMTg1MDA4QTQ4QTggLyogR1BVRGV2aWNlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEdQVURldmljZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDYxNUZEMTIxN0ZG
MUUxMDA4QTQ4QTggLyogR1BVRGV2aWNlTWV0YWwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBH
UFVEZXZpY2VNZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDA2QzBEOEQw
Q0ZEMTE0NjAwNjVGNDNGIC8qIFJlbW92ZUZvcm1hdENvbW1hbmQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUmVtb3ZlRm9ybWF0Q29tbWFuZC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlEMDZDMEQ4RTBDRkQxMTQ2MDA2NUY0M0YgLyogUmVtb3ZlRm9ybWF0Q29t
bWFuZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdmVGb3Jt
YXRDb21tYW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDA3REVBQjcwQTM2
NTU0QTAwQ0EzMEY4IC8qIEluc2VydExpc3RDb21tYW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBJbnNlcnRMaXN0Q29tbWFuZC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0xMzg0Myw5ICsxMzg4OCw2IEBACiAJCUQwOTNEMjI1MjE3OTUxRDQw
MDMyOTIxNyAvKiBXZWJHUFVSZW5kZXJpbmdDb250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQ
VVJlbmRlcmluZ0NvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDA5M0Qy
MjcyMTc5NTFENDAwMzI5MjE3IC8qIFdlYkdQVVJlbmRlcmluZ0NvbnRleHQuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdl
YkdQVVJlbmRlcmluZ0NvbnRleHQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlE
MDkzRDIyOTIxNzk1NDE2MDAzMjkyMTcgLyogV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXZWJHUFVSZW5kZXJpbmdDb250ZXh0LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJRDA5NzI3QjYyMTg3RjQ0MzAwOTQyRjNBIC8qIEdQVVN3YXBDaGFp
bk1ldGFsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVU3dhcENoYWluTWV0YWwubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwOTcyN0MyMjE4QTQ3MjkwMDk0MkYzQSAvKiBH
UFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVNoYWRlck1vZHVs
ZURlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA5NzI3Q0EyMThC
RDdBNTAwOTQyRjNBIC8qIEdQVURldmljZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHUFVEZXZp
Y2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMEEyMEQ1NDIwOTJBMEE2MDBF
MEMyNTkgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFTVEMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFTVEMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRDBBMjBENTYyMDkyQTBBNjAwRTBDMjU5IC8qIFdlYkdMQ29tcHJl
c3NlZFRleHR1cmVBU1RDLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRDBBM0E3MzAxNDA1QTM5ODAwRkI4RUQzIC8qIFJlc291cmNlTG9hZGVyT3B0aW9ucy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNvdXJjZUxvYWRlck9wdGlvbnMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzODY1LDcgKzEzOTA3LDYgQEAKIAkJ
RDBDNDE5RjcyMTg0MDREQTAwOUVDMURFIC8qIFdlYkdQVVJlbmRlclBpcGVsaW5lLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdlYkdQVVJlbmRlclBpcGVsaW5lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUQwQzQxOUY4MjE4NDA0REEwMDlFQzFERSAvKiBXZWJHUFVSZW5kZXJQaXBlbGluZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVSZW5kZXJQaXBlbGluZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwQzQxOUY5MjE4NDA0REEwMDlFQzFERSAvKiBXZWJHUFVS
ZW5kZXJQaXBlbGluZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVUmVuZGVyUGlwZWxpbmUuaWRsOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlEMEM0MTlGQjIxODQwRjZDMDA5RUMxREUgLyogR1BVUmVu
ZGVyUGlwZWxpbmVNZXRhbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVVJlbmRlclBpcGVs
aW5lTWV0YWwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwQ0FBRTk4MjE2ODI0
QTYwMDFDOTFDNyAvKiBXZWJNZXRhbEJ1ZmZlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViTWV0YWxCdWZmZXIuaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMENBQUU5QTIxNjgyNEE2MDAxQzkxQzcg
LyogV2ViTWV0YWxDb21tYW5kQnVmZmVyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJNZXRhbENvbW1hbmRCdWZmZXIu
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMENBQUU5QjIxNjgyNEE3MDAxQzkx
QzcgLyogV2ViTWV0YWxDb21tYW5kUXVldWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViTWV0YWxDb21t
YW5kUXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzODc4LDE0ICsxMzkx
OSw2IEBACiAJCUQwRUFDRjc2MjE5MzcyMjgwMDBGQTc1QyAvKiBXZWJHUFVDb21tYW5kQnVmZmVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVUNvbW1hbmRCdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRDBFQUNGNzcyMTkzNzIyODAwMEZBNzVDIC8qIFdlYkdQVUNvbW1hbmRC
dWZmZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViR1BVQ29tbWFuZEJ1ZmZlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwRUFDRjc4MjE5MzcyMjgwMDBGQTc1QyAvKiBX
ZWJHUFVDb21tYW5kQnVmZmVyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVDb21tYW5kQnVmZmVyLmlkbDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBFQUNGN0IyMTkzODI1MzAwMEZBNzVDIC8qIEdQ
VUNvbW1hbmRCdWZmZXJNZXRhbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVUNvbW1hbmRC
dWZmZXJNZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBFQUNGN0MyMTkz
ODJBRjAwMEZBNzVDIC8qIEdQVVN3YXBDaGFpbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBHUFVTd2FwQ2hh
aW4uaDsgcGF0aCA9IE1vZHVsZXMvd2ViZ3B1L0dQVVN3YXBDaGFpbi5oOyBzb3VyY2VUcmVlID0g
U09VUkNFX1JPT1Q7IH07Ci0JCUQwRUFDRjdEMjE5MzgyQjAwMDBGQTc1QyAvKiBHUFVSZW5kZXJQ
aXBlbGluZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBHUFVSZW5kZXJQaXBlbGluZS5oOyBwYXRoID0gTW9k
dWxlcy93ZWJncHUvR1BVUmVuZGVyUGlwZWxpbmUuaDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09U
OyB9OwotCQlEMEVBQ0Y3RTIxOTM4MkIwMDAwRkE3NUMgLyogR1BVQ29tbWFuZEJ1ZmZlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBHUFVDb21tYW5kQnVmZmVyLmg7IHBhdGggPSBNb2R1bGVzL3dlYmdwdS9H
UFVDb21tYW5kQnVmZmVyLmg7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKLQkJRDBFQUNG
ODAyMTkzOTFFRTAwMEZBNzVDIC8qIEdQVVF1ZXVlTWV0YWwubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBHUFVRdWV1ZU1ldGFsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEVB
Q0Y4MTIxOTM5MjFBMDAwRkE3NUMgLyogR1BVUXVldWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVUXVl
dWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBFQUNGODIyMTkzQUIzODAwMEZB
NzVDIC8qIEdQVVRleHR1cmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVVGV4dHVyZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlEMEVBQ0Y4MzIxOTNBQjM4MDAwRkE3NUMgLyogR1BVVGV4
dHVyZU1ldGFsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVVGV4dHVyZU1ldGFsLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMEVBQ0Y4NDIxOTNCMDJFMDAwRkE3NUMgLyog
V2ViR1BVVGV4dHVyZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVUZXh0dXJlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwRUFDRjg1MjE5M0IwMkUwMDBGQTc1QyAvKiBXZWJHUFVU
ZXh0dXJlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQVVRleHR1cmUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlEMEVBQ0Y4NjIxOTNCMDJFMDAwRkE3NUMgLyogV2ViR1BV
VGV4dHVyZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVVGV4dHVyZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0xMzg5NCw3ICsxMzkyNyw2IEBACiAJCUQwRUFDRjg5MjE5M0VFNEUwMDBGQTc1
QyAvKiBXZWJHUFVUZXh0dXJlVmlldy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVVGV4dHVyZVZpZXcuaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMEVBQ0ZBRDIxOUUzMEZEMDAwRkE3NUMgLyog
V2ViR1BVVGV4dHVyZUZvcm1hdEVudW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVVGV4dHVyZUZv
cm1hdEVudW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDBFQUNGQUUyMTlFMzBG
RDAwMEZBNzVDIC8qIFdlYkdQVVRleHR1cmVGb3JtYXRFbnVtLmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVUZXh0
dXJlRm9ybWF0RW51bS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwRUFDRkIy
MjE5RTRGMTQwMDBGQTc1QyAvKiBHUFVUZXh0dXJlRm9ybWF0RW51bS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBHUFVUZXh0dXJlRm9ybWF0RW51bS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlE
MEVEQTc3MjE0M0UzMDNDMDAyOEUzODMgLyogQ2FjaGVkUmF3UmVzb3VyY2UuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FjaGVkUmF3UmVzb3VyY2UuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMEVEQTc3MzE0M0UzMDNDMDAyOEUzODMgLyogQ2Fj
aGVkUmF3UmVzb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVk
UmF3UmVzb3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDBGRjJBNUIxMUY4
QzQ1QTAwN0U3NEUwIC8qIFBpbmdMb2FkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUGluZ0xvYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0xNzE1NCw2ICsxNzE4NiwxMDEgQEAKIAkJCXBhdGggPSB3b3JrZXJzOwogCQkJc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJMzEyRkY4QzYyMUE0QzMwMjAwRUIxOTlEIC8qIGNvY29h
ICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkzMTJGRjhD
QzIxQTRDMzI3MDBFQjE5OUQgLyogR1BVQ29tbWFuZEJ1ZmZlck1ldGFsLm1tICovLAorCQkJCTMx
MkZGOEM5MjFBNEMzMjYwMEVCMTk5RCAvKiBHUFVEZXZpY2VNZXRhbC5tbSAqLywKKwkJCQkzMTJG
RjhDNzIxQTRDMzI1MDBFQjE5OUQgLyogR1BVUXVldWVNZXRhbC5tbSAqLywKKwkJCQkzMTJGRjhD
RDIxQTRDMzI4MDBFQjE5OUQgLyogR1BVUmVuZGVyUGlwZWxpbmVNZXRhbC5tbSAqLywKKwkJCQkz
MTJGRjhDQTIxQTRDMzI2MDBFQjE5OUQgLyogR1BVU2hhZGVyTW9kdWxlTWV0YWwubW0gKi8sCisJ
CQkJMzEyRkY4Q0IyMUE0QzMyNzAwRUIxOTlEIC8qIEdQVVN3YXBDaGFpbk1ldGFsLm1tICovLAor
CQkJCTMxMkZGOEM4MjFBNEMzMjUwMEVCMTk5RCAvKiBHUFVUZXh0dXJlTWV0YWwubW0gKi8sCisJ
CQkpOworCQkJbmFtZSA9IGNvY29hOworCQkJcGF0aCA9ICJOZXcgR3JvdXAiOworCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJMzEyRkY4Q0UyMUE0QzMzRjAwRUIxOTlEIC8qIGxl
Z2FjeSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJMzEy
RkY4RTkyMUE0QzMzRjAwRUIxOTlEIC8qIGNvY29hICovLAorCQkJCTMxMkZGOEUwMjFBNEMzM0Yw
MEVCMTk5RCAvKiBHUFVMZWdhY3lCdWZmZXIuY3BwICovLAorCQkJCTMxMkZGOTAyMjFBNEMzM0Yw
MEVCMTk5RCAvKiBHUFVMZWdhY3lCdWZmZXIuaCAqLywKKwkJCQkzMTJGRjkwMzIxQTRDMzNGMDBF
QjE5OUQgLyogR1BVTGVnYWN5Q29tbWFuZEJ1ZmZlci5jcHAgKi8sCisJCQkJMzEyRkY4REUyMUE0
QzMzRjAwRUIxOTlEIC8qIEdQVUxlZ2FjeUNvbW1hbmRCdWZmZXIuaCAqLywKKwkJCQkzMTJGRjkw
RjIxQTRDMzNGMDBFQjE5OUQgLyogR1BVTGVnYWN5Q29tbWFuZFF1ZXVlLmNwcCAqLywKKwkJCQkz
MTJGRjhEOTIxQTRDMzNGMDBFQjE5OUQgLyogR1BVTGVnYWN5Q29tbWFuZFF1ZXVlLmggKi8sCisJ
CQkJMzEyRkY5MDYyMUE0QzMzRjAwRUIxOTlEIC8qIEdQVUxlZ2FjeUNvbXB1dGVDb21tYW5kRW5j
b2Rlci5jcHAgKi8sCisJCQkJMzEyRkY4RTQyMUE0QzMzRjAwRUIxOTlEIC8qIEdQVUxlZ2FjeUNv
bXB1dGVDb21tYW5kRW5jb2Rlci5oICovLAorCQkJCTMxMkZGOEU4MjFBNEMzM0YwMEVCMTk5RCAv
KiBHUFVMZWdhY3lDb21wdXRlUGlwZWxpbmVTdGF0ZS5jcHAgKi8sCisJCQkJMzEyRkY4RDcyMUE0
QzMzRjAwRUIxOTlEIC8qIEdQVUxlZ2FjeUNvbXB1dGVQaXBlbGluZVN0YXRlLmggKi8sCisJCQkJ
MzEyRkY5MDgyMUE0QzMzRjAwRUIxOTlEIC8qIEdQVUxlZ2FjeURlcHRoU3RlbmNpbERlc2NyaXB0
b3IuY3BwICovLAorCQkJCTMxMkZGOEQyMjFBNEMzM0YwMEVCMTk5RCAvKiBHUFVMZWdhY3lEZXB0
aFN0ZW5jaWxEZXNjcmlwdG9yLmggKi8sCisJCQkJMzEyRkY4RTEyMUE0QzMzRjAwRUIxOTlEIC8q
IEdQVUxlZ2FjeURlcHRoU3RlbmNpbFN0YXRlLmNwcCAqLywKKwkJCQkzMTJGRjhFNjIxQTRDMzNG
MDBFQjE5OUQgLyogR1BVTGVnYWN5RGVwdGhTdGVuY2lsU3RhdGUuaCAqLywKKwkJCQkzMTJGRjhF
MjIxQTRDMzNGMDBFQjE5OUQgLyogR1BVTGVnYWN5RGV2aWNlLmNwcCAqLywKKwkJCQkzMTJGRjhE
MzIxQTRDMzNGMDBFQjE5OUQgLyogR1BVTGVnYWN5RGV2aWNlLmggKi8sCisJCQkJMzEyRkY5MDcy
MUE0QzMzRjAwRUIxOTlEIC8qIEdQVUxlZ2FjeURyYXdhYmxlLmNwcCAqLywKKwkJCQkzMTJGRjhE
QjIxQTRDMzNGMDBFQjE5OUQgLyogR1BVTGVnYWN5RHJhd2FibGUuaCAqLywKKwkJCQkzMTJGRjhE
QzIxQTRDMzNGMDBFQjE5OUQgLyogR1BVTGVnYWN5RW51bXMuaCAqLywKKwkJCQkzMTJGRjhEODIx
QTRDMzNGMDBFQjE5OUQgLyogR1BVTGVnYWN5RnVuY3Rpb24uY3BwICovLAorCQkJCTMxMkZGOTEw
MjFBNEMzM0YwMEVCMTk5RCAvKiBHUFVMZWdhY3lGdW5jdGlvbi5oICovLAorCQkJCTMxMkZGOTA1
MjFBNEMzM0YwMEVCMTk5RCAvKiBHUFVMZWdhY3lMaWJyYXJ5LmNwcCAqLywKKwkJCQkzMTJGRjkw
QzIxQTRDMzNGMDBFQjE5OUQgLyogR1BVTGVnYWN5TGlicmFyeS5oICovLAorCQkJCTMxMkZGOERE
MjFBNEMzM0YwMEVCMTk5RCAvKiBHUFVMZWdhY3lSZW5kZXJDb21tYW5kRW5jb2Rlci5jcHAgKi8s
CisJCQkJMzEyRkY4RDYyMUE0QzMzRjAwRUIxOTlEIC8qIEdQVUxlZ2FjeVJlbmRlckNvbW1hbmRF
bmNvZGVyLmggKi8sCisJCQkJMzEyRkY5MEQyMUE0QzMzRjAwRUIxOTlEIC8qIEdQVUxlZ2FjeVJl
bmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5jcHAgKi8sCisJCQkJMzEyRkY5MEEyMUE0QzMz
RjAwRUIxOTlEIC8qIEdQVUxlZ2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5oICov
LAorCQkJCTMxMkZGOTAwMjFBNEMzM0YwMEVCMTk5RCAvKiBHUFVMZWdhY3lSZW5kZXJQYXNzQ29s
b3JBdHRhY2htZW50RGVzY3JpcHRvci5jcHAgKi8sCisJCQkJMzEyRkY4RTMyMUE0QzMzRjAwRUIx
OTlEIC8qIEdQVUxlZ2FjeVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmggKi8s
CisJCQkJMzEyRkY5MDkyMUE0QzMzRjAwRUIxOTlEIC8qIEdQVUxlZ2FjeVJlbmRlclBhc3NEZXB0
aEF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcCAqLywKKwkJCQkzMTJGRjhEMTIxQTRDMzNGMDBFQjE5
OUQgLyogR1BVTGVnYWN5UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IuaCAqLywK
KwkJCQkzMTJGRjhFNTIxQTRDMzNGMDBFQjE5OUQgLyogR1BVTGVnYWN5UmVuZGVyUGFzc0Rlc2Ny
aXB0b3IuY3BwICovLAorCQkJCTMxMkZGOEZGMjFBNEMzM0YwMEVCMTk5RCAvKiBHUFVMZWdhY3lS
ZW5kZXJQYXNzRGVzY3JpcHRvci5oICovLAorCQkJCTMxMkZGOERBMjFBNEMzM0YwMEVCMTk5RCAv
KiBHUFVMZWdhY3lSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuY3BwICov
LAorCQkJCTMxMkZGOTBCMjFBNEMzM0YwMEVCMTk5RCAvKiBHUFVMZWdhY3lSZW5kZXJQaXBlbGlu
ZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaCAqLywKKwkJCQkzMTJGRjhEMDIxQTRDMzNGMDBF
QjE5OUQgLyogR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmNwcCAqLywKKwkJCQkz
MTJGRjhFNzIxQTRDMzNGMDBFQjE5OUQgLyogR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yLmggKi8sCisJCQkJMzEyRkY5MDEyMUE0QzMzRjAwRUIxOTlEIC8qIEdQVUxlZ2FjeVJlbmRl
clBpcGVsaW5lU3RhdGUuY3BwICovLAorCQkJCTMxMkZGOTBFMjFBNEMzM0YwMEVCMTk5RCAvKiBH
UFVMZWdhY3lSZW5kZXJQaXBlbGluZVN0YXRlLmggKi8sCisJCQkJMzEyRkY4REYyMUE0QzMzRjAw
RUIxOTlEIC8qIEdQVUxlZ2FjeVNpemUuaCAqLywKKwkJCQkzMTJGRjhENTIxQTRDMzNGMDBFQjE5
OUQgLyogR1BVTGVnYWN5VGV4dHVyZS5jcHAgKi8sCisJCQkJMzEyRkY4RDQyMUE0QzMzRjAwRUIx
OTlEIC8qIEdQVUxlZ2FjeVRleHR1cmUuaCAqLywKKwkJCQkzMTJGRjhDRjIxQTRDMzNGMDBFQjE5
OUQgLyogR1BVTGVnYWN5VGV4dHVyZURlc2NyaXB0b3IuY3BwICovLAorCQkJCTMxMkZGOTA0MjFB
NEMzM0YwMEVCMTk5RCAvKiBHUFVMZWdhY3lUZXh0dXJlRGVzY3JpcHRvci5oICovLAorCQkJKTsK
KwkJCXBhdGggPSBsZWdhY3k7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQkz
MTJGRjhFOTIxQTRDMzNGMDBFQjE5OUQgLyogY29jb2EgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91
cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTMxMkZGOEZBMjFBNEMzM0YwMEVCMTk5RCAvKiBHUFVM
ZWdhY3lCdWZmZXJNZXRhbC5tbSAqLywKKwkJCQkzMTJGRjhGNjIxQTRDMzNGMDBFQjE5OUQgLyog
R1BVTGVnYWN5Q29tbWFuZEJ1ZmZlck1ldGFsLm1tICovLAorCQkJCTMxMkZGOEYxMjFBNEMzM0Yw
MEVCMTk5RCAvKiBHUFVMZWdhY3lDb21tYW5kUXVldWVNZXRhbC5tbSAqLywKKwkJCQkzMTJGRjhG
MzIxQTRDMzNGMDBFQjE5OUQgLyogR1BVTGVnYWN5Q29tcHV0ZUNvbW1hbmRFbmNvZGVyTWV0YWwu
bW0gKi8sCisJCQkJMzEyRkY4RkIyMUE0QzMzRjAwRUIxOTlEIC8qIEdQVUxlZ2FjeUNvbXB1dGVQ
aXBlbGluZVN0YXRlTWV0YWwubW0gKi8sCisJCQkJMzEyRkY4RUEyMUE0QzMzRjAwRUIxOTlEIC8q
IEdQVUxlZ2FjeURlcHRoU3RlbmNpbERlc2NyaXB0b3JNZXRhbC5tbSAqLywKKwkJCQkzMTJGRjhG
OTIxQTRDMzNGMDBFQjE5OUQgLyogR1BVTGVnYWN5RGVwdGhTdGVuY2lsU3RhdGVNZXRhbC5tbSAq
LywKKwkJCQkzMTJGRjhGODIxQTRDMzNGMDBFQjE5OUQgLyogR1BVTGVnYWN5RGV2aWNlTWV0YWwu
bW0gKi8sCisJCQkJMzEyRkY4RUUyMUE0QzMzRjAwRUIxOTlEIC8qIEdQVUxlZ2FjeURyYXdhYmxl
TWV0YWwubW0gKi8sCisJCQkJMzEyRkY4RUQyMUE0QzMzRjAwRUIxOTlEIC8qIEdQVUxlZ2FjeUZ1
bmN0aW9uTWV0YWwubW0gKi8sCisJCQkJMzEyRkY4RjIyMUE0QzMzRjAwRUIxOTlEIC8qIEdQVUxl
Z2FjeUxpYnJhcnlNZXRhbC5tbSAqLywKKwkJCQkzMTJGRjhFQjIxQTRDMzNGMDBFQjE5OUQgLyog
R1BVTGVnYWN5UmVuZGVyQ29tbWFuZEVuY29kZXJNZXRhbC5tbSAqLywKKwkJCQkzMTJGRjhGNzIx
QTRDMzNGMDBFQjE5OUQgLyogR1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9y
TWV0YWwubW0gKi8sCisJCQkJMzEyRkY4RjUyMUE0QzMzRjAwRUIxOTlEIC8qIEdQVUxlZ2FjeVJl
bmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yTWV0YWwubW0gKi8sCisJCQkJMzEyRkY4
RkMyMUE0QzMzRjAwRUIxOTlEIC8qIEdQVUxlZ2FjeVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnRE
ZXNjcmlwdG9yTWV0YWwubW0gKi8sCisJCQkJMzEyRkY4RjAyMUE0QzMzRjAwRUIxOTlEIC8qIEdQ
VUxlZ2FjeVJlbmRlclBhc3NEZXNjcmlwdG9yTWV0YWwubW0gKi8sCisJCQkJMzEyRkY4RjQyMUE0
QzMzRjAwRUIxOTlEIC8qIEdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVz
Y3JpcHRvck1ldGFsLm1tICovLAorCQkJCTMxMkZGOEVGMjFBNEMzM0YwMEVCMTk5RCAvKiBHUFVM
ZWdhY3lSZW5kZXJQaXBlbGluZURlc2NyaXB0b3JNZXRhbC5tbSAqLywKKwkJCQkzMTJGRjhGRDIx
QTRDMzNGMDBFQjE5OUQgLyogR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVTdGF0ZU1ldGFsLm1tICov
LAorCQkJCTMxMkZGOEVDMjFBNEMzM0YwMEVCMTk5RCAvKiBHUFVMZWdhY3lUZXh0dXJlRGVzY3Jp
cHRvck1ldGFsLm1tICovLAorCQkJCTMxMkZGOEZFMjFBNEMzM0YwMEVCMTk5RCAvKiBHUFVMZWdh
Y3lUZXh0dXJlTWV0YWwubW0gKi8sCisJCQkpOworCQkJcGF0aCA9IGNvY29hOworCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJMzE2RkUxMDYwRTZFMUQ4NDAwQkY2MDg4IC8qIGFu
aW1hdGlvbiAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0x
ODAyOSw1MCArMTgxNTYsMjEgQEAKIAkJNDk4NzcwQzExMjQyQzUwRDAwMjIyNkJBIC8qIGdwdSAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJMzE2QkRCQTcx
RTcxRkE5MzAwREUwRDVBIC8qIEdQVUxlZ2FjeUJ1ZmZlci5jcHAgKi8sCi0JCQkJMzE2QkRCQTgx
RTcxRkE5MzAwREUwRDVBIC8qIEdQVUxlZ2FjeUJ1ZmZlci5oICovLAotCQkJCTMxNkJEQkM0MUU3
NUVFMjQwMERFMEQ1QSAvKiBHUFVMZWdhY3lDb21tYW5kQnVmZmVyLmNwcCAqLywKLQkJCQkzMTZC
REJDNTFFNzVFRTI0MDBERTBENUEgLyogR1BVTGVnYWN5Q29tbWFuZEJ1ZmZlci5oICovLAotCQkJ
CTMxNkJEQkI5MUU3Mzg4MDYwMERFMEQ1QSAvKiBHUFVMZWdhY3lDb21tYW5kUXVldWUuY3BwICov
LAotCQkJCTMxNkJEQkJBMUU3Mzg4MDYwMERFMEQ1QSAvKiBHUFVMZWdhY3lDb21tYW5kUXVldWUu
aCAqLywKLQkJCQkzODFFMzVFQjFFOEUyMTk5MDA0M0U4NTAgLyogR1BVTGVnYWN5Q29tcHV0ZUNv
bW1hbmRFbmNvZGVyLmNwcCAqLywKLQkJCQkzODFFMzVFQTFFOEUyMEQ5MDA0M0U4NTAgLyogR1BV
TGVnYWN5Q29tcHV0ZUNvbW1hbmRFbmNvZGVyLmggKi8sCi0JCQkJMzgxRTM1RUQxRThFMjQ3QTAw
NDNFODUwIC8qIEdQVUxlZ2FjeUNvbXB1dGVQaXBlbGluZVN0YXRlLmNwcCAqLywKLQkJCQkzODFF
MzVFQzFFOEUyM0U0MDA0M0U4NTAgLyogR1BVTGVnYWN5Q29tcHV0ZVBpcGVsaW5lU3RhdGUuaCAq
LywKLQkJCQkzMTZCREJGNDFFNzYyQUNEMDBERTBENUEgLyogR1BVTGVnYWN5RGVwdGhTdGVuY2ls
RGVzY3JpcHRvci5jcHAgKi8sCi0JCQkJMzE2QkRCRjUxRTc2MkFDRDAwREUwRDVBIC8qIEdQVUxl
Z2FjeURlcHRoU3RlbmNpbERlc2NyaXB0b3IuaCAqLywKLQkJCQkzMTZCREJFRTFFNzYyOTFCMDBE
RTBENUEgLyogR1BVTGVnYWN5RGVwdGhTdGVuY2lsU3RhdGUuY3BwICovLAotCQkJCTMxNkJEQkVG
MUU3NjI5MUIwMERFMEQ1QSAvKiBHUFVMZWdhY3lEZXB0aFN0ZW5jaWxTdGF0ZS5oICovLAotCQkJ
CTMxNkJEQjg0MUU2RTBBMjEwMERFMEQ1QSAvKiBHUFVMZWdhY3lEZXZpY2UuY3BwICovLAotCQkJ
CTMxNkJEQjg1MUU2RTBBMjEwMERFMEQ1QSAvKiBHUFVMZWdhY3lEZXZpY2UuaCAqLywKLQkJCQkz
MTZCREJDQTFFNzVGMTc2MDBERTBENUEgLyogR1BVTGVnYWN5RHJhd2FibGUuY3BwICovLAotCQkJ
CTMxNkJEQkNCMUU3NUYxNzYwMERFMEQ1QSAvKiBHUFVMZWdhY3lEcmF3YWJsZS5oICovLAotCQkJ
CTMxNkJEQkZBMUU3NjJEMDQwMERFMEQ1QSAvKiBHUFVMZWdhY3lFbnVtcy5oICovLAotCQkJCTMx
NkJEQjkyMUU3MEM4OTcwMERFMEQ1QSAvKiBHUFVMZWdhY3lGdW5jdGlvbi5jcHAgKi8sCi0JCQkJ
MzE2QkRCOTMxRTcwQzg5NzAwREUwRDVBIC8qIEdQVUxlZ2FjeUZ1bmN0aW9uLmggKi8sCi0JCQkJ
MzE2QkRCOTgxRTcwQ0JCRjAwREUwRDVBIC8qIEdQVUxlZ2FjeUxpYnJhcnkuY3BwICovLAotCQkJ
CTMxNkJEQjk5MUU3MENCQkYwMERFMEQ1QSAvKiBHUFVMZWdhY3lMaWJyYXJ5LmggKi8sCi0JCQkJ
MzE2QkRCRTgxRTc2MjQ0MzAwREUwRDVBIC8qIEdQVUxlZ2FjeVJlbmRlckNvbW1hbmRFbmNvZGVy
LmNwcCAqLywKLQkJCQkzMTZCREJFOTFFNzYyNDQ0MDBERTBENUEgLyogR1BVTGVnYWN5UmVuZGVy
Q29tbWFuZEVuY29kZXIuaCAqLywKLQkJCQkzMTZCREJEQzFFNzYxMzZDMDBERTBENUEgLyogR1BV
TGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmNwcCAqLywKLQkJCQkzMTZCREJE
RDFFNzYxMzZDMDBERTBENUEgLyogR1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlw
dG9yLmggKi8sCi0JCQkJMzE2QkRCRDgxRTc2MTJEQjAwREUwRDVBIC8qIEdQVUxlZ2FjeVJlbmRl
clBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcCAqLywKLQkJCQkzMTZCREJEOTFFNzYx
MkRCMDBERTBENUEgLyogR1BVTGVnYWN5UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0
b3IuaCAqLywKLQkJCQkzMTZCREJFMjFFNzYxRUZGMDBERTBENUEgLyogR1BVTGVnYWN5UmVuZGVy
UGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IuY3BwICovLAotCQkJCTMxNkJEQkUzMUU3NjFF
RkYwMERFMEQ1QSAvKiBHUFVMZWdhY3lSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRv
ci5oICovLAotCQkJCTMxNkJEQkQwMUU3NUY3QUUwMERFMEQ1QSAvKiBHUFVMZWdhY3lSZW5kZXJQ
YXNzRGVzY3JpcHRvci5jcHAgKi8sCi0JCQkJMzE2QkRCRDExRTc1RjdBRTAwREUwRDVBIC8qIEdQ
VUxlZ2FjeVJlbmRlclBhc3NEZXNjcmlwdG9yLmggKi8sCi0JCQkJMzE2QkRDMDgxRTc2MzQyNzAw
REUwRDVBIC8qIEdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRv
ci5jcHAgKi8sCi0JCQkJMzE2QkRDMDkxRTc2MzQyNzAwREUwRDVBIC8qIEdQVUxlZ2FjeVJlbmRl
clBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oICovLAotCQkJCTMxNkJEQkZDMUU3
NjJGNTcwMERFMEQ1QSAvKiBHUFVMZWdhY3lSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuY3BwICov
LAotCQkJCTMxNkJEQkZEMUU3NjJGNTcwMERFMEQ1QSAvKiBHUFVMZWdhY3lSZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3IuaCAqLywKLQkJCQkzMTZCREJGRTFFNzYyRjU3MDBERTBENUEgLyogR1BVTGVn
YWN5UmVuZGVyUGlwZWxpbmVTdGF0ZS5jcHAgKi8sCi0JCQkJMzE2QkRCRkYxRTc2MkY1NzAwREUw
RDVBIC8qIEdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lU3RhdGUuaCAqLywKLQkJCQkzODFFMzVGNjFF
OEU0RDBFMDA0M0U4NTAgLyogR1BVTGVnYWN5U2l6ZS5oICovLAotCQkJCTMxNkJEQkFGMUU3MzU0
QkIwMERFMEQ1QSAvKiBHUFVMZWdhY3lUZXh0dXJlLmNwcCAqLywKLQkJCQkzMTZCREJCMDFFNzM1
NEJCMDBERTBENUEgLyogR1BVTGVnYWN5VGV4dHVyZS5oICovLAotCQkJCTMxNkJEQkI1MUU3MzU3
Q0IwMERFMEQ1QSAvKiBHUFVMZWdhY3lUZXh0dXJlRGVzY3JpcHRvci5jcHAgKi8sCi0JCQkJMzE2
QkRCQjYxRTczNTdDQjAwREUwRDVBIC8qIEdQVUxlZ2FjeVRleHR1cmVEZXNjcmlwdG9yLmggKi8s
CisJCQkJMzEyRkY4QzYyMUE0QzMwMjAwRUIxOTlEIC8qIGNvY29hICovLAorCQkJCTMxMkZGOENF
MjFBNEMzM0YwMEVCMTk5RCAvKiBsZWdhY3kgKi8sCisJCQkJMzEyRkY4QkQyMUE0QzJGMTAwRUIx
OTlEIC8qIEdQVUNvbW1hbmRCdWZmZXIuaCAqLywKKwkJCQkzMTJGRjhCRjIxQTRDMkYxMDBFQjE5
OUQgLyogR1BVRGV2aWNlLmNwcCAqLywKKwkJCQkzMTJGRjhCRTIxQTRDMkYxMDBFQjE5OUQgLyog
R1BVRGV2aWNlLmggKi8sCisJCQkJMzEyRkY4QzQyMUE0QzJGNDAwRUIxOTlEIC8qIEdQVVBpcGVs
aW5lRGVzY3JpcHRvckJhc2UuaCAqLywKKwkJCQkzMTJGRjhDMjIxQTRDMkYzMDBFQjE5OUQgLyog
R1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuaCAqLywKKwkJCQkzMTJGRjhDMTIxQTRDMkYyMDBF
QjE5OUQgLyogR1BVUXVldWUuaCAqLywKKwkJCQkzMTJGRjhCOTIxQTRDMkVGMDBFQjE5OUQgLyog
R1BVUmVuZGVyUGlwZWxpbmUuaCAqLywKKwkJCQkzMTJGRjhCQzIxQTRDMkYwMDBFQjE5OUQgLyog
R1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmggKi8sCisJCQkJMzEyRkY4QkIyMUE0QzJGMDAw
RUIxOTlEIC8qIEdQVVNoYWRlck1vZHVsZS5oICovLAorCQkJCTMxMkZGOEMwMjFBNEMyRjIwMEVC
MTk5RCAvKiBHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmggKi8sCisJCQkJMzEyRkY4QkEyMUE0
QzJFRjAwRUIxOTlEIC8qIEdQVVN3YXBDaGFpbi5oICovLAorCQkJCTMxMkZGOEM1MjFBNEMyRjQw
MEVCMTk5RCAvKiBHUFVUZXh0dXJlLmggKi8sCisJCQkJMzEyRkY4QzMyMUE0QzJGMzAwRUIxOTlE
IC8qIEdQVVRleHR1cmVGb3JtYXRFbnVtLmggKi8sCiAJCQkJNDk4NzcwRDcxMjQyQzUzNTAwMjIy
NkJBIC8qIFRleHR1cmUuY3BwICovLAogCQkJCTQ5ODc3MEQ4MTI0MkM1MzUwMDIyMjZCQSAvKiBU
ZXh0dXJlLmggKi8sCiAJCQkJNDk4NzcwRDkxMjQyQzUzNTAwMjIyNkJBIC8qIFRpbGluZ0RhdGEu
Y3BwICovLApAQCAtMjU1NTQsMjMgKzI1NjUyLDkgQEAKIAkJRDAwRjU5M0UyMTZFQ0M0MzAwMEQ3
MURCIC8qIHdlYmdwdSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
Ci0JCQkJRDA2MTVGRDIyMTdGRkVFMzAwOEE0OEE4IC8qIGNvY29hICovLAogCQkJCUQwMEY1OTQx
MjE2RUNDN0EwMDBENzFEQiAvKiBET01XaW5kb3dXZWJHUFUuY3BwICovLAogCQkJCUQwMEY1OTQw
MjE2RUNDN0EwMDBENzFEQiAvKiBET01XaW5kb3dXZWJHUFUuaCAqLywKIAkJCQlEMDBGNTk0MjIx
NkVDQzdBMDAwRDcxREIgLyogRE9NV2luZG93V2ViR1BVLmlkbCAqLywKLQkJCQlEMEVBQ0Y3RTIx
OTM4MkIwMDAwRkE3NUMgLyogR1BVQ29tbWFuZEJ1ZmZlci5oICovLAotCQkJCUQwOTcyN0NBMjE4
QkQ3QTUwMDk0MkYzQSAvKiBHUFVEZXZpY2UuY3BwICovLAotCQkJCUQwNjE1RkNGMjE3RkYxODUw
MDhBNDhBOCAvKiBHUFVEZXZpY2UuaCAqLywKLQkJCQlEMDQ2RkI2ODIxOEQxOENEMDBDQjhGNjIg
LyogR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5oICovLAotCQkJCUQwNDZGQjY3MjE4RDE4MDMw
MENCOEY2MiAvKiBHUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvci5oICovLAotCQkJCUQwRUFDRjgx
MjE5MzkyMUEwMDBGQTc1QyAvKiBHUFVRdWV1ZS5oICovLAotCQkJCUQwRUFDRjdEMjE5MzgyQjAw
MDBGQTc1QyAvKiBHUFVSZW5kZXJQaXBlbGluZS5oICovLAotCQkJCUQwNDZGQjY1MjE4RDA3M0Mw
MENCOEY2MiAvKiBHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCAqLywKLQkJCQlEMDYwRDg4
ODIxODI4MEMxMDAzMzkzMTggLyogR1BVU2hhZGVyTW9kdWxlLmggKi8sCi0JCQkJRDA5NzI3QzIy
MThBNDcyOTAwOTQyRjNBIC8qIEdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaCAqLywKLQkJCQlE
MEVBQ0Y3QzIxOTM4MkFGMDAwRkE3NUMgLyogR1BVU3dhcENoYWluLmggKi8sCi0JCQkJRDBFQUNG
ODIyMTkzQUIzODAwMEZBNzVDIC8qIEdQVVRleHR1cmUuaCAqLywKLQkJCQlEMEVBQ0ZCMjIxOUU0
RjE0MDAwRkE3NUMgLyogR1BVVGV4dHVyZUZvcm1hdEVudW0uaCAqLywKIAkJCQlEMDBGNTk0NzIx
NkVGRTU0MDAwRDcxREIgLyogV2ViR1BVLmNwcCAqLywKIAkJCQlEMDBGNTk0NjIxNkVGRTU0MDAw
RDcxREIgLyogV2ViR1BVLmggKi8sCiAJCQkJRDAwRjU5NDgyMTZFRkU1NDAwMEQ3MURCIC8qIFdl
YkdQVS5pZGwgKi8sCkBAIC0yNTYxOSwyMCArMjU3MDMsNiBAQAogCQkJcGF0aCA9IHdlYmdwdTsK
IAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07Ci0JCUQwNjE1RkQyMjE3RkZFRTMwMDhB
NDhBOCAvKiBjb2NvYSAqLyA9IHsKLQkJCWlzYSA9IFBCWEdyb3VwOwotCQkJY2hpbGRyZW4gPSAo
Ci0JCQkJRDBFQUNGN0IyMTkzODI1MzAwMEZBNzVDIC8qIEdQVUNvbW1hbmRCdWZmZXJNZXRhbC5t
bSAqLywKLQkJCQlEMDYxNUZEMTIxN0ZGMUUxMDA4QTQ4QTggLyogR1BVRGV2aWNlTWV0YWwubW0g
Ki8sCi0JCQkJRDBFQUNGODAyMTkzOTFFRTAwMEZBNzVDIC8qIEdQVVF1ZXVlTWV0YWwubW0gKi8s
Ci0JCQkJRDBDNDE5RkIyMTg0MEY2QzAwOUVDMURFIC8qIEdQVVJlbmRlclBpcGVsaW5lTWV0YWwu
bW0gKi8sCi0JCQkJRDA2MEQ4ODkyMTgyODBDMTAwMzM5MzE4IC8qIEdQVVNoYWRlck1vZHVsZU1l
dGFsLm1tICovLAotCQkJCUQwOTcyN0I2MjE4N0Y0NDMwMDk0MkYzQSAvKiBHUFVTd2FwQ2hhaW5N
ZXRhbC5tbSAqLywKLQkJCQlEMEVBQ0Y4MzIxOTNBQjM4MDAwRkE3NUMgLyogR1BVVGV4dHVyZU1l
dGFsLm1tICovLAotCQkJKTsKLQkJCXBhdGggPSBjb2NvYTsKLQkJCXNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7Ci0JCX07CiAJCURGOUFGRDZGMTNGQzMxQjAwMDE1RkVCNyAvKiBvYmpjICovID0gewog
CQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTI4Nzk0LDI5ICsyODg2NCw0
MCBAQAogCQkJCUM1RDRBQTdBMTE2QkFGQjYwMDY5Q0E5MyAvKiBHbHlwaE1ldHJpY3NNYXAuaCBp
biBIZWFkZXJzICovLAogCQkJCTA4NzNCODZCMTM2MDY0RUEwMEE1MjJDMiAvKiBHbHlwaFBhZ2Uu
aCBpbiBIZWFkZXJzICovLAogCQkJCTMxMTUxOEZDMUU3OEMxNUYwMEVDNTE0QSAvKiBHUFVCYXNl
ZENhbnZhc1JlbmRlcmluZ0NvbnRleHQuaCBpbiBIZWFkZXJzICovLAotCQkJCTMxNkJEQkFBMUU3
MUZBOTMwMERFMEQ1QSAvKiBHUFVMZWdhY3lCdWZmZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTMx
NkJEQkNFMUU3NUYxOEEwMERFMEQ1QSAvKiBHUFVMZWdhY3lDb21tYW5kQnVmZmVyLmggaW4gSGVh
ZGVycyAqLywKLQkJCQkzMTZCREJCQzFFNzM4ODA2MDBERTBENUEgLyogR1BVTGVnYWN5Q29tbWFu
ZFF1ZXVlLmggaW4gSGVhZGVycyAqLywKLQkJCQk5M0E5NTNCNDIwRUJENDMyMDBBNjE5RjYgLyog
R1BVTGVnYWN5Q29tcHV0ZUNvbW1hbmRFbmNvZGVyLmggaW4gSGVhZGVycyAqLywKLQkJCQk5M0E5
NTNCMDIwRUJEM0M5MDBBNjE5RjYgLyogR1BVTGVnYWN5Q29tcHV0ZVBpcGVsaW5lU3RhdGUuaCBp
biBIZWFkZXJzICovLAotCQkJCTMxNkJEQkY3MUU3NjJBRDUwMERFMEQ1QSAvKiBHUFVMZWdhY3lE
ZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLywKLQkJCQkzMTZCREJGMDFFNzYy
OTIwMDBERTBENUEgLyogR1BVTGVnYWN5RGVwdGhTdGVuY2lsU3RhdGUuaCBpbiBIZWFkZXJzICov
LAotCQkJCTMxNkJEQjg2MUU2RTBBMjcwMERFMEQ1QSAvKiBHUFVMZWdhY3lEZXZpY2UuaCBpbiBI
ZWFkZXJzICovLAotCQkJCTMxNkJEQkNEMUU3NUYxODQwMERFMEQ1QSAvKiBHUFVMZWdhY3lEcmF3
YWJsZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMzE2QkRCRkIxRTc2MkQwNDAwREUwRDVBIC8qIEdQ
VUxlZ2FjeUVudW1zLmggaW4gSGVhZGVycyAqLywKLQkJCQkzMTZCREI5NTFFNzBDODk3MDBERTBE
NUEgLyogR1BVTGVnYWN5RnVuY3Rpb24uaCBpbiBIZWFkZXJzICovLAotCQkJCTMxNkJEQjlCMUU3
MENCQkYwMERFMEQ1QSAvKiBHUFVMZWdhY3lMaWJyYXJ5LmggaW4gSGVhZGVycyAqLywKLQkJCQkz
MTZCREJFQjFFNzYyNDREMDBERTBENUEgLyogR1BVTGVnYWN5UmVuZGVyQ29tbWFuZEVuY29kZXIu
aCBpbiBIZWFkZXJzICovLAotCQkJCTMxNkJEQkRGMUU3NjEzNzUwMERFMEQ1QSAvKiBHUFVMZWdh
Y3lSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICovLAotCQkJCTMx
NkJEQkRCMUU3NjEyRTIwMERFMEQ1QSAvKiBHUFVMZWdhY3lSZW5kZXJQYXNzQ29sb3JBdHRhY2ht
ZW50RGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMzE2QkRCRTQxRTc2MUYwNTAwREUw
RDVBIC8qIEdQVUxlZ2FjeVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmggaW4g
SGVhZGVycyAqLywKLQkJCQkzMTZCREJEMzFFNzVGN0I2MDBERTBENUEgLyogR1BVTGVnYWN5UmVu
ZGVyUGFzc0Rlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICovLAotCQkJCTMxNkJEQzBEMUU3NjM0RDIw
MERFMEQ1QSAvKiBHUFVMZWdhY3lSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0
b3IuaCBpbiBIZWFkZXJzICovLAotCQkJCTMxNkJEQzAyMUU3NjJGNjQwMERFMEQ1QSAvKiBHUFVM
ZWdhY3lSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICovLAotCQkJCTMxNkJE
QzAzMUU3NjJGNjkwMERFMEQ1QSAvKiBHUFVMZWdhY3lSZW5kZXJQaXBlbGluZVN0YXRlLmggaW4g
SGVhZGVycyAqLywKLQkJCQk5M0E5NTNCNTIwRUM5QzNGMDBBNjE5RjYgLyogR1BVTGVnYWN5U2l6
ZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMzE2QkRCQjIxRTczNTRCQjAwREUwRDVBIC8qIEdQVUxl
Z2FjeVRleHR1cmUuaCBpbiBIZWFkZXJzICovLAotCQkJCTMxNkJEQkI4MUU3MzU3Q0IwMERFMEQ1
QSAvKiBHUFVMZWdhY3lUZXh0dXJlRGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzEy
RkY5MTEyMUE0QzM2NTAwRUIxOTlEIC8qIEdQVUNvbW1hbmRCdWZmZXIuaCBpbiBIZWFkZXJzICov
LAorCQkJCTMxMkZGOTEyMjFBNEMzNjUwMEVCMTk5RCAvKiBHUFVEZXZpY2UuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTMxMkZGOTFFMjFBNEMzNzMwMEVCMTk5RCAvKiBHUFVMZWdhY3lCdWZmZXIuaCBp
biBIZWFkZXJzICovLAorCQkJCTMxMkZGOTMyMjFBNEM1NTIwMEVCMTk5RCAvKiBHUFVMZWdhY3lD
b21tYW5kQnVmZmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkzMTJGRjkyQTIxQTRDMzhCMDBFQjE5
OUQgLyogR1BVTGVnYWN5Q29tbWFuZFF1ZXVlLmggaW4gSGVhZGVycyAqLywKKwkJCQkzMTJGRjky
RjIxQTRDMzhCMDBFQjE5OUQgLyogR1BVTGVnYWN5Q29tcHV0ZUNvbW1hbmRFbmNvZGVyLmggaW4g
SGVhZGVycyAqLywKKwkJCQkzMTJGRjkyNjIxQTRDMzhCMDBFQjE5OUQgLyogR1BVTGVnYWN5RGVw
dGhTdGVuY2lsRGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzEyRkY5MzAyMUE0QzM4
QjAwRUIxOTlEIC8qIEdQVUxlZ2FjeURlcHRoU3RlbmNpbFN0YXRlLmggaW4gSGVhZGVycyAqLywK
KwkJCQkzMTJGRjkyNzIxQTRDMzhCMDBFQjE5OUQgLyogR1BVTGVnYWN5RGV2aWNlLmggaW4gSGVh
ZGVycyAqLywKKwkJCQkzMTJGRjkyQjIxQTRDMzhCMDBFQjE5OUQgLyogR1BVTGVnYWN5RHJhd2Fi
bGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTMxMkZGOTJDMjFBNEMzOEIwMEVCMTk5RCAvKiBHUFVM
ZWdhY3lFbnVtcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzEyRkY5MjQyMUE0QzM3MzAwRUIxOTlE
IC8qIEdQVUxlZ2FjeUZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQkzMTJGRjkyMjIxQTRD
MzczMDBFQjE5OUQgLyogR1BVTGVnYWN5TGlicmFyeS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzEy
RkY5MjkyMUE0QzM4QjAwRUIxOTlEIC8qIEdQVUxlZ2FjeVJlbmRlckNvbW1hbmRFbmNvZGVyLmgg
aW4gSGVhZGVycyAqLywKKwkJCQkzMTJGRjkyMDIxQTRDMzczMDBFQjE5OUQgLyogR1BVTGVnYWN5
UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQkzMTJG
RjkyRTIxQTRDMzhCMDBFQjE5OUQgLyogR1BVTGVnYWN5UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVu
dERlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTMxMkZGOTI1MjFBNEMzOEIwMEVCMTk5
RCAvKiBHUFVMZWdhY3lSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5oIGluIEhl
YWRlcnMgKi8sCisJCQkJMzEyRkY5MUQyMUE0QzM3MzAwRUIxOTlEIC8qIEdQVUxlZ2FjeVJlbmRl
clBhc3NEZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQkzMTJGRjkyMTIxQTRDMzczMDBF
QjE5OUQgLyogR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9y
LmggaW4gSGVhZGVycyAqLywKKwkJCQkzMTJGRjkzMTIxQTRDMzhCMDBFQjE5OUQgLyogR1BVTGVn
YWN5UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQkzMTJGRjky
MzIxQTRDMzczMDBFQjE5OUQgLyogR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVTdGF0ZS5oIGluIEhl
YWRlcnMgKi8sCisJCQkJMzEyRkY5MkQyMUE0QzM4QjAwRUIxOTlEIC8qIEdQVUxlZ2FjeVNpemUu
aCBpbiBIZWFkZXJzICovLAorCQkJCTMxMkZGOTI4MjFBNEMzOEIwMEVCMTk5RCAvKiBHUFVMZWdh
Y3lUZXh0dXJlLmggaW4gSGVhZGVycyAqLywKKwkJCQkzMTJGRjkxRjIxQTRDMzczMDBFQjE5OUQg
LyogR1BVTGVnYWN5VGV4dHVyZURlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTMxMkZG
OTEzMjFBNEMzNjUwMEVCMTk5RCAvKiBHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmggaW4gSGVh
ZGVycyAqLywKKwkJCQkzMTJGRjkxNDIxQTRDMzY1MDBFQjE5OUQgLyogR1BVUGlwZWxpbmVTdGFn
ZURlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTMxMkZGOTE1MjFBNEMzNjUwMEVCMTk5
RCAvKiBHUFVRdWV1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzEyRkY5MTYyMUE0QzM2NTAwRUIx
OTlEIC8qIEdQVVJlbmRlclBpcGVsaW5lLmggaW4gSGVhZGVycyAqLywKKwkJCQkzMTJGRjkxNzIx
QTRDMzY1MDBFQjE5OUQgLyogR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmggaW4gSGVhZGVy
cyAqLywKKwkJCQkzMTJGRjkxODIxQTRDMzY1MDBFQjE5OUQgLyogR1BVU2hhZGVyTW9kdWxlLmgg
aW4gSGVhZGVycyAqLywKKwkJCQkzMTJGRjkxOTIxQTRDMzY1MDBFQjE5OUQgLyogR1BVU2hhZGVy
TW9kdWxlRGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzEyRkY5MUEyMUE0QzM2NTAw
RUIxOTlEIC8qIEdQVVN3YXBDaGFpbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzEyRkY5MUIyMUE0
QzM2NTAwRUIxOTlEIC8qIEdQVVRleHR1cmUuaCBpbiBIZWFkZXJzICovLAorCQkJCTMxMkZGOTFD
MjFBNEMzNjUwMEVCMTk5RCAvKiBHUFVUZXh0dXJlRm9ybWF0RW51bS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkM1M0M1RjUwREE1NkI5MjAwMjFFQjVEIC8qIEdyYWRpZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQlCMjIyNzk2NDBEMDBCRjIyMDA3MUI3ODIgLyogR3JhZGllbnRBdHRyaWJ1dGVzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkyRDQ4MUYwNDE0NkI1QzZCMDBBQTc4MzQgLyogR3JhZGllbnRJ
bWFnZS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvR1BVQ29tbWFuZEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L0dQVUNvbW1hbmRCdWZmZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zM2M3MzMyNWE0
NmVjZmQ3NzFiYWYwNGVhNmE1NmI4YmJmOWIzNWVlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUNvbW1hbmRCdWZmZXIuaApAQCAtMCww
ICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BV
KQorCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCitPQkpDX1BST1RPQ09MKE1UTENvbW1hbmRC
dWZmZXIpOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEdQVURldmljZTsKKwordXNp
bmcgUGxhdGZvcm1Db21tYW5kQnVmZmVyID0gTVRMQ29tbWFuZEJ1ZmZlcjsKK3VzaW5nIFBsYXRm
b3JtQ29tbWFuZEJ1ZmZlclNtYXJ0UHRyID0gUmV0YWluUHRyPE1UTENvbW1hbmRCdWZmZXI+Owor
CitjbGFzcyBHUFVDb21tYW5kQnVmZmVyIDogcHVibGljIFJlZkNvdW50ZWQ8R1BVQ29tbWFuZEJ1
ZmZlcj4geworcHVibGljOgorICAgIHN0YXRpYyBSZWZQdHI8R1BVQ29tbWFuZEJ1ZmZlcj4gY3Jl
YXRlKEdQVURldmljZSYpOworCitwcml2YXRlOgorICAgIEdQVUNvbW1hbmRCdWZmZXIoUGxhdGZv
cm1Db21tYW5kQnVmZmVyU21hcnRQdHImJik7CisKKyAgICBQbGF0Zm9ybUNvbW1hbmRCdWZmZXJT
bWFydFB0ciBtX3BsYXRmb3JtQ29tbWFuZEJ1ZmZlcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRGV2aWNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVEZXZpY2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZmMTc3NGU2
Yzg1YmEyZTVkNmYxYzkxNzI2YTkzZDlhNWZlMzgzNmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRGV2aWNlLmNwcApAQCAtMCwwICsx
LDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdQVURl
dmljZS5oIgorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIkdQVVJlbmRlclBpcGVs
aW5lLmgiCisjaW5jbHVkZSAiR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmgiCisjaW5jbHVk
ZSAiR1BVU2hhZGVyTW9kdWxlLmgiCisjaW5jbHVkZSAiR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRv
ci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZlB0cjxHUFVTaGFkZXJNb2R1bGU+IEdQ
VURldmljZTo6Y3JlYXRlU2hhZGVyTW9kdWxlKEdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3ImJiBk
ZXNjcmlwdG9yKSBjb25zdAoreworICAgIHJldHVybiBHUFVTaGFkZXJNb2R1bGU6OmNyZWF0ZSgq
dGhpcywgV1RGTW92ZShkZXNjcmlwdG9yKSk7Cit9CisKK1JlZlB0cjxHUFVSZW5kZXJQaXBlbGlu
ZT4gR1BVRGV2aWNlOjpjcmVhdGVSZW5kZXJQaXBlbGluZShHUFVSZW5kZXJQaXBlbGluZURlc2Ny
aXB0b3ImJiBkZXNjcmlwdG9yKSBjb25zdAoreworICAgIHJldHVybiBHUFVSZW5kZXJQaXBlbGlu
ZTo6Y3JlYXRlKCp0aGlzLCBXVEZNb3ZlKGRlc2NyaXB0b3IpKTsKK30KKworUmVmUHRyPEdQVUNv
bW1hbmRCdWZmZXI+IEdQVURldmljZTo6Y3JlYXRlQ29tbWFuZEJ1ZmZlcigpCit7CisgICAgcmV0
dXJuIEdQVUNvbW1hbmRCdWZmZXI6OmNyZWF0ZSgqdGhpcyk7Cit9CisKK1JlZlB0cjxHUFVRdWV1
ZT4gR1BVRGV2aWNlOjpnZXRRdWV1ZSgpCit7CisgICAgaWYgKCFtX3F1ZXVlKQorICAgICAgICBt
X3F1ZXVlID0gR1BVUXVldWU6OmNyZWF0ZSgqdGhpcyk7CisKKyAgICByZXR1cm4gbV9xdWV1ZTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVEZXZp
Y2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVEZXZpY2UuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi41ODE2ZjE4M2ZjMDkyZDc0NmZiOTczMjI0NDZmOGNiMjMzYzE0ZmQwCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVURl
dmljZS5oCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lm
IEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJHUFVDb21tYW5kQnVmZmVyLmgiCisjaW5jbHVk
ZSAiR1BVUXVldWUuaCIKKworI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworT0JKQ19QUk9UT0NP
TChNVExEZXZpY2UpOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3VzaW5nIFBsYXRmb3JtRGV2
aWNlID0gTVRMRGV2aWNlOwordXNpbmcgUGxhdGZvcm1EZXZpY2VTbWFydFB0ciA9IFJldGFpblB0
cjxNVExEZXZpY2U+OworCitjbGFzcyBHUFVSZW5kZXJQaXBlbGluZTsKK2NsYXNzIEdQVVNoYWRl
ck1vZHVsZTsKKworc3RydWN0IEdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3I7CitzdHJ1Y3QgR1BV
UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOworCitjbGFzcyBHUFVEZXZpY2UgOiBwdWJsaWMgUmVm
Q291bnRlZDxHUFVEZXZpY2U+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmUHRyPEdQVURldmlj
ZT4gY3JlYXRlKCk7CisKKyAgICBSZWZQdHI8R1BVU2hhZGVyTW9kdWxlPiBjcmVhdGVTaGFkZXJN
b2R1bGUoR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvciYmKSBjb25zdDsKKyAgICBSZWZQdHI8R1BV
UmVuZGVyUGlwZWxpbmU+IGNyZWF0ZVJlbmRlclBpcGVsaW5lKEdQVVJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvciYmKSBjb25zdDsKKworICAgIFJlZlB0cjxHUFVDb21tYW5kQnVmZmVyPiBjcmVhdGVD
b21tYW5kQnVmZmVyKCk7CisKKyAgICBSZWZQdHI8R1BVUXVldWU+IGdldFF1ZXVlKCk7CisgICAg
UGxhdGZvcm1EZXZpY2UqIHBsYXRmb3JtRGV2aWNlKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9y
bURldmljZS5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIEdQVURldmljZShQbGF0Zm9ybURldmlj
ZVNtYXJ0UHRyJiYpOworCisgICAgUGxhdGZvcm1EZXZpY2VTbWFydFB0ciBtX3BsYXRmb3JtRGV2
aWNlOworICAgIFJlZlB0cjxHUFVRdWV1ZT4gbV9xdWV1ZTsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5QnVmZmVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lCdWZmZXIuY3BwCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYTQ1ZTM1MGFlZmI1ZmY1YTc2NzBkYTE4MmNhZjE1
MjgxMmU4NTU1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lCdWZmZXIuY3Bw
CisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJHUFVM
ZWdhY3lCdWZmZXIuaCIKLQotI2lmIEVOQUJMRShXRUJNRVRBTCkKLQotI2luY2x1ZGUgIkxvZ2dp
bmcuaCIKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BcnJheUJ1ZmZlci5oPgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLUdQVUxlZ2FjeUJ1ZmZlcjo6fkdQVUxlZ2FjeUJ1ZmZlcigpCi17Ci0g
ICAgTE9HKFdlYk1ldGFsLCAiR1BVQnVmZmVyOjp+R1BVQnVmZmVyKCkiKTsKLX0KLQotdW5zaWdu
ZWQgR1BVTGVnYWN5QnVmZmVyOjpsZW5ndGgoKSBjb25zdAotewotICAgIHJldHVybiBtX2NvbnRl
bnRzID8gbV9jb250ZW50cy0+Ynl0ZUxlbmd0aCgpIDogMDsKLX0KLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9HUFVMZWdhY3lCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9HUFVMZWdhY3lCdWZmZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNjM4OTE4MTdiYjk0YjdkYTk3OTEzMDM1MGMyZTBmY2Q5NzU0NjU4Mi4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5QnVmZmVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2NSAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
Ci0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3By
YWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCTUVUQUwpCi0KLSNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+Ci0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotCi1PQkpDX1BST1RPQ09MKE1UTEJ1ZmZl
cik7Ci0KLW5hbWVzcGFjZSBKU0MgewotY2xhc3MgQXJyYXlCdWZmZXI7Ci1jbGFzcyBBcnJheUJ1
ZmZlclZpZXc7Ci19Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgR1BVTGVnYWN5RGV2
aWNlOwotCi1jbGFzcyBHUFVMZWdhY3lCdWZmZXIgewotcHVibGljOgotICAgIFdFQkNPUkVfRVhQ
T1JUIEdQVUxlZ2FjeUJ1ZmZlcihjb25zdCBHUFVMZWdhY3lEZXZpY2UmLCBjb25zdCBKU0M6OkFy
cmF5QnVmZmVyVmlldyYpOwotICAgIFdFQkNPUkVfRVhQT1JUIH5HUFVMZWdhY3lCdWZmZXIoKTsK
LQotICAgIFdFQkNPUkVfRVhQT1JUIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0OwotICAgIEpTQzo6
QXJyYXlCdWZmZXIqIGNvbnRlbnRzKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50cy5nZXQoKTsg
fQotCi0jaWYgVVNFKE1FVEFMKQotICAgIE1UTEJ1ZmZlciAqbWV0YWwoKSBjb25zdCB7IHJldHVy
biBtX21ldGFsLmdldCgpOyB9Ci0jZW5kaWYKLQotcHJpdmF0ZToKLSNpZiBVU0UoTUVUQUwpCi0g
ICAgUmV0YWluUHRyPE1UTEJ1ZmZlcj4gbV9tZXRhbDsKLSNlbmRpZgotICAgIFJlZlB0cjxKU0M6
OkFycmF5QnVmZmVyPiBtX2NvbnRlbnRzOwotfTsKLSAgICAKLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvR1BVTGVnYWN5Q29tbWFuZEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5Q29tbWFuZEJ1ZmZlci5jcHAKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDZhMjFkNjViOTA4M2E1MDIxNzI5NWZiYThjZTgxYjdmYzAyYjdlM2Iu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeUNvbW1hbmRCdWZmZXIuY3BwCisr
KyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgWXVp
Y2hpcm8gS2lrdXJhICh5Lmtpa3VyYUBnbWFpbC5jb20pCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJHUFVM
ZWdhY3lDb21tYW5kQnVmZmVyLmgiCi0KLSNpZiBFTkFCTEUoV0VCTUVUQUwpCi0KLSNpbmNsdWRl
ICJMb2dnaW5nLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotR1BVTGVnYWN5Q29tbWFuZEJ1
ZmZlcjo6fkdQVUxlZ2FjeUNvbW1hbmRCdWZmZXIoKQotewotICAgIExPRyhXZWJNZXRhbCwgIkdQ
VUNvbW1hbmRCdWZmZXI6On5HUFVDb21tYW5kQnVmZmVyKCkiKTsKLX0KLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lDb21tYW5kQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5Q29tbWFuZEJ1ZmZlci5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA3Y2EzZTA4YzIzNTM2ZWYwOWNkZDM5MzIxNWQ0ZTcxNjBlMDcy
ZTMyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lDb21tYW5kQnVmZmVyLmgK
KysrIC9kZXYvbnVsbApAQCAtMSw2MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxNyBZ
dWljaGlybyBLaWt1cmEgKHkua2lrdXJhQGdtYWlsLmNvbSkKLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCTUVU
QUwpCi0KLSNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRy
Lmg+Ci0KLU9CSkNfUFJPVE9DT0woTVRMQ29tbWFuZEJ1ZmZlcik7Ci0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotY2xhc3MgR1BVTGVnYWN5Q29tbWFuZFF1ZXVlOwotY2xhc3MgR1BVTGVnYWN5RHJh
d2FibGU7Ci0KLWNsYXNzIEdQVUxlZ2FjeUNvbW1hbmRCdWZmZXIgewotcHVibGljOgotICAgIGV4
cGxpY2l0IEdQVUxlZ2FjeUNvbW1hbmRCdWZmZXIoY29uc3QgR1BVTGVnYWN5Q29tbWFuZFF1ZXVl
JiwgRnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRlZENhbGxiYWNrKTsKLSAgICB+R1BVTGVnYWN5
Q29tbWFuZEJ1ZmZlcigpOwotCi0gICAgdm9pZCBjb21taXQoKSBjb25zdDsKLSAgICB2b2lkIHBy
ZXNlbnREcmF3YWJsZShHUFVMZWdhY3lEcmF3YWJsZSYpIGNvbnN0OwotCi0jaWYgVVNFKE1FVEFM
KQotICAgIE1UTENvbW1hbmRCdWZmZXIgKm1ldGFsKCkgY29uc3QgeyByZXR1cm4gbV9tZXRhbC5n
ZXQoKTsgfQotI2VuZGlmCi0KLSNpZiBVU0UoTUVUQUwpCi1wcml2YXRlOgotICAgIFJldGFpblB0
cjxNVExDb21tYW5kQnVmZmVyPiBtX21ldGFsOwotI2VuZGlmCi19OwotICAgIAotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lDb21tYW5kUXVldWUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeUNvbW1hbmRRdWV1ZS5jcHAKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQyMDUyODE4MmEwZmVlZjlmYjM3MjA1YWI2MmE3OGNh
MGY2OWViODAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeUNvbW1hbmRRdWV1
ZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IkdQVUxlZ2FjeUNvbW1hbmRRdWV1ZS5oIgotCi0jaWYgRU5BQkxFKFdFQk1FVEFMKQotCi0jaW5j
bHVkZSAiTG9nZ2luZy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUdQVUxlZ2FjeUNvbW1h
bmRRdWV1ZTo6fkdQVUxlZ2FjeUNvbW1hbmRRdWV1ZSgpCi17Ci0gICAgTE9HKFdlYk1ldGFsLCAi
R1BVTGVnYWN5Q29tbWFuZFF1ZXVlOjp+R1BVTGVnYWN5Q29tbWFuZFF1ZXVlKCkiKTsKLX0KLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lDb21tYW5kUXVldWUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lDb21tYW5kUXVldWUuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjI2ZjhlMmE4MzQyMGE0NzEwNDhkM2NiNzA0
OTk5MTQwNjljNTE2NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5Q29tbWFu
ZFF1ZXVlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUo
V0VCTUVUQUwpCi0KLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0KLU9CSkNfUFJPVE9DT0wo
TVRMQ29tbWFuZFF1ZXVlKTsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHUFVMZWdh
Y3lEZXZpY2U7Ci0KLWNsYXNzIEdQVUxlZ2FjeUNvbW1hbmRRdWV1ZSB7Ci1wdWJsaWM6Ci0gICAg
V0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgR1BVTGVnYWN5Q29tbWFuZFF1ZXVlKGNvbnN0IEdQVUxl
Z2FjeURldmljZSYpOwotICAgIFdFQkNPUkVfRVhQT1JUIH5HUFVMZWdhY3lDb21tYW5kUXVldWUo
KTsKLQotICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBsYWJlbCgpIGNvbnN0OwotICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0TGFiZWwoY29uc3QgU3RyaW5nJikgY29uc3Q7Ci0KLSNpZiBVU0Uo
TUVUQUwpCi0gICAgTVRMQ29tbWFuZFF1ZXVlICptZXRhbCgpIGNvbnN0IHsgcmV0dXJuIG1fbWV0
YWwuZ2V0KCk7IH0KLSNlbmRpZgotCi0jaWYgVVNFKE1FVEFMKQotcHJpdmF0ZToKLSAgICBSZXRh
aW5QdHI8TVRMQ29tbWFuZFF1ZXVlPiBtX21ldGFsOwotI2VuZGlmCi19OwotICAgIAotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lDb21wdXRlQ29tbWFuZEVuY29kZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeUNvbXB1dGVDb21t
YW5kRW5jb2Rlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZiN2M5ZTdlNWIz
NDM4NjI5ZjM4Y2RiZjdhZGYyZmY5NzVjYWIyZjIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L0dQVUxlZ2FjeUNvbXB1dGVDb21tYW5kRW5jb2Rlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0
MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IFl1aWNoaXJvIEtpa3VyYSAoeS5r
aWt1cmFAZ21haWwuY29tKQotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiR1BVTGVnYWN5Q29tcHV0ZUNvbW1h
bmRFbmNvZGVyLmgiCi0KLSNpZiBFTkFCTEUoV0VCTUVUQUwpCi0KLSNpbmNsdWRlICJMb2dnaW5n
LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICAKLUdQVUxlZ2FjeUNvbXB1dGVDb21tYW5k
RW5jb2Rlcjo6fkdQVUxlZ2FjeUNvbXB1dGVDb21tYW5kRW5jb2RlcigpCi17Ci0gICAgTE9HKFdl
Yk1ldGFsLCAiR1BVTGVnYWN5Q29tcHV0ZUNvbW1hbmRFbmNvZGVyOjp+R1BVTGVnYWN5Q29tcHV0
ZUNvbW1hbmRFbmNvZGVyKCkiKTsKLX0KLSAgICAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQot
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
R1BVTGVnYWN5Q29tcHV0ZUNvbW1hbmRFbmNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5Q29tcHV0ZUNvbW1hbmRFbmNvZGVyLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE3YTdhOTY3N2NmZDZmNTU1MDA2OTlmMzZjZWMxNzM5ZDhh
ZmNhM2MuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeUNvbXB1dGVDb21tYW5k
RW5jb2Rlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNyBZdWljaGlybyBLaWt1cmEgKHkua2lrdXJhQGdtYWlsLmNvbSkKLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
LSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBF
TkFCTEUoV0VCTUVUQUwpCi0KLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0KLU9CSkNfUFJP
VE9DT0woTVRMQ29tcHV0ZUNvbW1hbmRFbmNvZGVyKTsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
ICAgIAotY2xhc3MgR1BVTGVnYWN5QnVmZmVyOwotY2xhc3MgR1BVTGVnYWN5Q29tbWFuZEJ1ZmZl
cjsKLWNsYXNzIEdQVUxlZ2FjeUNvbXB1dGVQaXBlbGluZVN0YXRlOwotCi1zdHJ1Y3QgR1BVTGVn
YWN5U2l6ZTsKLQotY2xhc3MgR1BVTGVnYWN5Q29tcHV0ZUNvbW1hbmRFbmNvZGVyIHsKLXB1Ymxp
YzoKLSAgICBleHBsaWNpdCBHUFVMZWdhY3lDb21wdXRlQ29tbWFuZEVuY29kZXIoY29uc3QgR1BV
TGVnYWN5Q29tbWFuZEJ1ZmZlciYpOwotICAgIH5HUFVMZWdhY3lDb21wdXRlQ29tbWFuZEVuY29k
ZXIoKTsKLQotICAgIHZvaWQgc2V0Q29tcHV0ZVBpcGVsaW5lU3RhdGUoY29uc3QgR1BVTGVnYWN5
Q29tcHV0ZVBpcGVsaW5lU3RhdGUmKSBjb25zdDsKLSAgICB2b2lkIHNldEJ1ZmZlcihjb25zdCBH
UFVMZWdhY3lCdWZmZXImLCB1bnNpZ25lZCwgdW5zaWduZWQpIGNvbnN0OwotICAgIHZvaWQgZGlz
cGF0Y2goR1BVTGVnYWN5U2l6ZSwgR1BVTGVnYWN5U2l6ZSkgY29uc3Q7Ci0gICAgdm9pZCBlbmRF
bmNvZGluZygpIGNvbnN0OwotCi0jaWYgVVNFKE1FVEFMKQotcHJpdmF0ZToKLSAgICBSZXRhaW5Q
dHI8TVRMQ29tcHV0ZUNvbW1hbmRFbmNvZGVyPiBtX21ldGFsOwotI2VuZGlmCi19OwotICAgIAot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lDb21wdXRlUGlwZWxpbmVTdGF0ZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5Q29tcHV0
ZVBpcGVsaW5lU3RhdGUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYjcwNGZj
ZTU1ZWRlYWNjMWNmYzRhNzg5YjgzNTUxZGIyNjZjZGM0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9HUFVMZWdhY3lDb21wdXRlUGlwZWxpbmVTdGF0ZS5jcHAKKysrIC9kZXYvbnVsbApAQCAt
MSw0MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IFl1aWNoaXJvIEtpa3VyYSAo
eS5raWt1cmFAZ21haWwuY29tKQotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
Ci0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiR1BVTGVnYWN5Q29tcHV0ZVBp
cGVsaW5lU3RhdGUuaCIKLQotI2lmIEVOQUJMRShXRUJNRVRBTCkKLQotI2luY2x1ZGUgIkxvZ2dp
bmcuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIAotR1BVTGVnYWN5Q29tcHV0ZVBpcGVs
aW5lU3RhdGU6On5HUFVMZWdhY3lDb21wdXRlUGlwZWxpbmVTdGF0ZSgpCi17Ci0gICAgTE9HKFdl
Yk1ldGFsLCAiR1BVTGVnYWN5Q29tcHV0ZVBpcGVsaW5lU3RhdGU6On5HUFVMZWdhY3lDb21wdXRl
UGlwZWxpbmVTdGF0ZSgpIik7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVn
YWN5Q29tcHV0ZVBpcGVsaW5lU3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9HUFVMZWdhY3lDb21wdXRlUGlwZWxpbmVTdGF0ZS5oCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAyMmI5MzAzNzAwOWZiODc1MDZhNjMzODUxNzJlZjUwNzc1ZmEzNmFkLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lDb21wdXRlUGlwZWxpbmVTdGF0ZS5o
CisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
NyBZdWljaGlybyBLaWt1cmEgKHkua2lrdXJhQGdtYWlsLmNvbSkKLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VC
TUVUQUwpCi0KLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0KLU9CSkNfUFJPVE9DT0woTVRM
Q29tcHV0ZVBpcGVsaW5lU3RhdGUpOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEdQ
VUxlZ2FjeURldmljZTsKLWNsYXNzIEdQVUxlZ2FjeUZ1bmN0aW9uOwotCi1jbGFzcyBHUFVMZWdh
Y3lDb21wdXRlUGlwZWxpbmVTdGF0ZSB7Ci1wdWJsaWM6Ci0gICAgR1BVTGVnYWN5Q29tcHV0ZVBp
cGVsaW5lU3RhdGUoKSA9IGRlZmF1bHQ7Ci0gICAgR1BVTGVnYWN5Q29tcHV0ZVBpcGVsaW5lU3Rh
dGUoY29uc3QgR1BVTGVnYWN5RGV2aWNlJiwgY29uc3QgR1BVTGVnYWN5RnVuY3Rpb24mKTsKLSAg
ICB+R1BVTGVnYWN5Q29tcHV0ZVBpcGVsaW5lU3RhdGUoKTsKLQotI2lmIFVTRShNRVRBTCkKLSAg
ICBNVExDb21wdXRlUGlwZWxpbmVTdGF0ZSAqbWV0YWwoKSBjb25zdCB7IHJldHVybiBtX21ldGFs
LmdldCgpOyB9Ci0jZW5kaWYKLQotI2lmIFVTRShNRVRBTCkKLXByaXZhdGU6Ci0gICAgUmV0YWlu
UHRyPE1UTENvbXB1dGVQaXBlbGluZVN0YXRlPiBtX21ldGFsOwotI2VuZGlmCi19OwotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeURlcHRoU3RlbmNpbERlc2NyaXB0b3IuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeURlcHRoU3Rl
bmNpbERlc2NyaXB0b3IuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5Y2M3OWQ2
ZGQ2MzEzYzJhM2Q4N2QyNDc5MWQ3NmM4MzgwNTQzMTEzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9HUFVMZWdhY3lEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDQyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiR1BVTGVnYWN5RGVwdGhTdGVuY2ls
RGVzY3JpcHRvci5oIgotCi0jaWYgRU5BQkxFKFdFQk1FVEFMKQotCi0jaW5jbHVkZSAiTG9nZ2lu
Zy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUdQVUxlZ2FjeURlcHRoU3RlbmNpbERlc2Ny
aXB0b3I6On5HUFVMZWdhY3lEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yKCkKLXsKLSAgICBMT0coV2Vi
TWV0YWwsICJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yOjp+R1BVRGVwdGhTdGVuY2lsRGVzY3Jp
cHRvcigpIik7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5RGVwdGhT
dGVuY2lsRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L0dQVUxlZ2FjeURlcHRoU3RlbmNpbERlc2NyaXB0b3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZDljYmYxODI1ZDA5MDU3MzVlNGU0NTA5ZDE5MmJlNGFlODI2NjcwMS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5RGVwdGhTdGVuY2lsRGVzY3JpcHRvci5oCisr
KyAvZGV2L251bGwKQEAgLTEsNjEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQk1FVEFMKQot
Ci0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotCi1PQkpDX0NMQVNTIE1UTERlcHRoU3RlbmNp
bERlc2NyaXB0b3I7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotZW51bSBjbGFzcyBHUFVMZWdh
Y3lDb21wYXJlRnVuY3Rpb247Ci0KLWNsYXNzIEdQVUxlZ2FjeURlcHRoU3RlbmNpbERlc2NyaXB0
b3IgewotcHVibGljOgotICAgIEdQVUxlZ2FjeURlcHRoU3RlbmNpbERlc2NyaXB0b3IoKTsKLSAg
ICB+R1BVTGVnYWN5RGVwdGhTdGVuY2lsRGVzY3JpcHRvcigpOwotCi0gICAgYm9vbCBkZXB0aFdy
aXRlRW5hYmxlZCgpIGNvbnN0OwotICAgIHZvaWQgc2V0RGVwdGhXcml0ZUVuYWJsZWQoYm9vbCkg
Y29uc3Q7Ci0KLSAgICBHUFVMZWdhY3lDb21wYXJlRnVuY3Rpb24gZGVwdGhDb21wYXJlRnVuY3Rp
b24oKSBjb25zdDsKLSAgICB2b2lkIHNldERlcHRoQ29tcGFyZUZ1bmN0aW9uKEdQVUxlZ2FjeUNv
bXBhcmVGdW5jdGlvbikgY29uc3Q7Ci0KLSNpZiBVU0UoTUVUQUwpCi0gICAgTVRMRGVwdGhTdGVu
Y2lsRGVzY3JpcHRvciAqbWV0YWwoKSBjb25zdCB7IHJldHVybiBtX21ldGFsLmdldCgpOyB9Ci0j
ZW5kaWYKLQotI2lmIFVTRShNRVRBTCkKLXByaXZhdGU6Ci0gICAgUmV0YWluUHRyPE1UTERlcHRo
U3RlbmNpbERlc2NyaXB0b3I+IG1fbWV0YWw7Ci0jZW5kaWYKLX07Ci0gICAgCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeURlcHRoU3RlbmNpbFN0YXRlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lEZXB0aFN0ZW5jaWxTdGF0ZS5j
cHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAyN2Y1NGY3Y2JhODA2NGFhMjU5ZmU3
NjJjOGRhZGRkMjUyNDQ1NDIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeURl
cHRoU3RlbmNpbFN0YXRlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0jaW5jbHVkZSAiR1BVTGVnYWN5RGVwdGhTdGVuY2lsU3RhdGUuaCIKLQotI2lmIEVOQUJM
RShXRUJNRVRBTCkKLQotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1HUFVMZWdhY3lEZXB0aFN0ZW5jaWxTdGF0ZTo6fkdQVUxlZ2FjeURlcHRoU3RlbmNpbFN0
YXRlKCkKLXsKLSAgICBMT0coV2ViTWV0YWwsICJHUFVMZWdhY3lEZXB0aFN0ZW5jaWxTdGF0ZTo6
fkdQVUxlZ2FjeURlcHRoU3RlbmNpbFN0YXRlKCkiKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9HUFVMZWdhY3lEZXB0aFN0ZW5jaWxTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeURlcHRoU3RlbmNpbFN0YXRlLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY2NGZmNTVhODQ2NTk5ODM2YmY4NWQ4ZjM5OTQ4ZWUyNjZl
ZjM3MWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeURlcHRoU3RlbmNpbFN0
YXRlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VC
TUVUQUwpCi0KLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5Q
dHIuaD4KLQotT0JKQ19QUk9UT0NPTChNVExEZXB0aFN0ZW5jaWxTdGF0ZSk7Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotY2xhc3MgR1BVTGVnYWN5RGV2aWNlOwotY2xhc3MgR1BVTGVnYWN5RGVw
dGhTdGVuY2lsRGVzY3JpcHRvcjsKLQotY2xhc3MgR1BVTGVnYWN5RGVwdGhTdGVuY2lsU3RhdGUg
ewotcHVibGljOgotICAgIEdQVUxlZ2FjeURlcHRoU3RlbmNpbFN0YXRlKCkgPSBkZWZhdWx0Owot
ICAgIEdQVUxlZ2FjeURlcHRoU3RlbmNpbFN0YXRlKGNvbnN0IEdQVUxlZ2FjeURldmljZSYsIGNv
bnN0IEdQVUxlZ2FjeURlcHRoU3RlbmNpbERlc2NyaXB0b3ImKTsKLSAgICB+R1BVTGVnYWN5RGVw
dGhTdGVuY2lsU3RhdGUoKTsKLQotICAgIFN0cmluZyBsYWJlbCgpIGNvbnN0OwotICAgIHZvaWQg
c2V0TGFiZWwoY29uc3QgU3RyaW5nJikgY29uc3Q7Ci0KLSNpZiBVU0UoTUVUQUwpCi0gICAgTVRM
RGVwdGhTdGVuY2lsU3RhdGUgKm1ldGFsKCkgY29uc3QgeyByZXR1cm4gbV9tZXRhbC5nZXQoKTsg
fQotI2VuZGlmCi0KLSNpZiBVU0UoTUVUQUwpCi1wcml2YXRlOgotICAgIFJldGFpblB0cjxNVExE
ZXB0aFN0ZW5jaWxTdGF0ZT4gbV9tZXRhbDsKLSNlbmRpZgotfTsKLSAgICAKLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5RGV2aWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lEZXZpY2UuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA5NGVmYjY3NGZkNjRmYjJjNDk1ZDM5ZWI4OWM4Y2RkNmE4ZmFjNGU3Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lEZXZpY2UuY3BwCisrKyAvZGV2L251bGwK
QEAgLTEsNDMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
LSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJHUFVMZWdhY3lEZXZpY2UuaCIK
LQotI2lmIEVOQUJMRShXRUJNRVRBTCkKLQotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1HUFVMZWdhY3lEZXZpY2U6On5HUFVMZWdhY3lEZXZpY2UoKQotewot
ICAgIExPRyhXZWJNZXRhbCwgIkdQVUxlZ2FjeURldmljZTo6fkdQVUxlZ2FjeURldmljZSgpIik7
Ci0gICAgZGlzY29ubmVjdCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxl
Z2FjeURldmljZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxl
Z2FjeURldmljZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NDZkMzViYTUxZjZj
ZTA2NWI2YjBjY2RiMTllZjE0ZjQ3OGU1MWU2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9H
UFVMZWdhY3lEZXZpY2UuaAorKysgL2Rldi9udWxsCkBAIC0xLDY3ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lm
IEVOQUJMRShXRUJNRVRBTCkKLQotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLQotT0JKQ19D
TEFTUyBDQUxheWVyOwotT0JKQ19DTEFTUyBXZWJNZXRhbExheWVyOwotCi1PQkpDX1BST1RPQ09M
KE1UTERldmljZSk7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgR1BVTGVnYWN5RGV2
aWNlIHsKLXB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBHUFVMZWdhY3lEZXZpY2UoKTsKLSAg
ICBXRUJDT1JFX0VYUE9SVCB+R1BVTGVnYWN5RGV2aWNlKCk7Ci0KLSAgICBXRUJDT1JFX0VYUE9S
VCBib29sIG9wZXJhdG9yISgpIGNvbnN0OwotCi0gICAgdm9pZCByZXNoYXBlKGludCB3aWR0aCwg
aW50IGhlaWdodCkgY29uc3Q7Ci0KLSNpZiBVU0UoTUVUQUwpCi0gICAgV2ViTWV0YWxMYXllciAq
bGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX2xheWVyLmdldCgpOyB9Ci0gICAgV0VCQ09SRV9FWFBP
UlQgQ0FMYXllciAqcGxhdGZvcm1MYXllcigpIGNvbnN0OwotICAgIE1UTERldmljZSAqbWV0YWwo
KSBjb25zdCB7IHJldHVybiBtX21ldGFsLmdldCgpOyB9Ci0jZW5kaWYKLQotICAgIHZvaWQgbWFy
a0xheWVyQ29tcG9zaXRlZCgpIGNvbnN0IHsgfQotCi1wcml2YXRlOgotICAgIHZvaWQgZGlzY29u
bmVjdCgpOwotCi0jaWYgVVNFKE1FVEFMKQotICAgIFJldGFpblB0cjxXZWJNZXRhbExheWVyPiBt
X2xheWVyOwotICAgIFJldGFpblB0cjxNVExEZXZpY2U+IG1fbWV0YWw7Ci0jZW5kaWYKLX07Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5RHJhd2FibGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeURyYXdhYmxlLmNwcApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTQyZmRjNTliNGEwMDk0ZGZhMGFhZDgyNWE2OWRj
MDY1N2YxZjA5Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5RHJhd2FibGUu
Y3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJH
UFVMZWdhY3lEcmF3YWJsZS5oIgotCi0jaWYgRU5BQkxFKFdFQk1FVEFMKQotCi0jaW5jbHVkZSAi
TG9nZ2luZy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUdQVUxlZ2FjeURyYXdhYmxlOjp+
R1BVTGVnYWN5RHJhd2FibGUoKQotewotICAgIExPRyhXZWJNZXRhbCwgIkdQVUxlZ2FjeURyYXdh
YmxlOjp+R1BVTGVnYWN5RHJhd2FibGUoKSIpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L0dQVUxlZ2FjeURyYXdhYmxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvR1BVTGVnYWN5RHJhd2FibGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
OWFiZmZlMmU5ZDU5OTBlNmUxODE3OThiMDJhM2IzMWFhZjFiMzliNS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVTGVnYWN5RHJhd2FibGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDYwICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
LSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJh
Z21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJNRVRBTCkKLQotI2luY2x1ZGUgPHd0Zi9SZXRhaW5Q
dHIuaD4KLQotT0JKQ19QUk9UT0NPTChNVExEcmF3YWJsZSk7Ci1PQkpDX1BST1RPQ09MKE1UTFRl
eHR1cmUpOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEdQVUxlZ2FjeURldmljZTsK
LQotY2xhc3MgR1BVTGVnYWN5RHJhd2FibGUgewotcHVibGljOgotICAgIGV4cGxpY2l0IEdQVUxl
Z2FjeURyYXdhYmxlKGNvbnN0IEdQVUxlZ2FjeURldmljZSYpOwotICAgIH5HUFVMZWdhY3lEcmF3
YWJsZSgpOwotCi0gICAgdm9pZCByZWxlYXNlKCk7Ci0KLSNpZiBVU0UoTUVUQUwpCi0gICAgTVRM
RHJhd2FibGUgKm1ldGFsKCkgY29uc3Q7Ci0KLSAgICAvLyBGSVhNRTogV2ViTWV0YWwgLSBub3Qg
YWxsIGRyYXdhYmxlcyBzaG91bGQgaGF2ZSB0aGlzLiBPbmx5IHRoZSBmcmFtZWJ1ZmZlci4KLSAg
ICBNVExUZXh0dXJlICp0ZXh0dXJlKCkgY29uc3Q7Ci0jZW5kaWYKLQotI2lmIFVTRShNRVRBTCkK
LXByaXZhdGU6Ci0gICAgUmV0YWluUHRyPE1UTERyYXdhYmxlPiBtX21ldGFsOwotI2VuZGlmCi19
OwotICAgIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5RW51bXMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lFbnVtcy5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMWUxOGQ0MjMwMzUwYzhjZjU5MTg5YjQ0ZTAxMmZlOTIz
MTM5OTEzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lFbnVtcy5oCisrKyAv
ZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQk1FVEFMKQotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWVudW0gY2xhc3MgR1BVTGVnYWN5Q29tcGFyZUZ1bmN0aW9u
IHsKLSAgICBOZXZlciA9IDAsCi0gICAgTGVzcyA9IDEsCi0gICAgRXF1YWwgPSAyLAotICAgIExl
c3NFcXVhbCA9IDMsCi0gICAgR3JlYXRlciA9IDQsCi0gICAgTm90RXF1YWwgPSA1LAotICAgIEdy
ZWF0ZXJFcXVhbCA9IDYsCi0gICAgQWx3YXlzID0gNwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9HUFVMZWdhY3lGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVTGVnYWN5RnVuY3Rpb24uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA3NGQ1NDI1ODBhY2Q3ZGUwMDE2NzhmMDc0NWIxNGM0ODZlYTMyMWRlLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lGdW5jdGlvbi5jcHAKKysrIC9kZXYvbnVsbApA
QCAtMSw0MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgot
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkdQVUxlZ2FjeUZ1bmN0aW9uLmgi
Ci0KLSNpZiBFTkFCTEUoV0VCTUVUQUwpCi0KLSNpbmNsdWRlICJMb2dnaW5nLmgiCi0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotR1BVTGVnYWN5RnVuY3Rpb246On5HUFVMZWdhY3lGdW5jdGlvbigp
Ci17Ci0gICAgTE9HKFdlYk1ldGFsLCAiR1BVTGVnYWN5RnVuY3Rpb246On5HUFVMZWdhY3lGdW5j
dGlvbigpIik7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5RnVuY3Rp
b24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lGdW5j
dGlvbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1Zjk2OTBjNTc4YWM2YTFlZjY3
NDUzODE4YTc3NGFkOGQ3YjU2ZDAxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdh
Y3lGdW5jdGlvbi5oCisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0g
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5B
QkxFKFdFQk1FVEFMKQotCi0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotCi1PQkpDX1BST1RP
Q09MKE1UTEZ1bmN0aW9uKTsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHUFVMZWdh
Y3lMaWJyYXJ5OwotCi1jbGFzcyBHUFVMZWdhY3lGdW5jdGlvbiB7Ci1wdWJsaWM6Ci0gICAgV0VC
Q09SRV9FWFBPUlQgR1BVTGVnYWN5RnVuY3Rpb24oY29uc3QgR1BVTGVnYWN5TGlicmFyeSYsIGNv
bnN0IFN0cmluZyYgbmFtZSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgfkdQVUxlZ2FjeUZ1bmN0aW9u
KCk7Ci0KLSAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0OwotCi0gICAgV0VCQ09SRV9FWFBPUlQg
U3RyaW5nIG5hbWUoKSBjb25zdDsKLQotI2lmIFVTRShNRVRBTCkKLSAgICBNVExGdW5jdGlvbiAq
bWV0YWwoKSBjb25zdCB7IHJldHVybiBtX21ldGFsLmdldCgpOyB9Ci0jZW5kaWYKLQotI2lmIFVT
RShNRVRBTCkKLXByaXZhdGU6Ci0gICAgUmV0YWluUHRyPE1UTEZ1bmN0aW9uPiBtX21ldGFsOwot
I2VuZGlmCi19OwotICAgIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lMaWJy
YXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lM
aWJyYXJ5LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWMyYjM5NjJkNzg1ZmUy
NTAzOWVkZmM0MDQ1ZDUxNTA0NGZlMjdhMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BV
TGVnYWN5TGlicmFyeS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIkdQVUxlZ2FjeUxpYnJhcnkuaCIKLQotI2lmIEVOQUJMRShXRUJNRVRBTCkK
LQotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1HUFVMZWdh
Y3lMaWJyYXJ5Ojp+R1BVTGVnYWN5TGlicmFyeSgpCi17Ci0gICAgTE9HKFdlYk1ldGFsLCAiR1BV
TGVnYWN5TGlicmFyeTo6fkdQVUxlZ2FjeUxpYnJhcnkoKSIpOwotfQotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeUxpYnJhcnkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lMaWJyYXJ5LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDE1MGRmMzEyMmJiMjAyNWQxMDllNDY0ZGIxMDBmMmQ3Yjk2OGE2YjMuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeUxpYnJhcnkuaAorKysgL2Rldi9udWxsCkBAIC0x
LDYwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJNRVRBTCkKLQotI2luY2x1ZGUgPHd0Zi9S
ZXRhaW5QdHIuaD4KLQotT0JKQ19QUk9UT0NPTChNVExMaWJyYXJ5KTsKLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1jbGFzcyBHUFVMZWdhY3lEZXZpY2U7Ci0KLWNsYXNzIEdQVUxlZ2FjeUxpYnJh
cnkgewotcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIEdQVUxlZ2FjeUxpYnJhcnkoY29uc3Qg
R1BVTGVnYWN5RGV2aWNlJiwgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlKTsKLSAgICBXRUJDT1JF
X0VYUE9SVCB+R1BVTGVnYWN5TGlicmFyeSgpOwotCi0gICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5n
IGxhYmVsKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRMYWJlbChjb25zdCBT
dHJpbmcmKSBjb25zdDsKLQotICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxTdHJpbmc+IGZ1bmN0
aW9uTmFtZXMoKSBjb25zdDsKLQotI2lmIFVTRShNRVRBTCkKLSAgICBNVExMaWJyYXJ5ICptZXRh
bCgpIGNvbnN0IHsgcmV0dXJuIG1fbWV0YWwuZ2V0KCk7IH0KLSNlbmRpZgotCi0jaWYgVVNFKE1F
VEFMKQotcHJpdmF0ZToKLSAgICBSZXRhaW5QdHI8TVRMTGlicmFyeT4gbV9tZXRhbDsKLSNlbmRp
ZgotfTsKLSAgICAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5UmVuZGVyQ29t
bWFuZEVuY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQ
VUxlZ2FjeVJlbmRlckNvbW1hbmRFbmNvZGVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggYTNlNzQ4NzVkN2E5YmEyOWYyYjEwMTg4ZWYxZThlMWYwODExNmM5MS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5UmVuZGVyQ29tbWFuZEVuY29kZXIuY3BwCisrKyAv
ZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJHUFVMZWdhY3lS
ZW5kZXJDb21tYW5kRW5jb2Rlci5oIgotCi0jaWYgRU5BQkxFKFdFQk1FVEFMKQotCi0jaW5jbHVk
ZSAiTG9nZ2luZy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUdQVUxlZ2FjeVJlbmRlckNv
bW1hbmRFbmNvZGVyOjp+R1BVTGVnYWN5UmVuZGVyQ29tbWFuZEVuY29kZXIoKQotewotICAgIExP
RyhXZWJNZXRhbCwgIkdQVUxlZ2FjeVJlbmRlckNvbW1hbmRFbmNvZGVyOjp+R1BVTGVnYWN5UmVu
ZGVyQ29tbWFuZEVuY29kZXIoKSIpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQ
VUxlZ2FjeVJlbmRlckNvbW1hbmRFbmNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVTGVnYWN5UmVuZGVyQ29tbWFuZEVuY29kZXIuaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggNmNlNjFlMDM3NWI1MjNjNjBhMDAxMDA3MGI1NTNiY2Y1ZDMwMDQ1
Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5UmVuZGVyQ29tbWFuZEVuY29k
ZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDYyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQot
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJN
RVRBTCkKLQotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLQotT0JKQ19QUk9UT0NPTChNVExS
ZW5kZXJDb21tYW5kRW5jb2Rlcik7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgR1BV
TGVnYWN5QnVmZmVyOwotY2xhc3MgR1BVTGVnYWN5Q29tbWFuZEJ1ZmZlcjsKLWNsYXNzIEdQVUxl
Z2FjeURlcHRoU3RlbmNpbFN0YXRlOwotY2xhc3MgR1BVTGVnYWN5UmVuZGVyUGFzc0Rlc2NyaXB0
b3I7Ci1jbGFzcyBHUFVMZWdhY3lSZW5kZXJQaXBlbGluZVN0YXRlOwotCi1jbGFzcyBHUFVMZWdh
Y3lSZW5kZXJDb21tYW5kRW5jb2RlciB7Ci1wdWJsaWM6Ci0gICAgR1BVTGVnYWN5UmVuZGVyQ29t
bWFuZEVuY29kZXIoY29uc3QgR1BVTGVnYWN5Q29tbWFuZEJ1ZmZlciYsIGNvbnN0IEdQVUxlZ2Fj
eVJlbmRlclBhc3NEZXNjcmlwdG9yJik7Ci0gICAgfkdQVUxlZ2FjeVJlbmRlckNvbW1hbmRFbmNv
ZGVyKCk7Ci0KLSAgICB2b2lkIHNldFJlbmRlclBpcGVsaW5lU3RhdGUoY29uc3QgR1BVTGVnYWN5
UmVuZGVyUGlwZWxpbmVTdGF0ZSYpIGNvbnN0OwotICAgIHZvaWQgc2V0RGVwdGhTdGVuY2lsU3Rh
dGUoY29uc3QgR1BVTGVnYWN5RGVwdGhTdGVuY2lsU3RhdGUmKSBjb25zdDsKLSAgICB2b2lkIHNl
dFZlcnRleEJ1ZmZlcihjb25zdCBHUFVMZWdhY3lCdWZmZXImLCB1bnNpZ25lZCBvZmZzZXQsIHVu
c2lnbmVkIGluZGV4KSBjb25zdDsKLSAgICB2b2lkIHNldEZyYWdtZW50QnVmZmVyKGNvbnN0IEdQ
VUxlZ2FjeUJ1ZmZlciYsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgaW5kZXgpIGNvbnN0Owot
ICAgIHZvaWQgZHJhd1ByaW1pdGl2ZXModW5zaWduZWQgdHlwZSwgdW5zaWduZWQgc3RhcnQsIHVu
c2lnbmVkIGNvdW50KSBjb25zdDsKLSAgICB2b2lkIGVuZEVuY29kaW5nKCkgY29uc3Q7Ci0KLSNp
ZiBVU0UoTUVUQUwpCi1wcml2YXRlOgotICAgIFJldGFpblB0cjxNVExSZW5kZXJDb21tYW5kRW5j
b2Rlcj4gbV9tZXRhbDsKLSNlbmRpZgotfTsKLSAgICAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
LQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvR1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lSZW5kZXJQYXNzQXR0YWNobWVu
dERlc2NyaXB0b3IuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5Y2FmNTgxMDdj
M2UzZGEwMTI4Y2ZjMDgzODg5MTg5OWEzNWZjZWFiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9HUFVMZWdhY3lSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuY3BwCisrKyAvZGV2L251
bGwKQEAgLTEsNDMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJHUFVMZWdhY3lSZW5kZXJQ
YXNzQXR0YWNobWVudERlc2NyaXB0b3IuaCIKLQotI2lmIEVOQUJMRShXRUJNRVRBTCkKLQotI2lu
Y2x1ZGUgIkdQVUxlZ2FjeVRleHR1cmUuaCIKLSNpbmNsdWRlICJMb2dnaW5nLmgiCi0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotR1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9y
Ojp+R1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yKCkKLXsKLSAgICBMT0co
V2ViTWV0YWwsICJHUFVMZWdhY3lSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3I6On5HUFVM
ZWdhY3lSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IoKSIpOwotfQotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeVJlbmRlclBh
c3NBdHRhY2htZW50RGVzY3JpcHRvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBm
MjNjNzUwZDRiMzExYTRlYTI5NTJkOTdjNzNmODgxMDQyZDQwOTdiLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9HUFVMZWdhY3lSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuaAorKysg
L2Rldi9udWxsCkBAIC0xLDY1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJNRVRBTCkKLQot
I2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLQotT0JKQ19DTEFTUyBNVExSZW5kZXJQYXNzQXR0
YWNobWVudERlc2NyaXB0b3I7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgR1BVTGVn
YWN5VGV4dHVyZTsKLQotY2xhc3MgR1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlw
dG9yIHsKLXB1YmxpYzoKLSAgICB+R1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlw
dG9yKCk7Ci0KLSAgICB1bnNpZ25lZCBsb2FkQWN0aW9uKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRM
b2FkQWN0aW9uKHVuc2lnbmVkKSBjb25zdDsKLQotICAgIHVuc2lnbmVkIHN0b3JlQWN0aW9uKCkg
Y29uc3Q7Ci0gICAgdm9pZCBzZXRTdG9yZUFjdGlvbih1bnNpZ25lZCkgY29uc3Q7Ci0KLSAgICB2
b2lkIHNldFRleHR1cmUoY29uc3QgR1BVTGVnYWN5VGV4dHVyZSYpIGNvbnN0OwotCi0jaWYgVVNF
KE1FVEFMKQotICAgIE1UTFJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvciAqbWV0YWwoKSBj
b25zdDsKLSNlbmRpZgotCi0jaWYgVVNFKE1FVEFMKQotcHJvdGVjdGVkOgotICAgIGV4cGxpY2l0
IEdQVUxlZ2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcihNVExSZW5kZXJQYXNzQXR0
YWNobWVudERlc2NyaXB0b3IgKik7Ci0KLXByaXZhdGU6Ci0gICAgUmV0YWluUHRyPE1UTFJlbmRl
clBhc3NBdHRhY2htZW50RGVzY3JpcHRvcj4gbV9tZXRhbDsKLSNlbmRpZgotfTsKLSAgICAKLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVu
dERlc2NyaXB0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQ
VUxlZ2FjeVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggY2E4MmU5NGQwODM2MjkzMjU1NTIxYWUwYzRlOTRmNThmZjVh
ZWQ1Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5UmVuZGVyUGFzc0NvbG9y
QXR0YWNobWVudERlc2NyaXB0b3IuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLSNpbmNsdWRlICJHUFVMZWdhY3lSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVz
Y3JpcHRvci5oIgotCi0jaWYgRU5BQkxFKFdFQk1FVEFMKQotCi0jaW5jbHVkZSAiTG9nZ2luZy5o
IgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUdQVUxlZ2FjeVJlbmRlclBhc3NDb2xvckF0dGFj
aG1lbnREZXNjcmlwdG9yOjp+R1BVTGVnYWN5UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2Ny
aXB0b3IoKQotewotICAgIExPRyhXZWJNZXRhbCwgIkdQVUxlZ2FjeVJlbmRlclBhc3NDb2xvckF0
dGFjaG1lbnREZXNjcmlwdG9yOjp+R1BVTGVnYWN5UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERl
c2NyaXB0b3IoKSIpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeVJl
bmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2Ny
aXB0b3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTdlODQxYzkxYmQyNDczYjFj
OTdmZDIyZTg1MjY2OTEwYmY5NzM0Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVn
YWN5UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaAorKysgL2Rldi9udWxsCkBA
IC0xLDUzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJNRVRBTCkKLQotI2luY2x1ZGUgIkdQ
VUxlZ2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5oIgotCi1PQkpDX0NMQVNTIE1U
TFJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOwotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLWNsYXNzIEdQVUxlZ2FjeVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9y
IDogcHVibGljIEdQVUxlZ2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvciB7Ci1wdWJs
aWM6Ci0jaWYgVVNFKE1FVEFMKQotICAgIEdQVUxlZ2FjeVJlbmRlclBhc3NDb2xvckF0dGFjaG1l
bnREZXNjcmlwdG9yKE1UTFJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yICopOwot
I2VuZGlmCi0gICAgfkdQVUxlZ2FjeVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9y
KCk7Ci0KLSAgICBWZWN0b3I8ZmxvYXQ+IGNsZWFyQ29sb3IoKSBjb25zdDsKLSAgICB2b2lkIHNl
dENsZWFyQ29sb3IoY29uc3QgVmVjdG9yPGZsb2F0PiYpIGNvbnN0OwotCi0jaWYgVVNFKE1FVEFM
KQotICAgIE1UTFJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yICptZXRhbCgpIGNv
bnN0OwotI2VuZGlmCi19OwotICAgIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdh
Y3lSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVu
dERlc2NyaXB0b3IuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZTlhOGI3M2Iz
ZTY5ODliYzY2YjNkMzU1NmIwNzEwMzEwMWIyYmVjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9HUFVMZWdhY3lSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5jcHAKKysrIC9k
ZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
Ci0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkdQVUxlZ2FjeVJl
bmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmgiCi0KLSNpZiBFTkFCTEUoV0VCTUVU
QUwpCi0KLSNpbmNsdWRlICJMb2dnaW5nLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotR1BV
TGVnYWN5UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3I6On5HUFVMZWdhY3lSZW5k
ZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcigpCi17Ci0gICAgTE9HKFdlYk1ldGFsLCAi
R1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3I6On5HUFVSZW5kZXJQYXNzRGVw
dGhBdHRhY2htZW50RGVzY3JpcHRvcigpIik7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
LQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvR1BVTGVnYWN5UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lSZW5kZXJQYXNzRGVwdGhB
dHRhY2htZW50RGVzY3JpcHRvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNmMx
YWY3OTA1M2U2YzFmNjU2NzVlYzg4MWVjYjZjMjg5NTdjOGQwLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9HUFVMZWdhY3lSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5oCisr
KyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQk1FVEFMKQot
Ci0jaW5jbHVkZSAiR1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmgiCi0K
LU9CSkNfQ0xBU1MgTVRMUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3I7Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgR1BVTGVnYWN5UmVuZGVyUGFzc0RlcHRoQXR0YWNo
bWVudERlc2NyaXB0b3IgOiBwdWJsaWMgR1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNj
cmlwdG9yIHsKLXB1YmxpYzoKLSNpZiBVU0UoTUVUQUwpCi0gICAgR1BVTGVnYWN5UmVuZGVyUGFz
c0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IoTVRMUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERl
c2NyaXB0b3IgKik7Ci0jZW5kaWYKLSAgICB+R1BVTGVnYWN5UmVuZGVyUGFzc0RlcHRoQXR0YWNo
bWVudERlc2NyaXB0b3IoKTsKLQotICAgIGRvdWJsZSBjbGVhckRlcHRoKCkgY29uc3Q7Ci0gICAg
dm9pZCBzZXRDbGVhckRlcHRoKGRvdWJsZSkgY29uc3Q7Ci0KLSNpZiBVU0UoTUVUQUwpCi1wcml2
YXRlOgotICAgIE1UTFJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yICptZXRhbCgp
IGNvbnN0OwotI2VuZGlmCi19OwotICAgIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVM
ZWdhY3lSZW5kZXJQYXNzRGVzY3JpcHRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVTGVnYWN5UmVuZGVyUGFzc0Rlc2NyaXB0b3IuY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBlNjM2YTdiNzIzZWQ0MTI3ZWQ1MzRlMDNjZjUxNzlhOWUyMmEy
MWJmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lSZW5kZXJQYXNzRGVzY3Jp
cHRvci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIkdQVUxlZ2FjeVJlbmRlclBhc3NEZXNjcmlwdG9yLmgiCi0KLSNpZiBFTkFCTEUoV0VCTUVU
QUwpCi0KLSNpbmNsdWRlICJHUFVMZWdhY3lSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3Jp
cHRvci5oIgotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1H
UFVMZWdhY3lSZW5kZXJQYXNzRGVzY3JpcHRvcjo6fkdQVUxlZ2FjeVJlbmRlclBhc3NEZXNjcmlw
dG9yKCkKLXsKLSAgICBMT0coV2ViTWV0YWwsICJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvcjo6fkdQ
VVJlbmRlclBhc3NEZXNjcmlwdG9yKCkiKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQot
Ci0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9HUFVMZWdhY3lSZW5kZXJQYXNzRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeVJlbmRlclBhc3NEZXNjcmlwdG9yLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZhZTgxNjkwYmVlMWMyMTc2MjAzYTU5MmFkMjI2NzFmYjRl
NGM4ZTkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeVJlbmRlclBhc3NEZXNj
cmlwdG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUo
V0VCTUVUQUwpCi0KLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0KLU9CSkNfQ0xBU1MgTVRM
UmVuZGVyUGFzc0Rlc2NyaXB0b3I7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgR1BV
TGVnYWN5UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3I7Ci1jbGFzcyBHUFVMZWdh
Y3lSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcjsKLQotY2xhc3MgR1BVTGVnYWN5
UmVuZGVyUGFzc0Rlc2NyaXB0b3IgewotcHVibGljOgotICAgIEdQVUxlZ2FjeVJlbmRlclBhc3NE
ZXNjcmlwdG9yKCk7Ci0gICAgfkdQVUxlZ2FjeVJlbmRlclBhc3NEZXNjcmlwdG9yKCk7Ci0KLSAg
ICBWZWN0b3I8R1BVTGVnYWN5UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3I+IGNv
bG9yQXR0YWNobWVudHMoKSBjb25zdDsKLSAgICBHUFVMZWdhY3lSZW5kZXJQYXNzRGVwdGhBdHRh
Y2htZW50RGVzY3JpcHRvciBkZXB0aEF0dGFjaG1lbnQoKSBjb25zdDsKLQotI2lmIFVTRShNRVRB
TCkKLSAgICBNVExSZW5kZXJQYXNzRGVzY3JpcHRvciAqbWV0YWwoKSBjb25zdDsKLSNlbmRpZgot
Ci0jaWYgVVNFKE1FVEFMKQotcHJpdmF0ZToKLSAgICBSZXRhaW5QdHI8TVRMUmVuZGVyUGFzc0Rl
c2NyaXB0b3I+IG1fbWV0YWw7Ci0jZW5kaWYKLX07Ci0gICAgCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0dQVUxlZ2FjeVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5UmVuZGVy
UGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggYThlNmUxMjJhMzVjMjg3MjEyNzRmOGJjZDVmNDNiNDY3NTZhM2ZlOC4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFj
aG1lbnREZXNjcmlwdG9yLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0jaW5jbHVkZSAiR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNj
cmlwdG9yLmgiCi0KLSNpZiBFTkFCTEUoV0VCTUVUQUwpCi0KLSNpbmNsdWRlICJMb2dnaW5nLmgi
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVDb2xvckF0
dGFjaG1lbnREZXNjcmlwdG9yOjp+R1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1l
bnREZXNjcmlwdG9yKCkKLXsKLSAgICBMT0coV2ViTWV0YWwsICJHUFVMZWdhY3lSZW5kZXJQaXBl
bGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6On5HUFVMZWdhY3lSZW5kZXJQaXBlbGluZUNv
bG9yQXR0YWNobWVudERlc2NyaXB0b3IoKSIpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L0dQVUxlZ2FjeVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeVJlbmRlclBpcGVs
aW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBkMmM2MDM0Njg2MzczZDEyOTAyZGI2MjkyMDc3MGJmYjAxYzFjNWQwLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERl
c2NyaXB0b3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDU4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJM
RShXRUJNRVRBTCkKLQotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLQotT0JKQ19DTEFTUyBN
VExSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I7Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotY2xhc3MgR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnRE
ZXNjcmlwdG9yIHsKLXB1YmxpYzoKLSNpZiBVU0UoTUVUQUwpCi0gICAgR1BVTGVnYWN5UmVuZGVy
UGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKE1UTFJlbmRlclBpcGVsaW5lQ29sb3JB
dHRhY2htZW50RGVzY3JpcHRvciAqKTsKLSNlbmRpZgotICAgIH5HUFVMZWdhY3lSZW5kZXJQaXBl
bGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IoKTsKLQotICAgIHVuc2lnbmVkIHBpeGVsRm9y
bWF0KCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRQaXhlbEZvcm1hdCh1bnNpZ25lZCkgY29uc3Q7Ci0K
LSNpZiBVU0UoTUVUQUwpCi0gICAgTVRMUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNj
cmlwdG9yICptZXRhbCgpIGNvbnN0OwotI2VuZGlmCi0KLSNpZiBVU0UoTUVUQUwpCi1wcml2YXRl
OgotICAgIFJldGFpblB0cjxNVExSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0
b3I+IG1fbWV0YWw7Ci0jZW5kaWYKLX07Ci0gICAgCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0K
LSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L0dQVUxlZ2FjeVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmNw
cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2QxZmQ2MGMzZjVhYjhiYjg2NjA5YmMy
NzVlMDE5MmE1MjViYTZiNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5UmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0g
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmgi
Ci0KLSNpZiBFTkFCTEUoV0VCTUVUQUwpCi0KLSNpbmNsdWRlICJMb2dnaW5nLmgiCi0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjp+R1BV
TGVnYWN5UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKCkKLXsKLSAgICBMT0coV2ViTWV0YWwsICJH
UFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6On5HUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3Io
KSIpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeVJlbmRlclBpcGVs
aW5lRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQ
VUxlZ2FjeVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBlYzA5MDdlODFmMGQxYzM0OTI0MmVkNWY4MjllM2VlMzNjODg5ZGYyLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaAor
KysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJNRVRBTCkK
LQotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLQotT0JKQ19DTEFTUyBNVExSZW5kZXJQaXBl
bGluZURlc2NyaXB0b3I7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgR1BVTGVnYWN5
RnVuY3Rpb247Ci1jbGFzcyBHUFVMZWdhY3lSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERl
c2NyaXB0b3I7Ci0KLWNsYXNzIEdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciB7Ci1w
dWJsaWM6Ci0gICAgR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKCk7Ci0gICAgfkdQ
VUxlZ2FjeVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcigpOwotCi0gICAgdm9pZCBzZXRWZXJ0ZXhG
dW5jdGlvbihjb25zdCBHUFVMZWdhY3lGdW5jdGlvbiYpIGNvbnN0OwotICAgIHZvaWQgc2V0RnJh
Z21lbnRGdW5jdGlvbihjb25zdCBHUFVMZWdhY3lGdW5jdGlvbiYpIGNvbnN0OwotCi0gICAgdW5z
aWduZWQgZGVwdGhBdHRhY2htZW50UGl4ZWxGb3JtYXQoKSBjb25zdDsKLSAgICB2b2lkIHNldERl
cHRoQXR0YWNobWVudFBpeGVsRm9ybWF0KHVuc2lnbmVkKSBjb25zdDsKLQotICAgIFZlY3RvcjxH
UFVMZWdhY3lSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I+IGNvbG9yQXR0
YWNobWVudHMoKSBjb25zdDsKLQotICAgIHZvaWQgcmVzZXQoKSBjb25zdDsKLQotI2lmIFVTRShN
RVRBTCkKLSAgICBNVExSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgKm1ldGFsKCkgY29uc3Q7Ci0j
ZW5kaWYKLQotI2lmIFVTRShNRVRBTCkKLXByaXZhdGU6Ci0gICAgUmV0YWluUHRyPE1UTFJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvcj4gbV9tZXRhbDsKLSNlbmRpZgotfTsKLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lSZW5kZXJQaXBlbGluZVN0YXRlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lSZW5kZXJQaXBlbGluZVN0YXRl
LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWU0ZjljNmQ4MDk1ODNhNDcyNDMy
YTFiNjYyZGI4M2M3MGZkMWEwNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5
UmVuZGVyUGlwZWxpbmVTdGF0ZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIkdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lU3RhdGUuaCIKLQotI2lm
IEVOQUJMRShXRUJNRVRBTCkKLQotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1HUFVMZWdhY3lSZW5kZXJQaXBlbGluZVN0YXRlOjp+R1BVTGVnYWN5UmVuZGVy
UGlwZWxpbmVTdGF0ZSgpCi17Ci0gICAgTE9HKFdlYk1ldGFsLCAiR1BVTGVnYWN5UmVuZGVyUGlw
ZWxpbmVTdGF0ZTo6fkdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lU3RhdGUoKSIpOwotfQotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeVJlbmRlclBpcGVsaW5lU3RhdGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lSZW5kZXJQaXBlbGlu
ZVN0YXRlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVhMDllNmE0OGEzNDg4YTRl
OWJhMjVmYWYyOGVlMjc3Mzg4YzUwNDUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxl
Z2FjeVJlbmRlclBpcGVsaW5lU3RhdGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDYwICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgot
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFn
bWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQk1FVEFMKQotCi0jaW5jbHVkZSA8d3RmL1JldGFpblB0
ci5oPgotCi1PQkpDX1BST1RPQ09MKE1UTFJlbmRlclBpcGVsaW5lU3RhdGUpOwotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEdQVUxlZ2FjeURldmljZTsKLWNsYXNzIEdQVUxlZ2FjeVJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvcjsKLQotY2xhc3MgR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVT
dGF0ZSB7Ci1wdWJsaWM6Ci0gICAgR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVTdGF0ZSgpID0gZGVm
YXVsdDsKLSAgICBHUFVMZWdhY3lSZW5kZXJQaXBlbGluZVN0YXRlKGNvbnN0IEdQVUxlZ2FjeURl
dmljZSYsIGNvbnN0IEdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciYpOwotICAgIH5H
UFVMZWdhY3lSZW5kZXJQaXBlbGluZVN0YXRlKCk7Ci0KLSAgICBTdHJpbmcgbGFiZWwoKSBjb25z
dDsKLSAgICB2b2lkIHNldExhYmVsKGNvbnN0IFN0cmluZyYpIGNvbnN0OwotCi0jaWYgVVNFKE1F
VEFMKQotICAgIE1UTFJlbmRlclBpcGVsaW5lU3RhdGUgKm1ldGFsKCkgY29uc3Q7Ci0jZW5kaWYK
LQotI2lmIFVTRShNRVRBTCkKLXByaXZhdGU6Ci0gICAgUmV0YWluUHRyPE1UTFJlbmRlclBpcGVs
aW5lU3RhdGU+IG1fbWV0YWw7Ci0jZW5kaWYKLX07Ci0gICAgCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0dQVUxlZ2FjeVNpemUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9HUFVMZWdhY3lTaXplLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI5MGNl
YTM1MWZiOWQ2YTM4Y2FiMzY0Y2NjZTk3MWFkZTI4NDMyZmMuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0dQVUxlZ2FjeVNpemUuaAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgWXVpY2hpcm8gS2lrdXJhICh5Lmtpa3VyYUBnbWFpbC5j
b20pCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
LSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEg
b25jZQotCi0jaWYgRU5BQkxFKFdFQk1FVEFMKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAg
Ci1zdHJ1Y3QgR1BVTGVnYWN5U2l6ZSB7Ci0gICAgdW5zaWduZWQgd2lkdGg7Ci0gICAgdW5zaWdu
ZWQgaGVpZ2h0OwotICAgIHVuc2lnbmVkIGRlcHRoOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9HUFVMZWdhY3lUZXh0dXJlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9HUFVMZWdhY3lUZXh0dXJlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMGQ5Y2MyYzg5NDFmYTc0YTZmNzdiZDI1MTg3NWU2OWZlOTkwNTM0Mi4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5VGV4dHVyZS5jcHAKKysrIC9kZXYvbnVsbApAQCAt
MSw0MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkdQVUxlZ2FjeVRleHR1cmUuaCIKLQot
I2lmIEVOQUJMRShXRUJNRVRBTCkKLQotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1HUFVMZWdhY3lUZXh0dXJlOjp+R1BVTGVnYWN5VGV4dHVyZSgpCi17Ci0g
ICAgTE9HKFdlYk1ldGFsLCAiR1BVTGVnYWN5VGV4dHVyZTo6fkdQVUxlZ2FjeVRleHR1cmUoKSIp
OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeVRleHR1cmUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lUZXh0dXJlLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNlZmVjMmUyMDc2ZTFmYjc4MDMyZWU5ZTc4MDI1
YTI3MGFmOTA0MWQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeVRleHR1cmUu
aAorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJNRVRB
TCkKLQotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLQotT0JKQ19QUk9UT0NPTChNVExUZXh0
dXJlKTsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHUFVMZWdhY3lEZXZpY2U7Ci1j
bGFzcyBHUFVMZWdhY3lEcmF3YWJsZTsKLWNsYXNzIEdQVUxlZ2FjeVRleHR1cmVEZXNjcmlwdG9y
OwotCi1jbGFzcyBHUFVMZWdhY3lUZXh0dXJlIHsKLXB1YmxpYzoKLSAgICBHUFVMZWdhY3lUZXh0
dXJlKGNvbnN0IEdQVUxlZ2FjeURldmljZSYsIGNvbnN0IEdQVUxlZ2FjeVRleHR1cmVEZXNjcmlw
dG9yJik7Ci0gICAgZXhwbGljaXQgR1BVTGVnYWN5VGV4dHVyZShjb25zdCBHUFVMZWdhY3lEcmF3
YWJsZSYpOwotICAgIH5HUFVMZWdhY3lUZXh0dXJlKCk7Ci0KLSAgICB1bnNpZ25lZCB3aWR0aCgp
IGNvbnN0OwotICAgIHVuc2lnbmVkIGhlaWdodCgpIGNvbnN0OwotCi0jaWYgVVNFKE1FVEFMKQot
ICAgIE1UTFRleHR1cmUgKm1ldGFsKCkgY29uc3Q7Ci0jZW5kaWYKLQotI2lmIFVTRShNRVRBTCkK
LXByaXZhdGU6Ci0gICAgUmV0YWluUHRyPE1UTFRleHR1cmU+IG1fbWV0YWw7Ci0jZW5kaWYKLX07
Ci0gICAgCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeVRleHR1cmVEZXNjcmlw
dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lU
ZXh0dXJlRGVzY3JpcHRvci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY5YmI1
MDY5MjQxNWRlMzJjYTA2ZTQ1YjI2OWJiOTQ4NjExOGZkYWUuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0dQVUxlZ2FjeVRleHR1cmVEZXNjcmlwdG9yLmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDQyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiR1BVTGVnYWN5VGV4dHVyZURlc2NyaXB0
b3IuaCIKLQotI2lmIEVOQUJMRShXRUJNRVRBTCkKLQotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1HUFVMZWdhY3lUZXh0dXJlRGVzY3JpcHRvcjo6fkdQVUxl
Z2FjeVRleHR1cmVEZXNjcmlwdG9yKCkKLXsKLSAgICBMT0coV2ViTWV0YWwsICJHUFVUZXh0dXJl
RGVzY3JpcHRvcjo6fkdQVVRleHR1cmVEZXNjcmlwdG9yKCkiKTsKLX0KLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lUZXh0dXJlRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeVRleHR1cmVEZXNjcmlwdG9yLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg2NDc5NzNlOTMyYTQ4YjYyMDc1MDg2NzFjM2E4
NTE2YWEyNmYyMjAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeVRleHR1cmVE
ZXNjcmlwdG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3MCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFC
TEUoV0VCTUVUQUwpCi0KLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0KLU9CSkNfQ0xBU1Mg
TVRMVGV4dHVyZURlc2NyaXB0b3I7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgR1BV
TGVnYWN5VGV4dHVyZURlc2NyaXB0b3IgewotcHVibGljOgotICAgIEdQVUxlZ2FjeVRleHR1cmVE
ZXNjcmlwdG9yKHVuc2lnbmVkIHBpeGVsRm9ybWF0LCB1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQg
aGVpZ2h0LCBib29sIG1pcG1hcHBlZCk7Ci0gICAgfkdQVUxlZ2FjeVRleHR1cmVEZXNjcmlwdG9y
KCk7Ci0KLSAgICB1bnNpZ25lZCB3aWR0aCgpIGNvbnN0OwotICAgIHZvaWQgc2V0V2lkdGgodW5z
aWduZWQpIGNvbnN0OwotCi0gICAgdW5zaWduZWQgaGVpZ2h0KCkgY29uc3Q7Ci0gICAgdm9pZCBz
ZXRIZWlnaHQodW5zaWduZWQpIGNvbnN0OwotCi0gICAgdW5zaWduZWQgc2FtcGxlQ291bnQoKSBj
b25zdDsKLSAgICB2b2lkIHNldFNhbXBsZUNvdW50KHVuc2lnbmVkKSBjb25zdDsKLQotICAgIHVu
c2lnbmVkIHRleHR1cmVUeXBlKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRUZXh0dXJlVHlwZSh1bnNp
Z25lZCkgY29uc3Q7Ci0KLSAgICB1bnNpZ25lZCBzdG9yYWdlTW9kZSgpIGNvbnN0OwotICAgIHZv
aWQgc2V0U3RvcmFnZU1vZGUodW5zaWduZWQpIGNvbnN0OwotCi0gICAgdW5zaWduZWQgdXNhZ2Uo
KSBjb25zdDsKLSAgICB2b2lkIHNldFVzYWdlKHVuc2lnbmVkKSBjb25zdDsKLQotI2lmIFVTRShN
RVRBTCkKLSAgICBNVExUZXh0dXJlRGVzY3JpcHRvciAqbWV0YWwoKSBjb25zdDsKLSNlbmRpZgot
Ci0jaWYgVVNFKE1FVEFMKQotcHJpdmF0ZToKLSAgICBSZXRhaW5QdHI8TVRMVGV4dHVyZURlc2Ny
aXB0b3I+IG1fbWV0YWw7Ci0jZW5kaWYKLX07Ci0gICAgCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Ci0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9HUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJlMjc1
NWI5ZTI2NmEyZThiMzhmYTVkNGIwOGZkN2UxNGUyODEyNjkKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUGlwZWxpbmVEZXNjcmlwdG9y
QmFzZS5oCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lm
IEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJHUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvci5o
IgorCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0
cnVjdCBHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlIHsKKyAgICBWZWN0b3I8R1BVUGlwZWxpbmVT
dGFnZURlc2NyaXB0b3I+IHN0YWdlczsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvci5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmM0MzE0NWI2NjdlZjAyMDFiMDhhZWUzNTY4ZDBkYWU3MzYyMWNiYmIKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BV
UGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuaApAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiR1BVU2hhZGVy
TW9kdWxlLmgiCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitzdHJ1Y3QgR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IgeworICAgIGNv
bnN0IEdQVVNoYWRlck1vZHVsZSogbW9kdWxlID0gbnVsbHB0cjsKKyAgICBTdHJpbmcgZW50cnlQ
b2ludDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShX
RUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
R1BVUXVldWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVRdWV1
ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjNmZGQwMGNmYThjMmExMWNmNjRlM2E0ZDUwMjU2OGRmNDIyMThiZGEK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
R1BVUXVldWUuaApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCitPQkpDX1BS
T1RPQ09MKE1UTENvbW1hbmRRdWV1ZSk7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
R1BVRGV2aWNlOworCit1c2luZyBQbGF0Zm9ybVF1ZXVlID0gTVRMQ29tbWFuZFF1ZXVlOwordXNp
bmcgUGxhdGZvcm1RdWV1ZVNtYXJ0UHRyID0gUmV0YWluUHRyPE1UTENvbW1hbmRRdWV1ZT47CisK
K2NsYXNzIEdQVVF1ZXVlIDogcHVibGljIFJlZkNvdW50ZWQ8R1BVUXVldWU+IHsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgUmVmUHRyPEdQVVF1ZXVlPiBjcmVhdGUoY29uc3QgR1BVRGV2aWNlJik7CisK
KyAgICBQbGF0Zm9ybVF1ZXVlKiBwbGF0Zm9ybVF1ZXVlKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0
Zm9ybVF1ZXVlLmdldCgpOyB9CisKK3ByaXZhdGU6CisgICAgR1BVUXVldWUoUGxhdGZvcm1RdWV1
ZVNtYXJ0UHRyJiYpOworCisgICAgUGxhdGZvcm1RdWV1ZVNtYXJ0UHRyIG1fcGxhdGZvcm1RdWV1
ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJH
UFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BV
UmVuZGVyUGlwZWxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9H
UFVSZW5kZXJQaXBlbGluZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQyZmQ5YTMzNWRhYTkxNGM1MmQ5NjczNTlk
Njc4MjM5OTkzYjIzMTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvR1BVUmVuZGVyUGlwZWxpbmUuaApAQCAtMCwwICsxLDU5IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgorCitPQkpDX1BST1RPQ09MKE1UTFJlbmRlclBpcGVsaW5lU3RhdGUpOwor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEdQVURldmljZTsKKworc3RydWN0IEdQVVJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvcjsKKwordXNpbmcgUGxhdGZvcm1SZW5kZXJQaXBlbGluZSA9
IE1UTFJlbmRlclBpcGVsaW5lU3RhdGU7Cit1c2luZyBQbGF0Zm9ybVJlbmRlclBpcGVsaW5lU21h
cnRQdHIgPSBSZXRhaW5QdHI8TVRMUmVuZGVyUGlwZWxpbmVTdGF0ZT47CisKK2NsYXNzIEdQVVJl
bmRlclBpcGVsaW5lIDogcHVibGljIFJlZkNvdW50ZWQ8R1BVUmVuZGVyUGlwZWxpbmU+IHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgUmVmUHRyPEdQVVJlbmRlclBpcGVsaW5lPiBjcmVhdGUoY29uc3Qg
R1BVRGV2aWNlJiwgR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yJiYpOworCisgICAgUGxhdGZv
cm1SZW5kZXJQaXBlbGluZSogcGxhdGZvcm1SZW5kZXJQaXBlbGluZSgpIGNvbnN0IHsgcmV0dXJu
IG1fcGxhdGZvcm1SZW5kZXJQaXBlbGluZS5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIEdQVVJl
bmRlclBpcGVsaW5lKFBsYXRmb3JtUmVuZGVyUGlwZWxpbmVTbWFydFB0ciYmKTsKKworICAgIFBs
YXRmb3JtUmVuZGVyUGlwZWxpbmVTbWFydFB0ciBtX3BsYXRmb3JtUmVuZGVyUGlwZWxpbmU7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L0dQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE0ZWM3ZDJmOTdl
YmM0NGM3YjM2Yjk1ZWU0YTVjYTNiY2NkOWJkMjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9y
LmgKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5B
QkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIkdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuaCIKKyNp
bmNsdWRlICJHUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvci5oIgorCisjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBHUFVSZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3IgeworICAgIGVudW0gY2xhc3MgUHJpbWl0aXZlVG9wb2xvZ3kgeworICAgICAg
ICBQb2ludExpc3QsCisgICAgICAgIExpbmVMaXN0LAorICAgICAgICBMaW5lU3RyaXAsCisgICAg
ICAgIFRyaWFuZ2xlTGlzdCwKKyAgICAgICAgVHJpYW5nbGVTdHJpcAorICAgIH07CisKKyAgICBH
UFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvciB2ZXJ0ZXhTdGFnZTsKKyAgICBHUFVQaXBlbGluZVN0
YWdlRGVzY3JpcHRvciBmcmFnbWVudFN0YWdlOworICAgIFByaW1pdGl2ZVRvcG9sb2d5IHByaW1p
dGl2ZVRvcG9sb2d5OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
RU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9HUFVTaGFkZXJNb2R1bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9HUFVTaGFkZXJNb2R1bGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYmZiM2Y5YmUwNGFlYWFiMGI2
NDY3MDQzYWJmMWE0OTU3MjAwOWRhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVNoYWRlck1vZHVsZS5oCkBAIC0wLDAgKzEsNTkgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRl
IDx3dGYvUmV0YWluUHRyLmg+CisKK09CSkNfUFJPVE9DT0woTVRMTGlicmFyeSk7CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgR1BVRGV2aWNlOworCitzdHJ1Y3QgR1BVU2hhZGVyTW9k
dWxlRGVzY3JpcHRvcjsKKwordXNpbmcgUGxhdGZvcm1TaGFkZXJNb2R1bGUgPSBNVExMaWJyYXJ5
OwordXNpbmcgUGxhdGZvcm1TaGFkZXJNb2R1bGVTbWFydFB0ciA9IFJldGFpblB0cjxNVExMaWJy
YXJ5PjsKKworY2xhc3MgR1BVU2hhZGVyTW9kdWxlIDogcHVibGljIFJlZkNvdW50ZWQ8R1BVU2hh
ZGVyTW9kdWxlPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZlB0cjxHUFVTaGFkZXJNb2R1bGU+
IGNyZWF0ZShjb25zdCBHUFVEZXZpY2UmLCBHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yJiYpOwor
CisgICAgUGxhdGZvcm1TaGFkZXJNb2R1bGUqIHBsYXRmb3JtU2hhZGVyTW9kdWxlKCkgY29uc3Qg
eyByZXR1cm4gbV9wbGF0Zm9ybVNoYWRlck1vZHVsZS5nZXQoKTsgfQorCitwcml2YXRlOgorICAg
IEdQVVNoYWRlck1vZHVsZShQbGF0Zm9ybVNoYWRlck1vZHVsZVNtYXJ0UHRyJiYpOworCisgICAg
UGxhdGZvcm1TaGFkZXJNb2R1bGVTbWFydFB0ciBtX3BsYXRmb3JtU2hhZGVyTW9kdWxlOworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVTaGFkZXJN
b2R1bGVEZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
R1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZjZmUwYWQ1YTg3YjMyYzQ4
YWUzNGJkNzZkMmYxYzU5ODFiZTdkNWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oCkBAIC0w
LDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJH
UFUpCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitzdHJ1Y3QgR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvciB7CisgICAgU3RyaW5nIGNv
ZGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VC
R1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQ
VVN3YXBDaGFpbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVN3
YXBDaGFpbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM0OGMxMDE0NDI1OTY4MDg2MDJjYzkyYWRlMjE2YjZiYzFm
ZDQ2NjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvR1BVU3dhcENoYWluLmgKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
KyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK09CSkNfQ0xBU1MgQ0FNZXRhbExheWVyOwor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEdQVURldmljZTsKK2NsYXNzIEdQVVRleHR1
cmU7CisKK2VudW0gY2xhc3MgR1BVVGV4dHVyZUZvcm1hdEVudW07CisKK3VzaW5nIFBsYXRmb3Jt
U3dhcExheWVyID0gQ0FNZXRhbExheWVyOwordXNpbmcgUGxhdGZvcm1Td2FwTGF5ZXJTbWFydFB0
ciA9IFJldGFpblB0cjxDQU1ldGFsTGF5ZXI+OworCitjbGFzcyBHUFVTd2FwQ2hhaW4gOiBwdWJs
aWMgUmVmQ291bnRlZDxHUFVTd2FwQ2hhaW4+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmUHRy
PEdQVVN3YXBDaGFpbj4gY3JlYXRlKCk7CisKKyAgICB2b2lkIHNldERldmljZShjb25zdCBHUFVE
ZXZpY2UmKTsKKyAgICB2b2lkIHNldEZvcm1hdChHUFVUZXh0dXJlRm9ybWF0RW51bSk7CisgICAg
dm9pZCByZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCk7CisgICAgUmVmUHRyPEdQVVRleHR1
cmU+IGdldE5leHRUZXh0dXJlKCk7CisgICAgdm9pZCBwcmVzZW50KCk7CisKKyAgICBQbGF0Zm9y
bVN3YXBMYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1Td2Fw
TGF5ZXIuZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBHUFVTd2FwQ2hhaW4oUGxhdGZvcm1Td2Fw
TGF5ZXJTbWFydFB0ciYmKTsKKworICAgIFBsYXRmb3JtU3dhcExheWVyU21hcnRQdHIgbV9wbGF0
Zm9ybVN3YXBMYXllcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvR1BVVGV4dHVyZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L0dQVVRleHR1cmUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44Mzc0NDBiYzliNjRmY2Y5NzRkYjRmODQwODVj
ZmY4NGU4NjA2MWUzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L0dQVVRleHR1cmUuaApAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSA8d3RmL1JlZi5o
PgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgorCitPQkpDX1BST1RPQ09MKE1UTFRleHR1cmUpOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K3VzaW5nIFBsYXRmb3JtVGV4dHVyZSA9IE1UTFRleHR1cmU7Cit1c2luZyBQbGF0Zm9ybVRleHR1
cmVTbWFydFB0ciA9IFJldGFpblB0cjxNVExUZXh0dXJlPjsKKworY2xhc3MgR1BVVGV4dHVyZSA6
IHB1YmxpYyBSZWZDb3VudGVkPEdQVVRleHR1cmU+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVm
PEdQVVRleHR1cmU+IGNyZWF0ZShQbGF0Zm9ybVRleHR1cmVTbWFydFB0ciYmKTsKKworICAgIFJl
ZlB0cjxHUFVUZXh0dXJlPiBjcmVhdGVEZWZhdWx0VGV4dHVyZVZpZXcoKTsKKworcHJpdmF0ZToK
KyAgICBleHBsaWNpdCBHUFVUZXh0dXJlKFBsYXRmb3JtVGV4dHVyZVNtYXJ0UHRyJiYpOworCisg
ICAgUGxhdGZvcm1UZXh0dXJlU21hcnRQdHIgbV9wbGF0Zm9ybVRleHR1cmU7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVRleHR1cmVGb3JtYXRF
bnVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVGV4dHVyZUZv
cm1hdEVudW0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43OTExMzRmZTA2NGE2ODU2MzUyYmZhOGNmZTNlMjQ3NmY0
YWJjYTcyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0dQVVRleHR1cmVGb3JtYXRFbnVtLmgKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitlbnVtIGNsYXNzIEdQVVRleHR1cmVGb3JtYXRFbnVtIHsKKyAgICBSOEc4QjhBOFVu
b3JtLAorICAgIFI4RzhCOEE4VWludCwKKyAgICBCOEc4UjhBOFVub3JtLAorICAgIEQzMkZsb2F0
UzhVaW50Cit9OworCit1c2luZyBQbGF0Zm9ybVRleHR1cmVGb3JtYXQgPSB1bnNpZ25lZCBsb25n
OworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUNvbW1hbmRCdWZmZXJNZXRhbC5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVDb21tYW5k
QnVmZmVyTWV0YWwubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjEyNTlkMjM0ZmIzYTEyNGY5OTE3ODRhNWQ4ZmQ2
ODg3MDM3ZTIwOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9jb2NvYS9HUFVDb21tYW5kQnVmZmVyTWV0YWwubW0KQEAgLTAsMCArMSw3NyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiR1BVQ29tbWFuZEJ1
ZmZlci5oIgorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2ltcG9ydCAiR1BVRGV2aWNlLmgiCisj
aW1wb3J0ICJHUFVRdWV1ZS5oIgorI2ltcG9ydCAiTG9nZ2luZy5oIgorCisjaW1wb3J0IDxNZXRh
bC9NZXRhbC5oPgorI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitSZWZQdHI8R1BVQ29tbWFuZEJ1ZmZlcj4gR1BVQ29tbWFuZEJ1ZmZl
cjo6Y3JlYXRlKEdQVURldmljZSYgZGV2aWNlKQoreworICAgIGlmICghZGV2aWNlLnBsYXRmb3Jt
RGV2aWNlKCkpIHsKKyAgICAgICAgTE9HKFdlYkdQVSwgIkdQVUNvbW1hbmRCdWZmZXI6OmNyZWF0
ZSgpOiBJbnZhbGlkIEdQVURldmljZSEiKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
fQorCisgICAgYXV0byBncHVDb21tYW5kUXVldWUgPSBkZXZpY2UuZ2V0UXVldWUoKTsKKyAgICBp
ZiAoIWdwdUNvbW1hbmRRdWV1ZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRv
IG10bFF1ZXVlID0gZ3B1Q29tbWFuZFF1ZXVlLT5wbGF0Zm9ybVF1ZXVlKCk7CisKKyAgICBQbGF0
Zm9ybUNvbW1hbmRCdWZmZXJTbWFydFB0ciBidWZmZXI7CisKKyAgICBCRUdJTl9CTE9DS19PQkpD
X0VYQ0VQVElPTlM7CisKKyAgICBidWZmZXIgPSByZXRhaW5QdHIoW210bFF1ZXVlIGNvbW1hbmRC
dWZmZXJdKTsKKworICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CisKKyAgICBpZiAoIWJ1
ZmZlcikgeworICAgICAgICBMT0coV2ViR1BVLCAiR1BVQ29tbWFuZEJ1ZmZlcjo6Y3JlYXRlKCk6
IFVuYWJsZSB0byBjcmVhdGUgTVRMQ29tbWFuZEJ1ZmZlciEiKTsKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgfQorCisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBHUFVDb21tYW5kQnVmZmVy
KFdURk1vdmUoYnVmZmVyKSkpOworfQorCitHUFVDb21tYW5kQnVmZmVyOjpHUFVDb21tYW5kQnVm
ZmVyKFBsYXRmb3JtQ29tbWFuZEJ1ZmZlclNtYXJ0UHRyJiYgYnVmZmVyKQorICAgIDogbV9wbGF0
Zm9ybUNvbW1hbmRCdWZmZXIoV1RGTW92ZShidWZmZXIpKQoreworICAgIFVOVVNFRF9QQVJBTSht
X3BsYXRmb3JtQ29tbWFuZEJ1ZmZlcik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVRGV2aWNlTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVRGV2aWNlTWV0YWwubW0KbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZTgzODdhNzcxMWIwMjAwZWQ5MTkyZmExNDIwZDM1OTJmOGU0ODE4OQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVEZXZp
Y2VNZXRhbC5tbQpAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmln
LmgiCisjaW1wb3J0ICJHUFVEZXZpY2UuaCIKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbXBv
cnQgIkxvZ2dpbmcuaCIKKworI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KKyNpbXBvcnQgPHd0Zi9C
bG9ja09iakNFeGNlcHRpb25zLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVmUHRyPEdQ
VURldmljZT4gR1BVRGV2aWNlOjpjcmVhdGUoKQoreworICAgIFBsYXRmb3JtRGV2aWNlU21hcnRQ
dHIgZGV2aWNlOworCisgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOworCisgICAgZGV2
aWNlID0gYWRvcHROUyhNVExDcmVhdGVTeXN0ZW1EZWZhdWx0RGV2aWNlKCkpOyAvLyBGSVhNRTog
VGFrZSBXZWJHUFVQb3dlclByZWZlcmVuY2UgaW50byBhY2NvdW50LgorCisgICAgRU5EX0JMT0NL
X09CSkNfRVhDRVBUSU9OUzsKKworICAgIGlmICghZGV2aWNlKSB7CisgICAgICAgIExPRyhXZWJH
UFUsICJHUFVEZXZpY2U6OkdQVURldmljZSgpOiBVbmFibGUgdG8gY3JlYXRlIEdQVURldmljZSEi
KTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgTE9HKFdlYkdQVSwgIkdQ
VURldmljZTo6R1BVRGV2aWNlKCk6IE1UTERldmljZSBpcyAlcCIsIGRldmljZS5nZXQoKSk7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBHUFVEZXZpY2UoV1RGTW92ZShkZXZpY2UpKSk7Cit9CisK
K0dQVURldmljZTo6R1BVRGV2aWNlKFBsYXRmb3JtRGV2aWNlU21hcnRQdHImJiBkZXZpY2UpCisg
ICAgOiBtX3BsYXRmb3JtRGV2aWNlKFdURk1vdmUoZGV2aWNlKSkKK3sKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVRdWV1ZU1ldGFsLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVF1ZXVlTWV0
YWwubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOGU2OWJlM2JjYzg2MGJhNzVkMGZmODg1N2Y1NjgxNzJlMjU1NTU4
YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9jb2NvYS9HUFVRdWV1ZU1ldGFsLm1tCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkdQVVF1ZXVlLmgiCisKKyNpZiBFTkFCTEUoV0VC
R1BVKQorCisjaW1wb3J0ICJHUFVEZXZpY2UuaCIKKyNpbXBvcnQgIkxvZ2dpbmcuaCIKKworI2lt
cG9ydCA8TWV0YWwvTWV0YWwuaD4KKyNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVmUHRyPEdQVVF1ZXVlPiBHUFVRdWV1ZTo6Y3Jl
YXRlKGNvbnN0IEdQVURldmljZSYgZGV2aWNlKQoreworICAgIGlmICghZGV2aWNlLnBsYXRmb3Jt
RGV2aWNlKCkpIHsKKyAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVF1ZXVlOjpjcmVhdGUoKTogSW52
YWxpZCBHUFVEZXZpY2UhIik7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAg
IFBsYXRmb3JtUXVldWVTbWFydFB0ciBxdWV1ZTsKKworICAgIEJFR0lOX0JMT0NLX09CSkNfRVhD
RVBUSU9OUzsKKworICAgIHF1ZXVlID0gYWRvcHROUyhbZGV2aWNlLnBsYXRmb3JtRGV2aWNlKCkg
bmV3Q29tbWFuZFF1ZXVlXSk7CisKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOworCisg
ICAgaWYgKCFxdWV1ZSkgeworICAgICAgICBMT0coV2ViR1BVLCAiR1BVUXVldWU6OmNyZWF0ZSgp
OiBVbmFibGUgdG8gY3JlYXRlIE1UTENvbW1hbmRRdWV1ZSEiKTsKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgfQorCisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBHUFVRdWV1ZShXVEZNb3Zl
KHF1ZXVlKSkpOworfQorCitHUFVRdWV1ZTo6R1BVUXVldWUoUGxhdGZvcm1RdWV1ZVNtYXJ0UHRy
JiYgcXVldWUpCisgICAgOiBtX3BsYXRmb3JtUXVldWUoV1RGTW92ZShxdWV1ZSkpCit7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUmVu
ZGVyUGlwZWxpbmVNZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9jb2NvYS9HUFVSZW5kZXJQaXBlbGluZU1ldGFsLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM5NDZkNTUwOWQy
MjI4ZDQ1ZjA2NGIwZjZkMzViY2NhODYwZDdlYWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUmVuZGVyUGlwZWxpbmVNZXRh
bC5tbQpAQCAtMCwwICsxLDEzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgor
I2ltcG9ydCAiR1BVUmVuZGVyUGlwZWxpbmUuaCIKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNp
bXBvcnQgIkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oIgorI2ltcG9ydCAiTG9nZ2luZy5o
IgorCisjaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgorI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2Vw
dGlvbnMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgYm9vbCBzZXRGdW5jdGlv
bnNGb3JQaXBlbGluZURlc2NyaXB0b3IoY29uc3QgY2hhciogY29uc3QgZnVuY3Rpb25OYW1lLCBN
VExSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgKm10bERlc2NyaXB0b3IsIEdQVVJlbmRlclBpcGVs
aW5lRGVzY3JpcHRvciYmIGRlc2NyaXB0b3IpCit7CisjaWYgTE9HX0RJU0FCTEVECisgICAgVU5V
U0VEX1BBUkFNKGZ1bmN0aW9uTmFtZSk7CisjZW5kaWYKKyAgICAvLyBNZXRhbCByZXF1aXJlcyBh
IHZlcnRleCBzaGFkZXIgaW4gYWxsIHJlbmRlciBwaXBlbGluZXMuCisgICAgY29uc3QgYXV0byYg
dmVydGV4U3RhZ2UgPSBkZXNjcmlwdG9yLnZlcnRleFN0YWdlOworICAgIGF1dG8gbXRsTGlicmFy
eSA9IHZlcnRleFN0YWdlLm1vZHVsZS0+cGxhdGZvcm1TaGFkZXJNb2R1bGUoKTsKKworICAgIGlm
ICghbXRsTGlicmFyeSkgeworICAgICAgICBMT0coV2ViR1BVLCAiJXM6IE1UTExpYnJhcnkgZm9y
IHZlcnRleCBzdGFnZSBkb2VzIG5vdCBleGlzdCEiLCBmdW5jdGlvbk5hbWUpOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgYXV0byBmdW5jdGlvbiA9IGFkb3B0TlMoW210bExp
YnJhcnkgbmV3RnVuY3Rpb25XaXRoTmFtZTp2ZXJ0ZXhTdGFnZS5lbnRyeVBvaW50XSk7CisKKyAg
ICBpZiAoIWZ1bmN0aW9uKSB7CisgICAgICAgIExPRyhXZWJHUFUsICIlczogVmVydGV4IE1UTEZ1
bmN0aW9uIFwiJXNcIiBub3QgZm91bmQhIiwgZnVuY3Rpb25OYW1lLCB2ZXJ0ZXhTdGFnZS5lbnRy
eVBvaW50LnV0ZjgoKS5kYXRhKCkpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisg
ICAgW210bERlc2NyaXB0b3Igc2V0VmVydGV4RnVuY3Rpb246ZnVuY3Rpb24uZ2V0KCldOworCisg
ICAgLy8gSG93ZXZlciwgZnJhZ21lbnQgc2hhZGVycyBhcmUgb3B0aW9uYWwuCisgICAgY29uc3Qg
YXV0byBmcmFnbWVudFN0YWdlID0gZGVzY3JpcHRvci5mcmFnbWVudFN0YWdlOworICAgIGlmICgh
ZnJhZ21lbnRTdGFnZS5tb2R1bGUgfHwgIWZyYWdtZW50U3RhZ2UuZW50cnlQb2ludCkKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisKKyAgICBtdGxMaWJyYXJ5ID0gZnJhZ21lbnRTdGFnZS5tb2R1bGUt
PnBsYXRmb3JtU2hhZGVyTW9kdWxlKCk7CisKKyAgICBpZiAoIW10bExpYnJhcnkpIHsKKyAgICAg
ICAgTE9HKFdlYkdQVSwgIiVzOiBNVExMaWJyYXJ5IGZvciBmcmFnbWVudCBzdGFnZSBkb2VzIG5v
dCBleGlzdCEiLCBmdW5jdGlvbk5hbWUpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
CisgICAgZnVuY3Rpb24gPSBhZG9wdE5TKFttdGxMaWJyYXJ5IG5ld0Z1bmN0aW9uV2l0aE5hbWU6
ZnJhZ21lbnRTdGFnZS5lbnRyeVBvaW50XSk7CisKKyAgICBpZiAoIWZ1bmN0aW9uKSB7CisgICAg
ICAgIExPRyhXZWJHUFUsICIlczogRnJhZ21lbnQgTVRMRnVuY3Rpb24gXCIlc1wiIG5vdCBmb3Vu
ZCEiLCBmdW5jdGlvbk5hbWUsIGZyYWdtZW50U3RhZ2UuZW50cnlQb2ludC51dGY4KCkuZGF0YSgp
KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIFttdGxEZXNjcmlwdG9yIHNl
dEZyYWdtZW50RnVuY3Rpb246ZnVuY3Rpb24uZ2V0KCldOworCisgICAgcmV0dXJuIHRydWU7Cit9
CisKK1JlZlB0cjxHUFVSZW5kZXJQaXBlbGluZT4gR1BVUmVuZGVyUGlwZWxpbmU6OmNyZWF0ZShj
b25zdCBHUFVEZXZpY2UmIGRldmljZSwgR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yJiYgZGVz
Y3JpcHRvcikKK3sKKyAgICBjb25zdCBjaGFyKiBjb25zdCBmdW5jdGlvbk5hbWUgPSAiR1BVUmVu
ZGVyUGlwZWxpbmU6OmNyZWF0ZSgpIjsKKworICAgIGlmICghZGV2aWNlLnBsYXRmb3JtRGV2aWNl
KCkpIHsKKyAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBNVExEZXZpY2UgZG9lcyBub3QgZXhpc3Qh
IiwgZnVuY3Rpb25OYW1lKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAg
UmV0YWluUHRyPE1UTFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcj4gbXRsRGVzY3JpcHRvcjsKKwor
ICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKKworICAgIG10bERlc2NyaXB0b3IgPSBh
ZG9wdE5TKFtNVExSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgbmV3XSk7CisKKyAgICBFTkRfQkxP
Q0tfT0JKQ19FWENFUFRJT05TOworCisgICAgaWYgKCFtdGxEZXNjcmlwdG9yKSB7CisgICAgICAg
IExPRyhXZWJHUFUsICIlczogRXJyb3IgY3JlYXRpbmcgTVRMRGVzY3JpcHRvciEiLCBmdW5jdGlv
bk5hbWUpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBpZiAoIXNldEZ1
bmN0aW9uc0ZvclBpcGVsaW5lRGVzY3JpcHRvcihmdW5jdGlvbk5hbWUsIG10bERlc2NyaXB0b3Iu
Z2V0KCksIFdURk1vdmUoZGVzY3JpcHRvcikpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwor
ICAgIC8vIEZJWE1FOiBHZXQgdGhlIHBpeGVsRm9ybWF0IGFzIGNvbmZpZ3VyZWQgZm9yIHRoZSBj
b250ZXh0L0NBTWV0YWxMYXllci4KKyAgICBtdGxEZXNjcmlwdG9yLmdldCgpLmNvbG9yQXR0YWNo
bWVudHNbMF0ucGl4ZWxGb3JtYXQgPSBNVExQaXhlbEZvcm1hdEJHUkE4VW5vcm07CisKKyAgICBQ
bGF0Zm9ybVJlbmRlclBpcGVsaW5lU21hcnRQdHIgcGlwZWxpbmU7CisKKyAgICBCRUdJTl9CTE9D
S19PQkpDX0VYQ0VQVElPTlM7CisKKyAgICBwaXBlbGluZSA9IGFkb3B0TlMoW2RldmljZS5wbGF0
Zm9ybURldmljZSgpIG5ld1JlbmRlclBpcGVsaW5lU3RhdGVXaXRoRGVzY3JpcHRvcjptdGxEZXNj
cmlwdG9yLmdldCgpIGVycm9yOm5pbF0pOworCisgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9O
UzsKKworICAgIGlmICghcGlwZWxpbmUpIHsKKyAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBFcnJv
ciBjcmVhdGluZyBNVExSZW5kZXJQaXBlbGluZVN0YXRlISIsIGZ1bmN0aW9uTmFtZSk7CisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIHJldHVybiBhZG9wdFJlZihuZXcgR1BV
UmVuZGVyUGlwZWxpbmUoV1RGTW92ZShwaXBlbGluZSkpKTsKK30KKworR1BVUmVuZGVyUGlwZWxp
bmU6OkdQVVJlbmRlclBpcGVsaW5lKFBsYXRmb3JtUmVuZGVyUGlwZWxpbmVTbWFydFB0ciYmIHBp
cGVsaW5lKQorICAgIDogbV9wbGF0Zm9ybVJlbmRlclBpcGVsaW5lKFdURk1vdmUocGlwZWxpbmUp
KQoreworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VC
R1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2Nv
Y29hL0dQVVNoYWRlck1vZHVsZU1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L2NvY29hL0dQVVNoYWRlck1vZHVsZU1ldGFsLm1tCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc2ZTg1
MzkwY2EyYzkxYmUwNGY5ZTE4YjIzMTYyMDZjMGQwMzU0M2QKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVU2hhZGVyTW9kdWxl
TWV0YWwubW0KQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5o
IgorI2ltcG9ydCAiR1BVU2hhZGVyTW9kdWxlLmgiCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisj
aW1wb3J0ICJHUFVEZXZpY2UuaCIKKyNpbXBvcnQgIkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3Iu
aCIKKyNpbXBvcnQgIkxvZ2dpbmcuaCIKKworI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KKyNpbXBv
cnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
UmVmUHRyPEdQVVNoYWRlck1vZHVsZT4gR1BVU2hhZGVyTW9kdWxlOjpjcmVhdGUoY29uc3QgR1BV
RGV2aWNlJiBkZXZpY2UsIEdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3ImJiBkZXNjcmlwdG9yKQor
eworICAgIGlmICghZGV2aWNlLnBsYXRmb3JtRGV2aWNlKCkpIHsKKyAgICAgICAgTE9HKFdlYkdQ
VSwgIkdQVVNoYWRlck1vZHVsZTo6Y3JlYXRlKCk6IEludmFsaWQgR1BVRGV2aWNlISIpOworICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBQbGF0Zm9ybVNoYWRlck1vZHVsZVNt
YXJ0UHRyIG1vZHVsZTsKKworICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKKworICAg
IE5TRXJyb3IgKmVycm9yID0gW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOkAiY29tLmFwcGxlLldl
YktpdC5HUFUiIGNvZGU6MSB1c2VySW5mbzpuaWxdOworICAgIG1vZHVsZSA9IGFkb3B0TlMoW2Rl
dmljZS5wbGF0Zm9ybURldmljZSgpIG5ld0xpYnJhcnlXaXRoU291cmNlOmRlc2NyaXB0b3IuY29k
ZSBvcHRpb25zOm5pbCBlcnJvcjomZXJyb3JdKTsKKyAgICBpZiAoIW1vZHVsZSkKKyAgICAgICAg
TE9HKFdlYkdQVSwgIlNoYWRlciBjb21waWxhdGlvbiBlcnJvcjogJXMiLCBbW2Vycm9yIGxvY2Fs
aXplZERlc2NyaXB0aW9uXSBVVEY4U3RyaW5nXSk7CisKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENF
UFRJT05TOworCisgICAgaWYgKCFtb2R1bGUpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBHUFVTaGFkZXJNb2R1bGUoV1RGTW92ZShtb2R1bGUpKSk7
Cit9CisKK0dQVVNoYWRlck1vZHVsZTo6R1BVU2hhZGVyTW9kdWxlKFBsYXRmb3JtU2hhZGVyTW9k
dWxlU21hcnRQdHImJiBtb2R1bGUpCisgICAgOiBtX3BsYXRmb3JtU2hhZGVyTW9kdWxlKFdURk1v
dmUobW9kdWxlKSkKK3sKK30KKworfQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVTd2Fw
Q2hhaW5NZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2Nv
YS9HUFVTd2FwQ2hhaW5NZXRhbC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YmJjMGM3YWNlZDQ3MDU0ZWE0MzJm
OWZlNzM5NjBhMjRhNDgwMTU0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVN3YXBDaGFpbk1ldGFsLm1tCkBAIC0wLDAgKzEs
MTQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJHUFVTd2Fw
Q2hhaW4uaCIKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbXBvcnQgIkdQVURldmljZS5oIgor
I2ltcG9ydCAiR1BVVGV4dHVyZS5oIgorI2ltcG9ydCAiR1BVVGV4dHVyZUZvcm1hdEVudW0uaCIK
KyNpbXBvcnQgIkxvZ2dpbmcuaCIKKworI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KKyNpbXBvcnQg
PFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgorI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlv
bnMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWZQdHI8R1BVU3dhcENoYWluPiBHUFVT
d2FwQ2hhaW46OmNyZWF0ZSgpCit7CisgICAgUGxhdGZvcm1Td2FwTGF5ZXJTbWFydFB0ciBwbGF0
Zm9ybUxheWVyOworCisgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOworCisgICAgcGxh
dGZvcm1MYXllciA9IGFkb3B0TlMoW1tDQU1ldGFsTGF5ZXIgYWxsb2NdIGluaXRdKTsKKworICAg
IFtwbGF0Zm9ybUxheWVyIHNldE9wYXF1ZTowXTsKKyAgICBbcGxhdGZvcm1MYXllciBzZXROYW1l
OkAiV2ViR1BVIExheWVyIl07CisKKyAgICAvLyBGSVhNRTogRm9yIG5vdywgZGVmYXVsdCB0byB0
aGlzIHVzYWdlIGZsYWcuCisgICAgW3BsYXRmb3JtTGF5ZXIgc2V0RnJhbWVidWZmZXJPbmx5OllF
U107CisKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOworCisgICAgaWYgKCFwbGF0Zm9y
bUxheWVyKSB7CisgICAgICAgIExPRyhXZWJHUFUsICJHUFVTd2FwQ2hhaW46OmNyZWF0ZSgpOiBV
bmFibGUgdG8gY3JlYXRlIENBTWV0YWxMYXllciEiKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgfQorCisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBHUFVTd2FwQ2hhaW4oV1RGTW92ZShw
bGF0Zm9ybUxheWVyKSkpOworfQorCitHUFVTd2FwQ2hhaW46OkdQVVN3YXBDaGFpbihQbGF0Zm9y
bVN3YXBMYXllclNtYXJ0UHRyJiYgcGxhdGZvcm1MYXllcikKKyAgICA6IG1fcGxhdGZvcm1Td2Fw
TGF5ZXIoV1RGTW92ZShwbGF0Zm9ybUxheWVyKSkKK3sKK30KKwordm9pZCBHUFVTd2FwQ2hhaW46
OnNldERldmljZShjb25zdCBHUFVEZXZpY2UmIGRldmljZSkKK3sKKyAgICBpZiAoIWRldmljZS5w
bGF0Zm9ybURldmljZSgpKSB7CisgICAgICAgIExPRyhXZWJHUFUsICJHUFVTd2FwQ2hhaW46OnNl
dERldmljZSgpOiBNVExEZXZpY2UgZG9lcyBub3QgZXhpc3QhIik7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBbbV9wbGF0Zm9ybVN3YXBMYXllciBzZXREZXZpY2U6ZGV2aWNlLnBsYXRm
b3JtRGV2aWNlKCldOworfQorCitzdGF0aWMgc3RkOjpvcHRpb25hbDxQbGF0Zm9ybVRleHR1cmVG
b3JtYXQ+IHBsYXRmb3JtVGV4dHVyZUZvcm1hdEZvckdQVVRleHR1cmVGb3JtYXQoR1BVVGV4dHVy
ZUZvcm1hdEVudW0gZm9ybWF0KQoreworICAgIHN3aXRjaCAoZm9ybWF0KSB7CisgICAgY2FzZSBH
UFVUZXh0dXJlRm9ybWF0RW51bTo6UjhHOEI4QThVbm9ybToKKyAgICAgICAgcmV0dXJuIE1UTFBp
eGVsRm9ybWF0UkdCQThVbm9ybTsKKyAgICBjYXNlIEdQVVRleHR1cmVGb3JtYXRFbnVtOjpSOEc4
QjhBOFVpbnQ6CisgICAgICAgIHJldHVybiBNVExQaXhlbEZvcm1hdFJHQkE4VWludDsKKyAgICBj
YXNlIEdQVVRleHR1cmVGb3JtYXRFbnVtOjpCOEc4UjhBOFVub3JtOgorICAgICAgICByZXR1cm4g
TVRMUGl4ZWxGb3JtYXRCR1JBOFVub3JtOworICAgIGNhc2UgR1BVVGV4dHVyZUZvcm1hdEVudW06
OkQzMkZsb2F0UzhVaW50OgorICAgICAgICByZXR1cm4gTVRMUGl4ZWxGb3JtYXREZXB0aDMyRmxv
YXRfU3RlbmNpbDg7CisgICAgZGVmYXVsdDoKKyAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVN3YXBD
aGFpbjo6c2V0Rm9ybWF0KCk6IEludmFsaWQgdGV4dHVyZSBmb3JtYXQgc3BlY2lmaWVkISIpOwor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH0KK30KKwordm9pZCBHUFVTd2FwQ2hh
aW46OnNldEZvcm1hdChHUFVUZXh0dXJlRm9ybWF0RW51bSBmb3JtYXQpCit7CisgICAgYXV0byBy
ZXN1bHQgPSBwbGF0Zm9ybVRleHR1cmVGb3JtYXRGb3JHUFVUZXh0dXJlRm9ybWF0KGZvcm1hdCk7
CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gbXRsUmVzdWx0
ID0gc3RhdGljX2Nhc3Q8TVRMUGl4ZWxGb3JtYXQ+KHJlc3VsdC52YWx1ZSgpKTsKKworICAgIHN3
aXRjaCAobXRsUmVzdWx0KSB7CisgICAgY2FzZSBNVExQaXhlbEZvcm1hdEJHUkE4VW5vcm06Cisg
ICAgLy8gRklYTUU6IEFkZCB0aGUgb3RoZXIgc3VwcG9ydGVkIHN3YXAgbGF5ZXIgZm9ybWF0cyBh
cyB0aGV5IGFyZSBhZGRlZCB0byBHUFUgc3BlYy4KKyAgICAvLyAgTVRMUGl4ZWxGb3JtYXRCR1JB
OFVub3JtX3NSR0IsIE1UTFBpeGVsRm9ybWF0UkdCQTE2RmxvYXQsIE1UTFBpeGVsRm9ybWF0QkdS
QTEwX1hSLCBhbmQgTVRMUGl4ZWxGb3JtYXRCR1JBMTBfWFJfc1JHQi4KKyAgICAgICAgW21fcGxh
dGZvcm1Td2FwTGF5ZXIgc2V0UGl4ZWxGb3JtYXQ6bXRsUmVzdWx0XTsKKyAgICAgICAgcmV0dXJu
OworICAgIGRlZmF1bHQ6CisgICAgICAgIExPRyhXZWJHUFUsICJHUFVTd2FwQ2hhaW46OnNldEZv
cm1hdCgpOiBVbnN1cHBvcnRlZCBNVExQaXhlbEZvcm1hdCEiKTsKKyAgICB9Cit9CisKK3ZvaWQg
R1BVU3dhcENoYWluOjpyZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkKK3sKKyAgICBbbV9w
bGF0Zm9ybVN3YXBMYXllciBzZXRCb3VuZHM6Q0dSZWN0TWFrZSgwLCAwLCB3aWR0aCwgaGVpZ2h0
KV07CisgICAgW21fcGxhdGZvcm1Td2FwTGF5ZXIgc2V0RHJhd2FibGVTaXplOkNHU2l6ZU1ha2Uo
d2lkdGgsIGhlaWdodCldOworfQorCitSZWZQdHI8R1BVVGV4dHVyZT4gR1BVU3dhcENoYWluOjpn
ZXROZXh0VGV4dHVyZSgpCit7CisgICAgUmV0YWluUHRyPE1UTFRleHR1cmU+IG10bFRleHR1cmU7
CisKKyAgICBpZiAoYXV0byBkcmF3YWJsZSA9IHJldGFpblB0cihbbV9wbGF0Zm9ybVN3YXBMYXll
ciBuZXh0RHJhd2FibGVdKSkKKyAgICAgICAgbXRsVGV4dHVyZSA9IHJldGFpblB0cihbZHJhd2Fi
bGUgdGV4dHVyZV0pOworCisgICAgaWYgKCFtdGxUZXh0dXJlKSB7CisgICAgICAgIExPRyhXZWJH
UFUsICJHUFVTd2FwQ2hhaW46OmdldE5leHRUZXh0dXJlKCk6IFVuYWJsZSB0byBnZXQgbmV4dCBN
VExUZXh0dXJlISIpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICByZXR1
cm4gR1BVVGV4dHVyZTo6Y3JlYXRlKFdURk1vdmUobXRsVGV4dHVyZSkpOworfQorCit2b2lkIEdQ
VVN3YXBDaGFpbjo6cHJlc2VudCgpCit7CisgICAgLy8gRklYTUU6IFVuaW1wbGVtZW50ZWQgc3R1
Yi4KK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQkdQ
VSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2Nv
YS9HUFVUZXh0dXJlTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvY29jb2EvR1BVVGV4dHVyZU1ldGFsLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUwNzg1N2I2ZjNhYjU1NGFh
MGZhNWNhN2QzYWJhNDkwZTRjN2ZiNzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVVGV4dHVyZU1ldGFsLm1tCkBAIC0wLDAg
KzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkdQVVRl
eHR1cmUuaCIKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbXBvcnQgIkxvZ2dpbmcuaCIKKwor
I2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KKyNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25z
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVmPEdQVVRleHR1cmU+IEdQVVRleHR1cmU6
OmNyZWF0ZShQbGF0Zm9ybVRleHR1cmVTbWFydFB0ciYmIHRleHR1cmUpCit7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgR1BVVGV4dHVyZShXVEZNb3ZlKHRleHR1cmUpKSk7Cit9CisKK0dQVVRl
eHR1cmU6OkdQVVRleHR1cmUoUmV0YWluUHRyPE1UTFRleHR1cmU+JiYgdGV4dHVyZSkKKyAgICA6
IG1fcGxhdGZvcm1UZXh0dXJlKFdURk1vdmUodGV4dHVyZSkpCit7Cit9CisKK1JlZlB0cjxHUFVU
ZXh0dXJlPiBHUFVUZXh0dXJlOjpjcmVhdGVEZWZhdWx0VGV4dHVyZVZpZXcoKQoreworICAgIFJl
dGFpblB0cjxNVExUZXh0dXJlPiB0ZXh0dXJlOworCisgICAgdGV4dHVyZSA9IGFkb3B0TlMoW21f
cGxhdGZvcm1UZXh0dXJlIG5ld1RleHR1cmVWaWV3V2l0aFBpeGVsRm9ybWF0Om1fcGxhdGZvcm1U
ZXh0dXJlLmdldCgpLnBpeGVsRm9ybWF0XSk7CisKKyAgICBpZiAoIXRleHR1cmUpIHsKKyAgICAg
ICAgTE9HKFdlYkdQVSwgIkdQVVRleHR1cmU6OmNyZWF0ZURlZmF1bHRUZXh0dXJlVmlldygpOiBV
bmFibGUgdG8gY3JlYXRlIE1UTFRleHR1cmUgdmlldyEiKTsKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgfQorCisgICAgcmV0dXJuIEdQVVRleHR1cmU6OmNyZWF0ZShXVEZNb3ZlKHRleHR1
cmUpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdF
QkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9s
ZWdhY3kvR1BVTGVnYWN5QnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9sZWdhY3kvR1BVTGVnYWN5QnVmZmVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYTQ1ZTM1MGFl
ZmI1ZmY1YTc2NzBkYTE4MmNhZjE1MjgxMmU4NTU1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9HUFVMZWdhY3lCdWZmZXIuY3Bw
CkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR1BVTGVnYWN5QnVmZmVyLmgi
CisKKyNpZiBFTkFCTEUoV0VCTUVUQUwpCisKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvQXJyYXlCdWZmZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitHUFVMZWdhY3lCdWZmZXI6On5HUFVMZWdhY3lCdWZmZXIoKQoreworICAgIExPRyhXZWJNZXRh
bCwgIkdQVUJ1ZmZlcjo6fkdQVUJ1ZmZlcigpIik7Cit9CisKK3Vuc2lnbmVkIEdQVUxlZ2FjeUJ1
ZmZlcjo6bGVuZ3RoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jb250ZW50cyA/IG1fY29udGVu
dHMtPmJ5dGVMZW5ndGgoKSA6IDA7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVn
YWN5L0dQVUxlZ2FjeUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L2xlZ2FjeS9HUFVMZWdhY3lCdWZmZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42Mzg5MTgxN2JiOTRiN2Rh
OTc5MTMwMzUwYzJlMGZjZDk3NTQ2NTgyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9HUFVMZWdhY3lCdWZmZXIuaApAQCAtMCww
ICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCTUVUQUwpCisKKyNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCitPQkpDX1BST1RPQ09MKE1UTEJ1
ZmZlcik7CisKK25hbWVzcGFjZSBKU0MgeworY2xhc3MgQXJyYXlCdWZmZXI7CitjbGFzcyBBcnJh
eUJ1ZmZlclZpZXc7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgR1BVTGVnYWN5
RGV2aWNlOworCitjbGFzcyBHUFVMZWdhY3lCdWZmZXIgeworcHVibGljOgorICAgIFdFQkNPUkVf
RVhQT1JUIEdQVUxlZ2FjeUJ1ZmZlcihjb25zdCBHUFVMZWdhY3lEZXZpY2UmLCBjb25zdCBKU0M6
OkFycmF5QnVmZmVyVmlldyYpOworICAgIFdFQkNPUkVfRVhQT1JUIH5HUFVMZWdhY3lCdWZmZXIo
KTsKKworICAgIFdFQkNPUkVfRVhQT1JUIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0OworICAgIEpT
Qzo6QXJyYXlCdWZmZXIqIGNvbnRlbnRzKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50cy5nZXQo
KTsgfQorCisjaWYgVVNFKE1FVEFMKQorICAgIE1UTEJ1ZmZlciAqbWV0YWwoKSBjb25zdCB7IHJl
dHVybiBtX21ldGFsLmdldCgpOyB9CisjZW5kaWYKKworcHJpdmF0ZToKKyNpZiBVU0UoTUVUQUwp
CisgICAgUmV0YWluUHRyPE1UTEJ1ZmZlcj4gbV9tZXRhbDsKKyNlbmRpZgorICAgIFJlZlB0cjxK
U0M6OkFycmF5QnVmZmVyPiBtX2NvbnRlbnRzOworfTsKKyAgICAKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvbGVnYWN5L0dQVUxlZ2FjeUNvbW1hbmRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9HUFVMZWdhY3lDb21tYW5kQnVmZmVyLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42YTIxZDY1YjkwODNhNTAyMTcyOTVmYmE4Y2U4MWI3ZmMwMmI3ZTNiCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xl
Z2FjeS9HUFVMZWdhY3lDb21tYW5kQnVmZmVyLmNwcApAQCAtMCwwICsxLDQzIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxNyBZdWljaGlybyBLaWt1cmEgKHkua2lrdXJhQGdtYWlsLmNvbSkKKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkdQVUxlZ2FjeUNvbW1hbmRCdWZmZXIuaCIKKworI2lmIEVOQUJMRShX
RUJNRVRBTCkKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitHUFVMZWdhY3lDb21tYW5kQnVmZmVyOjp+R1BVTGVnYWN5Q29tbWFuZEJ1ZmZlcigpCit7Cisg
ICAgTE9HKFdlYk1ldGFsLCAiR1BVQ29tbWFuZEJ1ZmZlcjo6fkdQVUNvbW1hbmRCdWZmZXIoKSIp
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9HUFVMZWdhY3lDb21tYW5k
QnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L0dQ
VUxlZ2FjeUNvbW1hbmRCdWZmZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43Y2EzZTA4YzIzNTM2ZWYwOWNkZDM5
MzIxNWQ0ZTcxNjBlMDcyZTMyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9HUFVMZWdhY3lDb21tYW5kQnVmZmVyLmgKQEAgLTAs
MCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgWXVpY2hpcm8gS2lrdXJhICh5Lmtp
a3VyYUBnbWFpbC5jb20pCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQk1FVEFMKQorCisjaW5jbHVkZSA8d3Rm
L0Z1bmN0aW9uLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCitPQkpDX1BST1RPQ09M
KE1UTENvbW1hbmRCdWZmZXIpOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEdQVUxl
Z2FjeUNvbW1hbmRRdWV1ZTsKK2NsYXNzIEdQVUxlZ2FjeURyYXdhYmxlOworCitjbGFzcyBHUFVM
ZWdhY3lDb21tYW5kQnVmZmVyIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBHUFVMZWdhY3lDb21t
YW5kQnVmZmVyKGNvbnN0IEdQVUxlZ2FjeUNvbW1hbmRRdWV1ZSYsIEZ1bmN0aW9uPHZvaWQoKT4m
JiBjb21wbGV0ZWRDYWxsYmFjayk7CisgICAgfkdQVUxlZ2FjeUNvbW1hbmRCdWZmZXIoKTsKKwor
ICAgIHZvaWQgY29tbWl0KCkgY29uc3Q7CisgICAgdm9pZCBwcmVzZW50RHJhd2FibGUoR1BVTGVn
YWN5RHJhd2FibGUmKSBjb25zdDsKKworI2lmIFVTRShNRVRBTCkKKyAgICBNVExDb21tYW5kQnVm
ZmVyICptZXRhbCgpIGNvbnN0IHsgcmV0dXJuIG1fbWV0YWwuZ2V0KCk7IH0KKyNlbmRpZgorCisj
aWYgVVNFKE1FVEFMKQorcHJpdmF0ZToKKyAgICBSZXRhaW5QdHI8TVRMQ29tbWFuZEJ1ZmZlcj4g
bV9tZXRhbDsKKyNlbmRpZgorfTsKKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVn
YWN5L0dQVUxlZ2FjeUNvbW1hbmRRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvbGVnYWN5L0dQVUxlZ2FjeUNvbW1hbmRRdWV1ZS5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NDIwNTI4MTgyYTBmZWVmOWZiMzcyMDVhYjYyYTc4Y2EwZjY5ZWI4MAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvR1BVTGVnYWN5
Q29tbWFuZFF1ZXVlLmNwcApAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdQ
VUxlZ2FjeUNvbW1hbmRRdWV1ZS5oIgorCisjaWYgRU5BQkxFKFdFQk1FVEFMKQorCisjaW5jbHVk
ZSAiTG9nZ2luZy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0dQVUxlZ2FjeUNvbW1hbmRR
dWV1ZTo6fkdQVUxlZ2FjeUNvbW1hbmRRdWV1ZSgpCit7CisgICAgTE9HKFdlYk1ldGFsLCAiR1BV
TGVnYWN5Q29tbWFuZFF1ZXVlOjp+R1BVTGVnYWN5Q29tbWFuZFF1ZXVlKCkiKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvR1BVTGVnYWN5Q29tbWFuZFF1ZXVlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L0dQVUxlZ2FjeUNvbW1h
bmRRdWV1ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIyNmY4ZTJhODM0MjBhNDcxMDQ4ZDNjYjcwNDk5OTE0MDY5
YzUxNjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvbGVnYWN5L0dQVUxlZ2FjeUNvbW1hbmRRdWV1ZS5oCkBAIC0wLDAgKzEsNTggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2lmIEVOQUJMRShXRUJNRVRBTCkKKworI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKwor
T0JKQ19QUk9UT0NPTChNVExDb21tYW5kUXVldWUpOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIEdQVUxlZ2FjeURldmljZTsKKworY2xhc3MgR1BVTGVnYWN5Q29tbWFuZFF1ZXVlIHsK
K3B1YmxpYzoKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBHUFVMZWdhY3lDb21tYW5kUXVl
dWUoY29uc3QgR1BVTGVnYWN5RGV2aWNlJik7CisgICAgV0VCQ09SRV9FWFBPUlQgfkdQVUxlZ2Fj
eUNvbW1hbmRRdWV1ZSgpOworCisgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGxhYmVsKCkgY29u
c3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRMYWJlbChjb25zdCBTdHJpbmcmKSBjb25z
dDsKKworI2lmIFVTRShNRVRBTCkKKyAgICBNVExDb21tYW5kUXVldWUgKm1ldGFsKCkgY29uc3Qg
eyByZXR1cm4gbV9tZXRhbC5nZXQoKTsgfQorI2VuZGlmCisKKyNpZiBVU0UoTUVUQUwpCitwcml2
YXRlOgorICAgIFJldGFpblB0cjxNVExDb21tYW5kUXVldWU+IG1fbWV0YWw7CisjZW5kaWYKK307
CisgICAgCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9HUFVMZWdhY3lDb21wdXRl
Q29tbWFuZEVuY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L2xlZ2FjeS9HUFVMZWdhY3lDb21wdXRlQ29tbWFuZEVuY29kZXIuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZi
N2M5ZTdlNWIzNDM4NjI5ZjM4Y2RiZjdhZGYyZmY5NzVjYWIyZjIKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L0dQVUxlZ2FjeUNv
bXB1dGVDb21tYW5kRW5jb2Rlci5jcHAKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNyBZdWljaGlybyBLaWt1cmEgKHkua2lrdXJhQGdtYWlsLmNvbSkKKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkdQVUxlZ2FjeUNvbXB1dGVDb21tYW5kRW5jb2Rlci5oIgorCisjaWYgRU5BQkxF
KFdFQk1FVEFMKQorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisgICAgCitHUFVMZWdhY3lDb21wdXRlQ29tbWFuZEVuY29kZXI6On5HUFVMZWdhY3lDb21wdXRl
Q29tbWFuZEVuY29kZXIoKQoreworICAgIExPRyhXZWJNZXRhbCwgIkdQVUxlZ2FjeUNvbXB1dGVD
b21tYW5kRW5jb2Rlcjo6fkdQVUxlZ2FjeUNvbXB1dGVDb21tYW5kRW5jb2RlcigpIik7Cit9Cisg
ICAgCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9HUFVMZWdhY3lDb21wdXRlQ29t
bWFuZEVuY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdh
Y3kvR1BVTGVnYWN5Q29tcHV0ZUNvbW1hbmRFbmNvZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTdhN2E5Njc3
Y2ZkNmY1NTUwMDY5OWYzNmNlYzE3MzlkOGFmY2EzYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvR1BVTGVnYWN5Q29tcHV0ZUNv
bW1hbmRFbmNvZGVyLmgKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NyBZdWljaGlybyBLaWt1cmEgKHkua2lrdXJhQGdtYWlsLmNvbSkKKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VC
TUVUQUwpCisKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK09CSkNfUFJPVE9DT0woTVRM
Q29tcHV0ZUNvbW1hbmRFbmNvZGVyKTsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIAorY2xh
c3MgR1BVTGVnYWN5QnVmZmVyOworY2xhc3MgR1BVTGVnYWN5Q29tbWFuZEJ1ZmZlcjsKK2NsYXNz
IEdQVUxlZ2FjeUNvbXB1dGVQaXBlbGluZVN0YXRlOworCitzdHJ1Y3QgR1BVTGVnYWN5U2l6ZTsK
KworY2xhc3MgR1BVTGVnYWN5Q29tcHV0ZUNvbW1hbmRFbmNvZGVyIHsKK3B1YmxpYzoKKyAgICBl
eHBsaWNpdCBHUFVMZWdhY3lDb21wdXRlQ29tbWFuZEVuY29kZXIoY29uc3QgR1BVTGVnYWN5Q29t
bWFuZEJ1ZmZlciYpOworICAgIH5HUFVMZWdhY3lDb21wdXRlQ29tbWFuZEVuY29kZXIoKTsKKwor
ICAgIHZvaWQgc2V0Q29tcHV0ZVBpcGVsaW5lU3RhdGUoY29uc3QgR1BVTGVnYWN5Q29tcHV0ZVBp
cGVsaW5lU3RhdGUmKSBjb25zdDsKKyAgICB2b2lkIHNldEJ1ZmZlcihjb25zdCBHUFVMZWdhY3lC
dWZmZXImLCB1bnNpZ25lZCwgdW5zaWduZWQpIGNvbnN0OworICAgIHZvaWQgZGlzcGF0Y2goR1BV
TGVnYWN5U2l6ZSwgR1BVTGVnYWN5U2l6ZSkgY29uc3Q7CisgICAgdm9pZCBlbmRFbmNvZGluZygp
IGNvbnN0OworCisjaWYgVVNFKE1FVEFMKQorcHJpdmF0ZToKKyAgICBSZXRhaW5QdHI8TVRMQ29t
cHV0ZUNvbW1hbmRFbmNvZGVyPiBtX21ldGFsOworI2VuZGlmCit9OworICAgIAorfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvR1BVTGVnYWN5Q29tcHV0ZVBpcGVsaW5lU3RhdGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9HUFVMZWdhY3lD
b21wdXRlUGlwZWxpbmVTdGF0ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWI3MDRmY2U1NWVkZWFjYzFjZmM0
YTc4OWI4MzU1MWRiMjY2Y2RjNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvR1BVTGVnYWN5Q29tcHV0ZVBpcGVsaW5lU3RhdGUu
Y3BwCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgWXVpY2hpcm8g
S2lrdXJhICh5Lmtpa3VyYUBnbWFpbC5jb20pCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHUFVMZWdhY3lD
b21wdXRlUGlwZWxpbmVTdGF0ZS5oIgorCisjaWYgRU5BQkxFKFdFQk1FVEFMKQorCisjaW5jbHVk
ZSAiTG9nZ2luZy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCitHUFVMZWdhY3lDb21w
dXRlUGlwZWxpbmVTdGF0ZTo6fkdQVUxlZ2FjeUNvbXB1dGVQaXBlbGluZVN0YXRlKCkKK3sKKyAg
ICBMT0coV2ViTWV0YWwsICJHUFVMZWdhY3lDb21wdXRlUGlwZWxpbmVTdGF0ZTo6fkdQVUxlZ2Fj
eUNvbXB1dGVQaXBlbGluZVN0YXRlKCkiKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9sZWdhY3kvR1BVTGVnYWN5Q29tcHV0ZVBpcGVsaW5lU3RhdGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvR1BVTGVnYWN5Q29tcHV0ZVBpcGVsaW5lU3Rh
dGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4yMmI5MzAzNzAwOWZiODc1MDZhNjMzODUxNzJlZjUwNzc1ZmEzNmFk
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L2xlZ2FjeS9HUFVMZWdhY3lDb21wdXRlUGlwZWxpbmVTdGF0ZS5oCkBAIC0wLDAgKzEsNTcgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgWXVpY2hpcm8gS2lrdXJhICh5Lmtpa3VyYUBnbWFp
bC5jb20pCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaWYgRU5BQkxFKFdFQk1FVEFMKQorCisjaW5jbHVkZSA8d3RmL1JldGFpblB0
ci5oPgorCitPQkpDX1BST1RPQ09MKE1UTENvbXB1dGVQaXBlbGluZVN0YXRlKTsKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBHUFVMZWdhY3lEZXZpY2U7CitjbGFzcyBHUFVMZWdhY3lG
dW5jdGlvbjsKKworY2xhc3MgR1BVTGVnYWN5Q29tcHV0ZVBpcGVsaW5lU3RhdGUgeworcHVibGlj
OgorICAgIEdQVUxlZ2FjeUNvbXB1dGVQaXBlbGluZVN0YXRlKCkgPSBkZWZhdWx0OworICAgIEdQ
VUxlZ2FjeUNvbXB1dGVQaXBlbGluZVN0YXRlKGNvbnN0IEdQVUxlZ2FjeURldmljZSYsIGNvbnN0
IEdQVUxlZ2FjeUZ1bmN0aW9uJik7CisgICAgfkdQVUxlZ2FjeUNvbXB1dGVQaXBlbGluZVN0YXRl
KCk7CisKKyNpZiBVU0UoTUVUQUwpCisgICAgTVRMQ29tcHV0ZVBpcGVsaW5lU3RhdGUgKm1ldGFs
KCkgY29uc3QgeyByZXR1cm4gbV9tZXRhbC5nZXQoKTsgfQorI2VuZGlmCisKKyNpZiBVU0UoTUVU
QUwpCitwcml2YXRlOgorICAgIFJldGFpblB0cjxNVExDb21wdXRlUGlwZWxpbmVTdGF0ZT4gbV9t
ZXRhbDsKKyNlbmRpZgorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvR1BV
TGVnYWN5RGVwdGhTdGVuY2lsRGVzY3JpcHRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvbGVnYWN5L0dQVUxlZ2FjeURlcHRoU3RlbmNpbERlc2NyaXB0b3IuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjljYzc5ZDZkZDYzMTNjMmEzZDg3ZDI0NzkxZDc2YzgzODA1NDMxMTMKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVn
YWN5L0dQVUxlZ2FjeURlcHRoU3RlbmNpbERlc2NyaXB0b3IuY3BwCkBAIC0wLDAgKzEsNDIgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiR1BVTGVnYWN5RGVwdGhTdGVuY2lsRGVzY3JpcHRvci5oIgor
CisjaWYgRU5BQkxFKFdFQk1FVEFMKQorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK0dQVUxlZ2FjeURlcHRoU3RlbmNpbERlc2NyaXB0b3I6On5HUFVMZWdh
Y3lEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yKCkKK3sKKyAgICBMT0coV2ViTWV0YWwsICJHUFVEZXB0
aFN0ZW5jaWxEZXNjcmlwdG9yOjp+R1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvcigpIik7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L0dQVUxlZ2FjeURlcHRoU3RlbmNpbERl
c2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kv
R1BVTGVnYWN5RGVwdGhTdGVuY2lsRGVzY3JpcHRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ5Y2JmMTgyNWQw
OTA1NzM1ZTRlNDUwOWQxOTJiZTRhZTgyNjY3MDEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L0dQVUxlZ2FjeURlcHRoU3RlbmNp
bERlc2NyaXB0b3IuaApAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCTUVUQUwp
CisKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK09CSkNfQ0xBU1MgTVRMRGVwdGhTdGVu
Y2lsRGVzY3JpcHRvcjsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitlbnVtIGNsYXNzIEdQVUxl
Z2FjeUNvbXBhcmVGdW5jdGlvbjsKKworY2xhc3MgR1BVTGVnYWN5RGVwdGhTdGVuY2lsRGVzY3Jp
cHRvciB7CitwdWJsaWM6CisgICAgR1BVTGVnYWN5RGVwdGhTdGVuY2lsRGVzY3JpcHRvcigpOwor
ICAgIH5HUFVMZWdhY3lEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yKCk7CisKKyAgICBib29sIGRlcHRo
V3JpdGVFbmFibGVkKCkgY29uc3Q7CisgICAgdm9pZCBzZXREZXB0aFdyaXRlRW5hYmxlZChib29s
KSBjb25zdDsKKworICAgIEdQVUxlZ2FjeUNvbXBhcmVGdW5jdGlvbiBkZXB0aENvbXBhcmVGdW5j
dGlvbigpIGNvbnN0OworICAgIHZvaWQgc2V0RGVwdGhDb21wYXJlRnVuY3Rpb24oR1BVTGVnYWN5
Q29tcGFyZUZ1bmN0aW9uKSBjb25zdDsKKworI2lmIFVTRShNRVRBTCkKKyAgICBNVExEZXB0aFN0
ZW5jaWxEZXNjcmlwdG9yICptZXRhbCgpIGNvbnN0IHsgcmV0dXJuIG1fbWV0YWwuZ2V0KCk7IH0K
KyNlbmRpZgorCisjaWYgVVNFKE1FVEFMKQorcHJpdmF0ZToKKyAgICBSZXRhaW5QdHI8TVRMRGVw
dGhTdGVuY2lsRGVzY3JpcHRvcj4gbV9tZXRhbDsKKyNlbmRpZgorfTsKKyAgICAKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L0dQVUxlZ2FjeURlcHRoU3RlbmNpbFN0YXRlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvR1BVTGVnYWN5RGVw
dGhTdGVuY2lsU3RhdGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAyN2Y1NGY3Y2JhODA2NGFhMjU5ZmU3NjJj
OGRhZGRkMjUyNDQ1NDIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvbGVnYWN5L0dQVUxlZ2FjeURlcHRoU3RlbmNpbFN0YXRlLmNwcApAQCAt
MCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdQVUxlZ2FjeURlcHRoU3RlbmNpbFN0
YXRlLmgiCisKKyNpZiBFTkFCTEUoV0VCTUVUQUwpCisKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworR1BVTGVnYWN5RGVwdGhTdGVuY2lsU3RhdGU6On5HUFVM
ZWdhY3lEZXB0aFN0ZW5jaWxTdGF0ZSgpCit7CisgICAgTE9HKFdlYk1ldGFsLCAiR1BVTGVnYWN5
RGVwdGhTdGVuY2lsU3RhdGU6On5HUFVMZWdhY3lEZXB0aFN0ZW5jaWxTdGF0ZSgpIik7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L0dQVUxlZ2FjeURlcHRoU3RlbmNpbFN0
YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L0dQVUxl
Z2FjeURlcHRoU3RlbmNpbFN0YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjY0ZmY1NWE4NDY1OTk4MzZiZjg1
ZDhmMzk5NDhlZTI2NmVmMzcxYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvR1BVTGVnYWN5RGVwdGhTdGVuY2lsU3RhdGUuaApA
QCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCTUVUQUwpCisKKyNpbmNsdWRlIDx3
dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworT0JKQ19QUk9UT0NP
TChNVExEZXB0aFN0ZW5jaWxTdGF0ZSk7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
R1BVTGVnYWN5RGV2aWNlOworY2xhc3MgR1BVTGVnYWN5RGVwdGhTdGVuY2lsRGVzY3JpcHRvcjsK
KworY2xhc3MgR1BVTGVnYWN5RGVwdGhTdGVuY2lsU3RhdGUgeworcHVibGljOgorICAgIEdQVUxl
Z2FjeURlcHRoU3RlbmNpbFN0YXRlKCkgPSBkZWZhdWx0OworICAgIEdQVUxlZ2FjeURlcHRoU3Rl
bmNpbFN0YXRlKGNvbnN0IEdQVUxlZ2FjeURldmljZSYsIGNvbnN0IEdQVUxlZ2FjeURlcHRoU3Rl
bmNpbERlc2NyaXB0b3ImKTsKKyAgICB+R1BVTGVnYWN5RGVwdGhTdGVuY2lsU3RhdGUoKTsKKwor
ICAgIFN0cmluZyBsYWJlbCgpIGNvbnN0OworICAgIHZvaWQgc2V0TGFiZWwoY29uc3QgU3RyaW5n
JikgY29uc3Q7CisKKyNpZiBVU0UoTUVUQUwpCisgICAgTVRMRGVwdGhTdGVuY2lsU3RhdGUgKm1l
dGFsKCkgY29uc3QgeyByZXR1cm4gbV9tZXRhbC5nZXQoKTsgfQorI2VuZGlmCisKKyNpZiBVU0Uo
TUVUQUwpCitwcml2YXRlOgorICAgIFJldGFpblB0cjxNVExEZXB0aFN0ZW5jaWxTdGF0ZT4gbV9t
ZXRhbDsKKyNlbmRpZgorfTsKKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5
L0dQVUxlZ2FjeURldmljZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvbGVnYWN5L0dQVUxlZ2FjeURldmljZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTRlZmI2NzRmZDY0ZmIy
YzQ5NWQzOWViODljOGNkZDZhOGZhYzRlNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvR1BVTGVnYWN5RGV2aWNlLmNwcApAQCAt
MCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdQVUxlZ2FjeURldmljZS5oIgorCisj
aWYgRU5BQkxFKFdFQk1FVEFMKQorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK0dQVUxlZ2FjeURldmljZTo6fkdQVUxlZ2FjeURldmljZSgpCit7CisgICAg
TE9HKFdlYk1ldGFsLCAiR1BVTGVnYWN5RGV2aWNlOjp+R1BVTGVnYWN5RGV2aWNlKCkiKTsKKyAg
ICBkaXNjb25uZWN0KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L0dQ
VUxlZ2FjeURldmljZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xl
Z2FjeS9HUFVMZWdhY3lEZXZpY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NDZkMzViYTUxZjZjZTA2NWI2YjBj
Y2RiMTllZjE0ZjQ3OGU1MWU2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9HUFVMZWdhY3lEZXZpY2UuaApAQCAtMCwwICsxLDY3
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCTUVUQUwpCisKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRy
Lmg+CisKK09CSkNfQ0xBU1MgQ0FMYXllcjsKK09CSkNfQ0xBU1MgV2ViTWV0YWxMYXllcjsKKwor
T0JKQ19QUk9UT0NPTChNVExEZXZpY2UpOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IEdQVUxlZ2FjeURldmljZSB7CitwdWJsaWM6CisgICAgV0VCQ09SRV9FWFBPUlQgR1BVTGVnYWN5
RGV2aWNlKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgfkdQVUxlZ2FjeURldmljZSgpOworCisgICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBvcGVyYXRvciEoKSBjb25zdDsKKworICAgIHZvaWQgcmVzaGFw
ZShpbnQgd2lkdGgsIGludCBoZWlnaHQpIGNvbnN0OworCisjaWYgVVNFKE1FVEFMKQorICAgIFdl
Yk1ldGFsTGF5ZXIgKmxheWVyKCkgY29uc3QgeyByZXR1cm4gbV9sYXllci5nZXQoKTsgfQorICAg
IFdFQkNPUkVfRVhQT1JUIENBTGF5ZXIgKnBsYXRmb3JtTGF5ZXIoKSBjb25zdDsKKyAgICBNVExE
ZXZpY2UgKm1ldGFsKCkgY29uc3QgeyByZXR1cm4gbV9tZXRhbC5nZXQoKTsgfQorI2VuZGlmCisK
KyAgICB2b2lkIG1hcmtMYXllckNvbXBvc2l0ZWQoKSBjb25zdCB7IH0KKworcHJpdmF0ZToKKyAg
ICB2b2lkIGRpc2Nvbm5lY3QoKTsKKworI2lmIFVTRShNRVRBTCkKKyAgICBSZXRhaW5QdHI8V2Vi
TWV0YWxMYXllcj4gbV9sYXllcjsKKyAgICBSZXRhaW5QdHI8TVRMRGV2aWNlPiBtX21ldGFsOwor
I2VuZGlmCit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9HUFVMZWdhY3lE
cmF3YWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5
L0dQVUxlZ2FjeURyYXdhYmxlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNDJmZGM1OWI0YTAwOTRkZmEwYWFk
ODI1YTY5ZGMwNjU3ZjFmMDlmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9HUFVMZWdhY3lEcmF3YWJsZS5jcHAKQEAgLTAsMCAr
MSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHUFVMZWdhY3lEcmF3YWJsZS5oIgorCisjaWYg
RU5BQkxFKFdFQk1FVEFMKQorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK0dQVUxlZ2FjeURyYXdhYmxlOjp+R1BVTGVnYWN5RHJhd2FibGUoKQoreworICAg
IExPRyhXZWJNZXRhbCwgIkdQVUxlZ2FjeURyYXdhYmxlOjp+R1BVTGVnYWN5RHJhd2FibGUoKSIp
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9HUFVMZWdhY3lEcmF3YWJs
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9HUFVMZWdh
Y3lEcmF3YWJsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlhYmZmZTJlOWQ1OTkwZTZlMTgxNzk4YjAyYTNiMzFh
YWYxYjM5YjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvbGVnYWN5L0dQVUxlZ2FjeURyYXdhYmxlLmgKQEAgLTAsMCArMSw2MCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaWYgRU5BQkxFKFdFQk1FVEFMKQorCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCitP
QkpDX1BST1RPQ09MKE1UTERyYXdhYmxlKTsKK09CSkNfUFJPVE9DT0woTVRMVGV4dHVyZSk7CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgR1BVTGVnYWN5RGV2aWNlOworCitjbGFzcyBH
UFVMZWdhY3lEcmF3YWJsZSB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgR1BVTGVnYWN5RHJhd2Fi
bGUoY29uc3QgR1BVTGVnYWN5RGV2aWNlJik7CisgICAgfkdQVUxlZ2FjeURyYXdhYmxlKCk7CisK
KyAgICB2b2lkIHJlbGVhc2UoKTsKKworI2lmIFVTRShNRVRBTCkKKyAgICBNVExEcmF3YWJsZSAq
bWV0YWwoKSBjb25zdDsKKworICAgIC8vIEZJWE1FOiBXZWJNZXRhbCAtIG5vdCBhbGwgZHJhd2Fi
bGVzIHNob3VsZCBoYXZlIHRoaXMuIE9ubHkgdGhlIGZyYW1lYnVmZmVyLgorICAgIE1UTFRleHR1
cmUgKnRleHR1cmUoKSBjb25zdDsKKyNlbmRpZgorCisjaWYgVVNFKE1FVEFMKQorcHJpdmF0ZToK
KyAgICBSZXRhaW5QdHI8TVRMRHJhd2FibGU+IG1fbWV0YWw7CisjZW5kaWYKK307CisgICAgCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvR1BVTGVnYWN5RW51bXMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvR1BVTGVnYWN5RW51bXMuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xMWUxOGQ0MjMwMzUwYzhjZjU5MTg5YjQ0ZTAxMmZlOTIzMTM5OTEzCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9H
UFVMZWdhY3lFbnVtcy5oCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJNRVRB
TCkKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitlbnVtIGNsYXNzIEdQVUxlZ2FjeUNvbXBhcmVG
dW5jdGlvbiB7CisgICAgTmV2ZXIgPSAwLAorICAgIExlc3MgPSAxLAorICAgIEVxdWFsID0gMiwK
KyAgICBMZXNzRXF1YWwgPSAzLAorICAgIEdyZWF0ZXIgPSA0LAorICAgIE5vdEVxdWFsID0gNSwK
KyAgICBHcmVhdGVyRXF1YWwgPSA2LAorICAgIEFsd2F5cyA9IDcKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvbGVnYWN5L0dQVUxlZ2FjeUZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvR1BVTGVnYWN5RnVuY3Rpb24uY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjc0ZDU0MjU4MGFjZDdkZTAwMTY3OGYwNzQ1YjE0YzQ4NmVhMzIxZGUKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5
L0dQVUxlZ2FjeUZ1bmN0aW9uLmNwcApAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkdQVUxlZ2FjeUZ1bmN0aW9uLmgiCisKKyNpZiBFTkFCTEUoV0VCTUVUQUwpCisKKyNpbmNs
dWRlICJMb2dnaW5nLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworR1BVTGVnYWN5RnVuY3Rp
b246On5HUFVMZWdhY3lGdW5jdGlvbigpCit7CisgICAgTE9HKFdlYk1ldGFsLCAiR1BVTGVnYWN5
RnVuY3Rpb246On5HUFVMZWdhY3lGdW5jdGlvbigpIik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvbGVnYWN5L0dQVUxlZ2FjeUZ1bmN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L0dQVUxlZ2FjeUZ1bmN0aW9uLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NWY5NjkwYzU3OGFjNmExZWY2NzQ1MzgxOGE3NzRhZDhkN2I1NmQwMQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvR1BVTGVnYWN5
RnVuY3Rpb24uaApAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCTUVUQUwpCisK
KyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK09CSkNfUFJPVE9DT0woTVRMRnVuY3Rpb24p
OworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEdQVUxlZ2FjeUxpYnJhcnk7CisKK2Ns
YXNzIEdQVUxlZ2FjeUZ1bmN0aW9uIHsKK3B1YmxpYzoKKyAgICBXRUJDT1JFX0VYUE9SVCBHUFVM
ZWdhY3lGdW5jdGlvbihjb25zdCBHUFVMZWdhY3lMaWJyYXJ5JiwgY29uc3QgU3RyaW5nJiBuYW1l
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB+R1BVTGVnYWN5RnVuY3Rpb24oKTsKKworICAgIGJvb2wg
b3BlcmF0b3IhKCkgY29uc3Q7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgbmFtZSgpIGNv
bnN0OworCisjaWYgVVNFKE1FVEFMKQorICAgIE1UTEZ1bmN0aW9uICptZXRhbCgpIGNvbnN0IHsg
cmV0dXJuIG1fbWV0YWwuZ2V0KCk7IH0KKyNlbmRpZgorCisjaWYgVVNFKE1FVEFMKQorcHJpdmF0
ZToKKyAgICBSZXRhaW5QdHI8TVRMRnVuY3Rpb24+IG1fbWV0YWw7CisjZW5kaWYKK307CisgICAg
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9HUFVMZWdhY3lMaWJyYXJ5LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvR1BVTGVnYWN5TGli
cmFyeS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMWMyYjM5NjJkNzg1ZmUyNTAzOWVkZmM0MDQ1ZDUxNTA0NGZl
MjdhMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9sZWdhY3kvR1BVTGVnYWN5TGlicmFyeS5jcHAKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJHUFVMZWdhY3lMaWJyYXJ5LmgiCisKKyNpZiBFTkFCTEUoV0VCTUVUQUwp
CisKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworR1BVTGVn
YWN5TGlicmFyeTo6fkdQVUxlZ2FjeUxpYnJhcnkoKQoreworICAgIExPRyhXZWJNZXRhbCwgIkdQ
VUxlZ2FjeUxpYnJhcnk6On5HUFVMZWdhY3lMaWJyYXJ5KCkiKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9sZWdhY3kvR1BVTGVnYWN5TGlicmFyeS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9HUFVMZWdhY3lMaWJyYXJ5LmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMTUwZGYzMTIyYmIyMDI1ZDEwOWU0NjRkYjEwMGYyZDdiOTY4YTZiMwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvR1BVTGVn
YWN5TGlicmFyeS5oCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJNRVRBTCkK
KworI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworT0JKQ19QUk9UT0NPTChNVExMaWJyYXJ5
KTsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBHUFVMZWdhY3lEZXZpY2U7CisKK2Ns
YXNzIEdQVUxlZ2FjeUxpYnJhcnkgeworcHVibGljOgorICAgIFdFQkNPUkVfRVhQT1JUIEdQVUxl
Z2FjeUxpYnJhcnkoY29uc3QgR1BVTGVnYWN5RGV2aWNlJiwgY29uc3QgU3RyaW5nJiBzb3VyY2VD
b2RlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB+R1BVTGVnYWN5TGlicmFyeSgpOworCisgICAgV0VC
Q09SRV9FWFBPUlQgU3RyaW5nIGxhYmVsKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXRMYWJlbChjb25zdCBTdHJpbmcmKSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIFZl
Y3RvcjxTdHJpbmc+IGZ1bmN0aW9uTmFtZXMoKSBjb25zdDsKKworI2lmIFVTRShNRVRBTCkKKyAg
ICBNVExMaWJyYXJ5ICptZXRhbCgpIGNvbnN0IHsgcmV0dXJuIG1fbWV0YWwuZ2V0KCk7IH0KKyNl
bmRpZgorCisjaWYgVVNFKE1FVEFMKQorcHJpdmF0ZToKKyAgICBSZXRhaW5QdHI8TVRMTGlicmFy
eT4gbV9tZXRhbDsKKyNlbmRpZgorfTsKKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
bGVnYWN5L0dQVUxlZ2FjeVJlbmRlckNvbW1hbmRFbmNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvR1BVTGVnYWN5UmVuZGVyQ29tbWFuZEVuY29k
ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmEzZTc0ODc1ZDdhOWJhMjlmMmIxMDE4OGVmMWU4ZTFmMDgxMTZj
OTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvbGVnYWN5L0dQVUxlZ2FjeVJlbmRlckNvbW1hbmRFbmNvZGVyLmNwcApAQCAtMCwwICsxLDQy
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdQVUxlZ2FjeVJlbmRlckNvbW1hbmRFbmNvZGVyLmgi
CisKKyNpZiBFTkFCTEUoV0VCTUVUQUwpCisKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworR1BVTGVnYWN5UmVuZGVyQ29tbWFuZEVuY29kZXI6On5HUFVMZWdh
Y3lSZW5kZXJDb21tYW5kRW5jb2RlcigpCit7CisgICAgTE9HKFdlYk1ldGFsLCAiR1BVTGVnYWN5
UmVuZGVyQ29tbWFuZEVuY29kZXI6On5HUFVMZWdhY3lSZW5kZXJDb21tYW5kRW5jb2RlcigpIik7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L0dQVUxlZ2FjeVJlbmRlckNv
bW1hbmRFbmNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVn
YWN5L0dQVUxlZ2FjeVJlbmRlckNvbW1hbmRFbmNvZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmNlNjFlMDM3
NWI1MjNjNjBhMDAxMDA3MGI1NTNiY2Y1ZDMwMDQ1NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvR1BVTGVnYWN5UmVuZGVyQ29t
bWFuZEVuY29kZXIuaApAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCTUVUQUwp
CisKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK09CSkNfUFJPVE9DT0woTVRMUmVuZGVy
Q29tbWFuZEVuY29kZXIpOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEdQVUxlZ2Fj
eUJ1ZmZlcjsKK2NsYXNzIEdQVUxlZ2FjeUNvbW1hbmRCdWZmZXI7CitjbGFzcyBHUFVMZWdhY3lE
ZXB0aFN0ZW5jaWxTdGF0ZTsKK2NsYXNzIEdQVUxlZ2FjeVJlbmRlclBhc3NEZXNjcmlwdG9yOwor
Y2xhc3MgR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVTdGF0ZTsKKworY2xhc3MgR1BVTGVnYWN5UmVu
ZGVyQ29tbWFuZEVuY29kZXIgeworcHVibGljOgorICAgIEdQVUxlZ2FjeVJlbmRlckNvbW1hbmRF
bmNvZGVyKGNvbnN0IEdQVUxlZ2FjeUNvbW1hbmRCdWZmZXImLCBjb25zdCBHUFVMZWdhY3lSZW5k
ZXJQYXNzRGVzY3JpcHRvciYpOworICAgIH5HUFVMZWdhY3lSZW5kZXJDb21tYW5kRW5jb2Rlcigp
OworCisgICAgdm9pZCBzZXRSZW5kZXJQaXBlbGluZVN0YXRlKGNvbnN0IEdQVUxlZ2FjeVJlbmRl
clBpcGVsaW5lU3RhdGUmKSBjb25zdDsKKyAgICB2b2lkIHNldERlcHRoU3RlbmNpbFN0YXRlKGNv
bnN0IEdQVUxlZ2FjeURlcHRoU3RlbmNpbFN0YXRlJikgY29uc3Q7CisgICAgdm9pZCBzZXRWZXJ0
ZXhCdWZmZXIoY29uc3QgR1BVTGVnYWN5QnVmZmVyJiwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25l
ZCBpbmRleCkgY29uc3Q7CisgICAgdm9pZCBzZXRGcmFnbWVudEJ1ZmZlcihjb25zdCBHUFVMZWdh
Y3lCdWZmZXImLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGluZGV4KSBjb25zdDsKKyAgICB2
b2lkIGRyYXdQcmltaXRpdmVzKHVuc2lnbmVkIHR5cGUsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25l
ZCBjb3VudCkgY29uc3Q7CisgICAgdm9pZCBlbmRFbmNvZGluZygpIGNvbnN0OworCisjaWYgVVNF
KE1FVEFMKQorcHJpdmF0ZToKKyAgICBSZXRhaW5QdHI8TVRMUmVuZGVyQ29tbWFuZEVuY29kZXI+
IG1fbWV0YWw7CisjZW5kaWYKK307CisgICAgCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xl
Z2FjeS9HUFVMZWdhY3lSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9HUFVMZWdhY3lSZW5kZXJQYXNz
QXR0YWNobWVudERlc2NyaXB0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjljYWY1ODEwN2MzZTNkYTAxMjhj
ZmMwODM4ODkxODk5YTM1ZmNlYWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L0dQVUxlZ2FjeVJlbmRlclBhc3NBdHRhY2htZW50
RGVzY3JpcHRvci5jcHAKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHUFVM
ZWdhY3lSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuaCIKKworI2lmIEVOQUJMRShXRUJN
RVRBTCkKKworI2luY2x1ZGUgIkdQVUxlZ2FjeVRleHR1cmUuaCIKKyNpbmNsdWRlICJMb2dnaW5n
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworR1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1l
bnREZXNjcmlwdG9yOjp+R1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yKCkK
K3sKKyAgICBMT0coV2ViTWV0YWwsICJHUFVMZWdhY3lSZW5kZXJQYXNzQXR0YWNobWVudERlc2Ny
aXB0b3I6On5HUFVMZWdhY3lSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IoKSIpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9HUFVMZWdhY3lSZW5kZXJQYXNzQXR0
YWNobWVudERlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9sZWdhY3kvR1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZjIzYzc1MGQ0YjMxMWE0ZWEyOTUyZDk3YzczZjg4MTA0MmQ0MDk3YgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvR1BV
TGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmgKQEAgLTAsMCArMSw2NSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgRU5BQkxFKFdFQk1FVEFMKQorCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgor
CitPQkpDX0NMQVNTIE1UTFJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjsKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBHUFVMZWdhY3lUZXh0dXJlOworCitjbGFzcyBHUFVMZWdh
Y3lSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IgeworcHVibGljOgorICAgIH5HUFVMZWdh
Y3lSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IoKTsKKworICAgIHVuc2lnbmVkIGxvYWRB
Y3Rpb24oKSBjb25zdDsKKyAgICB2b2lkIHNldExvYWRBY3Rpb24odW5zaWduZWQpIGNvbnN0Owor
CisgICAgdW5zaWduZWQgc3RvcmVBY3Rpb24oKSBjb25zdDsKKyAgICB2b2lkIHNldFN0b3JlQWN0
aW9uKHVuc2lnbmVkKSBjb25zdDsKKworICAgIHZvaWQgc2V0VGV4dHVyZShjb25zdCBHUFVMZWdh
Y3lUZXh0dXJlJikgY29uc3Q7CisKKyNpZiBVU0UoTUVUQUwpCisgICAgTVRMUmVuZGVyUGFzc0F0
dGFjaG1lbnREZXNjcmlwdG9yICptZXRhbCgpIGNvbnN0OworI2VuZGlmCisKKyNpZiBVU0UoTUVU
QUwpCitwcm90ZWN0ZWQ6CisgICAgZXhwbGljaXQgR1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1l
bnREZXNjcmlwdG9yKE1UTFJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvciAqKTsKKworcHJp
dmF0ZToKKyAgICBSZXRhaW5QdHI8TVRMUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yPiBt
X21ldGFsOworI2VuZGlmCit9OworICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdh
Y3kvR1BVTGVnYWN5UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9HUFVMZWdhY3lSZW5kZXJQ
YXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2E4MmU5NGQwODM2
MjkzMjU1NTIxYWUwYzRlOTRmNThmZjVhZWQ1YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvR1BVTGVnYWN5UmVuZGVyUGFzc0Nv
bG9yQXR0YWNobWVudERlc2NyaXB0b3IuY3BwCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiR1BVTGVnYWN5UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaCIK
KworI2lmIEVOQUJMRShXRUJNRVRBTCkKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitHUFVMZWdhY3lSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3Jp
cHRvcjo6fkdQVUxlZ2FjeVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKCkKK3sK
KyAgICBMT0coV2ViTWV0YWwsICJHUFVMZWdhY3lSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVz
Y3JpcHRvcjo6fkdQVUxlZ2FjeVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKCki
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvR1BVTGVnYWN5UmVuZGVy
UGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9sZWdhY3kvR1BVTGVnYWN5UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERl
c2NyaXB0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lN2U4NDFjOTFiZDI0NzNiMWM5N2ZkMjJlODUyNjY5MTBi
Zjk3MzRmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L2xlZ2FjeS9HUFVMZWdhY3lSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRv
ci5oCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJNRVRBTCkKKworI2luY2x1
ZGUgIkdQVUxlZ2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5oIgorCitPQkpDX0NM
QVNTIE1UTFJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOworCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIEdQVUxlZ2FjeVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNj
cmlwdG9yIDogcHVibGljIEdQVUxlZ2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvciB7
CitwdWJsaWM6CisjaWYgVVNFKE1FVEFMKQorICAgIEdQVUxlZ2FjeVJlbmRlclBhc3NDb2xvckF0
dGFjaG1lbnREZXNjcmlwdG9yKE1UTFJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9y
ICopOworI2VuZGlmCisgICAgfkdQVUxlZ2FjeVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNj
cmlwdG9yKCk7CisKKyAgICBWZWN0b3I8ZmxvYXQ+IGNsZWFyQ29sb3IoKSBjb25zdDsKKyAgICB2
b2lkIHNldENsZWFyQ29sb3IoY29uc3QgVmVjdG9yPGZsb2F0PiYpIGNvbnN0OworCisjaWYgVVNF
KE1FVEFMKQorICAgIE1UTFJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yICptZXRh
bCgpIGNvbnN0OworI2VuZGlmCit9OworICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9s
ZWdhY3kvR1BVTGVnYWN5UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9HUFVMZWdhY3lSZW5k
ZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWU5YThiNzNi
M2U2OTg5YmM2NmIzZDM1NTZiMDcxMDMxMDFiMmJlYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvR1BVTGVnYWN5UmVuZGVyUGFz
c0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IuY3BwCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiR1BVTGVnYWN5UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3Iu
aCIKKworI2lmIEVOQUJMRShXRUJNRVRBTCkKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitHUFVMZWdhY3lSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVz
Y3JpcHRvcjo6fkdQVUxlZ2FjeVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yKCkK
K3sKKyAgICBMT0coV2ViTWV0YWwsICJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3Jp
cHRvcjo6fkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yKCkiKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvR1BVTGVnYWN5UmVuZGVyUGFzc0RlcHRo
QXR0YWNobWVudERlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9sZWdhY3kvR1BVTGVnYWN5UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3Iu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yNmMxYWY3OTA1M2U2YzFmNjU2NzVlYzg4MWVjYjZjMjg5NTdjOGQwCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xl
Z2FjeS9HUFVMZWdhY3lSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5oCkBAIC0w
LDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJNRVRBTCkKKworI2luY2x1ZGUgIkdQVUxl
Z2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5oIgorCitPQkpDX0NMQVNTIE1UTFJl
bmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yOworCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIEdQVUxlZ2FjeVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yIDog
cHVibGljIEdQVUxlZ2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvciB7CitwdWJsaWM6
CisjaWYgVVNFKE1FVEFMKQorICAgIEdQVUxlZ2FjeVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnRE
ZXNjcmlwdG9yKE1UTFJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yICopOworI2Vu
ZGlmCisgICAgfkdQVUxlZ2FjeVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yKCk7
CisKKyAgICBkb3VibGUgY2xlYXJEZXB0aCgpIGNvbnN0OworICAgIHZvaWQgc2V0Q2xlYXJEZXB0
aChkb3VibGUpIGNvbnN0OworCisjaWYgVVNFKE1FVEFMKQorcHJpdmF0ZToKKyAgICBNVExSZW5k
ZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvciAqbWV0YWwoKSBjb25zdDsKKyNlbmRpZgor
fTsKKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L0dQVUxlZ2FjeVJlbmRl
clBhc3NEZXNjcmlwdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9sZWdhY3kvR1BVTGVnYWN5UmVuZGVyUGFzc0Rlc2NyaXB0b3IuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU2
MzZhN2I3MjNlZDQxMjdlZDUzNGUwM2NmNTE3OWE5ZTIyYTIxYmYKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L0dQVUxlZ2FjeVJl
bmRlclBhc3NEZXNjcmlwdG9yLmNwcApAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkdQVUxlZ2FjeVJlbmRlclBhc3NEZXNjcmlwdG9yLmgiCisKKyNpZiBFTkFCTEUoV0VCTUVU
QUwpCisKKyNpbmNsdWRlICJHUFVMZWdhY3lSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3Jp
cHRvci5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitH
UFVMZWdhY3lSZW5kZXJQYXNzRGVzY3JpcHRvcjo6fkdQVUxlZ2FjeVJlbmRlclBhc3NEZXNjcmlw
dG9yKCkKK3sKKyAgICBMT0coV2ViTWV0YWwsICJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvcjo6fkdQ
VVJlbmRlclBhc3NEZXNjcmlwdG9yKCkiKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9sZWdhY3kvR1BVTGVnYWN5UmVuZGVyUGFzc0Rlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvR1BVTGVnYWN5UmVuZGVyUGFzc0Rlc2NyaXB0
b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42YWU4MTY5MGJlZTFjMjE3NjIwM2E1OTJhZDIyNjcxZmI0ZTRjOGU5
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L2xlZ2FjeS9HUFVMZWdhY3lSZW5kZXJQYXNzRGVzY3JpcHRvci5oCkBAIC0wLDAgKzEsNTkgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2lmIEVOQUJMRShXRUJNRVRBTCkKKworI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4K
KworT0JKQ19DTEFTUyBNVExSZW5kZXJQYXNzRGVzY3JpcHRvcjsKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBHUFVMZWdhY3lSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRv
cjsKK2NsYXNzIEdQVUxlZ2FjeVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yOwor
CitjbGFzcyBHUFVMZWdhY3lSZW5kZXJQYXNzRGVzY3JpcHRvciB7CitwdWJsaWM6CisgICAgR1BV
TGVnYWN5UmVuZGVyUGFzc0Rlc2NyaXB0b3IoKTsKKyAgICB+R1BVTGVnYWN5UmVuZGVyUGFzc0Rl
c2NyaXB0b3IoKTsKKworICAgIFZlY3RvcjxHUFVMZWdhY3lSZW5kZXJQYXNzQ29sb3JBdHRhY2ht
ZW50RGVzY3JpcHRvcj4gY29sb3JBdHRhY2htZW50cygpIGNvbnN0OworICAgIEdQVUxlZ2FjeVJl
bmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yIGRlcHRoQXR0YWNobWVudCgpIGNvbnN0
OworCisjaWYgVVNFKE1FVEFMKQorICAgIE1UTFJlbmRlclBhc3NEZXNjcmlwdG9yICptZXRhbCgp
IGNvbnN0OworI2VuZGlmCisKKyNpZiBVU0UoTUVUQUwpCitwcml2YXRlOgorICAgIFJldGFpblB0
cjxNVExSZW5kZXJQYXNzRGVzY3JpcHRvcj4gbV9tZXRhbDsKKyNlbmRpZgorfTsKKyAgICAKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L0dQVUxlZ2FjeVJlbmRlclBpcGVsaW5lQ29s
b3JBdHRhY2htZW50RGVzY3JpcHRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvbGVnYWN5L0dQVUxlZ2FjeVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVz
Y3JpcHRvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYThlNmUxMjJhMzVjMjg3MjEyNzRmOGJjZDVmNDNiNDY3
NTZhM2ZlOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9sZWdhY3kvR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNj
cmlwdG9yLmNwcApAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdQVUxlZ2Fj
eVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oIgorCisjaWYgRU5BQkxF
KFdFQk1FVEFMKQorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK0dQVUxlZ2FjeVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6fkdQ
VUxlZ2FjeVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcigpCit7CisgICAg
TE9HKFdlYk1ldGFsLCAiR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNj
cmlwdG9yOjp+R1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9y
KCkiKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvR1BVTGVnYWN5UmVu
ZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L0dQVUxlZ2FjeVJlbmRlclBpcGVsaW5lQ29sb3JB
dHRhY2htZW50RGVzY3JpcHRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQyYzYwMzQ2ODYzNzNkMTI5MDJkYjYy
OTIwNzcwYmZiMDFjMWM1ZDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L0dQVUxlZ2FjeVJlbmRlclBpcGVsaW5lQ29sb3JBdHRh
Y2htZW50RGVzY3JpcHRvci5oCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJN
RVRBTCkKKworI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworT0JKQ19DTEFTUyBNVExSZW5k
ZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I7CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlw
dG9yIHsKK3B1YmxpYzoKKyNpZiBVU0UoTUVUQUwpCisgICAgR1BVTGVnYWN5UmVuZGVyUGlwZWxp
bmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKE1UTFJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2ht
ZW50RGVzY3JpcHRvciAqKTsKKyNlbmRpZgorICAgIH5HUFVMZWdhY3lSZW5kZXJQaXBlbGluZUNv
bG9yQXR0YWNobWVudERlc2NyaXB0b3IoKTsKKworICAgIHVuc2lnbmVkIHBpeGVsRm9ybWF0KCkg
Y29uc3Q7CisgICAgdm9pZCBzZXRQaXhlbEZvcm1hdCh1bnNpZ25lZCkgY29uc3Q7CisKKyNpZiBV
U0UoTUVUQUwpCisgICAgTVRMUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9y
ICptZXRhbCgpIGNvbnN0OworI2VuZGlmCisKKyNpZiBVU0UoTUVUQUwpCitwcml2YXRlOgorICAg
IFJldGFpblB0cjxNVExSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I+IG1f
bWV0YWw7CisjZW5kaWYKK307CisgICAgCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2Fj
eS9HUFVMZWdhY3lSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9HUFVMZWdhY3lSZW5kZXJQaXBlbGluZURlc2Ny
aXB0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNkMWZkNjBjM2Y1YWI4YmI4NjYwOWJjMjc1ZTAxOTJhNTI1
YmE2YjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvbGVnYWN5L0dQVUxlZ2FjeVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5jcHAKQEAgLTAs
MCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHUFVMZWdhY3lSZW5kZXJQaXBlbGluZURl
c2NyaXB0b3IuaCIKKworI2lmIEVOQUJMRShXRUJNRVRBTCkKKworI2luY2x1ZGUgIkxvZ2dpbmcu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitHUFVMZWdhY3lSZW5kZXJQaXBlbGluZURlc2Ny
aXB0b3I6On5HUFVMZWdhY3lSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IoKQoreworICAgIExPRyhX
ZWJNZXRhbCwgIkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6fkdQVVJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvcigpIik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L0dQ
VUxlZ2FjeVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9HUFVMZWdhY3lSZW5kZXJQaXBlbGluZURlc2NyaXB0b3Iu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5lYzA5MDdlODFmMGQxYzM0OTI0MmVkNWY4MjllM2VlMzNjODg5ZGYyCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xl
Z2FjeS9HUFVMZWdhY3lSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaApAQCAtMCwwICsxLDY2IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpZiBFTkFCTEUoV0VCTUVUQUwpCisKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+
CisKK09CSkNfQ0xBU1MgTVRMUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOworCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIEdQVUxlZ2FjeUZ1bmN0aW9uOworY2xhc3MgR1BVTGVnYWN5UmVu
ZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOworCitjbGFzcyBHUFVMZWdhY3lS
ZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgeworcHVibGljOgorICAgIEdQVUxlZ2FjeVJlbmRlclBp
cGVsaW5lRGVzY3JpcHRvcigpOworICAgIH5HUFVMZWdhY3lSZW5kZXJQaXBlbGluZURlc2NyaXB0
b3IoKTsKKworICAgIHZvaWQgc2V0VmVydGV4RnVuY3Rpb24oY29uc3QgR1BVTGVnYWN5RnVuY3Rp
b24mKSBjb25zdDsKKyAgICB2b2lkIHNldEZyYWdtZW50RnVuY3Rpb24oY29uc3QgR1BVTGVnYWN5
RnVuY3Rpb24mKSBjb25zdDsKKworICAgIHVuc2lnbmVkIGRlcHRoQXR0YWNobWVudFBpeGVsRm9y
bWF0KCkgY29uc3Q7CisgICAgdm9pZCBzZXREZXB0aEF0dGFjaG1lbnRQaXhlbEZvcm1hdCh1bnNp
Z25lZCkgY29uc3Q7CisKKyAgICBWZWN0b3I8R1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVDb2xvckF0
dGFjaG1lbnREZXNjcmlwdG9yPiBjb2xvckF0dGFjaG1lbnRzKCkgY29uc3Q7CisKKyAgICB2b2lk
IHJlc2V0KCkgY29uc3Q7CisKKyNpZiBVU0UoTUVUQUwpCisgICAgTVRMUmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yICptZXRhbCgpIGNvbnN0OworI2VuZGlmCisKKyNpZiBVU0UoTUVUQUwpCitwcml2
YXRlOgorICAgIFJldGFpblB0cjxNVExSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I+IG1fbWV0YWw7
CisjZW5kaWYKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L0dQVUxlZ2Fj
eVJlbmRlclBpcGVsaW5lU3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L2xlZ2FjeS9HUFVMZWdhY3lSZW5kZXJQaXBlbGluZVN0YXRlLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xZTRmOWM2ZDgwOTU4M2E0NzI0MzJhMWI2NjJkYjgzYzcwZmQxYTA0Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9HUFVMZWdh
Y3lSZW5kZXJQaXBlbGluZVN0YXRlLmNwcApAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lU3RhdGUuaCIKKworI2lmIEVOQUJMRShXRUJN
RVRBTCkKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitH
UFVMZWdhY3lSZW5kZXJQaXBlbGluZVN0YXRlOjp+R1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVTdGF0
ZSgpCit7CisgICAgTE9HKFdlYk1ldGFsLCAiR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVTdGF0ZTo6
fkdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lU3RhdGUoKSIpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L2xlZ2FjeS9HUFVMZWdhY3lSZW5kZXJQaXBlbGluZVN0YXRlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L0dQVUxlZ2FjeVJlbmRlclBpcGVs
aW5lU3RhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYTA5ZTZhNDhhMzQ4OGE0ZTliYTI1ZmFmMjhlZTI3NzM4
OGM1MDQ1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L2xlZ2FjeS9HUFVMZWdhY3lSZW5kZXJQaXBlbGluZVN0YXRlLmgKQEAgLTAsMCArMSw2
MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCTUVUQUwpCisKKyNpbmNsdWRlIDx3dGYvUmV0
YWluUHRyLmg+CisKK09CSkNfUFJPVE9DT0woTVRMUmVuZGVyUGlwZWxpbmVTdGF0ZSk7CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgR1BVTGVnYWN5RGV2aWNlOworY2xhc3MgR1BVTGVn
YWN5UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOworCitjbGFzcyBHUFVMZWdhY3lSZW5kZXJQaXBl
bGluZVN0YXRlIHsKK3B1YmxpYzoKKyAgICBHUFVMZWdhY3lSZW5kZXJQaXBlbGluZVN0YXRlKCkg
PSBkZWZhdWx0OworICAgIEdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lU3RhdGUoY29uc3QgR1BVTGVn
YWN5RGV2aWNlJiwgY29uc3QgR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yJik7Cisg
ICAgfkdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lU3RhdGUoKTsKKworICAgIFN0cmluZyBsYWJlbCgp
IGNvbnN0OworICAgIHZvaWQgc2V0TGFiZWwoY29uc3QgU3RyaW5nJikgY29uc3Q7CisKKyNpZiBV
U0UoTUVUQUwpCisgICAgTVRMUmVuZGVyUGlwZWxpbmVTdGF0ZSAqbWV0YWwoKSBjb25zdDsKKyNl
bmRpZgorCisjaWYgVVNFKE1FVEFMKQorcHJpdmF0ZToKKyAgICBSZXRhaW5QdHI8TVRMUmVuZGVy
UGlwZWxpbmVTdGF0ZT4gbV9tZXRhbDsKKyNlbmRpZgorfTsKKyAgICAKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvbGVnYWN5L0dQVUxlZ2FjeVNpemUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvR1BVTGVnYWN5U2l6ZS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI5MGNl
YTM1MWZiOWQ2YTM4Y2FiMzY0Y2NjZTk3MWFkZTI4NDMyZmMKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L0dQVUxlZ2FjeVNpemUu
aApAQCAtMCwwICsxLDQwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IFl1aWNoaXJvIEtp
a3VyYSAoeS5raWt1cmFAZ21haWwuY29tKQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJNRVRBTCkKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworICAgIAorc3RydWN0IEdQVUxlZ2FjeVNpemUgeworICAgIHVuc2ln
bmVkIHdpZHRoOworICAgIHVuc2lnbmVkIGhlaWdodDsKKyAgICB1bnNpZ25lZCBkZXB0aDsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L0dQVUxlZ2FjeVRleHR1cmUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9HUFVMZWdhY3lU
ZXh0dXJlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZDljYzJjODk0MWZhNzRhNmY3N2JkMjUxODc1ZTY5ZmU5
OTA1MzQyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L2xlZ2FjeS9HUFVMZWdhY3lUZXh0dXJlLmNwcApAQCAtMCwwICsxLDQyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkdQVUxlZ2FjeVRleHR1cmUuaCIKKworI2lmIEVOQUJMRShXRUJNRVRB
TCkKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitHUFVM
ZWdhY3lUZXh0dXJlOjp+R1BVTGVnYWN5VGV4dHVyZSgpCit7CisgICAgTE9HKFdlYk1ldGFsLCAi
R1BVTGVnYWN5VGV4dHVyZTo6fkdQVUxlZ2FjeVRleHR1cmUoKSIpOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9HUFVMZWdhY3lUZXh0dXJlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L0dQVUxlZ2FjeVRleHR1cmUuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5jZWZlYzJlMjA3NmUxZmI3ODAzMmVlOWU3ODAyNWEyNzBhZjkwNDFkCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9HUFVM
ZWdhY3lUZXh0dXJlLmgKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQk1FVEFM
KQorCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCitPQkpDX1BST1RPQ09MKE1UTFRleHR1
cmUpOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEdQVUxlZ2FjeURldmljZTsKK2Ns
YXNzIEdQVUxlZ2FjeURyYXdhYmxlOworY2xhc3MgR1BVTGVnYWN5VGV4dHVyZURlc2NyaXB0b3I7
CisKK2NsYXNzIEdQVUxlZ2FjeVRleHR1cmUgeworcHVibGljOgorICAgIEdQVUxlZ2FjeVRleHR1
cmUoY29uc3QgR1BVTGVnYWN5RGV2aWNlJiwgY29uc3QgR1BVTGVnYWN5VGV4dHVyZURlc2NyaXB0
b3ImKTsKKyAgICBleHBsaWNpdCBHUFVMZWdhY3lUZXh0dXJlKGNvbnN0IEdQVUxlZ2FjeURyYXdh
YmxlJik7CisgICAgfkdQVUxlZ2FjeVRleHR1cmUoKTsKKworICAgIHVuc2lnbmVkIHdpZHRoKCkg
Y29uc3Q7CisgICAgdW5zaWduZWQgaGVpZ2h0KCkgY29uc3Q7CisKKyNpZiBVU0UoTUVUQUwpCisg
ICAgTVRMVGV4dHVyZSAqbWV0YWwoKSBjb25zdDsKKyNlbmRpZgorCisjaWYgVVNFKE1FVEFMKQor
cHJpdmF0ZToKKyAgICBSZXRhaW5QdHI8TVRMVGV4dHVyZT4gbV9tZXRhbDsKKyNlbmRpZgorfTsK
KyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L0dQVUxlZ2FjeVRleHR1cmVE
ZXNjcmlwdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdh
Y3kvR1BVTGVnYWN5VGV4dHVyZURlc2NyaXB0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY5YmI1MDY5MjQx
NWRlMzJjYTA2ZTQ1YjI2OWJiOTQ4NjExOGZkYWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L0dQVUxlZ2FjeVRleHR1cmVEZXNj
cmlwdG9yLmNwcApAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdQVUxlZ2Fj
eVRleHR1cmVEZXNjcmlwdG9yLmgiCisKKyNpZiBFTkFCTEUoV0VCTUVUQUwpCisKKyNpbmNsdWRl
ICJMb2dnaW5nLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworR1BVTGVnYWN5VGV4dHVyZURl
c2NyaXB0b3I6On5HUFVMZWdhY3lUZXh0dXJlRGVzY3JpcHRvcigpCit7CisgICAgTE9HKFdlYk1l
dGFsLCAiR1BVVGV4dHVyZURlc2NyaXB0b3I6On5HUFVUZXh0dXJlRGVzY3JpcHRvcigpIik7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L0dQVUxlZ2FjeVRleHR1cmVEZXNj
cmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L0dQ
VUxlZ2FjeVRleHR1cmVEZXNjcmlwdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODY0Nzk3M2U5MzJhNDhiNjIw
NzUwODY3MWMzYTg1MTZhYTI2ZjIyMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvR1BVTGVnYWN5VGV4dHVyZURlc2NyaXB0b3Iu
aApAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCTUVUQUwpCisKKyNpbmNsdWRl
IDx3dGYvUmV0YWluUHRyLmg+CisKK09CSkNfQ0xBU1MgTVRMVGV4dHVyZURlc2NyaXB0b3I7CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgR1BVTGVnYWN5VGV4dHVyZURlc2NyaXB0b3Ig
eworcHVibGljOgorICAgIEdQVUxlZ2FjeVRleHR1cmVEZXNjcmlwdG9yKHVuc2lnbmVkIHBpeGVs
Rm9ybWF0LCB1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0LCBib29sIG1pcG1hcHBlZCk7
CisgICAgfkdQVUxlZ2FjeVRleHR1cmVEZXNjcmlwdG9yKCk7CisKKyAgICB1bnNpZ25lZCB3aWR0
aCgpIGNvbnN0OworICAgIHZvaWQgc2V0V2lkdGgodW5zaWduZWQpIGNvbnN0OworCisgICAgdW5z
aWduZWQgaGVpZ2h0KCkgY29uc3Q7CisgICAgdm9pZCBzZXRIZWlnaHQodW5zaWduZWQpIGNvbnN0
OworCisgICAgdW5zaWduZWQgc2FtcGxlQ291bnQoKSBjb25zdDsKKyAgICB2b2lkIHNldFNhbXBs
ZUNvdW50KHVuc2lnbmVkKSBjb25zdDsKKworICAgIHVuc2lnbmVkIHRleHR1cmVUeXBlKCkgY29u
c3Q7CisgICAgdm9pZCBzZXRUZXh0dXJlVHlwZSh1bnNpZ25lZCkgY29uc3Q7CisKKyAgICB1bnNp
Z25lZCBzdG9yYWdlTW9kZSgpIGNvbnN0OworICAgIHZvaWQgc2V0U3RvcmFnZU1vZGUodW5zaWdu
ZWQpIGNvbnN0OworCisgICAgdW5zaWduZWQgdXNhZ2UoKSBjb25zdDsKKyAgICB2b2lkIHNldFVz
YWdlKHVuc2lnbmVkKSBjb25zdDsKKworI2lmIFVTRShNRVRBTCkKKyAgICBNVExUZXh0dXJlRGVz
Y3JpcHRvciAqbWV0YWwoKSBjb25zdDsKKyNlbmRpZgorCisjaWYgVVNFKE1FVEFMKQorcHJpdmF0
ZToKKyAgICBSZXRhaW5QdHI8TVRMVGV4dHVyZURlc2NyaXB0b3I+IG1fbWV0YWw7CisjZW5kaWYK
K307CisgICAgCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvY29jb2EvR1BVTGVnYWN5
QnVmZmVyTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVn
YWN5L2NvY29hL0dQVUxlZ2FjeUJ1ZmZlck1ldGFsLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNhNjI2MDkxNWEy
ZDJmOTFlNTM3ZTdkODU0NGU1YTc1YThjZGQ0ODkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L2NvY29hL0dQVUxlZ2FjeUJ1ZmZl
ck1ldGFsLm1tCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkdQVUxlZ2FjeUJ1
ZmZlci5oIgorCisjaWYgRU5BQkxFKFdFQk1FVEFMKQorCisjaW1wb3J0ICJHUFVMZWdhY3lEZXZp
Y2UuaCIKKyNpbXBvcnQgIkxvZ2dpbmcuaCIKKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0FycmF5
QnVmZmVyVmlldy5oPgorI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KKyNpbXBvcnQgPHd0Zi9HaWdh
Y2FnZS5oPgorI2ltcG9ydCA8d3RmL1BhZ2VCbG9jay5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK0dQVUxlZ2FjeUJ1ZmZlcjo6R1BVTGVnYWN5QnVmZmVyKGNvbnN0IEdQVUxlZ2FjeURldmlj
ZSYgZGV2aWNlLCBjb25zdCBKU0M6OkFycmF5QnVmZmVyVmlldyYgZGF0YSkKK3sKKyAgICBMT0co
V2ViTWV0YWwsICJHUFVMZWdhY3lCdWZmZXI6OkdQVUxlZ2FjeUJ1ZmZlcigpIik7CisKKyAgICBp
ZiAoIWRldmljZS5tZXRhbCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBzaXplX3QgcGFnZVNp
emUgPSBXVEY6OnBhZ2VTaXplKCk7CisgICAgc2l6ZV90IHBhZ2VBbGlnbmVkU2l6ZSA9IHJvdW5k
VXBUb011bHRpcGxlT2YocGFnZVNpemUsIGRhdGEuYnl0ZUxlbmd0aCgpKTsKKyAgICB2b2lkKiBw
YWdlQWxpZ25lZENvcHkgPSBHaWdhY2FnZTo6dHJ5QWxpZ25lZE1hbGxvYyhHaWdhY2FnZTo6UHJp
bWl0aXZlLCBwYWdlU2l6ZSwgcGFnZUFsaWduZWRTaXplKTsKKyAgICBpZiAoIXBhZ2VBbGlnbmVk
Q29weSkKKyAgICAgICAgcmV0dXJuOworICAgIG1lbWNweShwYWdlQWxpZ25lZENvcHksIGRhdGEu
YmFzZUFkZHJlc3MoKSwgZGF0YS5ieXRlTGVuZ3RoKCkpOworICAgIG1fY29udGVudHMgPSBBcnJh
eUJ1ZmZlcjo6Y3JlYXRlRnJvbUJ5dGVzKHBhZ2VBbGlnbmVkQ29weSwgZGF0YS5ieXRlTGVuZ3Ro
KCksIFtdICh2b2lkKiBwdHIpIHsKKyAgICAgICAgR2lnYWNhZ2U6OmFsaWduZWRGcmVlKEdpZ2Fj
YWdlOjpQcmltaXRpdmUsIHB0cik7CisgICAgfSk7CisgICAgbV9jb250ZW50cy0+cmVmKCk7Cisg
ICAgQXJyYXlCdWZmZXIqIGNhcHR1cmVkQ29udGVudHMgPSBtX2NvbnRlbnRzLmdldCgpOworICAg
IG1fbWV0YWwgPSBhZG9wdE5TKFtkZXZpY2UubWV0YWwoKSBuZXdCdWZmZXJXaXRoQnl0ZXNOb0Nv
cHk6bV9jb250ZW50cy0+ZGF0YSgpIGxlbmd0aDpwYWdlQWxpZ25lZFNpemUgb3B0aW9uczpNVExS
ZXNvdXJjZU9wdGlvbkNQVUNhY2hlTW9kZURlZmF1bHQgZGVhbGxvY2F0b3I6Xih2b2lkKiwgTlNV
SW50ZWdlcikgeworICAgICAgICBjYXB0dXJlZENvbnRlbnRzLT5kZXJlZigpOworICAgIH1dKTsK
KyAgICBpZiAoIW1fbWV0YWwpIHsKKyAgICAgICAgbV9jb250ZW50cy0+ZGVyZWYoKTsKKyAgICAg
ICAgbV9jb250ZW50cyA9IG51bGxwdHI7CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L2xlZ2FjeS9jb2NvYS9HUFVMZWdhY3lDb21tYW5kQnVmZmVyTWV0YWwubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L2NvY29hL0dQVUxlZ2FjeUNv
bW1hbmRCdWZmZXJNZXRhbC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNzM4MGU4MmUzZjU5NmRlNjM5ODBlMGRk
MzMwODUxNTE1NDQ2MDJkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9jb2NvYS9HUFVMZWdhY3lDb21tYW5kQnVmZmVyTWV0YWwu
bW0KQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiR1BVTGVnYWN5Q29tbWFuZEJ1
ZmZlci5oIgorCisjaWYgRU5BQkxFKFdFQk1FVEFMKQorCisjaW1wb3J0ICJHUFVMZWdhY3lDb21t
YW5kUXVldWUuaCIKKyNpbXBvcnQgIkdQVUxlZ2FjeURyYXdhYmxlLmgiCisjaW1wb3J0ICJMb2dn
aW5nLmgiCisjaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgorI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+
CisjaW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0dQ
VUxlZ2FjeUNvbW1hbmRCdWZmZXI6OkdQVUxlZ2FjeUNvbW1hbmRCdWZmZXIoY29uc3QgR1BVTGVn
YWN5Q29tbWFuZFF1ZXVlJiBxdWV1ZSwgRnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRlZENhbGxi
YWNrKQoreworICAgIExPRyhXZWJNZXRhbCwgIkdQVUxlZ2FjeUNvbW1hbmRCdWZmZXI6OkdQVUxl
Z2FjeUNvbW1hbmRCdWZmZXIoKSIpOworCisgICAgbV9tZXRhbCA9IFtxdWV1ZS5tZXRhbCgpIGNv
bW1hbmRCdWZmZXJdOworCisgICAgW21fbWV0YWwgYWRkQ29tcGxldGVkSGFuZGxlcjpCbG9ja1B0
cjx2b2lkIChpZDxNVExDb21tYW5kQnVmZmVyPik+Ojpmcm9tQ2FsbGFibGUoW2NvbXBsZXRlZENh
bGxiYWNrID0gV1RGTW92ZShjb21wbGV0ZWRDYWxsYmFjayldIChpZDxNVExDb21tYW5kQnVmZmVy
PikgbXV0YWJsZSB7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoV1RGTW92ZShjb21wbGV0ZWRD
YWxsYmFjaykpOworICAgIH0pLmdldCgpXTsKK30KKwordm9pZCBHUFVMZWdhY3lDb21tYW5kQnVm
ZmVyOjpwcmVzZW50RHJhd2FibGUoR1BVTGVnYWN5RHJhd2FibGUmIGRyYXdhYmxlKSBjb25zdAor
eworICAgIGlmICghbV9tZXRhbCB8fCAhZHJhd2FibGUubWV0YWwoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgW21fbWV0YWwgcHJlc2VudERyYXdhYmxlOmRyYXdhYmxlLm1ldGFsKCldOworICAg
IGRyYXdhYmxlLnJlbGVhc2UoKTsKK30KKwordm9pZCBHUFVMZWdhY3lDb21tYW5kQnVmZmVyOjpj
b21taXQoKSBjb25zdAoreworICAgIFttX21ldGFsIGNvbW1pdF07Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvbGVnYWN5L2NvY29hL0dQVUxlZ2FjeUNvbW1hbmRRdWV1ZU1ldGFsLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9jb2NvYS9HUFVM
ZWdhY3lDb21tYW5kUXVldWVNZXRhbC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNmM1NTY0NGZlZmE1NTNhNjY4
MTBjMzA0OTk3MDg4MjdmY2Y0MzdhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9jb2NvYS9HUFVMZWdhY3lDb21tYW5kUXVldWVN
ZXRhbC5tbQpAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJHUFVMZWdhY3lDb21t
YW5kUXVldWUuaCIKKworI2lmIEVOQUJMRShXRUJNRVRBTCkKKworI2ltcG9ydCAiR1BVTGVnYWN5
RGV2aWNlLmgiCisjaW1wb3J0ICJMb2dnaW5nLmgiCisjaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgor
I2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
c3RhdGljIE5TU3RyaW5nICogY29uc3QgY29tbWFuZFF1ZXVlRGVmYXVsdExhYmVsID0gQCJjb20u
YXBwbGUuV2ViS2l0IjsKK3N0YXRpYyBOU1N0cmluZyAqIGNvbnN0IGNvbW1hbmRRdWV1ZUxhYmVs
UHJlZml4ID0gQCJjb20uYXBwbGUuV2ViS2l0LiI7CisKK0dQVUxlZ2FjeUNvbW1hbmRRdWV1ZTo6
R1BVTGVnYWN5Q29tbWFuZFF1ZXVlKGNvbnN0IEdQVUxlZ2FjeURldmljZSYgZGV2aWNlKQorewor
ICAgIExPRyhXZWJNZXRhbCwgIkdQVUxlZ2FjeUNvbW1hbmRRdWV1ZTo6R1BVTGVnYWN5Q29tbWFu
ZFF1ZXVlKCkiKTsKKworICAgIG1fbWV0YWwgPSBhZG9wdE5TKFtkZXZpY2UubWV0YWwoKSBuZXdD
b21tYW5kUXVldWVdKTsKKworICAgIFttX21ldGFsIHNldExhYmVsOmNvbW1hbmRRdWV1ZURlZmF1
bHRMYWJlbF07Cit9CisKK1N0cmluZyBHUFVMZWdhY3lDb21tYW5kUXVldWU6OmxhYmVsKCkgY29u
c3QKK3sKKyAgICBpZiAoIW1fbWV0YWwpCisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwor
CisgICAgTlNTdHJpbmcgKnByZWZpeGVkTGFiZWwgPSBbbV9tZXRhbCBsYWJlbF07CisKKyAgICBp
ZiAoW3ByZWZpeGVkTGFiZWwgaXNFcXVhbFRvU3RyaW5nOmNvbW1hbmRRdWV1ZURlZmF1bHRMYWJl
bF0pCisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOworCisgICAgQVNTRVJUKHByZWZpeGVk
TGFiZWwubGVuZ3RoID4gY29tbWFuZFF1ZXVlTGFiZWxQcmVmaXgubGVuZ3RoKTsKKyAgICByZXR1
cm4gW3ByZWZpeGVkTGFiZWwgc3Vic3RyaW5nRnJvbUluZGV4OmNvbW1hbmRRdWV1ZUxhYmVsUHJl
Zml4Lmxlbmd0aF07Cit9CisKK3ZvaWQgR1BVTGVnYWN5Q29tbWFuZFF1ZXVlOjpzZXRMYWJlbChj
b25zdCBTdHJpbmcmIGxhYmVsKSBjb25zdAoreworICAgIGlmIChsYWJlbC5pc0VtcHR5KCkpCisg
ICAgICAgIFttX21ldGFsIHNldExhYmVsOmNvbW1hbmRRdWV1ZURlZmF1bHRMYWJlbF07CisgICAg
ZWxzZQorICAgICAgICBbbV9tZXRhbCBzZXRMYWJlbDpbY29tbWFuZFF1ZXVlTGFiZWxQcmVmaXgg
c3RyaW5nQnlBcHBlbmRpbmdTdHJpbmc6bGFiZWxdXTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9sZWdhY3kvY29jb2EvR1BVTGVnYWN5Q29tcHV0ZUNvbW1hbmRFbmNvZGVyTWV0YWwu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L2NvY29hL0dQ
VUxlZ2FjeUNvbXB1dGVDb21tYW5kRW5jb2Rlck1ldGFsLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIxOTUxNzUx
YzI4YzdhYTViZDJlNWYxZmVjZTYwOWRkYzBmNTY5OWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L2NvY29hL0dQVUxlZ2FjeUNv
bXB1dGVDb21tYW5kRW5jb2Rlck1ldGFsLm1tCkBAIC0wLDAgKzEsODAgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTcgWXVpY2hpcm8gS2lrdXJhICh5Lmtpa3VyYUBnbWFpbC5jb20pCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5o
IgorI2ltcG9ydCAiR1BVTGVnYWN5Q29tcHV0ZUNvbW1hbmRFbmNvZGVyLmgiCisKKyNpZiBFTkFC
TEUoV0VCTUVUQUwpCisKKyNpbXBvcnQgIkdQVUxlZ2FjeUJ1ZmZlci5oIgorI2ltcG9ydCAiR1BV
TGVnYWN5Q29tbWFuZEJ1ZmZlci5oIgorI2ltcG9ydCAiR1BVTGVnYWN5Q29tcHV0ZVBpcGVsaW5l
U3RhdGUuaCIKKyNpbXBvcnQgIkdQVUxlZ2FjeVNpemUuaCIKKyNpbXBvcnQgIkxvZ2dpbmcuaCIK
KyNpbXBvcnQgPE1ldGFsL01ldGFsLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGlj
IGlubGluZSBNVExTaXplIE1UTFNpemVNYWtlKEdQVUxlZ2FjeVNpemUgc2l6ZSkKK3sKKyAgICBy
ZXR1cm4geyBzaXplLndpZHRoLCBzaXplLmhlaWdodCwgc2l6ZS5kZXB0aCB9OworfQorCitHUFVM
ZWdhY3lDb21wdXRlQ29tbWFuZEVuY29kZXI6OkdQVUxlZ2FjeUNvbXB1dGVDb21tYW5kRW5jb2Rl
cihjb25zdCBHUFVMZWdhY3lDb21tYW5kQnVmZmVyJiBidWZmZXIpCit7CisgICAgTE9HKFdlYk1l
dGFsLCAiR1BVTGVnYWN5Q29tcHV0ZUNvbW1hbmRFbmNvZGVyOjpHUFVMZWdhY3lDb21wdXRlQ29t
bWFuZEVuY29kZXIoKSIpOworCisgICAgbV9tZXRhbCA9IFtidWZmZXIubWV0YWwoKSBjb21wdXRl
Q29tbWFuZEVuY29kZXJdOworfQorCit2b2lkIEdQVUxlZ2FjeUNvbXB1dGVDb21tYW5kRW5jb2Rl
cjo6c2V0Q29tcHV0ZVBpcGVsaW5lU3RhdGUoY29uc3QgR1BVTGVnYWN5Q29tcHV0ZVBpcGVsaW5l
U3RhdGUmIGNvbXB1dGVQaXBlbGluZVN0YXRlKSBjb25zdAoreworICAgIGlmICghY29tcHV0ZVBp
cGVsaW5lU3RhdGUubWV0YWwoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgW21fbWV0YWwgc2V0
Q29tcHV0ZVBpcGVsaW5lU3RhdGU6Y29tcHV0ZVBpcGVsaW5lU3RhdGUubWV0YWwoKV07Cit9CisK
K3ZvaWQgR1BVTGVnYWN5Q29tcHV0ZUNvbW1hbmRFbmNvZGVyOjpzZXRCdWZmZXIoY29uc3QgR1BV
TGVnYWN5QnVmZmVyJiBidWZmZXIsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgaW5kZXgpIGNv
bnN0Cit7CisgICAgaWYgKCFidWZmZXIubWV0YWwoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
W21fbWV0YWwgc2V0QnVmZmVyOmJ1ZmZlci5tZXRhbCgpIG9mZnNldDpvZmZzZXQgYXRJbmRleDpp
bmRleF07Cit9CisKK3ZvaWQgR1BVTGVnYWN5Q29tcHV0ZUNvbW1hbmRFbmNvZGVyOjpkaXNwYXRj
aChHUFVMZWdhY3lTaXplIHRocmVhZGdyb3Vwc1BlckdyaWQsIEdQVUxlZ2FjeVNpemUgdGhyZWFk
c1BlclRocmVhZGdyb3VwKSBjb25zdAoreworICAgIFttX21ldGFsIGRpc3BhdGNoVGhyZWFkZ3Jv
dXBzOk1UTFNpemVNYWtlKHRocmVhZGdyb3Vwc1BlckdyaWQpIHRocmVhZHNQZXJUaHJlYWRncm91
cDpNVExTaXplTWFrZSh0aHJlYWRzUGVyVGhyZWFkZ3JvdXApXTsKK30KKwordm9pZCBHUFVMZWdh
Y3lDb21wdXRlQ29tbWFuZEVuY29kZXI6OmVuZEVuY29kaW5nKCkgY29uc3QKK3sKKyAgICBbbV9t
ZXRhbCBlbmRFbmNvZGluZ107Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5
L2NvY29hL0dQVUxlZ2FjeUNvbXB1dGVQaXBlbGluZVN0YXRlTWV0YWwubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L2NvY29hL0dQVUxlZ2FjeUNvbXB1dGVQ
aXBlbGluZVN0YXRlTWV0YWwubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTkwNTMxZWY2ZGNkMGUyNTk1MTc0MGFh
N2MyMjA3NTMxOWI0MjVlNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvY29jb2EvR1BVTGVnYWN5Q29tcHV0ZVBpcGVsaW5lU3Rh
dGVNZXRhbC5tbQpAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IFl1
aWNoaXJvIEtpa3VyYSAoeS5raWt1cmFAZ21haWwuY29tKQorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkdQVUxl
Z2FjeUNvbXB1dGVQaXBlbGluZVN0YXRlLmgiCisKKyNpZiBFTkFCTEUoV0VCTUVUQUwpCisKKyNp
bXBvcnQgIkdQVUxlZ2FjeURldmljZS5oIgorI2ltcG9ydCAiR1BVTGVnYWN5RnVuY3Rpb24uaCIK
KyNpbXBvcnQgIkxvZ2dpbmcuaCIKKyNpbXBvcnQgPE1ldGFsL01ldGFsLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworR1BVTGVnYWN5Q29tcHV0ZVBpcGVsaW5lU3RhdGU6OkdQVUxlZ2FjeUNv
bXB1dGVQaXBlbGluZVN0YXRlKGNvbnN0IEdQVUxlZ2FjeURldmljZSYgZGV2aWNlLCBjb25zdCBH
UFVMZWdhY3lGdW5jdGlvbiYgZnVuY3Rpb24pCit7CisgICAgTE9HKFdlYk1ldGFsLCAiR1BVTGVn
YWN5Q29tcHV0ZVBpcGVsaW5lU3RhdGU6OkdQVUxlZ2FjeUNvbXB1dGVQaXBlbGluZVN0YXRlKCki
KTsKKworICAgIGlmICghZnVuY3Rpb24ubWV0YWwoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
bV9tZXRhbCA9IGFkb3B0TlMoW2RldmljZS5tZXRhbCgpIG5ld0NvbXB1dGVQaXBlbGluZVN0YXRl
V2l0aEZ1bmN0aW9uOmZ1bmN0aW9uLm1ldGFsKCkgZXJyb3I6bmlsXSk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L2NvY29hL0dQVUxlZ2FjeURlcHRoU3RlbmNpbERlc2Ny
aXB0b3JNZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdh
Y3kvY29jb2EvR1BVTGVnYWN5RGVwdGhTdGVuY2lsRGVzY3JpcHRvck1ldGFsLm1tCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjJmZWIxNWY4YjRkMDI3MDUwOWUzYmMzMTM3YTA3MGRhYWU2ZDU3NGIKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L2NvY29h
L0dQVUxlZ2FjeURlcHRoU3RlbmNpbERlc2NyaXB0b3JNZXRhbC5tbQpAQCAtMCwwICsxLDY2IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAi
Y29uZmlnLmgiCisjaW1wb3J0ICJHUFVMZWdhY3lEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmgiCisK
KyNpZiBFTkFCTEUoV0VCTUVUQUwpCisKKyNpbXBvcnQgIkdQVUxlZ2FjeUVudW1zLmgiCisjaW1w
b3J0ICJMb2dnaW5nLmgiCisjaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK0dQVUxlZ2FjeURlcHRoU3RlbmNpbERlc2NyaXB0b3I6OkdQVUxlZ2FjeURlcHRo
U3RlbmNpbERlc2NyaXB0b3IoKQorICAgIDogbV9tZXRhbCB7IGFkb3B0TlMoW01UTERlcHRoU3Rl
bmNpbERlc2NyaXB0b3IgbmV3XSkgfQoreworICAgIExPRyhXZWJNZXRhbCwgIkdQVUxlZ2FjeURl
cHRoU3RlbmNpbERlc2NyaXB0b3I6OkdQVUxlZ2FjeURlcHRoU3RlbmNpbERlc2NyaXB0b3IoKSIp
OworfQorCitib29sIEdQVUxlZ2FjeURlcHRoU3RlbmNpbERlc2NyaXB0b3I6OmRlcHRoV3JpdGVF
bmFibGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gW21fbWV0YWwgaXNEZXB0aFdyaXRlRW5hYmxl
ZF07Cit9CisKK3ZvaWQgR1BVTGVnYWN5RGVwdGhTdGVuY2lsRGVzY3JpcHRvcjo6c2V0RGVwdGhX
cml0ZUVuYWJsZWQoYm9vbCBuZXdEZXB0aFdyaXRlRW5hYmxlZCkgY29uc3QKK3sKKyAgICBbbV9t
ZXRhbCBzZXREZXB0aFdyaXRlRW5hYmxlZDpuZXdEZXB0aFdyaXRlRW5hYmxlZF07Cit9CisKK0dQ
VUxlZ2FjeUNvbXBhcmVGdW5jdGlvbiBHUFVMZWdhY3lEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yOjpk
ZXB0aENvbXBhcmVGdW5jdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdQ
VUxlZ2FjeUNvbXBhcmVGdW5jdGlvbj4oW21fbWV0YWwgZGVwdGhDb21wYXJlRnVuY3Rpb25dKTsK
K30KKwordm9pZCBHUFVMZWdhY3lEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yOjpzZXREZXB0aENvbXBh
cmVGdW5jdGlvbihHUFVMZWdhY3lDb21wYXJlRnVuY3Rpb24gbmV3RnVuY3Rpb24pIGNvbnN0Cit7
CisgICAgLy8gRklYTUU6IERvIHdlIG5lZWQgdG8gY2hlY2sgaWYgdGhlIGZ1bmN0aW9uIHZhbHVl
IGlzIGluIHJhbmdlIGJlZm9yZSBjYXN0aW5nIHRvIE1UTENvbXBhcmVGdW5jdGlvbj8KKyAgICBb
bV9tZXRhbCBzZXREZXB0aENvbXBhcmVGdW5jdGlvbjpzdGF0aWNfY2FzdDxNVExDb21wYXJlRnVu
Y3Rpb24+KG5ld0Z1bmN0aW9uKV07Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVn
YWN5L2NvY29hL0dQVUxlZ2FjeURlcHRoU3RlbmNpbFN0YXRlTWV0YWwubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L2NvY29hL0dQVUxlZ2FjeURlcHRoU3Rl
bmNpbFN0YXRlTWV0YWwubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWNlODY3YWFmM2EwOTRiOWVkOGU0MWYyNjgw
NzI2ZDUyYTQ1MWM3NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9sZWdhY3kvY29jb2EvR1BVTGVnYWN5RGVwdGhTdGVuY2lsU3RhdGVNZXRh
bC5tbQpAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJHUFVMZWdhY3lEZXB0aFN0
ZW5jaWxTdGF0ZS5oIgorCisjaWYgRU5BQkxFKFdFQk1FVEFMKQorCisjaW1wb3J0ICJHUFVMZWdh
Y3lEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmgiCisjaW1wb3J0ICJHUFVMZWdhY3lEZXZpY2UuaCIK
KyNpbXBvcnQgIkxvZ2dpbmcuaCIKKyNpbXBvcnQgPE1ldGFsL01ldGFsLmg+CisjaW1wb3J0IDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitHUFVMZWdhY3lE
ZXB0aFN0ZW5jaWxTdGF0ZTo6R1BVTGVnYWN5RGVwdGhTdGVuY2lsU3RhdGUoY29uc3QgR1BVTGVn
YWN5RGV2aWNlJiBkZXZpY2UsIGNvbnN0IEdQVUxlZ2FjeURlcHRoU3RlbmNpbERlc2NyaXB0b3Im
IGRlc2NyaXB0b3IpCit7CisgICAgTE9HKFdlYk1ldGFsLCAiR1BVTGVnYWN5RGVwdGhTdGVuY2ls
U3RhdGU6OkdQVUxlZ2FjeURlcHRoU3RlbmNpbFN0YXRlKCkiKTsKKworICAgIG1fbWV0YWwgPSBh
ZG9wdE5TKFtkZXZpY2UubWV0YWwoKSBuZXdEZXB0aFN0ZW5jaWxTdGF0ZVdpdGhEZXNjcmlwdG9y
OmRlc2NyaXB0b3IubWV0YWwoKV0pOworfQorCitTdHJpbmcgR1BVTGVnYWN5RGVwdGhTdGVuY2ls
U3RhdGU6OmxhYmVsKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fbWV0YWwpCisgICAgICAgIHJldHVy
biBlbXB0eVN0cmluZygpOworCisgICAgcmV0dXJuIFttX21ldGFsIGxhYmVsXTsKK30KKwordm9p
ZCBHUFVMZWdhY3lEZXB0aFN0ZW5jaWxTdGF0ZTo6c2V0TGFiZWwoY29uc3QgU3RyaW5nJikgY29u
c3QKK3sKKyAgICAvLyBGSVhNRTogVGhlIE1UTERlcHRoU3RlbmNpbFN0YXRlIHByb3RvY29sIGRv
ZXMgbm90IGFsbG93IHNldHRpbmcgdGhlIGxhYmVsLgorICAgIC8vIFRoZSBsYWJlbCBoYXMgdG8g
YmUgc2V0IG9uIHRoZSBkZXNjcmlwdG9yIHdoZW4gY3JlYXRpbmcgdGhlIHN0YXRlIG9iamVjdC4K
KyAgICAvLyBXZSBzaG91bGQgY29uc2lkZXIgY2hhbmdpbmcgdGhlIFdlYk1ldGFsIGludGVyZmFj
ZSB0byBub3QgcmVxdWlyZSB0aGlzIQorfQorICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9sZWdhY3kvY29jb2EvR1BVTGVnYWN5RGV2aWNlTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L2NvY29hL0dQVUxlZ2FjeURldmljZU1ldGFsLm1t
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjlhNzZmYzk3YTcxODhmYjVmYmM2MDYwMzY0NjExYTMwMjExNzA2YjQKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVn
YWN5L2NvY29hL0dQVUxlZ2FjeURldmljZU1ldGFsLm1tCkBAIC0wLDAgKzEsOTAgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcu
aCIKKyNpbXBvcnQgIkdQVUxlZ2FjeURldmljZS5oIgorCisjaWYgRU5BQkxFKFdFQk1FVEFMKQor
CisjaW1wb3J0ICJMb2dnaW5nLmgiCisjaW1wb3J0ICJXZWJNZXRhbExheWVyLmgiCisjaW1wb3J0
IDxKYXZhU2NyaXB0Q29yZS9BcnJheUJ1ZmZlci5oPgorI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4K
KyNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworR1BVTGVnYWN5RGV2aWNlOjpHUFVMZWdhY3lEZXZpY2UoKQorICAgIDogbV9tZXRhbCB7
IGFkb3B0TlMoTVRMQ3JlYXRlU3lzdGVtRGVmYXVsdERldmljZSgpKSB9Cit7CisKKyAgICBpZiAo
IW1fbWV0YWwpIHsKKyAgICAgICAgTE9HKFdlYk1ldGFsLCAiR1BVTGVnYWN5RGV2aWNlOjpHUFVM
ZWdhY3lEZXZpY2UgLS0gY291bGQgbm90IGNyZWF0ZSB0aGUgZGV2aWNlLiBUaGlzIHVzdWFsbHkg
bWVhbnMgTWV0YWwgaXMgbm90IGF2YWlsYWJsZSBvbiB0aGlzIGhhcmR3YXJlLiIpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgTE9HKFdlYk1ldGFsLCAiR1BVTGVnYWN5RGV2aWNlOjpH
UFVMZWdhY3lEZXZpY2UgTWV0YWwgZGV2aWNlIGlzICVwIiwgbV9tZXRhbC5nZXQoKSk7CisKKyAg
ICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKworICAgIG1fbGF5ZXIgPSBhZG9wdE5TKFtb
V2ViTWV0YWxMYXllciBhbGxvY10gaW5pdFdpdGhHUFVEZXZpY2U6dGhpc10pOworICAgIFttX2xh
eWVyIHNldE9wYXF1ZTowXTsKKyAgICBbbV9sYXllciBzZXROYW1lOkAiV2ViTWV0YWwgTGF5ZXIi
XTsKKworICAgIC8vIEZJWE1FOiBXZWJNZXRhbCAtIFNob3VsZCB0aGlzIGJlIGluIHRoZSBXZWJN
ZXRhbExheWVyIGluaXRpYWxpemVyPworICAgIFttX2xheWVyIHNldERldmljZTptX21ldGFsLmdl
dCgpXTsKKyAgICBbbV9sYXllciBzZXRQaXhlbEZvcm1hdDpNVExQaXhlbEZvcm1hdEJHUkE4VW5v
cm1dOworICAgIFttX2xheWVyIHNldEZyYW1lYnVmZmVyT25seTpZRVNdOworCisgICAgRU5EX0JM
T0NLX09CSkNfRVhDRVBUSU9OUworfQorCit2b2lkIEdQVUxlZ2FjeURldmljZTo6ZGlzY29ubmVj
dCgpCit7CisgICAgbV9sYXllci5nZXQoKS5jb250ZXh0ID0gbnVsbHB0cjsKKyAgICAvLyBGSVhN
RTogU2hvdWxkIHdlIGFsc28gY2xlYXIgb3V0IHRoZSBkZXZpY2UgcHJvcGVydHksIHdoaWNoIGhh
cyB0aGUgTVRMRGV2aWNlPworfQorCit2b2lkIEdQVUxlZ2FjeURldmljZTo6cmVzaGFwZShpbnQg
d2lkdGgsIGludCBoZWlnaHQpIGNvbnN0Cit7CisgICAgW21fbGF5ZXIgc2V0Qm91bmRzOkNHUmVj
dE1ha2UoMCwgMCwgd2lkdGgsIGhlaWdodCldOworICAgIFttX2xheWVyIHNldERyYXdhYmxlU2l6
ZTpDR1NpemVNYWtlKHdpZHRoLCBoZWlnaHQpXTsKKworICAgIC8vIEZJWE1FOiBXZWJNZXRhbCAt
IExvdHMgb2YgcmVzaGFwZSBzdHVmZiBzaG91bGQgZ28gaGVyZS4gU2VlIEdDM0QuCit9CisKK0NB
TGF5ZXIgKkdQVUxlZ2FjeURldmljZTo6cGxhdGZvcm1MYXllcigpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1fbGF5ZXIuZ2V0KCk7Cit9CisKK2Jvb2wgR1BVTGVnYWN5RGV2aWNlOjpvcGVyYXRvciEo
KSBjb25zdAoreworICAgIHJldHVybiAhbV9tZXRhbDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9sZWdhY3kvY29jb2EvR1BVTGVnYWN5RHJhd2FibGVNZXRhbC5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvY29jb2EvR1BVTGVnYWN5RHJhd2Fi
bGVNZXRhbC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45Y2RjNDk1MzVjOWJlNTliNWU5MzZkYzU0YTNmM2Q2NTRk
MzEwMzgxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L2xlZ2FjeS9jb2NvYS9HUFVMZWdhY3lEcmF3YWJsZU1ldGFsLm1tCkBAIC0wLDAgKzEs
NjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1w
b3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkdQVUxlZ2FjeURyYXdhYmxlLmgiCisKKyNpZiBFTkFC
TEUoV0VCTUVUQUwpCisKKyNpbXBvcnQgIkdQVUxlZ2FjeURldmljZS5oIgorI2ltcG9ydCAiTG9n
Z2luZy5oIgorI2ltcG9ydCAiV2ViTWV0YWxMYXllci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK0dQVUxlZ2FjeURyYXdhYmxlOjpHUFVMZWdhY3lEcmF3YWJsZShjb25zdCBHUFVMZWdhY3lE
ZXZpY2UmIGRldmljZSkKK3sKKyAgICBMT0coV2ViTWV0YWwsICJHUFVMZWdhY3lEcmF3YWJsZTo6
R1BVTGVnYWN5RHJhd2FibGUoKSIpOworCisgICAgbV9tZXRhbCA9IFtkZXZpY2UubGF5ZXIoKSBu
ZXh0RHJhd2FibGVdOworfQorCit2b2lkIEdQVUxlZ2FjeURyYXdhYmxlOjpyZWxlYXNlKCkKK3sK
KyAgICBMT0coV2ViTWV0YWwsICJHUFVMZWdhY3lEcmF3YWJsZTo6cmVsZWFzZSgpIik7CisgICAg
bV9tZXRhbCA9IG5pbDsKK30KKworTVRMRHJhd2FibGUgKkdQVUxlZ2FjeURyYXdhYmxlOjptZXRh
bCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbWV0YWwuZ2V0KCk7Cit9CisKK01UTFRleHR1cmUg
KkdQVUxlZ2FjeURyYXdhYmxlOjp0ZXh0dXJlKCkgY29uc3QKK3sKKyAgICBpZiAoIVttX21ldGFs
IGNvbmZvcm1zVG9Qcm90b2NvbDpAcHJvdG9jb2woQ0FNZXRhbERyYXdhYmxlKV0pIHsKKyAgICAg
ICAgQVNTRVJUKCFtX21ldGFsKTsKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICB9CisgICAgcmV0
dXJuIFsoaWQ8Q0FNZXRhbERyYXdhYmxlPiltX21ldGFsLmdldCgpIHRleHR1cmVdOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9jb2NvYS9HUFVMZWdhY3lGdW5jdGlvbk1l
dGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9jb2Nv
YS9HUFVMZWdhY3lGdW5jdGlvbk1ldGFsLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQwYWYxYTc4NjE3ZGMxOWVi
NGIyZjE4NDA0ZmU3OTBiN2EzZTdiMmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L2NvY29hL0dQVUxlZ2FjeUZ1bmN0aW9uTWV0
YWwubW0KQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiR1BVTGVnYWN5RnVuY3Rp
b24uaCIKKworI2lmIEVOQUJMRShXRUJNRVRBTCkKKworI2ltcG9ydCAiR1BVTGVnYWN5TGlicmFy
eS5oIgorI2ltcG9ydCAiTG9nZ2luZy5oIgorI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KKyNpbXBv
cnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0dQVUxl
Z2FjeUZ1bmN0aW9uOjpHUFVMZWdhY3lGdW5jdGlvbihjb25zdCBHUFVMZWdhY3lMaWJyYXJ5JiBs
aWJyYXJ5LCBjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgTE9HKFdlYk1ldGFsLCAiR1BVTGVn
YWN5RnVuY3Rpb246OkdQVUxlZ2FjeUZ1bmN0aW9uKCkiKTsKKworICAgIG1fbWV0YWwgPSBhZG9w
dE5TKFtsaWJyYXJ5Lm1ldGFsKCkgbmV3RnVuY3Rpb25XaXRoTmFtZTpuYW1lXSk7Cit9CisKK1N0
cmluZyBHUFVMZWdhY3lGdW5jdGlvbjo6bmFtZSgpIGNvbnN0Cit7CisgICAgaWYgKCFtX21ldGFs
KQorICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKKworICAgIHJldHVybiBbbV9tZXRhbCBu
YW1lXTsKK30KKworYm9vbCBHUFVMZWdhY3lGdW5jdGlvbjo6b3BlcmF0b3IhKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gIW1fbWV0YWw7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVn
YWN5L2NvY29hL0dQVUxlZ2FjeUxpYnJhcnlNZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvY29jb2EvR1BVTGVnYWN5TGlicmFyeU1ldGFsLm1tCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjA4NzI2MjgyNTNiMjY4YWYwMDBlYTc2MzY3YmNhZTg2ZWFmMDllNWEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5
L2NvY29hL0dQVUxlZ2FjeUxpYnJhcnlNZXRhbC5tbQpAQCAtMCwwICsxLDc4IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgi
CisjaW1wb3J0ICJHUFVMZWdhY3lMaWJyYXJ5LmgiCisKKyNpZiBFTkFCTEUoV0VCTUVUQUwpCisK
KyNpbXBvcnQgIkdQVUxlZ2FjeURldmljZS5oIgorI2ltcG9ydCAiTG9nZ2luZy5oIgorI2ltcG9y
dCA8TWV0YWwvTWV0YWwuaD4KKyNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KKyNpbXBvcnQgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0dQVUxlZ2FjeUxpYnJh
cnk6OkdQVUxlZ2FjeUxpYnJhcnkoY29uc3QgR1BVTGVnYWN5RGV2aWNlJiBkZXZpY2UsIGNvbnN0
IFN0cmluZyYgc291cmNlQ29kZSkKK3sKKyAgICBMT0coV2ViTWV0YWwsICJHUFVMZWdhY3lMaWJy
YXJ5OjpHUFVMZWdhY3lMaWJyYXJ5KCkiKTsKKworICAgIGlmICghZGV2aWNlLm1ldGFsKCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIE5TRXJyb3IgKmVycm9yID0gW05TRXJyb3IgZXJyb3JXaXRo
RG9tYWluOkAiY29tLmFwcGxlLldlYktpdC5HUFUiIGNvZGU6MSB1c2VySW5mbzpuaWxdOworICAg
IG1fbWV0YWwgPSBhZG9wdE5TKFtkZXZpY2UubWV0YWwoKSBuZXdMaWJyYXJ5V2l0aFNvdXJjZTpz
b3VyY2VDb2RlIG9wdGlvbnM6bmlsIGVycm9yOiZlcnJvcl0pOworICAgIGlmICghbV9tZXRhbCkK
KyAgICAgICAgTE9HKFdlYk1ldGFsLCAiQ29tcGlsYXRpb24gZXJyb3I6ICVzIiwgW1tlcnJvciBs
b2NhbGl6ZWREZXNjcmlwdGlvbl0gVVRGOFN0cmluZ10pOworfQorCitTdHJpbmcgR1BVTGVnYWN5
TGlicmFyeTo6bGFiZWwoKSBjb25zdAoreworICAgIGlmICghbV9tZXRhbCkKKyAgICAgICAgcmV0
dXJuIGVtcHR5U3RyaW5nKCk7CisKKyAgICByZXR1cm4gW21fbWV0YWwgbGFiZWxdOworfQorCit2
b2lkIEdQVUxlZ2FjeUxpYnJhcnk6OnNldExhYmVsKGNvbnN0IFN0cmluZyYgbGFiZWwpIGNvbnN0
Cit7CisgICAgQVNTRVJUKG1fbWV0YWwpOworICAgIFttX21ldGFsIHNldExhYmVsOmxhYmVsXTsK
K30KKworVmVjdG9yPFN0cmluZz4gR1BVTGVnYWN5TGlicmFyeTo6ZnVuY3Rpb25OYW1lcygpIGNv
bnN0Cit7CisgICAgYXV0byBhcnJheSA9IFttX21ldGFsIGZ1bmN0aW9uTmFtZXNdOworICAgIFZl
Y3RvcjxTdHJpbmc+IHZlY3RvcjsKKyAgICB2ZWN0b3IucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShh
cnJheS5jb3VudCk7CisgICAgZm9yIChOU1N0cmluZyAqc3RyaW5nIGluIGFycmF5KQorICAgICAg
ICB2ZWN0b3IudW5jaGVja2VkQXBwZW5kKHN0cmluZyk7CisgICAgcmV0dXJuIHZlY3RvcjsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvY29jb2EvR1BVTGVnYWN5UmVuZGVy
Q29tbWFuZEVuY29kZXJNZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9sZWdhY3kvY29jb2EvR1BVTGVnYWN5UmVuZGVyQ29tbWFuZEVuY29kZXJNZXRhbC5tbQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi45MGU1ZDRmYWQ0MTJjZjJmM2M3ODBiMGFkZGZkZWUxYTdmYzJmZjU4Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2Fj
eS9jb2NvYS9HUFVMZWdhY3lSZW5kZXJDb21tYW5kRW5jb2Rlck1ldGFsLm1tCkBAIC0wLDAgKzEs
OTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1w
b3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkdQVUxlZ2FjeVJlbmRlckNvbW1hbmRFbmNvZGVyLmgi
CisKKyNpZiBFTkFCTEUoV0VCTUVUQUwpCisKKyNpbXBvcnQgIkdQVUxlZ2FjeUJ1ZmZlci5oIgor
I2ltcG9ydCAiR1BVTGVnYWN5Q29tbWFuZEJ1ZmZlci5oIgorI2ltcG9ydCAiR1BVTGVnYWN5RGVw
dGhTdGVuY2lsU3RhdGUuaCIKKyNpbXBvcnQgIkdQVUxlZ2FjeVJlbmRlclBhc3NEZXNjcmlwdG9y
LmgiCisjaW1wb3J0ICJHUFVMZWdhY3lSZW5kZXJQaXBlbGluZVN0YXRlLmgiCisjaW1wb3J0ICJM
b2dnaW5nLmgiCisjaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK0dQVUxlZ2FjeVJlbmRlckNvbW1hbmRFbmNvZGVyOjpHUFVMZWdhY3lSZW5kZXJDb21tYW5k
RW5jb2Rlcihjb25zdCBHUFVMZWdhY3lDb21tYW5kQnVmZmVyJiBidWZmZXIsIGNvbnN0IEdQVUxl
Z2FjeVJlbmRlclBhc3NEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQoreworICAgIExPRyhXZWJNZXRh
bCwgIkdQVUxlZ2FjeVJlbmRlckNvbW1hbmRFbmNvZGVyOjpHUFVMZWdhY3lSZW5kZXJDb21tYW5k
RW5jb2RlcigpIik7CisKKyAgICBpZiAoIWRlc2NyaXB0b3IubWV0YWwoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgbV9tZXRhbCA9IFtidWZmZXIubWV0YWwoKSByZW5kZXJDb21tYW5kRW5jb2Rl
cldpdGhEZXNjcmlwdG9yOmRlc2NyaXB0b3IubWV0YWwoKV07Cit9CisKK3ZvaWQgR1BVTGVnYWN5
UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldFJlbmRlclBpcGVsaW5lU3RhdGUoY29uc3QgR1BVTGVn
YWN5UmVuZGVyUGlwZWxpbmVTdGF0ZSYgcmVuZGVyUGlwZWxpbmVTdGF0ZSkgY29uc3QKK3sKKyAg
ICBpZiAoIXJlbmRlclBpcGVsaW5lU3RhdGUubWV0YWwoKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgW21fbWV0YWwgc2V0UmVuZGVyUGlwZWxpbmVTdGF0ZTpyZW5kZXJQaXBlbGluZVN0YXRlLm1l
dGFsKCldOworfQorCit2b2lkIEdQVUxlZ2FjeVJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXREZXB0
aFN0ZW5jaWxTdGF0ZShjb25zdCBHUFVMZWdhY3lEZXB0aFN0ZW5jaWxTdGF0ZSYgZGVwdGhTdGVu
Y2lsU3RhdGUpIGNvbnN0Cit7CisgICAgaWYgKCFkZXB0aFN0ZW5jaWxTdGF0ZS5tZXRhbCgpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBbbV9tZXRhbCBzZXREZXB0aFN0ZW5jaWxTdGF0ZTpkZXB0
aFN0ZW5jaWxTdGF0ZS5tZXRhbCgpXTsKK30KKwordm9pZCBHUFVMZWdhY3lSZW5kZXJDb21tYW5k
RW5jb2Rlcjo6c2V0VmVydGV4QnVmZmVyKGNvbnN0IEdQVUxlZ2FjeUJ1ZmZlciYgYnVmZmVyLCB1
bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGluZGV4KSBjb25zdAoreworICAgIGlmICghYnVmZmVy
Lm1ldGFsKCkpCisgICAgICAgIHJldHVybjsKKworICAgIFttX21ldGFsIHNldFZlcnRleEJ1ZmZl
cjpidWZmZXIubWV0YWwoKSBvZmZzZXQ6b2Zmc2V0IGF0SW5kZXg6aW5kZXhdOworfQorCit2b2lk
IEdQVUxlZ2FjeVJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRGcmFnbWVudEJ1ZmZlcihjb25zdCBH
UFVMZWdhY3lCdWZmZXImIGJ1ZmZlciwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBpbmRleCkg
Y29uc3QKK3sKKyAgICBpZiAoIWJ1ZmZlci5tZXRhbCgpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBbbV9tZXRhbCBzZXRGcmFnbWVudEJ1ZmZlcjpidWZmZXIubWV0YWwoKSBvZmZzZXQ6b2Zmc2V0
IGF0SW5kZXg6aW5kZXhdOworfQorCit2b2lkIEdQVUxlZ2FjeVJlbmRlckNvbW1hbmRFbmNvZGVy
OjpkcmF3UHJpbWl0aXZlcyh1bnNpZ25lZCB0eXBlLCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQg
Y291bnQpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGEgc3BlY2lhbGx5
IG9wdGltaXplZCBwYXRoIGZvciBjb3VudCBvZiAwPworICAgIGlmICghY291bnQpCisgICAgICAg
IHJldHVybjsKKworICAgIFttX21ldGFsIGRyYXdQcmltaXRpdmVzOnN0YXRpY19jYXN0PE1UTFBy
aW1pdGl2ZVR5cGU+KHR5cGUpIHZlcnRleFN0YXJ0OnN0YXJ0IHZlcnRleENvdW50OmNvdW50XTsK
K30KKwordm9pZCBHUFVMZWdhY3lSZW5kZXJDb21tYW5kRW5jb2Rlcjo6ZW5kRW5jb2RpbmcoKSBj
b25zdAoreworICAgIFttX21ldGFsIGVuZEVuY29kaW5nXTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9sZWdhY3kvY29jb2EvR1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNj
cmlwdG9yTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVn
YWN5L2NvY29hL0dQVUxlZ2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvck1ldGFsLm1t
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmMzMjVjOWYyOTcwZTJjZmQyYTY2ZDY2YTRmNDEyMzJiYTFiNmE2NjkKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVn
YWN5L2NvY29hL0dQVUxlZ2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvck1ldGFsLm1t
CkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkdQVUxlZ2FjeVJlbmRlclBhc3NB
dHRhY2htZW50RGVzY3JpcHRvci5oIgorCisjaWYgRU5BQkxFKFdFQk1FVEFMKQorCisjaW1wb3J0
ICJHUFVMZWdhY3lUZXh0dXJlLmgiCisjaW1wb3J0ICJMb2dnaW5nLmgiCisKKyNpbXBvcnQgPE1l
dGFsL01ldGFsLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworR1BVTGVnYWN5UmVuZGVyUGFz
c0F0dGFjaG1lbnREZXNjcmlwdG9yOjpHUFVMZWdhY3lSZW5kZXJQYXNzQXR0YWNobWVudERlc2Ny
aXB0b3IoTVRMUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yICptZXRhbCkKKyAgICA6IG1f
bWV0YWwgeyBtZXRhbCB9Cit7CisgICAgTE9HKFdlYk1ldGFsLCAiR1BVTGVnYWN5UmVuZGVyUGFz
c0F0dGFjaG1lbnREZXNjcmlwdG9yOjpHUFVMZWdhY3lSZW5kZXJQYXNzQXR0YWNobWVudERlc2Ny
aXB0b3IoKSIpOworfQorCit1bnNpZ25lZCBHUFVMZWdhY3lSZW5kZXJQYXNzQXR0YWNobWVudERl
c2NyaXB0b3I6OmxvYWRBY3Rpb24oKSBjb25zdAoreworICAgIHJldHVybiBbbV9tZXRhbCBsb2Fk
QWN0aW9uXTsKK30KKwordm9pZCBHUFVMZWdhY3lSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0
b3I6OnNldExvYWRBY3Rpb24odW5zaWduZWQgbmV3TG9hZEFjdGlvbikgY29uc3QKK3sKKyAgICAv
LyBGSVhNRTogU2hvdWxkIHRoaXMgcmFuZ2UgY2hlY2sgZm9yIGxlZ2l0aW1hdGUgdmFsdWVzPwor
ICAgIFttX21ldGFsIHNldExvYWRBY3Rpb246c3RhdGljX2Nhc3Q8TVRMTG9hZEFjdGlvbj4obmV3
TG9hZEFjdGlvbildOworfQorCit1bnNpZ25lZCBHUFVMZWdhY3lSZW5kZXJQYXNzQXR0YWNobWVu
dERlc2NyaXB0b3I6OnN0b3JlQWN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gW21fbWV0YWwg
c3RvcmVBY3Rpb25dOworfQorCit2b2lkIEdQVUxlZ2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVz
Y3JpcHRvcjo6c2V0U3RvcmVBY3Rpb24odW5zaWduZWQgbmV3U3RvcmVBY3Rpb24pIGNvbnN0Cit7
CisgICAgLy8gRklYTUU6IFNob3VsZCB0aGlzIHJhbmdlIGNoZWNrIGZvciBsZWdpdGltYXRlIHZh
bHVlcz8KKyAgICBbbV9tZXRhbCBzZXRTdG9yZUFjdGlvbjpzdGF0aWNfY2FzdDxNVExTdG9yZUFj
dGlvbj4obmV3U3RvcmVBY3Rpb24pXTsKK30KKwordm9pZCBHUFVMZWdhY3lSZW5kZXJQYXNzQXR0
YWNobWVudERlc2NyaXB0b3I6OnNldFRleHR1cmUoY29uc3QgR1BVTGVnYWN5VGV4dHVyZSYgdGV4
dHVyZSkgY29uc3QKK3sKKyAgICBbbV9tZXRhbCBzZXRUZXh0dXJlOnRleHR1cmUubWV0YWwoKV07
Cit9CisKK01UTFJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvciAqR1BVTGVnYWN5UmVuZGVy
UGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjptZXRhbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
bWV0YWwuZ2V0KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L2NvY29h
L0dQVUxlZ2FjeVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yTWV0YWwubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L2NvY29hL0dQVUxlZ2Fj
eVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yTWV0YWwubW0KbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YjVlYmUxNjQ1NDllYTk4NjNhYTM3MWRiNjA0YjQ1YjM3ZWQ1ZWY0NAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvY29jb2EvR1BV
TGVnYWN5UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3JNZXRhbC5tbQpAQCAtMCww
ICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJHUFVMZWdhY3lSZW5kZXJQYXNzQ29sb3JBdHRh
Y2htZW50RGVzY3JpcHRvci5oIgorCisjaWYgRU5BQkxFKFdFQk1FVEFMKQorCisjaW1wb3J0ICJG
bG9hdENvbnZlcnNpb24uaCIKKyNpbXBvcnQgIkxvZ2dpbmcuaCIKKyNpbXBvcnQgPE1ldGFsL01l
dGFsLmg+CisjaW1wb3J0IDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
R1BVTGVnYWN5UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6OkdQVUxlZ2FjeVJl
bmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKE1UTFJlbmRlclBhc3NDb2xvckF0dGFj
aG1lbnREZXNjcmlwdG9yICptZXRhbCkKKyAgICA6IEdQVUxlZ2FjeVJlbmRlclBhc3NBdHRhY2ht
ZW50RGVzY3JpcHRvciB7IG1ldGFsIH0KK3sKKyAgICBMT0coV2ViTWV0YWwsICJHUFVMZWdhY3lS
ZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6R1BVTGVnYWN5UmVuZGVyUGFzc0Nv
bG9yQXR0YWNobWVudERlc2NyaXB0b3IoKSIpOworfQorCitWZWN0b3I8ZmxvYXQ+IEdQVUxlZ2Fj
eVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjpjbGVhckNvbG9yKCkgY29uc3QK
K3sKKyAgICBhdXRvKiBtZXRhbCA9IHRoaXMtPm1ldGFsKCk7CisgICAgaWYgKCFtZXRhbCkKKyAg
ICAgICAgcmV0dXJuIHsgfTsKKworICAgIGF1dG8gY29sb3IgPSBbbWV0YWwgY2xlYXJDb2xvcl07
CisgICAgcmV0dXJuIHsgbmFycm93UHJlY2lzaW9uVG9GbG9hdChjb2xvci5yZWQpLCBuYXJyb3dQ
cmVjaXNpb25Ub0Zsb2F0KGNvbG9yLmdyZWVuKSwgbmFycm93UHJlY2lzaW9uVG9GbG9hdChjb2xv
ci5ibHVlKSwgbmFycm93UHJlY2lzaW9uVG9GbG9hdChjb2xvci5hbHBoYSkgfTsKK30KKwordm9p
ZCBHUFVMZWdhY3lSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6c2V0Q2xlYXJD
b2xvcihjb25zdCBWZWN0b3I8ZmxvYXQ+JiBuZXdDbGVhckNvbG9yKSBjb25zdAoreworICAgIGlm
IChuZXdDbGVhckNvbG9yLnNpemUoKSAhPSA0KQorICAgICAgICByZXR1cm47CisKKyAgICBbbWV0
YWwoKSBzZXRDbGVhckNvbG9yOk1UTENsZWFyQ29sb3JNYWtlKG5ld0NsZWFyQ29sb3JbMF0sIG5l
d0NsZWFyQ29sb3JbMV0sIG5ld0NsZWFyQ29sb3JbMl0sIG5ld0NsZWFyQ29sb3JbM10pXTsKK30K
KworTVRMUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IgKkdQVUxlZ2FjeVJlbmRl
clBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjptZXRhbCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIHN0YXRpY19jYXN0PE1UTFJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yICo+
KEdQVUxlZ2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjo6bWV0YWwoKSk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L2NvY29hL0dQVUxlZ2FjeVJlbmRlclBh
c3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L2NvY29hL0dQVUxlZ2FjeVJlbmRlclBhc3NEZXB0aEF0
dGFjaG1lbnREZXNjcmlwdG9yTWV0YWwubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDIwMTBhNjg1OWJmNzFkNWMz
ODUwZGJkMmZlMGExNmUzNmYwZDg1NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvY29jb2EvR1BVTGVnYWN5UmVuZGVyUGFzc0Rl
cHRoQXR0YWNobWVudERlc2NyaXB0b3JNZXRhbC5tbQpAQCAtMCwwICsxLDY0IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgi
CisjaW1wb3J0ICJHUFVMZWdhY3lSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5o
IgorCisjaWYgRU5BQkxFKFdFQk1FVEFMKQorCisjaW1wb3J0ICJHUFVMZWdhY3lSZW5kZXJQYXNz
QXR0YWNobWVudERlc2NyaXB0b3IuaCIKKyNpbXBvcnQgIkxvZ2dpbmcuaCIKKyNpbXBvcnQgPE1l
dGFsL01ldGFsLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworR1BVTGVnYWN5UmVuZGVyUGFz
c0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3I6OkdQVUxlZ2FjeVJlbmRlclBhc3NEZXB0aEF0dGFj
aG1lbnREZXNjcmlwdG9yKE1UTFJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yICpt
ZXRhbCkKKyAgICA6IEdQVUxlZ2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvciB7IG1l
dGFsIH0KK3sKKyAgICBMT0coV2ViTWV0YWwsICJHUFVMZWdhY3lSZW5kZXJQYXNzRGVwdGhBdHRh
Y2htZW50RGVzY3JpcHRvcjo6R1BVTGVnYWN5UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2Ny
aXB0b3IoKSIpOworfQorCitkb3VibGUgR1BVTGVnYWN5UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVu
dERlc2NyaXB0b3I6OmNsZWFyRGVwdGgoKSBjb25zdAoreworICAgIGF1dG8qIG1ldGFsID0gdGhp
cy0+bWV0YWwoKTsKKyAgICBpZiAoIW1ldGFsKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJl
dHVybiBbbWV0YWwgY2xlYXJEZXB0aF07Cit9CisKK3ZvaWQgR1BVTGVnYWN5UmVuZGVyUGFzc0Rl
cHRoQXR0YWNobWVudERlc2NyaXB0b3I6OnNldENsZWFyRGVwdGgoZG91YmxlIG5ld0NsZWFyRGVw
dGgpIGNvbnN0Cit7CisgICAgW21ldGFsKCkgc2V0Q2xlYXJEZXB0aDpuZXdDbGVhckRlcHRoXTsK
K30KKworTVRMUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IgKkdQVUxlZ2FjeVJl
bmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yOjptZXRhbCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIHN0YXRpY19jYXN0PE1UTFJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9y
ICo+KEdQVUxlZ2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjo6bWV0YWwoKSk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L2NvY29hL0dQVUxlZ2FjeVJlbmRl
clBhc3NEZXNjcmlwdG9yTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvbGVnYWN5L2NvY29hL0dQVUxlZ2FjeVJlbmRlclBhc3NEZXNjcmlwdG9yTWV0YWwubW0K
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uM2YxODUxMzU4ZjEwMDMyY2JjM2I2ZWEzNWFlNjgyODgxMTUzYjg1ZgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdh
Y3kvY29jb2EvR1BVTGVnYWN5UmVuZGVyUGFzc0Rlc2NyaXB0b3JNZXRhbC5tbQpAQCAtMCwwICsx
LDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lt
cG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJHUFVMZWdhY3lSZW5kZXJQYXNzRGVzY3JpcHRvci5o
IgorCisjaWYgRU5BQkxFKFdFQk1FVEFMKQorCisjaW1wb3J0ICJHUFVMZWdhY3lSZW5kZXJQYXNz
Q29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oIgorI2ltcG9ydCAiR1BVTGVnYWN5UmVuZGVyUGFz
c0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IuaCIKKyNpbXBvcnQgIkxvZ2dpbmcuaCIKKyNpbXBv
cnQgPE1ldGFsL01ldGFsLmg+CisjaW1wb3J0IDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworR1BVTGVnYWN5UmVuZGVyUGFzc0Rlc2NyaXB0b3I6OkdQVUxlZ2FjeVJlbmRl
clBhc3NEZXNjcmlwdG9yKCkKKyAgICA6IG1fbWV0YWwgeyBhZG9wdE5TKFtNVExSZW5kZXJQYXNz
RGVzY3JpcHRvciBuZXddKSB9Cit7CisgICAgTE9HKFdlYk1ldGFsLCAiR1BVTGVnYWN5UmVuZGVy
UGFzc0Rlc2NyaXB0b3I6OkdQVUxlZ2FjeVJlbmRlclBhc3NEZXNjcmlwdG9yKCkiKTsKK30KKwor
VmVjdG9yPEdQVUxlZ2FjeVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yPiBHUFVM
ZWdhY3lSZW5kZXJQYXNzRGVzY3JpcHRvcjo6Y29sb3JBdHRhY2htZW50cygpIGNvbnN0Cit7Cisg
ICAgaWYgKCFtX21ldGFsKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgLy8gRklYTUU6IFdo
eSBpcyBpdCBjb3JyZWN0IHRvIHJldHVybiBvbmUgY29sb3IgaGVyZT8KKyAgICByZXR1cm4geyB7
IFtbbV9tZXRhbCBjb2xvckF0dGFjaG1lbnRzXSBvYmplY3RBdEluZGV4ZWRTdWJzY3JpcHQ6MF0g
fSB9OworfQorCitHUFVMZWdhY3lSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvciBH
UFVMZWdhY3lSZW5kZXJQYXNzRGVzY3JpcHRvcjo6ZGVwdGhBdHRhY2htZW50KCkgY29uc3QKK3sK
KyAgICByZXR1cm4gW21fbWV0YWwgZGVwdGhBdHRhY2htZW50XTsKK30KKworTVRMUmVuZGVyUGFz
c0Rlc2NyaXB0b3IgKkdQVUxlZ2FjeVJlbmRlclBhc3NEZXNjcmlwdG9yOjptZXRhbCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fbWV0YWwuZ2V0KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvbGVnYWN5L2NvY29hL0dQVUxlZ2FjeVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50
RGVzY3JpcHRvck1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L2xlZ2FjeS9jb2NvYS9HUFVMZWdhY3lSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2Ny
aXB0b3JNZXRhbC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNDNjOTViZDE5NGM2OTM1ZTIzZDFkYmRhM2E0Yzkx
OGM2MGI1M2VjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L2xlZ2FjeS9jb2NvYS9HUFVMZWdhY3lSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNo
bWVudERlc2NyaXB0b3JNZXRhbC5tbQpAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0
ICJHUFVMZWdhY3lSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaCIKKwor
I2lmIEVOQUJMRShXRUJNRVRBTCkKKworI2ltcG9ydCAiTG9nZ2luZy5oIgorI2ltcG9ydCA8TWV0
YWwvTWV0YWwuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitHUFVMZWdhY3lSZW5kZXJQaXBl
bGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6OkdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lQ29s
b3JBdHRhY2htZW50RGVzY3JpcHRvcihNVExSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERl
c2NyaXB0b3IgKm1ldGFsKQorICAgIDogbV9tZXRhbCB7IG1ldGFsIH0KK3sKKyAgICBMT0coV2Vi
TWV0YWwsICJHUFVMZWdhY3lSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6
OkdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcigpIik7Cit9
CisKK3Vuc2lnbmVkIEdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3Jp
cHRvcjo6cGl4ZWxGb3JtYXQoKSBjb25zdAoreworICAgIHJldHVybiBbbV9tZXRhbCBwaXhlbEZv
cm1hdF07Cit9CisKK3ZvaWQgR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnRE
ZXNjcmlwdG9yOjpzZXRQaXhlbEZvcm1hdCh1bnNpZ25lZCBuZXdQaXhlbEZvcm1hdCkgY29uc3QK
K3sKKyAgICAvLyBGSVhNRTogU2hvdWxkIHdlIGNoZWNrIGZvciBlbnVtZXJhdGlvbiB2YWx1ZXMg
b3V0IG9mIHJhbmdlIGJlZm9yZSBjYWxsaW5nIHRoZSBtZXRob2Q/CisgICAgW21fbWV0YWwgc2V0
UGl4ZWxGb3JtYXQ6c3RhdGljX2Nhc3Q8TVRMUGl4ZWxGb3JtYXQ+KG5ld1BpeGVsRm9ybWF0KV07
Cit9CisKK01UTFJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciAqR1BVTGVn
YWN5UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjptZXRhbCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fbWV0YWwuZ2V0KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvbGVnYWN5L2NvY29hL0dQVUxlZ2FjeVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvck1ldGFs
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9jb2NvYS9H
UFVMZWdhY3lSZW5kZXJQaXBlbGluZURlc2NyaXB0b3JNZXRhbC5tbQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZTEx
ZWI5OWQ0MjUzZDQ3YTYwYzg1Yjc4ZTYzYmQ5NDg4ZjM0NmY5Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9jb2NvYS9HUFVMZWdh
Y3lSZW5kZXJQaXBlbGluZURlc2NyaXB0b3JNZXRhbC5tbQpAQCAtMCwwICsxLDgzIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmln
LmgiCisjaW1wb3J0ICJHUFVMZWdhY3lSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCIKKworI2lm
IEVOQUJMRShXRUJNRVRBTCkKKworI2ltcG9ydCAiR1BVTGVnYWN5RnVuY3Rpb24uaCIKKyNpbXBv
cnQgIkdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oIgor
I2ltcG9ydCAiTG9nZ2luZy5oIgorI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KKyNpbXBvcnQgPHd0
Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitHUFVMZWdhY3lSZW5kZXJQaXBl
bGluZURlc2NyaXB0b3I6OkdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcigpCisgICAg
OiBtX21ldGFsIHsgYWRvcHROUyhbTVRMUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yIG5ld10pIH0K
K3sKKyAgICBMT0coV2ViTWV0YWwsICJHUFVMZWdhY3lSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6
OkdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcigpIik7Cit9CisKK3Vuc2lnbmVkIEdQ
VUxlZ2FjeVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6ZGVwdGhBdHRhY2htZW50UGl4ZWxGb3Jt
YXQoKSBjb25zdAoreworICAgIHJldHVybiBbbV9tZXRhbCBkZXB0aEF0dGFjaG1lbnRQaXhlbEZv
cm1hdF07Cit9CisKK3ZvaWQgR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRE
ZXB0aEF0dGFjaG1lbnRQaXhlbEZvcm1hdCh1bnNpZ25lZCBuZXdQaXhlbEZvcm1hdCkgY29uc3QK
K3sKKyAgICBbbV9tZXRhbCBzZXREZXB0aEF0dGFjaG1lbnRQaXhlbEZvcm1hdDpzdGF0aWNfY2Fz
dDxNVExQaXhlbEZvcm1hdD4obmV3UGl4ZWxGb3JtYXQpXTsKK30KKwordm9pZCBHUFVMZWdhY3lS
ZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnNldFZlcnRleEZ1bmN0aW9uKGNvbnN0IEdQVUxlZ2Fj
eUZ1bmN0aW9uJiBuZXdGdW5jdGlvbikgY29uc3QKK3sKKyAgICBbbV9tZXRhbCBzZXRWZXJ0ZXhG
dW5jdGlvbjpuZXdGdW5jdGlvbi5tZXRhbCgpXTsKK30KKwordm9pZCBHUFVMZWdhY3lSZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3I6OnNldEZyYWdtZW50RnVuY3Rpb24oY29uc3QgR1BVTGVnYWN5RnVu
Y3Rpb24mIG5ld0Z1bmN0aW9uKSBjb25zdAoreworICAgIFttX21ldGFsIHNldEZyYWdtZW50RnVu
Y3Rpb246bmV3RnVuY3Rpb24ubWV0YWwoKV07Cit9CisKK1ZlY3RvcjxHUFVMZWdhY3lSZW5kZXJQ
aXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I+IEdQVUxlZ2FjeVJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvcjo6Y29sb3JBdHRhY2htZW50cygpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IFdo
eSBpcyBpdCBhbHdheXMgT0sgdG8gcmV0dXJuIGV4YWN0bHkgb25lIGF0dGFjaG1lbnQ/CisgICAg
cmV0dXJuIHsgeyBbW21fbWV0YWwgY29sb3JBdHRhY2htZW50c10gb2JqZWN0QXRJbmRleGVkU3Vi
c2NyaXB0OjBdIH0gfTsKK30KKwordm9pZCBHUFVMZWdhY3lSZW5kZXJQaXBlbGluZURlc2NyaXB0
b3I6OnJlc2V0KCkgY29uc3QKK3sKKyAgICBbbV9tZXRhbCByZXNldF07Cit9CisKK01UTFJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvciAqR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpt
ZXRhbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbWV0YWwuZ2V0KCk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L2NvY29hL0dQVUxlZ2FjeVJlbmRlclBpcGVsaW5lU3Rh
dGVNZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kv
Y29jb2EvR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVTdGF0ZU1ldGFsLm1tCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIy
YTE2YmM5MGRhZTllNmY3MjBhZTBmZTAzNTk3MThkMGY0NGJmYzgKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L2NvY29hL0dQVUxl
Z2FjeVJlbmRlclBpcGVsaW5lU3RhdGVNZXRhbC5tbQpAQCAtMCwwICsxLDY3IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgi
CisjaW1wb3J0ICJHUFVMZWdhY3lSZW5kZXJQaXBlbGluZVN0YXRlLmgiCisKKyNpZiBFTkFCTEUo
V0VCTUVUQUwpCisKKyNpbXBvcnQgIkdQVUxlZ2FjeURldmljZS5oIgorI2ltcG9ydCAiR1BVTGVn
YWN5UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmgiCisjaW1wb3J0ICJMb2dnaW5nLmgiCisjaW1w
b3J0IDxNZXRhbC9NZXRhbC5oPgorI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVTdGF0ZTo6R1BVTGVn
YWN5UmVuZGVyUGlwZWxpbmVTdGF0ZShjb25zdCBHUFVMZWdhY3lEZXZpY2UmIGRldmljZSwgY29u
c3QgR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQoreworICAg
IExPRyhXZWJNZXRhbCwgIkdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lU3RhdGU6OkdQVUxlZ2FjeVJl
bmRlclBpcGVsaW5lU3RhdGUoKSIpOworCisgICAgbV9tZXRhbCA9IGFkb3B0TlMoW2RldmljZS5t
ZXRhbCgpIG5ld1JlbmRlclBpcGVsaW5lU3RhdGVXaXRoRGVzY3JpcHRvcjpkZXNjcmlwdG9yLm1l
dGFsKCkgZXJyb3I6bmlsXSk7Cit9CisKK1N0cmluZyBHUFVMZWdhY3lSZW5kZXJQaXBlbGluZVN0
YXRlOjpsYWJlbCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX21ldGFsKQorICAgICAgICByZXR1cm4g
ZW1wdHlTdHJpbmcoKTsKKyAgICByZXR1cm4gW21fbWV0YWwgbGFiZWxdOworfQorCit2b2lkIEdQ
VUxlZ2FjeVJlbmRlclBpcGVsaW5lU3RhdGU6OnNldExhYmVsKGNvbnN0IFN0cmluZyYpIGNvbnN0
Cit7CisgICAgLy8gRklYTUU6IFRoZSBNVExSZW5kZXJQaXBlbGluZVN0YXRlIHByb3RvY29sIGRv
ZXMgbm90IGFsbG93IHNldHRpbmcgdGhlIGxhYmVsLgorICAgIC8vIFRoZSBsYWJlbCBoYXMgdG8g
YmUgc2V0IG9uIHRoZSBkZXNjcmlwdG9yIHdoZW4gY3JlYXRpbmcgdGhlIHN0YXRlIG9iamVjdC4K
KyAgICAvLyBXZSBzaG91bGQgY29uc2lkZXIgY2hhbmdpbmcgdGhlIFdlYk1ldGFsIGludGVyZmFj
ZSB0byBub3QgcmVxdWlyZSB0aGlzIQorfQorCitNVExSZW5kZXJQaXBlbGluZVN0YXRlICpHUFVM
ZWdhY3lSZW5kZXJQaXBlbGluZVN0YXRlOjptZXRhbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
bWV0YWwuZ2V0KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L2NvY29h
L0dQVUxlZ2FjeVRleHR1cmVEZXNjcmlwdG9yTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L2NvY29hL0dQVUxlZ2FjeVRleHR1cmVEZXNjcmlwdG9y
TWV0YWwubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNTFjN2M3NzY2OGFjNzI0ZDNlODhlYWUxMWM2ZDJjOWEwOTBj
NTY0ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9sZWdhY3kvY29jb2EvR1BVTGVnYWN5VGV4dHVyZURlc2NyaXB0b3JNZXRhbC5tbQpAQCAt
MCwwICsxLDExNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiR1BVTGVnYWN5VGV4dHVyZURlc2NyaXB0
b3IuaCIKKworI2lmIEVOQUJMRShXRUJNRVRBTCkKKworI2ltcG9ydCAiTG9nZ2luZy5oIgorI2lt
cG9ydCA8TWV0YWwvTWV0YWwuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitHUFVMZWdhY3lU
ZXh0dXJlRGVzY3JpcHRvcjo6R1BVTGVnYWN5VGV4dHVyZURlc2NyaXB0b3IodW5zaWduZWQgcGl4
ZWxGb3JtYXQsIHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQsIGJvb2wgbWlwbWFwcGVk
KQoreworICAgIExPRyhXZWJNZXRhbCwgIkdQVUxlZ2FjeVRleHR1cmVEZXNjcmlwdG9yOjpHUFVM
ZWdhY3lUZXh0dXJlRGVzY3JpcHRvcigpIik7CisKKyAgICBtX21ldGFsID0gW01UTFRleHR1cmVE
ZXNjcmlwdG9yIHRleHR1cmUyRERlc2NyaXB0b3JXaXRoUGl4ZWxGb3JtYXQ6c3RhdGljX2Nhc3Q8
TVRMUGl4ZWxGb3JtYXQ+KHBpeGVsRm9ybWF0KSB3aWR0aDp3aWR0aCBoZWlnaHQ6aGVpZ2h0IG1p
cG1hcHBlZDptaXBtYXBwZWRdOworfQorCit1bnNpZ25lZCBHUFVMZWdhY3lUZXh0dXJlRGVzY3Jp
cHRvcjo6d2lkdGgoKSBjb25zdAoreworICAgIHJldHVybiBbbV9tZXRhbCB3aWR0aF07Cit9CisK
K3ZvaWQgR1BVTGVnYWN5VGV4dHVyZURlc2NyaXB0b3I6OnNldFdpZHRoKHVuc2lnbmVkIG5ld1dp
ZHRoKSBjb25zdAoreworICAgIEFTU0VSVChtX21ldGFsKTsKKyAgICBbbV9tZXRhbCBzZXRXaWR0
aDpuZXdXaWR0aF07Cit9CisKK3Vuc2lnbmVkIEdQVUxlZ2FjeVRleHR1cmVEZXNjcmlwdG9yOjpo
ZWlnaHQoKSBjb25zdAoreworICAgIHJldHVybiBbbV9tZXRhbCBoZWlnaHRdOworfQorCit2b2lk
IEdQVUxlZ2FjeVRleHR1cmVEZXNjcmlwdG9yOjpzZXRIZWlnaHQodW5zaWduZWQgbmV3SGVpZ2h0
KSBjb25zdAoreworICAgIEFTU0VSVChtX21ldGFsKTsKKyAgICBbbV9tZXRhbCBzZXRIZWlnaHQ6
bmV3SGVpZ2h0XTsKK30KKwordW5zaWduZWQgR1BVTGVnYWN5VGV4dHVyZURlc2NyaXB0b3I6OnNh
bXBsZUNvdW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gW21fbWV0YWwgc2FtcGxlQ291bnRdOwor
fQorCit2b2lkIEdQVUxlZ2FjeVRleHR1cmVEZXNjcmlwdG9yOjpzZXRTYW1wbGVDb3VudCh1bnNp
Z25lZCBuZXdTYW1wbGVDb3VudCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9tZXRhbCk7CisgICAg
W21fbWV0YWwgc2V0U2FtcGxlQ291bnQ6bmV3U2FtcGxlQ291bnRdOworfQorCit1bnNpZ25lZCBH
UFVMZWdhY3lUZXh0dXJlRGVzY3JpcHRvcjo6dGV4dHVyZVR5cGUoKSBjb25zdAoreworICAgIHJl
dHVybiBbbV9tZXRhbCB0ZXh0dXJlVHlwZV07Cit9CisKK3ZvaWQgR1BVTGVnYWN5VGV4dHVyZURl
c2NyaXB0b3I6OnNldFRleHR1cmVUeXBlKHVuc2lnbmVkIG5ld1RleHR1cmVUeXBlKSBjb25zdAor
eworICAgIEFTU0VSVChtX21ldGFsKTsKKyAgICBbbV9tZXRhbCBzZXRUZXh0dXJlVHlwZTpzdGF0
aWNfY2FzdDxNVExUZXh0dXJlVHlwZT4obmV3VGV4dHVyZVR5cGUpXTsKK30KKwordW5zaWduZWQg
R1BVTGVnYWN5VGV4dHVyZURlc2NyaXB0b3I6OnN0b3JhZ2VNb2RlKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gW21fbWV0YWwgc3RvcmFnZU1vZGVdOworfQorCit2b2lkIEdQVUxlZ2FjeVRleHR1cmVE
ZXNjcmlwdG9yOjpzZXRTdG9yYWdlTW9kZSh1bnNpZ25lZCBuZXdTdG9yYWdlTW9kZSkgY29uc3QK
K3sKKyAgICBbbV9tZXRhbCBzZXRTdG9yYWdlTW9kZTpzdGF0aWNfY2FzdDxNVExTdG9yYWdlTW9k
ZT4obmV3U3RvcmFnZU1vZGUpXTsKK30KKwordW5zaWduZWQgR1BVTGVnYWN5VGV4dHVyZURlc2Ny
aXB0b3I6OnVzYWdlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gW21fbWV0YWwgdXNhZ2VdOworfQor
Cit2b2lkIEdQVUxlZ2FjeVRleHR1cmVEZXNjcmlwdG9yOjpzZXRVc2FnZSh1bnNpZ25lZCBuZXdV
c2FnZSkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9tZXRhbCk7CisgICAgW21fbWV0YWwgc2V0VXNh
Z2U6bmV3VXNhZ2VdOworfQorCitNVExUZXh0dXJlRGVzY3JpcHRvciAqR1BVTGVnYWN5VGV4dHVy
ZURlc2NyaXB0b3I6Om1ldGFsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9tZXRhbC5nZXQoKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvY29jb2EvR1BVTGVnYWN5VGV4
dHVyZU1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2Fj
eS9jb2NvYS9HUFVMZWdhY3lUZXh0dXJlTWV0YWwubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGQ3NzhkY2MxYjZk
N2I5MjRkNDUwYjU2ODRhNDAwZGM1OWRlMGZiOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvY29jb2EvR1BVTGVnYWN5VGV4dHVy
ZU1ldGFsLm1tCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkdQVUxlZ2FjeVRl
eHR1cmUuaCIKKworI2lmIEVOQUJMRShXRUJNRVRBTCkKKworI2ltcG9ydCAiR1BVTGVnYWN5RGV2
aWNlLmgiCisjaW1wb3J0ICJHUFVMZWdhY3lEcmF3YWJsZS5oIgorI2ltcG9ydCAiR1BVTGVnYWN5
VGV4dHVyZURlc2NyaXB0b3IuaCIKKyNpbXBvcnQgIkxvZ2dpbmcuaCIKKyNpbXBvcnQgPE1ldGFs
L01ldGFsLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworR1BVTGVnYWN5VGV4dHVyZTo6R1BV
TGVnYWN5VGV4dHVyZShjb25zdCBHUFVMZWdhY3lEZXZpY2UmIGRldmljZSwgY29uc3QgR1BVTGVn
YWN5VGV4dHVyZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCit7CisgICAgTE9HKFdlYk1ldGFsLCAi
R1BVTGVnYWN5VGV4dHVyZTo6R1BVTGVnYWN5VGV4dHVyZSgpIik7CisKKyAgICBpZiAoIWRlc2Ny
aXB0b3IubWV0YWwoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9tZXRhbCA9IGFkb3B0TlMo
W2RldmljZS5tZXRhbCgpIG5ld1RleHR1cmVXaXRoRGVzY3JpcHRvcjpkZXNjcmlwdG9yLm1ldGFs
KCldKTsKK30KKworR1BVTGVnYWN5VGV4dHVyZTo6R1BVTGVnYWN5VGV4dHVyZShjb25zdCBHUFVM
ZWdhY3lEcmF3YWJsZSYgb3RoZXIpCisgICAgOiBtX21ldGFsIHsgb3RoZXIudGV4dHVyZSgpIH0K
K3sKKyAgICBMT0coV2ViTWV0YWwsICJHUFVMZWdhY3lUZXh0dXJlOjpHUFVMZWdhY3lUZXh0dXJl
KCkiKTsKK30KKwordW5zaWduZWQgR1BVTGVnYWN5VGV4dHVyZTo6d2lkdGgoKSBjb25zdAorewor
ICAgIHJldHVybiBtX21ldGFsLmdldCgpLndpZHRoOworfQorCit1bnNpZ25lZCBHUFVMZWdhY3lU
ZXh0dXJlOjpoZWlnaHQoKSBjb25zdAoreworICAgIHJldHVybiBtX21ldGFsLmdldCgpLmhlaWdo
dDsKK30KKworTVRMVGV4dHVyZSAqR1BVTGVnYWN5VGV4dHVyZTo6bWV0YWwoKSBjb25zdAorewor
ICAgIHJldHVybiBtX21ldGFsLmdldCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0
YWwvR1BVTGVnYWN5QnVmZmVyTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tZXRhbC9HUFVMZWdhY3lCdWZmZXJNZXRhbC5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggY2JjM2UzNGE0MjQ4MTliMThjZmUwN2FhMjFjMDZhNDYyMWZiMzY4Ny4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVMZWdhY3lCdWZmZXJNZXRhbC5tbQorKysgL2Rldi9u
dWxsCkBAIC0xLDY5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkdQVUxlZ2FjeUJ1ZmZlci5o
IgotCi0jaWYgRU5BQkxFKFdFQk1FVEFMKQotCi0jaW1wb3J0ICJHUFVMZWdhY3lEZXZpY2UuaCIK
LSNpbXBvcnQgIkxvZ2dpbmcuaCIKLSNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0FycmF5QnVmZmVy
Vmlldy5oPgotI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KLSNpbXBvcnQgPHd0Zi9HaWdhY2FnZS5o
PgotI2ltcG9ydCA8d3RmL1BhZ2VCbG9jay5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUdQ
VUxlZ2FjeUJ1ZmZlcjo6R1BVTGVnYWN5QnVmZmVyKGNvbnN0IEdQVUxlZ2FjeURldmljZSYgZGV2
aWNlLCBjb25zdCBKU0M6OkFycmF5QnVmZmVyVmlldyYgZGF0YSkKLXsKLSAgICBMT0coV2ViTWV0
YWwsICJHUFVCdWZmZXI6OkdQVUJ1ZmZlcigpIik7Ci0KLSAgICBpZiAoIWRldmljZS5tZXRhbCgp
KQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgc2l6ZV90IHBhZ2VTaXplID0gV1RGOjpwYWdl
U2l6ZSgpOwotICAgIHNpemVfdCBwYWdlQWxpZ25lZFNpemUgPSByb3VuZFVwVG9NdWx0aXBsZU9m
KHBhZ2VTaXplLCBkYXRhLmJ5dGVMZW5ndGgoKSk7Ci0gICAgdm9pZCogcGFnZUFsaWduZWRDb3B5
ID0gR2lnYWNhZ2U6OnRyeUFsaWduZWRNYWxsb2MoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgcGFnZVNp
emUsIHBhZ2VBbGlnbmVkU2l6ZSk7Ci0gICAgaWYgKCFwYWdlQWxpZ25lZENvcHkpCi0gICAgICAg
IHJldHVybjsKLSAgICBtZW1jcHkocGFnZUFsaWduZWRDb3B5LCBkYXRhLmJhc2VBZGRyZXNzKCks
IGRhdGEuYnl0ZUxlbmd0aCgpKTsKLSAgICBtX2NvbnRlbnRzID0gQXJyYXlCdWZmZXI6OmNyZWF0
ZUZyb21CeXRlcyhwYWdlQWxpZ25lZENvcHksIGRhdGEuYnl0ZUxlbmd0aCgpLCBbXSAodm9pZCog
cHRyKSB7Ci0gICAgICAgIEdpZ2FjYWdlOjphbGlnbmVkRnJlZShHaWdhY2FnZTo6UHJpbWl0aXZl
LCBwdHIpOwotICAgIH0pOwotICAgIG1fY29udGVudHMtPnJlZigpOwotICAgIEFycmF5QnVmZmVy
KiBjYXB0dXJlZENvbnRlbnRzID0gbV9jb250ZW50cy5nZXQoKTsKLSAgICBtX21ldGFsID0gYWRv
cHROUyhbZGV2aWNlLm1ldGFsKCkgbmV3QnVmZmVyV2l0aEJ5dGVzTm9Db3B5Om1fY29udGVudHMt
PmRhdGEoKSBsZW5ndGg6cGFnZUFsaWduZWRTaXplIG9wdGlvbnM6TVRMUmVzb3VyY2VPcHRpb25D
UFVDYWNoZU1vZGVEZWZhdWx0IGRlYWxsb2NhdG9yOl4odm9pZCosIE5TVUludGVnZXIpIHsKLSAg
ICAgICAgY2FwdHVyZWRDb250ZW50cy0+ZGVyZWYoKTsKLSAgICB9XSk7Ci0gICAgaWYgKCFtX21l
dGFsKSB7Ci0gICAgICAgIG1fY29udGVudHMtPmRlcmVmKCk7Ci0gICAgICAgIG1fY29udGVudHMg
PSBudWxscHRyOwotICAgIH0KLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVUxl
Z2FjeUNvbW1hbmRCdWZmZXJNZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL21ldGFsL0dQVUxlZ2FjeUNvbW1hbmRCdWZmZXJNZXRhbC5tbQpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNmIyYzYwMTUyMzIwMDE1NjUzNjdmN2FiZDM4N2MxYmUxZjRlMWVkZi4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVMZWdhY3lDb21tYW5kQnVmZmVyTWV0YWwu
bW0KKysrIC9kZXYvbnVsbApAQCAtMSw2NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJHUFVM
ZWdhY3lDb21tYW5kQnVmZmVyLmgiCi0KLSNpZiBFTkFCTEUoV0VCTUVUQUwpCi0KLSNpbXBvcnQg
IkdQVUxlZ2FjeUNvbW1hbmRRdWV1ZS5oIgotI2ltcG9ydCAiR1BVTGVnYWN5RHJhd2FibGUuaCIK
LSNpbXBvcnQgIkxvZ2dpbmcuaCIKLSNpbXBvcnQgPE1ldGFsL01ldGFsLmg+Ci0jaW1wb3J0IDx3
dGYvQmxvY2tQdHIuaD4KLSNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotR1BVTGVnYWN5Q29tbWFuZEJ1ZmZlcjo6R1BVTGVnYWN5Q29tbWFuZEJ1ZmZl
cihjb25zdCBHUFVMZWdhY3lDb21tYW5kUXVldWUmIHF1ZXVlLCBGdW5jdGlvbjx2b2lkKCk+JiYg
Y29tcGxldGVkQ2FsbGJhY2spCi0gICAgOiBtX21ldGFsIHsgW3F1ZXVlLm1ldGFsKCkgY29tbWFu
ZEJ1ZmZlcl0gfQotewotICAgIExPRyhXZWJNZXRhbCwgIkdQVUNvbW1hbmRCdWZmZXI6OkdQVUNv
bW1hbmRCdWZmZXIoKSIpOwotCi0gICAgW21fbWV0YWwgYWRkQ29tcGxldGVkSGFuZGxlcjpCbG9j
a1B0cjx2b2lkIChpZDxNVExDb21tYW5kQnVmZmVyPik+Ojpmcm9tQ2FsbGFibGUoW2NvbXBsZXRl
ZENhbGxiYWNrID0gV1RGTW92ZShjb21wbGV0ZWRDYWxsYmFjayldIChpZDxNVExDb21tYW5kQnVm
ZmVyPikgbXV0YWJsZSB7Ci0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQoV1RGTW92ZShjb21wbGV0
ZWRDYWxsYmFjaykpOwotICAgIH0pLmdldCgpXTsKLX0KLQotdm9pZCBHUFVMZWdhY3lDb21tYW5k
QnVmZmVyOjpwcmVzZW50RHJhd2FibGUoR1BVTGVnYWN5RHJhd2FibGUmIGRyYXdhYmxlKSBjb25z
dAotewotICAgIGlmICghbV9tZXRhbCB8fCAhZHJhd2FibGUubWV0YWwoKSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgW21fbWV0YWwgcHJlc2VudERyYXdhYmxlOmRyYXdhYmxlLm1ldGFsKCldOwot
ICAgIGRyYXdhYmxlLnJlbGVhc2UoKTsKLX0KLQotdm9pZCBHUFVMZWdhY3lDb21tYW5kQnVmZmVy
Ojpjb21taXQoKSBjb25zdAotewotICAgIFttX21ldGFsIGNvbW1pdF07Ci19Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVMZWdhY3lDb21tYW5kUXVldWVNZXRhbC5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVUxlZ2FjeUNvbW1hbmRRdWV1ZU1l
dGFsLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMjMzZmY4MGY4ZDY3YjE1Njk0
ODNlZTlmNDk1ZTk5ZjYwN2RjYzJlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVUxl
Z2FjeUNvbW1hbmRRdWV1ZU1ldGFsLm1tCisrKyAvZGV2L251bGwKQEAgLTEsNzMgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNv
bmZpZy5oIgotI2ltcG9ydCAiR1BVTGVnYWN5Q29tbWFuZFF1ZXVlLmgiCi0KLSNpZiBFTkFCTEUo
V0VCTUVUQUwpCi0KLSNpbXBvcnQgIkdQVUxlZ2FjeURldmljZS5oIgotI2ltcG9ydCAiTG9nZ2lu
Zy5oIgotI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KLSNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IGNv
bW1hbmRRdWV1ZURlZmF1bHRMYWJlbCA9IEAiY29tLmFwcGxlLldlYktpdCI7Ci1zdGF0aWMgTlNT
dHJpbmcgKiBjb25zdCBjb21tYW5kUXVldWVMYWJlbFByZWZpeCA9IEAiY29tLmFwcGxlLldlYktp
dC4iOwotCi1HUFVMZWdhY3lDb21tYW5kUXVldWU6OkdQVUxlZ2FjeUNvbW1hbmRRdWV1ZShjb25z
dCBHUFVMZWdhY3lEZXZpY2UmIGRldmljZSkKLSAgICA6IG1fbWV0YWwgeyBhZG9wdE5TKFtkZXZp
Y2UubWV0YWwoKSBuZXdDb21tYW5kUXVldWVdKSB9Ci17Ci0gICAgTE9HKFdlYk1ldGFsLCAiR1BV
TGVnYWN5Q29tbWFuZFF1ZXVlOjpHUFVMZWdhY3lDb21tYW5kUXVldWUoKSIpOwotCi0gICAgW21f
bWV0YWwgc2V0TGFiZWw6Y29tbWFuZFF1ZXVlRGVmYXVsdExhYmVsXTsKLX0KLQotU3RyaW5nIEdQ
VUxlZ2FjeUNvbW1hbmRRdWV1ZTo6bGFiZWwoKSBjb25zdAotewotICAgIGlmICghbV9tZXRhbCkK
LSAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Ci0KLSAgICBOU1N0cmluZyAqcHJlZml4ZWRM
YWJlbCA9IFttX21ldGFsIGxhYmVsXTsKLQotICAgIGlmIChbcHJlZml4ZWRMYWJlbCBpc0VxdWFs
VG9TdHJpbmc6Y29tbWFuZFF1ZXVlRGVmYXVsdExhYmVsXSkKLSAgICAgICAgcmV0dXJuIGVtcHR5
U3RyaW5nKCk7Ci0KLSAgICBBU1NFUlQocHJlZml4ZWRMYWJlbC5sZW5ndGggPiBjb21tYW5kUXVl
dWVMYWJlbFByZWZpeC5sZW5ndGgpOwotICAgIHJldHVybiBbcHJlZml4ZWRMYWJlbCBzdWJzdHJp
bmdGcm9tSW5kZXg6Y29tbWFuZFF1ZXVlTGFiZWxQcmVmaXgubGVuZ3RoXTsKLX0KLQotdm9pZCBH
UFVMZWdhY3lDb21tYW5kUXVldWU6OnNldExhYmVsKGNvbnN0IFN0cmluZyYgbGFiZWwpIGNvbnN0
Ci17Ci0gICAgaWYgKGxhYmVsLmlzRW1wdHkoKSkKLSAgICAgICAgW21fbWV0YWwgc2V0TGFiZWw6
Y29tbWFuZFF1ZXVlRGVmYXVsdExhYmVsXTsKLSAgICBlbHNlCi0gICAgICAgIFttX21ldGFsIHNl
dExhYmVsOltjb21tYW5kUXVldWVMYWJlbFByZWZpeCBzdHJpbmdCeUFwcGVuZGluZ1N0cmluZzps
YWJlbF1dOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5Q29tcHV0
ZUNvbW1hbmRFbmNvZGVyTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tZXRhbC9HUFVMZWdhY3lDb21wdXRlQ29tbWFuZEVuY29kZXJNZXRhbC5tbQpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggYTEwMjZmMjUwYjI2M2JjMGZkMDQyNDhiZWZhYjdkNzdlNzY4
MzllMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVMZWdhY3lDb21wdXRlQ29tbWFu
ZEVuY29kZXJNZXRhbC5tbQorKysgL2Rldi9udWxsCkBAIC0xLDc5ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTcgWXVpY2hpcm8gS2lrdXJhICh5Lmtpa3VyYUBnbWFpbC5jb20pCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZp
Zy5oIgotI2ltcG9ydCAiR1BVTGVnYWN5Q29tcHV0ZUNvbW1hbmRFbmNvZGVyLmgiCi0KLSNpZiBF
TkFCTEUoV0VCTUVUQUwpCi0KLSNpbXBvcnQgIkdQVUxlZ2FjeUJ1ZmZlci5oIgotI2ltcG9ydCAi
R1BVTGVnYWN5Q29tbWFuZEJ1ZmZlci5oIgotI2ltcG9ydCAiR1BVTGVnYWN5Q29tcHV0ZVBpcGVs
aW5lU3RhdGUuaCIKLSNpbXBvcnQgIkdQVUxlZ2FjeVNpemUuaCIKLSNpbXBvcnQgIkxvZ2dpbmcu
aCIKLSNpbXBvcnQgPE1ldGFsL01ldGFsLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3Rh
dGljIGlubGluZSBNVExTaXplIE1UTFNpemVNYWtlKEdQVUxlZ2FjeVNpemUgc2l6ZSkKLXsKLSAg
ICByZXR1cm4geyBzaXplLndpZHRoLCBzaXplLmhlaWdodCwgc2l6ZS5kZXB0aCB9OwotfQotCi1H
UFVMZWdhY3lDb21wdXRlQ29tbWFuZEVuY29kZXI6OkdQVUxlZ2FjeUNvbXB1dGVDb21tYW5kRW5j
b2Rlcihjb25zdCBHUFVMZWdhY3lDb21tYW5kQnVmZmVyJiBidWZmZXIpCi0gICAgOiBtX21ldGFs
IHsgW2J1ZmZlci5tZXRhbCgpIGNvbXB1dGVDb21tYW5kRW5jb2Rlcl0gfQotewotICAgIExPRyhX
ZWJNZXRhbCwgIkdQVUxlZ2FjeUNvbXB1dGVDb21tYW5kRW5jb2Rlcjo6R1BVTGVnYWN5Q29tcHV0
ZUNvbW1hbmRFbmNvZGVyKCkiKTsKLX0KLQotdm9pZCBHUFVMZWdhY3lDb21wdXRlQ29tbWFuZEVu
Y29kZXI6OnNldENvbXB1dGVQaXBlbGluZVN0YXRlKGNvbnN0IEdQVUxlZ2FjeUNvbXB1dGVQaXBl
bGluZVN0YXRlJiBjb21wdXRlUGlwZWxpbmVTdGF0ZSkgY29uc3QKLXsKLSAgICBpZiAoIWNvbXB1
dGVQaXBlbGluZVN0YXRlLm1ldGFsKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIFttX21ldGFs
IHNldENvbXB1dGVQaXBlbGluZVN0YXRlOmNvbXB1dGVQaXBlbGluZVN0YXRlLm1ldGFsKCldOwot
fQotICAgIAotdm9pZCBHUFVMZWdhY3lDb21wdXRlQ29tbWFuZEVuY29kZXI6OnNldEJ1ZmZlcihj
b25zdCBHUFVMZWdhY3lCdWZmZXImIGJ1ZmZlciwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBp
bmRleCkgY29uc3QKLXsKLSAgICBpZiAoIWJ1ZmZlci5tZXRhbCgpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBbbV9tZXRhbCBzZXRCdWZmZXI6YnVmZmVyLm1ldGFsKCkgb2Zmc2V0Om9mZnNldCBh
dEluZGV4OmluZGV4XTsKLX0KLSAgICAKLXZvaWQgR1BVTGVnYWN5Q29tcHV0ZUNvbW1hbmRFbmNv
ZGVyOjpkaXNwYXRjaChHUFVMZWdhY3lTaXplIHRocmVhZGdyb3Vwc1BlckdyaWQsIEdQVUxlZ2Fj
eVNpemUgdGhyZWFkc1BlclRocmVhZGdyb3VwKSBjb25zdAotewotICAgIFttX21ldGFsIGRpc3Bh
dGNoVGhyZWFkZ3JvdXBzOk1UTFNpemVNYWtlKHRocmVhZGdyb3Vwc1BlckdyaWQpIHRocmVhZHNQ
ZXJUaHJlYWRncm91cDpNVExTaXplTWFrZSh0aHJlYWRzUGVyVGhyZWFkZ3JvdXApXTsKLX0KLQot
dm9pZCBHUFVMZWdhY3lDb21wdXRlQ29tbWFuZEVuY29kZXI6OmVuZEVuY29kaW5nKCkgY29uc3QK
LXsKLSAgICBbbV9tZXRhbCBlbmRFbmNvZGluZ107Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tZXRhbC9HUFVMZWdhY3lDb21wdXRlUGlwZWxpbmVTdGF0ZU1ldGFsLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5Q29tcHV0ZVBpcGVsaW5lU3Rh
dGVNZXRhbC5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTkwNTMxZWY2ZGNkMGUy
NTk1MTc0MGFhN2MyMjA3NTMxOWI0MjVlNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9H
UFVMZWdhY3lDb21wdXRlUGlwZWxpbmVTdGF0ZU1ldGFsLm1tCisrKyAvZGV2L251bGwKQEAgLTEs
NTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBZdWljaGlybyBLaWt1cmEgKHku
a2lrdXJhQGdtYWlsLmNvbSkKLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgot
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJHUFVMZWdhY3lDb21wdXRlUGlwZWxp
bmVTdGF0ZS5oIgotCi0jaWYgRU5BQkxFKFdFQk1FVEFMKQotCi0jaW1wb3J0ICJHUFVMZWdhY3lE
ZXZpY2UuaCIKLSNpbXBvcnQgIkdQVUxlZ2FjeUZ1bmN0aW9uLmgiCi0jaW1wb3J0ICJMb2dnaW5n
LmgiCi0jaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUdQ
VUxlZ2FjeUNvbXB1dGVQaXBlbGluZVN0YXRlOjpHUFVMZWdhY3lDb21wdXRlUGlwZWxpbmVTdGF0
ZShjb25zdCBHUFVMZWdhY3lEZXZpY2UmIGRldmljZSwgY29uc3QgR1BVTGVnYWN5RnVuY3Rpb24m
IGZ1bmN0aW9uKQotewotICAgIExPRyhXZWJNZXRhbCwgIkdQVUxlZ2FjeUNvbXB1dGVQaXBlbGlu
ZVN0YXRlOjpHUFVMZWdhY3lDb21wdXRlUGlwZWxpbmVTdGF0ZSgpIik7Ci0KLSAgICBpZiAoIWZ1
bmN0aW9uLm1ldGFsKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fbWV0YWwgPSBhZG9wdE5T
KFtkZXZpY2UubWV0YWwoKSBuZXdDb21wdXRlUGlwZWxpbmVTdGF0ZVdpdGhGdW5jdGlvbjpmdW5j
dGlvbi5tZXRhbCgpIGVycm9yOm5pbF0pOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0K
LSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0
YWwvR1BVTGVnYWN5RGVwdGhTdGVuY2lsRGVzY3JpcHRvck1ldGFsLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5RGVwdGhTdGVuY2lsRGVzY3JpcHRv
ck1ldGFsLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYzkwMmIzZWMyODExZjkz
M2ZkY2E2YmFiMGU1ZDM5YzllNWQwZDhlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQ
VUxlZ2FjeURlcHRoU3RlbmNpbERlc2NyaXB0b3JNZXRhbC5tbQorKysgL2Rldi9udWxsCkBAIC0x
LDY2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkdQVUxlZ2FjeURlcHRoU3RlbmNpbERlc2Ny
aXB0b3IuaCIKLQotI2lmIEVOQUJMRShXRUJNRVRBTCkKLQotI2ltcG9ydCAiR1BVTGVnYWN5RW51
bXMuaCIKLSNpbXBvcnQgIkxvZ2dpbmcuaCIKLSNpbXBvcnQgPE1ldGFsL01ldGFsLmg+Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotR1BVTGVnYWN5RGVwdGhTdGVuY2lsRGVzY3JpcHRvcjo6R1BV
TGVnYWN5RGVwdGhTdGVuY2lsRGVzY3JpcHRvcigpCi0gICAgOiBtX21ldGFsIHsgYWRvcHROUyhb
TVRMRGVwdGhTdGVuY2lsRGVzY3JpcHRvciBuZXddKSB9Ci17Ci0gICAgTE9HKFdlYk1ldGFsLCAi
R1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvcjo6R1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvcigpIik7
Ci19Ci0KLWJvb2wgR1BVTGVnYWN5RGVwdGhTdGVuY2lsRGVzY3JpcHRvcjo6ZGVwdGhXcml0ZUVu
YWJsZWQoKSBjb25zdAotewotICAgIHJldHVybiBbbV9tZXRhbCBpc0RlcHRoV3JpdGVFbmFibGVk
XTsKLX0KLQotdm9pZCBHUFVMZWdhY3lEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yOjpzZXREZXB0aFdy
aXRlRW5hYmxlZChib29sIG5ld0RlcHRoV3JpdGVFbmFibGVkKSBjb25zdAotewotICAgIFttX21l
dGFsIHNldERlcHRoV3JpdGVFbmFibGVkOm5ld0RlcHRoV3JpdGVFbmFibGVkXTsKLX0KLQotR1BV
TGVnYWN5Q29tcGFyZUZ1bmN0aW9uIEdQVUxlZ2FjeURlcHRoU3RlbmNpbERlc2NyaXB0b3I6OmRl
cHRoQ29tcGFyZUZ1bmN0aW9uKCkgY29uc3QKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R1BV
TGVnYWN5Q29tcGFyZUZ1bmN0aW9uPihbbV9tZXRhbCBkZXB0aENvbXBhcmVGdW5jdGlvbl0pOwot
fQotCi12b2lkIEdQVUxlZ2FjeURlcHRoU3RlbmNpbERlc2NyaXB0b3I6OnNldERlcHRoQ29tcGFy
ZUZ1bmN0aW9uKEdQVUxlZ2FjeUNvbXBhcmVGdW5jdGlvbiBuZXdGdW5jdGlvbikgY29uc3QKLXsK
LSAgICAvLyBGSVhNRTogRG8gd2UgbmVlZCB0byBjaGVjayBpZiB0aGUgZnVuY3Rpb24gdmFsdWUg
aXMgaW4gcmFuZ2UgYmVmb3JlIGNhc3RpbmcgdG8gTVRMQ29tcGFyZUZ1bmN0aW9uPwotICAgIFtt
X21ldGFsIHNldERlcHRoQ29tcGFyZUZ1bmN0aW9uOnN0YXRpY19jYXN0PE1UTENvbXBhcmVGdW5j
dGlvbj4obmV3RnVuY3Rpb24pXTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQ
VUxlZ2FjeURlcHRoU3RlbmNpbFN0YXRlTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tZXRhbC9HUFVMZWdhY3lEZXB0aFN0ZW5jaWxTdGF0ZU1ldGFsLm1tCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZWRiNDIwNDFjYTlhMjU1ZjNlYTE2YzQxYWI1YTc5
ZjU0NjBmYTY0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVUxlZ2FjeURlcHRoU3Rl
bmNpbFN0YXRlTWV0YWwubW0KKysrIC9kZXYvbnVsbApAQCAtMSw2MiArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgi
Ci0jaW1wb3J0ICJHUFVMZWdhY3lEZXB0aFN0ZW5jaWxTdGF0ZS5oIgotCi0jaWYgRU5BQkxFKFdF
Qk1FVEFMKQotCi0jaW1wb3J0ICJHUFVMZWdhY3lEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmgiCi0j
aW1wb3J0ICJHUFVMZWdhY3lEZXZpY2UuaCIKLSNpbXBvcnQgIkxvZ2dpbmcuaCIKLSNpbXBvcnQg
PE1ldGFsL01ldGFsLmg+Ci0jaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1HUFVMZWdhY3lEZXB0aFN0ZW5jaWxTdGF0ZTo6R1BVTGVnYWN5RGVw
dGhTdGVuY2lsU3RhdGUoY29uc3QgR1BVTGVnYWN5RGV2aWNlJiBkZXZpY2UsIGNvbnN0IEdQVUxl
Z2FjeURlcHRoU3RlbmNpbERlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCi0gICAgOiBtX21ldGFsIHsg
YWRvcHROUyhbZGV2aWNlLm1ldGFsKCkgbmV3RGVwdGhTdGVuY2lsU3RhdGVXaXRoRGVzY3JpcHRv
cjpkZXNjcmlwdG9yLm1ldGFsKCldKSB9Ci17Ci0gICAgTE9HKFdlYk1ldGFsLCAiR1BVTGVnYWN5
RGVwdGhTdGVuY2lsU3RhdGU6OkdQVUxlZ2FjeURlcHRoU3RlbmNpbFN0YXRlKCkiKTsKLX0KLQot
U3RyaW5nIEdQVUxlZ2FjeURlcHRoU3RlbmNpbFN0YXRlOjpsYWJlbCgpIGNvbnN0Ci17Ci0gICAg
aWYgKCFtX21ldGFsKQotICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKLQotICAgIHJldHVy
biBbbV9tZXRhbCBsYWJlbF07Ci19Ci0KLXZvaWQgR1BVTGVnYWN5RGVwdGhTdGVuY2lsU3RhdGU6
OnNldExhYmVsKGNvbnN0IFN0cmluZyYpIGNvbnN0Ci17Ci0gICAgLy8gRklYTUU6IFRoZSBNVExE
ZXB0aFN0ZW5jaWxTdGF0ZSBwcm90b2NvbCBkb2VzIG5vdCBhbGxvdyBzZXR0aW5nIHRoZSBsYWJl
bC4KLSAgICAvLyBUaGUgbGFiZWwgaGFzIHRvIGJlIHNldCBvbiB0aGUgZGVzY3JpcHRvciB3aGVu
IGNyZWF0aW5nIHRoZSBzdGF0ZSBvYmplY3QuCi0gICAgLy8gV2Ugc2hvdWxkIGNvbnNpZGVyIGNo
YW5naW5nIHRoZSBXZWJNZXRhbCBpbnRlcmZhY2UgdG8gbm90IHJlcXVpcmUgdGhpcyEKLX0KLSAg
ICAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVMZWdhY3lEZXZpY2VNZXRhbC5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVUxlZ2FjeURldmljZU1l
dGFsLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YTc2ZmM5N2E3MTg4ZmI1ZmJj
NjA2MDM2NDYxMWEzMDIxMTcwNmI0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVUxl
Z2FjeURldmljZU1ldGFsLm1tCisrKyAvZGV2L251bGwKQEAgLTEsOTAgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5o
IgotI2ltcG9ydCAiR1BVTGVnYWN5RGV2aWNlLmgiCi0KLSNpZiBFTkFCTEUoV0VCTUVUQUwpCi0K
LSNpbXBvcnQgIkxvZ2dpbmcuaCIKLSNpbXBvcnQgIldlYk1ldGFsTGF5ZXIuaCIKLSNpbXBvcnQg
PEphdmFTY3JpcHRDb3JlL0FycmF5QnVmZmVyLmg+Ci0jaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgot
I2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1HUFVMZWdhY3lEZXZpY2U6OkdQVUxlZ2FjeURldmljZSgpCi0gICAgOiBtX21ldGFsIHsg
YWRvcHROUyhNVExDcmVhdGVTeXN0ZW1EZWZhdWx0RGV2aWNlKCkpIH0KLXsKLQotICAgIGlmICgh
bV9tZXRhbCkgewotICAgICAgICBMT0coV2ViTWV0YWwsICJHUFVMZWdhY3lEZXZpY2U6OkdQVUxl
Z2FjeURldmljZSAtLSBjb3VsZCBub3QgY3JlYXRlIHRoZSBkZXZpY2UuIFRoaXMgdXN1YWxseSBt
ZWFucyBNZXRhbCBpcyBub3QgYXZhaWxhYmxlIG9uIHRoaXMgaGFyZHdhcmUuIik7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBMT0coV2ViTWV0YWwsICJHUFVMZWdhY3lEZXZpY2U6OkdQ
VUxlZ2FjeURldmljZSBNZXRhbCBkZXZpY2UgaXMgJXAiLCBtX21ldGFsLmdldCgpKTsKLQotICAg
IEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotCi0gICAgbV9sYXllciA9IGFkb3B0TlMoW1tX
ZWJNZXRhbExheWVyIGFsbG9jXSBpbml0V2l0aEdQVURldmljZTp0aGlzXSk7Ci0gICAgW21fbGF5
ZXIgc2V0T3BhcXVlOjBdOwotICAgIFttX2xheWVyIHNldE5hbWU6QCJXZWJNZXRhbCBMYXllciJd
OwotCi0gICAgLy8gRklYTUU6IFdlYk1ldGFsIC0gU2hvdWxkIHRoaXMgYmUgaW4gdGhlIFdlYk1l
dGFsTGF5ZXIgaW5pdGlhbGl6ZXI/Ci0gICAgW21fbGF5ZXIgc2V0RGV2aWNlOm1fbWV0YWwuZ2V0
KCldOwotICAgIFttX2xheWVyIHNldFBpeGVsRm9ybWF0Ok1UTFBpeGVsRm9ybWF0QkdSQThVbm9y
bV07Ci0gICAgW21fbGF5ZXIgc2V0RnJhbWVidWZmZXJPbmx5OllFU107Ci0KLSAgICBFTkRfQkxP
Q0tfT0JKQ19FWENFUFRJT05TCi19Ci0KLXZvaWQgR1BVTGVnYWN5RGV2aWNlOjpkaXNjb25uZWN0
KCkKLXsKLSAgICBtX2xheWVyLmdldCgpLmNvbnRleHQgPSBudWxscHRyOwotICAgIC8vIEZJWE1F
OiBTaG91bGQgd2UgYWxzbyBjbGVhciBvdXQgdGhlIGRldmljZSBwcm9wZXJ0eSwgd2hpY2ggaGFz
IHRoZSBNVExEZXZpY2U/Ci19Ci0KLXZvaWQgR1BVTGVnYWN5RGV2aWNlOjpyZXNoYXBlKGludCB3
aWR0aCwgaW50IGhlaWdodCkgY29uc3QKLXsKLSAgICBbbV9sYXllciBzZXRCb3VuZHM6Q0dSZWN0
TWFrZSgwLCAwLCB3aWR0aCwgaGVpZ2h0KV07Ci0gICAgW21fbGF5ZXIgc2V0RHJhd2FibGVTaXpl
OkNHU2l6ZU1ha2Uod2lkdGgsIGhlaWdodCldOwotCi0gICAgLy8gRklYTUU6IFdlYk1ldGFsIC0g
TG90cyBvZiByZXNoYXBlIHN0dWZmIHNob3VsZCBnbyBoZXJlLiBTZWUgR0MzRC4KLX0KLQotQ0FM
YXllciAqR1BVTGVnYWN5RGV2aWNlOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKLXsKLSAgICByZXR1
cm4gbV9sYXllci5nZXQoKTsKLX0KLQotYm9vbCBHUFVMZWdhY3lEZXZpY2U6Om9wZXJhdG9yISgp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuICFtX21ldGFsOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvbWV0YWwvR1BVTGVnYWN5RHJhd2FibGVNZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21ldGFsL0dQVUxlZ2FjeURyYXdhYmxlTWV0YWwubW0KZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDRiYWUxMzllNjNjMGIzNTIxOGE5NzQxMGNlMzQ4MjYyM2RkNzk0
MmUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5RHJhd2FibGVNZXRhbC5t
bQorKysgL2Rldi9udWxsCkBAIC0xLDY1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkdQVUxl
Z2FjeURyYXdhYmxlLmgiCi0KLSNpZiBFTkFCTEUoV0VCTUVUQUwpCi0KLSNpbXBvcnQgIkdQVUxl
Z2FjeURldmljZS5oIgotI2ltcG9ydCAiTG9nZ2luZy5oIgotI2ltcG9ydCAiV2ViTWV0YWxMYXll
ci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUdQVUxlZ2FjeURyYXdhYmxlOjpHUFVMZWdh
Y3lEcmF3YWJsZShjb25zdCBHUFVMZWdhY3lEZXZpY2UmIGRldmljZSkKLSAgICA6IG1fbWV0YWwg
eyBbZGV2aWNlLmxheWVyKCkgbmV4dERyYXdhYmxlXSB9Ci17Ci0gICAgTE9HKFdlYk1ldGFsLCAi
R1BVTGVnYWN5RHJhd2FibGU6OkdQVUxlZ2FjeURyYXdhYmxlKCkiKTsKLX0KLQotdm9pZCBHUFVM
ZWdhY3lEcmF3YWJsZTo6cmVsZWFzZSgpCi17Ci0gICAgTE9HKFdlYk1ldGFsLCAiR1BVTGVnYWN5
RHJhd2FibGU6OnJlbGVhc2UoKSIpOwotICAgIG1fbWV0YWwgPSBuaWw7Ci19Ci0gICAgCi1NVExE
cmF3YWJsZSAqR1BVTGVnYWN5RHJhd2FibGU6Om1ldGFsKCkgY29uc3QKLXsKLSAgICByZXR1cm4g
bV9tZXRhbC5nZXQoKTsKLX0KLQotTVRMVGV4dHVyZSAqR1BVTGVnYWN5RHJhd2FibGU6OnRleHR1
cmUoKSBjb25zdAotewotICAgIGlmICghW21fbWV0YWwgY29uZm9ybXNUb1Byb3RvY29sOkBwcm90
b2NvbChDQU1ldGFsRHJhd2FibGUpXSkgewotICAgICAgICBBU1NFUlQoIW1fbWV0YWwpOwotICAg
ICAgICByZXR1cm4gbmlsOwotICAgIH0KLSAgICByZXR1cm4gWyhpZDxDQU1ldGFsRHJhd2FibGU+
KW1fbWV0YWwuZ2V0KCkgdGV4dHVyZV07Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQot
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRh
bC9HUFVMZWdhY3lGdW5jdGlvbk1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWV0YWwvR1BVTGVnYWN5RnVuY3Rpb25NZXRhbC5tbQpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZjk5OWMwNmJjMzRjMTc4OTRhY2I2MWNjN2YzNzQ5NTVlZGMxNGM1NS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVMZWdhY3lGdW5jdGlvbk1ldGFsLm1tCisrKyAv
ZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiR1BVTGVnYWN5RnVu
Y3Rpb24uaCIKLQotI2lmIEVOQUJMRShXRUJNRVRBTCkKLQotI2ltcG9ydCAiR1BVTGVnYWN5TGli
cmFyeS5oIgotI2ltcG9ydCAiTG9nZ2luZy5oIgotI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KLSNp
bXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUdQ
VUxlZ2FjeUZ1bmN0aW9uOjpHUFVMZWdhY3lGdW5jdGlvbihjb25zdCBHUFVMZWdhY3lMaWJyYXJ5
JiBsaWJyYXJ5LCBjb25zdCBTdHJpbmcmIG5hbWUpCi0gICAgOiBtX21ldGFsIHsgYWRvcHROUyhb
bGlicmFyeS5tZXRhbCgpIG5ld0Z1bmN0aW9uV2l0aE5hbWU6bmFtZV0pIH0KLXsKLSAgICBMT0co
V2ViTWV0YWwsICJHUFVMZWdhY3lGdW5jdGlvbjo6R1BVTGVnYWN5RnVuY3Rpb24oKSIpOwotfQot
Ci1TdHJpbmcgR1BVTGVnYWN5RnVuY3Rpb246Om5hbWUoKSBjb25zdAotewotICAgIGlmICghbV9t
ZXRhbCkKLSAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Ci0KLSAgICByZXR1cm4gW21fbWV0
YWwgbmFtZV07Ci19Ci0KLWJvb2wgR1BVTGVnYWN5RnVuY3Rpb246Om9wZXJhdG9yISgpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuICFtX21ldGFsOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0K
LSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0
YWwvR1BVTGVnYWN5TGlicmFyeU1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWV0YWwvR1BVTGVnYWN5TGlicmFyeU1ldGFsLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwODcyNjI4MjUzYjI2OGFmMDAwZWE3NjM2N2JjYWU4NmVhZjA5ZTVhLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVUxlZ2FjeUxpYnJhcnlNZXRhbC5tbQorKysgL2Rl
di9udWxsCkBAIC0xLDc4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
LSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkdQVUxlZ2FjeUxpYnJh
cnkuaCIKLQotI2lmIEVOQUJMRShXRUJNRVRBTCkKLQotI2ltcG9ydCAiR1BVTGVnYWN5RGV2aWNl
LmgiCi0jaW1wb3J0ICJMb2dnaW5nLmgiCi0jaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgotI2ltcG9y
dCA8d3RmL1ZlY3Rvci5oPgotI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotR1BVTGVnYWN5TGlicmFyeTo6R1BVTGVnYWN5TGlicmFyeShjb25z
dCBHUFVMZWdhY3lEZXZpY2UmIGRldmljZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlKQotewot
ICAgIExPRyhXZWJNZXRhbCwgIkdQVUxlZ2FjeUxpYnJhcnk6OkdQVUxlZ2FjeUxpYnJhcnkoKSIp
OwotCi0gICAgaWYgKCFkZXZpY2UubWV0YWwoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgTlNF
cnJvciAqZXJyb3IgPSBbTlNFcnJvciBlcnJvcldpdGhEb21haW46QCJjb20uYXBwbGUuV2ViS2l0
LkdQVSIgY29kZToxIHVzZXJJbmZvOm5pbF07Ci0gICAgbV9tZXRhbCA9IGFkb3B0TlMoW2Rldmlj
ZS5tZXRhbCgpIG5ld0xpYnJhcnlXaXRoU291cmNlOnNvdXJjZUNvZGUgb3B0aW9uczpuaWwgZXJy
b3I6JmVycm9yXSk7Ci0gICAgaWYgKCFtX21ldGFsKQotICAgICAgICBMT0coV2ViTWV0YWwsICJD
b21waWxhdGlvbiBlcnJvcjogJXMiLCBbW2Vycm9yIGxvY2FsaXplZERlc2NyaXB0aW9uXSBVVEY4
U3RyaW5nXSk7Ci19Ci0KLVN0cmluZyBHUFVMZWdhY3lMaWJyYXJ5OjpsYWJlbCgpIGNvbnN0Ci17
Ci0gICAgaWYgKCFtX21ldGFsKQotICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKLQotICAg
IHJldHVybiBbbV9tZXRhbCBsYWJlbF07Ci19Ci0KLXZvaWQgR1BVTGVnYWN5TGlicmFyeTo6c2V0
TGFiZWwoY29uc3QgU3RyaW5nJiBsYWJlbCkgY29uc3QKLXsKLSAgICBBU1NFUlQobV9tZXRhbCk7
Ci0gICAgW21fbWV0YWwgc2V0TGFiZWw6bGFiZWxdOwotfQotCi1WZWN0b3I8U3RyaW5nPiBHUFVM
ZWdhY3lMaWJyYXJ5OjpmdW5jdGlvbk5hbWVzKCkgY29uc3QKLXsKLSAgICBhdXRvIGFycmF5ID0g
W21fbWV0YWwgZnVuY3Rpb25OYW1lc107Ci0gICAgVmVjdG9yPFN0cmluZz4gdmVjdG9yOwotICAg
IHZlY3Rvci5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGFycmF5LmNvdW50KTsKLSAgICBmb3IgKE5T
U3RyaW5nICpzdHJpbmcgaW4gYXJyYXkpCi0gICAgICAgIHZlY3Rvci51bmNoZWNrZWRBcHBlbmQo
c3RyaW5nKTsKLSAgICByZXR1cm4gdmVjdG9yOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWV0YWwvR1BVTGVnYWN5UmVuZGVyQ29tbWFuZEVuY29kZXJNZXRhbC5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVUxlZ2FjeVJlbmRlckNvbW1hbmRFbmNvZGVy
TWV0YWwubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkwZTVkNGZhZDQxMmNmMmYz
Yzc4MGIwYWRkZmRlZTFhN2ZjMmZmNTguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BV
TGVnYWN5UmVuZGVyQ29tbWFuZEVuY29kZXJNZXRhbC5tbQorKysgL2Rldi9udWxsCkBAIC0xLDk5
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkdQVUxlZ2FjeVJlbmRlckNvbW1hbmRFbmNvZGVy
LmgiCi0KLSNpZiBFTkFCTEUoV0VCTUVUQUwpCi0KLSNpbXBvcnQgIkdQVUxlZ2FjeUJ1ZmZlci5o
IgotI2ltcG9ydCAiR1BVTGVnYWN5Q29tbWFuZEJ1ZmZlci5oIgotI2ltcG9ydCAiR1BVTGVnYWN5
RGVwdGhTdGVuY2lsU3RhdGUuaCIKLSNpbXBvcnQgIkdQVUxlZ2FjeVJlbmRlclBhc3NEZXNjcmlw
dG9yLmgiCi0jaW1wb3J0ICJHUFVMZWdhY3lSZW5kZXJQaXBlbGluZVN0YXRlLmgiCi0jaW1wb3J0
ICJMb2dnaW5nLmgiCi0jaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLUdQVUxlZ2FjeVJlbmRlckNvbW1hbmRFbmNvZGVyOjpHUFVMZWdhY3lSZW5kZXJDb21t
YW5kRW5jb2Rlcihjb25zdCBHUFVMZWdhY3lDb21tYW5kQnVmZmVyJiBidWZmZXIsIGNvbnN0IEdQ
VUxlZ2FjeVJlbmRlclBhc3NEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQotewotICAgIExPRyhXZWJN
ZXRhbCwgIkdQVUxlZ2FjeVJlbmRlckNvbW1hbmRFbmNvZGVyOjpHUFVMZWdhY3lSZW5kZXJDb21t
YW5kRW5jb2RlcigpIik7Ci0KLSAgICBpZiAoIWRlc2NyaXB0b3IubWV0YWwoKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgbV9tZXRhbCA9IFtidWZmZXIubWV0YWwoKSByZW5kZXJDb21tYW5kRW5j
b2RlcldpdGhEZXNjcmlwdG9yOmRlc2NyaXB0b3IubWV0YWwoKV07Ci19Ci0KLXZvaWQgR1BVTGVn
YWN5UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldFJlbmRlclBpcGVsaW5lU3RhdGUoY29uc3QgR1BV
TGVnYWN5UmVuZGVyUGlwZWxpbmVTdGF0ZSYgcmVuZGVyUGlwZWxpbmVTdGF0ZSkgY29uc3QKLXsK
LSAgICBpZiAoIXJlbmRlclBpcGVsaW5lU3RhdGUubWV0YWwoKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgW21fbWV0YWwgc2V0UmVuZGVyUGlwZWxpbmVTdGF0ZTpyZW5kZXJQaXBlbGluZVN0YXRl
Lm1ldGFsKCldOwotfQotCi12b2lkIEdQVUxlZ2FjeVJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRE
ZXB0aFN0ZW5jaWxTdGF0ZShjb25zdCBHUFVMZWdhY3lEZXB0aFN0ZW5jaWxTdGF0ZSYgZGVwdGhT
dGVuY2lsU3RhdGUpIGNvbnN0Ci17Ci0gICAgaWYgKCFkZXB0aFN0ZW5jaWxTdGF0ZS5tZXRhbCgp
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBbbV9tZXRhbCBzZXREZXB0aFN0ZW5jaWxTdGF0ZTpk
ZXB0aFN0ZW5jaWxTdGF0ZS5tZXRhbCgpXTsKLX0KLQotdm9pZCBHUFVMZWdhY3lSZW5kZXJDb21t
YW5kRW5jb2Rlcjo6c2V0VmVydGV4QnVmZmVyKGNvbnN0IEdQVUxlZ2FjeUJ1ZmZlciYgYnVmZmVy
LCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGluZGV4KSBjb25zdAotewotICAgIGlmICghYnVm
ZmVyLm1ldGFsKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIFttX21ldGFsIHNldFZlcnRleEJ1
ZmZlcjpidWZmZXIubWV0YWwoKSBvZmZzZXQ6b2Zmc2V0IGF0SW5kZXg6aW5kZXhdOwotfQotCi12
b2lkIEdQVUxlZ2FjeVJlbmRlckNvbW1hbmRFbmNvZGVyOjpzZXRGcmFnbWVudEJ1ZmZlcihjb25z
dCBHUFVMZWdhY3lCdWZmZXImIGJ1ZmZlciwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBpbmRl
eCkgY29uc3QKLXsKLSAgICBpZiAoIWJ1ZmZlci5tZXRhbCgpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBbbV9tZXRhbCBzZXRGcmFnbWVudEJ1ZmZlcjpidWZmZXIubWV0YWwoKSBvZmZzZXQ6b2Zm
c2V0IGF0SW5kZXg6aW5kZXhdOwotfQotCi12b2lkIEdQVUxlZ2FjeVJlbmRlckNvbW1hbmRFbmNv
ZGVyOjpkcmF3UHJpbWl0aXZlcyh1bnNpZ25lZCB0eXBlLCB1bnNpZ25lZCBzdGFydCwgdW5zaWdu
ZWQgY291bnQpIGNvbnN0Ci17Ci0gICAgLy8gRklYTUU6IFdoeSBkbyB3ZSBuZWVkIGEgc3BlY2lh
bGx5IG9wdGltaXplZCBwYXRoIGZvciBjb3VudCBvZiAwPwotICAgIGlmICghY291bnQpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIFttX21ldGFsIGRyYXdQcmltaXRpdmVzOnN0YXRpY19jYXN0PE1U
TFByaW1pdGl2ZVR5cGU+KHR5cGUpIHZlcnRleFN0YXJ0OnN0YXJ0IHZlcnRleENvdW50OmNvdW50
XTsKLX0KLQotdm9pZCBHUFVMZWdhY3lSZW5kZXJDb21tYW5kRW5jb2Rlcjo6ZW5kRW5jb2Rpbmco
KSBjb25zdAotewotICAgIFttX21ldGFsIGVuZEVuY29kaW5nXTsKLX0KLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL21ldGFsL0dQVUxlZ2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvck1l
dGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5
UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yTWV0YWwubW0KZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGMzMjVjOWYyOTcwZTJjZmQyYTY2ZDY2YTRmNDEyMzJiYTFiNmE2NjkuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1lbnRE
ZXNjcmlwdG9yTWV0YWwubW0KKysrIC9kZXYvbnVsbApAQCAtMSw3OCArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgi
Ci0jaW1wb3J0ICJHUFVMZWdhY3lSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuaCIKLQot
I2lmIEVOQUJMRShXRUJNRVRBTCkKLQotI2ltcG9ydCAiR1BVTGVnYWN5VGV4dHVyZS5oIgotI2lt
cG9ydCAiTG9nZ2luZy5oIgotCi0jaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLUdQVUxlZ2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjo6R1BV
TGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yKE1UTFJlbmRlclBhc3NBdHRhY2ht
ZW50RGVzY3JpcHRvciAqbWV0YWwpCi0gICAgOiBtX21ldGFsIHsgbWV0YWwgfQotewotICAgIExP
RyhXZWJNZXRhbCwgIkdQVUxlZ2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjo6R1BV
TGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yKCkiKTsKLX0KLQotdW5zaWduZWQg
R1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjpsb2FkQWN0aW9uKCkgY29u
c3QKLXsKLSAgICByZXR1cm4gW21fbWV0YWwgbG9hZEFjdGlvbl07Ci19Ci0KLXZvaWQgR1BVTGVn
YWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRMb2FkQWN0aW9uKHVuc2lnbmVk
IG5ld0xvYWRBY3Rpb24pIGNvbnN0Ci17Ci0gICAgLy8gRklYTUU6IFNob3VsZCB0aGlzIHJhbmdl
IGNoZWNrIGZvciBsZWdpdGltYXRlIHZhbHVlcz8KLSAgICBbbV9tZXRhbCBzZXRMb2FkQWN0aW9u
OnN0YXRpY19jYXN0PE1UTExvYWRBY3Rpb24+KG5ld0xvYWRBY3Rpb24pXTsKLX0KLQotdW5zaWdu
ZWQgR1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjpzdG9yZUFjdGlvbigp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIFttX21ldGFsIHN0b3JlQWN0aW9uXTsKLX0KLQotdm9pZCBH
UFVMZWdhY3lSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3I6OnNldFN0b3JlQWN0aW9uKHVu
c2lnbmVkIG5ld1N0b3JlQWN0aW9uKSBjb25zdAotewotICAgIC8vIEZJWE1FOiBTaG91bGQgdGhp
cyByYW5nZSBjaGVjayBmb3IgbGVnaXRpbWF0ZSB2YWx1ZXM/Ci0gICAgW21fbWV0YWwgc2V0U3Rv
cmVBY3Rpb246c3RhdGljX2Nhc3Q8TVRMU3RvcmVBY3Rpb24+KG5ld1N0b3JlQWN0aW9uKV07Ci19
Ci0KLXZvaWQgR1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRUZXh0
dXJlKGNvbnN0IEdQVUxlZ2FjeVRleHR1cmUmIHRleHR1cmUpIGNvbnN0Ci17Ci0gICAgW21fbWV0
YWwgc2V0VGV4dHVyZTp0ZXh0dXJlLm1ldGFsKCldOwotfQotCi1NVExSZW5kZXJQYXNzQXR0YWNo
bWVudERlc2NyaXB0b3IgKkdQVUxlZ2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjo6
bWV0YWwoKSBjb25zdAotewotICAgIHJldHVybiBtX21ldGFsLmdldCgpOwotfQotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERl
c2NyaXB0b3JNZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFs
L0dQVUxlZ2FjeVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yTWV0YWwubW0KZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI1ZWJlMTY0NTQ5ZWE5ODYzYWEzNzFkYjYwNGI0
NWIzN2VkNWVmNDQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5UmVuZGVy
UGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3JNZXRhbC5tbQorKysgL2Rldi9udWxsCkBAIC0x
LDY5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkdQVUxlZ2FjeVJlbmRlclBhc3NDb2xvckF0
dGFjaG1lbnREZXNjcmlwdG9yLmgiCi0KLSNpZiBFTkFCTEUoV0VCTUVUQUwpCi0KLSNpbXBvcnQg
IkZsb2F0Q29udmVyc2lvbi5oIgotI2ltcG9ydCAiTG9nZ2luZy5oIgotI2ltcG9ydCA8TWV0YWwv
TWV0YWwuaD4KLSNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1HUFVMZWdhY3lSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6R1BVTGVnYWN5
UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IoTVRMUmVuZGVyUGFzc0NvbG9yQXR0
YWNobWVudERlc2NyaXB0b3IgKm1ldGFsKQotICAgIDogR1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFj
aG1lbnREZXNjcmlwdG9yIHsgbWV0YWwgfQotewotICAgIExPRyhXZWJNZXRhbCwgIkdQVUxlZ2Fj
eVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjpHUFVMZWdhY3lSZW5kZXJQYXNz
Q29sb3JBdHRhY2htZW50RGVzY3JpcHRvcigpIik7Ci19Ci0KLVZlY3RvcjxmbG9hdD4gR1BVTGVn
YWN5UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6OmNsZWFyQ29sb3IoKSBjb25z
dAotewotICAgIGF1dG8qIG1ldGFsID0gdGhpcy0+bWV0YWwoKTsKLSAgICBpZiAoIW1ldGFsKQot
ICAgICAgICByZXR1cm4geyB9OwotCi0gICAgYXV0byBjb2xvciA9IFttZXRhbCBjbGVhckNvbG9y
XTsKLSAgICByZXR1cm4geyBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KGNvbG9yLnJlZCksIG5hcnJv
d1ByZWNpc2lvblRvRmxvYXQoY29sb3IuZ3JlZW4pLCBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KGNv
bG9yLmJsdWUpLCBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KGNvbG9yLmFscGhhKSB9OwotfQotCi12
b2lkIEdQVUxlZ2FjeVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRDbGVh
ckNvbG9yKGNvbnN0IFZlY3RvcjxmbG9hdD4mIG5ld0NsZWFyQ29sb3IpIGNvbnN0Ci17Ci0gICAg
aWYgKG5ld0NsZWFyQ29sb3Iuc2l6ZSgpICE9IDQpCi0gICAgICAgIHJldHVybjsKLQotICAgIFtt
ZXRhbCgpIHNldENsZWFyQ29sb3I6TVRMQ2xlYXJDb2xvck1ha2UobmV3Q2xlYXJDb2xvclswXSwg
bmV3Q2xlYXJDb2xvclsxXSwgbmV3Q2xlYXJDb2xvclsyXSwgbmV3Q2xlYXJDb2xvclszXSldOwot
fQotCi1NVExSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciAqR1BVTGVnYWN5UmVu
ZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6Om1ldGFsKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8TVRMUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3Ig
Kj4oR1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjptZXRhbCgpKTsKLX0K
LQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVUxlZ2FjeVJlbmRlclBhc3NEZXB0aEF0
dGFjaG1lbnREZXNjcmlwdG9yTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tZXRhbC9HUFVMZWdhY3lSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvck1l
dGFsLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YzNkYTNlYmNjMWYyNWFkZDc0
NWYyZWQ0MWU5NWVkNmZlNDhmZGE5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVUxl
Z2FjeVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yTWV0YWwubW0KKysrIC9kZXYv
bnVsbApAQCAtMSw2NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0g
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJHUFVMZWdhY3lSZW5kZXJQ
YXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5oIgotCi0jaWYgRU5BQkxFKFdFQk1FVEFMKQot
Ci0jaW1wb3J0ICJHUFVMZWdhY3lSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuaCIKLSNp
bXBvcnQgIkxvZ2dpbmcuaCIKLSNpbXBvcnQgPE1ldGFsL01ldGFsLmg+Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotR1BVTGVnYWN5UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3I6
OkdQVUxlZ2FjeVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yKE1UTFJlbmRlclBh
c3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yICptZXRhbCkKLSAgICA6IEdQVUxlZ2FjeVJlbmRl
clBhc3NBdHRhY2htZW50RGVzY3JpcHRvciB7IG1ldGFsIH0KLXsKLSAgICBMT0coV2ViTWV0YWws
ICJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcjo6R1BVUmVuZGVyUGFzc0Rl
cHRoQXR0YWNobWVudERlc2NyaXB0b3IoKSIpOwotfQotCi1kb3VibGUgR1BVTGVnYWN5UmVuZGVy
UGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3I6OmNsZWFyRGVwdGgoKSBjb25zdAotewotICAg
IGF1dG8qIG1ldGFsID0gdGhpcy0+bWV0YWwoKTsKLSAgICBpZiAoIW1ldGFsKQotICAgICAgICBy
ZXR1cm4gMDsKLQotICAgIHJldHVybiBbbWV0YWwgY2xlYXJEZXB0aF07Ci19Ci0KLXZvaWQgR1BV
TGVnYWN5UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3I6OnNldENsZWFyRGVwdGgo
ZG91YmxlIG5ld0NsZWFyRGVwdGgpIGNvbnN0Ci17Ci0gICAgW21ldGFsKCkgc2V0Q2xlYXJEZXB0
aDpuZXdDbGVhckRlcHRoXTsKLX0KLQotTVRMUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2Ny
aXB0b3IgKkdQVUxlZ2FjeVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yOjptZXRh
bCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PE1UTFJlbmRlclBhc3NEZXB0aEF0
dGFjaG1lbnREZXNjcmlwdG9yICo+KEdQVUxlZ2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3Jp
cHRvcjo6bWV0YWwoKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVMZWdh
Y3lSZW5kZXJQYXNzRGVzY3JpcHRvck1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5UmVuZGVyUGFzc0Rlc2NyaXB0b3JNZXRhbC5tbQpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmM0NWVkNmNjOWUyMmNlOThmYjlkMDZkYmZiNjQ3
ZGRiZDQ4M2IyYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVMZWdhY3lSZW5kZXJQ
YXNzRGVzY3JpcHRvck1ldGFsLm1tCisrKyAvZGV2L251bGwKQEAgLTEsNjYgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZp
Zy5oIgotI2ltcG9ydCAiR1BVTGVnYWN5UmVuZGVyUGFzc0Rlc2NyaXB0b3IuaCIKLQotI2lmIEVO
QUJMRShXRUJNRVRBTCkKLQotI2ltcG9ydCAiR1BVTGVnYWN5UmVuZGVyUGFzc0NvbG9yQXR0YWNo
bWVudERlc2NyaXB0b3IuaCIKLSNpbXBvcnQgIkdQVUxlZ2FjeVJlbmRlclBhc3NEZXB0aEF0dGFj
aG1lbnREZXNjcmlwdG9yLmgiCi0jaW1wb3J0ICJMb2dnaW5nLmgiCi0jaW1wb3J0IDxNZXRhbC9N
ZXRhbC5oPgotI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LUdQVUxlZ2FjeVJlbmRlclBhc3NEZXNjcmlwdG9yOjpHUFVMZWdhY3lSZW5kZXJQYXNzRGVzY3Jp
cHRvcigpCi0gICAgOiBtX21ldGFsIHsgYWRvcHROUyhbTVRMUmVuZGVyUGFzc0Rlc2NyaXB0b3Ig
bmV3XSkgfQotewotICAgIExPRyhXZWJNZXRhbCwgIkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yOjpH
UFVSZW5kZXJQYXNzRGVzY3JpcHRvcigpIik7Ci19Ci0KLVZlY3RvcjxHUFVMZWdhY3lSZW5kZXJQ
YXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcj4gR1BVTGVnYWN5UmVuZGVyUGFzc0Rlc2NyaXB0
b3I6OmNvbG9yQXR0YWNobWVudHMoKSBjb25zdAotewotICAgIGlmICghbV9tZXRhbCkKLSAgICAg
ICAgcmV0dXJuIHsgfTsKLQotICAgIC8vIEZJWE1FOiBXaHkgaXMgaXQgY29ycmVjdCB0byByZXR1
cm4gb25lIGNvbG9yIGhlcmU/Ci0gICAgcmV0dXJuIHsgeyBbW21fbWV0YWwgY29sb3JBdHRhY2ht
ZW50c10gb2JqZWN0QXRJbmRleGVkU3Vic2NyaXB0OjBdIH0gfTsKLX0KLQotR1BVTGVnYWN5UmVu
ZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IgR1BVTGVnYWN5UmVuZGVyUGFzc0Rlc2Ny
aXB0b3I6OmRlcHRoQXR0YWNobWVudCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFttX21ldGFsIGRl
cHRoQXR0YWNobWVudF07Ci19Ci0KLU1UTFJlbmRlclBhc3NEZXNjcmlwdG9yICpHUFVMZWdhY3lS
ZW5kZXJQYXNzRGVzY3JpcHRvcjo6bWV0YWwoKSBjb25zdAotewotICAgIHJldHVybiBtX21ldGFs
LmdldCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5UmVuZGVy
UGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVMZWdhY3lSZW5kZXJQaXBlbGluZUNvbG9yQXR0
YWNobWVudERlc2NyaXB0b3JNZXRhbC5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ZjQzYzk1YmQxOTRjNjkzNWUyM2QxZGJkYTNhNGM5MThjNjBiNTNlYy4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tZXRhbC9HUFVMZWdhY3lSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2Ny
aXB0b3JNZXRhbC5tbQorKysgL2Rldi9udWxsCkBAIC0xLDYwICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAot
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNp
bXBvcnQgIkdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5o
IgotCi0jaWYgRU5BQkxFKFdFQk1FVEFMKQotCi0jaW1wb3J0ICJMb2dnaW5nLmgiCi0jaW1wb3J0
IDxNZXRhbC9NZXRhbC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUdQVUxlZ2FjeVJlbmRl
clBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6R1BVTGVnYWN5UmVuZGVyUGlwZWxp
bmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKE1UTFJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2ht
ZW50RGVzY3JpcHRvciAqbWV0YWwpCi0gICAgOiBtX21ldGFsIHsgbWV0YWwgfQotewotICAgIExP
RyhXZWJNZXRhbCwgIkdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3Jp
cHRvcjo6R1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKCki
KTsKLX0KLQotdW5zaWduZWQgR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnRE
ZXNjcmlwdG9yOjpwaXhlbEZvcm1hdCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFttX21ldGFsIHBp
eGVsRm9ybWF0XTsKLX0KLQotdm9pZCBHUFVMZWdhY3lSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNo
bWVudERlc2NyaXB0b3I6OnNldFBpeGVsRm9ybWF0KHVuc2lnbmVkIG5ld1BpeGVsRm9ybWF0KSBj
b25zdAotewotICAgIC8vIEZJWE1FOiBTaG91bGQgd2UgY2hlY2sgZm9yIGVudW1lcmF0aW9uIHZh
bHVlcyBvdXQgb2YgcmFuZ2UgYmVmb3JlIGNhbGxpbmcgdGhlIG1ldGhvZD8KLSAgICBbbV9tZXRh
bCBzZXRQaXhlbEZvcm1hdDpzdGF0aWNfY2FzdDxNVExQaXhlbEZvcm1hdD4obmV3UGl4ZWxGb3Jt
YXQpXTsKLX0KLQotTVRMUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yICpH
UFVMZWdhY3lSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6Om1ldGFsKCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gbV9tZXRhbC5nZXQoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21ldGFsL0dQVUxlZ2FjeVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvck1ldGFsLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5UmVuZGVyUGlw
ZWxpbmVEZXNjcmlwdG9yTWV0YWwubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUw
NWU4YWYyZWZkZTAzM2YwZTUxMzA3MjllZjRlMzY4YjIyMTViMTguLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWV0YWwvR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yTWV0YWwubW0KKysr
IC9kZXYvbnVsbApAQCAtMSw4MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJHUFVMZWdhY3lS
ZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCIKLQotI2lmIEVOQUJMRShXRUJNRVRBTCkKLQotI2lt
cG9ydCAiR1BVTGVnYWN5RnVuY3Rpb24uaCIKLSNpbXBvcnQgIkdQVUxlZ2FjeVJlbmRlclBpcGVs
aW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oIgotI2ltcG9ydCAiTG9nZ2luZy5oIgotI2lt
cG9ydCA8TWV0YWwvTWV0YWwuaD4KLSNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1HUFVMZWdhY3lSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OkdQVUxlZ2Fj
eVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcigpCi0gICAgOiBtX21ldGFsIHsgYWRvcHROUyhbTVRM
UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yIG5ld10pIH0KLXsKLSAgICBMT0coV2ViTWV0YWwsICJH
UFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcigp
Iik7Ci19Ci0KLXVuc2lnbmVkIEdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6ZGVw
dGhBdHRhY2htZW50UGl4ZWxGb3JtYXQoKSBjb25zdAotewotICAgIHJldHVybiBbbV9tZXRhbCBk
ZXB0aEF0dGFjaG1lbnRQaXhlbEZvcm1hdF07Ci19Ci0KLXZvaWQgR1BVTGVnYWN5UmVuZGVyUGlw
ZWxpbmVEZXNjcmlwdG9yOjpzZXREZXB0aEF0dGFjaG1lbnRQaXhlbEZvcm1hdCh1bnNpZ25lZCBu
ZXdQaXhlbEZvcm1hdCkgY29uc3QKLXsKLSAgICBbbV9tZXRhbCBzZXREZXB0aEF0dGFjaG1lbnRQ
aXhlbEZvcm1hdDpzdGF0aWNfY2FzdDxNVExQaXhlbEZvcm1hdD4obmV3UGl4ZWxGb3JtYXQpXTsK
LX0KLQotdm9pZCBHUFVMZWdhY3lSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnNldFZlcnRleEZ1
bmN0aW9uKGNvbnN0IEdQVUxlZ2FjeUZ1bmN0aW9uJiBuZXdGdW5jdGlvbikgY29uc3QKLXsKLSAg
ICBbbV9tZXRhbCBzZXRWZXJ0ZXhGdW5jdGlvbjpuZXdGdW5jdGlvbi5tZXRhbCgpXTsKLX0KLQot
dm9pZCBHUFVMZWdhY3lSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnNldEZyYWdtZW50RnVuY3Rp
b24oY29uc3QgR1BVTGVnYWN5RnVuY3Rpb24mIG5ld0Z1bmN0aW9uKSBjb25zdAotewotICAgIFtt
X21ldGFsIHNldEZyYWdtZW50RnVuY3Rpb246bmV3RnVuY3Rpb24ubWV0YWwoKV07Ci19Ci0KLVZl
Y3RvcjxHUFVMZWdhY3lSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I+IEdQ
VUxlZ2FjeVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6Y29sb3JBdHRhY2htZW50cygpIGNvbnN0
Ci17Ci0gICAgLy8gRklYTUU6IFdoeSBpcyBpdCBhbHdheXMgT0sgdG8gcmV0dXJuIGV4YWN0bHkg
b25lIGF0dGFjaG1lbnQ/Ci0gICAgcmV0dXJuIHsgeyBbW21fbWV0YWwgY29sb3JBdHRhY2htZW50
c10gb2JqZWN0QXRJbmRleGVkU3Vic2NyaXB0OjBdIH0gfTsKLX0KLQotdm9pZCBHUFVMZWdhY3lS
ZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnJlc2V0KCkgY29uc3QKLXsKLSAgICBbbV9tZXRhbCBy
ZXNldF07Ci19Ci0KLU1UTFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciAqR1BVTGVnYWN5UmVuZGVy
UGlwZWxpbmVEZXNjcmlwdG9yOjptZXRhbCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fbWV0YWwu
Z2V0KCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVMZWdhY3lSZW5kZXJQ
aXBlbGluZVN0YXRlTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
ZXRhbC9HUFVMZWdhY3lSZW5kZXJQaXBlbGluZVN0YXRlTWV0YWwubW0KZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDk0MjBmYjg4YWJiMmRiMGIyNjIwY2QxMThkYjc3YTU1YjE5ZTAyNDMu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVTdGF0
ZU1ldGFsLm1tCisrKyAvZGV2L251bGwKQEAgLTEsNjYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9y
dCAiR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVTdGF0ZS5oIgotCi0jaWYgRU5BQkxFKFdFQk1FVEFM
KQotCi0jaW1wb3J0ICJHUFVMZWdhY3lEZXZpY2UuaCIKLSNpbXBvcnQgIkdQVUxlZ2FjeVJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvci5oIgotI2ltcG9ydCAiTG9nZ2luZy5oIgotI2ltcG9ydCA8TWV0
YWwvTWV0YWwuaD4KLSNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLUdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lU3RhdGU6OkdQVUxlZ2FjeVJlbmRl
clBpcGVsaW5lU3RhdGUoY29uc3QgR1BVTGVnYWN5RGV2aWNlJiBkZXZpY2UsIGNvbnN0IEdQVUxl
Z2FjeVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKLSAgICA6IG1fbWV0YWwg
eyBhZG9wdE5TKFtkZXZpY2UubWV0YWwoKSBuZXdSZW5kZXJQaXBlbGluZVN0YXRlV2l0aERlc2Ny
aXB0b3I6ZGVzY3JpcHRvci5tZXRhbCgpIGVycm9yOm5pbF0pIH0KLXsKLSAgICBMT0coV2ViTWV0
YWwsICJHUFVMZWdhY3lSZW5kZXJQaXBlbGluZVN0YXRlOjpHUFVMZWdhY3lSZW5kZXJQaXBlbGlu
ZVN0YXRlKCkiKTsKLX0KLQotU3RyaW5nIEdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lU3RhdGU6Omxh
YmVsKCkgY29uc3QKLXsKLSAgICBpZiAoIW1fbWV0YWwpCi0gICAgICAgIHJldHVybiBlbXB0eVN0
cmluZygpOwotICAgIHJldHVybiBbbV9tZXRhbCBsYWJlbF07Ci19Ci0KLXZvaWQgR1BVTGVnYWN5
UmVuZGVyUGlwZWxpbmVTdGF0ZTo6c2V0TGFiZWwoY29uc3QgU3RyaW5nJikgY29uc3QKLXsKLSAg
ICAvLyBGSVhNRTogVGhlIE1UTFJlbmRlclBpcGVsaW5lU3RhdGUgcHJvdG9jb2wgZG9lcyBub3Qg
YWxsb3cgc2V0dGluZyB0aGUgbGFiZWwuCi0gICAgLy8gVGhlIGxhYmVsIGhhcyB0byBiZSBzZXQg
b24gdGhlIGRlc2NyaXB0b3Igd2hlbiBjcmVhdGluZyB0aGUgc3RhdGUgb2JqZWN0LgotICAgIC8v
IFdlIHNob3VsZCBjb25zaWRlciBjaGFuZ2luZyB0aGUgV2ViTWV0YWwgaW50ZXJmYWNlIHRvIG5v
dCByZXF1aXJlIHRoaXMhCi19Ci0gICAgCi1NVExSZW5kZXJQaXBlbGluZVN0YXRlICpHUFVMZWdh
Y3lSZW5kZXJQaXBlbGluZVN0YXRlOjptZXRhbCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fbWV0
YWwuZ2V0KCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVMZWdhY3lUZXh0
dXJlRGVzY3JpcHRvck1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWV0YWwvR1BVTGVnYWN5VGV4dHVyZURlc2NyaXB0b3JNZXRhbC5tbQpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMjVhZDM4ODVmOTJjYWFjY2IzNGQ4YjczNWFhNmE3ODk4YmEyNmQ5Yy4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVMZWdhY3lUZXh0dXJlRGVzY3JpcHRvck1l
dGFsLm1tCisrKyAvZGV2L251bGwKQEAgLTEsMTE0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQg
IkdQVUxlZ2FjeVRleHR1cmVEZXNjcmlwdG9yLmgiCi0KLSNpZiBFTkFCTEUoV0VCTUVUQUwpCi0K
LSNpbXBvcnQgIkxvZ2dpbmcuaCIKLSNpbXBvcnQgPE1ldGFsL01ldGFsLmg+Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotR1BVTGVnYWN5VGV4dHVyZURlc2NyaXB0b3I6OkdQVUxlZ2FjeVRleHR1
cmVEZXNjcmlwdG9yKHVuc2lnbmVkIHBpeGVsRm9ybWF0LCB1bnNpZ25lZCB3aWR0aCwgdW5zaWdu
ZWQgaGVpZ2h0LCBib29sIG1pcG1hcHBlZCkKLSAgICA6IG1fbWV0YWwgeyBbTVRMVGV4dHVyZURl
c2NyaXB0b3IgdGV4dHVyZTJERGVzY3JpcHRvcldpdGhQaXhlbEZvcm1hdDpzdGF0aWNfY2FzdDxN
VExQaXhlbEZvcm1hdD4ocGl4ZWxGb3JtYXQpIHdpZHRoOndpZHRoIGhlaWdodDpoZWlnaHQgbWlw
bWFwcGVkOm1pcG1hcHBlZF0gfQotewotICAgIExPRyhXZWJNZXRhbCwgIkdQVVRleHR1cmVEZXNj
cmlwdG9yOjpHUFVUZXh0dXJlRGVzY3JpcHRvcigpIik7Ci19Ci0KLXVuc2lnbmVkIEdQVUxlZ2Fj
eVRleHR1cmVEZXNjcmlwdG9yOjp3aWR0aCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFttX21ldGFs
IHdpZHRoXTsKLX0KLQotdm9pZCBHUFVMZWdhY3lUZXh0dXJlRGVzY3JpcHRvcjo6c2V0V2lkdGgo
dW5zaWduZWQgbmV3V2lkdGgpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKG1fbWV0YWwpOwotICAgIFtt
X21ldGFsIHNldFdpZHRoOm5ld1dpZHRoXTsKLX0KLQotdW5zaWduZWQgR1BVTGVnYWN5VGV4dHVy
ZURlc2NyaXB0b3I6OmhlaWdodCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFttX21ldGFsIGhlaWdo
dF07Ci19Ci0KLXZvaWQgR1BVTGVnYWN5VGV4dHVyZURlc2NyaXB0b3I6OnNldEhlaWdodCh1bnNp
Z25lZCBuZXdIZWlnaHQpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKG1fbWV0YWwpOwotICAgIFttX21l
dGFsIHNldEhlaWdodDpuZXdIZWlnaHRdOwotfQotCi11bnNpZ25lZCBHUFVMZWdhY3lUZXh0dXJl
RGVzY3JpcHRvcjo6c2FtcGxlQ291bnQoKSBjb25zdAotewotICAgIHJldHVybiBbbV9tZXRhbCBz
YW1wbGVDb3VudF07Ci19Ci0KLXZvaWQgR1BVTGVnYWN5VGV4dHVyZURlc2NyaXB0b3I6OnNldFNh
bXBsZUNvdW50KHVuc2lnbmVkIG5ld1NhbXBsZUNvdW50KSBjb25zdAotewotICAgIEFTU0VSVCht
X21ldGFsKTsKLSAgICBbbV9tZXRhbCBzZXRTYW1wbGVDb3VudDpuZXdTYW1wbGVDb3VudF07Ci19
Ci0KLXVuc2lnbmVkIEdQVUxlZ2FjeVRleHR1cmVEZXNjcmlwdG9yOjp0ZXh0dXJlVHlwZSgpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIFttX21ldGFsIHRleHR1cmVUeXBlXTsKLX0KLQotdm9pZCBHUFVM
ZWdhY3lUZXh0dXJlRGVzY3JpcHRvcjo6c2V0VGV4dHVyZVR5cGUodW5zaWduZWQgbmV3VGV4dHVy
ZVR5cGUpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKG1fbWV0YWwpOwotICAgIFttX21ldGFsIHNldFRl
eHR1cmVUeXBlOnN0YXRpY19jYXN0PE1UTFRleHR1cmVUeXBlPihuZXdUZXh0dXJlVHlwZSldOwot
fQotCi11bnNpZ25lZCBHUFVMZWdhY3lUZXh0dXJlRGVzY3JpcHRvcjo6c3RvcmFnZU1vZGUoKSBj
b25zdAotewotICAgIHJldHVybiBbbV9tZXRhbCBzdG9yYWdlTW9kZV07Ci19Ci0KLXZvaWQgR1BV
TGVnYWN5VGV4dHVyZURlc2NyaXB0b3I6OnNldFN0b3JhZ2VNb2RlKHVuc2lnbmVkIG5ld1N0b3Jh
Z2VNb2RlKSBjb25zdAotewotICAgIFttX21ldGFsIHNldFN0b3JhZ2VNb2RlOnN0YXRpY19jYXN0
PE1UTFN0b3JhZ2VNb2RlPihuZXdTdG9yYWdlTW9kZSldOwotfQotCi11bnNpZ25lZCBHUFVMZWdh
Y3lUZXh0dXJlRGVzY3JpcHRvcjo6dXNhZ2UoKSBjb25zdAotewotICAgIHJldHVybiBbbV9tZXRh
bCB1c2FnZV07Ci19Ci0KLXZvaWQgR1BVTGVnYWN5VGV4dHVyZURlc2NyaXB0b3I6OnNldFVzYWdl
KHVuc2lnbmVkIG5ld1VzYWdlKSBjb25zdAotewotICAgIEFTU0VSVChtX21ldGFsKTsKLSAgICBb
bV9tZXRhbCBzZXRVc2FnZTpuZXdVc2FnZV07Ci19Ci0KLU1UTFRleHR1cmVEZXNjcmlwdG9yICpH
UFVMZWdhY3lUZXh0dXJlRGVzY3JpcHRvcjo6bWV0YWwoKSBjb25zdAotewotICAgIHJldHVybiBt
X21ldGFsLmdldCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5
VGV4dHVyZU1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwv
R1BVTGVnYWN5VGV4dHVyZU1ldGFsLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4
MTExZWZlNmNkZDdjOWRlNzcyNjQ2MzViMDlkZWM3MGYxYTVmY2Q2Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21ldGFsL0dQVUxlZ2FjeVRleHR1cmVNZXRhbC5tbQorKysgL2Rldi9udWxsCkBAIC0x
LDcyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkdQVUxlZ2FjeVRleHR1cmUuaCIKLQotI2lm
IEVOQUJMRShXRUJNRVRBTCkKLQotI2ltcG9ydCAiR1BVTGVnYWN5RGV2aWNlLmgiCi0jaW1wb3J0
ICJHUFVMZWdhY3lEcmF3YWJsZS5oIgotI2ltcG9ydCAiR1BVTGVnYWN5VGV4dHVyZURlc2NyaXB0
b3IuaCIKLSNpbXBvcnQgIkxvZ2dpbmcuaCIKLSNpbXBvcnQgPE1ldGFsL01ldGFsLmg+Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotR1BVTGVnYWN5VGV4dHVyZTo6R1BVTGVnYWN5VGV4dHVyZShj
b25zdCBHUFVMZWdhY3lEZXZpY2UmIGRldmljZSwgY29uc3QgR1BVTGVnYWN5VGV4dHVyZURlc2Ny
aXB0b3ImIGRlc2NyaXB0b3IpCi17Ci0gICAgTE9HKFdlYk1ldGFsLCAiR1BVVGV4dHVyZTo6R1BV
VGV4dHVyZSgpIik7Ci0KLSAgICBpZiAoIWRlc2NyaXB0b3IubWV0YWwoKSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgbV9tZXRhbCA9IGFkb3B0TlMoW2RldmljZS5tZXRhbCgpIG5ld1RleHR1cmVX
aXRoRGVzY3JpcHRvcjpkZXNjcmlwdG9yLm1ldGFsKCldKTsKLX0KLQotR1BVTGVnYWN5VGV4dHVy
ZTo6R1BVTGVnYWN5VGV4dHVyZShjb25zdCBHUFVMZWdhY3lEcmF3YWJsZSYgb3RoZXIpCi0gICAg
OiBtX21ldGFsIHsgb3RoZXIudGV4dHVyZSgpIH0KLXsKLSAgICBMT0coV2ViTWV0YWwsICJHUFVU
ZXh0dXJlOjpHUFVUZXh0dXJlKCkiKTsKLX0KLQotdW5zaWduZWQgR1BVTGVnYWN5VGV4dHVyZTo6
d2lkdGgoKSBjb25zdAotewotICAgIHJldHVybiBtX21ldGFsLmdldCgpLndpZHRoOwotfQotCi11
bnNpZ25lZCBHUFVMZWdhY3lUZXh0dXJlOjpoZWlnaHQoKSBjb25zdAotewotICAgIHJldHVybiBt
X21ldGFsLmdldCgpLmhlaWdodDsKLX0KLQotTVRMVGV4dHVyZSAqR1BVTGVnYWN5VGV4dHVyZTo6
bWV0YWwoKSBjb25zdAotewotICAgIHJldHVybiBtX21ldGFsLmdldCgpOwotfQotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>355374</attachid>
            <date>2018-11-20 17:12:11 -0800</date>
            <delta_ts>2018-11-20 22:23:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191867-20181121121208.patch</filename>
            <type>text/plain</type>
            <size>544207</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4NDA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmZhMDk0ODljMzgxN2Jm
YjI3ZjJkMzM0YjJiMGViY2ZjNjBjYjMxNC4uYWI1MTYyYzgwYWM1Y2FlNjg4MDIzYzVmMDcyNGUw
NTk0NTM0ZmZhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3MyBAQAorMjAxOC0xMS0yMCAgRGVh
biBKYWNrc29uICA8ZGlub0BhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBXZWJHUFUgcGxhdGZv
cm0gY29kZSB0byBwbGF0Zm9ybS9ncmFwaGljcy9ncHUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTg2NworICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NDYxOTA5OTM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhlIHVuZGVybHlpbmcgaW1wbGVtZW50YXRpb24gb2YgV2ViR1BVIGRvZXNuJ3QgbmVlZCB0
byBsaXZlIGluCisgICAgICAgIE1vZHVsZXMsIHNpbmNlIGl0IHRlY2huaWNhbGx5IGNvdWxkIGJl
IHVzZWQgYnkgb3RoZXIgcGFydHMgb2YgdGhlIHN5c3RlbS4gSXQKKyAgICAgICAgbWFrZXMgbW9y
ZSBzZW5zZSBmb3IgaXQgdG8gYmUgaW4gcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1LgorCisgICAgICAg
IE1vdmUuLi4KKyAgICAgICAgLSBNb2R1bGVzL3dlYmdwdS9HUFUqIC0+IHBsYXRmb3JtL2dyYXBo
aWNzL2dwdQorICAgICAgICAtIE1vZHVsZXMvd2ViZ3B1L2NvY29hIC0+IHBsYXRmb3JtL2dyYXBo
aWNzL2dwdS9jb2NvYQorICAgICAgICAtIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3kq
IC0+IHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvCisgICAgICAgIC0gcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L2NvY29hL0dQVUxlZ2FjeSogLT4gcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2Fj
eS9jb2NvYQorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogU291cmNlc0NvY29h
LnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUNvbW1hbmRCdWZmZXIuaDogUmVuYW1lZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVUNvbW1hbmRCdWZmZXIuaC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRGV2aWNlLmNwcDogUmVuYW1lZCBmcm9t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVURldmljZS5jcHAuCisgICAgICAgIChX
ZWJDb3JlOjpHUFVEZXZpY2U6OmNyZWF0ZVNoYWRlck1vZHVsZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpHUFVEZXZpY2U6OmNyZWF0ZVJlbmRlclBpcGVsaW5lIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkdQVURldmljZTo6Y3JlYXRlQ29tbWFuZEJ1ZmZlcik6CisgICAgICAgIChXZWJD
b3JlOjpHUFVEZXZpY2U6OmdldFF1ZXVlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
cHUvR1BVRGV2aWNlLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9HUFVEZXZpY2UuaC4KKyAgICAgICAgKFdlYkNvcmU6OkdQVURldmljZTo6cGxhdGZvcm1EZXZp
Y2UgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVQaXBlbGluZURl
c2NyaXB0b3JCYXNlLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9HUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmguCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0dQVVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvci5oLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVRdWV1ZS5oOiBSZW5hbWVkIGZyb20gU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVUXVldWUuaC4KKyAgICAgICAgKFdlYkNvcmU6
OkdQVVF1ZXVlOjpwbGF0Zm9ybVF1ZXVlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9ncHUvR1BVUmVuZGVyUGlwZWxpbmUuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L0dQVVJlbmRlclBpcGVsaW5lLmguCisgICAgICAgIChXZWJDb3JlOjpH
UFVSZW5kZXJQaXBlbGluZTo6cGxhdGZvcm1SZW5kZXJQaXBlbGluZSBjb25zdCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oOiBS
ZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVUmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yLmguCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVNoYWRl
ck1vZHVsZS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BV
U2hhZGVyTW9kdWxlLmguCisgICAgICAgIChXZWJDb3JlOjpHUFVTaGFkZXJNb2R1bGU6OnBsYXRm
b3JtU2hhZGVyTW9kdWxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUv
R1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVTd2FwQ2hhaW4uaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVN3YXBDaGFpbi5oLgorICAgICAgICAoV2ViQ29yZTo6
R1BVU3dhcENoYWluOjpwbGF0Zm9ybUxheWVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVVGV4dHVyZS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvR1BVVGV4dHVyZS5oLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dw
dS9HUFVUZXh0dXJlRm9ybWF0RW51bS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvR1BVVGV4dHVyZUZvcm1hdEVudW0uaC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9ncHUvY29jb2EvR1BVQ29tbWFuZEJ1ZmZlck1ldGFsLm1tOiBSZW5hbWVkIGZyb20g
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvY29jb2EvR1BVQ29tbWFuZEJ1ZmZlck1ldGFs
Lm1tLgorICAgICAgICAoV2ViQ29yZTo6R1BVQ29tbWFuZEJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdQVUNvbW1hbmRCdWZmZXI6OkdQVUNvbW1hbmRCdWZmZXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVEZXZpY2VNZXRhbC5tbTogUmVuYW1l
ZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L2NvY29hL0dQVURldmljZU1ldGFs
Lm1tLgorICAgICAgICAoV2ViQ29yZTo6R1BVRGV2aWNlOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6R1BVRGV2aWNlOjpHUFVEZXZpY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dwdS9jb2NvYS9HUFVRdWV1ZU1ldGFsLm1tOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvY29jb2EvR1BVUXVldWVNZXRhbC5tbS4KKyAgICAgICAgKFdlYkNvcmU6
OkdQVVF1ZXVlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R1BVUXVldWU6OkdQVVF1ZXVl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUmVuZGVyUGlwZWxp
bmVNZXRhbC5tbTogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L2Nv
Y29hL0dQVVJlbmRlclBpcGVsaW5lTWV0YWwubW0uCisgICAgICAgIChXZWJDb3JlOjpzZXRGdW5j
dGlvbnNGb3JQaXBlbGluZURlc2NyaXB0b3IpOgorICAgICAgICAoV2ViQ29yZTo6R1BVUmVuZGVy
UGlwZWxpbmU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHUFVSZW5kZXJQaXBlbGluZTo6
R1BVUmVuZGVyUGlwZWxpbmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2Nv
YS9HUFVTaGFkZXJNb2R1bGVNZXRhbC5tbTogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L2NvY29hL0dQVVNoYWRlck1vZHVsZU1ldGFsLm1tLgorICAgICAgICAoV2Vi
Q29yZTo6R1BVU2hhZGVyTW9kdWxlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R1BVU2hh
ZGVyTW9kdWxlOjpHUFVTaGFkZXJNb2R1bGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dwdS9jb2NvYS9HUFVTd2FwQ2hhaW5NZXRhbC5tbTogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L2NvY29hL0dQVVN3YXBDaGFpbk1ldGFsLm1tLgorICAgICAgICAo
V2ViQ29yZTo6R1BVU3dhcENoYWluOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R1BVU3dh
cENoYWluOjpHUFVTd2FwQ2hhaW4pOgorICAgICAgICAoV2ViQ29yZTo6R1BVU3dhcENoYWluOjpz
ZXREZXZpY2UpOgorICAgICAgICAoV2ViQ29yZTo6cGxhdGZvcm1UZXh0dXJlRm9ybWF0Rm9yR1BV
VGV4dHVyZUZvcm1hdCk6CisgICAgICAgIChXZWJDb3JlOjpHUFVTd2FwQ2hhaW46OnNldEZvcm1h
dCk6CisgICAgICAgIChXZWJDb3JlOjpHUFVTd2FwQ2hhaW46OnJlc2hhcGUpOgorICAgICAgICAo
V2ViQ29yZTo6R1BVU3dhcENoYWluOjpnZXROZXh0VGV4dHVyZSk6CisgICAgICAgIChXZWJDb3Jl
OjpHUFVTd2FwQ2hhaW46OnByZXNlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dw
dS9jb2NvYS9HUFVUZXh0dXJlTWV0YWwubW06IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9jb2NvYS9HUFVUZXh0dXJlTWV0YWwubW0uCisgICAgICAgIChXZWJDb3Jl
OjpHUFVUZXh0dXJlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R1BVVGV4dHVyZTo6R1BV
VGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpHUFVUZXh0dXJlOjpjcmVhdGVEZWZhdWx0VGV4
dHVyZVZpZXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvR1BVTGVn
YWN5QnVmZmVyLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9HUFVMZWdhY3lCdWZmZXIuY3BwLgorICAgICAgICAoV2ViQ29yZTo6R1BVTGVnYWN5
QnVmZmVyOjp+R1BVTGVnYWN5QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdQVUxlZ2FjeUJ1
ZmZlcjo6bGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVn
YWN5L0dQVUxlZ2FjeUJ1ZmZlci5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeUJ1ZmZlci5oLgorICAgICAgICAoV2ViQ29yZTo6R1BV
TGVnYWN5QnVmZmVyOjpjb250ZW50cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHUFVMZWdh
Y3lCdWZmZXI6Om1ldGFsIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUv
bGVnYWN5L0dQVUxlZ2FjeUNvbW1hbmRCdWZmZXIuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeUNvbW1hbmRCdWZmZXIuY3BwLgor
ICAgICAgICAoV2ViQ29yZTo6R1BVTGVnYWN5Q29tbWFuZEJ1ZmZlcjo6fkdQVUxlZ2FjeUNvbW1h
bmRCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvR1BVTGVn
YWN5Q29tbWFuZEJ1ZmZlci5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeUNvbW1hbmRCdWZmZXIuaC4KKyAgICAgICAgKFdlYkNvcmU6
OkdQVUxlZ2FjeUNvbW1hbmRCdWZmZXI6Om1ldGFsIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9ncHUvbGVnYWN5L0dQVUxlZ2FjeUNvbW1hbmRRdWV1ZS5jcHA6IFJlbmFtZWQg
ZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5Q29tbWFu
ZFF1ZXVlLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OkdQVUxlZ2FjeUNvbW1hbmRRdWV1ZTo6fkdQ
VUxlZ2FjeUNvbW1hbmRRdWV1ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xl
Z2FjeS9HUFVMZWdhY3lDb21tYW5kUXVldWUuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lDb21tYW5kUXVldWUuaC4KKyAgICAgICAg
KFdlYkNvcmU6OkdQVUxlZ2FjeUNvbW1hbmRRdWV1ZTo6bWV0YWwgY29uc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvR1BVTGVnYWN5Q29tcHV0ZUNvbW1hbmRFbmNv
ZGVyLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9HUFVMZWdhY3lDb21wdXRlQ29tbWFuZEVuY29kZXIuY3BwLgorICAgICAgICAoV2ViQ29yZTo6
R1BVTGVnYWN5Q29tcHV0ZUNvbW1hbmRFbmNvZGVyOjp+R1BVTGVnYWN5Q29tcHV0ZUNvbW1hbmRF
bmNvZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L0dQVUxlZ2Fj
eUNvbXB1dGVDb21tYW5kRW5jb2Rlci5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeUNvbXB1dGVDb21tYW5kRW5jb2Rlci5oLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvR1BVTGVnYWN5Q29tcHV0ZVBpcGVs
aW5lU3RhdGUuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0dQVUxlZ2FjeUNvbXB1dGVQaXBlbGluZVN0YXRlLmNwcC4KKyAgICAgICAgKFdlYkNv
cmU6OkdQVUxlZ2FjeUNvbXB1dGVQaXBlbGluZVN0YXRlOjp+R1BVTGVnYWN5Q29tcHV0ZVBpcGVs
aW5lU3RhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvR1BVTGVn
YWN5Q29tcHV0ZVBpcGVsaW5lU3RhdGUuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lDb21wdXRlUGlwZWxpbmVTdGF0ZS5oLgorICAg
ICAgICAoV2ViQ29yZTo6R1BVTGVnYWN5Q29tcHV0ZVBpcGVsaW5lU3RhdGU6Om1ldGFsIGNvbnN0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L0dQVUxlZ2FjeURlcHRo
U3RlbmNpbERlc2NyaXB0b3IuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeURlcHRoU3RlbmNpbERlc2NyaXB0b3IuY3BwLgorICAg
ICAgICAoV2ViQ29yZTo6R1BVTGVnYWN5RGVwdGhTdGVuY2lsRGVzY3JpcHRvcjo6fkdQVUxlZ2Fj
eURlcHRoU3RlbmNpbERlc2NyaXB0b3IpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dw
dS9sZWdhY3kvR1BVTGVnYWN5RGVwdGhTdGVuY2lsRGVzY3JpcHRvci5oOiBSZW5hbWVkIGZyb20g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeURlcHRoU3RlbmNp
bERlc2NyaXB0b3IuaC4KKyAgICAgICAgKFdlYkNvcmU6OkdQVUxlZ2FjeURlcHRoU3RlbmNpbERl
c2NyaXB0b3I6Om1ldGFsIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUv
bGVnYWN5L0dQVUxlZ2FjeURlcHRoU3RlbmNpbFN0YXRlLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lEZXB0aFN0ZW5jaWxTdGF0
ZS5jcHAuCisgICAgICAgIChXZWJDb3JlOjpHUFVMZWdhY3lEZXB0aFN0ZW5jaWxTdGF0ZTo6fkdQ
VUxlZ2FjeURlcHRoU3RlbmNpbFN0YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
cHUvbGVnYWN5L0dQVUxlZ2FjeURlcHRoU3RlbmNpbFN0YXRlLmg6IFJlbmFtZWQgZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5RGVwdGhTdGVuY2lsU3Rh
dGUuaC4KKyAgICAgICAgKFdlYkNvcmU6OkdQVUxlZ2FjeURlcHRoU3RlbmNpbFN0YXRlOjptZXRh
bCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9HUFVMZWdh
Y3lEZXZpY2UuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0dQVUxlZ2FjeURldmljZS5jcHAuCisgICAgICAgIChXZWJDb3JlOjpHUFVMZWdhY3lE
ZXZpY2U6On5HUFVMZWdhY3lEZXZpY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dw
dS9sZWdhY3kvR1BVTGVnYWN5RGV2aWNlLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5RGV2aWNlLmguCisgICAgICAgIChXZWJDb3Jl
OjpHUFVMZWdhY3lEZXZpY2U6OmxheWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdQVUxl
Z2FjeURldmljZTo6bWV0YWwgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R1BVTGVnYWN5RGV2
aWNlOjptYXJrTGF5ZXJDb21wb3NpdGVkIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9ncHUvbGVnYWN5L0dQVUxlZ2FjeURyYXdhYmxlLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lEcmF3YWJsZS5jcHAuCisg
ICAgICAgIChXZWJDb3JlOjpHUFVMZWdhY3lEcmF3YWJsZTo6fkdQVUxlZ2FjeURyYXdhYmxlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L0dQVUxlZ2FjeURyYXdhYmxl
Lmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BV
TGVnYWN5RHJhd2FibGUuaC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5
L0dQVUxlZ2FjeUVudW1zLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVTGVnYWN5RW51bXMuaC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvbGVnYWN5L0dQVUxlZ2FjeUZ1bmN0aW9uLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lGdW5jdGlvbi5jcHAuCisgICAg
ICAgIChXZWJDb3JlOjpHUFVMZWdhY3lGdW5jdGlvbjo6fkdQVUxlZ2FjeUZ1bmN0aW9uKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L0dQVUxlZ2FjeUZ1bmN0aW9uLmg6
IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVn
YWN5RnVuY3Rpb24uaC4KKyAgICAgICAgKFdlYkNvcmU6OkdQVUxlZ2FjeUZ1bmN0aW9uOjptZXRh
bCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9HUFVMZWdh
Y3lMaWJyYXJ5LmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9HUFVMZWdhY3lMaWJyYXJ5LmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OkdQVUxlZ2Fj
eUxpYnJhcnk6On5HUFVMZWdhY3lMaWJyYXJ5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvbGVnYWN5L0dQVUxlZ2FjeUxpYnJhcnkuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lMaWJyYXJ5LmguCisgICAgICAgIChX
ZWJDb3JlOjpHUFVMZWdhY3lMaWJyYXJ5OjptZXRhbCBjb25zdCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9HUFVMZWdhY3lSZW5kZXJDb21tYW5kRW5jb2Rlci5jcHA6
IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVn
YWN5UmVuZGVyQ29tbWFuZEVuY29kZXIuY3BwLgorICAgICAgICAoV2ViQ29yZTo6R1BVTGVnYWN5
UmVuZGVyQ29tbWFuZEVuY29kZXI6On5HUFVMZWdhY3lSZW5kZXJDb21tYW5kRW5jb2Rlcik6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9HUFVMZWdhY3lSZW5kZXJDb21t
YW5kRW5jb2Rlci5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0dQVUxlZ2FjeVJlbmRlckNvbW1hbmRFbmNvZGVyLmguCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9HUFVMZWdhY3lSZW5kZXJQYXNzQXR0YWNobWVudERlc2Ny
aXB0b3IuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L0dQVUxlZ2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5jcHAuCisgICAgICAg
IChXZWJDb3JlOjpHUFVMZWdhY3lSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3I6On5HUFVM
ZWdhY3lSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9sZWdhY3kvR1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlw
dG9yLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
R1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmguCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9HUFVMZWdhY3lSZW5kZXJQYXNzQ29sb3JBdHRhY2ht
ZW50RGVzY3JpcHRvci5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVTGVnYWN5UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3Iu
Y3BwLgorICAgICAgICAoV2ViQ29yZTo6R1BVTGVnYWN5UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVu
dERlc2NyaXB0b3I6On5HUFVMZWdhY3lSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRv
cik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9HUFVMZWdhY3lSZW5k
ZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeVJlbmRlclBhc3NDb2xvckF0dGFj
aG1lbnREZXNjcmlwdG9yLmguCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2Fj
eS9HUFVMZWdhY3lSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5jcHA6IFJlbmFt
ZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5UmVu
ZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IuY3BwLgorICAgICAgICAoV2ViQ29yZTo6
R1BVTGVnYWN5UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3I6On5HUFVMZWdhY3lS
ZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L2xlZ2FjeS9HUFVMZWdhY3lSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVz
Y3JpcHRvci5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L0dQVUxlZ2FjeVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmguCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9HUFVMZWdhY3lSZW5kZXJQYXNzRGVz
Y3JpcHRvci5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvR1BVTGVnYWN5UmVuZGVyUGFzc0Rlc2NyaXB0b3IuY3BwLgorICAgICAgICAoV2ViQ29y
ZTo6R1BVTGVnYWN5UmVuZGVyUGFzc0Rlc2NyaXB0b3I6On5HUFVMZWdhY3lSZW5kZXJQYXNzRGVz
Y3JpcHRvcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9HUFVMZWdh
Y3lSZW5kZXJQYXNzRGVzY3JpcHRvci5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeVJlbmRlclBhc3NEZXNjcmlwdG9yLmguCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9HUFVMZWdhY3lSZW5kZXJQaXBlbGlu
ZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeVJlbmRlclBpcGVsaW5lQ29sb3JBdHRh
Y2htZW50RGVzY3JpcHRvci5jcHAuCisgICAgICAgIChXZWJDb3JlOjpHUFVMZWdhY3lSZW5kZXJQ
aXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6On5HUFVMZWdhY3lSZW5kZXJQaXBlbGlu
ZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dwdS9sZWdhY3kvR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlw
dG9yLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
R1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmguCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9HUFVMZWdhY3lSZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3IuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVUxlZ2FjeVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5jcHAuCisgICAgICAg
IChXZWJDb3JlOjpHUFVMZWdhY3lSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6On5HUFVMZWdhY3lS
ZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dw
dS9sZWdhY3kvR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmg6IFJlbmFtZWQgZnJv
bSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5UmVuZGVyUGlw
ZWxpbmVEZXNjcmlwdG9yLmguCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2Fj
eS9HUFVMZWdhY3lSZW5kZXJQaXBlbGluZVN0YXRlLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lSZW5kZXJQaXBlbGluZVN0YXRl
LmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OkdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lU3RhdGU6On5H
UFVMZWdhY3lSZW5kZXJQaXBlbGluZVN0YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvbGVnYWN5L0dQVUxlZ2FjeVJlbmRlclBpcGVsaW5lU3RhdGUuaDogUmVuYW1lZCBmcm9t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lSZW5kZXJQaXBl
bGluZVN0YXRlLmguCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9HUFVM
ZWdhY3lTaXplLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvR1BVTGVnYWN5U2l6ZS5oLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9s
ZWdhY3kvR1BVTGVnYWN5VGV4dHVyZS5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5VGV4dHVyZS5jcHAuCisgICAgICAgIChXZWJD
b3JlOjpHUFVMZWdhY3lUZXh0dXJlOjp+R1BVTGVnYWN5VGV4dHVyZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9HUFVMZWdhY3lUZXh0dXJlLmg6IFJlbmFtZWQgZnJv
bSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5VGV4dHVyZS5o
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvR1BVTGVnYWN5VGV4dHVy
ZURlc2NyaXB0b3IuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVUxlZ2FjeVRleHR1cmVEZXNjcmlwdG9yLmNwcC4KKyAgICAgICAgKFdlYkNv
cmU6OkdQVUxlZ2FjeVRleHR1cmVEZXNjcmlwdG9yOjp+R1BVTGVnYWN5VGV4dHVyZURlc2NyaXB0
b3IpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvR1BVTGVnYWN5VGV4
dHVyZURlc2NyaXB0b3IuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9HUFVMZWdhY3lUZXh0dXJlRGVzY3JpcHRvci5oLgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvY29jb2EvR1BVTGVnYWN5QnVmZmVyTWV0YWwubW06IFJl
bmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVMZWdh
Y3lCdWZmZXJNZXRhbC5tbS4KKyAgICAgICAgKFdlYkNvcmU6OkdQVUxlZ2FjeUJ1ZmZlcjo6R1BV
TGVnYWN5QnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L2Nv
Y29hL0dQVUxlZ2FjeUNvbW1hbmRCdWZmZXJNZXRhbC5tbTogUmVuYW1lZCBmcm9tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVUxlZ2FjeUNvbW1hbmRCdWZmZXJNZXRh
bC5tbS4KKyAgICAgICAgKFdlYkNvcmU6OkdQVUxlZ2FjeUNvbW1hbmRCdWZmZXI6OkdQVUxlZ2Fj
eUNvbW1hbmRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R1BVTGVnYWN5Q29tbWFuZEJ1ZmZl
cjo6cHJlc2VudERyYXdhYmxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdQVUxlZ2FjeUNv
bW1hbmRCdWZmZXI6OmNvbW1pdCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L2xlZ2FjeS9jb2NvYS9HUFVMZWdhY3lDb21tYW5kUXVldWVNZXRhbC5tbTogUmVuYW1lZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVUxlZ2FjeUNvbW1h
bmRRdWV1ZU1ldGFsLm1tLgorICAgICAgICAoV2ViQ29yZTo6R1BVTGVnYWN5Q29tbWFuZFF1ZXVl
OjpHUFVMZWdhY3lDb21tYW5kUXVldWUpOgorICAgICAgICAoV2ViQ29yZTo6R1BVTGVnYWN5Q29t
bWFuZFF1ZXVlOjpsYWJlbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHUFVMZWdhY3lDb21t
YW5kUXVldWU6OnNldExhYmVsIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
cHUvbGVnYWN5L2NvY29hL0dQVUxlZ2FjeUNvbXB1dGVDb21tYW5kRW5jb2Rlck1ldGFsLm1tOiBS
ZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVn
YWN5Q29tcHV0ZUNvbW1hbmRFbmNvZGVyTWV0YWwubW0uCisgICAgICAgIChXZWJDb3JlOjpNVExT
aXplTWFrZSk6CisgICAgICAgIChXZWJDb3JlOjpHUFVMZWdhY3lDb21wdXRlQ29tbWFuZEVuY29k
ZXI6OkdQVUxlZ2FjeUNvbXB1dGVDb21tYW5kRW5jb2Rlcik6CisgICAgICAgIChXZWJDb3JlOjpH
UFVMZWdhY3lDb21wdXRlQ29tbWFuZEVuY29kZXI6OnNldENvbXB1dGVQaXBlbGluZVN0YXRlIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdQVUxlZ2FjeUNvbXB1dGVDb21tYW5kRW5jb2Rlcjo6
c2V0QnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdQVUxlZ2FjeUNvbXB1dGVDb21t
YW5kRW5jb2Rlcjo6ZGlzcGF0Y2ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R1BVTGVnYWN5
Q29tcHV0ZUNvbW1hbmRFbmNvZGVyOjplbmRFbmNvZGluZyBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9jb2NvYS9HUFVMZWdhY3lDb21wdXRlUGlwZWxpbmVT
dGF0ZU1ldGFsLm1tOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvbWV0YWwvR1BVTGVnYWN5Q29tcHV0ZVBpcGVsaW5lU3RhdGVNZXRhbC5tbS4KKyAgICAgICAg
KFdlYkNvcmU6OkdQVUxlZ2FjeUNvbXB1dGVQaXBlbGluZVN0YXRlOjpHUFVMZWdhY3lDb21wdXRl
UGlwZWxpbmVTdGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9j
b2NvYS9HUFVMZWdhY3lEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yTWV0YWwubW06IFJlbmFtZWQgZnJv
bSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVMZWdhY3lEZXB0aFN0
ZW5jaWxEZXNjcmlwdG9yTWV0YWwubW0uCisgICAgICAgIChXZWJDb3JlOjpHUFVMZWdhY3lEZXB0
aFN0ZW5jaWxEZXNjcmlwdG9yOjpHUFVMZWdhY3lEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdQVUxlZ2FjeURlcHRoU3RlbmNpbERlc2NyaXB0b3I6OmRlcHRoV3Jp
dGVFbmFibGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdQVUxlZ2FjeURlcHRoU3RlbmNp
bERlc2NyaXB0b3I6OnNldERlcHRoV3JpdGVFbmFibGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkdQVUxlZ2FjeURlcHRoU3RlbmNpbERlc2NyaXB0b3I6OmRlcHRoQ29tcGFyZUZ1bmN0aW9u
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdQVUxlZ2FjeURlcHRoU3RlbmNpbERlc2NyaXB0
b3I6OnNldERlcHRoQ29tcGFyZUZ1bmN0aW9uIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9ncHUvbGVnYWN5L2NvY29hL0dQVUxlZ2FjeURlcHRoU3RlbmNpbFN0YXRlTWV0YWwu
bW06IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9H
UFVMZWdhY3lEZXB0aFN0ZW5jaWxTdGF0ZU1ldGFsLm1tLgorICAgICAgICAoV2ViQ29yZTo6R1BV
TGVnYWN5RGVwdGhTdGVuY2lsU3RhdGU6OkdQVUxlZ2FjeURlcHRoU3RlbmNpbFN0YXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdQVUxlZ2FjeURlcHRoU3RlbmNpbFN0YXRlOjpsYWJlbCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpHUFVMZWdhY3lEZXB0aFN0ZW5jaWxTdGF0ZTo6c2V0TGFiZWwg
Y29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvY29jb2EvR1BV
TGVnYWN5RGV2aWNlTWV0YWwubW06IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tZXRhbC9HUFVMZWdhY3lEZXZpY2VNZXRhbC5tbS4KKyAgICAgICAgKFdlYkNv
cmU6OkdQVUxlZ2FjeURldmljZTo6R1BVTGVnYWN5RGV2aWNlKToKKyAgICAgICAgKFdlYkNvcmU6
OkdQVUxlZ2FjeURldmljZTo6ZGlzY29ubmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpHUFVMZWdh
Y3lEZXZpY2U6OnJlc2hhcGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R1BVTGVnYWN5RGV2
aWNlOjpwbGF0Zm9ybUxheWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdQVUxlZ2FjeURl
dmljZTo6b3BlcmF0b3IhIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUv
bGVnYWN5L2NvY29hL0dQVUxlZ2FjeURyYXdhYmxlTWV0YWwubW06IFJlbmFtZWQgZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVMZWdhY3lEcmF3YWJsZU1ldGFs
Lm1tLgorICAgICAgICAoV2ViQ29yZTo6R1BVTGVnYWN5RHJhd2FibGU6OkdQVUxlZ2FjeURyYXdh
YmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkdQVUxlZ2FjeURyYXdhYmxlOjpyZWxlYXNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdQVUxlZ2FjeURyYXdhYmxlOjptZXRhbCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpHUFVMZWdhY3lEcmF3YWJsZTo6dGV4dHVyZSBjb25zdCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9jb2NvYS9HUFVMZWdhY3lGdW5jdGlvbk1ldGFs
Lm1tOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwv
R1BVTGVnYWN5RnVuY3Rpb25NZXRhbC5tbS4KKyAgICAgICAgKFdlYkNvcmU6OkdQVUxlZ2FjeUZ1
bmN0aW9uOjpHUFVMZWdhY3lGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHUFVMZWdhY3lG
dW5jdGlvbjo6bmFtZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHUFVMZWdhY3lGdW5jdGlv
bjo6b3BlcmF0b3IhIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVn
YWN5L2NvY29hL0dQVUxlZ2FjeUxpYnJhcnlNZXRhbC5tbTogUmVuYW1lZCBmcm9tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVUxlZ2FjeUxpYnJhcnlNZXRhbC5tbS4K
KyAgICAgICAgKFdlYkNvcmU6OkdQVUxlZ2FjeUxpYnJhcnk6OkdQVUxlZ2FjeUxpYnJhcnkpOgor
ICAgICAgICAoV2ViQ29yZTo6R1BVTGVnYWN5TGlicmFyeTo6bGFiZWwgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6R1BVTGVnYWN5TGlicmFyeTo6c2V0TGFiZWwgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6R1BVTGVnYWN5TGlicmFyeTo6ZnVuY3Rpb25OYW1lcyBjb25zdCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9jb2NvYS9HUFVMZWdhY3lSZW5kZXJDb21t
YW5kRW5jb2Rlck1ldGFsLm1tOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5UmVuZGVyQ29tbWFuZEVuY29kZXJNZXRhbC5tbS4KKyAg
ICAgICAgKFdlYkNvcmU6OkdQVUxlZ2FjeVJlbmRlckNvbW1hbmRFbmNvZGVyOjpHUFVMZWdhY3lS
ZW5kZXJDb21tYW5kRW5jb2Rlcik6CisgICAgICAgIChXZWJDb3JlOjpHUFVMZWdhY3lSZW5kZXJD
b21tYW5kRW5jb2Rlcjo6c2V0UmVuZGVyUGlwZWxpbmVTdGF0ZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpHUFVMZWdhY3lSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0RGVwdGhTdGVuY2lsU3Rh
dGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R1BVTGVnYWN5UmVuZGVyQ29tbWFuZEVuY29k
ZXI6OnNldFZlcnRleEJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHUFVMZWdhY3lS
ZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0RnJhZ21lbnRCdWZmZXIgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6R1BVTGVnYWN5UmVuZGVyQ29tbWFuZEVuY29kZXI6OmRyYXdQcmltaXRpdmVzIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdQVUxlZ2FjeVJlbmRlckNvbW1hbmRFbmNvZGVyOjpl
bmRFbmNvZGluZyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2Fj
eS9jb2NvYS9HUFVMZWdhY3lSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3JNZXRhbC5tbTog
UmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVUxl
Z2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvck1ldGFsLm1tLgorICAgICAgICAoV2Vi
Q29yZTo6R1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjpHUFVMZWdhY3lS
ZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IpOgorICAgICAgICAoV2ViQ29yZTo6R1BVTGVn
YWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjpsb2FkQWN0aW9uIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdQVUxlZ2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjo6
c2V0TG9hZEFjdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHUFVMZWdhY3lSZW5kZXJQ
YXNzQXR0YWNobWVudERlc2NyaXB0b3I6OnN0b3JlQWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkdQVUxlZ2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjo6c2V0U3RvcmVB
Y3Rpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFj
aG1lbnREZXNjcmlwdG9yOjpzZXRUZXh0dXJlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdQ
VUxlZ2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjo6bWV0YWwgY29uc3QpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvY29jb2EvR1BVTGVnYWN5UmVuZGVy
UGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3JNZXRhbC5tbTogUmVuYW1lZCBmcm9tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVUxlZ2FjeVJlbmRlclBhc3NDb2xv
ckF0dGFjaG1lbnREZXNjcmlwdG9yTWV0YWwubW0uCisgICAgICAgIChXZWJDb3JlOjpHUFVMZWdh
Y3lSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6R1BVTGVnYWN5UmVuZGVyUGFz
c0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IpOgorICAgICAgICAoV2ViQ29yZTo6R1BVTGVnYWN5
UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6OmNsZWFyQ29sb3IgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6R1BVTGVnYWN5UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2Ny
aXB0b3I6OnNldENsZWFyQ29sb3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R1BVTGVnYWN5
UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6Om1ldGFsIGNvbnN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L2NvY29hL0dQVUxlZ2FjeVJlbmRlclBh
c3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yTWV0YWwubW06IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVMZWdhY3lSZW5kZXJQYXNzRGVwdGhB
dHRhY2htZW50RGVzY3JpcHRvck1ldGFsLm1tLgorICAgICAgICAoV2ViQ29yZTo6R1BVTGVnYWN5
UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3I6OkdQVUxlZ2FjeVJlbmRlclBhc3NE
ZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkdQVUxlZ2FjeVJl
bmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yOjpjbGVhckRlcHRoIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdQVUxlZ2FjeVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlw
dG9yOjpzZXRDbGVhckRlcHRoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdQVUxlZ2FjeVJl
bmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yOjptZXRhbCBjb25zdCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9jb2NvYS9HUFVMZWdhY3lSZW5kZXJQYXNz
RGVzY3JpcHRvck1ldGFsLm1tOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5UmVuZGVyUGFzc0Rlc2NyaXB0b3JNZXRhbC5tbS4KKyAg
ICAgICAgKFdlYkNvcmU6OkdQVUxlZ2FjeVJlbmRlclBhc3NEZXNjcmlwdG9yOjpHUFVMZWdhY3lS
ZW5kZXJQYXNzRGVzY3JpcHRvcik6CisgICAgICAgIChXZWJDb3JlOjpHUFVMZWdhY3lSZW5kZXJQ
YXNzRGVzY3JpcHRvcjo6Y29sb3JBdHRhY2htZW50cyBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpHUFVMZWdhY3lSZW5kZXJQYXNzRGVzY3JpcHRvcjo6ZGVwdGhBdHRhY2htZW50IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkdQVUxlZ2FjeVJlbmRlclBhc3NEZXNjcmlwdG9yOjptZXRhbCBj
b25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9jb2NvYS9HUFVM
ZWdhY3lSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3JNZXRhbC5tbTogUmVu
YW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVUxlZ2Fj
eVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvck1ldGFsLm1tLgorICAgICAg
ICAoV2ViQ29yZTo6R1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlw
dG9yOjpHUFVMZWdhY3lSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IpOgor
ICAgICAgICAoV2ViQ29yZTo6R1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnRE
ZXNjcmlwdG9yOjpwaXhlbEZvcm1hdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHUFVMZWdh
Y3lSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6OnNldFBpeGVsRm9ybWF0
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lQ29sb3JB
dHRhY2htZW50RGVzY3JpcHRvcjo6bWV0YWwgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2dwdS9sZWdhY3kvY29jb2EvR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9y
TWV0YWwubW06IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
ZXRhbC9HUFVMZWdhY3lSZW5kZXJQaXBlbGluZURlc2NyaXB0b3JNZXRhbC5tbS4KKyAgICAgICAg
KFdlYkNvcmU6OkdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6R1BVTGVnYWN5UmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkdQVUxlZ2FjeVJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvcjo6ZGVwdGhBdHRhY2htZW50UGl4ZWxGb3JtYXQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6R1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpzZXRE
ZXB0aEF0dGFjaG1lbnRQaXhlbEZvcm1hdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHUFVM
ZWdhY3lSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnNldFZlcnRleEZ1bmN0aW9uIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0
RnJhZ21lbnRGdW5jdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHUFVMZWdhY3lSZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3I6OmNvbG9yQXR0YWNobWVudHMgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6R1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpyZXNldCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpHUFVMZWdhY3lSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6Om1l
dGFsIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L2NvY29h
L0dQVUxlZ2FjeVJlbmRlclBpcGVsaW5lU3RhdGVNZXRhbC5tbTogUmVuYW1lZCBmcm9tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVUxlZ2FjeVJlbmRlclBpcGVsaW5l
U3RhdGVNZXRhbC5tbS4KKyAgICAgICAgKFdlYkNvcmU6OkdQVUxlZ2FjeVJlbmRlclBpcGVsaW5l
U3RhdGU6OkdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
R1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVTdGF0ZTo6bGFiZWwgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6R1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVTdGF0ZTo6c2V0TGFiZWwgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6R1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVTdGF0ZTo6bWV0YWwgY29uc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvY29jb2EvR1BVTGVnYWN5
VGV4dHVyZURlc2NyaXB0b3JNZXRhbC5tbTogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVUxlZ2FjeVRleHR1cmVEZXNjcmlwdG9yTWV0YWwubW0u
CisgICAgICAgIChXZWJDb3JlOjpHUFVMZWdhY3lUZXh0dXJlRGVzY3JpcHRvcjo6R1BVTGVnYWN5
VGV4dHVyZURlc2NyaXB0b3IpOgorICAgICAgICAoV2ViQ29yZTo6R1BVTGVnYWN5VGV4dHVyZURl
c2NyaXB0b3I6OndpZHRoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdQVUxlZ2FjeVRleHR1
cmVEZXNjcmlwdG9yOjpzZXRXaWR0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHUFVMZWdh
Y3lUZXh0dXJlRGVzY3JpcHRvcjo6aGVpZ2h0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdQ
VUxlZ2FjeVRleHR1cmVEZXNjcmlwdG9yOjpzZXRIZWlnaHQgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6R1BVTGVnYWN5VGV4dHVyZURlc2NyaXB0b3I6OnNhbXBsZUNvdW50IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdQVUxlZ2FjeVRleHR1cmVEZXNjcmlwdG9yOjpzZXRTYW1wbGVDb3Vu
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHUFVMZWdhY3lUZXh0dXJlRGVzY3JpcHRvcjo6
dGV4dHVyZVR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R1BVTGVnYWN5VGV4dHVyZURl
c2NyaXB0b3I6OnNldFRleHR1cmVUeXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdQVUxl
Z2FjeVRleHR1cmVEZXNjcmlwdG9yOjpzdG9yYWdlTW9kZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpHUFVMZWdhY3lUZXh0dXJlRGVzY3JpcHRvcjo6c2V0U3RvcmFnZU1vZGUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6R1BVTGVnYWN5VGV4dHVyZURlc2NyaXB0b3I6OnVzYWdlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkdQVUxlZ2FjeVRleHR1cmVEZXNjcmlwdG9yOjpzZXRVc2Fn
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHUFVMZWdhY3lUZXh0dXJlRGVzY3JpcHRvcjo6
bWV0YWwgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvY29j
b2EvR1BVTGVnYWN5VGV4dHVyZU1ldGFsLm1tOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5VGV4dHVyZU1ldGFsLm1tLgorICAgICAg
ICAoV2ViQ29yZTo6R1BVTGVnYWN5VGV4dHVyZTo6R1BVTGVnYWN5VGV4dHVyZSk6CisgICAgICAg
IChXZWJDb3JlOjpHUFVMZWdhY3lUZXh0dXJlOjp3aWR0aCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpHUFVMZWdhY3lUZXh0dXJlOjpoZWlnaHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
R1BVTGVnYWN5VGV4dHVyZTo6bWV0YWwgY29uc3QpOgorCiAyMDE4LTExLTIwICBEZWFuIEphY2tz
b24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmluZyB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZSBmcm9tIFdlYkxheWVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9HUFVDb21tYW5kQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9HUFVDb21tYW5kQnVmZmVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMzYzcz
MzI1YTQ2ZWNmZDc3MWJhZjA0ZWE2YTU2YjhiYmY5YjM1ZWUuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
R1BVQ29tbWFuZEJ1ZmZlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9S
ZXRhaW5QdHIuaD4KLQotT0JKQ19QUk9UT0NPTChNVExDb21tYW5kQnVmZmVyKTsKLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1jbGFzcyBHUFVEZXZpY2U7Ci0KLXVzaW5nIFBsYXRmb3JtQ29tbWFu
ZEJ1ZmZlciA9IE1UTENvbW1hbmRCdWZmZXI7Ci11c2luZyBQbGF0Zm9ybUNvbW1hbmRCdWZmZXJT
bWFydFB0ciA9IFJldGFpblB0cjxNVExDb21tYW5kQnVmZmVyPjsKLQotY2xhc3MgR1BVQ29tbWFu
ZEJ1ZmZlciA6IHB1YmxpYyBSZWZDb3VudGVkPEdQVUNvbW1hbmRCdWZmZXI+IHsKLXB1YmxpYzoK
LSAgICBzdGF0aWMgUmVmUHRyPEdQVUNvbW1hbmRCdWZmZXI+IGNyZWF0ZShHUFVEZXZpY2UmKTsK
LQotcHJpdmF0ZToKLSAgICBHUFVDb21tYW5kQnVmZmVyKFBsYXRmb3JtQ29tbWFuZEJ1ZmZlclNt
YXJ0UHRyJiYpOwotCi0gICAgUGxhdGZvcm1Db21tYW5kQnVmZmVyU21hcnRQdHIgbV9wbGF0Zm9y
bUNvbW1hbmRCdWZmZXI7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAv
LyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvR1BVRGV2aWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVURldmlj
ZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZmMTc3NGU2Yzg1YmEyZTVkNmYx
YzkxNzI2YTkzZDlhNWZlMzgzNmEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVRGV2aWNlLmNwcAor
KysgL2Rldi9udWxsCkBAIC0xLDYzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiR1BVRGV2aWNlLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0j
aW5jbHVkZSAiR1BVUmVuZGVyUGlwZWxpbmUuaCIKLSNpbmNsdWRlICJHUFVSZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3IuaCIKLSNpbmNsdWRlICJHUFVTaGFkZXJNb2R1bGUuaCIKLSNpbmNsdWRlICJH
UFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUmVm
UHRyPEdQVVNoYWRlck1vZHVsZT4gR1BVRGV2aWNlOjpjcmVhdGVTaGFkZXJNb2R1bGUoR1BVU2hh
ZGVyTW9kdWxlRGVzY3JpcHRvciYmIGRlc2NyaXB0b3IpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIEdQ
VVNoYWRlck1vZHVsZTo6Y3JlYXRlKCp0aGlzLCBXVEZNb3ZlKGRlc2NyaXB0b3IpKTsKLX0KLQot
UmVmUHRyPEdQVVJlbmRlclBpcGVsaW5lPiBHUFVEZXZpY2U6OmNyZWF0ZVJlbmRlclBpcGVsaW5l
KEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciYmIGRlc2NyaXB0b3IpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIEdQVVJlbmRlclBpcGVsaW5lOjpjcmVhdGUoKnRoaXMsIFdURk1vdmUoZGVzY3JpcHRv
cikpOwotfQotCi1SZWZQdHI8R1BVQ29tbWFuZEJ1ZmZlcj4gR1BVRGV2aWNlOjpjcmVhdGVDb21t
YW5kQnVmZmVyKCkKLXsKLSAgICByZXR1cm4gR1BVQ29tbWFuZEJ1ZmZlcjo6Y3JlYXRlKCp0aGlz
KTsKLX0KLQotUmVmUHRyPEdQVVF1ZXVlPiBHUFVEZXZpY2U6OmdldFF1ZXVlKCkKLXsKLSAgICBp
ZiAoIW1fcXVldWUpCi0gICAgICAgIG1fcXVldWUgPSBHUFVRdWV1ZTo6Y3JlYXRlKCp0aGlzKTsK
LQotICAgIHJldHVybiBtX3F1ZXVlOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNl
bmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvR1BVRGV2aWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVE
ZXZpY2UuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTgxNmYxODNmYzA5MmQ3NDZm
Yjk3MzIyNDQ2ZjhjYjIzM2MxNGZkMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVEZXZpY2UuaAor
KysgL2Rldi9udWxsCkBAIC0xLDcxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UK
LQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbmNsdWRlICJHUFVDb21tYW5kQnVmZmVyLmgiCi0j
aW5jbHVkZSAiR1BVUXVldWUuaCIKLQotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLQotT0JKQ19Q
Uk9UT0NPTChNVExEZXZpY2UpOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXVzaW5nIFBsYXRm
b3JtRGV2aWNlID0gTVRMRGV2aWNlOwotdXNpbmcgUGxhdGZvcm1EZXZpY2VTbWFydFB0ciA9IFJl
dGFpblB0cjxNVExEZXZpY2U+OwotCi1jbGFzcyBHUFVSZW5kZXJQaXBlbGluZTsKLWNsYXNzIEdQ
VVNoYWRlck1vZHVsZTsKLQotc3RydWN0IEdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3I7Ci1zdHJ1
Y3QgR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOwotCi1jbGFzcyBHUFVEZXZpY2UgOiBwdWJs
aWMgUmVmQ291bnRlZDxHUFVEZXZpY2U+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPEdQ
VURldmljZT4gY3JlYXRlKCk7Ci0KLSAgICBSZWZQdHI8R1BVU2hhZGVyTW9kdWxlPiBjcmVhdGVT
aGFkZXJNb2R1bGUoR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvciYmKSBjb25zdDsKLSAgICBSZWZQ
dHI8R1BVUmVuZGVyUGlwZWxpbmU+IGNyZWF0ZVJlbmRlclBpcGVsaW5lKEdQVVJlbmRlclBpcGVs
aW5lRGVzY3JpcHRvciYmKSBjb25zdDsKLQotICAgIFJlZlB0cjxHUFVDb21tYW5kQnVmZmVyPiBj
cmVhdGVDb21tYW5kQnVmZmVyKCk7Ci0KLSAgICBSZWZQdHI8R1BVUXVldWU+IGdldFF1ZXVlKCk7
Ci0gICAgUGxhdGZvcm1EZXZpY2UqIHBsYXRmb3JtRGV2aWNlKCkgY29uc3QgeyByZXR1cm4gbV9w
bGF0Zm9ybURldmljZS5nZXQoKTsgfQotCi1wcml2YXRlOgotICAgIEdQVURldmljZShQbGF0Zm9y
bURldmljZVNtYXJ0UHRyJiYpOwotCi0gICAgUGxhdGZvcm1EZXZpY2VTbWFydFB0ciBtX3BsYXRm
b3JtRGV2aWNlOwotICAgIFJlZlB0cjxHUFVRdWV1ZT4gbV9xdWV1ZTsKLX07Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVQaXBlbGluZURlc2NyaXB0b3JCYXNl
LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJlMjc1NWI5ZTI2NmEyZThiMzhmYTVk
NGIwOGZkN2UxNGUyODEyNjkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVUGlwZWxpbmVEZXNjcmlw
dG9yQmFzZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNw
cmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVVBpcGVsaW5l
U3RhZ2VEZXNjcmlwdG9yLmgiCi0KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotc3RydWN0IEdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UgewotICAgIFZl
Y3RvcjxHUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvcj4gc3RhZ2VzOwotfTsKLQotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRv
ci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNDMxNDViNjY3ZWYwMjAxYjA4YWVl
MzU2OGQwZGFlNzM2MjFjYmJiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVBpcGVsaW5lU3RhZ2VE
ZXNjcmlwdG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiR1BVU2hhZGVy
TW9kdWxlLmgiCi0KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1zdHJ1Y3QgR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IgewotICAgIGNv
bnN0IEdQVVNoYWRlck1vZHVsZSogbW9kdWxlID0gbnVsbHB0cjsKLSAgICBTdHJpbmcgZW50cnlQ
b2ludDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShX
RUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVRdWV1
ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVUXVldWUuaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggM2ZkZDAwY2ZhOGMyYTExY2Y2NGUzYTRkNTAyNTY4ZGY0MjIx
OGJkYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVRdWV1ZS5oCisrKyAvZGV2L251bGwKQEAgLTEs
NTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQ
VSkKLQotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLQotT0JKQ19QUk9UT0NPTChNVExDb21tYW5k
UXVldWUpOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEdQVURldmljZTsKLQotdXNp
bmcgUGxhdGZvcm1RdWV1ZSA9IE1UTENvbW1hbmRRdWV1ZTsKLXVzaW5nIFBsYXRmb3JtUXVldWVT
bWFydFB0ciA9IFJldGFpblB0cjxNVExDb21tYW5kUXVldWU+OwotCi1jbGFzcyBHUFVRdWV1ZSA6
IHB1YmxpYyBSZWZDb3VudGVkPEdQVVF1ZXVlPiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0
cjxHUFVRdWV1ZT4gY3JlYXRlKGNvbnN0IEdQVURldmljZSYpOwotCi0gICAgUGxhdGZvcm1RdWV1
ZSogcGxhdGZvcm1RdWV1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1RdWV1ZS5nZXQoKTsg
fQotCi1wcml2YXRlOgotICAgIEdQVVF1ZXVlKFBsYXRmb3JtUXVldWVTbWFydFB0ciYmKTsKLQot
ICAgIFBsYXRmb3JtUXVldWVTbWFydFB0ciBtX3BsYXRmb3JtUXVldWU7Ci19OwotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVUmVuZGVyUGlwZWxpbmUuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVJlbmRlclBpcGVsaW5lLmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDQyZmQ5YTMzNWRhYTkxNGM1MmQ5NjczNTlkNjc4MjM5OTkzYjIz
MTQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVUmVuZGVyUGlwZWxpbmUuaAorKysgL2Rldi9udWxs
CkBAIC0xLDU5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJM
RShXRUJHUFUpCi0KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0KLU9CSkNfUFJPVE9DT0woTVRM
UmVuZGVyUGlwZWxpbmVTdGF0ZSk7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgR1BV
RGV2aWNlOwotCi1zdHJ1Y3QgR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOwotCi11c2luZyBQ
bGF0Zm9ybVJlbmRlclBpcGVsaW5lID0gTVRMUmVuZGVyUGlwZWxpbmVTdGF0ZTsKLXVzaW5nIFBs
YXRmb3JtUmVuZGVyUGlwZWxpbmVTbWFydFB0ciA9IFJldGFpblB0cjxNVExSZW5kZXJQaXBlbGlu
ZVN0YXRlPjsKLQotY2xhc3MgR1BVUmVuZGVyUGlwZWxpbmUgOiBwdWJsaWMgUmVmQ291bnRlZDxH
UFVSZW5kZXJQaXBlbGluZT4gewotcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8R1BVUmVuZGVy
UGlwZWxpbmU+IGNyZWF0ZShjb25zdCBHUFVEZXZpY2UmLCBHUFVSZW5kZXJQaXBlbGluZURlc2Ny
aXB0b3ImJik7Ci0KLSAgICBQbGF0Zm9ybVJlbmRlclBpcGVsaW5lKiBwbGF0Zm9ybVJlbmRlclBp
cGVsaW5lKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybVJlbmRlclBpcGVsaW5lLmdldCgpOyB9
Ci0KLXByaXZhdGU6Ci0gICAgR1BVUmVuZGVyUGlwZWxpbmUoUGxhdGZvcm1SZW5kZXJQaXBlbGlu
ZVNtYXJ0UHRyJiYpOwotCi0gICAgUGxhdGZvcm1SZW5kZXJQaXBlbGluZVNtYXJ0UHRyIG1fcGxh
dGZvcm1SZW5kZXJQaXBlbGluZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2Vu
ZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9HUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L0dQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAxNGVjN2QyZjk3ZWJjNDRjN2IzNmI5NWVlNGE1Y2EzYmNjZDliZDI4
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oCisrKyAv
ZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0j
aWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgIkdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2Uu
aCIKLSNpbmNsdWRlICJHUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvci5oIgotCi0jaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBHUFVSZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3IgewotICAgIGVudW0gY2xhc3MgUHJpbWl0aXZlVG9wb2xvZ3kgewot
ICAgICAgICBQb2ludExpc3QsCi0gICAgICAgIExpbmVMaXN0LAotICAgICAgICBMaW5lU3RyaXAs
Ci0gICAgICAgIFRyaWFuZ2xlTGlzdCwKLSAgICAgICAgVHJpYW5nbGVTdHJpcAotICAgIH07Ci0K
LSAgICBHUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvciB2ZXJ0ZXhTdGFnZTsKLSAgICBHUFVQaXBl
bGluZVN0YWdlRGVzY3JpcHRvciBmcmFnbWVudFN0YWdlOwotICAgIFByaW1pdGl2ZVRvcG9sb2d5
IHByaW1pdGl2ZVRvcG9sb2d5OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5k
aWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L0dQVVNoYWRlck1vZHVsZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
R1BVU2hhZGVyTW9kdWxlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNiZmIzZjli
ZTA0YWVhYWIwYjY0NjcwNDNhYmYxYTQ5NTcyMDA5ZGEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BV
U2hhZGVyTW9kdWxlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JldGFp
blB0ci5oPgotCi1PQkpDX1BST1RPQ09MKE1UTExpYnJhcnkpOwotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLWNsYXNzIEdQVURldmljZTsKLQotc3RydWN0IEdQVVNoYWRlck1vZHVsZURlc2NyaXB0
b3I7Ci0KLXVzaW5nIFBsYXRmb3JtU2hhZGVyTW9kdWxlID0gTVRMTGlicmFyeTsKLXVzaW5nIFBs
YXRmb3JtU2hhZGVyTW9kdWxlU21hcnRQdHIgPSBSZXRhaW5QdHI8TVRMTGlicmFyeT47Ci0KLWNs
YXNzIEdQVVNoYWRlck1vZHVsZSA6IHB1YmxpYyBSZWZDb3VudGVkPEdQVVNoYWRlck1vZHVsZT4g
ewotcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8R1BVU2hhZGVyTW9kdWxlPiBjcmVhdGUoY29u
c3QgR1BVRGV2aWNlJiwgR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvciYmKTsKLQotICAgIFBsYXRm
b3JtU2hhZGVyTW9kdWxlKiBwbGF0Zm9ybVNoYWRlck1vZHVsZSgpIGNvbnN0IHsgcmV0dXJuIG1f
cGxhdGZvcm1TaGFkZXJNb2R1bGUuZ2V0KCk7IH0KLQotcHJpdmF0ZToKLSAgICBHUFVTaGFkZXJN
b2R1bGUoUGxhdGZvcm1TaGFkZXJNb2R1bGVTbWFydFB0ciYmKTsKLQotICAgIFBsYXRmb3JtU2hh
ZGVyTW9kdWxlU21hcnRQdHIgbV9wbGF0Zm9ybVNoYWRlck1vZHVsZTsKLX07Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9y
LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZjZmUwYWQ1YTg3YjMyYzQ4YWUzNGJk
NzZkMmYxYzU5ODFiZTdkNWQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVU2hhZGVyTW9kdWxlRGVz
Y3JpcHRvci5oCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNw
cmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBHUFVTaGFkZXJNb2R1
bGVEZXNjcmlwdG9yIHsKLSAgICBTdHJpbmcgY29kZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVTd2FwQ2hhaW4uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L0dQVVN3YXBDaGFpbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBj
NDhjMTAxNDQyNTk2ODA4NjAyY2M5MmFkZTIxNmI2YmMxZmQ0NjYyLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L0dQVVN3YXBDaGFpbi5oCisrKyAvZGV2L251bGwKQEAgLTEsNjUgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0KLU9CSkNfQ0xBU1MgQ0FN
ZXRhbExheWVyOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEdQVURldmljZTsKLWNs
YXNzIEdQVVRleHR1cmU7Ci0KLWVudW0gY2xhc3MgR1BVVGV4dHVyZUZvcm1hdEVudW07Ci0KLXVz
aW5nIFBsYXRmb3JtU3dhcExheWVyID0gQ0FNZXRhbExheWVyOwotdXNpbmcgUGxhdGZvcm1Td2Fw
TGF5ZXJTbWFydFB0ciA9IFJldGFpblB0cjxDQU1ldGFsTGF5ZXI+OwotCi1jbGFzcyBHUFVTd2Fw
Q2hhaW4gOiBwdWJsaWMgUmVmQ291bnRlZDxHUFVTd2FwQ2hhaW4+IHsKLXB1YmxpYzoKLSAgICBz
dGF0aWMgUmVmUHRyPEdQVVN3YXBDaGFpbj4gY3JlYXRlKCk7Ci0KLSAgICB2b2lkIHNldERldmlj
ZShjb25zdCBHUFVEZXZpY2UmKTsKLSAgICB2b2lkIHNldEZvcm1hdChHUFVUZXh0dXJlRm9ybWF0
RW51bSk7Ci0gICAgdm9pZCByZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCk7Ci0gICAgUmVm
UHRyPEdQVVRleHR1cmU+IGdldE5leHRUZXh0dXJlKCk7Ci0gICAgdm9pZCBwcmVzZW50KCk7Ci0K
LSAgICBQbGF0Zm9ybVN3YXBMYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IHsgcmV0dXJuIG1f
cGxhdGZvcm1Td2FwTGF5ZXIuZ2V0KCk7IH0KLQotcHJpdmF0ZToKLSAgICBHUFVTd2FwQ2hhaW4o
UGxhdGZvcm1Td2FwTGF5ZXJTbWFydFB0ciYmKTsKLQotICAgIFBsYXRmb3JtU3dhcExheWVyU21h
cnRQdHIgbV9wbGF0Zm9ybVN3YXBMYXllcjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
LQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9HUFVUZXh0dXJlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9HUFVUZXh0dXJlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgzNzQ0MGJjOWI2
NGZjZjk3NGRiNGY4NDA4NWNmZjg0ZTg2MDYxZTMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVVGV4
dHVyZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFn
bWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1ZGUgPHd0Zi9SZWYuaD4KLSNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLQot
T0JKQ19QUk9UT0NPTChNVExUZXh0dXJlKTsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi11c2lu
ZyBQbGF0Zm9ybVRleHR1cmUgPSBNVExUZXh0dXJlOwotdXNpbmcgUGxhdGZvcm1UZXh0dXJlU21h
cnRQdHIgPSBSZXRhaW5QdHI8TVRMVGV4dHVyZT47Ci0KLWNsYXNzIEdQVVRleHR1cmUgOiBwdWJs
aWMgUmVmQ291bnRlZDxHUFVUZXh0dXJlPiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxHUFVU
ZXh0dXJlPiBjcmVhdGUoUGxhdGZvcm1UZXh0dXJlU21hcnRQdHImJik7Ci0KLSAgICBSZWZQdHI8
R1BVVGV4dHVyZT4gY3JlYXRlRGVmYXVsdFRleHR1cmVWaWV3KCk7Ci0KLXByaXZhdGU6Ci0gICAg
ZXhwbGljaXQgR1BVVGV4dHVyZShQbGF0Zm9ybVRleHR1cmVTbWFydFB0ciYmKTsKLQotICAgIFBs
YXRmb3JtVGV4dHVyZVNtYXJ0UHRyIG1fcGxhdGZvcm1UZXh0dXJlOwotfTsKLQotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVRleHR1cmVGb3JtYXRFbnVtLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVUZXh0dXJlRm9ybWF0RW51bS5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OTExMzRmZTA2NGE2ODU2MzUyYmZhOGNmZTNlMjQ3NmY0
YWJjYTcyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVRleHR1cmVGb3JtYXRFbnVtLmgKKysrIC9k
ZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNp
ZiBFTkFCTEUoV0VCR1BVKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWVudW0gY2xhc3MgR1BV
VGV4dHVyZUZvcm1hdEVudW0gewotICAgIFI4RzhCOEE4VW5vcm0sCi0gICAgUjhHOEI4QThVaW50
LAotICAgIEI4RzhSOEE4VW5vcm0sCi0gICAgRDMyRmxvYXRTOFVpbnQKLX07Ci0KLXVzaW5nIFBs
YXRmb3JtVGV4dHVyZUZvcm1hdCA9IHVuc2lnbmVkIGxvbmc7Ci0KLX0KLQotI2VuZGlmIC8vIEVO
QUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9j
b2NvYS9HUFVDb21tYW5kQnVmZmVyTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9jb2NvYS9HUFVDb21tYW5kQnVmZmVyTWV0YWwubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDYxMjU5ZDIzNGZiM2ExMjRmOTkxNzg0YTVkOGZkNjg4NzAzN2UyMDguLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvY29jb2EvR1BVQ29tbWFuZEJ1ZmZlck1ldGFsLm1tCisrKyAvZGV2L251
bGwKQEAgLTEsNzcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2lt
cG9ydCAiR1BVQ29tbWFuZEJ1ZmZlci5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2ltcG9y
dCAiR1BVRGV2aWNlLmgiCi0jaW1wb3J0ICJHUFVRdWV1ZS5oIgotI2ltcG9ydCAiTG9nZ2luZy5o
IgotCi0jaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgotI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2Vw
dGlvbnMuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1SZWZQdHI8R1BVQ29tbWFuZEJ1ZmZl
cj4gR1BVQ29tbWFuZEJ1ZmZlcjo6Y3JlYXRlKEdQVURldmljZSYgZGV2aWNlKQotewotICAgIGlm
ICghZGV2aWNlLnBsYXRmb3JtRGV2aWNlKCkpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVUNv
bW1hbmRCdWZmZXI6OmNyZWF0ZSgpOiBJbnZhbGlkIEdQVURldmljZSEiKTsKLSAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgYXV0byBncHVDb21tYW5kUXVldWUgPSBkZXZpY2Uu
Z2V0UXVldWUoKTsKLSAgICBpZiAoIWdwdUNvbW1hbmRRdWV1ZSkKLSAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0KLSAgICBhdXRvIG10bFF1ZXVlID0gZ3B1Q29tbWFuZFF1ZXVlLT5wbGF0Zm9ybVF1
ZXVlKCk7Ci0KLSAgICBQbGF0Zm9ybUNvbW1hbmRCdWZmZXJTbWFydFB0ciBidWZmZXI7Ci0KLSAg
ICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0KLSAgICBidWZmZXIgPSByZXRhaW5QdHIo
W210bFF1ZXVlIGNvbW1hbmRCdWZmZXJdKTsKLQotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElP
TlM7Ci0KLSAgICBpZiAoIWJ1ZmZlcikgewotICAgICAgICBMT0coV2ViR1BVLCAiR1BVQ29tbWFu
ZEJ1ZmZlcjo6Y3JlYXRlKCk6IFVuYWJsZSB0byBjcmVhdGUgTVRMQ29tbWFuZEJ1ZmZlciEiKTsK
LSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBHUFVDb21tYW5kQnVmZmVyKFdURk1vdmUoYnVmZmVyKSkpOwotfQotCi1HUFVDb21tYW5kQnVm
ZmVyOjpHUFVDb21tYW5kQnVmZmVyKFBsYXRmb3JtQ29tbWFuZEJ1ZmZlclNtYXJ0UHRyJiYgYnVm
ZmVyKQotICAgIDogbV9wbGF0Zm9ybUNvbW1hbmRCdWZmZXIoV1RGTW92ZShidWZmZXIpKQotewot
ICAgIFVOVVNFRF9QQVJBTShtX3BsYXRmb3JtQ29tbWFuZEJ1ZmZlcik7Ci19Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9jb2NvYS9HUFVEZXZpY2VNZXRhbC5tbSBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L2NvY29hL0dQVURldmljZU1ldGFsLm1tCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlODM4N2E3NzExYjAyMDBlZDkxOTJmYTE0MjBkMzU5
MmY4ZTQ4MTg5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L2NvY29hL0dQVURldmljZU1ldGFsLm1tCisr
KyAvZGV2L251bGwKQEAgLTEsNjQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZp
Zy5oIgotI2ltcG9ydCAiR1BVRGV2aWNlLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW1w
b3J0ICJMb2dnaW5nLmgiCi0KLSNpbXBvcnQgPE1ldGFsL01ldGFsLmg+Ci0jaW1wb3J0IDx3dGYv
QmxvY2tPYmpDRXhjZXB0aW9ucy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVJlZlB0cjxH
UFVEZXZpY2U+IEdQVURldmljZTo6Y3JlYXRlKCkKLXsKLSAgICBQbGF0Zm9ybURldmljZVNtYXJ0
UHRyIGRldmljZTsKLQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLQotICAgIGRl
dmljZSA9IGFkb3B0TlMoTVRMQ3JlYXRlU3lzdGVtRGVmYXVsdERldmljZSgpKTsgLy8gRklYTUU6
IFRha2UgV2ViR1BVUG93ZXJQcmVmZXJlbmNlIGludG8gYWNjb3VudC4KLQotICAgIEVORF9CTE9D
S19PQkpDX0VYQ0VQVElPTlM7Ci0KLSAgICBpZiAoIWRldmljZSkgewotICAgICAgICBMT0coV2Vi
R1BVLCAiR1BVRGV2aWNlOjpHUFVEZXZpY2UoKTogVW5hYmxlIHRvIGNyZWF0ZSBHUFVEZXZpY2Uh
Iik7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIExPRyhXZWJHUFUsICJH
UFVEZXZpY2U6OkdQVURldmljZSgpOiBNVExEZXZpY2UgaXMgJXAiLCBkZXZpY2UuZ2V0KCkpOwot
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgR1BVRGV2aWNlKFdURk1vdmUoZGV2aWNlKSkpOwotfQot
Ci1HUFVEZXZpY2U6OkdQVURldmljZShQbGF0Zm9ybURldmljZVNtYXJ0UHRyJiYgZGV2aWNlKQot
ICAgIDogbV9wbGF0Zm9ybURldmljZShXVEZNb3ZlKGRldmljZSkpCi17Ci19Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9jb2NvYS9HUFVRdWV1ZU1ldGFsLm1tIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvY29jb2EvR1BVUXVldWVNZXRhbC5tbQpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGU2OWJlM2JjYzg2MGJhNzVkMGZmODg1N2Y1NjgxNzJl
MjU1NTU4Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9jb2NvYS9HUFVRdWV1ZU1ldGFsLm1tCisrKyAv
ZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5o
IgotI2ltcG9ydCAiR1BVUXVldWUuaCIKLQotI2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbXBvcnQg
IkdQVURldmljZS5oIgotI2ltcG9ydCAiTG9nZ2luZy5oIgotCi0jaW1wb3J0IDxNZXRhbC9NZXRh
bC5oPgotI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1SZWZQdHI8R1BVUXVldWU+IEdQVVF1ZXVlOjpjcmVhdGUoY29uc3QgR1BVRGV2
aWNlJiBkZXZpY2UpCi17Ci0gICAgaWYgKCFkZXZpY2UucGxhdGZvcm1EZXZpY2UoKSkgewotICAg
ICAgICBMT0coV2ViR1BVLCAiR1BVUXVldWU6OmNyZWF0ZSgpOiBJbnZhbGlkIEdQVURldmljZSEi
KTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgUGxhdGZvcm1RdWV1ZVNt
YXJ0UHRyIHF1ZXVlOwotCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotCi0gICAg
cXVldWUgPSBhZG9wdE5TKFtkZXZpY2UucGxhdGZvcm1EZXZpY2UoKSBuZXdDb21tYW5kUXVldWVd
KTsKLQotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0KLSAgICBpZiAoIXF1ZXVlKSB7
Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVRdWV1ZTo6Y3JlYXRlKCk6IFVuYWJsZSB0byBjcmVh
dGUgTVRMQ29tbWFuZFF1ZXVlISIpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0K
LSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEdQVVF1ZXVlKFdURk1vdmUocXVldWUpKSk7Ci19Ci0K
LUdQVVF1ZXVlOjpHUFVRdWV1ZShQbGF0Zm9ybVF1ZXVlU21hcnRQdHImJiBxdWV1ZSkKLSAgICA6
IG1fcGxhdGZvcm1RdWV1ZShXVEZNb3ZlKHF1ZXVlKSkKLXsKLX0KLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L2NvY29hL0dQVVJlbmRlclBpcGVsaW5lTWV0YWwubW0gYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9jb2NvYS9HUFVSZW5kZXJQaXBlbGluZU1ldGFs
Lm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOTQ2ZDU1MDlkMjIyOGQ0NWYwNjRi
MGY2ZDM1YmNjYTg2MGQ3ZWFmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L2NvY29hL0dQVVJlbmRlclBp
cGVsaW5lTWV0YWwubW0KKysrIC9kZXYvbnVsbApAQCAtMSwxMzcgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiR1BVUmVuZGVyUGlwZWxpbmUuaCIKLQot
I2lmIEVOQUJMRShXRUJHUFUpCi0KLSNpbXBvcnQgIkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
ci5oIgotI2ltcG9ydCAiTG9nZ2luZy5oIgotCi0jaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgotI2lt
cG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1zdGF0aWMgYm9vbCBzZXRGdW5jdGlvbnNGb3JQaXBlbGluZURlc2NyaXB0b3IoY29uc3QgY2hh
ciogY29uc3QgZnVuY3Rpb25OYW1lLCBNVExSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgKm10bERl
c2NyaXB0b3IsIEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciYmIGRlc2NyaXB0b3IpCi17Ci0j
aWYgTE9HX0RJU0FCTEVECi0gICAgVU5VU0VEX1BBUkFNKGZ1bmN0aW9uTmFtZSk7Ci0jZW5kaWYK
LSAgICAvLyBNZXRhbCByZXF1aXJlcyBhIHZlcnRleCBzaGFkZXIgaW4gYWxsIHJlbmRlciBwaXBl
bGluZXMuCi0gICAgY29uc3QgYXV0byYgdmVydGV4U3RhZ2UgPSBkZXNjcmlwdG9yLnZlcnRleFN0
YWdlOwotICAgIGF1dG8gbXRsTGlicmFyeSA9IHZlcnRleFN0YWdlLm1vZHVsZS0+cGxhdGZvcm1T
aGFkZXJNb2R1bGUoKTsKLQotICAgIGlmICghbXRsTGlicmFyeSkgewotICAgICAgICBMT0coV2Vi
R1BVLCAiJXM6IE1UTExpYnJhcnkgZm9yIHZlcnRleCBzdGFnZSBkb2VzIG5vdCBleGlzdCEiLCBm
dW5jdGlvbk5hbWUpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgYXV0byBm
dW5jdGlvbiA9IGFkb3B0TlMoW210bExpYnJhcnkgbmV3RnVuY3Rpb25XaXRoTmFtZTp2ZXJ0ZXhT
dGFnZS5lbnRyeVBvaW50XSk7Ci0KLSAgICBpZiAoIWZ1bmN0aW9uKSB7Ci0gICAgICAgIExPRyhX
ZWJHUFUsICIlczogVmVydGV4IE1UTEZ1bmN0aW9uIFwiJXNcIiBub3QgZm91bmQhIiwgZnVuY3Rp
b25OYW1lLCB2ZXJ0ZXhTdGFnZS5lbnRyeVBvaW50LnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgW210bERlc2NyaXB0b3Igc2V0VmVydGV4RnVuY3Rp
b246ZnVuY3Rpb24uZ2V0KCldOwotCi0gICAgLy8gSG93ZXZlciwgZnJhZ21lbnQgc2hhZGVycyBh
cmUgb3B0aW9uYWwuCi0gICAgY29uc3QgYXV0byBmcmFnbWVudFN0YWdlID0gZGVzY3JpcHRvci5m
cmFnbWVudFN0YWdlOwotICAgIGlmICghZnJhZ21lbnRTdGFnZS5tb2R1bGUgfHwgIWZyYWdtZW50
U3RhZ2UuZW50cnlQb2ludCkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBtdGxMaWJyYXJ5
ID0gZnJhZ21lbnRTdGFnZS5tb2R1bGUtPnBsYXRmb3JtU2hhZGVyTW9kdWxlKCk7Ci0KLSAgICBp
ZiAoIW10bExpYnJhcnkpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBNVExMaWJyYXJ5IGZv
ciBmcmFnbWVudCBzdGFnZSBkb2VzIG5vdCBleGlzdCEiLCBmdW5jdGlvbk5hbWUpOwotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gPSBhZG9wdE5TKFttdGxMaWJy
YXJ5IG5ld0Z1bmN0aW9uV2l0aE5hbWU6ZnJhZ21lbnRTdGFnZS5lbnRyeVBvaW50XSk7Ci0KLSAg
ICBpZiAoIWZ1bmN0aW9uKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICIlczogRnJhZ21lbnQgTVRM
RnVuY3Rpb24gXCIlc1wiIG5vdCBmb3VuZCEiLCBmdW5jdGlvbk5hbWUsIGZyYWdtZW50U3RhZ2Uu
ZW50cnlQb2ludC51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0K
LQotICAgIFttdGxEZXNjcmlwdG9yIHNldEZyYWdtZW50RnVuY3Rpb246ZnVuY3Rpb24uZ2V0KCld
OwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLVJlZlB0cjxHUFVSZW5kZXJQaXBlbGluZT4gR1BV
UmVuZGVyUGlwZWxpbmU6OmNyZWF0ZShjb25zdCBHUFVEZXZpY2UmIGRldmljZSwgR1BVUmVuZGVy
UGlwZWxpbmVEZXNjcmlwdG9yJiYgZGVzY3JpcHRvcikKLXsKLSAgICBjb25zdCBjaGFyKiBjb25z
dCBmdW5jdGlvbk5hbWUgPSAiR1BVUmVuZGVyUGlwZWxpbmU6OmNyZWF0ZSgpIjsKLQotICAgIGlm
ICghZGV2aWNlLnBsYXRmb3JtRGV2aWNlKCkpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBN
VExEZXZpY2UgZG9lcyBub3QgZXhpc3QhIiwgZnVuY3Rpb25OYW1lKTsKLSAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgfQotCi0gICAgUmV0YWluUHRyPE1UTFJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvcj4gbXRsRGVzY3JpcHRvcjsKLQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsK
LQotICAgIG10bERlc2NyaXB0b3IgPSBhZG9wdE5TKFtNVExSZW5kZXJQaXBlbGluZURlc2NyaXB0
b3IgbmV3XSk7Ci0KLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotCi0gICAgaWYgKCFt
dGxEZXNjcmlwdG9yKSB7Ci0gICAgICAgIExPRyhXZWJHUFUsICIlczogRXJyb3IgY3JlYXRpbmcg
TVRMRGVzY3JpcHRvciEiLCBmdW5jdGlvbk5hbWUpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICB9Ci0KLSAgICBpZiAoIXNldEZ1bmN0aW9uc0ZvclBpcGVsaW5lRGVzY3JpcHRvcihmdW5j
dGlvbk5hbWUsIG10bERlc2NyaXB0b3IuZ2V0KCksIFdURk1vdmUoZGVzY3JpcHRvcikpKQotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIC8vIEZJWE1FOiBHZXQgdGhlIHBpeGVsRm9ybWF0
IGFzIGNvbmZpZ3VyZWQgZm9yIHRoZSBjb250ZXh0L0NBTWV0YWxMYXllci4KLSAgICBtdGxEZXNj
cmlwdG9yLmdldCgpLmNvbG9yQXR0YWNobWVudHNbMF0ucGl4ZWxGb3JtYXQgPSBNVExQaXhlbEZv
cm1hdEJHUkE4VW5vcm07Ci0KLSAgICBQbGF0Zm9ybVJlbmRlclBpcGVsaW5lU21hcnRQdHIgcGlw
ZWxpbmU7Ci0KLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0KLSAgICBwaXBlbGlu
ZSA9IGFkb3B0TlMoW2RldmljZS5wbGF0Zm9ybURldmljZSgpIG5ld1JlbmRlclBpcGVsaW5lU3Rh
dGVXaXRoRGVzY3JpcHRvcjptdGxEZXNjcmlwdG9yLmdldCgpIGVycm9yOm5pbF0pOwotCi0gICAg
RU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLQotICAgIGlmICghcGlwZWxpbmUpIHsKLSAgICAg
ICAgTE9HKFdlYkdQVSwgIiVzOiBFcnJvciBjcmVhdGluZyBNVExSZW5kZXJQaXBlbGluZVN0YXRl
ISIsIGZ1bmN0aW9uTmFtZSk7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAg
IHJldHVybiBhZG9wdFJlZihuZXcgR1BVUmVuZGVyUGlwZWxpbmUoV1RGTW92ZShwaXBlbGluZSkp
KTsKLX0KLQotR1BVUmVuZGVyUGlwZWxpbmU6OkdQVVJlbmRlclBpcGVsaW5lKFBsYXRmb3JtUmVu
ZGVyUGlwZWxpbmVTbWFydFB0ciYmIHBpcGVsaW5lKQotICAgIDogbV9wbGF0Zm9ybVJlbmRlclBp
cGVsaW5lKFdURk1vdmUocGlwZWxpbmUpKQotewotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvY29jb2EvR1BVU2hhZGVyTW9kdWxlTWV0YWwubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9jb2NvYS9HUFVTaGFkZXJNb2R1bGVNZXRhbC5tbQpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzZlODUzOTBjYTJjOTFiZTA0ZjllMThiMjMxNjIwNmMw
ZDAzNTQzZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9jb2NvYS9HUFVTaGFkZXJNb2R1bGVNZXRhbC5t
bQorKysgL2Rldi9udWxsCkBAIC0xLDcxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJj
b25maWcuaCIKLSNpbXBvcnQgIkdQVVNoYWRlck1vZHVsZS5oIgotCi0jaWYgRU5BQkxFKFdFQkdQ
VSkKLQotI2ltcG9ydCAiR1BVRGV2aWNlLmgiCi0jaW1wb3J0ICJHUFVTaGFkZXJNb2R1bGVEZXNj
cmlwdG9yLmgiCi0jaW1wb3J0ICJMb2dnaW5nLmgiCi0KLSNpbXBvcnQgPE1ldGFsL01ldGFsLmg+
Ci0jaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLVJlZlB0cjxHUFVTaGFkZXJNb2R1bGU+IEdQVVNoYWRlck1vZHVsZTo6Y3JlYXRlKGNv
bnN0IEdQVURldmljZSYgZGV2aWNlLCBHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yJiYgZGVzY3Jp
cHRvcikKLXsKLSAgICBpZiAoIWRldmljZS5wbGF0Zm9ybURldmljZSgpKSB7Ci0gICAgICAgIExP
RyhXZWJHUFUsICJHUFVTaGFkZXJNb2R1bGU6OmNyZWF0ZSgpOiBJbnZhbGlkIEdQVURldmljZSEi
KTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgUGxhdGZvcm1TaGFkZXJN
b2R1bGVTbWFydFB0ciBtb2R1bGU7Ci0KLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7
Ci0KLSAgICBOU0Vycm9yICplcnJvciA9IFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpAImNvbS5h
cHBsZS5XZWJLaXQuR1BVIiBjb2RlOjEgdXNlckluZm86bmlsXTsKLSAgICBtb2R1bGUgPSBhZG9w
dE5TKFtkZXZpY2UucGxhdGZvcm1EZXZpY2UoKSBuZXdMaWJyYXJ5V2l0aFNvdXJjZTpkZXNjcmlw
dG9yLmNvZGUgb3B0aW9uczpuaWwgZXJyb3I6JmVycm9yXSk7Ci0gICAgaWYgKCFtb2R1bGUpCi0g
ICAgICAgIExPRyhXZWJHUFUsICJTaGFkZXIgY29tcGlsYXRpb24gZXJyb3I6ICVzIiwgW1tlcnJv
ciBsb2NhbGl6ZWREZXNjcmlwdGlvbl0gVVRGOFN0cmluZ10pOwotCi0gICAgRU5EX0JMT0NLX09C
SkNfRVhDRVBUSU9OUzsKLQotICAgIGlmICghbW9kdWxlKQotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLQotICAgIHJldHVybiBhZG9wdFJlZihuZXcgR1BVU2hhZGVyTW9kdWxlKFdURk1vdmUobW9k
dWxlKSkpOwotfQotCi1HUFVTaGFkZXJNb2R1bGU6OkdQVVNoYWRlck1vZHVsZShQbGF0Zm9ybVNo
YWRlck1vZHVsZVNtYXJ0UHRyJiYgbW9kdWxlKQotICAgIDogbV9wbGF0Zm9ybVNoYWRlck1vZHVs
ZShXVEZNb3ZlKG1vZHVsZSkpCi17Ci19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9jb2NvYS9HUFVTd2Fw
Q2hhaW5NZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L2NvY29hL0dQVVN3
YXBDaGFpbk1ldGFsLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhM2YxOGY3MDll
ZGI5ZTg5YmVjODA3YTgwM2VjN2I1YTVjOTcyODZiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L2NvY29h
L0dQVVN3YXBDaGFpbk1ldGFsLm1tCisrKyAvZGV2L251bGwKQEAgLTEsMTQ1ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkdQVVN3YXBDaGFpbi5oIgot
Ci0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2ltcG9ydCAiR1BVRGV2aWNlLmgiCi0jaW1wb3J0ICJH
UFVUZXh0dXJlLmgiCi0jaW1wb3J0ICJHUFVUZXh0dXJlRm9ybWF0RW51bS5oIgotI2ltcG9ydCAi
TG9nZ2luZy5oIgotCi0jaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgotI2ltcG9ydCA8UXVhcnR6Q29y
ZS9RdWFydHpDb3JlLmg+Ci0jaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVJlZlB0cjxHUFVTd2FwQ2hhaW4+IEdQVVN3YXBDaGFpbjo6
Y3JlYXRlKCkKLXsKLSAgICBQbGF0Zm9ybVN3YXBMYXllclNtYXJ0UHRyIHBsYXRmb3JtTGF5ZXI7
Ci0KLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0KLSAgICBwbGF0Zm9ybUxheWVy
ID0gYWRvcHROUyhbW0NBTWV0YWxMYXllciBhbGxvY10gaW5pdF0pOwotCi0gICAgW3BsYXRmb3Jt
TGF5ZXIgc2V0T3BhcXVlOjBdOwotICAgIFtwbGF0Zm9ybUxheWVyIHNldE5hbWU6QCJXZWJHUFUg
TGF5ZXIiXTsKLQotICAgIC8vIEZJWE1FOiBGb3Igbm93LCBkZWZhdWx0IHRvIHRoaXMgdXNhZ2Ug
ZmxhZy4KLSAgICBbcGxhdGZvcm1MYXllciBzZXRGcmFtZWJ1ZmZlck9ubHk6WUVTXTsKLQotICAg
IEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0KLSAgICBpZiAoIXBsYXRmb3JtTGF5ZXIpIHsK
LSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVN3YXBDaGFpbjo6Y3JlYXRlKCk6IFVuYWJsZSB0byBj
cmVhdGUgQ0FNZXRhbExheWVyISIpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0K
LSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEdQVVN3YXBDaGFpbihXVEZNb3ZlKHBsYXRmb3JtTGF5
ZXIpKSk7Ci19Ci0KLUdQVVN3YXBDaGFpbjo6R1BVU3dhcENoYWluKFBsYXRmb3JtU3dhcExheWVy
U21hcnRQdHImJiBwbGF0Zm9ybUxheWVyKQotICAgIDogbV9wbGF0Zm9ybVN3YXBMYXllcihXVEZN
b3ZlKHBsYXRmb3JtTGF5ZXIpKQotewotfQotCi12b2lkIEdQVVN3YXBDaGFpbjo6c2V0RGV2aWNl
KGNvbnN0IEdQVURldmljZSYgZGV2aWNlKQotewotICAgIGlmICghZGV2aWNlLnBsYXRmb3JtRGV2
aWNlKCkpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVN3YXBDaGFpbjo6c2V0RGV2aWNlKCk6
IE1UTERldmljZSBkb2VzIG5vdCBleGlzdCEiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIFttX3BsYXRmb3JtU3dhcExheWVyIHNldERldmljZTpkZXZpY2UucGxhdGZvcm1EZXZpY2Uo
KV07Ci19Ci0KLXN0YXRpYyBzdGQ6Om9wdGlvbmFsPFBsYXRmb3JtVGV4dHVyZUZvcm1hdD4gcGxh
dGZvcm1UZXh0dXJlRm9ybWF0Rm9yR1BVVGV4dHVyZUZvcm1hdChHUFVUZXh0dXJlRm9ybWF0RW51
bSBmb3JtYXQpCi17Ci0gICAgc3dpdGNoIChmb3JtYXQpIHsKLSAgICAgICAgY2FzZSBHUFVUZXh0
dXJlRm9ybWF0RW51bTo6UjhHOEI4QThVbm9ybToKLSAgICAgICAgICAgIHJldHVybiBNVExQaXhl
bEZvcm1hdFJHQkE4VW5vcm07Ci0gICAgICAgIGNhc2UgR1BVVGV4dHVyZUZvcm1hdEVudW06OlI4
RzhCOEE4VWludDoKLSAgICAgICAgICAgIHJldHVybiBNVExQaXhlbEZvcm1hdFJHQkE4VWludDsK
LSAgICAgICAgY2FzZSBHUFVUZXh0dXJlRm9ybWF0RW51bTo6QjhHOFI4QThVbm9ybToKLSAgICAg
ICAgICAgIHJldHVybiBNVExQaXhlbEZvcm1hdEJHUkE4VW5vcm07Ci0gICAgICAgIGNhc2UgR1BV
VGV4dHVyZUZvcm1hdEVudW06OkQzMkZsb2F0UzhVaW50OgotICAgICAgICAgICAgcmV0dXJuIE1U
TFBpeGVsRm9ybWF0RGVwdGgzMkZsb2F0X1N0ZW5jaWw4OwotICAgICAgICBkZWZhdWx0OgotICAg
ICAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVN3YXBDaGFpbjo6c2V0Rm9ybWF0KCk6IEludmFsaWQg
dGV4dHVyZSBmb3JtYXQgc3BlY2lmaWVkISIpOwotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKLSAgICB9Ci19Ci0KLXZvaWQgR1BVU3dhcENoYWluOjpzZXRGb3JtYXQoR1BVVGV4dHVy
ZUZvcm1hdEVudW0gZm9ybWF0KQotewotICAgIGF1dG8gcmVzdWx0ID0gcGxhdGZvcm1UZXh0dXJl
Rm9ybWF0Rm9yR1BVVGV4dHVyZUZvcm1hdChmb3JtYXQpOwotICAgIGlmICghcmVzdWx0KQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBhdXRvIG10bFJlc3VsdCA9IHN0YXRpY19jYXN0PE1UTFBpeGVs
Rm9ybWF0PihyZXN1bHQudmFsdWUoKSk7Ci0KLSAgICBzd2l0Y2ggKG10bFJlc3VsdCkgewotICAg
IGNhc2UgTVRMUGl4ZWxGb3JtYXRCR1JBOFVub3JtOgotICAgIC8vIEZJWE1FOiBBZGQgdGhlIG90
aGVyIHN1cHBvcnRlZCBzd2FwIGxheWVyIGZvcm1hdHMgYXMgdGhleSBhcmUgYWRkZWQgdG8gR1BV
IHNwZWMuCi0gICAgLy8gIE1UTFBpeGVsRm9ybWF0QkdSQThVbm9ybV9zUkdCLCBNVExQaXhlbEZv
cm1hdFJHQkExNkZsb2F0LCBNVExQaXhlbEZvcm1hdEJHUkExMF9YUiwgYW5kIE1UTFBpeGVsRm9y
bWF0QkdSQTEwX1hSX3NSR0IuCi0gICAgICAgIFttX3BsYXRmb3JtU3dhcExheWVyIHNldFBpeGVs
Rm9ybWF0Om10bFJlc3VsdF07Ci0gICAgICAgIHJldHVybjsKLSAgICBkZWZhdWx0OgotICAgICAg
ICBMT0coV2ViR1BVLCAiR1BVU3dhcENoYWluOjpzZXRGb3JtYXQoKTogVW5zdXBwb3J0ZWQgTVRM
UGl4ZWxGb3JtYXQhIik7Ci0gICAgfQotfQotCi12b2lkIEdQVVN3YXBDaGFpbjo6cmVzaGFwZShp
bnQgd2lkdGgsIGludCBoZWlnaHQpCi17Ci0gICAgW21fcGxhdGZvcm1Td2FwTGF5ZXIgc2V0Qm91
bmRzOkNHUmVjdE1ha2UoMCwgMCwgd2lkdGgsIGhlaWdodCldOwotICAgIFttX3BsYXRmb3JtU3dh
cExheWVyIHNldERyYXdhYmxlU2l6ZTpDR1NpemVNYWtlKHdpZHRoLCBoZWlnaHQpXTsKLX0KLQot
UmVmUHRyPEdQVVRleHR1cmU+IEdQVVN3YXBDaGFpbjo6Z2V0TmV4dFRleHR1cmUoKQotewotICAg
IFJldGFpblB0cjxNVExUZXh0dXJlPiBtdGxUZXh0dXJlOwotCi0gICAgaWYgKGF1dG8gZHJhd2Fi
bGUgPSByZXRhaW5QdHIoW21fcGxhdGZvcm1Td2FwTGF5ZXIgbmV4dERyYXdhYmxlXSkpCi0gICAg
ICAgIG10bFRleHR1cmUgPSByZXRhaW5QdHIoW2RyYXdhYmxlIHRleHR1cmVdKTsKLQotICAgIGlm
ICghbXRsVGV4dHVyZSkgewotICAgICAgICBMT0coV2ViR1BVLCAiR1BVU3dhcENoYWluOjpnZXRO
ZXh0VGV4dHVyZSgpOiBVbmFibGUgdG8gZ2V0IG5leHQgTVRMVGV4dHVyZSEiKTsKLSAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgcmV0dXJuIEdQVVRleHR1cmU6OmNyZWF0ZShX
VEZNb3ZlKG10bFRleHR1cmUpKTsKLX0KLQotdm9pZCBHUFVTd2FwQ2hhaW46OnByZXNlbnQoKQot
ewotICAgIC8vIEZJWE1FOiBVbmltcGxlbWVudGVkIHN0dWIuCi19Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9jb2NvYS9HUFVUZXh0dXJlTWV0YWwubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9jb2NvYS9HUFVUZXh0dXJlTWV0YWwubW0KZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUwNzg1N2I2ZjNhYjU1NGFhMGZhNWNhN2QzYWJhNDkwZTRj
N2ZiNzkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvY29jb2EvR1BVVGV4dHVyZU1ldGFsLm1tCisrKyAv
ZGV2L251bGwKQEAgLTEsNjQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5o
IgotI2ltcG9ydCAiR1BVVGV4dHVyZS5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2ltcG9y
dCAiTG9nZ2luZy5oIgotCi0jaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgotI2ltcG9ydCA8d3RmL0Js
b2NrT2JqQ0V4Y2VwdGlvbnMuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1SZWY8R1BVVGV4
dHVyZT4gR1BVVGV4dHVyZTo6Y3JlYXRlKFBsYXRmb3JtVGV4dHVyZVNtYXJ0UHRyJiYgdGV4dHVy
ZSkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBHUFVUZXh0dXJlKFdURk1vdmUodGV4dHVy
ZSkpKTsKLX0KLQotR1BVVGV4dHVyZTo6R1BVVGV4dHVyZShSZXRhaW5QdHI8TVRMVGV4dHVyZT4m
JiB0ZXh0dXJlKQotICAgIDogbV9wbGF0Zm9ybVRleHR1cmUoV1RGTW92ZSh0ZXh0dXJlKSkKLXsK
LX0KLQotUmVmUHRyPEdQVVRleHR1cmU+IEdQVVRleHR1cmU6OmNyZWF0ZURlZmF1bHRUZXh0dXJl
VmlldygpCi17Ci0gICAgUmV0YWluUHRyPE1UTFRleHR1cmU+IHRleHR1cmU7Ci0KLSAgICB0ZXh0
dXJlID0gYWRvcHROUyhbbV9wbGF0Zm9ybVRleHR1cmUgbmV3VGV4dHVyZVZpZXdXaXRoUGl4ZWxG
b3JtYXQ6bV9wbGF0Zm9ybVRleHR1cmUuZ2V0KCkucGl4ZWxGb3JtYXRdKTsKLQotICAgIGlmICgh
dGV4dHVyZSkgewotICAgICAgICBMT0coV2ViR1BVLCAiR1BVVGV4dHVyZTo6Y3JlYXRlRGVmYXVs
dFRleHR1cmVWaWV3KCk6IFVuYWJsZSB0byBjcmVhdGUgTVRMVGV4dHVyZSB2aWV3ISIpOwotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICByZXR1cm4gR1BVVGV4dHVyZTo6Y3Jl
YXRlKFdURk1vdmUodGV4dHVyZSkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNl
bmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCA5NjVhOTViZDZlZWI0Nzdm
YTA5MmVhM2U0MjBkZmU1NGE4MzM2MGE3Li4yOTM5ZThhZDUzZTdkNzU3ZTMxMzJjYTI5NjIzZjlj
ODc2NDE1NWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMzAxLDcgKzMwMSw2IEBAIE1vZHVsZXMvd2Vi
c29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCiBNb2R1bGVzL3dlYnNvY2tldHMvV29ya2Vy
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCiAKIE1vZHVsZXMvd2ViZ3B1L0RPTVdpbmRv
d1dlYkdQVS5jcHAKLU1vZHVsZXMvd2ViZ3B1L0dQVURldmljZS5jcHAKIE1vZHVsZXMvd2ViZ3B1
L1dlYkdQVS5jcHAKIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuY3BwCiBNb2R1bGVzL3dl
YmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmNwcApAQCAtMTczMywyNyArMTczMiwyOCBAQCBwbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9Tb3VyY2VHcmFwaGljLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9TcG90
TGlnaHRTb3VyY2UuY3BwCiAKLXBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lCdWZmZXIu
Y3BwCi1wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5Q29tbWFuZEJ1ZmZlci5jcHAKLXBs
YXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lDb21tYW5kUXVldWUuY3BwCi1wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVTGVnYWN5Q29tcHV0ZUNvbW1hbmRFbmNvZGVyLmNwcAotcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeUNvbXB1dGVQaXBlbGluZVN0YXRlLmNwcAotcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeURlcHRoU3RlbmNpbERlc2NyaXB0b3IuY3BwCi1wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5RGVwdGhTdGVuY2lsU3RhdGUuY3BwCi1wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVTGVnYWN5RGV2aWNlLmNwcAotcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQ
VUxlZ2FjeURyYXdhYmxlLmNwcAotcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeUZ1bmN0
aW9uLmNwcAotcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeUxpYnJhcnkuY3BwCi1wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5UmVuZGVyQ29tbWFuZEVuY29kZXIuY3BwCi1wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9y
LmNwcAotcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeVJlbmRlclBhc3NDb2xvckF0dGFj
aG1lbnREZXNjcmlwdG9yLmNwcAotcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeVJlbmRl
clBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcAotcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L0dQVUxlZ2FjeVJlbmRlclBhc3NEZXNjcmlwdG9yLmNwcAotcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L0dQVUxlZ2FjeVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5jcHAKLXBs
YXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuY3Bw
Ci1wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVTdGF0ZS5jcHAK
LXBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lUZXh0dXJlLmNwcAotcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVUxlZ2FjeVRleHR1cmVEZXNjcmlwdG9yLmNwcAorcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0dQVURldmljZS5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvR1BVTGVn
YWN5QnVmZmVyLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9HUFVMZWdhY3lDb21t
YW5kQnVmZmVyLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9HUFVMZWdhY3lDb21t
YW5kUXVldWUuY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L0dQVUxlZ2FjeUNvbXB1
dGVDb21tYW5kRW5jb2Rlci5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvR1BVTGVn
YWN5Q29tcHV0ZVBpcGVsaW5lU3RhdGUuY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5
L0dQVUxlZ2FjeURlcHRoU3RlbmNpbERlc2NyaXB0b3IuY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9n
cHUvbGVnYWN5L0dQVUxlZ2FjeURlcHRoU3RlbmNpbFN0YXRlLmNwcAorcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L2xlZ2FjeS9HUFVMZWdhY3lEZXZpY2UuY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9ncHUv
bGVnYWN5L0dQVUxlZ2FjeURyYXdhYmxlLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2Fj
eS9HUFVMZWdhY3lGdW5jdGlvbi5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvR1BV
TGVnYWN5TGlicmFyeS5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvR1BVTGVnYWN5
UmVuZGVyQ29tbWFuZEVuY29kZXIuY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L0dQ
VUxlZ2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5jcHAKK3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9sZWdhY3kvR1BVTGVnYWN5UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0
b3IuY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L0dQVUxlZ2FjeVJlbmRlclBhc3NE
ZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2Fj
eS9HUFVMZWdhY3lSZW5kZXJQYXNzRGVzY3JpcHRvci5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9sZWdhY3kvR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9y
LmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9HUFVMZWdhY3lSZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3IuY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L0dQVUxlZ2FjeVJl
bmRlclBpcGVsaW5lU3RhdGUuY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L0dQVUxl
Z2FjeVRleHR1cmUuY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L0dQVUxlZ2FjeVRl
eHR1cmVEZXNjcmlwdG9yLmNwcAogCiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPQm94LmNwcAog
cGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT09yaWdpbmFsRm9ybWF0Qm94LmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXNDb2NvYS50eHQKaW5kZXggYTE0ODBmYmE2Zjk0MGE2YjY4N2QzYzNlOTBmMGE1MWYxMzFmNzcx
Yi4uZmQ4MzFlNjkyNjc4ZDE3MTYzZTU2MTA1NWIxZWMwMTI2MmM3OGQ5NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzQ29jb2EudHh0CkBAIC0yNywxNCArMjcsNiBAQCBNb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1l
UGx1Z2luUmVwbGFjZW1lbnQubW0KIE1vZHVsZXMvcGx1Z2lucy9Zb3VUdWJlUGx1Z2luUmVwbGFj
ZW1lbnQuY3BwCiBNb2R1bGVzL3dlYmRhdGFiYXNlL2NvY29hL0RhdGFiYXNlTWFuYWdlckNvY29h
Lm1tCiAKLU1vZHVsZXMvd2ViZ3B1L2NvY29hL0dQVUNvbW1hbmRCdWZmZXJNZXRhbC5tbQotTW9k
dWxlcy93ZWJncHUvY29jb2EvR1BVRGV2aWNlTWV0YWwubW0KLU1vZHVsZXMvd2ViZ3B1L2NvY29h
L0dQVVF1ZXVlTWV0YWwubW0KLU1vZHVsZXMvd2ViZ3B1L2NvY29hL0dQVVJlbmRlclBpcGVsaW5l
TWV0YWwubW0KLU1vZHVsZXMvd2ViZ3B1L2NvY29hL0dQVVNoYWRlck1vZHVsZU1ldGFsLm1tCi1N
b2R1bGVzL3dlYmdwdS9jb2NvYS9HUFVTd2FwQ2hhaW5NZXRhbC5tbQotTW9kdWxlcy93ZWJncHUv
Y29jb2EvR1BVVGV4dHVyZU1ldGFsLm1tCi0KIGFjY2Vzc2liaWxpdHkvaW9zL0FjY2Vzc2liaWxp
dHlPYmplY3RJT1MubW0KIGFjY2Vzc2liaWxpdHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1MubW0KIGFj
Y2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCkBAIC0z
MjYsNiArMzE4LDEzIEBAIHBsYXRmb3JtL2dyYXBoaWNzL2N2L1BpeGVsQnVmZmVyQ29uZm9ybWVy
Q1YuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9UZXh0dXJlQ2FjaGVDVi5tbQogcGxhdGZvcm0v
Z3JhcGhpY3MvY3YvVmlkZW9UZXh0dXJlQ29waWVyQ1YuY3BwCiAKK3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9jb2NvYS9HUFVDb21tYW5kQnVmZmVyTWV0YWwubW0KK3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9jb2NvYS9HUFVEZXZpY2VNZXRhbC5tbQorcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQ
VVF1ZXVlTWV0YWwubW0KK3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVSZW5kZXJQaXBl
bGluZU1ldGFsLm1tCitwbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVU2hhZGVyTW9kdWxl
TWV0YWwubW0KK3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVTd2FwQ2hhaW5NZXRhbC5t
bQorcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVRleHR1cmVNZXRhbC5tbQogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGlsaW5n
RGF0YS5jcHAKIApAQCAtMzUyLDI3ICszNTEsMjcgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1Np
bXBsZUZvbnREYXRhQ29yZVRleHQuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViTGF5ZXIu
bW0KIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJLaXROU0ltYWdlRXh0cmFzLm1tCiAKLXBsYXRm
b3JtL2dyYXBoaWNzL21ldGFsL0dQVUxlZ2FjeUJ1ZmZlck1ldGFsLm1tCi1wbGF0Zm9ybS9ncmFw
aGljcy9tZXRhbC9HUFVMZWdhY3lDb21tYW5kQnVmZmVyTWV0YWwubW0KLXBsYXRmb3JtL2dyYXBo
aWNzL21ldGFsL0dQVUxlZ2FjeUNvbW1hbmRRdWV1ZU1ldGFsLm1tCi1wbGF0Zm9ybS9ncmFwaGlj
cy9tZXRhbC9HUFVMZWdhY3lDb21wdXRlQ29tbWFuZEVuY29kZXJNZXRhbC5tbQotcGxhdGZvcm0v
Z3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5Q29tcHV0ZVBpcGVsaW5lU3RhdGVNZXRhbC5tbQotcGxh
dGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5RGVwdGhTdGVuY2lsRGVzY3JpcHRvck1ldGFs
Lm1tCi1wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVMZWdhY3lEZXB0aFN0ZW5jaWxTdGF0ZU1l
dGFsLm1tCi1wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVMZWdhY3lEZXZpY2VNZXRhbC5tbQot
cGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5RHJhd2FibGVNZXRhbC5tbQotcGxhdGZv
cm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5RnVuY3Rpb25NZXRhbC5tbQotcGxhdGZvcm0vZ3Jh
cGhpY3MvbWV0YWwvR1BVTGVnYWN5TGlicmFyeU1ldGFsLm1tCi1wbGF0Zm9ybS9ncmFwaGljcy9t
ZXRhbC9HUFVMZWdhY3lSZW5kZXJDb21tYW5kRW5jb2Rlck1ldGFsLm1tCi1wbGF0Zm9ybS9ncmFw
aGljcy9tZXRhbC9HUFVMZWdhY3lSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3JNZXRhbC5t
bQotcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5UmVuZGVyUGFzc0NvbG9yQXR0YWNo
bWVudERlc2NyaXB0b3JNZXRhbC5tbQotcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5
UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3JNZXRhbC5tbQotcGxhdGZvcm0vZ3Jh
cGhpY3MvbWV0YWwvR1BVTGVnYWN5UmVuZGVyUGFzc0Rlc2NyaXB0b3JNZXRhbC5tbQotcGxhdGZv
cm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnRE
ZXNjcmlwdG9yTWV0YWwubW0KLXBsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVUxlZ2FjeVJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvck1ldGFsLm1tCi1wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVM
ZWdhY3lSZW5kZXJQaXBlbGluZVN0YXRlTWV0YWwubW0KLXBsYXRmb3JtL2dyYXBoaWNzL21ldGFs
L0dQVUxlZ2FjeVRleHR1cmVEZXNjcmlwdG9yTWV0YWwubW0KLXBsYXRmb3JtL2dyYXBoaWNzL21l
dGFsL0dQVUxlZ2FjeVRleHR1cmVNZXRhbC5tbQorcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2Fj
eS9jb2NvYS9HUFVMZWdhY3lCdWZmZXJNZXRhbC5tbQorcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xl
Z2FjeS9jb2NvYS9HUFVMZWdhY3lDb21tYW5kQnVmZmVyTWV0YWwubW0KK3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9sZWdhY3kvY29jb2EvR1BVTGVnYWN5Q29tbWFuZFF1ZXVlTWV0YWwubW0KK3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvY29jb2EvR1BVTGVnYWN5Q29tcHV0ZUNvbW1hbmRFbmNv
ZGVyTWV0YWwubW0KK3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvY29jb2EvR1BVTGVnYWN5
Q29tcHV0ZVBpcGVsaW5lU3RhdGVNZXRhbC5tbQorcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2Fj
eS9jb2NvYS9HUFVMZWdhY3lEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yTWV0YWwubW0KK3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9sZWdhY3kvY29jb2EvR1BVTGVnYWN5RGVwdGhTdGVuY2lsU3RhdGVNZXRh
bC5tbQorcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9jb2NvYS9HUFVMZWdhY3lEZXZpY2VN
ZXRhbC5tbQorcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9jb2NvYS9HUFVMZWdhY3lEcmF3
YWJsZU1ldGFsLm1tCitwbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L2NvY29hL0dQVUxlZ2Fj
eUZ1bmN0aW9uTWV0YWwubW0KK3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvY29jb2EvR1BV
TGVnYWN5TGlicmFyeU1ldGFsLm1tCitwbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L2NvY29h
L0dQVUxlZ2FjeVJlbmRlckNvbW1hbmRFbmNvZGVyTWV0YWwubW0KK3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9sZWdhY3kvY29jb2EvR1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9y
TWV0YWwubW0KK3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvY29jb2EvR1BVTGVnYWN5UmVu
ZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3JNZXRhbC5tbQorcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L2xlZ2FjeS9jb2NvYS9HUFVMZWdhY3lSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVz
Y3JpcHRvck1ldGFsLm1tCitwbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L2NvY29hL0dQVUxl
Z2FjeVJlbmRlclBhc3NEZXNjcmlwdG9yTWV0YWwubW0KK3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9s
ZWdhY3kvY29jb2EvR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlw
dG9yTWV0YWwubW0KK3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvY29jb2EvR1BVTGVnYWN5
UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yTWV0YWwubW0KK3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9s
ZWdhY3kvY29jb2EvR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVTdGF0ZU1ldGFsLm1tCitwbGF0Zm9y
bS9ncmFwaGljcy9ncHUvbGVnYWN5L2NvY29hL0dQVUxlZ2FjeVRleHR1cmVEZXNjcmlwdG9yTWV0
YWwubW0KK3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvY29jb2EvR1BVTGVnYWN5VGV4dHVy
ZU1ldGFsLm1tCiAKIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVuR0wu
Y3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uczNET3BlbkdMQ29tbW9uLmNw
cApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IGMyMzM0YzYwNGU3M2I4NjA4MjViODkwNTdiYzlhODk0MTk5ZWIxMzUuLjA1MjI4MWU3
ZmY2ZjliNmZkOTEzZmJjY2M2MTU3NWI3MGVjNmNmNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTg5MSw2ICs4OTEsNDAgQEAK
IAkJMzEyODhFNzUwRTMwMDVENjAwMzYxOUFFIC8qIENTU0tleWZyYW1lc1J1bGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMjg4RTcxMEUzMDA1RDYw
MDM2MTlBRSAvKiBDU1NLZXlmcmFtZXNSdWxlLmggKi87IH07CiAJCTMxMjhDQTZCMTQ3MzMxNjMw
MDc0QzcyQSAvKiBOb3RpZmljYXRpb25Db250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTI4Q0E2QTE0NzMzMTYzMDA3NEM3MkEgLyogTm90
aWZpY2F0aW9uQ29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTMxMkMwQzQxMTQ2REM2Q0MwMDE2QzkxMSAvKiBOb3RpZmljYXRpb24u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMzM0Y3MDRG
MEZCNDlDQTIwMDhFMTJBNiAvKiBOb3RpZmljYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkzMTJGRjkxMTIxQTRDMzY1MDBFQjE5OUQgLyog
R1BVQ29tbWFuZEJ1ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMzEyRkY4QkQyMUE0QzJGMTAwRUIxOTlEIC8qIEdQVUNvbW1hbmRCdWZmZXIuaCAq
LzsgfTsKKwkJMzEyRkY5MTIyMUE0QzM2NTAwRUIxOTlEIC8qIEdQVURldmljZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEyRkY4QkUyMUE0QzJGMTAw
RUIxOTlEIC8qIEdQVURldmljZS5oICovOyB9OworCQkzMTJGRjkxMzIxQTRDMzY1MDBFQjE5OUQg
LyogR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMzEyRkY4QzQyMUE0QzJGNDAwRUIxOTlEIC8qIEdQVVBpcGVs
aW5lRGVzY3JpcHRvckJhc2UuaCAqLzsgfTsKKwkJMzEyRkY5MTQyMUE0QzM2NTAwRUIxOTlEIC8q
IEdQVVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAzMTJGRjhDMjIxQTRDMkYzMDBFQjE5OUQgLyogR1BVUGlwZWxp
bmVTdGFnZURlc2NyaXB0b3IuaCAqLzsgfTsKKwkJMzEyRkY5MTUyMUE0QzM2NTAwRUIxOTlEIC8q
IEdQVVF1ZXVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAzMTJGRjhDMTIxQTRDMkYyMDBFQjE5OUQgLyogR1BVUXVldWUuaCAqLzsgfTsKKwkJMzEyRkY5
MTYyMUE0QzM2NTAwRUIxOTlEIC8qIEdQVVJlbmRlclBpcGVsaW5lLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTJGRjhCOTIxQTRDMkVGMDBFQjE5OUQg
LyogR1BVUmVuZGVyUGlwZWxpbmUuaCAqLzsgfTsKKwkJMzEyRkY5MTcyMUE0QzM2NTAwRUIxOTlE
IC8qIEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEyRkY4QkMyMUE0QzJGMDAwRUIxOTlEIC8qIEdQVVJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvci5oICovOyB9OworCQkzMTJGRjkxODIxQTRDMzY1MDBFQjE5
OUQgLyogR1BVU2hhZGVyTW9kdWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAzMTJGRjhCQjIxQTRDMkYwMDBFQjE5OUQgLyogR1BVU2hhZGVyTW9kdWxl
LmggKi87IH07CisJCTMxMkZGOTE5MjFBNEMzNjUwMEVCMTk5RCAvKiBHUFVTaGFkZXJNb2R1bGVE
ZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAzMTJGRjhDMDIxQTRDMkYyMDBFQjE5OUQgLyogR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5o
ICovOyB9OworCQkzMTJGRjkxQTIxQTRDMzY1MDBFQjE5OUQgLyogR1BVU3dhcENoYWluLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTJGRjhCQTIxQTRD
MkVGMDBFQjE5OUQgLyogR1BVU3dhcENoYWluLmggKi87IH07CisJCTMxMkZGOTFCMjFBNEMzNjUw
MEVCMTk5RCAvKiBHUFVUZXh0dXJlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAzMTJGRjhDNTIxQTRDMkY0MDBFQjE5OUQgLyogR1BVVGV4dHVyZS5oICov
OyB9OworCQkzMTJGRjkxQzIxQTRDMzY1MDBFQjE5OUQgLyogR1BVVGV4dHVyZUZvcm1hdEVudW0u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMkZGOEMz
MjFBNEMyRjMwMEVCMTk5RCAvKiBHUFVUZXh0dXJlRm9ybWF0RW51bS5oICovOyB9OworCQkzMTJG
RjkxRDIxQTRDMzczMDBFQjE5OUQgLyogR1BVTGVnYWN5UmVuZGVyUGFzc0Rlc2NyaXB0b3IuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMkZGOEZGMjFB
NEMzM0YwMEVCMTk5RCAvKiBHUFVMZWdhY3lSZW5kZXJQYXNzRGVzY3JpcHRvci5oICovOyB9Owor
CQkzMTJGRjkxRTIxQTRDMzczMDBFQjE5OUQgLyogR1BVTGVnYWN5QnVmZmVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTJGRjkwMjIxQTRDMzNGMDBF
QjE5OUQgLyogR1BVTGVnYWN5QnVmZmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJMzEyRkY5MUYyMUE0QzM3MzAwRUIxOTlEIC8qIEdQVUxlZ2Fj
eVRleHR1cmVEZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAzMTJGRjkwNDIxQTRDMzNGMDBFQjE5OUQgLyogR1BVTGVnYWN5VGV4dHVyZURl
c2NyaXB0b3IuaCAqLzsgfTsKKwkJMzEyRkY5MjAyMUE0QzM3MzAwRUIxOTlEIC8qIEdQVUxlZ2Fj
eVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEyRkY5MEEyMUE0QzMzRjAwRUIxOTlEIC8qIEdQVUxl
Z2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5oICovOyB9OworCQkzMTJGRjkyMTIx
QTRDMzczMDBFQjE5OUQgLyogR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnRE
ZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAzMTJGRjkwQjIxQTRDMzNGMDBFQjE5OUQgLyogR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVDb2xv
ckF0dGFjaG1lbnREZXNjcmlwdG9yLmggKi87IH07CisJCTMxMkZGOTIyMjFBNEMzNzMwMEVCMTk5
RCAvKiBHUFVMZWdhY3lMaWJyYXJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAzMTJGRjkwQzIxQTRDMzNGMDBFQjE5OUQgLyogR1BVTGVnYWN5TGlicmFy
eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTMx
MkZGOTIzMjFBNEMzNzMwMEVCMTk5RCAvKiBHUFVMZWdhY3lSZW5kZXJQaXBlbGluZVN0YXRlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTJGRjkwRTIx
QTRDMzNGMDBFQjE5OUQgLyogR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVTdGF0ZS5oICovOyB9Owor
CQkzMTJGRjkyNDIxQTRDMzczMDBFQjE5OUQgLyogR1BVTGVnYWN5RnVuY3Rpb24uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMkZGOTEwMjFBNEMzM0Yw
MEVCMTk5RCAvKiBHUFVMZWdhY3lGdW5jdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTMxMkZGOTI1MjFBNEMzOEIwMEVCMTk5RCAvKiBHUFVM
ZWdhY3lSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEyRkY4RDEyMUE0QzMzRjAwRUIxOTlE
IC8qIEdQVUxlZ2FjeVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmggKi87IH07
CisJCTMxMkZGOTI2MjFBNEMzOEIwMEVCMTk5RCAvKiBHUFVMZWdhY3lEZXB0aFN0ZW5jaWxEZXNj
cmlwdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAz
MTJGRjhEMjIxQTRDMzNGMDBFQjE5OUQgLyogR1BVTGVnYWN5RGVwdGhTdGVuY2lsRGVzY3JpcHRv
ci5oICovOyB9OworCQkzMTJGRjkyNzIxQTRDMzhCMDBFQjE5OUQgLyogR1BVTGVnYWN5RGV2aWNl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTJGRjhE
MzIxQTRDMzNGMDBFQjE5OUQgLyogR1BVTGVnYWN5RGV2aWNlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMzEyRkY5MjgyMUE0QzM4QjAwRUIxOTlE
IC8qIEdQVUxlZ2FjeVRleHR1cmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDMxMkZGOEQ0MjFBNEMzM0YwMEVCMTk5RCAvKiBHUFVMZWdhY3lUZXh0dXJl
LmggKi87IH07CisJCTMxMkZGOTI5MjFBNEMzOEIwMEVCMTk5RCAvKiBHUFVMZWdhY3lSZW5kZXJD
b21tYW5kRW5jb2Rlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMzEyRkY4RDYyMUE0QzMzRjAwRUIxOTlEIC8qIEdQVUxlZ2FjeVJlbmRlckNvbW1hbmRF
bmNvZGVyLmggKi87IH07CisJCTMxMkZGOTJBMjFBNEMzOEIwMEVCMTk5RCAvKiBHUFVMZWdhY3lD
b21tYW5kUXVldWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDMxMkZGOEQ5MjFBNEMzM0YwMEVCMTk5RCAvKiBHUFVMZWdhY3lDb21tYW5kUXVldWUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkzMTJGRjky
QjIxQTRDMzhCMDBFQjE5OUQgLyogR1BVTGVnYWN5RHJhd2FibGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMkZGOERCMjFBNEMzM0YwMEVCMTk5RCAv
KiBHUFVMZWdhY3lEcmF3YWJsZS5oICovOyB9OworCQkzMTJGRjkyQzIxQTRDMzhCMDBFQjE5OUQg
LyogR1BVTGVnYWN5RW51bXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDMxMkZGOERDMjFBNEMzM0YwMEVCMTk5RCAvKiBHUFVMZWdhY3lFbnVtcy5oICov
OyB9OworCQkzMTJGRjkyRDIxQTRDMzhCMDBFQjE5OUQgLyogR1BVTGVnYWN5U2l6ZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEyRkY4REYyMUE0QzMz
RjAwRUIxOTlEIC8qIEdQVUxlZ2FjeVNpemUuaCAqLzsgfTsKKwkJMzEyRkY5MkUyMUE0QzM4QjAw
RUIxOTlEIC8qIEdQVUxlZ2FjeVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTJGRjhFMzIx
QTRDMzNGMDBFQjE5OUQgLyogR1BVTGVnYWN5UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2Ny
aXB0b3IuaCAqLzsgfTsKKwkJMzEyRkY5MkYyMUE0QzM4QjAwRUIxOTlEIC8qIEdQVUxlZ2FjeUNv
bXB1dGVDb21tYW5kRW5jb2Rlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMzEyRkY4RTQyMUE0QzMzRjAwRUIxOTlEIC8qIEdQVUxlZ2FjeUNvbXB1dGVD
b21tYW5kRW5jb2Rlci5oICovOyB9OworCQkzMTJGRjkzMDIxQTRDMzhCMDBFQjE5OUQgLyogR1BV
TGVnYWN5RGVwdGhTdGVuY2lsU3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDMxMkZGOEU2MjFBNEMzM0YwMEVCMTk5RCAvKiBHUFVMZWdhY3lEZXB0
aFN0ZW5jaWxTdGF0ZS5oICovOyB9OworCQkzMTJGRjkzMTIxQTRDMzhCMDBFQjE5OUQgLyogR1BV
TGVnYWN5UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTJGRjhFNzIxQTRDMzNGMDBFQjE5OUQgLyogR1BVTGVn
YWN5UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmggKi87IH07CisJCTMxMkZGOTMyMjFBNEM1NTIw
MEVCMTk5RCAvKiBHUFVMZWdhY3lDb21tYW5kQnVmZmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTJGRjhERTIxQTRDMzNGMDBFQjE5OUQgLyogR1BV
TGVnYWN5Q29tbWFuZEJ1ZmZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTMxMzE3MTU2MUZCMDc5RTUwMDhEOTFGQyAvKiBDYW52YXNCYXNlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTMxNzE1NDFG
QjA3OUQxMDA4RDkxRkMgLyogQ2FudmFzQmFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTMxMzU5MTA2MUU3RERDNzMwMEYzMDYzMCAvKiBSVENJ
Y2VDb25uZWN0aW9uU3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDMxMzU5MTAwMUU3RERDNjAwMEYzMDYzMCAvKiBSVENJY2VDb25uZWN0aW9uU3Rh
dGUuaCAqLzsgfTsKIAkJMzEzNTkxMDcxRTdEREM3MzAwRjMwNjMwIC8qIFJUQ0ljZUdhdGhlcmlu
Z1N0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAz
MTM1OTEwMTFFN0REQzYwMDBGMzA2MzAgLyogUlRDSWNlR2F0aGVyaW5nU3RhdGUuaCAqLzsgfTsK
QEAgLTkxMCwyNyArOTQ0LDcgQEAKIAkJMzE0ODc3RTYxRkFBQjAyNTAwQzA1NzU5IC8qIEpTT2Zm
c2NyZWVuQ2FudmFzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAzMTQ4NzdFNDFGQUFCMDIyMDBDMDU3NTkgLyogSlNPZmZzY3JlZW5DYW52YXMuaCAqLzsg
fTsKIAkJMzE0QkUzQTExQjMwRjZCNzAwMTQxOTgyIC8qIENTU05hbWVkSW1hZ2VWYWx1ZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE0QkUzQTAxQjMw
RjZCNzAwMTQxOTgyIC8qIENTU05hbWVkSW1hZ2VWYWx1ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTMxNEJFM0E3MUIzMTAzRkIwMDE0MTk4MiAv
KiBOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDMxNEJFM0E1MUIzMTAzRkIwMDE0MTk4MiAvKiBOYW1lZEltYWdl
R2VuZXJhdGVkSW1hZ2UuaCAqLzsgfTsKLQkJMzE2QkRCODYxRTZFMEEyNzAwREUwRDVBIC8qIEdQ
VUxlZ2FjeURldmljZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMzE2QkRCODUxRTZFMEEyMTAwREUwRDVBIC8qIEdQVUxlZ2FjeURldmljZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTMxNkJEQjhDMUU2
RTE1MzAwMERFMEQ1QSAvKiBXZWJNZXRhbExheWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTZCREI4QTFFNkUxNTMwMDBERTBENUEgLyogV2ViTWV0
YWxMYXllci5oICovOyB9OwotCQkzMTZCREI5NTFFNzBDODk3MDBERTBENUEgLyogR1BVTGVnYWN5
RnVuY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDMxNkJEQjkzMUU3MEM4OTcwMERFMEQ1QSAvKiBHUFVMZWdhY3lGdW5jdGlvbi5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTMxNkJEQjlCMUU3MENC
QkYwMERFMEQ1QSAvKiBHUFVMZWdhY3lMaWJyYXJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTZCREI5OTFFNzBDQkJGMDBERTBENUEgLyogR1BVTGVn
YWN5TGlicmFyeS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07Ci0JCTMxNkJEQkFBMUU3MUZBOTMwMERFMEQ1QSAvKiBHUFVMZWdhY3lCdWZmZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxNkJEQkE4MUU3MUZB
OTMwMERFMEQ1QSAvKiBHUFVMZWdhY3lCdWZmZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkzMTZCREJCMjFFNzM1NEJCMDBERTBENUEgLyogR1BV
TGVnYWN5VGV4dHVyZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMzE2QkRCQjAxRTczNTRCQjAwREUwRDVBIC8qIEdQVUxlZ2FjeVRleHR1cmUuaCAqLzsg
fTsKLQkJMzE2QkRCQjgxRTczNTdDQjAwREUwRDVBIC8qIEdQVUxlZ2FjeVRleHR1cmVEZXNjcmlw
dG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTZC
REJCNjFFNzM1N0NCMDBERTBENUEgLyogR1BVTGVnYWN5VGV4dHVyZURlc2NyaXB0b3IuaCAqLzsg
fTsKLQkJMzE2QkRCQkMxRTczODgwNjAwREUwRDVBIC8qIEdQVUxlZ2FjeUNvbW1hbmRRdWV1ZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE2QkRCQkEx
RTczODgwNjAwREUwRDVBIC8qIEdQVUxlZ2FjeUNvbW1hbmRRdWV1ZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTMxNkJEQkNEMUU3NUYxODQwMERF
MEQ1QSAvKiBHUFVMZWdhY3lEcmF3YWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMzE2QkRCQ0IxRTc1RjE3NjAwREUwRDVBIC8qIEdQVUxlZ2FjeURy
YXdhYmxlLmggKi87IH07Ci0JCTMxNkJEQkNFMUU3NUYxOEEwMERFMEQ1QSAvKiBHUFVMZWdhY3lD
b21tYW5kQnVmZmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAzMTZCREJDNTFFNzVFRTI0MDBERTBENUEgLyogR1BVTGVnYWN5Q29tbWFuZEJ1ZmZlci5o
ICovOyB9OwotCQkzMTZCREJEMzFFNzVGN0I2MDBERTBENUEgLyogR1BVTGVnYWN5UmVuZGVyUGFz
c0Rlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDMxNkJEQkQxMUU3NUY3QUUwMERFMEQ1QSAvKiBHUFVMZWdhY3lSZW5kZXJQYXNzRGVzY3Jp
cHRvci5oICovOyB9OwotCQkzMTZCREJEQjFFNzYxMkUyMDBERTBENUEgLyogR1BVTGVnYWN5UmVu
ZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxNkJEQkQ5MUU3NjEyREIwMERFMEQ1QSAvKiBHUFVM
ZWdhY3lSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oICovOyB9OwotCQkzMTZC
REJERjFFNzYxMzc1MDBERTBENUEgLyogR1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNj
cmlwdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAz
MTZCREJERDFFNzYxMzZDMDBERTBENUEgLyogR1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1lbnRE
ZXNjcmlwdG9yLmggKi87IH07Ci0JCTMxNkJEQkU0MUU3NjFGMDUwMERFMEQ1QSAvKiBHUFVMZWdh
Y3lSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE2QkRCRTMxRTc2MUVGRjAwREUwRDVBIC8q
IEdQVUxlZ2FjeVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmggKi87IH07Ci0J
CTMxNkJEQkVCMUU3NjI0NEQwMERFMEQ1QSAvKiBHUFVMZWdhY3lSZW5kZXJDb21tYW5kRW5jb2Rl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE2QkRC
RTkxRTc2MjQ0NDAwREUwRDVBIC8qIEdQVUxlZ2FjeVJlbmRlckNvbW1hbmRFbmNvZGVyLmggKi87
IH07Ci0JCTMxNkJEQkYwMUU3NjI5MjAwMERFMEQ1QSAvKiBHUFVMZWdhY3lEZXB0aFN0ZW5jaWxT
dGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE2
QkRCRUYxRTc2MjkxQjAwREUwRDVBIC8qIEdQVUxlZ2FjeURlcHRoU3RlbmNpbFN0YXRlLmggKi87
IH07Ci0JCTMxNkJEQkY3MUU3NjJBRDUwMERFMEQ1QSAvKiBHUFVMZWdhY3lEZXB0aFN0ZW5jaWxE
ZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAzMTZCREJGNTFFNzYyQUNEMDBERTBENUEgLyogR1BVTGVnYWN5RGVwdGhTdGVuY2lsRGVzY3Jp
cHRvci5oICovOyB9OwotCQkzMTZCREJGQjFFNzYyRDA0MDBERTBENUEgLyogR1BVTGVnYWN5RW51
bXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxNkJE
QkZBMUU3NjJEMDQwMERFMEQ1QSAvKiBHUFVMZWdhY3lFbnVtcy5oICovOyB9OwotCQkzMTZCREMw
MjFFNzYyRjY0MDBERTBENUEgLyogR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTZCREJGRDFF
NzYyRjU3MDBERTBENUEgLyogR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmggKi87
IH07Ci0JCTMxNkJEQzAzMUU3NjJGNjkwMERFMEQ1QSAvKiBHUFVMZWdhY3lSZW5kZXJQaXBlbGlu
ZVN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAz
MTZCREJGRjFFNzYyRjU3MDBERTBENUEgLyogR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVTdGF0ZS5o
ICovOyB9OwotCQkzMTZCREMwRDFFNzYzNEQyMDBERTBENUEgLyogR1BVTGVnYWN5UmVuZGVyUGlw
ZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTZCREMwOTFFNzYzNDI3MDBERTBENUEgLyogR1BVTGVn
YWN5UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmggKi87IH07CiAJCTMx
NkRDQjIwMUU3OENBNTUwMDFCNUY4NyAvKiBKU1JUQ09mZmVyQW5zd2VyT3B0aW9ucy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE2RENCMUExRTc4Q0E1
NTAwMUI1Rjg3IC8qIEpTUlRDT2ZmZXJBbnN3ZXJPcHRpb25zLmggKi87IH07CiAJCTMxNkRDQjIy
MUU3OENBNTUwMDFCNUY4NyAvKiBKU1JUQ1J0cFRyYW5zY2VpdmVyRGlyZWN0aW9uLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTZEQ0IxQzFFNzhDQTU1
MDAxQjVGODcgLyogSlNSVENSdHBUcmFuc2NlaXZlckRpcmVjdGlvbi5oICovOyB9OwogCQkzMTZE
Q0I0QzFFNzkxMEE2MDAxQjVGODcgLyogSlNSVENJY2VDb25uZWN0aW9uU3RhdGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxNkRDQjQ2MUU3OTEwQTYw
MDFCNUY4NyAvKiBKU1JUQ0ljZUNvbm5lY3Rpb25TdGF0ZS5oICovOyB9OwpAQCAtMjY1MSw5ICsy
NjY1LDYgQEAKIAkJOTNBODA2MTcxRTAzQjUxQzAwOEExRjI2IC8qIExvbmdSYW5nZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNBODA2MTMxRTAzQjUx
QzAwOEExRjI2IC8qIExvbmdSYW5nZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTkzQTgwNjFFMUUwM0I1ODUwMDhBMUYyNiAvKiBKU0RvdWJsZVJh
bmdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0E4
MDYxQTFFMDNCNTg1MDA4QTFGMjYgLyogSlNEb3VibGVSYW5nZS5oICovOyB9OwogCQk5M0E4MDYy
MDFFMDNCNTg1MDA4QTFGMjYgLyogSlNMb25nUmFuZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQTgwNjFDMUUwM0I1ODUwMDhBMUYyNiAvKiBKU0xv
bmdSYW5nZS5oICovOyB9OwotCQk5M0E5NTNCMDIwRUJEM0M5MDBBNjE5RjYgLyogR1BVTGVnYWN5
Q29tcHV0ZVBpcGVsaW5lU3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDM4MUUzNUVDMUU4RTIzRTQwMDQzRTg1MCAvKiBHUFVMZWdhY3lDb21wdXRl
UGlwZWxpbmVTdGF0ZS5oICovOyB9OwotCQk5M0E5NTNCNDIwRUJENDMyMDBBNjE5RjYgLyogR1BV
TGVnYWN5Q29tcHV0ZUNvbW1hbmRFbmNvZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAzODFFMzVFQTFFOEUyMEQ5MDA0M0U4NTAgLyogR1BVTGVnYWN5
Q29tcHV0ZUNvbW1hbmRFbmNvZGVyLmggKi87IH07Ci0JCTkzQTk1M0I1MjBFQzlDM0YwMEE2MTlG
NiAvKiBHUFVMZWdhY3lTaXplLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAzODFFMzVGNjFFOEU0RDBFMDA0M0U4NTAgLyogR1BVTGVnYWN5U2l6ZS5oICov
OyB9OwogCQk5M0IyRDgxNjBGOTkyMEQyMDA2QUU2QjIgLyogU3VkZGVuVGVybWluYXRpb24uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQjJEODE1MEY5
OTIwRDIwMDZBRTZCMiAvKiBTdWRkZW5UZXJtaW5hdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzQjZBMEU2MEIwQkNBNUMwMEY1MDI3QSAv
KiBDb250ZXh0TWVudS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTNCNkEwRTUwQjBCQ0E1QzAwRjUwMjdBIC8qIENvbnRleHRNZW51LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNCNzBENjQwOUVCMEM3
QzAwOUQ4NDY4IC8qIEpTRE9NQmluZGluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTNCNzBENDgwOUVCMEM3QzAwOUQ4NDY4IC8qIEpTRE9NQmluZGlu
Zy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC02
ODQ1LDYgKzY4NTYsOTEgQEAKIAkJMzEyODhFNzEwRTMwMDVENjAwMzYxOUFFIC8qIENTU0tleWZy
YW1lc1J1bGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTS2V5ZnJhbWVz
UnVsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTI4Q0E2NzE0NzMzMTUyMDA3
NEM3MkEgLyogTm90aWZpY2F0aW9uQ29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBOb3RpZmljYXRpb25Db250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMzEyOENBNkExNDczMzE2MzAwNzRDNzJBIC8qIE5vdGlmaWNhdGlv
bkNvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTm90aWZpY2F0
aW9uQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMTJGRjhCOTIx
QTRDMkVGMDBFQjE5OUQgLyogR1BVUmVuZGVyUGlwZWxpbmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BV
UmVuZGVyUGlwZWxpbmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzEyRkY4QkEy
MUE0QzJFRjAwRUIxOTlEIC8qIEdQVVN3YXBDaGFpbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVTd2Fw
Q2hhaW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzEyRkY4QkIyMUE0QzJGMDAw
RUIxOTlEIC8qIEdQVVNoYWRlck1vZHVsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVTaGFkZXJNb2R1
bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzEyRkY4QkMyMUE0QzJGMDAwRUIx
OTlEIC8qIEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVS
ZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MzEyRkY4QkQyMUE0QzJGMTAwRUIxOTlEIC8qIEdQVUNvbW1hbmRCdWZmZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gR1BVQ29tbWFuZEJ1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkz
MTJGRjhCRTIxQTRDMkYxMDBFQjE5OUQgLyogR1BVRGV2aWNlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQ
VURldmljZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMTJGRjhCRjIxQTRDMkYx
MDBFQjE5OUQgLyogR1BVRGV2aWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdQVURldmljZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxMkZGOEMwMjFBNEMyRjIwMEVCMTk5
RCAvKiBHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVNoYWRl
ck1vZHVsZURlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzEyRkY4
QzEyMUE0QzJGMjAwRUIxOTlEIC8qIEdQVVF1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVF1ZXVl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxMkZGOEMyMjFBNEMyRjMwMEVCMTk5
RCAvKiBHUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVQaXBl
bGluZVN0YWdlRGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMTJG
RjhDMzIxQTRDMkYzMDBFQjE5OUQgLyogR1BVVGV4dHVyZUZvcm1hdEVudW0uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gR1BVVGV4dHVyZUZvcm1hdEVudW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMzEyRkY4QzQyMUE0QzJGNDAwRUIxOTlEIC8qIEdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2Uu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkzMTJGRjhDNTIxQTRDMkY0MDBFQjE5OUQgLyogR1BVVGV4dHVy
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBHUFVUZXh0dXJlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTMxMkZGOEM3MjFBNEMzMjUwMEVCMTk5RCAvKiBHUFVRdWV1ZU1ldGFsLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gR1BVUXVldWVNZXRhbC5tbTsgcGF0
aCA9IHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVRdWV1ZU1ldGFsLm1tOyBzb3VyY2VU
cmVlID0gU09VUkNFX1JPT1Q7IH07CisJCTMxMkZGOEM4MjFBNEMzMjUwMEVCMTk5RCAvKiBHUFVU
ZXh0dXJlTWV0YWwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBH
UFVUZXh0dXJlTWV0YWwubW07IHBhdGggPSBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BV
VGV4dHVyZU1ldGFsLm1tOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CisJCTMxMkZGOEM5
MjFBNEMzMjYwMEVCMTk5RCAvKiBHUFVEZXZpY2VNZXRhbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgbmFtZSA9IEdQVURldmljZU1ldGFsLm1tOyBwYXRoID0gcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L2NvY29hL0dQVURldmljZU1ldGFsLm1tOyBzb3VyY2VUcmVlID0gU09VUkNF
X1JPT1Q7IH07CisJCTMxMkZGOENBMjFBNEMzMjYwMEVCMTk5RCAvKiBHUFVTaGFkZXJNb2R1bGVN
ZXRhbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IEdQVVNoYWRl
ck1vZHVsZU1ldGFsLm1tOyBwYXRoID0gcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVNo
YWRlck1vZHVsZU1ldGFsLm1tOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CisJCTMxMkZG
OENCMjFBNEMzMjcwMEVCMTk5RCAvKiBHUFVTd2FwQ2hhaW5NZXRhbC5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IEdQVVN3YXBDaGFpbk1ldGFsLm1tOyBwYXRoID0g
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVN3YXBDaGFpbk1ldGFsLm1tOyBzb3VyY2VU
cmVlID0gU09VUkNFX1JPT1Q7IH07CisJCTMxMkZGOENDMjFBNEMzMjcwMEVCMTk5RCAvKiBHUFVD
b21tYW5kQnVmZmVyTWV0YWwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5h
bWUgPSBHUFVDb21tYW5kQnVmZmVyTWV0YWwubW07IHBhdGggPSBwbGF0Zm9ybS9ncmFwaGljcy9n
cHUvY29jb2EvR1BVQ29tbWFuZEJ1ZmZlck1ldGFsLm1tOyBzb3VyY2VUcmVlID0gU09VUkNFX1JP
T1Q7IH07CisJCTMxMkZGOENEMjFBNEMzMjgwMEVCMTk5RCAvKiBHUFVSZW5kZXJQaXBlbGluZU1l
dGFsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gR1BVUmVuZGVy
UGlwZWxpbmVNZXRhbC5tbTsgcGF0aCA9IHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVS
ZW5kZXJQaXBlbGluZU1ldGFsLm1tOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CisJCTMx
MkZGOENGMjFBNEMzM0YwMEVCMTk5RCAvKiBHUFVMZWdhY3lUZXh0dXJlRGVzY3JpcHRvci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBHUFVMZWdhY3lUZXh0dXJlRGVzY3JpcHRvci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxMkZGOEQwMjFBNEMzM0YwMEVCMTk5RCAvKiBHUFVM
ZWdhY3lSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR1BV
TGVnYWN5UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMzEyRkY4RDEyMUE0QzMzRjAwRUIxOTlEIC8qIEdQVUxlZ2FjeVJlbmRlclBhc3NE
ZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUxlZ2FjeVJlbmRl
clBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTMxMkZGOEQyMjFBNEMzM0YwMEVCMTk5RCAvKiBHUFVMZWdhY3lEZXB0aFN0ZW5jaWxE
ZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUxlZ2FjeURlcHRoU3RlbmNpbERlc2NyaXB0
b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzEyRkY4RDMyMUE0QzMzRjAwRUIx
OTlEIC8qIEdQVUxlZ2FjeURldmljZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVMZWdhY3lEZXZpY2Uu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzEyRkY4RDQyMUE0QzMzRjAwRUIxOTlE
IC8qIEdQVUxlZ2FjeVRleHR1cmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVTGVnYWN5VGV4dHVyZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMTJGRjhENTIxQTRDMzNGMDBFQjE5OUQg
LyogR1BVTGVnYWN5VGV4dHVyZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHUFVMZWdhY3lUZXh0
dXJlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzEyRkY4RDYyMUE0QzMzRjAw
RUIxOTlEIC8qIEdQVUxlZ2FjeVJlbmRlckNvbW1hbmRFbmNvZGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEdQVUxlZ2FjeVJlbmRlckNvbW1hbmRFbmNvZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTMxMkZGOEQ3MjFBNEMzM0YwMEVCMTk5RCAvKiBHUFVMZWdhY3lDb21wdXRlUGlwZWxp
bmVTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVMZWdhY3lDb21wdXRlUGlwZWxpbmVTdGF0ZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMTJGRjhEODIxQTRDMzNGMDBFQjE5OUQg
LyogR1BVTGVnYWN5RnVuY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR1BVTGVnYWN5RnVu
Y3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMTJGRjhEOTIxQTRDMzNG
MDBFQjE5OUQgLyogR1BVTGVnYWN5Q29tbWFuZFF1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUxl
Z2FjeUNvbW1hbmRRdWV1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMTJGRjhE
QTIxQTRDMzNGMDBFQjE5OUQgLyogR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1l
bnREZXNjcmlwdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdQVUxlZ2FjeVJlbmRlclBpcGVs
aW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTMxMkZGOERCMjFBNEMzM0YwMEVCMTk5RCAvKiBHUFVMZWdhY3lEcmF3YWJsZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBHUFVMZWdhY3lEcmF3YWJsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkzMTJGRjhEQzIxQTRDMzNGMDBFQjE5OUQgLyogR1BVTGVnYWN5RW51bXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gR1BVTGVnYWN5RW51bXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMzEyRkY4REQyMUE0QzMzRjAwRUIxOTlEIC8qIEdQVUxlZ2FjeVJlbmRlckNvbW1hbmRFbmNv
ZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdQVUxlZ2FjeVJlbmRlckNvbW1hbmRFbmNvZGVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzEyRkY4REUyMUE0QzMzRjAwRUIx
OTlEIC8qIEdQVUxlZ2FjeUNvbW1hbmRCdWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVTGVnYWN5
Q29tbWFuZEJ1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMTJGRjhERjIx
QTRDMzNGMDBFQjE5OUQgLyogR1BVTGVnYWN5U2l6ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVMZWdh
Y3lTaXplLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxMkZGOEUwMjFBNEMzM0Yw
MEVCMTk5RCAvKiBHUFVMZWdhY3lCdWZmZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR1BVTGVn
YWN5QnVmZmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzEyRkY4RTEyMUE0
QzMzRjAwRUIxOTlEIC8qIEdQVUxlZ2FjeURlcHRoU3RlbmNpbFN0YXRlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEdQVUxlZ2FjeURlcHRoU3RlbmNpbFN0YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMzEyRkY4RTIyMUE0QzMzRjAwRUIxOTlEIC8qIEdQVUxlZ2FjeURldmlj
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHUFVMZWdhY3lEZXZpY2UuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkzMTJGRjhFMzIxQTRDMzNGMDBFQjE5OUQgLyogR1BVTGVnYWN5
UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BV
TGVnYWN5UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMzEyRkY4RTQyMUE0QzMzRjAwRUIxOTlEIC8qIEdQVUxlZ2FjeUNv
bXB1dGVDb21tYW5kRW5jb2Rlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVMZWdhY3lDb21wdXRlQ29t
bWFuZEVuY29kZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzEyRkY4RTUyMUE0
QzMzRjAwRUIxOTlEIC8qIEdQVUxlZ2FjeVJlbmRlclBhc3NEZXNjcmlwdG9yLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEdQVUxlZ2FjeVJlbmRlclBhc3NEZXNjcmlwdG9yLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzEyRkY4RTYyMUE0QzMzRjAwRUIxOTlEIC8qIEdQVUxlZ2Fj
eURlcHRoU3RlbmNpbFN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUxlZ2FjeURlcHRoU3RlbmNp
bFN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxMkZGOEU3MjFBNEMzM0Yw
MEVCMTk5RCAvKiBHUFVMZWdhY3lSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTMxMkZGOEU4MjFBNEMzM0YwMEVCMTk5RCAvKiBHUFVMZWdhY3lDb21w
dXRlUGlwZWxpbmVTdGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHUFVMZWdhY3lDb21wdXRl
UGlwZWxpbmVTdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxMkZGOEVB
MjFBNEMzM0YwMEVCMTk5RCAvKiBHUFVMZWdhY3lEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yTWV0YWwu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVMZWdhY3lEZXB0aFN0ZW5jaWxEZXNjcmlwdG9y
TWV0YWwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxMkZGOEVCMjFBNEMzM0Yw
MEVCMTk5RCAvKiBHUFVMZWdhY3lSZW5kZXJDb21tYW5kRW5jb2Rlck1ldGFsLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gR1BVTGVnYWN5UmVuZGVyQ29tbWFuZEVuY29kZXJNZXRhbC5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzEyRkY4RUMyMUE0QzMzRjAwRUIxOTlEIC8qIEdQ
VUxlZ2FjeVRleHR1cmVEZXNjcmlwdG9yTWV0YWwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBH
UFVMZWdhY3lUZXh0dXJlRGVzY3JpcHRvck1ldGFsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkzMTJGRjhFRDIxQTRDMzNGMDBFQjE5OUQgLyogR1BVTGVnYWN5RnVuY3Rpb25NZXRh
bC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVUxlZ2FjeUZ1bmN0aW9uTWV0YWwubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxMkZGOEVFMjFBNEMzM0YwMEVCMTk5RCAvKiBH
UFVMZWdhY3lEcmF3YWJsZU1ldGFsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVTGVnYWN5
RHJhd2FibGVNZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzEyRkY4RUYy
MUE0QzMzRjAwRUIxOTlEIC8qIEdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvck1ldGFs
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yTWV0YWwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxMkZGOEYwMjFBNEMz
M0YwMEVCMTk5RCAvKiBHUFVMZWdhY3lSZW5kZXJQYXNzRGVzY3JpcHRvck1ldGFsLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gR1BVTGVnYWN5UmVuZGVyUGFzc0Rlc2NyaXB0b3JNZXRhbC5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzEyRkY4RjEyMUE0QzMzRjAwRUIxOTlEIC8q
IEdQVUxlZ2FjeUNvbW1hbmRRdWV1ZU1ldGFsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR1BV
TGVnYWN5Q29tbWFuZFF1ZXVlTWV0YWwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTMxMkZGOEYyMjFBNEMzM0YwMEVCMTk5RCAvKiBHUFVMZWdhY3lMaWJyYXJ5TWV0YWwubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBHUFVMZWdhY3lMaWJyYXJ5TWV0YWwubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTMxMkZGOEYzMjFBNEMzM0YwMEVCMTk5RCAvKiBHUFVMZWdhY3lD
b21wdXRlQ29tbWFuZEVuY29kZXJNZXRhbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVUxl
Z2FjeUNvbXB1dGVDb21tYW5kRW5jb2Rlck1ldGFsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkzMTJGRjhGNDIxQTRDMzNGMDBFQjE5OUQgLyogR1BVTGVnYWN5UmVuZGVyUGlwZWxp
bmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yTWV0YWwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBHUFVMZWdhY3lSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3JNZXRhbC5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzEyRkY4RjUyMUE0QzMzRjAwRUIxOTlE
IC8qIEdQVUxlZ2FjeVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yTWV0YWwubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVMZWdhY3lSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50
RGVzY3JpcHRvck1ldGFsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMTJGRjhG
NjIxQTRDMzNGMDBFQjE5OUQgLyogR1BVTGVnYWN5Q29tbWFuZEJ1ZmZlck1ldGFsLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gR1BVTGVnYWN5Q29tbWFuZEJ1ZmZlck1ldGFsLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkzMTJGRjhGNzIxQTRDMzNGMDBFQjE5OUQgLyogR1BVTGVn
YWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yTWV0YWwubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBHUFVMZWdhY3lSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3JNZXRhbC5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzEyRkY4RjgyMUE0QzMzRjAwRUIxOTlEIC8q
IEdQVUxlZ2FjeURldmljZU1ldGFsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVTGVnYWN5
RGV2aWNlTWV0YWwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxMkZGOEY5MjFB
NEMzM0YwMEVCMTk5RCAvKiBHUFVMZWdhY3lEZXB0aFN0ZW5jaWxTdGF0ZU1ldGFsLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gR1BVTGVnYWN5RGVwdGhTdGVuY2lsU3RhdGVNZXRhbC5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzEyRkY4RkEyMUE0QzMzRjAwRUIxOTlEIC8qIEdQ
VUxlZ2FjeUJ1ZmZlck1ldGFsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVTGVnYWN5QnVm
ZmVyTWV0YWwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxMkZGOEZCMjFBNEMz
M0YwMEVCMTk5RCAvKiBHUFVMZWdhY3lDb21wdXRlUGlwZWxpbmVTdGF0ZU1ldGFsLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gR1BVTGVnYWN5Q29tcHV0ZVBpcGVsaW5lU3RhdGVNZXRhbC5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzEyRkY4RkMyMUE0QzMzRjAwRUIxOTlEIC8q
IEdQVUxlZ2FjeVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yTWV0YWwubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBHUFVMZWdhY3lSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVz
Y3JpcHRvck1ldGFsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMTJGRjhGRDIx
QTRDMzNGMDBFQjE5OUQgLyogR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVTdGF0ZU1ldGFsLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVTdGF0ZU1ldGFsLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMTJGRjhGRTIxQTRDMzNGMDBFQjE5OUQg
LyogR1BVTGVnYWN5VGV4dHVyZU1ldGFsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVTGVn
YWN5VGV4dHVyZU1ldGFsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMTJGRjhG
RjIxQTRDMzNGMDBFQjE5OUQgLyogR1BVTGVnYWN5UmVuZGVyUGFzc0Rlc2NyaXB0b3IuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gR1BVTGVnYWN5UmVuZGVyUGFzc0Rlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMzEyRkY5MDAyMUE0QzMzRjAwRUIxOTlEIC8qIEdQVUxlZ2FjeVJl
bmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEdQVUxlZ2FjeVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzEyRkY5MDEyMUE0QzMzRjAwRUIxOTlEIC8qIEdQVUxl
Z2FjeVJlbmRlclBpcGVsaW5lU3RhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR1BVTGVnYWN5
UmVuZGVyUGlwZWxpbmVTdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMx
MkZGOTAyMjFBNEMzM0YwMEVCMTk5RCAvKiBHUFVMZWdhY3lCdWZmZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gR1BVTGVnYWN5QnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxMkZG
OTAzMjFBNEMzM0YwMEVCMTk5RCAvKiBHUFVMZWdhY3lDb21tYW5kQnVmZmVyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEdQVUxlZ2FjeUNvbW1hbmRCdWZmZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkzMTJGRjkwNDIxQTRDMzNGMDBFQjE5OUQgLyogR1BVTGVnYWN5VGV4dHVy
ZURlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVTGVnYWN5VGV4dHVyZURlc2NyaXB0b3Iu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzEyRkY5MDUyMUE0QzMzRjAwRUIxOTlE
IC8qIEdQVUxlZ2FjeUxpYnJhcnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR1BVTGVnYWN5TGli
cmFyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxMkZGOTA2MjFBNEMzM0Yw
MEVCMTk5RCAvKiBHUFVMZWdhY3lDb21wdXRlQ29tbWFuZEVuY29kZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gR1BVTGVnYWN5Q29tcHV0ZUNvbW1hbmRFbmNvZGVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMzEyRkY5MDcyMUE0QzMzRjAwRUIxOTlEIC8qIEdQVUxlZ2FjeURy
YXdhYmxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdQVUxlZ2FjeURyYXdhYmxlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzEyRkY5MDgyMUE0QzMzRjAwRUIxOTlEIC8qIEdQ
VUxlZ2FjeURlcHRoU3RlbmNpbERlc2NyaXB0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR1BV
TGVnYWN5RGVwdGhTdGVuY2lsRGVzY3JpcHRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTMxMkZGOTA5MjFBNEMzM0YwMEVCMTk5RCAvKiBHUFVMZWdhY3lSZW5kZXJQYXNzRGVw
dGhBdHRhY2htZW50RGVzY3JpcHRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHUFVMZWdhY3lS
ZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTMxMkZGOTBBMjFBNEMzM0YwMEVCMTk5RCAvKiBHUFVMZWdhY3lSZW5kZXJQ
YXNzQXR0YWNobWVudERlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVTGVnYWN5UmVuZGVy
UGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTMxMkZGOTBCMjFBNEMzM0YwMEVCMTk5RCAvKiBHUFVMZWdhY3lSZW5kZXJQaXBlbGluZUNvbG9y
QXR0YWNobWVudERlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVTGVnYWN5UmVuZGVyUGlw
ZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTMxMkZGOTBDMjFBNEMzM0YwMEVCMTk5RCAvKiBHUFVMZWdhY3lMaWJyYXJ5LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEdQVUxlZ2FjeUxpYnJhcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMzEyRkY5MEQyMUE0QzMzRjAwRUIxOTlEIC8qIEdQVUxlZ2FjeVJlbmRlclBhc3NBdHRh
Y2htZW50RGVzY3JpcHRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHUFVMZWdhY3lSZW5kZXJQ
YXNzQXR0YWNobWVudERlc2NyaXB0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkzMTJGRjkwRTIxQTRDMzNGMDBFQjE5OUQgLyogR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVTdGF0
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBHUFVMZWdhY3lSZW5kZXJQaXBlbGluZVN0YXRlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxMkZGOTBGMjFBNEMzM0YwMEVCMTk5RCAvKiBHUFVM
ZWdhY3lDb21tYW5kUXVldWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR1BVTGVnYWN5Q29tbWFu
ZFF1ZXVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzEyRkY5MTAyMUE0QzMz
RjAwRUIxOTlEIC8qIEdQVUxlZ2FjeUZ1bmN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUxlZ2Fj
eUZ1bmN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxMzE3MTU0MUZCMDc5
RDEwMDhEOTFGQyAvKiBDYW52YXNCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IENhbnZhc0Jhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzEzMTcxNTcx
RkIwOTY5RTAwOEQ5MUZDIC8qIENhbnZhc0Jhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gQ2FudmFzQmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTMxMzU5MTAwMUU3RERDNjAwMEYzMDYzMCAvKiBSVENJY2VDb25uZWN0aW9uU3RhdGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUlRDSWNlQ29ubmVjdGlvblN0YXRlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02ODgxLDYzICs2OTc3LDI0IEBACiAJCTMx
NEJFM0E0MUIzMTAzRkIwMDE0MTk4MiAvKiBOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmFtZWRJbWFnZUdlbmVyYXRlZElt
YWdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzE0QkUzQTUxQjMxMDNGQjAw
MTQxOTgyIC8qIE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMzE1NTc0Q0MyMThGNjZEMDAwRDg4RjY2IC8qIFBvaW50ZXJFdmVudElP
Uy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQb2ludGVyRXZlbnRJ
T1MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTZCREI4NDFFNkUwQTIxMDBE
RTBENUEgLyogR1BVTGVnYWN5RGV2aWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEdQVUxlZ2FjeURldmljZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTMxNkJEQjg1MUU2RTBBMjEwMERFMEQ1QSAvKiBHUFVMZWdhY3lEZXZpY2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVTGVnYWN5RGV2aWNlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTMxNkJEQjg4MUU2RTE0MUMwMERFMEQ1QSAvKiBHUFVMZWdhY3lE
ZXZpY2VNZXRhbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQ
VUxlZ2FjeURldmljZU1ldGFsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTZC
REI4QTFFNkUxNTMwMDBERTBENUEgLyogV2ViTWV0YWxMYXllci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJNZXRhbExheWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTMxNkJEQjkyMUU3MEM4OTcwMERFMEQ1QSAvKiBHUFVMZWdhY3lGdW5jdGlvbi5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHUFVMZWdhY3lGdW5jdGlvbi5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxNkJEQjkzMUU3MEM4OTcwMERFMEQ1
QSAvKiBHUFVMZWdhY3lGdW5jdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBHUFVMZWdhY3lGdW5jdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTZC
REI5NjFFNzBDQTI0MDBERTBENUEgLyogR1BVTGVnYWN5RnVuY3Rpb25NZXRhbC5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVUxlZ2FjeUZ1bmN0aW9uTWV0YWwu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxNkJEQjk4MUU3MENCQkYwMERFMEQ1
QSAvKiBHUFVMZWdhY3lMaWJyYXJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEdQVUxlZ2FjeUxpYnJhcnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQkzMTZCREI5OTFFNzBDQkJGMDBERTBENUEgLyogR1BVTGVnYWN5TGlicmFyeS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVMZWdhY3lMaWJyYXJ5Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTMxNkJEQjlDMUU3MENEOTAwMERFMEQ1QSAvKiBHUFVMZWdhY3lM
aWJyYXJ5TWV0YWwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBH
UFVMZWdhY3lMaWJyYXJ5TWV0YWwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMx
NkJEQkE1MUU3MUZBNkYwMERFMEQ1QSAvKiBHUFVMZWdhY3lCdWZmZXJNZXRhbC5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVUxlZ2FjeUJ1ZmZlck1ldGFsLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTZCREJBNzFFNzFGQTkzMDBERTBENUEg
LyogR1BVTGVnYWN5QnVmZmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEdQVUxlZ2FjeUJ1ZmZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMx
NkJEQkE4MUU3MUZBOTMwMERFMEQ1QSAvKiBHUFVMZWdhY3lCdWZmZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVTGVnYWN5QnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTMxNkJEQkFGMUU3MzU0QkIwMERFMEQ1QSAvKiBHUFVMZWdhY3lUZXh0dXJl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdQVUxlZ2FjeVRleHR1
cmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTZCREJCMDFFNzM1NEJCMDBE
RTBENUEgLyogR1BVTGVnYWN5VGV4dHVyZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBHUFVMZWdhY3lUZXh0dXJlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMx
NkJEQkIzMUU3MzU3QjAwMERFMEQ1QSAvKiBHUFVMZWdhY3lUZXh0dXJlRGVzY3JpcHRvck1ldGFs
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVTGVnYWN5VGV4
dHVyZURlc2NyaXB0b3JNZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzE2
QkRCQjUxRTczNTdDQjAwREUwRDVBIC8qIEdQVUxlZ2FjeVRleHR1cmVEZXNjcmlwdG9yLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdQVUxlZ2FjeVRleHR1cmVEZXNj
cmlwdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzE2QkRCQjYxRTczNTdD
QjAwREUwRDVBIC8qIEdQVUxlZ2FjeVRleHR1cmVEZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUxlZ2FjeVRleHR1cmVEZXNjcmlwdG9yLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxNkJEQkI5MUU3Mzg4MDYwMERFMEQ1QSAvKiBHUFVMZWdh
Y3lDb21tYW5kUXVldWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
R1BVTGVnYWN5Q29tbWFuZFF1ZXVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
MzE2QkRCQkExRTczODgwNjAwREUwRDVBIC8qIEdQVUxlZ2FjeUNvbW1hbmRRdWV1ZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVMZWdhY3lDb21tYW5kUXVldWUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzE2QkRCQkQxRTczODgxMzAwREUwRDVBIC8qIEdQ
VUxlZ2FjeUNvbW1hbmRRdWV1ZU1ldGFsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gR1BVTGVnYWN5Q29tbWFuZFF1ZXVlTWV0YWwubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTMxNkJEQkM0MUU3NUVFMjQwMERFMEQ1QSAvKiBHUFVMZWdhY3lDb21t
YW5kQnVmZmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdQVUxl
Z2FjeUNvbW1hbmRCdWZmZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTZC
REJDNTFFNzVFRTI0MDBERTBENUEgLyogR1BVTGVnYWN5Q29tbWFuZEJ1ZmZlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVMZWdhY3lDb21tYW5kQnVmZmVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxNkJEQkM2MUU3NUVFM0QwMERFMEQ1QSAvKiBHUFVM
ZWdhY3lDb21tYW5kQnVmZmVyTWV0YWwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBHUFVMZWdhY3lDb21tYW5kQnVmZmVyTWV0YWwubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTMxNkJEQkM5MUU3NUYxNjIwMERFMEQ1QSAvKiBHUFVMZWdhY3lEcmF3
YWJsZU1ldGFsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR1BV
TGVnYWN5RHJhd2FibGVNZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzE2
QkRCQ0ExRTc1RjE3NjAwREUwRDVBIC8qIEdQVUxlZ2FjeURyYXdhYmxlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdQVUxlZ2FjeURyYXdhYmxlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzE2QkRCQ0IxRTc1RjE3NjAwREUwRDVBIC8qIEdQVUxl
Z2FjeURyYXdhYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUxlZ2Fj
eURyYXdhYmxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxNkJEQkQwMUU3NUY3
QUUwMERFMEQ1QSAvKiBHUFVMZWdhY3lSZW5kZXJQYXNzRGVzY3JpcHRvci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHUFVMZWdhY3lSZW5kZXJQYXNzRGVzY3JpcHRv
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxNkJEQkQxMUU3NUY3QUUwMERF
MEQ1QSAvKiBHUFVMZWdhY3lSZW5kZXJQYXNzRGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBHUFVMZWdhY3lSZW5kZXJQYXNzRGVzY3JpcHRvci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkzMTZCREJENDFFNzVGN0NBMDBERTBENUEgLyogR1BVTGVn
YWN5UmVuZGVyUGFzc0Rlc2NyaXB0b3JNZXRhbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IEdQVUxlZ2FjeVJlbmRlclBhc3NEZXNjcmlwdG9yTWV0YWwubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxNkJEQkQ2MUU3NjEyQzQwMERFMEQ1QSAvKiBH
UFVMZWdhY3lSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvck1ldGFsLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVTGVnYWN5UmVuZGVyUGFzc0Nv
bG9yQXR0YWNobWVudERlc2NyaXB0b3JNZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJMzE2QkRCRDgxRTc2MTJEQjAwREUwRDVBIC8qIEdQVUxlZ2FjeVJlbmRlclBhc3NDb2xv
ckF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEdQVUxlZ2FjeVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzE2QkRCRDkxRTc2MTJEQjAwREUwRDVBIC8q
IEdQVUxlZ2FjeVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUxlZ2FjeVJlbmRlclBhc3NDb2xvckF0dGFjaG1l
bnREZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxNkJEQkRDMUU3
NjEzNkMwMERFMEQ1QSAvKiBHUFVMZWdhY3lSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3Iu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR1BVTGVnYWN5UmVuZGVy
UGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJMzE2QkRCREQxRTc2MTM2QzAwREUwRDVBIC8qIEdQVUxlZ2FjeVJlbmRlclBhc3NBdHRhY2ht
ZW50RGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVMZWdh
Y3lSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMzE2QkRCRTAxRTc2MUNCNTAwREUwRDVBIC8qIEdQVUxlZ2FjeVJlbmRlclBhc3NB
dHRhY2htZW50RGVzY3JpcHRvck1ldGFsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gR1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yTWV0YWwu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxNkJEQkUyMUU3NjFFRkYwMERFMEQ1
QSAvKiBHUFVMZWdhY3lSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHUFVMZWdhY3lSZW5kZXJQYXNzRGVw
dGhBdHRhY2htZW50RGVzY3JpcHRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTMxNkJEQkUzMUU3NjFFRkYwMERFMEQ1QSAvKiBHUFVMZWdhY3lSZW5kZXJQYXNzRGVwdGhBdHRh
Y2htZW50RGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVM
ZWdhY3lSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkzMTZCREJFNjFFNzYxRjI3MDBERTBENUEgLyogR1BVTGVnYWN5UmVu
ZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3JNZXRhbC5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVUxlZ2FjeVJlbmRlclBhc3NEZXB0aEF0dGFjaG1l
bnREZXNjcmlwdG9yTWV0YWwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxNkJE
QkU4MUU3NjI0NDMwMERFMEQ1QSAvKiBHUFVMZWdhY3lSZW5kZXJDb21tYW5kRW5jb2Rlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHUFVMZWdhY3lSZW5kZXJDb21t
YW5kRW5jb2Rlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxNkJEQkU5MUU3
NjI0NDQwMERFMEQ1QSAvKiBHUFVMZWdhY3lSZW5kZXJDb21tYW5kRW5jb2Rlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVMZWdhY3lSZW5kZXJDb21tYW5kRW5jb2Rlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTZCREJFQzFFNzYyNDZCMDBERTBENUEg
LyogR1BVTGVnYWN5UmVuZGVyQ29tbWFuZEVuY29kZXJNZXRhbC5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVUxlZ2FjeVJlbmRlckNvbW1hbmRFbmNvZGVyTWV0
YWwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxNkJEQkVFMUU3NjI5MUIwMERF
MEQ1QSAvKiBHUFVMZWdhY3lEZXB0aFN0ZW5jaWxTdGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBHUFVMZWdhY3lEZXB0aFN0ZW5jaWxTdGF0ZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxNkJEQkVGMUU3NjI5MUIwMERFMEQ1QSAvKiBHUFVM
ZWdhY3lEZXB0aFN0ZW5jaWxTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBHUFVMZWdhY3lEZXB0aFN0ZW5jaWxTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkzMTZCREJGMjFFNzYyOTM3MDBERTBENUEgLyogR1BVTGVnYWN5RGVwdGhTdGVuY2lsU3Rh
dGVNZXRhbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVUxl
Z2FjeURlcHRoU3RlbmNpbFN0YXRlTWV0YWwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTMxNkJEQkY0MUU3NjJBQ0QwMERFMEQ1QSAvKiBHUFVMZWdhY3lEZXB0aFN0ZW5jaWxEZXNj
cmlwdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdQVUxlZ2Fj
eURlcHRoU3RlbmNpbERlc2NyaXB0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQkzMTZCREJGNTFFNzYyQUNEMDBERTBENUEgLyogR1BVTGVnYWN5RGVwdGhTdGVuY2lsRGVzY3Jp
cHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVMZWdhY3lEZXB0aFN0
ZW5jaWxEZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxNkJEQkY4
MUU3NjJCRUYwMERFMEQ1QSAvKiBHUFVMZWdhY3lEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yTWV0YWwu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVMZWdhY3lEZXB0
aFN0ZW5jaWxEZXNjcmlwdG9yTWV0YWwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTMxNkJEQkZBMUU3NjJEMDQwMERFMEQ1QSAvKiBHUFVMZWdhY3lFbnVtcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVMZWdhY3lFbnVtcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQkzMTZCREJGQzFFNzYyRjU3MDBERTBENUEgLyogR1BVTGVnYWN5UmVuZGVy
UGlwZWxpbmVEZXNjcmlwdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTMxNkJEQkZEMUU3NjJGNTcwMERFMEQ1QSAvKiBHUFVMZWdhY3lSZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
R1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTMxNkJEQkZFMUU3NjJGNTcwMERFMEQ1QSAvKiBHUFVMZWdhY3lSZW5kZXJQaXBl
bGluZVN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdQVUxl
Z2FjeVJlbmRlclBpcGVsaW5lU3RhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQkzMTZCREJGRjFFNzYyRjU3MDBERTBENUEgLyogR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVTdGF0
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVMZWdhY3lSZW5kZXJQaXBl
bGluZVN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxNkJEQzA0MUU3NjJG
N0UwMERFMEQ1QSAvKiBHUFVMZWdhY3lSZW5kZXJQaXBlbGluZURlc2NyaXB0b3JNZXRhbC5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVUxlZ2FjeVJlbmRlclBp
cGVsaW5lRGVzY3JpcHRvck1ldGFsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkz
MTZCREMwNTFFNzYyRjdFMDBERTBENUEgLyogR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVTdGF0ZU1l
dGFsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVTGVnYWN5
UmVuZGVyUGlwZWxpbmVTdGF0ZU1ldGFsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQkzMTZCREMwODFFNzYzNDI3MDBERTBENUEgLyogR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVDb2xv
ckF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxNkJEQzA5MUU3NjM0MjcwMERFMEQ1
QSAvKiBHUFVMZWdhY3lSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVD
b2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTMxNkJEQzBBMUU3NjM0MzYwMERFMEQ1QSAvKiBHUFVMZWdhY3lSZW5kZXJQaXBlbGluZUNvbG9y
QXR0YWNobWVudERlc2NyaXB0b3JNZXRhbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IEdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3Jp
cHRvck1ldGFsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTZEQ0IxMjFFNzhC
RTQzMDAxQjVGODcgLyogUlRDT2ZmZXJBbnN3ZXJPcHRpb25zLmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBSVENPZmZlckFuc3dlck9wdGlvbnMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkzMTZEQ0IxNzFFNzhDMzMwMDAxQjVGODcgLyogUlRDUnRwVHJhbnNjZWl2ZXJEaXJl
Y3Rpb24uaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFJUQ1J0cFRyYW5zY2VpdmVyRGlyZWN0aW9uLmlkbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTcyMjEsMTQgKzcyNzgsOSBAQAogCQkzODFFMzVFNzFFOEUx
RTBBMDA0M0U4NTAgLyogV2ViR1BVQ29tcHV0ZUNvbW1hbmRFbmNvZGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVUNvbXB1dGVDb21tYW5kRW5jb2Rlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzODFFMzVFODFFOEUxRTE2MDA0M0U4NTAgLyogV2Vi
R1BVQ29tcHV0ZUNvbW1hbmRFbmNvZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdlYkdQVUNvbXB1dGVDb21tYW5kRW5jb2Rlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTM4MUUzNUU5MUU4RTIwQUMwMDQzRTg1MCAvKiBHUFVMZWdhY3lDb21w
dXRlQ29tbWFuZEVuY29kZXJNZXRhbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IEdQVUxlZ2FjeUNvbXB1dGVDb21tYW5kRW5jb2Rlck1ldGFsLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQkzODFFMzVFQTFFOEUyMEQ5MDA0M0U4NTAgLyogR1BVTGVn
YWN5Q29tcHV0ZUNvbW1hbmRFbmNvZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEdQVUxlZ2FjeUNvbXB1dGVDb21tYW5kRW5jb2Rlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQkzODFFMzVFQjFFOEUyMTk5MDA0M0U4NTAgLyogR1BVTGVnYWN5Q29tcHV0ZUNv
bW1hbmRFbmNvZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdQ
VUxlZ2FjeUNvbXB1dGVDb21tYW5kRW5jb2Rlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTM4MUUzNUVDMUU4RTIzRTQwMDQzRTg1MCAvKiBHUFVMZWdhY3lDb21wdXRlUGlwZWxp
bmVTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVMZWdhY3lDb21w
dXRlUGlwZWxpbmVTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzODFFMzVF
RDFFOEUyNDdBMDA0M0U4NTAgLyogR1BVTGVnYWN5Q29tcHV0ZVBpcGVsaW5lU3RhdGUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR1BVTGVnYWN5Q29tcHV0ZVBpcGVs
aW5lU3RhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzODFFMzVFRTFFOEUy
NENCMDA0M0U4NTAgLyogR1BVTGVnYWN5Q29tcHV0ZVBpcGVsaW5lU3RhdGVNZXRhbC5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVUxlZ2FjeUNvbXB1dGVQaXBl
bGluZVN0YXRlTWV0YWwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM4MUUzNUVG
MUU4RTNEN0YwMDQzRTg1MCAvKiBXZWJHUFVTaXplLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBXZWJHUFVTaXplLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzgxRTM1RjUx
RThFNEM0MjAwNDNFODUwIC8qIFdlYkdQVVNpemUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViR1BVU2l6ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzODFF
MzVGNjFFOEU0RDBFMDA0M0U4NTAgLyogR1BVTGVnYWN5U2l6ZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBHUFVMZWdhY3lTaXplLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTM4N0FFOTU4MUU4RTkyRUYwMDAwREU5NiAvKiBKU1dlYkdQVVNpemUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXZWJHUFVTaXplLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzg3QUU5NTkxRThFOTJFRjAwMDBERTk2IC8qIEpTV2Vi
R1BVU2l6ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dlYkdQVVNpemUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzhGMjNBQUUxRThFODNDNDAwQ0U0NkY1
IC8qIEpTV2ViR1BVQ29tcHV0ZUNvbW1hbmRFbmNvZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2ViR1BVQ29tcHV0ZUNvbW1hbmRFbmNvZGVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzODE3LDIxICsxMzg2OSwxNCBAQAogCQlEMDQ1
QUQyMTIxNjgyNDc0MDAwQTZFOUIgLyogV2ViTWV0YWxCdWZmZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV2ViTWV0YWxCdWZmZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlE
MDQ1QUQyMjIxNjgyNDc0MDAwQTZFOUIgLyogV2ViTWV0YWxDb21tYW5kQnVmZmVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdlYk1ldGFsQ29tbWFuZEJ1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlEMDQ1QUQyMzIxNjgyNDc1MDAwQTZFOUIgLyogV2ViTWV0YWxDb21tYW5kUXVldWUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViTWV0YWxDb21tYW5kUXVldWUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlEMDQ2RkI2NTIxOEQwNzNDMDBDQjhGNjIgLyogR1BVUmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDQ2RkI2NzIxOEQx
ODAzMDBDQjhGNjIgLyogR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJRDA0NkZCNjgyMThEMThDRDAwQ0I4RjYyIC8qIEdQVVBpcGVsaW5lRGVzY3JpcHRvckJh
c2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlEMDU3M0Q0MjIxN0VCODFFMDBEMUJFOTEgLyogR1BVTGVn
YWN5VGV4dHVyZU1ldGFsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gR1BVTGVnYWN5VGV4dHVyZU1ldGFsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlEMDVDRUQyNzBBNDBCQjJDMDBDNUFGMzggLyogRm9ybWF0QmxvY2tDb21tYW5kLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb3JtYXRCbG9ja0NvbW1hbmQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMDVDRUQyODBBNDBCQjJDMDBDNUFGMzgg
LyogRm9ybWF0QmxvY2tDb21tYW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBGb3JtYXRCbG9ja0NvbW1hbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDA2
MEQ4ODQyMTgyNUQ1RjAwMzM5MzE4IC8qIFdlYkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IFdlYkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlEMDYwRDg4NzIxODI2OTcwMDAzMzkzMTggLyogV2ViR1BVU2hhZGVyTW9k
dWxlRGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlw
dG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwNjBEODg4MjE4MjgwQzEwMDMz
OTMxOCAvKiBHUFVTaGFkZXJNb2R1bGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVU2hhZGVyTW9kdWxl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwNjBEODg5MjE4MjgwQzEwMDMzOTMx
OCAvKiBHUFVTaGFkZXJNb2R1bGVNZXRhbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVVNo
YWRlck1vZHVsZU1ldGFsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMDYxNUZD
QzIxN0ZFNUM2MDA4QTQ4QTggLyogV2ViR1BVU2hhZGVyTW9kdWxlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYkdQVVNoYWRlck1vZHVsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMDYx
NUZDRDIxN0ZFNUM2MDA4QTQ4QTggLyogV2ViR1BVU2hhZGVyTW9kdWxlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdlYkdQVVNoYWRlck1vZHVsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUQwNjE1RkNFMjE3RkU1QzYwMDhBNDhBOCAvKiBXZWJHUFVTaGFkZXJNb2R1bGUuaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IFdlYkdQVVNoYWRlck1vZHVsZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUQwNjE1RkNGMjE3RkYxODUwMDhBNDhBOCAvKiBHUFVEZXZpY2UuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gR1BVRGV2aWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwNjE1RkQxMjE3
RkYxRTEwMDhBNDhBOCAvKiBHUFVEZXZpY2VNZXRhbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IEdQVURldmljZU1ldGFsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMDZDMEQ4
RDBDRkQxMTQ2MDA2NUY0M0YgLyogUmVtb3ZlRm9ybWF0Q29tbWFuZC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdmVGb3JtYXRDb21tYW5kLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUQwNkMwRDhFMENGRDExNDYwMDY1RjQzRiAvKiBSZW1vdmVGb3JtYXRD
b21tYW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW92ZUZv
cm1hdENvbW1hbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMDdERUFCNzBB
MzY1NTRBMDBDQTMwRjggLyogSW5zZXJ0TGlzdENvbW1hbmQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc2VydExpc3RDb21tYW5kLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTEzODQzLDkgKzEzODg4LDYgQEAKIAkJRDA5M0QyMjUyMTc5NTFE
NDAwMzI5MjE3IC8qIFdlYkdQVVJlbmRlcmluZ0NvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vi
R1BVUmVuZGVyaW5nQ29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMDkz
RDIyNzIxNzk1MUQ0MDAzMjkyMTcgLyogV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
V2ViR1BVUmVuZGVyaW5nQ29udGV4dC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUQwOTNEMjI5MjE3OTU0MTYwMDMyOTIxNyAvKiBXZWJHUFVSZW5kZXJpbmdDb250ZXh0LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQVVJlbmRlcmluZ0NvbnRleHQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQlEMDk3MjdCNjIxODdGNDQzMDA5NDJGM0EgLyogR1BVU3dhcENo
YWluTWV0YWwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVTd2FwQ2hhaW5NZXRhbC5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDA5NzI3QzIyMThBNDcyOTAwOTQyRjNBIC8q
IEdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVU2hhZGVyTW9k
dWxlRGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDk3MjdDQTIx
OEJEN0E1MDA5NDJGM0EgLyogR1BVRGV2aWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdQVURl
dmljZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwQTIwRDU0MjA5MkEwQTYw
MEUwQzI1OSAvKiBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlEMEEyMEQ1NjIwOTJBMEE2MDBFMEMyNTkgLyogV2ViR0xDb21w
cmVzc2VkVGV4dHVyZUFTVEMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFTVEMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlEMEEzQTczMDE0MDVBMzk4MDBGQjhFRDMgLyogUmVzb3VyY2VMb2FkZXJPcHRpb25z
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291cmNlTG9hZGVyT3B0aW9u
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTM4NjUsNyArMTM5MDcsNiBAQAog
CQlEMEM0MTlGNzIxODQwNERBMDA5RUMxREUgLyogV2ViR1BVUmVuZGVyUGlwZWxpbmUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2ViR1BVUmVuZGVyUGlwZWxpbmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRDBDNDE5RjgyMTg0MDREQTAwOUVDMURFIC8qIFdlYkdQVVJlbmRlclBpcGVsaW5l
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQVVJlbmRlclBpcGVsaW5lLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDBDNDE5RjkyMTg0MDREQTAwOUVDMURFIC8qIFdlYkdQ
VVJlbmRlclBpcGVsaW5lLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVSZW5kZXJQaXBlbGluZS5pZGw7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwQzQxOUZCMjE4NDBGNkMwMDlFQzFERSAvKiBHUFVS
ZW5kZXJQaXBlbGluZU1ldGFsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVUmVuZGVyUGlw
ZWxpbmVNZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDBDQUFFOTgyMTY4
MjRBNjAwMUM5MUM3IC8qIFdlYk1ldGFsQnVmZmVyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJNZXRhbEJ1ZmZlci5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwQ0FBRTlBMjE2ODI0QTYwMDFDOTFD
NyAvKiBXZWJNZXRhbENvbW1hbmRCdWZmZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYk1ldGFsQ29tbWFuZEJ1ZmZl
ci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwQ0FBRTlCMjE2ODI0QTcwMDFD
OTFDNyAvKiBXZWJNZXRhbENvbW1hbmRRdWV1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJNZXRhbENv
bW1hbmRRdWV1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTM4NzgsMTQgKzEz
OTE5LDYgQEAKIAkJRDBFQUNGNzYyMTkzNzIyODAwMEZBNzVDIC8qIFdlYkdQVUNvbW1hbmRCdWZm
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVQ29tbWFuZEJ1ZmZlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlEMEVBQ0Y3NzIxOTM3MjI4MDAwRkE3NUMgLyogV2ViR1BVQ29tbWFu
ZEJ1ZmZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVDb21tYW5kQnVmZmVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDBFQUNGNzgyMTkzNzIyODAwMEZBNzVDIC8q
IFdlYkdQVUNvbW1hbmRCdWZmZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdQVUNvbW1hbmRCdWZmZXIuaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEVBQ0Y3QjIxOTM4MjUzMDAwRkE3NUMgLyog
R1BVQ29tbWFuZEJ1ZmZlck1ldGFsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVQ29tbWFu
ZEJ1ZmZlck1ldGFsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEVBQ0Y3QzIx
OTM4MkFGMDAwRkE3NUMgLyogR1BVU3dhcENoYWluLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEdQVVN3YXBD
aGFpbi5oOyBwYXRoID0gTW9kdWxlcy93ZWJncHUvR1BVU3dhcENoYWluLmg7IHNvdXJjZVRyZWUg
PSBTT1VSQ0VfUk9PVDsgfTsKLQkJRDBFQUNGN0QyMTkzODJCMDAwMEZBNzVDIC8qIEdQVVJlbmRl
clBpcGVsaW5lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEdQVVJlbmRlclBpcGVsaW5lLmg7IHBhdGggPSBN
b2R1bGVzL3dlYmdwdS9HUFVSZW5kZXJQaXBlbGluZS5oOyBzb3VyY2VUcmVlID0gU09VUkNFX1JP
T1Q7IH07Ci0JCUQwRUFDRjdFMjE5MzgyQjAwMDBGQTc1QyAvKiBHUFVDb21tYW5kQnVmZmVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IEdQVUNvbW1hbmRCdWZmZXIuaDsgcGF0aCA9IE1vZHVsZXMvd2ViZ3B1
L0dQVUNvbW1hbmRCdWZmZXIuaDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwotCQlEMEVB
Q0Y4MDIxOTM5MUVFMDAwRkE3NUMgLyogR1BVUXVldWVNZXRhbC5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IEdQVVF1ZXVlTWV0YWwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQw
RUFDRjgxMjE5MzkyMUEwMDBGQTc1QyAvKiBHUFVRdWV1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVR
dWV1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMEVBQ0Y4MjIxOTNBQjM4MDAw
RkE3NUMgLyogR1BVVGV4dHVyZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVUZXh0dXJlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwRUFDRjgzMjE5M0FCMzgwMDBGQTc1QyAvKiBHUFVU
ZXh0dXJlTWV0YWwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVUZXh0dXJlTWV0YWwubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwRUFDRjg0MjE5M0IwMkUwMDBGQTc1QyAv
KiBXZWJHUFVUZXh0dXJlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVVRleHR1cmUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDBFQUNGODUyMTkzQjAyRTAwMEZBNzVDIC8qIFdlYkdQ
VVRleHR1cmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViR1BVVGV4dHVyZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwRUFDRjg2MjE5M0IwMkUwMDBGQTc1QyAvKiBXZWJH
UFVUZXh0dXJlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVUZXh0dXJlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTEzODk0LDcgKzEzOTI3LDYgQEAKIAkJRDBFQUNGODkyMTkzRUU0RTAwMEZB
NzVDIC8qIFdlYkdQVVRleHR1cmVWaWV3LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVUZXh0dXJlVmlldy5pZGw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwRUFDRkFEMjE5RTMwRkQwMDBGQTc1QyAv
KiBXZWJHUFVUZXh0dXJlRm9ybWF0RW51bS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVUZXh0dXJl
Rm9ybWF0RW51bS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMEVBQ0ZBRTIxOUUz
MEZEMDAwRkE3NUMgLyogV2ViR1BVVGV4dHVyZUZvcm1hdEVudW0uaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdQVVRl
eHR1cmVGb3JtYXRFbnVtLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBFQUNG
QjIyMTlFNEYxNDAwMEZBNzVDIC8qIEdQVVRleHR1cmVGb3JtYXRFbnVtLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEdQVVRleHR1cmVGb3JtYXRFbnVtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUQwRURBNzcyMTQzRTMwM0MwMDI4RTM4MyAvKiBDYWNoZWRSYXdSZXNvdXJjZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWNoZWRSYXdSZXNvdXJjZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwRURBNzczMTQzRTMwM0MwMDI4RTM4MyAvKiBD
YWNoZWRSYXdSZXNvdXJjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWNo
ZWRSYXdSZXNvdXJjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMEZGMkE1QjEx
RjhDNDVBMDA3RTc0RTAgLyogUGluZ0xvYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBQaW5nTG9hZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTE3MTU0LDYgKzE3MTg2LDEwMSBAQAogCQkJcGF0aCA9IHdvcmtlcnM7CiAJCQlzb3VyY2VU
cmVlID0gIjxncm91cD4iOwogCQl9OworCQkzMTJGRjhDNjIxQTRDMzAyMDBFQjE5OUQgLyogY29j
b2EgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTMxMkZG
OENDMjFBNEMzMjcwMEVCMTk5RCAvKiBHUFVDb21tYW5kQnVmZmVyTWV0YWwubW0gKi8sCisJCQkJ
MzEyRkY4QzkyMUE0QzMyNjAwRUIxOTlEIC8qIEdQVURldmljZU1ldGFsLm1tICovLAorCQkJCTMx
MkZGOEM3MjFBNEMzMjUwMEVCMTk5RCAvKiBHUFVRdWV1ZU1ldGFsLm1tICovLAorCQkJCTMxMkZG
OENEMjFBNEMzMjgwMEVCMTk5RCAvKiBHUFVSZW5kZXJQaXBlbGluZU1ldGFsLm1tICovLAorCQkJ
CTMxMkZGOENBMjFBNEMzMjYwMEVCMTk5RCAvKiBHUFVTaGFkZXJNb2R1bGVNZXRhbC5tbSAqLywK
KwkJCQkzMTJGRjhDQjIxQTRDMzI3MDBFQjE5OUQgLyogR1BVU3dhcENoYWluTWV0YWwubW0gKi8s
CisJCQkJMzEyRkY4QzgyMUE0QzMyNTAwRUIxOTlEIC8qIEdQVVRleHR1cmVNZXRhbC5tbSAqLywK
KwkJCSk7CisJCQluYW1lID0gY29jb2E7CisJCQlwYXRoID0gIk5ldyBHcm91cCI7CisJCQlzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQkzMTJGRjhDRTIxQTRDMzNGMDBFQjE5OUQgLyog
bGVnYWN5ICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkz
MTJGRjhFOTIxQTRDMzNGMDBFQjE5OUQgLyogY29jb2EgKi8sCisJCQkJMzEyRkY4RTAyMUE0QzMz
RjAwRUIxOTlEIC8qIEdQVUxlZ2FjeUJ1ZmZlci5jcHAgKi8sCisJCQkJMzEyRkY5MDIyMUE0QzMz
RjAwRUIxOTlEIC8qIEdQVUxlZ2FjeUJ1ZmZlci5oICovLAorCQkJCTMxMkZGOTAzMjFBNEMzM0Yw
MEVCMTk5RCAvKiBHUFVMZWdhY3lDb21tYW5kQnVmZmVyLmNwcCAqLywKKwkJCQkzMTJGRjhERTIx
QTRDMzNGMDBFQjE5OUQgLyogR1BVTGVnYWN5Q29tbWFuZEJ1ZmZlci5oICovLAorCQkJCTMxMkZG
OTBGMjFBNEMzM0YwMEVCMTk5RCAvKiBHUFVMZWdhY3lDb21tYW5kUXVldWUuY3BwICovLAorCQkJ
CTMxMkZGOEQ5MjFBNEMzM0YwMEVCMTk5RCAvKiBHUFVMZWdhY3lDb21tYW5kUXVldWUuaCAqLywK
KwkJCQkzMTJGRjkwNjIxQTRDMzNGMDBFQjE5OUQgLyogR1BVTGVnYWN5Q29tcHV0ZUNvbW1hbmRF
bmNvZGVyLmNwcCAqLywKKwkJCQkzMTJGRjhFNDIxQTRDMzNGMDBFQjE5OUQgLyogR1BVTGVnYWN5
Q29tcHV0ZUNvbW1hbmRFbmNvZGVyLmggKi8sCisJCQkJMzEyRkY4RTgyMUE0QzMzRjAwRUIxOTlE
IC8qIEdQVUxlZ2FjeUNvbXB1dGVQaXBlbGluZVN0YXRlLmNwcCAqLywKKwkJCQkzMTJGRjhENzIx
QTRDMzNGMDBFQjE5OUQgLyogR1BVTGVnYWN5Q29tcHV0ZVBpcGVsaW5lU3RhdGUuaCAqLywKKwkJ
CQkzMTJGRjkwODIxQTRDMzNGMDBFQjE5OUQgLyogR1BVTGVnYWN5RGVwdGhTdGVuY2lsRGVzY3Jp
cHRvci5jcHAgKi8sCisJCQkJMzEyRkY4RDIyMUE0QzMzRjAwRUIxOTlEIC8qIEdQVUxlZ2FjeURl
cHRoU3RlbmNpbERlc2NyaXB0b3IuaCAqLywKKwkJCQkzMTJGRjhFMTIxQTRDMzNGMDBFQjE5OUQg
LyogR1BVTGVnYWN5RGVwdGhTdGVuY2lsU3RhdGUuY3BwICovLAorCQkJCTMxMkZGOEU2MjFBNEMz
M0YwMEVCMTk5RCAvKiBHUFVMZWdhY3lEZXB0aFN0ZW5jaWxTdGF0ZS5oICovLAorCQkJCTMxMkZG
OEUyMjFBNEMzM0YwMEVCMTk5RCAvKiBHUFVMZWdhY3lEZXZpY2UuY3BwICovLAorCQkJCTMxMkZG
OEQzMjFBNEMzM0YwMEVCMTk5RCAvKiBHUFVMZWdhY3lEZXZpY2UuaCAqLywKKwkJCQkzMTJGRjkw
NzIxQTRDMzNGMDBFQjE5OUQgLyogR1BVTGVnYWN5RHJhd2FibGUuY3BwICovLAorCQkJCTMxMkZG
OERCMjFBNEMzM0YwMEVCMTk5RCAvKiBHUFVMZWdhY3lEcmF3YWJsZS5oICovLAorCQkJCTMxMkZG
OERDMjFBNEMzM0YwMEVCMTk5RCAvKiBHUFVMZWdhY3lFbnVtcy5oICovLAorCQkJCTMxMkZGOEQ4
MjFBNEMzM0YwMEVCMTk5RCAvKiBHUFVMZWdhY3lGdW5jdGlvbi5jcHAgKi8sCisJCQkJMzEyRkY5
MTAyMUE0QzMzRjAwRUIxOTlEIC8qIEdQVUxlZ2FjeUZ1bmN0aW9uLmggKi8sCisJCQkJMzEyRkY5
MDUyMUE0QzMzRjAwRUIxOTlEIC8qIEdQVUxlZ2FjeUxpYnJhcnkuY3BwICovLAorCQkJCTMxMkZG
OTBDMjFBNEMzM0YwMEVCMTk5RCAvKiBHUFVMZWdhY3lMaWJyYXJ5LmggKi8sCisJCQkJMzEyRkY4
REQyMUE0QzMzRjAwRUIxOTlEIC8qIEdQVUxlZ2FjeVJlbmRlckNvbW1hbmRFbmNvZGVyLmNwcCAq
LywKKwkJCQkzMTJGRjhENjIxQTRDMzNGMDBFQjE5OUQgLyogR1BVTGVnYWN5UmVuZGVyQ29tbWFu
ZEVuY29kZXIuaCAqLywKKwkJCQkzMTJGRjkwRDIxQTRDMzNGMDBFQjE5OUQgLyogR1BVTGVnYWN5
UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmNwcCAqLywKKwkJCQkzMTJGRjkwQTIxQTRD
MzNGMDBFQjE5OUQgLyogR1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmgg
Ki8sCisJCQkJMzEyRkY5MDAyMUE0QzMzRjAwRUIxOTlEIC8qIEdQVUxlZ2FjeVJlbmRlclBhc3ND
b2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcCAqLywKKwkJCQkzMTJGRjhFMzIxQTRDMzNGMDBF
QjE5OUQgLyogR1BVTGVnYWN5UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaCAq
LywKKwkJCQkzMTJGRjkwOTIxQTRDMzNGMDBFQjE5OUQgLyogR1BVTGVnYWN5UmVuZGVyUGFzc0Rl
cHRoQXR0YWNobWVudERlc2NyaXB0b3IuY3BwICovLAorCQkJCTMxMkZGOEQxMjFBNEMzM0YwMEVC
MTk5RCAvKiBHUFVMZWdhY3lSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5oICov
LAorCQkJCTMxMkZGOEU1MjFBNEMzM0YwMEVCMTk5RCAvKiBHUFVMZWdhY3lSZW5kZXJQYXNzRGVz
Y3JpcHRvci5jcHAgKi8sCisJCQkJMzEyRkY4RkYyMUE0QzMzRjAwRUIxOTlEIC8qIEdQVUxlZ2Fj
eVJlbmRlclBhc3NEZXNjcmlwdG9yLmggKi8sCisJCQkJMzEyRkY4REEyMUE0QzMzRjAwRUIxOTlE
IC8qIEdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5jcHAg
Ki8sCisJCQkJMzEyRkY5MEIyMUE0QzMzRjAwRUIxOTlEIC8qIEdQVUxlZ2FjeVJlbmRlclBpcGVs
aW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oICovLAorCQkJCTMxMkZGOEQwMjFBNEMzM0Yw
MEVCMTk5RCAvKiBHUFVMZWdhY3lSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuY3BwICovLAorCQkJ
CTMxMkZGOEU3MjFBNEMzM0YwMEVCMTk5RCAvKiBHUFVMZWdhY3lSZW5kZXJQaXBlbGluZURlc2Ny
aXB0b3IuaCAqLywKKwkJCQkzMTJGRjkwMTIxQTRDMzNGMDBFQjE5OUQgLyogR1BVTGVnYWN5UmVu
ZGVyUGlwZWxpbmVTdGF0ZS5jcHAgKi8sCisJCQkJMzEyRkY5MEUyMUE0QzMzRjAwRUIxOTlEIC8q
IEdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lU3RhdGUuaCAqLywKKwkJCQkzMTJGRjhERjIxQTRDMzNG
MDBFQjE5OUQgLyogR1BVTGVnYWN5U2l6ZS5oICovLAorCQkJCTMxMkZGOEQ1MjFBNEMzM0YwMEVC
MTk5RCAvKiBHUFVMZWdhY3lUZXh0dXJlLmNwcCAqLywKKwkJCQkzMTJGRjhENDIxQTRDMzNGMDBF
QjE5OUQgLyogR1BVTGVnYWN5VGV4dHVyZS5oICovLAorCQkJCTMxMkZGOENGMjFBNEMzM0YwMEVC
MTk5RCAvKiBHUFVMZWdhY3lUZXh0dXJlRGVzY3JpcHRvci5jcHAgKi8sCisJCQkJMzEyRkY5MDQy
MUE0QzMzRjAwRUIxOTlEIC8qIEdQVUxlZ2FjeVRleHR1cmVEZXNjcmlwdG9yLmggKi8sCisJCQkp
OworCQkJcGF0aCA9IGxlZ2FjeTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJ
CTMxMkZGOEU5MjFBNEMzM0YwMEVCMTk5RCAvKiBjb2NvYSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdy
b3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJMzEyRkY4RkEyMUE0QzMzRjAwRUIxOTlEIC8qIEdQ
VUxlZ2FjeUJ1ZmZlck1ldGFsLm1tICovLAorCQkJCTMxMkZGOEY2MjFBNEMzM0YwMEVCMTk5RCAv
KiBHUFVMZWdhY3lDb21tYW5kQnVmZmVyTWV0YWwubW0gKi8sCisJCQkJMzEyRkY4RjEyMUE0QzMz
RjAwRUIxOTlEIC8qIEdQVUxlZ2FjeUNvbW1hbmRRdWV1ZU1ldGFsLm1tICovLAorCQkJCTMxMkZG
OEYzMjFBNEMzM0YwMEVCMTk5RCAvKiBHUFVMZWdhY3lDb21wdXRlQ29tbWFuZEVuY29kZXJNZXRh
bC5tbSAqLywKKwkJCQkzMTJGRjhGQjIxQTRDMzNGMDBFQjE5OUQgLyogR1BVTGVnYWN5Q29tcHV0
ZVBpcGVsaW5lU3RhdGVNZXRhbC5tbSAqLywKKwkJCQkzMTJGRjhFQTIxQTRDMzNGMDBFQjE5OUQg
LyogR1BVTGVnYWN5RGVwdGhTdGVuY2lsRGVzY3JpcHRvck1ldGFsLm1tICovLAorCQkJCTMxMkZG
OEY5MjFBNEMzM0YwMEVCMTk5RCAvKiBHUFVMZWdhY3lEZXB0aFN0ZW5jaWxTdGF0ZU1ldGFsLm1t
ICovLAorCQkJCTMxMkZGOEY4MjFBNEMzM0YwMEVCMTk5RCAvKiBHUFVMZWdhY3lEZXZpY2VNZXRh
bC5tbSAqLywKKwkJCQkzMTJGRjhFRTIxQTRDMzNGMDBFQjE5OUQgLyogR1BVTGVnYWN5RHJhd2Fi
bGVNZXRhbC5tbSAqLywKKwkJCQkzMTJGRjhFRDIxQTRDMzNGMDBFQjE5OUQgLyogR1BVTGVnYWN5
RnVuY3Rpb25NZXRhbC5tbSAqLywKKwkJCQkzMTJGRjhGMjIxQTRDMzNGMDBFQjE5OUQgLyogR1BV
TGVnYWN5TGlicmFyeU1ldGFsLm1tICovLAorCQkJCTMxMkZGOEVCMjFBNEMzM0YwMEVCMTk5RCAv
KiBHUFVMZWdhY3lSZW5kZXJDb21tYW5kRW5jb2Rlck1ldGFsLm1tICovLAorCQkJCTMxMkZGOEY3
MjFBNEMzM0YwMEVCMTk5RCAvKiBHUFVMZWdhY3lSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0
b3JNZXRhbC5tbSAqLywKKwkJCQkzMTJGRjhGNTIxQTRDMzNGMDBFQjE5OUQgLyogR1BVTGVnYWN5
UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3JNZXRhbC5tbSAqLywKKwkJCQkzMTJG
RjhGQzIxQTRDMzNGMDBFQjE5OUQgLyogR1BVTGVnYWN5UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVu
dERlc2NyaXB0b3JNZXRhbC5tbSAqLywKKwkJCQkzMTJGRjhGMDIxQTRDMzNGMDBFQjE5OUQgLyog
R1BVTGVnYWN5UmVuZGVyUGFzc0Rlc2NyaXB0b3JNZXRhbC5tbSAqLywKKwkJCQkzMTJGRjhGNDIx
QTRDMzNGMDBFQjE5OUQgLyogR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnRE
ZXNjcmlwdG9yTWV0YWwubW0gKi8sCisJCQkJMzEyRkY4RUYyMUE0QzMzRjAwRUIxOTlEIC8qIEdQ
VUxlZ2FjeVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvck1ldGFsLm1tICovLAorCQkJCTMxMkZGOEZE
MjFBNEMzM0YwMEVCMTk5RCAvKiBHUFVMZWdhY3lSZW5kZXJQaXBlbGluZVN0YXRlTWV0YWwubW0g
Ki8sCisJCQkJMzEyRkY4RUMyMUE0QzMzRjAwRUIxOTlEIC8qIEdQVUxlZ2FjeVRleHR1cmVEZXNj
cmlwdG9yTWV0YWwubW0gKi8sCisJCQkJMzEyRkY4RkUyMUE0QzMzRjAwRUIxOTlEIC8qIEdQVUxl
Z2FjeVRleHR1cmVNZXRhbC5tbSAqLywKKwkJCSk7CisJCQlwYXRoID0gY29jb2E7CisJCQlzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQkzMTZGRTEwNjBFNkUxRDg0MDBCRjYwODggLyog
YW5pbWF0aW9uICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAg
LTE4MDI5LDUwICsxODE1NiwyMSBAQAogCQk0OTg3NzBDMTEyNDJDNTBEMDAyMjI2QkEgLyogZ3B1
ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQkzMTZCREJB
NzFFNzFGQTkzMDBERTBENUEgLyogR1BVTGVnYWN5QnVmZmVyLmNwcCAqLywKLQkJCQkzMTZCREJB
ODFFNzFGQTkzMDBERTBENUEgLyogR1BVTGVnYWN5QnVmZmVyLmggKi8sCi0JCQkJMzE2QkRCQzQx
RTc1RUUyNDAwREUwRDVBIC8qIEdQVUxlZ2FjeUNvbW1hbmRCdWZmZXIuY3BwICovLAotCQkJCTMx
NkJEQkM1MUU3NUVFMjQwMERFMEQ1QSAvKiBHUFVMZWdhY3lDb21tYW5kQnVmZmVyLmggKi8sCi0J
CQkJMzE2QkRCQjkxRTczODgwNjAwREUwRDVBIC8qIEdQVUxlZ2FjeUNvbW1hbmRRdWV1ZS5jcHAg
Ki8sCi0JCQkJMzE2QkRCQkExRTczODgwNjAwREUwRDVBIC8qIEdQVUxlZ2FjeUNvbW1hbmRRdWV1
ZS5oICovLAotCQkJCTM4MUUzNUVCMUU4RTIxOTkwMDQzRTg1MCAvKiBHUFVMZWdhY3lDb21wdXRl
Q29tbWFuZEVuY29kZXIuY3BwICovLAotCQkJCTM4MUUzNUVBMUU4RTIwRDkwMDQzRTg1MCAvKiBH
UFVMZWdhY3lDb21wdXRlQ29tbWFuZEVuY29kZXIuaCAqLywKLQkJCQkzODFFMzVFRDFFOEUyNDdB
MDA0M0U4NTAgLyogR1BVTGVnYWN5Q29tcHV0ZVBpcGVsaW5lU3RhdGUuY3BwICovLAotCQkJCTM4
MUUzNUVDMUU4RTIzRTQwMDQzRTg1MCAvKiBHUFVMZWdhY3lDb21wdXRlUGlwZWxpbmVTdGF0ZS5o
ICovLAotCQkJCTMxNkJEQkY0MUU3NjJBQ0QwMERFMEQ1QSAvKiBHUFVMZWdhY3lEZXB0aFN0ZW5j
aWxEZXNjcmlwdG9yLmNwcCAqLywKLQkJCQkzMTZCREJGNTFFNzYyQUNEMDBERTBENUEgLyogR1BV
TGVnYWN5RGVwdGhTdGVuY2lsRGVzY3JpcHRvci5oICovLAotCQkJCTMxNkJEQkVFMUU3NjI5MUIw
MERFMEQ1QSAvKiBHUFVMZWdhY3lEZXB0aFN0ZW5jaWxTdGF0ZS5jcHAgKi8sCi0JCQkJMzE2QkRC
RUYxRTc2MjkxQjAwREUwRDVBIC8qIEdQVUxlZ2FjeURlcHRoU3RlbmNpbFN0YXRlLmggKi8sCi0J
CQkJMzE2QkRCODQxRTZFMEEyMTAwREUwRDVBIC8qIEdQVUxlZ2FjeURldmljZS5jcHAgKi8sCi0J
CQkJMzE2QkRCODUxRTZFMEEyMTAwREUwRDVBIC8qIEdQVUxlZ2FjeURldmljZS5oICovLAotCQkJ
CTMxNkJEQkNBMUU3NUYxNzYwMERFMEQ1QSAvKiBHUFVMZWdhY3lEcmF3YWJsZS5jcHAgKi8sCi0J
CQkJMzE2QkRCQ0IxRTc1RjE3NjAwREUwRDVBIC8qIEdQVUxlZ2FjeURyYXdhYmxlLmggKi8sCi0J
CQkJMzE2QkRCRkExRTc2MkQwNDAwREUwRDVBIC8qIEdQVUxlZ2FjeUVudW1zLmggKi8sCi0JCQkJ
MzE2QkRCOTIxRTcwQzg5NzAwREUwRDVBIC8qIEdQVUxlZ2FjeUZ1bmN0aW9uLmNwcCAqLywKLQkJ
CQkzMTZCREI5MzFFNzBDODk3MDBERTBENUEgLyogR1BVTGVnYWN5RnVuY3Rpb24uaCAqLywKLQkJ
CQkzMTZCREI5ODFFNzBDQkJGMDBERTBENUEgLyogR1BVTGVnYWN5TGlicmFyeS5jcHAgKi8sCi0J
CQkJMzE2QkRCOTkxRTcwQ0JCRjAwREUwRDVBIC8qIEdQVUxlZ2FjeUxpYnJhcnkuaCAqLywKLQkJ
CQkzMTZCREJFODFFNzYyNDQzMDBERTBENUEgLyogR1BVTGVnYWN5UmVuZGVyQ29tbWFuZEVuY29k
ZXIuY3BwICovLAotCQkJCTMxNkJEQkU5MUU3NjI0NDQwMERFMEQ1QSAvKiBHUFVMZWdhY3lSZW5k
ZXJDb21tYW5kRW5jb2Rlci5oICovLAotCQkJCTMxNkJEQkRDMUU3NjEzNkMwMERFMEQ1QSAvKiBH
UFVMZWdhY3lSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuY3BwICovLAotCQkJCTMxNkJE
QkREMUU3NjEzNkMwMERFMEQ1QSAvKiBHUFVMZWdhY3lSZW5kZXJQYXNzQXR0YWNobWVudERlc2Ny
aXB0b3IuaCAqLywKLQkJCQkzMTZCREJEODFFNzYxMkRCMDBERTBENUEgLyogR1BVTGVnYWN5UmVu
ZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuY3BwICovLAotCQkJCTMxNkJEQkQ5MUU3
NjEyREIwMERFMEQ1QSAvKiBHUFVMZWdhY3lSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3Jp
cHRvci5oICovLAotCQkJCTMxNkJEQkUyMUU3NjFFRkYwMERFMEQ1QSAvKiBHUFVMZWdhY3lSZW5k
ZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5jcHAgKi8sCi0JCQkJMzE2QkRCRTMxRTc2
MUVGRjAwREUwRDVBIC8qIEdQVUxlZ2FjeVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlw
dG9yLmggKi8sCi0JCQkJMzE2QkRCRDAxRTc1RjdBRTAwREUwRDVBIC8qIEdQVUxlZ2FjeVJlbmRl
clBhc3NEZXNjcmlwdG9yLmNwcCAqLywKLQkJCQkzMTZCREJEMTFFNzVGN0FFMDBERTBENUEgLyog
R1BVTGVnYWN5UmVuZGVyUGFzc0Rlc2NyaXB0b3IuaCAqLywKLQkJCQkzMTZCREMwODFFNzYzNDI3
MDBERTBENUEgLyogR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlw
dG9yLmNwcCAqLywKLQkJCQkzMTZCREMwOTFFNzYzNDI3MDBERTBENUEgLyogR1BVTGVnYWN5UmVu
ZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmggKi8sCi0JCQkJMzE2QkRCRkMx
RTc2MkY1NzAwREUwRDVBIC8qIEdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5jcHAg
Ki8sCi0JCQkJMzE2QkRCRkQxRTc2MkY1NzAwREUwRDVBIC8qIEdQVUxlZ2FjeVJlbmRlclBpcGVs
aW5lRGVzY3JpcHRvci5oICovLAotCQkJCTMxNkJEQkZFMUU3NjJGNTcwMERFMEQ1QSAvKiBHUFVM
ZWdhY3lSZW5kZXJQaXBlbGluZVN0YXRlLmNwcCAqLywKLQkJCQkzMTZCREJGRjFFNzYyRjU3MDBE
RTBENUEgLyogR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVTdGF0ZS5oICovLAotCQkJCTM4MUUzNUY2
MUU4RTREMEUwMDQzRTg1MCAvKiBHUFVMZWdhY3lTaXplLmggKi8sCi0JCQkJMzE2QkRCQUYxRTcz
NTRCQjAwREUwRDVBIC8qIEdQVUxlZ2FjeVRleHR1cmUuY3BwICovLAotCQkJCTMxNkJEQkIwMUU3
MzU0QkIwMERFMEQ1QSAvKiBHUFVMZWdhY3lUZXh0dXJlLmggKi8sCi0JCQkJMzE2QkRCQjUxRTcz
NTdDQjAwREUwRDVBIC8qIEdQVUxlZ2FjeVRleHR1cmVEZXNjcmlwdG9yLmNwcCAqLywKLQkJCQkz
MTZCREJCNjFFNzM1N0NCMDBERTBENUEgLyogR1BVTGVnYWN5VGV4dHVyZURlc2NyaXB0b3IuaCAq
LywKKwkJCQkzMTJGRjhDNjIxQTRDMzAyMDBFQjE5OUQgLyogY29jb2EgKi8sCisJCQkJMzEyRkY4
Q0UyMUE0QzMzRjAwRUIxOTlEIC8qIGxlZ2FjeSAqLywKKwkJCQkzMTJGRjhCRDIxQTRDMkYxMDBF
QjE5OUQgLyogR1BVQ29tbWFuZEJ1ZmZlci5oICovLAorCQkJCTMxMkZGOEJGMjFBNEMyRjEwMEVC
MTk5RCAvKiBHUFVEZXZpY2UuY3BwICovLAorCQkJCTMxMkZGOEJFMjFBNEMyRjEwMEVCMTk5RCAv
KiBHUFVEZXZpY2UuaCAqLywKKwkJCQkzMTJGRjhDNDIxQTRDMkY0MDBFQjE5OUQgLyogR1BVUGlw
ZWxpbmVEZXNjcmlwdG9yQmFzZS5oICovLAorCQkJCTMxMkZGOEMyMjFBNEMyRjMwMEVCMTk5RCAv
KiBHUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvci5oICovLAorCQkJCTMxMkZGOEMxMjFBNEMyRjIw
MEVCMTk5RCAvKiBHUFVRdWV1ZS5oICovLAorCQkJCTMxMkZGOEI5MjFBNEMyRUYwMEVCMTk5RCAv
KiBHUFVSZW5kZXJQaXBlbGluZS5oICovLAorCQkJCTMxMkZGOEJDMjFBNEMyRjAwMEVCMTk5RCAv
KiBHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCAqLywKKwkJCQkzMTJGRjhCQjIxQTRDMkYw
MDBFQjE5OUQgLyogR1BVU2hhZGVyTW9kdWxlLmggKi8sCisJCQkJMzEyRkY4QzAyMUE0QzJGMjAw
RUIxOTlEIC8qIEdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaCAqLywKKwkJCQkzMTJGRjhCQTIx
QTRDMkVGMDBFQjE5OUQgLyogR1BVU3dhcENoYWluLmggKi8sCisJCQkJMzEyRkY4QzUyMUE0QzJG
NDAwRUIxOTlEIC8qIEdQVVRleHR1cmUuaCAqLywKKwkJCQkzMTJGRjhDMzIxQTRDMkYzMDBFQjE5
OUQgLyogR1BVVGV4dHVyZUZvcm1hdEVudW0uaCAqLywKIAkJCQk0OTg3NzBENzEyNDJDNTM1MDAy
MjI2QkEgLyogVGV4dHVyZS5jcHAgKi8sCiAJCQkJNDk4NzcwRDgxMjQyQzUzNTAwMjIyNkJBIC8q
IFRleHR1cmUuaCAqLywKIAkJCQk0OTg3NzBEOTEyNDJDNTM1MDAyMjI2QkEgLyogVGlsaW5nRGF0
YS5jcHAgKi8sCkBAIC0yNTU1NCwyMyArMjU2NTIsOSBAQAogCQlEMDBGNTkzRTIxNkVDQzQzMDAw
RDcxREIgLyogd2ViZ3B1ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9
ICgKLQkJCQlEMDYxNUZEMjIxN0ZGRUUzMDA4QTQ4QTggLyogY29jb2EgKi8sCiAJCQkJRDAwRjU5
NDEyMTZFQ0M3QTAwMEQ3MURCIC8qIERPTVdpbmRvd1dlYkdQVS5jcHAgKi8sCiAJCQkJRDAwRjU5
NDAyMTZFQ0M3QTAwMEQ3MURCIC8qIERPTVdpbmRvd1dlYkdQVS5oICovLAogCQkJCUQwMEY1OTQy
MjE2RUNDN0EwMDBENzFEQiAvKiBET01XaW5kb3dXZWJHUFUuaWRsICovLAotCQkJCUQwRUFDRjdF
MjE5MzgyQjAwMDBGQTc1QyAvKiBHUFVDb21tYW5kQnVmZmVyLmggKi8sCi0JCQkJRDA5NzI3Q0Ey
MThCRDdBNTAwOTQyRjNBIC8qIEdQVURldmljZS5jcHAgKi8sCi0JCQkJRDA2MTVGQ0YyMTdGRjE4
NTAwOEE0OEE4IC8qIEdQVURldmljZS5oICovLAotCQkJCUQwNDZGQjY4MjE4RDE4Q0QwMENCOEY2
MiAvKiBHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmggKi8sCi0JCQkJRDA0NkZCNjcyMThEMTgw
MzAwQ0I4RjYyIC8qIEdQVVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yLmggKi8sCi0JCQkJRDBFQUNG
ODEyMTkzOTIxQTAwMEZBNzVDIC8qIEdQVVF1ZXVlLmggKi8sCi0JCQkJRDBFQUNGN0QyMTkzODJC
MDAwMEZBNzVDIC8qIEdQVVJlbmRlclBpcGVsaW5lLmggKi8sCi0JCQkJRDA0NkZCNjUyMThEMDcz
QzAwQ0I4RjYyIC8qIEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oICovLAotCQkJCUQwNjBE
ODg4MjE4MjgwQzEwMDMzOTMxOCAvKiBHUFVTaGFkZXJNb2R1bGUuaCAqLywKLQkJCQlEMDk3MjdD
MjIxOEE0NzI5MDA5NDJGM0EgLyogR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oICovLAotCQkJ
CUQwRUFDRjdDMjE5MzgyQUYwMDBGQTc1QyAvKiBHUFVTd2FwQ2hhaW4uaCAqLywKLQkJCQlEMEVB
Q0Y4MjIxOTNBQjM4MDAwRkE3NUMgLyogR1BVVGV4dHVyZS5oICovLAotCQkJCUQwRUFDRkIyMjE5
RTRGMTQwMDBGQTc1QyAvKiBHUFVUZXh0dXJlRm9ybWF0RW51bS5oICovLAogCQkJCUQwMEY1OTQ3
MjE2RUZFNTQwMDBENzFEQiAvKiBXZWJHUFUuY3BwICovLAogCQkJCUQwMEY1OTQ2MjE2RUZFNTQw
MDBENzFEQiAvKiBXZWJHUFUuaCAqLywKIAkJCQlEMDBGNTk0ODIxNkVGRTU0MDAwRDcxREIgLyog
V2ViR1BVLmlkbCAqLywKQEAgLTI1NjE5LDIwICsyNTcwMyw2IEBACiAJCQlwYXRoID0gd2ViZ3B1
OwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKLQkJRDA2MTVGRDIyMTdGRkVFMzAw
OEE0OEE4IC8qIGNvY29hICovID0gewotCQkJaXNhID0gUEJYR3JvdXA7Ci0JCQljaGlsZHJlbiA9
ICgKLQkJCQlEMEVBQ0Y3QjIxOTM4MjUzMDAwRkE3NUMgLyogR1BVQ29tbWFuZEJ1ZmZlck1ldGFs
Lm1tICovLAotCQkJCUQwNjE1RkQxMjE3RkYxRTEwMDhBNDhBOCAvKiBHUFVEZXZpY2VNZXRhbC5t
bSAqLywKLQkJCQlEMEVBQ0Y4MDIxOTM5MUVFMDAwRkE3NUMgLyogR1BVUXVldWVNZXRhbC5tbSAq
LywKLQkJCQlEMEM0MTlGQjIxODQwRjZDMDA5RUMxREUgLyogR1BVUmVuZGVyUGlwZWxpbmVNZXRh
bC5tbSAqLywKLQkJCQlEMDYwRDg4OTIxODI4MEMxMDAzMzkzMTggLyogR1BVU2hhZGVyTW9kdWxl
TWV0YWwubW0gKi8sCi0JCQkJRDA5NzI3QjYyMTg3RjQ0MzAwOTQyRjNBIC8qIEdQVVN3YXBDaGFp
bk1ldGFsLm1tICovLAotCQkJCUQwRUFDRjgzMjE5M0FCMzgwMDBGQTc1QyAvKiBHUFVUZXh0dXJl
TWV0YWwubW0gKi8sCi0JCQkpOwotCQkJcGF0aCA9IGNvY29hOwotCQkJc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsKLQkJfTsKIAkJREY5QUZENkYxM0ZDMzFCMDAwMTVGRUI3IC8qIG9iamMgKi8gPSB7
CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMjg3OTQsMjkgKzI4ODY0
LDQwIEBACiAJCQkJQzVENEFBN0ExMTZCQUZCNjAwNjlDQTkzIC8qIEdseXBoTWV0cmljc01hcC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMDg3M0I4NkIxMzYwNjRFQTAwQTUyMkMyIC8qIEdseXBoUGFn
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzExNTE4RkMxRTc4QzE1RjAwRUM1MTRBIC8qIEdQVUJh
c2VkQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMzE2QkRCQUEx
RTcxRkE5MzAwREUwRDVBIC8qIEdQVUxlZ2FjeUJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
MzE2QkRCQ0UxRTc1RjE4QTAwREUwRDVBIC8qIEdQVUxlZ2FjeUNvbW1hbmRCdWZmZXIuaCBpbiBI
ZWFkZXJzICovLAotCQkJCTMxNkJEQkJDMUU3Mzg4MDYwMERFMEQ1QSAvKiBHUFVMZWdhY3lDb21t
YW5kUXVldWUuaCBpbiBIZWFkZXJzICovLAotCQkJCTkzQTk1M0I0MjBFQkQ0MzIwMEE2MTlGNiAv
KiBHUFVMZWdhY3lDb21wdXRlQ29tbWFuZEVuY29kZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTkz
QTk1M0IwMjBFQkQzQzkwMEE2MTlGNiAvKiBHUFVMZWdhY3lDb21wdXRlUGlwZWxpbmVTdGF0ZS5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJMzE2QkRCRjcxRTc2MkFENTAwREUwRDVBIC8qIEdQVUxlZ2Fj
eURlcHRoU3RlbmNpbERlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICovLAotCQkJCTMxNkJEQkYwMUU3
NjI5MjAwMERFMEQ1QSAvKiBHUFVMZWdhY3lEZXB0aFN0ZW5jaWxTdGF0ZS5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJMzE2QkRCODYxRTZFMEEyNzAwREUwRDVBIC8qIEdQVUxlZ2FjeURldmljZS5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJMzE2QkRCQ0QxRTc1RjE4NDAwREUwRDVBIC8qIEdQVUxlZ2FjeURy
YXdhYmxlLmggaW4gSGVhZGVycyAqLywKLQkJCQkzMTZCREJGQjFFNzYyRDA0MDBERTBENUEgLyog
R1BVTGVnYWN5RW51bXMuaCBpbiBIZWFkZXJzICovLAotCQkJCTMxNkJEQjk1MUU3MEM4OTcwMERF
MEQ1QSAvKiBHUFVMZWdhY3lGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMzE2QkRCOUIx
RTcwQ0JCRjAwREUwRDVBIC8qIEdQVUxlZ2FjeUxpYnJhcnkuaCBpbiBIZWFkZXJzICovLAotCQkJ
CTMxNkJEQkVCMUU3NjI0NEQwMERFMEQ1QSAvKiBHUFVMZWdhY3lSZW5kZXJDb21tYW5kRW5jb2Rl
ci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMzE2QkRCREYxRTc2MTM3NTAwREUwRDVBIC8qIEdQVUxl
Z2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
MzE2QkRCREIxRTc2MTJFMjAwREUwRDVBIC8qIEdQVUxlZ2FjeVJlbmRlclBhc3NDb2xvckF0dGFj
aG1lbnREZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLywKLQkJCQkzMTZCREJFNDFFNzYxRjA1MDBE
RTBENUEgLyogR1BVTGVnYWN5UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IuaCBp
biBIZWFkZXJzICovLAotCQkJCTMxNkJEQkQzMUU3NUY3QjYwMERFMEQ1QSAvKiBHUFVMZWdhY3lS
ZW5kZXJQYXNzRGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMzE2QkRDMEQxRTc2MzRE
MjAwREUwRDVBIC8qIEdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3Jp
cHRvci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMzE2QkRDMDIxRTc2MkY2NDAwREUwRDVBIC8qIEdQ
VUxlZ2FjeVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMzE2
QkRDMDMxRTc2MkY2OTAwREUwRDVBIC8qIEdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lU3RhdGUuaCBp
biBIZWFkZXJzICovLAotCQkJCTkzQTk1M0I1MjBFQzlDM0YwMEE2MTlGNiAvKiBHUFVMZWdhY3lT
aXplLmggaW4gSGVhZGVycyAqLywKLQkJCQkzMTZCREJCMjFFNzM1NEJCMDBERTBENUEgLyogR1BV
TGVnYWN5VGV4dHVyZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMzE2QkRCQjgxRTczNTdDQjAwREUw
RDVBIC8qIEdQVUxlZ2FjeVRleHR1cmVEZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQkz
MTJGRjkxMTIxQTRDMzY1MDBFQjE5OUQgLyogR1BVQ29tbWFuZEJ1ZmZlci5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJMzEyRkY5MTIyMUE0QzM2NTAwRUIxOTlEIC8qIEdQVURldmljZS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMzEyRkY5MUUyMUE0QzM3MzAwRUIxOTlEIC8qIEdQVUxlZ2FjeUJ1ZmZlci5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMzEyRkY5MzIyMUE0QzU1MjAwRUIxOTlEIC8qIEdQVUxlZ2Fj
eUNvbW1hbmRCdWZmZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTMxMkZGOTJBMjFBNEMzOEIwMEVC
MTk5RCAvKiBHUFVMZWdhY3lDb21tYW5kUXVldWUuaCBpbiBIZWFkZXJzICovLAorCQkJCTMxMkZG
OTJGMjFBNEMzOEIwMEVCMTk5RCAvKiBHUFVMZWdhY3lDb21wdXRlQ29tbWFuZEVuY29kZXIuaCBp
biBIZWFkZXJzICovLAorCQkJCTMxMkZGOTI2MjFBNEMzOEIwMEVCMTk5RCAvKiBHUFVMZWdhY3lE
ZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQkzMTJGRjkzMDIxQTRD
MzhCMDBFQjE5OUQgLyogR1BVTGVnYWN5RGVwdGhTdGVuY2lsU3RhdGUuaCBpbiBIZWFkZXJzICov
LAorCQkJCTMxMkZGOTI3MjFBNEMzOEIwMEVCMTk5RCAvKiBHUFVMZWdhY3lEZXZpY2UuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTMxMkZGOTJCMjFBNEMzOEIwMEVCMTk5RCAvKiBHUFVMZWdhY3lEcmF3
YWJsZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzEyRkY5MkMyMUE0QzM4QjAwRUIxOTlEIC8qIEdQ
VUxlZ2FjeUVudW1zLmggaW4gSGVhZGVycyAqLywKKwkJCQkzMTJGRjkyNDIxQTRDMzczMDBFQjE5
OUQgLyogR1BVTGVnYWN5RnVuY3Rpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTMxMkZGOTIyMjFB
NEMzNzMwMEVCMTk5RCAvKiBHUFVMZWdhY3lMaWJyYXJ5LmggaW4gSGVhZGVycyAqLywKKwkJCQkz
MTJGRjkyOTIxQTRDMzhCMDBFQjE5OUQgLyogR1BVTGVnYWN5UmVuZGVyQ29tbWFuZEVuY29kZXIu
aCBpbiBIZWFkZXJzICovLAorCQkJCTMxMkZGOTIwMjFBNEMzNzMwMEVCMTk5RCAvKiBHUFVMZWdh
Y3lSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTMx
MkZGOTJFMjFBNEMzOEIwMEVCMTk5RCAvKiBHUFVMZWdhY3lSZW5kZXJQYXNzQ29sb3JBdHRhY2ht
ZW50RGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzEyRkY5MjUyMUE0QzM4QjAwRUIx
OTlEIC8qIEdQVUxlZ2FjeVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmggaW4g
SGVhZGVycyAqLywKKwkJCQkzMTJGRjkxRDIxQTRDMzczMDBFQjE5OUQgLyogR1BVTGVnYWN5UmVu
ZGVyUGFzc0Rlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTMxMkZGOTIxMjFBNEMzNzMw
MEVCMTk5RCAvKiBHUFVMZWdhY3lSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0
b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTMxMkZGOTMxMjFBNEMzOEIwMEVCMTk5RCAvKiBHUFVM
ZWdhY3lSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTMxMkZG
OTIzMjFBNEMzNzMwMEVCMTk5RCAvKiBHUFVMZWdhY3lSZW5kZXJQaXBlbGluZVN0YXRlLmggaW4g
SGVhZGVycyAqLywKKwkJCQkzMTJGRjkyRDIxQTRDMzhCMDBFQjE5OUQgLyogR1BVTGVnYWN5U2l6
ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzEyRkY5MjgyMUE0QzM4QjAwRUIxOTlEIC8qIEdQVUxl
Z2FjeVRleHR1cmUuaCBpbiBIZWFkZXJzICovLAorCQkJCTMxMkZGOTFGMjFBNEMzNzMwMEVCMTk5
RCAvKiBHUFVMZWdhY3lUZXh0dXJlRGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzEy
RkY5MTMyMUE0QzM2NTAwRUIxOTlEIC8qIEdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTMxMkZGOTE0MjFBNEMzNjUwMEVCMTk5RCAvKiBHUFVQaXBlbGluZVN0
YWdlRGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzEyRkY5MTUyMUE0QzM2NTAwRUIx
OTlEIC8qIEdQVVF1ZXVlLmggaW4gSGVhZGVycyAqLywKKwkJCQkzMTJGRjkxNjIxQTRDMzY1MDBF
QjE5OUQgLyogR1BVUmVuZGVyUGlwZWxpbmUuaCBpbiBIZWFkZXJzICovLAorCQkJCTMxMkZGOTE3
MjFBNEMzNjUwMEVCMTk5RCAvKiBHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTMxMkZGOTE4MjFBNEMzNjUwMEVCMTk5RCAvKiBHUFVTaGFkZXJNb2R1bGUu
aCBpbiBIZWFkZXJzICovLAorCQkJCTMxMkZGOTE5MjFBNEMzNjUwMEVCMTk5RCAvKiBHUFVTaGFk
ZXJNb2R1bGVEZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQkzMTJGRjkxQTIxQTRDMzY1
MDBFQjE5OUQgLyogR1BVU3dhcENoYWluLmggaW4gSGVhZGVycyAqLywKKwkJCQkzMTJGRjkxQjIx
QTRDMzY1MDBFQjE5OUQgLyogR1BVVGV4dHVyZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzEyRkY5
MUMyMUE0QzM2NTAwRUIxOTlEIC8qIEdQVVRleHR1cmVGb3JtYXRFbnVtLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQzUzQzVGNTBEQTU2QjkyMDAyMUVCNUQgLyogR3JhZGllbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUIyMjI3OTY0MEQwMEJGMjIwMDcxQjc4MiAvKiBHcmFkaWVudEF0dHJpYnV0ZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTJENDgxRjA0MTQ2QjVDNkIwMEFBNzgzNCAvKiBHcmFkaWVu
dEltYWdlLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9HUFVDb21tYW5kQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvR1BVQ29tbWFuZEJ1ZmZlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMzYzczMzI1
YTQ2ZWNmZDc3MWJhZjA0ZWE2YTU2YjhiYmY5YjM1ZWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQ29tbWFuZEJ1ZmZlci5oCkBAIC0w
LDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJH
UFUpCisKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK09CSkNfUFJPVE9DT0woTVRMQ29tbWFu
ZEJ1ZmZlcik7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgR1BVRGV2aWNlOworCit1
c2luZyBQbGF0Zm9ybUNvbW1hbmRCdWZmZXIgPSBNVExDb21tYW5kQnVmZmVyOwordXNpbmcgUGxh
dGZvcm1Db21tYW5kQnVmZmVyU21hcnRQdHIgPSBSZXRhaW5QdHI8TVRMQ29tbWFuZEJ1ZmZlcj47
CisKK2NsYXNzIEdQVUNvbW1hbmRCdWZmZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxHUFVDb21tYW5k
QnVmZmVyPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZlB0cjxHUFVDb21tYW5kQnVmZmVyPiBj
cmVhdGUoR1BVRGV2aWNlJik7CisKK3ByaXZhdGU6CisgICAgR1BVQ29tbWFuZEJ1ZmZlcihQbGF0
Zm9ybUNvbW1hbmRCdWZmZXJTbWFydFB0ciYmKTsKKworICAgIFBsYXRmb3JtQ29tbWFuZEJ1ZmZl
clNtYXJ0UHRyIG1fcGxhdGZvcm1Db21tYW5kQnVmZmVyOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVEZXZpY2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVURldmljZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmYxNzc0
ZTZjODViYTJlNWQ2ZjFjOTE3MjZhOTNkOWE1ZmUzODM2YQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVEZXZpY2UuY3BwCkBAIC0wLDAg
KzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR1BV
RGV2aWNlLmgiCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiR1BVUmVuZGVyUGlw
ZWxpbmUuaCIKKyNpbmNsdWRlICJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCIKKyNpbmNs
dWRlICJHUFVTaGFkZXJNb2R1bGUuaCIKKyNpbmNsdWRlICJHUFVTaGFkZXJNb2R1bGVEZXNjcmlw
dG9yLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVmUHRyPEdQVVNoYWRlck1vZHVsZT4g
R1BVRGV2aWNlOjpjcmVhdGVTaGFkZXJNb2R1bGUoR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvciYm
IGRlc2NyaXB0b3IpIGNvbnN0Cit7CisgICAgcmV0dXJuIEdQVVNoYWRlck1vZHVsZTo6Y3JlYXRl
KCp0aGlzLCBXVEZNb3ZlKGRlc2NyaXB0b3IpKTsKK30KKworUmVmUHRyPEdQVVJlbmRlclBpcGVs
aW5lPiBHUFVEZXZpY2U6OmNyZWF0ZVJlbmRlclBpcGVsaW5lKEdQVVJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvciYmIGRlc2NyaXB0b3IpIGNvbnN0Cit7CisgICAgcmV0dXJuIEdQVVJlbmRlclBpcGVs
aW5lOjpjcmVhdGUoKnRoaXMsIFdURk1vdmUoZGVzY3JpcHRvcikpOworfQorCitSZWZQdHI8R1BV
Q29tbWFuZEJ1ZmZlcj4gR1BVRGV2aWNlOjpjcmVhdGVDb21tYW5kQnVmZmVyKCkKK3sKKyAgICBy
ZXR1cm4gR1BVQ29tbWFuZEJ1ZmZlcjo6Y3JlYXRlKCp0aGlzKTsKK30KKworUmVmUHRyPEdQVVF1
ZXVlPiBHUFVEZXZpY2U6OmdldFF1ZXVlKCkKK3sKKyAgICBpZiAoIW1fcXVldWUpCisgICAgICAg
IG1fcXVldWUgPSBHUFVRdWV1ZTo6Y3JlYXRlKCp0aGlzKTsKKworICAgIHJldHVybiBtX3F1ZXVl
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCR1BV
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVURl
dmljZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVURldmljZS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjU4MTZmMTgzZmMwOTJkNzQ2ZmI5NzMyMjQ0NmY4Y2IyMzNjMTRmZDAKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BV
RGV2aWNlLmgKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIkdQVUNvbW1hbmRCdWZmZXIuaCIKKyNpbmNs
dWRlICJHUFVRdWV1ZS5oIgorCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCitPQkpDX1BST1RP
Q09MKE1UTERldmljZSk7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordXNpbmcgUGxhdGZvcm1E
ZXZpY2UgPSBNVExEZXZpY2U7Cit1c2luZyBQbGF0Zm9ybURldmljZVNtYXJ0UHRyID0gUmV0YWlu
UHRyPE1UTERldmljZT47CisKK2NsYXNzIEdQVVJlbmRlclBpcGVsaW5lOworY2xhc3MgR1BVU2hh
ZGVyTW9kdWxlOworCitzdHJ1Y3QgR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvcjsKK3N0cnVjdCBH
UFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I7CisKK2NsYXNzIEdQVURldmljZSA6IHB1YmxpYyBS
ZWZDb3VudGVkPEdQVURldmljZT4geworcHVibGljOgorICAgIHN0YXRpYyBSZWZQdHI8R1BVRGV2
aWNlPiBjcmVhdGUoKTsKKworICAgIFJlZlB0cjxHUFVTaGFkZXJNb2R1bGU+IGNyZWF0ZVNoYWRl
ck1vZHVsZShHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yJiYpIGNvbnN0OworICAgIFJlZlB0cjxH
UFVSZW5kZXJQaXBlbGluZT4gY3JlYXRlUmVuZGVyUGlwZWxpbmUoR1BVUmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yJiYpIGNvbnN0OworCisgICAgUmVmUHRyPEdQVUNvbW1hbmRCdWZmZXI+IGNyZWF0
ZUNvbW1hbmRCdWZmZXIoKTsKKworICAgIFJlZlB0cjxHUFVRdWV1ZT4gZ2V0UXVldWUoKTsKKyAg
ICBQbGF0Zm9ybURldmljZSogcGxhdGZvcm1EZXZpY2UoKSBjb25zdCB7IHJldHVybiBtX3BsYXRm
b3JtRGV2aWNlLmdldCgpOyB9CisKK3ByaXZhdGU6CisgICAgR1BVRGV2aWNlKFBsYXRmb3JtRGV2
aWNlU21hcnRQdHImJik7CisKKyAgICBQbGF0Zm9ybURldmljZVNtYXJ0UHRyIG1fcGxhdGZvcm1E
ZXZpY2U7CisgICAgUmVmUHRyPEdQVVF1ZXVlPiBtX3F1ZXVlOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lCdWZmZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeUJ1ZmZlci5jcHAKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFhNDVlMzUwYWVmYjVmZjVhNzY3MGRhMTgyY2Fm
MTUyODEyZTg1NTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeUJ1ZmZlci5j
cHAKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkdQ
VUxlZ2FjeUJ1ZmZlci5oIgotCi0jaWYgRU5BQkxFKFdFQk1FVEFMKQotCi0jaW5jbHVkZSAiTG9n
Z2luZy5oIgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FycmF5QnVmZmVyLmg+Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotR1BVTGVnYWN5QnVmZmVyOjp+R1BVTGVnYWN5QnVmZmVyKCkKLXsK
LSAgICBMT0coV2ViTWV0YWwsICJHUFVCdWZmZXI6On5HUFVCdWZmZXIoKSIpOwotfQotCi11bnNp
Z25lZCBHUFVMZWdhY3lCdWZmZXI6Omxlbmd0aCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fY29u
dGVudHMgPyBtX2NvbnRlbnRzLT5ieXRlTGVuZ3RoKCkgOiAwOwotfQotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeUJ1ZmZlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA2Mzg5MTgxN2JiOTRiN2RhOTc5MTMwMzUwYzJlMGZjZDk3NTQ2NTgyLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lCdWZmZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDY1
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
cHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJNRVRBTCkKLQotI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0KLU9CSkNfUFJPVE9DT0woTVRMQnVm
ZmVyKTsKLQotbmFtZXNwYWNlIEpTQyB7Ci1jbGFzcyBBcnJheUJ1ZmZlcjsKLWNsYXNzIEFycmF5
QnVmZmVyVmlldzsKLX0KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHUFVMZWdhY3lE
ZXZpY2U7Ci0KLWNsYXNzIEdQVUxlZ2FjeUJ1ZmZlciB7Ci1wdWJsaWM6Ci0gICAgV0VCQ09SRV9F
WFBPUlQgR1BVTGVnYWN5QnVmZmVyKGNvbnN0IEdQVUxlZ2FjeURldmljZSYsIGNvbnN0IEpTQzo6
QXJyYXlCdWZmZXJWaWV3Jik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgfkdQVUxlZ2FjeUJ1ZmZlcigp
OwotCi0gICAgV0VCQ09SRV9FWFBPUlQgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Q7Ci0gICAgSlND
OjpBcnJheUJ1ZmZlciogY29udGVudHMoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRzLmdldCgp
OyB9Ci0KLSNpZiBVU0UoTUVUQUwpCi0gICAgTVRMQnVmZmVyICptZXRhbCgpIGNvbnN0IHsgcmV0
dXJuIG1fbWV0YWwuZ2V0KCk7IH0KLSNlbmRpZgotCi1wcml2YXRlOgotI2lmIFVTRShNRVRBTCkK
LSAgICBSZXRhaW5QdHI8TVRMQnVmZmVyPiBtX21ldGFsOwotI2VuZGlmCi0gICAgUmVmUHRyPEpT
Qzo6QXJyYXlCdWZmZXI+IG1fY29udGVudHM7Ci19OwotICAgIAotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9HUFVMZWdhY3lDb21tYW5kQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lDb21tYW5kQnVmZmVyLmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggNmEyMWQ2NWI5MDgzYTUwMjE3Mjk1ZmJhOGNlODFiN2ZjMDJiN2Uz
Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5Q29tbWFuZEJ1ZmZlci5jcHAK
KysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxNyBZ
dWljaGlybyBLaWt1cmEgKHkua2lrdXJhQGdtYWlsLmNvbSkKLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkdQ
VUxlZ2FjeUNvbW1hbmRCdWZmZXIuaCIKLQotI2lmIEVOQUJMRShXRUJNRVRBTCkKLQotI2luY2x1
ZGUgIkxvZ2dpbmcuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1HUFVMZWdhY3lDb21tYW5k
QnVmZmVyOjp+R1BVTGVnYWN5Q29tbWFuZEJ1ZmZlcigpCi17Ci0gICAgTE9HKFdlYk1ldGFsLCAi
R1BVQ29tbWFuZEJ1ZmZlcjo6fkdQVUNvbW1hbmRCdWZmZXIoKSIpOwotfQotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeUNvbW1hbmRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lDb21tYW5kQnVmZmVyLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdjYTNlMDhjMjM1MzZlZjA5Y2RkMzkzMjE1ZDRlNzE2MGUw
NzJlMzIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeUNvbW1hbmRCdWZmZXIu
aAorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE3
IFl1aWNoaXJvIEtpa3VyYSAoeS5raWt1cmFAZ21haWwuY29tKQotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQot
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJN
RVRBTCkKLQotI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5Q
dHIuaD4KLQotT0JKQ19QUk9UT0NPTChNVExDb21tYW5kQnVmZmVyKTsKLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1jbGFzcyBHUFVMZWdhY3lDb21tYW5kUXVldWU7Ci1jbGFzcyBHUFVMZWdhY3lE
cmF3YWJsZTsKLQotY2xhc3MgR1BVTGVnYWN5Q29tbWFuZEJ1ZmZlciB7Ci1wdWJsaWM6Ci0gICAg
ZXhwbGljaXQgR1BVTGVnYWN5Q29tbWFuZEJ1ZmZlcihjb25zdCBHUFVMZWdhY3lDb21tYW5kUXVl
dWUmLCBGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGVkQ2FsbGJhY2spOwotICAgIH5HUFVMZWdh
Y3lDb21tYW5kQnVmZmVyKCk7Ci0KLSAgICB2b2lkIGNvbW1pdCgpIGNvbnN0OwotICAgIHZvaWQg
cHJlc2VudERyYXdhYmxlKEdQVUxlZ2FjeURyYXdhYmxlJikgY29uc3Q7Ci0KLSNpZiBVU0UoTUVU
QUwpCi0gICAgTVRMQ29tbWFuZEJ1ZmZlciAqbWV0YWwoKSBjb25zdCB7IHJldHVybiBtX21ldGFs
LmdldCgpOyB9Ci0jZW5kaWYKLQotI2lmIFVTRShNRVRBTCkKLXByaXZhdGU6Ci0gICAgUmV0YWlu
UHRyPE1UTENvbW1hbmRCdWZmZXI+IG1fbWV0YWw7Ci0jZW5kaWYKLX07Ci0gICAgCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeUNvbW1hbmRRdWV1ZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5Q29tbWFuZFF1ZXVlLmNwcApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDIwNTI4MTgyYTBmZWVmOWZiMzcyMDVhYjYyYTc4
Y2EwZjY5ZWI4MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5Q29tbWFuZFF1
ZXVlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiR1BVTGVnYWN5Q29tbWFuZFF1ZXVlLmgiCi0KLSNpZiBFTkFCTEUoV0VCTUVUQUwpCi0KLSNp
bmNsdWRlICJMb2dnaW5nLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotR1BVTGVnYWN5Q29t
bWFuZFF1ZXVlOjp+R1BVTGVnYWN5Q29tbWFuZFF1ZXVlKCkKLXsKLSAgICBMT0coV2ViTWV0YWws
ICJHUFVMZWdhY3lDb21tYW5kUXVldWU6On5HUFVMZWdhY3lDb21tYW5kUXVldWUoKSIpOwotfQot
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeUNvbW1hbmRRdWV1ZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeUNvbW1hbmRRdWV1ZS5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMjZmOGUyYTgzNDIwYTQ3MTA0OGQzY2I3
MDQ5OTkxNDA2OWM1MTY0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lDb21t
YW5kUXVldWUuaAorKysgL2Rldi9udWxsCkBAIC0xLDU4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJM
RShXRUJNRVRBTCkKLQotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLQotT0JKQ19QUk9UT0NP
TChNVExDb21tYW5kUXVldWUpOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEdQVUxl
Z2FjeURldmljZTsKLQotY2xhc3MgR1BVTGVnYWN5Q29tbWFuZFF1ZXVlIHsKLXB1YmxpYzoKLSAg
ICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBHUFVMZWdhY3lDb21tYW5kUXVldWUoY29uc3QgR1BV
TGVnYWN5RGV2aWNlJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgfkdQVUxlZ2FjeUNvbW1hbmRRdWV1
ZSgpOwotCi0gICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGxhYmVsKCkgY29uc3Q7Ci0gICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzZXRMYWJlbChjb25zdCBTdHJpbmcmKSBjb25zdDsKLQotI2lmIFVT
RShNRVRBTCkKLSAgICBNVExDb21tYW5kUXVldWUgKm1ldGFsKCkgY29uc3QgeyByZXR1cm4gbV9t
ZXRhbC5nZXQoKTsgfQotI2VuZGlmCi0KLSNpZiBVU0UoTUVUQUwpCi1wcml2YXRlOgotICAgIFJl
dGFpblB0cjxNVExDb21tYW5kUXVldWU+IG1fbWV0YWw7Ci0jZW5kaWYKLX07Ci0gICAgCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeUNvbXB1dGVDb21tYW5kRW5jb2Rlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5Q29tcHV0ZUNv
bW1hbmRFbmNvZGVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmI3YzllN2U1
YjM0Mzg2MjlmMzhjZGJmN2FkZjJmZjk3NWNhYjJmMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvR1BVTGVnYWN5Q29tcHV0ZUNvbW1hbmRFbmNvZGVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDQyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgWXVpY2hpcm8gS2lrdXJhICh5
Lmtpa3VyYUBnbWFpbC5jb20pCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
LSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJHUFVMZWdhY3lDb21wdXRlQ29t
bWFuZEVuY29kZXIuaCIKLQotI2lmIEVOQUJMRShXRUJNRVRBTCkKLQotI2luY2x1ZGUgIkxvZ2dp
bmcuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIAotR1BVTGVnYWN5Q29tcHV0ZUNvbW1h
bmRFbmNvZGVyOjp+R1BVTGVnYWN5Q29tcHV0ZUNvbW1hbmRFbmNvZGVyKCkKLXsKLSAgICBMT0co
V2ViTWV0YWwsICJHUFVMZWdhY3lDb21wdXRlQ29tbWFuZEVuY29kZXI6On5HUFVMZWdhY3lDb21w
dXRlQ29tbWFuZEVuY29kZXIoKSIpOwotfQotICAgIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQot
Ci0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9HUFVMZWdhY3lDb21wdXRlQ29tbWFuZEVuY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lDb21wdXRlQ29tbWFuZEVuY29kZXIuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTdhN2E5Njc3Y2ZkNmY1NTUwMDY5OWYzNmNlYzE3Mzlk
OGFmY2EzYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5Q29tcHV0ZUNvbW1h
bmRFbmNvZGVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE3IFl1aWNoaXJvIEtpa3VyYSAoeS5raWt1cmFAZ21haWwuY29tKQotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lm
IEVOQUJMRShXRUJNRVRBTCkKLQotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLQotT0JKQ19Q
Uk9UT0NPTChNVExDb21wdXRlQ29tbWFuZEVuY29kZXIpOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0gICAgCi1jbGFzcyBHUFVMZWdhY3lCdWZmZXI7Ci1jbGFzcyBHUFVMZWdhY3lDb21tYW5kQnVm
ZmVyOwotY2xhc3MgR1BVTGVnYWN5Q29tcHV0ZVBpcGVsaW5lU3RhdGU7Ci0KLXN0cnVjdCBHUFVM
ZWdhY3lTaXplOwotCi1jbGFzcyBHUFVMZWdhY3lDb21wdXRlQ29tbWFuZEVuY29kZXIgewotcHVi
bGljOgotICAgIGV4cGxpY2l0IEdQVUxlZ2FjeUNvbXB1dGVDb21tYW5kRW5jb2Rlcihjb25zdCBH
UFVMZWdhY3lDb21tYW5kQnVmZmVyJik7Ci0gICAgfkdQVUxlZ2FjeUNvbXB1dGVDb21tYW5kRW5j
b2RlcigpOwotCi0gICAgdm9pZCBzZXRDb21wdXRlUGlwZWxpbmVTdGF0ZShjb25zdCBHUFVMZWdh
Y3lDb21wdXRlUGlwZWxpbmVTdGF0ZSYpIGNvbnN0OwotICAgIHZvaWQgc2V0QnVmZmVyKGNvbnN0
IEdQVUxlZ2FjeUJ1ZmZlciYsIHVuc2lnbmVkLCB1bnNpZ25lZCkgY29uc3Q7Ci0gICAgdm9pZCBk
aXNwYXRjaChHUFVMZWdhY3lTaXplLCBHUFVMZWdhY3lTaXplKSBjb25zdDsKLSAgICB2b2lkIGVu
ZEVuY29kaW5nKCkgY29uc3Q7Ci0KLSNpZiBVU0UoTUVUQUwpCi1wcml2YXRlOgotICAgIFJldGFp
blB0cjxNVExDb21wdXRlQ29tbWFuZEVuY29kZXI+IG1fbWV0YWw7Ci0jZW5kaWYKLX07Ci0gICAg
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeUNvbXB1dGVQaXBlbGluZVN0YXRl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lDb21w
dXRlUGlwZWxpbmVTdGF0ZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGViNzA0
ZmNlNTVlZGVhY2MxY2ZjNGE3ODliODM1NTFkYjI2NmNkYzQuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0dQVUxlZ2FjeUNvbXB1dGVQaXBlbGluZVN0YXRlLmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDQyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgWXVpY2hpcm8gS2lrdXJh
ICh5Lmtpa3VyYUBnbWFpbC5jb20pCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJHUFVMZWdhY3lDb21wdXRl
UGlwZWxpbmVTdGF0ZS5oIgotCi0jaWYgRU5BQkxFKFdFQk1FVEFMKQotCi0jaW5jbHVkZSAiTG9n
Z2luZy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgCi1HUFVMZWdhY3lDb21wdXRlUGlw
ZWxpbmVTdGF0ZTo6fkdQVUxlZ2FjeUNvbXB1dGVQaXBlbGluZVN0YXRlKCkKLXsKLSAgICBMT0co
V2ViTWV0YWwsICJHUFVMZWdhY3lDb21wdXRlUGlwZWxpbmVTdGF0ZTo6fkdQVUxlZ2FjeUNvbXB1
dGVQaXBlbGluZVN0YXRlKCkiKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVM
ZWdhY3lDb21wdXRlUGlwZWxpbmVTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVUxlZ2FjeUNvbXB1dGVQaXBlbGluZVN0YXRlLmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDIyYjkzMDM3MDA5ZmI4NzUwNmE2MzM4NTE3MmVmNTA3NzVmYTM2YWQu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeUNvbXB1dGVQaXBlbGluZVN0YXRl
LmgKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE3IFl1aWNoaXJvIEtpa3VyYSAoeS5raWt1cmFAZ21haWwuY29tKQotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShX
RUJNRVRBTCkKLQotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLQotT0JKQ19QUk9UT0NPTChN
VExDb21wdXRlUGlwZWxpbmVTdGF0ZSk7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3Mg
R1BVTGVnYWN5RGV2aWNlOwotY2xhc3MgR1BVTGVnYWN5RnVuY3Rpb247Ci0KLWNsYXNzIEdQVUxl
Z2FjeUNvbXB1dGVQaXBlbGluZVN0YXRlIHsKLXB1YmxpYzoKLSAgICBHUFVMZWdhY3lDb21wdXRl
UGlwZWxpbmVTdGF0ZSgpID0gZGVmYXVsdDsKLSAgICBHUFVMZWdhY3lDb21wdXRlUGlwZWxpbmVT
dGF0ZShjb25zdCBHUFVMZWdhY3lEZXZpY2UmLCBjb25zdCBHUFVMZWdhY3lGdW5jdGlvbiYpOwot
ICAgIH5HUFVMZWdhY3lDb21wdXRlUGlwZWxpbmVTdGF0ZSgpOwotCi0jaWYgVVNFKE1FVEFMKQot
ICAgIE1UTENvbXB1dGVQaXBlbGluZVN0YXRlICptZXRhbCgpIGNvbnN0IHsgcmV0dXJuIG1fbWV0
YWwuZ2V0KCk7IH0KLSNlbmRpZgotCi0jaWYgVVNFKE1FVEFMKQotcHJpdmF0ZToKLSAgICBSZXRh
aW5QdHI8TVRMQ29tcHV0ZVBpcGVsaW5lU3RhdGU+IG1fbWV0YWw7Ci0jZW5kaWYKLX07Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5RGVwdGhTdGVuY2lsRGVzY3JpcHRvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5RGVwdGhT
dGVuY2lsRGVzY3JpcHRvci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDljYzc5
ZDZkZDYzMTNjMmEzZDg3ZDI0NzkxZDc2YzgzODA1NDMxMTMuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0dQVUxlZ2FjeURlcHRoU3RlbmNpbERlc2NyaXB0b3IuY3BwCisrKyAvZGV2L251bGwK
QEAgLTEsNDIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
LSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJHUFVMZWdhY3lEZXB0aFN0ZW5j
aWxEZXNjcmlwdG9yLmgiCi0KLSNpZiBFTkFCTEUoV0VCTUVUQUwpCi0KLSNpbmNsdWRlICJMb2dn
aW5nLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotR1BVTGVnYWN5RGVwdGhTdGVuY2lsRGVz
Y3JpcHRvcjo6fkdQVUxlZ2FjeURlcHRoU3RlbmNpbERlc2NyaXB0b3IoKQotewotICAgIExPRyhX
ZWJNZXRhbCwgIkdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3I6On5HUFVEZXB0aFN0ZW5jaWxEZXNj
cmlwdG9yKCkiKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lEZXB0
aFN0ZW5jaWxEZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvR1BVTGVnYWN5RGVwdGhTdGVuY2lsRGVzY3JpcHRvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBkOWNiZjE4MjVkMDkwNTczNWU0ZTQ1MDlkMTkyYmU0YWU4MjY2NzAxLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmgK
KysrIC9kZXYvbnVsbApAQCAtMSw2MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCTUVUQUwp
Ci0KLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0KLU9CSkNfQ0xBU1MgTVRMRGVwdGhTdGVu
Y2lsRGVzY3JpcHRvcjsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1lbnVtIGNsYXNzIEdQVUxl
Z2FjeUNvbXBhcmVGdW5jdGlvbjsKLQotY2xhc3MgR1BVTGVnYWN5RGVwdGhTdGVuY2lsRGVzY3Jp
cHRvciB7Ci1wdWJsaWM6Ci0gICAgR1BVTGVnYWN5RGVwdGhTdGVuY2lsRGVzY3JpcHRvcigpOwot
ICAgIH5HUFVMZWdhY3lEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yKCk7Ci0KLSAgICBib29sIGRlcHRo
V3JpdGVFbmFibGVkKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXREZXB0aFdyaXRlRW5hYmxlZChib29s
KSBjb25zdDsKLQotICAgIEdQVUxlZ2FjeUNvbXBhcmVGdW5jdGlvbiBkZXB0aENvbXBhcmVGdW5j
dGlvbigpIGNvbnN0OwotICAgIHZvaWQgc2V0RGVwdGhDb21wYXJlRnVuY3Rpb24oR1BVTGVnYWN5
Q29tcGFyZUZ1bmN0aW9uKSBjb25zdDsKLQotI2lmIFVTRShNRVRBTCkKLSAgICBNVExEZXB0aFN0
ZW5jaWxEZXNjcmlwdG9yICptZXRhbCgpIGNvbnN0IHsgcmV0dXJuIG1fbWV0YWwuZ2V0KCk7IH0K
LSNlbmRpZgotCi0jaWYgVVNFKE1FVEFMKQotcHJpdmF0ZToKLSAgICBSZXRhaW5QdHI8TVRMRGVw
dGhTdGVuY2lsRGVzY3JpcHRvcj4gbV9tZXRhbDsKLSNlbmRpZgotfTsKLSAgICAKLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5RGVwdGhTdGVuY2lsU3RhdGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeURlcHRoU3RlbmNpbFN0YXRl
LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDI3ZjU0ZjdjYmE4MDY0YWEyNTlm
ZTc2MmM4ZGFkZGQyNTI0NDU0Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5
RGVwdGhTdGVuY2lsU3RhdGUuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25m
aWcuaCIKLSNpbmNsdWRlICJHUFVMZWdhY3lEZXB0aFN0ZW5jaWxTdGF0ZS5oIgotCi0jaWYgRU5B
QkxFKFdFQk1FVEFMKQotCi0jaW5jbHVkZSAiTG9nZ2luZy5oIgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLUdQVUxlZ2FjeURlcHRoU3RlbmNpbFN0YXRlOjp+R1BVTGVnYWN5RGVwdGhTdGVuY2ls
U3RhdGUoKQotewotICAgIExPRyhXZWJNZXRhbCwgIkdQVUxlZ2FjeURlcHRoU3RlbmNpbFN0YXRl
Ojp+R1BVTGVnYWN5RGVwdGhTdGVuY2lsU3RhdGUoKSIpOwotfQotCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVUxlZ2FjeURlcHRoU3RlbmNpbFN0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5RGVwdGhTdGVuY2lsU3RhdGUuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjY0ZmY1NWE4NDY1OTk4MzZiZjg1ZDhmMzk5NDhlZTI2
NmVmMzcxYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5RGVwdGhTdGVuY2ls
U3RhdGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShX
RUJNRVRBTCkKLQotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL1JldGFp
blB0ci5oPgotCi1PQkpDX1BST1RPQ09MKE1UTERlcHRoU3RlbmNpbFN0YXRlKTsKLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1jbGFzcyBHUFVMZWdhY3lEZXZpY2U7Ci1jbGFzcyBHUFVMZWdhY3lE
ZXB0aFN0ZW5jaWxEZXNjcmlwdG9yOwotCi1jbGFzcyBHUFVMZWdhY3lEZXB0aFN0ZW5jaWxTdGF0
ZSB7Ci1wdWJsaWM6Ci0gICAgR1BVTGVnYWN5RGVwdGhTdGVuY2lsU3RhdGUoKSA9IGRlZmF1bHQ7
Ci0gICAgR1BVTGVnYWN5RGVwdGhTdGVuY2lsU3RhdGUoY29uc3QgR1BVTGVnYWN5RGV2aWNlJiwg
Y29uc3QgR1BVTGVnYWN5RGVwdGhTdGVuY2lsRGVzY3JpcHRvciYpOwotICAgIH5HUFVMZWdhY3lE
ZXB0aFN0ZW5jaWxTdGF0ZSgpOwotCi0gICAgU3RyaW5nIGxhYmVsKCkgY29uc3Q7Ci0gICAgdm9p
ZCBzZXRMYWJlbChjb25zdCBTdHJpbmcmKSBjb25zdDsKLQotI2lmIFVTRShNRVRBTCkKLSAgICBN
VExEZXB0aFN0ZW5jaWxTdGF0ZSAqbWV0YWwoKSBjb25zdCB7IHJldHVybiBtX21ldGFsLmdldCgp
OyB9Ci0jZW5kaWYKLQotI2lmIFVTRShNRVRBTCkKLXByaXZhdGU6Ci0gICAgUmV0YWluUHRyPE1U
TERlcHRoU3RlbmNpbFN0YXRlPiBtX21ldGFsOwotI2VuZGlmCi19OwotICAgIAotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lEZXZpY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeURldmljZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDk0ZWZiNjc0ZmQ2NGZiMmM0OTVkMzllYjg5YzhjZGQ2YThmYWM0ZTcuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeURldmljZS5jcHAKKysrIC9kZXYvbnVs
bApAQCAtMSw0MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkdQVUxlZ2FjeURldmljZS5o
IgotCi0jaWYgRU5BQkxFKFdFQk1FVEFMKQotCi0jaW5jbHVkZSAiTG9nZ2luZy5oIgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLUdQVUxlZ2FjeURldmljZTo6fkdQVUxlZ2FjeURldmljZSgpCi17
Ci0gICAgTE9HKFdlYk1ldGFsLCAiR1BVTGVnYWN5RGV2aWNlOjp+R1BVTGVnYWN5RGV2aWNlKCki
KTsKLSAgICBkaXNjb25uZWN0KCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BV
TGVnYWN5RGV2aWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BV
TGVnYWN5RGV2aWNlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc0NmQzNWJhNTFm
NmNlMDY1YjZiMGNjZGIxOWVmMTRmNDc4ZTUxZTYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L0dQVUxlZ2FjeURldmljZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNjcgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0j
aWYgRU5BQkxFKFdFQk1FVEFMKQotCi0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotCi1PQkpD
X0NMQVNTIENBTGF5ZXI7Ci1PQkpDX0NMQVNTIFdlYk1ldGFsTGF5ZXI7Ci0KLU9CSkNfUFJPVE9D
T0woTVRMRGV2aWNlKTsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHUFVMZWdhY3lE
ZXZpY2UgewotcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIEdQVUxlZ2FjeURldmljZSgpOwot
ICAgIFdFQkNPUkVfRVhQT1JUIH5HUFVMZWdhY3lEZXZpY2UoKTsKLQotICAgIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgb3BlcmF0b3IhKCkgY29uc3Q7Ci0KLSAgICB2b2lkIHJlc2hhcGUoaW50IHdpZHRo
LCBpbnQgaGVpZ2h0KSBjb25zdDsKLQotI2lmIFVTRShNRVRBTCkKLSAgICBXZWJNZXRhbExheWVy
ICpsYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fbGF5ZXIuZ2V0KCk7IH0KLSAgICBXRUJDT1JFX0VY
UE9SVCBDQUxheWVyICpwbGF0Zm9ybUxheWVyKCkgY29uc3Q7Ci0gICAgTVRMRGV2aWNlICptZXRh
bCgpIGNvbnN0IHsgcmV0dXJuIG1fbWV0YWwuZ2V0KCk7IH0KLSNlbmRpZgotCi0gICAgdm9pZCBt
YXJrTGF5ZXJDb21wb3NpdGVkKCkgY29uc3QgeyB9Ci0KLXByaXZhdGU6Ci0gICAgdm9pZCBkaXNj
b25uZWN0KCk7Ci0KLSNpZiBVU0UoTUVUQUwpCi0gICAgUmV0YWluUHRyPFdlYk1ldGFsTGF5ZXI+
IG1fbGF5ZXI7Ci0gICAgUmV0YWluUHRyPE1UTERldmljZT4gbV9tZXRhbDsKLSNlbmRpZgotfTsK
LQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lEcmF3YWJsZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5RHJhd2FibGUuY3BwCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNDJmZGM1OWI0YTAwOTRkZmEwYWFkODI1YTY5
ZGMwNjU3ZjFmMDlmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lEcmF3YWJs
ZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IkdQVUxlZ2FjeURyYXdhYmxlLmgiCi0KLSNpZiBFTkFCTEUoV0VCTUVUQUwpCi0KLSNpbmNsdWRl
ICJMb2dnaW5nLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotR1BVTGVnYWN5RHJhd2FibGU6
On5HUFVMZWdhY3lEcmF3YWJsZSgpCi17Ci0gICAgTE9HKFdlYk1ldGFsLCAiR1BVTGVnYWN5RHJh
d2FibGU6On5HUFVMZWdhY3lEcmF3YWJsZSgpIik7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvR1BVTGVnYWN5RHJhd2FibGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9HUFVMZWdhY3lEcmF3YWJsZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA5YWJmZmUyZTlkNTk5MGU2ZTE4MTc5OGIwMmEzYjMxYWFmMWIzOWI1Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lEcmF3YWJsZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNjAg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNw
cmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQk1FVEFMKQotCi0jaW5jbHVkZSA8d3RmL1JldGFp
blB0ci5oPgotCi1PQkpDX1BST1RPQ09MKE1UTERyYXdhYmxlKTsKLU9CSkNfUFJPVE9DT0woTVRM
VGV4dHVyZSk7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgR1BVTGVnYWN5RGV2aWNl
OwotCi1jbGFzcyBHUFVMZWdhY3lEcmF3YWJsZSB7Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQgR1BV
TGVnYWN5RHJhd2FibGUoY29uc3QgR1BVTGVnYWN5RGV2aWNlJik7Ci0gICAgfkdQVUxlZ2FjeURy
YXdhYmxlKCk7Ci0KLSAgICB2b2lkIHJlbGVhc2UoKTsKLQotI2lmIFVTRShNRVRBTCkKLSAgICBN
VExEcmF3YWJsZSAqbWV0YWwoKSBjb25zdDsKLQotICAgIC8vIEZJWE1FOiBXZWJNZXRhbCAtIG5v
dCBhbGwgZHJhd2FibGVzIHNob3VsZCBoYXZlIHRoaXMuIE9ubHkgdGhlIGZyYW1lYnVmZmVyLgot
ICAgIE1UTFRleHR1cmUgKnRleHR1cmUoKSBjb25zdDsKLSNlbmRpZgotCi0jaWYgVVNFKE1FVEFM
KQotcHJpdmF0ZToKLSAgICBSZXRhaW5QdHI8TVRMRHJhd2FibGU+IG1fbWV0YWw7Ci0jZW5kaWYK
LX07Ci0gICAgCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lFbnVtcy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeUVudW1zLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDExZTE4ZDQyMzAzNTBjOGNmNTkxODliNDRlMDEyZmU5
MjMxMzk5MTMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeUVudW1zLmgKKysr
IC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCTUVUQUwpCi0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotZW51bSBjbGFzcyBHUFVMZWdhY3lDb21wYXJlRnVuY3Rp
b24gewotICAgIE5ldmVyID0gMCwKLSAgICBMZXNzID0gMSwKLSAgICBFcXVhbCA9IDIsCi0gICAg
TGVzc0VxdWFsID0gMywKLSAgICBHcmVhdGVyID0gNCwKLSAgICBOb3RFcXVhbCA9IDUsCi0gICAg
R3JlYXRlckVxdWFsID0gNiwKLSAgICBBbHdheXMgPSA3Ci19OwotCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVUxlZ2FjeUZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lGdW5jdGlvbi5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDc0ZDU0MjU4MGFjZDdkZTAwMTY3OGYwNzQ1YjE0YzQ4NmVhMzIxZGUuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeUZ1bmN0aW9uLmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDQyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
Ci0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiR1BVTGVnYWN5RnVuY3Rpb24u
aCIKLQotI2lmIEVOQUJMRShXRUJNRVRBTCkKLQotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1HUFVMZWdhY3lGdW5jdGlvbjo6fkdQVUxlZ2FjeUZ1bmN0aW9u
KCkKLXsKLSAgICBMT0coV2ViTWV0YWwsICJHUFVMZWdhY3lGdW5jdGlvbjo6fkdQVUxlZ2FjeUZ1
bmN0aW9uKCkiKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lGdW5j
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeUZ1
bmN0aW9uLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVmOTY5MGM1NzhhYzZhMWVm
Njc0NTM4MThhNzc0YWQ4ZDdiNTZkMDEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxl
Z2FjeUZ1bmN0aW9uLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
LSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBF
TkFCTEUoV0VCTUVUQUwpCi0KLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0KLU9CSkNfUFJP
VE9DT0woTVRMRnVuY3Rpb24pOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEdQVUxl
Z2FjeUxpYnJhcnk7Ci0KLWNsYXNzIEdQVUxlZ2FjeUZ1bmN0aW9uIHsKLXB1YmxpYzoKLSAgICBX
RUJDT1JFX0VYUE9SVCBHUFVMZWdhY3lGdW5jdGlvbihjb25zdCBHUFVMZWdhY3lMaWJyYXJ5Jiwg
Y29uc3QgU3RyaW5nJiBuYW1lKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB+R1BVTGVnYWN5RnVuY3Rp
b24oKTsKLQotICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3Q7Ci0KLSAgICBXRUJDT1JFX0VYUE9S
VCBTdHJpbmcgbmFtZSgpIGNvbnN0OwotCi0jaWYgVVNFKE1FVEFMKQotICAgIE1UTEZ1bmN0aW9u
ICptZXRhbCgpIGNvbnN0IHsgcmV0dXJuIG1fbWV0YWwuZ2V0KCk7IH0KLSNlbmRpZgotCi0jaWYg
VVNFKE1FVEFMKQotcHJpdmF0ZToKLSAgICBSZXRhaW5QdHI8TVRMRnVuY3Rpb24+IG1fbWV0YWw7
Ci0jZW5kaWYKLX07Ci0gICAgCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeUxp
YnJhcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2Fj
eUxpYnJhcnkuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYzJiMzk2MmQ3ODVm
ZTI1MDM5ZWRmYzQwNDVkNTE1MDQ0ZmUyN2EzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9H
UFVMZWdhY3lMaWJyYXJ5LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0jaW5jbHVkZSAiR1BVTGVnYWN5TGlicmFyeS5oIgotCi0jaWYgRU5BQkxFKFdFQk1FVEFM
KQotCi0jaW5jbHVkZSAiTG9nZ2luZy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUdQVUxl
Z2FjeUxpYnJhcnk6On5HUFVMZWdhY3lMaWJyYXJ5KCkKLXsKLSAgICBMT0coV2ViTWV0YWwsICJH
UFVMZWdhY3lMaWJyYXJ5Ojp+R1BVTGVnYWN5TGlicmFyeSgpIik7Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5TGlicmFyeS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeUxpYnJhcnkuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMTUwZGYzMTIyYmIyMDI1ZDEwOWU0NjRkYjEwMGYyZDdiOTY4YTZiMy4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5TGlicmFyeS5oCisrKyAvZGV2L251bGwKQEAg
LTEsNjAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQk1FVEFMKQotCi0jaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgotCi1PQkpDX1BST1RPQ09MKE1UTExpYnJhcnkpOwotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLWNsYXNzIEdQVUxlZ2FjeURldmljZTsKLQotY2xhc3MgR1BVTGVnYWN5TGli
cmFyeSB7Ci1wdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgR1BVTGVnYWN5TGlicmFyeShjb25z
dCBHUFVMZWdhY3lEZXZpY2UmLCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUpOwotICAgIFdFQkNP
UkVfRVhQT1JUIH5HUFVMZWdhY3lMaWJyYXJ5KCk7Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCBTdHJp
bmcgbGFiZWwoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldExhYmVsKGNvbnN0
IFN0cmluZyYpIGNvbnN0OwotCi0gICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPFN0cmluZz4gZnVu
Y3Rpb25OYW1lcygpIGNvbnN0OwotCi0jaWYgVVNFKE1FVEFMKQotICAgIE1UTExpYnJhcnkgKm1l
dGFsKCkgY29uc3QgeyByZXR1cm4gbV9tZXRhbC5nZXQoKTsgfQotI2VuZGlmCi0KLSNpZiBVU0Uo
TUVUQUwpCi1wcml2YXRlOgotICAgIFJldGFpblB0cjxNVExMaWJyYXJ5PiBtX21ldGFsOwotI2Vu
ZGlmCi19OwotICAgIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lSZW5kZXJD
b21tYW5kRW5jb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
R1BVTGVnYWN5UmVuZGVyQ29tbWFuZEVuY29kZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBhM2U3NDg3NWQ3YTliYTI5ZjJiMTAxODhlZjFlOGUxZjA4MTE2YzkxLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lSZW5kZXJDb21tYW5kRW5jb2Rlci5jcHAKKysr
IC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkdQVUxlZ2Fj
eVJlbmRlckNvbW1hbmRFbmNvZGVyLmgiCi0KLSNpZiBFTkFCTEUoV0VCTUVUQUwpCi0KLSNpbmNs
dWRlICJMb2dnaW5nLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotR1BVTGVnYWN5UmVuZGVy
Q29tbWFuZEVuY29kZXI6On5HUFVMZWdhY3lSZW5kZXJDb21tYW5kRW5jb2RlcigpCi17Ci0gICAg
TE9HKFdlYk1ldGFsLCAiR1BVTGVnYWN5UmVuZGVyQ29tbWFuZEVuY29kZXI6On5HUFVMZWdhY3lS
ZW5kZXJDb21tYW5kRW5jb2RlcigpIik7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQot
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
R1BVTGVnYWN5UmVuZGVyQ29tbWFuZEVuY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lSZW5kZXJDb21tYW5kRW5jb2Rlci5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA2Y2U2MWUwMzc1YjUyM2M2MGEwMDEwMDcwYjU1M2JjZjVkMzAw
NDU2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lSZW5kZXJDb21tYW5kRW5j
b2Rlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdF
Qk1FVEFMKQotCi0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotCi1PQkpDX1BST1RPQ09MKE1U
TFJlbmRlckNvbW1hbmRFbmNvZGVyKTsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBH
UFVMZWdhY3lCdWZmZXI7Ci1jbGFzcyBHUFVMZWdhY3lDb21tYW5kQnVmZmVyOwotY2xhc3MgR1BV
TGVnYWN5RGVwdGhTdGVuY2lsU3RhdGU7Ci1jbGFzcyBHUFVMZWdhY3lSZW5kZXJQYXNzRGVzY3Jp
cHRvcjsKLWNsYXNzIEdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lU3RhdGU7Ci0KLWNsYXNzIEdQVUxl
Z2FjeVJlbmRlckNvbW1hbmRFbmNvZGVyIHsKLXB1YmxpYzoKLSAgICBHUFVMZWdhY3lSZW5kZXJD
b21tYW5kRW5jb2Rlcihjb25zdCBHUFVMZWdhY3lDb21tYW5kQnVmZmVyJiwgY29uc3QgR1BVTGVn
YWN5UmVuZGVyUGFzc0Rlc2NyaXB0b3ImKTsKLSAgICB+R1BVTGVnYWN5UmVuZGVyQ29tbWFuZEVu
Y29kZXIoKTsKLQotICAgIHZvaWQgc2V0UmVuZGVyUGlwZWxpbmVTdGF0ZShjb25zdCBHUFVMZWdh
Y3lSZW5kZXJQaXBlbGluZVN0YXRlJikgY29uc3Q7Ci0gICAgdm9pZCBzZXREZXB0aFN0ZW5jaWxT
dGF0ZShjb25zdCBHUFVMZWdhY3lEZXB0aFN0ZW5jaWxTdGF0ZSYpIGNvbnN0OwotICAgIHZvaWQg
c2V0VmVydGV4QnVmZmVyKGNvbnN0IEdQVUxlZ2FjeUJ1ZmZlciYsIHVuc2lnbmVkIG9mZnNldCwg
dW5zaWduZWQgaW5kZXgpIGNvbnN0OwotICAgIHZvaWQgc2V0RnJhZ21lbnRCdWZmZXIoY29uc3Qg
R1BVTGVnYWN5QnVmZmVyJiwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBpbmRleCkgY29uc3Q7
Ci0gICAgdm9pZCBkcmF3UHJpbWl0aXZlcyh1bnNpZ25lZCB0eXBlLCB1bnNpZ25lZCBzdGFydCwg
dW5zaWduZWQgY291bnQpIGNvbnN0OwotICAgIHZvaWQgZW5kRW5jb2RpbmcoKSBjb25zdDsKLQot
I2lmIFVTRShNRVRBTCkKLXByaXZhdGU6Ci0gICAgUmV0YWluUHRyPE1UTFJlbmRlckNvbW1hbmRF
bmNvZGVyPiBtX21ldGFsOwotI2VuZGlmCi19OwotICAgIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9HUFVMZWdhY3lSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeVJlbmRlclBhc3NBdHRhY2ht
ZW50RGVzY3JpcHRvci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDljYWY1ODEw
N2MzZTNkYTAxMjhjZmMwODM4ODkxODk5YTM1ZmNlYWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L0dQVUxlZ2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSw0MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0g
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkdQVUxlZ2FjeVJlbmRl
clBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5oIgotCi0jaWYgRU5BQkxFKFdFQk1FVEFMKQotCi0j
aW5jbHVkZSAiR1BVTGVnYWN5VGV4dHVyZS5oIgotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1HUFVMZWdhY3lSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0
b3I6On5HUFVMZWdhY3lSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IoKQotewotICAgIExP
RyhXZWJNZXRhbCwgIkdQVUxlZ2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjo6fkdQ
VUxlZ2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcigpIik7Ci19Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9y
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5UmVuZGVy
UGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGYyM2M3NTBkNGIzMTFhNGVhMjk1MmQ5N2M3M2Y4ODEwNDJkNDA5N2IuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5oCisr
KyAvZGV2L251bGwKQEAgLTEsNjUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQk1FVEFMKQot
Ci0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotCi1PQkpDX0NMQVNTIE1UTFJlbmRlclBhc3NB
dHRhY2htZW50RGVzY3JpcHRvcjsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHUFVM
ZWdhY3lUZXh0dXJlOwotCi1jbGFzcyBHUFVMZWdhY3lSZW5kZXJQYXNzQXR0YWNobWVudERlc2Ny
aXB0b3IgewotcHVibGljOgotICAgIH5HUFVMZWdhY3lSZW5kZXJQYXNzQXR0YWNobWVudERlc2Ny
aXB0b3IoKTsKLQotICAgIHVuc2lnbmVkIGxvYWRBY3Rpb24oKSBjb25zdDsKLSAgICB2b2lkIHNl
dExvYWRBY3Rpb24odW5zaWduZWQpIGNvbnN0OwotCi0gICAgdW5zaWduZWQgc3RvcmVBY3Rpb24o
KSBjb25zdDsKLSAgICB2b2lkIHNldFN0b3JlQWN0aW9uKHVuc2lnbmVkKSBjb25zdDsKLQotICAg
IHZvaWQgc2V0VGV4dHVyZShjb25zdCBHUFVMZWdhY3lUZXh0dXJlJikgY29uc3Q7Ci0KLSNpZiBV
U0UoTUVUQUwpCi0gICAgTVRMUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yICptZXRhbCgp
IGNvbnN0OwotI2VuZGlmCi0KLSNpZiBVU0UoTUVUQUwpCi1wcm90ZWN0ZWQ6Ci0gICAgZXhwbGlj
aXQgR1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yKE1UTFJlbmRlclBhc3NB
dHRhY2htZW50RGVzY3JpcHRvciAqKTsKLQotcHJpdmF0ZToKLSAgICBSZXRhaW5QdHI8TVRMUmVu
ZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yPiBtX21ldGFsOwotI2VuZGlmCi19OwotICAgIAot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lSZW5kZXJQYXNzQ29sb3JBdHRhY2ht
ZW50RGVzY3JpcHRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
R1BVTGVnYWN5UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuY3BwCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYTgyZTk0ZDA4MzYyOTMyNTU1MjFhZTBjNGU5NGY1OGZm
NWFlZDViLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lSZW5kZXJQYXNzQ29s
b3JBdHRhY2htZW50RGVzY3JpcHRvci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQot
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIkdQVUxlZ2FjeVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnRE
ZXNjcmlwdG9yLmgiCi0KLSNpZiBFTkFCTEUoV0VCTUVUQUwpCi0KLSNpbmNsdWRlICJMb2dnaW5n
LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotR1BVTGVnYWN5UmVuZGVyUGFzc0NvbG9yQXR0
YWNobWVudERlc2NyaXB0b3I6On5HUFVMZWdhY3lSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVz
Y3JpcHRvcigpCi17Ci0gICAgTE9HKFdlYk1ldGFsLCAiR1BVTGVnYWN5UmVuZGVyUGFzc0NvbG9y
QXR0YWNobWVudERlc2NyaXB0b3I6On5HUFVMZWdhY3lSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50
RGVzY3JpcHRvcigpIik7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5
UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVz
Y3JpcHRvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlN2U4NDFjOTFiZDI0NzNi
MWM5N2ZkMjJlODUyNjY5MTBiZjk3MzRmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVM
ZWdhY3lSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oCisrKyAvZGV2L251bGwK
QEAgLTEsNTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
LSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQk1FVEFMKQotCi0jaW5jbHVkZSAi
R1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmgiCi0KLU9CSkNfQ0xBU1Mg
TVRMUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3I7Ci0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotY2xhc3MgR1BVTGVnYWN5UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0
b3IgOiBwdWJsaWMgR1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yIHsKLXB1
YmxpYzoKLSNpZiBVU0UoTUVUQUwpCi0gICAgR1BVTGVnYWN5UmVuZGVyUGFzc0NvbG9yQXR0YWNo
bWVudERlc2NyaXB0b3IoTVRMUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IgKik7
Ci0jZW5kaWYKLSAgICB+R1BVTGVnYWN5UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0
b3IoKTsKLQotICAgIFZlY3RvcjxmbG9hdD4gY2xlYXJDb2xvcigpIGNvbnN0OwotICAgIHZvaWQg
c2V0Q2xlYXJDb2xvcihjb25zdCBWZWN0b3I8ZmxvYXQ+JikgY29uc3Q7Ci0KLSNpZiBVU0UoTUVU
QUwpCi0gICAgTVRMUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IgKm1ldGFsKCkg
Y29uc3Q7Ci0jZW5kaWYKLX07Ci0gICAgCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxl
Z2FjeVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lSZW5kZXJQYXNzRGVwdGhBdHRhY2ht
ZW50RGVzY3JpcHRvci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFlOWE4Yjcz
YjNlNjk4OWJjNjZiM2QzNTU2YjA3MTAzMTAxYjJiZWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L0dQVUxlZ2FjeVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcAorKysg
L2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiR1BVTGVnYWN5
UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IuaCIKLQotI2lmIEVOQUJMRShXRUJN
RVRBTCkKLQotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1H
UFVMZWdhY3lSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcjo6fkdQVUxlZ2FjeVJl
bmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yKCkKLXsKLSAgICBMT0coV2ViTWV0YWws
ICJHUFVSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcjo6fkdQVVJlbmRlclBhc3NE
ZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yKCkiKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9HUFVMZWdhY3lSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeVJlbmRlclBhc3NEZXB0
aEF0dGFjaG1lbnREZXNjcmlwdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI2
YzFhZjc5MDUzZTZjMWY2NTY3NWVjODgxZWNiNmMyODk1N2M4ZDAuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVUxlZ2FjeVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmgK
KysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCTUVUQUwp
Ci0KLSNpbmNsdWRlICJHUFVMZWdhY3lSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuaCIK
LQotT0JKQ19DTEFTUyBNVExSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcjsKLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHUFVMZWdhY3lSZW5kZXJQYXNzRGVwdGhBdHRh
Y2htZW50RGVzY3JpcHRvciA6IHB1YmxpYyBHUFVMZWdhY3lSZW5kZXJQYXNzQXR0YWNobWVudERl
c2NyaXB0b3IgewotcHVibGljOgotI2lmIFVTRShNRVRBTCkKLSAgICBHUFVMZWdhY3lSZW5kZXJQ
YXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcihNVExSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50
RGVzY3JpcHRvciAqKTsKLSNlbmRpZgotICAgIH5HUFVMZWdhY3lSZW5kZXJQYXNzRGVwdGhBdHRh
Y2htZW50RGVzY3JpcHRvcigpOwotCi0gICAgZG91YmxlIGNsZWFyRGVwdGgoKSBjb25zdDsKLSAg
ICB2b2lkIHNldENsZWFyRGVwdGgoZG91YmxlKSBjb25zdDsKLQotI2lmIFVTRShNRVRBTCkKLXBy
aXZhdGU6Ci0gICAgTVRMUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IgKm1ldGFs
KCkgY29uc3Q7Ci0jZW5kaWYKLX07Ci0gICAgCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQ
VUxlZ2FjeVJlbmRlclBhc3NEZXNjcmlwdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lSZW5kZXJQYXNzRGVzY3JpcHRvci5jcHAKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU2MzZhN2I3MjNlZDQxMjdlZDUzNGUwM2NmNTE3OWE5ZTIy
YTIxYmYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeVJlbmRlclBhc3NEZXNj
cmlwdG9yLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiR1BVTGVnYWN5UmVuZGVyUGFzc0Rlc2NyaXB0b3IuaCIKLQotI2lmIEVOQUJMRShXRUJN
RVRBTCkKLQotI2luY2x1ZGUgIkdQVUxlZ2FjeVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNj
cmlwdG9yLmgiCi0jaW5jbHVkZSAiTG9nZ2luZy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LUdQVUxlZ2FjeVJlbmRlclBhc3NEZXNjcmlwdG9yOjp+R1BVTGVnYWN5UmVuZGVyUGFzc0Rlc2Ny
aXB0b3IoKQotewotICAgIExPRyhXZWJNZXRhbCwgIkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yOjp+
R1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IoKSIpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L0dQVUxlZ2FjeVJlbmRlclBhc3NEZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5UmVuZGVyUGFzc0Rlc2NyaXB0b3IuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmFlODE2OTBiZWUxYzIxNzYyMDNhNTkyYWQyMjY3MWZi
NGU0YzhlOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5UmVuZGVyUGFzc0Rl
c2NyaXB0b3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDU5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJM
RShXRUJNRVRBTCkKLQotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLQotT0JKQ19DTEFTUyBN
VExSZW5kZXJQYXNzRGVzY3JpcHRvcjsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBH
UFVMZWdhY3lSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjsKLWNsYXNzIEdQVUxl
Z2FjeVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yOwotCi1jbGFzcyBHUFVMZWdh
Y3lSZW5kZXJQYXNzRGVzY3JpcHRvciB7Ci1wdWJsaWM6Ci0gICAgR1BVTGVnYWN5UmVuZGVyUGFz
c0Rlc2NyaXB0b3IoKTsKLSAgICB+R1BVTGVnYWN5UmVuZGVyUGFzc0Rlc2NyaXB0b3IoKTsKLQot
ICAgIFZlY3RvcjxHUFVMZWdhY3lSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcj4g
Y29sb3JBdHRhY2htZW50cygpIGNvbnN0OwotICAgIEdQVUxlZ2FjeVJlbmRlclBhc3NEZXB0aEF0
dGFjaG1lbnREZXNjcmlwdG9yIGRlcHRoQXR0YWNobWVudCgpIGNvbnN0OwotCi0jaWYgVVNFKE1F
VEFMKQotICAgIE1UTFJlbmRlclBhc3NEZXNjcmlwdG9yICptZXRhbCgpIGNvbnN0OwotI2VuZGlm
Ci0KLSNpZiBVU0UoTUVUQUwpCi1wcml2YXRlOgotICAgIFJldGFpblB0cjxNVExSZW5kZXJQYXNz
RGVzY3JpcHRvcj4gbV9tZXRhbDsKLSNlbmRpZgotfTsKLSAgICAKLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9y
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lSZW5k
ZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuY3BwCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBhOGU2ZTEyMmEzNWMyODcyMTI3NGY4YmNkNWY0M2I0Njc1NmEzZmU4Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lSZW5kZXJQaXBlbGluZUNvbG9yQXR0
YWNobWVudERlc2NyaXB0b3IuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25m
aWcuaCIKLSNpbmNsdWRlICJHUFVMZWdhY3lSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERl
c2NyaXB0b3IuaCIKLQotI2lmIEVOQUJMRShXRUJNRVRBTCkKLQotI2luY2x1ZGUgIkxvZ2dpbmcu
aCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1HUFVMZWdhY3lSZW5kZXJQaXBlbGluZUNvbG9y
QXR0YWNobWVudERlc2NyaXB0b3I6On5HUFVMZWdhY3lSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNo
bWVudERlc2NyaXB0b3IoKQotewotICAgIExPRyhXZWJNZXRhbCwgIkdQVUxlZ2FjeVJlbmRlclBp
cGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6fkdQVUxlZ2FjeVJlbmRlclBpcGVsaW5l
Q29sb3JBdHRhY2htZW50RGVzY3JpcHRvcigpIik7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5UmVuZGVyUGlw
ZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGQyYzYwMzQ2ODYzNzNkMTI5MDJkYjYyOTIwNzcwYmZiMDFjMWM1ZDAuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50
RGVzY3JpcHRvci5oCisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0g
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5B
QkxFKFdFQk1FVEFMKQotCi0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotCi1PQkpDX0NMQVNT
IE1UTFJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjsKLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1jbGFzcyBHUFVMZWdhY3lSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVu
dERlc2NyaXB0b3IgewotcHVibGljOgotI2lmIFVTRShNRVRBTCkKLSAgICBHUFVMZWdhY3lSZW5k
ZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IoTVRMUmVuZGVyUGlwZWxpbmVDb2xv
ckF0dGFjaG1lbnREZXNjcmlwdG9yICopOwotI2VuZGlmCi0gICAgfkdQVUxlZ2FjeVJlbmRlclBp
cGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcigpOwotCi0gICAgdW5zaWduZWQgcGl4ZWxG
b3JtYXQoKSBjb25zdDsKLSAgICB2b2lkIHNldFBpeGVsRm9ybWF0KHVuc2lnbmVkKSBjb25zdDsK
LQotI2lmIFVTRShNRVRBTCkKLSAgICBNVExSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERl
c2NyaXB0b3IgKm1ldGFsKCkgY29uc3Q7Ci0jZW5kaWYKLQotI2lmIFVTRShNRVRBTCkKLXByaXZh
dGU6Ci0gICAgUmV0YWluUHRyPE1UTFJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3Jp
cHRvcj4gbV9tZXRhbDsKLSNlbmRpZgotfTsKLSAgICAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
LQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lSZW5kZXJQaXBlbGluZURlc2NyaXB0b3Iu
Y3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZDFmZDYwYzNmNWFiOGJiODY2MDli
YzI3NWUwMTkyYTUyNWJhNmI3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lS
ZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
LSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJHUFVMZWdhY3lSZW5kZXJQaXBlbGluZURlc2NyaXB0b3Iu
aCIKLQotI2lmIEVOQUJMRShXRUJNRVRBTCkKLQotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1HUFVMZWdhY3lSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6On5H
UFVMZWdhY3lSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IoKQotewotICAgIExPRyhXZWJNZXRhbCwg
IkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6fkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
cigpIik7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5UmVuZGVyUGlw
ZWxpbmVEZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
R1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGVjMDkwN2U4MWYwZDFjMzQ5MjQyZWQ1ZjgyOWUzZWUzM2M4ODlkZjIuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5o
CisrKyAvZGV2L251bGwKQEAgLTEsNjYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQk1FVEFM
KQotCi0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotCi1PQkpDX0NMQVNTIE1UTFJlbmRlclBp
cGVsaW5lRGVzY3JpcHRvcjsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHUFVMZWdh
Y3lGdW5jdGlvbjsKLWNsYXNzIEdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50
RGVzY3JpcHRvcjsKLQotY2xhc3MgR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yIHsK
LXB1YmxpYzoKLSAgICBHUFVMZWdhY3lSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IoKTsKLSAgICB+
R1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKCk7Ci0KLSAgICB2b2lkIHNldFZlcnRl
eEZ1bmN0aW9uKGNvbnN0IEdQVUxlZ2FjeUZ1bmN0aW9uJikgY29uc3Q7Ci0gICAgdm9pZCBzZXRG
cmFnbWVudEZ1bmN0aW9uKGNvbnN0IEdQVUxlZ2FjeUZ1bmN0aW9uJikgY29uc3Q7Ci0KLSAgICB1
bnNpZ25lZCBkZXB0aEF0dGFjaG1lbnRQaXhlbEZvcm1hdCgpIGNvbnN0OwotICAgIHZvaWQgc2V0
RGVwdGhBdHRhY2htZW50UGl4ZWxGb3JtYXQodW5zaWduZWQpIGNvbnN0OwotCi0gICAgVmVjdG9y
PEdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcj4gY29sb3JB
dHRhY2htZW50cygpIGNvbnN0OwotCi0gICAgdm9pZCByZXNldCgpIGNvbnN0OwotCi0jaWYgVVNF
KE1FVEFMKQotICAgIE1UTFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciAqbWV0YWwoKSBjb25zdDsK
LSNlbmRpZgotCi0jaWYgVVNFKE1FVEFMKQotcHJpdmF0ZToKLSAgICBSZXRhaW5QdHI8TVRMUmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yPiBtX21ldGFsOwotI2VuZGlmCi19OwotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeVJlbmRlclBpcGVsaW5lU3RhdGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeVJlbmRlclBpcGVsaW5lU3Rh
dGUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZTRmOWM2ZDgwOTU4M2E0NzI0
MzJhMWI2NjJkYjgzYzcwZmQxYTA0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdh
Y3lSZW5kZXJQaXBlbGluZVN0YXRlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0g
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVTdGF0ZS5oIgotCi0j
aWYgRU5BQkxFKFdFQk1FVEFMKQotCi0jaW5jbHVkZSAiTG9nZ2luZy5oIgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLUdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lU3RhdGU6On5HUFVMZWdhY3lSZW5k
ZXJQaXBlbGluZVN0YXRlKCkKLXsKLSAgICBMT0coV2ViTWV0YWwsICJHUFVMZWdhY3lSZW5kZXJQ
aXBlbGluZVN0YXRlOjp+R1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVTdGF0ZSgpIik7Ci19Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVTdGF0ZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeVJlbmRlclBpcGVs
aW5lU3RhdGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWEwOWU2YTQ4YTM0ODhh
NGU5YmEyNWZhZjI4ZWUyNzczODhjNTA0NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BV
TGVnYWN5UmVuZGVyUGlwZWxpbmVTdGF0ZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
Ci0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3By
YWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCTUVUQUwpCi0KLSNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+Ci0KLU9CSkNfUFJPVE9DT0woTVRMUmVuZGVyUGlwZWxpbmVTdGF0ZSk7Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgR1BVTGVnYWN5RGV2aWNlOwotY2xhc3MgR1BVTGVnYWN5
UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOwotCi1jbGFzcyBHUFVMZWdhY3lSZW5kZXJQaXBlbGlu
ZVN0YXRlIHsKLXB1YmxpYzoKLSAgICBHUFVMZWdhY3lSZW5kZXJQaXBlbGluZVN0YXRlKCkgPSBk
ZWZhdWx0OwotICAgIEdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lU3RhdGUoY29uc3QgR1BVTGVnYWN5
RGV2aWNlJiwgY29uc3QgR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yJik7Ci0gICAg
fkdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lU3RhdGUoKTsKLQotICAgIFN0cmluZyBsYWJlbCgpIGNv
bnN0OwotICAgIHZvaWQgc2V0TGFiZWwoY29uc3QgU3RyaW5nJikgY29uc3Q7Ci0KLSNpZiBVU0Uo
TUVUQUwpCi0gICAgTVRMUmVuZGVyUGlwZWxpbmVTdGF0ZSAqbWV0YWwoKSBjb25zdDsKLSNlbmRp
ZgotCi0jaWYgVVNFKE1FVEFMKQotcHJpdmF0ZToKLSAgICBSZXRhaW5QdHI8TVRMUmVuZGVyUGlw
ZWxpbmVTdGF0ZT4gbV9tZXRhbDsKLSNlbmRpZgotfTsKLSAgICAKLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvR1BVTGVnYWN5U2l6ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0dQVUxlZ2FjeVNpemUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjkw
Y2VhMzUxZmI5ZDZhMzhjYWIzNjRjY2NlOTcxYWRlMjg0MzJmYy4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvR1BVTGVnYWN5U2l6ZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBZdWljaGlybyBLaWt1cmEgKHkua2lrdXJhQGdtYWls
LmNvbSkKLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0g
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdt
YSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCTUVUQUwpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLSAg
ICAKLXN0cnVjdCBHUFVMZWdhY3lTaXplIHsKLSAgICB1bnNpZ25lZCB3aWR0aDsKLSAgICB1bnNp
Z25lZCBoZWlnaHQ7Ci0gICAgdW5zaWduZWQgZGVwdGg7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVUxlZ2FjeVRleHR1cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeVRleHR1cmUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwZDljYzJjODk0MWZhNzRhNmY3N2JkMjUxODc1ZTY5ZmU5OTA1MzQyLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVMZWdhY3lUZXh0dXJlLmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDQyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiR1BVTGVnYWN5VGV4dHVyZS5oIgot
Ci0jaWYgRU5BQkxFKFdFQk1FVEFMKQotCi0jaW5jbHVkZSAiTG9nZ2luZy5oIgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLUdQVUxlZ2FjeVRleHR1cmU6On5HUFVMZWdhY3lUZXh0dXJlKCkKLXsK
LSAgICBMT0coV2ViTWV0YWwsICJHUFVMZWdhY3lUZXh0dXJlOjp+R1BVTGVnYWN5VGV4dHVyZSgp
Iik7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5VGV4dHVyZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeVRleHR1cmUuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2VmZWMyZTIwNzZlMWZiNzgwMzJlZTllNzgw
MjVhMjcwYWY5MDQxZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5VGV4dHVy
ZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNjEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQk1F
VEFMKQotCi0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotCi1PQkpDX1BST1RPQ09MKE1UTFRl
eHR1cmUpOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEdQVUxlZ2FjeURldmljZTsK
LWNsYXNzIEdQVUxlZ2FjeURyYXdhYmxlOwotY2xhc3MgR1BVTGVnYWN5VGV4dHVyZURlc2NyaXB0
b3I7Ci0KLWNsYXNzIEdQVUxlZ2FjeVRleHR1cmUgewotcHVibGljOgotICAgIEdQVUxlZ2FjeVRl
eHR1cmUoY29uc3QgR1BVTGVnYWN5RGV2aWNlJiwgY29uc3QgR1BVTGVnYWN5VGV4dHVyZURlc2Ny
aXB0b3ImKTsKLSAgICBleHBsaWNpdCBHUFVMZWdhY3lUZXh0dXJlKGNvbnN0IEdQVUxlZ2FjeURy
YXdhYmxlJik7Ci0gICAgfkdQVUxlZ2FjeVRleHR1cmUoKTsKLQotICAgIHVuc2lnbmVkIHdpZHRo
KCkgY29uc3Q7Ci0gICAgdW5zaWduZWQgaGVpZ2h0KCkgY29uc3Q7Ci0KLSNpZiBVU0UoTUVUQUwp
Ci0gICAgTVRMVGV4dHVyZSAqbWV0YWwoKSBjb25zdDsKLSNlbmRpZgotCi0jaWYgVVNFKE1FVEFM
KQotcHJpdmF0ZToKLSAgICBSZXRhaW5QdHI8TVRMVGV4dHVyZT4gbV9tZXRhbDsKLSNlbmRpZgot
fTsKLSAgICAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5VGV4dHVyZURlc2Ny
aXB0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2Fj
eVRleHR1cmVEZXNjcmlwdG9yLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjli
YjUwNjkyNDE1ZGUzMmNhMDZlNDViMjY5YmI5NDg2MTE4ZmRhZS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvR1BVTGVnYWN5VGV4dHVyZURlc2NyaXB0b3IuY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsNDIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJHUFVMZWdhY3lUZXh0dXJlRGVzY3Jp
cHRvci5oIgotCi0jaWYgRU5BQkxFKFdFQk1FVEFMKQotCi0jaW5jbHVkZSAiTG9nZ2luZy5oIgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUdQVUxlZ2FjeVRleHR1cmVEZXNjcmlwdG9yOjp+R1BV
TGVnYWN5VGV4dHVyZURlc2NyaXB0b3IoKQotewotICAgIExPRyhXZWJNZXRhbCwgIkdQVVRleHR1
cmVEZXNjcmlwdG9yOjp+R1BVVGV4dHVyZURlc2NyaXB0b3IoKSIpOwotfQotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L0dQVUxlZ2FjeVRleHR1cmVEZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5VGV4dHVyZURlc2NyaXB0b3IuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODY0Nzk3M2U5MzJhNDhiNjIwNzUwODY3MWMz
YTg1MTZhYTI2ZjIyMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVTGVnYWN5VGV4dHVy
ZURlc2NyaXB0b3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAot
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVO
QUJMRShXRUJNRVRBTCkKLQotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLQotT0JKQ19DTEFT
UyBNVExUZXh0dXJlRGVzY3JpcHRvcjsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBH
UFVMZWdhY3lUZXh0dXJlRGVzY3JpcHRvciB7Ci1wdWJsaWM6Ci0gICAgR1BVTGVnYWN5VGV4dHVy
ZURlc2NyaXB0b3IodW5zaWduZWQgcGl4ZWxGb3JtYXQsIHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25l
ZCBoZWlnaHQsIGJvb2wgbWlwbWFwcGVkKTsKLSAgICB+R1BVTGVnYWN5VGV4dHVyZURlc2NyaXB0
b3IoKTsKLQotICAgIHVuc2lnbmVkIHdpZHRoKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRXaWR0aCh1
bnNpZ25lZCkgY29uc3Q7Ci0KLSAgICB1bnNpZ25lZCBoZWlnaHQoKSBjb25zdDsKLSAgICB2b2lk
IHNldEhlaWdodCh1bnNpZ25lZCkgY29uc3Q7Ci0KLSAgICB1bnNpZ25lZCBzYW1wbGVDb3VudCgp
IGNvbnN0OwotICAgIHZvaWQgc2V0U2FtcGxlQ291bnQodW5zaWduZWQpIGNvbnN0OwotCi0gICAg
dW5zaWduZWQgdGV4dHVyZVR5cGUoKSBjb25zdDsKLSAgICB2b2lkIHNldFRleHR1cmVUeXBlKHVu
c2lnbmVkKSBjb25zdDsKLQotICAgIHVuc2lnbmVkIHN0b3JhZ2VNb2RlKCkgY29uc3Q7Ci0gICAg
dm9pZCBzZXRTdG9yYWdlTW9kZSh1bnNpZ25lZCkgY29uc3Q7Ci0KLSAgICB1bnNpZ25lZCB1c2Fn
ZSgpIGNvbnN0OwotICAgIHZvaWQgc2V0VXNhZ2UodW5zaWduZWQpIGNvbnN0OwotCi0jaWYgVVNF
KE1FVEFMKQotICAgIE1UTFRleHR1cmVEZXNjcmlwdG9yICptZXRhbCgpIGNvbnN0OwotI2VuZGlm
Ci0KLSNpZiBVU0UoTUVUQUwpCi1wcml2YXRlOgotICAgIFJldGFpblB0cjxNVExUZXh0dXJlRGVz
Y3JpcHRvcj4gbV9tZXRhbDsKLSNlbmRpZgotfTsKLSAgICAKLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L0dQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9HUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmUy
NzU1YjllMjY2YTJlOGIzOGZhNWQ0YjA4ZmQ3ZTE0ZTI4MTI2OQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVQaXBlbGluZURlc2NyaXB0
b3JCYXNlLmgKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIkdQVVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9y
LmgiCisKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
c3RydWN0IEdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UgeworICAgIFZlY3RvcjxHUFVQaXBlbGlu
ZVN0YWdlRGVzY3JpcHRvcj4gc3RhZ2VzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9y
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYzQzMTQ1YjY2N2VmMDIwMWIwOGFlZTM1NjhkMGRhZTczNjIxY2JiYgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9H
UFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvci5oCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJHUFVTaGFk
ZXJNb2R1bGUuaCIKKworI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK3N0cnVjdCBHUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvciB7CisgICAg
Y29uc3QgR1BVU2hhZGVyTW9kdWxlKiBtb2R1bGUgPSBudWxscHRyOworICAgIFN0cmluZyBlbnRy
eVBvaW50OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxF
KFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9HUFVRdWV1ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVF1
ZXVlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uM2ZkZDAwY2ZhOGMyYTExY2Y2NGUzYTRkNTAyNTY4ZGY0MjIxOGJk
YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9HUFVRdWV1ZS5oCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK09CSkNf
UFJPVE9DT0woTVRMQ29tbWFuZFF1ZXVlKTsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBHUFVEZXZpY2U7CisKK3VzaW5nIFBsYXRmb3JtUXVldWUgPSBNVExDb21tYW5kUXVldWU7Cit1
c2luZyBQbGF0Zm9ybVF1ZXVlU21hcnRQdHIgPSBSZXRhaW5QdHI8TVRMQ29tbWFuZFF1ZXVlPjsK
KworY2xhc3MgR1BVUXVldWUgOiBwdWJsaWMgUmVmQ291bnRlZDxHUFVRdWV1ZT4geworcHVibGlj
OgorICAgIHN0YXRpYyBSZWZQdHI8R1BVUXVldWU+IGNyZWF0ZShjb25zdCBHUFVEZXZpY2UmKTsK
KworICAgIFBsYXRmb3JtUXVldWUqIHBsYXRmb3JtUXVldWUoKSBjb25zdCB7IHJldHVybiBtX3Bs
YXRmb3JtUXVldWUuZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBHUFVRdWV1ZShQbGF0Zm9ybVF1
ZXVlU21hcnRQdHImJik7CisKKyAgICBQbGF0Zm9ybVF1ZXVlU21hcnRQdHIgbV9wbGF0Zm9ybVF1
ZXVlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdF
QkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9H
UFVSZW5kZXJQaXBlbGluZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L0dQVVJlbmRlclBpcGVsaW5lLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDJmZDlhMzM1ZGFhOTE0YzUyZDk2NzM1
OWQ2NzgyMzk5OTNiMjMxNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9HUFVSZW5kZXJQaXBlbGluZS5oCkBAIC0wLDAgKzEsNTkgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3
dGYvUmV0YWluUHRyLmg+CisKK09CSkNfUFJPVE9DT0woTVRMUmVuZGVyUGlwZWxpbmVTdGF0ZSk7
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgR1BVRGV2aWNlOworCitzdHJ1Y3QgR1BV
UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOworCit1c2luZyBQbGF0Zm9ybVJlbmRlclBpcGVsaW5l
ID0gTVRMUmVuZGVyUGlwZWxpbmVTdGF0ZTsKK3VzaW5nIFBsYXRmb3JtUmVuZGVyUGlwZWxpbmVT
bWFydFB0ciA9IFJldGFpblB0cjxNVExSZW5kZXJQaXBlbGluZVN0YXRlPjsKKworY2xhc3MgR1BV
UmVuZGVyUGlwZWxpbmUgOiBwdWJsaWMgUmVmQ291bnRlZDxHUFVSZW5kZXJQaXBlbGluZT4gewor
cHVibGljOgorICAgIHN0YXRpYyBSZWZQdHI8R1BVUmVuZGVyUGlwZWxpbmU+IGNyZWF0ZShjb25z
dCBHUFVEZXZpY2UmLCBHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3ImJik7CisKKyAgICBQbGF0
Zm9ybVJlbmRlclBpcGVsaW5lKiBwbGF0Zm9ybVJlbmRlclBpcGVsaW5lKCkgY29uc3QgeyByZXR1
cm4gbV9wbGF0Zm9ybVJlbmRlclBpcGVsaW5lLmdldCgpOyB9CisKK3ByaXZhdGU6CisgICAgR1BV
UmVuZGVyUGlwZWxpbmUoUGxhdGZvcm1SZW5kZXJQaXBlbGluZVNtYXJ0UHRyJiYpOworCisgICAg
UGxhdGZvcm1SZW5kZXJQaXBlbGluZVNtYXJ0UHRyIG1fcGxhdGZvcm1SZW5kZXJQaXBlbGluZTsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTRlYzdkMmY5
N2ViYzQ0YzdiMzZiOTVlZTRhNWNhM2JjY2Q5YmQyOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0
b3IuaApAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBF
TkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5oIgor
I2luY2x1ZGUgIkdQVVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yLmgiCisKKyNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IEdQVVJlbmRlclBpcGVs
aW5lRGVzY3JpcHRvciB7CisgICAgZW51bSBjbGFzcyBQcmltaXRpdmVUb3BvbG9neSB7CisgICAg
ICAgIFBvaW50TGlzdCwKKyAgICAgICAgTGluZUxpc3QsCisgICAgICAgIExpbmVTdHJpcCwKKyAg
ICAgICAgVHJpYW5nbGVMaXN0LAorICAgICAgICBUcmlhbmdsZVN0cmlwCisgICAgfTsKKworICAg
IEdQVVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yIHZlcnRleFN0YWdlOworICAgIEdQVVBpcGVsaW5l
U3RhZ2VEZXNjcmlwdG9yIGZyYWdtZW50U3RhZ2U7CisgICAgUHJpbWl0aXZlVG9wb2xvZ3kgcHJp
bWl0aXZlVG9wb2xvZ3k7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVVNoYWRlck1vZHVsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVVNoYWRlck1vZHVsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNiZmIzZjliZTA0YWVhYWIw
YjY0NjcwNDNhYmYxYTQ5NTcyMDA5ZGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVU2hhZGVyTW9kdWxlLmgKQEAgLTAsMCArMSw1OSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1
ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworT0JKQ19QUk9UT0NPTChNVExMaWJyYXJ5KTsKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBHUFVEZXZpY2U7CisKK3N0cnVjdCBHUFVTaGFkZXJN
b2R1bGVEZXNjcmlwdG9yOworCit1c2luZyBQbGF0Zm9ybVNoYWRlck1vZHVsZSA9IE1UTExpYnJh
cnk7Cit1c2luZyBQbGF0Zm9ybVNoYWRlck1vZHVsZVNtYXJ0UHRyID0gUmV0YWluUHRyPE1UTExp
YnJhcnk+OworCitjbGFzcyBHUFVTaGFkZXJNb2R1bGUgOiBwdWJsaWMgUmVmQ291bnRlZDxHUFVT
aGFkZXJNb2R1bGU+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmUHRyPEdQVVNoYWRlck1vZHVs
ZT4gY3JlYXRlKGNvbnN0IEdQVURldmljZSYsIEdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3ImJik7
CisKKyAgICBQbGF0Zm9ybVNoYWRlck1vZHVsZSogcGxhdGZvcm1TaGFkZXJNb2R1bGUoKSBjb25z
dCB7IHJldHVybiBtX3BsYXRmb3JtU2hhZGVyTW9kdWxlLmdldCgpOyB9CisKK3ByaXZhdGU6Cisg
ICAgR1BVU2hhZGVyTW9kdWxlKFBsYXRmb3JtU2hhZGVyTW9kdWxlU21hcnRQdHImJik7CisKKyAg
ICBQbGF0Zm9ybVNoYWRlck1vZHVsZVNtYXJ0UHRyIG1fcGxhdGZvcm1TaGFkZXJNb2R1bGU7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVNoYWRl
ck1vZHVsZURlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9HUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmNmZTBhZDVhODdiMzJj
NDhhZTM0YmQ3NmQyZjFjNTk4MWJlN2Q1ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmgKQEAg
LTAsMCArMSw0MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdF
QkdQVSkKKworI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK3N0cnVjdCBHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yIHsKKyAgICBTdHJpbmcg
Y29kZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShX
RUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
R1BVU3dhcENoYWluLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BV
U3dhcENoYWluLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzQ4YzEwMTQ0MjU5NjgwODYwMmNjOTJhZGUyMTZiNmJj
MWZkNDY2MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9HUFVTd2FwQ2hhaW4uaApAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworT0JKQ19DTEFTUyBDQU1ldGFsTGF5ZXI7
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgR1BVRGV2aWNlOworY2xhc3MgR1BVVGV4
dHVyZTsKKworZW51bSBjbGFzcyBHUFVUZXh0dXJlRm9ybWF0RW51bTsKKwordXNpbmcgUGxhdGZv
cm1Td2FwTGF5ZXIgPSBDQU1ldGFsTGF5ZXI7Cit1c2luZyBQbGF0Zm9ybVN3YXBMYXllclNtYXJ0
UHRyID0gUmV0YWluUHRyPENBTWV0YWxMYXllcj47CisKK2NsYXNzIEdQVVN3YXBDaGFpbiA6IHB1
YmxpYyBSZWZDb3VudGVkPEdQVVN3YXBDaGFpbj4geworcHVibGljOgorICAgIHN0YXRpYyBSZWZQ
dHI8R1BVU3dhcENoYWluPiBjcmVhdGUoKTsKKworICAgIHZvaWQgc2V0RGV2aWNlKGNvbnN0IEdQ
VURldmljZSYpOworICAgIHZvaWQgc2V0Rm9ybWF0KEdQVVRleHR1cmVGb3JtYXRFbnVtKTsKKyAg
ICB2b2lkIHJlc2hhcGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKKyAgICBSZWZQdHI8R1BVVGV4
dHVyZT4gZ2V0TmV4dFRleHR1cmUoKTsKKyAgICB2b2lkIHByZXNlbnQoKTsKKworICAgIFBsYXRm
b3JtU3dhcExheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybVN3
YXBMYXllci5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIEdQVVN3YXBDaGFpbihQbGF0Zm9ybVN3
YXBMYXllclNtYXJ0UHRyJiYpOworCisgICAgUGxhdGZvcm1Td2FwTGF5ZXJTbWFydFB0ciBtX3Bs
YXRmb3JtU3dhcExheWVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9HUFVUZXh0dXJlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvR1BVVGV4dHVyZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgzNzQ0MGJjOWI2NGZjZjk3NGRiNGY4NDA4
NWNmZjg0ZTg2MDYxZTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvR1BVVGV4dHVyZS5oCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlIDx3dGYvUmVm
Lmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRy
Lmg+CisKK09CSkNfUFJPVE9DT0woTVRMVGV4dHVyZSk7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KwordXNpbmcgUGxhdGZvcm1UZXh0dXJlID0gTVRMVGV4dHVyZTsKK3VzaW5nIFBsYXRmb3JtVGV4
dHVyZVNtYXJ0UHRyID0gUmV0YWluUHRyPE1UTFRleHR1cmU+OworCitjbGFzcyBHUFVUZXh0dXJl
IDogcHVibGljIFJlZkNvdW50ZWQ8R1BVVGV4dHVyZT4geworcHVibGljOgorICAgIHN0YXRpYyBS
ZWY8R1BVVGV4dHVyZT4gY3JlYXRlKFBsYXRmb3JtVGV4dHVyZVNtYXJ0UHRyJiYpOworCisgICAg
UmVmUHRyPEdQVVRleHR1cmU+IGNyZWF0ZURlZmF1bHRUZXh0dXJlVmlldygpOworCitwcml2YXRl
OgorICAgIGV4cGxpY2l0IEdQVVRleHR1cmUoUGxhdGZvcm1UZXh0dXJlU21hcnRQdHImJik7CisK
KyAgICBQbGF0Zm9ybVRleHR1cmVTbWFydFB0ciBtX3BsYXRmb3JtVGV4dHVyZTsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVGV4dHVyZUZvcm1h
dEVudW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVUZXh0dXJl
Rm9ybWF0RW51bS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc5MTEzNGZlMDY0YTY4NTYzNTJiZmE4Y2ZlM2UyNDc2
ZjRhYmNhNzIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvR1BVVGV4dHVyZUZvcm1hdEVudW0uaApAQCAtMCwwICsxLDQzIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2VudW0gY2xhc3MgR1BVVGV4dHVyZUZvcm1hdEVudW0geworICAgIFI4RzhCOEE4
VW5vcm0sCisgICAgUjhHOEI4QThVaW50LAorICAgIEI4RzhSOEE4VW5vcm0sCisgICAgRDMyRmxv
YXRTOFVpbnQKK307CisKK3VzaW5nIFBsYXRmb3JtVGV4dHVyZUZvcm1hdCA9IHVuc2lnbmVkIGxv
bmc7CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQ29tbWFuZEJ1ZmZlck1ldGFs
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUNvbW1h
bmRCdWZmZXJNZXRhbC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MTI1OWQyMzRmYjNhMTI0Zjk5MTc4NGE1ZDhm
ZDY4ODcwMzdlMjA4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L2NvY29hL0dQVUNvbW1hbmRCdWZmZXJNZXRhbC5tbQpAQCAtMCwwICsxLDc3
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJHUFVDb21tYW5k
QnVmZmVyLmgiCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW1wb3J0ICJHUFVEZXZpY2UuaCIK
KyNpbXBvcnQgIkdQVVF1ZXVlLmgiCisjaW1wb3J0ICJMb2dnaW5nLmgiCisKKyNpbXBvcnQgPE1l
dGFsL01ldGFsLmg+CisjaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK1JlZlB0cjxHUFVDb21tYW5kQnVmZmVyPiBHUFVDb21tYW5kQnVm
ZmVyOjpjcmVhdGUoR1BVRGV2aWNlJiBkZXZpY2UpCit7CisgICAgaWYgKCFkZXZpY2UucGxhdGZv
cm1EZXZpY2UoKSkgeworICAgICAgICBMT0coV2ViR1BVLCAiR1BVQ29tbWFuZEJ1ZmZlcjo6Y3Jl
YXRlKCk6IEludmFsaWQgR1BVRGV2aWNlISIpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICB9CisKKyAgICBhdXRvIGdwdUNvbW1hbmRRdWV1ZSA9IGRldmljZS5nZXRRdWV1ZSgpOworICAg
IGlmICghZ3B1Q29tbWFuZFF1ZXVlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1
dG8gbXRsUXVldWUgPSBncHVDb21tYW5kUXVldWUtPnBsYXRmb3JtUXVldWUoKTsKKworICAgIFBs
YXRmb3JtQ29tbWFuZEJ1ZmZlclNtYXJ0UHRyIGJ1ZmZlcjsKKworICAgIEJFR0lOX0JMT0NLX09C
SkNfRVhDRVBUSU9OUzsKKworICAgIGJ1ZmZlciA9IHJldGFpblB0cihbbXRsUXVldWUgY29tbWFu
ZEJ1ZmZlcl0pOworCisgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKKworICAgIGlmICgh
YnVmZmVyKSB7CisgICAgICAgIExPRyhXZWJHUFUsICJHUFVDb21tYW5kQnVmZmVyOjpjcmVhdGUo
KTogVW5hYmxlIHRvIGNyZWF0ZSBNVExDb21tYW5kQnVmZmVyISIpOworICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICB9CisKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEdQVUNvbW1hbmRCdWZm
ZXIoV1RGTW92ZShidWZmZXIpKSk7Cit9CisKK0dQVUNvbW1hbmRCdWZmZXI6OkdQVUNvbW1hbmRC
dWZmZXIoUGxhdGZvcm1Db21tYW5kQnVmZmVyU21hcnRQdHImJiBidWZmZXIpCisgICAgOiBtX3Bs
YXRmb3JtQ29tbWFuZEJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpCit7CisgICAgVU5VU0VEX1BBUkFN
KG1fcGxhdGZvcm1Db21tYW5kQnVmZmVyKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVEZXZpY2VNZXRhbC5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVEZXZpY2VNZXRhbC5tbQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lODM4N2E3NzExYjAyMDBlZDkxOTJmYTE0MjBkMzU5MmY4ZTQ4MTg5Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVURl
dmljZU1ldGFsLm1tCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25m
aWcuaCIKKyNpbXBvcnQgIkdQVURldmljZS5oIgorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2lt
cG9ydCAiTG9nZ2luZy5oIgorCisjaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgorI2ltcG9ydCA8d3Rm
L0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWZQdHI8
R1BVRGV2aWNlPiBHUFVEZXZpY2U6OmNyZWF0ZSgpCit7CisgICAgUGxhdGZvcm1EZXZpY2VTbWFy
dFB0ciBkZXZpY2U7CisKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CisKKyAgICBk
ZXZpY2UgPSBhZG9wdE5TKE1UTENyZWF0ZVN5c3RlbURlZmF1bHREZXZpY2UoKSk7IC8vIEZJWE1F
OiBUYWtlIFdlYkdQVVBvd2VyUHJlZmVyZW5jZSBpbnRvIGFjY291bnQuCisKKyAgICBFTkRfQkxP
Q0tfT0JKQ19FWENFUFRJT05TOworCisgICAgaWYgKCFkZXZpY2UpIHsKKyAgICAgICAgTE9HKFdl
YkdQVSwgIkdQVURldmljZTo6R1BVRGV2aWNlKCk6IFVuYWJsZSB0byBjcmVhdGUgR1BVRGV2aWNl
ISIpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBMT0coV2ViR1BVLCAi
R1BVRGV2aWNlOjpHUFVEZXZpY2UoKTogTVRMRGV2aWNlIGlzICVwIiwgZGV2aWNlLmdldCgpKTsK
KyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEdQVURldmljZShXVEZNb3ZlKGRldmljZSkpKTsKK30K
KworR1BVRGV2aWNlOjpHUFVEZXZpY2UoUGxhdGZvcm1EZXZpY2VTbWFydFB0ciYmIGRldmljZSkK
KyAgICA6IG1fcGxhdGZvcm1EZXZpY2UoV1RGTW92ZShkZXZpY2UpKQoreworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVF1ZXVlTWV0YWwu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUXVldWVN
ZXRhbC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi44ZTY5YmUzYmNjODYwYmE3NWQwZmY4ODU3ZjU2ODE3MmUyNTU1
NThiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L2NvY29hL0dQVVF1ZXVlTWV0YWwubW0KQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiR1BVUXVldWUuaCIKKworI2lmIEVOQUJMRShX
RUJHUFUpCisKKyNpbXBvcnQgIkdQVURldmljZS5oIgorI2ltcG9ydCAiTG9nZ2luZy5oIgorCisj
aW1wb3J0IDxNZXRhbC9NZXRhbC5oPgorI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWZQdHI8R1BVUXVldWU+IEdQVVF1ZXVlOjpj
cmVhdGUoY29uc3QgR1BVRGV2aWNlJiBkZXZpY2UpCit7CisgICAgaWYgKCFkZXZpY2UucGxhdGZv
cm1EZXZpY2UoKSkgeworICAgICAgICBMT0coV2ViR1BVLCAiR1BVUXVldWU6OmNyZWF0ZSgpOiBJ
bnZhbGlkIEdQVURldmljZSEiKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisg
ICAgUGxhdGZvcm1RdWV1ZVNtYXJ0UHRyIHF1ZXVlOworCisgICAgQkVHSU5fQkxPQ0tfT0JKQ19F
WENFUFRJT05TOworCisgICAgcXVldWUgPSBhZG9wdE5TKFtkZXZpY2UucGxhdGZvcm1EZXZpY2Uo
KSBuZXdDb21tYW5kUXVldWVdKTsKKworICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CisK
KyAgICBpZiAoIXF1ZXVlKSB7CisgICAgICAgIExPRyhXZWJHUFUsICJHUFVRdWV1ZTo6Y3JlYXRl
KCk6IFVuYWJsZSB0byBjcmVhdGUgTVRMQ29tbWFuZFF1ZXVlISIpOworICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICB9CisKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEdQVVF1ZXVlKFdURk1v
dmUocXVldWUpKSk7Cit9CisKK0dQVVF1ZXVlOjpHUFVRdWV1ZShQbGF0Zm9ybVF1ZXVlU21hcnRQ
dHImJiBxdWV1ZSkKKyAgICA6IG1fcGxhdGZvcm1RdWV1ZShXVEZNb3ZlKHF1ZXVlKSkKK3sKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVS
ZW5kZXJQaXBlbGluZU1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L2NvY29hL0dQVVJlbmRlclBpcGVsaW5lTWV0YWwubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzk0NmQ1NTA5
ZDIyMjhkNDVmMDY0YjBmNmQzNWJjY2E4NjBkN2VhZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVSZW5kZXJQaXBlbGluZU1l
dGFsLm1tCkBAIC0wLDAgKzEsMTM3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgi
CisjaW1wb3J0ICJHUFVSZW5kZXJQaXBlbGluZS5oIgorCisjaWYgRU5BQkxFKFdFQkdQVSkKKwor
I2ltcG9ydCAiR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmgiCisjaW1wb3J0ICJMb2dnaW5n
LmgiCisKKyNpbXBvcnQgPE1ldGFsL01ldGFsLmg+CisjaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhj
ZXB0aW9ucy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBib29sIHNldEZ1bmN0
aW9uc0ZvclBpcGVsaW5lRGVzY3JpcHRvcihjb25zdCBjaGFyKiBjb25zdCBmdW5jdGlvbk5hbWUs
IE1UTFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciAqbXRsRGVzY3JpcHRvciwgR1BVUmVuZGVyUGlw
ZWxpbmVEZXNjcmlwdG9yJiYgZGVzY3JpcHRvcikKK3sKKyNpZiBMT0dfRElTQUJMRUQKKyAgICBV
TlVTRURfUEFSQU0oZnVuY3Rpb25OYW1lKTsKKyNlbmRpZgorICAgIC8vIE1ldGFsIHJlcXVpcmVz
IGEgdmVydGV4IHNoYWRlciBpbiBhbGwgcmVuZGVyIHBpcGVsaW5lcy4KKyAgICBjb25zdCBhdXRv
JiB2ZXJ0ZXhTdGFnZSA9IGRlc2NyaXB0b3IudmVydGV4U3RhZ2U7CisgICAgYXV0byBtdGxMaWJy
YXJ5ID0gdmVydGV4U3RhZ2UubW9kdWxlLT5wbGF0Zm9ybVNoYWRlck1vZHVsZSgpOworCisgICAg
aWYgKCFtdGxMaWJyYXJ5KSB7CisgICAgICAgIExPRyhXZWJHUFUsICIlczogTVRMTGlicmFyeSBm
b3IgdmVydGV4IHN0YWdlIGRvZXMgbm90IGV4aXN0ISIsIGZ1bmN0aW9uTmFtZSk7CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBhdXRvIGZ1bmN0aW9uID0gYWRvcHROUyhbbXRs
TGlicmFyeSBuZXdGdW5jdGlvbldpdGhOYW1lOnZlcnRleFN0YWdlLmVudHJ5UG9pbnRdKTsKKwor
ICAgIGlmICghZnVuY3Rpb24pIHsKKyAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBWZXJ0ZXggTVRM
RnVuY3Rpb24gXCIlc1wiIG5vdCBmb3VuZCEiLCBmdW5jdGlvbk5hbWUsIHZlcnRleFN0YWdlLmVu
dHJ5UG9pbnQudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisK
KyAgICBbbXRsRGVzY3JpcHRvciBzZXRWZXJ0ZXhGdW5jdGlvbjpmdW5jdGlvbi5nZXQoKV07CisK
KyAgICAvLyBIb3dldmVyLCBmcmFnbWVudCBzaGFkZXJzIGFyZSBvcHRpb25hbC4KKyAgICBjb25z
dCBhdXRvIGZyYWdtZW50U3RhZ2UgPSBkZXNjcmlwdG9yLmZyYWdtZW50U3RhZ2U7CisgICAgaWYg
KCFmcmFnbWVudFN0YWdlLm1vZHVsZSB8fCAhZnJhZ21lbnRTdGFnZS5lbnRyeVBvaW50KQorICAg
ICAgICByZXR1cm4gdHJ1ZTsKKworICAgIG10bExpYnJhcnkgPSBmcmFnbWVudFN0YWdlLm1vZHVs
ZS0+cGxhdGZvcm1TaGFkZXJNb2R1bGUoKTsKKworICAgIGlmICghbXRsTGlicmFyeSkgeworICAg
ICAgICBMT0coV2ViR1BVLCAiJXM6IE1UTExpYnJhcnkgZm9yIGZyYWdtZW50IHN0YWdlIGRvZXMg
bm90IGV4aXN0ISIsIGZ1bmN0aW9uTmFtZSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisKKyAgICBmdW5jdGlvbiA9IGFkb3B0TlMoW210bExpYnJhcnkgbmV3RnVuY3Rpb25XaXRoTmFt
ZTpmcmFnbWVudFN0YWdlLmVudHJ5UG9pbnRdKTsKKworICAgIGlmICghZnVuY3Rpb24pIHsKKyAg
ICAgICAgTE9HKFdlYkdQVSwgIiVzOiBGcmFnbWVudCBNVExGdW5jdGlvbiBcIiVzXCIgbm90IGZv
dW5kISIsIGZ1bmN0aW9uTmFtZSwgZnJhZ21lbnRTdGFnZS5lbnRyeVBvaW50LnV0ZjgoKS5kYXRh
KCkpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgW210bERlc2NyaXB0b3Ig
c2V0RnJhZ21lbnRGdW5jdGlvbjpmdW5jdGlvbi5nZXQoKV07CisKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworUmVmUHRyPEdQVVJlbmRlclBpcGVsaW5lPiBHUFVSZW5kZXJQaXBlbGluZTo6Y3JlYXRl
KGNvbnN0IEdQVURldmljZSYgZGV2aWNlLCBHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3ImJiBk
ZXNjcmlwdG9yKQoreworICAgIGNvbnN0IGNoYXIqIGNvbnN0IGZ1bmN0aW9uTmFtZSA9ICJHUFVS
ZW5kZXJQaXBlbGluZTo6Y3JlYXRlKCkiOworCisgICAgaWYgKCFkZXZpY2UucGxhdGZvcm1EZXZp
Y2UoKSkgeworICAgICAgICBMT0coV2ViR1BVLCAiJXM6IE1UTERldmljZSBkb2VzIG5vdCBleGlz
dCEiLCBmdW5jdGlvbk5hbWUpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAg
ICBSZXRhaW5QdHI8TVRMUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yPiBtdGxEZXNjcmlwdG9yOwor
CisgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOworCisgICAgbXRsRGVzY3JpcHRvciA9
IGFkb3B0TlMoW01UTFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciBuZXddKTsKKworICAgIEVORF9C
TE9DS19PQkpDX0VYQ0VQVElPTlM7CisKKyAgICBpZiAoIW10bERlc2NyaXB0b3IpIHsKKyAgICAg
ICAgTE9HKFdlYkdQVSwgIiVzOiBFcnJvciBjcmVhdGluZyBNVExEZXNjcmlwdG9yISIsIGZ1bmN0
aW9uTmFtZSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIGlmICghc2V0
RnVuY3Rpb25zRm9yUGlwZWxpbmVEZXNjcmlwdG9yKGZ1bmN0aW9uTmFtZSwgbXRsRGVzY3JpcHRv
ci5nZXQoKSwgV1RGTW92ZShkZXNjcmlwdG9yKSkpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
CisgICAgLy8gRklYTUU6IEdldCB0aGUgcGl4ZWxGb3JtYXQgYXMgY29uZmlndXJlZCBmb3IgdGhl
IGNvbnRleHQvQ0FNZXRhbExheWVyLgorICAgIG10bERlc2NyaXB0b3IuZ2V0KCkuY29sb3JBdHRh
Y2htZW50c1swXS5waXhlbEZvcm1hdCA9IE1UTFBpeGVsRm9ybWF0QkdSQThVbm9ybTsKKworICAg
IFBsYXRmb3JtUmVuZGVyUGlwZWxpbmVTbWFydFB0ciBwaXBlbGluZTsKKworICAgIEJFR0lOX0JM
T0NLX09CSkNfRVhDRVBUSU9OUzsKKworICAgIHBpcGVsaW5lID0gYWRvcHROUyhbZGV2aWNlLnBs
YXRmb3JtRGV2aWNlKCkgbmV3UmVuZGVyUGlwZWxpbmVTdGF0ZVdpdGhEZXNjcmlwdG9yOm10bERl
c2NyaXB0b3IuZ2V0KCkgZXJyb3I6bmlsXSk7CisKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJ
T05TOworCisgICAgaWYgKCFwaXBlbGluZSkgeworICAgICAgICBMT0coV2ViR1BVLCAiJXM6IEVy
cm9yIGNyZWF0aW5nIE1UTFJlbmRlclBpcGVsaW5lU3RhdGUhIiwgZnVuY3Rpb25OYW1lKTsKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBH
UFVSZW5kZXJQaXBlbGluZShXVEZNb3ZlKHBpcGVsaW5lKSkpOworfQorCitHUFVSZW5kZXJQaXBl
bGluZTo6R1BVUmVuZGVyUGlwZWxpbmUoUGxhdGZvcm1SZW5kZXJQaXBlbGluZVNtYXJ0UHRyJiYg
cGlwZWxpbmUpCisgICAgOiBtX3BsYXRmb3JtUmVuZGVyUGlwZWxpbmUoV1RGTW92ZShwaXBlbGlu
ZSkpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShX
RUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
Y29jb2EvR1BVU2hhZGVyTW9kdWxlTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvY29jb2EvR1BVU2hhZGVyTW9kdWxlTWV0YWwubW0KbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzZl
ODUzOTBjYTJjOTFiZTA0ZjllMThiMjMxNjIwNmMwZDAzNTQzZAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVTaGFkZXJNb2R1
bGVNZXRhbC5tbQpAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmln
LmgiCisjaW1wb3J0ICJHUFVTaGFkZXJNb2R1bGUuaCIKKworI2lmIEVOQUJMRShXRUJHUFUpCisK
KyNpbXBvcnQgIkdQVURldmljZS5oIgorI2ltcG9ydCAiR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRv
ci5oIgorI2ltcG9ydCAiTG9nZ2luZy5oIgorCisjaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgorI2lt
cG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitSZWZQdHI8R1BVU2hhZGVyTW9kdWxlPiBHUFVTaGFkZXJNb2R1bGU6OmNyZWF0ZShjb25zdCBH
UFVEZXZpY2UmIGRldmljZSwgR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvciYmIGRlc2NyaXB0b3Ip
Cit7CisgICAgaWYgKCFkZXZpY2UucGxhdGZvcm1EZXZpY2UoKSkgeworICAgICAgICBMT0coV2Vi
R1BVLCAiR1BVU2hhZGVyTW9kdWxlOjpjcmVhdGUoKTogSW52YWxpZCBHUFVEZXZpY2UhIik7Cisg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIFBsYXRmb3JtU2hhZGVyTW9kdWxl
U21hcnRQdHIgbW9kdWxlOworCisgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOworCisg
ICAgTlNFcnJvciAqZXJyb3IgPSBbTlNFcnJvciBlcnJvcldpdGhEb21haW46QCJjb20uYXBwbGUu
V2ViS2l0LkdQVSIgY29kZToxIHVzZXJJbmZvOm5pbF07CisgICAgbW9kdWxlID0gYWRvcHROUyhb
ZGV2aWNlLnBsYXRmb3JtRGV2aWNlKCkgbmV3TGlicmFyeVdpdGhTb3VyY2U6ZGVzY3JpcHRvci5j
b2RlIG9wdGlvbnM6bmlsIGVycm9yOiZlcnJvcl0pOworICAgIGlmICghbW9kdWxlKQorICAgICAg
ICBMT0coV2ViR1BVLCAiU2hhZGVyIGNvbXBpbGF0aW9uIGVycm9yOiAlcyIsIFtbZXJyb3IgbG9j
YWxpemVkRGVzY3JpcHRpb25dIFVURjhTdHJpbmddKTsKKworICAgIEVORF9CTE9DS19PQkpDX0VY
Q0VQVElPTlM7CisKKyAgICBpZiAoIW1vZHVsZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisK
KyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEdQVVNoYWRlck1vZHVsZShXVEZNb3ZlKG1vZHVsZSkp
KTsKK30KKworR1BVU2hhZGVyTW9kdWxlOjpHUFVTaGFkZXJNb2R1bGUoUGxhdGZvcm1TaGFkZXJN
b2R1bGVTbWFydFB0ciYmIG1vZHVsZSkKKyAgICA6IG1fcGxhdGZvcm1TaGFkZXJNb2R1bGUoV1RG
TW92ZShtb2R1bGUpKQoreworfQorCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVN3
YXBDaGFpbk1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2Nv
Y29hL0dQVVN3YXBDaGFpbk1ldGFsLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjliYmMwYzdhY2VkNDcwNTRlYTQz
MmY5ZmU3Mzk2MGEyNGE0ODAxNTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVU3dhcENoYWluTWV0YWwubW0KQEAgLTAsMCAr
MSwxNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkdQVVN3
YXBDaGFpbi5oIgorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2ltcG9ydCAiR1BVRGV2aWNlLmgi
CisjaW1wb3J0ICJHUFVUZXh0dXJlLmgiCisjaW1wb3J0ICJHUFVUZXh0dXJlRm9ybWF0RW51bS5o
IgorI2ltcG9ydCAiTG9nZ2luZy5oIgorCisjaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgorI2ltcG9y
dCA8UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+CisjaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0
aW9ucy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZlB0cjxHUFVTd2FwQ2hhaW4+IEdQ
VVN3YXBDaGFpbjo6Y3JlYXRlKCkKK3sKKyAgICBQbGF0Zm9ybVN3YXBMYXllclNtYXJ0UHRyIHBs
YXRmb3JtTGF5ZXI7CisKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CisKKyAgICBw
bGF0Zm9ybUxheWVyID0gYWRvcHROUyhbW0NBTWV0YWxMYXllciBhbGxvY10gaW5pdF0pOworCisg
ICAgW3BsYXRmb3JtTGF5ZXIgc2V0T3BhcXVlOjBdOworICAgIFtwbGF0Zm9ybUxheWVyIHNldE5h
bWU6QCJXZWJHUFUgTGF5ZXIiXTsKKworICAgIC8vIEZJWE1FOiBGb3Igbm93LCBkZWZhdWx0IHRv
IHRoaXMgdXNhZ2UgZmxhZy4KKyAgICBbcGxhdGZvcm1MYXllciBzZXRGcmFtZWJ1ZmZlck9ubHk6
WUVTXTsKKworICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CisKKyAgICBpZiAoIXBsYXRm
b3JtTGF5ZXIpIHsKKyAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVN3YXBDaGFpbjo6Y3JlYXRlKCk6
IFVuYWJsZSB0byBjcmVhdGUgQ0FNZXRhbExheWVyISIpOworICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICB9CisKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEdQVVN3YXBDaGFpbihXVEZNb3Zl
KHBsYXRmb3JtTGF5ZXIpKSk7Cit9CisKK0dQVVN3YXBDaGFpbjo6R1BVU3dhcENoYWluKFBsYXRm
b3JtU3dhcExheWVyU21hcnRQdHImJiBwbGF0Zm9ybUxheWVyKQorICAgIDogbV9wbGF0Zm9ybVN3
YXBMYXllcihXVEZNb3ZlKHBsYXRmb3JtTGF5ZXIpKQoreworfQorCit2b2lkIEdQVVN3YXBDaGFp
bjo6c2V0RGV2aWNlKGNvbnN0IEdQVURldmljZSYgZGV2aWNlKQoreworICAgIGlmICghZGV2aWNl
LnBsYXRmb3JtRGV2aWNlKCkpIHsKKyAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVN3YXBDaGFpbjo6
c2V0RGV2aWNlKCk6IE1UTERldmljZSBkb2VzIG5vdCBleGlzdCEiKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIFttX3BsYXRmb3JtU3dhcExheWVyIHNldERldmljZTpkZXZpY2UucGxh
dGZvcm1EZXZpY2UoKV07Cit9CisKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFBsYXRmb3JtVGV4dHVy
ZUZvcm1hdD4gcGxhdGZvcm1UZXh0dXJlRm9ybWF0Rm9yR1BVVGV4dHVyZUZvcm1hdChHUFVUZXh0
dXJlRm9ybWF0RW51bSBmb3JtYXQpCit7CisgICAgc3dpdGNoIChmb3JtYXQpIHsKKyAgICBjYXNl
IEdQVVRleHR1cmVGb3JtYXRFbnVtOjpSOEc4QjhBOFVub3JtOgorICAgICAgICByZXR1cm4gTVRM
UGl4ZWxGb3JtYXRSR0JBOFVub3JtOworICAgIGNhc2UgR1BVVGV4dHVyZUZvcm1hdEVudW06OlI4
RzhCOEE4VWludDoKKyAgICAgICAgcmV0dXJuIE1UTFBpeGVsRm9ybWF0UkdCQThVaW50OworICAg
IGNhc2UgR1BVVGV4dHVyZUZvcm1hdEVudW06OkI4RzhSOEE4VW5vcm06CisgICAgICAgIHJldHVy
biBNVExQaXhlbEZvcm1hdEJHUkE4VW5vcm07CisgICAgY2FzZSBHUFVUZXh0dXJlRm9ybWF0RW51
bTo6RDMyRmxvYXRTOFVpbnQ6CisgICAgICAgIHJldHVybiBNVExQaXhlbEZvcm1hdERlcHRoMzJG
bG9hdF9TdGVuY2lsODsKKyAgICBkZWZhdWx0OgorICAgICAgICBMT0coV2ViR1BVLCAiR1BVU3dh
cENoYWluOjpzZXRGb3JtYXQoKTogSW52YWxpZCB0ZXh0dXJlIGZvcm1hdCBzcGVjaWZpZWQhIik7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgfQorfQorCit2b2lkIEdQVVN3YXBD
aGFpbjo6c2V0Rm9ybWF0KEdQVVRleHR1cmVGb3JtYXRFbnVtIGZvcm1hdCkKK3sKKyAgICBhdXRv
IHJlc3VsdCA9IHBsYXRmb3JtVGV4dHVyZUZvcm1hdEZvckdQVVRleHR1cmVGb3JtYXQoZm9ybWF0
KTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBtdGxSZXN1
bHQgPSBzdGF0aWNfY2FzdDxNVExQaXhlbEZvcm1hdD4ocmVzdWx0LnZhbHVlKCkpOworCisgICAg
c3dpdGNoIChtdGxSZXN1bHQpIHsKKyAgICBjYXNlIE1UTFBpeGVsRm9ybWF0QkdSQThVbm9ybToK
KyAgICAvLyBGSVhNRTogQWRkIHRoZSBvdGhlciBzdXBwb3J0ZWQgc3dhcCBsYXllciBmb3JtYXRz
IGFzIHRoZXkgYXJlIGFkZGVkIHRvIEdQVSBzcGVjLgorICAgIC8vICBNVExQaXhlbEZvcm1hdEJH
UkE4VW5vcm1fc1JHQiwgTVRMUGl4ZWxGb3JtYXRSR0JBMTZGbG9hdCwgTVRMUGl4ZWxGb3JtYXRC
R1JBMTBfWFIsIGFuZCBNVExQaXhlbEZvcm1hdEJHUkExMF9YUl9zUkdCLgorICAgICAgICBbbV9w
bGF0Zm9ybVN3YXBMYXllciBzZXRQaXhlbEZvcm1hdDptdGxSZXN1bHRdOworICAgICAgICByZXR1
cm47CisgICAgZGVmYXVsdDoKKyAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVN3YXBDaGFpbjo6c2V0
Rm9ybWF0KCk6IFVuc3VwcG9ydGVkIE1UTFBpeGVsRm9ybWF0ISIpOworICAgIH0KK30KKwordm9p
ZCBHUFVTd2FwQ2hhaW46OnJlc2hhcGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQoreworICAgIFtt
X3BsYXRmb3JtU3dhcExheWVyIHNldEJvdW5kczpDR1JlY3RNYWtlKDAsIDAsIHdpZHRoLCBoZWln
aHQpXTsKKyAgICBbbV9wbGF0Zm9ybVN3YXBMYXllciBzZXREcmF3YWJsZVNpemU6Q0dTaXplTWFr
ZSh3aWR0aCwgaGVpZ2h0KV07Cit9CisKK1JlZlB0cjxHUFVUZXh0dXJlPiBHUFVTd2FwQ2hhaW46
OmdldE5leHRUZXh0dXJlKCkKK3sKKyAgICBSZXRhaW5QdHI8TVRMVGV4dHVyZT4gbXRsVGV4dHVy
ZTsKKworICAgIGlmIChhdXRvIGRyYXdhYmxlID0gcmV0YWluUHRyKFttX3BsYXRmb3JtU3dhcExh
eWVyIG5leHREcmF3YWJsZV0pKQorICAgICAgICBtdGxUZXh0dXJlID0gcmV0YWluUHRyKFtkcmF3
YWJsZSB0ZXh0dXJlXSk7CisKKyAgICBpZiAoIW10bFRleHR1cmUpIHsKKyAgICAgICAgTE9HKFdl
YkdQVSwgIkdQVVN3YXBDaGFpbjo6Z2V0TmV4dFRleHR1cmUoKTogVW5hYmxlIHRvIGdldCBuZXh0
IE1UTFRleHR1cmUhIik7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIHJl
dHVybiBHUFVUZXh0dXJlOjpjcmVhdGUoV1RGTW92ZShtdGxUZXh0dXJlKSk7Cit9CisKK3ZvaWQg
R1BVU3dhcENoYWluOjpwcmVzZW50KCkKK3sKKyAgICAvLyBGSVhNRTogVW5pbXBsZW1lbnRlZCBz
dHViLgorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VC
R1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2Nv
Y29hL0dQVVRleHR1cmVNZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9jb2NvYS9HUFVUZXh0dXJlTWV0YWwubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTA3ODU3YjZmM2FiNTU0
YWEwZmE1Y2E3ZDNhYmE0OTBlNGM3ZmI3OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVUZXh0dXJlTWV0YWwubW0KQEAgLTAs
MCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiR1BV
VGV4dHVyZS5oIgorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2ltcG9ydCAiTG9nZ2luZy5oIgor
CisjaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgorI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlv
bnMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWY8R1BVVGV4dHVyZT4gR1BVVGV4dHVy
ZTo6Y3JlYXRlKFBsYXRmb3JtVGV4dHVyZVNtYXJ0UHRyJiYgdGV4dHVyZSkKK3sKKyAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBHUFVUZXh0dXJlKFdURk1vdmUodGV4dHVyZSkpKTsKK30KKworR1BV
VGV4dHVyZTo6R1BVVGV4dHVyZShSZXRhaW5QdHI8TVRMVGV4dHVyZT4mJiB0ZXh0dXJlKQorICAg
IDogbV9wbGF0Zm9ybVRleHR1cmUoV1RGTW92ZSh0ZXh0dXJlKSkKK3sKK30KKworUmVmUHRyPEdQ
VVRleHR1cmU+IEdQVVRleHR1cmU6OmNyZWF0ZURlZmF1bHRUZXh0dXJlVmlldygpCit7CisgICAg
UmV0YWluUHRyPE1UTFRleHR1cmU+IHRleHR1cmU7CisKKyAgICB0ZXh0dXJlID0gYWRvcHROUyhb
bV9wbGF0Zm9ybVRleHR1cmUgbmV3VGV4dHVyZVZpZXdXaXRoUGl4ZWxGb3JtYXQ6bV9wbGF0Zm9y
bVRleHR1cmUuZ2V0KCkucGl4ZWxGb3JtYXRdKTsKKworICAgIGlmICghdGV4dHVyZSkgeworICAg
ICAgICBMT0coV2ViR1BVLCAiR1BVVGV4dHVyZTo6Y3JlYXRlRGVmYXVsdFRleHR1cmVWaWV3KCk6
IFVuYWJsZSB0byBjcmVhdGUgTVRMVGV4dHVyZSB2aWV3ISIpOworICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICB9CisKKyAgICByZXR1cm4gR1BVVGV4dHVyZTo6Y3JlYXRlKFdURk1vdmUodGV4
dHVyZSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUo
V0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L2xlZ2FjeS9HUFVMZWdhY3lCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L2xlZ2FjeS9HUFVMZWdhY3lCdWZmZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFhNDVlMzUw
YWVmYjVmZjVhNzY3MGRhMTgyY2FmMTUyODEyZTg1NTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L0dQVUxlZ2FjeUJ1ZmZlci5j
cHAKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHUFVMZWdhY3lCdWZmZXIu
aCIKKworI2lmIEVOQUJMRShXRUJNRVRBTCkKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9BcnJheUJ1ZmZlci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK0dQVUxlZ2FjeUJ1ZmZlcjo6fkdQVUxlZ2FjeUJ1ZmZlcigpCit7CisgICAgTE9HKFdlYk1l
dGFsLCAiR1BVQnVmZmVyOjp+R1BVQnVmZmVyKCkiKTsKK30KKwordW5zaWduZWQgR1BVTGVnYWN5
QnVmZmVyOjpsZW5ndGgoKSBjb25zdAoreworICAgIHJldHVybiBtX2NvbnRlbnRzID8gbV9jb250
ZW50cy0+Ynl0ZUxlbmd0aCgpIDogMDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9s
ZWdhY3kvR1BVTGVnYWN5QnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvbGVnYWN5L0dQVUxlZ2FjeUJ1ZmZlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYzODkxODE3YmI5NGI3
ZGE5NzkxMzAzNTBjMmUwZmNkOTc1NDY1ODIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L0dQVUxlZ2FjeUJ1ZmZlci5oCkBAIC0w
LDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJNRVRBTCkKKworI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK09CSkNfUFJPVE9DT0woTVRM
QnVmZmVyKTsKKworbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBBcnJheUJ1ZmZlcjsKK2NsYXNzIEFy
cmF5QnVmZmVyVmlldzsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBHUFVMZWdh
Y3lEZXZpY2U7CisKK2NsYXNzIEdQVUxlZ2FjeUJ1ZmZlciB7CitwdWJsaWM6CisgICAgV0VCQ09S
RV9FWFBPUlQgR1BVTGVnYWN5QnVmZmVyKGNvbnN0IEdQVUxlZ2FjeURldmljZSYsIGNvbnN0IEpT
Qzo6QXJyYXlCdWZmZXJWaWV3Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgfkdQVUxlZ2FjeUJ1ZmZl
cigpOworCisgICAgV0VCQ09SRV9FWFBPUlQgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Q7CisgICAg
SlNDOjpBcnJheUJ1ZmZlciogY29udGVudHMoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRzLmdl
dCgpOyB9CisKKyNpZiBVU0UoTUVUQUwpCisgICAgTVRMQnVmZmVyICptZXRhbCgpIGNvbnN0IHsg
cmV0dXJuIG1fbWV0YWwuZ2V0KCk7IH0KKyNlbmRpZgorCitwcml2YXRlOgorI2lmIFVTRShNRVRB
TCkKKyAgICBSZXRhaW5QdHI8TVRMQnVmZmVyPiBtX21ldGFsOworI2VuZGlmCisgICAgUmVmUHRy
PEpTQzo6QXJyYXlCdWZmZXI+IG1fY29udGVudHM7Cit9OworICAgIAorfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9sZWdhY3kvR1BVTGVnYWN5Q29tbWFuZEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L0dQVUxlZ2FjeUNvbW1hbmRCdWZmZXIu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZhMjFkNjViOTA4M2E1MDIxNzI5NWZiYThjZTgxYjdmYzAyYjdlM2IK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
bGVnYWN5L0dQVUxlZ2FjeUNvbW1hbmRCdWZmZXIuY3BwCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE3IFl1aWNoaXJvIEtpa3VyYSAoeS5raWt1cmFAZ21haWwuY29tKQor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiR1BVTGVnYWN5Q29tbWFuZEJ1ZmZlci5oIgorCisjaWYgRU5BQkxF
KFdFQk1FVEFMKQorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK0dQVUxlZ2FjeUNvbW1hbmRCdWZmZXI6On5HUFVMZWdhY3lDb21tYW5kQnVmZmVyKCkKK3sK
KyAgICBMT0coV2ViTWV0YWwsICJHUFVDb21tYW5kQnVmZmVyOjp+R1BVQ29tbWFuZEJ1ZmZlcigp
Iik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L0dQVUxlZ2FjeUNvbW1h
bmRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kv
R1BVTGVnYWN5Q29tbWFuZEJ1ZmZlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdjYTNlMDhjMjM1MzZlZjA5Y2Rk
MzkzMjE1ZDRlNzE2MGUwNzJlMzIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L0dQVUxlZ2FjeUNvbW1hbmRCdWZmZXIuaApAQCAt
MCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNyBZdWljaGlybyBLaWt1cmEgKHku
a2lrdXJhQGdtYWlsLmNvbSkKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCTUVUQUwpCisKKyNpbmNsdWRlIDx3
dGYvRnVuY3Rpb24uaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK09CSkNfUFJPVE9D
T0woTVRMQ29tbWFuZEJ1ZmZlcik7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgR1BV
TGVnYWN5Q29tbWFuZFF1ZXVlOworY2xhc3MgR1BVTGVnYWN5RHJhd2FibGU7CisKK2NsYXNzIEdQ
VUxlZ2FjeUNvbW1hbmRCdWZmZXIgeworcHVibGljOgorICAgIGV4cGxpY2l0IEdQVUxlZ2FjeUNv
bW1hbmRCdWZmZXIoY29uc3QgR1BVTGVnYWN5Q29tbWFuZFF1ZXVlJiwgRnVuY3Rpb248dm9pZCgp
PiYmIGNvbXBsZXRlZENhbGxiYWNrKTsKKyAgICB+R1BVTGVnYWN5Q29tbWFuZEJ1ZmZlcigpOwor
CisgICAgdm9pZCBjb21taXQoKSBjb25zdDsKKyAgICB2b2lkIHByZXNlbnREcmF3YWJsZShHUFVM
ZWdhY3lEcmF3YWJsZSYpIGNvbnN0OworCisjaWYgVVNFKE1FVEFMKQorICAgIE1UTENvbW1hbmRC
dWZmZXIgKm1ldGFsKCkgY29uc3QgeyByZXR1cm4gbV9tZXRhbC5nZXQoKTsgfQorI2VuZGlmCisK
KyNpZiBVU0UoTUVUQUwpCitwcml2YXRlOgorICAgIFJldGFpblB0cjxNVExDb21tYW5kQnVmZmVy
PiBtX21ldGFsOworI2VuZGlmCit9OworICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9s
ZWdhY3kvR1BVTGVnYWN5Q29tbWFuZFF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9sZWdhY3kvR1BVTGVnYWN5Q29tbWFuZFF1ZXVlLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40MjA1MjgxODJhMGZlZWY5ZmIzNzIwNWFiNjJhNzhjYTBmNjllYjgwCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9HUFVMZWdh
Y3lDb21tYW5kUXVldWUuY3BwCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
R1BVTGVnYWN5Q29tbWFuZFF1ZXVlLmgiCisKKyNpZiBFTkFCTEUoV0VCTUVUQUwpCisKKyNpbmNs
dWRlICJMb2dnaW5nLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworR1BVTGVnYWN5Q29tbWFu
ZFF1ZXVlOjp+R1BVTGVnYWN5Q29tbWFuZFF1ZXVlKCkKK3sKKyAgICBMT0coV2ViTWV0YWwsICJH
UFVMZWdhY3lDb21tYW5kUXVldWU6On5HUFVMZWdhY3lDb21tYW5kUXVldWUoKSIpOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9HUFVMZWdhY3lDb21tYW5kUXVldWUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvR1BVTGVnYWN5Q29t
bWFuZFF1ZXVlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjI2ZjhlMmE4MzQyMGE0NzEwNDhkM2NiNzA0OTk5MTQw
NjljNTE2NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9sZWdhY3kvR1BVTGVnYWN5Q29tbWFuZFF1ZXVlLmgKQEAgLTAsMCArMSw1OCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgRU5BQkxFKFdFQk1FVEFMKQorCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgor
CitPQkpDX1BST1RPQ09MKE1UTENvbW1hbmRRdWV1ZSk7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgR1BVTGVnYWN5RGV2aWNlOworCitjbGFzcyBHUFVMZWdhY3lDb21tYW5kUXVldWUg
eworcHVibGljOgorICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IEdQVUxlZ2FjeUNvbW1hbmRR
dWV1ZShjb25zdCBHUFVMZWdhY3lEZXZpY2UmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB+R1BVTGVn
YWN5Q29tbWFuZFF1ZXVlKCk7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgbGFiZWwoKSBj
b25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldExhYmVsKGNvbnN0IFN0cmluZyYpIGNv
bnN0OworCisjaWYgVVNFKE1FVEFMKQorICAgIE1UTENvbW1hbmRRdWV1ZSAqbWV0YWwoKSBjb25z
dCB7IHJldHVybiBtX21ldGFsLmdldCgpOyB9CisjZW5kaWYKKworI2lmIFVTRShNRVRBTCkKK3By
aXZhdGU6CisgICAgUmV0YWluUHRyPE1UTENvbW1hbmRRdWV1ZT4gbV9tZXRhbDsKKyNlbmRpZgor
fTsKKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L0dQVUxlZ2FjeUNvbXB1
dGVDb21tYW5kRW5jb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvbGVnYWN5L0dQVUxlZ2FjeUNvbXB1dGVDb21tYW5kRW5jb2Rlci5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZmI3YzllN2U1YjM0Mzg2MjlmMzhjZGJmN2FkZjJmZjk3NWNhYjJmMgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvR1BVTGVnYWN5
Q29tcHV0ZUNvbW1hbmRFbmNvZGVyLmNwcApAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE3IFl1aWNoaXJvIEtpa3VyYSAoeS5raWt1cmFAZ21haWwuY29tKQorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiR1BVTGVnYWN5Q29tcHV0ZUNvbW1hbmRFbmNvZGVyLmgiCisKKyNpZiBFTkFC
TEUoV0VCTUVUQUwpCisKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKyAgICAKK0dQVUxlZ2FjeUNvbXB1dGVDb21tYW5kRW5jb2Rlcjo6fkdQVUxlZ2FjeUNvbXB1
dGVDb21tYW5kRW5jb2RlcigpCit7CisgICAgTE9HKFdlYk1ldGFsLCAiR1BVTGVnYWN5Q29tcHV0
ZUNvbW1hbmRFbmNvZGVyOjp+R1BVTGVnYWN5Q29tcHV0ZUNvbW1hbmRFbmNvZGVyKCkiKTsKK30K
KyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L0dQVUxlZ2FjeUNvbXB1dGVD
b21tYW5kRW5jb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xl
Z2FjeS9HUFVMZWdhY3lDb21wdXRlQ29tbWFuZEVuY29kZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xN2E3YTk2
NzdjZmQ2ZjU1NTAwNjk5ZjM2Y2VjMTczOWQ4YWZjYTNjCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9HUFVMZWdhY3lDb21wdXRl
Q29tbWFuZEVuY29kZXIuaApAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE3IFl1aWNoaXJvIEtpa3VyYSAoeS5raWt1cmFAZ21haWwuY29tKQorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShX
RUJNRVRBTCkKKworI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworT0JKQ19QUk9UT0NPTChN
VExDb21wdXRlQ29tbWFuZEVuY29kZXIpOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCitj
bGFzcyBHUFVMZWdhY3lCdWZmZXI7CitjbGFzcyBHUFVMZWdhY3lDb21tYW5kQnVmZmVyOworY2xh
c3MgR1BVTGVnYWN5Q29tcHV0ZVBpcGVsaW5lU3RhdGU7CisKK3N0cnVjdCBHUFVMZWdhY3lTaXpl
OworCitjbGFzcyBHUFVMZWdhY3lDb21wdXRlQ29tbWFuZEVuY29kZXIgeworcHVibGljOgorICAg
IGV4cGxpY2l0IEdQVUxlZ2FjeUNvbXB1dGVDb21tYW5kRW5jb2Rlcihjb25zdCBHUFVMZWdhY3lD
b21tYW5kQnVmZmVyJik7CisgICAgfkdQVUxlZ2FjeUNvbXB1dGVDb21tYW5kRW5jb2RlcigpOwor
CisgICAgdm9pZCBzZXRDb21wdXRlUGlwZWxpbmVTdGF0ZShjb25zdCBHUFVMZWdhY3lDb21wdXRl
UGlwZWxpbmVTdGF0ZSYpIGNvbnN0OworICAgIHZvaWQgc2V0QnVmZmVyKGNvbnN0IEdQVUxlZ2Fj
eUJ1ZmZlciYsIHVuc2lnbmVkLCB1bnNpZ25lZCkgY29uc3Q7CisgICAgdm9pZCBkaXNwYXRjaChH
UFVMZWdhY3lTaXplLCBHUFVMZWdhY3lTaXplKSBjb25zdDsKKyAgICB2b2lkIGVuZEVuY29kaW5n
KCkgY29uc3Q7CisKKyNpZiBVU0UoTUVUQUwpCitwcml2YXRlOgorICAgIFJldGFpblB0cjxNVExD
b21wdXRlQ29tbWFuZEVuY29kZXI+IG1fbWV0YWw7CisjZW5kaWYKK307CisgICAgCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9HUFVMZWdhY3lDb21wdXRlUGlwZWxpbmVTdGF0ZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L0dQVUxlZ2Fj
eUNvbXB1dGVQaXBlbGluZVN0YXRlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYjcwNGZjZTU1ZWRlYWNjMWNm
YzRhNzg5YjgzNTUxZGIyNjZjZGM0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9HUFVMZWdhY3lDb21wdXRlUGlwZWxpbmVTdGF0
ZS5jcHAKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBZdWljaGly
byBLaWt1cmEgKHkua2lrdXJhQGdtYWlsLmNvbSkKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdQVUxlZ2Fj
eUNvbXB1dGVQaXBlbGluZVN0YXRlLmgiCisKKyNpZiBFTkFCTEUoV0VCTUVUQUwpCisKKyNpbmNs
dWRlICJMb2dnaW5nLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKK0dQVUxlZ2FjeUNv
bXB1dGVQaXBlbGluZVN0YXRlOjp+R1BVTGVnYWN5Q29tcHV0ZVBpcGVsaW5lU3RhdGUoKQorewor
ICAgIExPRyhXZWJNZXRhbCwgIkdQVUxlZ2FjeUNvbXB1dGVQaXBlbGluZVN0YXRlOjp+R1BVTGVn
YWN5Q29tcHV0ZVBpcGVsaW5lU3RhdGUoKSIpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L2xlZ2FjeS9HUFVMZWdhY3lDb21wdXRlUGlwZWxpbmVTdGF0ZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9HUFVMZWdhY3lDb21wdXRlUGlwZWxpbmVT
dGF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjIyYjkzMDM3MDA5ZmI4NzUwNmE2MzM4NTE3MmVmNTA3NzVmYTM2
YWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvbGVnYWN5L0dQVUxlZ2FjeUNvbXB1dGVQaXBlbGluZVN0YXRlLmgKQEAgLTAsMCArMSw1NyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBZdWljaGlybyBLaWt1cmEgKHkua2lrdXJhQGdt
YWlsLmNvbSkKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCTUVUQUwpCisKKyNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+CisKK09CSkNfUFJPVE9DT0woTVRMQ29tcHV0ZVBpcGVsaW5lU3RhdGUpOworCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEdQVUxlZ2FjeURldmljZTsKK2NsYXNzIEdQVUxlZ2Fj
eUZ1bmN0aW9uOworCitjbGFzcyBHUFVMZWdhY3lDb21wdXRlUGlwZWxpbmVTdGF0ZSB7CitwdWJs
aWM6CisgICAgR1BVTGVnYWN5Q29tcHV0ZVBpcGVsaW5lU3RhdGUoKSA9IGRlZmF1bHQ7CisgICAg
R1BVTGVnYWN5Q29tcHV0ZVBpcGVsaW5lU3RhdGUoY29uc3QgR1BVTGVnYWN5RGV2aWNlJiwgY29u
c3QgR1BVTGVnYWN5RnVuY3Rpb24mKTsKKyAgICB+R1BVTGVnYWN5Q29tcHV0ZVBpcGVsaW5lU3Rh
dGUoKTsKKworI2lmIFVTRShNRVRBTCkKKyAgICBNVExDb21wdXRlUGlwZWxpbmVTdGF0ZSAqbWV0
YWwoKSBjb25zdCB7IHJldHVybiBtX21ldGFsLmdldCgpOyB9CisjZW5kaWYKKworI2lmIFVTRShN
RVRBTCkKK3ByaXZhdGU6CisgICAgUmV0YWluUHRyPE1UTENvbXB1dGVQaXBlbGluZVN0YXRlPiBt
X21ldGFsOworI2VuZGlmCit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9H
UFVMZWdhY3lEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvR1BVTGVnYWN5RGVwdGhTdGVuY2lsRGVzY3JpcHRvci5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOWNjNzlkNmRkNjMxM2MyYTNkODdkMjQ3OTFkNzZjODM4MDU0MzExMwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9s
ZWdhY3kvR1BVTGVnYWN5RGVwdGhTdGVuY2lsRGVzY3JpcHRvci5jcHAKQEAgLTAsMCArMSw0MiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJHUFVMZWdhY3lEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmgi
CisKKyNpZiBFTkFCTEUoV0VCTUVUQUwpCisKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworR1BVTGVnYWN5RGVwdGhTdGVuY2lsRGVzY3JpcHRvcjo6fkdQVUxl
Z2FjeURlcHRoU3RlbmNpbERlc2NyaXB0b3IoKQoreworICAgIExPRyhXZWJNZXRhbCwgIkdQVURl
cHRoU3RlbmNpbERlc2NyaXB0b3I6On5HUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yKCkiKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvR1BVTGVnYWN5RGVwdGhTdGVuY2ls
RGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2Fj
eS9HUFVMZWdhY3lEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDljYmYxODI1
ZDA5MDU3MzVlNGU0NTA5ZDE5MmJlNGFlODI2NjcwMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvR1BVTGVnYWN5RGVwdGhTdGVu
Y2lsRGVzY3JpcHRvci5oCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJNRVRB
TCkKKworI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworT0JKQ19DTEFTUyBNVExEZXB0aFN0
ZW5jaWxEZXNjcmlwdG9yOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2VudW0gY2xhc3MgR1BV
TGVnYWN5Q29tcGFyZUZ1bmN0aW9uOworCitjbGFzcyBHUFVMZWdhY3lEZXB0aFN0ZW5jaWxEZXNj
cmlwdG9yIHsKK3B1YmxpYzoKKyAgICBHUFVMZWdhY3lEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yKCk7
CisgICAgfkdQVUxlZ2FjeURlcHRoU3RlbmNpbERlc2NyaXB0b3IoKTsKKworICAgIGJvb2wgZGVw
dGhXcml0ZUVuYWJsZWQoKSBjb25zdDsKKyAgICB2b2lkIHNldERlcHRoV3JpdGVFbmFibGVkKGJv
b2wpIGNvbnN0OworCisgICAgR1BVTGVnYWN5Q29tcGFyZUZ1bmN0aW9uIGRlcHRoQ29tcGFyZUZ1
bmN0aW9uKCkgY29uc3Q7CisgICAgdm9pZCBzZXREZXB0aENvbXBhcmVGdW5jdGlvbihHUFVMZWdh
Y3lDb21wYXJlRnVuY3Rpb24pIGNvbnN0OworCisjaWYgVVNFKE1FVEFMKQorICAgIE1UTERlcHRo
U3RlbmNpbERlc2NyaXB0b3IgKm1ldGFsKCkgY29uc3QgeyByZXR1cm4gbV9tZXRhbC5nZXQoKTsg
fQorI2VuZGlmCisKKyNpZiBVU0UoTUVUQUwpCitwcml2YXRlOgorICAgIFJldGFpblB0cjxNVExE
ZXB0aFN0ZW5jaWxEZXNjcmlwdG9yPiBtX21ldGFsOworI2VuZGlmCit9OworICAgIAorfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvR1BVTGVnYWN5RGVwdGhTdGVuY2lsU3RhdGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9HUFVMZWdhY3lE
ZXB0aFN0ZW5jaWxTdGF0ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDI3ZjU0ZjdjYmE4MDY0YWEyNTlmZTc2
MmM4ZGFkZGQyNTI0NDU0MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvR1BVTGVnYWN5RGVwdGhTdGVuY2lsU3RhdGUuY3BwCkBA
IC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR1BVTGVnYWN5RGVwdGhTdGVuY2ls
U3RhdGUuaCIKKworI2lmIEVOQUJMRShXRUJNRVRBTCkKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitHUFVMZWdhY3lEZXB0aFN0ZW5jaWxTdGF0ZTo6fkdQ
VUxlZ2FjeURlcHRoU3RlbmNpbFN0YXRlKCkKK3sKKyAgICBMT0coV2ViTWV0YWwsICJHUFVMZWdh
Y3lEZXB0aFN0ZW5jaWxTdGF0ZTo6fkdQVUxlZ2FjeURlcHRoU3RlbmNpbFN0YXRlKCkiKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvR1BVTGVnYWN5RGVwdGhTdGVuY2ls
U3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvR1BV
TGVnYWN5RGVwdGhTdGVuY2lsU3RhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNjRmZjU1YTg0NjU5OTgzNmJm
ODVkOGYzOTk0OGVlMjY2ZWYzNzFjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9HUFVMZWdhY3lEZXB0aFN0ZW5jaWxTdGF0ZS5o
CkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJNRVRBTCkKKworI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCitPQkpDX1BST1RP
Q09MKE1UTERlcHRoU3RlbmNpbFN0YXRlKTsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBHUFVMZWdhY3lEZXZpY2U7CitjbGFzcyBHUFVMZWdhY3lEZXB0aFN0ZW5jaWxEZXNjcmlwdG9y
OworCitjbGFzcyBHUFVMZWdhY3lEZXB0aFN0ZW5jaWxTdGF0ZSB7CitwdWJsaWM6CisgICAgR1BV
TGVnYWN5RGVwdGhTdGVuY2lsU3RhdGUoKSA9IGRlZmF1bHQ7CisgICAgR1BVTGVnYWN5RGVwdGhT
dGVuY2lsU3RhdGUoY29uc3QgR1BVTGVnYWN5RGV2aWNlJiwgY29uc3QgR1BVTGVnYWN5RGVwdGhT
dGVuY2lsRGVzY3JpcHRvciYpOworICAgIH5HUFVMZWdhY3lEZXB0aFN0ZW5jaWxTdGF0ZSgpOwor
CisgICAgU3RyaW5nIGxhYmVsKCkgY29uc3Q7CisgICAgdm9pZCBzZXRMYWJlbChjb25zdCBTdHJp
bmcmKSBjb25zdDsKKworI2lmIFVTRShNRVRBTCkKKyAgICBNVExEZXB0aFN0ZW5jaWxTdGF0ZSAq
bWV0YWwoKSBjb25zdCB7IHJldHVybiBtX21ldGFsLmdldCgpOyB9CisjZW5kaWYKKworI2lmIFVT
RShNRVRBTCkKK3ByaXZhdGU6CisgICAgUmV0YWluUHRyPE1UTERlcHRoU3RlbmNpbFN0YXRlPiBt
X21ldGFsOworI2VuZGlmCit9OworICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdh
Y3kvR1BVTGVnYWN5RGV2aWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9sZWdhY3kvR1BVTGVnYWN5RGV2aWNlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NGVmYjY3NGZkNjRm
YjJjNDk1ZDM5ZWI4OWM4Y2RkNmE4ZmFjNGU3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9HUFVMZWdhY3lEZXZpY2UuY3BwCkBA
IC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR1BVTGVnYWN5RGV2aWNlLmgiCisK
KyNpZiBFTkFCTEUoV0VCTUVUQUwpCisKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworR1BVTGVnYWN5RGV2aWNlOjp+R1BVTGVnYWN5RGV2aWNlKCkKK3sKKyAg
ICBMT0coV2ViTWV0YWwsICJHUFVMZWdhY3lEZXZpY2U6On5HUFVMZWdhY3lEZXZpY2UoKSIpOwor
ICAgIGRpc2Nvbm5lY3QoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kv
R1BVTGVnYWN5RGV2aWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
bGVnYWN5L0dQVUxlZ2FjeURldmljZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc0NmQzNWJhNTFmNmNlMDY1YjZi
MGNjZGIxOWVmMTRmNDc4ZTUxZTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L0dQVUxlZ2FjeURldmljZS5oCkBAIC0wLDAgKzEs
NjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJNRVRBTCkKKworI2luY2x1ZGUgPHd0Zi9SZXRhaW5Q
dHIuaD4KKworT0JKQ19DTEFTUyBDQUxheWVyOworT0JKQ19DTEFTUyBXZWJNZXRhbExheWVyOwor
CitPQkpDX1BST1RPQ09MKE1UTERldmljZSk7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgR1BVTGVnYWN5RGV2aWNlIHsKK3B1YmxpYzoKKyAgICBXRUJDT1JFX0VYUE9SVCBHUFVMZWdh
Y3lEZXZpY2UoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB+R1BVTGVnYWN5RGV2aWNlKCk7CisKKyAg
ICBXRUJDT1JFX0VYUE9SVCBib29sIG9wZXJhdG9yISgpIGNvbnN0OworCisgICAgdm9pZCByZXNo
YXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkgY29uc3Q7CisKKyNpZiBVU0UoTUVUQUwpCisgICAg
V2ViTWV0YWxMYXllciAqbGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX2xheWVyLmdldCgpOyB9Cisg
ICAgV0VCQ09SRV9FWFBPUlQgQ0FMYXllciAqcGxhdGZvcm1MYXllcigpIGNvbnN0OworICAgIE1U
TERldmljZSAqbWV0YWwoKSBjb25zdCB7IHJldHVybiBtX21ldGFsLmdldCgpOyB9CisjZW5kaWYK
KworICAgIHZvaWQgbWFya0xheWVyQ29tcG9zaXRlZCgpIGNvbnN0IHsgfQorCitwcml2YXRlOgor
ICAgIHZvaWQgZGlzY29ubmVjdCgpOworCisjaWYgVVNFKE1FVEFMKQorICAgIFJldGFpblB0cjxX
ZWJNZXRhbExheWVyPiBtX2xheWVyOworICAgIFJldGFpblB0cjxNVExEZXZpY2U+IG1fbWV0YWw7
CisjZW5kaWYKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L0dQVUxlZ2Fj
eURyYXdhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdh
Y3kvR1BVTGVnYWN5RHJhd2FibGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU0MmZkYzU5YjRhMDA5NGRmYTBh
YWQ4MjVhNjlkYzA2NTdmMWYwOWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L0dQVUxlZ2FjeURyYXdhYmxlLmNwcApAQCAtMCww
ICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdQVUxlZ2FjeURyYXdhYmxlLmgiCisKKyNp
ZiBFTkFCTEUoV0VCTUVUQUwpCisKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworR1BVTGVnYWN5RHJhd2FibGU6On5HUFVMZWdhY3lEcmF3YWJsZSgpCit7Cisg
ICAgTE9HKFdlYk1ldGFsLCAiR1BVTGVnYWN5RHJhd2FibGU6On5HUFVMZWdhY3lEcmF3YWJsZSgp
Iik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L0dQVUxlZ2FjeURyYXdh
YmxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L0dQVUxl
Z2FjeURyYXdhYmxlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWFiZmZlMmU5ZDU5OTBlNmUxODE3OThiMDJhM2Iz
MWFhZjFiMzliNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9sZWdhY3kvR1BVTGVnYWN5RHJhd2FibGUuaApAQCAtMCwwICsxLDYwIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpZiBFTkFCTEUoV0VCTUVUQUwpCisKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisK
K09CSkNfUFJPVE9DT0woTVRMRHJhd2FibGUpOworT0JKQ19QUk9UT0NPTChNVExUZXh0dXJlKTsK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBHUFVMZWdhY3lEZXZpY2U7CisKK2NsYXNz
IEdQVUxlZ2FjeURyYXdhYmxlIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBHUFVMZWdhY3lEcmF3
YWJsZShjb25zdCBHUFVMZWdhY3lEZXZpY2UmKTsKKyAgICB+R1BVTGVnYWN5RHJhd2FibGUoKTsK
KworICAgIHZvaWQgcmVsZWFzZSgpOworCisjaWYgVVNFKE1FVEFMKQorICAgIE1UTERyYXdhYmxl
ICptZXRhbCgpIGNvbnN0OworCisgICAgLy8gRklYTUU6IFdlYk1ldGFsIC0gbm90IGFsbCBkcmF3
YWJsZXMgc2hvdWxkIGhhdmUgdGhpcy4gT25seSB0aGUgZnJhbWVidWZmZXIuCisgICAgTVRMVGV4
dHVyZSAqdGV4dHVyZSgpIGNvbnN0OworI2VuZGlmCisKKyNpZiBVU0UoTUVUQUwpCitwcml2YXRl
OgorICAgIFJldGFpblB0cjxNVExEcmF3YWJsZT4gbV9tZXRhbDsKKyNlbmRpZgorfTsKKyAgICAK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9HUFVMZWdhY3lFbnVtcy5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9HUFVMZWdhY3lFbnVtcy5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjExZTE4ZDQyMzAzNTBjOGNmNTkxODliNDRlMDEyZmU5MjMxMzk5MTMKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5
L0dQVUxlZ2FjeUVudW1zLmgKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQk1F
VEFMKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2VudW0gY2xhc3MgR1BVTGVnYWN5Q29tcGFy
ZUZ1bmN0aW9uIHsKKyAgICBOZXZlciA9IDAsCisgICAgTGVzcyA9IDEsCisgICAgRXF1YWwgPSAy
LAorICAgIExlc3NFcXVhbCA9IDMsCisgICAgR3JlYXRlciA9IDQsCisgICAgTm90RXF1YWwgPSA1
LAorICAgIEdyZWF0ZXJFcXVhbCA9IDYsCisgICAgQWx3YXlzID0gNworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvR1BVTGVnYWN5RnVuY3Rpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9HUFVMZWdhY3lGdW5jdGlvbi5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNzRkNTQyNTgwYWNkN2RlMDAxNjc4ZjA3NDViMTRjNDg2ZWEzMjFkZQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdh
Y3kvR1BVTGVnYWN5RnVuY3Rpb24uY3BwCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiR1BVTGVnYWN5RnVuY3Rpb24uaCIKKworI2lmIEVOQUJMRShXRUJNRVRBTCkKKworI2lu
Y2x1ZGUgIkxvZ2dpbmcuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitHUFVMZWdhY3lGdW5j
dGlvbjo6fkdQVUxlZ2FjeUZ1bmN0aW9uKCkKK3sKKyAgICBMT0coV2ViTWV0YWwsICJHUFVMZWdh
Y3lGdW5jdGlvbjo6fkdQVUxlZ2FjeUZ1bmN0aW9uKCkiKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9sZWdhY3kvR1BVTGVnYWN5RnVuY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvR1BVTGVnYWN5RnVuY3Rpb24uaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li41Zjk2OTBjNTc4YWM2YTFlZjY3NDUzODE4YTc3NGFkOGQ3YjU2ZDAxCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9HUFVMZWdh
Y3lGdW5jdGlvbi5oCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJNRVRBTCkK
KworI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworT0JKQ19QUk9UT0NPTChNVExGdW5jdGlv
bik7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgR1BVTGVnYWN5TGlicmFyeTsKKwor
Y2xhc3MgR1BVTGVnYWN5RnVuY3Rpb24geworcHVibGljOgorICAgIFdFQkNPUkVfRVhQT1JUIEdQ
VUxlZ2FjeUZ1bmN0aW9uKGNvbnN0IEdQVUxlZ2FjeUxpYnJhcnkmLCBjb25zdCBTdHJpbmcmIG5h
bWUpOworICAgIFdFQkNPUkVfRVhQT1JUIH5HUFVMZWdhY3lGdW5jdGlvbigpOworCisgICAgYm9v
bCBvcGVyYXRvciEoKSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBuYW1lKCkg
Y29uc3Q7CisKKyNpZiBVU0UoTUVUQUwpCisgICAgTVRMRnVuY3Rpb24gKm1ldGFsKCkgY29uc3Qg
eyByZXR1cm4gbV9tZXRhbC5nZXQoKTsgfQorI2VuZGlmCisKKyNpZiBVU0UoTUVUQUwpCitwcml2
YXRlOgorICAgIFJldGFpblB0cjxNVExGdW5jdGlvbj4gbV9tZXRhbDsKKyNlbmRpZgorfTsKKyAg
ICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L0dQVUxlZ2FjeUxpYnJhcnkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9HUFVMZWdhY3lM
aWJyYXJ5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYzJiMzk2MmQ3ODVmZTI1MDM5ZWRmYzQwNDVkNTE1MDQ0
ZmUyN2EzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L2xlZ2FjeS9HUFVMZWdhY3lMaWJyYXJ5LmNwcApAQCAtMCwwICsxLDQyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkdQVUxlZ2FjeUxpYnJhcnkuaCIKKworI2lmIEVOQUJMRShXRUJNRVRB
TCkKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitHUFVM
ZWdhY3lMaWJyYXJ5Ojp+R1BVTGVnYWN5TGlicmFyeSgpCit7CisgICAgTE9HKFdlYk1ldGFsLCAi
R1BVTGVnYWN5TGlicmFyeTo6fkdQVUxlZ2FjeUxpYnJhcnkoKSIpOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9HUFVMZWdhY3lMaWJyYXJ5LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L0dQVUxlZ2FjeUxpYnJhcnkuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4xNTBkZjMxMjJiYjIwMjVkMTA5ZTQ2NGRiMTAwZjJkN2I5NjhhNmIzCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9HUFVM
ZWdhY3lMaWJyYXJ5LmgKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQk1FVEFM
KQorCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCitPQkpDX1BST1RPQ09MKE1UTExpYnJh
cnkpOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEdQVUxlZ2FjeURldmljZTsKKwor
Y2xhc3MgR1BVTGVnYWN5TGlicmFyeSB7CitwdWJsaWM6CisgICAgV0VCQ09SRV9FWFBPUlQgR1BV
TGVnYWN5TGlicmFyeShjb25zdCBHUFVMZWdhY3lEZXZpY2UmLCBjb25zdCBTdHJpbmcmIHNvdXJj
ZUNvZGUpOworICAgIFdFQkNPUkVfRVhQT1JUIH5HUFVMZWdhY3lMaWJyYXJ5KCk7CisKKyAgICBX
RUJDT1JFX0VYUE9SVCBTdHJpbmcgbGFiZWwoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldExhYmVsKGNvbnN0IFN0cmluZyYpIGNvbnN0OworCisgICAgV0VCQ09SRV9FWFBPUlQg
VmVjdG9yPFN0cmluZz4gZnVuY3Rpb25OYW1lcygpIGNvbnN0OworCisjaWYgVVNFKE1FVEFMKQor
ICAgIE1UTExpYnJhcnkgKm1ldGFsKCkgY29uc3QgeyByZXR1cm4gbV9tZXRhbC5nZXQoKTsgfQor
I2VuZGlmCisKKyNpZiBVU0UoTUVUQUwpCitwcml2YXRlOgorICAgIFJldGFpblB0cjxNVExMaWJy
YXJ5PiBtX21ldGFsOworI2VuZGlmCit9OworICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9sZWdhY3kvR1BVTGVnYWN5UmVuZGVyQ29tbWFuZEVuY29kZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9HUFVMZWdhY3lSZW5kZXJDb21tYW5kRW5j
b2Rlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYTNlNzQ4NzVkN2E5YmEyOWYyYjEwMTg4ZWYxZThlMWYwODEx
NmM5MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9sZWdhY3kvR1BVTGVnYWN5UmVuZGVyQ29tbWFuZEVuY29kZXIuY3BwCkBAIC0wLDAgKzEs
NDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR1BVTGVnYWN5UmVuZGVyQ29tbWFuZEVuY29kZXIu
aCIKKworI2lmIEVOQUJMRShXRUJNRVRBTCkKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitHUFVMZWdhY3lSZW5kZXJDb21tYW5kRW5jb2Rlcjo6fkdQVUxl
Z2FjeVJlbmRlckNvbW1hbmRFbmNvZGVyKCkKK3sKKyAgICBMT0coV2ViTWV0YWwsICJHUFVMZWdh
Y3lSZW5kZXJDb21tYW5kRW5jb2Rlcjo6fkdQVUxlZ2FjeVJlbmRlckNvbW1hbmRFbmNvZGVyKCki
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvR1BVTGVnYWN5UmVuZGVy
Q29tbWFuZEVuY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9s
ZWdhY3kvR1BVTGVnYWN5UmVuZGVyQ29tbWFuZEVuY29kZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42Y2U2MWUw
Mzc1YjUyM2M2MGEwMDEwMDcwYjU1M2JjZjVkMzAwNDU2Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9HUFVMZWdhY3lSZW5kZXJD
b21tYW5kRW5jb2Rlci5oCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJNRVRB
TCkKKworI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworT0JKQ19QUk9UT0NPTChNVExSZW5k
ZXJDb21tYW5kRW5jb2Rlcik7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgR1BVTGVn
YWN5QnVmZmVyOworY2xhc3MgR1BVTGVnYWN5Q29tbWFuZEJ1ZmZlcjsKK2NsYXNzIEdQVUxlZ2Fj
eURlcHRoU3RlbmNpbFN0YXRlOworY2xhc3MgR1BVTGVnYWN5UmVuZGVyUGFzc0Rlc2NyaXB0b3I7
CitjbGFzcyBHUFVMZWdhY3lSZW5kZXJQaXBlbGluZVN0YXRlOworCitjbGFzcyBHUFVMZWdhY3lS
ZW5kZXJDb21tYW5kRW5jb2RlciB7CitwdWJsaWM6CisgICAgR1BVTGVnYWN5UmVuZGVyQ29tbWFu
ZEVuY29kZXIoY29uc3QgR1BVTGVnYWN5Q29tbWFuZEJ1ZmZlciYsIGNvbnN0IEdQVUxlZ2FjeVJl
bmRlclBhc3NEZXNjcmlwdG9yJik7CisgICAgfkdQVUxlZ2FjeVJlbmRlckNvbW1hbmRFbmNvZGVy
KCk7CisKKyAgICB2b2lkIHNldFJlbmRlclBpcGVsaW5lU3RhdGUoY29uc3QgR1BVTGVnYWN5UmVu
ZGVyUGlwZWxpbmVTdGF0ZSYpIGNvbnN0OworICAgIHZvaWQgc2V0RGVwdGhTdGVuY2lsU3RhdGUo
Y29uc3QgR1BVTGVnYWN5RGVwdGhTdGVuY2lsU3RhdGUmKSBjb25zdDsKKyAgICB2b2lkIHNldFZl
cnRleEJ1ZmZlcihjb25zdCBHUFVMZWdhY3lCdWZmZXImLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2ln
bmVkIGluZGV4KSBjb25zdDsKKyAgICB2b2lkIHNldEZyYWdtZW50QnVmZmVyKGNvbnN0IEdQVUxl
Z2FjeUJ1ZmZlciYsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgaW5kZXgpIGNvbnN0OworICAg
IHZvaWQgZHJhd1ByaW1pdGl2ZXModW5zaWduZWQgdHlwZSwgdW5zaWduZWQgc3RhcnQsIHVuc2ln
bmVkIGNvdW50KSBjb25zdDsKKyAgICB2b2lkIGVuZEVuY29kaW5nKCkgY29uc3Q7CisKKyNpZiBV
U0UoTUVUQUwpCitwcml2YXRlOgorICAgIFJldGFpblB0cjxNVExSZW5kZXJDb21tYW5kRW5jb2Rl
cj4gbV9tZXRhbDsKKyNlbmRpZgorfTsKKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
bGVnYWN5L0dQVUxlZ2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L0dQVUxlZ2FjeVJlbmRlclBh
c3NBdHRhY2htZW50RGVzY3JpcHRvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWNhZjU4MTA3YzNlM2RhMDEy
OGNmYzA4Mzg4OTE4OTlhMzVmY2VhYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvR1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1l
bnREZXNjcmlwdG9yLmNwcApAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdQ
VUxlZ2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5oIgorCisjaWYgRU5BQkxFKFdF
Qk1FVEFMKQorCisjaW5jbHVkZSAiR1BVTGVnYWN5VGV4dHVyZS5oIgorI2luY2x1ZGUgIkxvZ2dp
bmcuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitHUFVMZWdhY3lSZW5kZXJQYXNzQXR0YWNo
bWVudERlc2NyaXB0b3I6On5HUFVMZWdhY3lSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3Io
KQoreworICAgIExPRyhXZWJNZXRhbCwgIkdQVUxlZ2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVz
Y3JpcHRvcjo6fkdQVUxlZ2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcigpIik7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L0dQVUxlZ2FjeVJlbmRlclBhc3NB
dHRhY2htZW50RGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L2xlZ2FjeS9HUFVMZWdhY3lSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5mMjNjNzUwZDRiMzExYTRlYTI5NTJkOTdjNzNmODgxMDQyZDQwOTdiCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9H
UFVMZWdhY3lSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IuaApAQCAtMCwwICsxLDY1IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpZiBFTkFCTEUoV0VCTUVUQUwpCisKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+
CisKK09CSkNfQ0xBU1MgTVRMUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOworCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEdQVUxlZ2FjeVRleHR1cmU7CisKK2NsYXNzIEdQVUxl
Z2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvciB7CitwdWJsaWM6CisgICAgfkdQVUxl
Z2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcigpOworCisgICAgdW5zaWduZWQgbG9h
ZEFjdGlvbigpIGNvbnN0OworICAgIHZvaWQgc2V0TG9hZEFjdGlvbih1bnNpZ25lZCkgY29uc3Q7
CisKKyAgICB1bnNpZ25lZCBzdG9yZUFjdGlvbigpIGNvbnN0OworICAgIHZvaWQgc2V0U3RvcmVB
Y3Rpb24odW5zaWduZWQpIGNvbnN0OworCisgICAgdm9pZCBzZXRUZXh0dXJlKGNvbnN0IEdQVUxl
Z2FjeVRleHR1cmUmKSBjb25zdDsKKworI2lmIFVTRShNRVRBTCkKKyAgICBNVExSZW5kZXJQYXNz
QXR0YWNobWVudERlc2NyaXB0b3IgKm1ldGFsKCkgY29uc3Q7CisjZW5kaWYKKworI2lmIFVTRShN
RVRBTCkKK3Byb3RlY3RlZDoKKyAgICBleHBsaWNpdCBHUFVMZWdhY3lSZW5kZXJQYXNzQXR0YWNo
bWVudERlc2NyaXB0b3IoTVRMUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yICopOworCitw
cml2YXRlOgorICAgIFJldGFpblB0cjxNVExSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3I+
IG1fbWV0YWw7CisjZW5kaWYKK307CisgICAgCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xl
Z2FjeS9HUFVMZWdhY3lSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L0dQVUxlZ2FjeVJlbmRl
clBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYTgyZTk0ZDA4
MzYyOTMyNTU1MjFhZTBjNGU5NGY1OGZmNWFlZDViCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9HUFVMZWdhY3lSZW5kZXJQYXNz
Q29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5jcHAKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJHUFVMZWdhY3lSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5o
IgorCisjaWYgRU5BQkxFKFdFQk1FVEFMKQorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK0dQVUxlZ2FjeVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNj
cmlwdG9yOjp+R1BVTGVnYWN5UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IoKQor
eworICAgIExPRyhXZWJNZXRhbCwgIkdQVUxlZ2FjeVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnRE
ZXNjcmlwdG9yOjp+R1BVTGVnYWN5UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3Io
KSIpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9HUFVMZWdhY3lSZW5k
ZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9HUFVMZWdhY3lSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50
RGVzY3JpcHRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU3ZTg0MWM5MWJkMjQ3M2IxYzk3ZmQyMmU4NTI2Njkx
MGJmOTczNGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvbGVnYWN5L0dQVUxlZ2FjeVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlw
dG9yLmgKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQk1FVEFMKQorCisjaW5j
bHVkZSAiR1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmgiCisKK09CSkNf
Q0xBU1MgTVRMUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3I7CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgR1BVTGVnYWN5UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERl
c2NyaXB0b3IgOiBwdWJsaWMgR1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9y
IHsKK3B1YmxpYzoKKyNpZiBVU0UoTUVUQUwpCisgICAgR1BVTGVnYWN5UmVuZGVyUGFzc0NvbG9y
QXR0YWNobWVudERlc2NyaXB0b3IoTVRMUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0
b3IgKik7CisjZW5kaWYKKyAgICB+R1BVTGVnYWN5UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERl
c2NyaXB0b3IoKTsKKworICAgIFZlY3RvcjxmbG9hdD4gY2xlYXJDb2xvcigpIGNvbnN0OworICAg
IHZvaWQgc2V0Q2xlYXJDb2xvcihjb25zdCBWZWN0b3I8ZmxvYXQ+JikgY29uc3Q7CisKKyNpZiBV
U0UoTUVUQUwpCisgICAgTVRMUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IgKm1l
dGFsKCkgY29uc3Q7CisjZW5kaWYKK307CisgICAgCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L2xlZ2FjeS9HUFVMZWdhY3lSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L0dQVUxlZ2FjeVJl
bmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZTlhOGI3
M2IzZTY5ODliYzY2YjNkMzU1NmIwNzEwMzEwMWIyYmVjCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9HUFVMZWdhY3lSZW5kZXJQ
YXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5jcHAKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJHUFVMZWdhY3lSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRv
ci5oIgorCisjaWYgRU5BQkxFKFdFQk1FVEFMKQorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK0dQVUxlZ2FjeVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnRE
ZXNjcmlwdG9yOjp+R1BVTGVnYWN5UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3Io
KQoreworICAgIExPRyhXZWJNZXRhbCwgIkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNj
cmlwdG9yOjp+R1BVUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IoKSIpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9HUFVMZWdhY3lSZW5kZXJQYXNzRGVw
dGhBdHRhY2htZW50RGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L2xlZ2FjeS9HUFVMZWdhY3lSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRv
ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjI2YzFhZjc5MDUzZTZjMWY2NTY3NWVjODgxZWNiNmMyODk1N2M4ZDAK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
bGVnYWN5L0dQVUxlZ2FjeVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmgKQEAg
LTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQk1FVEFMKQorCisjaW5jbHVkZSAiR1BV
TGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yLmgiCisKK09CSkNfQ0xBU1MgTVRM
UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3I7CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgR1BVTGVnYWN5UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3Ig
OiBwdWJsaWMgR1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yIHsKK3B1Ymxp
YzoKKyNpZiBVU0UoTUVUQUwpCisgICAgR1BVTGVnYWN5UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVu
dERlc2NyaXB0b3IoTVRMUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IgKik7Cisj
ZW5kaWYKKyAgICB+R1BVTGVnYWN5UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3Io
KTsKKworICAgIGRvdWJsZSBjbGVhckRlcHRoKCkgY29uc3Q7CisgICAgdm9pZCBzZXRDbGVhckRl
cHRoKGRvdWJsZSkgY29uc3Q7CisKKyNpZiBVU0UoTUVUQUwpCitwcml2YXRlOgorICAgIE1UTFJl
bmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yICptZXRhbCgpIGNvbnN0OworI2VuZGlm
Cit9OworICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvR1BVTGVnYWN5UmVu
ZGVyUGFzc0Rlc2NyaXB0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L2xlZ2FjeS9HUFVMZWdhY3lSZW5kZXJQYXNzRGVzY3JpcHRvci5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZTYzNmE3YjcyM2VkNDEyN2VkNTM0ZTAzY2Y1MTc5YTllMjJhMjFiZgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvR1BVTGVnYWN5
UmVuZGVyUGFzc0Rlc2NyaXB0b3IuY3BwCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiR1BVTGVnYWN5UmVuZGVyUGFzc0Rlc2NyaXB0b3IuaCIKKworI2lmIEVOQUJMRShXRUJN
RVRBTCkKKworI2luY2x1ZGUgIkdQVUxlZ2FjeVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNj
cmlwdG9yLmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K0dQVUxlZ2FjeVJlbmRlclBhc3NEZXNjcmlwdG9yOjp+R1BVTGVnYWN5UmVuZGVyUGFzc0Rlc2Ny
aXB0b3IoKQoreworICAgIExPRyhXZWJNZXRhbCwgIkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yOjp+
R1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IoKSIpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L2xlZ2FjeS9HUFVMZWdhY3lSZW5kZXJQYXNzRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9HUFVMZWdhY3lSZW5kZXJQYXNzRGVzY3Jp
cHRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZhZTgxNjkwYmVlMWMyMTc2MjAzYTU5MmFkMjI2NzFmYjRlNGM4
ZTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvbGVnYWN5L0dQVUxlZ2FjeVJlbmRlclBhc3NEZXNjcmlwdG9yLmgKQEAgLTAsMCArMSw1OSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaWYgRU5BQkxFKFdFQk1FVEFMKQorCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgorCitPQkpDX0NMQVNTIE1UTFJlbmRlclBhc3NEZXNjcmlwdG9yOworCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIEdQVUxlZ2FjeVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlw
dG9yOworY2xhc3MgR1BVTGVnYWN5UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3I7
CisKK2NsYXNzIEdQVUxlZ2FjeVJlbmRlclBhc3NEZXNjcmlwdG9yIHsKK3B1YmxpYzoKKyAgICBH
UFVMZWdhY3lSZW5kZXJQYXNzRGVzY3JpcHRvcigpOworICAgIH5HUFVMZWdhY3lSZW5kZXJQYXNz
RGVzY3JpcHRvcigpOworCisgICAgVmVjdG9yPEdQVUxlZ2FjeVJlbmRlclBhc3NDb2xvckF0dGFj
aG1lbnREZXNjcmlwdG9yPiBjb2xvckF0dGFjaG1lbnRzKCkgY29uc3Q7CisgICAgR1BVTGVnYWN5
UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IgZGVwdGhBdHRhY2htZW50KCkgY29u
c3Q7CisKKyNpZiBVU0UoTUVUQUwpCisgICAgTVRMUmVuZGVyUGFzc0Rlc2NyaXB0b3IgKm1ldGFs
KCkgY29uc3Q7CisjZW5kaWYKKworI2lmIFVTRShNRVRBTCkKK3ByaXZhdGU6CisgICAgUmV0YWlu
UHRyPE1UTFJlbmRlclBhc3NEZXNjcmlwdG9yPiBtX21ldGFsOworI2VuZGlmCit9OworICAgIAor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVD
b2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9sZWdhY3kvR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnRE
ZXNjcmlwdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hOGU2ZTEyMmEzNWMyODcyMTI3NGY4YmNkNWY0M2I0
Njc1NmEzZmU4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L2xlZ2FjeS9HUFVMZWdhY3lSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERl
c2NyaXB0b3IuY3BwCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR1BVTGVn
YWN5UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmgiCisKKyNpZiBFTkFC
TEUoV0VCTUVUQUwpCisKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjp+
R1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKCkKK3sKKyAg
ICBMT0coV2ViTWV0YWwsICJHUFVMZWdhY3lSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERl
c2NyaXB0b3I6On5HUFVMZWdhY3lSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0
b3IoKSIpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9HUFVMZWdhY3lS
ZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVDb2xv
ckF0dGFjaG1lbnREZXNjcmlwdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDJjNjAzNDY4NjM3M2QxMjkwMmRi
NjI5MjA3NzBiZmIwMWMxYzVkMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVDb2xvckF0
dGFjaG1lbnREZXNjcmlwdG9yLmgKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdF
Qk1FVEFMKQorCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCitPQkpDX0NMQVNTIE1UTFJl
bmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjsKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBHUFVMZWdhY3lSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2Ny
aXB0b3IgeworcHVibGljOgorI2lmIFVTRShNRVRBTCkKKyAgICBHUFVMZWdhY3lSZW5kZXJQaXBl
bGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IoTVRMUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFj
aG1lbnREZXNjcmlwdG9yICopOworI2VuZGlmCisgICAgfkdQVUxlZ2FjeVJlbmRlclBpcGVsaW5l
Q29sb3JBdHRhY2htZW50RGVzY3JpcHRvcigpOworCisgICAgdW5zaWduZWQgcGl4ZWxGb3JtYXQo
KSBjb25zdDsKKyAgICB2b2lkIHNldFBpeGVsRm9ybWF0KHVuc2lnbmVkKSBjb25zdDsKKworI2lm
IFVTRShNRVRBTCkKKyAgICBNVExSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0
b3IgKm1ldGFsKCkgY29uc3Q7CisjZW5kaWYKKworI2lmIFVTRShNRVRBTCkKK3ByaXZhdGU6Cisg
ICAgUmV0YWluUHRyPE1UTFJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcj4g
bV9tZXRhbDsKKyNlbmRpZgorfTsKKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVn
YWN5L0dQVUxlZ2FjeVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L0dQVUxlZ2FjeVJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2QxZmQ2MGMzZjVhYjhiYjg2NjA5YmMyNzVlMDE5MmE1
MjViYTZiNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9sZWdhY3kvR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmNwcApAQCAt
MCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdQVUxlZ2FjeVJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvci5oIgorCisjaWYgRU5BQkxFKFdFQk1FVEFMKQorCisjaW5jbHVkZSAiTG9nZ2lu
Zy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0dQVUxlZ2FjeVJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvcjo6fkdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcigpCit7CisgICAgTE9H
KFdlYk1ldGFsLCAiR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjp+R1BVUmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yKCkiKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kv
R1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L0dQVUxlZ2FjeVJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmVjMDkwN2U4MWYwZDFjMzQ5MjQyZWQ1ZjgyOWUzZWUzM2M4ODlkZjIK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
bGVnYWN5L0dQVUxlZ2FjeVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oCkBAIC0wLDAgKzEsNjYg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2lmIEVOQUJMRShXRUJNRVRBTCkKKworI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIu
aD4KKworT0JKQ19DTEFTUyBNVExSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I7CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgR1BVTGVnYWN5RnVuY3Rpb247CitjbGFzcyBHUFVMZWdhY3lS
ZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I7CisKK2NsYXNzIEdQVUxlZ2Fj
eVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciB7CitwdWJsaWM6CisgICAgR1BVTGVnYWN5UmVuZGVy
UGlwZWxpbmVEZXNjcmlwdG9yKCk7CisgICAgfkdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvcigpOworCisgICAgdm9pZCBzZXRWZXJ0ZXhGdW5jdGlvbihjb25zdCBHUFVMZWdhY3lGdW5j
dGlvbiYpIGNvbnN0OworICAgIHZvaWQgc2V0RnJhZ21lbnRGdW5jdGlvbihjb25zdCBHUFVMZWdh
Y3lGdW5jdGlvbiYpIGNvbnN0OworCisgICAgdW5zaWduZWQgZGVwdGhBdHRhY2htZW50UGl4ZWxG
b3JtYXQoKSBjb25zdDsKKyAgICB2b2lkIHNldERlcHRoQXR0YWNobWVudFBpeGVsRm9ybWF0KHVu
c2lnbmVkKSBjb25zdDsKKworICAgIFZlY3RvcjxHUFVMZWdhY3lSZW5kZXJQaXBlbGluZUNvbG9y
QXR0YWNobWVudERlc2NyaXB0b3I+IGNvbG9yQXR0YWNobWVudHMoKSBjb25zdDsKKworICAgIHZv
aWQgcmVzZXQoKSBjb25zdDsKKworI2lmIFVTRShNRVRBTCkKKyAgICBNVExSZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3IgKm1ldGFsKCkgY29uc3Q7CisjZW5kaWYKKworI2lmIFVTRShNRVRBTCkKK3By
aXZhdGU6CisgICAgUmV0YWluUHRyPE1UTFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcj4gbV9tZXRh
bDsKKyNlbmRpZgorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvR1BVTGVn
YWN5UmVuZGVyUGlwZWxpbmVTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvbGVnYWN5L0dQVUxlZ2FjeVJlbmRlclBpcGVsaW5lU3RhdGUuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjFlNGY5YzZkODA5NTgzYTQ3MjQzMmExYjY2MmRiODNjNzBmZDFhMDQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L0dQVUxl
Z2FjeVJlbmRlclBpcGVsaW5lU3RhdGUuY3BwCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVTdGF0ZS5oIgorCisjaWYgRU5BQkxFKFdF
Qk1FVEFMKQorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K0dQVUxlZ2FjeVJlbmRlclBpcGVsaW5lU3RhdGU6On5HUFVMZWdhY3lSZW5kZXJQaXBlbGluZVN0
YXRlKCkKK3sKKyAgICBMT0coV2ViTWV0YWwsICJHUFVMZWdhY3lSZW5kZXJQaXBlbGluZVN0YXRl
Ojp+R1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVTdGF0ZSgpIik7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvbGVnYWN5L0dQVUxlZ2FjeVJlbmRlclBpcGVsaW5lU3RhdGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvR1BVTGVnYWN5UmVuZGVyUGlw
ZWxpbmVTdGF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVhMDllNmE0OGEzNDg4YTRlOWJhMjVmYWYyOGVlMjc3
Mzg4YzUwNDUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvbGVnYWN5L0dQVUxlZ2FjeVJlbmRlclBpcGVsaW5lU3RhdGUuaApAQCAtMCwwICsx
LDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJNRVRBTCkKKworI2luY2x1ZGUgPHd0Zi9S
ZXRhaW5QdHIuaD4KKworT0JKQ19QUk9UT0NPTChNVExSZW5kZXJQaXBlbGluZVN0YXRlKTsKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBHUFVMZWdhY3lEZXZpY2U7CitjbGFzcyBHUFVM
ZWdhY3lSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I7CisKK2NsYXNzIEdQVUxlZ2FjeVJlbmRlclBp
cGVsaW5lU3RhdGUgeworcHVibGljOgorICAgIEdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lU3RhdGUo
KSA9IGRlZmF1bHQ7CisgICAgR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVTdGF0ZShjb25zdCBHUFVM
ZWdhY3lEZXZpY2UmLCBjb25zdCBHUFVMZWdhY3lSZW5kZXJQaXBlbGluZURlc2NyaXB0b3ImKTsK
KyAgICB+R1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVTdGF0ZSgpOworCisgICAgU3RyaW5nIGxhYmVs
KCkgY29uc3Q7CisgICAgdm9pZCBzZXRMYWJlbChjb25zdCBTdHJpbmcmKSBjb25zdDsKKworI2lm
IFVTRShNRVRBTCkKKyAgICBNVExSZW5kZXJQaXBlbGluZVN0YXRlICptZXRhbCgpIGNvbnN0Owor
I2VuZGlmCisKKyNpZiBVU0UoTUVUQUwpCitwcml2YXRlOgorICAgIFJldGFpblB0cjxNVExSZW5k
ZXJQaXBlbGluZVN0YXRlPiBtX21ldGFsOworI2VuZGlmCit9OworICAgIAorfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9sZWdhY3kvR1BVTGVnYWN5U2l6ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9HUFVMZWdhY3lTaXplLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjkw
Y2VhMzUxZmI5ZDZhMzhjYWIzNjRjY2NlOTcxYWRlMjg0MzJmYwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvR1BVTGVnYWN5U2l6
ZS5oCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgWXVpY2hpcm8g
S2lrdXJhICh5Lmtpa3VyYUBnbWFpbC5jb20pCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQk1FVEFMKQorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCitzdHJ1Y3QgR1BVTGVnYWN5U2l6ZSB7CisgICAgdW5z
aWduZWQgd2lkdGg7CisgICAgdW5zaWduZWQgaGVpZ2h0OworICAgIHVuc2lnbmVkIGRlcHRoOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvR1BVTGVnYWN5VGV4dHVyZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L0dQVUxlZ2Fj
eVRleHR1cmUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBkOWNjMmM4OTQxZmE3NGE2Zjc3YmQyNTE4NzVlNjlm
ZTk5MDUzNDIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvbGVnYWN5L0dQVUxlZ2FjeVRleHR1cmUuY3BwCkBAIC0wLDAgKzEsNDIgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiR1BVTGVnYWN5VGV4dHVyZS5oIgorCisjaWYgRU5BQkxFKFdFQk1F
VEFMKQorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0dQ
VUxlZ2FjeVRleHR1cmU6On5HUFVMZWdhY3lUZXh0dXJlKCkKK3sKKyAgICBMT0coV2ViTWV0YWws
ICJHUFVMZWdhY3lUZXh0dXJlOjp+R1BVTGVnYWN5VGV4dHVyZSgpIik7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L0dQVUxlZ2FjeVRleHR1cmUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvR1BVTGVnYWN5VGV4dHVyZS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmNlZmVjMmUyMDc2ZTFmYjc4MDMyZWU5ZTc4MDI1YTI3MGFmOTA0MWQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L0dQ
VUxlZ2FjeVRleHR1cmUuaApAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCTUVU
QUwpCisKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK09CSkNfUFJPVE9DT0woTVRMVGV4
dHVyZSk7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgR1BVTGVnYWN5RGV2aWNlOwor
Y2xhc3MgR1BVTGVnYWN5RHJhd2FibGU7CitjbGFzcyBHUFVMZWdhY3lUZXh0dXJlRGVzY3JpcHRv
cjsKKworY2xhc3MgR1BVTGVnYWN5VGV4dHVyZSB7CitwdWJsaWM6CisgICAgR1BVTGVnYWN5VGV4
dHVyZShjb25zdCBHUFVMZWdhY3lEZXZpY2UmLCBjb25zdCBHUFVMZWdhY3lUZXh0dXJlRGVzY3Jp
cHRvciYpOworICAgIGV4cGxpY2l0IEdQVUxlZ2FjeVRleHR1cmUoY29uc3QgR1BVTGVnYWN5RHJh
d2FibGUmKTsKKyAgICB+R1BVTGVnYWN5VGV4dHVyZSgpOworCisgICAgdW5zaWduZWQgd2lkdGgo
KSBjb25zdDsKKyAgICB1bnNpZ25lZCBoZWlnaHQoKSBjb25zdDsKKworI2lmIFVTRShNRVRBTCkK
KyAgICBNVExUZXh0dXJlICptZXRhbCgpIGNvbnN0OworI2VuZGlmCisKKyNpZiBVU0UoTUVUQUwp
Citwcml2YXRlOgorICAgIFJldGFpblB0cjxNVExUZXh0dXJlPiBtX21ldGFsOworI2VuZGlmCit9
OworICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvR1BVTGVnYWN5VGV4dHVy
ZURlc2NyaXB0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xl
Z2FjeS9HUFVMZWdhY3lUZXh0dXJlRGVzY3JpcHRvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjliYjUwNjky
NDE1ZGUzMmNhMDZlNDViMjY5YmI5NDg2MTE4ZmRhZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvR1BVTGVnYWN5VGV4dHVyZURl
c2NyaXB0b3IuY3BwCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR1BVTGVn
YWN5VGV4dHVyZURlc2NyaXB0b3IuaCIKKworI2lmIEVOQUJMRShXRUJNRVRBTCkKKworI2luY2x1
ZGUgIkxvZ2dpbmcuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitHUFVMZWdhY3lUZXh0dXJl
RGVzY3JpcHRvcjo6fkdQVUxlZ2FjeVRleHR1cmVEZXNjcmlwdG9yKCkKK3sKKyAgICBMT0coV2Vi
TWV0YWwsICJHUFVUZXh0dXJlRGVzY3JpcHRvcjo6fkdQVVRleHR1cmVEZXNjcmlwdG9yKCkiKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvR1BVTGVnYWN5VGV4dHVyZURl
c2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kv
R1BVTGVnYWN5VGV4dHVyZURlc2NyaXB0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NjQ3OTczZTkzMmE0OGI2
MjA3NTA4NjcxYzNhODUxNmFhMjZmMjIwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9HUFVMZWdhY3lUZXh0dXJlRGVzY3JpcHRv
ci5oCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJNRVRBTCkKKworI2luY2x1
ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworT0JKQ19DTEFTUyBNVExUZXh0dXJlRGVzY3JpcHRvcjsK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBHUFVMZWdhY3lUZXh0dXJlRGVzY3JpcHRv
ciB7CitwdWJsaWM6CisgICAgR1BVTGVnYWN5VGV4dHVyZURlc2NyaXB0b3IodW5zaWduZWQgcGl4
ZWxGb3JtYXQsIHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQsIGJvb2wgbWlwbWFwcGVk
KTsKKyAgICB+R1BVTGVnYWN5VGV4dHVyZURlc2NyaXB0b3IoKTsKKworICAgIHVuc2lnbmVkIHdp
ZHRoKCkgY29uc3Q7CisgICAgdm9pZCBzZXRXaWR0aCh1bnNpZ25lZCkgY29uc3Q7CisKKyAgICB1
bnNpZ25lZCBoZWlnaHQoKSBjb25zdDsKKyAgICB2b2lkIHNldEhlaWdodCh1bnNpZ25lZCkgY29u
c3Q7CisKKyAgICB1bnNpZ25lZCBzYW1wbGVDb3VudCgpIGNvbnN0OworICAgIHZvaWQgc2V0U2Ft
cGxlQ291bnQodW5zaWduZWQpIGNvbnN0OworCisgICAgdW5zaWduZWQgdGV4dHVyZVR5cGUoKSBj
b25zdDsKKyAgICB2b2lkIHNldFRleHR1cmVUeXBlKHVuc2lnbmVkKSBjb25zdDsKKworICAgIHVu
c2lnbmVkIHN0b3JhZ2VNb2RlKCkgY29uc3Q7CisgICAgdm9pZCBzZXRTdG9yYWdlTW9kZSh1bnNp
Z25lZCkgY29uc3Q7CisKKyAgICB1bnNpZ25lZCB1c2FnZSgpIGNvbnN0OworICAgIHZvaWQgc2V0
VXNhZ2UodW5zaWduZWQpIGNvbnN0OworCisjaWYgVVNFKE1FVEFMKQorICAgIE1UTFRleHR1cmVE
ZXNjcmlwdG9yICptZXRhbCgpIGNvbnN0OworI2VuZGlmCisKKyNpZiBVU0UoTUVUQUwpCitwcml2
YXRlOgorICAgIFJldGFpblB0cjxNVExUZXh0dXJlRGVzY3JpcHRvcj4gbV9tZXRhbDsKKyNlbmRp
ZgorfTsKKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9jb2NvYS9HUFVMZWdh
Y3lCdWZmZXJNZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9s
ZWdhY3kvY29jb2EvR1BVTGVnYWN5QnVmZmVyTWV0YWwubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2E2MjYwOTE1
YTJkMmY5MWU1MzdlN2Q4NTQ0ZTVhNzVhOGNkZDQ4OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvY29jb2EvR1BVTGVnYWN5QnVm
ZmVyTWV0YWwubW0KQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiR1BVTGVnYWN5
QnVmZmVyLmgiCisKKyNpZiBFTkFCTEUoV0VCTUVUQUwpCisKKyNpbXBvcnQgIkdQVUxlZ2FjeURl
dmljZS5oIgorI2ltcG9ydCAiTG9nZ2luZy5oIgorI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvQXJy
YXlCdWZmZXJWaWV3Lmg+CisjaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgorI2ltcG9ydCA8d3RmL0dp
Z2FjYWdlLmg+CisjaW1wb3J0IDx3dGYvUGFnZUJsb2NrLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworR1BVTGVnYWN5QnVmZmVyOjpHUFVMZWdhY3lCdWZmZXIoY29uc3QgR1BVTGVnYWN5RGV2
aWNlJiBkZXZpY2UsIGNvbnN0IEpTQzo6QXJyYXlCdWZmZXJWaWV3JiBkYXRhKQoreworICAgIExP
RyhXZWJNZXRhbCwgIkdQVUxlZ2FjeUJ1ZmZlcjo6R1BVTGVnYWN5QnVmZmVyKCkiKTsKKworICAg
IGlmICghZGV2aWNlLm1ldGFsKCkpCisgICAgICAgIHJldHVybjsKKworICAgIHNpemVfdCBwYWdl
U2l6ZSA9IFdURjo6cGFnZVNpemUoKTsKKyAgICBzaXplX3QgcGFnZUFsaWduZWRTaXplID0gcm91
bmRVcFRvTXVsdGlwbGVPZihwYWdlU2l6ZSwgZGF0YS5ieXRlTGVuZ3RoKCkpOworICAgIHZvaWQq
IHBhZ2VBbGlnbmVkQ29weSA9IEdpZ2FjYWdlOjp0cnlBbGlnbmVkTWFsbG9jKEdpZ2FjYWdlOjpQ
cmltaXRpdmUsIHBhZ2VTaXplLCBwYWdlQWxpZ25lZFNpemUpOworICAgIGlmICghcGFnZUFsaWdu
ZWRDb3B5KQorICAgICAgICByZXR1cm47CisgICAgbWVtY3B5KHBhZ2VBbGlnbmVkQ29weSwgZGF0
YS5iYXNlQWRkcmVzcygpLCBkYXRhLmJ5dGVMZW5ndGgoKSk7CisgICAgbV9jb250ZW50cyA9IEFy
cmF5QnVmZmVyOjpjcmVhdGVGcm9tQnl0ZXMocGFnZUFsaWduZWRDb3B5LCBkYXRhLmJ5dGVMZW5n
dGgoKSwgW10gKHZvaWQqIHB0cikgeworICAgICAgICBHaWdhY2FnZTo6YWxpZ25lZEZyZWUoR2ln
YWNhZ2U6OlByaW1pdGl2ZSwgcHRyKTsKKyAgICB9KTsKKyAgICBtX2NvbnRlbnRzLT5yZWYoKTsK
KyAgICBBcnJheUJ1ZmZlciogY2FwdHVyZWRDb250ZW50cyA9IG1fY29udGVudHMuZ2V0KCk7Cisg
ICAgbV9tZXRhbCA9IGFkb3B0TlMoW2RldmljZS5tZXRhbCgpIG5ld0J1ZmZlcldpdGhCeXRlc05v
Q29weTptX2NvbnRlbnRzLT5kYXRhKCkgbGVuZ3RoOnBhZ2VBbGlnbmVkU2l6ZSBvcHRpb25zOk1U
TFJlc291cmNlT3B0aW9uQ1BVQ2FjaGVNb2RlRGVmYXVsdCBkZWFsbG9jYXRvcjpeKHZvaWQqLCBO
U1VJbnRlZ2VyKSB7CisgICAgICAgIGNhcHR1cmVkQ29udGVudHMtPmRlcmVmKCk7CisgICAgfV0p
OworICAgIGlmICghbV9tZXRhbCkgeworICAgICAgICBtX2NvbnRlbnRzLT5kZXJlZigpOworICAg
ICAgICBtX2NvbnRlbnRzID0gbnVsbHB0cjsKKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvbGVnYWN5L2NvY29hL0dQVUxlZ2FjeUNvbW1hbmRCdWZmZXJNZXRhbC5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvY29jb2EvR1BVTGVnYWN5
Q29tbWFuZEJ1ZmZlck1ldGFsLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE3MzgwZTgyZTNmNTk2ZGU2Mzk4MGUw
ZGQzMzA4NTE1MTU0NDYwMmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L2NvY29hL0dQVUxlZ2FjeUNvbW1hbmRCdWZmZXJNZXRh
bC5tbQpAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJHUFVMZWdhY3lDb21tYW5k
QnVmZmVyLmgiCisKKyNpZiBFTkFCTEUoV0VCTUVUQUwpCisKKyNpbXBvcnQgIkdQVUxlZ2FjeUNv
bW1hbmRRdWV1ZS5oIgorI2ltcG9ydCAiR1BVTGVnYWN5RHJhd2FibGUuaCIKKyNpbXBvcnQgIkxv
Z2dpbmcuaCIKKyNpbXBvcnQgPE1ldGFsL01ldGFsLmg+CisjaW1wb3J0IDx3dGYvQmxvY2tQdHIu
aD4KKyNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
R1BVTGVnYWN5Q29tbWFuZEJ1ZmZlcjo6R1BVTGVnYWN5Q29tbWFuZEJ1ZmZlcihjb25zdCBHUFVM
ZWdhY3lDb21tYW5kUXVldWUmIHF1ZXVlLCBGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGVkQ2Fs
bGJhY2spCit7CisgICAgTE9HKFdlYk1ldGFsLCAiR1BVTGVnYWN5Q29tbWFuZEJ1ZmZlcjo6R1BV
TGVnYWN5Q29tbWFuZEJ1ZmZlcigpIik7CisKKyAgICBtX21ldGFsID0gW3F1ZXVlLm1ldGFsKCkg
Y29tbWFuZEJ1ZmZlcl07CisKKyAgICBbbV9tZXRhbCBhZGRDb21wbGV0ZWRIYW5kbGVyOkJsb2Nr
UHRyPHZvaWQgKGlkPE1UTENvbW1hbmRCdWZmZXI+KT46OmZyb21DYWxsYWJsZShbY29tcGxldGVk
Q2FsbGJhY2sgPSBXVEZNb3ZlKGNvbXBsZXRlZENhbGxiYWNrKV0gKGlkPE1UTENvbW1hbmRCdWZm
ZXI+KSBtdXRhYmxlIHsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChXVEZNb3ZlKGNvbXBsZXRl
ZENhbGxiYWNrKSk7CisgICAgfSkuZ2V0KCldOworfQorCit2b2lkIEdQVUxlZ2FjeUNvbW1hbmRC
dWZmZXI6OnByZXNlbnREcmF3YWJsZShHUFVMZWdhY3lEcmF3YWJsZSYgZHJhd2FibGUpIGNvbnN0
Cit7CisgICAgaWYgKCFtX21ldGFsIHx8ICFkcmF3YWJsZS5tZXRhbCgpKQorICAgICAgICByZXR1
cm47CisKKyAgICBbbV9tZXRhbCBwcmVzZW50RHJhd2FibGU6ZHJhd2FibGUubWV0YWwoKV07Cisg
ICAgZHJhd2FibGUucmVsZWFzZSgpOworfQorCit2b2lkIEdQVUxlZ2FjeUNvbW1hbmRCdWZmZXI6
OmNvbW1pdCgpIGNvbnN0Cit7CisgICAgW21fbWV0YWwgY29tbWl0XTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvY29jb2EvR1BVTGVnYWN5Q29tbWFuZFF1ZXVlTWV0YWwu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L2NvY29hL0dQ
VUxlZ2FjeUNvbW1hbmRRdWV1ZU1ldGFsLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE2YzU1NjQ0ZmVmYTU1M2E2
NjgxMGMzMDQ5OTcwODgyN2ZjZjQzN2EKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L2NvY29hL0dQVUxlZ2FjeUNvbW1hbmRRdWV1
ZU1ldGFsLm1tCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkdQVUxlZ2FjeUNv
bW1hbmRRdWV1ZS5oIgorCisjaWYgRU5BQkxFKFdFQk1FVEFMKQorCisjaW1wb3J0ICJHUFVMZWdh
Y3lEZXZpY2UuaCIKKyNpbXBvcnQgIkxvZ2dpbmcuaCIKKyNpbXBvcnQgPE1ldGFsL01ldGFsLmg+
CisjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBjb21tYW5kUXVldWVEZWZhdWx0TGFiZWwgPSBAImNv
bS5hcHBsZS5XZWJLaXQiOworc3RhdGljIE5TU3RyaW5nICogY29uc3QgY29tbWFuZFF1ZXVlTGFi
ZWxQcmVmaXggPSBAImNvbS5hcHBsZS5XZWJLaXQuIjsKKworR1BVTGVnYWN5Q29tbWFuZFF1ZXVl
OjpHUFVMZWdhY3lDb21tYW5kUXVldWUoY29uc3QgR1BVTGVnYWN5RGV2aWNlJiBkZXZpY2UpCit7
CisgICAgTE9HKFdlYk1ldGFsLCAiR1BVTGVnYWN5Q29tbWFuZFF1ZXVlOjpHUFVMZWdhY3lDb21t
YW5kUXVldWUoKSIpOworCisgICAgbV9tZXRhbCA9IGFkb3B0TlMoW2RldmljZS5tZXRhbCgpIG5l
d0NvbW1hbmRRdWV1ZV0pOworCisgICAgW21fbWV0YWwgc2V0TGFiZWw6Y29tbWFuZFF1ZXVlRGVm
YXVsdExhYmVsXTsKK30KKworU3RyaW5nIEdQVUxlZ2FjeUNvbW1hbmRRdWV1ZTo6bGFiZWwoKSBj
b25zdAoreworICAgIGlmICghbV9tZXRhbCkKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7
CisKKyAgICBOU1N0cmluZyAqcHJlZml4ZWRMYWJlbCA9IFttX21ldGFsIGxhYmVsXTsKKworICAg
IGlmIChbcHJlZml4ZWRMYWJlbCBpc0VxdWFsVG9TdHJpbmc6Y29tbWFuZFF1ZXVlRGVmYXVsdExh
YmVsXSkKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CisKKyAgICBBU1NFUlQocHJlZml4
ZWRMYWJlbC5sZW5ndGggPiBjb21tYW5kUXVldWVMYWJlbFByZWZpeC5sZW5ndGgpOworICAgIHJl
dHVybiBbcHJlZml4ZWRMYWJlbCBzdWJzdHJpbmdGcm9tSW5kZXg6Y29tbWFuZFF1ZXVlTGFiZWxQ
cmVmaXgubGVuZ3RoXTsKK30KKwordm9pZCBHUFVMZWdhY3lDb21tYW5kUXVldWU6OnNldExhYmVs
KGNvbnN0IFN0cmluZyYgbGFiZWwpIGNvbnN0Cit7CisgICAgaWYgKGxhYmVsLmlzRW1wdHkoKSkK
KyAgICAgICAgW21fbWV0YWwgc2V0TGFiZWw6Y29tbWFuZFF1ZXVlRGVmYXVsdExhYmVsXTsKKyAg
ICBlbHNlCisgICAgICAgIFttX21ldGFsIHNldExhYmVsOltjb21tYW5kUXVldWVMYWJlbFByZWZp
eCBzdHJpbmdCeUFwcGVuZGluZ1N0cmluZzpsYWJlbF1dOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L2xlZ2FjeS9jb2NvYS9HUFVMZWdhY3lDb21wdXRlQ29tbWFuZEVuY29kZXJNZXRh
bC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvY29jb2Ev
R1BVTGVnYWN5Q29tcHV0ZUNvbW1hbmRFbmNvZGVyTWV0YWwubW0KbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjE5NTE3
NTFjMjhjN2FhNWJkMmU1ZjFmZWNlNjA5ZGRjMGY1Njk5YgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvY29jb2EvR1BVTGVnYWN5
Q29tcHV0ZUNvbW1hbmRFbmNvZGVyTWV0YWwubW0KQEAgLTAsMCArMSw4MCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNyBZdWljaGlybyBLaWt1cmEgKHkua2lrdXJhQGdtYWlsLmNvbSkKKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmln
LmgiCisjaW1wb3J0ICJHUFVMZWdhY3lDb21wdXRlQ29tbWFuZEVuY29kZXIuaCIKKworI2lmIEVO
QUJMRShXRUJNRVRBTCkKKworI2ltcG9ydCAiR1BVTGVnYWN5QnVmZmVyLmgiCisjaW1wb3J0ICJH
UFVMZWdhY3lDb21tYW5kQnVmZmVyLmgiCisjaW1wb3J0ICJHUFVMZWdhY3lDb21wdXRlUGlwZWxp
bmVTdGF0ZS5oIgorI2ltcG9ydCAiR1BVTGVnYWN5U2l6ZS5oIgorI2ltcG9ydCAiTG9nZ2luZy5o
IgorI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0
aWMgaW5saW5lIE1UTFNpemUgTVRMU2l6ZU1ha2UoR1BVTGVnYWN5U2l6ZSBzaXplKQoreworICAg
IHJldHVybiB7IHNpemUud2lkdGgsIHNpemUuaGVpZ2h0LCBzaXplLmRlcHRoIH07Cit9CisKK0dQ
VUxlZ2FjeUNvbXB1dGVDb21tYW5kRW5jb2Rlcjo6R1BVTGVnYWN5Q29tcHV0ZUNvbW1hbmRFbmNv
ZGVyKGNvbnN0IEdQVUxlZ2FjeUNvbW1hbmRCdWZmZXImIGJ1ZmZlcikKK3sKKyAgICBMT0coV2Vi
TWV0YWwsICJHUFVMZWdhY3lDb21wdXRlQ29tbWFuZEVuY29kZXI6OkdQVUxlZ2FjeUNvbXB1dGVD
b21tYW5kRW5jb2RlcigpIik7CisKKyAgICBtX21ldGFsID0gW2J1ZmZlci5tZXRhbCgpIGNvbXB1
dGVDb21tYW5kRW5jb2Rlcl07Cit9CisKK3ZvaWQgR1BVTGVnYWN5Q29tcHV0ZUNvbW1hbmRFbmNv
ZGVyOjpzZXRDb21wdXRlUGlwZWxpbmVTdGF0ZShjb25zdCBHUFVMZWdhY3lDb21wdXRlUGlwZWxp
bmVTdGF0ZSYgY29tcHV0ZVBpcGVsaW5lU3RhdGUpIGNvbnN0Cit7CisgICAgaWYgKCFjb21wdXRl
UGlwZWxpbmVTdGF0ZS5tZXRhbCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBbbV9tZXRhbCBz
ZXRDb21wdXRlUGlwZWxpbmVTdGF0ZTpjb21wdXRlUGlwZWxpbmVTdGF0ZS5tZXRhbCgpXTsKK30K
Kwordm9pZCBHUFVMZWdhY3lDb21wdXRlQ29tbWFuZEVuY29kZXI6OnNldEJ1ZmZlcihjb25zdCBH
UFVMZWdhY3lCdWZmZXImIGJ1ZmZlciwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBpbmRleCkg
Y29uc3QKK3sKKyAgICBpZiAoIWJ1ZmZlci5tZXRhbCgpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBbbV9tZXRhbCBzZXRCdWZmZXI6YnVmZmVyLm1ldGFsKCkgb2Zmc2V0Om9mZnNldCBhdEluZGV4
OmluZGV4XTsKK30KKwordm9pZCBHUFVMZWdhY3lDb21wdXRlQ29tbWFuZEVuY29kZXI6OmRpc3Bh
dGNoKEdQVUxlZ2FjeVNpemUgdGhyZWFkZ3JvdXBzUGVyR3JpZCwgR1BVTGVnYWN5U2l6ZSB0aHJl
YWRzUGVyVGhyZWFkZ3JvdXApIGNvbnN0Cit7CisgICAgW21fbWV0YWwgZGlzcGF0Y2hUaHJlYWRn
cm91cHM6TVRMU2l6ZU1ha2UodGhyZWFkZ3JvdXBzUGVyR3JpZCkgdGhyZWFkc1BlclRocmVhZGdy
b3VwOk1UTFNpemVNYWtlKHRocmVhZHNQZXJUaHJlYWRncm91cCldOworfQorCit2b2lkIEdQVUxl
Z2FjeUNvbXB1dGVDb21tYW5kRW5jb2Rlcjo6ZW5kRW5jb2RpbmcoKSBjb25zdAoreworICAgIFtt
X21ldGFsIGVuZEVuY29kaW5nXTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdh
Y3kvY29jb2EvR1BVTGVnYWN5Q29tcHV0ZVBpcGVsaW5lU3RhdGVNZXRhbC5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvY29jb2EvR1BVTGVnYWN5Q29tcHV0
ZVBpcGVsaW5lU3RhdGVNZXRhbC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xOTA1MzFlZjZkY2QwZTI1OTUxNzQw
YWE3YzIyMDc1MzE5YjQyNWU0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9jb2NvYS9HUFVMZWdhY3lDb21wdXRlUGlwZWxpbmVT
dGF0ZU1ldGFsLm1tCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcg
WXVpY2hpcm8gS2lrdXJhICh5Lmtpa3VyYUBnbWFpbC5jb20pCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiR1BV
TGVnYWN5Q29tcHV0ZVBpcGVsaW5lU3RhdGUuaCIKKworI2lmIEVOQUJMRShXRUJNRVRBTCkKKwor
I2ltcG9ydCAiR1BVTGVnYWN5RGV2aWNlLmgiCisjaW1wb3J0ICJHUFVMZWdhY3lGdW5jdGlvbi5o
IgorI2ltcG9ydCAiTG9nZ2luZy5oIgorI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitHUFVMZWdhY3lDb21wdXRlUGlwZWxpbmVTdGF0ZTo6R1BVTGVnYWN5
Q29tcHV0ZVBpcGVsaW5lU3RhdGUoY29uc3QgR1BVTGVnYWN5RGV2aWNlJiBkZXZpY2UsIGNvbnN0
IEdQVUxlZ2FjeUZ1bmN0aW9uJiBmdW5jdGlvbikKK3sKKyAgICBMT0coV2ViTWV0YWwsICJHUFVM
ZWdhY3lDb21wdXRlUGlwZWxpbmVTdGF0ZTo6R1BVTGVnYWN5Q29tcHV0ZVBpcGVsaW5lU3RhdGUo
KSIpOworCisgICAgaWYgKCFmdW5jdGlvbi5tZXRhbCgpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBtX21ldGFsID0gYWRvcHROUyhbZGV2aWNlLm1ldGFsKCkgbmV3Q29tcHV0ZVBpcGVsaW5lU3Rh
dGVXaXRoRnVuY3Rpb246ZnVuY3Rpb24ubWV0YWwoKSBlcnJvcjpuaWxdKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvY29jb2EvR1BVTGVnYWN5RGVwdGhTdGVuY2lsRGVz
Y3JpcHRvck1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xl
Z2FjeS9jb2NvYS9HUFVMZWdhY3lEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yTWV0YWwubW0KbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMmZlYjE1ZjhiNGQwMjcwNTA5ZTNiYzMxMzdhMDcwZGFhZTZkNTc0YgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvY29j
b2EvR1BVTGVnYWN5RGVwdGhTdGVuY2lsRGVzY3JpcHRvck1ldGFsLm1tCkBAIC0wLDAgKzEsNjYg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0
ICJjb25maWcuaCIKKyNpbXBvcnQgIkdQVUxlZ2FjeURlcHRoU3RlbmNpbERlc2NyaXB0b3IuaCIK
KworI2lmIEVOQUJMRShXRUJNRVRBTCkKKworI2ltcG9ydCAiR1BVTGVnYWN5RW51bXMuaCIKKyNp
bXBvcnQgIkxvZ2dpbmcuaCIKKyNpbXBvcnQgPE1ldGFsL01ldGFsLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworR1BVTGVnYWN5RGVwdGhTdGVuY2lsRGVzY3JpcHRvcjo6R1BVTGVnYWN5RGVw
dGhTdGVuY2lsRGVzY3JpcHRvcigpCisgICAgOiBtX21ldGFsIHsgYWRvcHROUyhbTVRMRGVwdGhT
dGVuY2lsRGVzY3JpcHRvciBuZXddKSB9Cit7CisgICAgTE9HKFdlYk1ldGFsLCAiR1BVTGVnYWN5
RGVwdGhTdGVuY2lsRGVzY3JpcHRvcjo6R1BVTGVnYWN5RGVwdGhTdGVuY2lsRGVzY3JpcHRvcigp
Iik7Cit9CisKK2Jvb2wgR1BVTGVnYWN5RGVwdGhTdGVuY2lsRGVzY3JpcHRvcjo6ZGVwdGhXcml0
ZUVuYWJsZWQoKSBjb25zdAoreworICAgIHJldHVybiBbbV9tZXRhbCBpc0RlcHRoV3JpdGVFbmFi
bGVkXTsKK30KKwordm9pZCBHUFVMZWdhY3lEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yOjpzZXREZXB0
aFdyaXRlRW5hYmxlZChib29sIG5ld0RlcHRoV3JpdGVFbmFibGVkKSBjb25zdAoreworICAgIFtt
X21ldGFsIHNldERlcHRoV3JpdGVFbmFibGVkOm5ld0RlcHRoV3JpdGVFbmFibGVkXTsKK30KKwor
R1BVTGVnYWN5Q29tcGFyZUZ1bmN0aW9uIEdQVUxlZ2FjeURlcHRoU3RlbmNpbERlc2NyaXB0b3I6
OmRlcHRoQ29tcGFyZUZ1bmN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
R1BVTGVnYWN5Q29tcGFyZUZ1bmN0aW9uPihbbV9tZXRhbCBkZXB0aENvbXBhcmVGdW5jdGlvbl0p
OworfQorCit2b2lkIEdQVUxlZ2FjeURlcHRoU3RlbmNpbERlc2NyaXB0b3I6OnNldERlcHRoQ29t
cGFyZUZ1bmN0aW9uKEdQVUxlZ2FjeUNvbXBhcmVGdW5jdGlvbiBuZXdGdW5jdGlvbikgY29uc3QK
K3sKKyAgICAvLyBGSVhNRTogRG8gd2UgbmVlZCB0byBjaGVjayBpZiB0aGUgZnVuY3Rpb24gdmFs
dWUgaXMgaW4gcmFuZ2UgYmVmb3JlIGNhc3RpbmcgdG8gTVRMQ29tcGFyZUZ1bmN0aW9uPworICAg
IFttX21ldGFsIHNldERlcHRoQ29tcGFyZUZ1bmN0aW9uOnN0YXRpY19jYXN0PE1UTENvbXBhcmVG
dW5jdGlvbj4obmV3RnVuY3Rpb24pXTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9s
ZWdhY3kvY29jb2EvR1BVTGVnYWN5RGVwdGhTdGVuY2lsU3RhdGVNZXRhbC5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvY29jb2EvR1BVTGVnYWN5RGVwdGhT
dGVuY2lsU3RhdGVNZXRhbC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41Y2U4NjdhYWYzYTA5NGI5ZWQ4ZTQxZjI2
ODA3MjZkNTJhNDUxYzc1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9jb2NvYS9HUFVMZWdhY3lEZXB0aFN0ZW5jaWxTdGF0ZU1l
dGFsLm1tCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkdQVUxlZ2FjeURlcHRo
U3RlbmNpbFN0YXRlLmgiCisKKyNpZiBFTkFCTEUoV0VCTUVUQUwpCisKKyNpbXBvcnQgIkdQVUxl
Z2FjeURlcHRoU3RlbmNpbERlc2NyaXB0b3IuaCIKKyNpbXBvcnQgIkdQVUxlZ2FjeURldmljZS5o
IgorI2ltcG9ydCAiTG9nZ2luZy5oIgorI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KKyNpbXBvcnQg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0dQVUxlZ2Fj
eURlcHRoU3RlbmNpbFN0YXRlOjpHUFVMZWdhY3lEZXB0aFN0ZW5jaWxTdGF0ZShjb25zdCBHUFVM
ZWdhY3lEZXZpY2UmIGRldmljZSwgY29uc3QgR1BVTGVnYWN5RGVwdGhTdGVuY2lsRGVzY3JpcHRv
ciYgZGVzY3JpcHRvcikKK3sKKyAgICBMT0coV2ViTWV0YWwsICJHUFVMZWdhY3lEZXB0aFN0ZW5j
aWxTdGF0ZTo6R1BVTGVnYWN5RGVwdGhTdGVuY2lsU3RhdGUoKSIpOworCisgICAgbV9tZXRhbCA9
IGFkb3B0TlMoW2RldmljZS5tZXRhbCgpIG5ld0RlcHRoU3RlbmNpbFN0YXRlV2l0aERlc2NyaXB0
b3I6ZGVzY3JpcHRvci5tZXRhbCgpXSk7Cit9CisKK1N0cmluZyBHUFVMZWdhY3lEZXB0aFN0ZW5j
aWxTdGF0ZTo6bGFiZWwoKSBjb25zdAoreworICAgIGlmICghbV9tZXRhbCkKKyAgICAgICAgcmV0
dXJuIGVtcHR5U3RyaW5nKCk7CisKKyAgICByZXR1cm4gW21fbWV0YWwgbGFiZWxdOworfQorCit2
b2lkIEdQVUxlZ2FjeURlcHRoU3RlbmNpbFN0YXRlOjpzZXRMYWJlbChjb25zdCBTdHJpbmcmKSBj
b25zdAoreworICAgIC8vIEZJWE1FOiBUaGUgTVRMRGVwdGhTdGVuY2lsU3RhdGUgcHJvdG9jb2wg
ZG9lcyBub3QgYWxsb3cgc2V0dGluZyB0aGUgbGFiZWwuCisgICAgLy8gVGhlIGxhYmVsIGhhcyB0
byBiZSBzZXQgb24gdGhlIGRlc2NyaXB0b3Igd2hlbiBjcmVhdGluZyB0aGUgc3RhdGUgb2JqZWN0
LgorICAgIC8vIFdlIHNob3VsZCBjb25zaWRlciBjaGFuZ2luZyB0aGUgV2ViTWV0YWwgaW50ZXJm
YWNlIHRvIG5vdCByZXF1aXJlIHRoaXMhCit9CisgICAgCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L2xlZ2FjeS9jb2NvYS9HUFVMZWdhY3lEZXZpY2VNZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvY29jb2EvR1BVTGVnYWN5RGV2aWNlTWV0YWwu
bW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOWE3NmZjOTdhNzE4OGZiNWZiYzYwNjAzNjQ2MTFhMzAyMTE3MDZiNAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9s
ZWdhY3kvY29jb2EvR1BVTGVnYWN5RGV2aWNlTWV0YWwubW0KQEAgLTAsMCArMSw5MCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZp
Zy5oIgorI2ltcG9ydCAiR1BVTGVnYWN5RGV2aWNlLmgiCisKKyNpZiBFTkFCTEUoV0VCTUVUQUwp
CisKKyNpbXBvcnQgIkxvZ2dpbmcuaCIKKyNpbXBvcnQgIldlYk1ldGFsTGF5ZXIuaCIKKyNpbXBv
cnQgPEphdmFTY3JpcHRDb3JlL0FycmF5QnVmZmVyLmg+CisjaW1wb3J0IDxNZXRhbC9NZXRhbC5o
PgorI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitHUFVMZWdhY3lEZXZpY2U6OkdQVUxlZ2FjeURldmljZSgpCisgICAgOiBtX21ldGFs
IHsgYWRvcHROUyhNVExDcmVhdGVTeXN0ZW1EZWZhdWx0RGV2aWNlKCkpIH0KK3sKKworICAgIGlm
ICghbV9tZXRhbCkgeworICAgICAgICBMT0coV2ViTWV0YWwsICJHUFVMZWdhY3lEZXZpY2U6OkdQ
VUxlZ2FjeURldmljZSAtLSBjb3VsZCBub3QgY3JlYXRlIHRoZSBkZXZpY2UuIFRoaXMgdXN1YWxs
eSBtZWFucyBNZXRhbCBpcyBub3QgYXZhaWxhYmxlIG9uIHRoaXMgaGFyZHdhcmUuIik7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBMT0coV2ViTWV0YWwsICJHUFVMZWdhY3lEZXZpY2U6
OkdQVUxlZ2FjeURldmljZSBNZXRhbCBkZXZpY2UgaXMgJXAiLCBtX21ldGFsLmdldCgpKTsKKwor
ICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUworCisgICAgbV9sYXllciA9IGFkb3B0TlMo
W1tXZWJNZXRhbExheWVyIGFsbG9jXSBpbml0V2l0aEdQVURldmljZTp0aGlzXSk7CisgICAgW21f
bGF5ZXIgc2V0T3BhcXVlOjBdOworICAgIFttX2xheWVyIHNldE5hbWU6QCJXZWJNZXRhbCBMYXll
ciJdOworCisgICAgLy8gRklYTUU6IFdlYk1ldGFsIC0gU2hvdWxkIHRoaXMgYmUgaW4gdGhlIFdl
Yk1ldGFsTGF5ZXIgaW5pdGlhbGl6ZXI/CisgICAgW21fbGF5ZXIgc2V0RGV2aWNlOm1fbWV0YWwu
Z2V0KCldOworICAgIFttX2xheWVyIHNldFBpeGVsRm9ybWF0Ok1UTFBpeGVsRm9ybWF0QkdSQThV
bm9ybV07CisgICAgW21fbGF5ZXIgc2V0RnJhbWVidWZmZXJPbmx5OllFU107CisKKyAgICBFTkRf
QkxPQ0tfT0JKQ19FWENFUFRJT05TCit9CisKK3ZvaWQgR1BVTGVnYWN5RGV2aWNlOjpkaXNjb25u
ZWN0KCkKK3sKKyAgICBtX2xheWVyLmdldCgpLmNvbnRleHQgPSBudWxscHRyOworICAgIC8vIEZJ
WE1FOiBTaG91bGQgd2UgYWxzbyBjbGVhciBvdXQgdGhlIGRldmljZSBwcm9wZXJ0eSwgd2hpY2gg
aGFzIHRoZSBNVExEZXZpY2U/Cit9CisKK3ZvaWQgR1BVTGVnYWN5RGV2aWNlOjpyZXNoYXBlKGlu
dCB3aWR0aCwgaW50IGhlaWdodCkgY29uc3QKK3sKKyAgICBbbV9sYXllciBzZXRCb3VuZHM6Q0dS
ZWN0TWFrZSgwLCAwLCB3aWR0aCwgaGVpZ2h0KV07CisgICAgW21fbGF5ZXIgc2V0RHJhd2FibGVT
aXplOkNHU2l6ZU1ha2Uod2lkdGgsIGhlaWdodCldOworCisgICAgLy8gRklYTUU6IFdlYk1ldGFs
IC0gTG90cyBvZiByZXNoYXBlIHN0dWZmIHNob3VsZCBnbyBoZXJlLiBTZWUgR0MzRC4KK30KKwor
Q0FMYXllciAqR1BVTGVnYWN5RGV2aWNlOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9sYXllci5nZXQoKTsKK30KKworYm9vbCBHUFVMZWdhY3lEZXZpY2U6Om9wZXJhdG9y
ISgpIGNvbnN0Cit7CisgICAgcmV0dXJuICFtX21ldGFsOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L2xlZ2FjeS9jb2NvYS9HUFVMZWdhY3lEcmF3YWJsZU1ldGFsLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9jb2NvYS9HUFVMZWdhY3lEcmF3
YWJsZU1ldGFsLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjljZGM0OTUzNWM5YmU1OWI1ZTkzNmRjNTRhM2YzZDY1
NGQzMTAzODEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvbGVnYWN5L2NvY29hL0dQVUxlZ2FjeURyYXdhYmxlTWV0YWwubW0KQEAgLTAsMCAr
MSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiR1BVTGVnYWN5RHJhd2FibGUuaCIKKworI2lmIEVO
QUJMRShXRUJNRVRBTCkKKworI2ltcG9ydCAiR1BVTGVnYWN5RGV2aWNlLmgiCisjaW1wb3J0ICJM
b2dnaW5nLmgiCisjaW1wb3J0ICJXZWJNZXRhbExheWVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworR1BVTGVnYWN5RHJhd2FibGU6OkdQVUxlZ2FjeURyYXdhYmxlKGNvbnN0IEdQVUxlZ2Fj
eURldmljZSYgZGV2aWNlKQoreworICAgIExPRyhXZWJNZXRhbCwgIkdQVUxlZ2FjeURyYXdhYmxl
OjpHUFVMZWdhY3lEcmF3YWJsZSgpIik7CisKKyAgICBtX21ldGFsID0gW2RldmljZS5sYXllcigp
IG5leHREcmF3YWJsZV07Cit9CisKK3ZvaWQgR1BVTGVnYWN5RHJhd2FibGU6OnJlbGVhc2UoKQor
eworICAgIExPRyhXZWJNZXRhbCwgIkdQVUxlZ2FjeURyYXdhYmxlOjpyZWxlYXNlKCkiKTsKKyAg
ICBtX21ldGFsID0gbmlsOworfQorCitNVExEcmF3YWJsZSAqR1BVTGVnYWN5RHJhd2FibGU6Om1l
dGFsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9tZXRhbC5nZXQoKTsKK30KKworTVRMVGV4dHVy
ZSAqR1BVTGVnYWN5RHJhd2FibGU6OnRleHR1cmUoKSBjb25zdAoreworICAgIGlmICghW21fbWV0
YWwgY29uZm9ybXNUb1Byb3RvY29sOkBwcm90b2NvbChDQU1ldGFsRHJhd2FibGUpXSkgeworICAg
ICAgICBBU1NFUlQoIW1fbWV0YWwpOworICAgICAgICByZXR1cm4gbmlsOworICAgIH0KKyAgICBy
ZXR1cm4gWyhpZDxDQU1ldGFsRHJhd2FibGU+KW1fbWV0YWwuZ2V0KCkgdGV4dHVyZV07Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L2NvY29hL0dQVUxlZ2FjeUZ1bmN0aW9u
TWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L2Nv
Y29hL0dQVUxlZ2FjeUZ1bmN0aW9uTWV0YWwubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDBhZjFhNzg2MTdkYzE5
ZWI0YjJmMTg0MDRmZTc5MGI3YTNlN2IyYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvY29jb2EvR1BVTGVnYWN5RnVuY3Rpb25N
ZXRhbC5tbQpAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJHUFVMZWdhY3lGdW5j
dGlvbi5oIgorCisjaWYgRU5BQkxFKFdFQk1FVEFMKQorCisjaW1wb3J0ICJHUFVMZWdhY3lMaWJy
YXJ5LmgiCisjaW1wb3J0ICJMb2dnaW5nLmgiCisjaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgorI2lt
cG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworR1BV
TGVnYWN5RnVuY3Rpb246OkdQVUxlZ2FjeUZ1bmN0aW9uKGNvbnN0IEdQVUxlZ2FjeUxpYnJhcnkm
IGxpYnJhcnksIGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBMT0coV2ViTWV0YWwsICJHUFVM
ZWdhY3lGdW5jdGlvbjo6R1BVTGVnYWN5RnVuY3Rpb24oKSIpOworCisgICAgbV9tZXRhbCA9IGFk
b3B0TlMoW2xpYnJhcnkubWV0YWwoKSBuZXdGdW5jdGlvbldpdGhOYW1lOm5hbWVdKTsKK30KKwor
U3RyaW5nIEdQVUxlZ2FjeUZ1bmN0aW9uOjpuYW1lKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fbWV0
YWwpCisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOworCisgICAgcmV0dXJuIFttX21ldGFs
IG5hbWVdOworfQorCitib29sIEdQVUxlZ2FjeUZ1bmN0aW9uOjpvcGVyYXRvciEoKSBjb25zdAor
eworICAgIHJldHVybiAhbV9tZXRhbDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9s
ZWdhY3kvY29jb2EvR1BVTGVnYWN5TGlicmFyeU1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9jb2NvYS9HUFVMZWdhY3lMaWJyYXJ5TWV0YWwubW0K
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMDg3MjYyODI1M2IyNjhhZjAwMGVhNzYzNjdiY2FlODZlYWYwOWU1YQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdh
Y3kvY29jb2EvR1BVTGVnYWN5TGlicmFyeU1ldGFsLm1tCkBAIC0wLDAgKzEsNzggQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcu
aCIKKyNpbXBvcnQgIkdQVUxlZ2FjeUxpYnJhcnkuaCIKKworI2lmIEVOQUJMRShXRUJNRVRBTCkK
KworI2ltcG9ydCAiR1BVTGVnYWN5RGV2aWNlLmgiCisjaW1wb3J0ICJMb2dnaW5nLmgiCisjaW1w
b3J0IDxNZXRhbC9NZXRhbC5oPgorI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgorI2ltcG9ydCA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworR1BVTGVnYWN5TGli
cmFyeTo6R1BVTGVnYWN5TGlicmFyeShjb25zdCBHUFVMZWdhY3lEZXZpY2UmIGRldmljZSwgY29u
c3QgU3RyaW5nJiBzb3VyY2VDb2RlKQoreworICAgIExPRyhXZWJNZXRhbCwgIkdQVUxlZ2FjeUxp
YnJhcnk6OkdQVUxlZ2FjeUxpYnJhcnkoKSIpOworCisgICAgaWYgKCFkZXZpY2UubWV0YWwoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgTlNFcnJvciAqZXJyb3IgPSBbTlNFcnJvciBlcnJvcldp
dGhEb21haW46QCJjb20uYXBwbGUuV2ViS2l0LkdQVSIgY29kZToxIHVzZXJJbmZvOm5pbF07Cisg
ICAgbV9tZXRhbCA9IGFkb3B0TlMoW2RldmljZS5tZXRhbCgpIG5ld0xpYnJhcnlXaXRoU291cmNl
OnNvdXJjZUNvZGUgb3B0aW9uczpuaWwgZXJyb3I6JmVycm9yXSk7CisgICAgaWYgKCFtX21ldGFs
KQorICAgICAgICBMT0coV2ViTWV0YWwsICJDb21waWxhdGlvbiBlcnJvcjogJXMiLCBbW2Vycm9y
IGxvY2FsaXplZERlc2NyaXB0aW9uXSBVVEY4U3RyaW5nXSk7Cit9CisKK1N0cmluZyBHUFVMZWdh
Y3lMaWJyYXJ5OjpsYWJlbCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX21ldGFsKQorICAgICAgICBy
ZXR1cm4gZW1wdHlTdHJpbmcoKTsKKworICAgIHJldHVybiBbbV9tZXRhbCBsYWJlbF07Cit9CisK
K3ZvaWQgR1BVTGVnYWN5TGlicmFyeTo6c2V0TGFiZWwoY29uc3QgU3RyaW5nJiBsYWJlbCkgY29u
c3QKK3sKKyAgICBBU1NFUlQobV9tZXRhbCk7CisgICAgW21fbWV0YWwgc2V0TGFiZWw6bGFiZWxd
OworfQorCitWZWN0b3I8U3RyaW5nPiBHUFVMZWdhY3lMaWJyYXJ5OjpmdW5jdGlvbk5hbWVzKCkg
Y29uc3QKK3sKKyAgICBhdXRvIGFycmF5ID0gW21fbWV0YWwgZnVuY3Rpb25OYW1lc107CisgICAg
VmVjdG9yPFN0cmluZz4gdmVjdG9yOworICAgIHZlY3Rvci5yZXNlcnZlSW5pdGlhbENhcGFjaXR5
KGFycmF5LmNvdW50KTsKKyAgICBmb3IgKE5TU3RyaW5nICpzdHJpbmcgaW4gYXJyYXkpCisgICAg
ICAgIHZlY3Rvci51bmNoZWNrZWRBcHBlbmQoc3RyaW5nKTsKKyAgICByZXR1cm4gdmVjdG9yOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9jb2NvYS9HUFVMZWdhY3lSZW5k
ZXJDb21tYW5kRW5jb2Rlck1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L2xlZ2FjeS9jb2NvYS9HUFVMZWdhY3lSZW5kZXJDb21tYW5kRW5jb2Rlck1ldGFsLm1t
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjkwZTVkNGZhZDQxMmNmMmYzYzc4MGIwYWRkZmRlZTFhN2ZjMmZmNTgKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVn
YWN5L2NvY29hL0dQVUxlZ2FjeVJlbmRlckNvbW1hbmRFbmNvZGVyTWV0YWwubW0KQEAgLTAsMCAr
MSw5OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiR1BVTGVnYWN5UmVuZGVyQ29tbWFuZEVuY29kZXIu
aCIKKworI2lmIEVOQUJMRShXRUJNRVRBTCkKKworI2ltcG9ydCAiR1BVTGVnYWN5QnVmZmVyLmgi
CisjaW1wb3J0ICJHUFVMZWdhY3lDb21tYW5kQnVmZmVyLmgiCisjaW1wb3J0ICJHUFVMZWdhY3lE
ZXB0aFN0ZW5jaWxTdGF0ZS5oIgorI2ltcG9ydCAiR1BVTGVnYWN5UmVuZGVyUGFzc0Rlc2NyaXB0
b3IuaCIKKyNpbXBvcnQgIkdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lU3RhdGUuaCIKKyNpbXBvcnQg
IkxvZ2dpbmcuaCIKKyNpbXBvcnQgPE1ldGFsL01ldGFsLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworR1BVTGVnYWN5UmVuZGVyQ29tbWFuZEVuY29kZXI6OkdQVUxlZ2FjeVJlbmRlckNvbW1h
bmRFbmNvZGVyKGNvbnN0IEdQVUxlZ2FjeUNvbW1hbmRCdWZmZXImIGJ1ZmZlciwgY29uc3QgR1BV
TGVnYWN5UmVuZGVyUGFzc0Rlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCit7CisgICAgTE9HKFdlYk1l
dGFsLCAiR1BVTGVnYWN5UmVuZGVyQ29tbWFuZEVuY29kZXI6OkdQVUxlZ2FjeVJlbmRlckNvbW1h
bmRFbmNvZGVyKCkiKTsKKworICAgIGlmICghZGVzY3JpcHRvci5tZXRhbCgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBtX21ldGFsID0gW2J1ZmZlci5tZXRhbCgpIHJlbmRlckNvbW1hbmRFbmNv
ZGVyV2l0aERlc2NyaXB0b3I6ZGVzY3JpcHRvci5tZXRhbCgpXTsKK30KKwordm9pZCBHUFVMZWdh
Y3lSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0UmVuZGVyUGlwZWxpbmVTdGF0ZShjb25zdCBHUFVM
ZWdhY3lSZW5kZXJQaXBlbGluZVN0YXRlJiByZW5kZXJQaXBlbGluZVN0YXRlKSBjb25zdAorewor
ICAgIGlmICghcmVuZGVyUGlwZWxpbmVTdGF0ZS5tZXRhbCgpKQorICAgICAgICByZXR1cm47CisK
KyAgICBbbV9tZXRhbCBzZXRSZW5kZXJQaXBlbGluZVN0YXRlOnJlbmRlclBpcGVsaW5lU3RhdGUu
bWV0YWwoKV07Cit9CisKK3ZvaWQgR1BVTGVnYWN5UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldERl
cHRoU3RlbmNpbFN0YXRlKGNvbnN0IEdQVUxlZ2FjeURlcHRoU3RlbmNpbFN0YXRlJiBkZXB0aFN0
ZW5jaWxTdGF0ZSkgY29uc3QKK3sKKyAgICBpZiAoIWRlcHRoU3RlbmNpbFN0YXRlLm1ldGFsKCkp
CisgICAgICAgIHJldHVybjsKKworICAgIFttX21ldGFsIHNldERlcHRoU3RlbmNpbFN0YXRlOmRl
cHRoU3RlbmNpbFN0YXRlLm1ldGFsKCldOworfQorCit2b2lkIEdQVUxlZ2FjeVJlbmRlckNvbW1h
bmRFbmNvZGVyOjpzZXRWZXJ0ZXhCdWZmZXIoY29uc3QgR1BVTGVnYWN5QnVmZmVyJiBidWZmZXIs
IHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgaW5kZXgpIGNvbnN0Cit7CisgICAgaWYgKCFidWZm
ZXIubWV0YWwoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgW21fbWV0YWwgc2V0VmVydGV4QnVm
ZmVyOmJ1ZmZlci5tZXRhbCgpIG9mZnNldDpvZmZzZXQgYXRJbmRleDppbmRleF07Cit9CisKK3Zv
aWQgR1BVTGVnYWN5UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldEZyYWdtZW50QnVmZmVyKGNvbnN0
IEdQVUxlZ2FjeUJ1ZmZlciYgYnVmZmVyLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGluZGV4
KSBjb25zdAoreworICAgIGlmICghYnVmZmVyLm1ldGFsKCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIFttX21ldGFsIHNldEZyYWdtZW50QnVmZmVyOmJ1ZmZlci5tZXRhbCgpIG9mZnNldDpvZmZz
ZXQgYXRJbmRleDppbmRleF07Cit9CisKK3ZvaWQgR1BVTGVnYWN5UmVuZGVyQ29tbWFuZEVuY29k
ZXI6OmRyYXdQcmltaXRpdmVzKHVuc2lnbmVkIHR5cGUsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25l
ZCBjb3VudCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogV2h5IGRvIHdlIG5lZWQgYSBzcGVjaWFs
bHkgb3B0aW1pemVkIHBhdGggZm9yIGNvdW50IG9mIDA/CisgICAgaWYgKCFjb3VudCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgW21fbWV0YWwgZHJhd1ByaW1pdGl2ZXM6c3RhdGljX2Nhc3Q8TVRM
UHJpbWl0aXZlVHlwZT4odHlwZSkgdmVydGV4U3RhcnQ6c3RhcnQgdmVydGV4Q291bnQ6Y291bnRd
OworfQorCit2b2lkIEdQVUxlZ2FjeVJlbmRlckNvbW1hbmRFbmNvZGVyOjplbmRFbmNvZGluZygp
IGNvbnN0Cit7CisgICAgW21fbWV0YWwgZW5kRW5jb2RpbmddOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L2xlZ2FjeS9jb2NvYS9HUFVMZWdhY3lSZW5kZXJQYXNzQXR0YWNobWVudERl
c2NyaXB0b3JNZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9s
ZWdhY3kvY29jb2EvR1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yTWV0YWwu
bW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYzMyNWM5ZjI5NzBlMmNmZDJhNjZkNjZhNGY0MTIzMmJhMWI2YTY2OQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9s
ZWdhY3kvY29jb2EvR1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yTWV0YWwu
bW0KQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiR1BVTGVnYWN5UmVuZGVyUGFz
c0F0dGFjaG1lbnREZXNjcmlwdG9yLmgiCisKKyNpZiBFTkFCTEUoV0VCTUVUQUwpCisKKyNpbXBv
cnQgIkdQVUxlZ2FjeVRleHR1cmUuaCIKKyNpbXBvcnQgIkxvZ2dpbmcuaCIKKworI2ltcG9ydCA8
TWV0YWwvTWV0YWwuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitHUFVMZWdhY3lSZW5kZXJQ
YXNzQXR0YWNobWVudERlc2NyaXB0b3I6OkdQVUxlZ2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVz
Y3JpcHRvcihNVExSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IgKm1ldGFsKQorICAgIDog
bV9tZXRhbCB7IG1ldGFsIH0KK3sKKyAgICBMT0coV2ViTWV0YWwsICJHUFVMZWdhY3lSZW5kZXJQ
YXNzQXR0YWNobWVudERlc2NyaXB0b3I6OkdQVUxlZ2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVz
Y3JpcHRvcigpIik7Cit9CisKK3Vuc2lnbmVkIEdQVUxlZ2FjeVJlbmRlclBhc3NBdHRhY2htZW50
RGVzY3JpcHRvcjo6bG9hZEFjdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIFttX21ldGFsIGxv
YWRBY3Rpb25dOworfQorCit2b2lkIEdQVUxlZ2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3Jp
cHRvcjo6c2V0TG9hZEFjdGlvbih1bnNpZ25lZCBuZXdMb2FkQWN0aW9uKSBjb25zdAoreworICAg
IC8vIEZJWE1FOiBTaG91bGQgdGhpcyByYW5nZSBjaGVjayBmb3IgbGVnaXRpbWF0ZSB2YWx1ZXM/
CisgICAgW21fbWV0YWwgc2V0TG9hZEFjdGlvbjpzdGF0aWNfY2FzdDxNVExMb2FkQWN0aW9uPihu
ZXdMb2FkQWN0aW9uKV07Cit9CisKK3Vuc2lnbmVkIEdQVUxlZ2FjeVJlbmRlclBhc3NBdHRhY2ht
ZW50RGVzY3JpcHRvcjo6c3RvcmVBY3Rpb24oKSBjb25zdAoreworICAgIHJldHVybiBbbV9tZXRh
bCBzdG9yZUFjdGlvbl07Cit9CisKK3ZvaWQgR1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1lbnRE
ZXNjcmlwdG9yOjpzZXRTdG9yZUFjdGlvbih1bnNpZ25lZCBuZXdTdG9yZUFjdGlvbikgY29uc3QK
K3sKKyAgICAvLyBGSVhNRTogU2hvdWxkIHRoaXMgcmFuZ2UgY2hlY2sgZm9yIGxlZ2l0aW1hdGUg
dmFsdWVzPworICAgIFttX21ldGFsIHNldFN0b3JlQWN0aW9uOnN0YXRpY19jYXN0PE1UTFN0b3Jl
QWN0aW9uPihuZXdTdG9yZUFjdGlvbildOworfQorCit2b2lkIEdQVUxlZ2FjeVJlbmRlclBhc3NB
dHRhY2htZW50RGVzY3JpcHRvcjo6c2V0VGV4dHVyZShjb25zdCBHUFVMZWdhY3lUZXh0dXJlJiB0
ZXh0dXJlKSBjb25zdAoreworICAgIFttX21ldGFsIHNldFRleHR1cmU6dGV4dHVyZS5tZXRhbCgp
XTsKK30KKworTVRMUmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yICpHUFVMZWdhY3lSZW5k
ZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3I6Om1ldGFsKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9tZXRhbC5nZXQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvY29j
b2EvR1BVTGVnYWN5UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3JNZXRhbC5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvY29jb2EvR1BVTGVn
YWN5UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3JNZXRhbC5tbQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5iNWViZTE2NDU0OWVhOTg2M2FhMzcxZGI2MDRiNDViMzdlZDVlZjQ0Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9jb2NvYS9H
UFVMZWdhY3lSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvck1ldGFsLm1tCkBAIC0w
LDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkdQVUxlZ2FjeVJlbmRlclBhc3NDb2xvckF0
dGFjaG1lbnREZXNjcmlwdG9yLmgiCisKKyNpZiBFTkFCTEUoV0VCTUVUQUwpCisKKyNpbXBvcnQg
IkZsb2F0Q29udmVyc2lvbi5oIgorI2ltcG9ydCAiTG9nZ2luZy5oIgorI2ltcG9ydCA8TWV0YWwv
TWV0YWwuaD4KKyNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitHUFVMZWdhY3lSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6R1BVTGVnYWN5
UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IoTVRMUmVuZGVyUGFzc0NvbG9yQXR0
YWNobWVudERlc2NyaXB0b3IgKm1ldGFsKQorICAgIDogR1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFj
aG1lbnREZXNjcmlwdG9yIHsgbWV0YWwgfQoreworICAgIExPRyhXZWJNZXRhbCwgIkdQVUxlZ2Fj
eVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjpHUFVMZWdhY3lSZW5kZXJQYXNz
Q29sb3JBdHRhY2htZW50RGVzY3JpcHRvcigpIik7Cit9CisKK1ZlY3RvcjxmbG9hdD4gR1BVTGVn
YWN5UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6OmNsZWFyQ29sb3IoKSBjb25z
dAoreworICAgIGF1dG8qIG1ldGFsID0gdGhpcy0+bWV0YWwoKTsKKyAgICBpZiAoIW1ldGFsKQor
ICAgICAgICByZXR1cm4geyB9OworCisgICAgYXV0byBjb2xvciA9IFttZXRhbCBjbGVhckNvbG9y
XTsKKyAgICByZXR1cm4geyBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KGNvbG9yLnJlZCksIG5hcnJv
d1ByZWNpc2lvblRvRmxvYXQoY29sb3IuZ3JlZW4pLCBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KGNv
bG9yLmJsdWUpLCBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KGNvbG9yLmFscGhhKSB9OworfQorCit2
b2lkIEdQVUxlZ2FjeVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjpzZXRDbGVh
ckNvbG9yKGNvbnN0IFZlY3RvcjxmbG9hdD4mIG5ld0NsZWFyQ29sb3IpIGNvbnN0Cit7CisgICAg
aWYgKG5ld0NsZWFyQ29sb3Iuc2l6ZSgpICE9IDQpCisgICAgICAgIHJldHVybjsKKworICAgIFtt
ZXRhbCgpIHNldENsZWFyQ29sb3I6TVRMQ2xlYXJDb2xvck1ha2UobmV3Q2xlYXJDb2xvclswXSwg
bmV3Q2xlYXJDb2xvclsxXSwgbmV3Q2xlYXJDb2xvclsyXSwgbmV3Q2xlYXJDb2xvclszXSldOwor
fQorCitNVExSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvciAqR1BVTGVnYWN5UmVu
ZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6Om1ldGFsKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8TVRMUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3Ig
Kj4oR1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjptZXRhbCgpKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvY29jb2EvR1BVTGVnYWN5UmVuZGVy
UGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3JNZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvY29jb2EvR1BVTGVnYWN5UmVuZGVyUGFzc0RlcHRo
QXR0YWNobWVudERlc2NyaXB0b3JNZXRhbC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMjAxMGE2ODU5YmY3MWQ1
YzM4NTBkYmQyZmUwYTE2ZTM2ZjBkODU0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9jb2NvYS9HUFVMZWdhY3lSZW5kZXJQYXNz
RGVwdGhBdHRhY2htZW50RGVzY3JpcHRvck1ldGFsLm1tCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcu
aCIKKyNpbXBvcnQgIkdQVUxlZ2FjeVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9y
LmgiCisKKyNpZiBFTkFCTEUoV0VCTUVUQUwpCisKKyNpbXBvcnQgIkdQVUxlZ2FjeVJlbmRlclBh
c3NBdHRhY2htZW50RGVzY3JpcHRvci5oIgorI2ltcG9ydCAiTG9nZ2luZy5oIgorI2ltcG9ydCA8
TWV0YWwvTWV0YWwuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitHUFVMZWdhY3lSZW5kZXJQ
YXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcjo6R1BVTGVnYWN5UmVuZGVyUGFzc0RlcHRoQXR0
YWNobWVudERlc2NyaXB0b3IoTVRMUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3Ig
Km1ldGFsKQorICAgIDogR1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yIHsg
bWV0YWwgfQoreworICAgIExPRyhXZWJNZXRhbCwgIkdQVUxlZ2FjeVJlbmRlclBhc3NEZXB0aEF0
dGFjaG1lbnREZXNjcmlwdG9yOjpHUFVMZWdhY3lSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVz
Y3JpcHRvcigpIik7Cit9CisKK2RvdWJsZSBHUFVMZWdhY3lSZW5kZXJQYXNzRGVwdGhBdHRhY2ht
ZW50RGVzY3JpcHRvcjo6Y2xlYXJEZXB0aCgpIGNvbnN0Cit7CisgICAgYXV0byogbWV0YWwgPSB0
aGlzLT5tZXRhbCgpOworICAgIGlmICghbWV0YWwpCisgICAgICAgIHJldHVybiAwOworCisgICAg
cmV0dXJuIFttZXRhbCBjbGVhckRlcHRoXTsKK30KKwordm9pZCBHUFVMZWdhY3lSZW5kZXJQYXNz
RGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcjo6c2V0Q2xlYXJEZXB0aChkb3VibGUgbmV3Q2xlYXJE
ZXB0aCkgY29uc3QKK3sKKyAgICBbbWV0YWwoKSBzZXRDbGVhckRlcHRoOm5ld0NsZWFyRGVwdGhd
OworfQorCitNVExSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvciAqR1BVTGVnYWN5
UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3I6Om1ldGFsKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8TVRMUmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0
b3IgKj4oR1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjptZXRhbCgpKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvY29jb2EvR1BVTGVnYWN5UmVu
ZGVyUGFzc0Rlc2NyaXB0b3JNZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9sZWdhY3kvY29jb2EvR1BVTGVnYWN5UmVuZGVyUGFzc0Rlc2NyaXB0b3JNZXRhbC5t
bQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4zZjE4NTEzNThmMTAwMzJjYmMzYjZlYTM1YWU2ODI4ODExNTNiODVmCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xl
Z2FjeS9jb2NvYS9HUFVMZWdhY3lSZW5kZXJQYXNzRGVzY3JpcHRvck1ldGFsLm1tCkBAIC0wLDAg
KzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkdQVUxlZ2FjeVJlbmRlclBhc3NEZXNjcmlwdG9y
LmgiCisKKyNpZiBFTkFCTEUoV0VCTUVUQUwpCisKKyNpbXBvcnQgIkdQVUxlZ2FjeVJlbmRlclBh
c3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmgiCisjaW1wb3J0ICJHUFVMZWdhY3lSZW5kZXJQ
YXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvci5oIgorI2ltcG9ydCAiTG9nZ2luZy5oIgorI2lt
cG9ydCA8TWV0YWwvTWV0YWwuaD4KKyNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitHUFVMZWdhY3lSZW5kZXJQYXNzRGVzY3JpcHRvcjo6R1BVTGVnYWN5UmVu
ZGVyUGFzc0Rlc2NyaXB0b3IoKQorICAgIDogbV9tZXRhbCB7IGFkb3B0TlMoW01UTFJlbmRlclBh
c3NEZXNjcmlwdG9yIG5ld10pIH0KK3sKKyAgICBMT0coV2ViTWV0YWwsICJHUFVMZWdhY3lSZW5k
ZXJQYXNzRGVzY3JpcHRvcjo6R1BVTGVnYWN5UmVuZGVyUGFzc0Rlc2NyaXB0b3IoKSIpOworfQor
CitWZWN0b3I8R1BVTGVnYWN5UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3I+IEdQ
VUxlZ2FjeVJlbmRlclBhc3NEZXNjcmlwdG9yOjpjb2xvckF0dGFjaG1lbnRzKCkgY29uc3QKK3sK
KyAgICBpZiAoIW1fbWV0YWwpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICAvLyBGSVhNRTog
V2h5IGlzIGl0IGNvcnJlY3QgdG8gcmV0dXJuIG9uZSBjb2xvciBoZXJlPworICAgIHJldHVybiB7
IHsgW1ttX21ldGFsIGNvbG9yQXR0YWNobWVudHNdIG9iamVjdEF0SW5kZXhlZFN1YnNjcmlwdDow
XSB9IH07Cit9CisKK0dQVUxlZ2FjeVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9y
IEdQVUxlZ2FjeVJlbmRlclBhc3NEZXNjcmlwdG9yOjpkZXB0aEF0dGFjaG1lbnQoKSBjb25zdAor
eworICAgIHJldHVybiBbbV9tZXRhbCBkZXB0aEF0dGFjaG1lbnRdOworfQorCitNVExSZW5kZXJQ
YXNzRGVzY3JpcHRvciAqR1BVTGVnYWN5UmVuZGVyUGFzc0Rlc2NyaXB0b3I6Om1ldGFsKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbV9tZXRhbC5nZXQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9sZWdhY3kvY29jb2EvR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1l
bnREZXNjcmlwdG9yTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvbGVnYWN5L2NvY29hL0dQVUxlZ2FjeVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVz
Y3JpcHRvck1ldGFsLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY0M2M5NWJkMTk0YzY5MzVlMjNkMWRiZGEzYTRj
OTE4YzYwYjUzZWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvbGVnYWN5L2NvY29hL0dQVUxlZ2FjeVJlbmRlclBpcGVsaW5lQ29sb3JBdHRh
Y2htZW50RGVzY3JpcHRvck1ldGFsLm1tCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBv
cnQgIkdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvci5oIgor
CisjaWYgRU5BQkxFKFdFQk1FVEFMKQorCisjaW1wb3J0ICJMb2dnaW5nLmgiCisjaW1wb3J0IDxN
ZXRhbC9NZXRhbC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0dQVUxlZ2FjeVJlbmRlclBp
cGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6R1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVD
b2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKE1UTFJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50
RGVzY3JpcHRvciAqbWV0YWwpCisgICAgOiBtX21ldGFsIHsgbWV0YWwgfQoreworICAgIExPRyhX
ZWJNZXRhbCwgIkdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRv
cjo6R1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKCkiKTsK
K30KKwordW5zaWduZWQgR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNj
cmlwdG9yOjpwaXhlbEZvcm1hdCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFttX21ldGFsIHBpeGVs
Rm9ybWF0XTsKK30KKwordm9pZCBHUFVMZWdhY3lSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVu
dERlc2NyaXB0b3I6OnNldFBpeGVsRm9ybWF0KHVuc2lnbmVkIG5ld1BpeGVsRm9ybWF0KSBjb25z
dAoreworICAgIC8vIEZJWE1FOiBTaG91bGQgd2UgY2hlY2sgZm9yIGVudW1lcmF0aW9uIHZhbHVl
cyBvdXQgb2YgcmFuZ2UgYmVmb3JlIGNhbGxpbmcgdGhlIG1ldGhvZD8KKyAgICBbbV9tZXRhbCBz
ZXRQaXhlbEZvcm1hdDpzdGF0aWNfY2FzdDxNVExQaXhlbEZvcm1hdD4obmV3UGl4ZWxGb3JtYXQp
XTsKK30KKworTVRMUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yICpHUFVM
ZWdhY3lSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6Om1ldGFsKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbV9tZXRhbC5nZXQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9sZWdhY3kvY29jb2EvR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yTWV0
YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L2NvY29h
L0dQVUxlZ2FjeVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvck1ldGFsLm1tCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBl
MTFlYjk5ZDQyNTNkNDdhNjBjODViNzhlNjNiZDk0ODhmMzQ2ZjkKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVnYWN5L2NvY29hL0dQVUxl
Z2FjeVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvck1ldGFsLm1tCkBAIC0wLDAgKzEsODMgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25m
aWcuaCIKKyNpbXBvcnQgIkdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oIgorCisj
aWYgRU5BQkxFKFdFQk1FVEFMKQorCisjaW1wb3J0ICJHUFVMZWdhY3lGdW5jdGlvbi5oIgorI2lt
cG9ydCAiR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmgi
CisjaW1wb3J0ICJMb2dnaW5nLmgiCisjaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgorI2ltcG9ydCA8
d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0dQVUxlZ2FjeVJlbmRlclBp
cGVsaW5lRGVzY3JpcHRvcjo6R1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKCkKKyAg
ICA6IG1fbWV0YWwgeyBhZG9wdE5TKFtNVExSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgbmV3XSkg
fQoreworICAgIExPRyhXZWJNZXRhbCwgIkdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
cjo6R1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKCkiKTsKK30KKwordW5zaWduZWQg
R1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpkZXB0aEF0dGFjaG1lbnRQaXhlbEZv
cm1hdCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFttX21ldGFsIGRlcHRoQXR0YWNobWVudFBpeGVs
Rm9ybWF0XTsKK30KKwordm9pZCBHUFVMZWdhY3lSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnNl
dERlcHRoQXR0YWNobWVudFBpeGVsRm9ybWF0KHVuc2lnbmVkIG5ld1BpeGVsRm9ybWF0KSBjb25z
dAoreworICAgIFttX21ldGFsIHNldERlcHRoQXR0YWNobWVudFBpeGVsRm9ybWF0OnN0YXRpY19j
YXN0PE1UTFBpeGVsRm9ybWF0PihuZXdQaXhlbEZvcm1hdCldOworfQorCit2b2lkIEdQVUxlZ2Fj
eVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0VmVydGV4RnVuY3Rpb24oY29uc3QgR1BVTGVn
YWN5RnVuY3Rpb24mIG5ld0Z1bmN0aW9uKSBjb25zdAoreworICAgIFttX21ldGFsIHNldFZlcnRl
eEZ1bmN0aW9uOm5ld0Z1bmN0aW9uLm1ldGFsKCldOworfQorCit2b2lkIEdQVUxlZ2FjeVJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0RnJhZ21lbnRGdW5jdGlvbihjb25zdCBHUFVMZWdhY3lG
dW5jdGlvbiYgbmV3RnVuY3Rpb24pIGNvbnN0Cit7CisgICAgW21fbWV0YWwgc2V0RnJhZ21lbnRG
dW5jdGlvbjpuZXdGdW5jdGlvbi5tZXRhbCgpXTsKK30KKworVmVjdG9yPEdQVUxlZ2FjeVJlbmRl
clBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcj4gR1BVTGVnYWN5UmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yOjpjb2xvckF0dGFjaG1lbnRzKCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTog
V2h5IGlzIGl0IGFsd2F5cyBPSyB0byByZXR1cm4gZXhhY3RseSBvbmUgYXR0YWNobWVudD8KKyAg
ICByZXR1cm4geyB7IFtbbV9tZXRhbCBjb2xvckF0dGFjaG1lbnRzXSBvYmplY3RBdEluZGV4ZWRT
dWJzY3JpcHQ6MF0gfSB9OworfQorCit2b2lkIEdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvcjo6cmVzZXQoKSBjb25zdAoreworICAgIFttX21ldGFsIHJlc2V0XTsKK30KKworTVRMUmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yICpHUFVMZWdhY3lSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6
Om1ldGFsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9tZXRhbC5nZXQoKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvY29jb2EvR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVT
dGF0ZU1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2Fj
eS9jb2NvYS9HUFVMZWdhY3lSZW5kZXJQaXBlbGluZVN0YXRlTWV0YWwubW0KbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YjJhMTZiYzkwZGFlOWU2ZjcyMGFlMGZlMDM1OTcxOGQwZjQ0YmZjOAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvY29jb2EvR1BV
TGVnYWN5UmVuZGVyUGlwZWxpbmVTdGF0ZU1ldGFsLm1tCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcu
aCIKKyNpbXBvcnQgIkdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lU3RhdGUuaCIKKworI2lmIEVOQUJM
RShXRUJNRVRBTCkKKworI2ltcG9ydCAiR1BVTGVnYWN5RGV2aWNlLmgiCisjaW1wb3J0ICJHUFVM
ZWdhY3lSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCIKKyNpbXBvcnQgIkxvZ2dpbmcuaCIKKyNp
bXBvcnQgPE1ldGFsL01ldGFsLmg+CisjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitHUFVMZWdhY3lSZW5kZXJQaXBlbGluZVN0YXRlOjpHUFVM
ZWdhY3lSZW5kZXJQaXBlbGluZVN0YXRlKGNvbnN0IEdQVUxlZ2FjeURldmljZSYgZGV2aWNlLCBj
b25zdCBHUFVMZWdhY3lSZW5kZXJQaXBlbGluZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCit7Cisg
ICAgTE9HKFdlYk1ldGFsLCAiR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVTdGF0ZTo6R1BVTGVnYWN5
UmVuZGVyUGlwZWxpbmVTdGF0ZSgpIik7CisKKyAgICBtX21ldGFsID0gYWRvcHROUyhbZGV2aWNl
Lm1ldGFsKCkgbmV3UmVuZGVyUGlwZWxpbmVTdGF0ZVdpdGhEZXNjcmlwdG9yOmRlc2NyaXB0b3Iu
bWV0YWwoKSBlcnJvcjpuaWxdKTsKK30KKworU3RyaW5nIEdQVUxlZ2FjeVJlbmRlclBpcGVsaW5l
U3RhdGU6OmxhYmVsKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fbWV0YWwpCisgICAgICAgIHJldHVy
biBlbXB0eVN0cmluZygpOworICAgIHJldHVybiBbbV9tZXRhbCBsYWJlbF07Cit9CisKK3ZvaWQg
R1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVTdGF0ZTo6c2V0TGFiZWwoY29uc3QgU3RyaW5nJikgY29u
c3QKK3sKKyAgICAvLyBGSVhNRTogVGhlIE1UTFJlbmRlclBpcGVsaW5lU3RhdGUgcHJvdG9jb2wg
ZG9lcyBub3QgYWxsb3cgc2V0dGluZyB0aGUgbGFiZWwuCisgICAgLy8gVGhlIGxhYmVsIGhhcyB0
byBiZSBzZXQgb24gdGhlIGRlc2NyaXB0b3Igd2hlbiBjcmVhdGluZyB0aGUgc3RhdGUgb2JqZWN0
LgorICAgIC8vIFdlIHNob3VsZCBjb25zaWRlciBjaGFuZ2luZyB0aGUgV2ViTWV0YWwgaW50ZXJm
YWNlIHRvIG5vdCByZXF1aXJlIHRoaXMhCit9CisKK01UTFJlbmRlclBpcGVsaW5lU3RhdGUgKkdQ
VUxlZ2FjeVJlbmRlclBpcGVsaW5lU3RhdGU6Om1ldGFsKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9tZXRhbC5nZXQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvY29j
b2EvR1BVTGVnYWN5VGV4dHVyZURlc2NyaXB0b3JNZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9sZWdhY3kvY29jb2EvR1BVTGVnYWN5VGV4dHVyZURlc2NyaXB0
b3JNZXRhbC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MWM3Yzc3NjY4YWM3MjRkM2U4OGVhZTExYzZkMmM5YTA5
MGM1NjRlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L2xlZ2FjeS9jb2NvYS9HUFVMZWdhY3lUZXh0dXJlRGVzY3JpcHRvck1ldGFsLm1tCkBA
IC0wLDAgKzEsMTE1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJHUFVMZWdhY3lUZXh0dXJlRGVzY3Jp
cHRvci5oIgorCisjaWYgRU5BQkxFKFdFQk1FVEFMKQorCisjaW1wb3J0ICJMb2dnaW5nLmgiCisj
aW1wb3J0IDxNZXRhbC9NZXRhbC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0dQVUxlZ2Fj
eVRleHR1cmVEZXNjcmlwdG9yOjpHUFVMZWdhY3lUZXh0dXJlRGVzY3JpcHRvcih1bnNpZ25lZCBw
aXhlbEZvcm1hdCwgdW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCwgYm9vbCBtaXBtYXBw
ZWQpCit7CisgICAgTE9HKFdlYk1ldGFsLCAiR1BVTGVnYWN5VGV4dHVyZURlc2NyaXB0b3I6OkdQ
VUxlZ2FjeVRleHR1cmVEZXNjcmlwdG9yKCkiKTsKKworICAgIG1fbWV0YWwgPSBbTVRMVGV4dHVy
ZURlc2NyaXB0b3IgdGV4dHVyZTJERGVzY3JpcHRvcldpdGhQaXhlbEZvcm1hdDpzdGF0aWNfY2Fz
dDxNVExQaXhlbEZvcm1hdD4ocGl4ZWxGb3JtYXQpIHdpZHRoOndpZHRoIGhlaWdodDpoZWlnaHQg
bWlwbWFwcGVkOm1pcG1hcHBlZF07Cit9CisKK3Vuc2lnbmVkIEdQVUxlZ2FjeVRleHR1cmVEZXNj
cmlwdG9yOjp3aWR0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFttX21ldGFsIHdpZHRoXTsKK30K
Kwordm9pZCBHUFVMZWdhY3lUZXh0dXJlRGVzY3JpcHRvcjo6c2V0V2lkdGgodW5zaWduZWQgbmV3
V2lkdGgpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1fbWV0YWwpOworICAgIFttX21ldGFsIHNldFdp
ZHRoOm5ld1dpZHRoXTsKK30KKwordW5zaWduZWQgR1BVTGVnYWN5VGV4dHVyZURlc2NyaXB0b3I6
OmhlaWdodCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFttX21ldGFsIGhlaWdodF07Cit9CisKK3Zv
aWQgR1BVTGVnYWN5VGV4dHVyZURlc2NyaXB0b3I6OnNldEhlaWdodCh1bnNpZ25lZCBuZXdIZWln
aHQpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1fbWV0YWwpOworICAgIFttX21ldGFsIHNldEhlaWdo
dDpuZXdIZWlnaHRdOworfQorCit1bnNpZ25lZCBHUFVMZWdhY3lUZXh0dXJlRGVzY3JpcHRvcjo6
c2FtcGxlQ291bnQoKSBjb25zdAoreworICAgIHJldHVybiBbbV9tZXRhbCBzYW1wbGVDb3VudF07
Cit9CisKK3ZvaWQgR1BVTGVnYWN5VGV4dHVyZURlc2NyaXB0b3I6OnNldFNhbXBsZUNvdW50KHVu
c2lnbmVkIG5ld1NhbXBsZUNvdW50KSBjb25zdAoreworICAgIEFTU0VSVChtX21ldGFsKTsKKyAg
ICBbbV9tZXRhbCBzZXRTYW1wbGVDb3VudDpuZXdTYW1wbGVDb3VudF07Cit9CisKK3Vuc2lnbmVk
IEdQVUxlZ2FjeVRleHR1cmVEZXNjcmlwdG9yOjp0ZXh0dXJlVHlwZSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIFttX21ldGFsIHRleHR1cmVUeXBlXTsKK30KKwordm9pZCBHUFVMZWdhY3lUZXh0dXJl
RGVzY3JpcHRvcjo6c2V0VGV4dHVyZVR5cGUodW5zaWduZWQgbmV3VGV4dHVyZVR5cGUpIGNvbnN0
Cit7CisgICAgQVNTRVJUKG1fbWV0YWwpOworICAgIFttX21ldGFsIHNldFRleHR1cmVUeXBlOnN0
YXRpY19jYXN0PE1UTFRleHR1cmVUeXBlPihuZXdUZXh0dXJlVHlwZSldOworfQorCit1bnNpZ25l
ZCBHUFVMZWdhY3lUZXh0dXJlRGVzY3JpcHRvcjo6c3RvcmFnZU1vZGUoKSBjb25zdAoreworICAg
IHJldHVybiBbbV9tZXRhbCBzdG9yYWdlTW9kZV07Cit9CisKK3ZvaWQgR1BVTGVnYWN5VGV4dHVy
ZURlc2NyaXB0b3I6OnNldFN0b3JhZ2VNb2RlKHVuc2lnbmVkIG5ld1N0b3JhZ2VNb2RlKSBjb25z
dAoreworICAgIFttX21ldGFsIHNldFN0b3JhZ2VNb2RlOnN0YXRpY19jYXN0PE1UTFN0b3JhZ2VN
b2RlPihuZXdTdG9yYWdlTW9kZSldOworfQorCit1bnNpZ25lZCBHUFVMZWdhY3lUZXh0dXJlRGVz
Y3JpcHRvcjo6dXNhZ2UoKSBjb25zdAoreworICAgIHJldHVybiBbbV9tZXRhbCB1c2FnZV07Cit9
CisKK3ZvaWQgR1BVTGVnYWN5VGV4dHVyZURlc2NyaXB0b3I6OnNldFVzYWdlKHVuc2lnbmVkIG5l
d1VzYWdlKSBjb25zdAoreworICAgIEFTU0VSVChtX21ldGFsKTsKKyAgICBbbV9tZXRhbCBzZXRV
c2FnZTpuZXdVc2FnZV07Cit9CisKK01UTFRleHR1cmVEZXNjcmlwdG9yICpHUFVMZWdhY3lUZXh0
dXJlRGVzY3JpcHRvcjo6bWV0YWwoKSBjb25zdAoreworICAgIHJldHVybiBtX21ldGFsLmdldCgp
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9jb2NvYS9HUFVMZWdhY3lU
ZXh0dXJlTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbGVn
YWN5L2NvY29hL0dQVUxlZ2FjeVRleHR1cmVNZXRhbC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZDc3OGRjYzFi
NmQ3YjkyNGQ0NTBiNTY4NGE0MDBkYzU5ZGUwZmI4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2xlZ2FjeS9jb2NvYS9HUFVMZWdhY3lUZXh0
dXJlTWV0YWwubW0KQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiR1BVTGVnYWN5
VGV4dHVyZS5oIgorCisjaWYgRU5BQkxFKFdFQk1FVEFMKQorCisjaW1wb3J0ICJHUFVMZWdhY3lE
ZXZpY2UuaCIKKyNpbXBvcnQgIkdQVUxlZ2FjeURyYXdhYmxlLmgiCisjaW1wb3J0ICJHUFVMZWdh
Y3lUZXh0dXJlRGVzY3JpcHRvci5oIgorI2ltcG9ydCAiTG9nZ2luZy5oIgorI2ltcG9ydCA8TWV0
YWwvTWV0YWwuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitHUFVMZWdhY3lUZXh0dXJlOjpH
UFVMZWdhY3lUZXh0dXJlKGNvbnN0IEdQVUxlZ2FjeURldmljZSYgZGV2aWNlLCBjb25zdCBHUFVM
ZWdhY3lUZXh0dXJlRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK3sKKyAgICBMT0coV2ViTWV0YWws
ICJHUFVMZWdhY3lUZXh0dXJlOjpHUFVMZWdhY3lUZXh0dXJlKCkiKTsKKworICAgIGlmICghZGVz
Y3JpcHRvci5tZXRhbCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX21ldGFsID0gYWRvcHRO
UyhbZGV2aWNlLm1ldGFsKCkgbmV3VGV4dHVyZVdpdGhEZXNjcmlwdG9yOmRlc2NyaXB0b3IubWV0
YWwoKV0pOworfQorCitHUFVMZWdhY3lUZXh0dXJlOjpHUFVMZWdhY3lUZXh0dXJlKGNvbnN0IEdQ
VUxlZ2FjeURyYXdhYmxlJiBvdGhlcikKKyAgICA6IG1fbWV0YWwgeyBvdGhlci50ZXh0dXJlKCkg
fQoreworICAgIExPRyhXZWJNZXRhbCwgIkdQVUxlZ2FjeVRleHR1cmU6OkdQVUxlZ2FjeVRleHR1
cmUoKSIpOworfQorCit1bnNpZ25lZCBHUFVMZWdhY3lUZXh0dXJlOjp3aWR0aCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fbWV0YWwuZ2V0KCkud2lkdGg7Cit9CisKK3Vuc2lnbmVkIEdQVUxlZ2Fj
eVRleHR1cmU6OmhlaWdodCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbWV0YWwuZ2V0KCkuaGVp
Z2h0OworfQorCitNVExUZXh0dXJlICpHUFVMZWdhY3lUZXh0dXJlOjptZXRhbCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fbWV0YWwuZ2V0KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
ZXRhbC9HUFVMZWdhY3lCdWZmZXJNZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21ldGFsL0dQVUxlZ2FjeUJ1ZmZlck1ldGFsLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBjYmMzZTM0YTQyNDgxOWIxOGNmZTA3YWEyMWMwNmE0NjIxZmIzNjg3Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVUxlZ2FjeUJ1ZmZlck1ldGFsLm1tCisrKyAvZGV2
L251bGwKQEAgLTEsNjkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQot
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiR1BVTGVnYWN5QnVmZmVy
LmgiCi0KLSNpZiBFTkFCTEUoV0VCTUVUQUwpCi0KLSNpbXBvcnQgIkdQVUxlZ2FjeURldmljZS5o
IgotI2ltcG9ydCAiTG9nZ2luZy5oIgotI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvQXJyYXlCdWZm
ZXJWaWV3Lmg+Ci0jaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgotI2ltcG9ydCA8d3RmL0dpZ2FjYWdl
Lmg+Ci0jaW1wb3J0IDx3dGYvUGFnZUJsb2NrLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
R1BVTGVnYWN5QnVmZmVyOjpHUFVMZWdhY3lCdWZmZXIoY29uc3QgR1BVTGVnYWN5RGV2aWNlJiBk
ZXZpY2UsIGNvbnN0IEpTQzo6QXJyYXlCdWZmZXJWaWV3JiBkYXRhKQotewotICAgIExPRyhXZWJN
ZXRhbCwgIkdQVUJ1ZmZlcjo6R1BVQnVmZmVyKCkiKTsKLQotICAgIGlmICghZGV2aWNlLm1ldGFs
KCkpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBzaXplX3QgcGFnZVNpemUgPSBXVEY6OnBh
Z2VTaXplKCk7Ci0gICAgc2l6ZV90IHBhZ2VBbGlnbmVkU2l6ZSA9IHJvdW5kVXBUb011bHRpcGxl
T2YocGFnZVNpemUsIGRhdGEuYnl0ZUxlbmd0aCgpKTsKLSAgICB2b2lkKiBwYWdlQWxpZ25lZENv
cHkgPSBHaWdhY2FnZTo6dHJ5QWxpZ25lZE1hbGxvYyhHaWdhY2FnZTo6UHJpbWl0aXZlLCBwYWdl
U2l6ZSwgcGFnZUFsaWduZWRTaXplKTsKLSAgICBpZiAoIXBhZ2VBbGlnbmVkQ29weSkKLSAgICAg
ICAgcmV0dXJuOwotICAgIG1lbWNweShwYWdlQWxpZ25lZENvcHksIGRhdGEuYmFzZUFkZHJlc3Mo
KSwgZGF0YS5ieXRlTGVuZ3RoKCkpOwotICAgIG1fY29udGVudHMgPSBBcnJheUJ1ZmZlcjo6Y3Jl
YXRlRnJvbUJ5dGVzKHBhZ2VBbGlnbmVkQ29weSwgZGF0YS5ieXRlTGVuZ3RoKCksIFtdICh2b2lk
KiBwdHIpIHsKLSAgICAgICAgR2lnYWNhZ2U6OmFsaWduZWRGcmVlKEdpZ2FjYWdlOjpQcmltaXRp
dmUsIHB0cik7Ci0gICAgfSk7Ci0gICAgbV9jb250ZW50cy0+cmVmKCk7Ci0gICAgQXJyYXlCdWZm
ZXIqIGNhcHR1cmVkQ29udGVudHMgPSBtX2NvbnRlbnRzLmdldCgpOwotICAgIG1fbWV0YWwgPSBh
ZG9wdE5TKFtkZXZpY2UubWV0YWwoKSBuZXdCdWZmZXJXaXRoQnl0ZXNOb0NvcHk6bV9jb250ZW50
cy0+ZGF0YSgpIGxlbmd0aDpwYWdlQWxpZ25lZFNpemUgb3B0aW9uczpNVExSZXNvdXJjZU9wdGlv
bkNQVUNhY2hlTW9kZURlZmF1bHQgZGVhbGxvY2F0b3I6Xih2b2lkKiwgTlNVSW50ZWdlcikgewot
ICAgICAgICBjYXB0dXJlZENvbnRlbnRzLT5kZXJlZigpOwotICAgIH1dKTsKLSAgICBpZiAoIW1f
bWV0YWwpIHsKLSAgICAgICAgbV9jb250ZW50cy0+ZGVyZWYoKTsKLSAgICAgICAgbV9jb250ZW50
cyA9IG51bGxwdHI7Ci0gICAgfQotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BV
TGVnYWN5Q29tbWFuZEJ1ZmZlck1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWV0YWwvR1BVTGVnYWN5Q29tbWFuZEJ1ZmZlck1ldGFsLm1tCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA2YjJjNjAxNTIzMjAwMTU2NTM2N2Y3YWJkMzg3YzFiZTFmNGUxZWRm
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVUxlZ2FjeUNvbW1hbmRCdWZmZXJNZXRh
bC5tbQorKysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQot
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkdQ
VUxlZ2FjeUNvbW1hbmRCdWZmZXIuaCIKLQotI2lmIEVOQUJMRShXRUJNRVRBTCkKLQotI2ltcG9y
dCAiR1BVTGVnYWN5Q29tbWFuZFF1ZXVlLmgiCi0jaW1wb3J0ICJHUFVMZWdhY3lEcmF3YWJsZS5o
IgotI2ltcG9ydCAiTG9nZ2luZy5oIgotI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KLSNpbXBvcnQg
PHd0Zi9CbG9ja1B0ci5oPgotI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1HUFVMZWdhY3lDb21tYW5kQnVmZmVyOjpHUFVMZWdhY3lDb21tYW5kQnVm
ZmVyKGNvbnN0IEdQVUxlZ2FjeUNvbW1hbmRRdWV1ZSYgcXVldWUsIEZ1bmN0aW9uPHZvaWQoKT4m
JiBjb21wbGV0ZWRDYWxsYmFjaykKLSAgICA6IG1fbWV0YWwgeyBbcXVldWUubWV0YWwoKSBjb21t
YW5kQnVmZmVyXSB9Ci17Ci0gICAgTE9HKFdlYk1ldGFsLCAiR1BVQ29tbWFuZEJ1ZmZlcjo6R1BV
Q29tbWFuZEJ1ZmZlcigpIik7Ci0KLSAgICBbbV9tZXRhbCBhZGRDb21wbGV0ZWRIYW5kbGVyOkJs
b2NrUHRyPHZvaWQgKGlkPE1UTENvbW1hbmRCdWZmZXI+KT46OmZyb21DYWxsYWJsZShbY29tcGxl
dGVkQ2FsbGJhY2sgPSBXVEZNb3ZlKGNvbXBsZXRlZENhbGxiYWNrKV0gKGlkPE1UTENvbW1hbmRC
dWZmZXI+KSBtdXRhYmxlIHsKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChXVEZNb3ZlKGNvbXBs
ZXRlZENhbGxiYWNrKSk7Ci0gICAgfSkuZ2V0KCldOwotfQotCi12b2lkIEdQVUxlZ2FjeUNvbW1h
bmRCdWZmZXI6OnByZXNlbnREcmF3YWJsZShHUFVMZWdhY3lEcmF3YWJsZSYgZHJhd2FibGUpIGNv
bnN0Ci17Ci0gICAgaWYgKCFtX21ldGFsIHx8ICFkcmF3YWJsZS5tZXRhbCgpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBbbV9tZXRhbCBwcmVzZW50RHJhd2FibGU6ZHJhd2FibGUubWV0YWwoKV07
Ci0gICAgZHJhd2FibGUucmVsZWFzZSgpOwotfQotCi12b2lkIEdQVUxlZ2FjeUNvbW1hbmRCdWZm
ZXI6OmNvbW1pdCgpIGNvbnN0Ci17Ci0gICAgW21fbWV0YWwgY29tbWl0XTsKLX0KLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVUxlZ2FjeUNvbW1hbmRRdWV1ZU1ldGFsLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5Q29tbWFuZFF1ZXVl
TWV0YWwubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEyMzNmZjgwZjhkNjdiMTU2
OTQ4M2VlOWY0OTVlOTlmNjA3ZGNjMmUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BV
TGVnYWN5Q29tbWFuZFF1ZXVlTWV0YWwubW0KKysrIC9kZXYvbnVsbApAQCAtMSw3MyArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQot
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAi
Y29uZmlnLmgiCi0jaW1wb3J0ICJHUFVMZWdhY3lDb21tYW5kUXVldWUuaCIKLQotI2lmIEVOQUJM
RShXRUJNRVRBTCkKLQotI2ltcG9ydCAiR1BVTGVnYWN5RGV2aWNlLmgiCi0jaW1wb3J0ICJMb2dn
aW5nLmgiCi0jaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgotI2ltcG9ydCA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RhdGljIE5TU3RyaW5nICogY29uc3Qg
Y29tbWFuZFF1ZXVlRGVmYXVsdExhYmVsID0gQCJjb20uYXBwbGUuV2ViS2l0IjsKLXN0YXRpYyBO
U1N0cmluZyAqIGNvbnN0IGNvbW1hbmRRdWV1ZUxhYmVsUHJlZml4ID0gQCJjb20uYXBwbGUuV2Vi
S2l0LiI7Ci0KLUdQVUxlZ2FjeUNvbW1hbmRRdWV1ZTo6R1BVTGVnYWN5Q29tbWFuZFF1ZXVlKGNv
bnN0IEdQVUxlZ2FjeURldmljZSYgZGV2aWNlKQotICAgIDogbV9tZXRhbCB7IGFkb3B0TlMoW2Rl
dmljZS5tZXRhbCgpIG5ld0NvbW1hbmRRdWV1ZV0pIH0KLXsKLSAgICBMT0coV2ViTWV0YWwsICJH
UFVMZWdhY3lDb21tYW5kUXVldWU6OkdQVUxlZ2FjeUNvbW1hbmRRdWV1ZSgpIik7Ci0KLSAgICBb
bV9tZXRhbCBzZXRMYWJlbDpjb21tYW5kUXVldWVEZWZhdWx0TGFiZWxdOwotfQotCi1TdHJpbmcg
R1BVTGVnYWN5Q29tbWFuZFF1ZXVlOjpsYWJlbCgpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX21ldGFs
KQotICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKLQotICAgIE5TU3RyaW5nICpwcmVmaXhl
ZExhYmVsID0gW21fbWV0YWwgbGFiZWxdOwotCi0gICAgaWYgKFtwcmVmaXhlZExhYmVsIGlzRXF1
YWxUb1N0cmluZzpjb21tYW5kUXVldWVEZWZhdWx0TGFiZWxdKQotICAgICAgICByZXR1cm4gZW1w
dHlTdHJpbmcoKTsKLQotICAgIEFTU0VSVChwcmVmaXhlZExhYmVsLmxlbmd0aCA+IGNvbW1hbmRR
dWV1ZUxhYmVsUHJlZml4Lmxlbmd0aCk7Ci0gICAgcmV0dXJuIFtwcmVmaXhlZExhYmVsIHN1YnN0
cmluZ0Zyb21JbmRleDpjb21tYW5kUXVldWVMYWJlbFByZWZpeC5sZW5ndGhdOwotfQotCi12b2lk
IEdQVUxlZ2FjeUNvbW1hbmRRdWV1ZTo6c2V0TGFiZWwoY29uc3QgU3RyaW5nJiBsYWJlbCkgY29u
c3QKLXsKLSAgICBpZiAobGFiZWwuaXNFbXB0eSgpKQotICAgICAgICBbbV9tZXRhbCBzZXRMYWJl
bDpjb21tYW5kUXVldWVEZWZhdWx0TGFiZWxdOwotICAgIGVsc2UKLSAgICAgICAgW21fbWV0YWwg
c2V0TGFiZWw6W2NvbW1hbmRRdWV1ZUxhYmVsUHJlZml4IHN0cmluZ0J5QXBwZW5kaW5nU3RyaW5n
OmxhYmVsXV07Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVMZWdhY3lDb21w
dXRlQ29tbWFuZEVuY29kZXJNZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL21ldGFsL0dQVUxlZ2FjeUNvbXB1dGVDb21tYW5kRW5jb2Rlck1ldGFsLm1tCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMTAyNmYyNTBiMjYzYmMwZmQwNDI0OGJlZmFiN2Q3N2U3
NjgzOWUxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVUxlZ2FjeUNvbXB1dGVDb21t
YW5kRW5jb2Rlck1ldGFsLm1tCisrKyAvZGV2L251bGwKQEAgLTEsNzkgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNyBZdWljaGlybyBLaWt1cmEgKHkua2lrdXJhQGdtYWlsLmNvbSkK
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29u
ZmlnLmgiCi0jaW1wb3J0ICJHUFVMZWdhY3lDb21wdXRlQ29tbWFuZEVuY29kZXIuaCIKLQotI2lm
IEVOQUJMRShXRUJNRVRBTCkKLQotI2ltcG9ydCAiR1BVTGVnYWN5QnVmZmVyLmgiCi0jaW1wb3J0
ICJHUFVMZWdhY3lDb21tYW5kQnVmZmVyLmgiCi0jaW1wb3J0ICJHUFVMZWdhY3lDb21wdXRlUGlw
ZWxpbmVTdGF0ZS5oIgotI2ltcG9ydCAiR1BVTGVnYWN5U2l6ZS5oIgotI2ltcG9ydCAiTG9nZ2lu
Zy5oIgotI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1z
dGF0aWMgaW5saW5lIE1UTFNpemUgTVRMU2l6ZU1ha2UoR1BVTGVnYWN5U2l6ZSBzaXplKQotewot
ICAgIHJldHVybiB7IHNpemUud2lkdGgsIHNpemUuaGVpZ2h0LCBzaXplLmRlcHRoIH07Ci19Ci0K
LUdQVUxlZ2FjeUNvbXB1dGVDb21tYW5kRW5jb2Rlcjo6R1BVTGVnYWN5Q29tcHV0ZUNvbW1hbmRF
bmNvZGVyKGNvbnN0IEdQVUxlZ2FjeUNvbW1hbmRCdWZmZXImIGJ1ZmZlcikKLSAgICA6IG1fbWV0
YWwgeyBbYnVmZmVyLm1ldGFsKCkgY29tcHV0ZUNvbW1hbmRFbmNvZGVyXSB9Ci17Ci0gICAgTE9H
KFdlYk1ldGFsLCAiR1BVTGVnYWN5Q29tcHV0ZUNvbW1hbmRFbmNvZGVyOjpHUFVMZWdhY3lDb21w
dXRlQ29tbWFuZEVuY29kZXIoKSIpOwotfQotCi12b2lkIEdQVUxlZ2FjeUNvbXB1dGVDb21tYW5k
RW5jb2Rlcjo6c2V0Q29tcHV0ZVBpcGVsaW5lU3RhdGUoY29uc3QgR1BVTGVnYWN5Q29tcHV0ZVBp
cGVsaW5lU3RhdGUmIGNvbXB1dGVQaXBlbGluZVN0YXRlKSBjb25zdAotewotICAgIGlmICghY29t
cHV0ZVBpcGVsaW5lU3RhdGUubWV0YWwoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgW21fbWV0
YWwgc2V0Q29tcHV0ZVBpcGVsaW5lU3RhdGU6Y29tcHV0ZVBpcGVsaW5lU3RhdGUubWV0YWwoKV07
Ci19Ci0gICAgCi12b2lkIEdQVUxlZ2FjeUNvbXB1dGVDb21tYW5kRW5jb2Rlcjo6c2V0QnVmZmVy
KGNvbnN0IEdQVUxlZ2FjeUJ1ZmZlciYgYnVmZmVyLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVk
IGluZGV4KSBjb25zdAotewotICAgIGlmICghYnVmZmVyLm1ldGFsKCkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIFttX21ldGFsIHNldEJ1ZmZlcjpidWZmZXIubWV0YWwoKSBvZmZzZXQ6b2Zmc2V0
IGF0SW5kZXg6aW5kZXhdOwotfQotICAgIAotdm9pZCBHUFVMZWdhY3lDb21wdXRlQ29tbWFuZEVu
Y29kZXI6OmRpc3BhdGNoKEdQVUxlZ2FjeVNpemUgdGhyZWFkZ3JvdXBzUGVyR3JpZCwgR1BVTGVn
YWN5U2l6ZSB0aHJlYWRzUGVyVGhyZWFkZ3JvdXApIGNvbnN0Ci17Ci0gICAgW21fbWV0YWwgZGlz
cGF0Y2hUaHJlYWRncm91cHM6TVRMU2l6ZU1ha2UodGhyZWFkZ3JvdXBzUGVyR3JpZCkgdGhyZWFk
c1BlclRocmVhZGdyb3VwOk1UTFNpemVNYWtlKHRocmVhZHNQZXJUaHJlYWRncm91cCldOwotfQot
Ci12b2lkIEdQVUxlZ2FjeUNvbXB1dGVDb21tYW5kRW5jb2Rlcjo6ZW5kRW5jb2RpbmcoKSBjb25z
dAotewotICAgIFttX21ldGFsIGVuZEVuY29kaW5nXTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL21ldGFsL0dQVUxlZ2FjeUNvbXB1dGVQaXBlbGluZVN0YXRlTWV0YWwubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVMZWdhY3lDb21wdXRlUGlwZWxpbmVT
dGF0ZU1ldGFsLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOTA1MzFlZjZkY2Qw
ZTI1OTUxNzQwYWE3YzIyMDc1MzE5YjQyNWU0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFs
L0dQVUxlZ2FjeUNvbXB1dGVQaXBlbGluZVN0YXRlTWV0YWwubW0KKysrIC9kZXYvbnVsbApAQCAt
MSw1MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IFl1aWNoaXJvIEtpa3VyYSAo
eS5raWt1cmFAZ21haWwuY29tKQotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
Ci0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkdQVUxlZ2FjeUNvbXB1dGVQaXBl
bGluZVN0YXRlLmgiCi0KLSNpZiBFTkFCTEUoV0VCTUVUQUwpCi0KLSNpbXBvcnQgIkdQVUxlZ2Fj
eURldmljZS5oIgotI2ltcG9ydCAiR1BVTGVnYWN5RnVuY3Rpb24uaCIKLSNpbXBvcnQgIkxvZ2dp
bmcuaCIKLSNpbXBvcnQgPE1ldGFsL01ldGFsLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
R1BVTGVnYWN5Q29tcHV0ZVBpcGVsaW5lU3RhdGU6OkdQVUxlZ2FjeUNvbXB1dGVQaXBlbGluZVN0
YXRlKGNvbnN0IEdQVUxlZ2FjeURldmljZSYgZGV2aWNlLCBjb25zdCBHUFVMZWdhY3lGdW5jdGlv
biYgZnVuY3Rpb24pCi17Ci0gICAgTE9HKFdlYk1ldGFsLCAiR1BVTGVnYWN5Q29tcHV0ZVBpcGVs
aW5lU3RhdGU6OkdQVUxlZ2FjeUNvbXB1dGVQaXBlbGluZVN0YXRlKCkiKTsKLQotICAgIGlmICgh
ZnVuY3Rpb24ubWV0YWwoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9tZXRhbCA9IGFkb3B0
TlMoW2RldmljZS5tZXRhbCgpIG5ld0NvbXB1dGVQaXBlbGluZVN0YXRlV2l0aEZ1bmN0aW9uOmZ1
bmN0aW9uLm1ldGFsKCkgZXJyb3I6bmlsXSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
LQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
ZXRhbC9HUFVMZWdhY3lEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yTWV0YWwubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVMZWdhY3lEZXB0aFN0ZW5jaWxEZXNjcmlw
dG9yTWV0YWwubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFjOTAyYjNlYzI4MTFm
OTMzZmRjYTZiYWIwZTVkMzljOWU1ZDBkOGUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwv
R1BVTGVnYWN5RGVwdGhTdGVuY2lsRGVzY3JpcHRvck1ldGFsLm1tCisrKyAvZGV2L251bGwKQEAg
LTEsNjYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiR1BVTGVnYWN5RGVwdGhTdGVuY2lsRGVz
Y3JpcHRvci5oIgotCi0jaWYgRU5BQkxFKFdFQk1FVEFMKQotCi0jaW1wb3J0ICJHUFVMZWdhY3lF
bnVtcy5oIgotI2ltcG9ydCAiTG9nZ2luZy5oIgotI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1HUFVMZWdhY3lEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yOjpH
UFVMZWdhY3lEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yKCkKLSAgICA6IG1fbWV0YWwgeyBhZG9wdE5T
KFtNVExEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yIG5ld10pIH0KLXsKLSAgICBMT0coV2ViTWV0YWws
ICJHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yOjpHUFVEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yKCki
KTsKLX0KLQotYm9vbCBHUFVMZWdhY3lEZXB0aFN0ZW5jaWxEZXNjcmlwdG9yOjpkZXB0aFdyaXRl
RW5hYmxlZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFttX21ldGFsIGlzRGVwdGhXcml0ZUVuYWJs
ZWRdOwotfQotCi12b2lkIEdQVUxlZ2FjeURlcHRoU3RlbmNpbERlc2NyaXB0b3I6OnNldERlcHRo
V3JpdGVFbmFibGVkKGJvb2wgbmV3RGVwdGhXcml0ZUVuYWJsZWQpIGNvbnN0Ci17Ci0gICAgW21f
bWV0YWwgc2V0RGVwdGhXcml0ZUVuYWJsZWQ6bmV3RGVwdGhXcml0ZUVuYWJsZWRdOwotfQotCi1H
UFVMZWdhY3lDb21wYXJlRnVuY3Rpb24gR1BVTGVnYWN5RGVwdGhTdGVuY2lsRGVzY3JpcHRvcjo6
ZGVwdGhDb21wYXJlRnVuY3Rpb24oKSBjb25zdAotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxH
UFVMZWdhY3lDb21wYXJlRnVuY3Rpb24+KFttX21ldGFsIGRlcHRoQ29tcGFyZUZ1bmN0aW9uXSk7
Ci19Ci0KLXZvaWQgR1BVTGVnYWN5RGVwdGhTdGVuY2lsRGVzY3JpcHRvcjo6c2V0RGVwdGhDb21w
YXJlRnVuY3Rpb24oR1BVTGVnYWN5Q29tcGFyZUZ1bmN0aW9uIG5ld0Z1bmN0aW9uKSBjb25zdAot
ewotICAgIC8vIEZJWE1FOiBEbyB3ZSBuZWVkIHRvIGNoZWNrIGlmIHRoZSBmdW5jdGlvbiB2YWx1
ZSBpcyBpbiByYW5nZSBiZWZvcmUgY2FzdGluZyB0byBNVExDb21wYXJlRnVuY3Rpb24/Ci0gICAg
W21fbWV0YWwgc2V0RGVwdGhDb21wYXJlRnVuY3Rpb246c3RhdGljX2Nhc3Q8TVRMQ29tcGFyZUZ1
bmN0aW9uPihuZXdGdW5jdGlvbildOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwv
R1BVTGVnYWN5RGVwdGhTdGVuY2lsU3RhdGVNZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21ldGFsL0dQVUxlZ2FjeURlcHRoU3RlbmNpbFN0YXRlTWV0YWwubW0KZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNlZGI0MjA0MWNhOWEyNTVmM2VhMTZjNDFhYjVh
NzlmNTQ2MGZhNjQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5RGVwdGhT
dGVuY2lsU3RhdGVNZXRhbC5tbQorKysgL2Rldi9udWxsCkBAIC0xLDYyICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcu
aCIKLSNpbXBvcnQgIkdQVUxlZ2FjeURlcHRoU3RlbmNpbFN0YXRlLmgiCi0KLSNpZiBFTkFCTEUo
V0VCTUVUQUwpCi0KLSNpbXBvcnQgIkdQVUxlZ2FjeURlcHRoU3RlbmNpbERlc2NyaXB0b3IuaCIK
LSNpbXBvcnQgIkdQVUxlZ2FjeURldmljZS5oIgotI2ltcG9ydCAiTG9nZ2luZy5oIgotI2ltcG9y
dCA8TWV0YWwvTWV0YWwuaD4KLSNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLUdQVUxlZ2FjeURlcHRoU3RlbmNpbFN0YXRlOjpHUFVMZWdhY3lE
ZXB0aFN0ZW5jaWxTdGF0ZShjb25zdCBHUFVMZWdhY3lEZXZpY2UmIGRldmljZSwgY29uc3QgR1BV
TGVnYWN5RGVwdGhTdGVuY2lsRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKLSAgICA6IG1fbWV0YWwg
eyBhZG9wdE5TKFtkZXZpY2UubWV0YWwoKSBuZXdEZXB0aFN0ZW5jaWxTdGF0ZVdpdGhEZXNjcmlw
dG9yOmRlc2NyaXB0b3IubWV0YWwoKV0pIH0KLXsKLSAgICBMT0coV2ViTWV0YWwsICJHUFVMZWdh
Y3lEZXB0aFN0ZW5jaWxTdGF0ZTo6R1BVTGVnYWN5RGVwdGhTdGVuY2lsU3RhdGUoKSIpOwotfQot
Ci1TdHJpbmcgR1BVTGVnYWN5RGVwdGhTdGVuY2lsU3RhdGU6OmxhYmVsKCkgY29uc3QKLXsKLSAg
ICBpZiAoIW1fbWV0YWwpCi0gICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwotCi0gICAgcmV0
dXJuIFttX21ldGFsIGxhYmVsXTsKLX0KLQotdm9pZCBHUFVMZWdhY3lEZXB0aFN0ZW5jaWxTdGF0
ZTo6c2V0TGFiZWwoY29uc3QgU3RyaW5nJikgY29uc3QKLXsKLSAgICAvLyBGSVhNRTogVGhlIE1U
TERlcHRoU3RlbmNpbFN0YXRlIHByb3RvY29sIGRvZXMgbm90IGFsbG93IHNldHRpbmcgdGhlIGxh
YmVsLgotICAgIC8vIFRoZSBsYWJlbCBoYXMgdG8gYmUgc2V0IG9uIHRoZSBkZXNjcmlwdG9yIHdo
ZW4gY3JlYXRpbmcgdGhlIHN0YXRlIG9iamVjdC4KLSAgICAvLyBXZSBzaG91bGQgY29uc2lkZXIg
Y2hhbmdpbmcgdGhlIFdlYk1ldGFsIGludGVyZmFjZSB0byBub3QgcmVxdWlyZSB0aGlzIQotfQot
ICAgIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVUxlZ2FjeURldmljZU1ldGFsLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5RGV2aWNl
TWV0YWwubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlhNzZmYzk3YTcxODhmYjVm
YmM2MDYwMzY0NjExYTMwMjExNzA2YjQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BV
TGVnYWN5RGV2aWNlTWV0YWwubW0KKysrIC9kZXYvbnVsbApAQCAtMSw5MCArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmln
LmgiCi0jaW1wb3J0ICJHUFVMZWdhY3lEZXZpY2UuaCIKLQotI2lmIEVOQUJMRShXRUJNRVRBTCkK
LQotI2ltcG9ydCAiTG9nZ2luZy5oIgotI2ltcG9ydCAiV2ViTWV0YWxMYXllci5oIgotI2ltcG9y
dCA8SmF2YVNjcmlwdENvcmUvQXJyYXlCdWZmZXIuaD4KLSNpbXBvcnQgPE1ldGFsL01ldGFsLmg+
Ci0jaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLUdQVUxlZ2FjeURldmljZTo6R1BVTGVnYWN5RGV2aWNlKCkKLSAgICA6IG1fbWV0YWwg
eyBhZG9wdE5TKE1UTENyZWF0ZVN5c3RlbURlZmF1bHREZXZpY2UoKSkgfQotewotCi0gICAgaWYg
KCFtX21ldGFsKSB7Ci0gICAgICAgIExPRyhXZWJNZXRhbCwgIkdQVUxlZ2FjeURldmljZTo6R1BV
TGVnYWN5RGV2aWNlIC0tIGNvdWxkIG5vdCBjcmVhdGUgdGhlIGRldmljZS4gVGhpcyB1c3VhbGx5
IG1lYW5zIE1ldGFsIGlzIG5vdCBhdmFpbGFibGUgb24gdGhpcyBoYXJkd2FyZS4iKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIExPRyhXZWJNZXRhbCwgIkdQVUxlZ2FjeURldmljZTo6
R1BVTGVnYWN5RGV2aWNlIE1ldGFsIGRldmljZSBpcyAlcCIsIG1fbWV0YWwuZ2V0KCkpOwotCi0g
ICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAgICBtX2xheWVyID0gYWRvcHROUyhb
W1dlYk1ldGFsTGF5ZXIgYWxsb2NdIGluaXRXaXRoR1BVRGV2aWNlOnRoaXNdKTsKLSAgICBbbV9s
YXllciBzZXRPcGFxdWU6MF07Ci0gICAgW21fbGF5ZXIgc2V0TmFtZTpAIldlYk1ldGFsIExheWVy
Il07Ci0KLSAgICAvLyBGSVhNRTogV2ViTWV0YWwgLSBTaG91bGQgdGhpcyBiZSBpbiB0aGUgV2Vi
TWV0YWxMYXllciBpbml0aWFsaXplcj8KLSAgICBbbV9sYXllciBzZXREZXZpY2U6bV9tZXRhbC5n
ZXQoKV07Ci0gICAgW21fbGF5ZXIgc2V0UGl4ZWxGb3JtYXQ6TVRMUGl4ZWxGb3JtYXRCR1JBOFVu
b3JtXTsKLSAgICBbbV9sYXllciBzZXRGcmFtZWJ1ZmZlck9ubHk6WUVTXTsKLQotICAgIEVORF9C
TE9DS19PQkpDX0VYQ0VQVElPTlMKLX0KLQotdm9pZCBHUFVMZWdhY3lEZXZpY2U6OmRpc2Nvbm5l
Y3QoKQotewotICAgIG1fbGF5ZXIuZ2V0KCkuY29udGV4dCA9IG51bGxwdHI7Ci0gICAgLy8gRklY
TUU6IFNob3VsZCB3ZSBhbHNvIGNsZWFyIG91dCB0aGUgZGV2aWNlIHByb3BlcnR5LCB3aGljaCBo
YXMgdGhlIE1UTERldmljZT8KLX0KLQotdm9pZCBHUFVMZWdhY3lEZXZpY2U6OnJlc2hhcGUoaW50
IHdpZHRoLCBpbnQgaGVpZ2h0KSBjb25zdAotewotICAgIFttX2xheWVyIHNldEJvdW5kczpDR1Jl
Y3RNYWtlKDAsIDAsIHdpZHRoLCBoZWlnaHQpXTsKLSAgICBbbV9sYXllciBzZXREcmF3YWJsZVNp
emU6Q0dTaXplTWFrZSh3aWR0aCwgaGVpZ2h0KV07Ci0KLSAgICAvLyBGSVhNRTogV2ViTWV0YWwg
LSBMb3RzIG9mIHJlc2hhcGUgc3R1ZmYgc2hvdWxkIGdvIGhlcmUuIFNlZSBHQzNELgotfQotCi1D
QUxheWVyICpHUFVMZWdhY3lEZXZpY2U6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAotewotICAgIHJl
dHVybiBtX2xheWVyLmdldCgpOwotfQotCi1ib29sIEdQVUxlZ2FjeURldmljZTo6b3BlcmF0b3Ih
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gIW1fbWV0YWw7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tZXRhbC9HUFVMZWdhY3lEcmF3YWJsZU1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5RHJhd2FibGVNZXRhbC5tbQpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggNGJhZTEzOWU2M2MwYjM1MjE4YTk3NDEwY2UzNDgyNjIzZGQ3
OTQyZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVMZWdhY3lEcmF3YWJsZU1ldGFs
Lm1tCisrKyAvZGV2L251bGwKQEAgLTEsNjUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiR1BV
TGVnYWN5RHJhd2FibGUuaCIKLQotI2lmIEVOQUJMRShXRUJNRVRBTCkKLQotI2ltcG9ydCAiR1BV
TGVnYWN5RGV2aWNlLmgiCi0jaW1wb3J0ICJMb2dnaW5nLmgiCi0jaW1wb3J0ICJXZWJNZXRhbExh
eWVyLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotR1BVTGVnYWN5RHJhd2FibGU6OkdQVUxl
Z2FjeURyYXdhYmxlKGNvbnN0IEdQVUxlZ2FjeURldmljZSYgZGV2aWNlKQotICAgIDogbV9tZXRh
bCB7IFtkZXZpY2UubGF5ZXIoKSBuZXh0RHJhd2FibGVdIH0KLXsKLSAgICBMT0coV2ViTWV0YWws
ICJHUFVMZWdhY3lEcmF3YWJsZTo6R1BVTGVnYWN5RHJhd2FibGUoKSIpOwotfQotCi12b2lkIEdQ
VUxlZ2FjeURyYXdhYmxlOjpyZWxlYXNlKCkKLXsKLSAgICBMT0coV2ViTWV0YWwsICJHUFVMZWdh
Y3lEcmF3YWJsZTo6cmVsZWFzZSgpIik7Ci0gICAgbV9tZXRhbCA9IG5pbDsKLX0KLSAgICAKLU1U
TERyYXdhYmxlICpHUFVMZWdhY3lEcmF3YWJsZTo6bWV0YWwoKSBjb25zdAotewotICAgIHJldHVy
biBtX21ldGFsLmdldCgpOwotfQotCi1NVExUZXh0dXJlICpHUFVMZWdhY3lEcmF3YWJsZTo6dGV4
dHVyZSgpIGNvbnN0Ci17Ci0gICAgaWYgKCFbbV9tZXRhbCBjb25mb3Jtc1RvUHJvdG9jb2w6QHBy
b3RvY29sKENBTWV0YWxEcmF3YWJsZSldKSB7Ci0gICAgICAgIEFTU0VSVCghbV9tZXRhbCk7Ci0g
ICAgICAgIHJldHVybiBuaWw7Ci0gICAgfQotICAgIHJldHVybiBbKGlkPENBTWV0YWxEcmF3YWJs
ZT4pbV9tZXRhbC5nZXQoKSB0ZXh0dXJlXTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQot
Ci0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21l
dGFsL0dQVUxlZ2FjeUZ1bmN0aW9uTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tZXRhbC9HUFVMZWdhY3lGdW5jdGlvbk1ldGFsLm1tCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBmOTk5YzA2YmMzNGMxNzg5NGFjYjYxY2M3ZjM3NDk1NWVkYzE0YzU1Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVUxlZ2FjeUZ1bmN0aW9uTWV0YWwubW0KKysr
IC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJHUFVMZWdhY3lG
dW5jdGlvbi5oIgotCi0jaWYgRU5BQkxFKFdFQk1FVEFMKQotCi0jaW1wb3J0ICJHUFVMZWdhY3lM
aWJyYXJ5LmgiCi0jaW1wb3J0ICJMb2dnaW5nLmgiCi0jaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgot
I2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
R1BVTGVnYWN5RnVuY3Rpb246OkdQVUxlZ2FjeUZ1bmN0aW9uKGNvbnN0IEdQVUxlZ2FjeUxpYnJh
cnkmIGxpYnJhcnksIGNvbnN0IFN0cmluZyYgbmFtZSkKLSAgICA6IG1fbWV0YWwgeyBhZG9wdE5T
KFtsaWJyYXJ5Lm1ldGFsKCkgbmV3RnVuY3Rpb25XaXRoTmFtZTpuYW1lXSkgfQotewotICAgIExP
RyhXZWJNZXRhbCwgIkdQVUxlZ2FjeUZ1bmN0aW9uOjpHUFVMZWdhY3lGdW5jdGlvbigpIik7Ci19
Ci0KLVN0cmluZyBHUFVMZWdhY3lGdW5jdGlvbjo6bmFtZSgpIGNvbnN0Ci17Ci0gICAgaWYgKCFt
X21ldGFsKQotICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKLQotICAgIHJldHVybiBbbV9t
ZXRhbCBuYW1lXTsKLX0KLQotYm9vbCBHUFVMZWdhY3lGdW5jdGlvbjo6b3BlcmF0b3IhKCkgY29u
c3QKLXsKLSAgICByZXR1cm4gIW1fbWV0YWw7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
LQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
ZXRhbC9HUFVMZWdhY3lMaWJyYXJ5TWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tZXRhbC9HUFVMZWdhY3lMaWJyYXJ5TWV0YWwubW0KZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDA4NzI2MjgyNTNiMjY4YWYwMDBlYTc2MzY3YmNhZTg2ZWFmMDllNWEuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5TGlicmFyeU1ldGFsLm1tCisrKyAv
ZGV2L251bGwKQEAgLTEsNzggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiR1BVTGVnYWN5TGli
cmFyeS5oIgotCi0jaWYgRU5BQkxFKFdFQk1FVEFMKQotCi0jaW1wb3J0ICJHUFVMZWdhY3lEZXZp
Y2UuaCIKLSNpbXBvcnQgIkxvZ2dpbmcuaCIKLSNpbXBvcnQgPE1ldGFsL01ldGFsLmg+Ci0jaW1w
b3J0IDx3dGYvVmVjdG9yLmg+Ci0jaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1HUFVMZWdhY3lMaWJyYXJ5OjpHUFVMZWdhY3lMaWJyYXJ5KGNv
bnN0IEdQVUxlZ2FjeURldmljZSYgZGV2aWNlLCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUpCi17
Ci0gICAgTE9HKFdlYk1ldGFsLCAiR1BVTGVnYWN5TGlicmFyeTo6R1BVTGVnYWN5TGlicmFyeSgp
Iik7Ci0KLSAgICBpZiAoIWRldmljZS5tZXRhbCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBO
U0Vycm9yICplcnJvciA9IFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpAImNvbS5hcHBsZS5XZWJL
aXQuR1BVIiBjb2RlOjEgdXNlckluZm86bmlsXTsKLSAgICBtX21ldGFsID0gYWRvcHROUyhbZGV2
aWNlLm1ldGFsKCkgbmV3TGlicmFyeVdpdGhTb3VyY2U6c291cmNlQ29kZSBvcHRpb25zOm5pbCBl
cnJvcjomZXJyb3JdKTsKLSAgICBpZiAoIW1fbWV0YWwpCi0gICAgICAgIExPRyhXZWJNZXRhbCwg
IkNvbXBpbGF0aW9uIGVycm9yOiAlcyIsIFtbZXJyb3IgbG9jYWxpemVkRGVzY3JpcHRpb25dIFVU
RjhTdHJpbmddKTsKLX0KLQotU3RyaW5nIEdQVUxlZ2FjeUxpYnJhcnk6OmxhYmVsKCkgY29uc3QK
LXsKLSAgICBpZiAoIW1fbWV0YWwpCi0gICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwotCi0g
ICAgcmV0dXJuIFttX21ldGFsIGxhYmVsXTsKLX0KLQotdm9pZCBHUFVMZWdhY3lMaWJyYXJ5Ojpz
ZXRMYWJlbChjb25zdCBTdHJpbmcmIGxhYmVsKSBjb25zdAotewotICAgIEFTU0VSVChtX21ldGFs
KTsKLSAgICBbbV9tZXRhbCBzZXRMYWJlbDpsYWJlbF07Ci19Ci0KLVZlY3RvcjxTdHJpbmc+IEdQ
VUxlZ2FjeUxpYnJhcnk6OmZ1bmN0aW9uTmFtZXMoKSBjb25zdAotewotICAgIGF1dG8gYXJyYXkg
PSBbbV9tZXRhbCBmdW5jdGlvbk5hbWVzXTsKLSAgICBWZWN0b3I8U3RyaW5nPiB2ZWN0b3I7Ci0g
ICAgdmVjdG9yLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoYXJyYXkuY291bnQpOwotICAgIGZvciAo
TlNTdHJpbmcgKnN0cmluZyBpbiBhcnJheSkKLSAgICAgICAgdmVjdG9yLnVuY2hlY2tlZEFwcGVu
ZChzdHJpbmcpOwotICAgIHJldHVybiB2ZWN0b3I7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tZXRhbC9HUFVMZWdhY3lSZW5kZXJDb21tYW5kRW5jb2Rlck1ldGFsLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5UmVuZGVyQ29tbWFuZEVuY29k
ZXJNZXRhbC5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTBlNWQ0ZmFkNDEyY2Yy
ZjNjNzgwYjBhZGRmZGVlMWE3ZmMyZmY1OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9H
UFVMZWdhY3lSZW5kZXJDb21tYW5kRW5jb2Rlck1ldGFsLm1tCisrKyAvZGV2L251bGwKQEAgLTEs
OTkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiR1BVTGVnYWN5UmVuZGVyQ29tbWFuZEVuY29k
ZXIuaCIKLQotI2lmIEVOQUJMRShXRUJNRVRBTCkKLQotI2ltcG9ydCAiR1BVTGVnYWN5QnVmZmVy
LmgiCi0jaW1wb3J0ICJHUFVMZWdhY3lDb21tYW5kQnVmZmVyLmgiCi0jaW1wb3J0ICJHUFVMZWdh
Y3lEZXB0aFN0ZW5jaWxTdGF0ZS5oIgotI2ltcG9ydCAiR1BVTGVnYWN5UmVuZGVyUGFzc0Rlc2Ny
aXB0b3IuaCIKLSNpbXBvcnQgIkdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lU3RhdGUuaCIKLSNpbXBv
cnQgIkxvZ2dpbmcuaCIKLSNpbXBvcnQgPE1ldGFsL01ldGFsLmg+Ci0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotR1BVTGVnYWN5UmVuZGVyQ29tbWFuZEVuY29kZXI6OkdQVUxlZ2FjeVJlbmRlckNv
bW1hbmRFbmNvZGVyKGNvbnN0IEdQVUxlZ2FjeUNvbW1hbmRCdWZmZXImIGJ1ZmZlciwgY29uc3Qg
R1BVTGVnYWN5UmVuZGVyUGFzc0Rlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCi17Ci0gICAgTE9HKFdl
Yk1ldGFsLCAiR1BVTGVnYWN5UmVuZGVyQ29tbWFuZEVuY29kZXI6OkdQVUxlZ2FjeVJlbmRlckNv
bW1hbmRFbmNvZGVyKCkiKTsKLQotICAgIGlmICghZGVzY3JpcHRvci5tZXRhbCgpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBtX21ldGFsID0gW2J1ZmZlci5tZXRhbCgpIHJlbmRlckNvbW1hbmRF
bmNvZGVyV2l0aERlc2NyaXB0b3I6ZGVzY3JpcHRvci5tZXRhbCgpXTsKLX0KLQotdm9pZCBHUFVM
ZWdhY3lSZW5kZXJDb21tYW5kRW5jb2Rlcjo6c2V0UmVuZGVyUGlwZWxpbmVTdGF0ZShjb25zdCBH
UFVMZWdhY3lSZW5kZXJQaXBlbGluZVN0YXRlJiByZW5kZXJQaXBlbGluZVN0YXRlKSBjb25zdAot
ewotICAgIGlmICghcmVuZGVyUGlwZWxpbmVTdGF0ZS5tZXRhbCgpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBbbV9tZXRhbCBzZXRSZW5kZXJQaXBlbGluZVN0YXRlOnJlbmRlclBpcGVsaW5lU3Rh
dGUubWV0YWwoKV07Ci19Ci0KLXZvaWQgR1BVTGVnYWN5UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNl
dERlcHRoU3RlbmNpbFN0YXRlKGNvbnN0IEdQVUxlZ2FjeURlcHRoU3RlbmNpbFN0YXRlJiBkZXB0
aFN0ZW5jaWxTdGF0ZSkgY29uc3QKLXsKLSAgICBpZiAoIWRlcHRoU3RlbmNpbFN0YXRlLm1ldGFs
KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIFttX21ldGFsIHNldERlcHRoU3RlbmNpbFN0YXRl
OmRlcHRoU3RlbmNpbFN0YXRlLm1ldGFsKCldOwotfQotCi12b2lkIEdQVUxlZ2FjeVJlbmRlckNv
bW1hbmRFbmNvZGVyOjpzZXRWZXJ0ZXhCdWZmZXIoY29uc3QgR1BVTGVnYWN5QnVmZmVyJiBidWZm
ZXIsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgaW5kZXgpIGNvbnN0Ci17Ci0gICAgaWYgKCFi
dWZmZXIubWV0YWwoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgW21fbWV0YWwgc2V0VmVydGV4
QnVmZmVyOmJ1ZmZlci5tZXRhbCgpIG9mZnNldDpvZmZzZXQgYXRJbmRleDppbmRleF07Ci19Ci0K
LXZvaWQgR1BVTGVnYWN5UmVuZGVyQ29tbWFuZEVuY29kZXI6OnNldEZyYWdtZW50QnVmZmVyKGNv
bnN0IEdQVUxlZ2FjeUJ1ZmZlciYgYnVmZmVyLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGlu
ZGV4KSBjb25zdAotewotICAgIGlmICghYnVmZmVyLm1ldGFsKCkpCi0gICAgICAgIHJldHVybjsK
LQotICAgIFttX21ldGFsIHNldEZyYWdtZW50QnVmZmVyOmJ1ZmZlci5tZXRhbCgpIG9mZnNldDpv
ZmZzZXQgYXRJbmRleDppbmRleF07Ci19Ci0KLXZvaWQgR1BVTGVnYWN5UmVuZGVyQ29tbWFuZEVu
Y29kZXI6OmRyYXdQcmltaXRpdmVzKHVuc2lnbmVkIHR5cGUsIHVuc2lnbmVkIHN0YXJ0LCB1bnNp
Z25lZCBjb3VudCkgY29uc3QKLXsKLSAgICAvLyBGSVhNRTogV2h5IGRvIHdlIG5lZWQgYSBzcGVj
aWFsbHkgb3B0aW1pemVkIHBhdGggZm9yIGNvdW50IG9mIDA/Ci0gICAgaWYgKCFjb3VudCkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgW21fbWV0YWwgZHJhd1ByaW1pdGl2ZXM6c3RhdGljX2Nhc3Q8
TVRMUHJpbWl0aXZlVHlwZT4odHlwZSkgdmVydGV4U3RhcnQ6c3RhcnQgdmVydGV4Q291bnQ6Y291
bnRdOwotfQotCi12b2lkIEdQVUxlZ2FjeVJlbmRlckNvbW1hbmRFbmNvZGVyOjplbmRFbmNvZGlu
ZygpIGNvbnN0Ci17Ci0gICAgW21fbWV0YWwgZW5kRW5jb2RpbmddOwotfQotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9y
TWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVMZWdh
Y3lSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3JNZXRhbC5tbQpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggYzMyNWM5ZjI5NzBlMmNmZDJhNjZkNjZhNGY0MTIzMmJhMWI2YTY2OS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVMZWdhY3lSZW5kZXJQYXNzQXR0YWNobWVu
dERlc2NyaXB0b3JNZXRhbC5tbQorKysgL2Rldi9udWxsCkBAIC0xLDc4ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcu
aCIKLSNpbXBvcnQgIkdQVUxlZ2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5oIgot
Ci0jaWYgRU5BQkxFKFdFQk1FVEFMKQotCi0jaW1wb3J0ICJHUFVMZWdhY3lUZXh0dXJlLmgiCi0j
aW1wb3J0ICJMb2dnaW5nLmgiCi0KLSNpbXBvcnQgPE1ldGFsL01ldGFsLmg+Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotR1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjpH
UFVMZWdhY3lSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IoTVRMUmVuZGVyUGFzc0F0dGFj
aG1lbnREZXNjcmlwdG9yICptZXRhbCkKLSAgICA6IG1fbWV0YWwgeyBtZXRhbCB9Ci17Ci0gICAg
TE9HKFdlYk1ldGFsLCAiR1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yOjpH
UFVMZWdhY3lSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3IoKSIpOwotfQotCi11bnNpZ25l
ZCBHUFVMZWdhY3lSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3I6OmxvYWRBY3Rpb24oKSBj
b25zdAotewotICAgIHJldHVybiBbbV9tZXRhbCBsb2FkQWN0aW9uXTsKLX0KLQotdm9pZCBHUFVM
ZWdhY3lSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3I6OnNldExvYWRBY3Rpb24odW5zaWdu
ZWQgbmV3TG9hZEFjdGlvbikgY29uc3QKLXsKLSAgICAvLyBGSVhNRTogU2hvdWxkIHRoaXMgcmFu
Z2UgY2hlY2sgZm9yIGxlZ2l0aW1hdGUgdmFsdWVzPwotICAgIFttX21ldGFsIHNldExvYWRBY3Rp
b246c3RhdGljX2Nhc3Q8TVRMTG9hZEFjdGlvbj4obmV3TG9hZEFjdGlvbildOwotfQotCi11bnNp
Z25lZCBHUFVMZWdhY3lSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3I6OnN0b3JlQWN0aW9u
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gW21fbWV0YWwgc3RvcmVBY3Rpb25dOwotfQotCi12b2lk
IEdQVUxlZ2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvcjo6c2V0U3RvcmVBY3Rpb24o
dW5zaWduZWQgbmV3U3RvcmVBY3Rpb24pIGNvbnN0Ci17Ci0gICAgLy8gRklYTUU6IFNob3VsZCB0
aGlzIHJhbmdlIGNoZWNrIGZvciBsZWdpdGltYXRlIHZhbHVlcz8KLSAgICBbbV9tZXRhbCBzZXRT
dG9yZUFjdGlvbjpzdGF0aWNfY2FzdDxNVExTdG9yZUFjdGlvbj4obmV3U3RvcmVBY3Rpb24pXTsK
LX0KLQotdm9pZCBHUFVMZWdhY3lSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3I6OnNldFRl
eHR1cmUoY29uc3QgR1BVTGVnYWN5VGV4dHVyZSYgdGV4dHVyZSkgY29uc3QKLXsKLSAgICBbbV9t
ZXRhbCBzZXRUZXh0dXJlOnRleHR1cmUubWV0YWwoKV07Ci19Ci0KLU1UTFJlbmRlclBhc3NBdHRh
Y2htZW50RGVzY3JpcHRvciAqR1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9y
OjptZXRhbCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fbWV0YWwuZ2V0KCk7Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVMZWdhY3lSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50
RGVzY3JpcHRvck1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0
YWwvR1BVTGVnYWN5UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3JNZXRhbC5tbQpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjVlYmUxNjQ1NDllYTk4NjNhYTM3MWRiNjA0
YjQ1YjM3ZWQ1ZWY0NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVMZWdhY3lSZW5k
ZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvck1ldGFsLm1tCisrKyAvZGV2L251bGwKQEAg
LTEsNjkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiR1BVTGVnYWN5UmVuZGVyUGFzc0NvbG9y
QXR0YWNobWVudERlc2NyaXB0b3IuaCIKLQotI2lmIEVOQUJMRShXRUJNRVRBTCkKLQotI2ltcG9y
dCAiRmxvYXRDb252ZXJzaW9uLmgiCi0jaW1wb3J0ICJMb2dnaW5nLmgiCi0jaW1wb3J0IDxNZXRh
bC9NZXRhbC5oPgotI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLUdQVUxlZ2FjeVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjpHUFVMZWdh
Y3lSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcihNVExSZW5kZXJQYXNzQ29sb3JB
dHRhY2htZW50RGVzY3JpcHRvciAqbWV0YWwpCi0gICAgOiBHUFVMZWdhY3lSZW5kZXJQYXNzQXR0
YWNobWVudERlc2NyaXB0b3IgeyBtZXRhbCB9Ci17Ci0gICAgTE9HKFdlYk1ldGFsLCAiR1BVTGVn
YWN5UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6OkdQVUxlZ2FjeVJlbmRlclBh
c3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKCkiKTsKLX0KLQotVmVjdG9yPGZsb2F0PiBHUFVM
ZWdhY3lSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6Y2xlYXJDb2xvcigpIGNv
bnN0Ci17Ci0gICAgYXV0byogbWV0YWwgPSB0aGlzLT5tZXRhbCgpOwotICAgIGlmICghbWV0YWwp
Ci0gICAgICAgIHJldHVybiB7IH07Ci0KLSAgICBhdXRvIGNvbG9yID0gW21ldGFsIGNsZWFyQ29s
b3JdOwotICAgIHJldHVybiB7IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoY29sb3IucmVkKSwgbmFy
cm93UHJlY2lzaW9uVG9GbG9hdChjb2xvci5ncmVlbiksIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQo
Y29sb3IuYmx1ZSksIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoY29sb3IuYWxwaGEpIH07Ci19Ci0K
LXZvaWQgR1BVTGVnYWN5UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6OnNldENs
ZWFyQ29sb3IoY29uc3QgVmVjdG9yPGZsb2F0PiYgbmV3Q2xlYXJDb2xvcikgY29uc3QKLXsKLSAg
ICBpZiAobmV3Q2xlYXJDb2xvci5zaXplKCkgIT0gNCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
W21ldGFsKCkgc2V0Q2xlYXJDb2xvcjpNVExDbGVhckNvbG9yTWFrZShuZXdDbGVhckNvbG9yWzBd
LCBuZXdDbGVhckNvbG9yWzFdLCBuZXdDbGVhckNvbG9yWzJdLCBuZXdDbGVhckNvbG9yWzNdKV07
Ci19Ci0KLU1UTFJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yICpHUFVMZWdhY3lS
ZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6bWV0YWwoKSBjb25zdAotewotICAg
IHJldHVybiBzdGF0aWNfY2FzdDxNVExSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRv
ciAqPihHUFVMZWdhY3lSZW5kZXJQYXNzQXR0YWNobWVudERlc2NyaXB0b3I6Om1ldGFsKCkpOwot
fQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5UmVuZGVyUGFzc0RlcHRo
QXR0YWNobWVudERlc2NyaXB0b3JNZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21ldGFsL0dQVUxlZ2FjeVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9y
TWV0YWwubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVjM2RhM2ViY2MxZjI1YWRk
NzQ1ZjJlZDQxZTk1ZWQ2ZmU0OGZkYTkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BV
TGVnYWN5UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3JNZXRhbC5tbQorKysgL2Rl
di9udWxsCkBAIC0xLDY0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
LSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkdQVUxlZ2FjeVJlbmRl
clBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yLmgiCi0KLSNpZiBFTkFCTEUoV0VCTUVUQUwp
Ci0KLSNpbXBvcnQgIkdQVUxlZ2FjeVJlbmRlclBhc3NBdHRhY2htZW50RGVzY3JpcHRvci5oIgot
I2ltcG9ydCAiTG9nZ2luZy5oIgotI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1HUFVMZWdhY3lSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRv
cjo6R1BVTGVnYWN5UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IoTVRMUmVuZGVy
UGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IgKm1ldGFsKQotICAgIDogR1BVTGVnYWN5UmVu
ZGVyUGFzc0F0dGFjaG1lbnREZXNjcmlwdG9yIHsgbWV0YWwgfQotewotICAgIExPRyhXZWJNZXRh
bCwgIkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1lbnREZXNjcmlwdG9yOjpHUFVSZW5kZXJQYXNz
RGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcigpIik7Ci19Ci0KLWRvdWJsZSBHUFVMZWdhY3lSZW5k
ZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcjo6Y2xlYXJEZXB0aCgpIGNvbnN0Ci17Ci0g
ICAgYXV0byogbWV0YWwgPSB0aGlzLT5tZXRhbCgpOwotICAgIGlmICghbWV0YWwpCi0gICAgICAg
IHJldHVybiAwOwotCi0gICAgcmV0dXJuIFttZXRhbCBjbGVhckRlcHRoXTsKLX0KLQotdm9pZCBH
UFVMZWdhY3lSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvcjo6c2V0Q2xlYXJEZXB0
aChkb3VibGUgbmV3Q2xlYXJEZXB0aCkgY29uc3QKLXsKLSAgICBbbWV0YWwoKSBzZXRDbGVhckRl
cHRoOm5ld0NsZWFyRGVwdGhdOwotfQotCi1NVExSZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVz
Y3JpcHRvciAqR1BVTGVnYWN5UmVuZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3I6Om1l
dGFsKCkgY29uc3QKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TVRMUmVuZGVyUGFzc0RlcHRo
QXR0YWNobWVudERlc2NyaXB0b3IgKj4oR1BVTGVnYWN5UmVuZGVyUGFzc0F0dGFjaG1lbnREZXNj
cmlwdG9yOjptZXRhbCgpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVUxl
Z2FjeVJlbmRlclBhc3NEZXNjcmlwdG9yTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tZXRhbC9HUFVMZWdhY3lSZW5kZXJQYXNzRGVzY3JpcHRvck1ldGFsLm1tCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYzQ1ZWQ2Y2M5ZTIyY2U5OGZiOWQwNmRiZmI2
NDdkZGJkNDgzYjJjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVUxlZ2FjeVJlbmRl
clBhc3NEZXNjcmlwdG9yTWV0YWwubW0KKysrIC9kZXYvbnVsbApAQCAtMSw2NiArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29u
ZmlnLmgiCi0jaW1wb3J0ICJHUFVMZWdhY3lSZW5kZXJQYXNzRGVzY3JpcHRvci5oIgotCi0jaWYg
RU5BQkxFKFdFQk1FVEFMKQotCi0jaW1wb3J0ICJHUFVMZWdhY3lSZW5kZXJQYXNzQ29sb3JBdHRh
Y2htZW50RGVzY3JpcHRvci5oIgotI2ltcG9ydCAiR1BVTGVnYWN5UmVuZGVyUGFzc0RlcHRoQXR0
YWNobWVudERlc2NyaXB0b3IuaCIKLSNpbXBvcnQgIkxvZ2dpbmcuaCIKLSNpbXBvcnQgPE1ldGFs
L01ldGFsLmg+Ci0jaW1wb3J0IDx3dGYvVmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotR1BVTGVnYWN5UmVuZGVyUGFzc0Rlc2NyaXB0b3I6OkdQVUxlZ2FjeVJlbmRlclBhc3NEZXNj
cmlwdG9yKCkKLSAgICA6IG1fbWV0YWwgeyBhZG9wdE5TKFtNVExSZW5kZXJQYXNzRGVzY3JpcHRv
ciBuZXddKSB9Ci17Ci0gICAgTE9HKFdlYk1ldGFsLCAiR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3I6
OkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yKCkiKTsKLX0KLQotVmVjdG9yPEdQVUxlZ2FjeVJlbmRl
clBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yPiBHUFVMZWdhY3lSZW5kZXJQYXNzRGVzY3Jp
cHRvcjo6Y29sb3JBdHRhY2htZW50cygpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX21ldGFsKQotICAg
ICAgICByZXR1cm4geyB9OwotCi0gICAgLy8gRklYTUU6IFdoeSBpcyBpdCBjb3JyZWN0IHRvIHJl
dHVybiBvbmUgY29sb3IgaGVyZT8KLSAgICByZXR1cm4geyB7IFtbbV9tZXRhbCBjb2xvckF0dGFj
aG1lbnRzXSBvYmplY3RBdEluZGV4ZWRTdWJzY3JpcHQ6MF0gfSB9OwotfQotCi1HUFVMZWdhY3lS
ZW5kZXJQYXNzRGVwdGhBdHRhY2htZW50RGVzY3JpcHRvciBHUFVMZWdhY3lSZW5kZXJQYXNzRGVz
Y3JpcHRvcjo6ZGVwdGhBdHRhY2htZW50KCkgY29uc3QKLXsKLSAgICByZXR1cm4gW21fbWV0YWwg
ZGVwdGhBdHRhY2htZW50XTsKLX0KLQotTVRMUmVuZGVyUGFzc0Rlc2NyaXB0b3IgKkdQVUxlZ2Fj
eVJlbmRlclBhc3NEZXNjcmlwdG9yOjptZXRhbCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fbWV0
YWwuZ2V0KCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVMZWdhY3lSZW5k
ZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3JNZXRhbC5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVUxlZ2FjeVJlbmRlclBpcGVsaW5lQ29sb3JB
dHRhY2htZW50RGVzY3JpcHRvck1ldGFsLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBmNDNjOTViZDE5NGM2OTM1ZTIzZDFkYmRhM2E0YzkxOGM2MGI1M2VjLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL21ldGFsL0dQVUxlZ2FjeVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVz
Y3JpcHRvck1ldGFsLm1tCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgot
I2ltcG9ydCAiR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9y
LmgiCi0KLSNpZiBFTkFCTEUoV0VCTUVUQUwpCi0KLSNpbXBvcnQgIkxvZ2dpbmcuaCIKLSNpbXBv
cnQgPE1ldGFsL01ldGFsLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotR1BVTGVnYWN5UmVu
ZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjpHUFVMZWdhY3lSZW5kZXJQaXBl
bGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3IoTVRMUmVuZGVyUGlwZWxpbmVDb2xvckF0dGFj
aG1lbnREZXNjcmlwdG9yICptZXRhbCkKLSAgICA6IG1fbWV0YWwgeyBtZXRhbCB9Ci17Ci0gICAg
TE9HKFdlYk1ldGFsLCAiR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVDb2xvckF0dGFjaG1lbnREZXNj
cmlwdG9yOjpHUFVMZWdhY3lSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3Io
KSIpOwotfQotCi11bnNpZ25lZCBHUFVMZWdhY3lSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVu
dERlc2NyaXB0b3I6OnBpeGVsRm9ybWF0KCkgY29uc3QKLXsKLSAgICByZXR1cm4gW21fbWV0YWwg
cGl4ZWxGb3JtYXRdOwotfQotCi12b2lkIEdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lQ29sb3JBdHRh
Y2htZW50RGVzY3JpcHRvcjo6c2V0UGl4ZWxGb3JtYXQodW5zaWduZWQgbmV3UGl4ZWxGb3JtYXQp
IGNvbnN0Ci17Ci0gICAgLy8gRklYTUU6IFNob3VsZCB3ZSBjaGVjayBmb3IgZW51bWVyYXRpb24g
dmFsdWVzIG91dCBvZiByYW5nZSBiZWZvcmUgY2FsbGluZyB0aGUgbWV0aG9kPwotICAgIFttX21l
dGFsIHNldFBpeGVsRm9ybWF0OnN0YXRpY19jYXN0PE1UTFBpeGVsRm9ybWF0PihuZXdQaXhlbEZv
cm1hdCldOwotfQotCi1NVExSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3Ig
KkdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcjo6bWV0YWwo
KSBjb25zdAotewotICAgIHJldHVybiBtX21ldGFsLmdldCgpOwotfQotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yTWV0YWwubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVMZWdhY3lSZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3JNZXRhbC5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
NTA1ZThhZjJlZmRlMDMzZjBlNTEzMDcyOWVmNGUzNjhiMjIxNWIxOC4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tZXRhbC9HUFVMZWdhY3lSZW5kZXJQaXBlbGluZURlc2NyaXB0b3JNZXRhbC5tbQor
KysgL2Rldi9udWxsCkBAIC0xLDgzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkdQVUxlZ2Fj
eVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oIgotCi0jaWYgRU5BQkxFKFdFQk1FVEFMKQotCi0j
aW1wb3J0ICJHUFVMZWdhY3lGdW5jdGlvbi5oIgotI2ltcG9ydCAiR1BVTGVnYWN5UmVuZGVyUGlw
ZWxpbmVDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yLmgiCi0jaW1wb3J0ICJMb2dnaW5nLmgiCi0j
aW1wb3J0IDxNZXRhbC9NZXRhbC5oPgotI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLUdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6R1BVTGVn
YWN5UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKCkKLSAgICA6IG1fbWV0YWwgeyBhZG9wdE5TKFtN
VExSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgbmV3XSkgfQotewotICAgIExPRyhXZWJNZXRhbCwg
IkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6R1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9y
KCkiKTsKLX0KLQotdW5zaWduZWQgR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpk
ZXB0aEF0dGFjaG1lbnRQaXhlbEZvcm1hdCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFttX21ldGFs
IGRlcHRoQXR0YWNobWVudFBpeGVsRm9ybWF0XTsKLX0KLQotdm9pZCBHUFVMZWdhY3lSZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3I6OnNldERlcHRoQXR0YWNobWVudFBpeGVsRm9ybWF0KHVuc2lnbmVk
IG5ld1BpeGVsRm9ybWF0KSBjb25zdAotewotICAgIFttX21ldGFsIHNldERlcHRoQXR0YWNobWVu
dFBpeGVsRm9ybWF0OnN0YXRpY19jYXN0PE1UTFBpeGVsRm9ybWF0PihuZXdQaXhlbEZvcm1hdCld
OwotfQotCi12b2lkIEdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0VmVydGV4
RnVuY3Rpb24oY29uc3QgR1BVTGVnYWN5RnVuY3Rpb24mIG5ld0Z1bmN0aW9uKSBjb25zdAotewot
ICAgIFttX21ldGFsIHNldFZlcnRleEZ1bmN0aW9uOm5ld0Z1bmN0aW9uLm1ldGFsKCldOwotfQot
Ci12b2lkIEdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6c2V0RnJhZ21lbnRGdW5j
dGlvbihjb25zdCBHUFVMZWdhY3lGdW5jdGlvbiYgbmV3RnVuY3Rpb24pIGNvbnN0Ci17Ci0gICAg
W21fbWV0YWwgc2V0RnJhZ21lbnRGdW5jdGlvbjpuZXdGdW5jdGlvbi5tZXRhbCgpXTsKLX0KLQot
VmVjdG9yPEdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcj4g
R1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpjb2xvckF0dGFjaG1lbnRzKCkgY29u
c3QKLXsKLSAgICAvLyBGSVhNRTogV2h5IGlzIGl0IGFsd2F5cyBPSyB0byByZXR1cm4gZXhhY3Rs
eSBvbmUgYXR0YWNobWVudD8KLSAgICByZXR1cm4geyB7IFtbbV9tZXRhbCBjb2xvckF0dGFjaG1l
bnRzXSBvYmplY3RBdEluZGV4ZWRTdWJzY3JpcHQ6MF0gfSB9OwotfQotCi12b2lkIEdQVUxlZ2Fj
eVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6cmVzZXQoKSBjb25zdAotewotICAgIFttX21ldGFs
IHJlc2V0XTsKLX0KLQotTVRMUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yICpHUFVMZWdhY3lSZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3I6Om1ldGFsKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9tZXRh
bC5nZXQoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVUxlZ2FjeVJlbmRl
clBpcGVsaW5lU3RhdGVNZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21ldGFsL0dQVUxlZ2FjeVJlbmRlclBpcGVsaW5lU3RhdGVNZXRhbC5tbQpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggOTQyMGZiODhhYmIyZGIwYjI2MjBjZDExOGRiNzdhNTViMTllMDI0
My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVMZWdhY3lSZW5kZXJQaXBlbGluZVN0
YXRlTWV0YWwubW0KKysrIC9kZXYvbnVsbApAQCAtMSw2NiArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1w
b3J0ICJHUFVMZWdhY3lSZW5kZXJQaXBlbGluZVN0YXRlLmgiCi0KLSNpZiBFTkFCTEUoV0VCTUVU
QUwpCi0KLSNpbXBvcnQgIkdQVUxlZ2FjeURldmljZS5oIgotI2ltcG9ydCAiR1BVTGVnYWN5UmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmgiCi0jaW1wb3J0ICJMb2dnaW5nLmgiCi0jaW1wb3J0IDxN
ZXRhbC9NZXRhbC5oPgotI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVTdGF0ZTo6R1BVTGVnYWN5UmVu
ZGVyUGlwZWxpbmVTdGF0ZShjb25zdCBHUFVMZWdhY3lEZXZpY2UmIGRldmljZSwgY29uc3QgR1BV
TGVnYWN5UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQotICAgIDogbV9tZXRh
bCB7IGFkb3B0TlMoW2RldmljZS5tZXRhbCgpIG5ld1JlbmRlclBpcGVsaW5lU3RhdGVXaXRoRGVz
Y3JpcHRvcjpkZXNjcmlwdG9yLm1ldGFsKCkgZXJyb3I6bmlsXSkgfQotewotICAgIExPRyhXZWJN
ZXRhbCwgIkdQVUxlZ2FjeVJlbmRlclBpcGVsaW5lU3RhdGU6OkdQVUxlZ2FjeVJlbmRlclBpcGVs
aW5lU3RhdGUoKSIpOwotfQotCi1TdHJpbmcgR1BVTGVnYWN5UmVuZGVyUGlwZWxpbmVTdGF0ZTo6
bGFiZWwoKSBjb25zdAotewotICAgIGlmICghbV9tZXRhbCkKLSAgICAgICAgcmV0dXJuIGVtcHR5
U3RyaW5nKCk7Ci0gICAgcmV0dXJuIFttX21ldGFsIGxhYmVsXTsKLX0KLQotdm9pZCBHUFVMZWdh
Y3lSZW5kZXJQaXBlbGluZVN0YXRlOjpzZXRMYWJlbChjb25zdCBTdHJpbmcmKSBjb25zdAotewot
ICAgIC8vIEZJWE1FOiBUaGUgTVRMUmVuZGVyUGlwZWxpbmVTdGF0ZSBwcm90b2NvbCBkb2VzIG5v
dCBhbGxvdyBzZXR0aW5nIHRoZSBsYWJlbC4KLSAgICAvLyBUaGUgbGFiZWwgaGFzIHRvIGJlIHNl
dCBvbiB0aGUgZGVzY3JpcHRvciB3aGVuIGNyZWF0aW5nIHRoZSBzdGF0ZSBvYmplY3QuCi0gICAg
Ly8gV2Ugc2hvdWxkIGNvbnNpZGVyIGNoYW5naW5nIHRoZSBXZWJNZXRhbCBpbnRlcmZhY2UgdG8g
bm90IHJlcXVpcmUgdGhpcyEKLX0KLSAgICAKLU1UTFJlbmRlclBpcGVsaW5lU3RhdGUgKkdQVUxl
Z2FjeVJlbmRlclBpcGVsaW5lU3RhdGU6Om1ldGFsKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9t
ZXRhbC5nZXQoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVUxlZ2FjeVRl
eHR1cmVEZXNjcmlwdG9yTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tZXRhbC9HUFVMZWdhY3lUZXh0dXJlRGVzY3JpcHRvck1ldGFsLm1tCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAyNWFkMzg4NWY5MmNhYWNjYjM0ZDhiNzM1YWE2YTc4OThiYTI2ZDlj
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVUxlZ2FjeVRleHR1cmVEZXNjcmlwdG9y
TWV0YWwubW0KKysrIC9kZXYvbnVsbApAQCAtMSwxMTQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9y
dCAiR1BVTGVnYWN5VGV4dHVyZURlc2NyaXB0b3IuaCIKLQotI2lmIEVOQUJMRShXRUJNRVRBTCkK
LQotI2ltcG9ydCAiTG9nZ2luZy5oIgotI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1HUFVMZWdhY3lUZXh0dXJlRGVzY3JpcHRvcjo6R1BVTGVnYWN5VGV4
dHVyZURlc2NyaXB0b3IodW5zaWduZWQgcGl4ZWxGb3JtYXQsIHVuc2lnbmVkIHdpZHRoLCB1bnNp
Z25lZCBoZWlnaHQsIGJvb2wgbWlwbWFwcGVkKQotICAgIDogbV9tZXRhbCB7IFtNVExUZXh0dXJl
RGVzY3JpcHRvciB0ZXh0dXJlMkREZXNjcmlwdG9yV2l0aFBpeGVsRm9ybWF0OnN0YXRpY19jYXN0
PE1UTFBpeGVsRm9ybWF0PihwaXhlbEZvcm1hdCkgd2lkdGg6d2lkdGggaGVpZ2h0OmhlaWdodCBt
aXBtYXBwZWQ6bWlwbWFwcGVkXSB9Ci17Ci0gICAgTE9HKFdlYk1ldGFsLCAiR1BVVGV4dHVyZURl
c2NyaXB0b3I6OkdQVVRleHR1cmVEZXNjcmlwdG9yKCkiKTsKLX0KLQotdW5zaWduZWQgR1BVTGVn
YWN5VGV4dHVyZURlc2NyaXB0b3I6OndpZHRoKCkgY29uc3QKLXsKLSAgICByZXR1cm4gW21fbWV0
YWwgd2lkdGhdOwotfQotCi12b2lkIEdQVUxlZ2FjeVRleHR1cmVEZXNjcmlwdG9yOjpzZXRXaWR0
aCh1bnNpZ25lZCBuZXdXaWR0aCkgY29uc3QKLXsKLSAgICBBU1NFUlQobV9tZXRhbCk7Ci0gICAg
W21fbWV0YWwgc2V0V2lkdGg6bmV3V2lkdGhdOwotfQotCi11bnNpZ25lZCBHUFVMZWdhY3lUZXh0
dXJlRGVzY3JpcHRvcjo6aGVpZ2h0KCkgY29uc3QKLXsKLSAgICByZXR1cm4gW21fbWV0YWwgaGVp
Z2h0XTsKLX0KLQotdm9pZCBHUFVMZWdhY3lUZXh0dXJlRGVzY3JpcHRvcjo6c2V0SGVpZ2h0KHVu
c2lnbmVkIG5ld0hlaWdodCkgY29uc3QKLXsKLSAgICBBU1NFUlQobV9tZXRhbCk7Ci0gICAgW21f
bWV0YWwgc2V0SGVpZ2h0Om5ld0hlaWdodF07Ci19Ci0KLXVuc2lnbmVkIEdQVUxlZ2FjeVRleHR1
cmVEZXNjcmlwdG9yOjpzYW1wbGVDb3VudCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFttX21ldGFs
IHNhbXBsZUNvdW50XTsKLX0KLQotdm9pZCBHUFVMZWdhY3lUZXh0dXJlRGVzY3JpcHRvcjo6c2V0
U2FtcGxlQ291bnQodW5zaWduZWQgbmV3U2FtcGxlQ291bnQpIGNvbnN0Ci17Ci0gICAgQVNTRVJU
KG1fbWV0YWwpOwotICAgIFttX21ldGFsIHNldFNhbXBsZUNvdW50Om5ld1NhbXBsZUNvdW50XTsK
LX0KLQotdW5zaWduZWQgR1BVTGVnYWN5VGV4dHVyZURlc2NyaXB0b3I6OnRleHR1cmVUeXBlKCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gW21fbWV0YWwgdGV4dHVyZVR5cGVdOwotfQotCi12b2lkIEdQ
VUxlZ2FjeVRleHR1cmVEZXNjcmlwdG9yOjpzZXRUZXh0dXJlVHlwZSh1bnNpZ25lZCBuZXdUZXh0
dXJlVHlwZSkgY29uc3QKLXsKLSAgICBBU1NFUlQobV9tZXRhbCk7Ci0gICAgW21fbWV0YWwgc2V0
VGV4dHVyZVR5cGU6c3RhdGljX2Nhc3Q8TVRMVGV4dHVyZVR5cGU+KG5ld1RleHR1cmVUeXBlKV07
Ci19Ci0KLXVuc2lnbmVkIEdQVUxlZ2FjeVRleHR1cmVEZXNjcmlwdG9yOjpzdG9yYWdlTW9kZSgp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIFttX21ldGFsIHN0b3JhZ2VNb2RlXTsKLX0KLQotdm9pZCBH
UFVMZWdhY3lUZXh0dXJlRGVzY3JpcHRvcjo6c2V0U3RvcmFnZU1vZGUodW5zaWduZWQgbmV3U3Rv
cmFnZU1vZGUpIGNvbnN0Ci17Ci0gICAgW21fbWV0YWwgc2V0U3RvcmFnZU1vZGU6c3RhdGljX2Nh
c3Q8TVRMU3RvcmFnZU1vZGU+KG5ld1N0b3JhZ2VNb2RlKV07Ci19Ci0KLXVuc2lnbmVkIEdQVUxl
Z2FjeVRleHR1cmVEZXNjcmlwdG9yOjp1c2FnZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFttX21l
dGFsIHVzYWdlXTsKLX0KLQotdm9pZCBHUFVMZWdhY3lUZXh0dXJlRGVzY3JpcHRvcjo6c2V0VXNh
Z2UodW5zaWduZWQgbmV3VXNhZ2UpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKG1fbWV0YWwpOwotICAg
IFttX21ldGFsIHNldFVzYWdlOm5ld1VzYWdlXTsKLX0KLQotTVRMVGV4dHVyZURlc2NyaXB0b3Ig
KkdQVUxlZ2FjeVRleHR1cmVEZXNjcmlwdG9yOjptZXRhbCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IG1fbWV0YWwuZ2V0KCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVMZWdh
Y3lUZXh0dXJlTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRh
bC9HUFVMZWdhY3lUZXh0dXJlTWV0YWwubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDgxMTFlZmU2Y2RkN2M5ZGU3NzI2NDYzNWIwOWRlYzcwZjFhNWZjZDYuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWV0YWwvR1BVTGVnYWN5VGV4dHVyZU1ldGFsLm1tCisrKyAvZGV2L251bGwKQEAg
LTEsNzIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiR1BVTGVnYWN5VGV4dHVyZS5oIgotCi0j
aWYgRU5BQkxFKFdFQk1FVEFMKQotCi0jaW1wb3J0ICJHUFVMZWdhY3lEZXZpY2UuaCIKLSNpbXBv
cnQgIkdQVUxlZ2FjeURyYXdhYmxlLmgiCi0jaW1wb3J0ICJHUFVMZWdhY3lUZXh0dXJlRGVzY3Jp
cHRvci5oIgotI2ltcG9ydCAiTG9nZ2luZy5oIgotI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1HUFVMZWdhY3lUZXh0dXJlOjpHUFVMZWdhY3lUZXh0dXJl
KGNvbnN0IEdQVUxlZ2FjeURldmljZSYgZGV2aWNlLCBjb25zdCBHUFVMZWdhY3lUZXh0dXJlRGVz
Y3JpcHRvciYgZGVzY3JpcHRvcikKLXsKLSAgICBMT0coV2ViTWV0YWwsICJHUFVUZXh0dXJlOjpH
UFVUZXh0dXJlKCkiKTsKLQotICAgIGlmICghZGVzY3JpcHRvci5tZXRhbCgpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBtX21ldGFsID0gYWRvcHROUyhbZGV2aWNlLm1ldGFsKCkgbmV3VGV4dHVy
ZVdpdGhEZXNjcmlwdG9yOmRlc2NyaXB0b3IubWV0YWwoKV0pOwotfQotCi1HUFVMZWdhY3lUZXh0
dXJlOjpHUFVMZWdhY3lUZXh0dXJlKGNvbnN0IEdQVUxlZ2FjeURyYXdhYmxlJiBvdGhlcikKLSAg
ICA6IG1fbWV0YWwgeyBvdGhlci50ZXh0dXJlKCkgfQotewotICAgIExPRyhXZWJNZXRhbCwgIkdQ
VVRleHR1cmU6OkdQVVRleHR1cmUoKSIpOwotfQotCi11bnNpZ25lZCBHUFVMZWdhY3lUZXh0dXJl
Ojp3aWR0aCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fbWV0YWwuZ2V0KCkud2lkdGg7Ci19Ci0K
LXVuc2lnbmVkIEdQVUxlZ2FjeVRleHR1cmU6OmhlaWdodCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IG1fbWV0YWwuZ2V0KCkuaGVpZ2h0OwotfQotCi1NVExUZXh0dXJlICpHUFVMZWdhY3lUZXh0dXJl
OjptZXRhbCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fbWV0YWwuZ2V0KCk7Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCg==
</data>
<flag name="review"
          id="372501"
          type_id="1"
          status="+"
          setter="graouts"
    />
          </attachment>
      

    </bug>

</bugzilla>