<?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>229357</bug_id>
          
          <creation_ts>2021-08-20 16:49:08 -0700</creation_ts>
          <short_desc>[macOS] getDisplayMedia should capture at the constrained size if possible</short_desc>
          <delta_ts>2021-09-03 07:42:14 -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>WebRTC</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=229868</see_also>
          <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>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>hta</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>tommyw</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1786045</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-08-20 16:49:08 -0700</bug_when>
    <thetext>Give getDisplayMedia classes enough information to capture at the constrained size if possible, instead of always capturing at the device size and resizing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1786046</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-08-20 16:49:28 -0700</bug_when>
    <thetext>&lt;rdar://problem/82191109&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1786454</commentid>
    <comment_count>2</comment_count>
      <attachid>436205</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-08-23 09:38:18 -0700</bug_when>
    <thetext>Created attachment 436205
Patch

This won&apos;t apply without the changes in https://bugs.webkit.org/show_bug.cgi?id=229142</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1789345</commentid>
    <comment_count>3</comment_count>
      <attachid>437037</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-09-01 09:29:49 -0700</bug_when>
    <thetext>Created attachment 437037
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1789380</commentid>
    <comment_count>4</comment_count>
      <attachid>437037</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-09-01 11:22:55 -0700</bug_when>
    <thetext>Comment on attachment 437037
Patch

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

&gt; Source/WebCore/platform/mediastream/mac/CGDisplayStreamScreenCaptureSource.h:57
&gt; +    const IntSize intrinsicSize() const final;

s/const// here and elsewhere</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1789431</commentid>
    <comment_count>5</comment_count>
      <attachid>437057</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-09-01 12:55:02 -0700</bug_when>
    <thetext>Created attachment 437057
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1789433</commentid>
    <comment_count>6</comment_count>
      <attachid>437037</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-09-01 13:00:38 -0700</bug_when>
    <thetext>Comment on attachment 437037
Patch

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

&gt;&gt; Source/WebCore/platform/mediastream/mac/CGDisplayStreamScreenCaptureSource.h:57
&gt;&gt; +    const IntSize intrinsicSize() const final;
&gt; 
&gt; s/const// here and elsewhere

The first const, the one that needlessly makes the return value const, not the one after the function name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1789449</commentid>
    <comment_count>7</comment_count>
      <attachid>437061</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-09-01 13:21:54 -0700</bug_when>
    <thetext>Created attachment 437061
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1789495</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-09-01 14:49:12 -0700</bug_when>
    <thetext>Committed r281880 (241210@main): &lt;https://commits.webkit.org/241210@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 437061.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>436205</attachid>
            <date>2021-08-23 09:38:18 -0700</date>
            <delta_ts>2021-09-01 09:29:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>get-display-media-capture-size-patch.txt</filename>
            <type>text/plain</type>
            <size>23859</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0ZWNjNDUwZDY5NzEuLjZiMTEwMTdmN2ZjYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBA
