<?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>161976</bug_id>
          
          <creation_ts>2016-09-14 10:15:37 -0700</creation_ts>
          <short_desc>[MediaStream] Minor cleanup</short_desc>
          <delta_ts>2016-09-16 11:51:58 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</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="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>achristensen</cc>
    
    <cc>adam.bergkvist</cc>
    
    <cc>pnormand</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1229619</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2016-09-14 10:15:37 -0700</bug_when>
    <thetext>- MediaStreamTrackSourcesCallback and SourceInfo aren&apos;t used, remove them
- CaptureDeviceManager is used in platform, move them there
- Getting the media device list doesn&apos;t need to be asynchronous</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1229620</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-09-14 10:17:32 -0700</bug_when>
    <thetext>&lt;rdar://problem/28302571&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1229624</commentid>
    <comment_count>2</comment_count>
      <attachid>288828</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2016-09-14 10:27:46 -0700</bug_when>
    <thetext>Created attachment 288828
Proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1229639</commentid>
    <comment_count>3</comment_count>
      <attachid>288831</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2016-09-14 11:00:06 -0700</bug_when>
    <thetext>Created attachment 288831
Proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1229674</commentid>
    <comment_count>4</comment_count>
      <attachid>288831</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-09-14 12:21:09 -0700</bug_when>
    <thetext>Comment on attachment 288831
Proposed patch.

So the major point here is to make the retrieval of devices synchronous.
That seems to make sense to me. Maybe this change should be added to the ChangeLog.

I&apos;ll finish the review tomorrow but this looks good to me.
The win bot might want some changes to DerivedSources.cpp.

 View in context: https://bugs.webkit.org/attachment.cgi?id=288831&amp;action=review

&gt; Source/WebCore/platform/mediastream/CaptureDevice.h:37
&gt; +    enum SourceKind { Audio, Video };

class enum?

&gt; Source/WebCore/platform/mediastream/CaptureDeviceManager.cpp:2
&gt; + * Copyright (C) 2015 Apple Inc. All rights reserved.

Updating the copyright?

&gt; Source/WebCore/platform/mediastream/CaptureDeviceManager.cpp:45
&gt; +}

In the header?

&gt; Source/WebCore/platform/mediastream/CaptureDeviceManager.h:27
&gt; +#define CaptureDeviceManager_h

pragma.

&gt; Source/WebCore/platform/mediastream/CaptureDeviceManager.h:34
&gt; +#include &lt;wtf/text/WTFString.h&gt;

Probably no need for the last two includes

&gt; Source/WebCore/platform/mediastream/openwebrtc/RealtimeMediaSourceCenterOwr.cpp:44
&gt;  #include &quot;RealtimeMediaSource.h&quot;

Probably this include is not needed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1229721</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2016-09-14 14:00:46 -0700</bug_when>
    <thetext>Committed r205929: https://trac.webkit.org/r205929</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1230415</commentid>
    <comment_count>6</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-09-16 09:24:21 -0700</bug_when>
    <thetext>r206024</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1230513</commentid>
    <comment_count>7</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-09-16 11:51:58 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/206034</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>288828</attachid>
            <date>2016-09-14 10:27:46 -0700</date>
            <delta_ts>2016-09-14 11:00:06 -0700</delta_ts>
            <desc>Proposed patch.</desc>
            <filename>restructure_patch_3.txt</filename>
            <type>text/plain</type>
            <size>100094</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNTkxNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY5IEBACisyMDE2LTA5LTE0ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYVN0cmVhbV0g
TWlub3IgY2xlYW51cAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTYxOTc2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgTm8gbmV3IHRlc3RzLCBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZUluZm8uaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcDogUmVtb3ZlZC4K
KyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmg6IFJl
bW92ZWQuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXNSZXF1ZXN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRGV2aWNlc1JlcXVlc3Q6OmRpZENvbXBsZXRl
UGVybWlzc2lvbkNoZWNrKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRGV2aWNlc1JlcXVlc3Q6
OmRpZENvbXBsZXRlVHJhY2tTb3VyY2VJbmZvUmVxdWVzdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYURldmljZXNSZXF1ZXN0OjpyZXF1ZXN0T3JpZ2luKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlc1JlcXVlc3QuaDoKKyAgICAg
ICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tTb3VyY2VzQ2FsbGJhY2su
aDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJh
Y2tTb3VyY2VzQ2FsbGJhY2suaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vU291cmNlSW5mby5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0
cmVhbS9Tb3VyY2VJbmZvLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVh
bS9Tb3VyY2VJbmZvLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vQ2FwdHVyZURl
dmljZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0Nh
cHR1cmVEZXZpY2VJbmZvLmguCisgICAgICAgIChXZWJDb3JlOjpDYXB0dXJlRGV2aWNlOjpDYXB0
dXJlRGV2aWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhcHR1cmVEZXZpY2U6OnBlcnNpc3RlbnRJ
ZCk6CisgICAgICAgIChXZWJDb3JlOjpDYXB0dXJlRGV2aWNlOjpsYWJlbCk6CisgICAgICAgIChX
ZWJDb3JlOjpDYXB0dXJlRGV2aWNlOjpncm91cElkKToKKyAgICAgICAgKFdlYkNvcmU6OkNhcHR1
cmVEZXZpY2U6OmtpbmQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FwdHVyZVNlc3Npb25JbmZvOjp+
Q2FwdHVyZVNlc3Npb25JbmZvKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNhcHR1cmVT
ZXNzaW9uSW5mbzo6c3VwcG9ydHNWaWRlb1NpemUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6Q2FwdHVyZVNlc3Npb25JbmZvOjpiZXN0U2Vzc2lvblByZXNldEZvclZpZGVvRGltZW5zaW9u
cyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vQ2FwdHVyZURldmlj
ZU1hbmFnZXIuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcC4KKyAgICAgICAgKENhcHR1cmVEZXZpY2VNYW5h
Z2VyOjpnZXRTb3VyY2VzSW5mbyk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vQ2Fw
dHVyZURldmljZU1hbmFnZXIuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5oLgorICAgICAgICAoV2ViQ29yZTo6Q2Fw
dHVyZVNlc3Npb25JbmZvOjp+Q2FwdHVyZVNlc3Npb25JbmZvKToKKyAgICAgICAgKFdlYkNvcmU6
OkNhcHR1cmVTZXNzaW9uSW5mbzo6c3VwcG9ydHNWaWRlb1NpemUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FwdHVyZVNlc3Npb25JbmZvOjpiZXN0U2Vzc2lvblByZXNldEZvclZpZGVvRGltZW5zaW9u
cyk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1NvdXJj
ZXNSZXF1ZXN0Q2xpZW50Lmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJl
YW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmg6CisgICAgICAgICogcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIubW06CisgICAgICAgIChXZWJD
b3JlOjpBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpnZXRTb3VyY2VzSW5mbyk6CisgICAgICAgICog
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYzo6Z2V0TWVk
aWFTdHJlYW1EZXZpY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VD
ZW50ZXJNYWM6OmdldE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWM6OnNvdXJjZVdpdGhVSUQpOiBE
ZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU1lZGlh
U291cmNlQ2VudGVyTWFjLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vb3Blbndl
YnJ0Yy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyT3dyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3I6OmdldE1lZGlhU3RyZWFtRGV2aWNlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyT3dyOjpnZXRNZWRpYVN0
cmVhbVRyYWNrU291cmNlcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1l
ZGlhU291cmNlQ2VudGVyT3dyOjpzb3VyY2VXaXRoVUlEKTogRGVsZXRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJP
d3IuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZU1lZGlhU291cmNlOjphdWRpb0Rldmlj
ZUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OnZpZGVv
RGV2aWNlSW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6
dHJhY2tTb3VyY2VXaXRoVUlEKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01v
Y2tSZWFsdGltZU1lZGlhU291cmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9Nb2NrUmVh
bHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRp
bWVNZWRpYVNvdXJjZUNlbnRlcjo6Z2V0TWVkaWFTdHJlYW1EZXZpY2VzKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpnZXRNZWRpYVN0cmVhbVRyYWNr
U291cmNlcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVNZWRpYVNv
dXJjZUNlbnRlcjo6c291cmNlV2l0aFVJRCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0v
bW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oOgorCiAyMDE2LTA5LTE0ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUmVncmVzc2lvbihyMTUyNzI1
KTogZ2VuZXJhdGUtYmluZGluZ3MucGwgLS13cml0ZS1kZXBlbmRlbmNpZXMgZG9lcyBub3Qgd29y
awpJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIwNTU3OCkKKysrIFNvdXJjZS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yMjIsNyArMjIyLDYgQEAg
c2V0KFdlYkNvcmVfTk9OX1NWR19JRExfRklMRVMKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtRXZlbnQuaWRsCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRy
YWNrLmlkbAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja0V2ZW50Lmlk
bAotICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNDYWxsYmFj
ay5pZGwKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50LmlkbAog
ICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuaWRsCiAgICAg
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludHMuaWRsCkBAIC0yNDcsNyAr
MjQ2LDYgQEAgc2V0KFdlYkNvcmVfTk9OX1NWR19JRExfRklMRVMKICAgICBNb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ1N0YXRzUmVwb3J0LmlkbAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDU3Rh
dHNSZXNwb25zZS5pZGwKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1RyYWNrRXZlbnQuaWRs
Ci0gICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9Tb3VyY2VJbmZvLmlkbAogCiAgICAgTW9kdWxlcy9u
YXZpZ2F0b3Jjb250ZW50dXRpbHMvTmF2aWdhdG9yQ29udGVudFV0aWxzLmlkbAogCkBAIC04OTks
NyArODk3LDYgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDU3RhdHNSZXNwb25zZS5jcHAKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1RyYWNrRXZl
bnQuY3BwCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9TRFBQcm9jZXNzb3IuY3BwCi0gICAgTW9k
dWxlcy9tZWRpYXN0cmVhbS9Tb3VyY2VJbmZvLmNwcAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0v
VXNlck1lZGlhQ29udHJvbGxlci5jcHAKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRp
YVBlcm1pc3Npb25DaGVjay5jcHAKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJl
cXVlc3QuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDIw
NTU3OCkKKysrIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcgY29w
eSkKQEAgLTEzOSw3ICsxMzksNiBAQCBKU19CSU5ESU5HX0lETFMgPSBcCiAgICAgJChXZWJDb3Jl
KS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRXZlbnQuaWRsIFwKICAgICAkKFdlYkNv
cmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5pZGwgXAogICAgICQoV2Vi
Q29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrRXZlbnQuaWRsIFwKLSAg
ICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1NvdXJjZXND
YWxsYmFjay5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRy
YWNrQ29uc3RyYWludC5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9N
ZWRpYVRyYWNrQ29uc3RyYWludFNldC5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludHMuaWRsIFwKQEAgLTE2Myw3ICsxNjIsNiBAQCBK
U19CSU5ESU5HX0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q1N0YXRzUmVwb3J0LmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q1N0YXRzUmVzcG9uc2UuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDVHJhY2tFdmVudC5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9T
b3VyY2VJbmZvLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvRE9N
V2luZG93Tm90aWZpY2F0aW9ucy5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9ub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbi5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9ub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5pZGwgXApJbmRleDogU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlSW5mby5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZUluZm8uaAkocmV2aXNp
b24gMjA1NTc4KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXB0dXJl
RGV2aWNlSW5mby5oCShub25leGlzdGVudCkKQEAgLTEsNTkgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0g
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgQ2FwdHVyZURldmljZUlu
Zm9faAotI2RlZmluZSBDYXB0dXJlRGV2aWNlSW5mb19oCi0KLSNpZiBFTkFCTEUoTUVESUFfU1RS
RUFNKQotCi0jaW5jbHVkZSA8UmVhbHRpbWVNZWRpYVNvdXJjZS5oPgotI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBDYXB0dXJl
RGV2aWNlSW5mbyB7Ci0gICAgU3RyaW5nIG1fcGVyc2lzdGVudERldmljZUlEOwotICAgIFN0cmlu
ZyBtX2xvY2FsaXplZE5hbWU7Ci0gICAgU3RyaW5nIG1fZ3JvdXBJRDsKLQotICAgIFN0cmluZyBt
X3NvdXJjZUlkOwotCi0gICAgYm9vbCBtX2VuYWJsZWQgeyBmYWxzZSB9OwotICAgIFJlYWx0aW1l
TWVkaWFTb3VyY2U6OlR5cGUgbV9zb3VyY2VUeXBlIHsgUmVhbHRpbWVNZWRpYVNvdXJjZTo6Tm9u
ZSB9OwotICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9GYWNpbmdNb2RlIG1f
cG9zaXRpb24geyBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OlVua25vd24gfTsKLX07Ci0K
LWNsYXNzIENhcHR1cmVTZXNzaW9uSW5mbyB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+Q2FwdHVy
ZVNlc3Npb25JbmZvKCkgeyB9Ci0gICAgdmlydHVhbCBib29sIHN1cHBvcnRzVmlkZW9TaXplKGNv
bnN0IFN0cmluZyYgLyogdmlkZW9TaXplICovKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAg
IHZpcnR1YWwgU3RyaW5nIGJlc3RTZXNzaW9uUHJlc2V0Rm9yVmlkZW9EaW1lbnNpb25zKGludCAv
KiB3aWR0aCAqLywgaW50IC8qIGhlaWdodCAqLykgY29uc3QgeyByZXR1cm4gZW1wdHlTdHJpbmco
KTsgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKE1F
RElBX1NUUkVBTSkKLQotI2VuZGlmIC8qIENhcHR1cmVEZXZpY2VJbmZvX2ggKi8KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwdHVy
ZURldmljZU1hbmFnZXIuY3BwCShyZXZpc2lvbiAyMDU1NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcAkobm9uZXhpc3RlbnQp
CkBAIC0xLDIxMCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJDYXB0dXJlRGV2aWNlTWFuYWdl
ci5oIgotCi0jaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLQotI2ltcG9ydCAiTG9nZ2luZy5oIgot
I2ltcG9ydCAiTWVkaWFDb25zdHJhaW50cy5oIgotI2ltcG9ydCAiUmVhbHRpbWVNZWRpYVNvdXJj
ZS5oIgotI2ltcG9ydCAiUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oIgotI2ltcG9ydCAiUmVh
bHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmgiCi0jaW1wb3J0ICJVVUlELmgiCi0jaW1wb3J0IDx3
dGYvTWFpblRocmVhZC5oPgotI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+Ci0jaW1wb3J0
IDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1D
YXB0dXJlRGV2aWNlTWFuYWdlcjo6fkNhcHR1cmVEZXZpY2VNYW5hZ2VyKCkKLXsKLX0KLQotVmVj
dG9yPFJlZlB0cjxUcmFja1NvdXJjZUluZm8+PiBDYXB0dXJlRGV2aWNlTWFuYWdlcjo6Z2V0U291
cmNlc0luZm8oY29uc3QgU3RyaW5nJiByZXF1ZXN0T3JpZ2luKQotewotICAgIFVOVVNFRF9QQVJB
TShyZXF1ZXN0T3JpZ2luKTsKLSAgICBWZWN0b3I8UmVmUHRyPFRyYWNrU291cmNlSW5mbz4+IHNv
dXJjZXNJbmZvOwotICAgIGZvciAoYXV0byBjYXB0dXJlRGV2aWNlIDogY2FwdHVyZURldmljZUxp
c3QoKSkgewotICAgICAgICBpZiAoIWNhcHR1cmVEZXZpY2UubV9lbmFibGVkIHx8IGNhcHR1cmVE
ZXZpY2UubV9zb3VyY2VUeXBlID09IFJlYWx0aW1lTWVkaWFTb3VyY2U6Ok5vbmUpCi0gICAgICAg
ICAgICBjb250aW51ZTsKLQotICAgICAgICBUcmFja1NvdXJjZUluZm86OlNvdXJjZUtpbmQgdHJh
Y2tTb3VyY2VUeXBlID0gY2FwdHVyZURldmljZS5tX3NvdXJjZVR5cGUgPT0gUmVhbHRpbWVNZWRp
YVNvdXJjZTo6VmlkZW8gPyBUcmFja1NvdXJjZUluZm86OlZpZGVvIDogVHJhY2tTb3VyY2VJbmZv
OjpBdWRpbzsKLSAgICAgICAgc291cmNlc0luZm8uYXBwZW5kKFRyYWNrU291cmNlSW5mbzo6Y3Jl
YXRlKGNhcHR1cmVEZXZpY2UubV9wZXJzaXN0ZW50RGV2aWNlSUQsIGNhcHR1cmVEZXZpY2UubV9z
b3VyY2VJZCwgdHJhY2tTb3VyY2VUeXBlLCBjYXB0dXJlRGV2aWNlLm1fbG9jYWxpemVkTmFtZSwg
Y2FwdHVyZURldmljZS5tX2dyb3VwSUQpKTsKLSAgICB9Ci0gICAgTE9HKE1lZGlhLCAiQ2FwdHVy
ZURldmljZU1hbmFnZXI6OmdldFNvdXJjZXNJbmZvKCVwKSwgZm91bmQgJXp1IGFjdGl2ZSBkZXZp
Y2VzIiwgdGhpcywgc291cmNlc0luZm8uc2l6ZSgpKTsKLSAgICByZXR1cm4gc291cmNlc0luZm87
Ci19Ci0KLWJvb2wgQ2FwdHVyZURldmljZU1hbmFnZXI6OmNhcHR1cmVEZXZpY2VGcm9tRGV2aWNl
SUQoY29uc3QgU3RyaW5nJiBjYXB0dXJlRGV2aWNlSUQsIENhcHR1cmVEZXZpY2VJbmZvJiBmb3Vu
ZERldmljZSkKLXsKLSAgICBmb3IgKGF1dG8mIGRldmljZSA6IGNhcHR1cmVEZXZpY2VMaXN0KCkp
IHsKLSAgICAgICAgaWYgKGRldmljZS5tX3BlcnNpc3RlbnREZXZpY2VJRCA9PSBjYXB0dXJlRGV2
aWNlSUQpIHsKLSAgICAgICAgICAgIGZvdW5kRGV2aWNlID0gZGV2aWNlOwotICAgICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0K
LWJvb2wgQ2FwdHVyZURldmljZU1hbmFnZXI6OnZlcmlmeUNvbnN0cmFpbnRzRm9yTWVkaWFUeXBl
KFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUgdHlwZSwgY29uc3QgTWVkaWFDb25zdHJhaW50cyYg
Y29uc3RyYWludHMsIGNvbnN0IENhcHR1cmVTZXNzaW9uSW5mbyogc2Vzc2lvbiwgU3RyaW5nJiBp
bnZhbGlkQ29uc3RyYWludCkKLXsKLSAgICBhdXRvJiBtYW5kYXRvcnlDb25zdHJhaW50cyA9IGNv
bnN0cmFpbnRzLm1hbmRhdG9yeUNvbnN0cmFpbnRzKCk7Ci0gICAgZm9yIChhdXRvJiBuYW1lQ29u
c3RyYWludFBhaXIgOiBtYW5kYXRvcnlDb25zdHJhaW50cykgewotICAgICAgICBpZiAoc2Vzc2lv
blN1cHBvcnRzQ29uc3RyYWludChzZXNzaW9uLCB0eXBlLCAqbmFtZUNvbnN0cmFpbnRQYWlyLnZh
bHVlKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIGludmFsaWRDb25zdHJhaW50
ID0gbmFtZUNvbnN0cmFpbnRQYWlyLmtleTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0K
LQotICAgIHJldHVybiB0cnVlOwotfQotCi1WZWN0b3I8UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3Vy
Y2U+PiBDYXB0dXJlRGV2aWNlTWFuYWdlcjo6YmVzdFNvdXJjZXNGb3JUeXBlQW5kQ29uc3RyYWlu
dHMoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSB0eXBlLCBNZWRpYUNvbnN0cmFpbnRzJiBjb25z
dHJhaW50cykKLXsKLSAgICBWZWN0b3I8UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+PiBiZXN0
U291cmNlc0xpc3Q7Ci0KLSAgICBzdHJ1Y3QgewotICAgICAgICBib29sIG9wZXJhdG9yKCkoUmVm
UHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+IGEsIFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPiBi
KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYS0+Zml0bmVzc1Njb3JlKCkgPCBiLT5m
aXRuZXNzU2NvcmUoKTsKLSAgICAgICAgfQotICAgIH0gc29ydEJhc2VkT25GaXRuZXNzU2NvcmU7
Ci0KLSAgICBmb3IgKGF1dG8mIGNhcHR1cmVEZXZpY2UgOiBjYXB0dXJlRGV2aWNlTGlzdCgpKSB7
Ci0gICAgICAgIGlmICghY2FwdHVyZURldmljZS5tX2VuYWJsZWQgfHwgY2FwdHVyZURldmljZS5t
X3NvdXJjZUlkLmlzRW1wdHkoKSB8fCBjYXB0dXJlRGV2aWNlLm1fc291cmNlVHlwZSA9PSBSZWFs
dGltZU1lZGlhU291cmNlOjpOb25lKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAg
aWYgKFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPiBjYXB0dXJlU291cmNlID0gc291cmNlV2l0
aFVJRChjYXB0dXJlRGV2aWNlLm1fcGVyc2lzdGVudERldmljZUlELCB0eXBlLCAmY29uc3RyYWlu
dHMpKQotICAgICAgICAgICAgYmVzdFNvdXJjZXNMaXN0LmFwcGVuZChjYXB0dXJlU291cmNlLmxl
YWtSZWYoKSk7Ci0gICAgfQotICAgIHN0ZDo6c29ydChiZXN0U291cmNlc0xpc3QuYmVnaW4oKSwg
YmVzdFNvdXJjZXNMaXN0LmVuZCgpLCBzb3J0QmFzZWRPbkZpdG5lc3NTY29yZSk7Ci0gICAgcmV0
dXJuIGJlc3RTb3VyY2VzTGlzdDsKLX0KLQotUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+IENh
cHR1cmVEZXZpY2VNYW5hZ2VyOjpzb3VyY2VXaXRoVUlEKGNvbnN0IFN0cmluZyYgZGV2aWNlVUlE
LCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlIHR5cGUsIE1lZGlhQ29uc3RyYWludHMqIGNvbnN0
cmFpbnRzKQotewotICAgIGZvciAoYXV0byYgY2FwdHVyZURldmljZSA6IGNhcHR1cmVEZXZpY2VM
aXN0KCkpIHsKLSAgICAgICAgaWYgKGNhcHR1cmVEZXZpY2UubV9wZXJzaXN0ZW50RGV2aWNlSUQg
IT0gZGV2aWNlVUlEIHx8IGNhcHR1cmVEZXZpY2UubV9zb3VyY2VUeXBlICE9IHR5cGUpCi0gICAg
ICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBpZiAoIWNhcHR1cmVEZXZpY2UubV9lbmFibGVk
IHx8IHR5cGUgPT0gUmVhbHRpbWVNZWRpYVNvdXJjZTo6Tm9uZSB8fCBjYXB0dXJlRGV2aWNlLm1f
c291cmNlSWQuaXNFbXB0eSgpKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgaWYg
KFJlYWx0aW1lTWVkaWFTb3VyY2UqIG1lZGlhU291cmNlID0gY3JlYXRlTWVkaWFTb3VyY2VGb3JD
YXB0dXJlRGV2aWNlV2l0aENvbnN0cmFpbnRzKGNhcHR1cmVEZXZpY2UsIGNvbnN0cmFpbnRzKSkK
LSAgICAgICAgICAgIHJldHVybiBtZWRpYVNvdXJjZTsKLSAgICB9Ci0gICAgcmV0dXJuIG51bGxw
dHI7Ci19Ci0KLUNhcHR1cmVEZXZpY2VJbmZvKiBDYXB0dXJlRGV2aWNlTWFuYWdlcjo6YmVzdERl
dmljZUZvckZhY2luZ01vZGUoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpWaWRlb0ZhY2lu
Z01vZGUgZmFjaW5nTW9kZSkKLXsKLSAgICBpZiAoZmFjaW5nTW9kZSA9PSBSZWFsdGltZU1lZGlh
U291cmNlU2V0dGluZ3M6OlVua25vd24pCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAg
Zm9yIChhdXRvJiBkZXZpY2UgOiBjYXB0dXJlRGV2aWNlTGlzdCgpKSB7Ci0gICAgICAgIGlmIChk
ZXZpY2UubV9zb3VyY2VUeXBlID09IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvICYmIGRldmlj
ZS5tX3Bvc2l0aW9uID09IGZhY2luZ01vZGUpCi0gICAgICAgICAgICByZXR1cm4gJmRldmljZTsK
LSAgICB9Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgUmVhbHRpbWVN
ZWRpYVNvdXJjZVNldHRpbmdzOjpWaWRlb0ZhY2luZ01vZGUgZmFjaW5nTW9kZUZyb21TdHJpbmco
Y29uc3QgU3RyaW5nJiBmYWNpbmdNb2RlU3RyaW5nKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxBdG9taWNTdHJpbmc+IHVzZXJGYWNpbmdNb2RlU3RyaW5nKCJ1c2VyIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0
b21pY1N0cmluZz4gZW52aXJvbm1lbnRGYWNpbmdNb2RlU3RyaW5nKCJlbnZpcm9ubWVudCIsIEF0
b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxBdG9taWNTdHJpbmc+IGxlZnRGYWNpbmdNb2RlU3RyaW5nKCJsZWZ0IiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0
b21pY1N0cmluZz4gcmlnaHRGYWNpbmdNb2RlU3RyaW5nKCJyaWdodCIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIGlmIChmYWNpbmdNb2RlU3RyaW5nID09IHVzZXJG
YWNpbmdNb2RlU3RyaW5nKQotICAgICAgICByZXR1cm4gUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRp
bmdzOjpVc2VyOwotICAgIGlmIChmYWNpbmdNb2RlU3RyaW5nID09IGVudmlyb25tZW50RmFjaW5n
TW9kZVN0cmluZykKLSAgICAgICAgcmV0dXJuIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6
RW52aXJvbm1lbnQ7Ci0gICAgaWYgKGZhY2luZ01vZGVTdHJpbmcgPT0gbGVmdEZhY2luZ01vZGVT
dHJpbmcpCi0gICAgICAgIHJldHVybiBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkxlZnQ7
Ci0gICAgaWYgKGZhY2luZ01vZGVTdHJpbmcgPT0gcmlnaHRGYWNpbmdNb2RlU3RyaW5nKQotICAg
ICAgICByZXR1cm4gUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpSaWdodDsKLSAgICByZXR1
cm4gUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpVbmtub3duOwotfQotCi1ib29sIENhcHR1
cmVEZXZpY2VNYW5hZ2VyOjpzZXNzaW9uU3VwcG9ydHNDb25zdHJhaW50KGNvbnN0IENhcHR1cmVT
ZXNzaW9uSW5mbyosIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUgdHlwZSwgY29uc3QgTWVkaWFD
b25zdHJhaW50JiBjb25zdHJhaW50KQotewotICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VT
dXBwb3J0ZWRDb25zdHJhaW50cyYgc3VwcG9ydGVkQ29uc3RyYWludHMgPSBSZWFsdGltZU1lZGlh
U291cmNlQ2VudGVyOjpzaW5nbGV0b24oKS5zdXBwb3J0ZWRDb25zdHJhaW50cygpOwotICAgIE1l
ZGlhQ29uc3RyYWludFR5cGUgY29uc3RyYWludFR5cGUgPSBjb25zdHJhaW50LnR5cGUoKTsKLSAg
ICBpZiAoIXN1cHBvcnRlZENvbnN0cmFpbnRzLnN1cHBvcnRzQ29uc3RyYWludChjb25zdHJhaW50
VHlwZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHN3aXRjaCAoY29uc3RyYWludFR5
cGUpIHsKLSAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OldpZHRoOgotICAgICAgICByZXR1
cm4gdHlwZSA9PSBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbzsKLQotICAgIGNhc2UgTWVkaWFD
b25zdHJhaW50VHlwZTo6SGVpZ2h0OgotICAgICAgICByZXR1cm4gdHlwZSA9PSBSZWFsdGltZU1l
ZGlhU291cmNlOjpWaWRlbzsKLQotICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6RnJhbWVS
YXRlOiB7Ci0gICAgICAgIGlmICh0eXBlID09IFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvKQot
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIHJldHVybiBpc1N1cHBvcnRlZEZy
YW1lUmF0ZShjb25zdHJhaW50KTsKLSAgICB9Ci0gICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBl
OjpGYWNpbmdNb2RlOiB7Ci0gICAgICAgIGlmICh0eXBlID09IFJlYWx0aW1lTWVkaWFTb3VyY2U6
OkF1ZGlvKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIC8vIEZJWE1FOiBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwNzkzLiBIYW5kbGUgc2Vx
dWVuY2Ugb2YgZmFjaW5nTW9kZSBjb25zdHJhaW50cy4KLSAgICAgICAgVmVjdG9yPFN0cmluZz4g
ZXhhY3RGYWNpbmdNb2RlOwotICAgICAgICBpZiAoIWNvbnN0cmFpbnQuZ2V0RXhhY3QoZXhhY3RG
YWNpbmdNb2RlKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICByZXR1cm4g
YmVzdERldmljZUZvckZhY2luZ01vZGUoZmFjaW5nTW9kZUZyb21TdHJpbmcoZXhhY3RGYWNpbmdN
b2RlWzBdKSk7Ci0gICAgfQotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICB9Ci19Ci0KLWJvb2wgQ2FwdHVyZURldmljZU1hbmFnZXI6OmlzU3VwcG9ydGVkRnJhbWVSYXRl
KGNvbnN0IE1lZGlhQ29uc3RyYWludCYgY29uc3RyYWludCkgY29uc3QKLXsKLSAgICAvLyBGSVhN
RTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDc5NC4gRHluYW1p
Y2FsbHkgY2hlY2sgbWVkaWEgZGV2aWNlcyBpZiBmcmFtZSByYXRlIGlzIHN1cHBvcnRlZC4KLSAg
ICBib29sIGlzU3VwcG9ydGVkID0gdHJ1ZTsKLQotICAgIGludCBtaW4gPSAwOwotICAgIGlmIChj
b25zdHJhaW50LmdldE1pbihtaW4pKQotICAgICAgICBpc1N1cHBvcnRlZCAmPSBtaW4gPiA2MDsK
LQotICAgIGludCBtYXggPSA2MDsKLSAgICBpZiAoY29uc3RyYWludC5nZXRNYXgobWF4KSkKLSAg
ICAgICAgaXNTdXBwb3J0ZWQgJj0gbWF4IDwgbWluOwotCi0gICAgaW50IGV4YWN0OwotICAgIGlm
IChjb25zdHJhaW50LmdldEV4YWN0KGV4YWN0KSkKLSAgICAgICAgaXNTdXBwb3J0ZWQgJj0gKGV4
YWN0IDwgbWluIHx8IGV4YWN0ID4gbWF4KTsKLQotICAgIHJldHVybiBpc1N1cHBvcnRlZDsKLX0K
LQotI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5o
CShyZXZpc2lvbiAyMDU1NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSw2NCArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBDYXB0
dXJlRGV2aWNlTWFuYWdlcl9oCi0jZGVmaW5lIENhcHR1cmVEZXZpY2VNYW5hZ2VyX2gKLQotI2lm
IEVOQUJMRShNRURJQV9TVFJFQU0pCi0KLSNpbmNsdWRlICJDYXB0dXJlRGV2aWNlSW5mby5oIgot
I2luY2x1ZGUgIk1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVudC5oIgotI2luY2x1
ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2UuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBDYXB0dXJlRGV2aWNlTWFuYWdlciB7
Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCBWZWN0b3I8Q2FwdHVyZURldmljZUluZm8+JiBjYXB0dXJl
RGV2aWNlTGlzdCgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcmVmcmVzaENhcHR1cmVEZXZpY2VM
aXN0KCkgeyB9Ci0gICAgdmlydHVhbCBUcmFja1NvdXJjZUluZm9WZWN0b3IgZ2V0U291cmNlc0lu
Zm8oY29uc3QgU3RyaW5nJik7Ci0gICAgdmlydHVhbCBWZWN0b3I8UmVmUHRyPFJlYWx0aW1lTWVk
aWFTb3VyY2U+PiBiZXN0U291cmNlc0ZvclR5cGVBbmRDb25zdHJhaW50cyhSZWFsdGltZU1lZGlh
U291cmNlOjpUeXBlLCBNZWRpYUNvbnN0cmFpbnRzJik7Ci0gICAgdmlydHVhbCBSZWZQdHI8UmVh
bHRpbWVNZWRpYVNvdXJjZT4gc291cmNlV2l0aFVJRChjb25zdCBTdHJpbmcmLCBSZWFsdGltZU1l
ZGlhU291cmNlOjpUeXBlLCBNZWRpYUNvbnN0cmFpbnRzKik7Ci0KLSAgICB2aXJ0dWFsIGJvb2wg
dmVyaWZ5Q29uc3RyYWludHNGb3JNZWRpYVR5cGUoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSwg
Y29uc3QgTWVkaWFDb25zdHJhaW50cyYsIGNvbnN0IENhcHR1cmVTZXNzaW9uSW5mbyosIFN0cmlu
ZyYpOwotCi1wcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB+Q2FwdHVyZURldmljZU1hbmFnZXIoKTsK
LSAgICB2aXJ0dWFsIFJlYWx0aW1lTWVkaWFTb3VyY2UqIGNyZWF0ZU1lZGlhU291cmNlRm9yQ2Fw
dHVyZURldmljZVdpdGhDb25zdHJhaW50cyhjb25zdCBDYXB0dXJlRGV2aWNlSW5mbyYsIE1lZGlh
Q29uc3RyYWludHMqKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIENhcHR1cmVTZXNzaW9uSW5mbyBkZWZh
dWx0Q2FwdHVyZVNlc3Npb24oKSBjb25zdCB7IHJldHVybiBDYXB0dXJlU2Vzc2lvbkluZm8oKTsg
fQotICAgIHZpcnR1YWwgYm9vbCBzZXNzaW9uU3VwcG9ydHNDb25zdHJhaW50KGNvbnN0IENhcHR1
cmVTZXNzaW9uSW5mbyosIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUsIGNvbnN0IE1lZGlhQ29u
c3RyYWludCYpOwotICAgIHZpcnR1YWwgYm9vbCBpc1N1cHBvcnRlZEZyYW1lUmF0ZShjb25zdCBN
ZWRpYUNvbnN0cmFpbnQmKSBjb25zdDsKLQotICAgIGJvb2wgY2FwdHVyZURldmljZUZyb21EZXZp
Y2VJRChjb25zdCBTdHJpbmcmIGNhcHR1cmVEZXZpY2VJRCwgQ2FwdHVyZURldmljZUluZm8mIHNv
dXJjZSk7Ci0gICAgQ2FwdHVyZURldmljZUluZm8qIGJlc3REZXZpY2VGb3JGYWNpbmdNb2RlKFJl
YWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9GYWNpbmdNb2RlKTsKLX07Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCi0KLSNl
bmRpZiAvKiBDYXB0dXJlRGV2aWNlTWFuYWdlcl9oICovCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlc1JlcXVlc3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzUmVxdWVzdC5j
cHAJKHJldmlzaW9uIDIwNTU3OCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vTWVkaWFEZXZpY2VzUmVxdWVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcg
QEAKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKKyNpbmNsdWRlICJDYXB0dXJlRGV2aWNl
LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAj
aW5jbHVkZSAiRnJhbWUuaCIKQEAgLTgzLDIwICs4NCw2IEBAIHZvaWQgTWVkaWFEZXZpY2VzUmVx
dWVzdDo6c3RhcnQoKQogICAgIG1fcGVybWlzc2lvbkNoZWNrLT5zdGFydCgpOwogfQogCi12b2lk
IE1lZGlhRGV2aWNlc1JlcXVlc3Q6OmRpZENvbXBsZXRlUGVybWlzc2lvbkNoZWNrKGNvbnN0IFN0
cmluZyYgc2FsdCwgYm9vbCBjYW5BY2Nlc3MpCi17Ci0gICAgUmVmUHRyPFVzZXJNZWRpYVBlcm1p
c3Npb25DaGVjaz4gcGVybWlzc2lvbkNoZWNrUHJvdGVjdG9yID0gbV9wZXJtaXNzaW9uQ2hlY2s7
Ci0gICAgbV9wZXJtaXNzaW9uQ2hlY2stPnNldENsaWVudChudWxscHRyKTsKLSAgICBtX3Blcm1p
c3Npb25DaGVjayA9IG51bGxwdHI7Ci0KLSAgICBtX2lkSGFzaFNhbHQgPSBzYWx0OwotICAgIG1f
aGF2ZVBlcnNpc3RlbnRQZXJtaXNzaW9uID0gY2FuQWNjZXNzOwotCi0gICAgY2FsbE9uTWFpblRo
cmVhZChbdGhpcywgcGVybWlzc2lvbkNoZWNrUHJvdGVjdG9yID0gV1RGTW92ZShwZXJtaXNzaW9u
Q2hlY2tQcm90ZWN0b3IpXSB7Ci0gICAgICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNp
bmdsZXRvbigpLmdldE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzKHRoaXMpOwotICAgIH0pOwotfQot
CiBzdGF0aWMgdm9pZCBoYXNoU3RyaW5nKFNIQTEmIHNoYTEsIGNvbnN0IFN0cmluZyYgc3RyaW5n
KQogewogICAgIGlmIChzdHJpbmcuaXNFbXB0eSgpKQpAQCAtMTI5LDggKzExNiwxNCBAQCBTdHJp
bmcgTWVkaWFEZXZpY2VzUmVxdWVzdDo6aGFzaElEKGNvbnN0CiAgICAgcmV0dXJuIFNIQTE6Omhl
eERpZ2VzdChkaWdlc3QpLmRhdGEoKTsKIH0KIAotdm9pZCBNZWRpYURldmljZXNSZXF1ZXN0Ojpk
aWRDb21wbGV0ZVRyYWNrU291cmNlSW5mb1JlcXVlc3QoY29uc3QgVHJhY2tTb3VyY2VJbmZvVmVj
dG9yJiBjYXB0dXJlRGV2aWNlcykKK3ZvaWQgTWVkaWFEZXZpY2VzUmVxdWVzdDo6ZGlkQ29tcGxl
dGVQZXJtaXNzaW9uQ2hlY2soY29uc3QgU3RyaW5nJiBzYWx0LCBib29sIGNhbkFjY2VzcykKIHsK
KyAgICBtX3Blcm1pc3Npb25DaGVjay0+c2V0Q2xpZW50KG51bGxwdHIpOworICAgIG1fcGVybWlz
c2lvbkNoZWNrID0gbnVsbHB0cjsKKworICAgIG1faWRIYXNoU2FsdCA9IHNhbHQ7CisgICAgbV9o
YXZlUGVyc2lzdGVudFBlcm1pc3Npb24gPSBjYW5BY2Nlc3M7CisKICAgICBpZiAoIXNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSkgewogICAgICAgICBtX3Byb3RlY3RvciA9IG51bGxwdHI7CiAgICAg
ICAgIHJldHVybjsKQEAgLTE0NCwxOCArMTM3LDE5IEBAIHZvaWQgTWVkaWFEZXZpY2VzUmVxdWVz
dDo6ZGlkQ29tcGxldGVUcmEKICAgICB9CiAKICAgICBWZWN0b3I8UmVmUHRyPE1lZGlhRGV2aWNl
SW5mbz4+IGRldmljZXM7CisgICAgYXV0byBjYXB0dXJlRGV2aWNlcyA9IFJlYWx0aW1lTWVkaWFT
b3VyY2VDZW50ZXI6OnNpbmdsZXRvbigpLmdldE1lZGlhU3RyZWFtRGV2aWNlcygpOwogICAgIGZv
ciAoYXV0byYgZGV2aWNlSW5mbyA6IGNhcHR1cmVEZXZpY2VzKSB7CiAgICAgICAgIFN0cmluZyBs
YWJlbCA9IGVtcHR5U3RyaW5nKCk7CiAgICAgICAgIGlmIChtX2hhdmVQZXJzaXN0ZW50UGVybWlz
c2lvbiB8fCBkb2N1bWVudC5oYXNIYWRBY3RpdmVNZWRpYVN0cmVhbVRyYWNrKCkpCi0gICAgICAg
ICAgICBsYWJlbCA9IGRldmljZUluZm8tPmxhYmVsKCk7CisgICAgICAgICAgICBsYWJlbCA9IGRl
dmljZUluZm8ubGFiZWwoKTsKIAotICAgICAgICBTdHJpbmcgaWQgPSBoYXNoSUQoZGV2aWNlSW5m
by0+cGVyc2lzdGVudElkKCkpOworICAgICAgICBTdHJpbmcgaWQgPSBoYXNoSUQoZGV2aWNlSW5m
by5wZXJzaXN0ZW50SWQoKSk7CiAgICAgICAgIGlmIChpZC5pc0VtcHR5KCkpCiAgICAgICAgICAg
ICBjb250aW51ZTsKIAotICAgICAgICBTdHJpbmcgZ3JvdXBJZCA9IGhhc2hJRChkZXZpY2VJbmZv
LT5ncm91cElkKCkpOworICAgICAgICBTdHJpbmcgZ3JvdXBJZCA9IGhhc2hJRChkZXZpY2VJbmZv
Lmdyb3VwSWQoKSk7CiAKLSAgICAgICAgYXV0byBkZXZpY2VUeXBlID0gZGV2aWNlSW5mby0+a2lu
ZCgpID09IFRyYWNrU291cmNlSW5mbzo6U291cmNlS2luZDo6QXVkaW8gPyBNZWRpYURldmljZUlu
Zm86OktpbmQ6OkF1ZGlvaW5wdXQgOiBNZWRpYURldmljZUluZm86OktpbmQ6OlZpZGVvaW5wdXQ7
CisgICAgICAgIGF1dG8gZGV2aWNlVHlwZSA9IGRldmljZUluZm8ua2luZCgpID09IENhcHR1cmVE
ZXZpY2U6OlNvdXJjZUtpbmQ6OkF1ZGlvID8gTWVkaWFEZXZpY2VJbmZvOjpLaW5kOjpBdWRpb2lu
cHV0IDogTWVkaWFEZXZpY2VJbmZvOjpLaW5kOjpWaWRlb2lucHV0OwogCiAgICAgICAgIGRldmlj
ZXMuYXBwZW5kKE1lZGlhRGV2aWNlSW5mbzo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSwgbGFiZWwsIGlkLCBncm91cElkLCBkZXZpY2VUeXBlKSk7CiAgICAgfQpAQCAtMTY2LDE3ICsx
NjAsNiBAQCB2b2lkIE1lZGlhRGV2aWNlc1JlcXVlc3Q6OmRpZENvbXBsZXRlVHJhCiAgICAgbV9w
cm90ZWN0b3IgPSBudWxscHRyOwogfQogCi1jb25zdCBTdHJpbmcmIE1lZGlhRGV2aWNlc1JlcXVl
c3Q6OnJlcXVlc3RPcmlnaW4oKSBjb25zdAotewotICAgIGlmIChzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkpIHsKLSAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+
KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7Ci0gICAgICAgIGlmIChkb2N1bWVudCkKLSAgICAg
ICAgICAgIHJldHVybiBkb2N1bWVudC0+dXJsKCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGVtcHR5
U3RyaW5nKCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJM
RShNRURJQV9TVFJFQU0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L01lZGlhRGV2aWNlc1JlcXVlc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlc1JlcXVlc3QuaAkocmV2aXNpb24gMjA1NTc4KQor
KysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXNSZXF1ZXN0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRlICJBY3RpdmVET01P
YmplY3QuaCIKICNpbmNsdWRlICJNZWRpYURldmljZXMuaCIKICNpbmNsdWRlICJNZWRpYVN0cmVh
bUNyZWF0aW9uQ2xpZW50LmgiCi0jaW5jbHVkZSAiTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1
ZXN0Q2xpZW50LmgiCiAjaW5jbHVkZSAiVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrLmgiCiAjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
QEAgLTQ1LDcgKzQ0LDcgQEAgY2xhc3MgU2VjdXJpdHlPcmlnaW47CiAKIHR5cGVkZWYgaW50IEV4
Y2VwdGlvbkNvZGU7CiAKLWNsYXNzIE1lZGlhRGV2aWNlc1JlcXVlc3QgOiBwdWJsaWMgTWVkaWFT
dHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0Q2xpZW50LCBwdWJsaWMgVXNlck1lZGlhUGVybWlzc2lv
bkNoZWNrQ2xpZW50LCBwdWJsaWMgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIgeworY2xhc3Mg
TWVkaWFEZXZpY2VzUmVxdWVzdCA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhRGV2aWNlc1JlcXVl
c3Q+LCBwdWJsaWMgVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrQ2xpZW50LCBwdWJsaWMgQ29udGV4
dERlc3RydWN0aW9uT2JzZXJ2ZXIgewogcHVibGljOgogICAgIHN0YXRpYyBSZWZQdHI8TWVkaWFE
ZXZpY2VzUmVxdWVzdD4gY3JlYXRlKERvY3VtZW50KiwgTWVkaWFEZXZpY2VzOjpFbnVtZXJhdGVE
ZXZpY2VzUHJvbWlzZSYmLCBFeGNlcHRpb25Db2RlJik7CiAKQEAgLTU4LDEwICs1Nyw2IEBAIHB1
YmxpYzoKIHByaXZhdGU6CiAgICAgTWVkaWFEZXZpY2VzUmVxdWVzdChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgTWVkaWFEZXZpY2VzOjpFbnVtZXJhdGVEZXZpY2VzUHJvbWlzZSYmKTsKIAotICAg
IC8vIE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVudAotICAgIGNvbnN0IFN0cmlu
ZyYgcmVxdWVzdE9yaWdpbigpIGNvbnN0IGZpbmFsOwotICAgIHZvaWQgZGlkQ29tcGxldGVUcmFj
a1NvdXJjZUluZm9SZXF1ZXN0KGNvbnN0IFRyYWNrU291cmNlSW5mb1ZlY3RvciYpIGZpbmFsOwot
CiAgICAgLy8gQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIKICAgICB2b2lkIGNvbnRleHREZXN0
cm95ZWQoKSBmaW5hbDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbVRyYWNrU291cmNlc0NhbGxiYWNrLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrU291cmNlc0NhbGxi
YWNrLmgJKHJldmlzaW9uIDIwNTU3OCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNDYWxsYmFjay5oCShub25leGlzdGVudCkKQEAg
LTEsNDYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgR09PR0xFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBHT09H
TEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
LSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpZm5kZWYgTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNDYWxsYmFja19oCi0jZGVmaW5l
IE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzQ2FsbGJhY2tfaAotCi0jaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKLQotI2luY2x1ZGUgIlNvdXJjZUluZm8uaCIKLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIE1lZGlhU3RyZWFtVHJhY2tTb3Vy
Y2VzQ2FsbGJhY2sgOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYVN0cmVhbVRyYWNrU291cmNlc0Nh
bGxiYWNrPiB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+TWVkaWFTdHJlYW1UcmFja1NvdXJjZXND
YWxsYmFjaygpIHsgfQotICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVFdmVudChWZWN0b3I8UmVmUHRy
PFNvdXJjZUluZm8+PikgPSAwOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5k
aWYKLQotI2VuZGlmIC8vIE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzQ2FsbGJhY2tfaApJbmRleDog
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrU291cmNl
c0NhbGxiYWNrLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtVHJhY2tTb3VyY2VzQ2FsbGJhY2suaWRsCShyZXZpc2lvbiAyMDU1
NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJh
Y2tTb3VyY2VzQ2FsbGJhY2suaWRsCShub25leGlzdGVudCkKQEAgLTEsMzIgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgR09PR0xFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBHT09HTEUgSU5DLiBPUgotICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLVsKLSAgICBDb25k
aXRpb25hbD1NRURJQV9TVFJFQU0sCi0gICAgQ2FsbGJhY2s9RnVuY3Rpb25Pbmx5LAotXSBjYWxs
YmFjayBpbnRlcmZhY2UgTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNDYWxsYmFjayB7Ci0gICAgYm9v
bGVhbiBoYW5kbGVFdmVudChzZXF1ZW5jZTxTb3VyY2VJbmZvPiBzb3VyY2VzKTsKLX07Ci0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vU291cmNlSW5mby5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Tb3VyY2VJbmZv
LmNwcAkocmV2aXNpb24gMjA1NTc4KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9Tb3VyY2VJbmZvLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDY0ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
IENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBHT09HTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEdPT0dMRSBJTkMuIE9SCi0gKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2luY2x1ZGUgIlNvdXJjZUluZm8uaCIKLQotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0p
Ci0KLSNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1SZWY8U291cmNlSW5mbz4gU291cmNlSW5mbzo6Y3JlYXRlKFJlZjxUcmFja1NvdXJjZUlu
Zm8+JiYgdHJhY2tTb3VyY2VJbmZvKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNvdXJj
ZUluZm8oV1RGTW92ZSh0cmFja1NvdXJjZUluZm8pKSk7Ci19Ci0KLVNvdXJjZUluZm86OlNvdXJj
ZUluZm8oUmVmPFRyYWNrU291cmNlSW5mbz4mJiB0cmFja1NvdXJjZUluZm8pCi0gICAgOiBtX3Ry
YWNrU291cmNlSW5mbyhXVEZNb3ZlKHRyYWNrU291cmNlSW5mbykpCi17Ci19Ci0KLWNvbnN0IEF0
b21pY1N0cmluZyYgU291cmNlSW5mbzo6a2luZCgpIGNvbnN0Ci17Ci0gICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPEF0b21pY1N0cmluZz4gYXVkaW9LaW5kKCJhdWRpbyIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNT
dHJpbmc+IHZpZGVvS2luZCgidmlkZW8iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKTsKLQotICAgIHN3aXRjaCAobV90cmFja1NvdXJjZUluZm8tPmtpbmQoKSkgewotICAgIGNh
c2UgVHJhY2tTb3VyY2VJbmZvOjpBdWRpbzoKLSAgICAgICAgcmV0dXJuIGF1ZGlvS2luZDsKLSAg
ICBjYXNlIFRyYWNrU291cmNlSW5mbzo6VmlkZW86Ci0gICAgICAgIHJldHVybiB2aWRlb0tpbmQ7
Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIGVtcHR5QXRv
bTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vU291cmNlSW5mby5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vU291cmNlSW5mby5oCShyZXZpc2lvbiAy
MDU1NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1NvdXJjZUluZm8u
aAkobm9uZXhpc3RlbnQpCkBAIC0xLDU5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAx
MyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBHT09HTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEdPT0dMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBTb3VyY2VJbmZvX2gKLSNkZWZpbmUgU291
cmNlSW5mb19oCi0KLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotCi0jaW5jbHVkZSAiTWVkaWFT
dHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0Q2xpZW50LmgiCi0jaW5jbHVkZSAiU2NyaXB0V3JhcHBh
YmxlLmgiCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBTb3VyY2VJbmZvIDogcHVibGlj
IFJlZkNvdW50ZWQ8U291cmNlSW5mbz4sIHB1YmxpYyBTY3JpcHRXcmFwcGFibGUgewotcHVibGlj
OgotICAgIHN0YXRpYyBSZWY8U291cmNlSW5mbz4gY3JlYXRlKFJlZjxUcmFja1NvdXJjZUluZm8+
JiYpOwotCi0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBzb3VyY2VJZCgpIGNvbnN0IHsgcmV0dXJu
IG1fdHJhY2tTb3VyY2VJbmZvLT5pZCgpOyB9Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBsYWJl
bCgpIGNvbnN0IHsgcmV0dXJuIG1fdHJhY2tTb3VyY2VJbmZvLT5sYWJlbCgpOyB9Ci0gICAgY29u
c3QgQXRvbWljU3RyaW5nJiBraW5kKCkgY29uc3Q7Ci0KLXByaXZhdGU6Ci0gICAgU291cmNlSW5m
byhSZWY8VHJhY2tTb3VyY2VJbmZvPiYmKTsKLQotICAgIFJlZjxUcmFja1NvdXJjZUluZm8+IG1f
dHJhY2tTb3VyY2VJbmZvOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYg
Ly8gU291cmNlSW5mb19oCi0KLSNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9Tb3VyY2VJbmZvLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1NvdXJjZUluZm8uaWRsCShyZXZpc2lvbiAyMDU1NzgpCisrKyBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1NvdXJjZUluZm8uaWRsCShub25leGlz
dGVudCkKQEAgLTEsMzQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgR09PR0xFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
Ci0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBHT09HTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLVsKLSAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAotICAgIE5v
SW50ZXJmYWNlT2JqZWN0LAotICAgIENvbmRpdGlvbmFsPU1FRElBX1NUUkVBTSwKLV0gaW50ZXJm
YWNlIFNvdXJjZUluZm8gewotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgc291cmNl
SWQ7Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBraW5kOwotICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBET01TdHJpbmcgbGFiZWw7Ci19OwpJbmRleDogU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjA1NTc4KQor
KysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNzQsMTQgKzE3NCw2IEBACiAJCTA3NEU4MkJCMThBNjlGMEUwMDdFRjU0
QyAvKiBQbGF0Zm9ybVRpbWVSYW5nZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDA3NEU4MkI5MThBNjlGMEUwMDdFRjU0QyAvKiBQbGF0Zm9ybVRpbWVS
YW5nZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkwNzUzODYwMjE0NDg5RTk4MDBCNzg0NTIgLyogQ2FjaGVkVGV4dFRyYWNrLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NTM4NjAwMTQ0ODlFOTgw
MEI3ODQ1MiAvKiBDYWNoZWRUZXh0VHJhY2suY3BwICovOyB9OwogCQkwNzUzODYwMzE0NDg5RTk4
MDBCNzg0NTIgLyogQ2FjaGVkVGV4dFRyYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwNzUzODYwMTE0NDg5RTk4MDBCNzg0NTIgLyogQ2FjaGVkVGV4
dFRyYWNrLmggKi87IH07Ci0JCTA3NjMwNkQwMTdFMTQ3OEQwMDVBN0M0RSAvKiBNZWRpYVN0cmVh
bVRyYWNrU291cmNlc0NhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwNzYzMDZDQzE3RTE0NzhEMDA1QTdDNEUgLyogTWVkaWFTdHJlYW1UcmFj
a1NvdXJjZXNDYWxsYmFjay5oICovOyB9OwotCQkwNzYzMDZENzE3RTE0OUNGMDA1QTdDNEUgLyog
U291cmNlSW5mby5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwNzYzMDZENDE3RTE0OUNGMDA1QTdDNEUgLyogU291cmNlSW5mby5jcHAgKi87IH07Ci0J
CTA3NjMwNkQ4MTdFMTQ5RDAwMDVBN0M0RSAvKiBTb3VyY2VJbmZvLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzYzMDZENTE3RTE0OUNGMDA1QTdDNEUg
LyogU291cmNlSW5mby5oICovOyB9OwotCQkwNzYzMDZEQzE3RTE1RkIwMDA1QTdDNEUgLyogSlNN
ZWRpYVN0cmVhbVRyYWNrU291cmNlc0NhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NjMwNkRBMTdFMTVGQjAwMDVBN0M0RSAvKiBKU01l
ZGlhU3RyZWFtVHJhY2tTb3VyY2VzQ2FsbGJhY2suY3BwICovOyB9OwotCQkwNzYzMDZERDE3RTE1
RkIwMDA1QTdDNEUgLyogSlNNZWRpYVN0cmVhbVRyYWNrU291cmNlc0NhbGxiYWNrLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzYzMDZEQjE3RTE1RkIw
MDA1QTdDNEUgLyogSlNNZWRpYVN0cmVhbVRyYWNrU291cmNlc0NhbGxiYWNrLmggKi87IH07Ci0J
CTA3NjMwNkUwMTdFMTYwODkwMDVBN0M0RSAvKiBKU1NvdXJjZUluZm8uY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc2MzA2REUxN0UxNjA4OTAwNUE3
QzRFIC8qIEpTU291cmNlSW5mby5jcHAgKi87IH07Ci0JCTA3NjMwNkUxMTdFMTYwODkwMDVBN0M0
RSAvKiBKU1NvdXJjZUluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDA3NjMwNkRGMTdFMTYwODkwMDVBN0M0RSAvKiBKU1NvdXJjZUluZm8uaCAqLzsg
fTsKLQkJMDc2MzA2RTMxN0UyMkE0MzAwNUE3QzRFIC8qIE1lZGlhU3RyZWFtVHJhY2tTb3VyY2Vz
UmVxdWVzdENsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMDc2MzA2RTIxN0UyMkE0MzAwNUE3QzRFIC8qIE1lZGlhU3RyZWFtVHJhY2tTb3VyY2Vz
UmVxdWVzdENsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTA3NjM4QTk5MTg4NDQ4NzIwMEUxNUExQiAvKiBNZWRpYVNlc3Npb25NYW5hZ2Vy
SU9TLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzYz
OEE5NzE4ODQ0ODcyMDBFMTVBMUIgLyogTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA3NjM4QTlBMTg4NDQ4
NzIwMEUxNUExQiAvKiBNZWRpYVNlc3Npb25NYW5hZ2VySU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc2MzhBOTgxODg0NDg3MjAwRTE1QTFCIC8q
IE1lZGlhU2Vzc2lvbk1hbmFnZXJJT1MubW0gKi87IH07CiAJCTA3Njk3MDg2MTQ2M0FEODcwMEY1
MDJDRiAvKiBUZXh0VHJhY2tMaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDA3Njk3MDg0MTQ2M0FEODcwMEY1MDJDRiAvKiBUZXh0VHJhY2tMaXN0
LmNwcCAqLzsgfTsKQEAgLTMwNyw2ICsyOTksOSBAQAogCQkwN0I1QTJEQjE0NjQzMjBBMDBBODFF
Q0UgLyogSlNUZXh0VHJhY2tMaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDA3QjVBMkQ5MTQ2NDMyMEEwMEE4MUVDRSAvKiBKU1RleHRUcmFja0xp
c3QuY3BwICovOyB9OwogCQkwN0I1QTJEQzE0NjQzMjBBMDBBODFFQ0UgLyogSlNUZXh0VHJhY2tM
aXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0I1
QTJEQTE0NjQzMjBBMDBBODFFQ0UgLyogSlNUZXh0VHJhY2tMaXN0LmggKi87IH07CiAJCTA3QjVB
MzBEMTQ2ODdENzEwMEE4MUVDRSAvKiBKU1RleHRUcmFja0xpc3RDdXN0b20uY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdCNUEzMEMxNDY4N0Q3MTAw
QTgxRUNFIC8qIEpTVGV4dFRyYWNrTGlzdEN1c3RvbS5jcHAgKi87IH07CisJCTA3QjcxMTZEMUQ4
OTlFNjMwMDlGMEZGQiAvKiBDYXB0dXJlRGV2aWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0I3MTE2QTFEODk5RTYzMDA5RjBGRkIgLyogQ2FwdHVy
ZURldmljZS5oICovOyB9OworCQkwN0I3MTE2RTFEODk5RTYzMDA5RjBGRkIgLyogQ2FwdHVyZURl
dmljZU1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMDdCNzExNkIxRDg5OUU2MzAwOUYwRkZCIC8qIENhcHR1cmVEZXZpY2VNYW5hZ2VyLmNw
cCAqLzsgfTsKKwkJMDdCNzExNkYxRDg5OUU2MzAwOUYwRkZCIC8qIENhcHR1cmVEZXZpY2VNYW5h
Z2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0I3
MTE2QzFEODk5RTYzMDA5RjBGRkIgLyogQ2FwdHVyZURldmljZU1hbmFnZXIuaCAqLzsgfTsKIAkJ
MDdCREQ2RUMxNDY5QjRDMjAwOUM5Rjg1IC8qIEpTVHJhY2tFdmVudEN1c3RvbS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0I1QTMwQTE0Njg3Qjg0
MDBBODFFQ0UgLyogSlNUcmFja0V2ZW50Q3VzdG9tLmNwcCAqLzsgfTsKIAkJMDdDMUMwRTIxQkZC
NjAwMTAwQkQyMjU2IC8qIE1lZGlhVHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50cy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdDMUMwRTAxQkZCNjAwMTAw
QkQyMjU2IC8qIE1lZGlhVHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50cy5oICovOyB9OwogCQkwN0Mx
QzBFNTFCRkI2MEVEMDBCRDIyNTYgLyogUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0
cmFpbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
N0MxQzBFNDFCRkI2MEVEMDBCRDIyNTYgLyogUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENv
bnN0cmFpbnRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKQEAgLTEyNDQsOSArMTIzOSw2IEBACiAJCTJFM0JCRjA4MTE2MkRBMTEwMEI5NDA5QSAvKiBV
VUlELmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTNC
QkYwNjExNjJEQTExMDBCOTQwOUEgLyogVVVJRC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJFM0JDMENBMTE3RDNFMDgwMEI5NDA5QSAvKiBKU0Zp
bGVFcnJvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAyRTNCQzBDODExN0QzRTA4MDBCOTQwOUEgLyogSlNGaWxlRXJyb3IuY3BwICovOyB9OwogCQky
RTNCQzBDQjExN0QzRTA4MDBCOTQwOUEgLyogSlNGaWxlRXJyb3IuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFM0JDMEM5MTE3RDNFMDgwMEI5NDA5QSAv
KiBKU0ZpbGVFcnJvci5oICovOyB9OwotCQkyRTNDOEM2MjFCRkJBOTc1MDAzMDk1NjYgLyogQ2Fw
dHVyZURldmljZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDJFM0M4QzYxMUJGQkE4REMwMDMwOTU2NiAvKiBDYXB0dXJlRGV2aWNlTWFuYWdl
ci5oICovOyB9OwotCQkyRTNDOEM2NDFCRkJCNzVEMDAzMDk1NjYgLyogQ2FwdHVyZURldmljZU1h
bmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MkUzQzhDNjMxQkZCQjc1RDAwMzA5NTY2IC8qIENhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcCAqLzsg
fTsKLQkJMkUzQzhDNjgxQkZCRjhFMTAwMzA5NTY2IC8qIENhcHR1cmVEZXZpY2VJbmZvLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTNDOEM2NjFCRkJG
OEUxMDAzMDk1NjYgLyogQ2FwdHVyZURldmljZUluZm8uaCAqLzsgfTsKIAkJMkU0MzQ2NDUwRjU0
NkE4MjAwQjBGMUJBIC8qIFdvcmtlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyRTQzNDYzMzBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyLmNwcCAq
LzsgfTsKIAkJMkU0MzQ2NDYwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU0MzQ2MzQwRjU0NkE4MjAwQjBG
MUJBIC8qIFdvcmtlci5oICovOyB9OwogCQkyRTQzNDY0ODBGNTQ2QTgyMDBCMEYxQkEgLyogV29y
a2VyR2xvYmFsU2NvcGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMkU0MzQ2MzYwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlckdsb2JhbFNjb3BlLmNw
cCAqLzsgfTsKQEAgLTY5ODcsMTYgKzY5NzksNiBAQAogCQkwNzRFODJCOTE4QTY5RjBFMDA3RUY1
NEMgLyogUGxhdGZvcm1UaW1lUmFuZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFBsYXRmb3JtVGltZVJhbmdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
NzUzODYwMDE0NDg5RTk4MDBCNzg0NTIgLyogQ2FjaGVkVGV4dFRyYWNrLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhY2hlZFRleHRUcmFjay5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3NTM4NjAxMTQ0ODlFOTgwMEI3ODQ1MiAvKiBDYWNoZWRU
ZXh0VHJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVkVGV4dFRy
YWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTA3NjMwNkNDMTdFMTQ3OEQwMDVB
N0M0RSAvKiBNZWRpYVN0cmVhbVRyYWNrU291cmNlc0NhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzQ2FsbGJhY2suaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMDc2MzA2Q0QxN0UxNDc4RDAwNUE3QzRFIC8qIE1l
ZGlhU3RyZWFtVHJhY2tTb3VyY2VzQ2FsbGJhY2suaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzQ2FsbGJhY2suaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQkwNzYzMDZENDE3RTE0OUNGMDA1QTdDNEUgLyogU291cmNlSW5mby5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTb3VyY2VJbmZvLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMDc2MzA2RDUxN0UxNDlDRjAwNUE3QzRFIC8qIFNvdXJj
ZUluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU291cmNlSW5mby5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwNzYzMDZENjE3RTE0OUNGMDA1QTdDNEUgLyog
U291cmNlSW5mby5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU291cmNlSW5mby5pZGw7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTA3NjMwNkRBMTdFMTVGQjAwMDVBN0M0RSAvKiBK
U01lZGlhU3RyZWFtVHJhY2tTb3VyY2VzQ2FsbGJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNNZWRpYVN0cmVhbVRyYWNrU291cmNlc0NhbGxiYWNrLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMDc2MzA2REIxN0UxNUZCMDAwNUE3QzRFIC8q
IEpTTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNDYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU01lZGlhU3RyZWFtVHJhY2tTb3VyY2VzQ2FsbGJhY2suaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMDc2MzA2REUxN0UxNjA4OTAwNUE3QzRFIC8qIEpTU291
cmNlSW5mby5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1NvdXJj
ZUluZm8uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwNzYzMDZERjE3RTE2MDg5
MDA1QTdDNEUgLyogSlNTb3VyY2VJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTU291cmNlSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwNzYzMDZF
MjE3RTIyQTQzMDA1QTdDNEUgLyogTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0Q2xpZW50
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhU3RyZWFtVHJhY2tTb3Vy
Y2VzUmVxdWVzdENsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzYzOEE5
NzE4ODQ0ODcyMDBFMTVBMUIgLyogTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVNlc3Npb25NYW5hZ2VySU9TLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3NjM4QTk4MTg4NDQ4NzIwMEUxNUExQiAvKiBNZWRpYVNl
c3Npb25NYW5hZ2VySU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMDc2OTcwODQxNDYzQUQ4NzAwRjUwMkNGIC8qIFRleHRUcmFja0xpc3QuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGV4dFRyYWNrTGlzdC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03MDc4LDYgKzcwNjAsOSBAQAogCQkwN0I1QTMwNjE0Njg1
MzcxMDBBODFFQ0UgLyogVGV4dFRyYWNrTGlzdC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
VGV4dFRyYWNrTGlzdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3QjVBMzBB
MTQ2ODdCODQwMEE4MUVDRSAvKiBKU1RyYWNrRXZlbnRDdXN0b20uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNUcmFja0V2ZW50Q3VzdG9tLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdCNUEzMEMxNDY4N0Q3MTAwQTgxRUNFIC8qIEpTVGV4dFRy
YWNrTGlzdEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U1RleHRUcmFja0xpc3RDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
N0I3MTE2QTFEODk5RTYzMDA5RjBGRkIgLyogQ2FwdHVyZURldmljZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDYXB0dXJlRGV2aWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTA3QjcxMTZCMUQ4OTlFNjMwMDlGMEZGQiAvKiBDYXB0dXJlRGV2aWNlTWFuYWdl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYXB0dXJlRGV2aWNl
TWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3QjcxMTZDMUQ4OTlF
NjMwMDlGMEZGQiAvKiBDYXB0dXJlRGV2aWNlTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBDYXB0dXJlRGV2aWNlTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwN0MxQzBFMDFCRkI2MDAxMDBCRDIyNTYgLyogTWVkaWFUcmFja1N1cHBvcnRl
ZENvbnN0cmFpbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhVHJh
Y2tTdXBwb3J0ZWRDb25zdHJhaW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
N0MxQzBFMTFCRkI2MDAxMDBCRDIyNTYgLyogTWVkaWFUcmFja1N1cHBvcnRlZENvbnN0cmFpbnRz
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBNZWRpYVRyYWNrU3VwcG9ydGVkQ29uc3RyYWlu
dHMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0MxQzBFNDFCRkI2MEVEMDBC
RDIyNTYgLyogUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRD
b25zdHJhaW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODE0Nyw5ICs4MTMy
LDYgQEAKIAkJMkUzQkJGMDYxMTYyREExMTAwQjk0MDlBIC8qIFVVSUQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gVVVJRC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkyRTNCQzBDODExN0QzRTA4MDBCOTQwOUEgLyogSlNGaWxlRXJyb3IuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNGaWxlRXJyb3IuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkyRTNCQzBDOTExN0QzRTA4MDBCOTQwOUEgLyogSlNGaWxlRXJyb3Iu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNGaWxlRXJyb3IuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMkUzQzhDNjExQkZCQThEQzAwMzA5NTY2IC8qIENhcHR1
cmVEZXZpY2VNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhcHR1cmVEZXZpY2VNYW5hZ2VyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTJFM0M4QzYzMUJGQkI3NUQwMDMwOTU2NiAv
KiBDYXB0dXJlRGV2aWNlTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBDYXB0dXJlRGV2aWNlTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTJFM0M4QzY2MUJGQkY4RTEwMDMwOTU2NiAvKiBDYXB0dXJlRGV2aWNlSW5mby5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYXB0dXJlRGV2aWNlSW5mby5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRTQzNDYzMzBGNTQ2QTgyMDBCMEYxQkEgLyogV29y
a2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdvcmtlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJFNDM0NjM0MEY1NDZBODIwMEIwRjFCQSAv
KiBXb3JrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV29ya2VyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJFNDM0NjM1MEY1NDZBODIwMEIwRjFCQSAvKiBX
b3JrZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdvcmtlci5pZGw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0xNDQxNyw5ICsxNDM5OSw2IEBACiAJCTA3MjIxQjQ2MTdDRUMz
MjcwMDg0OEU1MSAvKiBtZWRpYXN0cmVhbSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJ
Y2hpbGRyZW4gPSAoCi0JCQkJMkUzQzhDNjYxQkZCRjhFMTAwMzA5NTY2IC8qIENhcHR1cmVEZXZp
Y2VJbmZvLmggKi8sCi0JCQkJMkUzQzhDNjMxQkZCQjc1RDAwMzA5NTY2IC8qIENhcHR1cmVEZXZp
Y2VNYW5hZ2VyLmNwcCAqLywKLQkJCQkyRTNDOEM2MTFCRkJBOERDMDAzMDk1NjYgLyogQ2FwdHVy
ZURldmljZU1hbmFnZXIuaCAqLywKIAkJCQkwNzM3OTRFRDE5RUUzNjQyMDBFNUEwNDUgLyogRE9N
VVJMTWVkaWFTdHJlYW0uY3BwICovLAogCQkJCTE1RkNDOUZEMUI0REY4NTYwMEU3MjMyNiAvKiBE
T01VUkxNZWRpYVN0cmVhbS5oICovLAogCQkJCTA3Mzc5NEVFMTlFRTM2NDIwMEU1QTA0NSAvKiBE
T01VUkxNZWRpYVN0cmVhbS5pZGwgKi8sCkBAIC0xNDQ1Nyw4ICsxNDQzNiw2IEBACiAJCQkJMDcy
MjFCNTcxN0NFQzMyNzAwODQ4RTUxIC8qIE1lZGlhU3RyZWFtVHJhY2tFdmVudC5jcHAgKi8sCiAJ
CQkJMDcyMjFCNTgxN0NFQzMyNzAwODQ4RTUxIC8qIE1lZGlhU3RyZWFtVHJhY2tFdmVudC5oICov
LAogCQkJCTA3MjIxQjU5MTdDRUMzMjcwMDg0OEU1MSAvKiBNZWRpYVN0cmVhbVRyYWNrRXZlbnQu
aWRsICovLAotCQkJCTA3NjMwNkNDMTdFMTQ3OEQwMDVBN0M0RSAvKiBNZWRpYVN0cmVhbVRyYWNr
U291cmNlc0NhbGxiYWNrLmggKi8sCi0JCQkJMDc2MzA2Q0QxN0UxNDc4RDAwNUE3QzRFIC8qIE1l
ZGlhU3RyZWFtVHJhY2tTb3VyY2VzQ2FsbGJhY2suaWRsICovLAogCQkJCTA3MDU4NTM5MTdGRTA3
NzAwMDVGMkJDQiAvKiBNZWRpYVRyYWNrQ29uc3RyYWludC5jcHAgKi8sCiAJCQkJMDcwNTg1MUQx
N0ZEQzE0MDAwNUYyQkNCIC8qIE1lZGlhVHJhY2tDb25zdHJhaW50LmggKi8sCiAJCQkJMDcwNTg1
MUUxN0ZEQzE0MDAwNUYyQkNCIC8qIE1lZGlhVHJhY2tDb25zdHJhaW50LmlkbCAqLywKQEAgLTE0
NTM1LDkgKzE0NTEyLDYgQEAKIAkJCQk1RTJDNDM2NjFCQ0VFMzcyMDAwMUUyQkMgLyogUlRDVHJh
Y2tFdmVudC5pZGwgKi8sCiAJCQkJNUVBM0Q2RTExQzg1OURBQTAwMzAwQkJCIC8qIFNEUFByb2Nl
c3Nvci5jcHAgKi8sCiAJCQkJNUVBM0Q2RTIxQzg1OURBQTAwMzAwQkJCIC8qIFNEUFByb2Nlc3Nv
ci5oICovLAotCQkJCTA3NjMwNkQ0MTdFMTQ5Q0YwMDVBN0M0RSAvKiBTb3VyY2VJbmZvLmNwcCAq
LywKLQkJCQkwNzYzMDZENTE3RTE0OUNGMDA1QTdDNEUgLyogU291cmNlSW5mby5oICovLAotCQkJ
CTA3NjMwNkQ2MTdFMTQ5Q0YwMDVBN0M0RSAvKiBTb3VyY2VJbmZvLmlkbCAqLywKIAkJCQkwNzIy
MUI4RDE3Q0VDMzI3MDA4NDhFNTEgLyogVXNlck1lZGlhQ2xpZW50LmggKi8sCiAJCQkJMDcyMjFC
OEUxN0NFQzMyNzAwODQ4RTUxIC8qIFVzZXJNZWRpYUNvbnRyb2xsZXIuY3BwICovLAogCQkJCTA3
MjIxQjhGMTdDRUMzMjcwMDg0OEU1MSAvKiBVc2VyTWVkaWFDb250cm9sbGVyLmggKi8sCkBAIC0x
NDU1NCw2ICsxNDUyOCw5IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQkwNzI5QjE0RDE3Q0ZDQ0Ew
MDA0RjFENjAgLyogbWFjICovLAogCQkJCTA3RDZBNEY2MUJGMjMwN0QwMDE3NDE0NiAvKiBBdWRp
b1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtLmggKi8sCisJCQkJMDdCNzExNkExRDg5OUU2MzAwOUYw
RkZCIC8qIENhcHR1cmVEZXZpY2UuaCAqLywKKwkJCQkwN0I3MTE2QjFEODk5RTYzMDA5RjBGRkIg
LyogQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwICovLAorCQkJCTA3QjcxMTZDMUQ4OTlFNjMwMDlG
MEZGQiAvKiBDYXB0dXJlRGV2aWNlTWFuYWdlci5oICovLAogCQkJCTVFQkI4OTMwMUM3Nzc3RTEw
MEM2NUQ0MSAvKiBJY2VDYW5kaWRhdGUuaCAqLywKIAkJCQkxQkU1QkZDMTFENTE1NzE1MDAxNjY2
RDkgLyogTWVkaWFDb25zdHJhaW50cy5jcHAgKi8sCiAJCQkJMDcyMjFCOTkxN0NGMEFENDAwODQ4
RTUxIC8qIE1lZGlhQ29uc3RyYWludHMuaCAqLywKQEAgLTE0NTY5LDcgKzE0NTQ2LDYgQEAKIAkJ
CQkwNzIyMUI5RDE3Q0YwQUQ0MDA4NDhFNTEgLyogTWVkaWFTdHJlYW1Qcml2YXRlLmggKi8sCiAJ
CQkJMDdGRkRFNjYxODFBRUQ0MjAwNzJENDA5IC8qIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmNw
cCAqLywKIAkJCQkwN0ZGREU2NzE4MUFFRDQyMDA3MkQ0MDkgLyogTWVkaWFTdHJlYW1UcmFja1By
aXZhdGUuaCAqLywKLQkJCQkwNzYzMDZFMjE3RTIyQTQzMDA1QTdDNEUgLyogTWVkaWFTdHJlYW1U
cmFja1NvdXJjZXNSZXF1ZXN0Q2xpZW50LmggKi8sCiAJCQkJNUVCQjg5MzgxQzc3QkRBNDAwQzY1
RDQxIC8qIFBlZXJNZWRpYURlc2NyaXB0aW9uLmggKi8sCiAJCQkJNEE0RjY1NkIxQUE5OTdGMTAw
RTM4Q0REIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2UuY3BwICovLAogCQkJCTRBNEY2NTZDMUFBOTk3
RjEwMEUzOENERCAvKiBSZWFsdGltZU1lZGlhU291cmNlLmggKi8sCkBAIC0xNDY4Nyw4ICsxNDY2
Myw2IEBACiAJCQkJMDcyNzdFNDcxN0QwMThDQzAwMTU1MzREIC8qIEpTTWVkaWFTdHJlYW1UcmFj
ay5oICovLAogCQkJCTA3Mjc3RTQ4MTdEMDE4Q0MwMDE1NTM0RCAvKiBKU01lZGlhU3RyZWFtVHJh
Y2tFdmVudC5jcHAgKi8sCiAJCQkJMDcyNzdFNDkxN0QwMThDQzAwMTU1MzREIC8qIEpTTWVkaWFT
dHJlYW1UcmFja0V2ZW50LmggKi8sCi0JCQkJMDc2MzA2REExN0UxNUZCMDAwNUE3QzRFIC8qIEpT
TWVkaWFTdHJlYW1UcmFja1NvdXJjZXNDYWxsYmFjay5jcHAgKi8sCi0JCQkJMDc2MzA2REIxN0Ux
NUZCMDAwNUE3QzRFIC8qIEpTTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNDYWxsYmFjay5oICovLAog
CQkJCTA3MDU4NTJCMTdGREU2RDkwMDVGMkJDQiAvKiBKU01lZGlhVHJhY2tDb25zdHJhaW50LmNw
cCAqLywKIAkJCQkwNzA1ODUyQzE3RkRFNkQ5MDA1RjJCQ0IgLyogSlNNZWRpYVRyYWNrQ29uc3Ry
YWludC5oICovLAogCQkJCTA3MDU4NTJEMTdGREU2RDkwMDVGMkJDQiAvKiBKU01lZGlhVHJhY2tD
b25zdHJhaW50cy5jcHAgKi8sCkBAIC0xNDczMyw4ICsxNDcwNyw2IEBACiAJCQkJMDc5NjlEQUEx
N0QxNDE1MTAwN0ZGODQyIC8qIEpTUlRDU3RhdHNSZXNwb25zZS5oICovLAogCQkJCTVFMkM0MzY5
MUJDRjA1QzgwMDAxRTJCQyAvKiBKU1JUQ1RyYWNrRXZlbnQuY3BwICovLAogCQkJCTVFMkM0MzZB
MUJDRjA1QzgwMDAxRTJCQyAvKiBKU1JUQ1RyYWNrRXZlbnQuaCAqLywKLQkJCQkwNzYzMDZERTE3
RTE2MDg5MDA1QTdDNEUgLyogSlNTb3VyY2VJbmZvLmNwcCAqLywKLQkJCQkwNzYzMDZERjE3RTE2
MDg5MDA1QTdDNEUgLyogSlNTb3VyY2VJbmZvLmggKi8sCiAJCQkpOwogCQkJbmFtZSA9IE1lZGlh
U3RyZWFtOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTIzOTAwLDggKzIzODcyLDYg
QEAKIAkJCQk0OTQ4NEZDRTEwMkNGMjNDMDAxODdERDMgLyogQ2FudmFzU3R5bGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTA3OUQwODY4MTYyRjIwRTgwMERCODY1OCAvKiBDYXB0aW9uVXNlclByZWZl
cmVuY2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzlEMDg2QjE2MkYyMUY5MDBEQjg2NTggLyog
Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuaCBpbiBIZWFkZXJzICovLAotCQkJCTJFM0M4
QzY4MUJGQkY4RTEwMDMwOTU2NiAvKiBDYXB0dXJlRGV2aWNlSW5mby5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJMkUzQzhDNjIxQkZCQTk3NTAwMzA5NTY2IC8qIENhcHR1cmVEZXZpY2VNYW5hZ2VyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5OUNDMEI0RjE4QkU5ODQ5MDA2Q0VCQ0MgLyogQ2FwdHVyaW5n
SW5wdXRDdXJzb3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEQzczNDE1MTk3Nzg5NkQwMDQ2QkZD
NSAvKiBDQVJpbmdCdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1NTBCNjlFMDk5REYwMjcw
MDkwRDc4MSAvKiBDREFUQVNlY3Rpb24uaCBpbiBIZWFkZXJzICovLApAQCAtMjQxNDEsNiArMjQx
MTEsNyBAQAogCQkJCUE4RUE4MDA3MEExOTUxNkUwMEE4RUY1RiAvKiBDU1NTdHlsZVNoZWV0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlGQzU0RDA1NzE2QTc2NzMxMDA1NzVFNEQgLyogQ1NTU3VwcG9y
dHNSdWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzgwQzk4ODBDRDI5NEVFMDBBMEI3QjMgLyog
Q1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDdCNzExNkQxRDg5
OUU2MzAwOUYwRkZCIC8qIENhcHR1cmVEZXZpY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTk0NkQz
NzNBMUQ2Q0RGQzAwMDc3MDg0RiAvKiBDU1NUb2tlbml6ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTk0NkQzNzNDMUQ2Q0RGQzAwMDc3MDg0RiAvKiBDU1NUb2tlbml6ZXJJbnB1dFN0cmVhbS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOUFCMUYzODAxOEUyNDg5QTAwNTM0NzQzIC8qIENTU1RvTGVuZ3Ro
Q29udmVyc2lvbkRhdGEuaCBpbiBIZWFkZXJzICovLApAQCAtMjUxMDAsNyArMjUwNzEsNiBAQAog
CQkJCTA3Mjc3RTUxMTdEMDE4Q0MwMDE1NTM0RCAvKiBKU01lZGlhU3RyZWFtRXZlbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTA3Mjc3RTUzMTdEMDE4Q0MwMDE1NTM0RCAvKiBKU01lZGlhU3RyZWFt
VHJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTA3Mjc3RTU1MTdEMDE4Q0MwMDE1NTM0RCAvKiBK
U01lZGlhU3RyZWFtVHJhY2tFdmVudC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMDc2MzA2REQxN0Ux
NUZCMDAwNUE3QzRFIC8qIEpTTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNDYWxsYmFjay5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMDcwNTg1MzIxN0ZERTZEOTAwNUYyQkNCIC8qIEpTTWVkaWFUcmFja0Nv
bnN0cmFpbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3MDU4NTM0MTdGREU2RDkwMDVGMkJDQiAv
KiBKU01lZGlhVHJhY2tDb25zdHJhaW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDcwNTg1MzYx
N0ZERTZEOTAwNUYyQkNCIC8qIEpTTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuaCBpbiBIZWFkZXJz
ICovLApAQCAtMjUxODgsNyArMjUxNTgsNiBAQAogCQkJCTlCREE2NEQ4MUI5NzVDRjIwMDlDNDM4
NyAvKiBKU1NoYWRvd1Jvb3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEOURFMTdCMTdBQUM3NUIw
MEVBMzg2RCAvKiBKU1NvdXJjZUJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0Q5REUxN0Qx
N0FBQzc1QjAwRUEzODZEIC8qIEpTU291cmNlQnVmZmVyTGlzdC5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJMDc2MzA2RTExN0UxNjA4OTAwNUE3QzRFIC8qIEpTU291cmNlSW5mby5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQUE3RkVFQUQxNkE0RTc0QjAwNEMwQzMzIC8qIEpTU3BlZWNoU3ludGhlc2lzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBQTJBNUFEMjE2QTQ4NjBBMDA5NzZBMjUgLyogSlNTcGVlY2hT
eW50aGVzaXNFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUE3RkVFQTcxNkE0RTZGMzAwNEMw
QzMzIC8qIEpTU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmggaW4gSGVhZGVycyAqLywKQEAgLTI1
NjE2LDggKzI1NTg1LDYgQEAKIAkJCQkwNzhFMDkxODE3RDE0RDFDMDA0MjBBQTEgLyogTWVkaWFT
dHJlYW1UcmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDc4RTA5MTkxN0QxNEQxQzAwNDIwQUEx
IC8qIE1lZGlhU3RyZWFtVHJhY2tFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDdGRkRFNjkx
ODFBRUQ0MjAwNzJENDA5IC8qIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmggaW4gSGVhZGVycyAq
LywKLQkJCQkwNzYzMDZEMDE3RTE0NzhEMDA1QTdDNEUgLyogTWVkaWFTdHJlYW1UcmFja1NvdXJj
ZXNDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMDc2MzA2RTMxN0UyMkE0MzAwNUE3QzRF
IC8qIE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVudC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQ0Q2NDFFQzAxODE5QjM2MDAwRUU0QzQxIC8qIE1lZGlhVGltZUFWRm91bmRhdGlvbi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQ0Q2MEMwQzcxOTNFODdDNzAwM0M2NTZCIC8qIE1lZGlhVGlt
ZVFUS2l0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzA1ODUyMTE3RkRDMTQwMDA1RjJCQ0IgLyog
TWVkaWFUcmFja0NvbnN0cmFpbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjYxMTksNiArMjYwODYs
NyBAQAogCQkJCTUxNEM3Njc5MENFOTIzQTEwMDdFRjNDRCAvKiBSZXNvdXJjZUhhbmRsZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMjZGQUU0Q0QxODUyRTNBNTAwNEM4QzQ2IC8qIFJlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTI2QzE1Q0Y3
MTg1N0UxNUUwMEYxNUMwMyAvKiBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRl
V2l0aE9wZXJhdGlvblF1ZXVlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwN0I3MTE2RjFEODk5RTYz
MDA5RjBGRkIgLyogQ2FwdHVyZURldmljZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTUx
NEM3NjdBMENFOTIzQTEwMDdFRjNDRCAvKiBSZXNvdXJjZUhhbmRsZUNsaWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNTE0Qzc2N0IwQ0U5MjNBMTAwN0VGM0NEIC8qIFJlc291cmNlSGFuZGxlSW50
ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxRTQxNDM0MTZBNjU5NjMwMEM2MzNDNyAvKiBS
ZXNvdXJjZUhhbmRsZVR5cGVzLmggaW4gSGVhZGVycyAqLywKQEAgLTI2MzM1LDcgKzI2MzAzLDYg
QEAKIAkJCQlDREM4QjVBQjE4MDQ3RkYxMDAxNkU2ODUgLyogU291cmNlQnVmZmVyUHJpdmF0ZUFW
Rk9iakMuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEQzhCNUFEMTgwNEFFNUQwMDE2RTY4NSAvKiBT
b3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NEE4MUY0MjBG
QzdFMDI3MDA5NTUzMDAgLyogU291cmNlR3JhcGhpYy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMDc2
MzA2RDgxN0UxNDlEMDAwNUE3QzRFIC8qIFNvdXJjZUluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTUzNkQ1QTI3MTkzRjQxMEIwMENFNENBQiAvKiBTb3VyY2VTaXplTGlzdC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRDAxQTI3QUUxMEM5QkZEODAwMDI2QTQyIC8qIFNwYWNlU3BsaXRTdHJpbmcuaCBp
biBIZWFkZXJzICovLAogCQkJCTYyNkNERTBGMTE0MDQyNEMwMDFFNUE2OCAvKiBTcGF0aWFsTmF2
aWdhdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzYyNCw3ICsyNzU5MSw2IEBACiAJCQkJNDk0
ODRGQ0QxMDJDRjIzQzAwMTg3REQzIC8qIENhbnZhc1N0eWxlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTA3MkNBODYxMTZDQjREQzMwMDhBRTEzMSAvKiBDYXB0aW9uVXNlclByZWZlcmVuY2VzLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTA3OUQwODZDMTYyRjIxRjkwMERCODY1OCAvKiBDYXB0aW9u
VXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkyRTNDOEM2NDFC
RkJCNzVEMDAzMDk1NjYgLyogQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJOTlDQzBCNEUxOEJFOTg0OTAwNkNFQkNDIC8qIENhcHR1cmluZ0lucHV0Q3Vyc29yLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUNEQzczNDE0MTk3Nzg5NkMwMDQ2QkZDNSAvKiBDQVJpbmdC
dWZmZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNjU1MEI2OUQwOTlERjAyNzAwOTBENzgxIC8q
IENEQVRBU2VjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI3Nzc0LDYgKzI3NzQwLDcgQEAK
IAkJCQlGQkIwQzVCNzE3QkJENjI2MDAzRDM2NzcgLyogQ1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlCQzY0QjRENTBDQjQyOThBMDA1RjJCNjIgLyogQ1NTRm9udEZh
Y2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDA5RUJEQjIxNkI3RUU3NDAwQ0JBM0ZDIC8qIENT
U0ZvbnRGYWNlTG9hZEV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTA3QjcxMTZFMUQ4OTlF
NjMwMDlGMEZGQiAvKiBDYXB0dXJlRGV2aWNlTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlBODBFNkNFNzBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTRm9udEZhY2VSdWxlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUMyNjAxN0EzMUM3MkRDOTkwMEY3NEExNiAvKiBDU1NGb250RmFjZVNldC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzY0QjRENzBDQjQyOThBMDA1RjJCNjIgLyogQ1NTRm9u
dEZhY2VTb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yODc4Nyw3ICsyODc1NCw2IEBACiAJ
CQkJMDcyNzdFNTIxN0QwMThDQzAwMTU1MzREIC8qIEpTTWVkaWFTdHJlYW1UcmFjay5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwN0M1OUI2RTE3Rjc5NEY2MDAwRkJDQkIgLyogSlNNZWRpYVN0cmVh
bVRyYWNrQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3Mjc3RTU0MTdEMDE4Q0MwMDE1
NTM0RCAvKiBKU01lZGlhU3RyZWFtVHJhY2tFdmVudC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkw
NzYzMDZEQzE3RTE1RkIwMDA1QTdDNEUgLyogSlNNZWRpYVN0cmVhbVRyYWNrU291cmNlc0NhbGxi
YWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3MDU4NTMxMTdGREU2RDkwMDVGMkJDQiAvKiBK
U01lZGlhVHJhY2tDb25zdHJhaW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3MDU4NTMzMTdG
REU2RDkwMDVGMkJDQiAvKiBKU01lZGlhVHJhY2tDb25zdHJhaW50cy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwNzA1ODUzNTE3RkRFNkQ5MDA1RjJCQ0IgLyogSlNNZWRpYVRyYWNrQ29uc3RyYWlu
dFNldC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI4ODg2LDcgKzI4ODUyLDYgQEAKIAkJCQk5QkRB
NjRENzFCOTc1Q0U1MDA5QzQzODcgLyogSlNTaGFkb3dSb290LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUNEOURFMTdBMTdBQUM3NUIwMEVBMzg2RCAvKiBKU1NvdXJjZUJ1ZmZlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlDRDlERTE3QzE3QUFDNzVCMDBFQTM4NkQgLyogSlNTb3VyY2VCdWZmZXJM
aXN0LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTA3NjMwNkUwMTdFMTYwODkwMDVBN0M0RSAvKiBK
U1NvdXJjZUluZm8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQUE3RkVFQTQxNkE0RTZGMzAwNEMw
QzMzIC8qIEpTU3BlZWNoU3ludGhlc2lzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUFBMkE1QUQz
MTZBNDg2MEQwMDk3NkEyNSAvKiBKU1NwZWVjaFN5bnRoZXNpc0V2ZW50LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUFBN0ZFRUE2MTZBNEU2RjMwMDRDMEMzMyAvKiBKU1NwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI5ODg2LDcgKzI5ODUxLDYgQEAKIAkJCQlD
RDNBNDk2NDE3QTlEMDFCMDAyNzRFNDIgLyogU291cmNlQnVmZmVyTGlzdC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlDREM4QjVBQTE4MDQ3RkYxMDAxNkU2ODUgLyogU291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakMubW0gaW4gU291cmNlcyAqLywKIAkJCQk4NEE4MUY0MTBGQzdFMDI3MDA5NTUzMDAg
LyogU291cmNlR3JhcGhpYy5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkwNzYzMDZENzE3RTE0OUNG
MDA1QTdDNEUgLyogU291cmNlSW5mby5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MzZENUEyNTE5
M0Y0MEZDMDBDRTRDQUIgLyogU291cmNlU2l6ZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
RDAxQTI3QUQxMEM5QkZEODAwMDI2QTQyIC8qIFNwYWNlU3BsaXRTdHJpbmcuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNjI2Q0RFMEUxMTQwNDI0QzAwMUU1QTY4IC8qIFNwYXRpYWxOYXZpZ2F0aW9u
LmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vQ2FwdHVyZURldmljZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2UuaAkocmV2aXNpb24gMjA1NTc4KQkoZnJvbSBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VJbmZvLmg6MjA1
NTc4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vQ2FwdHVyZURldmlj
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIENhcHR1cmVEZXZpY2VJbmZvX2gKKyNk
ZWZpbmUgQ2FwdHVyZURldmljZUluZm9faAorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKwor
I2luY2x1ZGUgPFJlYWx0aW1lTWVkaWFTb3VyY2UuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgQ2FwdHVyZURldmljZUlu
Zm8geworICAgIFN0cmluZyBtX3BlcnNpc3RlbnREZXZpY2VJRDsKKyAgICBTdHJpbmcgbV9sb2Nh
bGl6ZWROYW1lOworICAgIFN0cmluZyBtX2dyb3VwSUQ7CisKKyAgICBTdHJpbmcgbV9zb3VyY2VJ
ZDsKKworICAgIGJvb2wgbV9lbmFibGVkIHsgZmFsc2UgfTsKKyAgICBSZWFsdGltZU1lZGlhU291
cmNlOjpUeXBlIG1fc291cmNlVHlwZSB7IFJlYWx0aW1lTWVkaWFTb3VyY2U6Ok5vbmUgfTsKKyAg
ICBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OlZpZGVvRmFjaW5nTW9kZSBtX3Bvc2l0aW9u
IHsgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpVbmtub3duIH07Cit9OworCitjbGFzcyBD
YXB0dXJlU2Vzc2lvbkluZm8geworcHVibGljOgorICAgIHZpcnR1YWwgfkNhcHR1cmVTZXNzaW9u
SW5mbygpIHsgfQorICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1ZpZGVvU2l6ZShjb25zdCBTdHJp
bmcmIC8qIHZpZGVvU2l6ZSAqLykgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFs
IFN0cmluZyBiZXN0U2Vzc2lvblByZXNldEZvclZpZGVvRGltZW5zaW9ucyhpbnQgLyogd2lkdGgg
Ki8sIGludCAvKiBoZWlnaHQgKi8pIGNvbnN0IHsgcmV0dXJuIGVtcHR5U3RyaW5nKCk7IH0KK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJF
QU0pCisKKyNlbmRpZiAvKiBDYXB0dXJlRGV2aWNlSW5mb19oICovCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZS5oCShyZXZp
c2lvbiAyMDU1NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9DYXB0
dXJlRGV2aWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDggKzIzLDcgQEAKICAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgKi8KIAotI2lmbmRlZiBDYXB0dXJlRGV2aWNlSW5mb19oCi0jZGVmaW5lIENhcHR1cmVE
ZXZpY2VJbmZvX2gKKyNwcmFnbWEgb25jZQogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIApA
QCAtMzMsMjcgKzMyLDMwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RydWN0IENhcHR1
cmVEZXZpY2VJbmZvIHsKLSAgICBTdHJpbmcgbV9wZXJzaXN0ZW50RGV2aWNlSUQ7Ci0gICAgU3Ry
aW5nIG1fbG9jYWxpemVkTmFtZTsKLSAgICBTdHJpbmcgbV9ncm91cElEOwotCi0gICAgU3RyaW5n
IG1fc291cmNlSWQ7Ci0KLSAgICBib29sIG1fZW5hYmxlZCB7IGZhbHNlIH07Ci0gICAgUmVhbHRp
bWVNZWRpYVNvdXJjZTo6VHlwZSBtX3NvdXJjZVR5cGUgeyBSZWFsdGltZU1lZGlhU291cmNlOjpO
b25lIH07Ci0gICAgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpWaWRlb0ZhY2luZ01vZGUg
bV9wb3NpdGlvbiB7IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VW5rbm93biB9OwotfTsK
LQotY2xhc3MgQ2FwdHVyZVNlc3Npb25JbmZvIHsKK2NsYXNzIENhcHR1cmVEZXZpY2UgewogcHVi
bGljOgotICAgIHZpcnR1YWwgfkNhcHR1cmVTZXNzaW9uSW5mbygpIHsgfQotICAgIHZpcnR1YWwg
Ym9vbCBzdXBwb3J0c1ZpZGVvU2l6ZShjb25zdCBTdHJpbmcmIC8qIHZpZGVvU2l6ZSAqLykgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIFN0cmluZyBiZXN0U2Vzc2lvblByZXNl
dEZvclZpZGVvRGltZW5zaW9ucyhpbnQgLyogd2lkdGggKi8sIGludCAvKiBoZWlnaHQgKi8pIGNv
bnN0IHsgcmV0dXJuIGVtcHR5U3RyaW5nKCk7IH0KKyAgICBlbnVtIFNvdXJjZUtpbmQgeyBBdWRp
bywgVmlkZW8gfTsKKworICAgIENhcHR1cmVEZXZpY2UoY29uc3QgU3RyaW5nJiBwZXJzaXN0ZW50
SWQsIFNvdXJjZUtpbmQga2luZCwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBn
cm91cElkKQorICAgICAgICA6IG1fcGVyc2lzdGVudElkKHBlcnNpc3RlbnRJZCkKKyAgICAgICAg
LCBtX2tpbmQoa2luZCkKKyAgICAgICAgLCBtX2xhYmVsKGxhYmVsKQorICAgICAgICAsIG1fZ3Jv
dXBJZChncm91cElkKQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBTdHJpbmcmIHBlcnNpc3Rl
bnRJZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGVyc2lzdGVudElkOyB9CisgICAgY29uc3QgU3RyaW5n
JiBsYWJlbCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFiZWw7IH0KKyAgICBjb25zdCBTdHJpbmcmIGdy
b3VwSWQoKSBjb25zdCB7IHJldHVybiBtX2dyb3VwSWQ7IH0KKyAgICBTb3VyY2VLaW5kIGtpbmQo
KSBjb25zdCB7IHJldHVybiBtX2tpbmQ7IH0KKworcHJpdmF0ZToKKyAgICBTdHJpbmcgbV9wZXJz
aXN0ZW50SWQ7CisgICAgU291cmNlS2luZCBtX2tpbmQ7CisgICAgU3RyaW5nIG1fbGFiZWw7Cisg
ICAgU3RyaW5nIG1fZ3JvdXBJZDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2Vu
ZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCi0KLSNlbmRpZiAvKiBDYXB0dXJlRGV2aWNlSW5m
b19oICovCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9DYXB0dXJl
RGV2aWNlTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwCShyZXZpc2lvbiAyMDU1NzgpCShm
cm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFn
ZXIuY3BwOjIwNTU3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0Nh
cHR1cmVEZXZpY2VNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIxMCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNv
bmZpZy5oIgorI2ltcG9ydCAiQ2FwdHVyZURldmljZU1hbmFnZXIuaCIKKworI2lmIEVOQUJMRShN
RURJQV9TVFJFQU0pCisKKyNpbXBvcnQgIkxvZ2dpbmcuaCIKKyNpbXBvcnQgIk1lZGlhQ29uc3Ry
YWludHMuaCIKKyNpbXBvcnQgIlJlYWx0aW1lTWVkaWFTb3VyY2UuaCIKKyNpbXBvcnQgIlJlYWx0
aW1lTWVkaWFTb3VyY2VDZW50ZXIuaCIKKyNpbXBvcnQgIlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0
aW5ncy5oIgorI2ltcG9ydCAiVVVJRC5oIgorI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KKyNp
bXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nSGFz
aC5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworQ2FwdHVyZURldmljZU1hbmFnZXI6
On5DYXB0dXJlRGV2aWNlTWFuYWdlcigpCit7Cit9CisKK1ZlY3RvcjxSZWZQdHI8VHJhY2tTb3Vy
Y2VJbmZvPj4gQ2FwdHVyZURldmljZU1hbmFnZXI6OmdldFNvdXJjZXNJbmZvKGNvbnN0IFN0cmlu
ZyYgcmVxdWVzdE9yaWdpbikKK3sKKyAgICBVTlVTRURfUEFSQU0ocmVxdWVzdE9yaWdpbik7Cisg
ICAgVmVjdG9yPFJlZlB0cjxUcmFja1NvdXJjZUluZm8+PiBzb3VyY2VzSW5mbzsKKyAgICBmb3Ig
KGF1dG8gY2FwdHVyZURldmljZSA6IGNhcHR1cmVEZXZpY2VMaXN0KCkpIHsKKyAgICAgICAgaWYg
KCFjYXB0dXJlRGV2aWNlLm1fZW5hYmxlZCB8fCBjYXB0dXJlRGV2aWNlLm1fc291cmNlVHlwZSA9
PSBSZWFsdGltZU1lZGlhU291cmNlOjpOb25lKQorICAgICAgICAgICAgY29udGludWU7CisKKyAg
ICAgICAgVHJhY2tTb3VyY2VJbmZvOjpTb3VyY2VLaW5kIHRyYWNrU291cmNlVHlwZSA9IGNhcHR1
cmVEZXZpY2UubV9zb3VyY2VUeXBlID09IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvID8gVHJh
Y2tTb3VyY2VJbmZvOjpWaWRlbyA6IFRyYWNrU291cmNlSW5mbzo6QXVkaW87CisgICAgICAgIHNv
dXJjZXNJbmZvLmFwcGVuZChUcmFja1NvdXJjZUluZm86OmNyZWF0ZShjYXB0dXJlRGV2aWNlLm1f
cGVyc2lzdGVudERldmljZUlELCBjYXB0dXJlRGV2aWNlLm1fc291cmNlSWQsIHRyYWNrU291cmNl
VHlwZSwgY2FwdHVyZURldmljZS5tX2xvY2FsaXplZE5hbWUsIGNhcHR1cmVEZXZpY2UubV9ncm91
cElEKSk7CisgICAgfQorICAgIExPRyhNZWRpYSwgIkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpnZXRT
b3VyY2VzSW5mbyglcCksIGZvdW5kICV6dSBhY3RpdmUgZGV2aWNlcyIsIHRoaXMsIHNvdXJjZXNJ
bmZvLnNpemUoKSk7CisgICAgcmV0dXJuIHNvdXJjZXNJbmZvOworfQorCitib29sIENhcHR1cmVE
ZXZpY2VNYW5hZ2VyOjpjYXB0dXJlRGV2aWNlRnJvbURldmljZUlEKGNvbnN0IFN0cmluZyYgY2Fw
dHVyZURldmljZUlELCBDYXB0dXJlRGV2aWNlSW5mbyYgZm91bmREZXZpY2UpCit7CisgICAgZm9y
IChhdXRvJiBkZXZpY2UgOiBjYXB0dXJlRGV2aWNlTGlzdCgpKSB7CisgICAgICAgIGlmIChkZXZp
Y2UubV9wZXJzaXN0ZW50RGV2aWNlSUQgPT0gY2FwdHVyZURldmljZUlEKSB7CisgICAgICAgICAg
ICBmb3VuZERldmljZSA9IGRldmljZTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICB9CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIENhcHR1cmVEZXZpY2VN
YW5hZ2VyOjp2ZXJpZnlDb25zdHJhaW50c0Zvck1lZGlhVHlwZShSZWFsdGltZU1lZGlhU291cmNl
OjpUeXBlIHR5cGUsIGNvbnN0IE1lZGlhQ29uc3RyYWludHMmIGNvbnN0cmFpbnRzLCBjb25zdCBD
YXB0dXJlU2Vzc2lvbkluZm8qIHNlc3Npb24sIFN0cmluZyYgaW52YWxpZENvbnN0cmFpbnQpCit7
CisgICAgYXV0byYgbWFuZGF0b3J5Q29uc3RyYWludHMgPSBjb25zdHJhaW50cy5tYW5kYXRvcnlD
b25zdHJhaW50cygpOworICAgIGZvciAoYXV0byYgbmFtZUNvbnN0cmFpbnRQYWlyIDogbWFuZGF0
b3J5Q29uc3RyYWludHMpIHsKKyAgICAgICAgaWYgKHNlc3Npb25TdXBwb3J0c0NvbnN0cmFpbnQo
c2Vzc2lvbiwgdHlwZSwgKm5hbWVDb25zdHJhaW50UGFpci52YWx1ZSkpCisgICAgICAgICAgICBj
b250aW51ZTsKKworICAgICAgICBpbnZhbGlkQ29uc3RyYWludCA9IG5hbWVDb25zdHJhaW50UGFp
ci5rZXk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworVmVjdG9yPFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPj4gQ2FwdHVyZURldmljZU1h
bmFnZXI6OmJlc3RTb3VyY2VzRm9yVHlwZUFuZENvbnN0cmFpbnRzKFJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OlR5cGUgdHlwZSwgTWVkaWFDb25zdHJhaW50cyYgY29uc3RyYWludHMpCit7CisgICAgVmVj
dG9yPFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPj4gYmVzdFNvdXJjZXNMaXN0OworCisgICAg
c3RydWN0IHsKKyAgICAgICAgYm9vbCBvcGVyYXRvcigpKFJlZlB0cjxSZWFsdGltZU1lZGlhU291
cmNlPiBhLCBSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4gYikKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuIGEtPmZpdG5lc3NTY29yZSgpIDwgYi0+Zml0bmVzc1Njb3JlKCk7CisgICAg
ICAgIH0KKyAgICB9IHNvcnRCYXNlZE9uRml0bmVzc1Njb3JlOworCisgICAgZm9yIChhdXRvJiBj
YXB0dXJlRGV2aWNlIDogY2FwdHVyZURldmljZUxpc3QoKSkgeworICAgICAgICBpZiAoIWNhcHR1
cmVEZXZpY2UubV9lbmFibGVkIHx8IGNhcHR1cmVEZXZpY2UubV9zb3VyY2VJZC5pc0VtcHR5KCkg
fHwgY2FwdHVyZURldmljZS5tX3NvdXJjZVR5cGUgPT0gUmVhbHRpbWVNZWRpYVNvdXJjZTo6Tm9u
ZSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlmIChSZWZQdHI8UmVhbHRpbWVN
ZWRpYVNvdXJjZT4gY2FwdHVyZVNvdXJjZSA9IHNvdXJjZVdpdGhVSUQoY2FwdHVyZURldmljZS5t
X3BlcnNpc3RlbnREZXZpY2VJRCwgdHlwZSwgJmNvbnN0cmFpbnRzKSkKKyAgICAgICAgICAgIGJl
c3RTb3VyY2VzTGlzdC5hcHBlbmQoY2FwdHVyZVNvdXJjZS5sZWFrUmVmKCkpOworICAgIH0KKyAg
ICBzdGQ6OnNvcnQoYmVzdFNvdXJjZXNMaXN0LmJlZ2luKCksIGJlc3RTb3VyY2VzTGlzdC5lbmQo
KSwgc29ydEJhc2VkT25GaXRuZXNzU2NvcmUpOworICAgIHJldHVybiBiZXN0U291cmNlc0xpc3Q7
Cit9CisKK1JlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPiBDYXB0dXJlRGV2aWNlTWFuYWdlcjo6
c291cmNlV2l0aFVJRChjb25zdCBTdHJpbmcmIGRldmljZVVJRCwgUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6VHlwZSB0eXBlLCBNZWRpYUNvbnN0cmFpbnRzKiBjb25zdHJhaW50cykKK3sKKyAgICBmb3Ig
KGF1dG8mIGNhcHR1cmVEZXZpY2UgOiBjYXB0dXJlRGV2aWNlTGlzdCgpKSB7CisgICAgICAgIGlm
IChjYXB0dXJlRGV2aWNlLm1fcGVyc2lzdGVudERldmljZUlEICE9IGRldmljZVVJRCB8fCBjYXB0
dXJlRGV2aWNlLm1fc291cmNlVHlwZSAhPSB0eXBlKQorICAgICAgICAgICAgY29udGludWU7CisK
KyAgICAgICAgaWYgKCFjYXB0dXJlRGV2aWNlLm1fZW5hYmxlZCB8fCB0eXBlID09IFJlYWx0aW1l
TWVkaWFTb3VyY2U6Ok5vbmUgfHwgY2FwdHVyZURldmljZS5tX3NvdXJjZUlkLmlzRW1wdHkoKSkK
KyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlmIChSZWFsdGltZU1lZGlhU291cmNl
KiBtZWRpYVNvdXJjZSA9IGNyZWF0ZU1lZGlhU291cmNlRm9yQ2FwdHVyZURldmljZVdpdGhDb25z
dHJhaW50cyhjYXB0dXJlRGV2aWNlLCBjb25zdHJhaW50cykpCisgICAgICAgICAgICByZXR1cm4g
bWVkaWFTb3VyY2U7CisgICAgfQorICAgIHJldHVybiBudWxscHRyOworfQorCitDYXB0dXJlRGV2
aWNlSW5mbyogQ2FwdHVyZURldmljZU1hbmFnZXI6OmJlc3REZXZpY2VGb3JGYWNpbmdNb2RlKFJl
YWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9GYWNpbmdNb2RlIGZhY2luZ01vZGUpCit7
CisgICAgaWYgKGZhY2luZ01vZGUgPT0gUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpVbmtu
b3duKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGZvciAoYXV0byYgZGV2aWNlIDog
Y2FwdHVyZURldmljZUxpc3QoKSkgeworICAgICAgICBpZiAoZGV2aWNlLm1fc291cmNlVHlwZSA9
PSBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbyAmJiBkZXZpY2UubV9wb3NpdGlvbiA9PSBmYWNp
bmdNb2RlKQorICAgICAgICAgICAgcmV0dXJuICZkZXZpY2U7CisgICAgfQorICAgIHJldHVybiBu
dWxscHRyOworfQorCitzdGF0aWMgaW5saW5lIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6
VmlkZW9GYWNpbmdNb2RlIGZhY2luZ01vZGVGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgZmFjaW5n
TW9kZVN0cmluZykKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiB1
c2VyRmFjaW5nTW9kZVN0cmluZygidXNlciIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IGVudmlyb25t
ZW50RmFjaW5nTW9kZVN0cmluZygiZW52aXJvbm1lbnQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBs
ZWZ0RmFjaW5nTW9kZVN0cmluZygibGVmdCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHJpZ2h0RmFj
aW5nTW9kZVN0cmluZygicmlnaHQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KTsKKyAgICBpZiAoZmFjaW5nTW9kZVN0cmluZyA9PSB1c2VyRmFjaW5nTW9kZVN0cmluZykKKyAg
ICAgICAgcmV0dXJuIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VXNlcjsKKyAgICBpZiAo
ZmFjaW5nTW9kZVN0cmluZyA9PSBlbnZpcm9ubWVudEZhY2luZ01vZGVTdHJpbmcpCisgICAgICAg
IHJldHVybiBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkVudmlyb25tZW50OworICAgIGlm
IChmYWNpbmdNb2RlU3RyaW5nID09IGxlZnRGYWNpbmdNb2RlU3RyaW5nKQorICAgICAgICByZXR1
cm4gUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpMZWZ0OworICAgIGlmIChmYWNpbmdNb2Rl
U3RyaW5nID09IHJpZ2h0RmFjaW5nTW9kZVN0cmluZykKKyAgICAgICAgcmV0dXJuIFJlYWx0aW1l
TWVkaWFTb3VyY2VTZXR0aW5nczo6UmlnaHQ7CisgICAgcmV0dXJuIFJlYWx0aW1lTWVkaWFTb3Vy
Y2VTZXR0aW5nczo6VW5rbm93bjsKK30KKworYm9vbCBDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2Vz
c2lvblN1cHBvcnRzQ29uc3RyYWludChjb25zdCBDYXB0dXJlU2Vzc2lvbkluZm8qLCBSZWFsdGlt
ZU1lZGlhU291cmNlOjpUeXBlIHR5cGUsIGNvbnN0IE1lZGlhQ29uc3RyYWludCYgY29uc3RyYWlu
dCkKK3sKKyAgICBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMm
IHN1cHBvcnRlZENvbnN0cmFpbnRzID0gUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2luZ2xl
dG9uKCkuc3VwcG9ydGVkQ29uc3RyYWludHMoKTsKKyAgICBNZWRpYUNvbnN0cmFpbnRUeXBlIGNv
bnN0cmFpbnRUeXBlID0gY29uc3RyYWludC50eXBlKCk7CisgICAgaWYgKCFzdXBwb3J0ZWRDb25z
dHJhaW50cy5zdXBwb3J0c0NvbnN0cmFpbnQoY29uc3RyYWludFR5cGUpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBzd2l0Y2ggKGNvbnN0cmFpbnRUeXBlKSB7CisgICAgY2FzZSBNZWRp
YUNvbnN0cmFpbnRUeXBlOjpXaWR0aDoKKyAgICAgICAgcmV0dXJuIHR5cGUgPT0gUmVhbHRpbWVN
ZWRpYVNvdXJjZTo6VmlkZW87CisKKyAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OkhlaWdo
dDoKKyAgICAgICAgcmV0dXJuIHR5cGUgPT0gUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW87CisK
KyAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OkZyYW1lUmF0ZTogeworICAgICAgICBpZiAo
dHlwZSA9PSBSZWFsdGltZU1lZGlhU291cmNlOjpBdWRpbykKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgICAgICByZXR1cm4gaXNTdXBwb3J0ZWRGcmFtZVJhdGUoY29uc3RyYWludCk7
CisgICAgfQorICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6RmFjaW5nTW9kZTogeworICAg
ICAgICBpZiAodHlwZSA9PSBSZWFsdGltZU1lZGlhU291cmNlOjpBdWRpbykKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE2MDc5My4gSGFuZGxlIHNlcXVlbmNlIG9mIGZhY2luZ01vZGUg
Y29uc3RyYWludHMuCisgICAgICAgIFZlY3RvcjxTdHJpbmc+IGV4YWN0RmFjaW5nTW9kZTsKKyAg
ICAgICAgaWYgKCFjb25zdHJhaW50LmdldEV4YWN0KGV4YWN0RmFjaW5nTW9kZSkpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgcmV0dXJuIGJlc3REZXZpY2VGb3JGYWNpbmdN
b2RlKGZhY2luZ01vZGVGcm9tU3RyaW5nKGV4YWN0RmFjaW5nTW9kZVswXSkpOworICAgIH0KKyAg
ICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitib29sIENhcHR1
cmVEZXZpY2VNYW5hZ2VyOjppc1N1cHBvcnRlZEZyYW1lUmF0ZShjb25zdCBNZWRpYUNvbnN0cmFp
bnQmIGNvbnN0cmFpbnQpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA3OTQuIER5bmFtaWNhbGx5IGNoZWNrIG1lZGlhIGRl
dmljZXMgaWYgZnJhbWUgcmF0ZSBpcyBzdXBwb3J0ZWQuCisgICAgYm9vbCBpc1N1cHBvcnRlZCA9
IHRydWU7CisKKyAgICBpbnQgbWluID0gMDsKKyAgICBpZiAoY29uc3RyYWludC5nZXRNaW4obWlu
KSkKKyAgICAgICAgaXNTdXBwb3J0ZWQgJj0gbWluID4gNjA7CisKKyAgICBpbnQgbWF4ID0gNjA7
CisgICAgaWYgKGNvbnN0cmFpbnQuZ2V0TWF4KG1heCkpCisgICAgICAgIGlzU3VwcG9ydGVkICY9
IG1heCA8IG1pbjsKKworICAgIGludCBleGFjdDsKKyAgICBpZiAoY29uc3RyYWludC5nZXRFeGFj
dChleGFjdCkpCisgICAgICAgIGlzU3VwcG9ydGVkICY9IChleGFjdCA8IG1pbiB8fCBleGFjdCA+
IG1heCk7CisKKyAgICByZXR1cm4gaXNTdXBwb3J0ZWQ7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUo
TUVESUFfU1RSRUFNKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
Q2FwdHVyZURldmljZU1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcAkocmV2aXNpb24gMjA1
NTc4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vQ2FwdHVyZURldmlj
ZU1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCwxNiArNDQsMTUgQEAgQ2FwdHVyZURl
dmljZU1hbmFnZXI6On5DYXB0dXJlRGV2aWNlTWFuYQogewogfQogCi1WZWN0b3I8UmVmUHRyPFRy
YWNrU291cmNlSW5mbz4+IENhcHR1cmVEZXZpY2VNYW5hZ2VyOjpnZXRTb3VyY2VzSW5mbyhjb25z
dCBTdHJpbmcmIHJlcXVlc3RPcmlnaW4pCitWZWN0b3I8Q2FwdHVyZURldmljZT4gQ2FwdHVyZURl
dmljZU1hbmFnZXI6OmdldFNvdXJjZXNJbmZvKCkKIHsKLSAgICBVTlVTRURfUEFSQU0ocmVxdWVz
dE9yaWdpbik7Ci0gICAgVmVjdG9yPFJlZlB0cjxUcmFja1NvdXJjZUluZm8+PiBzb3VyY2VzSW5m
bzsKKyAgICBWZWN0b3I8Q2FwdHVyZURldmljZT4gc291cmNlc0luZm87CiAgICAgZm9yIChhdXRv
IGNhcHR1cmVEZXZpY2UgOiBjYXB0dXJlRGV2aWNlTGlzdCgpKSB7CiAgICAgICAgIGlmICghY2Fw
dHVyZURldmljZS5tX2VuYWJsZWQgfHwgY2FwdHVyZURldmljZS5tX3NvdXJjZVR5cGUgPT0gUmVh
bHRpbWVNZWRpYVNvdXJjZTo6Tm9uZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAg
IFRyYWNrU291cmNlSW5mbzo6U291cmNlS2luZCB0cmFja1NvdXJjZVR5cGUgPSBjYXB0dXJlRGV2
aWNlLm1fc291cmNlVHlwZSA9PSBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbyA/IFRyYWNrU291
cmNlSW5mbzo6VmlkZW8gOiBUcmFja1NvdXJjZUluZm86OkF1ZGlvOwotICAgICAgICBzb3VyY2Vz
SW5mby5hcHBlbmQoVHJhY2tTb3VyY2VJbmZvOjpjcmVhdGUoY2FwdHVyZURldmljZS5tX3BlcnNp
c3RlbnREZXZpY2VJRCwgY2FwdHVyZURldmljZS5tX3NvdXJjZUlkLCB0cmFja1NvdXJjZVR5cGUs
IGNhcHR1cmVEZXZpY2UubV9sb2NhbGl6ZWROYW1lLCBjYXB0dXJlRGV2aWNlLm1fZ3JvdXBJRCkp
OworICAgICAgICBDYXB0dXJlRGV2aWNlOjpTb3VyY2VLaW5kIGtpbmQgPSBjYXB0dXJlRGV2aWNl
Lm1fc291cmNlVHlwZSA9PSBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbyA/IENhcHR1cmVEZXZp
Y2U6OlZpZGVvIDogQ2FwdHVyZURldmljZTo6QXVkaW87CisgICAgICAgIHNvdXJjZXNJbmZvLmFw
cGVuZChDYXB0dXJlRGV2aWNlKGNhcHR1cmVEZXZpY2UubV9wZXJzaXN0ZW50RGV2aWNlSUQsIGtp
bmQsIGNhcHR1cmVEZXZpY2UubV9sb2NhbGl6ZWROYW1lLCBjYXB0dXJlRGV2aWNlLm1fZ3JvdXBJ
RCkpOwogICAgIH0KICAgICBMT0coTWVkaWEsICJDYXB0dXJlRGV2aWNlTWFuYWdlcjo6Z2V0U291
cmNlc0luZm8oJXApLCBmb3VuZCAlenUgYWN0aXZlIGRldmljZXMiLCB0aGlzLCBzb3VyY2VzSW5m
by5zaXplKCkpOwogICAgIHJldHVybiBzb3VyY2VzSW5mbzsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFn
ZXIuaAkocmV2aXNpb24gMjA1NTc4KQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmg6MjA1NTc4KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBDYXB0dXJlRGV2aWNlTWFuYWdlcl9oCisjZGVmaW5lIENhcHR1cmVE
ZXZpY2VNYW5hZ2VyX2gKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJD
YXB0dXJlRGV2aWNlSW5mby5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVx
dWVzdENsaWVudC5oIgorI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2UuaCIKKyNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBD
YXB0dXJlRGV2aWNlTWFuYWdlciB7CitwdWJsaWM6CisgICAgdmlydHVhbCBWZWN0b3I8Q2FwdHVy
ZURldmljZUluZm8+JiBjYXB0dXJlRGV2aWNlTGlzdCgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
cmVmcmVzaENhcHR1cmVEZXZpY2VMaXN0KCkgeyB9CisgICAgdmlydHVhbCBUcmFja1NvdXJjZUlu
Zm9WZWN0b3IgZ2V0U291cmNlc0luZm8oY29uc3QgU3RyaW5nJik7CisgICAgdmlydHVhbCBWZWN0
b3I8UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+PiBiZXN0U291cmNlc0ZvclR5cGVBbmRDb25z
dHJhaW50cyhSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlLCBNZWRpYUNvbnN0cmFpbnRzJik7Cisg
ICAgdmlydHVhbCBSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4gc291cmNlV2l0aFVJRChjb25z
dCBTdHJpbmcmLCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlLCBNZWRpYUNvbnN0cmFpbnRzKik7
CisKKyAgICB2aXJ0dWFsIGJvb2wgdmVyaWZ5Q29uc3RyYWludHNGb3JNZWRpYVR5cGUoUmVhbHRp
bWVNZWRpYVNvdXJjZTo6VHlwZSwgY29uc3QgTWVkaWFDb25zdHJhaW50cyYsIGNvbnN0IENhcHR1
cmVTZXNzaW9uSW5mbyosIFN0cmluZyYpOworCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB+Q2Fw
dHVyZURldmljZU1hbmFnZXIoKTsKKyAgICB2aXJ0dWFsIFJlYWx0aW1lTWVkaWFTb3VyY2UqIGNy
ZWF0ZU1lZGlhU291cmNlRm9yQ2FwdHVyZURldmljZVdpdGhDb25zdHJhaW50cyhjb25zdCBDYXB0
dXJlRGV2aWNlSW5mbyYsIE1lZGlhQ29uc3RyYWludHMqKSA9IDA7CisKKyAgICB2aXJ0dWFsIENh
cHR1cmVTZXNzaW9uSW5mbyBkZWZhdWx0Q2FwdHVyZVNlc3Npb24oKSBjb25zdCB7IHJldHVybiBD
YXB0dXJlU2Vzc2lvbkluZm8oKTsgfQorICAgIHZpcnR1YWwgYm9vbCBzZXNzaW9uU3VwcG9ydHND
b25zdHJhaW50KGNvbnN0IENhcHR1cmVTZXNzaW9uSW5mbyosIFJlYWx0aW1lTWVkaWFTb3VyY2U6
OlR5cGUsIGNvbnN0IE1lZGlhQ29uc3RyYWludCYpOworICAgIHZpcnR1YWwgYm9vbCBpc1N1cHBv
cnRlZEZyYW1lUmF0ZShjb25zdCBNZWRpYUNvbnN0cmFpbnQmKSBjb25zdDsKKworICAgIGJvb2wg
Y2FwdHVyZURldmljZUZyb21EZXZpY2VJRChjb25zdCBTdHJpbmcmIGNhcHR1cmVEZXZpY2VJRCwg
Q2FwdHVyZURldmljZUluZm8mIHNvdXJjZSk7CisgICAgQ2FwdHVyZURldmljZUluZm8qIGJlc3RE
ZXZpY2VGb3JGYWNpbmdNb2RlKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9GYWNp
bmdNb2RlKTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJM
RShNRURJQV9TVFJFQU0pCisKKyNlbmRpZiAvKiBDYXB0dXJlRGV2aWNlTWFuYWdlcl9oICovCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFu
YWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmgJKHJldmlzaW9uIDIwNTU3OCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI4LDE4ICsyOCwzNyBAQAogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAot
I2luY2x1ZGUgIkNhcHR1cmVEZXZpY2VJbmZvLmgiCi0jaW5jbHVkZSAiTWVkaWFTdHJlYW1UcmFj
a1NvdXJjZXNSZXF1ZXN0Q2xpZW50LmgiCisjaW5jbHVkZSAiQ2FwdHVyZURldmljZS5oIgogI2lu
Y2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2UuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitzdHJ1Y3QgQ2FwdHVyZURldmljZUluZm8g
eworcHVibGljOgorICAgIFN0cmluZyBtX3BlcnNpc3RlbnREZXZpY2VJRDsKKyAgICBTdHJpbmcg
bV9sb2NhbGl6ZWROYW1lOworICAgIFN0cmluZyBtX2dyb3VwSUQ7CisKKyAgICBTdHJpbmcgbV9z
b3VyY2VJZDsKKworICAgIGJvb2wgbV9lbmFibGVkIHsgZmFsc2UgfTsKKyAgICBSZWFsdGltZU1l
ZGlhU291cmNlOjpUeXBlIG1fc291cmNlVHlwZSB7IFJlYWx0aW1lTWVkaWFTb3VyY2U6Ok5vbmUg
fTsKKyAgICBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OlZpZGVvRmFjaW5nTW9kZSBtX3Bv
c2l0aW9uIHsgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpVbmtub3duIH07Cit9OworCitj
bGFzcyBDYXB0dXJlU2Vzc2lvbkluZm8geworcHVibGljOgorICAgIHZpcnR1YWwgfkNhcHR1cmVT
ZXNzaW9uSW5mbygpIHsgfQorICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1ZpZGVvU2l6ZShjb25z
dCBTdHJpbmcmIC8qIHZpZGVvU2l6ZSAqLykgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2
aXJ0dWFsIFN0cmluZyBiZXN0U2Vzc2lvblByZXNldEZvclZpZGVvRGltZW5zaW9ucyhpbnQgLyog
d2lkdGggKi8sIGludCAvKiBoZWlnaHQgKi8pIGNvbnN0IHsgcmV0dXJuIGVtcHR5U3RyaW5nKCk7
IH0KK307CisKIGNsYXNzIENhcHR1cmVEZXZpY2VNYW5hZ2VyIHsKIHB1YmxpYzoKICAgICB2aXJ0
dWFsIFZlY3RvcjxDYXB0dXJlRGV2aWNlSW5mbz4mIGNhcHR1cmVEZXZpY2VMaXN0KCkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCByZWZyZXNoQ2FwdHVyZURldmljZUxpc3QoKSB7IH0KLSAgICB2aXJ0
dWFsIFRyYWNrU291cmNlSW5mb1ZlY3RvciBnZXRTb3VyY2VzSW5mbyhjb25zdCBTdHJpbmcmKTsK
KyAgICB2aXJ0dWFsIFZlY3RvcjxDYXB0dXJlRGV2aWNlPiBnZXRTb3VyY2VzSW5mbygpOwogICAg
IHZpcnR1YWwgVmVjdG9yPFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPj4gYmVzdFNvdXJjZXNG
b3JUeXBlQW5kQ29uc3RyYWludHMoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSwgTWVkaWFDb25z
dHJhaW50cyYpOwogICAgIHZpcnR1YWwgUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+IHNvdXJj
ZVdpdGhVSUQoY29uc3QgU3RyaW5nJiwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSwgTWVkaWFD
b25zdHJhaW50cyopOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrU291cmNl
c1JlcXVlc3RDbGllbnQuaAkocmV2aXNpb24gMjA1NTc4KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0Q2xpZW50LmgJ
KG5vbmV4aXN0ZW50KQpAQCAtMSw5OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEz
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAotICovCi0KLSNpZm5kZWYgTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1
ZXN0Q2xpZW50X2gKLSNkZWZpbmUgTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0Q2xpZW50
X2gKLQotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0
ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWYuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgot
I2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLWNsYXNzIFRyYWNrU291cmNlSW5mbyA6IHB1YmxpYyBSZWZDb3VudGVkPFRyYWNrU291cmNl
SW5mbz4gewotcHVibGljOgotICAgIGVudW0gU291cmNlS2luZCB7IEF1ZGlvLCBWaWRlbyB9Owot
Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8VHJhY2tTb3VyY2VJbmZvPiBjcmVhdGUoY29uc3QgQXRv
bWljU3RyaW5nJiBwZXJzaXN0ZW50SWQsIGNvbnN0IEF0b21pY1N0cmluZyYgaWQsIFNvdXJjZUtp
bmQga2luZCwgY29uc3QgQXRvbWljU3RyaW5nJiBsYWJlbCkKLSAgICB7Ci0gICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgVHJhY2tTb3VyY2VJbmZvKHBlcnNpc3RlbnRJZCwgaWQsIGtpbmQsIGxh
YmVsKSk7Ci0gICAgfQotCi0gICAgc3RhdGljIFJlZjxUcmFja1NvdXJjZUluZm8+IGNyZWF0ZShj
b25zdCBBdG9taWNTdHJpbmcmIHBlcnNpc3RlbnRJZCwgY29uc3QgQXRvbWljU3RyaW5nJiBpZCwg
U291cmNlS2luZCBraW5kLCBjb25zdCBBdG9taWNTdHJpbmcmIGxhYmVsLCBjb25zdCBBdG9taWNT
dHJpbmcmIGdyb3VwSWQpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUcmFj
a1NvdXJjZUluZm8ocGVyc2lzdGVudElkLCBpZCwga2luZCwgbGFiZWwsIGdyb3VwSWQpKTsKLSAg
ICB9Ci0KLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIGlkKCkgY29uc3QgeyByZXR1cm4gbV9pZDsg
fQotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgcGVyc2lzdGVudElkKCkgY29uc3QgeyByZXR1cm4g
bV9wZXJzaXN0ZW50SWQ7IH0KLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIGxhYmVsKCkgY29uc3Qg
eyByZXR1cm4gbV9sYWJlbDsgfQotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgZ3JvdXBJZCgpIGNv
bnN0IHsgcmV0dXJuIG1fZ3JvdXBJZDsgfQotICAgIFNvdXJjZUtpbmQga2luZCgpIGNvbnN0IHsg
cmV0dXJuIG1fa2luZDsgfQotCi1wcml2YXRlOgotICAgIFRyYWNrU291cmNlSW5mbyhjb25zdCBB
dG9taWNTdHJpbmcmIHBlcnNpc3RlbnRJZCwgY29uc3QgQXRvbWljU3RyaW5nJiBpZCwgU291cmNl
S2luZCBraW5kLCBjb25zdCBBdG9taWNTdHJpbmcmIGxhYmVsKQotICAgICAgICA6IG1fcGVyc2lz
dGVudElkKHBlcnNpc3RlbnRJZCkKLSAgICAgICAgLCBtX2lkKGlkKQotICAgICAgICAsIG1fa2lu
ZChraW5kKQotICAgICAgICAsIG1fbGFiZWwobGFiZWwpCi0gICAgewotICAgIH0KLQotICAgIFRy
YWNrU291cmNlSW5mbyhjb25zdCBBdG9taWNTdHJpbmcmIHBlcnNpc3RlbnRJZCwgY29uc3QgQXRv
bWljU3RyaW5nJiBpZCwgU291cmNlS2luZCBraW5kLCBjb25zdCBBdG9taWNTdHJpbmcmIGxhYmVs
LCBjb25zdCBBdG9taWNTdHJpbmcmIGdyb3VwSWQpCi0gICAgICAgIDogbV9wZXJzaXN0ZW50SWQo
cGVyc2lzdGVudElkKQotICAgICAgICAsIG1faWQoaWQpCi0gICAgICAgICwgbV9raW5kKGtpbmQp
Ci0gICAgICAgICwgbV9sYWJlbChsYWJlbCkKLSAgICAgICAgLCBtX2dyb3VwSWQoZ3JvdXBJZCkK
LSAgICB7Ci0gICAgfQotCi0gICAgQXRvbWljU3RyaW5nIG1fcGVyc2lzdGVudElkOwotICAgIEF0
b21pY1N0cmluZyBtX2lkOwotICAgIFNvdXJjZUtpbmQgbV9raW5kOwotICAgIEF0b21pY1N0cmlu
ZyBtX2xhYmVsOwotICAgIEF0b21pY1N0cmluZyBtX2dyb3VwSWQ7Ci19OwotCi10eXBlZGVmIFZl
Y3RvcjxSZWZQdHI8VHJhY2tTb3VyY2VJbmZvPj4gVHJhY2tTb3VyY2VJbmZvVmVjdG9yOwotCi1j
bGFzcyBNZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQgOiBwdWJsaWMgUmVmQ291
bnRlZDxNZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQ+IHsKLXB1YmxpYzoKLSAg
ICB2aXJ0dWFsIH5NZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQoKSB7IH0KLQot
ICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiByZXF1ZXN0T3JpZ2luKCkgY29uc3QgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBkaWRDb21wbGV0ZVRyYWNrU291cmNlSW5mb1JlcXVlc3QoY29uc3QgVHJh
Y2tTb3VyY2VJbmZvVmVjdG9yJikgPSAwOwotfTsKLQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Ci0KLSNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQotCi0jZW5kaWYgLy8gTWVkaWFTdHJl
YW1UcmFja1NvdXJjZXNSZXF1ZXN0Q2xpZW50X2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNl
Q2VudGVyLmgJKHJldmlzaW9uIDIwNTU3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
NDEsOSArNDEsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENhcHR1cmVEZXZp
Y2U7CiBjbGFzcyBNZWRpYUNvbnN0cmFpbnRzOwogY2xhc3MgTWVkaWFTdHJlYW1DcmVhdGlvbkNs
aWVudDsKLWNsYXNzIE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVudDsKIGNsYXNz
IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczsKIGNsYXNzIFJlYWx0aW1lTWVkaWFTb3VyY2VT
dXBwb3J0ZWRDb25zdHJhaW50czsKIGNsYXNzIFRyYWNrU291cmNlSW5mbzsKQEAgLTYxLDEwICs2
MSw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVNZWRpYVN0cmVhbShQYXNz
UmVmUHRyPE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQ+LCBNZWRpYUNvbnN0cmFpbnRzJiBhdWRp
b0NvbnN0cmFpbnRzLCBNZWRpYUNvbnN0cmFpbnRzJiB2aWRlb0NvbnN0cmFpbnRzKSA9IDA7CiAK
LSAgICB2aXJ0dWFsIGJvb2wgZ2V0TWVkaWFTdHJlYW1UcmFja1NvdXJjZXMoUGFzc1JlZlB0cjxN
ZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQ+KSA9IDA7CisgICAgdmlydHVhbCBW
ZWN0b3I8Q2FwdHVyZURldmljZT4gZ2V0TWVkaWFTdHJlYW1EZXZpY2VzKCkgPSAwOwogICAgIAot
ICAgIHZpcnR1YWwgUmVmUHRyPFRyYWNrU291cmNlSW5mbz4gc291cmNlV2l0aFVJRChjb25zdCBT
dHJpbmcmLCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlLCBNZWRpYUNvbnN0cmFpbnRzKikgPSAw
OwotCiAgICAgdmlydHVhbCBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3Ry
YWludHMmIHN1cHBvcnRlZENvbnN0cmFpbnRzKCkgeyByZXR1cm4gbV9zdXBwb3J0ZWRDb25zdHJh
aW50czsgfQogCiBwcm90ZWN0ZWQ6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2Vy
LmgJKHJldmlzaW9uIDIwNTU3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcg
KzI5LDYgQEAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoQVZGT1VOREFUSU9OKQog
CiAjaW5jbHVkZSAiQ2FwdHVyZURldmljZU1hbmFnZXIuaCIKLSNpbmNsdWRlICJNZWRpYVN0cmVh
bVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQuaCIKICNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291
cmNlLmgiCiAjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRz
LmgiCiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CkBAIC02Myw3ICs2Miw3IEBAIHB1
YmxpYzoKICAgICBSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4gc291cmNlV2l0aFVJRChjb25z
dCBTdHJpbmcmLCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlLCBNZWRpYUNvbnN0cmFpbnRzKikg
b3ZlcnJpZGU7CiAgICAgVmVjdG9yPFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPj4gYmVzdFNv
dXJjZXNGb3JUeXBlQW5kQ29uc3RyYWludHMoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSwgTWVk
aWFDb25zdHJhaW50cyYpIG92ZXJyaWRlOwogCi0gICAgVHJhY2tTb3VyY2VJbmZvVmVjdG9yIGdl
dFNvdXJjZXNJbmZvKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOworICAgIFZlY3RvcjxDYXB0dXJl
RGV2aWNlPiBnZXRTb3VyY2VzSW5mbygpIG92ZXJyaWRlOwogICAgIGJvb2wgdmVyaWZ5Q29uc3Ry
YWludHNGb3JNZWRpYVR5cGUoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSwgY29uc3QgTWVkaWFD
b25zdHJhaW50cyYsIGNvbnN0IENhcHR1cmVTZXNzaW9uSW5mbyosIFN0cmluZyYpIG92ZXJyaWRl
OwogCiAgICAgdm9pZCBkZXZpY2VDb25uZWN0ZWQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVE
ZXZpY2VNYW5hZ2VyLm1tCShyZXZpc2lvbiAyMDU1NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5tbQkod29ya2luZyBj
b3B5KQpAQCAtMjQwLDEyICsyNDAsMTIgQEAgUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+IEFW
Q2FwdHVyZURldgogICAgIHJldHVybiBDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c291cmNlV2l0aFVJ
RChkZXZpY2VVSUQsIHR5cGUsIGNvbnN0cmFpbnRzKTsKIH0KIAotVHJhY2tTb3VyY2VJbmZvVmVj
dG9yIEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OmdldFNvdXJjZXNJbmZvKGNvbnN0IFN0cmluZyYg
cmVxdWVzdE9yaWdpbikKK1ZlY3RvcjxDYXB0dXJlRGV2aWNlPiBBVkNhcHR1cmVEZXZpY2VNYW5h
Z2VyOjpnZXRTb3VyY2VzSW5mbygpCiB7CiAgICAgaWYgKCFpc0F2YWlsYWJsZSgpKQotICAgICAg
ICByZXR1cm4gVHJhY2tTb3VyY2VJbmZvVmVjdG9yKCk7CisgICAgICAgIHJldHVybiBWZWN0b3I8
Q2FwdHVyZURldmljZT4oKTsKIAotICAgIHJldHVybiBDYXB0dXJlRGV2aWNlTWFuYWdlcjo6Z2V0
U291cmNlc0luZm8ocmVxdWVzdE9yaWdpbik7CisgICAgcmV0dXJuIENhcHR1cmVEZXZpY2VNYW5h
Z2VyOjpnZXRTb3VyY2VzSW5mbygpOwogfQogCiBib29sIEFWQ2FwdHVyZURldmljZU1hbmFnZXI6
OnZlcmlmeUNvbnN0cmFpbnRzRm9yTWVkaWFUeXBlKFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUg
dHlwZSwgY29uc3QgTWVkaWFDb25zdHJhaW50cyYgY29uc3RyYWludHMsIGNvbnN0IENhcHR1cmVT
ZXNzaW9uSW5mbyogc2Vzc2lvbiwgU3RyaW5nJiBpbnZhbGlkQ29uc3RyYWludCkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU1lZGlhU291cmNl
Q2VudGVyTWFjLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5jcHAJKHJldmlzaW9uIDIw
NTU3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGlt
ZU1lZGlhU291cmNlQ2VudGVyTWFjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNiBA
QAogI2luY2x1ZGUgIkFWQ2FwdHVyZURldmljZU1hbmFnZXIuaCIKICNpbmNsdWRlICJNZWRpYVN0
cmVhbUNyZWF0aW9uQ2xpZW50LmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1Qcml2YXRlLmgiCi0j
aW5jbHVkZSAiTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0Q2xpZW50LmgiCiAjaW5jbHVk
ZSA8d3RmL01haW5UaHJlYWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTYwLDI0ICsx
NTksOSBAQCB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWM6OmNyZWF0CiAgICAgY2xp
ZW50LT5kaWRDcmVhdGVTdHJlYW0oTWVkaWFTdHJlYW1Qcml2YXRlOjpjcmVhdGUoYXVkaW9Tb3Vy
Y2VzLCB2aWRlb1NvdXJjZXMpKTsKIH0KIAotYm9vbCBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
TWFjOjpnZXRNZWRpYVN0cmVhbVRyYWNrU291cmNlcyhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJh
Y2tTb3VyY2VzUmVxdWVzdENsaWVudD4gcHJwQ2xpZW50KQorVmVjdG9yPENhcHR1cmVEZXZpY2U+
IFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWM6OmdldE1lZGlhU3RyZWFtRGV2aWNlcygpCiB7
Ci0gICAgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVudD4gcmVxdWVz
dENsaWVudCA9IHBycENsaWVudDsKLSAgICBUcmFja1NvdXJjZUluZm9WZWN0b3Igc291cmNlcyA9
IEFWQ2FwdHVyZURldmljZU1hbmFnZXI6OnNpbmdsZXRvbigpLmdldFNvdXJjZXNJbmZvKHJlcXVl
c3RDbGllbnQtPnJlcXVlc3RPcmlnaW4oKSk7Ci0KLSAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlz
LCByZXF1ZXN0Q2xpZW50ID0gV1RGTW92ZShyZXF1ZXN0Q2xpZW50KSwgc291cmNlcyA9IFdURk1v
dmUoc291cmNlcyldIHsKLSAgICAgICAgcmVxdWVzdENsaWVudC0+ZGlkQ29tcGxldGVUcmFja1Nv
dXJjZUluZm9SZXF1ZXN0KHNvdXJjZXMpOwotICAgIH0pOwotCi0gICAgcmV0dXJuIHRydWU7Ci19
Ci0KLVJlZlB0cjxUcmFja1NvdXJjZUluZm8+IFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWM6
OnNvdXJjZVdpdGhVSUQoY29uc3QgU3RyaW5nJiBVSUQsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5
cGUgdHlwZSwgTWVkaWFDb25zdHJhaW50cyogY29uc3RyYWludHMpCi17Ci0gICAgUmVmUHRyPFJl
YWx0aW1lTWVkaWFTb3VyY2U+IG1lZGlhU291cmNlID0gQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6
c2luZ2xldG9uKCkuc291cmNlV2l0aFVJRChVSUQsIHR5cGUsIGNvbnN0cmFpbnRzKTsKLSAgICBp
ZiAoIW1lZGlhU291cmNlKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gVHJh
Y2tTb3VyY2VJbmZvOjpjcmVhdGUobWVkaWFTb3VyY2UtPnBlcnNpc3RlbnRJRCgpLCBtZWRpYVNv
dXJjZS0+aWQoKSwgbWVkaWFTb3VyY2UtPnR5cGUoKSA9PSBSZWFsdGltZU1lZGlhU291cmNlOjpU
eXBlOjpWaWRlbyA/IFRyYWNrU291cmNlSW5mbzo6U291cmNlS2luZDo6VmlkZW8gOiBUcmFja1Nv
dXJjZUluZm86OlNvdXJjZUtpbmQ6OkF1ZGlvLCBtZWRpYVNvdXJjZS0+bmFtZSgpKTsKKyAgICBy
ZXR1cm4gQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCkuZ2V0U291cmNlc0luZm8o
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRp
bWVNZWRpYVNvdXJjZUNlbnRlck1hYy5oCShyZXZpc2lvbiAyMDU1NzgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1h
Yy5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw4ICs1MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB2
YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50cyhNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50KiwgTWVk
aWFDb25zdHJhaW50cyYgYXVkaW9Db25zdHJhaW50cywgTWVkaWFDb25zdHJhaW50cyYgdmlkZW9D
b25zdHJhaW50cykgZmluYWw7CiAgICAgdm9pZCBjcmVhdGVNZWRpYVN0cmVhbShQYXNzUmVmUHRy
PE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQ+LCBNZWRpYUNvbnN0cmFpbnRzJiBhdWRpb0NvbnN0
cmFpbnRzLCBNZWRpYUNvbnN0cmFpbnRzJiB2aWRlb0NvbnN0cmFpbnRzKSBmaW5hbDsKICAgICB2
b2lkIGNyZWF0ZU1lZGlhU3RyZWFtKE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQqLCBjb25zdCBT
dHJpbmcmIGF1ZGlvRGV2aWNlSUQsIGNvbnN0IFN0cmluZyYgdmlkZW9EZXZpY2VJRCkgZmluYWw7
Ci0gICAgYm9vbCBnZXRNZWRpYVN0cmVhbVRyYWNrU291cmNlcyhQYXNzUmVmUHRyPE1lZGlhU3Ry
ZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVudD4pIGZpbmFsOwotICAgIFJlZlB0cjxUcmFja1Nv
dXJjZUluZm8+IHNvdXJjZVdpdGhVSUQoY29uc3QgU3RyaW5nJiwgUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6VHlwZSwgTWVkaWFDb25zdHJhaW50cyopIGZpbmFsOworICAgIFZlY3RvcjxDYXB0dXJlRGV2
aWNlPiBnZXRNZWRpYVN0cmVhbURldmljZXMoKSBmaW5hbDsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53
ZWJydGMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck93ci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9SZWFsdGltZU1lZGlh
U291cmNlQ2VudGVyT3dyLmNwcAkocmV2aXNpb24gMjA1NTc4KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
T3dyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsOSArMzYsOSBAQAogI2lmIEVOQUJMRShNRURJ
QV9TVFJFQU0pICYmIFVTRShPUEVOV0VCUlRDKQogI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXJPd3IuaCIKIAorI2luY2x1ZGUgIkNhcHR1cmVEZXZpY2UuaCIKICNpbmNsdWRlICJN
ZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50LmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1Qcml2YXRl
LmgiCi0jaW5jbHVkZSAiTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0Q2xpZW50LmgiCiAj
aW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJPcGVuV2ViUlRDVXRpbGl0aWVz
LmgiCiAjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZS5oIgpAQCAtMTU0LDEwICsxNTQsMTAg
QEAgdm9pZCBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyT3dyOjpjcmVhdAogICAgIGNsaWVudC0+
ZGlkQ3JlYXRlU3RyZWFtKE1lZGlhU3RyZWFtUHJpdmF0ZTo6Y3JlYXRlKGF1ZGlvU291cmNlcywg
dmlkZW9Tb3VyY2VzKSk7CiB9CiAKLWJvb2wgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck93cjo6
Z2V0TWVkaWFTdHJlYW1UcmFja1NvdXJjZXMoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrU291
cmNlc1JlcXVlc3RDbGllbnQ+KQorVmVjdG9yPENhcHR1cmVEZXZpY2U+IFJlYWx0aW1lTWVkaWFT
b3VyY2VDZW50ZXJPd3I6OmdldE1lZGlhU3RyZWFtRGV2aWNlcygpCiB7CiAgICAgbm90SW1wbGVt
ZW50ZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIFZlY3RvcjxDYXB0dXJlRGV2
aWNlPigpOwogfQogCiB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3I6Om1lZGlhU291
cmNlc0F2YWlsYWJsZShHTGlzdCogc291cmNlcykKQEAgLTIxMSwxNSArMjExLDYgQEAgUGFzc1Jl
ZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPiBSZWFsdGltZQogICAgIHJldHVybiBudWxscHRyOwog
fQogCi1SZWZQdHI8VHJhY2tTb3VyY2VJbmZvPiBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyT3dy
Ojpzb3VyY2VXaXRoVUlEKGNvbnN0IFN0cmluZyYgVUlELCBSZWFsdGltZU1lZGlhU291cmNlOjpU
eXBlLCBNZWRpYUNvbnN0cmFpbnRzKikKLXsKLSAgICBmb3IgKGF1dG8mIHNvdXJjZSA6IG1fc291
cmNlTWFwLnZhbHVlcygpKSB7Ci0gICAgICAgIGlmIChzb3VyY2UtPmlkKCkgPT0gVUlEKQotICAg
ICAgICAgICAgcmV0dXJuIFRyYWNrU291cmNlSW5mbzo6Y3JlYXRlKHNvdXJjZS0+cGVyc2lzdGVu
dElEKCksIHNvdXJjZS0+aWQoKSwgc291cmNlLT50eXBlKCkgPT0gUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6VHlwZTo6VmlkZW8gPyBUcmFja1NvdXJjZUluZm86OlNvdXJjZUtpbmQ6OlZpZGVvIDogVHJh
Y2tTb3VyY2VJbmZvOjpTb3VyY2VLaW5kOjpBdWRpbyAsIHNvdXJjZS0+bmFtZSgpKTsKLSAgICB9
Ci0KLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2Vu
ZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShPUEVOV0VCUlRDKQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9SZWFsdGltZU1lZGlh
U291cmNlQ2VudGVyT3dyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyT3dyLmgJKHJl
dmlzaW9uIDIwNTU3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL29w
ZW53ZWJydGMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck93ci5oCSh3b3JraW5nIGNvcHkpCkBA
IC00Myw2ICs0Myw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ2FwdHVyZURl
dmljZTsKIGNsYXNzIE1lZGlhU3RyZWFtUHJpdmF0ZTsKIGNsYXNzIFJlYWx0aW1lTWVkaWFTb3Vy
Y2U7CiBjbGFzcyBNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVudDsKQEAgLTU4LDEwICs1OSw5
IEBAIHB1YmxpYzoKICAgICB2b2lkIGNyZWF0ZU1lZGlhU3RyZWFtKFBhc3NSZWZQdHI8TWVkaWFT
dHJlYW1DcmVhdGlvbkNsaWVudD4sIE1lZGlhQ29uc3RyYWludHMmIGF1ZGlvQ29uc3RyYWludHMs
IE1lZGlhQ29uc3RyYWludHMmIHZpZGVvQ29uc3RyYWludHMpIGZpbmFsOwogICAgIHZvaWQgY3Jl
YXRlTWVkaWFTdHJlYW0oTWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudCosIGNvbnN0IFN0cmluZyYg
YXVkaW9EZXZpY2VJRCwgY29uc3QgU3RyaW5nJiB2aWRlb0RldmljZUlEKSBmaW5hbDsKIAotICAg
IGJvb2wgZ2V0TWVkaWFTdHJlYW1UcmFja1NvdXJjZXMoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRy
YWNrU291cmNlc1JlcXVlc3RDbGllbnQ+KSBmaW5hbDsKKyAgICBWZWN0b3I8Q2FwdHVyZURldmlj
ZT4gZ2V0TWVkaWFTdHJlYW1EZXZpY2VzKCkgZmluYWw7CiAKICAgICB2b2lkIG1lZGlhU291cmNl
c0F2YWlsYWJsZShHTGlzdCogc291cmNlcyk7Ci0gICAgUmVmUHRyPFRyYWNrU291cmNlSW5mbz4g
c291cmNlV2l0aFVJRChjb25zdCBTdHJpbmcmLCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlLCBN
ZWRpYUNvbnN0cmFpbnRzKikgZmluYWw7CiAKIHByaXZhdGU6CiAgICAgUGFzc1JlZlB0cjxSZWFs
dGltZU1lZGlhU291cmNlPiBmaXJzdFNvdXJjZShSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3Vy
Y2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1Jl
YWx0aW1lTWVkaWFTb3VyY2UuY3BwCShyZXZpc2lvbiAyMDU1NzgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzIsOSArMzIsOSBAQAogI2luY2x1ZGUgIk1vY2tSZWFsdGltZU1lZGlhU291cmNlLmgi
CiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2luY2x1ZGUgIkNhcHR1cmVEZXZpY2UuaCIK
ICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWVkaWFDb25zdHJhaW50cy5oIgotI2lu
Y2x1ZGUgIk1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVudC5oIgogI2luY2x1ZGUg
Ik5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdz
LmgiCiAjaW5jbHVkZSA8bWF0aC5oPgpAQCAtNjgsMTkgKzY4LDE5IEBAIGNvbnN0IEF0b21pY1N0
cmluZyYgTW9ja1JlYWx0aW1lTWVkaWFTb3UKICAgICByZXR1cm4gbmFtZTsKIH0KIAotUmVmUHRy
PFRyYWNrU291cmNlSW5mbz4gTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OnRyYWNrU291cmNlV2l0
aFVJRChjb25zdCBTdHJpbmcmIGlkLCBNZWRpYUNvbnN0cmFpbnRzKikKK0NhcHR1cmVEZXZpY2Ug
TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OmF1ZGlvRGV2aWNlSW5mbygpCiB7Ci0gICAgLy8gRklY
TUU6IHZhbGlkYXRlIGNvbnN0cmFpbnRzLgotCi0gICAgaWYgKG1vY2tBdWRpb1NvdXJjZVBlcnNp
c3RlbnRJRCgpID09IGlkKQotICAgICAgICByZXR1cm4gVHJhY2tTb3VyY2VJbmZvOjpjcmVhdGUo
bW9ja0F1ZGlvU291cmNlUGVyc2lzdGVudElEKCksIGlkLCBUcmFja1NvdXJjZUluZm86OkF1ZGlv
LCAiTW9jayBhdWRpbyBkZXZpY2UiKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q2FwdHVy
ZURldmljZT4gZGV2aWNlSW5mbyhtb2NrQXVkaW9Tb3VyY2VQZXJzaXN0ZW50SUQoKSwgQ2FwdHVy
ZURldmljZTo6QXVkaW8sIG1vY2tBdWRpb1NvdXJjZU5hbWUoKSwgIiIpOworICAgIHJldHVybiBk
ZXZpY2VJbmZvOworfQogCi0gICAgaWYgKG1vY2tWaWRlb1NvdXJjZVBlcnNpc3RlbnRJRCgpID09
IGlkKQotICAgICAgICByZXR1cm4gVHJhY2tTb3VyY2VJbmZvOjpjcmVhdGUobW9ja1ZpZGVvU291
cmNlUGVyc2lzdGVudElEKCksIGlkLCBUcmFja1NvdXJjZUluZm86OlZpZGVvLCAiTW9jayB2aWRl
byBkZXZpY2UiKTsKLSAgICAKLSAgICByZXR1cm4gbnVsbHB0cjsKK0NhcHR1cmVEZXZpY2UgTW9j
a1JlYWx0aW1lTWVkaWFTb3VyY2U6OnZpZGVvRGV2aWNlSW5mbygpCit7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPENhcHR1cmVEZXZpY2U+IGRldmljZUluZm8obW9ja1ZpZGVvU291cmNlUGVy
c2lzdGVudElEKCksIENhcHR1cmVEZXZpY2U6OlZpZGVvLCBtb2NrVmlkZW9Tb3VyY2VOYW1lKCks
ICIiKTsKKyAgICByZXR1cm4gZGV2aWNlSW5mbzsKIH0KIAorCiBNb2NrUmVhbHRpbWVNZWRpYVNv
dXJjZTo6TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UoY29uc3QgU3RyaW5nJiBpZCwgUmVhbHRpbWVN
ZWRpYVNvdXJjZTo6VHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgOiBSZWFsdGlt
ZU1lZGlhU291cmNlKGlkLCB0eXBlLCBuYW1lKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuaAkocmV2aXNp
b24gMjA1NTc4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVN
ZWRpYVNvdXJjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotY2xhc3MgVHJhY2tTb3VyY2VJbmZvOworY2xhc3MgQ2FwdHVyZURldmlj
ZTsKIAogY2xhc3MgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UgOiBwdWJsaWMgUmVhbHRpbWVNZWRp
YVNvdXJjZSB7CiBwdWJsaWM6CkBAIC00OSw3ICs0OSw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
Y29uc3QgQXRvbWljU3RyaW5nJiBtb2NrVmlkZW9Tb3VyY2VQZXJzaXN0ZW50SUQoKTsKICAgICBz
dGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBtb2NrVmlkZW9Tb3VyY2VOYW1lKCk7CiAKLSAgICBz
dGF0aWMgUmVmUHRyPFRyYWNrU291cmNlSW5mbz4gdHJhY2tTb3VyY2VXaXRoVUlEKGNvbnN0IFN0
cmluZyYsIE1lZGlhQ29uc3RyYWludHMqKTsKKyAgICBzdGF0aWMgQ2FwdHVyZURldmljZSBhdWRp
b0RldmljZUluZm8oKTsKKyAgICBzdGF0aWMgQ2FwdHVyZURldmljZSB2aWRlb0RldmljZUluZm8o
KTsKIAogcHJvdGVjdGVkOgogICAgIE1vY2tSZWFsdGltZU1lZGlhU291cmNlKGNvbnN0IFN0cmlu
ZyYgaWQsIFR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNl
Q2VudGVyLmNwcAkocmV2aXNpb24gMjA1NTc4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMwLDEyICszMCwxMiBAQAogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAorI2luY2x1ZGUg
IkNhcHR1cmVEZXZpY2UuaCIKICNpbmNsdWRlICJNZWRpYUNvbnN0cmFpbnRzTW9jay5oIgogI2lu
Y2x1ZGUgIk1lZGlhU3RyZWFtLmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVu
dC5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtUHJpdmF0ZS5oIgogI2luY2x1ZGUgIk1lZGlhU3Ry
ZWFtVHJhY2suaCIKLSNpbmNsdWRlICJNZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGll
bnQuaCIKICNpbmNsdWRlICJNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5oIgogI2luY2x1ZGUgIk1v
Y2tSZWFsdGltZU1lZGlhU291cmNlLmgiCiAjaW5jbHVkZSAiTW9ja1JlYWx0aW1lVmlkZW9Tb3Vy
Y2UuaCIKQEAgLTE1MSwyNCArMTUxLDE0IEBAIHZvaWQgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VD
ZW50ZXI6OmNyZWEKICAgICBjbGllbnQtPmRpZENyZWF0ZVN0cmVhbShNZWRpYVN0cmVhbVByaXZh
dGU6OmNyZWF0ZShhdWRpb1NvdXJjZXMsIHZpZGVvU291cmNlcykpOwogfQogCi1ib29sIE1vY2tS
ZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpnZXRNZWRpYVN0cmVhbVRyYWNrU291cmNlcyhQYXNz
UmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVudD4gcHJwQ2xpZW50KQor
VmVjdG9yPENhcHR1cmVEZXZpY2U+IE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpnZXRN
ZWRpYVN0cmVhbURldmljZXMoKQogewotICAgIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrU291cmNl
c1JlcXVlc3RDbGllbnQ+IHJlcXVlc3RDbGllbnQgPSBwcnBDbGllbnQ7Ci0gICAgVHJhY2tTb3Vy
Y2VJbmZvVmVjdG9yIHNvdXJjZXM7CisgICAgVmVjdG9yPENhcHR1cmVEZXZpY2U+IHNvdXJjZXM7
CiAKLSAgICBzb3VyY2VzLmFwcGVuZChNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6dHJhY2tTb3Vy
Y2VXaXRoVUlEKE1vY2tSZWFsdGltZU1lZGlhU291cmNlOjptb2NrQXVkaW9Tb3VyY2VQZXJzaXN0
ZW50SUQoKSwgbnVsbHB0cikpOwotICAgIHNvdXJjZXMuYXBwZW5kKE1vY2tSZWFsdGltZU1lZGlh
U291cmNlOjp0cmFja1NvdXJjZVdpdGhVSUQoTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6Om1vY2tW
aWRlb1NvdXJjZVBlcnNpc3RlbnRJRCgpLCBudWxscHRyKSk7CisgICAgc291cmNlcy5hcHBlbmQo
TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OmF1ZGlvRGV2aWNlSW5mbygpKTsKKyAgICBzb3VyY2Vz
LmFwcGVuZChNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6dmlkZW9EZXZpY2VJbmZvKCkpOwogCi0g
ICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgcmVxdWVzdENsaWVudCA9IFdURk1vdmUocmVxdWVz
dENsaWVudCksIHNvdXJjZXMgPSBXVEZNb3ZlKHNvdXJjZXMpXSB7Ci0gICAgICAgIHJlcXVlc3RD
bGllbnQtPmRpZENvbXBsZXRlVHJhY2tTb3VyY2VJbmZvUmVxdWVzdChzb3VyY2VzKTsKLSAgICB9
KTsKLQotICAgIHJldHVybiB0cnVlOwotfQotCi1SZWZQdHI8VHJhY2tTb3VyY2VJbmZvPiBNb2Nr
UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c291cmNlV2l0aFVJRChjb25zdCBTdHJpbmcmIFVJ
RCwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSwgTWVkaWFDb25zdHJhaW50cyogY29uc3RyYWlu
dHMpCi17Ci0gICAgcmV0dXJuIE1vY2tSZWFsdGltZU1lZGlhU291cmNlOjp0cmFja1NvdXJjZVdp
dGhVSUQoVUlELCBjb25zdHJhaW50cyk7CisgICAgcmV0dXJuIHNvdXJjZXM7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9j
a1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmgJKHJldmlzaW9u
IDIwNTU3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsOSArNDMsOCBAQCBwcml2YXRl
OgogCiAgICAgdm9pZCB2YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50cyhNZWRpYVN0cmVhbUNyZWF0
aW9uQ2xpZW50KiwgTWVkaWFDb25zdHJhaW50cyYgYXVkaW9Db25zdHJhaW50cywgTWVkaWFDb25z
dHJhaW50cyYgdmlkZW9Db25zdHJhaW50cykgb3ZlcnJpZGU7CiAgICAgdm9pZCBjcmVhdGVNZWRp
YVN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQ+LCBNZWRpYUNvbnN0
cmFpbnRzJiBhdWRpb0NvbnN0cmFpbnRzLCBNZWRpYUNvbnN0cmFpbnRzJiB2aWRlb0NvbnN0cmFp
bnRzKSBvdmVycmlkZTsKLSAgICBib29sIGdldE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzKFBhc3NS
ZWZQdHI8TWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0Q2xpZW50Pikgb3ZlcnJpZGU7Cisg
ICAgVmVjdG9yPENhcHR1cmVEZXZpY2U+IGdldE1lZGlhU3RyZWFtRGV2aWNlcygpIG92ZXJyaWRl
OwogICAgIHZvaWQgY3JlYXRlTWVkaWFTdHJlYW0oTWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudCos
IGNvbnN0IFN0cmluZyYgYXVkaW9EZXZpY2VJRCwgY29uc3QgU3RyaW5nJiB2aWRlb0RldmljZUlE
KSBvdmVycmlkZTsKLSAgICBSZWZQdHI8VHJhY2tTb3VyY2VJbmZvPiBzb3VyY2VXaXRoVUlEKGNv
bnN0IFN0cmluZyYsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUsIE1lZGlhQ29uc3RyYWludHMq
KSBvdmVycmlkZTsKIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNTkxNCkKKysr
IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBA
CisyMDE2LTA5LTE0ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisg
ICAgICAgIFtNZWRpYVN0cmVhbV0gTWlub3IgY2xlYW51cAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxOTc2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RQcm94eS5jcHA6CisKIDIwMTYtMDktMTQgIENhcmxvcyBHYXJuYWNobyAgPGNhcmxv
c2dAZ25vbWUub3JnPgogCiAgICAgICAgIFtHVEtdW1dheWxhbmRdIEltcGxlbWVudCBjbGlwYm9h
cmQgc3VwcG9ydApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0UHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5LmNwcAkocmV2aXNpb24gMjA1NTc4
KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
UHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMCw3ICsyMCw2IEBACiAjaW5jbHVkZSAiVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eS5oIgogCiAjaW5jbHVkZSAiVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL01lZGlhU3Ry
ZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVhbHRp
bWVNZWRpYVNvdXJjZUNlbnRlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4K
IAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>288831</attachid>
            <date>2016-09-14 11:00:06 -0700</date>
            <delta_ts>2016-09-14 12:53:34 -0700</delta_ts>
            <desc>Proposed patch.</desc>
            <filename>restructure_patch_4.txt</filename>
            <type>text/plain</type>
            <size>100096</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNTkxNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY5IEBACisyMDE2LTA5LTE0ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYVN0cmVhbV0g
TWlub3IgY2xlYW51cAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTYxOTc2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgTm8gbmV3IHRlc3RzLCBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZUluZm8uaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcDogUmVtb3ZlZC4K
KyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmg6IFJl
bW92ZWQuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXNSZXF1ZXN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRGV2aWNlc1JlcXVlc3Q6OmRpZENvbXBsZXRl
UGVybWlzc2lvbkNoZWNrKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRGV2aWNlc1JlcXVlc3Q6
OmRpZENvbXBsZXRlVHJhY2tTb3VyY2VJbmZvUmVxdWVzdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYURldmljZXNSZXF1ZXN0OjpyZXF1ZXN0T3JpZ2luKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlc1JlcXVlc3QuaDoKKyAgICAg
ICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tTb3VyY2VzQ2FsbGJhY2su
aDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJh
Y2tTb3VyY2VzQ2FsbGJhY2suaWRsOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vU291cmNlSW5mby5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0
cmVhbS9Tb3VyY2VJbmZvLmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVh
bS9Tb3VyY2VJbmZvLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vQ2FwdHVyZURl
dmljZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0Nh
cHR1cmVEZXZpY2VJbmZvLmguCisgICAgICAgIChXZWJDb3JlOjpDYXB0dXJlRGV2aWNlOjpDYXB0
dXJlRGV2aWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhcHR1cmVEZXZpY2U6OnBlcnNpc3RlbnRJ
ZCk6CisgICAgICAgIChXZWJDb3JlOjpDYXB0dXJlRGV2aWNlOjpsYWJlbCk6CisgICAgICAgIChX
ZWJDb3JlOjpDYXB0dXJlRGV2aWNlOjpncm91cElkKToKKyAgICAgICAgKFdlYkNvcmU6OkNhcHR1
cmVEZXZpY2U6OmtpbmQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FwdHVyZVNlc3Npb25JbmZvOjp+
Q2FwdHVyZVNlc3Npb25JbmZvKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNhcHR1cmVT
ZXNzaW9uSW5mbzo6c3VwcG9ydHNWaWRlb1NpemUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6Q2FwdHVyZVNlc3Npb25JbmZvOjpiZXN0U2Vzc2lvblByZXNldEZvclZpZGVvRGltZW5zaW9u
cyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vQ2FwdHVyZURldmlj
ZU1hbmFnZXIuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcC4KKyAgICAgICAgKENhcHR1cmVEZXZpY2VNYW5h
Z2VyOjpnZXRTb3VyY2VzSW5mbyk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vQ2Fw
dHVyZURldmljZU1hbmFnZXIuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5oLgorICAgICAgICAoV2ViQ29yZTo6Q2Fw
dHVyZVNlc3Npb25JbmZvOjp+Q2FwdHVyZVNlc3Npb25JbmZvKToKKyAgICAgICAgKFdlYkNvcmU6
OkNhcHR1cmVTZXNzaW9uSW5mbzo6c3VwcG9ydHNWaWRlb1NpemUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FwdHVyZVNlc3Npb25JbmZvOjpiZXN0U2Vzc2lvblByZXNldEZvclZpZGVvRGltZW5zaW9u
cyk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1NvdXJj
ZXNSZXF1ZXN0Q2xpZW50Lmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJl
YW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmg6CisgICAgICAgICogcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIubW06CisgICAgICAgIChXZWJD
b3JlOjpBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpnZXRTb3VyY2VzSW5mbyk6CisgICAgICAgICog
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYzo6Z2V0TWVk
aWFTdHJlYW1EZXZpY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VD
ZW50ZXJNYWM6OmdldE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWM6OnNvdXJjZVdpdGhVSUQpOiBE
ZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU1lZGlh
U291cmNlQ2VudGVyTWFjLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vb3Blbndl
YnJ0Yy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyT3dyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3I6OmdldE1lZGlhU3RyZWFtRGV2aWNlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyT3dyOjpnZXRNZWRpYVN0
cmVhbVRyYWNrU291cmNlcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1l
ZGlhU291cmNlQ2VudGVyT3dyOjpzb3VyY2VXaXRoVUlEKTogRGVsZXRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJP
d3IuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZU1lZGlhU291cmNlOjphdWRpb0Rldmlj
ZUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OnZpZGVv
RGV2aWNlSW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6
dHJhY2tTb3VyY2VXaXRoVUlEKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01v
Y2tSZWFsdGltZU1lZGlhU291cmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9Nb2NrUmVh
bHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRp
bWVNZWRpYVNvdXJjZUNlbnRlcjo6Z2V0TWVkaWFTdHJlYW1EZXZpY2VzKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpnZXRNZWRpYVN0cmVhbVRyYWNr
U291cmNlcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVNZWRpYVNv
dXJjZUNlbnRlcjo6c291cmNlV2l0aFVJRCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0v
bW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oOgorCiAyMDE2LTA5LTE0ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUmVncmVzc2lvbihyMTUyNzI1
KTogZ2VuZXJhdGUtYmluZGluZ3MucGwgLS13cml0ZS1kZXBlbmRlbmNpZXMgZG9lcyBub3Qgd29y
awpJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIwNTkxNCkKKysrIFNvdXJjZS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yMjIsNyArMjIyLDYgQEAg
c2V0KFdlYkNvcmVfTk9OX1NWR19JRExfRklMRVMKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtRXZlbnQuaWRsCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRy
YWNrLmlkbAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja0V2ZW50Lmlk
bAotICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNDYWxsYmFj
ay5pZGwKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50LmlkbAog
ICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuaWRsCiAgICAg
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludHMuaWRsCkBAIC0yNDcsNyAr
MjQ2LDYgQEAgc2V0KFdlYkNvcmVfTk9OX1NWR19JRExfRklMRVMKICAgICBNb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ1N0YXRzUmVwb3J0LmlkbAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDU3Rh
dHNSZXNwb25zZS5pZGwKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1RyYWNrRXZlbnQuaWRs
Ci0gICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9Tb3VyY2VJbmZvLmlkbAogCiAgICAgTW9kdWxlcy9u
YXZpZ2F0b3Jjb250ZW50dXRpbHMvTmF2aWdhdG9yQ29udGVudFV0aWxzLmlkbAogCkBAIC05MDAs
NyArODk4LDYgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDU3RhdHNSZXNwb25zZS5jcHAKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1RyYWNrRXZl
bnQuY3BwCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9TRFBQcm9jZXNzb3IuY3BwCi0gICAgTW9k
dWxlcy9tZWRpYXN0cmVhbS9Tb3VyY2VJbmZvLmNwcAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0v
VXNlck1lZGlhQ29udHJvbGxlci5jcHAKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRp
YVBlcm1pc3Npb25DaGVjay5jcHAKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJl
cXVlc3QuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDIw
NTkxNCkKKysrIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcgY29w
eSkKQEAgLTEzOSw3ICsxMzksNiBAQCBKU19CSU5ESU5HX0lETFMgPSBcCiAgICAgJChXZWJDb3Jl
KS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRXZlbnQuaWRsIFwKICAgICAkKFdlYkNv
cmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5pZGwgXAogICAgICQoV2Vi
Q29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrRXZlbnQuaWRsIFwKLSAg
ICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1NvdXJjZXND
YWxsYmFjay5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRy
YWNrQ29uc3RyYWludC5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9N
ZWRpYVRyYWNrQ29uc3RyYWludFNldC5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludHMuaWRsIFwKQEAgLTE2Myw3ICsxNjIsNiBAQCBK
U19CSU5ESU5HX0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q1N0YXRzUmVwb3J0LmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q1N0YXRzUmVzcG9uc2UuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDVHJhY2tFdmVudC5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9T
b3VyY2VJbmZvLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvRE9N
V2luZG93Tm90aWZpY2F0aW9ucy5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9ub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbi5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9ub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5pZGwgXApJbmRleDogU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlSW5mby5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZUluZm8uaAkocmV2aXNp
b24gMjA1OTE0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXB0dXJl
RGV2aWNlSW5mby5oCShub25leGlzdGVudCkKQEAgLTEsNTkgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0g
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgQ2FwdHVyZURldmljZUlu
Zm9faAotI2RlZmluZSBDYXB0dXJlRGV2aWNlSW5mb19oCi0KLSNpZiBFTkFCTEUoTUVESUFfU1RS
RUFNKQotCi0jaW5jbHVkZSA8UmVhbHRpbWVNZWRpYVNvdXJjZS5oPgotI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBDYXB0dXJl
RGV2aWNlSW5mbyB7Ci0gICAgU3RyaW5nIG1fcGVyc2lzdGVudERldmljZUlEOwotICAgIFN0cmlu
ZyBtX2xvY2FsaXplZE5hbWU7Ci0gICAgU3RyaW5nIG1fZ3JvdXBJRDsKLQotICAgIFN0cmluZyBt
X3NvdXJjZUlkOwotCi0gICAgYm9vbCBtX2VuYWJsZWQgeyBmYWxzZSB9OwotICAgIFJlYWx0aW1l
TWVkaWFTb3VyY2U6OlR5cGUgbV9zb3VyY2VUeXBlIHsgUmVhbHRpbWVNZWRpYVNvdXJjZTo6Tm9u
ZSB9OwotICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9GYWNpbmdNb2RlIG1f
cG9zaXRpb24geyBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OlVua25vd24gfTsKLX07Ci0K
LWNsYXNzIENhcHR1cmVTZXNzaW9uSW5mbyB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+Q2FwdHVy
ZVNlc3Npb25JbmZvKCkgeyB9Ci0gICAgdmlydHVhbCBib29sIHN1cHBvcnRzVmlkZW9TaXplKGNv
bnN0IFN0cmluZyYgLyogdmlkZW9TaXplICovKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAg
IHZpcnR1YWwgU3RyaW5nIGJlc3RTZXNzaW9uUHJlc2V0Rm9yVmlkZW9EaW1lbnNpb25zKGludCAv
KiB3aWR0aCAqLywgaW50IC8qIGhlaWdodCAqLykgY29uc3QgeyByZXR1cm4gZW1wdHlTdHJpbmco
KTsgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKE1F
RElBX1NUUkVBTSkKLQotI2VuZGlmIC8qIENhcHR1cmVEZXZpY2VJbmZvX2ggKi8KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwdHVy
ZURldmljZU1hbmFnZXIuY3BwCShyZXZpc2lvbiAyMDU5MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcAkobm9uZXhpc3RlbnQp
CkBAIC0xLDIxMCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJDYXB0dXJlRGV2aWNlTWFuYWdl
ci5oIgotCi0jaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLQotI2ltcG9ydCAiTG9nZ2luZy5oIgot
I2ltcG9ydCAiTWVkaWFDb25zdHJhaW50cy5oIgotI2ltcG9ydCAiUmVhbHRpbWVNZWRpYVNvdXJj
ZS5oIgotI2ltcG9ydCAiUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oIgotI2ltcG9ydCAiUmVh
bHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmgiCi0jaW1wb3J0ICJVVUlELmgiCi0jaW1wb3J0IDx3
dGYvTWFpblRocmVhZC5oPgotI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+Ci0jaW1wb3J0
IDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1D
YXB0dXJlRGV2aWNlTWFuYWdlcjo6fkNhcHR1cmVEZXZpY2VNYW5hZ2VyKCkKLXsKLX0KLQotVmVj
dG9yPFJlZlB0cjxUcmFja1NvdXJjZUluZm8+PiBDYXB0dXJlRGV2aWNlTWFuYWdlcjo6Z2V0U291
cmNlc0luZm8oY29uc3QgU3RyaW5nJiByZXF1ZXN0T3JpZ2luKQotewotICAgIFVOVVNFRF9QQVJB
TShyZXF1ZXN0T3JpZ2luKTsKLSAgICBWZWN0b3I8UmVmUHRyPFRyYWNrU291cmNlSW5mbz4+IHNv
dXJjZXNJbmZvOwotICAgIGZvciAoYXV0byBjYXB0dXJlRGV2aWNlIDogY2FwdHVyZURldmljZUxp
c3QoKSkgewotICAgICAgICBpZiAoIWNhcHR1cmVEZXZpY2UubV9lbmFibGVkIHx8IGNhcHR1cmVE
ZXZpY2UubV9zb3VyY2VUeXBlID09IFJlYWx0aW1lTWVkaWFTb3VyY2U6Ok5vbmUpCi0gICAgICAg
ICAgICBjb250aW51ZTsKLQotICAgICAgICBUcmFja1NvdXJjZUluZm86OlNvdXJjZUtpbmQgdHJh
Y2tTb3VyY2VUeXBlID0gY2FwdHVyZURldmljZS5tX3NvdXJjZVR5cGUgPT0gUmVhbHRpbWVNZWRp
YVNvdXJjZTo6VmlkZW8gPyBUcmFja1NvdXJjZUluZm86OlZpZGVvIDogVHJhY2tTb3VyY2VJbmZv
OjpBdWRpbzsKLSAgICAgICAgc291cmNlc0luZm8uYXBwZW5kKFRyYWNrU291cmNlSW5mbzo6Y3Jl
YXRlKGNhcHR1cmVEZXZpY2UubV9wZXJzaXN0ZW50RGV2aWNlSUQsIGNhcHR1cmVEZXZpY2UubV9z
b3VyY2VJZCwgdHJhY2tTb3VyY2VUeXBlLCBjYXB0dXJlRGV2aWNlLm1fbG9jYWxpemVkTmFtZSwg
Y2FwdHVyZURldmljZS5tX2dyb3VwSUQpKTsKLSAgICB9Ci0gICAgTE9HKE1lZGlhLCAiQ2FwdHVy
ZURldmljZU1hbmFnZXI6OmdldFNvdXJjZXNJbmZvKCVwKSwgZm91bmQgJXp1IGFjdGl2ZSBkZXZp
Y2VzIiwgdGhpcywgc291cmNlc0luZm8uc2l6ZSgpKTsKLSAgICByZXR1cm4gc291cmNlc0luZm87
Ci19Ci0KLWJvb2wgQ2FwdHVyZURldmljZU1hbmFnZXI6OmNhcHR1cmVEZXZpY2VGcm9tRGV2aWNl
SUQoY29uc3QgU3RyaW5nJiBjYXB0dXJlRGV2aWNlSUQsIENhcHR1cmVEZXZpY2VJbmZvJiBmb3Vu
ZERldmljZSkKLXsKLSAgICBmb3IgKGF1dG8mIGRldmljZSA6IGNhcHR1cmVEZXZpY2VMaXN0KCkp
IHsKLSAgICAgICAgaWYgKGRldmljZS5tX3BlcnNpc3RlbnREZXZpY2VJRCA9PSBjYXB0dXJlRGV2
aWNlSUQpIHsKLSAgICAgICAgICAgIGZvdW5kRGV2aWNlID0gZGV2aWNlOwotICAgICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0K
LWJvb2wgQ2FwdHVyZURldmljZU1hbmFnZXI6OnZlcmlmeUNvbnN0cmFpbnRzRm9yTWVkaWFUeXBl
KFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUgdHlwZSwgY29uc3QgTWVkaWFDb25zdHJhaW50cyYg
Y29uc3RyYWludHMsIGNvbnN0IENhcHR1cmVTZXNzaW9uSW5mbyogc2Vzc2lvbiwgU3RyaW5nJiBp
bnZhbGlkQ29uc3RyYWludCkKLXsKLSAgICBhdXRvJiBtYW5kYXRvcnlDb25zdHJhaW50cyA9IGNv
bnN0cmFpbnRzLm1hbmRhdG9yeUNvbnN0cmFpbnRzKCk7Ci0gICAgZm9yIChhdXRvJiBuYW1lQ29u
c3RyYWludFBhaXIgOiBtYW5kYXRvcnlDb25zdHJhaW50cykgewotICAgICAgICBpZiAoc2Vzc2lv
blN1cHBvcnRzQ29uc3RyYWludChzZXNzaW9uLCB0eXBlLCAqbmFtZUNvbnN0cmFpbnRQYWlyLnZh
bHVlKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIGludmFsaWRDb25zdHJhaW50
ID0gbmFtZUNvbnN0cmFpbnRQYWlyLmtleTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0K
LQotICAgIHJldHVybiB0cnVlOwotfQotCi1WZWN0b3I8UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3Vy
Y2U+PiBDYXB0dXJlRGV2aWNlTWFuYWdlcjo6YmVzdFNvdXJjZXNGb3JUeXBlQW5kQ29uc3RyYWlu
dHMoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSB0eXBlLCBNZWRpYUNvbnN0cmFpbnRzJiBjb25z
dHJhaW50cykKLXsKLSAgICBWZWN0b3I8UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+PiBiZXN0
U291cmNlc0xpc3Q7Ci0KLSAgICBzdHJ1Y3QgewotICAgICAgICBib29sIG9wZXJhdG9yKCkoUmVm
UHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+IGEsIFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPiBi
KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYS0+Zml0bmVzc1Njb3JlKCkgPCBiLT5m
aXRuZXNzU2NvcmUoKTsKLSAgICAgICAgfQotICAgIH0gc29ydEJhc2VkT25GaXRuZXNzU2NvcmU7
Ci0KLSAgICBmb3IgKGF1dG8mIGNhcHR1cmVEZXZpY2UgOiBjYXB0dXJlRGV2aWNlTGlzdCgpKSB7
Ci0gICAgICAgIGlmICghY2FwdHVyZURldmljZS5tX2VuYWJsZWQgfHwgY2FwdHVyZURldmljZS5t
X3NvdXJjZUlkLmlzRW1wdHkoKSB8fCBjYXB0dXJlRGV2aWNlLm1fc291cmNlVHlwZSA9PSBSZWFs
dGltZU1lZGlhU291cmNlOjpOb25lKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAg
aWYgKFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPiBjYXB0dXJlU291cmNlID0gc291cmNlV2l0
aFVJRChjYXB0dXJlRGV2aWNlLm1fcGVyc2lzdGVudERldmljZUlELCB0eXBlLCAmY29uc3RyYWlu
dHMpKQotICAgICAgICAgICAgYmVzdFNvdXJjZXNMaXN0LmFwcGVuZChjYXB0dXJlU291cmNlLmxl
YWtSZWYoKSk7Ci0gICAgfQotICAgIHN0ZDo6c29ydChiZXN0U291cmNlc0xpc3QuYmVnaW4oKSwg
YmVzdFNvdXJjZXNMaXN0LmVuZCgpLCBzb3J0QmFzZWRPbkZpdG5lc3NTY29yZSk7Ci0gICAgcmV0
dXJuIGJlc3RTb3VyY2VzTGlzdDsKLX0KLQotUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+IENh
cHR1cmVEZXZpY2VNYW5hZ2VyOjpzb3VyY2VXaXRoVUlEKGNvbnN0IFN0cmluZyYgZGV2aWNlVUlE
LCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlIHR5cGUsIE1lZGlhQ29uc3RyYWludHMqIGNvbnN0
cmFpbnRzKQotewotICAgIGZvciAoYXV0byYgY2FwdHVyZURldmljZSA6IGNhcHR1cmVEZXZpY2VM
aXN0KCkpIHsKLSAgICAgICAgaWYgKGNhcHR1cmVEZXZpY2UubV9wZXJzaXN0ZW50RGV2aWNlSUQg
IT0gZGV2aWNlVUlEIHx8IGNhcHR1cmVEZXZpY2UubV9zb3VyY2VUeXBlICE9IHR5cGUpCi0gICAg
ICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBpZiAoIWNhcHR1cmVEZXZpY2UubV9lbmFibGVk
IHx8IHR5cGUgPT0gUmVhbHRpbWVNZWRpYVNvdXJjZTo6Tm9uZSB8fCBjYXB0dXJlRGV2aWNlLm1f
c291cmNlSWQuaXNFbXB0eSgpKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgaWYg
KFJlYWx0aW1lTWVkaWFTb3VyY2UqIG1lZGlhU291cmNlID0gY3JlYXRlTWVkaWFTb3VyY2VGb3JD
YXB0dXJlRGV2aWNlV2l0aENvbnN0cmFpbnRzKGNhcHR1cmVEZXZpY2UsIGNvbnN0cmFpbnRzKSkK
LSAgICAgICAgICAgIHJldHVybiBtZWRpYVNvdXJjZTsKLSAgICB9Ci0gICAgcmV0dXJuIG51bGxw
dHI7Ci19Ci0KLUNhcHR1cmVEZXZpY2VJbmZvKiBDYXB0dXJlRGV2aWNlTWFuYWdlcjo6YmVzdERl
dmljZUZvckZhY2luZ01vZGUoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpWaWRlb0ZhY2lu
Z01vZGUgZmFjaW5nTW9kZSkKLXsKLSAgICBpZiAoZmFjaW5nTW9kZSA9PSBSZWFsdGltZU1lZGlh
U291cmNlU2V0dGluZ3M6OlVua25vd24pCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAg
Zm9yIChhdXRvJiBkZXZpY2UgOiBjYXB0dXJlRGV2aWNlTGlzdCgpKSB7Ci0gICAgICAgIGlmIChk
ZXZpY2UubV9zb3VyY2VUeXBlID09IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvICYmIGRldmlj
ZS5tX3Bvc2l0aW9uID09IGZhY2luZ01vZGUpCi0gICAgICAgICAgICByZXR1cm4gJmRldmljZTsK
LSAgICB9Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgUmVhbHRpbWVN
ZWRpYVNvdXJjZVNldHRpbmdzOjpWaWRlb0ZhY2luZ01vZGUgZmFjaW5nTW9kZUZyb21TdHJpbmco
Y29uc3QgU3RyaW5nJiBmYWNpbmdNb2RlU3RyaW5nKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxBdG9taWNTdHJpbmc+IHVzZXJGYWNpbmdNb2RlU3RyaW5nKCJ1c2VyIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0
b21pY1N0cmluZz4gZW52aXJvbm1lbnRGYWNpbmdNb2RlU3RyaW5nKCJlbnZpcm9ubWVudCIsIEF0
b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxBdG9taWNTdHJpbmc+IGxlZnRGYWNpbmdNb2RlU3RyaW5nKCJsZWZ0IiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0
b21pY1N0cmluZz4gcmlnaHRGYWNpbmdNb2RlU3RyaW5nKCJyaWdodCIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIGlmIChmYWNpbmdNb2RlU3RyaW5nID09IHVzZXJG
YWNpbmdNb2RlU3RyaW5nKQotICAgICAgICByZXR1cm4gUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRp
bmdzOjpVc2VyOwotICAgIGlmIChmYWNpbmdNb2RlU3RyaW5nID09IGVudmlyb25tZW50RmFjaW5n
TW9kZVN0cmluZykKLSAgICAgICAgcmV0dXJuIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6
RW52aXJvbm1lbnQ7Ci0gICAgaWYgKGZhY2luZ01vZGVTdHJpbmcgPT0gbGVmdEZhY2luZ01vZGVT
dHJpbmcpCi0gICAgICAgIHJldHVybiBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkxlZnQ7
Ci0gICAgaWYgKGZhY2luZ01vZGVTdHJpbmcgPT0gcmlnaHRGYWNpbmdNb2RlU3RyaW5nKQotICAg
ICAgICByZXR1cm4gUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpSaWdodDsKLSAgICByZXR1
cm4gUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpVbmtub3duOwotfQotCi1ib29sIENhcHR1
cmVEZXZpY2VNYW5hZ2VyOjpzZXNzaW9uU3VwcG9ydHNDb25zdHJhaW50KGNvbnN0IENhcHR1cmVT
ZXNzaW9uSW5mbyosIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUgdHlwZSwgY29uc3QgTWVkaWFD
b25zdHJhaW50JiBjb25zdHJhaW50KQotewotICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VT
dXBwb3J0ZWRDb25zdHJhaW50cyYgc3VwcG9ydGVkQ29uc3RyYWludHMgPSBSZWFsdGltZU1lZGlh
U291cmNlQ2VudGVyOjpzaW5nbGV0b24oKS5zdXBwb3J0ZWRDb25zdHJhaW50cygpOwotICAgIE1l
ZGlhQ29uc3RyYWludFR5cGUgY29uc3RyYWludFR5cGUgPSBjb25zdHJhaW50LnR5cGUoKTsKLSAg
ICBpZiAoIXN1cHBvcnRlZENvbnN0cmFpbnRzLnN1cHBvcnRzQ29uc3RyYWludChjb25zdHJhaW50
VHlwZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHN3aXRjaCAoY29uc3RyYWludFR5
cGUpIHsKLSAgICBjYXNlIE1lZGlhQ29uc3RyYWludFR5cGU6OldpZHRoOgotICAgICAgICByZXR1
cm4gdHlwZSA9PSBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbzsKLQotICAgIGNhc2UgTWVkaWFD
b25zdHJhaW50VHlwZTo6SGVpZ2h0OgotICAgICAgICByZXR1cm4gdHlwZSA9PSBSZWFsdGltZU1l
ZGlhU291cmNlOjpWaWRlbzsKLQotICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6RnJhbWVS
YXRlOiB7Ci0gICAgICAgIGlmICh0eXBlID09IFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvKQot
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIHJldHVybiBpc1N1cHBvcnRlZEZy
YW1lUmF0ZShjb25zdHJhaW50KTsKLSAgICB9Ci0gICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBl
OjpGYWNpbmdNb2RlOiB7Ci0gICAgICAgIGlmICh0eXBlID09IFJlYWx0aW1lTWVkaWFTb3VyY2U6
OkF1ZGlvKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIC8vIEZJWE1FOiBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwNzkzLiBIYW5kbGUgc2Vx
dWVuY2Ugb2YgZmFjaW5nTW9kZSBjb25zdHJhaW50cy4KLSAgICAgICAgVmVjdG9yPFN0cmluZz4g
ZXhhY3RGYWNpbmdNb2RlOwotICAgICAgICBpZiAoIWNvbnN0cmFpbnQuZ2V0RXhhY3QoZXhhY3RG
YWNpbmdNb2RlKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICByZXR1cm4g
YmVzdERldmljZUZvckZhY2luZ01vZGUoZmFjaW5nTW9kZUZyb21TdHJpbmcoZXhhY3RGYWNpbmdN
b2RlWzBdKSk7Ci0gICAgfQotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICB9Ci19Ci0KLWJvb2wgQ2FwdHVyZURldmljZU1hbmFnZXI6OmlzU3VwcG9ydGVkRnJhbWVSYXRl
KGNvbnN0IE1lZGlhQ29uc3RyYWludCYgY29uc3RyYWludCkgY29uc3QKLXsKLSAgICAvLyBGSVhN
RTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDc5NC4gRHluYW1p
Y2FsbHkgY2hlY2sgbWVkaWEgZGV2aWNlcyBpZiBmcmFtZSByYXRlIGlzIHN1cHBvcnRlZC4KLSAg
ICBib29sIGlzU3VwcG9ydGVkID0gdHJ1ZTsKLQotICAgIGludCBtaW4gPSAwOwotICAgIGlmIChj
b25zdHJhaW50LmdldE1pbihtaW4pKQotICAgICAgICBpc1N1cHBvcnRlZCAmPSBtaW4gPiA2MDsK
LQotICAgIGludCBtYXggPSA2MDsKLSAgICBpZiAoY29uc3RyYWludC5nZXRNYXgobWF4KSkKLSAg
ICAgICAgaXNTdXBwb3J0ZWQgJj0gbWF4IDwgbWluOwotCi0gICAgaW50IGV4YWN0OwotICAgIGlm
IChjb25zdHJhaW50LmdldEV4YWN0KGV4YWN0KSkKLSAgICAgICAgaXNTdXBwb3J0ZWQgJj0gKGV4
YWN0IDwgbWluIHx8IGV4YWN0ID4gbWF4KTsKLQotICAgIHJldHVybiBpc1N1cHBvcnRlZDsKLX0K
LQotI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5o
CShyZXZpc2lvbiAyMDU5MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSw2NCArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBDYXB0
dXJlRGV2aWNlTWFuYWdlcl9oCi0jZGVmaW5lIENhcHR1cmVEZXZpY2VNYW5hZ2VyX2gKLQotI2lm
IEVOQUJMRShNRURJQV9TVFJFQU0pCi0KLSNpbmNsdWRlICJDYXB0dXJlRGV2aWNlSW5mby5oIgot
I2luY2x1ZGUgIk1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVudC5oIgotI2luY2x1
ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2UuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBDYXB0dXJlRGV2aWNlTWFuYWdlciB7
Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCBWZWN0b3I8Q2FwdHVyZURldmljZUluZm8+JiBjYXB0dXJl
RGV2aWNlTGlzdCgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcmVmcmVzaENhcHR1cmVEZXZpY2VM
aXN0KCkgeyB9Ci0gICAgdmlydHVhbCBUcmFja1NvdXJjZUluZm9WZWN0b3IgZ2V0U291cmNlc0lu
Zm8oY29uc3QgU3RyaW5nJik7Ci0gICAgdmlydHVhbCBWZWN0b3I8UmVmUHRyPFJlYWx0aW1lTWVk
aWFTb3VyY2U+PiBiZXN0U291cmNlc0ZvclR5cGVBbmRDb25zdHJhaW50cyhSZWFsdGltZU1lZGlh
U291cmNlOjpUeXBlLCBNZWRpYUNvbnN0cmFpbnRzJik7Ci0gICAgdmlydHVhbCBSZWZQdHI8UmVh
bHRpbWVNZWRpYVNvdXJjZT4gc291cmNlV2l0aFVJRChjb25zdCBTdHJpbmcmLCBSZWFsdGltZU1l
ZGlhU291cmNlOjpUeXBlLCBNZWRpYUNvbnN0cmFpbnRzKik7Ci0KLSAgICB2aXJ0dWFsIGJvb2wg
dmVyaWZ5Q29uc3RyYWludHNGb3JNZWRpYVR5cGUoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSwg
Y29uc3QgTWVkaWFDb25zdHJhaW50cyYsIGNvbnN0IENhcHR1cmVTZXNzaW9uSW5mbyosIFN0cmlu
ZyYpOwotCi1wcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB+Q2FwdHVyZURldmljZU1hbmFnZXIoKTsK
LSAgICB2aXJ0dWFsIFJlYWx0aW1lTWVkaWFTb3VyY2UqIGNyZWF0ZU1lZGlhU291cmNlRm9yQ2Fw
dHVyZURldmljZVdpdGhDb25zdHJhaW50cyhjb25zdCBDYXB0dXJlRGV2aWNlSW5mbyYsIE1lZGlh
Q29uc3RyYWludHMqKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIENhcHR1cmVTZXNzaW9uSW5mbyBkZWZh
dWx0Q2FwdHVyZVNlc3Npb24oKSBjb25zdCB7IHJldHVybiBDYXB0dXJlU2Vzc2lvbkluZm8oKTsg
fQotICAgIHZpcnR1YWwgYm9vbCBzZXNzaW9uU3VwcG9ydHNDb25zdHJhaW50KGNvbnN0IENhcHR1
cmVTZXNzaW9uSW5mbyosIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUsIGNvbnN0IE1lZGlhQ29u
c3RyYWludCYpOwotICAgIHZpcnR1YWwgYm9vbCBpc1N1cHBvcnRlZEZyYW1lUmF0ZShjb25zdCBN
ZWRpYUNvbnN0cmFpbnQmKSBjb25zdDsKLQotICAgIGJvb2wgY2FwdHVyZURldmljZUZyb21EZXZp
Y2VJRChjb25zdCBTdHJpbmcmIGNhcHR1cmVEZXZpY2VJRCwgQ2FwdHVyZURldmljZUluZm8mIHNv
dXJjZSk7Ci0gICAgQ2FwdHVyZURldmljZUluZm8qIGJlc3REZXZpY2VGb3JGYWNpbmdNb2RlKFJl
YWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9GYWNpbmdNb2RlKTsKLX07Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCi0KLSNl
bmRpZiAvKiBDYXB0dXJlRGV2aWNlTWFuYWdlcl9oICovCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlc1JlcXVlc3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzUmVxdWVzdC5j
cHAJKHJldmlzaW9uIDIwNTkxNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vTWVkaWFEZXZpY2VzUmVxdWVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcg
QEAKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKKyNpbmNsdWRlICJDYXB0dXJlRGV2aWNl
LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAj
aW5jbHVkZSAiRnJhbWUuaCIKQEAgLTgzLDIwICs4NCw2IEBAIHZvaWQgTWVkaWFEZXZpY2VzUmVx
dWVzdDo6c3RhcnQoKQogICAgIG1fcGVybWlzc2lvbkNoZWNrLT5zdGFydCgpOwogfQogCi12b2lk
IE1lZGlhRGV2aWNlc1JlcXVlc3Q6OmRpZENvbXBsZXRlUGVybWlzc2lvbkNoZWNrKGNvbnN0IFN0
cmluZyYgc2FsdCwgYm9vbCBjYW5BY2Nlc3MpCi17Ci0gICAgUmVmUHRyPFVzZXJNZWRpYVBlcm1p
c3Npb25DaGVjaz4gcGVybWlzc2lvbkNoZWNrUHJvdGVjdG9yID0gbV9wZXJtaXNzaW9uQ2hlY2s7
Ci0gICAgbV9wZXJtaXNzaW9uQ2hlY2stPnNldENsaWVudChudWxscHRyKTsKLSAgICBtX3Blcm1p
c3Npb25DaGVjayA9IG51bGxwdHI7Ci0KLSAgICBtX2lkSGFzaFNhbHQgPSBzYWx0OwotICAgIG1f
aGF2ZVBlcnNpc3RlbnRQZXJtaXNzaW9uID0gY2FuQWNjZXNzOwotCi0gICAgY2FsbE9uTWFpblRo
cmVhZChbdGhpcywgcGVybWlzc2lvbkNoZWNrUHJvdGVjdG9yID0gV1RGTW92ZShwZXJtaXNzaW9u
Q2hlY2tQcm90ZWN0b3IpXSB7Ci0gICAgICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNp
bmdsZXRvbigpLmdldE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzKHRoaXMpOwotICAgIH0pOwotfQot
CiBzdGF0aWMgdm9pZCBoYXNoU3RyaW5nKFNIQTEmIHNoYTEsIGNvbnN0IFN0cmluZyYgc3RyaW5n
KQogewogICAgIGlmIChzdHJpbmcuaXNFbXB0eSgpKQpAQCAtMTI5LDggKzExNiwxNCBAQCBTdHJp
bmcgTWVkaWFEZXZpY2VzUmVxdWVzdDo6aGFzaElEKGNvbnN0CiAgICAgcmV0dXJuIFNIQTE6Omhl
eERpZ2VzdChkaWdlc3QpLmRhdGEoKTsKIH0KIAotdm9pZCBNZWRpYURldmljZXNSZXF1ZXN0Ojpk
aWRDb21wbGV0ZVRyYWNrU291cmNlSW5mb1JlcXVlc3QoY29uc3QgVHJhY2tTb3VyY2VJbmZvVmVj
dG9yJiBjYXB0dXJlRGV2aWNlcykKK3ZvaWQgTWVkaWFEZXZpY2VzUmVxdWVzdDo6ZGlkQ29tcGxl
dGVQZXJtaXNzaW9uQ2hlY2soY29uc3QgU3RyaW5nJiBzYWx0LCBib29sIGNhbkFjY2VzcykKIHsK
KyAgICBtX3Blcm1pc3Npb25DaGVjay0+c2V0Q2xpZW50KG51bGxwdHIpOworICAgIG1fcGVybWlz
c2lvbkNoZWNrID0gbnVsbHB0cjsKKworICAgIG1faWRIYXNoU2FsdCA9IHNhbHQ7CisgICAgbV9o
YXZlUGVyc2lzdGVudFBlcm1pc3Npb24gPSBjYW5BY2Nlc3M7CisKICAgICBpZiAoIXNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSkgewogICAgICAgICBtX3Byb3RlY3RvciA9IG51bGxwdHI7CiAgICAg
ICAgIHJldHVybjsKQEAgLTE0NCwxOCArMTM3LDE5IEBAIHZvaWQgTWVkaWFEZXZpY2VzUmVxdWVz
dDo6ZGlkQ29tcGxldGVUcmEKICAgICB9CiAKICAgICBWZWN0b3I8UmVmUHRyPE1lZGlhRGV2aWNl
SW5mbz4+IGRldmljZXM7CisgICAgYXV0byBjYXB0dXJlRGV2aWNlcyA9IFJlYWx0aW1lTWVkaWFT
b3VyY2VDZW50ZXI6OnNpbmdsZXRvbigpLmdldE1lZGlhU3RyZWFtRGV2aWNlcygpOwogICAgIGZv
ciAoYXV0byYgZGV2aWNlSW5mbyA6IGNhcHR1cmVEZXZpY2VzKSB7CiAgICAgICAgIFN0cmluZyBs
YWJlbCA9IGVtcHR5U3RyaW5nKCk7CiAgICAgICAgIGlmIChtX2hhdmVQZXJzaXN0ZW50UGVybWlz
c2lvbiB8fCBkb2N1bWVudC5oYXNIYWRBY3RpdmVNZWRpYVN0cmVhbVRyYWNrKCkpCi0gICAgICAg
ICAgICBsYWJlbCA9IGRldmljZUluZm8tPmxhYmVsKCk7CisgICAgICAgICAgICBsYWJlbCA9IGRl
dmljZUluZm8ubGFiZWwoKTsKIAotICAgICAgICBTdHJpbmcgaWQgPSBoYXNoSUQoZGV2aWNlSW5m
by0+cGVyc2lzdGVudElkKCkpOworICAgICAgICBTdHJpbmcgaWQgPSBoYXNoSUQoZGV2aWNlSW5m
by5wZXJzaXN0ZW50SWQoKSk7CiAgICAgICAgIGlmIChpZC5pc0VtcHR5KCkpCiAgICAgICAgICAg
ICBjb250aW51ZTsKIAotICAgICAgICBTdHJpbmcgZ3JvdXBJZCA9IGhhc2hJRChkZXZpY2VJbmZv
LT5ncm91cElkKCkpOworICAgICAgICBTdHJpbmcgZ3JvdXBJZCA9IGhhc2hJRChkZXZpY2VJbmZv
Lmdyb3VwSWQoKSk7CiAKLSAgICAgICAgYXV0byBkZXZpY2VUeXBlID0gZGV2aWNlSW5mby0+a2lu
ZCgpID09IFRyYWNrU291cmNlSW5mbzo6U291cmNlS2luZDo6QXVkaW8gPyBNZWRpYURldmljZUlu
Zm86OktpbmQ6OkF1ZGlvaW5wdXQgOiBNZWRpYURldmljZUluZm86OktpbmQ6OlZpZGVvaW5wdXQ7
CisgICAgICAgIGF1dG8gZGV2aWNlVHlwZSA9IGRldmljZUluZm8ua2luZCgpID09IENhcHR1cmVE
ZXZpY2U6OlNvdXJjZUtpbmQ6OkF1ZGlvID8gTWVkaWFEZXZpY2VJbmZvOjpLaW5kOjpBdWRpb2lu
cHV0IDogTWVkaWFEZXZpY2VJbmZvOjpLaW5kOjpWaWRlb2lucHV0OwogCiAgICAgICAgIGRldmlj
ZXMuYXBwZW5kKE1lZGlhRGV2aWNlSW5mbzo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSwgbGFiZWwsIGlkLCBncm91cElkLCBkZXZpY2VUeXBlKSk7CiAgICAgfQpAQCAtMTY2LDE3ICsx
NjAsNiBAQCB2b2lkIE1lZGlhRGV2aWNlc1JlcXVlc3Q6OmRpZENvbXBsZXRlVHJhCiAgICAgbV9w
cm90ZWN0b3IgPSBudWxscHRyOwogfQogCi1jb25zdCBTdHJpbmcmIE1lZGlhRGV2aWNlc1JlcXVl
c3Q6OnJlcXVlc3RPcmlnaW4oKSBjb25zdAotewotICAgIGlmIChzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkpIHsKLSAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+
KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7Ci0gICAgICAgIGlmIChkb2N1bWVudCkKLSAgICAg
ICAgICAgIHJldHVybiBkb2N1bWVudC0+dXJsKCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGVtcHR5
U3RyaW5nKCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJM
RShNRURJQV9TVFJFQU0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L01lZGlhRGV2aWNlc1JlcXVlc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlc1JlcXVlc3QuaAkocmV2aXNpb24gMjA1OTE0KQor
KysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXNSZXF1ZXN0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRlICJBY3RpdmVET01P
YmplY3QuaCIKICNpbmNsdWRlICJNZWRpYURldmljZXMuaCIKICNpbmNsdWRlICJNZWRpYVN0cmVh
bUNyZWF0aW9uQ2xpZW50LmgiCi0jaW5jbHVkZSAiTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1
ZXN0Q2xpZW50LmgiCiAjaW5jbHVkZSAiVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrLmgiCiAjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
QEAgLTQ1LDcgKzQ0LDcgQEAgY2xhc3MgU2VjdXJpdHlPcmlnaW47CiAKIHR5cGVkZWYgaW50IEV4
Y2VwdGlvbkNvZGU7CiAKLWNsYXNzIE1lZGlhRGV2aWNlc1JlcXVlc3QgOiBwdWJsaWMgTWVkaWFT
dHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0Q2xpZW50LCBwdWJsaWMgVXNlck1lZGlhUGVybWlzc2lv
bkNoZWNrQ2xpZW50LCBwdWJsaWMgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIgeworY2xhc3Mg
TWVkaWFEZXZpY2VzUmVxdWVzdCA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhRGV2aWNlc1JlcXVl
c3Q+LCBwdWJsaWMgVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrQ2xpZW50LCBwdWJsaWMgQ29udGV4
dERlc3RydWN0aW9uT2JzZXJ2ZXIgewogcHVibGljOgogICAgIHN0YXRpYyBSZWZQdHI8TWVkaWFE
ZXZpY2VzUmVxdWVzdD4gY3JlYXRlKERvY3VtZW50KiwgTWVkaWFEZXZpY2VzOjpFbnVtZXJhdGVE
ZXZpY2VzUHJvbWlzZSYmLCBFeGNlcHRpb25Db2RlJik7CiAKQEAgLTU4LDEwICs1Nyw2IEBAIHB1
YmxpYzoKIHByaXZhdGU6CiAgICAgTWVkaWFEZXZpY2VzUmVxdWVzdChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgTWVkaWFEZXZpY2VzOjpFbnVtZXJhdGVEZXZpY2VzUHJvbWlzZSYmKTsKIAotICAg
IC8vIE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVudAotICAgIGNvbnN0IFN0cmlu
ZyYgcmVxdWVzdE9yaWdpbigpIGNvbnN0IGZpbmFsOwotICAgIHZvaWQgZGlkQ29tcGxldGVUcmFj
a1NvdXJjZUluZm9SZXF1ZXN0KGNvbnN0IFRyYWNrU291cmNlSW5mb1ZlY3RvciYpIGZpbmFsOwot
CiAgICAgLy8gQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIKICAgICB2b2lkIGNvbnRleHREZXN0
cm95ZWQoKSBmaW5hbDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbVRyYWNrU291cmNlc0NhbGxiYWNrLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrU291cmNlc0NhbGxi
YWNrLmgJKHJldmlzaW9uIDIwNTkxNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNDYWxsYmFjay5oCShub25leGlzdGVudCkKQEAg
LTEsNDYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgR09PR0xFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBHT09H
TEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
LSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpZm5kZWYgTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNDYWxsYmFja19oCi0jZGVmaW5l
IE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzQ2FsbGJhY2tfaAotCi0jaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKLQotI2luY2x1ZGUgIlNvdXJjZUluZm8uaCIKLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIE1lZGlhU3RyZWFtVHJhY2tTb3Vy
Y2VzQ2FsbGJhY2sgOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYVN0cmVhbVRyYWNrU291cmNlc0Nh
bGxiYWNrPiB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+TWVkaWFTdHJlYW1UcmFja1NvdXJjZXND
YWxsYmFjaygpIHsgfQotICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVFdmVudChWZWN0b3I8UmVmUHRy
PFNvdXJjZUluZm8+PikgPSAwOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5k
aWYKLQotI2VuZGlmIC8vIE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzQ2FsbGJhY2tfaApJbmRleDog
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrU291cmNl
c0NhbGxiYWNrLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtVHJhY2tTb3VyY2VzQ2FsbGJhY2suaWRsCShyZXZpc2lvbiAyMDU5
MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJh
Y2tTb3VyY2VzQ2FsbGJhY2suaWRsCShub25leGlzdGVudCkKQEAgLTEsMzIgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgR09PR0xFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBHT09HTEUgSU5DLiBPUgotICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLVsKLSAgICBDb25k
aXRpb25hbD1NRURJQV9TVFJFQU0sCi0gICAgQ2FsbGJhY2s9RnVuY3Rpb25Pbmx5LAotXSBjYWxs
YmFjayBpbnRlcmZhY2UgTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNDYWxsYmFjayB7Ci0gICAgYm9v
bGVhbiBoYW5kbGVFdmVudChzZXF1ZW5jZTxTb3VyY2VJbmZvPiBzb3VyY2VzKTsKLX07Ci0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vU291cmNlSW5mby5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Tb3VyY2VJbmZv
LmNwcAkocmV2aXNpb24gMjA1OTE0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9Tb3VyY2VJbmZvLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDY0ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
IENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBHT09HTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEdPT0dMRSBJTkMuIE9SCi0gKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2luY2x1ZGUgIlNvdXJjZUluZm8uaCIKLQotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0p
Ci0KLSNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1SZWY8U291cmNlSW5mbz4gU291cmNlSW5mbzo6Y3JlYXRlKFJlZjxUcmFja1NvdXJjZUlu
Zm8+JiYgdHJhY2tTb3VyY2VJbmZvKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNvdXJj
ZUluZm8oV1RGTW92ZSh0cmFja1NvdXJjZUluZm8pKSk7Ci19Ci0KLVNvdXJjZUluZm86OlNvdXJj
ZUluZm8oUmVmPFRyYWNrU291cmNlSW5mbz4mJiB0cmFja1NvdXJjZUluZm8pCi0gICAgOiBtX3Ry
YWNrU291cmNlSW5mbyhXVEZNb3ZlKHRyYWNrU291cmNlSW5mbykpCi17Ci19Ci0KLWNvbnN0IEF0
b21pY1N0cmluZyYgU291cmNlSW5mbzo6a2luZCgpIGNvbnN0Ci17Ci0gICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPEF0b21pY1N0cmluZz4gYXVkaW9LaW5kKCJhdWRpbyIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNT
dHJpbmc+IHZpZGVvS2luZCgidmlkZW8iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKTsKLQotICAgIHN3aXRjaCAobV90cmFja1NvdXJjZUluZm8tPmtpbmQoKSkgewotICAgIGNh
c2UgVHJhY2tTb3VyY2VJbmZvOjpBdWRpbzoKLSAgICAgICAgcmV0dXJuIGF1ZGlvS2luZDsKLSAg
ICBjYXNlIFRyYWNrU291cmNlSW5mbzo6VmlkZW86Ci0gICAgICAgIHJldHVybiB2aWRlb0tpbmQ7
Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIGVtcHR5QXRv
bTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vU291cmNlSW5mby5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vU291cmNlSW5mby5oCShyZXZpc2lvbiAy
MDU5MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1NvdXJjZUluZm8u
aAkobm9uZXhpc3RlbnQpCkBAIC0xLDU5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAx
MyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBHT09HTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEdPT0dMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBTb3VyY2VJbmZvX2gKLSNkZWZpbmUgU291
cmNlSW5mb19oCi0KLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotCi0jaW5jbHVkZSAiTWVkaWFT
dHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0Q2xpZW50LmgiCi0jaW5jbHVkZSAiU2NyaXB0V3JhcHBh
YmxlLmgiCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBTb3VyY2VJbmZvIDogcHVibGlj
IFJlZkNvdW50ZWQ8U291cmNlSW5mbz4sIHB1YmxpYyBTY3JpcHRXcmFwcGFibGUgewotcHVibGlj
OgotICAgIHN0YXRpYyBSZWY8U291cmNlSW5mbz4gY3JlYXRlKFJlZjxUcmFja1NvdXJjZUluZm8+
JiYpOwotCi0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBzb3VyY2VJZCgpIGNvbnN0IHsgcmV0dXJu
IG1fdHJhY2tTb3VyY2VJbmZvLT5pZCgpOyB9Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBsYWJl
bCgpIGNvbnN0IHsgcmV0dXJuIG1fdHJhY2tTb3VyY2VJbmZvLT5sYWJlbCgpOyB9Ci0gICAgY29u
c3QgQXRvbWljU3RyaW5nJiBraW5kKCkgY29uc3Q7Ci0KLXByaXZhdGU6Ci0gICAgU291cmNlSW5m
byhSZWY8VHJhY2tTb3VyY2VJbmZvPiYmKTsKLQotICAgIFJlZjxUcmFja1NvdXJjZUluZm8+IG1f
dHJhY2tTb3VyY2VJbmZvOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYg
Ly8gU291cmNlSW5mb19oCi0KLSNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9Tb3VyY2VJbmZvLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1NvdXJjZUluZm8uaWRsCShyZXZpc2lvbiAyMDU5MTQpCisrKyBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1NvdXJjZUluZm8uaWRsCShub25leGlz
dGVudCkKQEAgLTEsMzQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgR09PR0xFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
Ci0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBHT09HTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLVsKLSAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAotICAgIE5v
SW50ZXJmYWNlT2JqZWN0LAotICAgIENvbmRpdGlvbmFsPU1FRElBX1NUUkVBTSwKLV0gaW50ZXJm
YWNlIFNvdXJjZUluZm8gewotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgc291cmNl
SWQ7Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBraW5kOwotICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBET01TdHJpbmcgbGFiZWw7Ci19OwpJbmRleDogU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjA1OTE0KQor
KysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNzQsMTQgKzE3NCw2IEBACiAJCTA3NEU4MkJCMThBNjlGMEUwMDdFRjU0
QyAvKiBQbGF0Zm9ybVRpbWVSYW5nZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDA3NEU4MkI5MThBNjlGMEUwMDdFRjU0QyAvKiBQbGF0Zm9ybVRpbWVS
YW5nZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkwNzUzODYwMjE0NDg5RTk4MDBCNzg0NTIgLyogQ2FjaGVkVGV4dFRyYWNrLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NTM4NjAwMTQ0ODlFOTgw
MEI3ODQ1MiAvKiBDYWNoZWRUZXh0VHJhY2suY3BwICovOyB9OwogCQkwNzUzODYwMzE0NDg5RTk4
MDBCNzg0NTIgLyogQ2FjaGVkVGV4dFRyYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwNzUzODYwMTE0NDg5RTk4MDBCNzg0NTIgLyogQ2FjaGVkVGV4
dFRyYWNrLmggKi87IH07Ci0JCTA3NjMwNkQwMTdFMTQ3OEQwMDVBN0M0RSAvKiBNZWRpYVN0cmVh
bVRyYWNrU291cmNlc0NhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwNzYzMDZDQzE3RTE0NzhEMDA1QTdDNEUgLyogTWVkaWFTdHJlYW1UcmFj
a1NvdXJjZXNDYWxsYmFjay5oICovOyB9OwotCQkwNzYzMDZENzE3RTE0OUNGMDA1QTdDNEUgLyog
U291cmNlSW5mby5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwNzYzMDZENDE3RTE0OUNGMDA1QTdDNEUgLyogU291cmNlSW5mby5jcHAgKi87IH07Ci0J
CTA3NjMwNkQ4MTdFMTQ5RDAwMDVBN0M0RSAvKiBTb3VyY2VJbmZvLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzYzMDZENTE3RTE0OUNGMDA1QTdDNEUg
LyogU291cmNlSW5mby5oICovOyB9OwotCQkwNzYzMDZEQzE3RTE1RkIwMDA1QTdDNEUgLyogSlNN
ZWRpYVN0cmVhbVRyYWNrU291cmNlc0NhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NjMwNkRBMTdFMTVGQjAwMDVBN0M0RSAvKiBKU01l
ZGlhU3RyZWFtVHJhY2tTb3VyY2VzQ2FsbGJhY2suY3BwICovOyB9OwotCQkwNzYzMDZERDE3RTE1
RkIwMDA1QTdDNEUgLyogSlNNZWRpYVN0cmVhbVRyYWNrU291cmNlc0NhbGxiYWNrLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzYzMDZEQjE3RTE1RkIw
MDA1QTdDNEUgLyogSlNNZWRpYVN0cmVhbVRyYWNrU291cmNlc0NhbGxiYWNrLmggKi87IH07Ci0J
CTA3NjMwNkUwMTdFMTYwODkwMDVBN0M0RSAvKiBKU1NvdXJjZUluZm8uY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc2MzA2REUxN0UxNjA4OTAwNUE3
QzRFIC8qIEpTU291cmNlSW5mby5jcHAgKi87IH07Ci0JCTA3NjMwNkUxMTdFMTYwODkwMDVBN0M0
RSAvKiBKU1NvdXJjZUluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDA3NjMwNkRGMTdFMTYwODkwMDVBN0M0RSAvKiBKU1NvdXJjZUluZm8uaCAqLzsg
fTsKLQkJMDc2MzA2RTMxN0UyMkE0MzAwNUE3QzRFIC8qIE1lZGlhU3RyZWFtVHJhY2tTb3VyY2Vz
UmVxdWVzdENsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMDc2MzA2RTIxN0UyMkE0MzAwNUE3QzRFIC8qIE1lZGlhU3RyZWFtVHJhY2tTb3VyY2Vz
UmVxdWVzdENsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTA3NjM4QTk5MTg4NDQ4NzIwMEUxNUExQiAvKiBNZWRpYVNlc3Npb25NYW5hZ2Vy
SU9TLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzYz
OEE5NzE4ODQ0ODcyMDBFMTVBMUIgLyogTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA3NjM4QTlBMTg4NDQ4
NzIwMEUxNUExQiAvKiBNZWRpYVNlc3Npb25NYW5hZ2VySU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc2MzhBOTgxODg0NDg3MjAwRTE1QTFCIC8q
IE1lZGlhU2Vzc2lvbk1hbmFnZXJJT1MubW0gKi87IH07CiAJCTA3Njk3MDg2MTQ2M0FEODcwMEY1
MDJDRiAvKiBUZXh0VHJhY2tMaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDA3Njk3MDg0MTQ2M0FEODcwMEY1MDJDRiAvKiBUZXh0VHJhY2tMaXN0
LmNwcCAqLzsgfTsKQEAgLTMwNyw2ICsyOTksOSBAQAogCQkwN0I1QTJEQjE0NjQzMjBBMDBBODFF
Q0UgLyogSlNUZXh0VHJhY2tMaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDA3QjVBMkQ5MTQ2NDMyMEEwMEE4MUVDRSAvKiBKU1RleHRUcmFja0xp
c3QuY3BwICovOyB9OwogCQkwN0I1QTJEQzE0NjQzMjBBMDBBODFFQ0UgLyogSlNUZXh0VHJhY2tM
aXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0I1
QTJEQTE0NjQzMjBBMDBBODFFQ0UgLyogSlNUZXh0VHJhY2tMaXN0LmggKi87IH07CiAJCTA3QjVB
MzBEMTQ2ODdENzEwMEE4MUVDRSAvKiBKU1RleHRUcmFja0xpc3RDdXN0b20uY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdCNUEzMEMxNDY4N0Q3MTAw
QTgxRUNFIC8qIEpTVGV4dFRyYWNrTGlzdEN1c3RvbS5jcHAgKi87IH07CisJCTA3QjcxMTZEMUQ4
OTlFNjMwMDlGMEZGQiAvKiBDYXB0dXJlRGV2aWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0I3MTE2QTFEODk5RTYzMDA5RjBGRkIgLyogQ2FwdHVy
ZURldmljZS5oICovOyB9OworCQkwN0I3MTE2RTFEODk5RTYzMDA5RjBGRkIgLyogQ2FwdHVyZURl
dmljZU1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMDdCNzExNkIxRDg5OUU2MzAwOUYwRkZCIC8qIENhcHR1cmVEZXZpY2VNYW5hZ2VyLmNw
cCAqLzsgfTsKKwkJMDdCNzExNkYxRDg5OUU2MzAwOUYwRkZCIC8qIENhcHR1cmVEZXZpY2VNYW5h
Z2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0I3
MTE2QzFEODk5RTYzMDA5RjBGRkIgLyogQ2FwdHVyZURldmljZU1hbmFnZXIuaCAqLzsgfTsKIAkJ
MDdCREQ2RUMxNDY5QjRDMjAwOUM5Rjg1IC8qIEpTVHJhY2tFdmVudEN1c3RvbS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0I1QTMwQTE0Njg3Qjg0
MDBBODFFQ0UgLyogSlNUcmFja0V2ZW50Q3VzdG9tLmNwcCAqLzsgfTsKIAkJMDdDMUMwRTIxQkZC
NjAwMTAwQkQyMjU2IC8qIE1lZGlhVHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50cy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdDMUMwRTAxQkZCNjAwMTAw
QkQyMjU2IC8qIE1lZGlhVHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50cy5oICovOyB9OwogCQkwN0Mx
QzBFNTFCRkI2MEVEMDBCRDIyNTYgLyogUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0
cmFpbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
N0MxQzBFNDFCRkI2MEVEMDBCRDIyNTYgLyogUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENv
bnN0cmFpbnRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKQEAgLTEyNDYsOSArMTI0MSw2IEBACiAJCTJFM0JCRjA4MTE2MkRBMTEwMEI5NDA5QSAvKiBV
VUlELmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTNC
QkYwNjExNjJEQTExMDBCOTQwOUEgLyogVVVJRC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJFM0JDMENBMTE3RDNFMDgwMEI5NDA5QSAvKiBKU0Zp
bGVFcnJvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAyRTNCQzBDODExN0QzRTA4MDBCOTQwOUEgLyogSlNGaWxlRXJyb3IuY3BwICovOyB9OwogCQky
RTNCQzBDQjExN0QzRTA4MDBCOTQwOUEgLyogSlNGaWxlRXJyb3IuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFM0JDMEM5MTE3RDNFMDgwMEI5NDA5QSAv
KiBKU0ZpbGVFcnJvci5oICovOyB9OwotCQkyRTNDOEM2MjFCRkJBOTc1MDAzMDk1NjYgLyogQ2Fw
dHVyZURldmljZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDJFM0M4QzYxMUJGQkE4REMwMDMwOTU2NiAvKiBDYXB0dXJlRGV2aWNlTWFuYWdl
ci5oICovOyB9OwotCQkyRTNDOEM2NDFCRkJCNzVEMDAzMDk1NjYgLyogQ2FwdHVyZURldmljZU1h
bmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MkUzQzhDNjMxQkZCQjc1RDAwMzA5NTY2IC8qIENhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcCAqLzsg
fTsKLQkJMkUzQzhDNjgxQkZCRjhFMTAwMzA5NTY2IC8qIENhcHR1cmVEZXZpY2VJbmZvLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTNDOEM2NjFCRkJG
OEUxMDAzMDk1NjYgLyogQ2FwdHVyZURldmljZUluZm8uaCAqLzsgfTsKIAkJMkU0MzQ2NDUwRjU0
NkE4MjAwQjBGMUJBIC8qIFdvcmtlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyRTQzNDYzMzBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyLmNwcCAq
LzsgfTsKIAkJMkU0MzQ2NDYwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU0MzQ2MzQwRjU0NkE4MjAwQjBG
MUJBIC8qIFdvcmtlci5oICovOyB9OwogCQkyRTQzNDY0ODBGNTQ2QTgyMDBCMEYxQkEgLyogV29y
a2VyR2xvYmFsU2NvcGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMkU0MzQ2MzYwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlckdsb2JhbFNjb3BlLmNw
cCAqLzsgfTsKQEAgLTcwMTYsMTYgKzcwMDgsNiBAQAogCQkwNzRFODJCOTE4QTY5RjBFMDA3RUY1
NEMgLyogUGxhdGZvcm1UaW1lUmFuZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFBsYXRmb3JtVGltZVJhbmdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
NzUzODYwMDE0NDg5RTk4MDBCNzg0NTIgLyogQ2FjaGVkVGV4dFRyYWNrLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhY2hlZFRleHRUcmFjay5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3NTM4NjAxMTQ0ODlFOTgwMEI3ODQ1MiAvKiBDYWNoZWRU
ZXh0VHJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVkVGV4dFRy
YWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTA3NjMwNkNDMTdFMTQ3OEQwMDVB
N0M0RSAvKiBNZWRpYVN0cmVhbVRyYWNrU291cmNlc0NhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzQ2FsbGJhY2suaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMDc2MzA2Q0QxN0UxNDc4RDAwNUE3QzRFIC8qIE1l
ZGlhU3RyZWFtVHJhY2tTb3VyY2VzQ2FsbGJhY2suaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzQ2FsbGJhY2suaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQkwNzYzMDZENDE3RTE0OUNGMDA1QTdDNEUgLyogU291cmNlSW5mby5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTb3VyY2VJbmZvLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMDc2MzA2RDUxN0UxNDlDRjAwNUE3QzRFIC8qIFNvdXJj
ZUluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU291cmNlSW5mby5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwNzYzMDZENjE3RTE0OUNGMDA1QTdDNEUgLyog
U291cmNlSW5mby5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU291cmNlSW5mby5pZGw7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTA3NjMwNkRBMTdFMTVGQjAwMDVBN0M0RSAvKiBK
U01lZGlhU3RyZWFtVHJhY2tTb3VyY2VzQ2FsbGJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNNZWRpYVN0cmVhbVRyYWNrU291cmNlc0NhbGxiYWNrLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMDc2MzA2REIxN0UxNUZCMDAwNUE3QzRFIC8q
IEpTTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNDYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU01lZGlhU3RyZWFtVHJhY2tTb3VyY2VzQ2FsbGJhY2suaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMDc2MzA2REUxN0UxNjA4OTAwNUE3QzRFIC8qIEpTU291
cmNlSW5mby5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1NvdXJj
ZUluZm8uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwNzYzMDZERjE3RTE2MDg5
MDA1QTdDNEUgLyogSlNTb3VyY2VJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTU291cmNlSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwNzYzMDZF
MjE3RTIyQTQzMDA1QTdDNEUgLyogTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0Q2xpZW50
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhU3RyZWFtVHJhY2tTb3Vy
Y2VzUmVxdWVzdENsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzYzOEE5
NzE4ODQ0ODcyMDBFMTVBMUIgLyogTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVNlc3Npb25NYW5hZ2VySU9TLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3NjM4QTk4MTg4NDQ4NzIwMEUxNUExQiAvKiBNZWRpYVNl
c3Npb25NYW5hZ2VySU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMDc2OTcwODQxNDYzQUQ4NzAwRjUwMkNGIC8qIFRleHRUcmFja0xpc3QuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGV4dFRyYWNrTGlzdC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03MTA3LDYgKzcwODksOSBAQAogCQkwN0I1QTMwNjE0Njg1
MzcxMDBBODFFQ0UgLyogVGV4dFRyYWNrTGlzdC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
VGV4dFRyYWNrTGlzdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3QjVBMzBB
MTQ2ODdCODQwMEE4MUVDRSAvKiBKU1RyYWNrRXZlbnRDdXN0b20uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNUcmFja0V2ZW50Q3VzdG9tLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdCNUEzMEMxNDY4N0Q3MTAwQTgxRUNFIC8qIEpTVGV4dFRy
YWNrTGlzdEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U1RleHRUcmFja0xpc3RDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
N0I3MTE2QTFEODk5RTYzMDA5RjBGRkIgLyogQ2FwdHVyZURldmljZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDYXB0dXJlRGV2aWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTA3QjcxMTZCMUQ4OTlFNjMwMDlGMEZGQiAvKiBDYXB0dXJlRGV2aWNlTWFuYWdl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYXB0dXJlRGV2aWNl
TWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3QjcxMTZDMUQ4OTlF
NjMwMDlGMEZGQiAvKiBDYXB0dXJlRGV2aWNlTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBDYXB0dXJlRGV2aWNlTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwN0MxQzBFMDFCRkI2MDAxMDBCRDIyNTYgLyogTWVkaWFUcmFja1N1cHBvcnRl
ZENvbnN0cmFpbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhVHJh
Y2tTdXBwb3J0ZWRDb25zdHJhaW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
N0MxQzBFMTFCRkI2MDAxMDBCRDIyNTYgLyogTWVkaWFUcmFja1N1cHBvcnRlZENvbnN0cmFpbnRz
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBNZWRpYVRyYWNrU3VwcG9ydGVkQ29uc3RyYWlu
dHMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0MxQzBFNDFCRkI2MEVEMDBC
RDIyNTYgLyogUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRD
b25zdHJhaW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODE3OCw5ICs4MTYz
LDYgQEAKIAkJMkUzQkJGMDYxMTYyREExMTAwQjk0MDlBIC8qIFVVSUQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gVVVJRC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkyRTNCQzBDODExN0QzRTA4MDBCOTQwOUEgLyogSlNGaWxlRXJyb3IuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNGaWxlRXJyb3IuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkyRTNCQzBDOTExN0QzRTA4MDBCOTQwOUEgLyogSlNGaWxlRXJyb3Iu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNGaWxlRXJyb3IuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMkUzQzhDNjExQkZCQThEQzAwMzA5NTY2IC8qIENhcHR1
cmVEZXZpY2VNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhcHR1cmVEZXZpY2VNYW5hZ2VyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTJFM0M4QzYzMUJGQkI3NUQwMDMwOTU2NiAv
KiBDYXB0dXJlRGV2aWNlTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBDYXB0dXJlRGV2aWNlTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTJFM0M4QzY2MUJGQkY4RTEwMDMwOTU2NiAvKiBDYXB0dXJlRGV2aWNlSW5mby5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYXB0dXJlRGV2aWNlSW5mby5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRTQzNDYzMzBGNTQ2QTgyMDBCMEYxQkEgLyogV29y
a2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdvcmtlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJFNDM0NjM0MEY1NDZBODIwMEIwRjFCQSAv
KiBXb3JrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV29ya2VyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJFNDM0NjM1MEY1NDZBODIwMEIwRjFCQSAvKiBX
b3JrZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdvcmtlci5pZGw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0xNDQ3OCw5ICsxNDQ2MCw2IEBACiAJCTA3MjIxQjQ2MTdDRUMz
MjcwMDg0OEU1MSAvKiBtZWRpYXN0cmVhbSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJ
Y2hpbGRyZW4gPSAoCi0JCQkJMkUzQzhDNjYxQkZCRjhFMTAwMzA5NTY2IC8qIENhcHR1cmVEZXZp
Y2VJbmZvLmggKi8sCi0JCQkJMkUzQzhDNjMxQkZCQjc1RDAwMzA5NTY2IC8qIENhcHR1cmVEZXZp
Y2VNYW5hZ2VyLmNwcCAqLywKLQkJCQkyRTNDOEM2MTFCRkJBOERDMDAzMDk1NjYgLyogQ2FwdHVy
ZURldmljZU1hbmFnZXIuaCAqLywKIAkJCQkwNzM3OTRFRDE5RUUzNjQyMDBFNUEwNDUgLyogRE9N
VVJMTWVkaWFTdHJlYW0uY3BwICovLAogCQkJCTE1RkNDOUZEMUI0REY4NTYwMEU3MjMyNiAvKiBE
T01VUkxNZWRpYVN0cmVhbS5oICovLAogCQkJCTA3Mzc5NEVFMTlFRTM2NDIwMEU1QTA0NSAvKiBE
T01VUkxNZWRpYVN0cmVhbS5pZGwgKi8sCkBAIC0xNDUxOCw4ICsxNDQ5Nyw2IEBACiAJCQkJMDcy
MjFCNTcxN0NFQzMyNzAwODQ4RTUxIC8qIE1lZGlhU3RyZWFtVHJhY2tFdmVudC5jcHAgKi8sCiAJ
CQkJMDcyMjFCNTgxN0NFQzMyNzAwODQ4RTUxIC8qIE1lZGlhU3RyZWFtVHJhY2tFdmVudC5oICov
LAogCQkJCTA3MjIxQjU5MTdDRUMzMjcwMDg0OEU1MSAvKiBNZWRpYVN0cmVhbVRyYWNrRXZlbnQu
aWRsICovLAotCQkJCTA3NjMwNkNDMTdFMTQ3OEQwMDVBN0M0RSAvKiBNZWRpYVN0cmVhbVRyYWNr
U291cmNlc0NhbGxiYWNrLmggKi8sCi0JCQkJMDc2MzA2Q0QxN0UxNDc4RDAwNUE3QzRFIC8qIE1l
ZGlhU3RyZWFtVHJhY2tTb3VyY2VzQ2FsbGJhY2suaWRsICovLAogCQkJCTA3MDU4NTM5MTdGRTA3
NzAwMDVGMkJDQiAvKiBNZWRpYVRyYWNrQ29uc3RyYWludC5jcHAgKi8sCiAJCQkJMDcwNTg1MUQx
N0ZEQzE0MDAwNUYyQkNCIC8qIE1lZGlhVHJhY2tDb25zdHJhaW50LmggKi8sCiAJCQkJMDcwNTg1
MUUxN0ZEQzE0MDAwNUYyQkNCIC8qIE1lZGlhVHJhY2tDb25zdHJhaW50LmlkbCAqLywKQEAgLTE0
NTk2LDkgKzE0NTczLDYgQEAKIAkJCQk1RTJDNDM2NjFCQ0VFMzcyMDAwMUUyQkMgLyogUlRDVHJh
Y2tFdmVudC5pZGwgKi8sCiAJCQkJNUVBM0Q2RTExQzg1OURBQTAwMzAwQkJCIC8qIFNEUFByb2Nl
c3Nvci5jcHAgKi8sCiAJCQkJNUVBM0Q2RTIxQzg1OURBQTAwMzAwQkJCIC8qIFNEUFByb2Nlc3Nv
ci5oICovLAotCQkJCTA3NjMwNkQ0MTdFMTQ5Q0YwMDVBN0M0RSAvKiBTb3VyY2VJbmZvLmNwcCAq
LywKLQkJCQkwNzYzMDZENTE3RTE0OUNGMDA1QTdDNEUgLyogU291cmNlSW5mby5oICovLAotCQkJ
CTA3NjMwNkQ2MTdFMTQ5Q0YwMDVBN0M0RSAvKiBTb3VyY2VJbmZvLmlkbCAqLywKIAkJCQkwNzIy
MUI4RDE3Q0VDMzI3MDA4NDhFNTEgLyogVXNlck1lZGlhQ2xpZW50LmggKi8sCiAJCQkJMDcyMjFC
OEUxN0NFQzMyNzAwODQ4RTUxIC8qIFVzZXJNZWRpYUNvbnRyb2xsZXIuY3BwICovLAogCQkJCTA3
MjIxQjhGMTdDRUMzMjcwMDg0OEU1MSAvKiBVc2VyTWVkaWFDb250cm9sbGVyLmggKi8sCkBAIC0x
NDYxNSw2ICsxNDU4OSw5IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQkwNzI5QjE0RDE3Q0ZDQ0Ew
MDA0RjFENjAgLyogbWFjICovLAogCQkJCTA3RDZBNEY2MUJGMjMwN0QwMDE3NDE0NiAvKiBBdWRp
b1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtLmggKi8sCisJCQkJMDdCNzExNkExRDg5OUU2MzAwOUYw
RkZCIC8qIENhcHR1cmVEZXZpY2UuaCAqLywKKwkJCQkwN0I3MTE2QjFEODk5RTYzMDA5RjBGRkIg
LyogQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwICovLAorCQkJCTA3QjcxMTZDMUQ4OTlFNjMwMDlG
MEZGQiAvKiBDYXB0dXJlRGV2aWNlTWFuYWdlci5oICovLAogCQkJCTVFQkI4OTMwMUM3Nzc3RTEw
MEM2NUQ0MSAvKiBJY2VDYW5kaWRhdGUuaCAqLywKIAkJCQkxQkU1QkZDMTFENTE1NzE1MDAxNjY2
RDkgLyogTWVkaWFDb25zdHJhaW50cy5jcHAgKi8sCiAJCQkJMDcyMjFCOTkxN0NGMEFENDAwODQ4
RTUxIC8qIE1lZGlhQ29uc3RyYWludHMuaCAqLywKQEAgLTE0NjMwLDcgKzE0NjA3LDYgQEAKIAkJ
CQkwNzIyMUI5RDE3Q0YwQUQ0MDA4NDhFNTEgLyogTWVkaWFTdHJlYW1Qcml2YXRlLmggKi8sCiAJ
CQkJMDdGRkRFNjYxODFBRUQ0MjAwNzJENDA5IC8qIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmNw
cCAqLywKIAkJCQkwN0ZGREU2NzE4MUFFRDQyMDA3MkQ0MDkgLyogTWVkaWFTdHJlYW1UcmFja1By
aXZhdGUuaCAqLywKLQkJCQkwNzYzMDZFMjE3RTIyQTQzMDA1QTdDNEUgLyogTWVkaWFTdHJlYW1U
cmFja1NvdXJjZXNSZXF1ZXN0Q2xpZW50LmggKi8sCiAJCQkJNUVCQjg5MzgxQzc3QkRBNDAwQzY1
RDQxIC8qIFBlZXJNZWRpYURlc2NyaXB0aW9uLmggKi8sCiAJCQkJNEE0RjY1NkIxQUE5OTdGMTAw
RTM4Q0REIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2UuY3BwICovLAogCQkJCTRBNEY2NTZDMUFBOTk3
RjEwMEUzOENERCAvKiBSZWFsdGltZU1lZGlhU291cmNlLmggKi8sCkBAIC0xNDc0OCw4ICsxNDcy
NCw2IEBACiAJCQkJMDcyNzdFNDcxN0QwMThDQzAwMTU1MzREIC8qIEpTTWVkaWFTdHJlYW1UcmFj
ay5oICovLAogCQkJCTA3Mjc3RTQ4MTdEMDE4Q0MwMDE1NTM0RCAvKiBKU01lZGlhU3RyZWFtVHJh
Y2tFdmVudC5jcHAgKi8sCiAJCQkJMDcyNzdFNDkxN0QwMThDQzAwMTU1MzREIC8qIEpTTWVkaWFT
dHJlYW1UcmFja0V2ZW50LmggKi8sCi0JCQkJMDc2MzA2REExN0UxNUZCMDAwNUE3QzRFIC8qIEpT
TWVkaWFTdHJlYW1UcmFja1NvdXJjZXNDYWxsYmFjay5jcHAgKi8sCi0JCQkJMDc2MzA2REIxN0Ux
NUZCMDAwNUE3QzRFIC8qIEpTTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNDYWxsYmFjay5oICovLAog
CQkJCTA3MDU4NTJCMTdGREU2RDkwMDVGMkJDQiAvKiBKU01lZGlhVHJhY2tDb25zdHJhaW50LmNw
cCAqLywKIAkJCQkwNzA1ODUyQzE3RkRFNkQ5MDA1RjJCQ0IgLyogSlNNZWRpYVRyYWNrQ29uc3Ry
YWludC5oICovLAogCQkJCTA3MDU4NTJEMTdGREU2RDkwMDVGMkJDQiAvKiBKU01lZGlhVHJhY2tD
b25zdHJhaW50cy5jcHAgKi8sCkBAIC0xNDc5NCw4ICsxNDc2OCw2IEBACiAJCQkJMDc5NjlEQUEx
N0QxNDE1MTAwN0ZGODQyIC8qIEpTUlRDU3RhdHNSZXNwb25zZS5oICovLAogCQkJCTVFMkM0MzY5
MUJDRjA1QzgwMDAxRTJCQyAvKiBKU1JUQ1RyYWNrRXZlbnQuY3BwICovLAogCQkJCTVFMkM0MzZB
MUJDRjA1QzgwMDAxRTJCQyAvKiBKU1JUQ1RyYWNrRXZlbnQuaCAqLywKLQkJCQkwNzYzMDZERTE3
RTE2MDg5MDA1QTdDNEUgLyogSlNTb3VyY2VJbmZvLmNwcCAqLywKLQkJCQkwNzYzMDZERjE3RTE2
MDg5MDA1QTdDNEUgLyogSlNTb3VyY2VJbmZvLmggKi8sCiAJCQkpOwogCQkJbmFtZSA9IE1lZGlh
U3RyZWFtOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTIzOTkzLDggKzIzOTY1LDYg
QEAKIAkJCQk0OTQ4NEZDRTEwMkNGMjNDMDAxODdERDMgLyogQ2FudmFzU3R5bGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTA3OUQwODY4MTYyRjIwRTgwMERCODY1OCAvKiBDYXB0aW9uVXNlclByZWZl
cmVuY2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzlEMDg2QjE2MkYyMUY5MDBEQjg2NTggLyog
Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuaCBpbiBIZWFkZXJzICovLAotCQkJCTJFM0M4
QzY4MUJGQkY4RTEwMDMwOTU2NiAvKiBDYXB0dXJlRGV2aWNlSW5mby5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJMkUzQzhDNjIxQkZCQTk3NTAwMzA5NTY2IC8qIENhcHR1cmVEZXZpY2VNYW5hZ2VyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5OUNDMEI0RjE4QkU5ODQ5MDA2Q0VCQ0MgLyogQ2FwdHVyaW5n
SW5wdXRDdXJzb3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEQzczNDE1MTk3Nzg5NkQwMDQ2QkZD
NSAvKiBDQVJpbmdCdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1NTBCNjlFMDk5REYwMjcw
MDkwRDc4MSAvKiBDREFUQVNlY3Rpb24uaCBpbiBIZWFkZXJzICovLApAQCAtMjQyMzQsNiArMjQy
MDQsNyBAQAogCQkJCUE4RUE4MDA3MEExOTUxNkUwMEE4RUY1RiAvKiBDU1NTdHlsZVNoZWV0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlGQzU0RDA1NzE2QTc2NzMxMDA1NzVFNEQgLyogQ1NTU3VwcG9y
dHNSdWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzgwQzk4ODBDRDI5NEVFMDBBMEI3QjMgLyog
Q1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDdCNzExNkQxRDg5
OUU2MzAwOUYwRkZCIC8qIENhcHR1cmVEZXZpY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTk0NkQz
NzNBMUQ2Q0RGQzAwMDc3MDg0RiAvKiBDU1NUb2tlbml6ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTk0NkQzNzNDMUQ2Q0RGQzAwMDc3MDg0RiAvKiBDU1NUb2tlbml6ZXJJbnB1dFN0cmVhbS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOUFCMUYzODAxOEUyNDg5QTAwNTM0NzQzIC8qIENTU1RvTGVuZ3Ro
Q29udmVyc2lvbkRhdGEuaCBpbiBIZWFkZXJzICovLApAQCAtMjUxOTcsNyArMjUxNjgsNiBAQAog
CQkJCTA3Mjc3RTUxMTdEMDE4Q0MwMDE1NTM0RCAvKiBKU01lZGlhU3RyZWFtRXZlbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTA3Mjc3RTUzMTdEMDE4Q0MwMDE1NTM0RCAvKiBKU01lZGlhU3RyZWFt
VHJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTA3Mjc3RTU1MTdEMDE4Q0MwMDE1NTM0RCAvKiBK
U01lZGlhU3RyZWFtVHJhY2tFdmVudC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMDc2MzA2REQxN0Ux
NUZCMDAwNUE3QzRFIC8qIEpTTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNDYWxsYmFjay5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMDcwNTg1MzIxN0ZERTZEOTAwNUYyQkNCIC8qIEpTTWVkaWFUcmFja0Nv
bnN0cmFpbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3MDU4NTM0MTdGREU2RDkwMDVGMkJDQiAv
KiBKU01lZGlhVHJhY2tDb25zdHJhaW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDcwNTg1MzYx
N0ZERTZEOTAwNUYyQkNCIC8qIEpTTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuaCBpbiBIZWFkZXJz
ICovLApAQCAtMjUyODUsNyArMjUyNTUsNiBAQAogCQkJCTlCREE2NEQ4MUI5NzVDRjIwMDlDNDM4
NyAvKiBKU1NoYWRvd1Jvb3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEOURFMTdCMTdBQUM3NUIw
MEVBMzg2RCAvKiBKU1NvdXJjZUJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0Q5REUxN0Qx
N0FBQzc1QjAwRUEzODZEIC8qIEpTU291cmNlQnVmZmVyTGlzdC5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJMDc2MzA2RTExN0UxNjA4OTAwNUE3QzRFIC8qIEpTU291cmNlSW5mby5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQUE3RkVFQUQxNkE0RTc0QjAwNEMwQzMzIC8qIEpTU3BlZWNoU3ludGhlc2lzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBQTJBNUFEMjE2QTQ4NjBBMDA5NzZBMjUgLyogSlNTcGVlY2hT
eW50aGVzaXNFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUE3RkVFQTcxNkE0RTZGMzAwNEMw
QzMzIC8qIEpTU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmggaW4gSGVhZGVycyAqLywKQEAgLTI1
NzE1LDggKzI1Njg0LDYgQEAKIAkJCQkwNzhFMDkxODE3RDE0RDFDMDA0MjBBQTEgLyogTWVkaWFT
dHJlYW1UcmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDc4RTA5MTkxN0QxNEQxQzAwNDIwQUEx
IC8qIE1lZGlhU3RyZWFtVHJhY2tFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDdGRkRFNjkx
ODFBRUQ0MjAwNzJENDA5IC8qIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmggaW4gSGVhZGVycyAq
LywKLQkJCQkwNzYzMDZEMDE3RTE0NzhEMDA1QTdDNEUgLyogTWVkaWFTdHJlYW1UcmFja1NvdXJj
ZXNDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMDc2MzA2RTMxN0UyMkE0MzAwNUE3QzRF
IC8qIE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVudC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQ0Q2NDFFQzAxODE5QjM2MDAwRUU0QzQxIC8qIE1lZGlhVGltZUFWRm91bmRhdGlvbi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQ0Q2MEMwQzcxOTNFODdDNzAwM0M2NTZCIC8qIE1lZGlhVGlt
ZVFUS2l0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzA1ODUyMTE3RkRDMTQwMDA1RjJCQ0IgLyog
TWVkaWFUcmFja0NvbnN0cmFpbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjYyMjIsNiArMjYxODks
NyBAQAogCQkJCTUxNEM3Njc5MENFOTIzQTEwMDdFRjNDRCAvKiBSZXNvdXJjZUhhbmRsZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMjZGQUU0Q0QxODUyRTNBNTAwNEM4QzQ2IC8qIFJlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTI2QzE1Q0Y3
MTg1N0UxNUUwMEYxNUMwMyAvKiBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRl
V2l0aE9wZXJhdGlvblF1ZXVlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwN0I3MTE2RjFEODk5RTYz
MDA5RjBGRkIgLyogQ2FwdHVyZURldmljZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTUx
NEM3NjdBMENFOTIzQTEwMDdFRjNDRCAvKiBSZXNvdXJjZUhhbmRsZUNsaWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNTE0Qzc2N0IwQ0U5MjNBMTAwN0VGM0NEIC8qIFJlc291cmNlSGFuZGxlSW50
ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxRTQxNDM0MTZBNjU5NjMwMEM2MzNDNyAvKiBS
ZXNvdXJjZUhhbmRsZVR5cGVzLmggaW4gSGVhZGVycyAqLywKQEAgLTI2NDM5LDcgKzI2NDA3LDYg
QEAKIAkJCQlDREM4QjVBQjE4MDQ3RkYxMDAxNkU2ODUgLyogU291cmNlQnVmZmVyUHJpdmF0ZUFW
Rk9iakMuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEQzhCNUFEMTgwNEFFNUQwMDE2RTY4NSAvKiBT
b3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NEE4MUY0MjBG
QzdFMDI3MDA5NTUzMDAgLyogU291cmNlR3JhcGhpYy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMDc2
MzA2RDgxN0UxNDlEMDAwNUE3QzRFIC8qIFNvdXJjZUluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJ
CUQwMUEyN0FFMTBDOUJGRDgwMDAyNkE0MiAvKiBTcGFjZVNwbGl0U3RyaW5nLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk2MjZDREUwRjExNDA0MjRDMDAxRTVBNjggLyogU3BhdGlhbE5hdmlnYXRpb24u
aCBpbiBIZWFkZXJzICovLAogCQkJCUFBMkE1QUQ0MTZBNDg2MTEwMDk3NUEyNSAvKiBTcGVlY2hT
eW50aGVzaXMuaCBpbiBIZWFkZXJzICovLApAQCAtMjc3MzMsNyArMjc3MDAsNiBAQAogCQkJCTQ5
NDg0RkNEMTAyQ0YyM0MwMDE4N0REMyAvKiBDYW52YXNTdHlsZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwNzJDQTg2MTE2Q0I0REMzMDA4QUUxMzEgLyogQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzlEMDg2QzE2MkYyMUY5MDBEQjg2NTggLyogQ2FwdGlv
blVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMkUzQzhDNjQx
QkZCQjc1RDAwMzA5NTY2IC8qIENhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTk5Q0MwQjRFMThCRTk4NDkwMDZDRUJDQyAvKiBDYXB0dXJpbmdJbnB1dEN1cnNvci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlDREM3MzQxNDE5Nzc4OTZDMDA0NkJGQzUgLyogQ0FSaW5n
QnVmZmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTY1NTBCNjlEMDk5REYwMjcwMDkwRDc4MSAv
KiBDREFUQVNlY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNzg4NSw2ICsyNzg1MSw3IEBA
CiAJCQkJRkJCMEM1QjcxN0JCRDYyNjAwM0QzNjc3IC8qIENTU0ZpbHRlckltYWdlVmFsdWUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQkM2NEI0RDUwQ0I0Mjk4QTAwNUYyQjYyIC8qIENTU0ZvbnRG
YWNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQwOUVCREIyMTZCN0VFNzQwMENCQTNGQyAvKiBD
U1NGb250RmFjZUxvYWRFdmVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwN0I3MTE2RTFEODk5
RTYzMDA5RjBGRkIgLyogQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQTgwRTZDRTcwQTE5ODlDQTAwN0ZCOEM1IC8qIENTU0ZvbnRGYWNlUnVsZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlDMjYwMTdBMzFDNzJEQzk5MDBGNzRBMTYgLyogQ1NTRm9udEZhY2VTZXQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM2NEI0RDcwQ0I0Mjk4QTAwNUYyQjYyIC8qIENTU0Zv
bnRGYWNlU291cmNlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjg5MDQsNyArMjg4NzEsNiBAQAog
CQkJCTA3Mjc3RTUyMTdEMDE4Q0MwMDE1NTM0RCAvKiBKU01lZGlhU3RyZWFtVHJhY2suY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMDdDNTlCNkUxN0Y3OTRGNjAwMEZCQ0JCIC8qIEpTTWVkaWFTdHJl
YW1UcmFja0N1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzI3N0U1NDE3RDAxOENDMDAx
NTUzNEQgLyogSlNNZWRpYVN0cmVhbVRyYWNrRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJ
MDc2MzA2REMxN0UxNUZCMDAwNUE3QzRFIC8qIEpTTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNDYWxs
YmFjay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzA1ODUzMTE3RkRFNkQ5MDA1RjJCQ0IgLyog
SlNNZWRpYVRyYWNrQ29uc3RyYWludC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzA1ODUzMzE3
RkRFNkQ5MDA1RjJCQ0IgLyogSlNNZWRpYVRyYWNrQ29uc3RyYWludHMuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMDcwNTg1MzUxN0ZERTZEOTAwNUYyQkNCIC8qIEpTTWVkaWFUcmFja0NvbnN0cmFp
bnRTZXQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yOTAwMyw3ICsyODk2OSw2IEBACiAJCQkJOUJE
QTY0RDcxQjk3NUNFNTAwOUM0Mzg3IC8qIEpTU2hhZG93Um9vdC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlDRDlERTE3QTE3QUFDNzVCMDBFQTM4NkQgLyogSlNTb3VyY2VCdWZmZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQ0Q5REUxN0MxN0FBQzc1QjAwRUEzODZEIC8qIEpTU291cmNlQnVmZmVy
TGlzdC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkwNzYzMDZFMDE3RTE2MDg5MDA1QTdDNEUgLyog
SlNTb3VyY2VJbmZvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUFBN0ZFRUE0MTZBNEU2RjMwMDRD
MEMzMyAvKiBKU1NwZWVjaFN5bnRoZXNpcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBQTJBNUFE
MzE2QTQ4NjBEMDA5NzZBMjUgLyogSlNTcGVlY2hTeW50aGVzaXNFdmVudC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlBQTdGRUVBNjE2QTRFNkYzMDA0QzBDMzMgLyogSlNTcGVlY2hTeW50aGVzaXNV
dHRlcmFuY2UuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMDAwOSw3ICsyOTk3NCw2IEBACiAJCQkJ
Q0QzQTQ5NjQxN0E5RDAxQjAwMjc0RTQyIC8qIFNvdXJjZUJ1ZmZlckxpc3QuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQ0RDOEI1QUExODA0N0ZGMTAwMTZFNjg1IC8qIFNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODRBODFGNDEwRkM3RTAyNzAwOTU1MzAw
IC8qIFNvdXJjZUdyYXBoaWMuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMDc2MzA2RDcxN0UxNDlD
RjAwNUE3QzRFIC8qIFNvdXJjZUluZm8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRDAxQTI3QUQx
MEM5QkZEODAwMDI2QTQyIC8qIFNwYWNlU3BsaXRTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNjI2Q0RFMEUxMTQwNDI0QzAwMUU1QTY4IC8qIFNwYXRpYWxOYXZpZ2F0aW9uLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUFBMkE1QUQ1MTZBNDg2MTQwMDk3NUEyNSAvKiBTcGVlY2hTeW50aGVz
aXMuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9DYXB0dXJlRGV2aWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZS5oCShyZXZpc2lvbiAyMDU5MTQpCShmcm9t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZUluZm8uaDoy
MDU5MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2
aWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ2FwdHVyZURldmljZUluZm9faAor
I2RlZmluZSBDYXB0dXJlRGV2aWNlSW5mb19oCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQor
CisjaW5jbHVkZSA8UmVhbHRpbWVNZWRpYVNvdXJjZS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBDYXB0dXJlRGV2aWNl
SW5mbyB7CisgICAgU3RyaW5nIG1fcGVyc2lzdGVudERldmljZUlEOworICAgIFN0cmluZyBtX2xv
Y2FsaXplZE5hbWU7CisgICAgU3RyaW5nIG1fZ3JvdXBJRDsKKworICAgIFN0cmluZyBtX3NvdXJj
ZUlkOworCisgICAgYm9vbCBtX2VuYWJsZWQgeyBmYWxzZSB9OworICAgIFJlYWx0aW1lTWVkaWFT
b3VyY2U6OlR5cGUgbV9zb3VyY2VUeXBlIHsgUmVhbHRpbWVNZWRpYVNvdXJjZTo6Tm9uZSB9Owor
ICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9GYWNpbmdNb2RlIG1fcG9zaXRp
b24geyBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OlVua25vd24gfTsKK307CisKK2NsYXNz
IENhcHR1cmVTZXNzaW9uSW5mbyB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+Q2FwdHVyZVNlc3Np
b25JbmZvKCkgeyB9CisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzVmlkZW9TaXplKGNvbnN0IFN0
cmluZyYgLyogdmlkZW9TaXplICovKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1
YWwgU3RyaW5nIGJlc3RTZXNzaW9uUHJlc2V0Rm9yVmlkZW9EaW1lbnNpb25zKGludCAvKiB3aWR0
aCAqLywgaW50IC8qIGhlaWdodCAqLykgY29uc3QgeyByZXR1cm4gZW1wdHlTdHJpbmcoKTsgfQor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NU
UkVBTSkKKworI2VuZGlmIC8qIENhcHR1cmVEZXZpY2VJbmZvX2ggKi8KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2UuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlLmgJKHJl
dmlzaW9uIDIwNTkxNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0Nh
cHR1cmVEZXZpY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsOCArMjMsNyBAQAogICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCi0jaWZuZGVmIENhcHR1cmVEZXZpY2VJbmZvX2gKLSNkZWZpbmUgQ2FwdHVy
ZURldmljZUluZm9faAorI3ByYWdtYSBvbmNlCiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQog
CkBAIC0zMywyNyArMzIsMzAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdHJ1Y3QgQ2Fw
dHVyZURldmljZUluZm8gewotICAgIFN0cmluZyBtX3BlcnNpc3RlbnREZXZpY2VJRDsKLSAgICBT
dHJpbmcgbV9sb2NhbGl6ZWROYW1lOwotICAgIFN0cmluZyBtX2dyb3VwSUQ7Ci0KLSAgICBTdHJp
bmcgbV9zb3VyY2VJZDsKLQotICAgIGJvb2wgbV9lbmFibGVkIHsgZmFsc2UgfTsKLSAgICBSZWFs
dGltZU1lZGlhU291cmNlOjpUeXBlIG1fc291cmNlVHlwZSB7IFJlYWx0aW1lTWVkaWFTb3VyY2U6
Ok5vbmUgfTsKLSAgICBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OlZpZGVvRmFjaW5nTW9k
ZSBtX3Bvc2l0aW9uIHsgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpVbmtub3duIH07Ci19
OwotCi1jbGFzcyBDYXB0dXJlU2Vzc2lvbkluZm8geworY2xhc3MgQ2FwdHVyZURldmljZSB7CiBw
dWJsaWM6Ci0gICAgdmlydHVhbCB+Q2FwdHVyZVNlc3Npb25JbmZvKCkgeyB9Ci0gICAgdmlydHVh
bCBib29sIHN1cHBvcnRzVmlkZW9TaXplKGNvbnN0IFN0cmluZyYgLyogdmlkZW9TaXplICovKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgU3RyaW5nIGJlc3RTZXNzaW9uUHJl
c2V0Rm9yVmlkZW9EaW1lbnNpb25zKGludCAvKiB3aWR0aCAqLywgaW50IC8qIGhlaWdodCAqLykg
Y29uc3QgeyByZXR1cm4gZW1wdHlTdHJpbmcoKTsgfQorICAgIGVudW0gU291cmNlS2luZCB7IEF1
ZGlvLCBWaWRlbyB9OworCisgICAgQ2FwdHVyZURldmljZShjb25zdCBTdHJpbmcmIHBlcnNpc3Rl
bnRJZCwgU291cmNlS2luZCBraW5kLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBTdHJpbmcm
IGdyb3VwSWQpCisgICAgICAgIDogbV9wZXJzaXN0ZW50SWQocGVyc2lzdGVudElkKQorICAgICAg
ICAsIG1fa2luZChraW5kKQorICAgICAgICAsIG1fbGFiZWwobGFiZWwpCisgICAgICAgICwgbV9n
cm91cElkKGdyb3VwSWQpCisgICAgeworICAgIH0KKworICAgIGNvbnN0IFN0cmluZyYgcGVyc2lz
dGVudElkKCkgY29uc3QgeyByZXR1cm4gbV9wZXJzaXN0ZW50SWQ7IH0KKyAgICBjb25zdCBTdHJp
bmcmIGxhYmVsKCkgY29uc3QgeyByZXR1cm4gbV9sYWJlbDsgfQorICAgIGNvbnN0IFN0cmluZyYg
Z3JvdXBJZCgpIGNvbnN0IHsgcmV0dXJuIG1fZ3JvdXBJZDsgfQorICAgIFNvdXJjZUtpbmQga2lu
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fa2luZDsgfQorCitwcml2YXRlOgorICAgIFN0cmluZyBtX3Bl
cnNpc3RlbnRJZDsKKyAgICBTb3VyY2VLaW5kIG1fa2luZDsKKyAgICBTdHJpbmcgbV9sYWJlbDsK
KyAgICBTdHJpbmcgbV9ncm91cElkOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
ZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKLQotI2VuZGlmIC8qIENhcHR1cmVEZXZpY2VJ
bmZvX2ggKi8KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0NhcHR1
cmVEZXZpY2VNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5jcHAJKHJldmlzaW9uIDIwNTkxNCkJ
KGZyb20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFu
YWdlci5jcHA6MjA1OTE0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
Q2FwdHVyZURldmljZU1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjEwIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAi
Y29uZmlnLmgiCisjaW1wb3J0ICJDYXB0dXJlRGV2aWNlTWFuYWdlci5oIgorCisjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkKKworI2ltcG9ydCAiTG9nZ2luZy5oIgorI2ltcG9ydCAiTWVkaWFDb25z
dHJhaW50cy5oIgorI2ltcG9ydCAiUmVhbHRpbWVNZWRpYVNvdXJjZS5oIgorI2ltcG9ydCAiUmVh
bHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oIgorI2ltcG9ydCAiUmVhbHRpbWVNZWRpYVNvdXJjZVNl
dHRpbmdzLmgiCisjaW1wb3J0ICJVVUlELmgiCisjaW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgor
I2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdI
YXNoLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitDYXB0dXJlRGV2aWNlTWFuYWdl
cjo6fkNhcHR1cmVEZXZpY2VNYW5hZ2VyKCkKK3sKK30KKworVmVjdG9yPFJlZlB0cjxUcmFja1Nv
dXJjZUluZm8+PiBDYXB0dXJlRGV2aWNlTWFuYWdlcjo6Z2V0U291cmNlc0luZm8oY29uc3QgU3Ry
aW5nJiByZXF1ZXN0T3JpZ2luKQoreworICAgIFVOVVNFRF9QQVJBTShyZXF1ZXN0T3JpZ2luKTsK
KyAgICBWZWN0b3I8UmVmUHRyPFRyYWNrU291cmNlSW5mbz4+IHNvdXJjZXNJbmZvOworICAgIGZv
ciAoYXV0byBjYXB0dXJlRGV2aWNlIDogY2FwdHVyZURldmljZUxpc3QoKSkgeworICAgICAgICBp
ZiAoIWNhcHR1cmVEZXZpY2UubV9lbmFibGVkIHx8IGNhcHR1cmVEZXZpY2UubV9zb3VyY2VUeXBl
ID09IFJlYWx0aW1lTWVkaWFTb3VyY2U6Ok5vbmUpCisgICAgICAgICAgICBjb250aW51ZTsKKwor
ICAgICAgICBUcmFja1NvdXJjZUluZm86OlNvdXJjZUtpbmQgdHJhY2tTb3VyY2VUeXBlID0gY2Fw
dHVyZURldmljZS5tX3NvdXJjZVR5cGUgPT0gUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW8gPyBU
cmFja1NvdXJjZUluZm86OlZpZGVvIDogVHJhY2tTb3VyY2VJbmZvOjpBdWRpbzsKKyAgICAgICAg
c291cmNlc0luZm8uYXBwZW5kKFRyYWNrU291cmNlSW5mbzo6Y3JlYXRlKGNhcHR1cmVEZXZpY2Uu
bV9wZXJzaXN0ZW50RGV2aWNlSUQsIGNhcHR1cmVEZXZpY2UubV9zb3VyY2VJZCwgdHJhY2tTb3Vy
Y2VUeXBlLCBjYXB0dXJlRGV2aWNlLm1fbG9jYWxpemVkTmFtZSwgY2FwdHVyZURldmljZS5tX2dy
b3VwSUQpKTsKKyAgICB9CisgICAgTE9HKE1lZGlhLCAiQ2FwdHVyZURldmljZU1hbmFnZXI6Omdl
dFNvdXJjZXNJbmZvKCVwKSwgZm91bmQgJXp1IGFjdGl2ZSBkZXZpY2VzIiwgdGhpcywgc291cmNl
c0luZm8uc2l6ZSgpKTsKKyAgICByZXR1cm4gc291cmNlc0luZm87Cit9CisKK2Jvb2wgQ2FwdHVy
ZURldmljZU1hbmFnZXI6OmNhcHR1cmVEZXZpY2VGcm9tRGV2aWNlSUQoY29uc3QgU3RyaW5nJiBj
YXB0dXJlRGV2aWNlSUQsIENhcHR1cmVEZXZpY2VJbmZvJiBmb3VuZERldmljZSkKK3sKKyAgICBm
b3IgKGF1dG8mIGRldmljZSA6IGNhcHR1cmVEZXZpY2VMaXN0KCkpIHsKKyAgICAgICAgaWYgKGRl
dmljZS5tX3BlcnNpc3RlbnREZXZpY2VJRCA9PSBjYXB0dXJlRGV2aWNlSUQpIHsKKyAgICAgICAg
ICAgIGZvdW5kRGV2aWNlID0gZGV2aWNlOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQ2FwdHVyZURldmlj
ZU1hbmFnZXI6OnZlcmlmeUNvbnN0cmFpbnRzRm9yTWVkaWFUeXBlKFJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OlR5cGUgdHlwZSwgY29uc3QgTWVkaWFDb25zdHJhaW50cyYgY29uc3RyYWludHMsIGNvbnN0
IENhcHR1cmVTZXNzaW9uSW5mbyogc2Vzc2lvbiwgU3RyaW5nJiBpbnZhbGlkQ29uc3RyYWludCkK
K3sKKyAgICBhdXRvJiBtYW5kYXRvcnlDb25zdHJhaW50cyA9IGNvbnN0cmFpbnRzLm1hbmRhdG9y
eUNvbnN0cmFpbnRzKCk7CisgICAgZm9yIChhdXRvJiBuYW1lQ29uc3RyYWludFBhaXIgOiBtYW5k
YXRvcnlDb25zdHJhaW50cykgeworICAgICAgICBpZiAoc2Vzc2lvblN1cHBvcnRzQ29uc3RyYWlu
dChzZXNzaW9uLCB0eXBlLCAqbmFtZUNvbnN0cmFpbnRQYWlyLnZhbHVlKSkKKyAgICAgICAgICAg
IGNvbnRpbnVlOworCisgICAgICAgIGludmFsaWRDb25zdHJhaW50ID0gbmFtZUNvbnN0cmFpbnRQ
YWlyLmtleTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVl
OworfQorCitWZWN0b3I8UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+PiBDYXB0dXJlRGV2aWNl
TWFuYWdlcjo6YmVzdFNvdXJjZXNGb3JUeXBlQW5kQ29uc3RyYWludHMoUmVhbHRpbWVNZWRpYVNv
dXJjZTo6VHlwZSB0eXBlLCBNZWRpYUNvbnN0cmFpbnRzJiBjb25zdHJhaW50cykKK3sKKyAgICBW
ZWN0b3I8UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+PiBiZXN0U291cmNlc0xpc3Q7CisKKyAg
ICBzdHJ1Y3QgeworICAgICAgICBib29sIG9wZXJhdG9yKCkoUmVmUHRyPFJlYWx0aW1lTWVkaWFT
b3VyY2U+IGEsIFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPiBiKQorICAgICAgICB7CisgICAg
ICAgICAgICByZXR1cm4gYS0+Zml0bmVzc1Njb3JlKCkgPCBiLT5maXRuZXNzU2NvcmUoKTsKKyAg
ICAgICAgfQorICAgIH0gc29ydEJhc2VkT25GaXRuZXNzU2NvcmU7CisKKyAgICBmb3IgKGF1dG8m
IGNhcHR1cmVEZXZpY2UgOiBjYXB0dXJlRGV2aWNlTGlzdCgpKSB7CisgICAgICAgIGlmICghY2Fw
dHVyZURldmljZS5tX2VuYWJsZWQgfHwgY2FwdHVyZURldmljZS5tX3NvdXJjZUlkLmlzRW1wdHko
KSB8fCBjYXB0dXJlRGV2aWNlLm1fc291cmNlVHlwZSA9PSBSZWFsdGltZU1lZGlhU291cmNlOjpO
b25lKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgaWYgKFJlZlB0cjxSZWFsdGlt
ZU1lZGlhU291cmNlPiBjYXB0dXJlU291cmNlID0gc291cmNlV2l0aFVJRChjYXB0dXJlRGV2aWNl
Lm1fcGVyc2lzdGVudERldmljZUlELCB0eXBlLCAmY29uc3RyYWludHMpKQorICAgICAgICAgICAg
YmVzdFNvdXJjZXNMaXN0LmFwcGVuZChjYXB0dXJlU291cmNlLmxlYWtSZWYoKSk7CisgICAgfQor
ICAgIHN0ZDo6c29ydChiZXN0U291cmNlc0xpc3QuYmVnaW4oKSwgYmVzdFNvdXJjZXNMaXN0LmVu
ZCgpLCBzb3J0QmFzZWRPbkZpdG5lc3NTY29yZSk7CisgICAgcmV0dXJuIGJlc3RTb3VyY2VzTGlz
dDsKK30KKworUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+IENhcHR1cmVEZXZpY2VNYW5hZ2Vy
Ojpzb3VyY2VXaXRoVUlEKGNvbnN0IFN0cmluZyYgZGV2aWNlVUlELCBSZWFsdGltZU1lZGlhU291
cmNlOjpUeXBlIHR5cGUsIE1lZGlhQ29uc3RyYWludHMqIGNvbnN0cmFpbnRzKQoreworICAgIGZv
ciAoYXV0byYgY2FwdHVyZURldmljZSA6IGNhcHR1cmVEZXZpY2VMaXN0KCkpIHsKKyAgICAgICAg
aWYgKGNhcHR1cmVEZXZpY2UubV9wZXJzaXN0ZW50RGV2aWNlSUQgIT0gZGV2aWNlVUlEIHx8IGNh
cHR1cmVEZXZpY2UubV9zb3VyY2VUeXBlICE9IHR5cGUpCisgICAgICAgICAgICBjb250aW51ZTsK
KworICAgICAgICBpZiAoIWNhcHR1cmVEZXZpY2UubV9lbmFibGVkIHx8IHR5cGUgPT0gUmVhbHRp
bWVNZWRpYVNvdXJjZTo6Tm9uZSB8fCBjYXB0dXJlRGV2aWNlLm1fc291cmNlSWQuaXNFbXB0eSgp
KQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgaWYgKFJlYWx0aW1lTWVkaWFTb3Vy
Y2UqIG1lZGlhU291cmNlID0gY3JlYXRlTWVkaWFTb3VyY2VGb3JDYXB0dXJlRGV2aWNlV2l0aENv
bnN0cmFpbnRzKGNhcHR1cmVEZXZpY2UsIGNvbnN0cmFpbnRzKSkKKyAgICAgICAgICAgIHJldHVy
biBtZWRpYVNvdXJjZTsKKyAgICB9CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0NhcHR1cmVE
ZXZpY2VJbmZvKiBDYXB0dXJlRGV2aWNlTWFuYWdlcjo6YmVzdERldmljZUZvckZhY2luZ01vZGUo
UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpWaWRlb0ZhY2luZ01vZGUgZmFjaW5nTW9kZSkK
K3sKKyAgICBpZiAoZmFjaW5nTW9kZSA9PSBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OlVu
a25vd24pCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgZm9yIChhdXRvJiBkZXZpY2Ug
OiBjYXB0dXJlRGV2aWNlTGlzdCgpKSB7CisgICAgICAgIGlmIChkZXZpY2UubV9zb3VyY2VUeXBl
ID09IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvICYmIGRldmljZS5tX3Bvc2l0aW9uID09IGZh
Y2luZ01vZGUpCisgICAgICAgICAgICByZXR1cm4gJmRldmljZTsKKyAgICB9CisgICAgcmV0dXJu
IG51bGxwdHI7Cit9CisKK3N0YXRpYyBpbmxpbmUgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdz
OjpWaWRlb0ZhY2luZ01vZGUgZmFjaW5nTW9kZUZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBmYWNp
bmdNb2RlU3RyaW5nKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+
IHVzZXJGYWNpbmdNb2RlU3RyaW5nKCJ1c2VyIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gZW52aXJv
bm1lbnRGYWNpbmdNb2RlU3RyaW5nKCJlbnZpcm9ubWVudCIsIEF0b21pY1N0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+
IGxlZnRGYWNpbmdNb2RlU3RyaW5nKCJsZWZ0IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gcmlnaHRG
YWNpbmdNb2RlU3RyaW5nKCJyaWdodCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpOworICAgIGlmIChmYWNpbmdNb2RlU3RyaW5nID09IHVzZXJGYWNpbmdNb2RlU3RyaW5nKQor
ICAgICAgICByZXR1cm4gUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpVc2VyOworICAgIGlm
IChmYWNpbmdNb2RlU3RyaW5nID09IGVudmlyb25tZW50RmFjaW5nTW9kZVN0cmluZykKKyAgICAg
ICAgcmV0dXJuIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RW52aXJvbm1lbnQ7CisgICAg
aWYgKGZhY2luZ01vZGVTdHJpbmcgPT0gbGVmdEZhY2luZ01vZGVTdHJpbmcpCisgICAgICAgIHJl
dHVybiBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkxlZnQ7CisgICAgaWYgKGZhY2luZ01v
ZGVTdHJpbmcgPT0gcmlnaHRGYWNpbmdNb2RlU3RyaW5nKQorICAgICAgICByZXR1cm4gUmVhbHRp
bWVNZWRpYVNvdXJjZVNldHRpbmdzOjpSaWdodDsKKyAgICByZXR1cm4gUmVhbHRpbWVNZWRpYVNv
dXJjZVNldHRpbmdzOjpVbmtub3duOworfQorCitib29sIENhcHR1cmVEZXZpY2VNYW5hZ2VyOjpz
ZXNzaW9uU3VwcG9ydHNDb25zdHJhaW50KGNvbnN0IENhcHR1cmVTZXNzaW9uSW5mbyosIFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGUgdHlwZSwgY29uc3QgTWVkaWFDb25zdHJhaW50JiBjb25zdHJh
aW50KQoreworICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50
cyYgc3VwcG9ydGVkQ29uc3RyYWludHMgPSBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzaW5n
bGV0b24oKS5zdXBwb3J0ZWRDb25zdHJhaW50cygpOworICAgIE1lZGlhQ29uc3RyYWludFR5cGUg
Y29uc3RyYWludFR5cGUgPSBjb25zdHJhaW50LnR5cGUoKTsKKyAgICBpZiAoIXN1cHBvcnRlZENv
bnN0cmFpbnRzLnN1cHBvcnRzQ29uc3RyYWludChjb25zdHJhaW50VHlwZSkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIHN3aXRjaCAoY29uc3RyYWludFR5cGUpIHsKKyAgICBjYXNlIE1l
ZGlhQ29uc3RyYWludFR5cGU6OldpZHRoOgorICAgICAgICByZXR1cm4gdHlwZSA9PSBSZWFsdGlt
ZU1lZGlhU291cmNlOjpWaWRlbzsKKworICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6SGVp
Z2h0OgorICAgICAgICByZXR1cm4gdHlwZSA9PSBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbzsK
KworICAgIGNhc2UgTWVkaWFDb25zdHJhaW50VHlwZTo6RnJhbWVSYXRlOiB7CisgICAgICAgIGlm
ICh0eXBlID09IFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgICAgIHJldHVybiBpc1N1cHBvcnRlZEZyYW1lUmF0ZShjb25zdHJhaW50
KTsKKyAgICB9CisgICAgY2FzZSBNZWRpYUNvbnN0cmFpbnRUeXBlOjpGYWNpbmdNb2RlOiB7Cisg
ICAgICAgIGlmICh0eXBlID09IFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwNzkzLiBIYW5kbGUgc2VxdWVuY2Ugb2YgZmFjaW5nTW9k
ZSBjb25zdHJhaW50cy4KKyAgICAgICAgVmVjdG9yPFN0cmluZz4gZXhhY3RGYWNpbmdNb2RlOwor
ICAgICAgICBpZiAoIWNvbnN0cmFpbnQuZ2V0RXhhY3QoZXhhY3RGYWNpbmdNb2RlKSkKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICByZXR1cm4gYmVzdERldmljZUZvckZhY2lu
Z01vZGUoZmFjaW5nTW9kZUZyb21TdHJpbmcoZXhhY3RGYWNpbmdNb2RlWzBdKSk7CisgICAgfQor
ICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK2Jvb2wgQ2Fw
dHVyZURldmljZU1hbmFnZXI6OmlzU3VwcG9ydGVkRnJhbWVSYXRlKGNvbnN0IE1lZGlhQ29uc3Ry
YWludCYgY29uc3RyYWludCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDc5NC4gRHluYW1pY2FsbHkgY2hlY2sgbWVkaWEg
ZGV2aWNlcyBpZiBmcmFtZSByYXRlIGlzIHN1cHBvcnRlZC4KKyAgICBib29sIGlzU3VwcG9ydGVk
ID0gdHJ1ZTsKKworICAgIGludCBtaW4gPSAwOworICAgIGlmIChjb25zdHJhaW50LmdldE1pbiht
aW4pKQorICAgICAgICBpc1N1cHBvcnRlZCAmPSBtaW4gPiA2MDsKKworICAgIGludCBtYXggPSA2
MDsKKyAgICBpZiAoY29uc3RyYWludC5nZXRNYXgobWF4KSkKKyAgICAgICAgaXNTdXBwb3J0ZWQg
Jj0gbWF4IDwgbWluOworCisgICAgaW50IGV4YWN0OworICAgIGlmIChjb25zdHJhaW50LmdldEV4
YWN0KGV4YWN0KSkKKyAgICAgICAgaXNTdXBwb3J0ZWQgJj0gKGV4YWN0IDwgbWluIHx8IGV4YWN0
ID4gbWF4KTsKKworICAgIHJldHVybiBpc1N1cHBvcnRlZDsKK30KKworI2VuZGlmIC8vIEVOQUJM
RShNRURJQV9TVFJFQU0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9DYXB0dXJlRGV2aWNlTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwCShyZXZpc2lvbiAy
MDU5MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2
aWNlTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDE2ICs0NCwxNSBAQCBDYXB0dXJl
RGV2aWNlTWFuYWdlcjo6fkNhcHR1cmVEZXZpY2VNYW5hCiB7CiB9CiAKLVZlY3RvcjxSZWZQdHI8
VHJhY2tTb3VyY2VJbmZvPj4gQ2FwdHVyZURldmljZU1hbmFnZXI6OmdldFNvdXJjZXNJbmZvKGNv
bnN0IFN0cmluZyYgcmVxdWVzdE9yaWdpbikKK1ZlY3RvcjxDYXB0dXJlRGV2aWNlPiBDYXB0dXJl
RGV2aWNlTWFuYWdlcjo6Z2V0U291cmNlc0luZm8oKQogewotICAgIFVOVVNFRF9QQVJBTShyZXF1
ZXN0T3JpZ2luKTsKLSAgICBWZWN0b3I8UmVmUHRyPFRyYWNrU291cmNlSW5mbz4+IHNvdXJjZXNJ
bmZvOworICAgIFZlY3RvcjxDYXB0dXJlRGV2aWNlPiBzb3VyY2VzSW5mbzsKICAgICBmb3IgKGF1
dG8gY2FwdHVyZURldmljZSA6IGNhcHR1cmVEZXZpY2VMaXN0KCkpIHsKICAgICAgICAgaWYgKCFj
YXB0dXJlRGV2aWNlLm1fZW5hYmxlZCB8fCBjYXB0dXJlRGV2aWNlLm1fc291cmNlVHlwZSA9PSBS
ZWFsdGltZU1lZGlhU291cmNlOjpOb25lKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAg
ICAgVHJhY2tTb3VyY2VJbmZvOjpTb3VyY2VLaW5kIHRyYWNrU291cmNlVHlwZSA9IGNhcHR1cmVE
ZXZpY2UubV9zb3VyY2VUeXBlID09IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvID8gVHJhY2tT
b3VyY2VJbmZvOjpWaWRlbyA6IFRyYWNrU291cmNlSW5mbzo6QXVkaW87Ci0gICAgICAgIHNvdXJj
ZXNJbmZvLmFwcGVuZChUcmFja1NvdXJjZUluZm86OmNyZWF0ZShjYXB0dXJlRGV2aWNlLm1fcGVy
c2lzdGVudERldmljZUlELCBjYXB0dXJlRGV2aWNlLm1fc291cmNlSWQsIHRyYWNrU291cmNlVHlw
ZSwgY2FwdHVyZURldmljZS5tX2xvY2FsaXplZE5hbWUsIGNhcHR1cmVEZXZpY2UubV9ncm91cElE
KSk7CisgICAgICAgIENhcHR1cmVEZXZpY2U6OlNvdXJjZUtpbmQga2luZCA9IGNhcHR1cmVEZXZp
Y2UubV9zb3VyY2VUeXBlID09IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvID8gQ2FwdHVyZURl
dmljZTo6VmlkZW8gOiBDYXB0dXJlRGV2aWNlOjpBdWRpbzsKKyAgICAgICAgc291cmNlc0luZm8u
YXBwZW5kKENhcHR1cmVEZXZpY2UoY2FwdHVyZURldmljZS5tX3BlcnNpc3RlbnREZXZpY2VJRCwg
a2luZCwgY2FwdHVyZURldmljZS5tX2xvY2FsaXplZE5hbWUsIGNhcHR1cmVEZXZpY2UubV9ncm91
cElEKSk7CiAgICAgfQogICAgIExPRyhNZWRpYSwgIkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpnZXRT
b3VyY2VzSW5mbyglcCksIGZvdW5kICV6dSBhY3RpdmUgZGV2aWNlcyIsIHRoaXMsIHNvdXJjZXNJ
bmZvLnNpemUoKSk7CiAgICAgcmV0dXJuIHNvdXJjZXNJbmZvOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFu
YWdlci5oCShyZXZpc2lvbiAyMDU5MTQpCShmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuaDoyMDU5MTQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIENhcHR1cmVEZXZpY2VNYW5hZ2VyX2gKKyNkZWZpbmUgQ2FwdHVy
ZURldmljZU1hbmFnZXJfaAorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUg
IkNhcHR1cmVEZXZpY2VJbmZvLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNS
ZXF1ZXN0Q2xpZW50LmgiCisjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZS5oIgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IENhcHR1cmVEZXZpY2VNYW5hZ2VyIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIFZlY3RvcjxDYXB0
dXJlRGV2aWNlSW5mbz4mIGNhcHR1cmVEZXZpY2VMaXN0KCkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCByZWZyZXNoQ2FwdHVyZURldmljZUxpc3QoKSB7IH0KKyAgICB2aXJ0dWFsIFRyYWNrU291cmNl
SW5mb1ZlY3RvciBnZXRTb3VyY2VzSW5mbyhjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIFZl
Y3RvcjxSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4+IGJlc3RTb3VyY2VzRm9yVHlwZUFuZENv
bnN0cmFpbnRzKFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUsIE1lZGlhQ29uc3RyYWludHMmKTsK
KyAgICB2aXJ0dWFsIFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPiBzb3VyY2VXaXRoVUlEKGNv
bnN0IFN0cmluZyYsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUsIE1lZGlhQ29uc3RyYWludHMq
KTsKKworICAgIHZpcnR1YWwgYm9vbCB2ZXJpZnlDb25zdHJhaW50c0Zvck1lZGlhVHlwZShSZWFs
dGltZU1lZGlhU291cmNlOjpUeXBlLCBjb25zdCBNZWRpYUNvbnN0cmFpbnRzJiwgY29uc3QgQ2Fw
dHVyZVNlc3Npb25JbmZvKiwgU3RyaW5nJik7CisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIH5D
YXB0dXJlRGV2aWNlTWFuYWdlcigpOworICAgIHZpcnR1YWwgUmVhbHRpbWVNZWRpYVNvdXJjZSog
Y3JlYXRlTWVkaWFTb3VyY2VGb3JDYXB0dXJlRGV2aWNlV2l0aENvbnN0cmFpbnRzKGNvbnN0IENh
cHR1cmVEZXZpY2VJbmZvJiwgTWVkaWFDb25zdHJhaW50cyopID0gMDsKKworICAgIHZpcnR1YWwg
Q2FwdHVyZVNlc3Npb25JbmZvIGRlZmF1bHRDYXB0dXJlU2Vzc2lvbigpIGNvbnN0IHsgcmV0dXJu
IENhcHR1cmVTZXNzaW9uSW5mbygpOyB9CisgICAgdmlydHVhbCBib29sIHNlc3Npb25TdXBwb3J0
c0NvbnN0cmFpbnQoY29uc3QgQ2FwdHVyZVNlc3Npb25JbmZvKiwgUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6VHlwZSwgY29uc3QgTWVkaWFDb25zdHJhaW50Jik7CisgICAgdmlydHVhbCBib29sIGlzU3Vw
cG9ydGVkRnJhbWVSYXRlKGNvbnN0IE1lZGlhQ29uc3RyYWludCYpIGNvbnN0OworCisgICAgYm9v
bCBjYXB0dXJlRGV2aWNlRnJvbURldmljZUlEKGNvbnN0IFN0cmluZyYgY2FwdHVyZURldmljZUlE
LCBDYXB0dXJlRGV2aWNlSW5mbyYgc291cmNlKTsKKyAgICBDYXB0dXJlRGV2aWNlSW5mbyogYmVz
dERldmljZUZvckZhY2luZ01vZGUoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpWaWRlb0Zh
Y2luZ01vZGUpOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5B
QkxFKE1FRElBX1NUUkVBTSkKKworI2VuZGlmIC8qIENhcHR1cmVEZXZpY2VNYW5hZ2VyX2ggKi8K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VN
YW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vQ2FwdHVyZURldmljZU1hbmFnZXIuaAkocmV2aXNpb24gMjA1OTE0KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjgsMTggKzI4LDM3IEBACiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQog
Ci0jaW5jbHVkZSAiQ2FwdHVyZURldmljZUluZm8uaCIKLSNpbmNsdWRlICJNZWRpYVN0cmVhbVRy
YWNrU291cmNlc1JlcXVlc3RDbGllbnQuaCIKKyNpbmNsdWRlICJDYXB0dXJlRGV2aWNlLmgiCiAj
aW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZS5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0cnVjdCBDYXB0dXJlRGV2aWNlSW5m
byB7CitwdWJsaWM6CisgICAgU3RyaW5nIG1fcGVyc2lzdGVudERldmljZUlEOworICAgIFN0cmlu
ZyBtX2xvY2FsaXplZE5hbWU7CisgICAgU3RyaW5nIG1fZ3JvdXBJRDsKKworICAgIFN0cmluZyBt
X3NvdXJjZUlkOworCisgICAgYm9vbCBtX2VuYWJsZWQgeyBmYWxzZSB9OworICAgIFJlYWx0aW1l
TWVkaWFTb3VyY2U6OlR5cGUgbV9zb3VyY2VUeXBlIHsgUmVhbHRpbWVNZWRpYVNvdXJjZTo6Tm9u
ZSB9OworICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9GYWNpbmdNb2RlIG1f
cG9zaXRpb24geyBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OlVua25vd24gfTsKK307CisK
K2NsYXNzIENhcHR1cmVTZXNzaW9uSW5mbyB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+Q2FwdHVy
ZVNlc3Npb25JbmZvKCkgeyB9CisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzVmlkZW9TaXplKGNv
bnN0IFN0cmluZyYgLyogdmlkZW9TaXplICovKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAg
IHZpcnR1YWwgU3RyaW5nIGJlc3RTZXNzaW9uUHJlc2V0Rm9yVmlkZW9EaW1lbnNpb25zKGludCAv
KiB3aWR0aCAqLywgaW50IC8qIGhlaWdodCAqLykgY29uc3QgeyByZXR1cm4gZW1wdHlTdHJpbmco
KTsgfQorfTsKKwogY2xhc3MgQ2FwdHVyZURldmljZU1hbmFnZXIgewogcHVibGljOgogICAgIHZp
cnR1YWwgVmVjdG9yPENhcHR1cmVEZXZpY2VJbmZvPiYgY2FwdHVyZURldmljZUxpc3QoKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIHJlZnJlc2hDYXB0dXJlRGV2aWNlTGlzdCgpIHsgfQotICAgIHZp
cnR1YWwgVHJhY2tTb3VyY2VJbmZvVmVjdG9yIGdldFNvdXJjZXNJbmZvKGNvbnN0IFN0cmluZyYp
OworICAgIHZpcnR1YWwgVmVjdG9yPENhcHR1cmVEZXZpY2U+IGdldFNvdXJjZXNJbmZvKCk7CiAg
ICAgdmlydHVhbCBWZWN0b3I8UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+PiBiZXN0U291cmNl
c0ZvclR5cGVBbmRDb25zdHJhaW50cyhSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlLCBNZWRpYUNv
bnN0cmFpbnRzJik7CiAgICAgdmlydHVhbCBSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4gc291
cmNlV2l0aFVJRChjb25zdCBTdHJpbmcmLCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlLCBNZWRp
YUNvbnN0cmFpbnRzKik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tTb3Vy
Y2VzUmVxdWVzdENsaWVudC5oCShyZXZpc2lvbiAyMDU5MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQu
aAkobm9uZXhpc3RlbnQpCkBAIC0xLDk4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBNZWRpYVN0cmVhbVRyYWNrU291cmNlc1Jl
cXVlc3RDbGllbnRfaAotI2RlZmluZSBNZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGll
bnRfaAotCi0jaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLQotI2luY2x1ZGUgPHd0Zi9QYXNzUmVm
UHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZi5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
Ci0jaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotY2xhc3MgVHJhY2tTb3VyY2VJbmZvIDogcHVibGljIFJlZkNvdW50ZWQ8VHJhY2tTb3Vy
Y2VJbmZvPiB7Ci1wdWJsaWM6Ci0gICAgZW51bSBTb3VyY2VLaW5kIHsgQXVkaW8sIFZpZGVvIH07
Ci0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxUcmFja1NvdXJjZUluZm8+IGNyZWF0ZShjb25zdCBB
dG9taWNTdHJpbmcmIHBlcnNpc3RlbnRJZCwgY29uc3QgQXRvbWljU3RyaW5nJiBpZCwgU291cmNl
S2luZCBraW5kLCBjb25zdCBBdG9taWNTdHJpbmcmIGxhYmVsKQotICAgIHsKLSAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBUcmFja1NvdXJjZUluZm8ocGVyc2lzdGVudElkLCBpZCwga2luZCwg
bGFiZWwpKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgUmVmPFRyYWNrU291cmNlSW5mbz4gY3JlYXRl
KGNvbnN0IEF0b21pY1N0cmluZyYgcGVyc2lzdGVudElkLCBjb25zdCBBdG9taWNTdHJpbmcmIGlk
LCBTb3VyY2VLaW5kIGtpbmQsIGNvbnN0IEF0b21pY1N0cmluZyYgbGFiZWwsIGNvbnN0IEF0b21p
Y1N0cmluZyYgZ3JvdXBJZCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRy
YWNrU291cmNlSW5mbyhwZXJzaXN0ZW50SWQsIGlkLCBraW5kLCBsYWJlbCwgZ3JvdXBJZCkpOwot
ICAgIH0KLQotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgaWQoKSBjb25zdCB7IHJldHVybiBtX2lk
OyB9Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBwZXJzaXN0ZW50SWQoKSBjb25zdCB7IHJldHVy
biBtX3BlcnNpc3RlbnRJZDsgfQotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbGFiZWwoKSBjb25z
dCB7IHJldHVybiBtX2xhYmVsOyB9Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBncm91cElkKCkg
Y29uc3QgeyByZXR1cm4gbV9ncm91cElkOyB9Ci0gICAgU291cmNlS2luZCBraW5kKCkgY29uc3Qg
eyByZXR1cm4gbV9raW5kOyB9Ci0KLXByaXZhdGU6Ci0gICAgVHJhY2tTb3VyY2VJbmZvKGNvbnN0
IEF0b21pY1N0cmluZyYgcGVyc2lzdGVudElkLCBjb25zdCBBdG9taWNTdHJpbmcmIGlkLCBTb3Vy
Y2VLaW5kIGtpbmQsIGNvbnN0IEF0b21pY1N0cmluZyYgbGFiZWwpCi0gICAgICAgIDogbV9wZXJz
aXN0ZW50SWQocGVyc2lzdGVudElkKQotICAgICAgICAsIG1faWQoaWQpCi0gICAgICAgICwgbV9r
aW5kKGtpbmQpCi0gICAgICAgICwgbV9sYWJlbChsYWJlbCkKLSAgICB7Ci0gICAgfQotCi0gICAg
VHJhY2tTb3VyY2VJbmZvKGNvbnN0IEF0b21pY1N0cmluZyYgcGVyc2lzdGVudElkLCBjb25zdCBB
dG9taWNTdHJpbmcmIGlkLCBTb3VyY2VLaW5kIGtpbmQsIGNvbnN0IEF0b21pY1N0cmluZyYgbGFi
ZWwsIGNvbnN0IEF0b21pY1N0cmluZyYgZ3JvdXBJZCkKLSAgICAgICAgOiBtX3BlcnNpc3RlbnRJ
ZChwZXJzaXN0ZW50SWQpCi0gICAgICAgICwgbV9pZChpZCkKLSAgICAgICAgLCBtX2tpbmQoa2lu
ZCkKLSAgICAgICAgLCBtX2xhYmVsKGxhYmVsKQotICAgICAgICAsIG1fZ3JvdXBJZChncm91cElk
KQotICAgIHsKLSAgICB9Ci0KLSAgICBBdG9taWNTdHJpbmcgbV9wZXJzaXN0ZW50SWQ7Ci0gICAg
QXRvbWljU3RyaW5nIG1faWQ7Ci0gICAgU291cmNlS2luZCBtX2tpbmQ7Ci0gICAgQXRvbWljU3Ry
aW5nIG1fbGFiZWw7Ci0gICAgQXRvbWljU3RyaW5nIG1fZ3JvdXBJZDsKLX07Ci0KLXR5cGVkZWYg
VmVjdG9yPFJlZlB0cjxUcmFja1NvdXJjZUluZm8+PiBUcmFja1NvdXJjZUluZm9WZWN0b3I7Ci0K
LWNsYXNzIE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVudCA6IHB1YmxpYyBSZWZD
b3VudGVkPE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVudD4gewotcHVibGljOgot
ICAgIHZpcnR1YWwgfk1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVudCgpIHsgfQot
Ci0gICAgdmlydHVhbCBjb25zdCBTdHJpbmcmIHJlcXVlc3RPcmlnaW4oKSBjb25zdCA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRlVHJhY2tTb3VyY2VJbmZvUmVxdWVzdChjb25zdCBU
cmFja1NvdXJjZUluZm9WZWN0b3ImKSA9IDA7Ci19OwotCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKLQotI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCi0KLSNlbmRpZiAvLyBNZWRpYVN0
cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnRfaApJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXIuaAkocmV2aXNpb24gMjA1OTE0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC00MSw5ICs0MSw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ2FwdHVyZURl
dmljZTsKIGNsYXNzIE1lZGlhQ29uc3RyYWludHM7CiBjbGFzcyBNZWRpYVN0cmVhbUNyZWF0aW9u
Q2xpZW50OwotY2xhc3MgTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0Q2xpZW50OwogY2xh
c3MgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOwogY2xhc3MgUmVhbHRpbWVNZWRpYVNvdXJj
ZVN1cHBvcnRlZENvbnN0cmFpbnRzOwogY2xhc3MgVHJhY2tTb3VyY2VJbmZvOwpAQCAtNjEsMTAg
KzYxLDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGNyZWF0ZU1lZGlhU3RyZWFtKFBh
c3NSZWZQdHI8TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudD4sIE1lZGlhQ29uc3RyYWludHMmIGF1
ZGlvQ29uc3RyYWludHMsIE1lZGlhQ29uc3RyYWludHMmIHZpZGVvQ29uc3RyYWludHMpID0gMDsK
IAotICAgIHZpcnR1YWwgYm9vbCBnZXRNZWRpYVN0cmVhbVRyYWNrU291cmNlcyhQYXNzUmVmUHRy
PE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVudD4pID0gMDsKKyAgICB2aXJ0dWFs
IFZlY3RvcjxDYXB0dXJlRGV2aWNlPiBnZXRNZWRpYVN0cmVhbURldmljZXMoKSA9IDA7CiAgICAg
Ci0gICAgdmlydHVhbCBSZWZQdHI8VHJhY2tTb3VyY2VJbmZvPiBzb3VyY2VXaXRoVUlEKGNvbnN0
IFN0cmluZyYsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUsIE1lZGlhQ29uc3RyYWludHMqKSA9
IDA7Ci0KICAgICB2aXJ0dWFsIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25z
dHJhaW50cyYgc3VwcG9ydGVkQ29uc3RyYWludHMoKSB7IHJldHVybiBtX3N1cHBvcnRlZENvbnN0
cmFpbnRzOyB9CiAKIHByb3RlY3RlZDoKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFn
ZXIuaAkocmV2aXNpb24gMjA1OTE0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjks
NyArMjksNiBAQAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShBVkZPVU5EQVRJT04p
CiAKICNpbmNsdWRlICJDYXB0dXJlRGV2aWNlTWFuYWdlci5oIgotI2luY2x1ZGUgIk1lZGlhU3Ry
ZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENsaWVudC5oIgogI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFT
b3VyY2UuaCIKICNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWlu
dHMuaCIKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KQEAgLTYzLDcgKzYyLDcgQEAg
cHVibGljOgogICAgIFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPiBzb3VyY2VXaXRoVUlEKGNv
bnN0IFN0cmluZyYsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUsIE1lZGlhQ29uc3RyYWludHMq
KSBvdmVycmlkZTsKICAgICBWZWN0b3I8UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+PiBiZXN0
U291cmNlc0ZvclR5cGVBbmRDb25zdHJhaW50cyhSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlLCBN
ZWRpYUNvbnN0cmFpbnRzJikgb3ZlcnJpZGU7CiAKLSAgICBUcmFja1NvdXJjZUluZm9WZWN0b3Ig
Z2V0U291cmNlc0luZm8oY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgVmVjdG9yPENhcHR1
cmVEZXZpY2U+IGdldFNvdXJjZXNJbmZvKCkgb3ZlcnJpZGU7CiAgICAgYm9vbCB2ZXJpZnlDb25z
dHJhaW50c0Zvck1lZGlhVHlwZShSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlLCBjb25zdCBNZWRp
YUNvbnN0cmFpbnRzJiwgY29uc3QgQ2FwdHVyZVNlc3Npb25JbmZvKiwgU3RyaW5nJikgb3ZlcnJp
ZGU7CiAKICAgICB2b2lkIGRldmljZUNvbm5lY3RlZCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVy
ZURldmljZU1hbmFnZXIubW0JKHJldmlzaW9uIDIwNTkxNCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0yNDAsMTIgKzI0MCwxMiBAQCBSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4g
QVZDYXB0dXJlRGV2CiAgICAgcmV0dXJuIENhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzb3VyY2VXaXRo
VUlEKGRldmljZVVJRCwgdHlwZSwgY29uc3RyYWludHMpOwogfQogCi1UcmFja1NvdXJjZUluZm9W
ZWN0b3IgQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6Z2V0U291cmNlc0luZm8oY29uc3QgU3RyaW5n
JiByZXF1ZXN0T3JpZ2luKQorVmVjdG9yPENhcHR1cmVEZXZpY2U+IEFWQ2FwdHVyZURldmljZU1h
bmFnZXI6OmdldFNvdXJjZXNJbmZvKCkKIHsKICAgICBpZiAoIWlzQXZhaWxhYmxlKCkpCi0gICAg
ICAgIHJldHVybiBUcmFja1NvdXJjZUluZm9WZWN0b3IoKTsKKyAgICAgICAgcmV0dXJuIFZlY3Rv
cjxDYXB0dXJlRGV2aWNlPigpOwogCi0gICAgcmV0dXJuIENhcHR1cmVEZXZpY2VNYW5hZ2VyOjpn
ZXRTb3VyY2VzSW5mbyhyZXF1ZXN0T3JpZ2luKTsKKyAgICByZXR1cm4gQ2FwdHVyZURldmljZU1h
bmFnZXI6OmdldFNvdXJjZXNJbmZvKCk7CiB9CiAKIGJvb2wgQVZDYXB0dXJlRGV2aWNlTWFuYWdl
cjo6dmVyaWZ5Q29uc3RyYWludHNGb3JNZWRpYVR5cGUoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlw
ZSB0eXBlLCBjb25zdCBNZWRpYUNvbnN0cmFpbnRzJiBjb25zdHJhaW50cywgY29uc3QgQ2FwdHVy
ZVNlc3Npb25JbmZvKiBzZXNzaW9uLCBTdHJpbmcmIGludmFsaWRDb25zdHJhaW50KQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXJNYWMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmNwcAkocmV2aXNpb24g
MjA1OTE0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0
aW1lTWVkaWFTb3VyY2VDZW50ZXJNYWMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw2
IEBACiAjaW5jbHVkZSAiQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5oIgogI2luY2x1ZGUgIk1lZGlh
U3RyZWFtQ3JlYXRpb25DbGllbnQuaCIKICNpbmNsdWRlICJNZWRpYVN0cmVhbVByaXZhdGUuaCIK
LSNpbmNsdWRlICJNZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQuaCIKICNpbmNs
dWRlIDx3dGYvTWFpblRocmVhZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xNjAsMjQg
KzE1OSw5IEBAIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYzo6Y3JlYXQKICAgICBj
bGllbnQtPmRpZENyZWF0ZVN0cmVhbShNZWRpYVN0cmVhbVByaXZhdGU6OmNyZWF0ZShhdWRpb1Nv
dXJjZXMsIHZpZGVvU291cmNlcykpOwogfQogCi1ib29sIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50
ZXJNYWM6OmdldE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1U
cmFja1NvdXJjZXNSZXF1ZXN0Q2xpZW50PiBwcnBDbGllbnQpCitWZWN0b3I8Q2FwdHVyZURldmlj
ZT4gUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYzo6Z2V0TWVkaWFTdHJlYW1EZXZpY2VzKCkK
IHsKLSAgICBSZWZQdHI8TWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0Q2xpZW50PiByZXF1
ZXN0Q2xpZW50ID0gcHJwQ2xpZW50OwotICAgIFRyYWNrU291cmNlSW5mb1ZlY3RvciBzb3VyY2Vz
ID0gQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2luZ2xldG9uKCkuZ2V0U291cmNlc0luZm8ocmVx
dWVzdENsaWVudC0+cmVxdWVzdE9yaWdpbigpKTsKLQotICAgIGNhbGxPbk1haW5UaHJlYWQoW3Ro
aXMsIHJlcXVlc3RDbGllbnQgPSBXVEZNb3ZlKHJlcXVlc3RDbGllbnQpLCBzb3VyY2VzID0gV1RG
TW92ZShzb3VyY2VzKV0gewotICAgICAgICByZXF1ZXN0Q2xpZW50LT5kaWRDb21wbGV0ZVRyYWNr
U291cmNlSW5mb1JlcXVlc3Qoc291cmNlcyk7Ci0gICAgfSk7Ci0KLSAgICByZXR1cm4gdHJ1ZTsK
LX0KLQotUmVmUHRyPFRyYWNrU291cmNlSW5mbz4gUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1h
Yzo6c291cmNlV2l0aFVJRChjb25zdCBTdHJpbmcmIFVJRCwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6
VHlwZSB0eXBlLCBNZWRpYUNvbnN0cmFpbnRzKiBjb25zdHJhaW50cykKLXsKLSAgICBSZWZQdHI8
UmVhbHRpbWVNZWRpYVNvdXJjZT4gbWVkaWFTb3VyY2UgPSBBVkNhcHR1cmVEZXZpY2VNYW5hZ2Vy
OjpzaW5nbGV0b24oKS5zb3VyY2VXaXRoVUlEKFVJRCwgdHlwZSwgY29uc3RyYWludHMpOwotICAg
IGlmICghbWVkaWFTb3VyY2UpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBU
cmFja1NvdXJjZUluZm86OmNyZWF0ZShtZWRpYVNvdXJjZS0+cGVyc2lzdGVudElEKCksIG1lZGlh
U291cmNlLT5pZCgpLCBtZWRpYVNvdXJjZS0+dHlwZSgpID09IFJlYWx0aW1lTWVkaWFTb3VyY2U6
OlR5cGU6OlZpZGVvID8gVHJhY2tTb3VyY2VJbmZvOjpTb3VyY2VLaW5kOjpWaWRlbyA6IFRyYWNr
U291cmNlSW5mbzo6U291cmNlS2luZDo6QXVkaW8sIG1lZGlhU291cmNlLT5uYW1lKCkpOworICAg
IHJldHVybiBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0b24oKS5nZXRTb3VyY2VzSW5m
bygpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck1hYy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFs
dGltZU1lZGlhU291cmNlQ2VudGVyTWFjLmgJKHJldmlzaW9uIDIwNTkxNCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
TWFjLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDggKzUwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRzKE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQqLCBN
ZWRpYUNvbnN0cmFpbnRzJiBhdWRpb0NvbnN0cmFpbnRzLCBNZWRpYUNvbnN0cmFpbnRzJiB2aWRl
b0NvbnN0cmFpbnRzKSBmaW5hbDsKICAgICB2b2lkIGNyZWF0ZU1lZGlhU3RyZWFtKFBhc3NSZWZQ
dHI8TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudD4sIE1lZGlhQ29uc3RyYWludHMmIGF1ZGlvQ29u
c3RyYWludHMsIE1lZGlhQ29uc3RyYWludHMmIHZpZGVvQ29uc3RyYWludHMpIGZpbmFsOwogICAg
IHZvaWQgY3JlYXRlTWVkaWFTdHJlYW0oTWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudCosIGNvbnN0
IFN0cmluZyYgYXVkaW9EZXZpY2VJRCwgY29uc3QgU3RyaW5nJiB2aWRlb0RldmljZUlEKSBmaW5h
bDsKLSAgICBib29sIGdldE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzKFBhc3NSZWZQdHI8TWVkaWFT
dHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0Q2xpZW50PikgZmluYWw7Ci0gICAgUmVmUHRyPFRyYWNr
U291cmNlSW5mbz4gc291cmNlV2l0aFVJRChjb25zdCBTdHJpbmcmLCBSZWFsdGltZU1lZGlhU291
cmNlOjpUeXBlLCBNZWRpYUNvbnN0cmFpbnRzKikgZmluYWw7CisgICAgVmVjdG9yPENhcHR1cmVE
ZXZpY2U+IGdldE1lZGlhU3RyZWFtRGV2aWNlcygpIGZpbmFsOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vb3Bl
bndlYnJ0Yy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyT3dyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRjL1JlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXJPd3IuY3BwCShyZXZpc2lvbiAyMDU5MTQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50
ZXJPd3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw5ICszNiw5IEBACiAjaWYgRU5BQkxFKE1F
RElBX1NUUkVBTSkgJiYgVVNFKE9QRU5XRUJSVEMpCiAjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNv
dXJjZUNlbnRlck93ci5oIgogCisjaW5jbHVkZSAiQ2FwdHVyZURldmljZS5oIgogI2luY2x1ZGUg
Ik1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQuaCIKICNpbmNsdWRlICJNZWRpYVN0cmVhbVByaXZh
dGUuaCIKLSNpbmNsdWRlICJNZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQuaCIK
ICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIk9wZW5XZWJSVENVdGlsaXRp
ZXMuaCIKICNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlLmgiCkBAIC0xNTQsMTAgKzE1NCwx
MCBAQCB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3I6OmNyZWF0CiAgICAgY2xpZW50
LT5kaWRDcmVhdGVTdHJlYW0oTWVkaWFTdHJlYW1Qcml2YXRlOjpjcmVhdGUoYXVkaW9Tb3VyY2Vz
LCB2aWRlb1NvdXJjZXMpKTsKIH0KIAotYm9vbCBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyT3dy
OjpnZXRNZWRpYVN0cmVhbVRyYWNrU291cmNlcyhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tT
b3VyY2VzUmVxdWVzdENsaWVudD4pCitWZWN0b3I8Q2FwdHVyZURldmljZT4gUmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlck93cjo6Z2V0TWVkaWFTdHJlYW1EZXZpY2VzKCkKIHsKICAgICBub3RJbXBs
ZW1lbnRlZCgpOwotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gVmVjdG9yPENhcHR1cmVE
ZXZpY2U+KCk7CiB9CiAKIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck93cjo6bWVkaWFT
b3VyY2VzQXZhaWxhYmxlKEdMaXN0KiBzb3VyY2VzKQpAQCAtMjExLDE1ICsyMTEsNiBAQCBQYXNz
UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+IFJlYWx0aW1lCiAgICAgcmV0dXJuIG51bGxwdHI7
CiB9CiAKLVJlZlB0cjxUcmFja1NvdXJjZUluZm8+IFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJP
d3I6OnNvdXJjZVdpdGhVSUQoY29uc3QgU3RyaW5nJiBVSUQsIFJlYWx0aW1lTWVkaWFTb3VyY2U6
OlR5cGUsIE1lZGlhQ29uc3RyYWludHMqKQotewotICAgIGZvciAoYXV0byYgc291cmNlIDogbV9z
b3VyY2VNYXAudmFsdWVzKCkpIHsKLSAgICAgICAgaWYgKHNvdXJjZS0+aWQoKSA9PSBVSUQpCi0g
ICAgICAgICAgICByZXR1cm4gVHJhY2tTb3VyY2VJbmZvOjpjcmVhdGUoc291cmNlLT5wZXJzaXN0
ZW50SUQoKSwgc291cmNlLT5pZCgpLCBzb3VyY2UtPnR5cGUoKSA9PSBSZWFsdGltZU1lZGlhU291
cmNlOjpUeXBlOjpWaWRlbyA/IFRyYWNrU291cmNlSW5mbzo6U291cmNlS2luZDo6VmlkZW8gOiBU
cmFja1NvdXJjZUluZm86OlNvdXJjZUtpbmQ6OkF1ZGlvICwgc291cmNlLT5uYW1lKCkpOwotICAg
IH0KLQotICAgIHJldHVybiBudWxscHRyOwotfQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
ZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKE9QRU5XRUJSVEMpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRjL1JlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXJPd3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9vcGVud2VicnRjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3IuaAko
cmV2aXNpb24gMjA1OTE0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
b3BlbndlYnJ0Yy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyT3dyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQzLDYgKzQzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDYXB0dXJl
RGV2aWNlOwogY2xhc3MgTWVkaWFTdHJlYW1Qcml2YXRlOwogY2xhc3MgUmVhbHRpbWVNZWRpYVNv
dXJjZTsKIGNsYXNzIE1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50OwpAQCAtNTgsMTAgKzU5
LDkgQEAgcHVibGljOgogICAgIHZvaWQgY3JlYXRlTWVkaWFTdHJlYW0oUGFzc1JlZlB0cjxNZWRp
YVN0cmVhbUNyZWF0aW9uQ2xpZW50PiwgTWVkaWFDb25zdHJhaW50cyYgYXVkaW9Db25zdHJhaW50
cywgTWVkaWFDb25zdHJhaW50cyYgdmlkZW9Db25zdHJhaW50cykgZmluYWw7CiAgICAgdm9pZCBj
cmVhdGVNZWRpYVN0cmVhbShNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50KiwgY29uc3QgU3RyaW5n
JiBhdWRpb0RldmljZUlELCBjb25zdCBTdHJpbmcmIHZpZGVvRGV2aWNlSUQpIGZpbmFsOwogCi0g
ICAgYm9vbCBnZXRNZWRpYVN0cmVhbVRyYWNrU291cmNlcyhQYXNzUmVmUHRyPE1lZGlhU3RyZWFt
VHJhY2tTb3VyY2VzUmVxdWVzdENsaWVudD4pIGZpbmFsOworICAgIFZlY3RvcjxDYXB0dXJlRGV2
aWNlPiBnZXRNZWRpYVN0cmVhbURldmljZXMoKSBmaW5hbDsKIAogICAgIHZvaWQgbWVkaWFTb3Vy
Y2VzQXZhaWxhYmxlKEdMaXN0KiBzb3VyY2VzKTsKLSAgICBSZWZQdHI8VHJhY2tTb3VyY2VJbmZv
PiBzb3VyY2VXaXRoVUlEKGNvbnN0IFN0cmluZyYsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUs
IE1lZGlhQ29uc3RyYWludHMqKSBmaW5hbDsKIAogcHJpdmF0ZToKICAgICBQYXNzUmVmUHRyPFJl
YWx0aW1lTWVkaWFTb3VyY2U+IGZpcnN0U291cmNlKFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNv
dXJjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2Nr
UmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAJKHJldmlzaW9uIDIwNTkxNCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMiw5ICszMiw5IEBACiAjaW5jbHVkZSAiTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2Uu
aCIKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisjaW5jbHVkZSAiQ2FwdHVyZURldmljZS5o
IgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZWRpYUNvbnN0cmFpbnRzLmgiCi0j
aW5jbHVkZSAiTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0Q2xpZW50LmgiCiAjaW5jbHVk
ZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlU2V0dGlu
Z3MuaCIKICNpbmNsdWRlIDxtYXRoLmg+CkBAIC02OCwxOSArNjgsMTkgQEAgY29uc3QgQXRvbWlj
U3RyaW5nJiBNb2NrUmVhbHRpbWVNZWRpYVNvdQogICAgIHJldHVybiBuYW1lOwogfQogCi1SZWZQ
dHI8VHJhY2tTb3VyY2VJbmZvPiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6dHJhY2tTb3VyY2VX
aXRoVUlEKGNvbnN0IFN0cmluZyYgaWQsIE1lZGlhQ29uc3RyYWludHMqKQorQ2FwdHVyZURldmlj
ZSBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6YXVkaW9EZXZpY2VJbmZvKCkKIHsKLSAgICAvLyBG
SVhNRTogdmFsaWRhdGUgY29uc3RyYWludHMuCi0KLSAgICBpZiAobW9ja0F1ZGlvU291cmNlUGVy
c2lzdGVudElEKCkgPT0gaWQpCi0gICAgICAgIHJldHVybiBUcmFja1NvdXJjZUluZm86OmNyZWF0
ZShtb2NrQXVkaW9Tb3VyY2VQZXJzaXN0ZW50SUQoKSwgaWQsIFRyYWNrU291cmNlSW5mbzo6QXVk
aW8sICJNb2NrIGF1ZGlvIGRldmljZSIpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDYXB0
dXJlRGV2aWNlPiBkZXZpY2VJbmZvKG1vY2tBdWRpb1NvdXJjZVBlcnNpc3RlbnRJRCgpLCBDYXB0
dXJlRGV2aWNlOjpBdWRpbywgbW9ja0F1ZGlvU291cmNlTmFtZSgpLCAiIik7CisgICAgcmV0dXJu
IGRldmljZUluZm87Cit9CiAKLSAgICBpZiAobW9ja1ZpZGVvU291cmNlUGVyc2lzdGVudElEKCkg
PT0gaWQpCi0gICAgICAgIHJldHVybiBUcmFja1NvdXJjZUluZm86OmNyZWF0ZShtb2NrVmlkZW9T
b3VyY2VQZXJzaXN0ZW50SUQoKSwgaWQsIFRyYWNrU291cmNlSW5mbzo6VmlkZW8sICJNb2NrIHZp
ZGVvIGRldmljZSIpOwotICAgIAotICAgIHJldHVybiBudWxscHRyOworQ2FwdHVyZURldmljZSBN
b2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6dmlkZW9EZXZpY2VJbmZvKCkKK3sKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8Q2FwdHVyZURldmljZT4gZGV2aWNlSW5mbyhtb2NrVmlkZW9Tb3VyY2VQ
ZXJzaXN0ZW50SUQoKSwgQ2FwdHVyZURldmljZTo6VmlkZW8sIG1vY2tWaWRlb1NvdXJjZU5hbWUo
KSwgIiIpOworICAgIHJldHVybiBkZXZpY2VJbmZvOwogfQogCisKIE1vY2tSZWFsdGltZU1lZGlh
U291cmNlOjpNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZShjb25zdCBTdHJpbmcmIGlkLCBSZWFsdGlt
ZU1lZGlhU291cmNlOjpUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICA6IFJlYWx0
aW1lTWVkaWFTb3VyY2UoaWQsIHR5cGUsIG5hbWUpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZS5oCShyZXZp
c2lvbiAyMDU5MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGlt
ZU1lZGlhU291cmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1jbGFzcyBUcmFja1NvdXJjZUluZm87CitjbGFzcyBDYXB0dXJlRGV2
aWNlOwogCiBjbGFzcyBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZSA6IHB1YmxpYyBSZWFsdGltZU1l
ZGlhU291cmNlIHsKIHB1YmxpYzoKQEAgLTQ5LDcgKzQ5LDggQEAgcHVibGljOgogICAgIHN0YXRp
YyBjb25zdCBBdG9taWNTdHJpbmcmIG1vY2tWaWRlb1NvdXJjZVBlcnNpc3RlbnRJRCgpOwogICAg
IHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIG1vY2tWaWRlb1NvdXJjZU5hbWUoKTsKIAotICAg
IHN0YXRpYyBSZWZQdHI8VHJhY2tTb3VyY2VJbmZvPiB0cmFja1NvdXJjZVdpdGhVSUQoY29uc3Qg
U3RyaW5nJiwgTWVkaWFDb25zdHJhaW50cyopOworICAgIHN0YXRpYyBDYXB0dXJlRGV2aWNlIGF1
ZGlvRGV2aWNlSW5mbygpOworICAgIHN0YXRpYyBDYXB0dXJlRGV2aWNlIHZpZGVvRGV2aWNlSW5m
bygpOwogCiBwcm90ZWN0ZWQ6CiAgICAgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UoY29uc3QgU3Ry
aW5nJiBpZCwgVHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXIuY3BwCShyZXZpc2lvbiAyMDU5MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzAsMTIgKzMwLDEyIEBACiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCisjaW5jbHVk
ZSAiQ2FwdHVyZURldmljZS5oIgogI2luY2x1ZGUgIk1lZGlhQ29uc3RyYWludHNNb2NrLmgiCiAj
aW5jbHVkZSAiTWVkaWFTdHJlYW0uaCIKICNpbmNsdWRlICJNZWRpYVN0cmVhbUNyZWF0aW9uQ2xp
ZW50LmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1Qcml2YXRlLmgiCiAjaW5jbHVkZSAiTWVkaWFT
dHJlYW1UcmFjay5oIgotI2luY2x1ZGUgIk1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzUmVxdWVzdENs
aWVudC5oIgogI2luY2x1ZGUgIk1vY2tSZWFsdGltZUF1ZGlvU291cmNlLmgiCiAjaW5jbHVkZSAi
TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuaCIKICNpbmNsdWRlICJNb2NrUmVhbHRpbWVWaWRlb1Nv
dXJjZS5oIgpAQCAtMTUxLDI0ICsxNTEsMTQgQEAgdm9pZCBNb2NrUmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlcjo6Y3JlYQogICAgIGNsaWVudC0+ZGlkQ3JlYXRlU3RyZWFtKE1lZGlhU3RyZWFtUHJp
dmF0ZTo6Y3JlYXRlKGF1ZGlvU291cmNlcywgdmlkZW9Tb3VyY2VzKSk7CiB9CiAKLWJvb2wgTW9j
a1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OmdldE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzKFBh
c3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0Q2xpZW50PiBwcnBDbGllbnQp
CitWZWN0b3I8Q2FwdHVyZURldmljZT4gTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6Omdl
dE1lZGlhU3RyZWFtRGV2aWNlcygpCiB7Ci0gICAgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tTb3Vy
Y2VzUmVxdWVzdENsaWVudD4gcmVxdWVzdENsaWVudCA9IHBycENsaWVudDsKLSAgICBUcmFja1Nv
dXJjZUluZm9WZWN0b3Igc291cmNlczsKKyAgICBWZWN0b3I8Q2FwdHVyZURldmljZT4gc291cmNl
czsKIAotICAgIHNvdXJjZXMuYXBwZW5kKE1vY2tSZWFsdGltZU1lZGlhU291cmNlOjp0cmFja1Nv
dXJjZVdpdGhVSUQoTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6Om1vY2tBdWRpb1NvdXJjZVBlcnNp
c3RlbnRJRCgpLCBudWxscHRyKSk7Ci0gICAgc291cmNlcy5hcHBlbmQoTW9ja1JlYWx0aW1lTWVk
aWFTb3VyY2U6OnRyYWNrU291cmNlV2l0aFVJRChNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6bW9j
a1ZpZGVvU291cmNlUGVyc2lzdGVudElEKCksIG51bGxwdHIpKTsKKyAgICBzb3VyY2VzLmFwcGVu
ZChNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6YXVkaW9EZXZpY2VJbmZvKCkpOworICAgIHNvdXJj
ZXMuYXBwZW5kKE1vY2tSZWFsdGltZU1lZGlhU291cmNlOjp2aWRlb0RldmljZUluZm8oKSk7CiAK
LSAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCByZXF1ZXN0Q2xpZW50ID0gV1RGTW92ZShyZXF1
ZXN0Q2xpZW50KSwgc291cmNlcyA9IFdURk1vdmUoc291cmNlcyldIHsKLSAgICAgICAgcmVxdWVz
dENsaWVudC0+ZGlkQ29tcGxldGVUcmFja1NvdXJjZUluZm9SZXF1ZXN0KHNvdXJjZXMpOwotICAg
IH0pOwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLVJlZlB0cjxUcmFja1NvdXJjZUluZm8+IE1v
Y2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzb3VyY2VXaXRoVUlEKGNvbnN0IFN0cmluZyYg
VUlELCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlLCBNZWRpYUNvbnN0cmFpbnRzKiBjb25zdHJh
aW50cykKLXsKLSAgICByZXR1cm4gTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OnRyYWNrU291cmNl
V2l0aFVJRChVSUQsIGNvbnN0cmFpbnRzKTsKKyAgICByZXR1cm4gc291cmNlczsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9N
b2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaAkocmV2aXNp
b24gMjA1OTE0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVN
ZWRpYVNvdXJjZUNlbnRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw5ICs0Myw4IEBAIHByaXZh
dGU6CiAKICAgICB2b2lkIHZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRzKE1lZGlhU3RyZWFtQ3Jl
YXRpb25DbGllbnQqLCBNZWRpYUNvbnN0cmFpbnRzJiBhdWRpb0NvbnN0cmFpbnRzLCBNZWRpYUNv
bnN0cmFpbnRzJiB2aWRlb0NvbnN0cmFpbnRzKSBvdmVycmlkZTsKICAgICB2b2lkIGNyZWF0ZU1l
ZGlhU3RyZWFtKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudD4sIE1lZGlhQ29u
c3RyYWludHMmIGF1ZGlvQ29uc3RyYWludHMsIE1lZGlhQ29uc3RyYWludHMmIHZpZGVvQ29uc3Ry
YWludHMpIG92ZXJyaWRlOwotICAgIGJvb2wgZ2V0TWVkaWFTdHJlYW1UcmFja1NvdXJjZXMoUGFz
c1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3RDbGllbnQ+KSBvdmVycmlkZTsK
KyAgICBWZWN0b3I8Q2FwdHVyZURldmljZT4gZ2V0TWVkaWFTdHJlYW1EZXZpY2VzKCkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBjcmVhdGVNZWRpYVN0cmVhbShNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50
KiwgY29uc3QgU3RyaW5nJiBhdWRpb0RldmljZUlELCBjb25zdCBTdHJpbmcmIHZpZGVvRGV2aWNl
SUQpIG92ZXJyaWRlOwotICAgIFJlZlB0cjxUcmFja1NvdXJjZUluZm8+IHNvdXJjZVdpdGhVSUQo
Y29uc3QgU3RyaW5nJiwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSwgTWVkaWFDb25zdHJhaW50
cyopIG92ZXJyaWRlOwogfTsKIAogfQpJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMjA1OTE0KQor
KysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIg
QEAKKzIwMTYtMDktMTQgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgW01lZGlhU3RyZWFtXSBNaW5vciBjbGVhbnVwCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjE5NzYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdFByb3h5LmNwcDoKKwogMjAxNi0wOS0xNCAgQ2FybG9zIEdhcm5hY2hvICA8Y2Fy
bG9zZ0Bnbm9tZS5vcmc+CiAKICAgICAgICAgW0dUS11bV2F5bGFuZF0gSW1wbGVtZW50IGNsaXBi
b2FyZCBzdXBwb3J0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkuY3BwCShyZXZpc2lvbiAyMDU5
MTQpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwLDcgKzIwLDYgQEAKICNpbmNsdWRlICJV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5LmgiCiAKICNpbmNsdWRlICJVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFT
dHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0Q2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWFs
dGltZU1lZGlhU291cmNlQ2VudGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5o
PgogCg==
</data>
<flag name="review"
          id="312117"
          type_id="1"
          status="+"
          setter="dino"
    />
          </attachment>
      

    </bug>

</bugzilla>