<?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>169872</bug_id>
          
          <creation_ts>2017-03-20 00:21:11 -0700</creation_ts>
          <short_desc>Implement ondevicechange</short_desc>
          <delta_ts>2017-04-28 13:57:57 -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>WebKit Misc.</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>
          
          <blocked>169871</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jon Lee">jonlee</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>eric.carlson</cc>
    
    <cc>jer.noble</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1289437</commentid>
    <comment_count>0</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2017-03-20 00:21:11 -0700</bug_when>
    <thetext>Implement ondevicechange</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1289438</commentid>
    <comment_count>1</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2017-03-20 00:22:53 -0700</bug_when>
    <thetext>rdar://problem/28945035</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1302615</commentid>
    <comment_count>2</comment_count>
      <attachid>308541</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-04-28 09:38:39 -0700</bug_when>
    <thetext>Created attachment 308541
Proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1302668</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-04-28 10:59:54 -0700</bug_when>
    <thetext>Committed r215929: https://trac.webkit.org/r215929</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1302721</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-04-28 12:46:56 -0700</bug_when>
    <thetext>Plus r215935: https://trac.webkit.org/r215935</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1302776</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-04-28 13:57:57 -0700</bug_when>
    <thetext>And https://trac.webkit.org/r215944 to remove some dead code.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>308541</attachid>
            <date>2017-04-28 09:38:39 -0700</date>
            <delta_ts>2017-04-28 10:08:26 -0700</delta_ts>
            <desc>Proposed patch.</desc>
            <filename>device_change_event_patch_5.txt</filename>
            <type>text/plain</type>
            <size>38162</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxNTkxNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc5IEBACisyMDE3LTA0LTI3ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBvbmRl
dmljZWNoYW5nZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTY5ODcyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yODk0NTAzNT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBmYXN0L21lZGlhc3Ry
ZWFtL2RldmljZS1jaGFuZ2UtZXZlbnQuaHRtbAorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYURldmljZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFEZXZpY2VzOjpN
ZWRpYURldmljZXMpOiBSZWdpc3RlciBmb3IgZGV2aWNlY2hhbmdlIGNhbGxiYWNrcy4KKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhRGV2aWNlczo6fk1lZGlhRGV2aWNlcyk6IFVucmVnaXN0ZXIuCisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYURldmljZXM6OnNjaGVkdWxlZEV2ZW50VGltZXJGaXJlZCk6
CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuaDoKKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5pZGw6CisKKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlc0VudW1lcmF0aW9uUmVxdWVzdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYURldmljZXNFbnVtZXJhdGlvblJlcXVlc3Q6OnNldERldmljZUlu
Zm8pOiBSZW1vdmUgdW5uZWNlc3NhcnkgaW5zdGFuY2UgdmFyaWFibGVzLgorICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzRW51bWVyYXRpb25SZXF1ZXN0Lmg6CisKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlc1JlcXVlc3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFEZXZpY2VzUmVxdWVzdDo6c3RhcnQpOiBSZW1vdmUgbV9pZEhh
c2hTYWx0LCBpdCBpc24ndCB1c2VkLiBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyCisgICAgICAg
IG5vdyBoYXMgdGhlIG1ldGhvZCB0byBoYXNoIGlkcyBhbmQgZ3JvdXAgSURzLgorICAgICAgICAo
V2ViQ29yZTo6aGFzaFN0cmluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYURl
dmljZXNSZXF1ZXN0OjpoYXNoSUQpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFEZXZpY2VzUmVxdWVzdC5oOgorCisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0RGV2aWNlSURIYXNoU2FsdCk6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZGV2aWNlSURIYXNoU2FsdCk6CisKKyAgICAgICAgKiBk
b20vRXZlbnROYW1lcy5oOiBBZGQgZGV2aWNlY2hhbmdlLgorCisgICAgICAgICogZG9tL0V2ZW50
VGFyZ2V0RmFjdG9yeS5pbjogQWRkIE1lZGlhRGV2aWNlcy4KKworICAgICAgICAqIGh0bWwvSFRN
TEF0dHJpYnV0ZU5hbWVzLmluOiBBZGQgb25kZXZpY2VjaGFuZ2UuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDYXB0dXJlRGV2aWNlTWFuYWdlcjo6Y2FwdHVyZURldmljZUZyb21QZXJzaXN0ZW50SUQp
OiBSZW5hbWVkIGZyb20gY2FwdHVyZURldmljZUZyb21EZXZpY2VJRAorICAgICAgICBhbmQgY2hh
bmdlZCB0byByZXR1cm4gYSBzdGQ6Om9wdGlvbmFsPENhcHR1cmVEZXZpY2U+LgorICAgICAgICAo
V2ViQ29yZTo6Q2FwdHVyZURldmljZU1hbmFnZXI6OmNhcHR1cmVEZXZpY2VGcm9tRGV2aWNlSUQp
OiBEZWxldGVkLgorCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjphZGRTdHJpbmdUb1NIQSk6IE5l
dywgYWRkIHN0cmluZyBieXRlcyB0byBTSEExLiBNb3ZlZCBmcm9tIE1lZGlhRGV2aWNlc1JlcXVl
c3QKKyAgICAgICAgc28gd2UgY2FuIHVzZSBmb3IgaW4gdGVzdGluZy4KKyAgICAgICAgKFdlYkNv
cmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6Omhhc2hTdHJpbmdXaXRoU2FsdCk6IEdlbmVy
YXRlIGhhc2ggZm9yIGEgc3RyaW5nIHdpdGggYQorICAgICAgICBzYWx0LiBNb3ZlZCBmcm9tIE1l
ZGlhRGV2aWNlc1JlcXVlc3Qgc28gd2UgY2FuIHVzZSBmb3IgaW4gdGVzdGluZy4KKyAgICAgICAg
KFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OmNhcHR1cmVEZXZpY2VXaXRoVW5p
cXVlSUQpOiBGaW5kIGEgQ2FwdHVyZURldmljZSBnaXZlbiAKKyAgICAgICAgYSB1bmlxdWUgSUQg
YW5kIHRoZSBwcm9jZXNzIGhhc2ggc2FsdC4KKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXI6OnNldERldmljZUVuYWJsZWQpOiBFbmFibGUvZGlzYWJsZSBhIGRldmlj
ZS4gVXNlZCBmb3IKKyAgICAgICAgbGF5b3V0IHRlc3RzIG9ubHkuCisgICAgICAgIChXZWJDb3Jl
OjpSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjphZGREZXZpY2VzQ2hhbmdlZE9ic2VydmVyKTog
QWRkIGEgZGV2aWNlcyBjaGFuZ2VkIGxpc3RlbmVyLgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRp
bWVNZWRpYVNvdXJjZUNlbnRlcjo6cmVtb3ZlRGV2aWNlc0NoYW5nZWRPYnNlcnZlcik6IFJlbW92
ZSBhIGxpc3RlbmVyLgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRl
cjo6Y2FwdHVyZURldmljZXNDaGFuZ2VkKTogTm90aWZ5IGxpc3RlbmVycy4KKyAgICAgICAgKiBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmg6CisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5tbToK
KyAgICAgICAgKFdlYkNvcmU6OkFWQ2FwdHVyZURldmljZU1hbmFnZXI6OmFkZERldmljZXNDaGFu
Z2VkT2JzZXJ2ZXIpOiBVcGRhdGUgZm9yIGNoYW5nZSB0byBjYXB0dXJlRGV2aWNlRnJvbURldmlj
ZUlELgorCisgICAgICAgICogcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6YXVkaW9EZXZp
Y2VzKTogQWxsIGRldmljZXMgYXJlIGVuYWJsZWQgYnkgZGVmYXVsdC4KKyAgICAgICAgKFdlYkNv
cmU6Ok1vY2tSZWFsdGltZU1lZGlhU291cmNlOjp2aWRlb0RldmljZXMpOiBEaXR0by4KKworICAg
ICAgICAqIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OmNyZWF0ZU1l
ZGlhU3RyZWFtKTogRHJpdmUtYnkgY2xlYW51cDogdXNlIHRoZSB2ZWN0b3IKKyAgICAgICAgb2Yg
ZGV2aWNlcyBpbnN0ZWFkIG9mIG1ha2luZyBhc3N1bXB0aW9ucyBhYm91dCB0aGUgbnVtYmVyLgor
ICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OmdldE1lZGlh
U3RyZWFtRGV2aWNlcyk6IE9ubHkgaW5jbHVkZSBlbmFibGVkIGRldmljZXMuCisgICAgICAgIChX
ZWJDb3JlOjpNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2V0RGV2aWNlRW5hYmxlZCk6
IEVuYWJsZSBvciBkaXNhYmxlIGEgZGV2aWNlLgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9j
a1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaDoKKworICAgICAgICAqIHRlc3RpbmcvSW50ZXJu
YWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6c2V0TWVkaWFEZXZpY2VTdGF0
ZSk6IEVuYWJsZSBvciBkaXNhYmxlIGEgbW9jayBjYXB0dXJlIGRldmljZS4KKyAgICAgICAgKiB0
ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKwog
MjAxNy0wNC0yNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEFs
aWduIGNvbHNwYW4vcm93c3BhbiBsaW1pdHMgd2l0aCB0aGUgbGF0ZXN0IEhUTUwgc3BlY2lmaWNh
dGlvbgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmlj
ZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFEZXZpY2VzLmNwcAkocmV2aXNpb24gMjE1OTE1KQorKysgU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNSBFcmljc3NvbiBBQi4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzQsMTcg
KzM1LDMzIEBACiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAogI2luY2x1ZGUgIkRvY3VtZW50
LmgiCisjaW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVk
ZSAiTWVkaWFDb25zdHJhaW50c0ltcGwuaCIKICNpbmNsdWRlICJNZWRpYURldmljZXNSZXF1ZXN0
LmgiCiAjaW5jbHVkZSAiTWVkaWFUcmFja1N1cHBvcnRlZENvbnN0cmFpbnRzLmgiCi0jaW5jbHVk
ZSAiUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oIgogI2luY2x1ZGUgIlVzZXJNZWRpYVJlcXVl
c3QuaCIKKyNpbmNsdWRlIDx3dGYvUmFuZG9tTnVtYmVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogaW5saW5lIE1lZGlhRGV2aWNlczo6TWVkaWFEZXZpY2VzKERvY3VtZW50JiBkb2N1bWVu
dCkKICAgICA6IENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyKCZkb2N1bWVudCkKKyAgICAsIG1f
c2NoZWR1bGVkRXZlbnRUaW1lcigqdGhpcywgJk1lZGlhRGV2aWNlczo6c2NoZWR1bGVkRXZlbnRU
aW1lckZpcmVkKQogeworICAgIG1fZGV2aWNlQ2hhbmdlZFRva2VuID0gUmVhbHRpbWVNZWRpYVNv
dXJjZUNlbnRlcjo6c2luZ2xldG9uKCkuYWRkRGV2aWNlc0NoYW5nZWRPYnNlcnZlcihbdGhpc10o
KSB7CisKKyAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBvbmx5IGRpc3BhdGNoIGFuIGV2ZW50
IGlmIHRoZSB1c2VyIGhhcyBiZWVuIGdyYW50ZWQgYWNjZXNzIHRvIHRoZSB0eXBlIG9mCisgICAg
ICAgIC8vIGRldmljZSB0aGF0IHdhcyBhZGRlZCBvciByZW1vdmVkLgorICAgICAgICBpZiAoIW1f
c2NoZWR1bGVkRXZlbnRUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICAgICAgbV9zY2hlZHVsZWRF
dmVudFRpbWVyLnN0YXJ0T25lU2hvdChTZWNvbmRzKHJhbmRvbU51bWJlcigpIC8gMikpOworICAg
IH0pOworfQorCitNZWRpYURldmljZXM6On5NZWRpYURldmljZXMoKQoreworICAgIGlmIChtX2Rl
dmljZUNoYW5nZWRUb2tlbikKKyAgICAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2lu
Z2xldG9uKCkucmVtb3ZlRGV2aWNlc0NoYW5nZWRPYnNlcnZlcihtX2RldmljZUNoYW5nZWRUb2tl
bik7CiB9CiAKIFJlZjxNZWRpYURldmljZXM+IE1lZGlhRGV2aWNlczo6Y3JlYXRlKERvY3VtZW50
JiBkb2N1bWVudCkKQEAgLTEwOCw2ICsxMjUsMTEgQEAgTWVkaWFUcmFja1N1cHBvcnRlZENvbnN0
cmFpbnRzIE1lZGlhRGV2aQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3ZvaWQgTWVkaWFEZXZp
Y2VzOjpzY2hlZHVsZWRFdmVudFRpbWVyRmlyZWQoKQoreworICAgIGRpc3BhdGNoRXZlbnQoRXZl
bnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZGV2aWNlY2hhbmdlRXZlbnQsIGZhbHNlLCBmYWxzZSkp
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFf
U1RSRUFNKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURl
dmljZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L01lZGlhRGV2aWNlcy5oCShyZXZpc2lvbiAyMTU5MTUpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw5ICsz
MywxMiBAQAogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAorI2luY2x1ZGUgIkV2ZW50VGFy
Z2V0LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKICNpbmNsdWRlICJKU0RPTVByb21pc2Uu
aCIKICNpbmNsdWRlICJNZWRpYVRyYWNrQ29uc3RyYWludHMuaCIKKyNpbmNsdWRlICJSZWFsdGlt
ZU1lZGlhU291cmNlQ2VudGVyLmgiCisjaW5jbHVkZSAiVGltZXIuaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCkBAIC00NSwxMCArNDgsMTIgQEAgY2xhc3MgTWVkaWFTdHJlYW07CiAKIHN0cnVj
dCBNZWRpYVRyYWNrU3VwcG9ydGVkQ29uc3RyYWludHM7CiAKLWNsYXNzIE1lZGlhRGV2aWNlcyA6
IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhRGV2aWNlcz4s
IHB1YmxpYyBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlciB7CitjbGFzcyBNZWRpYURldmljZXMg
OiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYURldmljZXM+LCBwdWJsaWMgQ29udGV4dERlc3RydWN0
aW9uT2JzZXJ2ZXIsIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhIHsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgUmVmPE1lZGlhRGV2aWNlcz4gY3JlYXRlKERvY3VtZW50Jik7CiAKKyAgICB+
TWVkaWFEZXZpY2VzKCk7CisKICAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdDsKIAogICAg
IHVzaW5nIFByb21pc2UgPSBET01Qcm9taXNlPElETEludGVyZmFjZTxNZWRpYVN0cmVhbT4+OwpA
QCAtNjIsOCArNjcsMjIgQEAgcHVibGljOgogICAgIHZvaWQgZW51bWVyYXRlRGV2aWNlcyhFbnVt
ZXJhdGVEZXZpY2VzUHJvbWlzZSYmKSBjb25zdDsKICAgICBNZWRpYVRyYWNrU3VwcG9ydGVkQ29u
c3RyYWludHMgZ2V0U3VwcG9ydGVkQ29uc3RyYWludHMoKTsKIAorICAgIHVzaW5nIFJlZkNvdW50
ZWQ8TWVkaWFEZXZpY2VzPjo6cmVmOworICAgIHVzaW5nIFJlZkNvdW50ZWQ8TWVkaWFEZXZpY2Vz
Pjo6ZGVyZWY7CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgTWVkaWFEZXZpY2VzKERvY3VtZW50
Jik7CisKKyAgICB2b2lkIHNjaGVkdWxlZEV2ZW50VGltZXJGaXJlZCgpOworCisgICAgLy8gRXZl
bnRUYXJnZXRXaXRoSW5saW5lRGF0YS4KKyAgICBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRh
cmdldEludGVyZmFjZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIE1lZGlhRGV2aWNlc0V2ZW50
VGFyZ2V0SW50ZXJmYWNlVHlwZTsgfQorICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ7IH0KKyAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgb3ZlcnJpZGUgeyByZWYoKTsg
fQorICAgIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIG92ZXJyaWRlIHsgZGVyZWYoKTsgfQorCisg
ICAgVGltZXIgbV9zY2hlZHVsZWRFdmVudFRpbWVyOworICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VD
ZW50ZXI6OkRldmljZXNDaGFuZ2VkT2JzZXJ2ZXJUb2tlbiBtX2RldmljZUNoYW5nZWRUb2tlbiB7
IDAgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmlkbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5pZGwJKHJldmlzaW9u
IDIxNTkxNSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZp
Y2VzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQAogICAgIENvbmRpdGlvbmFs
PU1FRElBX1NUUkVBTSwKICAgICBOb0ludGVyZmFjZU9iamVjdCwKIF0gaW50ZXJmYWNlIE1lZGlh
RGV2aWNlcyB7Ci0gICAgLy8gRklYTUUgMTY5ODcyOiBtaXNzaW5nIG9uZGV2aWNlY2hhbmdlCisg
ICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbmRldmljZWNoYW5nZTsKICAgICBQcm9taXNlPHNl
cXVlbmNlPE1lZGlhRGV2aWNlSW5mbz4+IGVudW1lcmF0ZURldmljZXMoKTsKIAogICAgIE1lZGlh
VHJhY2tTdXBwb3J0ZWRDb25zdHJhaW50cyBnZXRTdXBwb3J0ZWRDb25zdHJhaW50cygpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXNFbnVtZXJh
dGlvblJlcXVlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFEZXZpY2VzRW51bWVyYXRpb25SZXF1ZXN0LmNwcAkocmV2aXNpb24gMjE1
OTE1KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXNF
bnVtZXJhdGlvblJlcXVlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OSwxMiArOTksOCBAQCB2
b2lkIE1lZGlhRGV2aWNlc0VudW1lcmF0aW9uUmVxdWVzdDo6Y2FuCiAKIHZvaWQgTWVkaWFEZXZp
Y2VzRW51bWVyYXRpb25SZXF1ZXN0OjpzZXREZXZpY2VJbmZvKGNvbnN0IFZlY3RvcjxDYXB0dXJl
RGV2aWNlPiYgZGV2aWNlTGlzdCwgY29uc3QgU3RyaW5nJiBkZXZpY2VJZGVudGlmaWVySGFzaFNh
bHQsIGJvb2wgb3JpZ2luSGFzUGVyc2lzdGVudEFjY2VzcykKIHsKLSAgICBtX2RldmljZUxpc3Qg
PSBkZXZpY2VMaXN0OwotICAgIG1fZGV2aWNlSWRlbnRpZmllckhhc2hTYWx0ID0gZGV2aWNlSWRl
bnRpZmllckhhc2hTYWx0OwotICAgIG1fb3JpZ2luSGFzUGVyc2lzdGVudEFjY2VzcyA9IG9yaWdp
bkhhc1BlcnNpc3RlbnRBY2Nlc3M7Ci0KICAgICBpZiAobV9jb21wbGV0aW9uSGFuZGxlcikKLSAg
ICAgICAgbV9jb21wbGV0aW9uSGFuZGxlcihtX2RldmljZUxpc3QsIG1fZGV2aWNlSWRlbnRpZmll
ckhhc2hTYWx0LCBtX29yaWdpbkhhc1BlcnNpc3RlbnRBY2Nlc3MpOworICAgICAgICBtX2NvbXBs
ZXRpb25IYW5kbGVyKGRldmljZUxpc3QsIGRldmljZUlkZW50aWZpZXJIYXNoU2FsdCwgb3JpZ2lu
SGFzUGVyc2lzdGVudEFjY2Vzcyk7CiAgICAgbV9jb21wbGV0aW9uSGFuZGxlciA9IG51bGxwdHI7
CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZp
Y2VzRW51bWVyYXRpb25SZXF1ZXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXNFbnVtZXJhdGlvblJlcXVlc3QuaAkocmV2aXNp
b24gMjE1OTE1KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURl
dmljZXNFbnVtZXJhdGlvblJlcXVlc3QuaAkod29ya2luZyBjb3B5KQpAQCAtNjEsOSArNjEsNiBA
QCBwcml2YXRlOgogICAgIHZvaWQgY29udGV4dERlc3Ryb3llZCgpIGZpbmFsOwogCiAgICAgQ29t
cGxldGlvbkhhbmRsZXIgbV9jb21wbGV0aW9uSGFuZGxlcjsKLSAgICBWZWN0b3I8Q2FwdHVyZURl
dmljZT4gbV9kZXZpY2VMaXN0OwotICAgIFN0cmluZyBtX2RldmljZUlkZW50aWZpZXJIYXNoU2Fs
dDsKLSAgICBib29sIG1fb3JpZ2luSGFzUGVyc2lzdGVudEFjY2VzcyB7IGZhbHNlIH07CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhRGV2aWNlc1JlcXVlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzUmVxdWVzdC5jcHAJKHJldmlz
aW9uIDIxNTkxNSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFE
ZXZpY2VzUmVxdWVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNs
dWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkpTTWVkaWFEZXZpY2VJbmZvLmgiCiAjaW5jbHVkZSAi
TWVkaWFEZXZpY2VzRW51bWVyYXRpb25SZXF1ZXN0LmgiCisjaW5jbHVkZSAiUmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlci5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAi
VXNlck1lZGlhQ29udHJvbGxlci5oIgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CkBAIC04
NiwxMSArODcsNyBAQCB2b2lkIE1lZGlhRGV2aWNlc1JlcXVlc3Q6OnN0YXJ0KCkKICAgICAgICAg
ICAgIHJldHVybjsKIAogICAgICAgICBEb2N1bWVudCYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1
bWVudD4oKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7Ci0gICAgICAgIFVzZXJNZWRpYUNvbnRy
b2xsZXIqIGNvbnRyb2xsZXIgPSBVc2VyTWVkaWFDb250cm9sbGVyOjpmcm9tKGRvY3VtZW50LnBh
Z2UoKSk7Ci0gICAgICAgIGlmICghY29udHJvbGxlcikKLSAgICAgICAgICAgIHJldHVybjsKLQot
ICAgICAgICBtX2lkSGFzaFNhbHQgPSBkZXZpY2VJZGVudGlmaWVySGFzaFNhbHQ7CisgICAgICAg
IGRvY3VtZW50LnNldERldmljZUlESGFzaFNhbHQoZGV2aWNlSWRlbnRpZmllckhhc2hTYWx0KTsK
IAogICAgICAgICBWZWN0b3I8UmVmUHRyPE1lZGlhRGV2aWNlSW5mbz4+IGRldmljZXM7CiAgICAg
ICAgIGZvciAoYXV0byYgZGV2aWNlSW5mbyA6IGNhcHR1cmVEZXZpY2VzKSB7CkBAIC05OCwxMSAr
OTUsMTEgQEAgdm9pZCBNZWRpYURldmljZXNSZXF1ZXN0OjpzdGFydCgpCiAgICAgICAgICAgICBp
ZiAob3JpZ2luSGFzUGVyc2lzdGVudEFjY2VzcyB8fCBkb2N1bWVudC5oYXNIYWRBY3RpdmVNZWRp
YVN0cmVhbVRyYWNrKCkpCiAgICAgICAgICAgICAgICAgbGFiZWwgPSBkZXZpY2VJbmZvLmxhYmVs
KCk7CiAKLSAgICAgICAgICAgIGF1dG8gaWQgPSBoYXNoSUQoZGV2aWNlSW5mby5wZXJzaXN0ZW50
SWQoKSk7CisgICAgICAgICAgICBhdXRvIGlkID0gUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6
c2luZ2xldG9uKCkuaGFzaFN0cmluZ1dpdGhTYWx0KGRldmljZUluZm8ucGVyc2lzdGVudElkKCks
IGRldmljZUlkZW50aWZpZXJIYXNoU2FsdCk7CiAgICAgICAgICAgICBpZiAoaWQuaXNFbXB0eSgp
KQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICBhdXRvIGdyb3VwSWQg
PSBoYXNoSUQoZGV2aWNlSW5mby5ncm91cElkKCkpOworICAgICAgICAgICAgYXV0byBncm91cElk
ID0gUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2luZ2xldG9uKCkuaGFzaFN0cmluZ1dpdGhT
YWx0KGRldmljZUluZm8uZ3JvdXBJZCgpLCBkZXZpY2VJZGVudGlmaWVySGFzaFNhbHQpOwogICAg
ICAgICAgICAgYXV0byBkZXZpY2VUeXBlID0gZGV2aWNlSW5mby50eXBlKCkgPT0gQ2FwdHVyZURl
dmljZTo6RGV2aWNlVHlwZTo6QXVkaW8gPyBNZWRpYURldmljZUluZm86OktpbmQ6OkF1ZGlvaW5w
dXQgOiBNZWRpYURldmljZUluZm86OktpbmQ6OlZpZGVvaW5wdXQ7CiAgICAgICAgICAgICBkZXZp
Y2VzLmFwcGVuZChNZWRpYURldmljZUluZm86OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCksIGxhYmVsLCBpZCwgZ3JvdXBJZCwgZGV2aWNlVHlwZSkpOwogICAgICAgICB9CkBAIC0xMTYs
MzggKzExMyw2IEBAIHZvaWQgTWVkaWFEZXZpY2VzUmVxdWVzdDo6c3RhcnQoKQogICAgIG1fZW51
bWVyYXRpb25SZXF1ZXN0LT5zdGFydCgpOwogfQogCi1zdGF0aWMgdm9pZCBoYXNoU3RyaW5nKFNI
QTEmIHNoYTEsIGNvbnN0IFN0cmluZyYgc3RyaW5nKQotewotICAgIGlmIChzdHJpbmcuaXNFbXB0
eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoc3RyaW5nLmlzOEJpdCgpICYmIHN0cmlu
Zy5jb250YWluc09ubHlBU0NJSSgpKSB7Ci0gICAgICAgIGNvbnN0IHVpbnQ4X3QgbnVsbEJ5dGUg
PSAwOwotICAgICAgICBzaGExLmFkZEJ5dGVzKHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBzdHJpbmcu
bGVuZ3RoKCkpOwotICAgICAgICBzaGExLmFkZEJ5dGVzKCZudWxsQnl0ZSwgMSk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBhdXRvIHV0ZjggPSBzdHJpbmcudXRmOCgpOwotICAgIHNo
YTEuYWRkQnl0ZXMocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4odXRmOC5kYXRhKCkp
LCB1dGY4Lmxlbmd0aCgpICsgMSk7IC8vIEluY2x1ZGUgdGVybWluYXRpbmcgbnVsbCBieXRlLgot
fQotCi1TdHJpbmcgTWVkaWFEZXZpY2VzUmVxdWVzdDo6aGFzaElEKGNvbnN0IFN0cmluZyYgaWQp
Ci17Ci0gICAgaWYgKGlkLmlzRW1wdHkoKSB8fCBtX2lkSGFzaFNhbHQuaXNFbXB0eSgpKQotICAg
ICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKLQotICAgIFNIQTEgc2hhMTsKLQotICAgIGhhc2hT
dHJpbmcoc2hhMSwgaWQpOwotICAgIGhhc2hTdHJpbmcoc2hhMSwgbV9pZEhhc2hTYWx0KTsKLQot
ICAgIFNIQTE6OkRpZ2VzdCBkaWdlc3Q7Ci0gICAgc2hhMS5jb21wdXRlSGFzaChkaWdlc3QpOwot
Ci0gICAgcmV0dXJuIFNIQTE6OmhleERpZ2VzdChkaWdlc3QpLmRhdGEoKTsKLX0KLQogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzUmVxdWVzdC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFE
ZXZpY2VzUmVxdWVzdC5oCShyZXZpc2lvbiAyMTU5MTUpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlc1JlcXVlc3QuaAkod29ya2luZyBjb3B5KQpAQCAt
NTEsMTMgKzUxLDkgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY29udGV4dERlc3Ryb3llZCgpIGZp
bmFsOwogCi0gICAgU3RyaW5nIGhhc2hJRChjb25zdCBTdHJpbmcmKTsKLQogICAgIE1lZGlhRGV2
aWNlczo6RW51bWVyYXRlRGV2aWNlc1Byb21pc2UgbV9wcm9taXNlOwogICAgIFJlZlB0cjxNZWRp
YURldmljZXNSZXF1ZXN0PiBtX3Byb3RlY3RvcjsKICAgICBSZWZQdHI8TWVkaWFEZXZpY2VzRW51
bWVyYXRpb25SZXF1ZXN0PiBtX2VudW1lcmF0aW9uUmVxdWVzdDsKLQotICAgIFN0cmluZyBtX2lk
SGFzaFNhbHQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNvbnRyb2xsZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNvbnRyb2xs
ZXIuaAkocmV2aXNpb24gMjE1OTE1KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9Vc2VyTWVkaWFDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDExICs0Niwx
NSBAQCBwdWJsaWM6CiAgICAgdm9pZCBlbnVtZXJhdGVNZWRpYURldmljZXMoTWVkaWFEZXZpY2Vz
RW51bWVyYXRpb25SZXF1ZXN0Jik7CiAgICAgdm9pZCBjYW5jZWxNZWRpYURldmljZXNFbnVtZXJh
dGlvblJlcXVlc3QoTWVkaWFEZXZpY2VzRW51bWVyYXRpb25SZXF1ZXN0Jik7CiAKKyAgICB2b2lk
IHNldERldmljZUlESGFzaFNhbHQoY29uc3QgU3RyaW5nJiBzYWx0KSB7IG1faWRIYXNoU2FsdCA9
IHNhbHQ7IH0KKyAgICBTdHJpbmcgZGV2aWNlSURIYXNoU2FsdCgpIGNvbnN0IHsgcmV0dXJuIG1f
aWRIYXNoU2FsdDsgfQorCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGNvbnN0IGNoYXIqIHN1
cHBsZW1lbnROYW1lKCk7CiAgICAgc3RhdGljIFVzZXJNZWRpYUNvbnRyb2xsZXIqIGZyb20oUGFn
ZSogcGFnZSkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VXNlck1lZGlhQ29udHJvbGxlcio+KFN1cHBs
ZW1lbnQ8UGFnZT46OmZyb20ocGFnZSwgc3VwcGxlbWVudE5hbWUoKSkpOyB9CiAKIHByaXZhdGU6
CiAgICAgVXNlck1lZGlhQ2xpZW50KiBtX2NsaWVudDsKKyAgICBTdHJpbmcgbV9pZEhhc2hTYWx0
OwogfTsKIAogaW5saW5lIHZvaWQgVXNlck1lZGlhQ29udHJvbGxlcjo6cmVxdWVzdFVzZXJNZWRp
YUFjY2VzcyhVc2VyTWVkaWFSZXF1ZXN0JiByZXF1ZXN0KQpJbmRleDogU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmgJKHJldmlzaW9uIDIxNTkxNSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMjc0LDYgKzEyNzQsOCBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKE1F
RElBX1NUUkVBTSkKICAgICB2b2lkIHNldEhhc0FjdGl2ZU1lZGlhU3RyZWFtVHJhY2soKSB7IG1f
aGFzSGFkQWN0aXZlTWVkaWFTdHJlYW1UcmFjayA9IHRydWU7IH0KICAgICBib29sIGhhc0hhZEFj
dGl2ZU1lZGlhU3RyZWFtVHJhY2soKSBjb25zdCB7IHJldHVybiBtX2hhc0hhZEFjdGl2ZU1lZGlh
U3RyZWFtVHJhY2s7IH0KKyAgICB2b2lkIHNldERldmljZUlESGFzaFNhbHQoY29uc3QgU3RyaW5n
JiBzYWx0KSB7IG1faWRIYXNoU2FsdCA9IHNhbHQ7IH0KKyAgICBTdHJpbmcgZGV2aWNlSURIYXNo
U2FsdCgpIGNvbnN0IHsgcmV0dXJuIG1faWRIYXNoU2FsdDsgfQogI2VuZGlmCiAKIC8vIEZJWE1F
OiBGaW5kIGEgYmV0dGVyIHBsYWNlIGZvciB0aGlzIGZ1bmN0aW9uYWxpdHkuCkBAIC0xNzQ4LDYg
KzE3NTAsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQor
ICAgIFN0cmluZyBtX2lkSGFzaFNhbHQ7CiAgICAgYm9vbCBtX2hhc0hhZEFjdGl2ZU1lZGlhU3Ry
ZWFtVHJhY2sgeyBmYWxzZSB9OwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9F
dmVudE5hbWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMu
aAkocmV2aXNpb24gMjE1OTE1KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAko
d29ya2luZyBjb3B5KQpAQCAtOTEsNiArOTEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
bWFjcm8oY3V0KSBcCiAgICAgbWFjcm8oZGF0YWNoYW5uZWwpIFwKICAgICBtYWNybyhkYmxjbGlj
aykgXAorICAgIG1hY3JvKGRldmljZWNoYW5nZSkgXAogICAgIG1hY3JvKGRldmljZW1vdGlvbikg
XAogICAgIG1hY3JvKGRldmljZW9yaWVudGF0aW9uKSBcCiAgICAgbWFjcm8oZGlzY2hhcmdpbmd0
aW1lY2hhbmdlKSBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5
LmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3Rvcnku
aW4JKHJldmlzaW9uIDIxNTkxNSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZh
Y3RvcnkuaW4JKHdvcmtpbmcgY29weSkKQEAgLTE1LDYgKzE1LDcgQEAgSURCT3BlbkRCUmVxdWVz
dCBjb25kaXRpb25hbD1JTkRFWEVEX0RBVAogSURCUmVxdWVzdCBjb25kaXRpb25hbD1JTkRFWEVE
X0RBVEFCQVNFCiBJREJUcmFuc2FjdGlvbiBjb25kaXRpb25hbD1JTkRFWEVEX0RBVEFCQVNFCiBN
ZWRpYUNvbnRyb2xsZXIgY29uZGl0aW9uYWw9VklERU8KK01lZGlhRGV2aWNlcyBjb25kaXRpb25h
bD1NRURJQV9TVFJFQU0KIE1lZGlhS2V5U2Vzc2lvbiBjb25kaXRpb25hbD1FTkNSWVBURURfTUVE
SUEKIE1lZGlhUmVtb3RlQ29udHJvbHMgY29uZGl0aW9uYWw9TUVESUFfU0VTU0lPTgogTWVkaWFT
b3VyY2UgY29uZGl0aW9uYWw9TUVESUFfU09VUkNFCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgkocmV2aXNpb24gMjE1OTE1KQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTIwMiw2ICsy
MDIsNyBAQCBvbmNvbnRleHRtZW51CiBvbmNvcHkKIG9uY3V0CiBvbmRibGNsaWNrCitvbmRldmlj
ZWNoYW5nZQogb25kcmFnCiBvbmRyYWdlbmQKIG9uZHJhZ2VudGVyCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vQ2FwdHVyZURldmlj
ZU1hbmFnZXIuY3BwCShyZXZpc2lvbiAyMTU5MTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTcwLDE4ICs3MCwzOCBAQCBWZWN0b3I8Q2FwdHVyZURldmljZT4gQ2FwdHVyZURldmljZU1hbmFn
CiAgICAgcmV0dXJuIHNvdXJjZXNJbmZvOwogfQogCi1ib29sIENhcHR1cmVEZXZpY2VNYW5hZ2Vy
OjpjYXB0dXJlRGV2aWNlRnJvbURldmljZUlEKGNvbnN0IFN0cmluZyYgY2FwdHVyZURldmljZUlE
LCBDYXB0dXJlRGV2aWNlJiBmb3VuZERldmljZSkKK3N0ZDo6b3B0aW9uYWw8Q2FwdHVyZURldmlj
ZT4gQ2FwdHVyZURldmljZU1hbmFnZXI6OmNhcHR1cmVEZXZpY2VGcm9tUGVyc2lzdGVudElEKGNv
bnN0IFN0cmluZyYgY2FwdHVyZURldmljZUlEKQogewogICAgIGZvciAoYXV0byYgZGV2aWNlIDog
Y2FwdHVyZURldmljZXMoKSkgewotICAgICAgICBpZiAoZGV2aWNlLnBlcnNpc3RlbnRJZCgpID09
IGNhcHR1cmVEZXZpY2VJRCkgewotICAgICAgICAgICAgZm91bmREZXZpY2UgPSBkZXZpY2U7Ci0g
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQorICAgICAgICBpZiAoZGV2aWNlLnBl
cnNpc3RlbnRJZCgpID09IGNhcHR1cmVEZXZpY2VJRCkKKyAgICAgICAgICAgIHJldHVybiBkZXZp
Y2U7CiAgICAgfQogCi0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiB9CiAKKyNpZiAwCitzdGQ6Om9wdGlvbmFsPENhcHR1cmVEZXZpY2U+IENhcHR1cmVEZXZpY2VN
YW5hZ2VyOjpjYXB0dXJlRGV2aWNlRnJvbVBlcnNpc3RlbnRJRChjb25zdCBTdHJpbmcmIGNhcHR1
cmVEZXZpY2VJRCwgY29uc3QgU3RyaW5nJiBpZEhhc2hTYWx0KQoreworICAgIGZvciAoYXV0byYg
ZGV2aWNlIDogY2FwdHVyZURldmljZXMoKSkgeworICAgICAgICBhdXRvIGhhc2hlZElEID0gUmVh
bHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2luZ2xldG9uKCkuaGFzaFN0cmluZ1dpdGhTYWx0KGRl
dmljZS5wZXJzaXN0ZW50SWQoKSwgaWRIYXNoU2FsdCk7CisgICAgICAgIGlmIChkZXZpY2UucGVy
c2lzdGVudElkKCkgPT0gY2FwdHVyZURldmljZUlEKQorICAgICAgICAgICAgcmV0dXJuIGRldmlj
ZTsKKyAgICB9CisKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OworfQorCitmb3IgKGF1dG8mIGNh
cHR1cmVEZXZpY2UgOiBnZXRNZWRpYVN0cmVhbURldmljZXMoKSkgeworICAgIGF1dG8gaGFzaGVk
SUQgPSBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24oKS5oYXNoU3RyaW5nV2l0
aFNhbHQoY2FwdHVyZURldmljZS5wZXJzaXN0ZW50SWQoKSwgaWRIYXNoU2FsdCk7CisgICAgaWYg
KGhhc2hlZElEID09IHVuaXF1ZUlEKQorICAgICAgICByZXR1cm4gU3RyaW5nIHsgY2FwdHVyZURl
dmljZS5wZXJzaXN0ZW50SWQoKSB9OworfQorCityZXR1cm4gRXhjZXB0aW9uIHsgTk9UX0ZPVU5E
X0VSUiB9OworCisjZW5kaWYKKwogc3RkOjpvcHRpb25hbDxDYXB0dXJlRGV2aWNlPiBDYXB0dXJl
RGV2aWNlTWFuYWdlcjo6ZGV2aWNlV2l0aFVJRChjb25zdCBTdHJpbmcmIGRldmljZVVJRCwgUmVh
bHRpbWVNZWRpYVNvdXJjZTo6VHlwZSB0eXBlKQogewogICAgIGZvciAoYXV0byYgY2FwdHVyZURl
dmljZSA6IGNhcHR1cmVEZXZpY2VzKCkpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuaAkocmV2
aXNpb24gMjE1OTE1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vQ2Fw
dHVyZURldmljZU1hbmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQCBwdWJs
aWM6CiAKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIH5DYXB0dXJlRGV2aWNlTWFuYWdlcigpOwot
ICAgIGJvb2wgY2FwdHVyZURldmljZUZyb21EZXZpY2VJRChjb25zdCBTdHJpbmcmIGNhcHR1cmVE
ZXZpY2VJRCwgQ2FwdHVyZURldmljZSYgc291cmNlKTsKKyAgICBzdGQ6Om9wdGlvbmFsPENhcHR1
cmVEZXZpY2U+IGNhcHR1cmVEZXZpY2VGcm9tUGVyc2lzdGVudElEKGNvbnN0IFN0cmluZyYgY2Fw
dHVyZURldmljZUlEKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1Jl
YWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwCShyZXZpc2lvbiAyMTU5MTUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTEgKzMwLDEyIEBACiAgKi8KIAogI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaCIKIAogI2lmIEVO
QUJMRShNRURJQV9TVFJFQU0pCi0jaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5o
IgogCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1Qcml2YXRlLmgiCisjaW5jbHVkZSA8d3RmL1NIQTEu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xMDksNyArMTEwLDc0IEBAIHZvaWQgUmVh
bHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6dW5zZXRWaWQKICAgICBpZiAobV92aWRlb0NhcHR1cmVE
ZXZpY2VNYW5hZ2VyID09ICZkZXZpY2VNYW5hZ2VyKQogICAgICAgICBtX3ZpZGVvQ2FwdHVyZURl
dmljZU1hbmFnZXIgPSBudWxscHRyOwogfQorCitzdGF0aWMgdm9pZCBhZGRTdHJpbmdUb1NIQTEo
U0hBMSYgc2hhMSwgY29uc3QgU3RyaW5nJiBzdHJpbmcpCit7CisgICAgaWYgKHN0cmluZy5pc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChzdHJpbmcuaXM4Qml0KCkgJiYgc3Ry
aW5nLmNvbnRhaW5zT25seUFTQ0lJKCkpIHsKKyAgICAgICAgY29uc3QgdWludDhfdCBudWxsQnl0
ZSA9IDA7CisgICAgICAgIHNoYTEuYWRkQnl0ZXMoc3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0cmlu
Zy5sZW5ndGgoKSk7CisgICAgICAgIHNoYTEuYWRkQnl0ZXMoJm51bGxCeXRlLCAxKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gdXRmOCA9IHN0cmluZy51dGY4KCk7CisgICAg
c2hhMS5hZGRCeXRlcyhyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPih1dGY4LmRhdGEo
KSksIHV0ZjgubGVuZ3RoKCkgKyAxKTsgLy8gSW5jbHVkZSB0ZXJtaW5hdGluZyBudWxsIGJ5dGUu
Cit9CisKK1N0cmluZyBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpoYXNoU3RyaW5nV2l0aFNh
bHQoY29uc3QgU3RyaW5nJiBpZCwgY29uc3QgU3RyaW5nJiBoYXNoU2FsdCkKK3sKKyAgICBpZiAo
aWQuaXNFbXB0eSgpIHx8IGhhc2hTYWx0LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGVtcHR5
U3RyaW5nKCk7CisKKyAgICBTSEExIHNoYTE7CisKKyAgICBhZGRTdHJpbmdUb1NIQTEoc2hhMSwg
aWQpOworICAgIGFkZFN0cmluZ1RvU0hBMShzaGExLCBoYXNoU2FsdCk7CisgICAgCisgICAgU0hB
MTo6RGlnZXN0IGRpZ2VzdDsKKyAgICBzaGExLmNvbXB1dGVIYXNoKGRpZ2VzdCk7CiAgICAgCisg
ICAgcmV0dXJuIFNIQTE6OmhleERpZ2VzdChkaWdlc3QpLmRhdGEoKTsKK30KKworc3RkOjpvcHRp
b25hbDxDYXB0dXJlRGV2aWNlPiBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpjYXB0dXJlRGV2
aWNlV2l0aFVuaXF1ZUlEKGNvbnN0IFN0cmluZyYgdW5pcXVlSUQsIGNvbnN0IFN0cmluZyYgaWRI
YXNoU2FsdCkKK3sKKyAgICBmb3IgKGF1dG8mIGRldmljZSA6IGdldE1lZGlhU3RyZWFtRGV2aWNl
cygpKSB7CisgICAgICAgIGlmICh1bmlxdWVJRCA9PSBoYXNoU3RyaW5nV2l0aFNhbHQoZGV2aWNl
LnBlcnNpc3RlbnRJZCgpLCBpZEhhc2hTYWx0KSkKKyAgICAgICAgICAgIHJldHVybiBkZXZpY2U7
CisgICAgfQorCisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKK30KKworRXhjZXB0aW9uT3I8dm9p
ZD4gUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2V0RGV2aWNlRW5hYmxlZChjb25zdCBTdHJp
bmcmLCBib29sKQoreworICAgIHJldHVybiBFeGNlcHRpb24geyBOT1RfRk9VTkRfRVJSLCBBU0NJ
SUxpdGVyYWwoIk5vdCBpbXBsZW1lbnRlZCEiKSB9OworfQorCitSZWFsdGltZU1lZGlhU291cmNl
Q2VudGVyOjpEZXZpY2VzQ2hhbmdlZE9ic2VydmVyVG9rZW4gUmVhbHRpbWVNZWRpYVNvdXJjZUNl
bnRlcjo6YWRkRGV2aWNlc0NoYW5nZWRPYnNlcnZlcihzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4mJiBv
YnNlcnZlcikKK3sKKyAgICBEZXZpY2VzQ2hhbmdlZE9ic2VydmVyVG9rZW4gbmV4dFRva2VuID0g
MDsKKyAgICBtX2RldmljZXNDaGFuZ2VkT2JzZXJ2ZXJzLnNldCgrK25leHRUb2tlbiwgV1RGTW92
ZShvYnNlcnZlcikpOworICAgIHJldHVybiBuZXh0VG9rZW47Cit9CisKK3ZvaWQgUmVhbHRpbWVN
ZWRpYVNvdXJjZUNlbnRlcjo6cmVtb3ZlRGV2aWNlc0NoYW5nZWRPYnNlcnZlcihEZXZpY2VzQ2hh
bmdlZE9ic2VydmVyVG9rZW4gdG9rZW4pCit7CisgICAgYm9vbCB3YXNSZW1vdmVkID0gbV9kZXZp
Y2VzQ2hhbmdlZE9ic2VydmVycy5yZW1vdmUodG9rZW4pOworICAgIEFTU0VSVF9VTlVTRUQod2Fz
UmVtb3ZlZCwgd2FzUmVtb3ZlZCk7Cit9CisKK3ZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRl
cjo6Y2FwdHVyZURldmljZXNDaGFuZ2VkKCkKK3sKKyAgICBhdXRvIGNhbGxiYWNrcyA9IG1fZGV2
aWNlc0NoYW5nZWRPYnNlcnZlcnM7CisgICAgZm9yIChhdXRvIGl0IDogY2FsbGJhY2tzKQorICAg
ICAgICBpdC52YWx1ZSgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAv
LyBFTkFCTEUoTUVESUFfU1RSRUFNKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIu
aAkocmV2aXNpb24gMjE1OTE1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxMSAr
MjksMTEgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBSZWFsdGltZU1lZGlhU291
cmNlQ2VudGVyX2gKLSNkZWZpbmUgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcl9oCisjcHJhZ21h
IG9uY2UKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKKyNpbmNsdWRlICJFeGNlcHRpb25P
ci5oIgogI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2UuaCIKICNpbmNsdWRlICJSZWFsdGlt
ZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMuaCIKICNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgpAQCAtODgsNiArODgsMTUgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgdW5zZXRWaWRlb0NhcHR1cmVEZXZpY2VNYW5hZ2VyKENhcHR1cmVEZXZpY2VNYW5hZ2VyJik7
CiAgICAgQ2FwdHVyZURldmljZU1hbmFnZXIqIHZpZGVvQ2FwdHVyZURldmljZU1hbmFnZXIoKSBj
b25zdCB7IHJldHVybiBtX3ZpZGVvQ2FwdHVyZURldmljZU1hbmFnZXI7IH0KIAorICAgIFN0cmlu
ZyBoYXNoU3RyaW5nV2l0aFNhbHQoY29uc3QgU3RyaW5nJiBpZCwgY29uc3QgU3RyaW5nJiBoYXNo
U2FsdCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxDYXB0dXJlRGV2aWNlPiBj
YXB0dXJlRGV2aWNlV2l0aFVuaXF1ZUlEKGNvbnN0IFN0cmluZyYgaWQsIGNvbnN0IFN0cmluZyYg
aGFzaFNhbHQpOworICAgIHZpcnR1YWwgRXhjZXB0aW9uT3I8dm9pZD4gc2V0RGV2aWNlRW5hYmxl
ZChjb25zdCBTdHJpbmcmLCBib29sKTsKKworICAgIHVzaW5nIERldmljZXNDaGFuZ2VkT2JzZXJ2
ZXJUb2tlbiA9IHVuc2lnbmVkOworICAgIERldmljZXNDaGFuZ2VkT2JzZXJ2ZXJUb2tlbiBhZGRE
ZXZpY2VzQ2hhbmdlZE9ic2VydmVyKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiYmKTsKKyAgICB2b2lk
IHJlbW92ZURldmljZXNDaGFuZ2VkT2JzZXJ2ZXIoRGV2aWNlc0NoYW5nZWRPYnNlcnZlclRva2Vu
KTsKKyAgICB2b2lkIGNhcHR1cmVEZXZpY2VzQ2hhbmdlZCgpOworCiBwcm90ZWN0ZWQ6CiAgICAg
UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcigpOwogCkBAIC05OSwxMCArMTA4LDExIEBAIHByb3Rl
Y3RlZDoKIAogICAgIENhcHR1cmVEZXZpY2VNYW5hZ2VyKiBtX2F1ZGlvQ2FwdHVyZURldmljZU1h
bmFnZXIgeyBudWxscHRyIH07CiAgICAgQ2FwdHVyZURldmljZU1hbmFnZXIqIG1fdmlkZW9DYXB0
dXJlRGV2aWNlTWFuYWdlciB7IG51bGxwdHIgfTsKKworICAgIEhhc2hNYXA8dW5zaWduZWQsIHN0
ZDo6ZnVuY3Rpb248dm9pZCgpPj4gbV9kZXZpY2VzQ2hhbmdlZE9ic2VydmVyczsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCiAK
LSNlbmRpZiAvLyBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyX2gKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNh
cHR1cmVEZXZpY2VNYW5hZ2VyLm1tCShyZXZpc2lvbiAyMTU5MTUpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5tbQkod29y
a2luZyBjb3B5KQpAQCAtMTMyLDggKzEzMiw4IEBAIHZvaWQgQVZDYXB0dXJlRGV2aWNlTWFuYWdl
cjo6cmVmcmVzaEFWQ2EKICAgICAgICAgaWYgKCFoYXNNYXRjaGluZ1R5cGUpCiAgICAgICAgICAg
ICBjb250aW51ZTsKIAotICAgICAgICBDYXB0dXJlRGV2aWNlIGV4aXN0aW5nQ2FwdHVyZURldmlj
ZTsKLSAgICAgICAgaWYgKGNhcHR1cmVEZXZpY2VGcm9tRGV2aWNlSUQocGxhdGZvcm1EZXZpY2Uu
dW5pcXVlSUQsIGV4aXN0aW5nQ2FwdHVyZURldmljZSkgJiYgZXhpc3RpbmdDYXB0dXJlRGV2aWNl
LnR5cGUoKSA9PSB0eXBlKQorICAgICAgICBzdGQ6Om9wdGlvbmFsPENhcHR1cmVEZXZpY2U+IGV4
aXN0aW5nQ2FwdHVyZURldmljZSA9IGNhcHR1cmVEZXZpY2VGcm9tUGVyc2lzdGVudElEKHBsYXRm
b3JtRGV2aWNlLnVuaXF1ZUlEKTsKKyAgICAgICAgaWYgKGV4aXN0aW5nQ2FwdHVyZURldmljZSAm
JiBleGlzdGluZ0NhcHR1cmVEZXZpY2UtPnR5cGUoKSA9PSB0eXBlKQogICAgICAgICAgICAgY29u
dGludWU7CiAKICAgICAgICAgQ2FwdHVyZURldmljZSBjYXB0dXJlRGV2aWNlKHBsYXRmb3JtRGV2
aWNlLnVuaXF1ZUlELCB0eXBlLCBwbGF0Zm9ybURldmljZS5sb2NhbGl6ZWROYW1lKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1l
TWVkaWFTb3VyY2UuY3BwCShyZXZpc2lvbiAyMTU5MTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDgsOCArNDgsMTMgQEAgVmVjdG9yPENhcHR1cmVEZXZpY2U+JiBNb2NrUmVhbHRpbWVNZWRpYQog
ewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxWZWN0b3I8Q2FwdHVyZURldmljZT4+IGluZm87
CiAgICAgaWYgKCFpbmZvLmdldCgpLnNpemUoKSkgewotICAgICAgICBpbmZvLmdldCgpLmFwcGVu
ZChDYXB0dXJlRGV2aWNlKCIyMzljMjRiMC0yYjE1LTExZTMtODIyNC0wODAwMjAwYzlhNjYiLCBD
YXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpBdWRpbywgIk1vY2sgYXVkaW8gZGV2aWNlIDEiKSk7
Ci0gICAgICAgIGluZm8uZ2V0KCkuYXBwZW5kKENhcHR1cmVEZXZpY2UoIjIzOWMyNGIxLTJiMTUt
MTFlMy04MjI0LTA4MDAyMDBjOWE2NiIsIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OkF1ZGlv
LCAiTW9jayBhdWRpbyBkZXZpY2UgMiIpKTsKKyAgICAgICAgYXV0byBjYXB0dXJlRGV2aWNlID0g
Q2FwdHVyZURldmljZSgiMjM5YzI0YjAtMmIxNS0xMWUzLTgyMjQtMDgwMDIwMGM5YTY2IiwgQ2Fw
dHVyZURldmljZTo6RGV2aWNlVHlwZTo6QXVkaW8sICJNb2NrIGF1ZGlvIGRldmljZSAxIik7Cisg
ICAgICAgIGNhcHR1cmVEZXZpY2Uuc2V0RW5hYmxlZCh0cnVlKTsKKyAgICAgICAgaW5mby5nZXQo
KS5hcHBlbmQoY2FwdHVyZURldmljZSk7CisKKyAgICAgICAgY2FwdHVyZURldmljZSA9IENhcHR1
cmVEZXZpY2UoIjIzOWMyNGIxLTJiMTUtMTFlMy04MjI0LTA4MDAyMDBjOWE2NiIsIENhcHR1cmVE
ZXZpY2U6OkRldmljZVR5cGU6OkF1ZGlvLCAiTW9jayBhdWRpbyBkZXZpY2UgMiIpOworICAgICAg
ICBjYXB0dXJlRGV2aWNlLnNldEVuYWJsZWQodHJ1ZSk7CisgICAgICAgIGluZm8uZ2V0KCkuYXBw
ZW5kKGNhcHR1cmVEZXZpY2UpOwogICAgIH0KICAgICByZXR1cm4gaW5mbzsKIH0KQEAgLTU4LDgg
KzYzLDEzIEBAIFZlY3RvcjxDYXB0dXJlRGV2aWNlPiYgTW9ja1JlYWx0aW1lTWVkaWEKIHsKICAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VmVjdG9yPENhcHR1cmVEZXZpY2U+PiBpbmZvOwogICAg
IGlmICghaW5mby5nZXQoKS5zaXplKCkpIHsKLSAgICAgICAgaW5mby5nZXQoKS5hcHBlbmQoQ2Fw
dHVyZURldmljZSgiMjM5YzI0YjItMmIxNS0xMWUzLTgyMjQtMDgwMDIwMGM5YTY2IiwgQ2FwdHVy
ZURldmljZTo6RGV2aWNlVHlwZTo6VmlkZW8sICJNb2NrIHZpZGVvIGRldmljZSAxIikpOwotICAg
ICAgICBpbmZvLmdldCgpLmFwcGVuZChDYXB0dXJlRGV2aWNlKCIyMzljMjRiMy0yYjE1LTExZTMt
ODIyNC0wODAwMjAwYzlhNjYiLCBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpWaWRlbywgIk1v
Y2sgdmlkZW8gZGV2aWNlIDIiKSk7CisgICAgICAgIGF1dG8gY2FwdHVyZURldmljZSA9IENhcHR1
cmVEZXZpY2UoIjIzOWMyNGIyLTJiMTUtMTFlMy04MjI0LTA4MDAyMDBjOWE2NiIsIENhcHR1cmVE
ZXZpY2U6OkRldmljZVR5cGU6OlZpZGVvLCAiTW9jayB2aWRlbyBkZXZpY2UgMSIpOworICAgICAg
ICBjYXB0dXJlRGV2aWNlLnNldEVuYWJsZWQodHJ1ZSk7CisgICAgICAgIGluZm8uZ2V0KCkuYXBw
ZW5kKGNhcHR1cmVEZXZpY2UpOworCisgICAgICAgIGNhcHR1cmVEZXZpY2UgPSBDYXB0dXJlRGV2
aWNlKCIyMzljMjRiMy0yYjE1LTExZTMtODIyNC0wODAwMjAwYzlhNjYiLCBDYXB0dXJlRGV2aWNl
OjpEZXZpY2VUeXBlOjpWaWRlbywgIk1vY2sgdmlkZW8gZGV2aWNlIDIiKTsKKyAgICAgICAgY2Fw
dHVyZURldmljZS5zZXRFbmFibGVkKHRydWUpOworICAgICAgICBpbmZvLmdldCgpLmFwcGVuZChj
YXB0dXJlRGV2aWNlKTsKICAgICB9CiAgICAgcmV0dXJuIGluZm87CiB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1l
ZGlhU291cmNlQ2VudGVyLmNwcAkocmV2aXNpb24gMjE1OTE1KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEzMywyOCArMTMzLDI4IEBAIHZvaWQgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VD
ZW50ZXI6OmNyZWEKICAgICBWZWN0b3I8UmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+PiB2aWRlb1Nv
dXJjZXM7CiAKICAgICBpZiAoIWF1ZGlvRGV2aWNlSUQuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGF1
dG8mIGF1ZGlvRGV2aWNlcyA9IE1vY2tSZWFsdGltZU1lZGlhU291cmNlOjphdWRpb0RldmljZXMo
KTsKLSAgICAgICAgaWYgKGF1ZGlvRGV2aWNlSUQgPT0gYXVkaW9EZXZpY2VzWzBdLnBlcnNpc3Rl
bnRJZCgpKSB7Ci0gICAgICAgICAgICBhdXRvIHNvdXJjZSA9IE1vY2tSZWFsdGltZUF1ZGlvU291
cmNlOjpjcmVhdGUoYXVkaW9EZXZpY2VzWzBdLmxhYmVsKCksIGF1ZGlvQ29uc3RyYWludHMpOwot
ICAgICAgICAgICAgaWYgKHNvdXJjZSkKLSAgICAgICAgICAgICAgICBhdWRpb1NvdXJjZXMuYXBw
ZW5kKHNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpKTsKLSAgICAgICAgfSBlbHNlIGlmIChhdWRpb0Rl
dmljZUlEID09IGF1ZGlvRGV2aWNlc1sxXS5wZXJzaXN0ZW50SWQoKSkgewotICAgICAgICAgICAg
YXV0byBzb3VyY2UgPSBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6Y3JlYXRlKGF1ZGlvRGV2aWNl
c1sxXS5sYWJlbCgpLCBhdWRpb0NvbnN0cmFpbnRzKTsKLSAgICAgICAgICAgIGlmIChzb3VyY2Up
Ci0gICAgICAgICAgICAgICAgYXVkaW9Tb3VyY2VzLmFwcGVuZChzb3VyY2UucmVsZWFzZU5vbk51
bGwoKSk7CisgICAgICAgIGZvciAoYXV0byYgY2FwdHVyZURldmljZSA6IE1vY2tSZWFsdGltZU1l
ZGlhU291cmNlOjphdWRpb0RldmljZXMoKSkgeworICAgICAgICAgICAgaWYgKCFjYXB0dXJlRGV2
aWNlLmVuYWJsZWQoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAg
aWYgKGF1ZGlvRGV2aWNlSUQgPT0gY2FwdHVyZURldmljZS5wZXJzaXN0ZW50SWQoKSkgeworICAg
ICAgICAgICAgICAgIGF1dG8gc291cmNlID0gTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6OmNyZWF0
ZShjYXB0dXJlRGV2aWNlLmxhYmVsKCksIGF1ZGlvQ29uc3RyYWludHMpOworICAgICAgICAgICAg
ICAgIGlmIChzb3VyY2UpCisgICAgICAgICAgICAgICAgICAgIGF1ZGlvU291cmNlcy5hcHBlbmQo
c291cmNlLnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAg
fQogCiAgICAgaWYgKCF2aWRlb0RldmljZUlELmlzRW1wdHkoKSkgewotICAgICAgICBhdXRvJiB2
aWRlb0RldmljZXMgPSBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6dmlkZW9EZXZpY2VzKCk7Ci0g
ICAgICAgIGlmICh2aWRlb0RldmljZUlEID09IHZpZGVvRGV2aWNlc1swXS5wZXJzaXN0ZW50SWQo
KSkgewotICAgICAgICAgICAgYXV0byBzb3VyY2UgPSBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6
Y3JlYXRlKHZpZGVvRGV2aWNlc1swXS5sYWJlbCgpLCB2aWRlb0NvbnN0cmFpbnRzKTsKLSAgICAg
ICAgICAgIGlmIChzb3VyY2UpCi0gICAgICAgICAgICAgICAgdmlkZW9Tb3VyY2VzLmFwcGVuZChz
b3VyY2UucmVsZWFzZU5vbk51bGwoKSk7Ci0gICAgICAgIH0gZWxzZSBpZiAodmlkZW9EZXZpY2VJ
RCA9PSB2aWRlb0RldmljZXNbMV0ucGVyc2lzdGVudElkKCkpIHsKLSAgICAgICAgICAgIGF1dG8g
c291cmNlID0gTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmNyZWF0ZSh2aWRlb0RldmljZXNbMV0u
bGFiZWwoKSwgdmlkZW9Db25zdHJhaW50cyk7Ci0gICAgICAgICAgICBpZiAoc291cmNlKQotICAg
ICAgICAgICAgICAgIHZpZGVvU291cmNlcy5hcHBlbmQoc291cmNlLnJlbGVhc2VOb25OdWxsKCkp
OworICAgICAgICBmb3IgKGF1dG8mIGNhcHR1cmVEZXZpY2UgOiBNb2NrUmVhbHRpbWVNZWRpYVNv
dXJjZTo6dmlkZW9EZXZpY2VzKCkpIHsKKyAgICAgICAgICAgIGlmICghY2FwdHVyZURldmljZS5l
bmFibGVkKCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIGlmICh2
aWRlb0RldmljZUlEID09IGNhcHR1cmVEZXZpY2UucGVyc2lzdGVudElkKCkpIHsKKyAgICAgICAg
ICAgICAgICBhdXRvIHNvdXJjZSA9IE1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpjcmVhdGUoY2Fw
dHVyZURldmljZS5sYWJlbCgpLCB2aWRlb0NvbnN0cmFpbnRzKTsKKyAgICAgICAgICAgICAgICBp
ZiAoc291cmNlKQorICAgICAgICAgICAgICAgICAgICB2aWRlb1NvdXJjZXMuYXBwZW5kKHNvdXJj
ZS5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIApA
QCAtMTY4LDggKzE2OCwxOSBAQCBWZWN0b3I8Q2FwdHVyZURldmljZT4gTW9ja1JlYWx0aW1lTWVk
aWFTCiB7CiAgICAgVmVjdG9yPENhcHR1cmVEZXZpY2U+IHNvdXJjZXM7CiAKLSAgICBzb3VyY2Vz
LmFwcGVuZFZlY3RvcihNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6YXVkaW9EZXZpY2VzKCkpOwot
ICAgIHNvdXJjZXMuYXBwZW5kVmVjdG9yKE1vY2tSZWFsdGltZU1lZGlhU291cmNlOjp2aWRlb0Rl
dmljZXMoKSk7CisgICAgZm9yIChhdXRvJiBjYXB0dXJlRGV2aWNlIDogTW9ja1JlYWx0aW1lTWVk
aWFTb3VyY2U6OmF1ZGlvRGV2aWNlcygpKSB7CisgICAgICAgIGlmICghY2FwdHVyZURldmljZS5l
bmFibGVkKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBzb3VyY2VzLmFwcGVu
ZChjYXB0dXJlRGV2aWNlKTsKKyAgICB9CisKKyAgICBmb3IgKGF1dG8mIGNhcHR1cmVEZXZpY2Ug
OiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6dmlkZW9EZXZpY2VzKCkpIHsKKyAgICAgICAgaWYg
KCFjYXB0dXJlRGV2aWNlLmVuYWJsZWQoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAg
ICAgIHNvdXJjZXMuYXBwZW5kKGNhcHR1cmVEZXZpY2UpOworICAgIH0KIAogICAgIHJldHVybiBz
b3VyY2VzOwogfQpAQCAtMTg0LDYgKzE5NSwyMSBAQCBSZWFsdGltZU1lZGlhU291cmNlOjpDYXB0
dXJlRmFjdG9yeSogTW9jCiAgICAgcmV0dXJuICZNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6ZmFj
dG9yeSgpOwogfQogCitFeGNlcHRpb25Pcjx2b2lkPiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNl
bnRlcjo6c2V0RGV2aWNlRW5hYmxlZChjb25zdCBTdHJpbmcmIGlkLCBib29sIGVuYWJsZWQpCit7
CisgICAgZm9yIChhdXRvJiBjYXB0dXJlRGV2aWNlIDogZ2V0TWVkaWFTdHJlYW1EZXZpY2VzKCkp
IHsKKyAgICAgICAgaWYgKGlkID09IGNhcHR1cmVEZXZpY2UucGVyc2lzdGVudElkKCkpIHsKKyAg
ICAgICAgICAgIGlmIChlbmFibGVkICE9IGNhcHR1cmVEZXZpY2UuZW5hYmxlZCgpKSB7CisgICAg
ICAgICAgICAgICAgY2FwdHVyZURldmljZS5zZXRFbmFibGVkKGVuYWJsZWQpOworICAgICAgICAg
ICAgICAgIGNhcHR1cmVEZXZpY2VzQ2hhbmdlZCgpOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICByZXR1cm4geyB9OworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IE5PVF9GT1VORF9FUlIgfTsKK30KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2Vu
dGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVh
bHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oCShyZXZpc2lvbiAyMTU5MTUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQ3LDYgKzQ3LDggQEAgcHJpdmF0ZToKIAogICAgIFJlYWx0aW1lTWVkaWFT
b3VyY2U6OkNhcHR1cmVGYWN0b3J5KiBkZWZhdWx0QXVkaW9GYWN0b3J5KCkgZmluYWw7CiAgICAg
UmVhbHRpbWVNZWRpYVNvdXJjZTo6Q2FwdHVyZUZhY3RvcnkqIGRlZmF1bHRWaWRlb0ZhY3Rvcnko
KSBmaW5hbDsKKworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldERldmljZUVuYWJsZWQoY29uc3Qg
U3RyaW5nJiBwZXJzaXN0ZW50SUQsIGJvb2wpIGZpbmFsOwogfTsKIAogfQpJbmRleDogU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAkocmV2aXNpb24gMjE1OTE1KQorKysgU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MDI1LDYgKzQw
MjUsMjcgQEAgdm9pZCBJbnRlcm5hbHM6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZAogICAgIG1f
bmV4dFRyYWNrRnJhbWVQcm9taXNlID0gc3RkOjpudWxsb3B0OwogfQogCitFeGNlcHRpb25Pcjx2
b2lkPiBJbnRlcm5hbHM6OnNldE1lZGlhRGV2aWNlU3RhdGUoY29uc3QgU3RyaW5nJiBpZCwgY29u
c3QgU3RyaW5nJiBwcm9wZXJ0eSwgYm9vbCB2YWx1ZSkKK3sKKyAgICBhdXRvKiBkb2N1bWVudCA9
IGNvbnRleHREb2N1bWVudCgpOworICAgIGlmICghZG9jdW1lbnQpCisgICAgICAgIHJldHVybiBF
eGNlcHRpb24geyBJTlZBTElEX0FDQ0VTU19FUlIsIEFTQ0lJTGl0ZXJhbCgiTm8gY29udGV4dCBk
b2N1bWVudCIpIH07CisKKyAgICBpZiAoIWVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHBy
b3BlcnR5LCAiZW5hYmxlZCIpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSU5WQUxJRF9B
Q0NFU1NfRVJSLCBtYWtlU3RyaW5nKCJcIiIgKyBwcm9wZXJ0eSwgIlwiIGlzIG5vdCBhIHZhbGlk
IHByb3BlcnR5IGZvciB0aGlzIG1ldGhvZC4iKSB9OworCisgICAgYXV0byBzYWx0ID0gZG9jdW1l
bnQtPmRldmljZUlESGFzaFNhbHQoKTsKKyAgICBzdGQ6Om9wdGlvbmFsPENhcHR1cmVEZXZpY2U+
IGRldmljZSA9IFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRvbigpLmNhcHR1cmVE
ZXZpY2VXaXRoVW5pcXVlSUQoaWQsIHNhbHQpOworICAgIGlmICghZGV2aWNlKQorICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgSU5WQUxJRF9BQ0NFU1NfRVJSLCBtYWtlU3RyaW5nKCJkZXZpY2Ug
d2l0aCBJRCBcIiIgKyBpZCwgIlwiIG5vdCBmb3VuZC4iKSB9OworCisgICAgYXV0byByZXN1bHQg
PSBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24oKS5zZXREZXZpY2VFbmFibGVk
KGRldmljZS0+cGVyc2lzdGVudElkKCksIHZhbHVlKTsKKyAgICBpZiAocmVzdWx0Lmhhc0V4Y2Vw
dGlvbigpKQorICAgICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKKworICAg
IHJldHVybiB7IH07Cit9CisKICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgJKHJldmlzaW9uIDIxNTkxNSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgJKHdvcmtpbmcgY29weSkKQEAgLTU3MCw2ICs1
NzAsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAg
RXhjZXB0aW9uT3I8dm9pZD4gc2V0TWVkaWFEZXZpY2VTdGF0ZShjb25zdCBTdHJpbmcmIGlkLCBj
b25zdCBTdHJpbmcmIHByb3BlcnR5LCBib29sIHZhbHVlKTsKICAgICB1bnNpZ25lZCBsb25nIHRy
YWNrQXVkaW9TYW1wbGVDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fdHJhY2tBdWRpb1NhbXBsZUNv
dW50OyB9CiAgICAgdW5zaWduZWQgbG9uZyB0cmFja1ZpZGVvU2FtcGxlQ291bnQoKSBjb25zdCB7
IHJldHVybiBtX3RyYWNrVmlkZW9TYW1wbGVDb3VudDsgfQogICAgIHZvaWQgb2JzZXJ2ZU1lZGlh
U3RyZWFtVHJhY2soTWVkaWFTdHJlYW1UcmFjayYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmlkbAkocmV2aXNpb24gMjE1OTE1KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC01MzYsNCArNTM2LDUgQEAgZW51bSBF
dmVudFRocm90dGxpbmdCZWhhdmlvciB7CiAgICAgW0NvbmRpdGlvbmFsPU1FRElBX1NUUkVBTV0g
UHJvbWlzZTxJbWFnZURhdGE+IGdyYWJOZXh0TWVkaWFTdHJlYW1UcmFja0ZyYW1lKCk7CiAgICAg
W0NvbmRpdGlvbmFsPU1FRElBX1NUUkVBTV0gcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxv
bmcgdHJhY2tBdWRpb1NhbXBsZUNvdW50OwogICAgIFtDb25kaXRpb25hbD1NRURJQV9TVFJFQU1d
IHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIHRyYWNrVmlkZW9TYW1wbGVDb3VudDsK
KyAgICBbQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFNLCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBz
ZXRNZWRpYURldmljZVN0YXRlKERPTVN0cmluZyBkZXZpY2VJRCwgRE9NU3RyaW5nIHByb3BlcnR5
LCBib29sZWFuIHZhbHVlKTsKIH07CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMTU5MTUpCisrKyBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxNy0w
NC0yNyAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBJ
bXBsZW1lbnQgb25kZXZpY2VjaGFuZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2OTg3MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjg5NDUwMzU+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0
L21lZGlhc3RyZWFtL2RldmljZS1jaGFuZ2UtZXZlbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL2RldmljZS1jaGFuZ2UtZXZlbnQuaHRtbDogQWRkZWQu
CisKIDIwMTctMDQtMjcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAg
ICBBbGlnbiBjb2xzcGFuL3Jvd3NwYW4gbGltaXRzIHdpdGggdGhlIGxhdGVzdCBIVE1MIHNwZWNp
ZmljYXRpb24KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vZGV2aWNlLWNoYW5n
ZS1ldmVudC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRp
YXN0cmVhbS9kZXZpY2UtY2hhbmdlLWV2ZW50LWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2RldmljZS1jaGFuZ2UtZXZlbnQtZXhwZWN0
ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMyBAQAorCitQQVNTICdkZXZpY2VjaGFu
Z2UnIGV2ZW50IGZpcmVkIHdoZW4gZGV2aWNlIGxpc3QgY2hhbmdlcyAKKwpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9kZXZpY2UtY2hhbmdlLWV2ZW50Lmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9kZXZpY2UtY2hhbmdlLWV2ZW50Lmh0
bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9kZXZpY2Ut
Y2hhbmdlLWV2ZW50Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2MiBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKyAg
ICA8dGl0bGU+VGVzdGluZyBsb2NhbCBhdWRpbyBjYXB0dXJlIHBsYXliYWNrIGNhdXNlcyAicGxh
eWluZyIgZXZlbnQgdG8gZmlyZTwvdGl0bGU+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdD4KKyAg
ICBsZXQgZGV2aWNlSWRzID0gW107CisgICAgcHJvbWlzZV90ZXN0KCh0ZXN0KSA9PiB7CisgICAg
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0VXNl
ck1lZGlhUGVybWlzc2lvbih0cnVlKTsKKworICAgICAgICByZXR1cm4gbmF2aWdhdG9yLm1lZGlh
RGV2aWNlcy5lbnVtZXJhdGVEZXZpY2VzKCkudGhlbigoZGV2aWNlcykgPT4geworICAgICAgICAg
ICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAgICAgICAg
ICAgICBkZXZpY2VzLmZvckVhY2goZnVuY3Rpb24oZGV2aWNlKSB7IGRldmljZUlkcy5wdXNoKGRl
dmljZS5kZXZpY2VJZCk7IH0pOworICAgICAgICAgICAgICAgIG5hdmlnYXRvci5tZWRpYURldmlj
ZXMub25kZXZpY2VjaGFuZ2UgPSAoZXZlbnQpID0+IHsgcmVzb2x2ZShldmVudCk7IH07CisgICAg
ICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiByZXNvbHZlKG5ldyBFdmVudCgnZGV2aWNlY2hh
bmdlJykpLCAxMDApOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pLnRoZW4oKGV2ZW50KSA9
PiB7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGV2ZW50LnR5cGUsICJkZXZpY2VjaGFuZ2Ui
LCAiY29ycmVjdCBldmVudCB0eXBlIik7CisgICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2Uo
KHJlc29sdmUsIHJlamVjdCkgPT4geworICAgICAgICAgICAgICAgIHJldHVybiBuYXZpZ2F0b3Iu
bWVkaWFEZXZpY2VzLmVudW1lcmF0ZURldmljZXMoKS50aGVuKChkZXZpY2VzKSA9PiB7CisgICAg
ICAgICAgICAgICAgICAgIGxldCBkZXZpY2VJRHMyID0gW107CisgICAgICAgICAgICAgICAgICAg
IGRldmljZXMuZm9yRWFjaChmdW5jdGlvbihkZXZpY2UpIHsgZGV2aWNlSURzMi5wdXNoKGRldmlj
ZS5kZXZpY2VJZCk7IH0pOworICAgICAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgYXNzZXJ0X3RydWUoZGV2aWNlSURzMi5pbmRleE9mKGRldmljZUlkc1swXSkg
IT0gLTEsICJkZXZpY2Ugbm90IHJlcG9ydGVkIGJ5IGVudW1lcmF0ZURldmljZXMiKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZGV2aWNlSURzMi5sZW5ndGgsIGRldmlj
ZUlkcy5sZW5ndGgsICJjb3JyZWN0IG51bWJlciBvZiBkZXZpY2VzIik7CisgICAgICAgICAgICAg
ICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGUpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgICAgICAgICAgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5vbmRldmljZWNoYW5n
ZSA9IChldmVudCkgPT4geyByZXNvbHZlKGV2ZW50KTsgfTsKKyAgICAgICAgICAgICAgICAgICAg
c2V0VGltZW91dCgoKSA9PiByZXNvbHZlKG5ldyBFdmVudCgnZGV2aWNlY2hhbmdlJykpLCAxMDAp
OworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pLnRoZW4o
KGV2ZW50KSA9PiB7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGV2ZW50LnR5cGUsICJkZXZp
Y2VjaGFuZ2UiLCAiY29ycmVjdCBldmVudCB0eXBlIik7CisgICAgICAgICAgICByZXR1cm4gbmV3
IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4geworICAgICAgICAgICAgICAgIHJldHVybiBu
YXZpZ2F0b3IubWVkaWFEZXZpY2VzLmVudW1lcmF0ZURldmljZXMoKS50aGVuKChkZXZpY2VzKSA9
PiB7CisgICAgICAgICAgICAgICAgICAgIGxldCBkZXZpY2VJRHMyID0gW107CisgICAgICAgICAg
ICAgICAgICAgIGRldmljZXMuZm9yRWFjaChmdW5jdGlvbihkZXZpY2UpIHsgZGV2aWNlSURzMi5w
dXNoKGRldmljZS5kZXZpY2VJZCk7IH0pOworICAgICAgICAgICAgICAgICAgICB0cnkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X2luX2FycmF5KGRldmljZUlkc1swXSwgZGV2aWNl
SURzMiwgImRldmljZSByZXBvcnRlZCBieSBlbnVtZXJhdGVEZXZpY2VzIGFnYWluIik7CisgICAg
ICAgICAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGRldmljZUlEczIubGVuZ3RoLCBkZXZp
Y2VJZHMubGVuZ3RoLCAiY29ycmVjdCBudW1iZXIgb2YgZGV2aWNlcyIpOworICAgICAgICAgICAg
ICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChlKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAg
ICAgICAgICAgIH0pOworICAgICAgICB9KTsKKworICAgIH0sICInZGV2aWNlY2hhbmdlJyBldmVu
dCBmaXJlZCB3aGVuIGRldmljZSBsaXN0IGNoYW5nZXMiKTsKKyAgICA8L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPC9ib2R5PgorPC9odG1sPgo=
</data>
<flag name="review"
          id="329693"
          type_id="1"
          status="+"
          setter="jer.noble"
    />
          </attachment>
      

    </bug>

</bugzilla>