CisyMDIxLTA4LTIwICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisg
ICAgICAgIFttYWNPU10gZ2V0RGlzcGxheU1lZGlhIHNob3VsZCBjYXB0dXJlIGF0IHRoZSBjb25z
dHJhaW5lZCBzaXplIGlmIHBvc3NpYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjkzNTcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgyMTkxMTA5
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFz
dC9tZWRpYXN0cmVhbS9nZXQtZGlzcGxheS1tZWRpYS1jYXBhYmlsaXRpZXMtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL2dldC1kaXNwbGF5LW1lZGlhLWNh
cGFiaWxpdGllcy5odG1sOiBBZGRlZC4KKwogMjAyMS0wOC0xMCAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgogCiAgICAgICAgIERvY3VtZW50LmJhc2VVUkkgaXMgaW5hY2N1cmF0ZSBm
b3IgaWZyYW1lIHNyY2RvYyBkb2N1bWVudHMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
bWVkaWFzdHJlYW0vZ2V0LWRpc3BsYXktbWVkaWEtY2FwYWJpbGl0aWVzLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vZ2V0LWRpc3BsYXktbWVkaWEtY2FwYWJpbGl0
aWVzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu
LjcxOTRhZWMzMjc3ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFz
dHJlYW0vZ2V0LWRpc3BsYXktbWVkaWEtY2FwYWJpbGl0aWVzLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDMgQEAKKworUEFTUyBjaGVjayBjYXBhYmlsaXRpZXMKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9nZXQtZGlzcGxheS1tZWRpYS1jYXBhYmlsaXRpZXMuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vZ2V0LWRpc3BsYXktbWVkaWEtY2FwYWJp
bGl0aWVzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5kMzE3
Nzk3ZmViMWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFt
L2dldC1kaXNwbGF5LW1lZGlhLWNhcGFiaWxpdGllcy5odG1sCkBAIC0wLDAgKzEsMzAgQEAKKzwh
ZG9jdHlwZSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxtZXRhIGNoYXJzZXQ9
InV0Zi04Ij4KKyAgICAgICAgPHRpdGxlPnZpZGVvIHRyYWNrIGNyZWF0ZWQgd2l0aCBnZXREaXNw
bGF5TWVkaWEgc2hvdWxkIHJldHVybiBjb3JyZWN0IGNhcGFiaWxpdGllczwvdGl0bGU+CisgICAg
ICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0
PgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0
LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9nZXREaXNwbGF5
TWVkaWEtdXRpbHMuanMiPjwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keT4KKworICAg
ICAgICA8c2NyaXB0PgorICAgICAgICAgICAgbGV0IGRlZmF1bHRXaWR0aDsKKyAgICAgICAgICAg
IGxldCBkZWZhdWx0SGVpZ2h0OworICAgICAgICAgICAgcHJvbWlzZV90ZXN0KGFzeW5jICgpID0+
IHsKKyAgICAgICAgICAgICAgICBzdHJlYW0gPSBhd2FpdCBjYWxsR2V0RGlzcGxheU1lZGlhKHsg
dmlkZW86IHRydWUgfSk7CisgICAgICAgICAgICAgICAgbGV0IGNhcGFiaWxpdGllcyA9IHN0cmVh
bS5nZXRWaWRlb1RyYWNrcygpWzBdLmdldENhcGFiaWxpdGllcygpOworCisgICAgICAgICAgICAg
ICAgbGV0IGhlaWdodCA9IGNhcGFiaWxpdGllcy5oZWlnaHQ7CisgICAgICAgICAgICAgICAgYXNz
ZXJ0X2VxdWFscyhoZWlnaHQubWF4LCAxMDgwKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1
YWxzKGhlaWdodC5taW4sIDEpOworCisgICAgICAgICAgICAgICAgbGV0IHdpZHRoID0gY2FwYWJp
bGl0aWVzLndpZHRoOworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMod2lkdGgubWF4LCAx
OTIwKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHdpZHRoLm1pbiwgMSk7CisgICAg
ICAgICAgICB9LCAiY2hlY2sgY2FwYWJpbGl0aWVzIik7CisKKyAgICAgICAgPC9zY3JpcHQ+Cisg
ICAgPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDk1MGQxNzYzZWM1MC4uZWVkNDA1NmFk
N2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDggQEAKKzIwMjEtMDgtMjAgIEVyaWMgQ2FybHNv
biAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgW21hY09TXSBnZXREaXNwbGF5
TWVkaWEgc2hvdWxkIGNhcHR1cmUgYXQgdGhlIGNvbnN0cmFpbmVkIHNpemUgaWYgcG9zc2libGUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTM1Nwor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vODIxOTExMDk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ3JlYXRlIGRpc3BsYXkgc3RyZWFtIHdpdGggcHJl
ZmVycmVkIHdpZHRoLCBoZWlnaHQsIGFuZCBmcmFtZSByYXRlLgorCisgICAgICAgIFRlc3Q6IGZh
c3QvbWVkaWFzdHJlYW0vZ2V0LWRpc3BsYXktbWVkaWEtY2FwYWJpbGl0aWVzLmh0bWwKKworICAg
ICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9DR0Rpc3BsYXlTdHJlYW1DYXB0dXJlU291
cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNHRGlzcGxheVN0cmVhbUNhcHR1cmVTb3VyY2U6
OnN0YXJ0KTogUmVtb3ZlIGZyYW1lIHJhdGUgcGFyYW1ldGVyLgorICAgICAgICAoV2ViQ29yZTo6
Q0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJjZTo6c3RhcnREaXNwbGF5U3RyZWFtKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpDR0Rpc3BsYXlTdHJlYW1DYXB0dXJlU291cmNlOjpjb21taXRD
b25maWd1cmF0aW9uKTogUGFzcyBzb3VyY2Ugc2V0dGluZ3MKKyAgICAgICAgaW5zdGVhZCBvZiBm
cmFtZSByYXRlLiBSZWxlYXNlIGFuZCByZWNyZWF0ZSB0aGUgZGlzcGxheSBzdHJlYW0gaWYgd2lk
dGgsIGhlaWdodCwKKyAgICAgICAgb3IgZnJhbWUgcmF0ZSBoYXMgY2hhbmdlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJjZS5o
OgorICAgICAgICAoV2ViQ29yZTo6Q0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJjZTo6d2lkdGgg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJjZTo6
aGVpZ2h0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNHRGlzcGxheVN0cmVhbUNhcHR1cmVT
b3VyY2U6OmZyYW1lUmF0ZSBjb25zdCk6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvQ0dEaXNwbGF5U3RyZWFtU2NyZWVuQ2FwdHVyZVNvdXJjZS5oOgorICAgICAgICAqIHBs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9DR0Rpc3BsYXlTdHJlYW1TY3JlZW5DYXB0dXJlU291cmNl
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6Q0dEaXNwbGF5U3RyZWFtU2NyZWVuQ2FwdHVyZVNvdXJj
ZTo6Y3JlYXRlRGlzcGxheVN0cmVhbSk6IFJlbW92ZQorICAgICAgICBmcmFtZSByYXRlIHBhcmFt
ZXRlci4gQ3JlYXRlIGRpc3BsYXkgc3RyZWFtIHdpdGggdGhlIGNvbmZpZ3VyZWQgd2lkdGggYW5k
IGhlaWdodCwKKyAgICAgICAgbm90IHRoZSBzaXplIG9mIHRoZSBzY3JlZW4uCisgICAgICAgIChX
ZWJDb3JlOjpDR0Rpc3BsYXlTdHJlYW1TY3JlZW5DYXB0dXJlU291cmNlOjppbnRyaW5zaWNTaXpl
IGNvbnN0KTogUmV0dXJuIHNjcmVlbgorICAgICAgICBzaXplIHNvIHRyYWNrIGNhcGFiaWxpdGll
cyBhcmUgYWNjdXJhdGUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ0dX
aW5kb3dDYXB0dXJlU291cmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L0NHV2luZG93Q2FwdHVyZVNvdXJjZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNHV2luZG93Q2Fw
dHVyZVNvdXJjZTo6Y3JlYXRlKTogUmVtb3ZlIGZyYW1lIHJhdGUgcGFyYW1ldGVyLgorICAgICAg
ICAoV2ViQ29yZTo6Q0dXaW5kb3dDYXB0dXJlU291cmNlOjppbnRyaW5zaWNTaXplIGNvbnN0KTog
UmV0dXJuIHdpbmRvdyBzaXplLgorCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L0Rpc3BsYXlDYXB0dXJlU291cmNlTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlD
YXB0dXJlU291cmNlTWFjOjpjYXBhYmlsaXRpZXMpOiBVc2UgY2FwdHVyZXIgaW50cmluc2ljIHNp
emUgZm9yIAorICAgICAgICB3aWR0aCBhbmQgaGVpZ2h0IGNhcGFiaWxpdGllcy4KKworICAgICAg
ICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYy5oOgor
ICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TW9ja0Rpc3BsYXlDYXB0dXJlcjo6c3RhcnQpOgorICAgICAg
ICAoV2ViQ29yZTo6TW9ja0Rpc3BsYXlDYXB0dXJlcjo6aW50cmluc2ljU2l6ZSBjb25zdCk6CisK
IDIwMjEtMDgtMTYgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgW21hY09TXSBSZWZhY3RvciBzY3JlZW4gY2FwdHVyZSBjbGFzcwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NHRGlzcGxheVN0cmVhbUNh
cHR1cmVTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L0NHRGlzcGxheVN0cmVhbUNhcHR1cmVTb3VyY2UuY3BwCmluZGV4IDM2MzU0OWQ1YjBiOS4uOWRj
OTViODRhYzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvQ0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NHRGlzcGxheVN0cmVhbUNhcHR1cmVTb3VyY2Uu
Y3BwCkBAIC00OCwxNCArNDgsMTQgQEAgQ0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJjZTo6fkNH
RGlzcGxheVN0cmVhbUNhcHR1cmVTb3VyY2UoKQogICAgIG1fY3VycmVudEZyYW1lID0gbnVsbHB0
cjsKIH0KIAotYm9vbCBDR0Rpc3BsYXlTdHJlYW1DYXB0dXJlU291cmNlOjpzdGFydChmbG9hdCBm
cmFtZVJhdGUpCitib29sIENHRGlzcGxheVN0cmVhbUNhcHR1cmVTb3VyY2U6OnN0YXJ0KCkKIHsK
ICAgICBBTFdBWVNfTE9HX0lGKGxvZ2dlclB0cigpLCBMT0dJREVOVElGSUVSKTsKIAogICAgIGlm
IChtX2lzUnVubmluZykKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICByZXR1cm4gc3RhcnRE
aXNwbGF5U3RyZWFtKGZyYW1lUmF0ZSk7CisgICAgcmV0dXJuIHN0YXJ0RGlzcGxheVN0cmVhbSgp
OwogfQogCiB2b2lkIENHRGlzcGxheVN0cmVhbUNhcHR1cmVTb3VyY2U6OnN0b3AoKQpAQCAtNzYs
NyArNzYsNyBAQCBEaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYzo6RGlzcGxheUZyYW1lVHlwZSBDR0Rp
c3BsYXlTdHJlYW1DYXB0dXJlU291cmNlOjpnZW5lcmF0ZQogICAgIHJldHVybiBEaXNwbGF5Q2Fw
dHVyZVNvdXJjZU1hYzo6RGlzcGxheUZyYW1lVHlwZSB7IFJldGFpblB0cjxJT1N1cmZhY2VSZWY+
IHsgbV9jdXJyZW50RnJhbWUuaW9TdXJmYWNlKCkgfSB9OwogfQogCi1ib29sIENHRGlzcGxheVN0
cmVhbUNhcHR1cmVTb3VyY2U6OnN0YXJ0RGlzcGxheVN0cmVhbShmbG9hdCBmcmFtZVJhdGUpCiti
b29sIENHRGlzcGxheVN0cmVhbUNhcHR1cmVTb3VyY2U6OnN0YXJ0RGlzcGxheVN0cmVhbSgpCiB7
CiAgICAgaWYgKCFjaGVja0Rpc3BsYXlTdHJlYW0oKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtODUsNyArODUsNyBAQCBib29sIENHRGlzcGxheVN0cmVhbUNhcHR1cmVTb3VyY2U6OnN0YXJ0
RGlzcGxheVN0cmVhbShmbG9hdCBmcmFtZVJhdGUpCiAgICAgICAgIG1fY2FwdHVyZVF1ZXVlID0g
YWRvcHRPU09iamVjdChkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoIkNHRGlzcGxheVN0cmVhbUNhcHR1
cmVTb3VyY2UgQ2FwdHVyZSBRdWV1ZSIsIERJU1BBVENIX1FVRVVFX1NFUklBTCkpOwogCiAgICAg
aWYgKCFtX2Rpc3BsYXlTdHJlYW0pIHsKLSAgICAgICAgbV9kaXNwbGF5U3RyZWFtID0gY3JlYXRl
RGlzcGxheVN0cmVhbShmcmFtZVJhdGUsIGZyYW1lQXZhaWxhYmxlSGFuZGxlcigpLCBtX2NhcHR1
cmVRdWV1ZS5nZXQoKSk7CisgICAgICAgIG1fZGlzcGxheVN0cmVhbSA9IGNyZWF0ZURpc3BsYXlT
dHJlYW0oZnJhbWVBdmFpbGFibGVIYW5kbGVyKCksIG1fY2FwdHVyZVF1ZXVlLmdldCgpKTsKICAg
ICAgICAgaWYgKCFtX2Rpc3BsYXlTdHJlYW0pCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAK
QEAgLTEwNSwxMCArMTA1LDIyIEBAIGJvb2wgQ0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJjZTo6
c3RhcnREaXNwbGF5U3RyZWFtKGZsb2F0IGZyYW1lUmF0ZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotdm9pZCBDR0Rpc3BsYXlTdHJlYW1DYXB0dXJlU291cmNlOjpjb21taXRDb25maWd1cmF0aW9u
KGZsb2F0IGZyYW1lUmF0ZSkKK3ZvaWQgQ0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJjZTo6Y29t
bWl0Q29uZmlndXJhdGlvbihjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRp
bmdzKQogewotICAgIGlmIChtX2lzUnVubmluZyAmJiAhbV9kaXNwbGF5U3RyZWFtKQotICAgICAg
ICBzdGFydERpc3BsYXlTdHJlYW0oZnJhbWVSYXRlKTsKKyAgICBpZiAobV93aWR0aCA9PSBzZXR0
aW5ncy53aWR0aCgpICYmIG1faGVpZ2h0ID09IHNldHRpbmdzLmhlaWdodCgpICYmIG1fZnJhbWVS
YXRlID09IHNldHRpbmdzLmZyYW1lUmF0ZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3dp
ZHRoID0gc2V0dGluZ3Mud2lkdGgoKTsKKyAgICBtX2hlaWdodCA9IHNldHRpbmdzLmhlaWdodCgp
OworICAgIG1fZnJhbWVSYXRlID0gc2V0dGluZ3MuZnJhbWVSYXRlKCk7CisKKyAgICBpZiAobV9k
aXNwbGF5U3RyZWFtKSB7CisgICAgICAgIENHRGlzcGxheVN0cmVhbVN0b3AobV9kaXNwbGF5U3Ry
ZWFtLmdldCgpKTsKKyAgICAgICAgbV9kaXNwbGF5U3RyZWFtID0gbnVsbHB0cjsKKyAgICB9CisK
KyAgICBpZiAobV9pc1J1bm5pbmcpCisgICAgICAgIHN0YXJ0RGlzcGxheVN0cmVhbSgpOwogfQog
CiB2b2lkIENHRGlzcGxheVN0cmVhbUNhcHR1cmVTb3VyY2U6OmRpc3BsYXlXYXNSZWNvbmZpZ3Vy
ZWQoQ0dEaXJlY3REaXNwbGF5SUQsIENHRGlzcGxheUNoYW5nZVN1bW1hcnlGbGFncykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9DR0Rpc3BsYXlT
dHJlYW1DYXB0dXJlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvQ0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJjZS5oCmluZGV4IDFjMjBkZmMwMGFjZS4u
YTE5MDM4ZGNhYWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvQ0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9DR0Rpc3BsYXlTdHJlYW1DYXB0dXJlU291cmNl
LmgKQEAgLTQ3LDIzICs0NywyNyBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICB1c2luZyBG
cmFtZUF2YWlsYWJsZUNhbGxiYWNrID0gdm9pZCAoXikoQ0dEaXNwbGF5U3RyZWFtRnJhbWVTdGF0
dXMsIHVpbnQ2NF90LCBJT1N1cmZhY2VSZWYsIENHRGlzcGxheVN0cmVhbVVwZGF0ZVJlZik7Ci0g
ICAgdmlydHVhbCBSZXRhaW5QdHI8Q0dEaXNwbGF5U3RyZWFtUmVmPiBjcmVhdGVEaXNwbGF5U3Ry
ZWFtKGZsb2F0LCBGcmFtZUF2YWlsYWJsZUNhbGxiYWNrLCBkaXNwYXRjaF9xdWV1ZV90KSA9IDA7
CisgICAgdmlydHVhbCBSZXRhaW5QdHI8Q0dEaXNwbGF5U3RyZWFtUmVmPiBjcmVhdGVEaXNwbGF5
U3RyZWFtKEZyYW1lQXZhaWxhYmxlQ2FsbGJhY2ssIGRpc3BhdGNoX3F1ZXVlX3QpID0gMDsKICAg
ICB2aXJ0dWFsIGJvb2wgY2hlY2tEaXNwbGF5U3RyZWFtKCkgeyByZXR1cm4gdHJ1ZTsgfQogCiAg
ICAgQ0dEaXNwbGF5U3RyZWFtUmVmIGRpc3BsYXlTdHJlYW0oKSBjb25zdCB7IHJldHVybiBtX2Rp
c3BsYXlTdHJlYW0uZ2V0KCk7IH0KICAgICB2b2lkIGludmFsaWRhdGVEaXNwbGF5U3RyZWFtKCkg
eyBtX2Rpc3BsYXlTdHJlYW0gPSBudWxscHRyOyB9CiAKKyAgICB1aW50MzJfdCB3aWR0aCgpIGNv
bnN0IHsgcmV0dXJuIG1fd2lkdGg7IH0KKyAgICB1aW50MzJfdCBoZWlnaHQoKSBjb25zdCB7IHJl
dHVybiBtX2hlaWdodDsgfQorICAgIGZsb2F0IGZyYW1lUmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
ZnJhbWVSYXRlOyB9CisKIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgZGlzcGxheVJlY29uZmln
dXJhdGlvbkNhbGxCYWNrKENHRGlyZWN0RGlzcGxheUlELCBDR0Rpc3BsYXlDaGFuZ2VTdW1tYXJ5
RmxhZ3MsIHZvaWQqKTsKIAogICAgIC8vIERpc3BsYXlDYXB0dXJlU291cmNlTWFjOjpDYXB0dXJl
cgotICAgIGJvb2wgc3RhcnQoZmxvYXQgZnJhbWVSYXRlKSBmaW5hbDsKKyAgICBib29sIHN0YXJ0
KCkgZmluYWw7CiAgICAgdm9pZCBzdG9wKCkgZmluYWw7CiAgICAgRGlzcGxheUNhcHR1cmVTb3Vy
Y2VNYWM6OkRpc3BsYXlGcmFtZVR5cGUgZ2VuZXJhdGVGcmFtZSgpIGZpbmFsOwotICAgIHZvaWQg
Y29tbWl0Q29uZmlndXJhdGlvbihmbG9hdCBmcmFtZVJhdGUpIGZpbmFsOworICAgIHZvaWQgY29t
bWl0Q29uZmlndXJhdGlvbihjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmKSBmaW5h
bDsKIAogICAgIHZvaWQgZGlzcGxheVdhc1JlY29uZmlndXJlZChDR0RpcmVjdERpc3BsYXlJRCwg
Q0dEaXNwbGF5Q2hhbmdlU3VtbWFyeUZsYWdzKTsKLSAgICBib29sIHN0YXJ0RGlzcGxheVN0cmVh
bShmbG9hdCBmcmFtZVJhdGUpOworICAgIGJvb2wgc3RhcnREaXNwbGF5U3RyZWFtKCk7CiAgICAg
RnJhbWVBdmFpbGFibGVDYWxsYmFjayBmcmFtZUF2YWlsYWJsZUhhbmRsZXIoKTsKIAogICAgIGNs
YXNzIERpc3BsYXlTdXJmYWNlIHsKQEAgLTEwNSw2ICsxMDksMTAgQEAgcHJpdmF0ZToKICAgICBP
U09iamVjdFB0cjxkaXNwYXRjaF9xdWV1ZV90PiBtX2NhcHR1cmVRdWV1ZTsKICAgICBCbG9ja1B0
cjx2b2lkKENHRGlzcGxheVN0cmVhbUZyYW1lU3RhdHVzLCB1aW50NjRfdCwgSU9TdXJmYWNlUmVm
LCBDR0Rpc3BsYXlTdHJlYW1VcGRhdGVSZWYpPiBtX2ZyYW1lQXZhaWxhYmxlSGFuZGxlcjsKIAor
ICAgIHVpbnQzMl90IG1fd2lkdGggeyAwIH07CisgICAgdWludDMyX3QgbV9oZWlnaHQgeyAwIH07
CisgICAgZmxvYXQgbV9mcmFtZVJhdGUgeyAwIH07CisKICAgICBib29sIG1faXNSdW5uaW5nIHsg
ZmFsc2UgfTsKICAgICBib29sIG1fb2JzZXJ2aW5nRGlzcGxheUNoYW5nZXMgeyBmYWxzZSB9Owog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9D
R0Rpc3BsYXlTdHJlYW1TY3JlZW5DYXB0dXJlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ0dEaXNwbGF5U3RyZWFtU2NyZWVuQ2FwdHVyZVNvdXJjZS5o
CmluZGV4IDY5MmZmNWE0N2ExMS4uYWJiMWNjYmM4NmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ0dEaXNwbGF5U3RyZWFtU2NyZWVuQ2FwdHVy
ZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9D
R0Rpc3BsYXlTdHJlYW1TY3JlZW5DYXB0dXJlU291cmNlLmgKQEAgLTU0LDEyICs1NCwxMyBAQCBw
cml2YXRlOgogICAgIC8vIERpc3BsYXlDYXB0dXJlU291cmNlTWFjOjpDYXB0dXJlcgogICAgIENh
cHR1cmVEZXZpY2U6OkRldmljZVR5cGUgZGV2aWNlVHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OlNjcmVlbjsgfQogICAgIFJlYWx0aW1lTWVkaWFT
b3VyY2VTZXR0aW5nczo6RGlzcGxheVN1cmZhY2VUeXBlIHN1cmZhY2VUeXBlKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpEaXNwbGF5U3VyZmFjZVR5
cGU6Ok1vbml0b3I7IH0KKyAgICBjb25zdCBJbnRTaXplIGludHJpbnNpY1NpemUoKSBjb25zdCBm
aW5hbDsKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBjb25zdCBjaGFyKiBsb2dDbGFz
c05hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiQ0dEaXNwbGF5U3RyZWFtU2NyZWVuQ2FwdHVy
ZVNvdXJjZSI7IH0KICNlbmRpZgogCiAgICAgLy8gQ0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJj
ZQotICAgIFJldGFpblB0cjxDR0Rpc3BsYXlTdHJlYW1SZWY+IGNyZWF0ZURpc3BsYXlTdHJlYW0o
ZmxvYXQsIEZyYW1lQXZhaWxhYmxlQ2FsbGJhY2ssIGRpc3BhdGNoX3F1ZXVlX3QpIGZpbmFsOwor
ICAgIFJldGFpblB0cjxDR0Rpc3BsYXlTdHJlYW1SZWY+IGNyZWF0ZURpc3BsYXlTdHJlYW0oRnJh
bWVBdmFpbGFibGVDYWxsYmFjaywgZGlzcGF0Y2hfcXVldWVfdCkgZmluYWw7CiAgICAgYm9vbCBj
aGVja0Rpc3BsYXlTdHJlYW0oKSBmaW5hbDsKIAogICAgIGNsYXNzIERpc3BsYXlTdXJmYWNlIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9DR0Rp
c3BsYXlTdHJlYW1TY3JlZW5DYXB0dXJlU291cmNlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL0NHRGlzcGxheVN0cmVhbVNjcmVlbkNhcHR1cmVTb3VyY2UubW0K
aW5kZXggZjY5MTIxODQ1NGIzLi4yMjY4M2FmYTZiNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9DR0Rpc3BsYXlTdHJlYW1TY3JlZW5DYXB0dXJl
U291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9D
R0Rpc3BsYXlTdHJlYW1TY3JlZW5DYXB0dXJlU291cmNlLm1tCkBAIC0xMTEsMzEgKzExMSwzMiBA
QCBib29sIENHRGlzcGxheVN0cmVhbVNjcmVlbkNhcHR1cmVTb3VyY2U6OmNoZWNrRGlzcGxheVN0
cmVhbSgpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVJldGFpblB0cjxDR0Rpc3BsYXlTdHJlYW1S
ZWY+IENHRGlzcGxheVN0cmVhbVNjcmVlbkNhcHR1cmVTb3VyY2U6OmNyZWF0ZURpc3BsYXlTdHJl
YW0oZmxvYXQgZnJhbWVSYXRlLCBGcmFtZUF2YWlsYWJsZUNhbGxiYWNrIGZyYW1lQXZhaWxhYmxl
SGFuZGxlciwgZGlzcGF0Y2hfcXVldWVfdCBxdWV1ZSkKK1JldGFpblB0cjxDR0Rpc3BsYXlTdHJl
YW1SZWY+IENHRGlzcGxheVN0cmVhbVNjcmVlbkNhcHR1cmVTb3VyY2U6OmNyZWF0ZURpc3BsYXlT
dHJlYW0oRnJhbWVBdmFpbGFibGVDYWxsYmFjayBmcmFtZUF2YWlsYWJsZUhhbmRsZXIsIGRpc3Bh
dGNoX3F1ZXVlX3QgcXVldWUpCiB7CiAgICAgc3RhdGljIGNvbnN0IGludCBzY3JlZW5RdWV1ZU1h
eGltdW1MZW5ndGggPSA2OwogCiAgICAgQVNTRVJUKCFkaXNwbGF5U3RyZWFtKCkpOwogICAgIEFT
U0VSVChtX2Rpc3BsYXlJRCA9PSB1cGRhdGVEaXNwbGF5SUQobV9kaXNwbGF5SUQpKTsKIAotICAg
IEFMV0FZU19MT0dfSUYobG9nZ2VyUHRyKCksIExPR0lERU5USUZJRVIpOwotCi0gICAgYXV0byBk
aXNwbGF5TW9kZSA9IGFkb3B0Q0YoQ0dEaXNwbGF5Q29weURpc3BsYXlNb2RlKG1fZGlzcGxheUlE
KSk7Ci0gICAgYXV0byBzY3JlZW5XaWR0aCA9IENHRGlzcGxheU1vZGVHZXRQaXhlbHNXaWRlKGRp
c3BsYXlNb2RlLmdldCgpKTsKLSAgICBhdXRvIHNjcmVlbkhlaWdodCA9IENHRGlzcGxheU1vZGVH
ZXRQaXhlbHNIaWdoKGRpc3BsYXlNb2RlLmdldCgpKTsKLSAgICBpZiAoIXNjcmVlbldpZHRoIHx8
ICFzY3JlZW5IZWlnaHQpIHsKLSAgICAgICAgRVJST1JfTE9HX0lGKGxvZ2dlclB0cigpLCBMT0dJ
REVOVElGSUVSLCAidW5hYmxlIHRvIGdldCBzY3JlZW4gd2lkdGgvaGVpZ2h0Iik7Ci0gICAgICAg
IHJldHVybiBudWxscHRyOwotICAgIH0KKyAgICBBTFdBWVNfTE9HX0lGKGxvZ2dlclB0cigpLCBM
T0dJREVOVElGSUVSLCAiZnJhbWUgcmF0ZSAiLCBmcmFtZVJhdGUoKSwgIiwgc2l6ZSAiLCB3aWR0
aCgpLCAieCIsIGhlaWdodCgpKTsKIAogICAgIE5TRGljdGlvbmFyeSogc3RyZWFtT3B0aW9ucyA9
IEB7Ci0gICAgICAgIChfX2JyaWRnZSBOU1N0cmluZyAqKWtDR0Rpc3BsYXlTdHJlYW1NaW5pbXVt
RnJhbWVUaW1lIDogQCgxIC8gZnJhbWVSYXRlKSwKKyAgICAgICAgKF9fYnJpZGdlIE5TU3RyaW5n
ICopa0NHRGlzcGxheVN0cmVhbU1pbmltdW1GcmFtZVRpbWUgOiBAKDEgLyBmcmFtZVJhdGUoKSks
CiAgICAgICAgIChfX2JyaWRnZSBOU1N0cmluZyAqKWtDR0Rpc3BsYXlTdHJlYW1RdWV1ZURlcHRo
IDogQChzY3JlZW5RdWV1ZU1heGltdW1MZW5ndGgpLAogICAgICAgICAoX19icmlkZ2UgTlNTdHJp
bmcgKilrQ0dEaXNwbGF5U3RyZWFtQ29sb3JTcGFjZSA6IChfX2JyaWRnZSBpZClzUkdCQ29sb3JT
cGFjZVJlZigpLAogICAgICAgICAoX19icmlkZ2UgTlNTdHJpbmcgKilrQ0dEaXNwbGF5U3RyZWFt
U2hvd0N1cnNvciA6IEBZRVMsCiAgICAgfTsKIAotICAgIHJldHVybiBhZG9wdENGKENHRGlzcGxh
eVN0cmVhbUNyZWF0ZVdpdGhEaXNwYXRjaFF1ZXVlKG1fZGlzcGxheUlELCBzY3JlZW5XaWR0aCwg
c2NyZWVuSGVpZ2h0LCBwcmVmZXJlZFBpeGVsQnVmZmVyRm9ybWF0KCksIChfX2JyaWRnZSBDRkRp
Y3Rpb25hcnlSZWYpc3RyZWFtT3B0aW9ucywgcXVldWUsIGZyYW1lQXZhaWxhYmxlSGFuZGxlcikp
OworICAgIHJldHVybiBhZG9wdENGKENHRGlzcGxheVN0cmVhbUNyZWF0ZVdpdGhEaXNwYXRjaFF1
ZXVlKG1fZGlzcGxheUlELCB3aWR0aCgpLCBoZWlnaHQoKSwgcHJlZmVyZWRQaXhlbEJ1ZmZlckZv
cm1hdCgpLCAoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKXN0cmVhbU9wdGlvbnMsIHF1ZXVlLCBm
cmFtZUF2YWlsYWJsZUhhbmRsZXIpKTsKK30KKworY29uc3QgSW50U2l6ZSBDR0Rpc3BsYXlTdHJl
YW1TY3JlZW5DYXB0dXJlU291cmNlOjppbnRyaW5zaWNTaXplKCkgY29uc3QKK3sKKyAgICBhdXRv
IGRpc3BsYXlNb2RlID0gYWRvcHRDRihDR0Rpc3BsYXlDb3B5RGlzcGxheU1vZGUobV9kaXNwbGF5
SUQpKTsKKyAgICBhdXRvIHNjcmVlbldpZHRoID0gQ0dEaXNwbGF5TW9kZUdldFBpeGVsc1dpZGUo
ZGlzcGxheU1vZGUuZ2V0KCkpOworICAgIGF1dG8gc2NyZWVuSGVpZ2h0ID0gQ0dEaXNwbGF5TW9k
ZUdldFBpeGVsc0hpZ2goZGlzcGxheU1vZGUuZ2V0KCkpOworCisgICAgcmV0dXJuIHsgQ2hlY2tl
ZDxpbnQ+KHNjcmVlbldpZHRoKSwgQ2hlY2tlZDxpbnQ+KHNjcmVlbkhlaWdodCkgfTsKIH0KIAog
c3RkOjpvcHRpb25hbDxDYXB0dXJlRGV2aWNlPiBDR0Rpc3BsYXlTdHJlYW1TY3JlZW5DYXB0dXJl
U291cmNlOjpzY3JlZW5DYXB0dXJlRGV2aWNlV2l0aFBlcnNpc3RlbnRJRChjb25zdCBTdHJpbmcm
IGRldmljZUlEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL0NHV2luZG93Q2FwdHVyZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL0NHV2luZG93Q2FwdHVyZVNvdXJjZS5oCmluZGV4IGM0MTczZjQzM2Rm
Ni4uY2UzNDQxY2IxNDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvQ0dXaW5kb3dDYXB0dXJlU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NHV2luZG93Q2FwdHVyZVNvdXJjZS5oCkBAIC01MCwx
MiArNTAsMTMgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIC8vIERpc3BsYXlDYXB0dXJlU291
cmNlTWFjOjpDYXB0dXJlcgotICAgIGJvb2wgc3RhcnQoZmxvYXQpIGZpbmFsIHsgcmV0dXJuIHRy
dWU7IH0KKyAgICBib29sIHN0YXJ0KCkgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZvaWQg
c3RvcCgpIGZpbmFsIHsgfQogICAgIERpc3BsYXlDYXB0dXJlU291cmNlTWFjOjpEaXNwbGF5RnJh
bWVUeXBlIGdlbmVyYXRlRnJhbWUoKSBmaW5hbDsKICAgICBSZWFsdGltZU1lZGlhU291cmNlU2V0
dGluZ3M6OkRpc3BsYXlTdXJmYWNlVHlwZSBzdXJmYWNlVHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RGlzcGxheVN1cmZhY2VUeXBlOjpXaW5k
b3c7IH0KICAgICBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlIGRldmljZVR5cGUoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpXaW5kb3c7IH0KLSAgICB2
b2lkIGNvbW1pdENvbmZpZ3VyYXRpb24oZmxvYXQpIGZpbmFsIHsgfQorICAgIHZvaWQgY29tbWl0
Q29uZmlndXJhdGlvbihjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmKSBmaW5hbCB7
IH0KKyAgICBjb25zdCBJbnRTaXplIGludHJpbnNpY1NpemUoKSBjb25zdCBmaW5hbDsKICAgICBj
b25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiQ0dXaW5kb3dD
YXB0dXJlU291cmNlIjsgfQogCiAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IHdpbmRvd0ltYWdl
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
Q0dXaW5kb3dDYXB0dXJlU291cmNlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL0NHV2luZG93Q2FwdHVyZVNvdXJjZS5tbQppbmRleCAxNDI3NTZmODQ2ZmUuLmFj
YmZiMGNhMGE3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL0NHV2luZG93Q2FwdHVyZVNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ0dXaW5kb3dDYXB0dXJlU291cmNlLm1tCkBAIC0xMDQsMTUg
KzEwNCwzOCBAQCBzdGF0aWMgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gd2luZG93RGVzY3Jp
cHRpb24oQ0dXaW5kb3dJRCBpZCkKIAogRXhwZWN0ZWQ8VW5pcXVlUmVmPERpc3BsYXlDYXB0dXJl
U291cmNlTWFjOjpDYXB0dXJlcj4sIFN0cmluZz4gQ0dXaW5kb3dDYXB0dXJlU291cmNlOjpjcmVh
dGUoY29uc3QgU3RyaW5nJiBkZXZpY2VJRCkKIHsKLSAgICBhdXRvIGRpc3BsYXlJRCA9IHBhcnNl
SW50ZWdlcjx1aW50MzJfdD4oZGV2aWNlSUQpOwotICAgIGlmICghZGlzcGxheUlEKQorICAgIGF1
dG8gd2luZG93SUQgPSBwYXJzZUludGVnZXI8dWludDMyX3Q+KGRldmljZUlEKTsKKyAgICBpZiAo
IXdpbmRvd0lEKQogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIkludmFsaWQgd2luZG93
IGRldmljZSBJRCJfcyk7CiAKLSAgICBhdXRvIHdpbmRvd0luZm8gPSB3aW5kb3dEZXNjcmlwdGlv
bigqZGlzcGxheUlEKTsKKyAgICBhdXRvIHdpbmRvd0luZm8gPSB3aW5kb3dEZXNjcmlwdGlvbigq
d2luZG93SUQpOwogICAgIGlmICghd2luZG93SW5mbykKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4
cGVjdGVkKCJJbnZhbGlkIHdpbmRvdyBJRCJfcyk7CiAKLSAgICByZXR1cm4gVW5pcXVlUmVmPERp
c3BsYXlDYXB0dXJlU291cmNlTWFjOjpDYXB0dXJlcj4obWFrZVVuaXF1ZVJlZjxDR1dpbmRvd0Nh
cHR1cmVTb3VyY2U+KCpkaXNwbGF5SUQpKTsKKyAgICByZXR1cm4gVW5pcXVlUmVmPERpc3BsYXlD
YXB0dXJlU291cmNlTWFjOjpDYXB0dXJlcj4obWFrZVVuaXF1ZVJlZjxDR1dpbmRvd0NhcHR1cmVT
b3VyY2U+KCp3aW5kb3dJRCkpOworfQorCitjb25zdCBJbnRTaXplIENHV2luZG93Q2FwdHVyZVNv
dXJjZTo6aW50cmluc2ljU2l6ZSgpIGNvbnN0Cit7CisgICAgYXV0byB3aW5kb3dJbmZvID0gd2lu
ZG93RGVzY3JpcHRpb24obV93aW5kb3dJRCk7CisgICAgaWYgKCF3aW5kb3dJbmZvKSB7CisgICAg
ICAgIFJFTEVBU0VfTE9HKFdlYlJUQywgIkludmFsaWQgd2luZG93IElEPyIpOworICAgICAgICBy
ZXR1cm4geyB9OworICAgIH0KKworICAgIGF1dG8gYm91bmRzRGljdGlvbmFyeSA9IGNoZWNrZWRf
Y2ZfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKHdpbmRvd0luZm8u
Z2V0KCksIGtDR1dpbmRvd0JvdW5kcykpOworICAgIGlmICghYm91bmRzRGljdGlvbmFyeSkgewor
ICAgICAgICBSRUxFQVNFX0xPRyhXZWJSVEMsICJVbmFibGUgdG8gZ2V0IHdpbmRvdyBib3VuZHMi
KTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisKKyAgICBDR1JlY3Qgd2luZG93Qm91bmRz
OworICAgIGlmICghQ0dSZWN0TWFrZVdpdGhEaWN0aW9uYXJ5UmVwcmVzZW50YXRpb24oYm91bmRz
RGljdGlvbmFyeSwgJndpbmRvd0JvdW5kcykpIHsKKyAgICAgICAgUkVMRUFTRV9MT0coV2ViUlRD
LCAiVW5hYmxlIHRvIGRlY29kZSB3aW5kb3cgYm91bmRzIik7CisgICAgICAgIHJldHVybiB7IH07
CisgICAgfQorCisgICAgcmV0dXJuIEludFNpemUod2luZG93Qm91bmRzLnNpemUpOwogfQogCiBD
R1dpbmRvd0NhcHR1cmVTb3VyY2U6OkNHV2luZG93Q2FwdHVyZVNvdXJjZSh1aW50MzJfdCB3aW5k
b3dJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9EaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVTb3VyY2VNYWMuY3BwCmluZGV4IGVhMzhjOGE5
NDc0ZC4uZTA2ZDc5YWIwMjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVTb3VyY2VNYWMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYy5j
cHAKQEAgLTEwMyw5ICsxMDMsOSBAQCBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0
aWVzJiBEaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYzo6Y2FwYWJpbGl0aWVzKCkKICAgICBpZiAoIW1f
Y2FwYWJpbGl0aWVzKSB7CiAgICAgICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMg
Y2FwYWJpbGl0aWVzKHNldHRpbmdzKCkuc3VwcG9ydGVkQ29uc3RyYWludHMoKSk7CiAKLSAgICAg
ICAgLy8gRklYTUU6IHdoYXQgc2hvdWxkIHRoZXNlIGJlPwotICAgICAgICBjYXBhYmlsaXRpZXMu
c2V0V2lkdGgoQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZSgxLCAzODQwKSk7Ci0gICAgICAgIGNhcGFi
aWxpdGllcy5zZXRIZWlnaHQoQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZSgxLCAyMTYwKSk7CisgICAg
ICAgIGF1dG8gaW50cmluc2ljU2l6ZSA9IG1fY2FwdHVyZXItPmludHJpbnNpY1NpemUoKTsKKyAg
ICAgICAgY2FwYWJpbGl0aWVzLnNldFdpZHRoKENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2UoMSwgaW50
cmluc2ljU2l6ZS53aWR0aCgpKSk7CisgICAgICAgIGNhcGFiaWxpdGllcy5zZXRIZWlnaHQoQ2Fw
YWJpbGl0eVZhbHVlT3JSYW5nZSgxLCBpbnRyaW5zaWNTaXplLmhlaWdodCgpKSk7CiAgICAgICAg
IGNhcGFiaWxpdGllcy5zZXRGcmFtZVJhdGUoQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZSguMDEsIDMw
LjApKTsKIAogICAgICAgICBtX2NhcGFiaWxpdGllcyA9IFdURk1vdmUoY2FwYWJpbGl0aWVzKTsK
QEAgLTE0NSw5ICsxNDUsNiBAQCB2b2lkIERpc3BsYXlDYXB0dXJlU291cmNlTWFjOjpzZXR0aW5n
c0RpZENoYW5nZShPcHRpb25TZXQ8UmVhbHRpbWVNZWRpYVNvdXJjZVNldAogICAgIGlmIChzZXR0
aW5ncy5jb250YWlucyhSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc6OkZyYW1lUmF0
ZSkgJiYgbV90aW1lci5pc0FjdGl2ZSgpKQogICAgICAgICBtX3RpbWVyLnN0YXJ0UmVwZWF0aW5n
KDFfcyAvIGZyYW1lUmF0ZSgpKTsKIAotICAgIGlmIChzZXR0aW5ncy5jb250YWluc0FueSh7IFJl
YWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZzo6V2lkdGgsIFJlYWx0aW1lTWVkaWFTb3Vy
Y2VTZXR0aW5nczo6RmxhZzo6SGVpZ2h0IH0pKQotICAgICAgICBtX2J1ZmZlckF0dHJpYnV0ZXMg
PSBudWxscHRyOwotCiAgICAgbV9jdXJyZW50U2V0dGluZ3MgPSB7IH07CiB9CiAKQEAgLTE1Niw3
ICsxNTMsNyBAQCB2b2lkIERpc3BsYXlDYXB0dXJlU291cmNlTWFjOjpzdGFydFByb2R1Y2luZ0Rh
dGEoKQogICAgIG1fc3RhcnRUaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCk7CiAgICAgbV90aW1l
ci5zdGFydFJlcGVhdGluZygxX3MgLyBmcmFtZVJhdGUoKSk7CiAKLSAgICBpZiAoIW1fY2FwdHVy
ZXItPnN0YXJ0KGZyYW1lUmF0ZSgpKSkKKyAgICBpZiAoIW1fY2FwdHVyZXItPnN0YXJ0KCkpCiAg
ICAgICAgIGNhcHR1cmVGYWlsZWQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlTWFjLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVTb3VyY2VN
YWMuaAppbmRleCBlNDZhYjhkOTM4YTYuLmU2MTJlNTlkMGY4ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlTWFj
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlD
YXB0dXJlU291cmNlTWFjLmgKQEAgLTU5LDEyICs1OSwxMyBAQCBwdWJsaWM6CiAgICAgcHVibGlj
OgogICAgICAgICB2aXJ0dWFsIH5DYXB0dXJlcigpID0gZGVmYXVsdDsKIAotICAgICAgICB2aXJ0
dWFsIGJvb2wgc3RhcnQoZmxvYXQgZnJhbWVSYXRlKSA9IDA7CisgICAgICAgIHZpcnR1YWwgYm9v
bCBzdGFydCgpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIHN0b3AoKSA9IDA7CiAgICAgICAg
IHZpcnR1YWwgRGlzcGxheUZyYW1lVHlwZSBnZW5lcmF0ZUZyYW1lKCkgPSAwOwogICAgICAgICB2
aXJ0dWFsIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGUgZGV2aWNlVHlwZSgpIGNvbnN0ID0gMDsK
ICAgICAgICAgdmlydHVhbCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkRpc3BsYXlTdXJm
YWNlVHlwZSBzdXJmYWNlVHlwZSgpIGNvbnN0ID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIGNv
bW1pdENvbmZpZ3VyYXRpb24oZmxvYXQgZnJhbWVSYXRlKSA9IDA7CisgICAgICAgIHZpcnR1YWwg
dm9pZCBjb21taXRDb25maWd1cmF0aW9uKGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5n
cyYpID0gMDsKKyAgICAgICAgdmlydHVhbCBjb25zdCBJbnRTaXplIGludHJpbnNpY1NpemUoKSBj
b25zdCA9IDA7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHNldExvZ2dlcihjb25zdCBMb2dnZXIm
LCBjb25zdCB2b2lkKik7CiAgICAgICAgIGNvbnN0IExvZ2dlciogbG9nZ2VyUHRyKCkgY29uc3Qg
eyByZXR1cm4gbV9sb2dnZXIuZ2V0KCk7IH0KQEAgLTk0LDcgKzk1LDcgQEAgcHJpdmF0ZToKICAg
ICBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJiBjYXBhYmlsaXRpZXMoKSBm
aW5hbDsKICAgICBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRpbmdzKCkg
ZmluYWw7CiAgICAgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZSBkZXZpY2VUeXBlKCkgY29uc3Qg
eyByZXR1cm4gbV9jYXB0dXJlci0+ZGV2aWNlVHlwZSgpOyB9Ci0gICAgdm9pZCBjb21taXRDb25m
aWd1cmF0aW9uKCkgZmluYWwgeyByZXR1cm4gbV9jYXB0dXJlci0+Y29tbWl0Q29uZmlndXJhdGlv
bihmcmFtZVJhdGUoKSk7IH0KKyAgICB2b2lkIGNvbW1pdENvbmZpZ3VyYXRpb24oKSBmaW5hbCB7
IG1fY2FwdHVyZXItPmNvbW1pdENvbmZpZ3VyYXRpb24oc2V0dGluZ3MoKSk7IH0KIAogICAgIGNv
bnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJEaXNwbGF5Q2Fw
dHVyZVNvdXJjZU1hYyI7IH0KIApAQCAtMTA4LDcgKzEwOSw2IEBAIHByaXZhdGU6CiAgICAgTW9u
b3RvbmljVGltZSBtX3N0YXJ0VGltZSB7IE1vbm90b25pY1RpbWU6Om5hbigpIH07CiAgICAgU2Vj
b25kcyBtX2VsYXBzZWRUaW1lIHsgMF9zIH07CiAKLSAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGlj
dGlvbmFyeVJlZj4gbV9idWZmZXJBdHRyaWJ1dGVzOwogICAgIFJ1bkxvb3A6OlRpbWVyPERpc3Bs
YXlDYXB0dXJlU291cmNlTWFjPiBtX3RpbWVyOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdl
VHJhbnNmZXJTZXNzaW9uVlQ+IG1faW1hZ2VUcmFuc2ZlclNlc3Npb247CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXIuY3BwCmluZGV4IGJiZTI1NTliNTYxNi4uMjg2ZmFkYWZjNTc4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2Vu
dGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1l
ZGlhU291cmNlQ2VudGVyLmNwcApAQCAtOTEsOCArOTEsOCBAQCBzdGF0aWMgaW5saW5lIFZlY3Rv
cjxNb2NrTWVkaWFEZXZpY2U+IGRlZmF1bHREZXZpY2VzKCkKICAgICAgICAgICAgICAgICBDb2xv
cjo6ZGFya0dyYXksCiAgICAgICAgICAgICB9IH0sCiAKLSAgICAgICAgTW9ja01lZGlhRGV2aWNl
IHsgIlNDUkVFTi0xIl9zLCAiTW9jayBzY3JlZW4gZGV2aWNlIDEiX3MsIE1vY2tEaXNwbGF5UHJv
cGVydGllcyB7IENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OlNjcmVlbiwgQ29sb3I6OmxpZ2h0
R3JheSwgeyAzODQwLCAyMTYwIH0gfSB9LAotICAgICAgICBNb2NrTWVkaWFEZXZpY2UgeyAiU0NS
RUVOLTIiX3MsICJNb2NrIHNjcmVlbiBkZXZpY2UgMiJfcywgTW9ja0Rpc3BsYXlQcm9wZXJ0aWVz
IHsgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6U2NyZWVuLCBDb2xvcjo6eWVsbG93LCB7IDE5
MjAsIDEwODAgfSB9IH0sCisgICAgICAgIE1vY2tNZWRpYURldmljZSB7ICJTQ1JFRU4tMSJfcywg
Ik1vY2sgc2NyZWVuIGRldmljZSAxIl9zLCBNb2NrRGlzcGxheVByb3BlcnRpZXMgeyBDYXB0dXJl
RGV2aWNlOjpEZXZpY2VUeXBlOjpTY3JlZW4sIENvbG9yOjpsaWdodEdyYXksIHsgMTkyMCwgMTA4
MCB9IH0gfSwKKyAgICAgICAgTW9ja01lZGlhRGV2aWNlIHsgIlNDUkVFTi0yIl9zLCAiTW9jayBz
Y3JlZW4gZGV2aWNlIDIiX3MsIE1vY2tEaXNwbGF5UHJvcGVydGllcyB7IENhcHR1cmVEZXZpY2U6
OkRldmljZVR5cGU6OlNjcmVlbiwgQ29sb3I6OnllbGxvdywgeyAzODQwLCAyMTYwIH0gfSB9LAog
CiAgICAgICAgIE1vY2tNZWRpYURldmljZSB7ICJXSU5ET1ctMiJfcywgIk1vY2sgd2luZG93IDEi
X3MsIE1vY2tEaXNwbGF5UHJvcGVydGllcyB7IENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OlNj
cmVlbiwgU1JHQkE8dWludDhfdD4geyAyNTUsIDI0MSwgMTgxIH0sIHsgNjQwLCA0ODAgfSB9IH0s
CiAgICAgICAgIE1vY2tNZWRpYURldmljZSB7ICJXSU5ET1ctMiJfcywgIk1vY2sgd2luZG93IDIi
X3MsIE1vY2tEaXNwbGF5UHJvcGVydGllcyB7IENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OlNj
cmVlbiwgU1JHQkE8dWludDhfdD4geyAyNTUsIDIwOCwgMTgxIH0sIHsgMTI4MCwgNjAwIH0gfSB9
LApAQCAtMTIwLDEyICsxMjAsMTMgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IE1vY2tEaXNwbGF5
Q2FwdHVyZXIoY29uc3QgQ2FwdHVyZURldmljZSYpOwogCiBwcml2YXRlOgotICAgIGJvb2wgc3Rh
cnQoZmxvYXQpIGZpbmFsOworICAgIGJvb2wgc3RhcnQoKSBmaW5hbDsKICAgICB2b2lkIHN0b3Ao
KSBmaW5hbCAgeyBtX3NvdXJjZS0+c3RvcCgpOyB9CiAgICAgRGlzcGxheUNhcHR1cmVTb3VyY2VN
YWM6OkRpc3BsYXlGcmFtZVR5cGUgZ2VuZXJhdGVGcmFtZSgpIGZpbmFsOwogICAgIFJlYWx0aW1l
TWVkaWFTb3VyY2VTZXR0aW5nczo6RGlzcGxheVN1cmZhY2VUeXBlIHN1cmZhY2VUeXBlKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpEaXNwbGF5U3Vy
ZmFjZVR5cGU6Ok1vbml0b3I7IH0KLSAgICB2b2lkIGNvbW1pdENvbmZpZ3VyYXRpb24oZmxvYXQp
IGZpbmFsIHsgfQorICAgIHZvaWQgY29tbWl0Q29uZmlndXJhdGlvbihjb25zdCBSZWFsdGltZU1l
ZGlhU291cmNlU2V0dGluZ3MmKSBmaW5hbCB7IH0KICAgICBDYXB0dXJlRGV2aWNlOjpEZXZpY2VU
eXBlIGRldmljZVR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBDYXB0dXJlRGV2aWNlOjpEZXZp
Y2VUeXBlOjpTY3JlZW47IH0KKyAgICBjb25zdCBJbnRTaXplIGludHJpbnNpY1NpemUoKSBjb25z
dCBmaW5hbDsKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBjb25zdCBjaGFyKiBsb2dD
bGFzc05hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiTW9ja0Rpc3BsYXlDYXB0dXJlciI7IH0K
ICNlbmRpZgpAQCAtMTM4LDcgKzEzOSw3IEBAIE1vY2tEaXNwbGF5Q2FwdHVyZXI6Ok1vY2tEaXNw
bGF5Q2FwdHVyZXIoY29uc3QgQ2FwdHVyZURldmljZSYgZGV2aWNlKQogewogfQogCi1ib29sIE1v
Y2tEaXNwbGF5Q2FwdHVyZXI6OnN0YXJ0KGZsb2F0KQorYm9vbCBNb2NrRGlzcGxheUNhcHR1cmVy
OjpzdGFydCgpCiB7CiAgICAgbV9zb3VyY2UtPnN0YXJ0KCk7CiAgICAgcmV0dXJuIHRydWU7CkBA
IC0xNTAsNyArMTUxLDIyIEBAIERpc3BsYXlDYXB0dXJlU291cmNlTWFjOjpEaXNwbGF5RnJhbWVU
eXBlIE1vY2tEaXNwbGF5Q2FwdHVyZXI6OmdlbmVyYXRlRnJhbWUoKQogICAgICAgICByZXR1cm4g
aW1hZ2VCdWZmZXItPmNvcHlOYXRpdmVJbWFnZSgpOwogICAgIHJldHVybiB7IH07CiB9Ci0jZW5k
aWYKKworY29uc3QgSW50U2l6ZSBNb2NrRGlzcGxheUNhcHR1cmVyOjppbnRyaW5zaWNTaXplKCkg
Y29uc3QKK3sKKyAgICBhdXRvIGRldmljZSA9IE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
Ojptb2NrRGV2aWNlV2l0aFBlcnNpc3RlbnRJRChtX3NvdXJjZS0+cGVyc2lzdGVudElEKCkpOwor
ICAgIEFTU0VSVChkZXZpY2UpOworICAgIGlmICghZGV2aWNlKQorICAgICAgICByZXR1cm4geyB9
OworCisgICAgQVNTRVJUKGRldmljZS0+aXNEaXNwbGF5KCkpOworICAgIGlmICghZGV2aWNlLT5p
c0Rpc3BsYXkoKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGF1dG8mIHByb3BlcnRpZXMg
PSBXVEY6OmdldDxNb2NrRGlzcGxheVByb3BlcnRpZXM+KGRldmljZS0+cHJvcGVydGllcyk7Cisg
ICAgcmV0dXJuIHByb3BlcnRpZXMuZGVmYXVsdFNpemU7Cit9CisjZW5kaWYgIC8vIFBMQVRGT1JN
KE1BQykKIAogY2xhc3MgTW9ja1JlYWx0aW1lRGlzcGxheVNvdXJjZUZhY3RvcnkgOiBwdWJsaWMg
RGlzcGxheUNhcHR1cmVGYWN0b3J5IHsKIHB1YmxpYzoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437037</attachid>
            <date>2021-09-01 09:29:49 -0700</date>
            <delta_ts>2021-09-01 12:55:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229357-20210901092948.patch</filename>
            <type>text/plain</type>
            <size>24737</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxODUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2VhMjZjYjNkN2QwMTE4
Y2FiYmVmYjEwODgyZTdiMWQ2MWI4MzA3OC4uZjhkNGNiM2M0YjJhMDI5Y2EyNTkyMDRhNGI4ZGRj
NjI1MzhmMjNkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDIxLTA4LTIwICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFttYWNPU10gZ2V0
RGlzcGxheU1lZGlhIHNob3VsZCBjYXB0dXJlIGF0IHRoZSBjb25zdHJhaW5lZCBzaXplIGlmIHBv
c3NpYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjkzNTcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgyMTkxMTA5PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENyZWF0ZSBkaXNwbGF5IHN0cmVhbSB3
aXRoIHByZWZlcnJlZCB3aWR0aCwgaGVpZ2h0LCBhbmQgZnJhbWUgcmF0ZS4KKworICAgICAgICBU
ZXN0OiBmYXN0L21lZGlhc3RyZWFtL2dldC1kaXNwbGF5LW1lZGlhLWNhcGFiaWxpdGllcy5odG1s
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ0dEaXNwbGF5U3RyZWFtQ2Fw
dHVyZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDR0Rpc3BsYXlTdHJlYW1DYXB0dXJl
U291cmNlOjpzdGFydCk6IFJlbW92ZSBmcmFtZSByYXRlIHBhcmFtZXRlci4KKyAgICAgICAgKFdl
YkNvcmU6OkNHRGlzcGxheVN0cmVhbUNhcHR1cmVTb3VyY2U6OnN0YXJ0RGlzcGxheVN0cmVhbSk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJjZTo6
Y29tbWl0Q29uZmlndXJhdGlvbik6IFBhc3Mgc291cmNlIHNldHRpbmdzCisgICAgICAgIGluc3Rl
YWQgb2YgZnJhbWUgcmF0ZS4gUmVsZWFzZSBhbmQgcmVjcmVhdGUgdGhlIGRpc3BsYXkgc3RyZWFt
IGlmIHdpZHRoLCBoZWlnaHQsCisgICAgICAgIG9yIGZyYW1lIHJhdGUgaGFzIGNoYW5nZWQuCisg
ICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NHRGlzcGxheVN0cmVhbUNhcHR1cmVT
b3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNHRGlzcGxheVN0cmVhbUNhcHR1cmVTb3VyY2U6
OndpZHRoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNHRGlzcGxheVN0cmVhbUNhcHR1cmVT
b3VyY2U6OmhlaWdodCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDR0Rpc3BsYXlTdHJlYW1D
YXB0dXJlU291cmNlOjpmcmFtZVJhdGUgY29uc3QpOgorCisgICAgICAgICogcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL0NHRGlzcGxheVN0cmVhbVNjcmVlbkNhcHR1cmVTb3VyY2UuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ0dEaXNwbGF5U3RyZWFtU2NyZWVuQ2FwdHVy
ZVNvdXJjZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNHRGlzcGxheVN0cmVhbVNjcmVlbkNhcHR1
cmVTb3VyY2U6OmNyZWF0ZURpc3BsYXlTdHJlYW0pOiBSZW1vdmUKKyAgICAgICAgZnJhbWUgcmF0
ZSBwYXJhbWV0ZXIuIENyZWF0ZSBkaXNwbGF5IHN0cmVhbSB3aXRoIHRoZSBjb25maWd1cmVkIHdp
ZHRoIGFuZCBoZWlnaHQsCisgICAgICAgIG5vdCB0aGUgc2l6ZSBvZiB0aGUgc2NyZWVuLgorICAg
ICAgICAoV2ViQ29yZTo6Q0dEaXNwbGF5U3RyZWFtU2NyZWVuQ2FwdHVyZVNvdXJjZTo6aW50cmlu
c2ljU2l6ZSBjb25zdCk6IFJldHVybiBzY3JlZW4KKyAgICAgICAgc2l6ZSBzbyB0cmFjayBjYXBh
YmlsaXRpZXMgYXJlIGFjY3VyYXRlLgorCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL0NHV2luZG93Q2FwdHVyZVNvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9DR1dpbmRvd0NhcHR1cmVTb3VyY2UubW06CisgICAgICAgIChXZWJDb3JlOjpDR1dp
bmRvd0NhcHR1cmVTb3VyY2U6OmNyZWF0ZSk6IFJlbW92ZSBmcmFtZSByYXRlIHBhcmFtZXRlci4K
KyAgICAgICAgKFdlYkNvcmU6OkNHV2luZG93Q2FwdHVyZVNvdXJjZTo6aW50cmluc2ljU2l6ZSBj
b25zdCk6IFJldHVybiB3aW5kb3cgc2l6ZS4KKworICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9EaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5Q2FwdHVyZVNvdXJjZU1hYzo6Y2FwYWJpbGl0aWVzKTogVXNlIGNhcHR1cmVyIGludHJp
bnNpYyBzaXplIGZvciAKKyAgICAgICAgd2lkdGggYW5kIGhlaWdodCBjYXBhYmlsaXRpZXMuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVTb3VyY2VN
YWMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2Vu
dGVyLmNwcDogQ2hhbmdlIHRoZSBtb2NrIHNjcmVlbiBzaXplcyB0bworICAgICAgICBtYWtlIHRo
ZSBmaXJzdCBvbmUgaXMgZGlmZmVyZW50IHRoYW4gdGhlIG9sZCBoYXJkLWNvZGVkIHNpemVzIHNv
IHdlJ3JlIGFibGUgdG8gZGV0ZWN0CisgICAgICAgIHRoYXQgaXQgaXMgdXNlZCBpbiBhIHRlc3Qu
CisgICAgICAgIChXZWJDb3JlOjpNb2NrRGlzcGxheUNhcHR1cmVyOjpzdGFydCk6IFJlbW92ZSBm
cmFtZSByYXRlIHBhcmFtZXRlci4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tEaXNwbGF5Q2FwdHVy
ZXI6OmludHJpbnNpY1NpemUgY29uc3QpOgorCiAyMDIxLTA5LTAxICBFcmljIENhcmxzb24gIDxl
cmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFttYWNPU10gUmVmYWN0b3Igc2NyZWVu
IGNhcHR1cmUgY2xhc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9DR0Rpc3BsYXlTdHJlYW1DYXB0dXJlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9DR0Rpc3BsYXlTdHJlYW1DYXB0dXJlU291cmNl
LmNwcAppbmRleCAzNjM1NDlkNWIwYjlkYjBmN2M1ZGNlZmJmYzhkOWExOWRiMmYzNDdlLi45ZGM5
NWI4NGFjNjcxYWMwZjI1MDY5MDI1YTVlMDg1MjNjZWE0MjAwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNv
dXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NH
RGlzcGxheVN0cmVhbUNhcHR1cmVTb3VyY2UuY3BwCkBAIC00OCwxNCArNDgsMTQgQEAgQ0dEaXNw
bGF5U3RyZWFtQ2FwdHVyZVNvdXJjZTo6fkNHRGlzcGxheVN0cmVhbUNhcHR1cmVTb3VyY2UoKQog
ICAgIG1fY3VycmVudEZyYW1lID0gbnVsbHB0cjsKIH0KIAotYm9vbCBDR0Rpc3BsYXlTdHJlYW1D
YXB0dXJlU291cmNlOjpzdGFydChmbG9hdCBmcmFtZVJhdGUpCitib29sIENHRGlzcGxheVN0cmVh
bUNhcHR1cmVTb3VyY2U6OnN0YXJ0KCkKIHsKICAgICBBTFdBWVNfTE9HX0lGKGxvZ2dlclB0cigp
LCBMT0dJREVOVElGSUVSKTsKIAogICAgIGlmIChtX2lzUnVubmluZykKICAgICAgICAgcmV0dXJu
IHRydWU7CiAKLSAgICByZXR1cm4gc3RhcnREaXNwbGF5U3RyZWFtKGZyYW1lUmF0ZSk7CisgICAg
cmV0dXJuIHN0YXJ0RGlzcGxheVN0cmVhbSgpOwogfQogCiB2b2lkIENHRGlzcGxheVN0cmVhbUNh
cHR1cmVTb3VyY2U6OnN0b3AoKQpAQCAtNzYsNyArNzYsNyBAQCBEaXNwbGF5Q2FwdHVyZVNvdXJj
ZU1hYzo6RGlzcGxheUZyYW1lVHlwZSBDR0Rpc3BsYXlTdHJlYW1DYXB0dXJlU291cmNlOjpnZW5l
cmF0ZQogICAgIHJldHVybiBEaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYzo6RGlzcGxheUZyYW1lVHlw
ZSB7IFJldGFpblB0cjxJT1N1cmZhY2VSZWY+IHsgbV9jdXJyZW50RnJhbWUuaW9TdXJmYWNlKCkg
fSB9OwogfQogCi1ib29sIENHRGlzcGxheVN0cmVhbUNhcHR1cmVTb3VyY2U6OnN0YXJ0RGlzcGxh
eVN0cmVhbShmbG9hdCBmcmFtZVJhdGUpCitib29sIENHRGlzcGxheVN0cmVhbUNhcHR1cmVTb3Vy
Y2U6OnN0YXJ0RGlzcGxheVN0cmVhbSgpCiB7CiAgICAgaWYgKCFjaGVja0Rpc3BsYXlTdHJlYW0o
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtODUsNyArODUsNyBAQCBib29sIENHRGlzcGxh
eVN0cmVhbUNhcHR1cmVTb3VyY2U6OnN0YXJ0RGlzcGxheVN0cmVhbShmbG9hdCBmcmFtZVJhdGUp
CiAgICAgICAgIG1fY2FwdHVyZVF1ZXVlID0gYWRvcHRPU09iamVjdChkaXNwYXRjaF9xdWV1ZV9j
cmVhdGUoIkNHRGlzcGxheVN0cmVhbUNhcHR1cmVTb3VyY2UgQ2FwdHVyZSBRdWV1ZSIsIERJU1BB
VENIX1FVRVVFX1NFUklBTCkpOwogCiAgICAgaWYgKCFtX2Rpc3BsYXlTdHJlYW0pIHsKLSAgICAg
ICAgbV9kaXNwbGF5U3RyZWFtID0gY3JlYXRlRGlzcGxheVN0cmVhbShmcmFtZVJhdGUsIGZyYW1l
QXZhaWxhYmxlSGFuZGxlcigpLCBtX2NhcHR1cmVRdWV1ZS5nZXQoKSk7CisgICAgICAgIG1fZGlz
cGxheVN0cmVhbSA9IGNyZWF0ZURpc3BsYXlTdHJlYW0oZnJhbWVBdmFpbGFibGVIYW5kbGVyKCks
IG1fY2FwdHVyZVF1ZXVlLmdldCgpKTsKICAgICAgICAgaWYgKCFtX2Rpc3BsYXlTdHJlYW0pCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTEwNSwxMCArMTA1LDIyIEBAIGJvb2wgQ0dE
aXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJjZTo6c3RhcnREaXNwbGF5U3RyZWFtKGZsb2F0IGZyYW1l
UmF0ZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBDR0Rpc3BsYXlTdHJlYW1DYXB0dXJl
U291cmNlOjpjb21taXRDb25maWd1cmF0aW9uKGZsb2F0IGZyYW1lUmF0ZSkKK3ZvaWQgQ0dEaXNw
bGF5U3RyZWFtQ2FwdHVyZVNvdXJjZTo6Y29tbWl0Q29uZmlndXJhdGlvbihjb25zdCBSZWFsdGlt
ZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRpbmdzKQogewotICAgIGlmIChtX2lzUnVubmluZyAm
JiAhbV9kaXNwbGF5U3RyZWFtKQotICAgICAgICBzdGFydERpc3BsYXlTdHJlYW0oZnJhbWVSYXRl
KTsKKyAgICBpZiAobV93aWR0aCA9PSBzZXR0aW5ncy53aWR0aCgpICYmIG1faGVpZ2h0ID09IHNl
dHRpbmdzLmhlaWdodCgpICYmIG1fZnJhbWVSYXRlID09IHNldHRpbmdzLmZyYW1lUmF0ZSgpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBtX3dpZHRoID0gc2V0dGluZ3Mud2lkdGgoKTsKKyAgICBt
X2hlaWdodCA9IHNldHRpbmdzLmhlaWdodCgpOworICAgIG1fZnJhbWVSYXRlID0gc2V0dGluZ3Mu
ZnJhbWVSYXRlKCk7CisKKyAgICBpZiAobV9kaXNwbGF5U3RyZWFtKSB7CisgICAgICAgIENHRGlz
cGxheVN0cmVhbVN0b3AobV9kaXNwbGF5U3RyZWFtLmdldCgpKTsKKyAgICAgICAgbV9kaXNwbGF5
U3RyZWFtID0gbnVsbHB0cjsKKyAgICB9CisKKyAgICBpZiAobV9pc1J1bm5pbmcpCisgICAgICAg
IHN0YXJ0RGlzcGxheVN0cmVhbSgpOwogfQogCiB2b2lkIENHRGlzcGxheVN0cmVhbUNhcHR1cmVT
b3VyY2U6OmRpc3BsYXlXYXNSZWNvbmZpZ3VyZWQoQ0dEaXJlY3REaXNwbGF5SUQsIENHRGlzcGxh
eUNoYW5nZVN1bW1hcnlGbGFncykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9DR0Rpc3BsYXlTdHJlYW1DYXB0dXJlU291cmNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNv
dXJjZS5oCmluZGV4IDFjMjBkZmMwMGFjZTRkZDkyMWMwNGJiZDA3YmM4OWRkOTM3YTM5MjQuLmEx
OTAzOGRjYWFkNGExZmI4MzI1NzgwNjk1NmFkMDQ1MTFjZjJjNjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9DR0Rpc3BsYXlTdHJlYW1DYXB0dXJl
U291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NH
RGlzcGxheVN0cmVhbUNhcHR1cmVTb3VyY2UuaApAQCAtNDcsMjMgKzQ3LDI3IEBAIHB1YmxpYzoK
IAogcHJvdGVjdGVkOgogICAgIHVzaW5nIEZyYW1lQXZhaWxhYmxlQ2FsbGJhY2sgPSB2b2lkIChe
KShDR0Rpc3BsYXlTdHJlYW1GcmFtZVN0YXR1cywgdWludDY0X3QsIElPU3VyZmFjZVJlZiwgQ0dE
aXNwbGF5U3RyZWFtVXBkYXRlUmVmKTsKLSAgICB2aXJ0dWFsIFJldGFpblB0cjxDR0Rpc3BsYXlT
dHJlYW1SZWY+IGNyZWF0ZURpc3BsYXlTdHJlYW0oZmxvYXQsIEZyYW1lQXZhaWxhYmxlQ2FsbGJh
Y2ssIGRpc3BhdGNoX3F1ZXVlX3QpID0gMDsKKyAgICB2aXJ0dWFsIFJldGFpblB0cjxDR0Rpc3Bs
YXlTdHJlYW1SZWY+IGNyZWF0ZURpc3BsYXlTdHJlYW0oRnJhbWVBdmFpbGFibGVDYWxsYmFjaywg
ZGlzcGF0Y2hfcXVldWVfdCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBjaGVja0Rpc3BsYXlTdHJl
YW0oKSB7IHJldHVybiB0cnVlOyB9CiAKICAgICBDR0Rpc3BsYXlTdHJlYW1SZWYgZGlzcGxheVN0
cmVhbSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGxheVN0cmVhbS5nZXQoKTsgfQogICAgIHZvaWQg
aW52YWxpZGF0ZURpc3BsYXlTdHJlYW0oKSB7IG1fZGlzcGxheVN0cmVhbSA9IG51bGxwdHI7IH0K
IAorICAgIHVpbnQzMl90IHdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV93aWR0aDsgfQorICAgIHVp
bnQzMl90IGhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1faGVpZ2h0OyB9CisgICAgZmxvYXQgZnJh
bWVSYXRlKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZVJhdGU7IH0KKwogcHJpdmF0ZToKICAgICBz
dGF0aWMgdm9pZCBkaXNwbGF5UmVjb25maWd1cmF0aW9uQ2FsbEJhY2soQ0dEaXJlY3REaXNwbGF5
SUQsIENHRGlzcGxheUNoYW5nZVN1bW1hcnlGbGFncywgdm9pZCopOwogCiAgICAgLy8gRGlzcGxh
eUNhcHR1cmVTb3VyY2VNYWM6OkNhcHR1cmVyCi0gICAgYm9vbCBzdGFydChmbG9hdCBmcmFtZVJh
dGUpIGZpbmFsOworICAgIGJvb2wgc3RhcnQoKSBmaW5hbDsKICAgICB2b2lkIHN0b3AoKSBmaW5h
bDsKICAgICBEaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYzo6RGlzcGxheUZyYW1lVHlwZSBnZW5lcmF0
ZUZyYW1lKCkgZmluYWw7Ci0gICAgdm9pZCBjb21taXRDb25maWd1cmF0aW9uKGZsb2F0IGZyYW1l
UmF0ZSkgZmluYWw7CisgICAgdm9pZCBjb21taXRDb25maWd1cmF0aW9uKGNvbnN0IFJlYWx0aW1l
TWVkaWFTb3VyY2VTZXR0aW5ncyYpIGZpbmFsOwogCiAgICAgdm9pZCBkaXNwbGF5V2FzUmVjb25m
aWd1cmVkKENHRGlyZWN0RGlzcGxheUlELCBDR0Rpc3BsYXlDaGFuZ2VTdW1tYXJ5RmxhZ3MpOwot
ICAgIGJvb2wgc3RhcnREaXNwbGF5U3RyZWFtKGZsb2F0IGZyYW1lUmF0ZSk7CisgICAgYm9vbCBz
dGFydERpc3BsYXlTdHJlYW0oKTsKICAgICBGcmFtZUF2YWlsYWJsZUNhbGxiYWNrIGZyYW1lQXZh
aWxhYmxlSGFuZGxlcigpOwogCiAgICAgY2xhc3MgRGlzcGxheVN1cmZhY2UgewpAQCAtMTA1LDYg
KzEwOSwxMCBAQCBwcml2YXRlOgogICAgIE9TT2JqZWN0UHRyPGRpc3BhdGNoX3F1ZXVlX3Q+IG1f
Y2FwdHVyZVF1ZXVlOwogICAgIEJsb2NrUHRyPHZvaWQoQ0dEaXNwbGF5U3RyZWFtRnJhbWVTdGF0
dXMsIHVpbnQ2NF90LCBJT1N1cmZhY2VSZWYsIENHRGlzcGxheVN0cmVhbVVwZGF0ZVJlZik+IG1f
ZnJhbWVBdmFpbGFibGVIYW5kbGVyOwogCisgICAgdWludDMyX3QgbV93aWR0aCB7IDAgfTsKKyAg
ICB1aW50MzJfdCBtX2hlaWdodCB7IDAgfTsKKyAgICBmbG9hdCBtX2ZyYW1lUmF0ZSB7IDAgfTsK
KwogICAgIGJvb2wgbV9pc1J1bm5pbmcgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9vYnNlcnZpbmdE
aXNwbGF5Q2hhbmdlcyB7IGZhbHNlIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NHRGlzcGxheVN0cmVhbVNjcmVlbkNhcHR1cmVTb3Vy
Y2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9DR0Rpc3BsYXlT
dHJlYW1TY3JlZW5DYXB0dXJlU291cmNlLmgKaW5kZXggNjkyZmY1YTQ3YTExNmFmZDI3NzQwODVi
NGFlYTMwNzZkYzhjMjlmMC4uYWJiMWNjYmM4NmVkZGNhZjJlZTA3ODllOGRjNjU1NDU3NmQ3YmNm
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NH
RGlzcGxheVN0cmVhbVNjcmVlbkNhcHR1cmVTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ0dEaXNwbGF5U3RyZWFtU2NyZWVuQ2FwdHVyZVNvdXJj
ZS5oCkBAIC01NCwxMiArNTQsMTMgQEAgcHJpdmF0ZToKICAgICAvLyBEaXNwbGF5Q2FwdHVyZVNv
dXJjZU1hYzo6Q2FwdHVyZXIKICAgICBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlIGRldmljZVR5
cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpTY3Jl
ZW47IH0KICAgICBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkRpc3BsYXlTdXJmYWNlVHlw
ZSBzdXJmYWNlVHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIFJlYWx0aW1lTWVkaWFTb3VyY2VT
ZXR0aW5nczo6RGlzcGxheVN1cmZhY2VUeXBlOjpNb25pdG9yOyB9CisgICAgY29uc3QgSW50U2l6
ZSBpbnRyaW5zaWNTaXplKCkgY29uc3QgZmluYWw7CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVE
CiAgICAgY29uc3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIkNH
RGlzcGxheVN0cmVhbVNjcmVlbkNhcHR1cmVTb3VyY2UiOyB9CiAjZW5kaWYKIAogICAgIC8vIENH
RGlzcGxheVN0cmVhbUNhcHR1cmVTb3VyY2UKLSAgICBSZXRhaW5QdHI8Q0dEaXNwbGF5U3RyZWFt
UmVmPiBjcmVhdGVEaXNwbGF5U3RyZWFtKGZsb2F0LCBGcmFtZUF2YWlsYWJsZUNhbGxiYWNrLCBk
aXNwYXRjaF9xdWV1ZV90KSBmaW5hbDsKKyAgICBSZXRhaW5QdHI8Q0dEaXNwbGF5U3RyZWFtUmVm
PiBjcmVhdGVEaXNwbGF5U3RyZWFtKEZyYW1lQXZhaWxhYmxlQ2FsbGJhY2ssIGRpc3BhdGNoX3F1
ZXVlX3QpIGZpbmFsOwogICAgIGJvb2wgY2hlY2tEaXNwbGF5U3RyZWFtKCkgZmluYWw7CiAKICAg
ICBjbGFzcyBEaXNwbGF5U3VyZmFjZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ0dEaXNwbGF5U3RyZWFtU2NyZWVuQ2FwdHVyZVNvdXJjZS5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9DR0Rpc3BsYXlTdHJl
YW1TY3JlZW5DYXB0dXJlU291cmNlLm1tCmluZGV4IGY2OTEyMTg0NTRiMzhjNjk5ZmZjNGU4NTZj
ZTY3ZGM0MGYzZTliOTkuLjIyNjgzYWZhNmI3NmYxOGI1M2U3ZjI4MmRmZjJhYjViYjNiNmNlZmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9DR0Rp
c3BsYXlTdHJlYW1TY3JlZW5DYXB0dXJlU291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9DR0Rpc3BsYXlTdHJlYW1TY3JlZW5DYXB0dXJlU291cmNl
Lm1tCkBAIC0xMTEsMzEgKzExMSwzMiBAQCBib29sIENHRGlzcGxheVN0cmVhbVNjcmVlbkNhcHR1
cmVTb3VyY2U6OmNoZWNrRGlzcGxheVN0cmVhbSgpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVJl
dGFpblB0cjxDR0Rpc3BsYXlTdHJlYW1SZWY+IENHRGlzcGxheVN0cmVhbVNjcmVlbkNhcHR1cmVT
b3VyY2U6OmNyZWF0ZURpc3BsYXlTdHJlYW0oZmxvYXQgZnJhbWVSYXRlLCBGcmFtZUF2YWlsYWJs
ZUNhbGxiYWNrIGZyYW1lQXZhaWxhYmxlSGFuZGxlciwgZGlzcGF0Y2hfcXVldWVfdCBxdWV1ZSkK
K1JldGFpblB0cjxDR0Rpc3BsYXlTdHJlYW1SZWY+IENHRGlzcGxheVN0cmVhbVNjcmVlbkNhcHR1
cmVTb3VyY2U6OmNyZWF0ZURpc3BsYXlTdHJlYW0oRnJhbWVBdmFpbGFibGVDYWxsYmFjayBmcmFt
ZUF2YWlsYWJsZUhhbmRsZXIsIGRpc3BhdGNoX3F1ZXVlX3QgcXVldWUpCiB7CiAgICAgc3RhdGlj
IGNvbnN0IGludCBzY3JlZW5RdWV1ZU1heGltdW1MZW5ndGggPSA2OwogCiAgICAgQVNTRVJUKCFk
aXNwbGF5U3RyZWFtKCkpOwogICAgIEFTU0VSVChtX2Rpc3BsYXlJRCA9PSB1cGRhdGVEaXNwbGF5
SUQobV9kaXNwbGF5SUQpKTsKIAotICAgIEFMV0FZU19MT0dfSUYobG9nZ2VyUHRyKCksIExPR0lE
RU5USUZJRVIpOwotCi0gICAgYXV0byBkaXNwbGF5TW9kZSA9IGFkb3B0Q0YoQ0dEaXNwbGF5Q29w
eURpc3BsYXlNb2RlKG1fZGlzcGxheUlEKSk7Ci0gICAgYXV0byBzY3JlZW5XaWR0aCA9IENHRGlz
cGxheU1vZGVHZXRQaXhlbHNXaWRlKGRpc3BsYXlNb2RlLmdldCgpKTsKLSAgICBhdXRvIHNjcmVl
bkhlaWdodCA9IENHRGlzcGxheU1vZGVHZXRQaXhlbHNIaWdoKGRpc3BsYXlNb2RlLmdldCgpKTsK
LSAgICBpZiAoIXNjcmVlbldpZHRoIHx8ICFzY3JlZW5IZWlnaHQpIHsKLSAgICAgICAgRVJST1Jf
TE9HX0lGKGxvZ2dlclB0cigpLCBMT0dJREVOVElGSUVSLCAidW5hYmxlIHRvIGdldCBzY3JlZW4g
d2lkdGgvaGVpZ2h0Iik7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KKyAgICBBTFdB
WVNfTE9HX0lGKGxvZ2dlclB0cigpLCBMT0dJREVOVElGSUVSLCAiZnJhbWUgcmF0ZSAiLCBmcmFt
ZVJhdGUoKSwgIiwgc2l6ZSAiLCB3aWR0aCgpLCAieCIsIGhlaWdodCgpKTsKIAogICAgIE5TRGlj
dGlvbmFyeSogc3RyZWFtT3B0aW9ucyA9IEB7Ci0gICAgICAgIChfX2JyaWRnZSBOU1N0cmluZyAq
KWtDR0Rpc3BsYXlTdHJlYW1NaW5pbXVtRnJhbWVUaW1lIDogQCgxIC8gZnJhbWVSYXRlKSwKKyAg
ICAgICAgKF9fYnJpZGdlIE5TU3RyaW5nICopa0NHRGlzcGxheVN0cmVhbU1pbmltdW1GcmFtZVRp
bWUgOiBAKDEgLyBmcmFtZVJhdGUoKSksCiAgICAgICAgIChfX2JyaWRnZSBOU1N0cmluZyAqKWtD
R0Rpc3BsYXlTdHJlYW1RdWV1ZURlcHRoIDogQChzY3JlZW5RdWV1ZU1heGltdW1MZW5ndGgpLAog
ICAgICAgICAoX19icmlkZ2UgTlNTdHJpbmcgKilrQ0dEaXNwbGF5U3RyZWFtQ29sb3JTcGFjZSA6
IChfX2JyaWRnZSBpZClzUkdCQ29sb3JTcGFjZVJlZigpLAogICAgICAgICAoX19icmlkZ2UgTlNT
dHJpbmcgKilrQ0dEaXNwbGF5U3RyZWFtU2hvd0N1cnNvciA6IEBZRVMsCiAgICAgfTsKIAotICAg
IHJldHVybiBhZG9wdENGKENHRGlzcGxheVN0cmVhbUNyZWF0ZVdpdGhEaXNwYXRjaFF1ZXVlKG1f
ZGlzcGxheUlELCBzY3JlZW5XaWR0aCwgc2NyZWVuSGVpZ2h0LCBwcmVmZXJlZFBpeGVsQnVmZmVy
Rm9ybWF0KCksIChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpc3RyZWFtT3B0aW9ucywgcXVldWUs
IGZyYW1lQXZhaWxhYmxlSGFuZGxlcikpOworICAgIHJldHVybiBhZG9wdENGKENHRGlzcGxheVN0
cmVhbUNyZWF0ZVdpdGhEaXNwYXRjaFF1ZXVlKG1fZGlzcGxheUlELCB3aWR0aCgpLCBoZWlnaHQo
KSwgcHJlZmVyZWRQaXhlbEJ1ZmZlckZvcm1hdCgpLCAoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVm
KXN0cmVhbU9wdGlvbnMsIHF1ZXVlLCBmcmFtZUF2YWlsYWJsZUhhbmRsZXIpKTsKK30KKworY29u
c3QgSW50U2l6ZSBDR0Rpc3BsYXlTdHJlYW1TY3JlZW5DYXB0dXJlU291cmNlOjppbnRyaW5zaWNT
aXplKCkgY29uc3QKK3sKKyAgICBhdXRvIGRpc3BsYXlNb2RlID0gYWRvcHRDRihDR0Rpc3BsYXlD
b3B5RGlzcGxheU1vZGUobV9kaXNwbGF5SUQpKTsKKyAgICBhdXRvIHNjcmVlbldpZHRoID0gQ0dE
aXNwbGF5TW9kZUdldFBpeGVsc1dpZGUoZGlzcGxheU1vZGUuZ2V0KCkpOworICAgIGF1dG8gc2Ny
ZWVuSGVpZ2h0ID0gQ0dEaXNwbGF5TW9kZUdldFBpeGVsc0hpZ2goZGlzcGxheU1vZGUuZ2V0KCkp
OworCisgICAgcmV0dXJuIHsgQ2hlY2tlZDxpbnQ+KHNjcmVlbldpZHRoKSwgQ2hlY2tlZDxpbnQ+
KHNjcmVlbkhlaWdodCkgfTsKIH0KIAogc3RkOjpvcHRpb25hbDxDYXB0dXJlRGV2aWNlPiBDR0Rp
c3BsYXlTdHJlYW1TY3JlZW5DYXB0dXJlU291cmNlOjpzY3JlZW5DYXB0dXJlRGV2aWNlV2l0aFBl
cnNpc3RlbnRJRChjb25zdCBTdHJpbmcmIGRldmljZUlEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NHV2luZG93Q2FwdHVyZVNvdXJjZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NHV2luZG93Q2FwdHVyZVNv
dXJjZS5oCmluZGV4IGM0MTczZjQzM2RmNjkzMjNmNWI1YjZiYmJkYmFjZGVkMDEzNjE5NDYuLmNl
MzQ0MWNiMTQwMjdkNDcyMWVkOTJiYWViOGJhYWI0M2M5NjdiYjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9DR1dpbmRvd0NhcHR1cmVTb3VyY2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ0dXaW5kb3dD
YXB0dXJlU291cmNlLmgKQEAgLTUwLDEyICs1MCwxMyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAg
ICAgLy8gRGlzcGxheUNhcHR1cmVTb3VyY2VNYWM6OkNhcHR1cmVyCi0gICAgYm9vbCBzdGFydChm
bG9hdCkgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgc3RhcnQoKSBmaW5hbCB7IHJl
dHVybiB0cnVlOyB9CiAgICAgdm9pZCBzdG9wKCkgZmluYWwgeyB9CiAgICAgRGlzcGxheUNhcHR1
cmVTb3VyY2VNYWM6OkRpc3BsYXlGcmFtZVR5cGUgZ2VuZXJhdGVGcmFtZSgpIGZpbmFsOwogICAg
IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RGlzcGxheVN1cmZhY2VUeXBlIHN1cmZhY2VU
eXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpE
aXNwbGF5U3VyZmFjZVR5cGU6OldpbmRvdzsgfQogICAgIENhcHR1cmVEZXZpY2U6OkRldmljZVR5
cGUgZGV2aWNlVHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIENhcHR1cmVEZXZpY2U6OkRldmlj
ZVR5cGU6OldpbmRvdzsgfQotICAgIHZvaWQgY29tbWl0Q29uZmlndXJhdGlvbihmbG9hdCkgZmlu
YWwgeyB9CisgICAgdm9pZCBjb21taXRDb25maWd1cmF0aW9uKGNvbnN0IFJlYWx0aW1lTWVkaWFT
b3VyY2VTZXR0aW5ncyYpIGZpbmFsIHsgfQorICAgIGNvbnN0IEludFNpemUgaW50cmluc2ljU2l6
ZSgpIGNvbnN0IGZpbmFsOwogICAgIGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuICJDR1dpbmRvd0NhcHR1cmVTb3VyY2UiOyB9CiAKICAgICBSZXRhaW5QdHI8
Q0dJbWFnZVJlZj4gd2luZG93SW1hZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9DR1dpbmRvd0NhcHR1cmVTb3VyY2UubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ0dXaW5kb3dDYXB0dXJlU291cmNlLm1t
CmluZGV4IDZhMTdkODUzYjQzYzk3Mzg5MzRjYTM4ZmVhN2FkODc5MzVjZjY4MmEuLjQzNGQwZDMz
ZDk2YzRjNTQyODY0NmNjN2ZiMmVhZjBlYWE2YTg5NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9DR1dpbmRvd0NhcHR1cmVTb3VyY2UubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NHV2luZG93Q2FwdHVy
ZVNvdXJjZS5tbQpAQCAtMTAzLDE1ICsxMDMsMzggQEAgc3RhdGljIFJldGFpblB0cjxDRkRpY3Rp
b25hcnlSZWY+IHdpbmRvd0Rlc2NyaXB0aW9uKENHV2luZG93SUQgaWQpCiAKIEV4cGVjdGVkPFVu
aXF1ZVJlZjxEaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYzo6Q2FwdHVyZXI+LCBTdHJpbmc+IENHV2lu
ZG93Q2FwdHVyZVNvdXJjZTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgZGV2aWNlSUQpCiB7Ci0gICAg
YXV0byBkaXNwbGF5SUQgPSBwYXJzZUludGVnZXI8dWludDMyX3Q+KGRldmljZUlEKTsKLSAgICBp
ZiAoIWRpc3BsYXlJRCkKKyAgICBhdXRvIHdpbmRvd0lEID0gcGFyc2VJbnRlZ2VyPHVpbnQzMl90
PihkZXZpY2VJRCk7CisgICAgaWYgKCF3aW5kb3dJRCkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4
cGVjdGVkKCJJbnZhbGlkIHdpbmRvdyBkZXZpY2UgSUQiX3MpOwogCi0gICAgYXV0byB3aW5kb3dJ
bmZvID0gd2luZG93RGVzY3JpcHRpb24oKmRpc3BsYXlJRCk7CisgICAgYXV0byB3aW5kb3dJbmZv
ID0gd2luZG93RGVzY3JpcHRpb24oKndpbmRvd0lEKTsKICAgICBpZiAoIXdpbmRvd0luZm8pCiAg
ICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiSW52YWxpZCB3aW5kb3cgSUQiX3MpOwogCi0g
ICAgcmV0dXJuIFVuaXF1ZVJlZjxEaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYzo6Q2FwdHVyZXI+KG1h
a2VVbmlxdWVSZWY8Q0dXaW5kb3dDYXB0dXJlU291cmNlPigqZGlzcGxheUlEKSk7CisgICAgcmV0
dXJuIFVuaXF1ZVJlZjxEaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYzo6Q2FwdHVyZXI+KG1ha2VVbmlx
dWVSZWY8Q0dXaW5kb3dDYXB0dXJlU291cmNlPigqd2luZG93SUQpKTsKK30KKworY29uc3QgSW50
U2l6ZSBDR1dpbmRvd0NhcHR1cmVTb3VyY2U6OmludHJpbnNpY1NpemUoKSBjb25zdAoreworICAg
IGF1dG8gd2luZG93SW5mbyA9IHdpbmRvd0Rlc2NyaXB0aW9uKG1fd2luZG93SUQpOworICAgIGlm
ICghd2luZG93SW5mbykgeworICAgICAgICBSRUxFQVNFX0xPRyhXZWJSVEMsICJJbnZhbGlkIHdp
bmRvdyBJRD8iKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisKKyAgICBhdXRvIGJvdW5k
c0RpY3Rpb25hcnkgPSBjaGVja2VkX2NmX2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPihDRkRpY3Rpb25h
cnlHZXRWYWx1ZSh3aW5kb3dJbmZvLmdldCgpLCBrQ0dXaW5kb3dCb3VuZHMpKTsKKyAgICBpZiAo
IWJvdW5kc0RpY3Rpb25hcnkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0coV2ViUlRDLCAiVW5hYmxl
IHRvIGdldCB3aW5kb3cgYm91bmRzIik7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorCisg
ICAgQ0dSZWN0IHdpbmRvd0JvdW5kczsKKyAgICBpZiAoIUNHUmVjdE1ha2VXaXRoRGljdGlvbmFy
eVJlcHJlc2VudGF0aW9uKGJvdW5kc0RpY3Rpb25hcnksICZ3aW5kb3dCb3VuZHMpKSB7CisgICAg
ICAgIFJFTEVBU0VfTE9HKFdlYlJUQywgIlVuYWJsZSB0byBkZWNvZGUgd2luZG93IGJvdW5kcyIp
OworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKworICAgIHJldHVybiBJbnRTaXplKHdpbmRv
d0JvdW5kcy5zaXplKTsKIH0KIAogQ0dXaW5kb3dDYXB0dXJlU291cmNlOjpDR1dpbmRvd0NhcHR1
cmVTb3VyY2UodWludDMyX3Qgd2luZG93SUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVTb3VyY2VNYWMuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNl
TWFjLmNwcAppbmRleCBlYTM4YzhhOTQ3NGQ4Njk0MzZjNjdjOTJkZTg1ODI0NjY3MDkxNjA1Li5l
MDZkNzlhYjAyNjJlZjAyNDIxNDQ2MjY3MWQxMjU3YjdkOWQ1MTMyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVTb3VyY2VN
YWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNw
bGF5Q2FwdHVyZVNvdXJjZU1hYy5jcHAKQEAgLTEwMyw5ICsxMDMsOSBAQCBjb25zdCBSZWFsdGlt
ZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJiBEaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYzo6Y2FwYWJp
bGl0aWVzKCkKICAgICBpZiAoIW1fY2FwYWJpbGl0aWVzKSB7CiAgICAgICAgIFJlYWx0aW1lTWVk
aWFTb3VyY2VDYXBhYmlsaXRpZXMgY2FwYWJpbGl0aWVzKHNldHRpbmdzKCkuc3VwcG9ydGVkQ29u
c3RyYWludHMoKSk7CiAKLSAgICAgICAgLy8gRklYTUU6IHdoYXQgc2hvdWxkIHRoZXNlIGJlPwot
ICAgICAgICBjYXBhYmlsaXRpZXMuc2V0V2lkdGgoQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZSgxLCAz
ODQwKSk7Ci0gICAgICAgIGNhcGFiaWxpdGllcy5zZXRIZWlnaHQoQ2FwYWJpbGl0eVZhbHVlT3JS
YW5nZSgxLCAyMTYwKSk7CisgICAgICAgIGF1dG8gaW50cmluc2ljU2l6ZSA9IG1fY2FwdHVyZXIt
PmludHJpbnNpY1NpemUoKTsKKyAgICAgICAgY2FwYWJpbGl0aWVzLnNldFdpZHRoKENhcGFiaWxp
dHlWYWx1ZU9yUmFuZ2UoMSwgaW50cmluc2ljU2l6ZS53aWR0aCgpKSk7CisgICAgICAgIGNhcGFi
aWxpdGllcy5zZXRIZWlnaHQoQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZSgxLCBpbnRyaW5zaWNTaXpl
LmhlaWdodCgpKSk7CiAgICAgICAgIGNhcGFiaWxpdGllcy5zZXRGcmFtZVJhdGUoQ2FwYWJpbGl0
eVZhbHVlT3JSYW5nZSguMDEsIDMwLjApKTsKIAogICAgICAgICBtX2NhcGFiaWxpdGllcyA9IFdU
Rk1vdmUoY2FwYWJpbGl0aWVzKTsKQEAgLTE0NSw5ICsxNDUsNiBAQCB2b2lkIERpc3BsYXlDYXB0
dXJlU291cmNlTWFjOjpzZXR0aW5nc0RpZENoYW5nZShPcHRpb25TZXQ8UmVhbHRpbWVNZWRpYVNv
dXJjZVNldAogICAgIGlmIChzZXR0aW5ncy5jb250YWlucyhSZWFsdGltZU1lZGlhU291cmNlU2V0
dGluZ3M6OkZsYWc6OkZyYW1lUmF0ZSkgJiYgbV90aW1lci5pc0FjdGl2ZSgpKQogICAgICAgICBt
X3RpbWVyLnN0YXJ0UmVwZWF0aW5nKDFfcyAvIGZyYW1lUmF0ZSgpKTsKIAotICAgIGlmIChzZXR0
aW5ncy5jb250YWluc0FueSh7IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZzo6V2lk
dGgsIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZzo6SGVpZ2h0IH0pKQotICAgICAg
ICBtX2J1ZmZlckF0dHJpYnV0ZXMgPSBudWxscHRyOwotCiAgICAgbV9jdXJyZW50U2V0dGluZ3Mg
PSB7IH07CiB9CiAKQEAgLTE1Niw3ICsxNTMsNyBAQCB2b2lkIERpc3BsYXlDYXB0dXJlU291cmNl
TWFjOjpzdGFydFByb2R1Y2luZ0RhdGEoKQogICAgIG1fc3RhcnRUaW1lID0gTW9ub3RvbmljVGlt
ZTo6bm93KCk7CiAgICAgbV90aW1lci5zdGFydFJlcGVhdGluZygxX3MgLyBmcmFtZVJhdGUoKSk7
CiAKLSAgICBpZiAoIW1fY2FwdHVyZXItPnN0YXJ0KGZyYW1lUmF0ZSgpKSkKKyAgICBpZiAoIW1f
Y2FwdHVyZXItPnN0YXJ0KCkpCiAgICAgICAgIGNhcHR1cmVGYWlsZWQoKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0
dXJlU291cmNlTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
RGlzcGxheUNhcHR1cmVTb3VyY2VNYWMuaAppbmRleCBlNDZhYjhkOTM4YTYyNDgxMjI2MzA1YWEy
MGQ5NTgwMDFiMTk4MzUzLi5lNjEyZTU5ZDBmOGQ3ODEyM2M5MzhkYTA3YzliOTFhZTA4NTVjOGNl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlz
cGxheUNhcHR1cmVTb3VyY2VNYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVTb3VyY2VNYWMuaApAQCAtNTksMTIgKzU5LDEzIEBA
IHB1YmxpYzoKICAgICBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgfkNhcHR1cmVyKCkgPSBkZWZh
dWx0OwogCi0gICAgICAgIHZpcnR1YWwgYm9vbCBzdGFydChmbG9hdCBmcmFtZVJhdGUpID0gMDsK
KyAgICAgICAgdmlydHVhbCBib29sIHN0YXJ0KCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQg
c3RvcCgpID0gMDsKICAgICAgICAgdmlydHVhbCBEaXNwbGF5RnJhbWVUeXBlIGdlbmVyYXRlRnJh
bWUoKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZSBkZXZp
Y2VUeXBlKCkgY29uc3QgPSAwOwogICAgICAgICB2aXJ0dWFsIFJlYWx0aW1lTWVkaWFTb3VyY2VT
ZXR0aW5nczo6RGlzcGxheVN1cmZhY2VUeXBlIHN1cmZhY2VUeXBlKCkgY29uc3QgPSAwOwotICAg
ICAgICB2aXJ0dWFsIHZvaWQgY29tbWl0Q29uZmlndXJhdGlvbihmbG9hdCBmcmFtZVJhdGUpID0g
MDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGNvbW1pdENvbmZpZ3VyYXRpb24oY29uc3QgUmVhbHRp
bWVNZWRpYVNvdXJjZVNldHRpbmdzJikgPSAwOworICAgICAgICB2aXJ0dWFsIGNvbnN0IEludFNp
emUgaW50cmluc2ljU2l6ZSgpIGNvbnN0ID0gMDsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0
TG9nZ2VyKGNvbnN0IExvZ2dlciYsIGNvbnN0IHZvaWQqKTsKICAgICAgICAgY29uc3QgTG9nZ2Vy
KiBsb2dnZXJQdHIoKSBjb25zdCB7IHJldHVybiBtX2xvZ2dlci5nZXQoKTsgfQpAQCAtOTQsNyAr
OTUsNyBAQCBwcml2YXRlOgogICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRp
ZXMmIGNhcGFiaWxpdGllcygpIGZpbmFsOwogICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VT
ZXR0aW5ncyYgc2V0dGluZ3MoKSBmaW5hbDsKICAgICBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBl
IGRldmljZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX2NhcHR1cmVyLT5kZXZpY2VUeXBlKCk7IH0K
LSAgICB2b2lkIGNvbW1pdENvbmZpZ3VyYXRpb24oKSBmaW5hbCB7IHJldHVybiBtX2NhcHR1cmVy
LT5jb21taXRDb25maWd1cmF0aW9uKGZyYW1lUmF0ZSgpKTsgfQorICAgIHZvaWQgY29tbWl0Q29u
ZmlndXJhdGlvbigpIGZpbmFsIHsgbV9jYXB0dXJlci0+Y29tbWl0Q29uZmlndXJhdGlvbihzZXR0
aW5ncygpKTsgfQogCiAgICAgY29uc3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gIkRpc3BsYXlDYXB0dXJlU291cmNlTWFjIjsgfQogCkBAIC0xMDgsNyArMTA5LDYg
QEAgcHJpdmF0ZToKICAgICBNb25vdG9uaWNUaW1lIG1fc3RhcnRUaW1lIHsgTW9ub3RvbmljVGlt
ZTo6bmFuKCkgfTsKICAgICBTZWNvbmRzIG1fZWxhcHNlZFRpbWUgeyAwX3MgfTsKIAotICAgIFJl
dGFpblB0cjxDRk11dGFibGVEaWN0aW9uYXJ5UmVmPiBtX2J1ZmZlckF0dHJpYnV0ZXM7CiAgICAg
UnVuTG9vcDo6VGltZXI8RGlzcGxheUNhcHR1cmVTb3VyY2VNYWM+IG1fdGltZXI7CiAKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8SW1hZ2VUcmFuc2ZlclNlc3Npb25WVD4gbV9pbWFnZVRyYW5zZmVyU2Vz
c2lvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0
aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9N
b2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAKaW5kZXggOTA1ODAwYWRlYmU4YzFhZTJl
MmU5ZWE0ZDliMGNhZWNkYmNlNTIwNi4uYjBlOTUzZjI5MDMwZDkxYzZjZmIxOWYzYzkzMTQxMGEz
Zjc5OTk5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVh
bHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAKQEAgLTkxLDggKzkxLDggQEAg
c3RhdGljIGlubGluZSBWZWN0b3I8TW9ja01lZGlhRGV2aWNlPiBkZWZhdWx0RGV2aWNlcygpCiAg
ICAgICAgICAgICAgICAgQ29sb3I6OmRhcmtHcmF5LAogICAgICAgICAgICAgfSB9LAogCi0gICAg
ICAgIE1vY2tNZWRpYURldmljZSB7ICJTQ1JFRU4tMSJfcywgIk1vY2sgc2NyZWVuIGRldmljZSAx
Il9zLCBNb2NrRGlzcGxheVByb3BlcnRpZXMgeyBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpT
Y3JlZW4sIENvbG9yOjpsaWdodEdyYXksIHsgMzg0MCwgMjE2MCB9IH0gfSwKLSAgICAgICAgTW9j
a01lZGlhRGV2aWNlIHsgIlNDUkVFTi0yIl9zLCAiTW9jayBzY3JlZW4gZGV2aWNlIDIiX3MsIE1v
Y2tEaXNwbGF5UHJvcGVydGllcyB7IENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OlNjcmVlbiwg
Q29sb3I6OnllbGxvdywgeyAxOTIwLCAxMDgwIH0gfSB9LAorICAgICAgICBNb2NrTWVkaWFEZXZp
Y2UgeyAiU0NSRUVOLTEiX3MsICJNb2NrIHNjcmVlbiBkZXZpY2UgMSJfcywgTW9ja0Rpc3BsYXlQ
cm9wZXJ0aWVzIHsgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6U2NyZWVuLCBDb2xvcjo6bGln
aHRHcmF5LCB7IDE5MjAsIDEwODAgfSB9IH0sCisgICAgICAgIE1vY2tNZWRpYURldmljZSB7ICJT
Q1JFRU4tMiJfcywgIk1vY2sgc2NyZWVuIGRldmljZSAyIl9zLCBNb2NrRGlzcGxheVByb3BlcnRp
ZXMgeyBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpTY3JlZW4sIENvbG9yOjp5ZWxsb3csIHsg
Mzg0MCwgMjE2MCB9IH0gfSwKIAogICAgICAgICBNb2NrTWVkaWFEZXZpY2UgeyAiV0lORE9XLTIi
X3MsICJNb2NrIHdpbmRvdyAxIl9zLCBNb2NrRGlzcGxheVByb3BlcnRpZXMgeyBDYXB0dXJlRGV2
aWNlOjpEZXZpY2VUeXBlOjpTY3JlZW4sIFNSR0JBPHVpbnQ4X3Q+IHsgMjU1LCAyNDEsIDE4MSB9
LCB7IDY0MCwgNDgwIH0gfSB9LAogICAgICAgICBNb2NrTWVkaWFEZXZpY2UgeyAiV0lORE9XLTIi
X3MsICJNb2NrIHdpbmRvdyAyIl9zLCBNb2NrRGlzcGxheVByb3BlcnRpZXMgeyBDYXB0dXJlRGV2
aWNlOjpEZXZpY2VUeXBlOjpTY3JlZW4sIFNSR0JBPHVpbnQ4X3Q+IHsgMjU1LCAyMDgsIDE4MSB9
LCB7IDEyODAsIDYwMCB9IH0gfSwKQEAgLTEyMCwxMiArMTIwLDEzIEBAIHB1YmxpYzoKICAgICBl
eHBsaWNpdCBNb2NrRGlzcGxheUNhcHR1cmVyKGNvbnN0IENhcHR1cmVEZXZpY2UmKTsKIAogcHJp
dmF0ZToKLSAgICBib29sIHN0YXJ0KGZsb2F0KSBmaW5hbDsKKyAgICBib29sIHN0YXJ0KCkgZmlu
YWw7CiAgICAgdm9pZCBzdG9wKCkgZmluYWwgIHsgbV9zb3VyY2UtPnN0b3AoKTsgfQogICAgIERp
c3BsYXlDYXB0dXJlU291cmNlTWFjOjpEaXNwbGF5RnJhbWVUeXBlIGdlbmVyYXRlRnJhbWUoKSBm
aW5hbDsKICAgICBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkRpc3BsYXlTdXJmYWNlVHlw
ZSBzdXJmYWNlVHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIFJlYWx0aW1lTWVkaWFTb3VyY2VT
ZXR0aW5nczo6RGlzcGxheVN1cmZhY2VUeXBlOjpNb25pdG9yOyB9Ci0gICAgdm9pZCBjb21taXRD
b25maWd1cmF0aW9uKGZsb2F0KSBmaW5hbCB7IH0KKyAgICB2b2lkIGNvbW1pdENvbmZpZ3VyYXRp
b24oY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJikgZmluYWwgeyB9CiAgICAgQ2Fw
dHVyZURldmljZTo6RGV2aWNlVHlwZSBkZXZpY2VUeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
Q2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6U2NyZWVuOyB9CisgICAgY29uc3QgSW50U2l6ZSBp
bnRyaW5zaWNTaXplKCkgY29uc3QgZmluYWw7CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAg
ICAgY29uc3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIk1vY2tE
aXNwbGF5Q2FwdHVyZXIiOyB9CiAjZW5kaWYKQEAgLTEzOCw3ICsxMzksNyBAQCBNb2NrRGlzcGxh
eUNhcHR1cmVyOjpNb2NrRGlzcGxheUNhcHR1cmVyKGNvbnN0IENhcHR1cmVEZXZpY2UmIGRldmlj
ZSkKIHsKIH0KIAotYm9vbCBNb2NrRGlzcGxheUNhcHR1cmVyOjpzdGFydChmbG9hdCkKK2Jvb2wg
TW9ja0Rpc3BsYXlDYXB0dXJlcjo6c3RhcnQoKQogewogICAgIG1fc291cmNlLT5zdGFydCgpOwog
ICAgIHJldHVybiB0cnVlOwpAQCAtMTUwLDcgKzE1MSwyMiBAQCBEaXNwbGF5Q2FwdHVyZVNvdXJj
ZU1hYzo6RGlzcGxheUZyYW1lVHlwZSBNb2NrRGlzcGxheUNhcHR1cmVyOjpnZW5lcmF0ZUZyYW1l
KCkKICAgICAgICAgcmV0dXJuIGltYWdlQnVmZmVyLT5jb3B5TmF0aXZlSW1hZ2UoKTsKICAgICBy
ZXR1cm4geyB9OwogfQotI2VuZGlmCisKK2NvbnN0IEludFNpemUgTW9ja0Rpc3BsYXlDYXB0dXJl
cjo6aW50cmluc2ljU2l6ZSgpIGNvbnN0Cit7CisgICAgYXV0byBkZXZpY2UgPSBNb2NrUmVhbHRp
bWVNZWRpYVNvdXJjZUNlbnRlcjo6bW9ja0RldmljZVdpdGhQZXJzaXN0ZW50SUQobV9zb3VyY2Ut
PnBlcnNpc3RlbnRJRCgpKTsKKyAgICBBU1NFUlQoZGV2aWNlKTsKKyAgICBpZiAoIWRldmljZSkK
KyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIEFTU0VSVChkZXZpY2UtPmlzRGlzcGxheSgpKTsK
KyAgICBpZiAoIWRldmljZS0+aXNEaXNwbGF5KCkpCisgICAgICAgIHJldHVybiB7IH07CisKKyAg
ICBhdXRvJiBwcm9wZXJ0aWVzID0gV1RGOjpnZXQ8TW9ja0Rpc3BsYXlQcm9wZXJ0aWVzPihkZXZp
Y2UtPnByb3BlcnRpZXMpOworICAgIHJldHVybiBwcm9wZXJ0aWVzLmRlZmF1bHRTaXplOworfQor
I2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKIAogY2xhc3MgTW9ja1JlYWx0aW1lRGlzcGxheVNvdXJj
ZUZhY3RvcnkgOiBwdWJsaWMgRGlzcGxheUNhcHR1cmVGYWN0b3J5IHsKIHB1YmxpYzoKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRl
eCA3NGQ1YzY2Yzk0NTEzMDBkYjUxZTVkZWNhNmRhMTFiMzhhMTc3NjcwLi45MjM5NTJkMzNhNGY1
MWMyNzNjZWYxOGNjYTI3YmEyYzIxYzczZDJiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEt
MDgtMjAgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAg
W21hY09TXSBnZXREaXNwbGF5TWVkaWEgc2hvdWxkIGNhcHR1cmUgYXQgdGhlIGNvbnN0cmFpbmVk
IHNpemUgaWYgcG9zc2libGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyOTM1NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vODIxOTExMDk+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L21lZGlh
c3RyZWFtL2dldC1kaXNwbGF5LW1lZGlhLWNhcGFiaWxpdGllcy1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vZ2V0LWRpc3BsYXktbWVkaWEtY2FwYWJpbGl0
aWVzLmh0bWw6IEFkZGVkLgorCiAyMDIxLTA5LTAxICBBcmNhZHkgR29sZG1pbnRzLU9ybG92ICA8
YWdvbGRtaW50c0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIFVwZGF0ZSBiYXNlbGluZXMg
YWZ0ZXIgcjI4MTY4NQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9n
ZXQtZGlzcGxheS1tZWRpYS1jYXBhYmlsaXRpZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
ZmFzdC9tZWRpYXN0cmVhbS9nZXQtZGlzcGxheS1tZWRpYS1jYXBhYmlsaXRpZXMtZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjcxOTRhZWMzMjc3ZmE3MmVjMWZlY2U4MWNmNjhhYTFhM2JjMmZiNjIK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2dldC1kaXNw
bGF5LW1lZGlhLWNhcGFiaWxpdGllcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACisKK1BB
U1MgY2hlY2sgY2FwYWJpbGl0aWVzCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVk
aWFzdHJlYW0vZ2V0LWRpc3BsYXktbWVkaWEtY2FwYWJpbGl0aWVzLmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L21lZGlhc3RyZWFtL2dldC1kaXNwbGF5LW1lZGlhLWNhcGFiaWxpdGllcy5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjg1Y2U3NWUwYzQ3MTRiYmU5OTEwYzZjYTdhMmMwYWQxYWVkY2Y5YzIKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2dldC1kaXNwbGF5LW1l
ZGlhLWNhcGFiaWxpdGllcy5odG1sCkBAIC0wLDAgKzEsMjggQEAKKzwhZG9jdHlwZSBodG1sPgor
PGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKyAgICAg
ICAgPHRpdGxlPnZpZGVvIHRyYWNrIGNyZWF0ZWQgd2l0aCBnZXREaXNwbGF5TWVkaWEgc2hvdWxk
IHJldHVybiBjb3JyZWN0IGNhcGFiaWxpdGllczwvdGl0bGU+CisgICAgICAgIDxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4K
KyAgICAgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9nZXREaXNwbGF5TWVkaWEtdXRpbHMuanMi
Pjwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keT4KKworICAgICAgICA8c2NyaXB0Pgor
ICAgICAgICAgICAgcHJvbWlzZV90ZXN0KGFzeW5jICgpID0+IHsKKyAgICAgICAgICAgICAgICBz
dHJlYW0gPSBhd2FpdCBjYWxsR2V0RGlzcGxheU1lZGlhKHsgdmlkZW86IHRydWUgfSk7CisgICAg
ICAgICAgICAgICAgbGV0IGNhcGFiaWxpdGllcyA9IHN0cmVhbS5nZXRWaWRlb1RyYWNrcygpWzBd
LmdldENhcGFiaWxpdGllcygpOworCisgICAgICAgICAgICAgICAgbGV0IGhlaWdodCA9IGNhcGFi
aWxpdGllcy5oZWlnaHQ7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhoZWlnaHQubWF4
LCAxMDgwKTsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGhlaWdodC5taW4sIDEpOwor
CisgICAgICAgICAgICAgICAgbGV0IHdpZHRoID0gY2FwYWJpbGl0aWVzLndpZHRoOworICAgICAg
ICAgICAgICAgIGFzc2VydF9lcXVhbHMod2lkdGgubWF4LCAxOTIwKTsKKyAgICAgICAgICAgICAg
ICBhc3NlcnRfZXF1YWxzKHdpZHRoLm1pbiwgMSk7CisgICAgICAgICAgICB9LCAiY2hlY2sgY2Fw
YWJpbGl0aWVzIik7CisKKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437057</attachid>
            <date>2021-09-01 12:55:02 -0700</date>
            <delta_ts>2021-09-01 13:38:21 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-229357-20210901125501.patch</filename>
            <type>text/plain</type>
            <size>25509</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxODY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGQ4MjI5YjI4ZjkwMzBm
MDE5MzhiOGY5YmZlZGJhN2U2M2IxOTY0ZC4uMTk5MTM2NjgwZTRmN2UxOWM0NTA1YjBlYjA0ZmNj
NDNhNzRhMGMyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDIxLTA4LTIwICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFttYWNPU10gZ2V0
RGlzcGxheU1lZGlhIHNob3VsZCBjYXB0dXJlIGF0IHRoZSBjb25zdHJhaW5lZCBzaXplIGlmIHBv
c3NpYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjkzNTcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgyMTkxMTA5PgorCisgICAgICAgIFJldmll
d2VkIGJ5IFlvdWVubiBGYWJsZXQuCisKKyAgICAgICAgQ3JlYXRlIGRpc3BsYXkgc3RyZWFtIHdp
dGggcHJlZmVycmVkIHdpZHRoLCBoZWlnaHQsIGFuZCBmcmFtZSByYXRlLgorCisgICAgICAgIFRl
c3Q6IGZhc3QvbWVkaWFzdHJlYW0vZ2V0LWRpc3BsYXktbWVkaWEtY2FwYWJpbGl0aWVzLmh0bWwK
KworICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9DR0Rpc3BsYXlTdHJlYW1DYXB0
dXJlU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNHRGlzcGxheVN0cmVhbUNhcHR1cmVT
b3VyY2U6OnN0YXJ0KTogUmVtb3ZlIGZyYW1lIHJhdGUgcGFyYW1ldGVyLgorICAgICAgICAoV2Vi
Q29yZTo6Q0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJjZTo6c3RhcnREaXNwbGF5U3RyZWFtKTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDR0Rpc3BsYXlTdHJlYW1DYXB0dXJlU291cmNlOjpj
b21taXRDb25maWd1cmF0aW9uKTogUGFzcyBzb3VyY2Ugc2V0dGluZ3MKKyAgICAgICAgaW5zdGVh
ZCBvZiBmcmFtZSByYXRlLiBSZWxlYXNlIGFuZCByZWNyZWF0ZSB0aGUgZGlzcGxheSBzdHJlYW0g
aWYgd2lkdGgsIGhlaWdodCwKKyAgICAgICAgb3IgZnJhbWUgcmF0ZSBoYXMgY2hhbmdlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNv
dXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJjZTo6
d2lkdGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNv
dXJjZTo6aGVpZ2h0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNHRGlzcGxheVN0cmVhbUNh
cHR1cmVTb3VyY2U6OmZyYW1lUmF0ZSBjb25zdCk6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvQ0dEaXNwbGF5U3RyZWFtU2NyZWVuQ2FwdHVyZVNvdXJjZS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9DR0Rpc3BsYXlTdHJlYW1TY3JlZW5DYXB0dXJl
U291cmNlLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q0dEaXNwbGF5U3RyZWFtU2NyZWVuQ2FwdHVy
ZVNvdXJjZTo6Y3JlYXRlRGlzcGxheVN0cmVhbSk6IFJlbW92ZQorICAgICAgICBmcmFtZSByYXRl
IHBhcmFtZXRlci4gQ3JlYXRlIGRpc3BsYXkgc3RyZWFtIHdpdGggdGhlIGNvbmZpZ3VyZWQgd2lk
dGggYW5kIGhlaWdodCwKKyAgICAgICAgbm90IHRoZSBzaXplIG9mIHRoZSBzY3JlZW4uCisgICAg
ICAgIChXZWJDb3JlOjpDR0Rpc3BsYXlTdHJlYW1TY3JlZW5DYXB0dXJlU291cmNlOjppbnRyaW5z
aWNTaXplIGNvbnN0KTogUmV0dXJuIHNjcmVlbgorICAgICAgICBzaXplIHNvIHRyYWNrIGNhcGFi
aWxpdGllcyBhcmUgYWNjdXJhdGUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvQ0dXaW5kb3dDYXB0dXJlU291cmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL0NHV2luZG93Q2FwdHVyZVNvdXJjZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNHV2lu
ZG93Q2FwdHVyZVNvdXJjZTo6Y3JlYXRlKTogUmVtb3ZlIGZyYW1lIHJhdGUgcGFyYW1ldGVyLgor
ICAgICAgICAoV2ViQ29yZTo6Q0dXaW5kb3dDYXB0dXJlU291cmNlOjppbnRyaW5zaWNTaXplIGNv
bnN0KTogUmV0dXJuIHdpbmRvdyBzaXplLgorCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlDYXB0dXJlU291cmNlTWFjOjpjYXBhYmlsaXRpZXMpOiBVc2UgY2FwdHVyZXIgaW50cmlu
c2ljIHNpemUgZm9yIAorICAgICAgICB3aWR0aCBhbmQgaGVpZ2h0IGNhcGFiaWxpdGllcy4KKwor
ICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVyZVNvdXJjZU1h
Yy5oOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50
ZXIuY3BwOiBDaGFuZ2UgdGhlIG1vY2sgc2NyZWVuIHNpemVzIHRvCisgICAgICAgIG1ha2UgdGhl
IGZpcnN0IG9uZSBpcyBkaWZmZXJlbnQgdGhhbiB0aGUgb2xkIGhhcmQtY29kZWQgc2l6ZXMgc28g
d2UncmUgYWJsZSB0byBkZXRlY3QKKyAgICAgICAgdGhhdCBpdCBpcyB1c2VkIGluIGEgdGVzdC4K
KyAgICAgICAgKFdlYkNvcmU6Ok1vY2tEaXNwbGF5Q2FwdHVyZXI6OnN0YXJ0KTogUmVtb3ZlIGZy
YW1lIHJhdGUgcGFyYW1ldGVyLgorICAgICAgICAoV2ViQ29yZTo6TW9ja0Rpc3BsYXlDYXB0dXJl
cjo6aW50cmluc2ljU2l6ZSBjb25zdCk6CisKIDIwMjEtMDktMDEgIEtpbW1vIEtpbm51bmVuICA8
a2tpbm51bmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBJbWFnZVJlbmRlcmluZ01vZGUuaCBpcyBu
b3QgdXNlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
UmVhbHRpbWVNZWRpYVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5oCmluZGV4IDM0YTM0ODhiNjY2YjA0Mjg1MGYzNzBkMzc1
OWFlYjAzMDBhM2QwZDQuLjA0YTVmYmQyMGQ1ZDU5MDUxNjk2YTk0YzFkYjcyZTE0YjAyMzBhM2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1l
TWVkaWFTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9S
ZWFsdGltZU1lZGlhU291cmNlLmgKQEAgLTE0OSw3ICsxNDksNyBAQCBwdWJsaWM6CiAgICAgY29u
c3QgSW50U2l6ZSBzaXplKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRTaXplKGNvbnN0IEludFNpemUm
KTsKIAotICAgIGNvbnN0IEludFNpemUgaW50cmluc2ljU2l6ZSgpIGNvbnN0OworICAgIEludFNp
emUgaW50cmluc2ljU2l6ZSgpIGNvbnN0OwogICAgIHZvaWQgc2V0SW50cmluc2ljU2l6ZShjb25z
dCBJbnRTaXplJiwgYm9vbCBub3RpZnlPYnNlcnZlcnMgPSB0cnVlKTsKIAogICAgIGRvdWJsZSBm
cmFtZVJhdGUoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lUmF0ZTsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NHRGlzcGxheVN0cmVhbUNhcHR1
cmVTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NH
RGlzcGxheVN0cmVhbUNhcHR1cmVTb3VyY2UuY3BwCmluZGV4IDM2MzU0OWQ1YjBiOWRiMGY3YzVk
Y2VmYmZjOGQ5YTE5ZGIyZjM0N2UuLjlkYzk1Yjg0YWM2NzFhYzBmMjUwNjkwMjVhNWUwODUyM2Nl
YTQyMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9DR0Rpc3BsYXlTdHJlYW1DYXB0dXJlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJjZS5jcHAK
QEAgLTQ4LDE0ICs0OCwxNCBAQCBDR0Rpc3BsYXlTdHJlYW1DYXB0dXJlU291cmNlOjp+Q0dEaXNw
bGF5U3RyZWFtQ2FwdHVyZVNvdXJjZSgpCiAgICAgbV9jdXJyZW50RnJhbWUgPSBudWxscHRyOwog
fQogCi1ib29sIENHRGlzcGxheVN0cmVhbUNhcHR1cmVTb3VyY2U6OnN0YXJ0KGZsb2F0IGZyYW1l
UmF0ZSkKK2Jvb2wgQ0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJjZTo6c3RhcnQoKQogewogICAg
IEFMV0FZU19MT0dfSUYobG9nZ2VyUHRyKCksIExPR0lERU5USUZJRVIpOwogCiAgICAgaWYgKG1f
aXNSdW5uaW5nKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIHJldHVybiBzdGFydERpc3Bs
YXlTdHJlYW0oZnJhbWVSYXRlKTsKKyAgICByZXR1cm4gc3RhcnREaXNwbGF5U3RyZWFtKCk7CiB9
CiAKIHZvaWQgQ0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJjZTo6c3RvcCgpCkBAIC03Niw3ICs3
Niw3IEBAIERpc3BsYXlDYXB0dXJlU291cmNlTWFjOjpEaXNwbGF5RnJhbWVUeXBlIENHRGlzcGxh
eVN0cmVhbUNhcHR1cmVTb3VyY2U6OmdlbmVyYXRlCiAgICAgcmV0dXJuIERpc3BsYXlDYXB0dXJl
U291cmNlTWFjOjpEaXNwbGF5RnJhbWVUeXBlIHsgUmV0YWluUHRyPElPU3VyZmFjZVJlZj4geyBt
X2N1cnJlbnRGcmFtZS5pb1N1cmZhY2UoKSB9IH07CiB9CiAKLWJvb2wgQ0dEaXNwbGF5U3RyZWFt
Q2FwdHVyZVNvdXJjZTo6c3RhcnREaXNwbGF5U3RyZWFtKGZsb2F0IGZyYW1lUmF0ZSkKK2Jvb2wg
Q0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJjZTo6c3RhcnREaXNwbGF5U3RyZWFtKCkKIHsKICAg
ICBpZiAoIWNoZWNrRGlzcGxheVN0cmVhbSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC04
NSw3ICs4NSw3IEBAIGJvb2wgQ0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJjZTo6c3RhcnREaXNw
bGF5U3RyZWFtKGZsb2F0IGZyYW1lUmF0ZSkKICAgICAgICAgbV9jYXB0dXJlUXVldWUgPSBhZG9w
dE9TT2JqZWN0KGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZSgiQ0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNv
dXJjZSBDYXB0dXJlIFF1ZXVlIiwgRElTUEFUQ0hfUVVFVUVfU0VSSUFMKSk7CiAKICAgICBpZiAo
IW1fZGlzcGxheVN0cmVhbSkgewotICAgICAgICBtX2Rpc3BsYXlTdHJlYW0gPSBjcmVhdGVEaXNw
bGF5U3RyZWFtKGZyYW1lUmF0ZSwgZnJhbWVBdmFpbGFibGVIYW5kbGVyKCksIG1fY2FwdHVyZVF1
ZXVlLmdldCgpKTsKKyAgICAgICAgbV9kaXNwbGF5U3RyZWFtID0gY3JlYXRlRGlzcGxheVN0cmVh
bShmcmFtZUF2YWlsYWJsZUhhbmRsZXIoKSwgbV9jYXB0dXJlUXVldWUuZ2V0KCkpOwogICAgICAg
ICBpZiAoIW1fZGlzcGxheVN0cmVhbSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAt
MTA1LDEwICsxMDUsMjIgQEAgYm9vbCBDR0Rpc3BsYXlTdHJlYW1DYXB0dXJlU291cmNlOjpzdGFy
dERpc3BsYXlTdHJlYW0oZmxvYXQgZnJhbWVSYXRlKQogICAgIHJldHVybiB0cnVlOwogfQogCi12
b2lkIENHRGlzcGxheVN0cmVhbUNhcHR1cmVTb3VyY2U6OmNvbW1pdENvbmZpZ3VyYXRpb24oZmxv
YXQgZnJhbWVSYXRlKQordm9pZCBDR0Rpc3BsYXlTdHJlYW1DYXB0dXJlU291cmNlOjpjb21taXRD
b25maWd1cmF0aW9uKGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgc2V0dGluZ3Mp
CiB7Ci0gICAgaWYgKG1faXNSdW5uaW5nICYmICFtX2Rpc3BsYXlTdHJlYW0pCi0gICAgICAgIHN0
YXJ0RGlzcGxheVN0cmVhbShmcmFtZVJhdGUpOworICAgIGlmIChtX3dpZHRoID09IHNldHRpbmdz
LndpZHRoKCkgJiYgbV9oZWlnaHQgPT0gc2V0dGluZ3MuaGVpZ2h0KCkgJiYgbV9mcmFtZVJhdGUg
PT0gc2V0dGluZ3MuZnJhbWVSYXRlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fd2lkdGgg
PSBzZXR0aW5ncy53aWR0aCgpOworICAgIG1faGVpZ2h0ID0gc2V0dGluZ3MuaGVpZ2h0KCk7Cisg
ICAgbV9mcmFtZVJhdGUgPSBzZXR0aW5ncy5mcmFtZVJhdGUoKTsKKworICAgIGlmIChtX2Rpc3Bs
YXlTdHJlYW0pIHsKKyAgICAgICAgQ0dEaXNwbGF5U3RyZWFtU3RvcChtX2Rpc3BsYXlTdHJlYW0u
Z2V0KCkpOworICAgICAgICBtX2Rpc3BsYXlTdHJlYW0gPSBudWxscHRyOworICAgIH0KKworICAg
IGlmIChtX2lzUnVubmluZykKKyAgICAgICAgc3RhcnREaXNwbGF5U3RyZWFtKCk7CiB9CiAKIHZv
aWQgQ0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJjZTo6ZGlzcGxheVdhc1JlY29uZmlndXJlZChD
R0RpcmVjdERpc3BsYXlJRCwgQ0dEaXNwbGF5Q2hhbmdlU3VtbWFyeUZsYWdzKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NHRGlzcGxheVN0cmVh
bUNhcHR1cmVTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9DR0Rpc3BsYXlTdHJlYW1DYXB0dXJlU291cmNlLmgKaW5kZXggMWMyMGRmYzAwYWNlNGRkOTIx
YzA0YmJkMDdiYzg5ZGQ5MzdhMzkyNC4uYTE5MDM4ZGNhYWQ0YTFmYjgzMjU3ODA2OTU2YWQwNDUx
MWNmMmM2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL0NHRGlzcGxheVN0cmVhbUNhcHR1cmVTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJjZS5oCkBA
IC00NywyMyArNDcsMjcgQEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6CiAgICAgdXNpbmcgRnJhbWVB
dmFpbGFibGVDYWxsYmFjayA9IHZvaWQgKF4pKENHRGlzcGxheVN0cmVhbUZyYW1lU3RhdHVzLCB1
aW50NjRfdCwgSU9TdXJmYWNlUmVmLCBDR0Rpc3BsYXlTdHJlYW1VcGRhdGVSZWYpOwotICAgIHZp
cnR1YWwgUmV0YWluUHRyPENHRGlzcGxheVN0cmVhbVJlZj4gY3JlYXRlRGlzcGxheVN0cmVhbShm
bG9hdCwgRnJhbWVBdmFpbGFibGVDYWxsYmFjaywgZGlzcGF0Y2hfcXVldWVfdCkgPSAwOworICAg
IHZpcnR1YWwgUmV0YWluUHRyPENHRGlzcGxheVN0cmVhbVJlZj4gY3JlYXRlRGlzcGxheVN0cmVh
bShGcmFtZUF2YWlsYWJsZUNhbGxiYWNrLCBkaXNwYXRjaF9xdWV1ZV90KSA9IDA7CiAgICAgdmly
dHVhbCBib29sIGNoZWNrRGlzcGxheVN0cmVhbSgpIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIENH
RGlzcGxheVN0cmVhbVJlZiBkaXNwbGF5U3RyZWFtKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5
U3RyZWFtLmdldCgpOyB9CiAgICAgdm9pZCBpbnZhbGlkYXRlRGlzcGxheVN0cmVhbSgpIHsgbV9k
aXNwbGF5U3RyZWFtID0gbnVsbHB0cjsgfQogCisgICAgdWludDMyX3Qgd2lkdGgoKSBjb25zdCB7
IHJldHVybiBtX3dpZHRoOyB9CisgICAgdWludDMyX3QgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4g
bV9oZWlnaHQ7IH0KKyAgICBmbG9hdCBmcmFtZVJhdGUoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1l
UmF0ZTsgfQorCiBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIGRpc3BsYXlSZWNvbmZpZ3VyYXRp
b25DYWxsQmFjayhDR0RpcmVjdERpc3BsYXlJRCwgQ0dEaXNwbGF5Q2hhbmdlU3VtbWFyeUZsYWdz
LCB2b2lkKik7CiAKICAgICAvLyBEaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYzo6Q2FwdHVyZXIKLSAg
ICBib29sIHN0YXJ0KGZsb2F0IGZyYW1lUmF0ZSkgZmluYWw7CisgICAgYm9vbCBzdGFydCgpIGZp
bmFsOwogICAgIHZvaWQgc3RvcCgpIGZpbmFsOwogICAgIERpc3BsYXlDYXB0dXJlU291cmNlTWFj
OjpEaXNwbGF5RnJhbWVUeXBlIGdlbmVyYXRlRnJhbWUoKSBmaW5hbDsKLSAgICB2b2lkIGNvbW1p
dENvbmZpZ3VyYXRpb24oZmxvYXQgZnJhbWVSYXRlKSBmaW5hbDsKKyAgICB2b2lkIGNvbW1pdENv
bmZpZ3VyYXRpb24oY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJikgZmluYWw7CiAK
ICAgICB2b2lkIGRpc3BsYXlXYXNSZWNvbmZpZ3VyZWQoQ0dEaXJlY3REaXNwbGF5SUQsIENHRGlz
cGxheUNoYW5nZVN1bW1hcnlGbGFncyk7Ci0gICAgYm9vbCBzdGFydERpc3BsYXlTdHJlYW0oZmxv
YXQgZnJhbWVSYXRlKTsKKyAgICBib29sIHN0YXJ0RGlzcGxheVN0cmVhbSgpOwogICAgIEZyYW1l
QXZhaWxhYmxlQ2FsbGJhY2sgZnJhbWVBdmFpbGFibGVIYW5kbGVyKCk7CiAKICAgICBjbGFzcyBE
aXNwbGF5U3VyZmFjZSB7CkBAIC0xMDUsNiArMTA5LDEwIEBAIHByaXZhdGU6CiAgICAgT1NPYmpl
Y3RQdHI8ZGlzcGF0Y2hfcXVldWVfdD4gbV9jYXB0dXJlUXVldWU7CiAgICAgQmxvY2tQdHI8dm9p
ZChDR0Rpc3BsYXlTdHJlYW1GcmFtZVN0YXR1cywgdWludDY0X3QsIElPU3VyZmFjZVJlZiwgQ0dE
aXNwbGF5U3RyZWFtVXBkYXRlUmVmKT4gbV9mcmFtZUF2YWlsYWJsZUhhbmRsZXI7CiAKKyAgICB1
aW50MzJfdCBtX3dpZHRoIHsgMCB9OworICAgIHVpbnQzMl90IG1faGVpZ2h0IHsgMCB9OworICAg
IGZsb2F0IG1fZnJhbWVSYXRlIHsgMCB9OworCiAgICAgYm9vbCBtX2lzUnVubmluZyB7IGZhbHNl
IH07CiAgICAgYm9vbCBtX29ic2VydmluZ0Rpc3BsYXlDaGFuZ2VzIHsgZmFsc2UgfTsKIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ0dEaXNw
bGF5U3RyZWFtU2NyZWVuQ2FwdHVyZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL0NHRGlzcGxheVN0cmVhbVNjcmVlbkNhcHR1cmVTb3VyY2UuaAppbmRl
eCA2OTJmZjVhNDdhMTE2YWZkMjc3NDA4NWI0YWVhMzA3NmRjOGMyOWYwLi5lMTYwNDQwNzVkYjQy
OWM3YzA2NTE4MzVjYTgzM2Y1OWIzZGJjYjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ0dEaXNwbGF5U3RyZWFtU2NyZWVuQ2FwdHVyZVNvdXJj
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9DR0Rpc3Bs
YXlTdHJlYW1TY3JlZW5DYXB0dXJlU291cmNlLmgKQEAgLTU0LDEyICs1NCwxMyBAQCBwcml2YXRl
OgogICAgIC8vIERpc3BsYXlDYXB0dXJlU291cmNlTWFjOjpDYXB0dXJlcgogICAgIENhcHR1cmVE
ZXZpY2U6OkRldmljZVR5cGUgZGV2aWNlVHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIENhcHR1
cmVEZXZpY2U6OkRldmljZVR5cGU6OlNjcmVlbjsgfQogICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VT
ZXR0aW5nczo6RGlzcGxheVN1cmZhY2VUeXBlIHN1cmZhY2VUeXBlKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpEaXNwbGF5U3VyZmFjZVR5cGU6Ok1v
bml0b3I7IH0KKyAgICBJbnRTaXplIGludHJpbnNpY1NpemUoKSBjb25zdCBmaW5hbDsKICNpZiAh
UkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBjb25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSBjb25z
dCBmaW5hbCB7IHJldHVybiAiQ0dEaXNwbGF5U3RyZWFtU2NyZWVuQ2FwdHVyZVNvdXJjZSI7IH0K
ICNlbmRpZgogCiAgICAgLy8gQ0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJjZQotICAgIFJldGFp
blB0cjxDR0Rpc3BsYXlTdHJlYW1SZWY+IGNyZWF0ZURpc3BsYXlTdHJlYW0oZmxvYXQsIEZyYW1l
QXZhaWxhYmxlQ2FsbGJhY2ssIGRpc3BhdGNoX3F1ZXVlX3QpIGZpbmFsOworICAgIFJldGFpblB0
cjxDR0Rpc3BsYXlTdHJlYW1SZWY+IGNyZWF0ZURpc3BsYXlTdHJlYW0oRnJhbWVBdmFpbGFibGVD
YWxsYmFjaywgZGlzcGF0Y2hfcXVldWVfdCkgZmluYWw7CiAgICAgYm9vbCBjaGVja0Rpc3BsYXlT
dHJlYW0oKSBmaW5hbDsKIAogICAgIGNsYXNzIERpc3BsYXlTdXJmYWNlIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9DR0Rpc3BsYXlTdHJlYW1T
Y3JlZW5DYXB0dXJlU291cmNlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL0NHRGlzcGxheVN0cmVhbVNjcmVlbkNhcHR1cmVTb3VyY2UubW0KaW5kZXggZjY5MTIx
ODQ1NGIzOGM2OTlmZmM0ZTg1NmNlNjdkYzQwZjNlOWI5OS4uMjI2ODNhZmE2Yjc2ZjE4YjUzZTdm
MjgyZGZmMmFiNWJiM2I2Y2VmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL0NHRGlzcGxheVN0cmVhbVNjcmVlbkNhcHR1cmVTb3VyY2UubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NHRGlzcGxheVN0cmVh
bVNjcmVlbkNhcHR1cmVTb3VyY2UubW0KQEAgLTExMSwzMSArMTExLDMyIEBAIGJvb2wgQ0dEaXNw
bGF5U3RyZWFtU2NyZWVuQ2FwdHVyZVNvdXJjZTo6Y2hlY2tEaXNwbGF5U3RyZWFtKCkKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotUmV0YWluUHRyPENHRGlzcGxheVN0cmVhbVJlZj4gQ0dEaXNwbGF5
U3RyZWFtU2NyZWVuQ2FwdHVyZVNvdXJjZTo6Y3JlYXRlRGlzcGxheVN0cmVhbShmbG9hdCBmcmFt
ZVJhdGUsIEZyYW1lQXZhaWxhYmxlQ2FsbGJhY2sgZnJhbWVBdmFpbGFibGVIYW5kbGVyLCBkaXNw
YXRjaF9xdWV1ZV90IHF1ZXVlKQorUmV0YWluUHRyPENHRGlzcGxheVN0cmVhbVJlZj4gQ0dEaXNw
bGF5U3RyZWFtU2NyZWVuQ2FwdHVyZVNvdXJjZTo6Y3JlYXRlRGlzcGxheVN0cmVhbShGcmFtZUF2
YWlsYWJsZUNhbGxiYWNrIGZyYW1lQXZhaWxhYmxlSGFuZGxlciwgZGlzcGF0Y2hfcXVldWVfdCBx
dWV1ZSkKIHsKICAgICBzdGF0aWMgY29uc3QgaW50IHNjcmVlblF1ZXVlTWF4aW11bUxlbmd0aCA9
IDY7CiAKICAgICBBU1NFUlQoIWRpc3BsYXlTdHJlYW0oKSk7CiAgICAgQVNTRVJUKG1fZGlzcGxh
eUlEID09IHVwZGF0ZURpc3BsYXlJRChtX2Rpc3BsYXlJRCkpOwogCi0gICAgQUxXQVlTX0xPR19J
Rihsb2dnZXJQdHIoKSwgTE9HSURFTlRJRklFUik7Ci0KLSAgICBhdXRvIGRpc3BsYXlNb2RlID0g
YWRvcHRDRihDR0Rpc3BsYXlDb3B5RGlzcGxheU1vZGUobV9kaXNwbGF5SUQpKTsKLSAgICBhdXRv
IHNjcmVlbldpZHRoID0gQ0dEaXNwbGF5TW9kZUdldFBpeGVsc1dpZGUoZGlzcGxheU1vZGUuZ2V0
KCkpOwotICAgIGF1dG8gc2NyZWVuSGVpZ2h0ID0gQ0dEaXNwbGF5TW9kZUdldFBpeGVsc0hpZ2go
ZGlzcGxheU1vZGUuZ2V0KCkpOwotICAgIGlmICghc2NyZWVuV2lkdGggfHwgIXNjcmVlbkhlaWdo
dCkgewotICAgICAgICBFUlJPUl9MT0dfSUYobG9nZ2VyUHRyKCksIExPR0lERU5USUZJRVIsICJ1
bmFibGUgdG8gZ2V0IHNjcmVlbiB3aWR0aC9oZWlnaHQiKTsKLSAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0gICAgfQorICAgIEFMV0FZU19MT0dfSUYobG9nZ2VyUHRyKCksIExPR0lERU5USUZJRVIs
ICJmcmFtZSByYXRlICIsIGZyYW1lUmF0ZSgpLCAiLCBzaXplICIsIHdpZHRoKCksICJ4IiwgaGVp
Z2h0KCkpOwogCiAgICAgTlNEaWN0aW9uYXJ5KiBzdHJlYW1PcHRpb25zID0gQHsKLSAgICAgICAg
KF9fYnJpZGdlIE5TU3RyaW5nICopa0NHRGlzcGxheVN0cmVhbU1pbmltdW1GcmFtZVRpbWUgOiBA
KDEgLyBmcmFtZVJhdGUpLAorICAgICAgICAoX19icmlkZ2UgTlNTdHJpbmcgKilrQ0dEaXNwbGF5
U3RyZWFtTWluaW11bUZyYW1lVGltZSA6IEAoMSAvIGZyYW1lUmF0ZSgpKSwKICAgICAgICAgKF9f
YnJpZGdlIE5TU3RyaW5nICopa0NHRGlzcGxheVN0cmVhbVF1ZXVlRGVwdGggOiBAKHNjcmVlblF1
ZXVlTWF4aW11bUxlbmd0aCksCiAgICAgICAgIChfX2JyaWRnZSBOU1N0cmluZyAqKWtDR0Rpc3Bs
YXlTdHJlYW1Db2xvclNwYWNlIDogKF9fYnJpZGdlIGlkKXNSR0JDb2xvclNwYWNlUmVmKCksCiAg
ICAgICAgIChfX2JyaWRnZSBOU1N0cmluZyAqKWtDR0Rpc3BsYXlTdHJlYW1TaG93Q3Vyc29yIDog
QFlFUywKICAgICB9OwogCi0gICAgcmV0dXJuIGFkb3B0Q0YoQ0dEaXNwbGF5U3RyZWFtQ3JlYXRl
V2l0aERpc3BhdGNoUXVldWUobV9kaXNwbGF5SUQsIHNjcmVlbldpZHRoLCBzY3JlZW5IZWlnaHQs
IHByZWZlcmVkUGl4ZWxCdWZmZXJGb3JtYXQoKSwgKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilz
dHJlYW1PcHRpb25zLCBxdWV1ZSwgZnJhbWVBdmFpbGFibGVIYW5kbGVyKSk7CisgICAgcmV0dXJu
IGFkb3B0Q0YoQ0dEaXNwbGF5U3RyZWFtQ3JlYXRlV2l0aERpc3BhdGNoUXVldWUobV9kaXNwbGF5
SUQsIHdpZHRoKCksIGhlaWdodCgpLCBwcmVmZXJlZFBpeGVsQnVmZmVyRm9ybWF0KCksIChfX2Jy
aWRnZSBDRkRpY3Rpb25hcnlSZWYpc3RyZWFtT3B0aW9ucywgcXVldWUsIGZyYW1lQXZhaWxhYmxl
SGFuZGxlcikpOworfQorCitjb25zdCBJbnRTaXplIENHRGlzcGxheVN0cmVhbVNjcmVlbkNhcHR1
cmVTb3VyY2U6OmludHJpbnNpY1NpemUoKSBjb25zdAoreworICAgIGF1dG8gZGlzcGxheU1vZGUg
PSBhZG9wdENGKENHRGlzcGxheUNvcHlEaXNwbGF5TW9kZShtX2Rpc3BsYXlJRCkpOworICAgIGF1
dG8gc2NyZWVuV2lkdGggPSBDR0Rpc3BsYXlNb2RlR2V0UGl4ZWxzV2lkZShkaXNwbGF5TW9kZS5n
ZXQoKSk7CisgICAgYXV0byBzY3JlZW5IZWlnaHQgPSBDR0Rpc3BsYXlNb2RlR2V0UGl4ZWxzSGln
aChkaXNwbGF5TW9kZS5nZXQoKSk7CisKKyAgICByZXR1cm4geyBDaGVja2VkPGludD4oc2NyZWVu
V2lkdGgpLCBDaGVja2VkPGludD4oc2NyZWVuSGVpZ2h0KSB9OwogfQogCiBzdGQ6Om9wdGlvbmFs
PENhcHR1cmVEZXZpY2U+IENHRGlzcGxheVN0cmVhbVNjcmVlbkNhcHR1cmVTb3VyY2U6OnNjcmVl
bkNhcHR1cmVEZXZpY2VXaXRoUGVyc2lzdGVudElEKGNvbnN0IFN0cmluZyYgZGV2aWNlSUQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ0dXaW5k
b3dDYXB0dXJlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvQ0dXaW5kb3dDYXB0dXJlU291cmNlLmgKaW5kZXggYzQxNzNmNDMzZGY2OTMyM2Y1YjViNmJi
YmRiYWNkZWQwMTM2MTk0Ni4uYTdmODk3MjliZDllMTk0NDBmNTFhOGRhZjQ4OGQ1YmI3ZTBlYmQ5
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NH
V2luZG93Q2FwdHVyZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9DR1dpbmRvd0NhcHR1cmVTb3VyY2UuaApAQCAtNTAsMTIgKzUwLDEzIEBAIHB1
YmxpYzoKIAogcHJpdmF0ZToKICAgICAvLyBEaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYzo6Q2FwdHVy
ZXIKLSAgICBib29sIHN0YXJ0KGZsb2F0KSBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisgICAgYm9v
bCBzdGFydCgpIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KICAgICB2b2lkIHN0b3AoKSBmaW5hbCB7
IH0KICAgICBEaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYzo6RGlzcGxheUZyYW1lVHlwZSBnZW5lcmF0
ZUZyYW1lKCkgZmluYWw7CiAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpEaXNwbGF5
U3VyZmFjZVR5cGUgc3VyZmFjZVR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBSZWFsdGltZU1l
ZGlhU291cmNlU2V0dGluZ3M6OkRpc3BsYXlTdXJmYWNlVHlwZTo6V2luZG93OyB9CiAgICAgQ2Fw
dHVyZURldmljZTo6RGV2aWNlVHlwZSBkZXZpY2VUeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
Q2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6V2luZG93OyB9Ci0gICAgdm9pZCBjb21taXRDb25m
aWd1cmF0aW9uKGZsb2F0KSBmaW5hbCB7IH0KKyAgICB2b2lkIGNvbW1pdENvbmZpZ3VyYXRpb24o
Y29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJikgZmluYWwgeyB9CisgICAgSW50U2l6
ZSBpbnRyaW5zaWNTaXplKCkgY29uc3QgZmluYWw7CiAgICAgY29uc3QgY2hhciogbG9nQ2xhc3NO
YW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIkNHV2luZG93Q2FwdHVyZVNvdXJjZSI7IH0KIAog
ICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiB3aW5kb3dJbWFnZSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NHV2luZG93Q2FwdHVyZVNvdXJj
ZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9DR1dpbmRvd0Nh
cHR1cmVTb3VyY2UubW0KaW5kZXggNmExN2Q4NTNiNDNjOTczODkzNGNhMzhmZWE3YWQ4NzkzNWNm
NjgyYS4uNDM0ZDBkMzNkOTZjNGM1NDI4NjQ2Y2M3ZmIyZWFmMGVhYTZhODk2YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NHV2luZG93Q2FwdHVy
ZVNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
Q0dXaW5kb3dDYXB0dXJlU291cmNlLm1tCkBAIC0xMDMsMTUgKzEwMywzOCBAQCBzdGF0aWMgUmV0
YWluUHRyPENGRGljdGlvbmFyeVJlZj4gd2luZG93RGVzY3JpcHRpb24oQ0dXaW5kb3dJRCBpZCkK
IAogRXhwZWN0ZWQ8VW5pcXVlUmVmPERpc3BsYXlDYXB0dXJlU291cmNlTWFjOjpDYXB0dXJlcj4s
IFN0cmluZz4gQ0dXaW5kb3dDYXB0dXJlU291cmNlOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBkZXZp
Y2VJRCkKIHsKLSAgICBhdXRvIGRpc3BsYXlJRCA9IHBhcnNlSW50ZWdlcjx1aW50MzJfdD4oZGV2
aWNlSUQpOwotICAgIGlmICghZGlzcGxheUlEKQorICAgIGF1dG8gd2luZG93SUQgPSBwYXJzZUlu
dGVnZXI8dWludDMyX3Q+KGRldmljZUlEKTsKKyAgICBpZiAoIXdpbmRvd0lEKQogICAgICAgICBy
ZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIkludmFsaWQgd2luZG93IGRldmljZSBJRCJfcyk7CiAKLSAg
ICBhdXRvIHdpbmRvd0luZm8gPSB3aW5kb3dEZXNjcmlwdGlvbigqZGlzcGxheUlEKTsKKyAgICBh
dXRvIHdpbmRvd0luZm8gPSB3aW5kb3dEZXNjcmlwdGlvbigqd2luZG93SUQpOwogICAgIGlmICgh
d2luZG93SW5mbykKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJJbnZhbGlkIHdpbmRv
dyBJRCJfcyk7CiAKLSAgICByZXR1cm4gVW5pcXVlUmVmPERpc3BsYXlDYXB0dXJlU291cmNlTWFj
OjpDYXB0dXJlcj4obWFrZVVuaXF1ZVJlZjxDR1dpbmRvd0NhcHR1cmVTb3VyY2U+KCpkaXNwbGF5
SUQpKTsKKyAgICByZXR1cm4gVW5pcXVlUmVmPERpc3BsYXlDYXB0dXJlU291cmNlTWFjOjpDYXB0
dXJlcj4obWFrZVVuaXF1ZVJlZjxDR1dpbmRvd0NhcHR1cmVTb3VyY2U+KCp3aW5kb3dJRCkpOwor
fQorCitjb25zdCBJbnRTaXplIENHV2luZG93Q2FwdHVyZVNvdXJjZTo6aW50cmluc2ljU2l6ZSgp
IGNvbnN0Cit7CisgICAgYXV0byB3aW5kb3dJbmZvID0gd2luZG93RGVzY3JpcHRpb24obV93aW5k
b3dJRCk7CisgICAgaWYgKCF3aW5kb3dJbmZvKSB7CisgICAgICAgIFJFTEVBU0VfTE9HKFdlYlJU
QywgIkludmFsaWQgd2luZG93IElEPyIpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKwor
ICAgIGF1dG8gYm91bmRzRGljdGlvbmFyeSA9IGNoZWNrZWRfY2ZfY2FzdDxDRkRpY3Rpb25hcnlS
ZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKHdpbmRvd0luZm8uZ2V0KCksIGtDR1dpbmRvd0JvdW5k
cykpOworICAgIGlmICghYm91bmRzRGljdGlvbmFyeSkgeworICAgICAgICBSRUxFQVNFX0xPRyhX
ZWJSVEMsICJVbmFibGUgdG8gZ2V0IHdpbmRvdyBib3VuZHMiKTsKKyAgICAgICAgcmV0dXJuIHsg
fTsKKyAgICB9CisKKyAgICBDR1JlY3Qgd2luZG93Qm91bmRzOworICAgIGlmICghQ0dSZWN0TWFr
ZVdpdGhEaWN0aW9uYXJ5UmVwcmVzZW50YXRpb24oYm91bmRzRGljdGlvbmFyeSwgJndpbmRvd0Jv
dW5kcykpIHsKKyAgICAgICAgUkVMRUFTRV9MT0coV2ViUlRDLCAiVW5hYmxlIHRvIGRlY29kZSB3
aW5kb3cgYm91bmRzIik7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorCisgICAgcmV0dXJu
IEludFNpemUod2luZG93Qm91bmRzLnNpemUpOwogfQogCiBDR1dpbmRvd0NhcHR1cmVTb3VyY2U6
OkNHV2luZG93Q2FwdHVyZVNvdXJjZSh1aW50MzJfdCB3aW5kb3dJRCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVyZVNvdXJj
ZU1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxh
eUNhcHR1cmVTb3VyY2VNYWMuY3BwCmluZGV4IGVhMzhjOGE5NDc0ZDg2OTQzNmM2N2M5MmRlODU4
MjQ2NjcwOTE2MDUuLmUwNmQ3OWFiMDI2MmVmMDI0MjE0NDYyNjcxZDEyNTdiN2Q5ZDUxMzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5
Q2FwdHVyZVNvdXJjZU1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlTWFjLmNwcApAQCAtMTAzLDkgKzEwMyw5IEBA
IGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmIERpc3BsYXlDYXB0dXJlU291
cmNlTWFjOjpjYXBhYmlsaXRpZXMoKQogICAgIGlmICghbV9jYXBhYmlsaXRpZXMpIHsKICAgICAg
ICAgUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyBjYXBhYmlsaXRpZXMoc2V0dGluZ3Mo
KS5zdXBwb3J0ZWRDb25zdHJhaW50cygpKTsKIAotICAgICAgICAvLyBGSVhNRTogd2hhdCBzaG91
bGQgdGhlc2UgYmU/Ci0gICAgICAgIGNhcGFiaWxpdGllcy5zZXRXaWR0aChDYXBhYmlsaXR5VmFs
dWVPclJhbmdlKDEsIDM4NDApKTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLnNldEhlaWdodChDYXBh
YmlsaXR5VmFsdWVPclJhbmdlKDEsIDIxNjApKTsKKyAgICAgICAgYXV0byBpbnRyaW5zaWNTaXpl
ID0gbV9jYXB0dXJlci0+aW50cmluc2ljU2l6ZSgpOworICAgICAgICBjYXBhYmlsaXRpZXMuc2V0
V2lkdGgoQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZSgxLCBpbnRyaW5zaWNTaXplLndpZHRoKCkpKTsK
KyAgICAgICAgY2FwYWJpbGl0aWVzLnNldEhlaWdodChDYXBhYmlsaXR5VmFsdWVPclJhbmdlKDEs
IGludHJpbnNpY1NpemUuaGVpZ2h0KCkpKTsKICAgICAgICAgY2FwYWJpbGl0aWVzLnNldEZyYW1l
UmF0ZShDYXBhYmlsaXR5VmFsdWVPclJhbmdlKC4wMSwgMzAuMCkpOwogCiAgICAgICAgIG1fY2Fw
YWJpbGl0aWVzID0gV1RGTW92ZShjYXBhYmlsaXRpZXMpOwpAQCAtMTQ1LDkgKzE0NSw2IEBAIHZv
aWQgRGlzcGxheUNhcHR1cmVTb3VyY2VNYWM6OnNldHRpbmdzRGlkQ2hhbmdlKE9wdGlvblNldDxS
ZWFsdGltZU1lZGlhU291cmNlU2V0CiAgICAgaWYgKHNldHRpbmdzLmNvbnRhaW5zKFJlYWx0aW1l
TWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZzo6RnJhbWVSYXRlKSAmJiBtX3RpbWVyLmlzQWN0aXZl
KCkpCiAgICAgICAgIG1fdGltZXIuc3RhcnRSZXBlYXRpbmcoMV9zIC8gZnJhbWVSYXRlKCkpOwog
Ci0gICAgaWYgKHNldHRpbmdzLmNvbnRhaW5zQW55KHsgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRp
bmdzOjpGbGFnOjpXaWR0aCwgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnOjpIZWln
aHQgfSkpCi0gICAgICAgIG1fYnVmZmVyQXR0cmlidXRlcyA9IG51bGxwdHI7Ci0KICAgICBtX2N1
cnJlbnRTZXR0aW5ncyA9IHsgfTsKIH0KIApAQCAtMTU2LDcgKzE1Myw3IEBAIHZvaWQgRGlzcGxh
eUNhcHR1cmVTb3VyY2VNYWM6OnN0YXJ0UHJvZHVjaW5nRGF0YSgpCiAgICAgbV9zdGFydFRpbWUg
PSBNb25vdG9uaWNUaW1lOjpub3coKTsKICAgICBtX3RpbWVyLnN0YXJ0UmVwZWF0aW5nKDFfcyAv
IGZyYW1lUmF0ZSgpKTsKIAotICAgIGlmICghbV9jYXB0dXJlci0+c3RhcnQoZnJhbWVSYXRlKCkp
KQorICAgIGlmICghbV9jYXB0dXJlci0+c3RhcnQoKSkKICAgICAgICAgY2FwdHVyZUZhaWxlZCgp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvRGlzcGxheUNhcHR1cmVTb3VyY2VNYWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYy5oCmluZGV4IGU0NmFiOGQ5Mzhh
NjI0ODEyMjYzMDVhYTIwZDk1ODAwMWIxOTgzNTMuLjhkMjBlYzExMjFiMWY1ODc2ZjZiYTAwYjVj
MzYyMWQwY2RhYjMxZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYy5oCkBAIC01
OSwxMiArNTksMTMgQEAgcHVibGljOgogICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB+Q2Fw
dHVyZXIoKSA9IGRlZmF1bHQ7CiAKLSAgICAgICAgdmlydHVhbCBib29sIHN0YXJ0KGZsb2F0IGZy
YW1lUmF0ZSkgPSAwOworICAgICAgICB2aXJ0dWFsIGJvb2wgc3RhcnQoKSA9IDA7CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBzdG9wKCkgPSAwOwogICAgICAgICB2aXJ0dWFsIERpc3BsYXlGcmFtZVR5
cGUgZ2VuZXJhdGVGcmFtZSgpID0gMDsKICAgICAgICAgdmlydHVhbCBDYXB0dXJlRGV2aWNlOjpE
ZXZpY2VUeXBlIGRldmljZVR5cGUoKSBjb25zdCA9IDA7CiAgICAgICAgIHZpcnR1YWwgUmVhbHRp
bWVNZWRpYVNvdXJjZVNldHRpbmdzOjpEaXNwbGF5U3VyZmFjZVR5cGUgc3VyZmFjZVR5cGUoKSBj
b25zdCA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBjb21taXRDb25maWd1cmF0aW9uKGZsb2F0
IGZyYW1lUmF0ZSkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgY29tbWl0Q29uZmlndXJhdGlv
bihjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmKSA9IDA7CisgICAgICAgIHZpcnR1
YWwgSW50U2l6ZSBpbnRyaW5zaWNTaXplKCkgY29uc3QgPSAwOwogCiAgICAgICAgIHZpcnR1YWwg
dm9pZCBzZXRMb2dnZXIoY29uc3QgTG9nZ2VyJiwgY29uc3Qgdm9pZCopOwogICAgICAgICBjb25z
dCBMb2dnZXIqIGxvZ2dlclB0cigpIGNvbnN0IHsgcmV0dXJuIG1fbG9nZ2VyLmdldCgpOyB9CkBA
IC05NCw3ICs5NSw3IEBAIHByaXZhdGU6CiAgICAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZUNh
cGFiaWxpdGllcyYgY2FwYWJpbGl0aWVzKCkgZmluYWw7CiAgICAgY29uc3QgUmVhbHRpbWVNZWRp
YVNvdXJjZVNldHRpbmdzJiBzZXR0aW5ncygpIGZpbmFsOwogICAgIENhcHR1cmVEZXZpY2U6OkRl
dmljZVR5cGUgZGV2aWNlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FwdHVyZXItPmRldmljZVR5
cGUoKTsgfQotICAgIHZvaWQgY29tbWl0Q29uZmlndXJhdGlvbigpIGZpbmFsIHsgcmV0dXJuIG1f
Y2FwdHVyZXItPmNvbW1pdENvbmZpZ3VyYXRpb24oZnJhbWVSYXRlKCkpOyB9CisgICAgdm9pZCBj
b21taXRDb25maWd1cmF0aW9uKCkgZmluYWwgeyBtX2NhcHR1cmVyLT5jb21taXRDb25maWd1cmF0
aW9uKHNldHRpbmdzKCkpOyB9CiAKICAgICBjb25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSBjb25z
dCBmaW5hbCB7IHJldHVybiAiRGlzcGxheUNhcHR1cmVTb3VyY2VNYWMiOyB9CiAKQEAgLTEwOCw3
ICsxMDksNiBAQCBwcml2YXRlOgogICAgIE1vbm90b25pY1RpbWUgbV9zdGFydFRpbWUgeyBNb25v
dG9uaWNUaW1lOjpuYW4oKSB9OwogICAgIFNlY29uZHMgbV9lbGFwc2VkVGltZSB7IDBfcyB9Owog
Ci0gICAgUmV0YWluUHRyPENGTXV0YWJsZURpY3Rpb25hcnlSZWY+IG1fYnVmZmVyQXR0cmlidXRl
czsKICAgICBSdW5Mb29wOjpUaW1lcjxEaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYz4gbV90aW1lcjsK
IAogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZVRyYW5zZmVyU2Vzc2lvblZUPiBtX2ltYWdlVHJh
bnNmZXJTZXNzaW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9N
b2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcAppbmRleCA5MDU4MDBhZGVi
ZThjMWFlMmUyZTllYTRkOWIwY2FlY2RiY2U1MjA2Li41YmEyMjViMzYxZThiZjVkMTZiZjBmZTA3
OGIxM2M1NGY2OTliMGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcApAQCAtOTEsOCAr
OTEsOCBAQCBzdGF0aWMgaW5saW5lIFZlY3RvcjxNb2NrTWVkaWFEZXZpY2U+IGRlZmF1bHREZXZp
Y2VzKCkKICAgICAgICAgICAgICAgICBDb2xvcjo6ZGFya0dyYXksCiAgICAgICAgICAgICB9IH0s
CiAKLSAgICAgICAgTW9ja01lZGlhRGV2aWNlIHsgIlNDUkVFTi0xIl9zLCAiTW9jayBzY3JlZW4g
ZGV2aWNlIDEiX3MsIE1vY2tEaXNwbGF5UHJvcGVydGllcyB7IENhcHR1cmVEZXZpY2U6OkRldmlj
ZVR5cGU6OlNjcmVlbiwgQ29sb3I6OmxpZ2h0R3JheSwgeyAzODQwLCAyMTYwIH0gfSB9LAotICAg
ICAgICBNb2NrTWVkaWFEZXZpY2UgeyAiU0NSRUVOLTIiX3MsICJNb2NrIHNjcmVlbiBkZXZpY2Ug
MiJfcywgTW9ja0Rpc3BsYXlQcm9wZXJ0aWVzIHsgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6
U2NyZWVuLCBDb2xvcjo6eWVsbG93LCB7IDE5MjAsIDEwODAgfSB9IH0sCisgICAgICAgIE1vY2tN
ZWRpYURldmljZSB7ICJTQ1JFRU4tMSJfcywgIk1vY2sgc2NyZWVuIGRldmljZSAxIl9zLCBNb2Nr
RGlzcGxheVByb3BlcnRpZXMgeyBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpTY3JlZW4sIENv
bG9yOjpsaWdodEdyYXksIHsgMTkyMCwgMTA4MCB9IH0gfSwKKyAgICAgICAgTW9ja01lZGlhRGV2
aWNlIHsgIlNDUkVFTi0yIl9zLCAiTW9jayBzY3JlZW4gZGV2aWNlIDIiX3MsIE1vY2tEaXNwbGF5
UHJvcGVydGllcyB7IENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OlNjcmVlbiwgQ29sb3I6Onll
bGxvdywgeyAzODQwLCAyMTYwIH0gfSB9LAogCiAgICAgICAgIE1vY2tNZWRpYURldmljZSB7ICJX
SU5ET1ctMiJfcywgIk1vY2sgd2luZG93IDEiX3MsIE1vY2tEaXNwbGF5UHJvcGVydGllcyB7IENh
cHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OlNjcmVlbiwgU1JHQkE8dWludDhfdD4geyAyNTUsIDI0
MSwgMTgxIH0sIHsgNjQwLCA0ODAgfSB9IH0sCiAgICAgICAgIE1vY2tNZWRpYURldmljZSB7ICJX
SU5ET1ctMiJfcywgIk1vY2sgd2luZG93IDIiX3MsIE1vY2tEaXNwbGF5UHJvcGVydGllcyB7IENh
cHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OlNjcmVlbiwgU1JHQkE8dWludDhfdD4geyAyNTUsIDIw
OCwgMTgxIH0sIHsgMTI4MCwgNjAwIH0gfSB9LApAQCAtMTIwLDEyICsxMjAsMTMgQEAgcHVibGlj
OgogICAgIGV4cGxpY2l0IE1vY2tEaXNwbGF5Q2FwdHVyZXIoY29uc3QgQ2FwdHVyZURldmljZSYp
OwogCiBwcml2YXRlOgotICAgIGJvb2wgc3RhcnQoZmxvYXQpIGZpbmFsOworICAgIGJvb2wgc3Rh
cnQoKSBmaW5hbDsKICAgICB2b2lkIHN0b3AoKSBmaW5hbCAgeyBtX3NvdXJjZS0+c3RvcCgpOyB9
CiAgICAgRGlzcGxheUNhcHR1cmVTb3VyY2VNYWM6OkRpc3BsYXlGcmFtZVR5cGUgZ2VuZXJhdGVG
cmFtZSgpIGZpbmFsOwogICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RGlzcGxheVN1
cmZhY2VUeXBlIHN1cmZhY2VUeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gUmVhbHRpbWVNZWRp
YVNvdXJjZVNldHRpbmdzOjpEaXNwbGF5U3VyZmFjZVR5cGU6Ok1vbml0b3I7IH0KLSAgICB2b2lk
IGNvbW1pdENvbmZpZ3VyYXRpb24oZmxvYXQpIGZpbmFsIHsgfQorICAgIHZvaWQgY29tbWl0Q29u
ZmlndXJhdGlvbihjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmKSBmaW5hbCB7IH0K
ICAgICBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlIGRldmljZVR5cGUoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpTY3JlZW47IH0KKyAgICBJbnRTaXpl
IGludHJpbnNpY1NpemUoKSBjb25zdCBmaW5hbDsKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQK
ICAgICBjb25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiTW9j
a0Rpc3BsYXlDYXB0dXJlciI7IH0KICNlbmRpZgpAQCAtMTM4LDcgKzEzOSw3IEBAIE1vY2tEaXNw
bGF5Q2FwdHVyZXI6Ok1vY2tEaXNwbGF5Q2FwdHVyZXIoY29uc3QgQ2FwdHVyZURldmljZSYgZGV2
aWNlKQogewogfQogCi1ib29sIE1vY2tEaXNwbGF5Q2FwdHVyZXI6OnN0YXJ0KGZsb2F0KQorYm9v
bCBNb2NrRGlzcGxheUNhcHR1cmVyOjpzdGFydCgpCiB7CiAgICAgbV9zb3VyY2UtPnN0YXJ0KCk7
CiAgICAgcmV0dXJuIHRydWU7CkBAIC0xNTAsNyArMTUxLDIyIEBAIERpc3BsYXlDYXB0dXJlU291
cmNlTWFjOjpEaXNwbGF5RnJhbWVUeXBlIE1vY2tEaXNwbGF5Q2FwdHVyZXI6OmdlbmVyYXRlRnJh
bWUoKQogICAgICAgICByZXR1cm4gaW1hZ2VCdWZmZXItPmNvcHlOYXRpdmVJbWFnZSgpOwogICAg
IHJldHVybiB7IH07CiB9Ci0jZW5kaWYKKworY29uc3QgSW50U2l6ZSBNb2NrRGlzcGxheUNhcHR1
cmVyOjppbnRyaW5zaWNTaXplKCkgY29uc3QKK3sKKyAgICBhdXRvIGRldmljZSA9IE1vY2tSZWFs
dGltZU1lZGlhU291cmNlQ2VudGVyOjptb2NrRGV2aWNlV2l0aFBlcnNpc3RlbnRJRChtX3NvdXJj
ZS0+cGVyc2lzdGVudElEKCkpOworICAgIEFTU0VSVChkZXZpY2UpOworICAgIGlmICghZGV2aWNl
KQorICAgICAgICByZXR1cm4geyB9OworCisgICAgQVNTRVJUKGRldmljZS0+aXNEaXNwbGF5KCkp
OworICAgIGlmICghZGV2aWNlLT5pc0Rpc3BsYXkoKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKwor
ICAgIGF1dG8mIHByb3BlcnRpZXMgPSBXVEY6OmdldDxNb2NrRGlzcGxheVByb3BlcnRpZXM+KGRl
dmljZS0+cHJvcGVydGllcyk7CisgICAgcmV0dXJuIHByb3BlcnRpZXMuZGVmYXVsdFNpemU7Cit9
CisjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQogCiBjbGFzcyBNb2NrUmVhbHRpbWVEaXNwbGF5U291
cmNlRmFjdG9yeSA6IHB1YmxpYyBEaXNwbGF5Q2FwdHVyZUZhY3RvcnkgewogcHVibGljOgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IDNhMjNmMjU5ODVjZmRkODRjZjQ1NTY2ODkxMmZhZWFlOGFkNmM4YTEuLjQ3YTY4MzFlNDMz
YWUzOGM5NzFlZTljZTM3ODliMjgyNWEyZTllZWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAy
MS0wOC0yMCAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAg
ICBbbWFjT1NdIGdldERpc3BsYXlNZWRpYSBzaG91bGQgY2FwdHVyZSBhdCB0aGUgY29uc3RyYWlu
ZWQgc2l6ZSBpZiBwb3NzaWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjI5MzU3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84MjE5MTEwOT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgICogZmFzdC9tZWRp
YXN0cmVhbS9nZXQtZGlzcGxheS1tZWRpYS1jYXBhYmlsaXRpZXMtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL2dldC1kaXNwbGF5LW1lZGlhLWNhcGFiaWxp
dGllcy5odG1sOiBBZGRlZC4KKwogMjAyMS0wOS0wMSAgQXl1bWkgS29qaW1hICA8YXl1bWlfa29q
aW1hQGFwcGxlLmNvbT4KIAogICAgICAgICBbIENhdGFsaW5hIERlYnVnIEVXUyBdIEFTU0VSVElP
TiBGQUlMRUQ6IG1fd3JhcHBlciAuL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5oKDEyOCkg
OiBKU0M6OkpTT2JqZWN0ICpXZWJDb3JlOjpKU0V2ZW50TGlzdGVuZXI6OmVuc3VyZUpTRnVuY3Rp
b24oV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCAmKSBjb25zdC4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vZ2V0LWRpc3BsYXktbWVkaWEtY2FwYWJpbGl0
aWVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vZ2V0LWRpc3Bs
YXktbWVkaWEtY2FwYWJpbGl0aWVzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MTk0YWVjMzI3
N2ZhNzJlYzFmZWNlODFjZjY4YWExYTNiYzJmYjYyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9nZXQtZGlzcGxheS1tZWRpYS1jYXBhYmlsaXRpZXMtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorCitQQVNTIGNoZWNrIGNhcGFiaWxpdGllcworCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2dldC1kaXNwbGF5LW1lZGlh
LWNhcGFiaWxpdGllcy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9nZXQtZGlz
cGxheS1tZWRpYS1jYXBhYmlsaXRpZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NWNlNzVlMGM0NzE0YmJl
OTkxMGM2Y2E3YTJjMGFkMWFlZGNmOWMyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9tZWRpYXN0cmVhbS9nZXQtZGlzcGxheS1tZWRpYS1jYXBhYmlsaXRpZXMuaHRtbApAQCAt
MCwwICsxLDI4IEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAg
ICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CisgICAgICAgIDx0aXRsZT52aWRlbyB0cmFjayBjcmVh
dGVkIHdpdGggZ2V0RGlzcGxheU1lZGlhIHNob3VsZCByZXR1cm4gY29ycmVjdCBjYXBhYmlsaXRp
ZXM8L3RpdGxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzLmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90
ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvZ2V0RGlzcGxheU1lZGlhLXV0aWxzLmpzIj48L3NjcmlwdD4KKyAgICA8L2hlYWQ+Cisg
ICAgPGJvZHk+CisKKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgICAgIHByb21pc2VfdGVzdChh
c3luYyAoKSA9PiB7CisgICAgICAgICAgICAgICAgc3RyZWFtID0gYXdhaXQgY2FsbEdldERpc3Bs
YXlNZWRpYSh7IHZpZGVvOiB0cnVlIH0pOworICAgICAgICAgICAgICAgIGxldCBjYXBhYmlsaXRp
ZXMgPSBzdHJlYW0uZ2V0VmlkZW9UcmFja3MoKVswXS5nZXRDYXBhYmlsaXRpZXMoKTsKKworICAg
ICAgICAgICAgICAgIGxldCBoZWlnaHQgPSBjYXBhYmlsaXRpZXMuaGVpZ2h0OworICAgICAgICAg
ICAgICAgIGFzc2VydF9lcXVhbHMoaGVpZ2h0Lm1heCwgMTA4MCk7CisgICAgICAgICAgICAgICAg
YXNzZXJ0X2VxdWFscyhoZWlnaHQubWluLCAxKTsKKworICAgICAgICAgICAgICAgIGxldCB3aWR0
aCA9IGNhcGFiaWxpdGllcy53aWR0aDsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHdp
ZHRoLm1heCwgMTkyMCk7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh3aWR0aC5taW4s
IDEpOworICAgICAgICAgICAgfSwgImNoZWNrIGNhcGFiaWxpdGllcyIpOworCisgICAgICAgIDwv
c2NyaXB0PgorICAgIDwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="commit-queue"
          id="460177"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437061</attachid>
            <date>2021-09-01 13:21:54 -0700</date>
            <delta_ts>2021-09-01 14:49:14 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-229357-20210901132153.patch</filename>
            <type>text/plain</type>
            <size>26112</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxODY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGQ4MjI5YjI4ZjkwMzBm
MDE5MzhiOGY5YmZlZGJhN2U2M2IxOTY0ZC4uMTk5MTM2NjgwZTRmN2UxOWM0NTA1YjBlYjA0ZmNj
NDNhNzRhMGMyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDIxLTA4LTIwICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFttYWNPU10gZ2V0
RGlzcGxheU1lZGlhIHNob3VsZCBjYXB0dXJlIGF0IHRoZSBjb25zdHJhaW5lZCBzaXplIGlmIHBv
c3NpYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjkzNTcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgyMTkxMTA5PgorCisgICAgICAgIFJldmll
d2VkIGJ5IFlvdWVubiBGYWJsZXQuCisKKyAgICAgICAgQ3JlYXRlIGRpc3BsYXkgc3RyZWFtIHdp
dGggcHJlZmVycmVkIHdpZHRoLCBoZWlnaHQsIGFuZCBmcmFtZSByYXRlLgorCisgICAgICAgIFRl
c3Q6IGZhc3QvbWVkaWFzdHJlYW0vZ2V0LWRpc3BsYXktbWVkaWEtY2FwYWJpbGl0aWVzLmh0bWwK
KworICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9DR0Rpc3BsYXlTdHJlYW1DYXB0
dXJlU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNHRGlzcGxheVN0cmVhbUNhcHR1cmVT
b3VyY2U6OnN0YXJ0KTogUmVtb3ZlIGZyYW1lIHJhdGUgcGFyYW1ldGVyLgorICAgICAgICAoV2Vi
Q29yZTo6Q0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJjZTo6c3RhcnREaXNwbGF5U3RyZWFtKTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDR0Rpc3BsYXlTdHJlYW1DYXB0dXJlU291cmNlOjpj
b21taXRDb25maWd1cmF0aW9uKTogUGFzcyBzb3VyY2Ugc2V0dGluZ3MKKyAgICAgICAgaW5zdGVh
ZCBvZiBmcmFtZSByYXRlLiBSZWxlYXNlIGFuZCByZWNyZWF0ZSB0aGUgZGlzcGxheSBzdHJlYW0g
aWYgd2lkdGgsIGhlaWdodCwKKyAgICAgICAgb3IgZnJhbWUgcmF0ZSBoYXMgY2hhbmdlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNv
dXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJjZTo6
d2lkdGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNv
dXJjZTo6aGVpZ2h0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNHRGlzcGxheVN0cmVhbUNh
cHR1cmVTb3VyY2U6OmZyYW1lUmF0ZSBjb25zdCk6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvQ0dEaXNwbGF5U3RyZWFtU2NyZWVuQ2FwdHVyZVNvdXJjZS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9DR0Rpc3BsYXlTdHJlYW1TY3JlZW5DYXB0dXJl
U291cmNlLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q0dEaXNwbGF5U3RyZWFtU2NyZWVuQ2FwdHVy
ZVNvdXJjZTo6Y3JlYXRlRGlzcGxheVN0cmVhbSk6IFJlbW92ZQorICAgICAgICBmcmFtZSByYXRl
IHBhcmFtZXRlci4gQ3JlYXRlIGRpc3BsYXkgc3RyZWFtIHdpdGggdGhlIGNvbmZpZ3VyZWQgd2lk
dGggYW5kIGhlaWdodCwKKyAgICAgICAgbm90IHRoZSBzaXplIG9mIHRoZSBzY3JlZW4uCisgICAg
ICAgIChXZWJDb3JlOjpDR0Rpc3BsYXlTdHJlYW1TY3JlZW5DYXB0dXJlU291cmNlOjppbnRyaW5z
aWNTaXplIGNvbnN0KTogUmV0dXJuIHNjcmVlbgorICAgICAgICBzaXplIHNvIHRyYWNrIGNhcGFi
aWxpdGllcyBhcmUgYWNjdXJhdGUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvQ0dXaW5kb3dDYXB0dXJlU291cmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL0NHV2luZG93Q2FwdHVyZVNvdXJjZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNHV2lu
ZG93Q2FwdHVyZVNvdXJjZTo6Y3JlYXRlKTogUmVtb3ZlIGZyYW1lIHJhdGUgcGFyYW1ldGVyLgor
ICAgICAgICAoV2ViQ29yZTo6Q0dXaW5kb3dDYXB0dXJlU291cmNlOjppbnRyaW5zaWNTaXplIGNv
bnN0KTogUmV0dXJuIHdpbmRvdyBzaXplLgorCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL0Rpc3BsYXlDYXB0dXJlU291cmNlTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlDYXB0dXJlU291cmNlTWFjOjpjYXBhYmlsaXRpZXMpOiBVc2UgY2FwdHVyZXIgaW50cmlu
c2ljIHNpemUgZm9yIAorICAgICAgICB3aWR0aCBhbmQgaGVpZ2h0IGNhcGFiaWxpdGllcy4KKwor
ICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVyZVNvdXJjZU1h
Yy5oOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50
ZXIuY3BwOiBDaGFuZ2UgdGhlIG1vY2sgc2NyZWVuIHNpemVzIHRvCisgICAgICAgIG1ha2UgdGhl
IGZpcnN0IG9uZSBpcyBkaWZmZXJlbnQgdGhhbiB0aGUgb2xkIGhhcmQtY29kZWQgc2l6ZXMgc28g
d2UncmUgYWJsZSB0byBkZXRlY3QKKyAgICAgICAgdGhhdCBpdCBpcyB1c2VkIGluIGEgdGVzdC4K
KyAgICAgICAgKFdlYkNvcmU6Ok1vY2tEaXNwbGF5Q2FwdHVyZXI6OnN0YXJ0KTogUmVtb3ZlIGZy
YW1lIHJhdGUgcGFyYW1ldGVyLgorICAgICAgICAoV2ViQ29yZTo6TW9ja0Rpc3BsYXlDYXB0dXJl
cjo6aW50cmluc2ljU2l6ZSBjb25zdCk6CisKIDIwMjEtMDktMDEgIEtpbW1vIEtpbm51bmVuICA8
a2tpbm51bmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBJbWFnZVJlbmRlcmluZ01vZGUuaCBpcyBu
b3QgdXNlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
UmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmNwcAppbmRleCBkMmE5MjhhMTNjNzY1MzJhYzQwZjYy
YTM2MDMwMGFiNDUzYmM4ZGFkLi44Y2ExYjIzNjY3ODUwYWQxNWRiYWY4NjlhNzQ5MDJlOTQ0YWQz
NzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFs
dGltZU1lZGlhU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmNwcApAQCAtOTk3LDcgKzk5Nyw3IEBAIHZvaWQgUmVh
bHRpbWVNZWRpYVNvdXJjZTo6c2V0SW50cmluc2ljU2l6ZShjb25zdCBJbnRTaXplJiBzaXplLCBi
b29sIG5vdGlmeU9ic2VyCiAgICAgfQogfQogCi1jb25zdCBJbnRTaXplIFJlYWx0aW1lTWVkaWFT
b3VyY2U6OmludHJpbnNpY1NpemUoKSBjb25zdAorSW50U2l6ZSBSZWFsdGltZU1lZGlhU291cmNl
OjppbnRyaW5zaWNTaXplKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9pbnRyaW5zaWNTaXplOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRp
bWVNZWRpYVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVh
bHRpbWVNZWRpYVNvdXJjZS5oCmluZGV4IDM0YTM0ODhiNjY2YjA0Mjg1MGYzNzBkMzc1OWFlYjAz
MDBhM2QwZDQuLjA0YTVmYmQyMGQ1ZDU5MDUxNjk2YTk0YzFkYjcyZTE0YjAyMzBhM2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFT
b3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGlt
ZU1lZGlhU291cmNlLmgKQEAgLTE0OSw3ICsxNDksNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgSW50
U2l6ZSBzaXplKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRTaXplKGNvbnN0IEludFNpemUmKTsKIAot
ICAgIGNvbnN0IEludFNpemUgaW50cmluc2ljU2l6ZSgpIGNvbnN0OworICAgIEludFNpemUgaW50
cmluc2ljU2l6ZSgpIGNvbnN0OwogICAgIHZvaWQgc2V0SW50cmluc2ljU2l6ZShjb25zdCBJbnRT
aXplJiwgYm9vbCBub3RpZnlPYnNlcnZlcnMgPSB0cnVlKTsKIAogICAgIGRvdWJsZSBmcmFtZVJh
dGUoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lUmF0ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NHRGlzcGxheVN0cmVhbUNhcHR1cmVTb3Vy
Y2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NHRGlzcGxh
eVN0cmVhbUNhcHR1cmVTb3VyY2UuY3BwCmluZGV4IDM2MzU0OWQ1YjBiOWRiMGY3YzVkY2VmYmZj
OGQ5YTE5ZGIyZjM0N2UuLjlkYzk1Yjg0YWM2NzFhYzBmMjUwNjkwMjVhNWUwODUyM2NlYTQyMDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9DR0Rp
c3BsYXlTdHJlYW1DYXB0dXJlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvQ0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJjZS5jcHAKQEAgLTQ4
LDE0ICs0OCwxNCBAQCBDR0Rpc3BsYXlTdHJlYW1DYXB0dXJlU291cmNlOjp+Q0dEaXNwbGF5U3Ry
ZWFtQ2FwdHVyZVNvdXJjZSgpCiAgICAgbV9jdXJyZW50RnJhbWUgPSBudWxscHRyOwogfQogCi1i
b29sIENHRGlzcGxheVN0cmVhbUNhcHR1cmVTb3VyY2U6OnN0YXJ0KGZsb2F0IGZyYW1lUmF0ZSkK
K2Jvb2wgQ0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJjZTo6c3RhcnQoKQogewogICAgIEFMV0FZ
U19MT0dfSUYobG9nZ2VyUHRyKCksIExPR0lERU5USUZJRVIpOwogCiAgICAgaWYgKG1faXNSdW5u
aW5nKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIHJldHVybiBzdGFydERpc3BsYXlTdHJl
YW0oZnJhbWVSYXRlKTsKKyAgICByZXR1cm4gc3RhcnREaXNwbGF5U3RyZWFtKCk7CiB9CiAKIHZv
aWQgQ0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJjZTo6c3RvcCgpCkBAIC03Niw3ICs3Niw3IEBA
IERpc3BsYXlDYXB0dXJlU291cmNlTWFjOjpEaXNwbGF5RnJhbWVUeXBlIENHRGlzcGxheVN0cmVh
bUNhcHR1cmVTb3VyY2U6OmdlbmVyYXRlCiAgICAgcmV0dXJuIERpc3BsYXlDYXB0dXJlU291cmNl
TWFjOjpEaXNwbGF5RnJhbWVUeXBlIHsgUmV0YWluUHRyPElPU3VyZmFjZVJlZj4geyBtX2N1cnJl
bnRGcmFtZS5pb1N1cmZhY2UoKSB9IH07CiB9CiAKLWJvb2wgQ0dEaXNwbGF5U3RyZWFtQ2FwdHVy
ZVNvdXJjZTo6c3RhcnREaXNwbGF5U3RyZWFtKGZsb2F0IGZyYW1lUmF0ZSkKK2Jvb2wgQ0dEaXNw
bGF5U3RyZWFtQ2FwdHVyZVNvdXJjZTo6c3RhcnREaXNwbGF5U3RyZWFtKCkKIHsKICAgICBpZiAo
IWNoZWNrRGlzcGxheVN0cmVhbSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC04NSw3ICs4
NSw3IEBAIGJvb2wgQ0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJjZTo6c3RhcnREaXNwbGF5U3Ry
ZWFtKGZsb2F0IGZyYW1lUmF0ZSkKICAgICAgICAgbV9jYXB0dXJlUXVldWUgPSBhZG9wdE9TT2Jq
ZWN0KGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZSgiQ0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJjZSBD
YXB0dXJlIFF1ZXVlIiwgRElTUEFUQ0hfUVVFVUVfU0VSSUFMKSk7CiAKICAgICBpZiAoIW1fZGlz
cGxheVN0cmVhbSkgewotICAgICAgICBtX2Rpc3BsYXlTdHJlYW0gPSBjcmVhdGVEaXNwbGF5U3Ry
ZWFtKGZyYW1lUmF0ZSwgZnJhbWVBdmFpbGFibGVIYW5kbGVyKCksIG1fY2FwdHVyZVF1ZXVlLmdl
dCgpKTsKKyAgICAgICAgbV9kaXNwbGF5U3RyZWFtID0gY3JlYXRlRGlzcGxheVN0cmVhbShmcmFt
ZUF2YWlsYWJsZUhhbmRsZXIoKSwgbV9jYXB0dXJlUXVldWUuZ2V0KCkpOwogICAgICAgICBpZiAo
IW1fZGlzcGxheVN0cmVhbSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMTA1LDEw
ICsxMDUsMjIgQEAgYm9vbCBDR0Rpc3BsYXlTdHJlYW1DYXB0dXJlU291cmNlOjpzdGFydERpc3Bs
YXlTdHJlYW0oZmxvYXQgZnJhbWVSYXRlKQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIENH
RGlzcGxheVN0cmVhbUNhcHR1cmVTb3VyY2U6OmNvbW1pdENvbmZpZ3VyYXRpb24oZmxvYXQgZnJh
bWVSYXRlKQordm9pZCBDR0Rpc3BsYXlTdHJlYW1DYXB0dXJlU291cmNlOjpjb21taXRDb25maWd1
cmF0aW9uKGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgc2V0dGluZ3MpCiB7Ci0g
ICAgaWYgKG1faXNSdW5uaW5nICYmICFtX2Rpc3BsYXlTdHJlYW0pCi0gICAgICAgIHN0YXJ0RGlz
cGxheVN0cmVhbShmcmFtZVJhdGUpOworICAgIGlmIChtX3dpZHRoID09IHNldHRpbmdzLndpZHRo
KCkgJiYgbV9oZWlnaHQgPT0gc2V0dGluZ3MuaGVpZ2h0KCkgJiYgbV9mcmFtZVJhdGUgPT0gc2V0
dGluZ3MuZnJhbWVSYXRlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fd2lkdGggPSBzZXR0
aW5ncy53aWR0aCgpOworICAgIG1faGVpZ2h0ID0gc2V0dGluZ3MuaGVpZ2h0KCk7CisgICAgbV9m
cmFtZVJhdGUgPSBzZXR0aW5ncy5mcmFtZVJhdGUoKTsKKworICAgIGlmIChtX2Rpc3BsYXlTdHJl
YW0pIHsKKyAgICAgICAgQ0dEaXNwbGF5U3RyZWFtU3RvcChtX2Rpc3BsYXlTdHJlYW0uZ2V0KCkp
OworICAgICAgICBtX2Rpc3BsYXlTdHJlYW0gPSBudWxscHRyOworICAgIH0KKworICAgIGlmICht
X2lzUnVubmluZykKKyAgICAgICAgc3RhcnREaXNwbGF5U3RyZWFtKCk7CiB9CiAKIHZvaWQgQ0dE
aXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJjZTo6ZGlzcGxheVdhc1JlY29uZmlndXJlZChDR0RpcmVj
dERpc3BsYXlJRCwgQ0dEaXNwbGF5Q2hhbmdlU3VtbWFyeUZsYWdzKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NHRGlzcGxheVN0cmVhbUNhcHR1
cmVTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9DR0Rp
c3BsYXlTdHJlYW1DYXB0dXJlU291cmNlLmgKaW5kZXggMWMyMGRmYzAwYWNlNGRkOTIxYzA0YmJk
MDdiYzg5ZGQ5MzdhMzkyNC4uYTE5MDM4ZGNhYWQ0YTFmYjgzMjU3ODA2OTU2YWQwNDUxMWNmMmM2
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NH
RGlzcGxheVN0cmVhbUNhcHR1cmVTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvQ0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJjZS5oCkBAIC00Nywy
MyArNDcsMjcgQEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6CiAgICAgdXNpbmcgRnJhbWVBdmFpbGFi
bGVDYWxsYmFjayA9IHZvaWQgKF4pKENHRGlzcGxheVN0cmVhbUZyYW1lU3RhdHVzLCB1aW50NjRf
dCwgSU9TdXJmYWNlUmVmLCBDR0Rpc3BsYXlTdHJlYW1VcGRhdGVSZWYpOwotICAgIHZpcnR1YWwg
UmV0YWluUHRyPENHRGlzcGxheVN0cmVhbVJlZj4gY3JlYXRlRGlzcGxheVN0cmVhbShmbG9hdCwg
RnJhbWVBdmFpbGFibGVDYWxsYmFjaywgZGlzcGF0Y2hfcXVldWVfdCkgPSAwOworICAgIHZpcnR1
YWwgUmV0YWluUHRyPENHRGlzcGxheVN0cmVhbVJlZj4gY3JlYXRlRGlzcGxheVN0cmVhbShGcmFt
ZUF2YWlsYWJsZUNhbGxiYWNrLCBkaXNwYXRjaF9xdWV1ZV90KSA9IDA7CiAgICAgdmlydHVhbCBi
b29sIGNoZWNrRGlzcGxheVN0cmVhbSgpIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIENHRGlzcGxh
eVN0cmVhbVJlZiBkaXNwbGF5U3RyZWFtKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5U3RyZWFt
LmdldCgpOyB9CiAgICAgdm9pZCBpbnZhbGlkYXRlRGlzcGxheVN0cmVhbSgpIHsgbV9kaXNwbGF5
U3RyZWFtID0gbnVsbHB0cjsgfQogCisgICAgdWludDMyX3Qgd2lkdGgoKSBjb25zdCB7IHJldHVy
biBtX3dpZHRoOyB9CisgICAgdWludDMyX3QgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9oZWln
aHQ7IH0KKyAgICBmbG9hdCBmcmFtZVJhdGUoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lUmF0ZTsg
fQorCiBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIGRpc3BsYXlSZWNvbmZpZ3VyYXRpb25DYWxs
QmFjayhDR0RpcmVjdERpc3BsYXlJRCwgQ0dEaXNwbGF5Q2hhbmdlU3VtbWFyeUZsYWdzLCB2b2lk
Kik7CiAKICAgICAvLyBEaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYzo6Q2FwdHVyZXIKLSAgICBib29s
IHN0YXJ0KGZsb2F0IGZyYW1lUmF0ZSkgZmluYWw7CisgICAgYm9vbCBzdGFydCgpIGZpbmFsOwog
ICAgIHZvaWQgc3RvcCgpIGZpbmFsOwogICAgIERpc3BsYXlDYXB0dXJlU291cmNlTWFjOjpEaXNw
bGF5RnJhbWVUeXBlIGdlbmVyYXRlRnJhbWUoKSBmaW5hbDsKLSAgICB2b2lkIGNvbW1pdENvbmZp
Z3VyYXRpb24oZmxvYXQgZnJhbWVSYXRlKSBmaW5hbDsKKyAgICB2b2lkIGNvbW1pdENvbmZpZ3Vy
YXRpb24oY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJikgZmluYWw7CiAKICAgICB2
b2lkIGRpc3BsYXlXYXNSZWNvbmZpZ3VyZWQoQ0dEaXJlY3REaXNwbGF5SUQsIENHRGlzcGxheUNo
YW5nZVN1bW1hcnlGbGFncyk7Ci0gICAgYm9vbCBzdGFydERpc3BsYXlTdHJlYW0oZmxvYXQgZnJh
bWVSYXRlKTsKKyAgICBib29sIHN0YXJ0RGlzcGxheVN0cmVhbSgpOwogICAgIEZyYW1lQXZhaWxh
YmxlQ2FsbGJhY2sgZnJhbWVBdmFpbGFibGVIYW5kbGVyKCk7CiAKICAgICBjbGFzcyBEaXNwbGF5
U3VyZmFjZSB7CkBAIC0xMDUsNiArMTA5LDEwIEBAIHByaXZhdGU6CiAgICAgT1NPYmplY3RQdHI8
ZGlzcGF0Y2hfcXVldWVfdD4gbV9jYXB0dXJlUXVldWU7CiAgICAgQmxvY2tQdHI8dm9pZChDR0Rp
c3BsYXlTdHJlYW1GcmFtZVN0YXR1cywgdWludDY0X3QsIElPU3VyZmFjZVJlZiwgQ0dEaXNwbGF5
U3RyZWFtVXBkYXRlUmVmKT4gbV9mcmFtZUF2YWlsYWJsZUhhbmRsZXI7CiAKKyAgICB1aW50MzJf
dCBtX3dpZHRoIHsgMCB9OworICAgIHVpbnQzMl90IG1faGVpZ2h0IHsgMCB9OworICAgIGZsb2F0
IG1fZnJhbWVSYXRlIHsgMCB9OworCiAgICAgYm9vbCBtX2lzUnVubmluZyB7IGZhbHNlIH07CiAg
ICAgYm9vbCBtX29ic2VydmluZ0Rpc3BsYXlDaGFuZ2VzIHsgZmFsc2UgfTsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ0dEaXNwbGF5U3Ry
ZWFtU2NyZWVuQ2FwdHVyZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL0NHRGlzcGxheVN0cmVhbVNjcmVlbkNhcHR1cmVTb3VyY2UuaAppbmRleCA2OTJm
ZjVhNDdhMTE2YWZkMjc3NDA4NWI0YWVhMzA3NmRjOGMyOWYwLi5lMTYwNDQwNzVkYjQyOWM3YzA2
NTE4MzVjYTgzM2Y1OWIzZGJjYjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvQ0dEaXNwbGF5U3RyZWFtU2NyZWVuQ2FwdHVyZVNvdXJjZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9DR0Rpc3BsYXlTdHJl
YW1TY3JlZW5DYXB0dXJlU291cmNlLmgKQEAgLTU0LDEyICs1NCwxMyBAQCBwcml2YXRlOgogICAg
IC8vIERpc3BsYXlDYXB0dXJlU291cmNlTWFjOjpDYXB0dXJlcgogICAgIENhcHR1cmVEZXZpY2U6
OkRldmljZVR5cGUgZGV2aWNlVHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIENhcHR1cmVEZXZp
Y2U6OkRldmljZVR5cGU6OlNjcmVlbjsgfQogICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5n
czo6RGlzcGxheVN1cmZhY2VUeXBlIHN1cmZhY2VUeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpEaXNwbGF5U3VyZmFjZVR5cGU6Ok1vbml0b3I7
IH0KKyAgICBJbnRTaXplIGludHJpbnNpY1NpemUoKSBjb25zdCBmaW5hbDsKICNpZiAhUkVMRUFT
RV9MT0dfRElTQUJMRUQKICAgICBjb25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSBjb25zdCBmaW5h
bCB7IHJldHVybiAiQ0dEaXNwbGF5U3RyZWFtU2NyZWVuQ2FwdHVyZVNvdXJjZSI7IH0KICNlbmRp
ZgogCiAgICAgLy8gQ0dEaXNwbGF5U3RyZWFtQ2FwdHVyZVNvdXJjZQotICAgIFJldGFpblB0cjxD
R0Rpc3BsYXlTdHJlYW1SZWY+IGNyZWF0ZURpc3BsYXlTdHJlYW0oZmxvYXQsIEZyYW1lQXZhaWxh
YmxlQ2FsbGJhY2ssIGRpc3BhdGNoX3F1ZXVlX3QpIGZpbmFsOworICAgIFJldGFpblB0cjxDR0Rp
c3BsYXlTdHJlYW1SZWY+IGNyZWF0ZURpc3BsYXlTdHJlYW0oRnJhbWVBdmFpbGFibGVDYWxsYmFj
aywgZGlzcGF0Y2hfcXVldWVfdCkgZmluYWw7CiAgICAgYm9vbCBjaGVja0Rpc3BsYXlTdHJlYW0o
KSBmaW5hbDsKIAogICAgIGNsYXNzIERpc3BsYXlTdXJmYWNlIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9DR0Rpc3BsYXlTdHJlYW1TY3JlZW5D
YXB0dXJlU291cmNlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L0NHRGlzcGxheVN0cmVhbVNjcmVlbkNhcHR1cmVTb3VyY2UubW0KaW5kZXggZjY5MTIxODQ1NGIz
OGM2OTlmZmM0ZTg1NmNlNjdkYzQwZjNlOWI5OS4uNzhlOTBlNTUxNjE5YmI3NmE0ZTM4YmQ4YmY0
MjM3YTczOWE2ZjI4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL0NHRGlzcGxheVN0cmVhbVNjcmVlbkNhcHR1cmVTb3VyY2UubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NHRGlzcGxheVN0cmVhbVNjcmVl
bkNhcHR1cmVTb3VyY2UubW0KQEAgLTExMSwzMSArMTExLDMyIEBAIGJvb2wgQ0dEaXNwbGF5U3Ry
ZWFtU2NyZWVuQ2FwdHVyZVNvdXJjZTo6Y2hlY2tEaXNwbGF5U3RyZWFtKCkKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotUmV0YWluUHRyPENHRGlzcGxheVN0cmVhbVJlZj4gQ0dEaXNwbGF5U3RyZWFt
U2NyZWVuQ2FwdHVyZVNvdXJjZTo6Y3JlYXRlRGlzcGxheVN0cmVhbShmbG9hdCBmcmFtZVJhdGUs
IEZyYW1lQXZhaWxhYmxlQ2FsbGJhY2sgZnJhbWVBdmFpbGFibGVIYW5kbGVyLCBkaXNwYXRjaF9x
dWV1ZV90IHF1ZXVlKQorUmV0YWluUHRyPENHRGlzcGxheVN0cmVhbVJlZj4gQ0dEaXNwbGF5U3Ry
ZWFtU2NyZWVuQ2FwdHVyZVNvdXJjZTo6Y3JlYXRlRGlzcGxheVN0cmVhbShGcmFtZUF2YWlsYWJs
ZUNhbGxiYWNrIGZyYW1lQXZhaWxhYmxlSGFuZGxlciwgZGlzcGF0Y2hfcXVldWVfdCBxdWV1ZSkK
IHsKICAgICBzdGF0aWMgY29uc3QgaW50IHNjcmVlblF1ZXVlTWF4aW11bUxlbmd0aCA9IDY7CiAK
ICAgICBBU1NFUlQoIWRpc3BsYXlTdHJlYW0oKSk7CiAgICAgQVNTRVJUKG1fZGlzcGxheUlEID09
IHVwZGF0ZURpc3BsYXlJRChtX2Rpc3BsYXlJRCkpOwogCi0gICAgQUxXQVlTX0xPR19JRihsb2dn
ZXJQdHIoKSwgTE9HSURFTlRJRklFUik7Ci0KLSAgICBhdXRvIGRpc3BsYXlNb2RlID0gYWRvcHRD
RihDR0Rpc3BsYXlDb3B5RGlzcGxheU1vZGUobV9kaXNwbGF5SUQpKTsKLSAgICBhdXRvIHNjcmVl
bldpZHRoID0gQ0dEaXNwbGF5TW9kZUdldFBpeGVsc1dpZGUoZGlzcGxheU1vZGUuZ2V0KCkpOwot
ICAgIGF1dG8gc2NyZWVuSGVpZ2h0ID0gQ0dEaXNwbGF5TW9kZUdldFBpeGVsc0hpZ2goZGlzcGxh
eU1vZGUuZ2V0KCkpOwotICAgIGlmICghc2NyZWVuV2lkdGggfHwgIXNjcmVlbkhlaWdodCkgewot
ICAgICAgICBFUlJPUl9MT0dfSUYobG9nZ2VyUHRyKCksIExPR0lERU5USUZJRVIsICJ1bmFibGUg
dG8gZ2V0IHNjcmVlbiB3aWR0aC9oZWlnaHQiKTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0g
ICAgfQorICAgIEFMV0FZU19MT0dfSUYobG9nZ2VyUHRyKCksIExPR0lERU5USUZJRVIsICJmcmFt
ZSByYXRlICIsIGZyYW1lUmF0ZSgpLCAiLCBzaXplICIsIHdpZHRoKCksICJ4IiwgaGVpZ2h0KCkp
OwogCiAgICAgTlNEaWN0aW9uYXJ5KiBzdHJlYW1PcHRpb25zID0gQHsKLSAgICAgICAgKF9fYnJp
ZGdlIE5TU3RyaW5nICopa0NHRGlzcGxheVN0cmVhbU1pbmltdW1GcmFtZVRpbWUgOiBAKDEgLyBm
cmFtZVJhdGUpLAorICAgICAgICAoX19icmlkZ2UgTlNTdHJpbmcgKilrQ0dEaXNwbGF5U3RyZWFt
TWluaW11bUZyYW1lVGltZSA6IEAoMSAvIGZyYW1lUmF0ZSgpKSwKICAgICAgICAgKF9fYnJpZGdl
IE5TU3RyaW5nICopa0NHRGlzcGxheVN0cmVhbVF1ZXVlRGVwdGggOiBAKHNjcmVlblF1ZXVlTWF4
aW11bUxlbmd0aCksCiAgICAgICAgIChfX2JyaWRnZSBOU1N0cmluZyAqKWtDR0Rpc3BsYXlTdHJl
YW1Db2xvclNwYWNlIDogKF9fYnJpZGdlIGlkKXNSR0JDb2xvclNwYWNlUmVmKCksCiAgICAgICAg
IChfX2JyaWRnZSBOU1N0cmluZyAqKWtDR0Rpc3BsYXlTdHJlYW1TaG93Q3Vyc29yIDogQFlFUywK
ICAgICB9OwogCi0gICAgcmV0dXJuIGFkb3B0Q0YoQ0dEaXNwbGF5U3RyZWFtQ3JlYXRlV2l0aERp
c3BhdGNoUXVldWUobV9kaXNwbGF5SUQsIHNjcmVlbldpZHRoLCBzY3JlZW5IZWlnaHQsIHByZWZl
cmVkUGl4ZWxCdWZmZXJGb3JtYXQoKSwgKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilzdHJlYW1P
cHRpb25zLCBxdWV1ZSwgZnJhbWVBdmFpbGFibGVIYW5kbGVyKSk7CisgICAgcmV0dXJuIGFkb3B0
Q0YoQ0dEaXNwbGF5U3RyZWFtQ3JlYXRlV2l0aERpc3BhdGNoUXVldWUobV9kaXNwbGF5SUQsIHdp
ZHRoKCksIGhlaWdodCgpLCBwcmVmZXJlZFBpeGVsQnVmZmVyRm9ybWF0KCksIChfX2JyaWRnZSBD
RkRpY3Rpb25hcnlSZWYpc3RyZWFtT3B0aW9ucywgcXVldWUsIGZyYW1lQXZhaWxhYmxlSGFuZGxl
cikpOworfQorCitJbnRTaXplIENHRGlzcGxheVN0cmVhbVNjcmVlbkNhcHR1cmVTb3VyY2U6Omlu
dHJpbnNpY1NpemUoKSBjb25zdAoreworICAgIGF1dG8gZGlzcGxheU1vZGUgPSBhZG9wdENGKENH
RGlzcGxheUNvcHlEaXNwbGF5TW9kZShtX2Rpc3BsYXlJRCkpOworICAgIGF1dG8gc2NyZWVuV2lk
dGggPSBDR0Rpc3BsYXlNb2RlR2V0UGl4ZWxzV2lkZShkaXNwbGF5TW9kZS5nZXQoKSk7CisgICAg
YXV0byBzY3JlZW5IZWlnaHQgPSBDR0Rpc3BsYXlNb2RlR2V0UGl4ZWxzSGlnaChkaXNwbGF5TW9k
ZS5nZXQoKSk7CisKKyAgICByZXR1cm4geyBDaGVja2VkPGludD4oc2NyZWVuV2lkdGgpLCBDaGVj
a2VkPGludD4oc2NyZWVuSGVpZ2h0KSB9OwogfQogCiBzdGQ6Om9wdGlvbmFsPENhcHR1cmVEZXZp
Y2U+IENHRGlzcGxheVN0cmVhbVNjcmVlbkNhcHR1cmVTb3VyY2U6OnNjcmVlbkNhcHR1cmVEZXZp
Y2VXaXRoUGVyc2lzdGVudElEKGNvbnN0IFN0cmluZyYgZGV2aWNlSUQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ0dXaW5kb3dDYXB0dXJlU291
cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ0dXaW5kb3dD
YXB0dXJlU291cmNlLmgKaW5kZXggYzQxNzNmNDMzZGY2OTMyM2Y1YjViNmJiYmRiYWNkZWQwMTM2
MTk0Ni4uYTdmODk3MjliZDllMTk0NDBmNTFhOGRhZjQ4OGQ1YmI3ZTBlYmQ5ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NHV2luZG93Q2FwdHVy
ZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9D
R1dpbmRvd0NhcHR1cmVTb3VyY2UuaApAQCAtNTAsMTIgKzUwLDEzIEBAIHB1YmxpYzoKIAogcHJp
dmF0ZToKICAgICAvLyBEaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYzo6Q2FwdHVyZXIKLSAgICBib29s
IHN0YXJ0KGZsb2F0KSBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBzdGFydCgpIGZp
bmFsIHsgcmV0dXJuIHRydWU7IH0KICAgICB2b2lkIHN0b3AoKSBmaW5hbCB7IH0KICAgICBEaXNw
bGF5Q2FwdHVyZVNvdXJjZU1hYzo6RGlzcGxheUZyYW1lVHlwZSBnZW5lcmF0ZUZyYW1lKCkgZmlu
YWw7CiAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpEaXNwbGF5U3VyZmFjZVR5cGUg
c3VyZmFjZVR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBSZWFsdGltZU1lZGlhU291cmNlU2V0
dGluZ3M6OkRpc3BsYXlTdXJmYWNlVHlwZTo6V2luZG93OyB9CiAgICAgQ2FwdHVyZURldmljZTo6
RGV2aWNlVHlwZSBkZXZpY2VUeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gQ2FwdHVyZURldmlj
ZTo6RGV2aWNlVHlwZTo6V2luZG93OyB9Ci0gICAgdm9pZCBjb21taXRDb25maWd1cmF0aW9uKGZs
b2F0KSBmaW5hbCB7IH0KKyAgICB2b2lkIGNvbW1pdENvbmZpZ3VyYXRpb24oY29uc3QgUmVhbHRp
bWVNZWRpYVNvdXJjZVNldHRpbmdzJikgZmluYWwgeyB9CisgICAgSW50U2l6ZSBpbnRyaW5zaWNT
aXplKCkgY29uc3QgZmluYWw7CiAgICAgY29uc3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gIkNHV2luZG93Q2FwdHVyZVNvdXJjZSI7IH0KIAogICAgIFJldGFpblB0
cjxDR0ltYWdlUmVmPiB3aW5kb3dJbWFnZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NHV2luZG93Q2FwdHVyZVNvdXJjZS5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9DR1dpbmRvd0NhcHR1cmVTb3VyY2Uu
bW0KaW5kZXggNmExN2Q4NTNiNDNjOTczODkzNGNhMzhmZWE3YWQ4NzkzNWNmNjgyYS4uYjYzNWNk
OGViMzc5ZDc0MTNmZTI1YWYyNGRkNzhlNzg1MzUzN2RlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NHV2luZG93Q2FwdHVyZVNvdXJjZS5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ0dXaW5kb3dDYXB0
dXJlU291cmNlLm1tCkBAIC0xMDMsMTUgKzEwMywzOCBAQCBzdGF0aWMgUmV0YWluUHRyPENGRGlj
dGlvbmFyeVJlZj4gd2luZG93RGVzY3JpcHRpb24oQ0dXaW5kb3dJRCBpZCkKIAogRXhwZWN0ZWQ8
VW5pcXVlUmVmPERpc3BsYXlDYXB0dXJlU291cmNlTWFjOjpDYXB0dXJlcj4sIFN0cmluZz4gQ0dX
aW5kb3dDYXB0dXJlU291cmNlOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBkZXZpY2VJRCkKIHsKLSAg
ICBhdXRvIGRpc3BsYXlJRCA9IHBhcnNlSW50ZWdlcjx1aW50MzJfdD4oZGV2aWNlSUQpOwotICAg
IGlmICghZGlzcGxheUlEKQorICAgIGF1dG8gd2luZG93SUQgPSBwYXJzZUludGVnZXI8dWludDMy
X3Q+KGRldmljZUlEKTsKKyAgICBpZiAoIXdpbmRvd0lEKQogICAgICAgICByZXR1cm4gbWFrZVVu
ZXhwZWN0ZWQoIkludmFsaWQgd2luZG93IGRldmljZSBJRCJfcyk7CiAKLSAgICBhdXRvIHdpbmRv
d0luZm8gPSB3aW5kb3dEZXNjcmlwdGlvbigqZGlzcGxheUlEKTsKKyAgICBhdXRvIHdpbmRvd0lu
Zm8gPSB3aW5kb3dEZXNjcmlwdGlvbigqd2luZG93SUQpOwogICAgIGlmICghd2luZG93SW5mbykK
ICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJJbnZhbGlkIHdpbmRvdyBJRCJfcyk7CiAK
LSAgICByZXR1cm4gVW5pcXVlUmVmPERpc3BsYXlDYXB0dXJlU291cmNlTWFjOjpDYXB0dXJlcj4o
bWFrZVVuaXF1ZVJlZjxDR1dpbmRvd0NhcHR1cmVTb3VyY2U+KCpkaXNwbGF5SUQpKTsKKyAgICBy
ZXR1cm4gVW5pcXVlUmVmPERpc3BsYXlDYXB0dXJlU291cmNlTWFjOjpDYXB0dXJlcj4obWFrZVVu
aXF1ZVJlZjxDR1dpbmRvd0NhcHR1cmVTb3VyY2U+KCp3aW5kb3dJRCkpOworfQorCitJbnRTaXpl
IENHV2luZG93Q2FwdHVyZVNvdXJjZTo6aW50cmluc2ljU2l6ZSgpIGNvbnN0Cit7CisgICAgYXV0
byB3aW5kb3dJbmZvID0gd2luZG93RGVzY3JpcHRpb24obV93aW5kb3dJRCk7CisgICAgaWYgKCF3
aW5kb3dJbmZvKSB7CisgICAgICAgIFJFTEVBU0VfTE9HKFdlYlJUQywgIkludmFsaWQgd2luZG93
IElEPyIpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKworICAgIGF1dG8gYm91bmRzRGlj
dGlvbmFyeSA9IGNoZWNrZWRfY2ZfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KENGRGljdGlvbmFyeUdl
dFZhbHVlKHdpbmRvd0luZm8uZ2V0KCksIGtDR1dpbmRvd0JvdW5kcykpOworICAgIGlmICghYm91
bmRzRGljdGlvbmFyeSkgeworICAgICAgICBSRUxFQVNFX0xPRyhXZWJSVEMsICJVbmFibGUgdG8g
Z2V0IHdpbmRvdyBib3VuZHMiKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisKKyAgICBD
R1JlY3Qgd2luZG93Qm91bmRzOworICAgIGlmICghQ0dSZWN0TWFrZVdpdGhEaWN0aW9uYXJ5UmVw
cmVzZW50YXRpb24oYm91bmRzRGljdGlvbmFyeSwgJndpbmRvd0JvdW5kcykpIHsKKyAgICAgICAg
UkVMRUFTRV9MT0coV2ViUlRDLCAiVW5hYmxlIHRvIGRlY29kZSB3aW5kb3cgYm91bmRzIik7Cisg
ICAgICAgIHJldHVybiB7IH07CisgICAgfQorCisgICAgcmV0dXJuIEludFNpemUod2luZG93Qm91
bmRzLnNpemUpOwogfQogCiBDR1dpbmRvd0NhcHR1cmVTb3VyY2U6OkNHV2luZG93Q2FwdHVyZVNv
dXJjZSh1aW50MzJfdCB3aW5kb3dJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVTb3VyY2VNYWMu
Y3BwCmluZGV4IGVhMzhjOGE5NDc0ZDg2OTQzNmM2N2M5MmRlODU4MjQ2NjcwOTE2MDUuLmUwNmQ3
OWFiMDI2MmVmMDI0MjE0NDYyNjcxZDEyNTdiN2Q5ZDUxMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlD
YXB0dXJlU291cmNlTWFjLmNwcApAQCAtMTAzLDkgKzEwMyw5IEBAIGNvbnN0IFJlYWx0aW1lTWVk
aWFTb3VyY2VDYXBhYmlsaXRpZXMmIERpc3BsYXlDYXB0dXJlU291cmNlTWFjOjpjYXBhYmlsaXRp
ZXMoKQogICAgIGlmICghbV9jYXBhYmlsaXRpZXMpIHsKICAgICAgICAgUmVhbHRpbWVNZWRpYVNv
dXJjZUNhcGFiaWxpdGllcyBjYXBhYmlsaXRpZXMoc2V0dGluZ3MoKS5zdXBwb3J0ZWRDb25zdHJh
aW50cygpKTsKIAotICAgICAgICAvLyBGSVhNRTogd2hhdCBzaG91bGQgdGhlc2UgYmU/Ci0gICAg
ICAgIGNhcGFiaWxpdGllcy5zZXRXaWR0aChDYXBhYmlsaXR5VmFsdWVPclJhbmdlKDEsIDM4NDAp
KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLnNldEhlaWdodChDYXBhYmlsaXR5VmFsdWVPclJhbmdl
KDEsIDIxNjApKTsKKyAgICAgICAgYXV0byBpbnRyaW5zaWNTaXplID0gbV9jYXB0dXJlci0+aW50
cmluc2ljU2l6ZSgpOworICAgICAgICBjYXBhYmlsaXRpZXMuc2V0V2lkdGgoQ2FwYWJpbGl0eVZh
bHVlT3JSYW5nZSgxLCBpbnRyaW5zaWNTaXplLndpZHRoKCkpKTsKKyAgICAgICAgY2FwYWJpbGl0
aWVzLnNldEhlaWdodChDYXBhYmlsaXR5VmFsdWVPclJhbmdlKDEsIGludHJpbnNpY1NpemUuaGVp
Z2h0KCkpKTsKICAgICAgICAgY2FwYWJpbGl0aWVzLnNldEZyYW1lUmF0ZShDYXBhYmlsaXR5VmFs
dWVPclJhbmdlKC4wMSwgMzAuMCkpOwogCiAgICAgICAgIG1fY2FwYWJpbGl0aWVzID0gV1RGTW92
ZShjYXBhYmlsaXRpZXMpOwpAQCAtMTQ1LDkgKzE0NSw2IEBAIHZvaWQgRGlzcGxheUNhcHR1cmVT
b3VyY2VNYWM6OnNldHRpbmdzRGlkQ2hhbmdlKE9wdGlvblNldDxSZWFsdGltZU1lZGlhU291cmNl
U2V0CiAgICAgaWYgKHNldHRpbmdzLmNvbnRhaW5zKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5n
czo6RmxhZzo6RnJhbWVSYXRlKSAmJiBtX3RpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAgIG1fdGlt
ZXIuc3RhcnRSZXBlYXRpbmcoMV9zIC8gZnJhbWVSYXRlKCkpOwogCi0gICAgaWYgKHNldHRpbmdz
LmNvbnRhaW5zQW55KHsgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnOjpXaWR0aCwg
UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnOjpIZWlnaHQgfSkpCi0gICAgICAgIG1f
YnVmZmVyQXR0cmlidXRlcyA9IG51bGxwdHI7Ci0KICAgICBtX2N1cnJlbnRTZXR0aW5ncyA9IHsg
fTsKIH0KIApAQCAtMTU2LDcgKzE1Myw3IEBAIHZvaWQgRGlzcGxheUNhcHR1cmVTb3VyY2VNYWM6
OnN0YXJ0UHJvZHVjaW5nRGF0YSgpCiAgICAgbV9zdGFydFRpbWUgPSBNb25vdG9uaWNUaW1lOjpu
b3coKTsKICAgICBtX3RpbWVyLnN0YXJ0UmVwZWF0aW5nKDFfcyAvIGZyYW1lUmF0ZSgpKTsKIAot
ICAgIGlmICghbV9jYXB0dXJlci0+c3RhcnQoZnJhbWVSYXRlKCkpKQorICAgIGlmICghbV9jYXB0
dXJlci0+c3RhcnQoKSkKICAgICAgICAgY2FwdHVyZUZhaWxlZCgpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVT
b3VyY2VNYWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNw
bGF5Q2FwdHVyZVNvdXJjZU1hYy5oCmluZGV4IGU0NmFiOGQ5MzhhNjI0ODEyMjYzMDVhYTIwZDk1
ODAwMWIxOTgzNTMuLjhkMjBlYzExMjFiMWY1ODc2ZjZiYTAwYjVjMzYyMWQwY2RhYjMxZjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5
Q2FwdHVyZVNvdXJjZU1hYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9EaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYy5oCkBAIC01OSwxMiArNTksMTMgQEAgcHVi
bGljOgogICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB+Q2FwdHVyZXIoKSA9IGRlZmF1bHQ7
CiAKLSAgICAgICAgdmlydHVhbCBib29sIHN0YXJ0KGZsb2F0IGZyYW1lUmF0ZSkgPSAwOworICAg
ICAgICB2aXJ0dWFsIGJvb2wgc3RhcnQoKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzdG9w
KCkgPSAwOwogICAgICAgICB2aXJ0dWFsIERpc3BsYXlGcmFtZVR5cGUgZ2VuZXJhdGVGcmFtZSgp
ID0gMDsKICAgICAgICAgdmlydHVhbCBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlIGRldmljZVR5
cGUoKSBjb25zdCA9IDA7CiAgICAgICAgIHZpcnR1YWwgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRp
bmdzOjpEaXNwbGF5U3VyZmFjZVR5cGUgc3VyZmFjZVR5cGUoKSBjb25zdCA9IDA7Ci0gICAgICAg
IHZpcnR1YWwgdm9pZCBjb21taXRDb25maWd1cmF0aW9uKGZsb2F0IGZyYW1lUmF0ZSkgPSAwOwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgY29tbWl0Q29uZmlndXJhdGlvbihjb25zdCBSZWFsdGltZU1l
ZGlhU291cmNlU2V0dGluZ3MmKSA9IDA7CisgICAgICAgIHZpcnR1YWwgSW50U2l6ZSBpbnRyaW5z
aWNTaXplKCkgY29uc3QgPSAwOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRMb2dnZXIoY29u
c3QgTG9nZ2VyJiwgY29uc3Qgdm9pZCopOwogICAgICAgICBjb25zdCBMb2dnZXIqIGxvZ2dlclB0
cigpIGNvbnN0IHsgcmV0dXJuIG1fbG9nZ2VyLmdldCgpOyB9CkBAIC05NCw3ICs5NSw3IEBAIHBy
aXZhdGU6CiAgICAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYgY2FwYWJp
bGl0aWVzKCkgZmluYWw7CiAgICAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiBz
ZXR0aW5ncygpIGZpbmFsOwogICAgIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGUgZGV2aWNlVHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FwdHVyZXItPmRldmljZVR5cGUoKTsgfQotICAgIHZvaWQg
Y29tbWl0Q29uZmlndXJhdGlvbigpIGZpbmFsIHsgcmV0dXJuIG1fY2FwdHVyZXItPmNvbW1pdENv
bmZpZ3VyYXRpb24oZnJhbWVSYXRlKCkpOyB9CisgICAgdm9pZCBjb21taXRDb25maWd1cmF0aW9u
KCkgZmluYWwgeyBtX2NhcHR1cmVyLT5jb21taXRDb25maWd1cmF0aW9uKHNldHRpbmdzKCkpOyB9
CiAKICAgICBjb25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAi
RGlzcGxheUNhcHR1cmVTb3VyY2VNYWMiOyB9CiAKQEAgLTEwOCw3ICsxMDksNiBAQCBwcml2YXRl
OgogICAgIE1vbm90b25pY1RpbWUgbV9zdGFydFRpbWUgeyBNb25vdG9uaWNUaW1lOjpuYW4oKSB9
OwogICAgIFNlY29uZHMgbV9lbGFwc2VkVGltZSB7IDBfcyB9OwogCi0gICAgUmV0YWluUHRyPENG
TXV0YWJsZURpY3Rpb25hcnlSZWY+IG1fYnVmZmVyQXR0cmlidXRlczsKICAgICBSdW5Mb29wOjpU
aW1lcjxEaXNwbGF5Q2FwdHVyZVNvdXJjZU1hYz4gbV90aW1lcjsKIAogICAgIHN0ZDo6dW5pcXVl
X3B0cjxJbWFnZVRyYW5zZmVyU2Vzc2lvblZUPiBtX2ltYWdlVHJhbnNmZXJTZXNzaW9uOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNv
dXJjZUNlbnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGlt
ZU1lZGlhU291cmNlQ2VudGVyLmNwcAppbmRleCA5MDU4MDBhZGViZThjMWFlMmUyZTllYTRkOWIw
Y2FlY2RiY2U1MjA2Li5iZWY2ZWIwN2I5NzAxYmYwYzQxYWE2N2IxMTcwNWY4MzIyMWMxMjYyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlh
U291cmNlQ2VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tS
ZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcApAQCAtOTEsOCArOTEsOCBAQCBzdGF0aWMgaW5s
aW5lIFZlY3RvcjxNb2NrTWVkaWFEZXZpY2U+IGRlZmF1bHREZXZpY2VzKCkKICAgICAgICAgICAg
ICAgICBDb2xvcjo6ZGFya0dyYXksCiAgICAgICAgICAgICB9IH0sCiAKLSAgICAgICAgTW9ja01l
ZGlhRGV2aWNlIHsgIlNDUkVFTi0xIl9zLCAiTW9jayBzY3JlZW4gZGV2aWNlIDEiX3MsIE1vY2tE
aXNwbGF5UHJvcGVydGllcyB7IENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OlNjcmVlbiwgQ29s
b3I6OmxpZ2h0R3JheSwgeyAzODQwLCAyMTYwIH0gfSB9LAotICAgICAgICBNb2NrTWVkaWFEZXZp
Y2UgeyAiU0NSRUVOLTIiX3MsICJNb2NrIHNjcmVlbiBkZXZpY2UgMiJfcywgTW9ja0Rpc3BsYXlQ
cm9wZXJ0aWVzIHsgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6U2NyZWVuLCBDb2xvcjo6eWVs
bG93LCB7IDE5MjAsIDEwODAgfSB9IH0sCisgICAgICAgIE1vY2tNZWRpYURldmljZSB7ICJTQ1JF
RU4tMSJfcywgIk1vY2sgc2NyZWVuIGRldmljZSAxIl9zLCBNb2NrRGlzcGxheVByb3BlcnRpZXMg
eyBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpTY3JlZW4sIENvbG9yOjpsaWdodEdyYXksIHsg
MTkyMCwgMTA4MCB9IH0gfSwKKyAgICAgICAgTW9ja01lZGlhRGV2aWNlIHsgIlNDUkVFTi0yIl9z
LCAiTW9jayBzY3JlZW4gZGV2aWNlIDIiX3MsIE1vY2tEaXNwbGF5UHJvcGVydGllcyB7IENhcHR1
cmVEZXZpY2U6OkRldmljZVR5cGU6OlNjcmVlbiwgQ29sb3I6OnllbGxvdywgeyAzODQwLCAyMTYw
IH0gfSB9LAogCiAgICAgICAgIE1vY2tNZWRpYURldmljZSB7ICJXSU5ET1ctMiJfcywgIk1vY2sg
d2luZG93IDEiX3MsIE1vY2tEaXNwbGF5UHJvcGVydGllcyB7IENhcHR1cmVEZXZpY2U6OkRldmlj
ZVR5cGU6OlNjcmVlbiwgU1JHQkE8dWludDhfdD4geyAyNTUsIDI0MSwgMTgxIH0sIHsgNjQwLCA0
ODAgfSB9IH0sCiAgICAgICAgIE1vY2tNZWRpYURldmljZSB7ICJXSU5ET1ctMiJfcywgIk1vY2sg
d2luZG93IDIiX3MsIE1vY2tEaXNwbGF5UHJvcGVydGllcyB7IENhcHR1cmVEZXZpY2U6OkRldmlj
ZVR5cGU6OlNjcmVlbiwgU1JHQkE8dWludDhfdD4geyAyNTUsIDIwOCwgMTgxIH0sIHsgMTI4MCwg
NjAwIH0gfSB9LApAQCAtMTIwLDEyICsxMjAsMTMgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IE1v
Y2tEaXNwbGF5Q2FwdHVyZXIoY29uc3QgQ2FwdHVyZURldmljZSYpOwogCiBwcml2YXRlOgotICAg
IGJvb2wgc3RhcnQoZmxvYXQpIGZpbmFsOworICAgIGJvb2wgc3RhcnQoKSBmaW5hbDsKICAgICB2
b2lkIHN0b3AoKSBmaW5hbCAgeyBtX3NvdXJjZS0+c3RvcCgpOyB9CiAgICAgRGlzcGxheUNhcHR1
cmVTb3VyY2VNYWM6OkRpc3BsYXlGcmFtZVR5cGUgZ2VuZXJhdGVGcmFtZSgpIGZpbmFsOwogICAg
IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RGlzcGxheVN1cmZhY2VUeXBlIHN1cmZhY2VU
eXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpE
aXNwbGF5U3VyZmFjZVR5cGU6Ok1vbml0b3I7IH0KLSAgICB2b2lkIGNvbW1pdENvbmZpZ3VyYXRp
b24oZmxvYXQpIGZpbmFsIHsgfQorICAgIHZvaWQgY29tbWl0Q29uZmlndXJhdGlvbihjb25zdCBS
ZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmKSBmaW5hbCB7IH0KICAgICBDYXB0dXJlRGV2aWNl
OjpEZXZpY2VUeXBlIGRldmljZVR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBDYXB0dXJlRGV2
aWNlOjpEZXZpY2VUeXBlOjpTY3JlZW47IH0KKyAgICBJbnRTaXplIGludHJpbnNpY1NpemUoKSBj
b25zdCBmaW5hbDsKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBjb25zdCBjaGFyKiBs
b2dDbGFzc05hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiTW9ja0Rpc3BsYXlDYXB0dXJlciI7
IH0KICNlbmRpZgpAQCAtMTM4LDcgKzEzOSw3IEBAIE1vY2tEaXNwbGF5Q2FwdHVyZXI6Ok1vY2tE
aXNwbGF5Q2FwdHVyZXIoY29uc3QgQ2FwdHVyZURldmljZSYgZGV2aWNlKQogewogfQogCi1ib29s
IE1vY2tEaXNwbGF5Q2FwdHVyZXI6OnN0YXJ0KGZsb2F0KQorYm9vbCBNb2NrRGlzcGxheUNhcHR1
cmVyOjpzdGFydCgpCiB7CiAgICAgbV9zb3VyY2UtPnN0YXJ0KCk7CiAgICAgcmV0dXJuIHRydWU7
CkBAIC0xNTAsNyArMTUxLDIyIEBAIERpc3BsYXlDYXB0dXJlU291cmNlTWFjOjpEaXNwbGF5RnJh
bWVUeXBlIE1vY2tEaXNwbGF5Q2FwdHVyZXI6OmdlbmVyYXRlRnJhbWUoKQogICAgICAgICByZXR1
cm4gaW1hZ2VCdWZmZXItPmNvcHlOYXRpdmVJbWFnZSgpOwogICAgIHJldHVybiB7IH07CiB9Ci0j
ZW5kaWYKKworSW50U2l6ZSBNb2NrRGlzcGxheUNhcHR1cmVyOjppbnRyaW5zaWNTaXplKCkgY29u
c3QKK3sKKyAgICBhdXRvIGRldmljZSA9IE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpt
b2NrRGV2aWNlV2l0aFBlcnNpc3RlbnRJRChtX3NvdXJjZS0+cGVyc2lzdGVudElEKCkpOworICAg
IEFTU0VSVChkZXZpY2UpOworICAgIGlmICghZGV2aWNlKQorICAgICAgICByZXR1cm4geyB9Owor
CisgICAgQVNTRVJUKGRldmljZS0+aXNEaXNwbGF5KCkpOworICAgIGlmICghZGV2aWNlLT5pc0Rp
c3BsYXkoKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGF1dG8mIHByb3BlcnRpZXMgPSBX
VEY6OmdldDxNb2NrRGlzcGxheVByb3BlcnRpZXM+KGRldmljZS0+cHJvcGVydGllcyk7CisgICAg
cmV0dXJuIHByb3BlcnRpZXMuZGVmYXVsdFNpemU7Cit9CisjZW5kaWYgLy8gUExBVEZPUk0oTUFD
KQogCiBjbGFzcyBNb2NrUmVhbHRpbWVEaXNwbGF5U291cmNlRmFjdG9yeSA6IHB1YmxpYyBEaXNw
bGF5Q2FwdHVyZUZhY3RvcnkgewogcHVibGljOgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDNhMjNmMjU5ODVjZmRkODRjZjQ1
NTY2ODkxMmZhZWFlOGFkNmM4YTEuLjQ3YTY4MzFlNDMzYWUzOGM5NzFlZTljZTM3ODliMjgyNWEy
ZTllZWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMS0wOC0yMCAgRXJpYyBDYXJsc29uICA8
ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBbbWFjT1NdIGdldERpc3BsYXlNZWRp
YSBzaG91bGQgY2FwdHVyZSBhdCB0aGUgY29uc3RyYWluZWQgc2l6ZSBpZiBwb3NzaWJsZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5MzU3CisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS84MjE5MTEwOT4KKworICAgICAgICBSZXZpZXdlZCBieSBZb3Vl
bm4gRmFibGV0LgorCisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9nZXQtZGlzcGxheS1tZWRp
YS1jYXBhYmlsaXRpZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlh
c3RyZWFtL2dldC1kaXNwbGF5LW1lZGlhLWNhcGFiaWxpdGllcy5odG1sOiBBZGRlZC4KKwogMjAy
MS0wOS0wMSAgQXl1bWkgS29qaW1hICA8YXl1bWlfa29qaW1hQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbIENhdGFsaW5hIERlYnVnIEVXUyBdIEFTU0VSVElPTiBGQUlMRUQ6IG1fd3JhcHBlciAuL2Jp
bmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5oKDEyOCkgOiBKU0M6OkpTT2JqZWN0ICpXZWJDb3Jl
OjpKU0V2ZW50TGlzdGVuZXI6OmVuc3VyZUpTRnVuY3Rpb24oV2ViQ29yZTo6U2NyaXB0RXhlY3V0
aW9uQ29udGV4dCAmKSBjb25zdC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFz
dHJlYW0vZ2V0LWRpc3BsYXktbWVkaWEtY2FwYWJpbGl0aWVzLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vZ2V0LWRpc3BsYXktbWVkaWEtY2FwYWJpbGl0aWVzLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MTk0YWVjMzI3N2ZhNzJlYzFmZWNlODFjZjY4YWExYTNi
YzJmYjYyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9n
ZXQtZGlzcGxheS1tZWRpYS1jYXBhYmlsaXRpZXMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBA
QAorCitQQVNTIGNoZWNrIGNhcGFiaWxpdGllcworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L21lZGlhc3RyZWFtL2dldC1kaXNwbGF5LW1lZGlhLWNhcGFiaWxpdGllcy5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9nZXQtZGlzcGxheS1tZWRpYS1jYXBhYmlsaXRpZXMu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi44NWNlNzVlMGM0NzE0YmJlOTkxMGM2Y2E3YTJjMGFkMWFlZGNmOWMy
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9nZXQtZGlz
cGxheS1tZWRpYS1jYXBhYmlsaXRpZXMuaHRtbApAQCAtMCwwICsxLDI4IEBACis8IWRvY3R5cGUg
aHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+
CisgICAgICAgIDx0aXRsZT52aWRlbyB0cmFjayBjcmVhdGVkIHdpdGggZ2V0RGlzcGxheU1lZGlh
IHNob3VsZCByZXR1cm4gY29ycmVjdCBjYXBhYmlsaXRpZXM8L3RpdGxlPgorICAgICAgICA8c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKyAgICAg
ICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9z
Y3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZ2V0RGlzcGxheU1lZGlhLXV0
aWxzLmpzIj48L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHk+CisKKyAgICAgICAgPHNj
cmlwdD4KKyAgICAgICAgICAgIHByb21pc2VfdGVzdChhc3luYyAoKSA9PiB7CisgICAgICAgICAg
ICAgICAgc3RyZWFtID0gYXdhaXQgY2FsbEdldERpc3BsYXlNZWRpYSh7IHZpZGVvOiB0cnVlIH0p
OworICAgICAgICAgICAgICAgIGxldCBjYXBhYmlsaXRpZXMgPSBzdHJlYW0uZ2V0VmlkZW9UcmFj
a3MoKVswXS5nZXRDYXBhYmlsaXRpZXMoKTsKKworICAgICAgICAgICAgICAgIGxldCBoZWlnaHQg
PSBjYXBhYmlsaXRpZXMuaGVpZ2h0OworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoaGVp
Z2h0Lm1heCwgMTA4MCk7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhoZWlnaHQubWlu
LCAxKTsKKworICAgICAgICAgICAgICAgIGxldCB3aWR0aCA9IGNhcGFiaWxpdGllcy53aWR0aDsK
KyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHdpZHRoLm1heCwgMTkyMCk7CisgICAgICAg
ICAgICAgICAgYXNzZXJ0X2VxdWFscyh3aWR0aC5taW4sIDEpOworICAgICAgICAgICAgfSwgImNo
ZWNrIGNhcGFiaWxpdGllcyIpOworCisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvYm9keT4KKzwv
aHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>