<?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>234319</bug_id>
          
          <creation_ts>2021-12-14 15:37:15 -0800</creation_ts>
          <short_desc>[Refactor] Adopt LoggerHelper in EME classes</short_desc>
          <delta_ts>2022-02-28 18:39:02 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=237302</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="Jer Noble">jer.noble</reporter>
          <assigned_to name="Jer Noble">jer.noble</assigned_to>
          <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1824153</commentid>
    <comment_count>0</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2021-12-14 15:37:15 -0800</bug_when>
    <thetext>[Refactor] Adopt LoggerHelper in EME classes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824173</commentid>
    <comment_count>1</comment_count>
      <attachid>447175</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2021-12-14 16:33:09 -0800</bug_when>
    <thetext>Created attachment 447175
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824235</commentid>
    <comment_count>2</comment_count>
      <attachid>447200</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2021-12-14 21:04:15 -0800</bug_when>
    <thetext>Created attachment 447200
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826142</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-12-21 15:38:16 -0800</bug_when>
    <thetext>&lt;rdar://problem/86786774&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835027</commentid>
    <comment_count>4</comment_count>
      <attachid>450246</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2022-01-28 09:58:11 -0800</bug_when>
    <thetext>Created attachment 450246
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1845702</commentid>
    <comment_count>5</comment_count>
      <attachid>453123</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2022-02-24 12:04:38 -0800</bug_when>
    <thetext>Created attachment 453123
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1845712</commentid>
    <comment_count>6</comment_count>
      <attachid>453125</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2022-02-24 12:26:32 -0800</bug_when>
    <thetext>Created attachment 453125
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1845798</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-24 15:26:08 -0800</bug_when>
    <thetext>Committed r290470 (247769@main): &lt;https://commits.webkit.org/247769@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 453125.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447175</attachid>
            <date>2021-12-14 16:33:09 -0800</date>
            <delta_ts>2022-02-24 12:04:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234319-20211214163308.patch</filename>
            <type>text/plain</type>
            <size>76863</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2ODU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTllNzVlYTRjMTQ5MmEy
ODlhZGYzODk5Yzc0YjBiOTAxNTk0YjA0Ny4uODBmNGQzMDA3ODQ5MzVlMDYyNWJhOWY2OGI5MGVm
NGJhOGM5YzAwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkxIEBACisyMDIxLTEyLTE0ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtSZWZhY3Rvcl0gQWRvcHQg
TG9nZ2VySGVscGVyIGluIExvZ2dpbmcgRU1FIGNsYXNzZXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDMxOQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluIG9yZGVyIHRvIHBhc3MgZG93biBhIGxvZ2dl
cigpIGFuZCBsb2dJZGVudGlmaWVyKCkgdG8gdGhlIHBsYXRmb3JtLworICAgICAgICBjbGFzc2Vz
LCBtb2RpZnkgTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCB0byBiZSBhIENhbk1ha2VXZWFrUHRyIGNs
YXNzLAorICAgICAgICBzbyBpdCBjYW4gYmUgcGFzc2VkIGFyb3VuZCBieSByZWZlcmVuY2UgYW5k
IGF1dG9tYXRpY2FsbHkgaW52YWxpZGF0ZWQKKyAgICAgICAgd2hlbiB0aGUgY2xpZW50IGlzIGRl
c3Ryb3llZC4gVGhlbiBtb2RpZnkgTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCB0bworICAgICAgICBw
cm92aWRlIGEgbG9nZ2VyKCkgYW5kIGxvZ0lkZW50aWZpZXIoKSB0byBjYWxsZXJzLgorCisgICAg
ICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkxlZ2FjeUNETTo6Y3JlYXRlU2Vzc2lvbik6CisgICAgICAgICogTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNUHJpdmF0ZS5oOgorICAgICAgICAqIE1v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVByaXZhdGVDbGVhcktleS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lDRE1Qcml2YXRlQ2xlYXJLZXk6OmNyZWF0ZVNlc3Np
b24pOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVBy
aXZhdGVDbGVhcktleS5oOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5
L0xlZ2FjeUNETVByaXZhdGVNZWRpYVBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDRE1Q
cml2YXRlTWVkaWFQbGF5ZXI6OmNyZWF0ZVNlc3Npb24pOgorICAgICAgICAqIE1vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVByaXZhdGVNZWRpYVBsYXllci5oOgorICAgICAg
ICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVNlc3Npb25DbGVhcktl
eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uQ2xlYXJLZXk6OkNETVNlc3Npb25D
bGVhcktleSk6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5
Q0RNU2Vzc2lvbkNsZWFyS2V5Lmg6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9s
ZWdhY3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYktp
dE1lZGlhS2V5U2Vzc2lvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdE1lZGlh
S2V5U2Vzc2lvbjo6V2ViS2l0TWVkaWFLZXlTZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YktpdE1lZGlhS2V5U2Vzc2lvbjo6bG9nQ2hhbm5lbCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJLaXRNZWRpYUtleVNlc3Npb246On5XZWJLaXRNZWRpYUtleVNlc3Npb24pOiBEZWxldGVk
LgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5
U2Vzc2lvbi5oOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktp
dE1lZGlhS2V5cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRNZWRpYUtleXM6OmNyZWF0
ZVNlc3Npb24pOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktp
dE1lZGlhS2V5cy5oOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dl
YktpdE1lZGlhS2V5cy5pZGw6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTGVnYWN5Q0RN
U2Vzc2lvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpjcmVhdGVTZXNzaW9uKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlSW50ZXJmYWNlOjpjcmVhdGVTZXNzaW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQzo6Y3JlYXRlU2Vzc2lvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24uaDoKKyAgICAgICAgKFdl
YkNvcmU6OkNETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uOjpsb2dDbGFzc05hbWUgY29uc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Np
b25BVkNvbnRlbnRLZXlTZXNzaW9uLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q0RNU2Vzc2lvbkFW
Q29udGVudEtleVNlc3Npb246OkNETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uOjpnZW5lcmF0ZUtleVJl
cXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb246
OnJlbGVhc2VLZXlzKToKKyAgICAgICAgKFdlYkNvcmU6OkNETVNlc3Npb25BVkNvbnRlbnRLZXlT
ZXNzaW9uOjp1cGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNU2Vzc2lvbkFWQ29udGVudEtl
eVNlc3Npb246OmFkZFBhcnNlcik6CisgICAgICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uQVZDb250
ZW50S2V5U2Vzc2lvbjo6cmVtb3ZlUGFyc2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkNETVNlc3Np
b25BVkNvbnRlbnRLZXlTZXNzaW9uOjpnZW5lcmF0ZUtleVJlbGVhc2VNZXNzYWdlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZGb3Vu
ZGF0aW9uT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL0NETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q0RN
U2Vzc2lvbkFWRm91bmRhdGlvbk9iakM6OkNETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDOjp+Q0RNU2Vzc2lvbkFW
Rm91bmRhdGlvbk9iakMpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNU2Vzc2lvbkFWRm91bmRhdGlv
bk9iakM6OmdlbmVyYXRlS2V5UmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1TZXNzaW9u
QVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETVNlc3Npb25B
VkZvdW5kYXRpb25PYmpDOjpwbGF5ZXJEaWRSZWNlaXZlRXJyb3IpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakM6OmxvZ0NoYW5uZWwgY29uc3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVlN0cmVh
bVNlc3Npb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkNETVNlc3Npb25BVlN0cmVhbVNlc3Npb246
OmxvZ0NsYXNzTmFtZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbi5tbToKKyAgICAgICAgKFdlYkNv
cmU6OkNETVNlc3Npb25BVlN0cmVhbVNlc3Npb246OkNETVNlc3Npb25BVlN0cmVhbVNlc3Npb24p
OgorICAgICAgICAoV2ViQ29yZTo6Q0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbjo6fkNETVNlc3Np
b25BVlN0cmVhbVNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6Q0RNU2Vzc2lvbkFWU3RyZWFt
U2Vzc2lvbjo6Z2VuZXJhdGVLZXlSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETVNlc3Np
b25BVlN0cmVhbVNlc3Npb246OnJlbGVhc2VLZXlzKToKKyAgICAgICAgKFdlYkNvcmU6OkNETVNl
c3Npb25BVlN0cmVhbVNlc3Npb246OnVwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1TZXNz
aW9uQVZTdHJlYW1TZXNzaW9uOjphZGRQYXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNU2Vz
c2lvbkFWU3RyZWFtU2Vzc2lvbjo6cmVtb3ZlUGFyc2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkNE
TVNlc3Npb25BVlN0cmVhbVNlc3Npb246OmdlbmVyYXRlS2V5UmVsZWFzZU1lc3NhZ2UpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25NZWRp
YVNvdXJjZUFWRk9iakMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNETVNlc3Npb25NZWRpYVNvdXJj
ZUFWRk9iakM6OmxvZ2dlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uTWVk
aWFTb3VyY2VBVkZPYmpDOjpsb2dJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpD
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6Q0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQzo6Q0RN
U2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpDRE1TZXNzaW9u
TWVkaWFTb3VyY2VBVkZPYmpDOjpsb2dDaGFubmVsIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNob3VsZFdhaXRGb3JMb2FkaW5n
T2ZSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDOjpjcmVhdGVTZXNzaW9uKToKKyAgICAgICAgKiB0ZXN0aW5nL0xlZ2FjeU1vY2tD
RE0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5TW9ja0NETTo6Y3JlYXRlU2Vzc2lvbik6
CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNU2Vzc2lvbjo6TW9ja0NETVNlc3Npb24pOgorICAg
ICAgICAqIHRlc3RpbmcvTGVnYWN5TW9ja0NETS5oOgorCiAyMDIxLTEyLTEzICBKZXIgTm9ibGUg
IDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFtNYWNdIEFkb3B0IC1bTlNTY3JlZW4g
c2FmZUFyZWFJbnNldHNdCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDdkMjA3Yzc0YTk0YjUzYTdlYmE4MjhkYWFlZmQz
ODAwMWZhYmY4ZDkuLjY3ODhmMWExODI3NThlZjU5MDJlMTMxNTlhMjUxYTJjNWJhNDE1NGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMjEtMTItMTQgIEplciBOb2JsZSAgPGplci5ub2Js
ZUBhcHBsZS5jb20+CisKKyAgICAgICAgW1JlZmFjdG9yXSBBZG9wdCBMb2dnZXJIZWxwZXIgaW4g
TGVnYWN5IEVNRSBjbGFzc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzQzMTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5Ojpsb2dn
ZXIgY29uc3QpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFj
dG9yeVByb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Q
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVByb3h5OjpjcmVhdGVT
ZXNzaW9uKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Np
b25Qcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94
eTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5
OjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjcmVhdGVTZXNzaW9uKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE0uY3BwOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVMZWdhY3lDRE06OmNyZWF0ZVNlc3Npb24pOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVM
ZWdhY3lDRE1GYWN0b3J5OjpjcmVhdGVDRE0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVM
ZWdhY3lDRE1TZXNzaW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lD
RE1TZXNzaW9uOjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmg6CisKIDIwMjEtMTItMTQgIEplciBO
b2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgU2FmYXJpIGludGVybWl0dGVu
dGx5IHN0b3BwaW5nIHBsYXlpbmcgU3BvdGlmeSBXZWIgUGxheWVyIChjdXJyZW50VGltZSBnb2Vz
IGJhY2t3YXJkcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvbGVnYWN5L0xlZ2FjeUNETS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE0uY3BwCmluZGV4IDI5ODIzNzUxZDRjNTk0MjY3MDhh
Yjg2NGFiNGFjYTFlOTQ2OTUwMmQuLmFlYWExNWNiY2Q3ZjI1ZmI0YmE0Nzk1YTBlN2JlZjBhNGQ3
ZDcwYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
bGVnYWN5L0xlZ2FjeUNETS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNLmNwcApAQCAtMTMwLDcgKzEzMCw3IEBAIGJvb2wgTGVn
YWN5Q0RNOjpzdXBwb3J0c01JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpIGNvbnN0CiAK
IHN0ZDo6dW5pcXVlX3B0cjxMZWdhY3lDRE1TZXNzaW9uPiBMZWdhY3lDRE06OmNyZWF0ZVNlc3Np
b24oTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCYgY2xpZW50KQogewotICAgIGF1dG8gc2Vzc2lvbiA9
IG1fcHJpdmF0ZS0+Y3JlYXRlU2Vzc2lvbigmY2xpZW50KTsKKyAgICBhdXRvIHNlc3Npb24gPSBt
X3ByaXZhdGUtPmNyZWF0ZVNlc3Npb24oY2xpZW50KTsKICAgICBpZiAobWVkaWFQbGF5ZXIoKSkK
ICAgICAgICAgbWVkaWFQbGF5ZXIoKS0+c2V0Q0RNU2Vzc2lvbihzZXNzaW9uLmdldCgpKTsKICAg
ICByZXR1cm4gc2Vzc2lvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVByaXZhdGUuaAppbmRleCBmMjQ5
NzA3MmU3ODU3NjBjNTllMjMwMzkzNGZiN2Y5Y2M0NzcyZGZiLi5lN2Q0YzRiN2M1NDA4YzBiMjJh
OGMxYmFkMzhlYjdkYTMwYzhmZDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1Qcml2YXRlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNUHJpdmF0ZS5oCkBA
IC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c01JTUVU
eXBlKGNvbnN0IFN0cmluZyYpID0gMDsKIAotICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPExl
Z2FjeUNETVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCopID0g
MDsKKyAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxMZWdhY3lDRE1TZXNzaW9uPiBjcmVhdGVT
ZXNzaW9uKExlZ2FjeUNETVNlc3Npb25DbGllbnQmKSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL2xlZ2FjeS9MZWdhY3lDRE1Qcml2YXRlQ2xlYXJLZXkuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNUHJpdmF0ZUNsZWFyS2V5LmNw
cAppbmRleCAxN2Q0ZmI3Mjc0MGQ2ZTFjM2RmNmZlNmY3Njg3NWI0Yzk0YjIzYmI3Li5iN2FmZmNh
OTEzOWE3OTA0ZGUyYzQ5ODQwN2M5NzkwZjIyM2RkNDc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1Qcml2YXRlQ2xlYXJL
ZXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5
L0xlZ2FjeUNETVByaXZhdGVDbGVhcktleS5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgYm9vbCBMZWdh
Y3lDRE1Qcml2YXRlQ2xlYXJLZXk6OnN1cHBvcnRzTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSkKICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OnN1cHBvcnRzS2V5U3lzdGVtKG1fY2RtLT5r
ZXlTeXN0ZW0oKSwgbWltZVR5cGUpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8TGVnYWN5Q0RNU2Vz
c2lvbj4gTGVnYWN5Q0RNUHJpdmF0ZUNsZWFyS2V5OjpjcmVhdGVTZXNzaW9uKExlZ2FjeUNETVNl
c3Npb25DbGllbnQqIGNsaWVudCkKK3N0ZDo6dW5pcXVlX3B0cjxMZWdhY3lDRE1TZXNzaW9uPiBM
ZWdhY3lDRE1Qcml2YXRlQ2xlYXJLZXk6OmNyZWF0ZVNlc3Npb24oTGVnYWN5Q0RNU2Vzc2lvbkNs
aWVudCYgY2xpZW50KQogewogICAgIHJldHVybiBtYWtlVW5pcXVlPENETVNlc3Npb25DbGVhcktl
eT4oY2xpZW50KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVByaXZhdGVDbGVhcktleS5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNUHJpdmF0ZUNsZWFyS2V5
LmgKaW5kZXggODc2NDY4YmE0NDk3ZWE1YmE5YWRhM2UxZWJjYzI1YjIxMzliOTdkNC4uNzFiODI4
MmI3MTUyYmY4Yjc3MTI4Zjg0ZGU3NTJkMWJlZmUxYjZiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNUHJpdmF0ZUNsZWFy
S2V5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kv
TGVnYWN5Q0RNUHJpdmF0ZUNsZWFyS2V5LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBib29sIHN1cHBvcnRzS2V5U3lzdGVtQW5kTWltZVR5cGUoY29uc3QgU3RyaW5nJiBr
ZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwogCiAgICAgYm9vbCBzdXBwb3J0c01J
TUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpIG92ZXJyaWRlOwotICAgIHN0ZDo6dW5pcXVl
X3B0cjxMZWdhY3lDRE1TZXNzaW9uPiBjcmVhdGVTZXNzaW9uKExlZ2FjeUNETVNlc3Npb25DbGll
bnQqKSBvdmVycmlkZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TGVnYWN5Q0RNU2Vzc2lvbj4gY3Jl
YXRlU2Vzc2lvbihMZWdhY3lDRE1TZXNzaW9uQ2xpZW50Jikgb3ZlcnJpZGU7CiAKIHByb3RlY3Rl
ZDoKICAgICBMZWdhY3lDRE0qIG1fY2RtOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNUHJpdmF0ZU1lZGlhUGxheWVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNE
TVByaXZhdGVNZWRpYVBsYXllci5jcHAKaW5kZXggMzUyZWZhODkwMzIwMzkyNzkxYmEzZGQ3MzRk
N2ViZTRmMzJmZGIxOC4uN2YyZTcxNWZjZjNhMTQ1MDRhYzY5YzBkNzgxY2NmNzgyZDYyZmIzMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kv
TGVnYWN5Q0RNUHJpdmF0ZU1lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1Qcml2YXRlTWVkaWFQbGF5ZXIuY3Bw
CkBAIC01NCw3ICs1NCw3IEBAIGJvb2wgQ0RNUHJpdmF0ZU1lZGlhUGxheWVyOjpzdXBwb3J0c01J
TUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpz
dXBwb3J0c0tleVN5c3RlbShtX2NkbS0+a2V5U3lzdGVtKCksIG1pbWVUeXBlKTsKIH0KIAotc3Rk
Ojp1bmlxdWVfcHRyPExlZ2FjeUNETVNlc3Npb24+IENETVByaXZhdGVNZWRpYVBsYXllcjo6Y3Jl
YXRlU2Vzc2lvbihMZWdhY3lDRE1TZXNzaW9uQ2xpZW50KiBjbGllbnQpCitzdGQ6OnVuaXF1ZV9w
dHI8TGVnYWN5Q0RNU2Vzc2lvbj4gQ0RNUHJpdmF0ZU1lZGlhUGxheWVyOjpjcmVhdGVTZXNzaW9u
KExlZ2FjeUNETVNlc3Npb25DbGllbnQmIGNsaWVudCkKIHsKICAgICBhdXRvIG1lZGlhUGxheWVy
ID0gbV9jZG0tPm1lZGlhUGxheWVyKCk7CiAgICAgaWYgKCFtZWRpYVBsYXllcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNE
TVByaXZhdGVNZWRpYVBsYXllci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9sZWdhY3kvTGVnYWN5Q0RNUHJpdmF0ZU1lZGlhUGxheWVyLmgKaW5kZXggNjYwMmViZmU5
MDQ0NWM1NTkzYzZlNWZmOGYxYTViMmUyZGQ5MmMxNy4uNWRjM2MxMTBiMDc0ZTc3NTIzZjJhMGI5
NjY4ODRjYzQ3ZGFhMzk1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNUHJpdmF0ZU1lZGlhUGxheWVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNUHJpdmF0
ZU1lZGlhUGxheWVyLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkNE
TVByaXZhdGVNZWRpYVBsYXllcigpID0gZGVmYXVsdDsKIAogICAgIGJvb2wgc3VwcG9ydHNNSU1F
VHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKSBvdmVycmlkZTsKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8TGVnYWN5Q0RNU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbihMZWdhY3lDRE1TZXNzaW9uQ2xpZW50
Kikgb3ZlcnJpZGU7CisgICAgc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNETVNlc3Npb24+IGNyZWF0
ZVNlc3Npb24oTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCYpIG92ZXJyaWRlOwogCiAgICAgTGVnYWN5
Q0RNKiBjZG0oKSBjb25zdCB7IHJldHVybiBtX2NkbTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1TZXNzaW9uQ2xl
YXJLZXkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kv
TGVnYWN5Q0RNU2Vzc2lvbkNsZWFyS2V5LmNwcAppbmRleCAzYzljZTY1ODY2MWI0ZWIzYjQ3ZTI5
ZjM5Mzg1MzVjZjk3NjE3MzdkLi40ZmY2YWRmNGVjZmQ3ZGViYWVhYjA1MWQ1OTYwYjRiOTU5MmZj
NzhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xl
Z2FjeS9MZWdhY3lDRE1TZXNzaW9uQ2xlYXJLZXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVNlc3Npb25DbGVhcktleS5jcHAK
QEAgLTQ5LDcgKzQ5LDcgQEAgc3RhdGljIFZNJiBjbGVhcktleVZNKCkKICAgICByZXR1cm4gdm07
CiB9CiAKLUNETVNlc3Npb25DbGVhcktleTo6Q0RNU2Vzc2lvbkNsZWFyS2V5KExlZ2FjeUNETVNl
c3Npb25DbGllbnQqIGNsaWVudCkKK0NETVNlc3Npb25DbGVhcktleTo6Q0RNU2Vzc2lvbkNsZWFy
S2V5KExlZ2FjeUNETVNlc3Npb25DbGllbnQmIGNsaWVudCkKICAgICA6IG1fY2xpZW50KGNsaWVu
dCkKICAgICAsIG1fc2Vzc2lvbklkKGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSkKIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xl
Z2FjeUNETVNlc3Npb25DbGVhcktleS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNU2Vzc2lvbkNsZWFyS2V5LmgKaW5kZXggZmU1MzQ1OTFh
ZDdkNTYwMGM0MTlmYWM3OTcwNGM0MWQ2NjcxYjQ5MC4uYTliNGQwYTM2M2VkNThiNGMwZDQyYTQz
MmNlOTc4NGU3MWE3MWEyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNU2Vzc2lvbkNsZWFyS2V5LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNU2Vzc2lvbkNs
ZWFyS2V5LmgKQEAgLTM2LDEyICszNiwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBD
RE1TZXNzaW9uQ2xlYXJLZXkgZmluYWwgOiBwdWJsaWMgTGVnYWN5Q0RNU2Vzc2lvbiB7CiAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgQ0RNU2Vzc2lvbkNsZWFyS2V5
KExlZ2FjeUNETVNlc3Npb25DbGllbnQqKTsKKyAgICBDRE1TZXNzaW9uQ2xlYXJLZXkoTGVnYWN5
Q0RNU2Vzc2lvbkNsaWVudCYpOwogICAgIHZpcnR1YWwgfkNETVNlc3Npb25DbGVhcktleSgpOwog
CiAgICAgLy8gQ0RNU2Vzc2lvblByaXZhdGUKICAgICBMZWdhY3lDRE1TZXNzaW9uVHlwZSB0eXBl
KCkgb3ZlcnJpZGUgeyByZXR1cm4gQ0RNU2Vzc2lvblR5cGVDbGVhcktleTsgfQotICAgIHZvaWQg
c2V0Q2xpZW50KExlZ2FjeUNETVNlc3Npb25DbGllbnQqIGNsaWVudCkgb3ZlcnJpZGUgeyBtX2Ns
aWVudCA9IGNsaWVudDsgfQogICAgIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gbV9zZXNzaW9uSWQ7IH0KICAgICBSZWZQdHI8VWludDhBcnJheT4gZ2Vu
ZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFVpbnQ4QXJyYXkqLCBTdHJp
bmcmLCB1bnNpZ25lZCBzaG9ydCYsIHVpbnQzMl90Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCByZWxl
YXNlS2V5cygpIG92ZXJyaWRlOwpAQCAtNDksNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgUmVmUHRy
PEFycmF5QnVmZmVyPiBjYWNoZWRLZXlGb3JLZXlJRChjb25zdCBTdHJpbmcmKSBjb25zdCBvdmVy
cmlkZTsKIAogcHJpdmF0ZToKLSAgICBMZWdhY3lDRE1TZXNzaW9uQ2xpZW50KiBtX2NsaWVudDsK
KyAgICBXZWFrUHRyPExlZ2FjeUNETVNlc3Npb25DbGllbnQ+IG1fY2xpZW50OwogICAgIFJlZlB0
cjxVaW50OEFycmF5PiBtX2luaXREYXRhOwogICAgIEhhc2hNYXA8U3RyaW5nLCBWZWN0b3I8dWlu
dDhfdD4+IG1fY2FjaGVkS2V5czsKICAgICBTdHJpbmcgbV9zZXNzaW9uSWQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRp
YUtleVNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9s
ZWdhY3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9uLmNwcAppbmRleCA5Yzk1ZDllYTEzZDJkOTFlNTVi
ODQyNmE1ODcxZTQyYTBjZmRmOWNiLi4wOTZjZTk2MzhhNzQ2NGQ0MDJiYWQ1ZDM2NzllNjk2MzMy
MmU0MDg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L2xlZ2FjeS9XZWJLaXRNZWRpYUtleVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5U2Vzc2lvbi5jcHAKQEAg
LTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkV2ZW50TG9v
cC5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5j
bHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luRGF0YS5oIgogI2luY2x1ZGUg
IlNldHRpbmdzLmgiCkBAIC00MCwzOCArNDEsNDMgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9VaW50OEFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3
dGYvSXNvTWFsbG9jSW5saW5lcy5oPgorI2luY2x1ZGUgPHd0Zi9Mb2dnZXJIZWxwZXIuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV2ViS2l0
TWVkaWFLZXlTZXNzaW9uKTsKIAotUmVmPFdlYktpdE1lZGlhS2V5U2Vzc2lvbj4gV2ViS2l0TWVk
aWFLZXlTZXNzaW9uOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgV2Vi
S2l0TWVkaWFLZXlzJiBrZXlzLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSkKK1JlZjxXZWJLaXRN
ZWRpYUtleVNlc3Npb24+IFdlYktpdE1lZGlhS2V5U2Vzc2lvbjo6Y3JlYXRlKERvY3VtZW50JiBk
b2N1bWVudCwgV2ViS2l0TWVkaWFLZXlzJiBrZXlzLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSkK
IHsKLSAgICBhdXRvIHNlc3Npb24gPSBhZG9wdFJlZigqbmV3IFdlYktpdE1lZGlhS2V5U2Vzc2lv
bihjb250ZXh0LCBrZXlzLCBrZXlTeXN0ZW0pKTsKKyAgICBhdXRvIHNlc3Npb24gPSBhZG9wdFJl
ZigqbmV3IFdlYktpdE1lZGlhS2V5U2Vzc2lvbihkb2N1bWVudCwga2V5cywga2V5U3lzdGVtKSk7
CiAgICAgc2Vzc2lvbi0+c3VzcGVuZElmTmVlZGVkKCk7CiAgICAgcmV0dXJuIHNlc3Npb247CiB9
CiAKLVdlYktpdE1lZGlhS2V5U2Vzc2lvbjo6V2ViS2l0TWVkaWFLZXlTZXNzaW9uKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFdlYktpdE1lZGlhS2V5cyYga2V5cywgY29uc3QgU3Ry
aW5nJiBrZXlTeXN0ZW0pCi0gICAgOiBBY3RpdmVET01PYmplY3QoJmNvbnRleHQpCitXZWJLaXRN
ZWRpYUtleVNlc3Npb246OldlYktpdE1lZGlhS2V5U2Vzc2lvbihEb2N1bWVudCYgZG9jdW1lbnQs
IFdlYktpdE1lZGlhS2V5cyYga2V5cywgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pCisgICAgOiBB
Y3RpdmVET01PYmplY3QoJmRvY3VtZW50KQorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAg
ICwgbV9sb2dnZXIoZG9jdW1lbnQubG9nZ2VyKCkpCisgICAgLCBtX2xvZ0lkZW50aWZpZXIoTG9n
Z2VySGVscGVyOjp1bmlxdWVMb2dJZGVudGlmaWVyKCkpCisjZW5kaWYKICAgICAsIG1fa2V5cygm
a2V5cykKICAgICAsIG1fa2V5U3lzdGVtKGtleVN5c3RlbSkKICAgICAsIG1fc2Vzc2lvbihrZXlz
LmNkbSgpLmNyZWF0ZVNlc3Npb24oKnRoaXMpKQogICAgICwgbV9rZXlSZXF1ZXN0VGltZXIoKnRo
aXMsICZXZWJLaXRNZWRpYUtleVNlc3Npb246OmtleVJlcXVlc3RUaW1lckZpcmVkKQogICAgICwg
bV9hZGRLZXlUaW1lcigqdGhpcywgJldlYktpdE1lZGlhS2V5U2Vzc2lvbjo6YWRkS2V5VGltZXJG
aXJlZCkKIHsKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOwogICAgIGlmIChtX3Nlc3Np
b24pCiAgICAgICAgIG1fc2Vzc2lvbklkID0gbV9zZXNzaW9uLT5zZXNzaW9uSWQoKTsKIH0KIAog
V2ViS2l0TWVkaWFLZXlTZXNzaW9uOjp+V2ViS2l0TWVkaWFLZXlTZXNzaW9uKCkKIHsKLSAgICBp
ZiAobV9zZXNzaW9uKQotICAgICAgICBtX3Nlc3Npb24tPnNldENsaWVudChudWxscHRyKTsKKyAg
ICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOwogfQotCiB2b2lkIFdlYktpdE1lZGlhS2V5U2Vz
c2lvbjo6Y2xvc2UoKQogeworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CiAgICAgaWYg
KG1fc2Vzc2lvbikgewogICAgICAgICBtX3Nlc3Npb24tPnJlbGVhc2VLZXlzKCk7CiAgICAgICAg
IG1fc2Vzc2lvbiA9IG51bGxwdHI7CkBAIC04NSw2ICs5MSw3IEBAIFJlZlB0cjxBcnJheUJ1ZmZl
cj4gV2ViS2l0TWVkaWFLZXlTZXNzaW9uOjpjYWNoZWRLZXlGb3JLZXlJZChjb25zdCBTdHJpbmcm
IGtleUlkCiAKIHZvaWQgV2ViS2l0TWVkaWFLZXlTZXNzaW9uOjpnZW5lcmF0ZUtleVJlcXVlc3Qo
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgUmVmPFVpbnQ4QXJyYXk+JiYgaW5pdERhdGEpCiB7Cisg
ICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAibWltZVR5cGU6ICIsIG1pbWVUeXBlKTsKICAg
ICBtX3BlbmRpbmdLZXlSZXF1ZXN0cy5hcHBlbmQoeyBtaW1lVHlwZSwgV1RGTW92ZShpbml0RGF0
YSkgfSk7CiAgICAgbV9rZXlSZXF1ZXN0VGltZXIuc3RhcnRPbmVTaG90KDBfcyk7CiB9CkBAIC0x
MzgsOSArMTQ1LDEyIEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFdlYktpdE1lZGlhS2V5U2Vzc2lvbjo6
dXBkYXRlKFJlZjxVaW50OEFycmF5PiYmIGtleSkKICAgICAvLyBUaGUgYWRkS2V5KGtleSkgbWV0
aG9kIG11c3QgcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6CiAgICAgLy8gMS4gSWYgdGhlIGZpcnN0
IG9yIHNlY29uZCBhcmd1bWVudCBbc2ljXSBpcyBhbiBlbXB0eSBhcnJheSwgdGhyb3cgYW4gSW52
YWxpZEFjY2Vzc0Vycm9yLgogICAgIC8vIE5PVEU6IHRoZSByZWZlcmVuY2UgdG8gYSAic2Vjb25k
IGFyZ3VtZW50IiBpcyBhIHNwZWMgYnVnLgotICAgIGlmICgha2V5LT5sZW5ndGgoKSkKKyAgICBp
ZiAoIWtleS0+bGVuZ3RoKCkpIHsKKyAgICAgICAgRVJST1JfTE9HKExPR0lERU5USUZJRVIsICJl
cnJvcjogZW1wdHkga2V5Iik7CiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkQWNj
ZXNzRXJyb3IgfTsKKyAgICB9CiAKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOwogICAg
IC8vIDIuIFNjaGVkdWxlIGEgdGFzayB0byBoYW5kbGUgdGhlIGNhbGwsIHByb3ZpZGluZyBrZXku
CiAgICAgbV9wZW5kaW5nS2V5cy5hcHBlbmQoV1RGTW92ZShrZXkpKTsKICAgICBtX2FkZEtleVRp
bWVyLnN0YXJ0T25lU2hvdCgwX3MpOwpAQCAtMjA0LDYgKzIxNCw3IEBAIHZvaWQgV2ViS2l0TWVk
aWFLZXlTZXNzaW9uOjphZGRLZXlUaW1lckZpcmVkKCkKIAogdm9pZCBXZWJLaXRNZWRpYUtleVNl
c3Npb246OnNlbmRNZXNzYWdlKFVpbnQ4QXJyYXkqIG1lc3NhZ2UsIFN0cmluZyBkZXN0aW5hdGlv
blVSTCkKIHsKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOwogICAgIGF1dG8gZXZlbnQg
PSBXZWJLaXRNZWRpYUtleU1lc3NhZ2VFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS53ZWJraXRr
ZXltZXNzYWdlRXZlbnQsIG1lc3NhZ2UsIGRlc3RpbmF0aW9uVVJMKTsKICAgICBldmVudC0+c2V0
VGFyZ2V0KHRoaXMpOwogICAgIHF1ZXVlVGFza1RvRGlzcGF0Y2hFdmVudCgqdGhpcywgVGFza1Nv
dXJjZTo6TmV0d29ya2luZywgV1RGTW92ZShldmVudCkpOwpAQCAtMjExLDYgKzIyMiw3IEBAIHZv
aWQgV2ViS2l0TWVkaWFLZXlTZXNzaW9uOjpzZW5kTWVzc2FnZShVaW50OEFycmF5KiBtZXNzYWdl
LCBTdHJpbmcgZGVzdGluYXRpb25VCiAKIHZvaWQgV2ViS2l0TWVkaWFLZXlTZXNzaW9uOjpzZW5k
RXJyb3IoTWVkaWFLZXlFcnJvckNvZGUgZXJyb3JDb2RlLCB1aW50MzJfdCBzeXN0ZW1Db2RlKQog
eworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgImVycm9yQ29kZTogIiwgKHVuc2lnbmVk
KWVycm9yQ29kZSwgIiwgc3lzdGVtQ29kZTogIiwgc3lzdGVtQ29kZSk7CiAgICAgbV9lcnJvciA9
IFdlYktpdE1lZGlhS2V5RXJyb3I6OmNyZWF0ZShlcnJvckNvZGUsIHN5c3RlbUNvZGUpOwogCiAg
ICAgYXV0byBrZXllcnJvckV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkud2Via2l0
a2V5ZXJyb3JFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6
Ok5vKTsKQEAgLTI1MCw2ICsyNjIsMTMgQEAgY29uc3QgY2hhciogV2ViS2l0TWVkaWFLZXlTZXNz
aW9uOjphY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QKICAgICByZXR1cm4gIldlYktpdE1lZGlh
S2V5U2Vzc2lvbiI7CiB9CiAKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKK1dURkxvZ0NoYW5u
ZWwmIFdlYktpdE1lZGlhS2V5U2Vzc2lvbjo6bG9nQ2hhbm5lbCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIExvZ0VNRTsKK30KKyNlbmRpZgorCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlTZXNz
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJL
aXRNZWRpYUtleVNlc3Npb24uaAppbmRleCBmZjNmNmJmN2I4YmIzYWZkOTliZTY2MTBkMGRhNmM0
Y2Q4OTllMDk1Li40ZTc5MmY2M2Y2MWU0YzQyZGM4YTQyYWMyMTRiZGFiNzQwMDYyZWYyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJL
aXRNZWRpYUtleVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleVNlc3Npb24uaApAQCAtNDMsNyArNDMsNyBAQCBj
bGFzcyBXZWJLaXRNZWRpYUtleXM7CiBjbGFzcyBXZWJLaXRNZWRpYUtleVNlc3Npb24gZmluYWwg
OiBwdWJsaWMgUmVmQ291bnRlZDxXZWJLaXRNZWRpYUtleVNlc3Npb24+LCBwdWJsaWMgRXZlbnRU
YXJnZXRXaXRoSW5saW5lRGF0YSwgcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHJpdmF0ZSBMZWdh
Y3lDRE1TZXNzaW9uQ2xpZW50IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFdlYktpdE1l
ZGlhS2V5U2Vzc2lvbik7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJLaXRNZWRpYUtleVNl
c3Npb24+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgV2ViS2l0TWVkaWFLZXlzJiwg
Y29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pOworICAgIHN0YXRpYyBSZWY8V2ViS2l0TWVkaWFLZXlT
ZXNzaW9uPiBjcmVhdGUoRG9jdW1lbnQmLCBXZWJLaXRNZWRpYUtleXMmLCBjb25zdCBTdHJpbmcm
IGtleVN5c3RlbSk7CiAgICAgfldlYktpdE1lZGlhS2V5U2Vzc2lvbigpOwogCiAgICAgV2ViS2l0
TWVkaWFLZXlFcnJvciogZXJyb3IoKSB7IHJldHVybiBtX2Vycm9yLmdldCgpOyB9CkBAIC02Myw3
ICs2Myw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBSZWZDb3VudGVkOjpkZXJlZjsKIAogcHJpdmF0
ZToKLSAgICBXZWJLaXRNZWRpYUtleVNlc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFdl
YktpdE1lZGlhS2V5cyYsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKTsKKyAgICBXZWJLaXRNZWRp
YUtleVNlc3Npb24oRG9jdW1lbnQmLCBXZWJLaXRNZWRpYUtleXMmLCBjb25zdCBTdHJpbmcmIGtl
eVN5c3RlbSk7CiAgICAgdm9pZCBrZXlSZXF1ZXN0VGltZXJGaXJlZCgpOwogICAgIHZvaWQgYWRk
S2V5VGltZXJGaXJlZCgpOwogCkBAIC04Miw2ICs4MiwxNiBAQCBwcml2YXRlOgogICAgIEV2ZW50
VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gV2ViS2l0TWVkaWFLZXlTZXNzaW9uRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9CiAgICAg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9
CiAKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBjb25zdCBMb2dnZXImIGxvZ2dlcigp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fbG9nZ2VyOyB9CisgICAgY29uc3Qgdm9pZCogbG9nSWRl
bnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fbG9nSWRlbnRpZmllcjsgfQorICAgIGNv
bnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJXZWJLaXRNZWRpYUtleVNl
c3Npb24iOyB9CisgICAgV1RGTG9nQ2hhbm5lbCYgbG9nQ2hhbm5lbCgpIGNvbnN0OworCisgICAg
UmVmPExvZ2dlcj4gbV9sb2dnZXI7CisgICAgY29uc3Qgdm9pZCogbV9sb2dJZGVudGlmaWVyOwor
I2VuZGlmCisKICAgICBXZWJLaXRNZWRpYUtleXMqIG1fa2V5czsKICAgICBTdHJpbmcgbV9rZXlT
eXN0ZW07CiAgICAgU3RyaW5nIG1fc2Vzc2lvbklkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5
cy5jcHAKaW5kZXggMTgxYTgzOTQyYjA0MGM3MmMyOWRjZWFmMzRhZjM2ZjQzN2RlZTY1Zi4uNzBk
YjExYzQ3NGU4MDE3YWFiNzRiYjk2NTE0YzllYzM1NDI0OTIxOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJL
aXRNZWRpYUtleXMuY3BwCkBAIC03NCw3ICs3NCw3IEBAIFdlYktpdE1lZGlhS2V5czo6fldlYktp
dE1lZGlhS2V5cygpCiAgICAgfQogfQogCi1FeGNlcHRpb25PcjxSZWY8V2ViS2l0TWVkaWFLZXlT
ZXNzaW9uPj4gV2ViS2l0TWVkaWFLZXlzOjpjcmVhdGVTZXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFVpbnQ4QXJyYXk+JiYgaW5p
dERhdGEpCitFeGNlcHRpb25PcjxSZWY8V2ViS2l0TWVkaWFLZXlTZXNzaW9uPj4gV2ViS2l0TWVk
aWFLZXlzOjpjcmVhdGVTZXNzaW9uKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiB0
eXBlLCBSZWY8VWludDhBcnJheT4mJiBpbml0RGF0YSkKIHsKICAgICAvLyBGcm9tIDxodHRwOi8v
d3d3LnczLm9yZy9UUi8yMDE0L1dELWVuY3J5cHRlZC1tZWRpYS0yMDE0MDIxOC8jZG9tLWNyZWF0
ZXNlc3Npb24+OgogICAgIC8vIFRoZSBjcmVhdGVTZXNzaW9uKHR5cGUsIGluaXREYXRhKSBtZXRo
b2QgbXVzdCBydW4gdGhlIGZvbGxvd2luZyBzdGVwczoKQEAgLTk2LDcgKzk2LDcgQEAgRXhjZXB0
aW9uT3I8UmVmPFdlYktpdE1lZGlhS2V5U2Vzc2lvbj4+IFdlYktpdE1lZGlhS2V5czo6Y3JlYXRl
U2Vzc2lvbihTY3JpcHRFeGUKICAgICAvLyA0LiBDcmVhdGUgYSBuZXcgTWVkaWFLZXlTZXNzaW9u
IG9iamVjdC4KICAgICAvLyA0LjEgTGV0IHRoZSBrZXlTeXN0ZW0gYXR0cmlidXRlIGJlIGtleVN5
c3RlbS4KICAgICAvLyA0LjIgTGV0IHRoZSBzZXNzaW9uSWQgYXR0cmlidXRlIGJlIGEgdW5pcXVl
IFNlc3Npb24gSUQgc3RyaW5nLiBJdCBtYXkgYmUgZ2VuZXJhdGVkIGJ5IGNkbS4KLSAgICBhdXRv
IHNlc3Npb24gPSBXZWJLaXRNZWRpYUtleVNlc3Npb246OmNyZWF0ZShjb250ZXh0LCAqdGhpcywg
bV9rZXlTeXN0ZW0pOworICAgIGF1dG8gc2Vzc2lvbiA9IFdlYktpdE1lZGlhS2V5U2Vzc2lvbjo6
Y3JlYXRlKGRvY3VtZW50LCAqdGhpcywgbV9rZXlTeXN0ZW0pOwogCiAgICAgbV9zZXNzaW9ucy5h
cHBlbmQoc2Vzc2lvbi5jb3B5UmVmKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleXMuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5cy5oCmlu
ZGV4IDJkMGMxZDAzZjU0Mjg5NzhiMTgwNWM2NGVkOTAxNDliODcwYzM2YmQuLjQ0NjkzNzQ4NmEy
MDljNGY4MWQ2ZWE0MjQwYTRkY2Q3OGU3MWExYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5cy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5
cy5oCkBAIC0zNSw4ICszNSw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgRG9j
dW1lbnQ7CiBjbGFzcyBIVE1MTWVkaWFFbGVtZW50OwotY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDsKIGNsYXNzIFdlYktpdE1lZGlhS2V5U2Vzc2lvbjsKIAogY2xhc3MgV2ViS2l0TWVkaWFL
ZXlzIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViS2l0TWVkaWFLZXlzPiwgcHJpdmF0ZSBM
ZWdhY3lDRE1DbGllbnQgewpAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEV4
Y2VwdGlvbk9yPFJlZjxXZWJLaXRNZWRpYUtleXM+PiBjcmVhdGUoY29uc3QgU3RyaW5nJiBrZXlT
eXN0ZW0pOwogICAgIHZpcnR1YWwgfldlYktpdE1lZGlhS2V5cygpOwogCi0gICAgRXhjZXB0aW9u
T3I8UmVmPFdlYktpdE1lZGlhS2V5U2Vzc2lvbj4+IGNyZWF0ZVNlc3Npb24oU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFJlZjxVaW50OEFycmF5PiYmIGlu
aXREYXRhKTsKKyAgICBFeGNlcHRpb25PcjxSZWY8V2ViS2l0TWVkaWFLZXlTZXNzaW9uPj4gY3Jl
YXRlU2Vzc2lvbihEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFJlZjxVaW50OEFy
cmF5PiYmIGluaXREYXRhKTsKICAgICBzdGF0aWMgYm9vbCBpc1R5cGVTdXBwb3J0ZWQoY29uc3Qg
U3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwogICAgIGNvbnN0IFN0
cmluZyYga2V5U3lzdGVtKCkgY29uc3QgeyByZXR1cm4gbV9rZXlTeXN0ZW07IH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0
TWVkaWFLZXlzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVn
YWN5L1dlYktpdE1lZGlhS2V5cy5pZGwKaW5kZXggYmI2NmZkZTE0MzI0NzY2ZGEwZTc2YTg3Nzk3
OWRlNzE2YjdjZDI0OS4uMTUxNzgzODRmN2RmM2UzOTYxNDJlYjVmNzRmZTRmMjFlNGI2YjBlYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kv
V2ViS2l0TWVkaWFLZXlzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleXMuaWRsCkBAIC0zMCw3ICszMCw3IEBACiBdIGlu
dGVyZmFjZSBXZWJLaXRNZWRpYUtleXMgewogICAgIGNvbnN0cnVjdG9yKERPTVN0cmluZyBrZXlT
eXN0ZW0pOwogCi0gICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIFdlYktpdE1l
ZGlhS2V5U2Vzc2lvbiBjcmVhdGVTZXNzaW9uKERPTVN0cmluZyB0eXBlLCBVaW50OEFycmF5IGlu
aXREYXRhKTsKKyAgICBbQ2FsbFdpdGg9RG9jdW1lbnRdIFdlYktpdE1lZGlhS2V5U2Vzc2lvbiBj
cmVhdGVTZXNzaW9uKERPTVN0cmluZyB0eXBlLCBVaW50OEFycmF5IGluaXREYXRhKTsKICAgICBz
dGF0aWMgYm9vbGVhbiBpc1R5cGVTdXBwb3J0ZWQoRE9NU3RyaW5nIGtleVN5c3RlbSwgb3B0aW9u
YWwgRE9NU3RyaW5nIHR5cGUpOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcga2V5
U3lzdGVtOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0xlZ2FjeUNETVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xl
Z2FjeUNETVNlc3Npb24uaAppbmRleCBmODQ0ZjRmOTg2OWFkMDczMjZlMmJhYWQyNmVhZjlkZTdh
NTlmNWJiLi5iOTE3MWJhMmU2NmFjMjU5YjYzM2EyZDFhMDZhNjM5ZjQwMWM5MWEyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MZWdhY3lDRE1TZXNzaW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGVnYWN5Q0RNU2Vzc2lvbi5o
CkBAIC0yOSwxMCArMjksMTEgQEAKIAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0ZvcndhcmQu
aD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCB7Citj
bGFzcyBMZWdhY3lDRE1TZXNzaW9uQ2xpZW50IDogcHVibGljIENhbk1ha2VXZWFrUHRyPExlZ2Fj
eUNETVNlc3Npb25DbGllbnQ+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIH5MZWdhY3lDRE1TZXNzaW9uQ2xpZW50KCkgPSBkZWZhdWx0OwpAQCAt
NTAsNiArNTEsMTEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZW5kRXJyb3IoTWVkaWFL
ZXlFcnJvckNvZGUsIHVpbnQzMl90IHN5c3RlbUNvZGUpID0gMDsKIAogICAgIHZpcnR1YWwgU3Ry
aW5nIG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdCA9IDA7CisKKyNpZiAhUkVMRUFT
RV9MT0dfRElTQUJMRUQKKyAgICB2aXJ0dWFsIGNvbnN0IExvZ2dlciYgbG9nZ2VyKCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgY29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcigpIGNvbnN0ID0gMDsK
KyNlbmRpZgogfTsKIAogZW51bSBMZWdhY3lDRE1TZXNzaW9uVHlwZSB7CkBAIC02Niw3ICs3Miw2
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5MZWdhY3lDRE1TZXNzaW9uKCkgPSBkZWZhdWx0Owog
CiAgICAgdmlydHVhbCBMZWdhY3lDRE1TZXNzaW9uVHlwZSB0eXBlKCkgeyByZXR1cm4gQ0RNU2Vz
c2lvblR5cGVVbmtub3duOyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldENsaWVudChMZWdhY3lDRE1T
ZXNzaW9uQ2xpZW50KikgPSAwOwogICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQo
KSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBSZWZQdHI8VWludDhBcnJheT4gZ2VuZXJhdGVLZXlS
ZXF1ZXN0KGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFVpbnQ4QXJyYXkqIGluaXREYXRhLCBTdHJp
bmcmIGRlc3RpbmF0aW9uVVJMLCB1bnNpZ25lZCBzaG9ydCYgZXJyb3JDb2RlLCB1aW50MzJfdCYg
c3lzdGVtQ29kZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZWxlYXNlS2V5cygpID0gMDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAppbmRl
eCA3NWQ0OTUzNGY0ZDFiNzlkYjZkZTcwZGJkODMwNmE3NDI3Y2Q0MjBlLi5mNTY2NTA5NmYyNWRi
NTc1MTcyYjNhNjBhZWM3MjgxZWQ0YjQwNmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCkBAIC02NjgsNyArNjY4LDcgQEAgdm9pZCBN
ZWRpYVBsYXllcjo6c2V0QnVmZmVyaW5nUG9saWN5KEJ1ZmZlcmluZ1BvbGljeSBwb2xpY3kpCiAK
ICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKIAotc3RkOjp1bmlxdWVfcHRyPExl
Z2FjeUNETVNlc3Npb24+IE1lZGlhUGxheWVyOjpjcmVhdGVTZXNzaW9uKGNvbnN0IFN0cmluZyYg
a2V5U3lzdGVtLCBMZWdhY3lDRE1TZXNzaW9uQ2xpZW50KiBjbGllbnQpCitzdGQ6OnVuaXF1ZV9w
dHI8TGVnYWN5Q0RNU2Vzc2lvbj4gTWVkaWFQbGF5ZXI6OmNyZWF0ZVNlc3Npb24oY29uc3QgU3Ry
aW5nJiBrZXlTeXN0ZW0sIExlZ2FjeUNETVNlc3Npb25DbGllbnQmIGNsaWVudCkKIHsKICAgICBy
ZXR1cm4gbV9wcml2YXRlLT5jcmVhdGVTZXNzaW9uKGtleVN5c3RlbSwgY2xpZW50KTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCmluZGV4IDAw
NDViNTRmNTA0ODIwMzNkNGY4ZjM0YzZjZDY1ZTNkOTA5YTczMTAuLmY1NDljNzkwOGRkOGUxYWUz
ZDQ5YThmNTUzNDVjMjYxZDcyYWYyZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXIuaApAQCAtMzgwLDcgKzM4MCw3IEBAIHB1YmxpYzoKICAgICAv
LyBUaGlzIGlzIGRpZmZlcmVudCBmcm9tIHRoZSBhc3luY2hyb25vdXMgTWVkaWFLZXlFcnJvci4K
ICAgICBlbnVtIE1lZGlhS2V5RXhjZXB0aW9uIHsgTm9FcnJvciwgSW52YWxpZFBsYXllclN0YXRl
LCBLZXlTeXN0ZW1Ob3RTdXBwb3J0ZWQgfTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxMZWdhY3lD
RE1TZXNzaW9uPiBjcmVhdGVTZXNzaW9uKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBMZWdhY3lD
RE1TZXNzaW9uQ2xpZW50Kik7CisgICAgc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNETVNlc3Npb24+
IGNyZWF0ZVNlc3Npb24oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIExlZ2FjeUNETVNlc3Npb25D
bGllbnQmKTsKICAgICB2b2lkIHNldENETShMZWdhY3lDRE0qKTsKICAgICB2b2lkIHNldENETVNl
c3Npb24oTGVnYWN5Q0RNU2Vzc2lvbiopOwogICAgIHZvaWQga2V5QWRkZWQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgK
aW5kZXggY2Y0NjMxMmM1MmE5ODcyYmMwNDVhZDFkNDIyYWY0OGIxMDA4Y2E2Yy4uMTRiYTdkYWQz
NzQwNTBjODFiMWUwMTdjZjMxNWM5ZDM4OTYwZTcwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKQEAgLTI0NSw3ICsy
NDUsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01F
RElBKQotICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNETVNlc3Npb24+IGNyZWF0
ZVNlc3Npb24oY29uc3QgU3RyaW5nJiwgTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCopIHsgcmV0dXJu
IG51bGxwdHI7IH0KKyAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxMZWdhY3lDRE1TZXNzaW9u
PiBjcmVhdGVTZXNzaW9uKGNvbnN0IFN0cmluZyYsIExlZ2FjeUNETVNlc3Npb25DbGllbnQmKSB7
IHJldHVybiBudWxscHRyOyB9CiAgICAgdmlydHVhbCB2b2lkIHNldENETShMZWdhY3lDRE0qKSB7
IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0Q0RNU2Vzc2lvbihMZWdhY3lDRE1TZXNzaW9uKikgeyB9
CiAgICAgdmlydHVhbCB2b2lkIGtleUFkZGVkKCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L0NETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaAppbmRleCAxYjc2M2RkODRhMzhkNzVhYTc1
NDRlNDQ5OTQ3ZmI2Y2ZkYjExZTUyLi5mZmVmZDU5Y2E2ZDdhZGQwY2ZkMTQ2NWFmMzAwNzFhZjUw
YzczYTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIHN1cHBv
cnRzS2V5U3lzdGVtQW5kTWltZVR5cGUoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUpOwogCiAgICAgYm9vbCBzdXBwb3J0c01JTUVUeXBlKGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUpIG92ZXJyaWRlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxMZWdhY3lDRE1TZXNz
aW9uPiBjcmVhdGVTZXNzaW9uKExlZ2FjeUNETVNlc3Npb25DbGllbnQqKSBvdmVycmlkZTsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8TGVnYWN5Q0RNU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbihMZWdhY3lD
RE1TZXNzaW9uQ2xpZW50Jikgb3ZlcnJpZGU7CiAKICAgICBMZWdhY3lDRE0qIGNkbSgpIGNvbnN0
IHsgcmV0dXJuIG1fY2RtOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETVByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakMubW0KaW5kZXggODYwMjVmMmE3YjE4NTc4ZDQ3YzgwODk1MTVkMzFj
YWQ5ZTFjNjFkMS4uMmRhZjhlYWFjOTA4Y2ViYmI5NGRhMzMwNjQ0YTVlNzcxN2IzNjczOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NE
TVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0K
QEAgLTEyNyw3ICsxMjcsNyBAQCBib29sIENETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnN1
cHBvcnRzTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKICAgICByZXR1cm4gTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzdXBwb3J0c1R5cGVBbmRDb2RlY3MocGFy
YW1ldGVycykgIT0gTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQ7CiB9
CiAKLXN0ZDo6dW5pcXVlX3B0cjxMZWdhY3lDRE1TZXNzaW9uPiBDRE1Qcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDOjpjcmVhdGVTZXNzaW9uKExlZ2FjeUNETVNlc3Npb25DbGllbnQqIGNsaWVudCkK
K3N0ZDo6dW5pcXVlX3B0cjxMZWdhY3lDRE1TZXNzaW9uPiBDRE1Qcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDOjpjcmVhdGVTZXNzaW9uKExlZ2FjeUNETVNlc3Npb25DbGllbnQmIGNsaWVudCkKIHsK
ICAgICBTdHJpbmcga2V5U3lzdGVtID0gbV9jZG0tPmtleVN5c3RlbSgpOyAvLyBMb2NhbCBjb3B5
IGZvciBTdHJpbmdWaWV3IHVzYWdlCiAgICAgYXV0byBwYXJhbWV0ZXJzID0gcGFyc2VLZXlTeXN0
ZW0obV9jZG0tPmtleVN5c3RlbSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNz
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9DRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbi5oCmluZGV4IDAyMTAyNjk1ODZhZjFkNWEw
NDJjNjNkYzQ2NGQ5OWEyMGMzYzc1YjAuLjcxOWExMWZlMjI5YmVmMGQ0M2M5YzNlZmQ1ZDkwMjA4
MGU3NmM3ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lv
bkFWQ29udGVudEtleVNlc3Npb24uaApAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBDRE1Qcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDOwogY2xhc3MgQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24g
OiBwdWJsaWMgQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQyB7CiAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24o
VmVjdG9yPGludD4mJiBwcm90b2NvbFZlcnNpb25zLCBpbnQgY2RtVmVyc2lvbiwgQ0RNUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQyYsIExlZ2FjeUNETVNlc3Npb25DbGllbnQqKTsKKyAgICBDRE1T
ZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbihWZWN0b3I8aW50PiYmIHByb3RvY29sVmVyc2lvbnMs
IGludCBjZG1WZXJzaW9uLCBDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDJiwgTGVnYWN5Q0RN
U2Vzc2lvbkNsaWVudCYpOwogICAgIHZpcnR1YWwgfkNETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNz
aW9uKCk7CiAKICAgICBzdGF0aWMgYm9vbCBpc0F2YWlsYWJsZSgpOwpAQCAtNjYsNiArNjYsMTAg
QEAgcHJvdGVjdGVkOgogICAgIGJvb2wgaGFzQ29udGVudEtleVNlc3Npb24oKSBjb25zdCB7IHJl
dHVybiBtX2NvbnRlbnRLZXlTZXNzaW9uOyB9CiAgICAgQVZDb250ZW50S2V5U2Vzc2lvbiogY29u
dGVudEtleVNlc3Npb24oKTsKIAorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIGNvbnN0
IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJDRE1TZXNzaW9uQVZDb250ZW50
S2V5U2Vzc2lvbiI7IH0KKyNlbmRpZgorCiAgICAgUmV0YWluUHRyPEFWQ29udGVudEtleVNlc3Np
b24+IG1fY29udGVudEtleVNlc3Npb247CiAgICAgUmV0YWluUHRyPFdlYkNETVNlc3Npb25BVkNv
bnRlbnRLZXlTZXNzaW9uRGVsZWdhdGU+IG1fY29udGVudEtleVNlc3Npb25EZWxlZ2F0ZTsKICAg
ICBSZXRhaW5QdHI8QVZDb250ZW50S2V5UmVxdWVzdD4gbV9rZXlSZXF1ZXN0OwpAQCAtNzYsNiAr
ODAsMTEgQEAgcHJvdGVjdGVkOgogICAgIGludCBtX2NkbVZlcnNpb247CiAgICAgaW50MzJfdCBt
X3Byb3RlY3RlZFRyYWNrSUQgeyAxIH07CiAgICAgZW51bSB7IE5vcm1hbCwgS2V5UmVsZWFzZSB9
IG1fbW9kZTsKKworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIFJlZjxjb25zdCBMb2dn
ZXI+IG1fbG9nZ2VyOworICAgIGNvbnN0IHZvaWQqIG1fbG9nSWRlbnRpZmllcjsKKyNlbmRpZgog
fTsKIAogaW5saW5lIENETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uKiB0b0NETVNlc3Npb25B
VkNvbnRlbnRLZXlTZXNzaW9uKExlZ2FjeUNETVNlc3Npb24qIHNlc3Npb24pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1T
ZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uLm1t
CmluZGV4IDY1MmEwODUwODc3ZWI3ODBmMzVlNmVmNTE0ZTJhYzMyY2Q3NzkzYWMuLjdlYzU3NzQy
NjEwYzM4NGJlNmRkZGM1ODc0ZmYzOTVlNWI1ZjJlZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRl
bnRLZXlTZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uLm1tCkBAIC0xMDQs
MTMgKzEwNCwxOCBAQCBAZW5kCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ0RNU2Vzc2lvbkFW
Q29udGVudEtleVNlc3Npb246OkNETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uKFZlY3Rvcjxp
bnQ+JiYgcHJvdG9jb2xWZXJzaW9ucywgaW50IGNkbVZlcnNpb24sIENETVByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakMmIGNkbSwgTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCogY2xpZW50KQorQ0RNU2Vz
c2lvbkFWQ29udGVudEtleVNlc3Npb246OkNETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uKFZl
Y3RvcjxpbnQ+JiYgcHJvdG9jb2xWZXJzaW9ucywgaW50IGNkbVZlcnNpb24sIENETVByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakMmIGNkbSwgTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCYgY2xpZW50KQog
ICAgIDogQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQyhjZG0sIGNsaWVudCkKICAgICAsIG1f
Y29udGVudEtleVNlc3Npb25EZWxlZ2F0ZShhZG9wdE5TKFtbV2ViQ0RNU2Vzc2lvbkFWQ29udGVu
dEtleVNlc3Npb25EZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhQYXJlbnQ6dGhpc10pKQogICAgICwg
bV9wcm90b2NvbFZlcnNpb25zKFdURk1vdmUocHJvdG9jb2xWZXJzaW9ucykpCiAgICAgLCBtX2Nk
bVZlcnNpb24oY2RtVmVyc2lvbikKICAgICAsIG1fbW9kZShOb3JtYWwpCisjaWYgIVJFTEVBU0Vf
TE9HX0RJU0FCTEVECisgICAgLCBtX2xvZ2dlcihjbGllbnQubG9nZ2VyKCkpCisgICAgLCBtX2xv
Z0lkZW50aWZpZXIoY2xpZW50LmxvZ0lkZW50aWZpZXIoKSkKKyNlbmRpZgogeworICAgIEFMV0FZ
U19MT0coTE9HSURFTlRJRklFUik7CiB9CiAKIENETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9u
Ojp+Q0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24oKQpAQCAtMTMyLDcgKzEzNyw3IEBAIFJl
ZlB0cjxVaW50OEFycmF5PiBDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6Z2VuZXJhdGVL
ZXlSZXF1ZXN0KGNvbnN0IFN0cmluCiAgICAgVU5VU0VEX1BBUkFNKGRlc3RpbmF0aW9uVVJMKTsK
ICAgICBBU1NFUlQoaW5pdERhdGEpOwogCi0gICAgTE9HKE1lZGlhLCAiQ0RNU2Vzc2lvbkFWQ29u
dGVudEtleVNlc3Npb246OmdlbmVyYXRlS2V5UmVxdWVzdCglcCkiLCB0aGlzKTsKKyAgICBBTFdB
WVNfTE9HKExPR0lERU5USUZJRVIsICJtaW1lVHlwZTogIiwgbWltZVR5cGUpOwogCiAgICAgZXJy
b3JDb2RlID0gTWVkaWFQbGF5ZXI6Ok5vRXJyb3I7CiAgICAgc3lzdGVtQ29kZSA9IDA7CkBAIC0x
NjMsNyArMTY4LDcgQEAgdm9pZCBDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6cmVsZWFz
ZUtleXMoKQogICAgICAgICBmb3IgKGF1dG8mIHNvdXJjZUJ1ZmZlciA6IG1fc291cmNlQnVmZmVy
cykKICAgICAgICAgICAgIHNvdXJjZUJ1ZmZlci0+Zmx1c2goKTsKIAotICAgICAgICBMT0coTWVk
aWEsICJDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6cmVsZWFzZUtleXMoJXApIC0gZXhw
aXJpbmcgc3RyZWFtIHNlc3Npb24iLCB0aGlzKTsKKyAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVO
VElGSUVSLCAiZXhwaXJpbmcgc3RyZWFtIHNlc3Npb24iKTsKICAgICAgICAgW2NvbnRlbnRLZXlT
ZXNzaW9uKCkgZXhwaXJlXTsKIAogICAgICAgICBpZiAoIW1fY2VydGlmaWNhdGUpCkBAIC0xODYs
NyArMTkxLDcgQEAgdm9pZCBDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6cmVsZWFzZUtl
eXMoKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICBpZiAobV9zZXNz
aW9uSWQgPT0gU3RyaW5nKHBsYXliYWNrU2Vzc2lvbklkVmFsdWUpKSB7Ci0gICAgICAgICAgICAg
ICAgTE9HKE1lZGlhLCAiQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb246OnJlbGVhc2VLZXlz
KCVwKSAtIGZvdW5kIHNlc3Npb24sIHNlbmRpbmcgZXhwaXJhdGlvbiBtZXNzYWdlIik7CisgICAg
ICAgICAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAiZm91bmQgc2Vzc2lvbiwgc2Vu
ZGluZyBleHBpcmF0aW9uIG1lc3NhZ2UiKTsKICAgICAgICAgICAgICAgICBtX2V4cGlyZWRTZXNz
aW9uID0gZXhwaXJlZFNlc3Npb25EYXRhOwogICAgICAgICAgICAgICAgIG1fY2xpZW50LT5zZW5k
TWVzc2FnZShVaW50OEFycmF5OjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KFtt
X2V4cGlyZWRTZXNzaW9uIGJ5dGVzXSksIFttX2V4cGlyZWRTZXNzaW9uIGxlbmd0aF0pLnB0cigp
LCBlbXB0eVN0cmluZygpKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTIxNiw3ICsyMjEs
NyBAQCBib29sIENETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uOjp1cGRhdGUoVWludDhBcnJh
eSoga2V5LCBSZWZQdHI8VWludDhBcnJheT4mCiAgICAgVU5VU0VEX1BBUkFNKG5leHRNZXNzYWdl
KTsKIAogICAgIGlmIChpc0VxdWFsKGtleSwgImFja25vd2xlZGdlZCIpKSB7Ci0gICAgICAgIExP
RyhNZWRpYSwgIkNETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uOjp1cGRhdGUoJXApIC0gYWNr
bm93bGVkaW5nIHNlY3VyZSBzdG9wIG1lc3NhZ2UiLCB0aGlzKTsKKyAgICAgICAgQUxXQVlTX0xP
RyhMT0dJREVOVElGSUVSLCAiYWNrbm93bGVkaW5nIHNlY3VyZSBzdG9wIG1lc3NhZ2UiKTsKIAog
ICAgICAgICBTdHJpbmcgc3RvcmFnZVBhdGggPSB0aGlzLT5zdG9yYWdlUGF0aCgpOwogICAgICAg
ICBpZiAoIW1fZXhwaXJlZFNlc3Npb24gfHwgc3RvcmFnZVBhdGguaXNFbXB0eSgpKSB7CkBAIC0y
MzksNyArMjQ0LDcgQEAgYm9vbCBDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6dXBkYXRl
KFVpbnQ4QXJyYXkqIGtleSwgUmVmUHRyPFVpbnQ4QXJyYXk+JgogCiAgICAgYm9vbCBzaG91bGRH
ZW5lcmF0ZUtleVJlcXVlc3QgPSAhbV9jZXJ0aWZpY2F0ZSB8fCBpc0VxdWFsKGtleSwgInJlbmV3
Iik7CiAgICAgaWYgKCFtX2NlcnRpZmljYXRlKSB7Ci0gICAgICAgIExPRyhNZWRpYSwgIkNETVNl
c3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uOjp1cGRhdGUoJXApIC0gY2VydGlmaWNhdGUgZGF0YSIs
IHRoaXMpOworICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJjZXJ0aWZpY2F0ZSBk
YXRhIik7CiAKICAgICAgICAgbV9jZXJ0aWZpY2F0ZSA9IGtleTsKICAgICB9CkBAIC0yOTYsMTQg
KzMwMSwxNiBAQCBib29sIENETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uOjp1cGRhdGUoVWlu
dDhBcnJheSoga2V5LCBSZWZQdHI8VWludDhBcnJheT4mCiAgICAgICAgIGlmIChlcnJvcikgewog
ICAgICAgICAgICAgZXJyb3JDb2RlID0gTGVnYWN5Q0RNOjpEb21haW5FcnJvcjsKICAgICAgICAg
ICAgIHN5c3RlbUNvZGUgPSBtZWRpYUtleUVycm9yU3lzdGVtQ29kZShlcnJvcik7CisgICAgICAg
ICAgICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwgImVycm9yOiAiLCBTdHJpbmcoZXJyb3IubG9j
YWxpemVkRGVzY3JpcHRpb24pKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
fQogCisgICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgImdlbmVyYXRlZCBrZXkgcmVx
dWVzdCIpOwogICAgICAgICBuZXh0TWVzc2FnZSA9IFVpbnQ4QXJyYXk6OnRyeUNyZWF0ZShzdGF0
aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oW3JlcXVlc3REYXRhIGJ5dGVzXSksIFtyZXF1ZXN0RGF0
YSBsZW5ndGhdKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIExPRyhNZWRp
YSwgIkNETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uOjp1cGRhdGUoJXApIC0ga2V5IGRhdGEi
LCB0aGlzKTsKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJwcm9jZXNzaW5nIGtleSBy
ZXNwb25zZSIpOwogICAgIGVycm9yQ29kZSA9IE1lZGlhUGxheWVyOjpOb0Vycm9yOwogICAgIHN5
c3RlbUNvZGUgPSAwOwogICAgIFJldGFpblB0cjxOU0RhdGE+IGtleURhdGEgPSBhZG9wdE5TKFtb
TlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzOmtleS0+ZGF0YSgpIGxlbmd0aDprZXktPmxlbmd0
aCgpXSk7CkBAIC0zMjMsNiArMzMwLDcgQEAgUmVmUHRyPEFycmF5QnVmZmVyPiBDRE1TZXNzaW9u
QVZDb250ZW50S2V5U2Vzc2lvbjo6Y2FjaGVkS2V5Rm9yS2V5SUQoY29uc3QgU3RyaW4KIAogdm9p
ZCBDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6YWRkUGFyc2VyKEFWU3RyZWFtRGF0YVBh
cnNlciogcGFyc2VyKQogeworICAgIElORk9fTE9HKExPR0lERU5USUZJRVIpOwogICAgIGlmIChb
Y29udGVudEtleVNlc3Npb24oKSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGFkZENvbnRl
bnRLZXlSZWNpcGllbnQ6KV0pCiAgICAgICAgIFtjb250ZW50S2V5U2Vzc2lvbigpIGFkZENvbnRl
bnRLZXlSZWNpcGllbnQ6cGFyc2VyXTsKICAgICBlbHNlCkBAIC0zMzEsNiArMzM5LDcgQEAgdm9p
ZCBDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6YWRkUGFyc2VyKEFWU3RyZWFtRGF0YVBh
cnNlciogcGFyc2VyKQogCiB2b2lkIENETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uOjpyZW1v
dmVQYXJzZXIoQVZTdHJlYW1EYXRhUGFyc2VyKiBwYXJzZXIpCiB7CisgICAgSU5GT19MT0coTE9H
SURFTlRJRklFUik7CiAgICAgaWYgKFtjb250ZW50S2V5U2Vzc2lvbigpIHJlc3BvbmRzVG9TZWxl
Y3RvcjpAc2VsZWN0b3IocmVtb3ZlQ29udGVudEtleVJlY2lwaWVudDopXSkKICAgICAgICAgW2Nv
bnRlbnRLZXlTZXNzaW9uKCkgcmVtb3ZlQ29udGVudEtleVJlY2lwaWVudDpwYXJzZXJdOwogICAg
IGVsc2UKQEAgLTM1MSwxNCArMzYwLDE0IEBAIFJlZlB0cjxVaW50OEFycmF5PiBDRE1TZXNzaW9u
QVZDb250ZW50S2V5U2Vzc2lvbjo6Z2VuZXJhdGVLZXlSZWxlYXNlTWVzc2FnZSh1bnNpCiAKICAg
ICBOU0FycmF5KiBleHBpcmVkU2Vzc2lvbnMgPSBbUEFMOjpnZXRBVkNvbnRlbnRLZXlTZXNzaW9u
Q2xhc3MoKSBwZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBvcnRzV2l0aEFwcElkZW50aWZpZXI6Y2Vy
dGlmaWNhdGVEYXRhLmdldCgpIHN0b3JhZ2VEaXJlY3RvcnlBdFVSTDpbTlNVUkwgZmlsZVVSTFdp
dGhQYXRoOnN0b3JhZ2VQYXRoXV07CiAgICAgaWYgKCFbZXhwaXJlZFNlc3Npb25zIGNvdW50XSkg
ewotICAgICAgICBMT0coTWVkaWEsICJDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6Z2Vu
ZXJhdGVLZXlSZWxlYXNlTWVzc2FnZSglcCkgLSBubyBleHBpcmVkIHNlc3Npb25zIGZvdW5kIiwg
dGhpcyk7CisgICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgIm5vIGV4cGlyZWQgc2Vz
c2lvbnMgZm91bmQiKTsKIAogICAgICAgICBlcnJvckNvZGUgPSBNZWRpYVBsYXllcjo6S2V5U3lz
dGVtTm90U3VwcG9ydGVkOwogICAgICAgICBzeXN0ZW1Db2RlID0gJyFtb3InOwogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBMT0coTWVkaWEsICJDRE1TZXNzaW9uQVZDb250
ZW50S2V5U2Vzc2lvbjo6Z2VuZXJhdGVLZXlSZWxlYXNlTWVzc2FnZSglcCkgLSBmb3VuZCAlZCBl
eHBpcmVkIHNlc3Npb25zIiwgdGhpcywgW2V4cGlyZWRTZXNzaW9ucyBjb3VudF0pOworICAgIEFM
V0FZU19MT0coTE9HSURFTlRJRklFUiwgImZvdW5kICIsIFtleHBpcmVkU2Vzc2lvbnMgY291bnRd
LCAiIGV4cGlyZWQgc2Vzc2lvbnMiKTsKIAogICAgIGVycm9yQ29kZSA9IDA7CiAgICAgc3lzdGVt
Q29kZSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWRm91
bmRhdGlvbk9iakMuaAppbmRleCA5NTkxOGYwM2U1ZGJmYmM3ZDU3NzdiNzM0YWY4ZmIxZTUxMGMz
NzMyLi43OTEwYmM0ZGRjMmQxZGM5YzJhYzFlOGY4M2U2M2U2NzhiZjY3Y2Q5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1T
ZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDLmgKQEAg
LTQyLDExICs0MiwxMCBAQCBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
OwogY2xhc3MgQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMgZmluYWwgOiBwdWJsaWMgTGVnYWN5
Q0RNU2Vzc2lvbiwgcHVibGljIENhbk1ha2VXZWFrUHRyPENETVNlc3Npb25BVkZvdW5kYXRpb25P
YmpDPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgQ0RNU2Vz
c2lvbkFWRm91bmRhdGlvbk9iakMoTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyog
cGFyZW50LCBMZWdhY3lDRE1TZXNzaW9uQ2xpZW50Kik7CisgICAgQ0RNU2Vzc2lvbkFWRm91bmRh
dGlvbk9iakMoTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyogcGFyZW50LCBMZWdh
Y3lDRE1TZXNzaW9uQ2xpZW50Jik7CiAgICAgdmlydHVhbCB+Q0RNU2Vzc2lvbkFWRm91bmRhdGlv
bk9iakMoKTsKIAogICAgIExlZ2FjeUNETVNlc3Npb25UeXBlIHR5cGUoKSBvdmVycmlkZSB7IHJl
dHVybiBDRE1TZXNzaW9uVHlwZUFWRm91bmRhdGlvbk9iakM7IH0KLSAgICB2b2lkIHNldENsaWVu
dChMZWdhY3lDRE1TZXNzaW9uQ2xpZW50KiBjbGllbnQpIG92ZXJyaWRlIHsgbV9jbGllbnQgPSBj
bGllbnQ7IH0KICAgICBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIG1fc2Vzc2lvbklkOyB9CiAgICAgUmVmUHRyPFVpbnQ4QXJyYXk+IGdlbmVyYXRlS2V5
UmVxdWVzdChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBVaW50OEFycmF5KiBpbml0RGF0YSwgU3Ry
aW5nJiBkZXN0aW5hdGlvblVSTCwgdW5zaWduZWQgc2hvcnQmIGVycm9yQ29kZSwgdWludDMyX3Qm
IHN5c3RlbUNvZGUpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVsZWFzZUtleXMoKSBvdmVycmlkZTsK
QEAgLTU2LDEwICs1NSwyMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBwbGF5ZXJEaWRSZWNlaXZlRXJy
b3IoTlNFcnJvciAqKTsKIAogcHJpdmF0ZToKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAg
ICBjb25zdCBMb2dnZXImIGxvZ2dlcigpIGNvbnN0IHsgcmV0dXJuIG1fbG9nZ2VyOyB9CisgICAg
Y29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fbG9nSWRlbnRpZmll
cjsgfQorICAgIGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJDRE1T
ZXNzaW9uQVZGb3VuZGF0aW9uT2JqQyI7IH0KKyAgICBXVEZMb2dDaGFubmVsJiBsb2dDaGFubmVs
KCkgY29uc3Q7CisjZW5kaWYKKwogICAgIFdlYWtQdHI8TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQz4gbV9wYXJlbnQ7Ci0gICAgTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCogbV9jbGll
bnQ7CisgICAgV2Vha1B0cjxMZWdhY3lDRE1TZXNzaW9uQ2xpZW50PiBtX2NsaWVudDsKICAgICBT
dHJpbmcgbV9zZXNzaW9uSWQ7CiAgICAgUmV0YWluUHRyPEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdS
ZXF1ZXN0PiBtX3JlcXVlc3Q7CisKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBSZWY8
Y29uc3QgTG9nZ2VyPiBtX2xvZ2dlcjsKKyAgICBjb25zdCB2b2lkKiBtX2xvZ0lkZW50aWZpZXI7
CisjZW5kaWYKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vz
c2lvbkFWRm91bmRhdGlvbk9iakMubW0KaW5kZXggZGFkY2RmYzU1NTZlZjg4MDg5MjJlOTg5Mzkx
ZjcxODdjMTQ5ZjYxNS4uOGVlYzVmNmRkYTdiY2M0NjFlNWMxOTNiM2JjNDc5ZGMyYWVmMWQ4ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWRm91bmRhdGlv
bk9iakMubW0KQEAgLTM3LDIxICszNywyOCBAQAogI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWQXNz
ZXRSZXNvdXJjZUxvYWRlci5oPgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvVHlwZWRBcnJheUlu
bGluZXMuaD4KICNpbXBvcnQgPG9iamMvb2JqYy1ydW50aW1lLmg+CisjaW1wb3J0IDx3dGYvTG9n
Z2VySGVscGVyLmg+CiAjaW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgogI2ltcG9ydCA8d3RmL1Nv
ZnRMaW5raW5nLmg+CiAjaW1wb3J0IDx3dGYvVVVJRC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLUNETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDOjpDRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2Jq
QyhNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKiBwYXJlbnQsIExlZ2FjeUNETVNl
c3Npb25DbGllbnQqIGNsaWVudCkKK0NETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDOjpDRE1TZXNz
aW9uQVZGb3VuZGF0aW9uT2JqQyhNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKiBw
YXJlbnQsIExlZ2FjeUNETVNlc3Npb25DbGllbnQmIGNsaWVudCkKICAgICA6IG1fcGFyZW50KCpw
YXJlbnQpCiAgICAgLCBtX2NsaWVudChjbGllbnQpCiAgICAgLCBtX3Nlc3Npb25JZChjcmVhdGVD
YW5vbmljYWxVVUlEU3RyaW5nKCkpCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgLCBt
X2xvZ2dlcihjbGllbnQubG9nZ2VyKCkpCisgICAgLCBtX2xvZ0lkZW50aWZpZXIoY2xpZW50Lmxv
Z0lkZW50aWZpZXIoKSkKKyNlbmRpZgogeworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7
CiB9CiAKIENETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDOjp+Q0RNU2Vzc2lvbkFWRm91bmRhdGlv
bk9iakMoKQogeworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CiB9CiAKIFJlZlB0cjxV
aW50OEFycmF5PiBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQzo6Z2VuZXJhdGVLZXlSZXF1ZXN0
KGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFVpbnQ4QXJyYXkqIGluaXREYXRhLCBTdHJpbmcmIGRl
c3RpbmF0aW9uVVJMLCB1bnNpZ25lZCBzaG9ydCYgZXJyb3JDb2RlLCB1aW50MzJfdCYgc3lzdGVt
Q29kZSkKQEAgLTU5LDYgKzY2LDcgQEAgUmVmUHRyPFVpbnQ4QXJyYXk+IENETVNlc3Npb25BVkZv
dW5kYXRpb25PYmpDOjpnZW5lcmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5nJgogICAgIFVOVVNF
RF9QQVJBTShtaW1lVHlwZSk7CiAKICAgICBpZiAoIW1fcGFyZW50KSB7CisgICAgICAgIEVSUk9S
X0xPRyhMT0dJREVOVElGSUVSLCAiZXJyb3I6ICFwYXJlbnQiKTsKICAgICAgICAgZXJyb3JDb2Rl
ID0gTGVnYWN5Q0RNOjpVbmtub3duRXJyb3I7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0KQEAgLTY3LDEyICs3NSwxNCBAQCBSZWZQdHI8VWludDhBcnJheT4gQ0RNU2Vzc2lvbkFWRm91
bmRhdGlvbk9iakM6OmdlbmVyYXRlS2V5UmVxdWVzdChjb25zdCBTdHJpbmcmCiAgICAgU3RyaW5n
IGtleUlEOwogICAgIFJlZlB0cjxVaW50OEFycmF5PiBjZXJ0aWZpY2F0ZTsKICAgICBpZiAoIU1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmV4dHJhY3RLZXlVUklLZXlJREFuZENl
cnRpZmljYXRlRnJvbUluaXREYXRhKGluaXREYXRhLCBrZXlVUkksIGtleUlELCBjZXJ0aWZpY2F0
ZSkpIHsKKyAgICAgICAgRVJST1JfTE9HKExPR0lERU5USUZJRVIsICJlcnJvcjogY291bGQgbm90
IGV4dHJhY3Qga2V5IGluZm8iKTsKICAgICAgICAgZXJyb3JDb2RlID0gTGVnYWN5Q0RNOjpVbmtu
b3duRXJyb3I7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAogICAgIG1fcmVxdWVz
dCA9IG1fcGFyZW50LT50YWtlUmVxdWVzdEZvcktleVVSSShrZXlVUkkpOwogICAgIGlmICghbV9y
ZXF1ZXN0KSB7CisgICAgICAgIEVSUk9SX0xPRyhMT0dJREVOVElGSUVSLCAiZXJyb3I6IGNvdWxk
IG5vdCBmaW5kIHJlcXVlc3QgZm9yIGtleSBVUkkiKTsKICAgICAgICAgZXJyb3JDb2RlID0gTGVn
YWN5Q0RNOjpVbmtub3duRXJyb3I7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KQEAg
LTg0LDYgKzk0LDcgQEAgUmVmUHRyPFVpbnQ4QXJyYXk+IENETVNlc3Npb25BVkZvdW5kYXRpb25P
YmpDOjpnZW5lcmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5nJgogICAgIFJldGFpblB0cjxOU0Rh
dGE+IGtleVJlcXVlc3QgPSBbbV9yZXF1ZXN0IHN0cmVhbWluZ0NvbnRlbnRLZXlSZXF1ZXN0RGF0
YUZvckFwcDpjZXJ0aWZpY2F0ZURhdGEuZ2V0KCkgY29udGVudElkZW50aWZpZXI6YXNzZXRJRC5n
ZXQoKSBvcHRpb25zOm5pbCBlcnJvcjombnNFcnJvcl07CiAKICAgICBpZiAoIWtleVJlcXVlc3Qp
IHsKKyAgICAgICAgRVJST1JfTE9HKExPR0lERU5USUZJRVIsICJmYWlsZWQgdG8gZ2VuZXJhdGUg
a2V5IHJlcXVlc3Qgd2l0aCBlcnJvcjogIiwgU3RyaW5nKG5zRXJyb3IubG9jYWxpemVkRGVzY3Jp
cHRpb24pKTsKICAgICAgICAgZXJyb3JDb2RlID0gTGVnYWN5Q0RNOjpEb21haW5FcnJvcjsKICAg
ICAgICAgc3lzdGVtQ29kZSA9IG1lZGlhS2V5RXJyb3JTeXN0ZW1Db2RlKG5zRXJyb3IpOwogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTkzLDYgKzEwNCw4IEBAIFJlZlB0cjxVaW50OEFycmF5
PiBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQzo6Z2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0
cmluZyYKICAgICBzeXN0ZW1Db2RlID0gMDsKICAgICBkZXN0aW5hdGlvblVSTCA9IFN0cmluZygp
OwogCisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKwogICAgIGF1dG8ga2V5UmVxdWVz
dEJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUoW2tleVJlcXVlc3QgYnl0ZXNdLCBba2V5UmVx
dWVzdCBsZW5ndGhdKTsKICAgICB1bnNpZ25lZCBieXRlTGVuZ3RoID0ga2V5UmVxdWVzdEJ1ZmZl
ci0+Ynl0ZUxlbmd0aCgpOwogICAgIHJldHVybiBVaW50OEFycmF5Ojp0cnlDcmVhdGUoV1RGTW92
ZShrZXlSZXF1ZXN0QnVmZmVyKSwgMCwgYnl0ZUxlbmd0aCk7CkBAIC0xMTEsNiArMTI0LDggQEAg
Ym9vbCBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRlKFVpbnQ4QXJyYXkqIGtleSwg
UmVmUHRyPFVpbnQ4QXJyYXk+JiBuZXgKICAgICBzeXN0ZW1Db2RlID0gMDsKICAgICBuZXh0TWVz
c2FnZSA9IG51bGxwdHI7CiAKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKQEAgLTEyNCwxMCArMTM5LDE5IEBAIHZvaWQgQ0RNU2Vzc2lvbkFW
Rm91bmRhdGlvbk9iakM6OnBsYXllckRpZFJlY2VpdmVFcnJvcihOU0Vycm9yICplcnJvcikKICAg
ICBpZiAoIW1fY2xpZW50KQogICAgICAgICByZXR1cm47CiAKKyAgICBFUlJPUl9MT0coTE9HSURF
TlRJRklFUiwgU3RyaW5nKGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKSk7CisKICAgICB1bnNp
Z25lZCBsb25nIGNvZGUgPSBtZWRpYUtleUVycm9yU3lzdGVtQ29kZShlcnJvcik7CiAgICAgbV9j
bGllbnQtPnNlbmRFcnJvcihMZWdhY3lDRE1TZXNzaW9uQ2xpZW50OjpNZWRpYUtleUVycm9yRG9t
YWluLCBjb2RlKTsKIH0KIAorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorV1RGTG9nQ2hhbm5l
bCYgQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakM6OmxvZ0NoYW5uZWwoKSBjb25zdAoreworICAg
IHJldHVybiBMb2dFTUU7Cit9CisjZW5kaWYKKwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Np
b25BVlN0cmVhbVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVlN0cmVhbVNlc3Npb24uaAppbmRleCAzYjQyMmVj
YWY0YTFkMTEzODdiMWFiZjExMGJiZTYxNDUwMjBhZTUwLi5iMjhiYzMzOWUzZGZmOTdjOTk5OTM3
NTZlZGM4ODI4MmRmYjk2YThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RN
U2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbi5oCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIENETVByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakM7CiBjbGFzcyBDRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uIDog
cHVibGljIENETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMgewogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgotICAgIENETVNlc3Npb25BVlN0cmVhbVNlc3Npb24oVmVjdG9y
PGludD4mJiBwcm90b2NvbFZlcnNpb25zLCBDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDJiwg
TGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCopOworICAgIENETVNlc3Npb25BVlN0cmVhbVNlc3Npb24o
VmVjdG9yPGludD4mJiBwcm90b2NvbFZlcnNpb25zLCBDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDJiwgTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCYpOwogICAgIHZpcnR1YWwgfkNETVNlc3Npb25B
VlN0cmVhbVNlc3Npb24oKTsKIAogICAgIC8vIExlZ2FjeUNETVNlc3Npb24KQEAgLTYxLDYgKzYx
LDEwIEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBSZWZQdHI8VWludDhBcnJheT4gZ2VuZXJh
dGVLZXlSZWxlYXNlTWVzc2FnZSh1bnNpZ25lZCBzaG9ydCYgZXJyb3JDb2RlLCB1aW50MzJfdCYg
c3lzdGVtQ29kZSk7CiAKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBjb25zdCBjaGFy
KiBsb2dDbGFzc05hbWUoKSBjb25zdCB7IHJldHVybiAiQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lv
biI7IH0KKyNlbmRpZgorCiAgICAgUmV0YWluUHRyPEFWU3RyZWFtU2Vzc2lvbj4gbV9zdHJlYW1T
ZXNzaW9uOwogICAgIFJlZlB0cjxVaW50OEFycmF5PiBtX2luaXREYXRhOwogICAgIFJlZlB0cjxV
aW50OEFycmF5PiBtX2NlcnRpZmljYXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lv
bi5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L0NETVNlc3Npb25BVlN0cmVhbVNlc3Npb24ubW0KaW5kZXggZjM1Y2FhOGU2YWZmNTdkMzA4OGFl
N2MwZDNmOTI4ZmY3NmI5NmVlMS4uODQwYTIzMzdhZTJkMWIzNzkxN2ExMTUzY2FiYWVkODc5YTdh
MjU2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbi5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZTdHJl
YW1TZXNzaW9uLm1tCkBAIC00MCw2ICs0MCw3IEBACiAjaW1wb3J0IDxvYmpjL29iamMtcnVudGlt
ZS5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9BVkZvdW5kYXRpb25TUEkuaD4KICNpbXBvcnQg
PHd0Zi9GaWxlU3lzdGVtLmg+CisjaW1wb3J0IDx3dGYvTG9nZ2VySGVscGVyLmg+CiAjaW1wb3J0
IDx3dGYvVVVJRC5oPgogI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAKQEAgLTgx
LDE2ICs4MiwxOCBAQCBAZW5kCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ0RNU2Vzc2lvbkFW
U3RyZWFtU2Vzc2lvbjo6Q0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbihWZWN0b3I8aW50PiYmIHBy
b3RvY29sVmVyc2lvbnMsIENETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMmIGNkbSwgTGVnYWN5
Q0RNU2Vzc2lvbkNsaWVudCogY2xpZW50KQorQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbjo6Q0RN
U2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbihWZWN0b3I8aW50PiYmIHByb3RvY29sVmVyc2lvbnMsIENE
TVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMmIGNkbSwgTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCYg
Y2xpZW50KQogICAgIDogQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQyhjZG0sIGNsaWVudCkK
ICAgICAsIG1fZGF0YVBhcnNlck9ic2VydmVyKGFkb3B0TlMoW1tXZWJDRE1TZXNzaW9uQVZTdHJl
YW1TZXNzaW9uT2JzZXJ2ZXIgYWxsb2NdIGluaXRXaXRoUGFyZW50OnRoaXNdKSkKICAgICAsIG1f
cHJvdG9jb2xWZXJzaW9ucyhXVEZNb3ZlKHByb3RvY29sVmVyc2lvbnMpKQogICAgICwgbV9tb2Rl
KE5vcm1hbCkKIHsKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOwogfQogCiBDRE1TZXNz
aW9uQVZTdHJlYW1TZXNzaW9uOjp+Q0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbigpCiB7CisgICAg
QUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKICAgICBzZXRTdHJlYW1TZXNzaW9uKG51bGxwdHIp
OwogCiAgICAgZm9yIChhdXRvJiBzb3VyY2VCdWZmZXIgOiBtX3NvdXJjZUJ1ZmZlcnMpCkBAIC0x
MDMsNyArMTA2LDcgQEAgUmVmUHRyPFVpbnQ4QXJyYXk+IENETVNlc3Npb25BVlN0cmVhbVNlc3Np
b246OmdlbmVyYXRlS2V5UmVxdWVzdChjb25zdCBTdHJpbmcmIG0KICAgICBVTlVTRURfUEFSQU0o
ZGVzdGluYXRpb25VUkwpOwogICAgIEFTU0VSVChpbml0RGF0YSk7CiAKLSAgICBMT0coTWVkaWEs
ICJDRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uOjpnZW5lcmF0ZUtleVJlcXVlc3QoJXApIiwgdGhp
cyk7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKIAogICAgIGVycm9yQ29kZSA9IE1l
ZGlhUGxheWVyOjpOb0Vycm9yOwogICAgIHN5c3RlbUNvZGUgPSAwOwpAQCAtMTI5LDcgKzEzMiw3
IEBAIHZvaWQgQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbjo6cmVsZWFzZUtleXMoKQogICAgICAg
ICBmb3IgKGF1dG8mIHNvdXJjZUJ1ZmZlciA6IG1fc291cmNlQnVmZmVycykKICAgICAgICAgICAg
IHNvdXJjZUJ1ZmZlci0+Zmx1c2goKTsKIAotICAgICAgICBMT0coTWVkaWEsICJDRE1TZXNzaW9u
QVZTdHJlYW1TZXNzaW9uOjpyZWxlYXNlS2V5cyglcCkgLSBleHBpcmluZyBzdHJlYW0gc2Vzc2lv
biIsIHRoaXMpOworICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJleHBpcmluZyBz
dHJlYW0gc2Vzc2lvbiIpOwogICAgICAgICBbbV9zdHJlYW1TZXNzaW9uIGV4cGlyZV07CiAKICAg
ICAgICAgaWYgKCFtX2NlcnRpZmljYXRlKQpAQCAtMTUwLDcgKzE1Myw3IEBAIHZvaWQgQ0RNU2Vz
c2lvbkFWU3RyZWFtU2Vzc2lvbjo6cmVsZWFzZUtleXMoKQogICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwogCiAgICAgICAgICAgICBpZiAobV9zZXNzaW9uSWQgPT0gU3RyaW5nKHBsYXliYWNrU2Vz
c2lvbklkVmFsdWUpKSB7Ci0gICAgICAgICAgICAgICAgTE9HKE1lZGlhLCAiQ0RNU2Vzc2lvbkFW
U3RyZWFtU2Vzc2lvbjo6cmVsZWFzZUtleXMoJXApIC0gZm91bmQgc2Vzc2lvbiwgc2VuZGluZyBl
eHBpcmF0aW9uIG1lc3NhZ2UiKTsKKyAgICAgICAgICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5U
SUZJRVIsICJmb3VuZCBzZXNzaW9uLCBzZW5kaW5nIGV4cGlyYXRpb24gbWVzc2FnZSIpOwogICAg
ICAgICAgICAgICAgIG1fZXhwaXJlZFNlc3Npb24gPSBleHBpcmVkU2Vzc2lvbkRhdGE7CiAgICAg
ICAgICAgICAgICAgbV9jbGllbnQtPnNlbmRNZXNzYWdlKFVpbnQ4QXJyYXk6OmNyZWF0ZShzdGF0
aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oW21fZXhwaXJlZFNlc3Npb24gYnl0ZXNdKSwgW21fZXhw
aXJlZFNlc3Npb24gbGVuZ3RoXSkucHRyKCksIGVtcHR5U3RyaW5nKCkpOwogICAgICAgICAgICAg
ICAgIGJyZWFrOwpAQCAtMTc5LDEzICsxODIsMTMgQEAgYm9vbCBDRE1TZXNzaW9uQVZTdHJlYW1T
ZXNzaW9uOjp1cGRhdGUoVWludDhBcnJheSoga2V5LCBSZWZQdHI8VWludDhBcnJheT4mIG5leHQK
IHsKICAgICBib29sIHNob3VsZEdlbmVyYXRlS2V5UmVxdWVzdCA9ICFtX2NlcnRpZmljYXRlIHx8
IGlzRXF1YWwyKGtleSwgInJlbmV3Iik7CiAgICAgaWYgKCFtX2NlcnRpZmljYXRlKSB7Ci0gICAg
ICAgIExPRyhNZWRpYSwgIkNETVNlc3Npb25BVlN0cmVhbVNlc3Npb246OnVwZGF0ZSglcCkgLSBj
ZXJ0aWZpY2F0ZSBkYXRhIiwgdGhpcyk7CisgICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklF
UiwgImNlcnRpZmljYXRlIGRhdGEiKTsKIAogICAgICAgICBtX2NlcnRpZmljYXRlID0ga2V5Owog
ICAgIH0KIAogICAgIGlmIChpc0VxdWFsMihrZXksICJhY2tub3dsZWRnZWQiKSkgewotICAgICAg
ICBMT0coTWVkaWEsICJDRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uOjp1cGRhdGUoJXApIC0gYWNr
bm93bGVkaW5nIHNlY3VyZSBzdG9wIG1lc3NhZ2UiLCB0aGlzKTsKKyAgICAgICAgQUxXQVlTX0xP
RyhMT0dJREVOVElGSUVSLCAiYWNrbm93bGVkaW5nIHNlY3VyZSBzdG9wIG1lc3NhZ2UiKTsKIAog
ICAgICAgICBpZiAoIW1fZXhwaXJlZFNlc3Npb24pIHsKICAgICAgICAgICAgIGVycm9yQ29kZSA9
IE1lZGlhUGxheWVyOjpJbnZhbGlkUGxheWVyU3RhdGU7CkBAIC0yNDEsMjQgKzI0NCwyNiBAQCBi
b29sIENETVNlc3Npb25BVlN0cmVhbVNlc3Npb246OnVwZGF0ZShVaW50OEFycmF5KiBrZXksIFJl
ZlB0cjxVaW50OEFycmF5PiYgbmV4dAogICAgICAgICAgICAgbV9zZXNzaW9uSWQgPSBjcmVhdGVD
YW5vbmljYWxVVUlEU3RyaW5nKCk7CiAKICAgICAgICAgaWYgKGVycm9yKSB7Ci0gICAgICAgICAg
ICBMT0coTWVkaWEsICJDRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uOjp1cGRhdGUoJXApIC0gZXJy
b3I6JUAiLCB0aGlzLCBbZXJyb3IgZGVzY3JpcHRpb25dKTsKKyAgICAgICAgICAgIEVSUk9SX0xP
RyhMT0dJREVOVElGSUVSLCAiZXJyb3IgZ2VuZXJhdGluZyBrZXkgcmVxdWVzdDogIiwgU3RyaW5n
KGVycm9yLmRlc2NyaXB0aW9uKSk7CiAgICAgICAgICAgICBlcnJvckNvZGUgPSBNZWRpYVBsYXll
cjo6SW52YWxpZFBsYXllclN0YXRlOwogICAgICAgICAgICAgc3lzdGVtQ29kZSA9IG1lZGlhS2V5
RXJyb3JTeXN0ZW1Db2RlKGVycm9yKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgfQogCisgICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgImdlbmVyYXRlZCBrZXkg
cmVxdWVzdCIpOwogICAgICAgICBuZXh0TWVzc2FnZSA9IFVpbnQ4QXJyYXk6OmNyZWF0ZShbcmVx
dWVzdCBsZW5ndGhdKTsKICAgICAgICAgW3JlcXVlc3QgZ2V0Qnl0ZXM6bmV4dE1lc3NhZ2UtPmRh
dGEoKSBsZW5ndGg6bmV4dE1lc3NhZ2UtPmxlbmd0aCgpXTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KIAogICAgIGlmICghcHJvdGVjdGVkU291cmNlQnVmZmVyKSB7CisgICAgICAgIEVS
Uk9SX0xPRyhMT0dJREVOVElGSUVSLCAiZXJyb3I6ICFwcm90ZWN0ZWRTb3VyY2VCdWZmZXIiKTsK
ICAgICAgICAgZXJyb3JDb2RlID0gTWVkaWFQbGF5ZXI6OkludmFsaWRQbGF5ZXJTdGF0ZTsKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIEFTU0VSVCghbV9zb3VyY2VCdWZmZXJz
LmlzRW1wdHkoKSk7Ci0gICAgTE9HKE1lZGlhLCAiQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbjo6
dXBkYXRlKCVwKSAtIGtleSBkYXRhIiwgdGhpcyk7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElG
SUVSLCAicHJvY2Vzc2luZyBrZXkgcmVzcG9uc2UiKTsKICAgICBlcnJvckNvZGUgPSBNZWRpYVBs
YXllcjo6Tm9FcnJvcjsKICAgICBzeXN0ZW1Db2RlID0gMDsKICAgICBSZXRhaW5QdHI8TlNEYXRh
PiBrZXlEYXRhID0gYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCeXRlczprZXktPmRh
dGEoKSBsZW5ndGg6a2V5LT5sZW5ndGgoKV0pOwpAQCAtMjkzLDEyICsyOTgsMTQgQEAgdm9pZCBD
RE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uOjpzZXRTdHJlYW1TZXNzaW9uKEFWU3RyZWFtU2Vzc2lv
biAqc3RyZWFtU2Vzc2lvbikKIAogdm9pZCBDRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uOjphZGRQ
YXJzZXIoQVZTdHJlYW1EYXRhUGFyc2VyKiBwYXJzZXIpCiB7CisgICAgQUxXQVlTX0xPRyhMT0dJ
REVOVElGSUVSKTsKICAgICBpZiAobV9zdHJlYW1TZXNzaW9uKQogICAgICAgICBbbV9zdHJlYW1T
ZXNzaW9uIGFkZFN0cmVhbURhdGFQYXJzZXI6cGFyc2VyXTsKIH0KIAogdm9pZCBDRE1TZXNzaW9u
QVZTdHJlYW1TZXNzaW9uOjpyZW1vdmVQYXJzZXIoQVZTdHJlYW1EYXRhUGFyc2VyKiBwYXJzZXIp
CiB7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKICAgICBpZiAobV9zdHJlYW1TZXNz
aW9uKQogICAgICAgICBbbV9zdHJlYW1TZXNzaW9uIHJlbW92ZVN0cmVhbURhdGFQYXJzZXI6cGFy
c2VyXTsKIH0KQEAgLTMxOCwxNCArMzI1LDE0IEBAIFJlZlB0cjxVaW50OEFycmF5PiBDRE1TZXNz
aW9uQVZTdHJlYW1TZXNzaW9uOjpnZW5lcmF0ZUtleVJlbGVhc2VNZXNzYWdlKHVuc2lnbmVkCiAK
ICAgICBOU0FycmF5KiBleHBpcmVkU2Vzc2lvbnMgPSBbUEFMOjpnZXRBVlN0cmVhbVNlc3Npb25D
bGFzcygpIHBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9ydHNXaXRoQXBwSWRlbnRpZmllcjpjZXJ0
aWZpY2F0ZURhdGEuZ2V0KCkgc3RvcmFnZURpcmVjdG9yeUF0VVJMOltOU1VSTCBmaWxlVVJMV2l0
aFBhdGg6c3RvcmFnZVBhdGhdXTsKICAgICBpZiAoIVtleHBpcmVkU2Vzc2lvbnMgY291bnRdKSB7
Ci0gICAgICAgIExPRyhNZWRpYSwgIkNETVNlc3Npb25BVlN0cmVhbVNlc3Npb246OmdlbmVyYXRl
S2V5UmVsZWFzZU1lc3NhZ2UoJXApIC0gbm8gZXhwaXJlZCBzZXNzaW9ucyBmb3VuZCIsIHRoaXMp
OworICAgICAgICBBTFdBWVNfTE9HKCJubyBleHBpcmVkIHNlc3Npb25zIGZvdW5kIik7CiAKICAg
ICAgICAgZXJyb3JDb2RlID0gTWVkaWFQbGF5ZXI6OktleVN5c3RlbU5vdFN1cHBvcnRlZDsKICAg
ICAgICAgc3lzdGVtQ29kZSA9ICchbW9yJzsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
fQogCi0gICAgTE9HKE1lZGlhLCAiQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbjo6Z2VuZXJhdGVL
ZXlSZWxlYXNlTWVzc2FnZSglcCkgLSBmb3VuZCAlZCBleHBpcmVkIHNlc3Npb25zIiwgdGhpcywg
W2V4cGlyZWRTZXNzaW9ucyBjb3VudF0pOworICAgIEFMV0FZU19MT0coImZvdW5kICIsIFtleHBp
cmVkU2Vzc2lvbnMgY291bnRdLCAiIGV4cGlyZWQgc2Vzc2lvbnMiKTsKIAogICAgIGVycm9yQ29k
ZSA9IDA7CiAgICAgc3lzdGVtQ29kZSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uTWVkaWFTb3VyY2VB
VkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9DRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDLmgKaW5kZXggZWViNWY5ODNiOGEzZmJi
ZjM0YmFjNjRkZDBmZDU1YmMyNTNiMGVhMC4uMjk4ZmQwYzhmMjkwMDY2NmFkZDMyNjRkOTJmMDNl
YmE1ZDcxOGZiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Np
b25NZWRpYVNvdXJjZUFWRk9iakMuaApAQCAtNDMsMTQgKzQzLDEzIEBAIGNsYXNzIENETVByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakM7CiBjbGFzcyBDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpD
IDogcHVibGljIExlZ2FjeUNETVNlc3Npb24sIHB1YmxpYyBTb3VyY2VCdWZmZXJQcml2YXRlQVZG
T2JqQ0Vycm9yQ2xpZW50LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8Q0RNU2Vzc2lvbk1lZGlhU291
cmNlQVZGT2JqQz4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAg
IENETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMoQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
QyYsIExlZ2FjeUNETVNlc3Npb25DbGllbnQqKTsKKyAgICBDRE1TZXNzaW9uTWVkaWFTb3VyY2VB
VkZPYmpDKENETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMmLCBMZWdhY3lDRE1TZXNzaW9uQ2xp
ZW50Jik7CiAgICAgdmlydHVhbCB+Q0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQygpOwogCiAg
ICAgdmlydHVhbCB2b2lkIGFkZFBhcnNlcihBVlN0cmVhbURhdGFQYXJzZXIqKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIHJlbW92ZVBhcnNlcihBVlN0cmVhbURhdGFQYXJzZXIqKSA9IDA7CiAKICAg
ICAvLyBMZWdhY3lDRE1TZXNzaW9uCi0gICAgdm9pZCBzZXRDbGllbnQoTGVnYWN5Q0RNU2Vzc2lv
bkNsaWVudCogY2xpZW50KSBvdmVycmlkZSB7IG1fY2xpZW50ID0gY2xpZW50OyB9CiAgICAgY29u
c3QgU3RyaW5nJiBzZXNzaW9uSWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3Nlc3Npb25J
ZDsgfQogCiAgICAgLy8gU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakNFcnJvckNsaWVudApAQCAt
NjgsMTIgKzY3LDIzIEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBTdHJpbmcgc3RvcmFnZVBh
dGgoKSBjb25zdDsKIAorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIGNvbnN0IExvZ2dl
ciYgbG9nZ2VyKCkgY29uc3QgeyByZXR1cm4gbV9sb2dnZXI7IH0KKyAgICBjb25zdCB2b2lkKiBs
b2dJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9sb2dJZGVudGlmaWVyOyB9CisgICAgV1RG
TG9nQ2hhbm5lbCYgbG9nQ2hhbm5lbCgpIGNvbnN0OworI2VuZGlmCisKICAgICBDRE1Qcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDKiBtX2NkbTsKLSAgICBMZWdhY3lDRE1TZXNzaW9uQ2xpZW50KiBt
X2NsaWVudCB7IG51bGxwdHIgfTsKKyAgICBXZWFrUHRyPExlZ2FjeUNETVNlc3Npb25DbGllbnQ+
IG1fY2xpZW50OwogICAgIFZlY3RvcjxSZWZQdHI8U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM+
PiBtX3NvdXJjZUJ1ZmZlcnM7CiAgICAgUmVmUHRyPFVpbnQ4QXJyYXk+IG1fY2VydGlmaWNhdGU7
CiAgICAgU3RyaW5nIG1fc2Vzc2lvbklkOwogICAgIGJvb2wgbV9zdG9wcGVkIHsgZmFsc2UgfTsK
KworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIFJlZjxjb25zdCBMb2dnZXI+IG1fbG9n
Z2VyOworICAgIGNvbnN0IHZvaWQqIG1fbG9nSWRlbnRpZmllcjsKKyNlbmRpZgogfTsKIAogaW5s
aW5lIENETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMqIHRvQ0RNU2Vzc2lvbk1lZGlhU291cmNl
QVZGT2JqQyhMZWdhY3lDRE1TZXNzaW9uKiBzZXNzaW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbk1lZGlh
U291cmNlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL0NETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMubW0KaW5kZXggZjAzZTcz
OWIyMDA3OTdkMTA1NzkwZjViMDgyNGEyMWZiZjE0NDA3ZC4uMjg2YTVhNDg4N2U4ZDk1NjAwZTdj
OGJhYzNhZmJlNjY3NjE2MDU1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9DRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDLm1tCkBAIC0zNSw5ICszNSwxMyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLUNETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakM6OkNETVNl
c3Npb25NZWRpYVNvdXJjZUFWRk9iakMoQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyYgY2Rt
LCBMZWdhY3lDRE1TZXNzaW9uQ2xpZW50KiBjbGllbnQpCitDRE1TZXNzaW9uTWVkaWFTb3VyY2VB
VkZPYmpDOjpDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDKENETVByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakMmIGNkbSwgTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCYgY2xpZW50KQogICAgIDogbV9j
ZG0oJmNkbSkKICAgICAsIG1fY2xpZW50KGNsaWVudCkKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJM
RUQKKyAgICAsIG1fbG9nZ2VyKGNsaWVudC5sb2dnZXIoKSkKKyAgICAsIG1fbG9nSWRlbnRpZmll
cihjbGllbnQubG9nSWRlbnRpZmllcigpKQorI2VuZGlmCiB7CiB9CiAKQEAgLTExMiw2ICsxMTYs
MTMgQEAgU3RyaW5nIENETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakM6OnN0b3JhZ2VQYXRoKCkg
Y29uc3QKICAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHN0
b3JhZ2VEaXJlY3RvcnksICJTZWN1cmVTdG9wLnBsaXN0Iik7CiB9CiAKKyNpZiAhUkVMRUFTRV9M
T0dfRElTQUJMRUQKK1dURkxvZ0NoYW5uZWwmIENETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakM6
OmxvZ0NoYW5uZWwoKSBjb25zdAoreworICAgIHJldHVybiBMb2dFTUU7Cit9CisjZW5kaWYKKwog
fQogCiAjZW5kaWYgLy8gRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpICYmIEVOQUJMRShN
RURJQV9TT1VSQ0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKaW5kZXggMjAwZTFhOGY5YWZiYTBmY2Ji
YTViMGEzZWQ3MDRjZDM0MWI0NTBkNi4uYzAxMzY4OTBkNjIwM2JjMGU1YzA0ODNhN2VjNjY1OTE2
MGQ1OTEwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaApAQCAtMjY3LDcgKzI2Nyw3IEBAIHByaXZh
dGU6CiAKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKICAgICB2b2lkIGtleUFk
ZGVkKCkgZmluYWw7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNETVNlc3Npb24+IGNyZWF0
ZVNlc3Npb24oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIExlZ2FjeUNETVNlc3Npb25DbGllbnQq
KSBmaW5hbDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TGVnYWN5Q0RNU2Vzc2lvbj4gY3JlYXRlU2Vz
c2lvbihjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCYpIGZp
bmFsOwogI2VuZGlmCiAKICAgICBTdHJpbmcgbGFuZ3VhZ2VPZlByaW1hcnlBdWRpb1RyYWNrKCkg
Y29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCBkN2NmOWQ0YmYxZmVkNjlh
NWYzY2FjMzFlYWZlZTdmMzk4YTQ1M2MxLi43YTRhZGQwOTc2ZTRhN2ZmMWU1ODg0NGZlZTQ1OWFi
M2M5YjNjNTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTIwMjEsNiArMjAyMSw3IEBA
IGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2hvdWxkV2FpdEZvckxv
YWRpbmdPZlJlc291cmNlKEFWQXNzZXRSCiAKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9N
RURJQSkgfHwgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKICAgICBpZiAoc2NoZW1lID09ICJza2Qi
KSB7CisgICAgICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJyZWNlaXZlZCBza2Q6Ly8gVVJJ
Iik7CiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCiAgICAgICAgIC8vIENyZWF0
ZSBhbiBpbml0RGF0YSB3aXRoIHRoZSBmb2xsb3dpbmcgbGF5b3V0OgogICAgICAgICAvLyBbNCBi
eXRlczoga2V5VVJJIHNpemVdLCBba2V5VVJJIHNpemUgYnl0ZXM6IGtleVVSSV0KQEAgLTI3MzAs
NyArMjczMSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6a2V5
QWRkZWQoKQogICAgICAgICBtX2tleVVSSVRvUmVxdWVzdE1hcC5yZW1vdmUoa2V5SWQpOwogfQog
Ci1zdGQ6OnVuaXF1ZV9wdHI8TGVnYWN5Q0RNU2Vzc2lvbj4gTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQzo6Y3JlYXRlU2Vzc2lvbihjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgTGVn
YWN5Q0RNU2Vzc2lvbkNsaWVudCogY2xpZW50KQorc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNETVNl
c3Npb24+IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZVNlc3Npb24o
Y29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIExlZ2FjeUNETVNlc3Npb25DbGllbnQmIGNsaWVudCkK
IHsKICAgICBpZiAoIWtleVN5c3RlbUlzU3VwcG9ydGVkKGtleVN5c3RlbSkpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9MZWdhY3lN
b2NrQ0RNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTGVnYWN5TW9ja0NETS5jcHAKaW5k
ZXggN2UxZGJmMjY5NDZjM2JmZjQzMDg0OTFkMjU4MzE1NmNhYjc0ODU2My4uOGFjYzEwYTMxZDdl
YWIzYWE1NDFlYTA0ZGYyMzgwZWQ2MjAzZTAyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9MZWdhY3lNb2NrQ0RNLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0xl
Z2FjeU1vY2tDRE0uY3BwCkBAIC00MCwxMCArNDAsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBNb2NrQ0RNU2Vzc2lvbiA6IHB1YmxpYyBMZWdhY3lDRE1TZXNzaW9uIHsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBNb2NrQ0RNU2Vzc2lvbihMZWdhY3lD
RE1TZXNzaW9uQ2xpZW50Kik7CisgICAgTW9ja0NETVNlc3Npb24oTGVnYWN5Q0RNU2Vzc2lvbkNs
aWVudCYpOwogICAgIHZpcnR1YWwgfk1vY2tDRE1TZXNzaW9uKCkgPSBkZWZhdWx0OwogCi0gICAg
dm9pZCBzZXRDbGllbnQoTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCogY2xpZW50KSBvdmVycmlkZSB7
IG1fY2xpZW50ID0gY2xpZW50OyB9CiAgICAgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBtX3Nlc3Npb25JZDsgfQogICAgIFJlZlB0cjxVaW50OEFycmF5
PiBnZW5lcmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgVWludDhBcnJheSog
aW5pdERhdGEsIFN0cmluZyYgZGVzdGluYXRpb25VUkwsIHVuc2lnbmVkIHNob3J0JiBlcnJvckNv
ZGUsIHVpbnQzMl90JiBzeXN0ZW1Db2RlKSBvdmVycmlkZTsKICAgICB2b2lkIHJlbGVhc2VLZXlz
KCkgb3ZlcnJpZGU7CkBAIC01MSw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICBSZWZQdHI8QXJyYXlC
dWZmZXI+IGNhY2hlZEtleUZvcktleUlEKGNvbnN0IFN0cmluZyYpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIG51bGxwdHI7IH0KIAogcHJvdGVjdGVkOgotICAgIExlZ2FjeUNETVNlc3Npb25DbGll
bnQqIG1fY2xpZW50OworICAgIFdlYWtQdHI8TGVnYWN5Q0RNU2Vzc2lvbkNsaWVudD4gbV9jbGll
bnQ7CiAgICAgU3RyaW5nIG1fc2Vzc2lvbklkOwogfTsKIApAQCAtNzMsNyArNzIsNyBAQCBib29s
IExlZ2FjeU1vY2tDRE06OnN1cHBvcnRzTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkK
ICAgICByZXR1cm4gZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJ2aWRl
by9tb2NrIik7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxMZWdhY3lDRE1TZXNzaW9uPiBMZWdhY3lN
b2NrQ0RNOjpjcmVhdGVTZXNzaW9uKExlZ2FjeUNETVNlc3Npb25DbGllbnQqIGNsaWVudCkKK3N0
ZDo6dW5pcXVlX3B0cjxMZWdhY3lDRE1TZXNzaW9uPiBMZWdhY3lNb2NrQ0RNOjpjcmVhdGVTZXNz
aW9uKExlZ2FjeUNETVNlc3Npb25DbGllbnQmIGNsaWVudCkKIHsKICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxNb2NrQ0RNU2Vzc2lvbj4oY2xpZW50KTsKIH0KQEAgLTEwOCw3ICsxMDcsNyBAQCBzdGF0
aWMgU3RyaW5nIGdlbmVyYXRlU2Vzc2lvbklkKCkKICAgICByZXR1cm4gU3RyaW5nOjpudW1iZXIo
bW9ub3RvbmljYWxseUluY3JlYXNpbmdTZXNzaW9uSWQrKyk7CiB9CiAKLU1vY2tDRE1TZXNzaW9u
OjpNb2NrQ0RNU2Vzc2lvbihMZWdhY3lDRE1TZXNzaW9uQ2xpZW50KiBjbGllbnQpCitNb2NrQ0RN
U2Vzc2lvbjo6TW9ja0NETVNlc3Npb24oTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCYgY2xpZW50KQog
ICAgIDogbV9jbGllbnQoY2xpZW50KQogICAgICwgbV9zZXNzaW9uSWQoZ2VuZXJhdGVTZXNzaW9u
SWQoKSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTGVnYWN5TW9ja0NE
TS5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9MZWdhY3lNb2NrQ0RNLmgKaW5kZXggYjkzYWVi
OTNmZjYzMjllNTE1NDdjMTNmZjc2YTY5MmVlNmE3MTg2Yy4uZjEwZGZlYjY0YjEzNTEyYmJmNzU0
N2EwZTAxOWZjODg0NTFjNjNiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9M
ZWdhY3lNb2NrQ0RNLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9MZWdhY3lNb2NrQ0RN
LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkxlZ2FjeU1vY2tDRE0o
KSA9IGRlZmF1bHQ7CiAKICAgICBib29sIHN1cHBvcnRzTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSkgb3ZlcnJpZGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNETVNlc3Npb24+
IGNyZWF0ZVNlc3Npb24oTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCopIG92ZXJyaWRlOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxMZWdhY3lDRE1TZXNzaW9uPiBjcmVhdGVTZXNzaW9uKExlZ2FjeUNETVNl
c3Npb25DbGllbnQmKSBvdmVycmlkZTsKIAogcHJvdGVjdGVkOgogICAgIExlZ2FjeUNETSogbV9j
ZG07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVn
YWN5Q0RNRmFjdG9yeVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkuY3BwCmluZGV4IDdjZWRiOTcxMmZjNjZiNWI4ZGI1
MmJhZjA4Y2IwYzJhNjRlOTRlZTcuLjYzODQ1Mjg5MTA4OWE1MmIxM2M3YjdlZWQ0ZDAxYzg5NTE5
NTUyYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVM
ZWdhY3lDRE1GYWN0b3J5UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkuY3BwCkBAIC0xNzAsNiArMTcwLDE4IEBA
IGJvb2wgUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5OjphbGxvd3NFeGl0VW5kZXJNZW1vcnlQ
cmVzc3VyZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fc2Vzc2lvbnMuaXNFbXB0eSgpOwogfQogCisj
aWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECitjb25zdCBMb2dnZXImIFJlbW90ZUxlZ2FjeUNETUZh
Y3RvcnlQcm94eTo6bG9nZ2VyKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fbG9nZ2VyKSB7CisgICAg
ICAgIG1fbG9nZ2VyID0gTG9nZ2VyOjpjcmVhdGUodGhpcyk7CisgICAgICAgIG1fbG9nZ2VyLT5z
ZXRFbmFibGVkKHRoaXMsIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyA/IG1fZ3B1Q29ubmVj
dGlvblRvV2ViUHJvY2Vzcy0+c2Vzc2lvbklEKCkuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCkg
OiBmYWxzZSk7CisgICAgfQorCisgICAgcmV0dXJuICptX2xvZ2dlcjsKK30KKyNlbmRpZgorCiB9
CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5oCmluZGV4IGQ4NzQ5ZGUxMDFhOTY4ZWFh
MDAxYzdiMWJkZWUxODg2NzM4ZjgyNzYuLjNhMTdkNDE1NjBiMTIyMWZkNzViNTJjMTE4YmU5NGFi
OGFhZDhiYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVMZWdhY3lDRE1GYWN0b3J5UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5LmgKQEAgLTY2LDYgKzY2LDEwIEBAIHB1
YmxpYzoKIAogICAgIGJvb2wgYWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUoKSBjb25zdDsK
IAorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIGNvbnN0IExvZ2dlciYgbG9nZ2VyKCkg
Y29uc3Q7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgR1BVUHJvY2Vzc0Nv
bm5lY3Rpb247CiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKQEAgLTc5LDYgKzgzLDEwIEBA
IHByaXZhdGU6CiAgICAgV2Vha1B0cjxHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzPiBtX2dwdUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M7CiAgICAgSGFzaE1hcDxSZW1vdGVMZWdhY3lDRE1JZGVudGlm
aWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGVnYWN5Q0RNUHJveHk+PiBtX3Byb3hpZXM7CiAg
ICAgSGFzaE1hcDxSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllciwgc3RkOjp1bmlxdWVf
cHRyPFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eT4+IG1fc2Vzc2lvbnM7CisKKyNpZiAhUkVM
RUFTRV9MT0dfRElTQUJMRUQKKyAgICBtdXRhYmxlIFJlZlB0cjxMb2dnZXI+IG1fbG9nZ2VyOwor
I2VuZGlmCiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmNwcAppbmRleCBmZmY2ZWI1MjllNTY5ZmI4ZjRiZTEz
MGQ3ZDhjZTMwNzY1MzliNzgwLi44YTc0M2FmMzQ4NjlmZjk0MjdiNzczNTRkNzRjMjIzNzdjMmIz
YTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVn
YWN5Q0RNUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVMZWdhY3lDRE1Qcm94eS5jcHAKQEAgLTYxLDE3ICs2MSwxNyBAQCB2b2lkIFJlbW90ZUxlZ2Fj
eUNETVByb3h5OjpzdXBwb3J0c01JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFN1cHBv
cnRzTUlNRQogICAgIGNhbGxiYWNrKG1fY2RtLT5zdXBwb3J0c01JTUVUeXBlKG1pbWVUeXBlKSk7
CiB9CiAKLXZvaWQgUmVtb3RlTGVnYWN5Q0RNUHJveHk6OmNyZWF0ZVNlc3Npb24oY29uc3QgU3Ry
aW5nJiBrZXlTeXN0ZW0sIENyZWF0ZVNlc3Npb25DYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBS
ZW1vdGVMZWdhY3lDRE1Qcm94eTo6Y3JlYXRlU2Vzc2lvbihjb25zdCBTdHJpbmcmIGtleVN5c3Rl
bSwgdWludDY0X3QgbG9nSWRlbnRpZmllciwgQ3JlYXRlU2Vzc2lvbkNhbGxiYWNrJiYgY2FsbGJh
Y2spCiB7CiAgICAgaWYgKCFtX2NkbSB8fCAhbV9mYWN0b3J5KSB7CiAgICAgICAgIGNhbGxiYWNr
KHsgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIGlkZW50aWZpZXIgPSBS
ZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKLSAgICBhdXRvIHNl
c3Npb24gPSBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OmNyZWF0ZShtX2ZhY3RvcnkuZ2V0
KCksIGlkZW50aWZpZXIsICptX2NkbSk7Ci0gICAgbV9mYWN0b3J5LT5hZGRTZXNzaW9uKGlkZW50
aWZpZXIsIFdURk1vdmUoc2Vzc2lvbikpOwotICAgIGNhbGxiYWNrKFdURk1vdmUoaWRlbnRpZmll
cikpOworICAgIGF1dG8gc2Vzc2lvbklkZW50aWZpZXIgPSBSZW1vdGVMZWdhY3lDRE1TZXNzaW9u
SWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKKyAgICBhdXRvIHNlc3Npb24gPSBSZW1vdGVMZWdhY3lD
RE1TZXNzaW9uUHJveHk6OmNyZWF0ZSgqbV9mYWN0b3J5LCBsb2dJZGVudGlmaWVyLCBzZXNzaW9u
SWRlbnRpZmllciwgKm1fY2RtKTsKKyAgICBtX2ZhY3RvcnktPmFkZFNlc3Npb24oc2Vzc2lvbklk
ZW50aWZpZXIsIFdURk1vdmUoc2Vzc2lvbikpOworICAgIGNhbGxiYWNrKFdURk1vdmUoc2Vzc2lv
bklkZW50aWZpZXIpKTsKIH0KIAogdm9pZCBSZW1vdGVMZWdhY3lDRE1Qcm94eTo6c2V0UGxheWVy
SWQoc3RkOjpvcHRpb25hbDxNZWRpYVBsYXllcklkZW50aWZpZXI+JiYgcGxheWVySWQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94
eS5oCmluZGV4IGUyY2QwNWQ3Y2M3NGYyMGVjNjlmYWRmZTNlZTA4NTc1OTJhZDg3OWIuLjcyYWU3
MTBjYmIzNjZmYmU4ZWM5NWYxY2RiMmJmYTI1NWRmODU5MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5oCkBAIC02Miw3
ICs2Miw3IEBAIHByaXZhdGU6CiAgICAgdXNpbmcgU3VwcG9ydHNNSU1FVHlwZUNhbGxiYWNrID0g
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT47CiAgICAgdm9pZCBzdXBwb3J0c01JTUVUeXBl
KGNvbnN0IFN0cmluZyYsIFN1cHBvcnRzTUlNRVR5cGVDYWxsYmFjayYmKTsKICAgICB1c2luZyBD
cmVhdGVTZXNzaW9uQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlbW90ZUxlZ2Fj
eUNETVNlc3Npb25JZGVudGlmaWVyJiYpPjsKLSAgICB2b2lkIGNyZWF0ZVNlc3Npb24oY29uc3Qg
U3RyaW5nJiwgQ3JlYXRlU2Vzc2lvbkNhbGxiYWNrJiYpOworICAgIHZvaWQgY3JlYXRlU2Vzc2lv
bihjb25zdCBTdHJpbmcmLCB1aW50NjRfdCwgQ3JlYXRlU2Vzc2lvbkNhbGxiYWNrJiYpOwogICAg
IHZvaWQgc2V0UGxheWVySWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50
aWZpZXI+JiYpOwogCiAgICAgLy8gTGVnYWN5Q0RNQ2xpZW50CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkubWVz
c2FnZXMuaW4KaW5kZXggOGVjNmIzYjdhYWVmNmIxYjVmZDZmMGUzODU3ZmRjNTFhMmFmNjYwNy4u
MDZmOGIwY2I0ZjAxY2I2YzdiMGM2ZDZlZmFkNjE1OGEzOGI2ZGYwNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5Lm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Q
cm94eS5tZXNzYWdlcy5pbgpAQCAtMjUsNyArMjUsNyBAQAogCiBtZXNzYWdlcyAtPiBSZW1vdGVM
ZWdhY3lDRE1Qcm94eSBOb3RSZWZDb3VudGVkIHsKICAgICBTdXBwb3J0c01JTUVUeXBlKFN0cmlu
ZyBtaW1lVHlwZSkgLT4gKGJvb2wgc3VwcG9ydHMpIFN5bmNocm9ub3VzCi0gICAgQ3JlYXRlU2Vz
c2lvbihTdHJpbmcgbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSkgLT4gKFdlYktpdDo6UmVtb3Rl
TGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXIgaWRlbnRpZmllcikgU3luY2hyb25vdXMKKyAgICBD
cmVhdGVTZXNzaW9uKFN0cmluZyBtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5LCB1aW50NjRfdCBs
b2dJZGVudGlmaWVyKSAtPiAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmll
ciBpZGVudGlmaWVyKSBTeW5jaHJvbm91cwogICAgIFNldFBsYXllcklkKHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVyPiBwbGF5ZXJJZCkKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Q
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RN
U2Vzc2lvblByb3h5LmNwcAppbmRleCA5M2IyZmY3NDFiMWY4MzY5YjIwNTg0ZTQ5N2U0YTAyMWI5
Y2NmNTc4Li5hMDA0MDJjOTZiMmI0MmFlMDZiMTI3YWE3MWE1YWJiZTc4NThkYzc5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lv
blByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVn
YWN5Q0RNU2Vzc2lvblByb3h5LmNwcApAQCAtMzUsMTkgKzM1LDI0IEBACiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvTGVnYWN5Q0RNLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KKyNp
bmNsdWRlIDx3dGYvTG9nZ2VySGVscGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxlZ2FjeUNETVNl
c3Npb25Qcm94eT4gUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpjcmVhdGUoV2Vha1B0cjxS
ZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk+JiYgZmFjdG9yeSwgUmVtb3RlTGVnYWN5Q0RNU2Vz
c2lvbklkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6TGVnYWN5Q0RNJiBjZG0pCitzdGQ6
OnVuaXF1ZV9wdHI8UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5PiBSZW1vdGVMZWdhY3lDRE1T
ZXNzaW9uUHJveHk6OmNyZWF0ZShSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkmIGZhY3Rvcnks
IHVpbnQ2NF90IGxvZ0lkZW50aWZpZXIsIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVy
IHNlc3Npb25JZGVudGlmaWVyLCBXZWJDb3JlOjpMZWdhY3lDRE0mIGNkbSkKIHsKLSAgICByZXR1
cm4gc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eT4obmV3IFJlbW90
ZUxlZ2FjeUNETVNlc3Npb25Qcm94eShXVEZNb3ZlKGZhY3RvcnkpLCBpZGVudGlmaWVyLCBjZG0p
KTsKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94
eT4obmV3IFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eShmYWN0b3J5LCBsb2dJZGVudGlmaWVy
LCBzZXNzaW9uSWRlbnRpZmllciwgY2RtKSk7CiB9CiAKLVJlbW90ZUxlZ2FjeUNETVNlc3Npb25Q
cm94eTo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5KFdlYWtQdHI8UmVtb3RlTGVnYWN5Q0RN
RmFjdG9yeVByb3h5PiYmIGZhY3RvcnksIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVy
IGlkZW50aWZpZXIsIFdlYkNvcmU6OkxlZ2FjeUNETSYgY2RtKQotICAgIDogbV9mYWN0b3J5KFdU
Rk1vdmUoZmFjdG9yeSkpCi0gICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKK1JlbW90ZUxl
Z2FjeUNETVNlc3Npb25Qcm94eTo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5KFJlbW90ZUxl
Z2FjeUNETUZhY3RvcnlQcm94eSYgZmFjdG9yeSwgdWludDY0X3QgbG9nSWRlbnRpZmllciwgUmVt
b3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXIgc2Vzc2lvbklkZW50aWZpZXIsIFdlYkNvcmU6
OkxlZ2FjeUNETSYgY2RtKQorICAgIDogbV9mYWN0b3J5KGZhY3RvcnkpCisjaWYgIVJFTEVBU0Vf
TE9HX0RJU0FCTEVECisgICAgLCBtX2xvZ2dlcihmYWN0b3J5LmxvZ2dlcigpKQorICAgICwgbV9s
b2dJZGVudGlmaWVyKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KGxvZ0lkZW50aWZpZXIp
KQorI2VuZGlmCisgICAgLCBtX2lkZW50aWZpZXIoc2Vzc2lvbklkZW50aWZpZXIpCiAgICAgLCBt
X3Nlc3Npb24oY2RtLmNyZWF0ZVNlc3Npb24oKnRoaXMpKQogewogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5o
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Q
cm94eS5oCmluZGV4IGYxNGM2MjdmNjU5M2UxYTg3OGQwZjQ1OTkyYjNjNDFiMjIyYzdmMDAuLjhk
NjFkZTZjODMyYTEzZjgyODg3Yzk4YzU4OGNhYzYxNTMwNGVhOGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lv
blByb3h5LmgKQEAgLTUzLDcgKzUzLDcgQEAgY2xhc3MgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblBy
b3h5CiAgICAgOiBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICAsIHB1YmxpYyBXZWJD
b3JlOjpMZWdhY3lDRE1TZXNzaW9uQ2xpZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eT4gY3JlYXRlKFdlYWtQdHI8UmVt
b3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5PiYmLCBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRp
ZmllciwgV2ViQ29yZTo6TGVnYWN5Q0RNJik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxS
ZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk+IGNyZWF0ZShSZW1vdGVMZWdhY3lDRE1GYWN0b3J5
UHJveHkmLCB1aW50NjRfdCBsb2dJZGVudGlmaWVyLCBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRl
bnRpZmllciwgV2ViQ29yZTo6TGVnYWN5Q0RNJik7CiAgICAgflJlbW90ZUxlZ2FjeUNETVNlc3Np
b25Qcm94eSgpOwogCiAgICAgUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5KiBmYWN0b3J5KCkg
Y29uc3QgeyByZXR1cm4gbV9mYWN0b3J5LmdldCgpOyB9CkBAIC02NSw3ICs2NSw3IEBAIHB1Ymxp
YzoKIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVBy
b3h5OwotICAgIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eShXZWFrUHRyPFJlbW90ZUxlZ2Fj
eUNETUZhY3RvcnlQcm94eT4mJiwgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXIsIFdl
YkNvcmU6OkxlZ2FjeUNETSYpOworICAgIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eShSZW1v
dGVMZWdhY3lDRE1GYWN0b3J5UHJveHkmLCB1aW50NjRfdCBsb2dJZGVudGlmaWVyLCBSZW1vdGVM
ZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllciwgV2ViQ29yZTo6TGVnYWN5Q0RNJik7CiAKICAgICAv
LyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CkBAIC03NSw2ICs3NSwxMCBAQCBwcml2
YXRlOgogICAgIHZvaWQgc2VuZE1lc3NhZ2UoVWludDhBcnJheSosIFN0cmluZyBkZXN0aW5hdGlv
blVSTCkgZmluYWw7CiAgICAgdm9pZCBzZW5kRXJyb3IoTWVkaWFLZXlFcnJvckNvZGUsIHVpbnQz
Ml90IHN5c3RlbUNvZGUpIGZpbmFsOwogICAgIFN0cmluZyBtZWRpYUtleXNTdG9yYWdlRGlyZWN0
b3J5KCkgY29uc3QgZmluYWw7CisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgY29uc3Qg
TG9nZ2VyJiBsb2dnZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2xvZ2dlcjsgfQorICAgIGNv
bnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2xvZ0lkZW50
aWZpZXI7IH0KKyNlbmRpZgogCiAgICAgLy8gTWVzc2FnZXMKICAgICB1c2luZyBHZW5lcmF0ZUtl
eUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPElQQzo6U2hh
cmVkQnVmZmVyQ29weT4mJiwgY29uc3QgU3RyaW5nJiwgdW5zaWduZWQgc2hvcnQsIHVpbnQzMl90
KT47CkBAIC04Niw2ICs5MCwxMiBAQCBwcml2YXRlOgogICAgIHZvaWQgY2FjaGVkS2V5Rm9yS2V5
SUQoU3RyaW5nIGtleUlkLCBDYWNoZWRLZXlGb3JLZXlJRENhbGxiYWNrJiYpOwogCiAgICAgV2Vh
a1B0cjxSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk+IG1fZmFjdG9yeTsKKworI2lmICFSRUxF
QVNFX0xPR19ESVNBQkxFRAorICAgIFJlZjxjb25zdCBMb2dnZXI+IG1fbG9nZ2VyOworICAgIGNv
bnN0IHZvaWQqIG1fbG9nSWRlbnRpZmllcjsKKyNlbmRpZgorCiAgICAgUmVtb3RlTGVnYWN5Q0RN
U2Vzc2lvbklkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJD
b3JlOjpMZWdhY3lDRE1TZXNzaW9uPiBtX3Nlc3Npb247CiAgICAgV2Vha1B0cjxSZW1vdGVNZWRp
YVBsYXllclByb3h5PiBtX3BsYXllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcAppbmRl
eCBkMGRlMzMzM2Q4YmQ5NmE5Y2RmODBhZWYxM2M3OGViNjI1NzA5NjMwLi5mMzY0ZTVjMTY0NmI1
MjRiNjUyZmQ2MGQ1NDg4NGY5ZjRhMmI1ZjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUu
Y3BwCkBAIC0xMTQ5LDcgKzExNDksNyBAQCBBdWRpb1NvdXJjZVByb3ZpZGVyKiBNZWRpYVBsYXll
clByaXZhdGVSZW1vdGU6OmF1ZGlvU291cmNlUHJvdmlkZXIoKQogI2VuZGlmCiAKICNpZiBFTkFC
TEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKLXN0ZDo6dW5pcXVlX3B0cjxMZWdhY3lDRE1TZXNz
aW9uPiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNyZWF0ZVNlc3Npb24oY29uc3QgU3RyaW5n
JiwgTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCopCitzdGQ6OnVuaXF1ZV9wdHI8TGVnYWN5Q0RNU2Vz
c2lvbj4gTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjcmVhdGVTZXNzaW9uKGNvbnN0IFN0cmlu
ZyYsIExlZ2FjeUNETVNlc3Npb25DbGllbnQmKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAg
ICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaAppbmRleCBhNTU5OWQ2
MjUyMGRiMmM4N2QwMTFlYTJkMmFkNDgxNjNlNjkwMDEzLi5iMGFmZTIxZWUwM2VlMjYzNzg0MDk3
MmJmMmYzMDQ0NzIzZDY3MWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmgKQEAgLTM0Nyw3
ICszNDcsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRF
RF9NRURJQSkKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TGVnYWN5Q0RNU2Vzc2lvbj4g
Y3JlYXRlU2Vzc2lvbihjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpMZWdhY3lDRE1TZXNzaW9uQ2xp
ZW50KikgZmluYWw7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkxlZ2FjeUNETVNlc3Np
b24+IGNyZWF0ZVNlc3Npb24oY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6TGVnYWN5Q0RNU2Vzc2lv
bkNsaWVudCYpIGZpbmFsOwogICAgIHZvaWQgc2V0Q0RNKFdlYkNvcmU6OkxlZ2FjeUNETSopIGZp
bmFsOwogICAgIHZvaWQgc2V0Q0RNU2Vzc2lvbihXZWJDb3JlOjpMZWdhY3lDRE1TZXNzaW9uKikg
ZmluYWw7CiAgICAgdm9pZCBrZXlBZGRlZCgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE0uY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE0uY3BwCmluZGV4IDc1NmY4
Zjk5ZjE2MjY5MzM4N2YwOTNkZDZmMmIwNTRhOGY3OTlmNWYuLjhhM2FiOWVkMzc1YTJlOTJlOWNi
MzM3Nzk3ZTZmODQ2OWVlZDk1YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETS5jcHAKQEAgLTYwLDE4ICs2MCwyMyBAQCBi
b29sIFJlbW90ZUxlZ2FjeUNETTo6c3VwcG9ydHNNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVU
eXBlKQogICAgIHJldHVybiBzdXBwb3J0ZWQ7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxXZWJDb3Jl
OjpMZWdhY3lDRE1TZXNzaW9uPiBSZW1vdGVMZWdhY3lDRE06OmNyZWF0ZVNlc3Npb24oV2ViQ29y
ZTo6TGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCogY2xpZW50KQorc3RkOjp1bmlxdWVfcHRyPFdlYkNv
cmU6OkxlZ2FjeUNETVNlc3Npb24+IFJlbW90ZUxlZ2FjeUNETTo6Y3JlYXRlU2Vzc2lvbihXZWJD
b3JlOjpMZWdhY3lDRE1TZXNzaW9uQ2xpZW50JiBjbGllbnQpCiB7CiAgICAgaWYgKCFtX2ZhY3Rv
cnkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgU3RyaW5nIHN0b3JhZ2VEaXJlY3Rv
cnkgPSBjbGllbnQgPyBjbGllbnQtPm1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSA6IGVtcHR5
U3RyaW5nKCk7CisgICAgU3RyaW5nIHN0b3JhZ2VEaXJlY3RvcnkgPSBjbGllbnQubWVkaWFLZXlz
U3RvcmFnZURpcmVjdG9yeSgpOworCisgICAgdWludDY0X3QgbG9nSWRlbnRpZmllciB7IDAgfTsK
KyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBsb2dJZGVudGlmaWVyID0gcmVpbnRlcnBy
ZXRfY2FzdDx1aW50NjRfdD4oY2xpZW50LmxvZ0lkZW50aWZpZXIoKSk7CisjZW5kaWYKIAogICAg
IFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyIGlkZW50aWZpZXI7Ci0gICAgbV9mYWN0
b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdl
czo6UmVtb3RlTGVnYWN5Q0RNUHJveHk6OkNyZWF0ZVNlc3Npb24oc3RvcmFnZURpcmVjdG9yeSks
IE1lc3NhZ2VzOjpSZW1vdGVMZWdhY3lDRE1Qcm94eTo6Q3JlYXRlU2Vzc2lvbjo6UmVwbHkoaWRl
bnRpZmllciksIG1faWRlbnRpZmllcik7CisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVj
dGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlTGVnYWN5Q0RNUHJv
eHk6OkNyZWF0ZVNlc3Npb24oc3RvcmFnZURpcmVjdG9yeSwgbG9nSWRlbnRpZmllciksIE1lc3Nh
Z2VzOjpSZW1vdGVMZWdhY3lDRE1Qcm94eTo6Q3JlYXRlU2Vzc2lvbjo6UmVwbHkoaWRlbnRpZmll
ciksIG1faWRlbnRpZmllcik7CiAgICAgaWYgKCFpZGVudGlmaWVyKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLSAgICByZXR1cm4gUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbjo6Y3JlYXRlKG1fZmFj
dG9yeSwgV1RGTW92ZShpZGVudGlmaWVyKSk7CisgICAgcmV0dXJuIFJlbW90ZUxlZ2FjeUNETVNl
c3Npb246OmNyZWF0ZShtX2ZhY3RvcnksIFdURk1vdmUoaWRlbnRpZmllciksIGNsaWVudCk7CiB9
CiAKIHZvaWQgUmVtb3RlTGVnYWN5Q0RNOjpzZXRQbGF5ZXJJZChNZWRpYVBsYXllcklkZW50aWZp
ZXIgaWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlTGVnYWN5Q0RNLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUxlZ2FjeUNETS5oCmluZGV4IDQ3ZjAyY2JlYjI0ZDhiNWYwODI2MmQ0NjU1YTA2
OWY5ZDc4MmYwMzcuLmMxMjZjMzFlMGM1MzdmNWQ1ODE1MWY5NjU1NGYzYTgxZjMwNjJhMDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5
Q0RNLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdh
Y3lDRE0uaApAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+UmVtb3RlTGVn
YWN5Q0RNKCk7CiAKICAgICBib29sIHN1cHBvcnRzTUlNRVR5cGUoY29uc3QgU3RyaW5nJikgZmlu
YWw7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkxlZ2FjeUNETVNlc3Npb24+IGNyZWF0
ZVNlc3Npb24oV2ViQ29yZTo6TGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCopIGZpbmFsOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpMZWdhY3lDRE1TZXNzaW9uPiBjcmVhdGVTZXNzaW9uKFdl
YkNvcmU6OkxlZ2FjeUNETVNlc3Npb25DbGllbnQmKSBmaW5hbDsKICAgICB2b2lkIHNldFBsYXll
cklkKFdlYkNvcmU6Ok1lZGlhUGxheWVySWRlbnRpZmllcik7CiAKIHByaXZhdGU6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNl
c3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdh
Y3lDRE1TZXNzaW9uLmNwcAppbmRleCBhNTNmMTU3YmVlYmQ3ZGIyZTgxYjJmNWVjYmQ2MzgxODYy
YTY4MDhhLi4zNzVjMTBlZWE1YTc2NGQ1ZDhlZGM1YTU1MTNkNzk1MjlhNmUwZDc0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNl
c3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
TGVnYWN5Q0RNU2Vzc2lvbi5jcHAKQEAgLTY1LDE0ICs2NSwxNSBAQCBzdGF0aWMgSVBDOjpTaGFy
ZWRCdWZmZXJDb3B5IGNvbnZlcnRUb1NoYXJlZEJ1ZmZlckNvcHkoVCBhcnJheSkKICAgICByZXR1
cm4geyBTaGFyZWRCdWZmZXI6OmNyZWF0ZShhcnJheS0+ZGF0YSgpLCBhcnJheS0+Ynl0ZUxlbmd0
aCgpKSB9OwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbj4gUmVt
b3RlTGVnYWN5Q0RNU2Vzc2lvbjo6Y3JlYXRlKFdlYWtQdHI8UmVtb3RlTGVnYWN5Q0RNRmFjdG9y
eT4gZmFjdG9yeSwgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXImJiBpZGVudGlmaWVy
KQorc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxlZ2FjeUNETVNlc3Npb24+IFJlbW90ZUxlZ2FjeUNE
TVNlc3Npb246OmNyZWF0ZShXZWFrUHRyPFJlbW90ZUxlZ2FjeUNETUZhY3Rvcnk+IGZhY3Rvcnks
IFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyJiYgaWRlbnRpZmllciwgTGVnYWN5Q0RN
U2Vzc2lvbkNsaWVudCYgY2xpZW50KQogewotICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UmVt
b3RlTGVnYWN5Q0RNU2Vzc2lvbj4obmV3IFJlbW90ZUxlZ2FjeUNETVNlc3Npb24oV1RGTW92ZShm
YWN0b3J5KSwgV1RGTW92ZShpZGVudGlmaWVyKSkpOworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9w
dHI8UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbj4obmV3IFJlbW90ZUxlZ2FjeUNETVNlc3Npb24oV1RG
TW92ZShmYWN0b3J5KSwgV1RGTW92ZShpZGVudGlmaWVyKSwgY2xpZW50KSk7CiB9CiAKLVJlbW90
ZUxlZ2FjeUNETVNlc3Npb246OlJlbW90ZUxlZ2FjeUNETVNlc3Npb24oV2Vha1B0cjxSZW1vdGVM
ZWdhY3lDRE1GYWN0b3J5PiBmYWN0b3J5LCBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmll
ciYmIGlkZW50aWZpZXIpCitSZW1vdGVMZWdhY3lDRE1TZXNzaW9uOjpSZW1vdGVMZWdhY3lDRE1T
ZXNzaW9uKFdlYWtQdHI8UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeT4gZmFjdG9yeSwgUmVtb3RlTGVn
YWN5Q0RNU2Vzc2lvbklkZW50aWZpZXImJiBpZGVudGlmaWVyLCBMZWdhY3lDRE1TZXNzaW9uQ2xp
ZW50JiBjbGllbnQpCiAgICAgOiBtX2ZhY3RvcnkoV1RGTW92ZShmYWN0b3J5KSkKICAgICAsIG1f
aWRlbnRpZmllcihXVEZNb3ZlKGlkZW50aWZpZXIpKQorICAgICwgbV9jbGllbnQoY2xpZW50KQog
ewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUxlZ2FjeUNETVNlc3Npb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5oCmluZGV4IDUyYzBkMWE0OGE5NDA5YTFkZDA5NDQ4
YWViNzRjNGM0ODEzMmJkMmIuLjU4MTUxZjQzMjhkYTk2YzdlYTdkOTJkMjYwNjAzOGYzZDA2ZmI3
OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
TGVnYWN5Q0RNU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5oCkBAIC00NCw3ICs0NCw3IEBAIGNsYXNzIFJlbW90
ZUxlZ2FjeUNETVNlc3Npb24gZmluYWwKICAgICA6IHB1YmxpYyBXZWJDb3JlOjpMZWdhY3lDRE1T
ZXNzaW9uCiAgICAgLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgotICAg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbj4gY3JlYXRlKFdl
YWtQdHI8UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeT4sIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVu
dGlmaWVyJiYpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGVnYWN5Q0RNU2Vz
c2lvbj4gY3JlYXRlKFdlYWtQdHI8UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeT4sIFJlbW90ZUxlZ2Fj
eUNETVNlc3Npb25JZGVudGlmaWVyJiYsIFdlYkNvcmU6OkxlZ2FjeUNETVNlc3Npb25DbGllbnQm
KTsKICAgICB+UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbigpOwogCiAgICAgLy8gTWVzc2FnZVJlY2Vp
dmVyCkBAIC01MywxMSArNTMsMTAgQEAgcHVibGljOgogICAgIGNvbnN0IFJlbW90ZUxlZ2FjeUNE
TVNlc3Npb25JZGVudGlmaWVyJiBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlm
aWVyOyB9CiAKIHByaXZhdGU6Ci0gICAgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbihXZWFrUHRyPFJl
bW90ZUxlZ2FjeUNETUZhY3Rvcnk+LCBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllciYm
KTsKKyAgICBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uKFdlYWtQdHI8UmVtb3RlTGVnYWN5Q0RNRmFj
dG9yeT4sIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyJiYsIFdlYkNvcmU6OkxlZ2Fj
eUNETVNlc3Npb25DbGllbnQmKTsKIAogICAgIC8vIExlZ2FjeUNETVNlc3Npb24KICAgICBXZWJD
b3JlOjpMZWdhY3lDRE1TZXNzaW9uVHlwZSB0eXBlKCkgZmluYWwgeyByZXR1cm4gV2ViQ29yZTo6
Q0RNU2Vzc2lvblR5cGVSZW1vdGU7IH0KLSAgICB2b2lkIHNldENsaWVudChXZWJDb3JlOjpMZWdh
Y3lDRE1TZXNzaW9uQ2xpZW50KiBjbGllbnQpIGZpbmFsIHsgbV9jbGllbnQgPSBjbGllbnQ7IH0K
ICAgICBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fc2Vz
c2lvbklkOyB9CiAgICAgUmVmUHRyPFVpbnQ4QXJyYXk+IGdlbmVyYXRlS2V5UmVxdWVzdChjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBVaW50OEFycmF5KiBpbml0RGF0YSwgU3RyaW5nJiBkZXN0aW5h
dGlvblVSTCwgdW5zaWduZWQgc2hvcnQmIGVycm9yQ29kZSwgdWludDMyX3QmIHN5c3RlbUNvZGUp
IGZpbmFsOwogICAgIHZvaWQgcmVsZWFzZUtleXMoKSBmaW5hbDsKQEAgLTcwLDcgKzY5LDcgQEAg
cHJpdmF0ZToKIAogICAgIFdlYWtQdHI8UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeT4gbV9mYWN0b3J5
OwogICAgIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyIG1faWRlbnRpZmllcjsKLSAg
ICBXZWJDb3JlOjpMZWdhY3lDRE1TZXNzaW9uQ2xpZW50KiBtX2NsaWVudDsKKyAgICBXZWFrUHRy
PFdlYkNvcmU6OkxlZ2FjeUNETVNlc3Npb25DbGllbnQ+IG1fY2xpZW50OwogICAgIFN0cmluZyBt
X3Nlc3Npb25JZDsKICAgICBtdXRhYmxlIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8QXJyYXlCdWZm
ZXI+PiBtX2NhY2hlZEtleUNhY2hlOwogfTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447200</attachid>
            <date>2021-12-14 21:04:15 -0800</date>
            <delta_ts>2022-01-28 09:58:20 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-234319-20211214210414.patch</filename>
            <type>text/plain</type>
            <size>77060</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3MDU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGViZDJlY2ViOGM3NzE4
NWY4YmNjYzc2NTNiZTIxZjk5YzM4Nzg4OC4uNjQ2OGFkZWIyYTI5ZWU4MTZmMjczOWJiNjE1ODYx
MDc3NWMzOGUxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkxIEBACisyMDIxLTEyLTE0ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtSZWZhY3Rvcl0gQWRvcHQg
TG9nZ2VySGVscGVyIGluIExvZ2dpbmcgRU1FIGNsYXNzZXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDMxOQorCisgICAgICAgIFJldmlld2VkIGJ5
IEVyaWMgQ2FybHNvbi4KKworICAgICAgICBJbiBvcmRlciB0byBwYXNzIGRvd24gYSBsb2dnZXIo
KSBhbmQgbG9nSWRlbnRpZmllcigpIHRvIHRoZSBwbGF0Zm9ybS8KKyAgICAgICAgY2xhc3Nlcywg
bW9kaWZ5IExlZ2FjeUNETVNlc3Npb25DbGllbnQgdG8gYmUgYSBDYW5NYWtlV2Vha1B0ciBjbGFz
cywKKyAgICAgICAgc28gaXQgY2FuIGJlIHBhc3NlZCBhcm91bmQgYnkgcmVmZXJlbmNlIGFuZCBh
dXRvbWF0aWNhbGx5IGludmFsaWRhdGVkCisgICAgICAgIHdoZW4gdGhlIGNsaWVudCBpcyBkZXN0
cm95ZWQuIFRoZW4gbW9kaWZ5IExlZ2FjeUNETVNlc3Npb25DbGllbnQgdG8KKyAgICAgICAgcHJv
dmlkZSBhIGxvZ2dlcigpIGFuZCBsb2dJZGVudGlmaWVyKCkgdG8gY2FsbGVycy4KKworICAgICAg
ICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpMZWdhY3lDRE06OmNyZWF0ZVNlc3Npb24pOgorICAgICAgICAqIE1vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVByaXZhdGUuaDoKKyAgICAgICAgKiBNb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1Qcml2YXRlQ2xlYXJLZXkuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TGVnYWN5Q0RNUHJpdmF0ZUNsZWFyS2V5OjpjcmVhdGVTZXNzaW9u
KToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1Qcml2
YXRlQ2xlYXJLZXkuaDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9M
ZWdhY3lDRE1Qcml2YXRlTWVkaWFQbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0RNUHJp
dmF0ZU1lZGlhUGxheWVyOjpjcmVhdGVTZXNzaW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1Qcml2YXRlTWVkaWFQbGF5ZXIuaDoKKyAgICAgICAg
KiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1TZXNzaW9uQ2xlYXJLZXku
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0RNU2Vzc2lvbkNsZWFyS2V5OjpDRE1TZXNzaW9uQ2xl
YXJLZXkpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNE
TVNlc3Npb25DbGVhcktleS5oOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVn
YWN5L1dlYktpdE1lZGlhS2V5U2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRN
ZWRpYUtleVNlc3Npb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRNZWRpYUtl
eVNlc3Npb246OldlYktpdE1lZGlhS2V5U2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpXZWJL
aXRNZWRpYUtleVNlc3Npb246OmxvZ0NoYW5uZWwgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViS2l0TWVkaWFLZXlTZXNzaW9uOjp+V2ViS2l0TWVkaWFLZXlTZXNzaW9uKTogRGVsZXRlZC4K
KyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleVNl
c3Npb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRN
ZWRpYUtleXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0TWVkaWFLZXlzOjpjcmVhdGVT
ZXNzaW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRN
ZWRpYUtleXMuaDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJL
aXRNZWRpYUtleXMuaWRsOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0xlZ2FjeUNETVNl
c3Npb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6Y3JlYXRlU2Vzc2lvbik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllclByaXZhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZUludGVyZmFjZTo6Y3JlYXRlU2Vzc2lvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL0NETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akM6OmNyZWF0ZVNlc3Npb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uLmg6CisgICAgICAgIChXZWJD
b3JlOjpDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6bG9nQ2xhc3NOYW1lIGNvbnN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9u
QVZDb250ZW50S2V5U2Vzc2lvbi5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNETVNlc3Npb25BVkNv
bnRlbnRLZXlTZXNzaW9uOjpDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbik6CisgICAgICAg
IChXZWJDb3JlOjpDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6Z2VuZXJhdGVLZXlSZXF1
ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uOjpy
ZWxlYXNlS2V5cyk6CisgICAgICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vz
c2lvbjo6dXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETVNlc3Npb25BVkNvbnRlbnRLZXlT
ZXNzaW9uOjphZGRQYXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNU2Vzc2lvbkFWQ29udGVu
dEtleVNlc3Npb246OnJlbW92ZVBhcnNlcik6CisgICAgICAgIChXZWJDb3JlOjpDRE1TZXNzaW9u
QVZDb250ZW50S2V5U2Vzc2lvbjo6Z2VuZXJhdGVLZXlSZWxlYXNlTWVzc2FnZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWRm91bmRh
dGlvbk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNETVNl
c3Npb25BVkZvdW5kYXRpb25PYmpDOjpDRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQyk6CisgICAg
ICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQzo6fkNETVNlc3Npb25BVkZv
dW5kYXRpb25PYmpDKToKKyAgICAgICAgKFdlYkNvcmU6OkNETVNlc3Npb25BVkZvdW5kYXRpb25P
YmpDOjpnZW5lcmF0ZUtleVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNU2Vzc2lvbkFW
Rm91bmRhdGlvbk9iakM6OnVwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uQVZG
b3VuZGF0aW9uT2JqQzo6cGxheWVyRGlkUmVjZWl2ZUVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6
OkNETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDOjpsb2dDaGFubmVsIGNvbnN0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZTdHJlYW1T
ZXNzaW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uOjps
b2dDbGFzc05hbWUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0NETVNlc3Npb25BVlN0cmVhbVNlc3Npb24ubW06CisgICAgICAgIChXZWJDb3Jl
OjpDRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uOjpDRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkNETVNlc3Npb25BVlN0cmVhbVNlc3Npb246On5DRE1TZXNzaW9u
QVZTdHJlYW1TZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNETVNlc3Npb25BVlN0cmVhbVNl
c3Npb246OmdlbmVyYXRlS2V5UmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1TZXNzaW9u
QVZTdHJlYW1TZXNzaW9uOjpyZWxlYXNlS2V5cyk6CisgICAgICAgIChXZWJDb3JlOjpDRE1TZXNz
aW9uQVZTdHJlYW1TZXNzaW9uOjp1cGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNU2Vzc2lv
bkFWU3RyZWFtU2Vzc2lvbjo6YWRkUGFyc2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkNETVNlc3Np
b25BVlN0cmVhbVNlc3Npb246OnJlbW92ZVBhcnNlcik6CisgICAgICAgIChXZWJDb3JlOjpDRE1T
ZXNzaW9uQVZTdHJlYW1TZXNzaW9uOjpnZW5lcmF0ZUtleVJlbGVhc2VNZXNzYWdlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uTWVkaWFT
b3VyY2VBVkZPYmpDLmg6CisgICAgICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uTWVkaWFTb3VyY2VB
VkZPYmpDOjpsb2dnZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNU2Vzc2lvbk1lZGlh
U291cmNlQVZGT2JqQzo6bG9nSWRlbnRpZmllciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OkNETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakM6OkNETVNl
c3Npb25NZWRpYVNvdXJjZUFWRk9iakMpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNU2Vzc2lvbk1l
ZGlhU291cmNlQVZGT2JqQzo6bG9nQ2hhbm5lbCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzaG91bGRXYWl0Rm9yTG9hZGluZ09m
UmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6Y3JlYXRlU2Vzc2lvbik6CisgICAgICAgICogdGVzdGluZy9MZWdhY3lNb2NrQ0RN
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeU1vY2tDRE06OmNyZWF0ZVNlc3Npb24pOgor
ICAgICAgICAoV2ViQ29yZTo6TW9ja0NETVNlc3Npb246Ok1vY2tDRE1TZXNzaW9uKToKKyAgICAg
ICAgKiB0ZXN0aW5nL0xlZ2FjeU1vY2tDRE0uaDoKKwogMjAyMS0xMi0xMyAgSmVyIE5vYmxlICA8
amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWFjXSBBZG9wdCAtW05TU2NyZWVuIHNh
ZmVBcmVhSW5zZXRzXQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAxNmRlYzU5OTAzODBmMGY2ZWJmZDA0MjI4ZGZmMzlm
ZTc4Njg0MDEwLi5lMmM0ODE1MDVlYjA1NWZhOTVkZWUxMWE3ZGZkMDcyNGMxMjNmZmY5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDIxLTEyLTE0ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVA
YXBwbGUuY29tPgorCisgICAgICAgIFtSZWZhY3Rvcl0gQWRvcHQgTG9nZ2VySGVscGVyIGluIExl
Z2FjeSBFTUUgY2xhc3NlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjM0MzE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisg
ICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk6OmxvZ2dlciBj
b25zdCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5
UHJveHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNUHJveHk6OmNyZWF0ZVNlc3Np
b24pOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblBy
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5Ojpj
cmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OlJl
bW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eSk6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9t
ZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpNZWRp
YVBsYXllclByaXZhdGVSZW1vdGU6OmNyZWF0ZVNlc3Npb24pOgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUxlZ2FjeUNETTo6Y3JlYXRlU2Vzc2lvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlTGVnYWN5Q0RNLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2Fj
eUNETUZhY3Rvcnk6OmNyZWF0ZUNETSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2Fj
eUNETVNlc3Npb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVNl
c3Npb246OlJlbW90ZUxlZ2FjeUNETVNlc3Npb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24uaDoKKwogMjAyMS0xMi0xNCAgSmVyIE5vYmxl
ICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBTYWZhcmkgaW50ZXJtaXR0ZW50bHkg
c3RvcHBpbmcgcGxheWluZyBTcG90aWZ5IFdlYiBQbGF5ZXIgKGN1cnJlbnRUaW1lIGdvZXMgYmFj
a3dhcmRzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9sZWdhY3kvTGVnYWN5Q0RNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvbGVnYWN5L0xlZ2FjeUNETS5jcHAKaW5kZXggMjk4MjM3NTFkNGM1OTQyNjcwOGFiODY0
YWI0YWNhMWU5NDY5NTAyZC4uYWVhYTE1Y2JjZDdmMjVmYjRiYTQ3OTVhMGU3YmVmMGE0ZDdkNzBj
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdh
Y3kvTGVnYWN5Q0RNLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL2xlZ2FjeS9MZWdhY3lDRE0uY3BwCkBAIC0xMzAsNyArMTMwLDcgQEAgYm9vbCBMZWdhY3lD
RE06OnN1cHBvcnRzTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgY29uc3QKIAogc3Rk
Ojp1bmlxdWVfcHRyPExlZ2FjeUNETVNlc3Npb24+IExlZ2FjeUNETTo6Y3JlYXRlU2Vzc2lvbihM
ZWdhY3lDRE1TZXNzaW9uQ2xpZW50JiBjbGllbnQpCiB7Ci0gICAgYXV0byBzZXNzaW9uID0gbV9w
cml2YXRlLT5jcmVhdGVTZXNzaW9uKCZjbGllbnQpOworICAgIGF1dG8gc2Vzc2lvbiA9IG1fcHJp
dmF0ZS0+Y3JlYXRlU2Vzc2lvbihjbGllbnQpOwogICAgIGlmIChtZWRpYVBsYXllcigpKQogICAg
ICAgICBtZWRpYVBsYXllcigpLT5zZXRDRE1TZXNzaW9uKHNlc3Npb24uZ2V0KCkpOwogICAgIHJl
dHVybiBzZXNzaW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNUHJpdmF0ZS5oCmluZGV4IGYyNDk3MDcy
ZTc4NTc2MGM1OWUyMzAzOTM0ZmI3ZjljYzQ3NzJkZmIuLmU3ZDRjNGI3YzU0MDhjMGIyMmE4YzFi
YWQzOGViN2RhMzBjOGZkNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1Qcml2YXRlLmgKQEAgLTQy
LDcgKzQyLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzTUlNRVR5cGUo
Y29uc3QgU3RyaW5nJikgPSAwOwogCi0gICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8TGVnYWN5
Q0RNU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbihMZWdhY3lDRE1TZXNzaW9uQ2xpZW50KikgPSAwOwor
ICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNETVNlc3Npb24+IGNyZWF0ZVNlc3Np
b24oTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCYpID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
bGVnYWN5L0xlZ2FjeUNETVByaXZhdGVDbGVhcktleS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1Qcml2YXRlQ2xlYXJLZXkuY3BwCmlu
ZGV4IDE3ZDRmYjcyNzQwZDZlMWMzZGY2ZmU2Zjc2ODc1YjRjOTRiMjNiYjcuLmI3YWZmY2E5MTM5
YTc5MDRkZTJjNDk4NDA3Yzk3OTBmMjIzZGQ0NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVByaXZhdGVDbGVhcktleS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVn
YWN5Q0RNUHJpdmF0ZUNsZWFyS2V5LmNwcApAQCAtNTksNyArNTksNyBAQCBib29sIExlZ2FjeUNE
TVByaXZhdGVDbGVhcktleTo6c3VwcG9ydHNNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBl
KQogICAgIHJldHVybiBNZWRpYVBsYXllcjo6c3VwcG9ydHNLZXlTeXN0ZW0obV9jZG0tPmtleVN5
c3RlbSgpLCBtaW1lVHlwZSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxMZWdhY3lDRE1TZXNzaW9u
PiBMZWdhY3lDRE1Qcml2YXRlQ2xlYXJLZXk6OmNyZWF0ZVNlc3Npb24oTGVnYWN5Q0RNU2Vzc2lv
bkNsaWVudCogY2xpZW50KQorc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNETVNlc3Npb24+IExlZ2Fj
eUNETVByaXZhdGVDbGVhcktleTo6Y3JlYXRlU2Vzc2lvbihMZWdhY3lDRE1TZXNzaW9uQ2xpZW50
JiBjbGllbnQpCiB7CiAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q0RNU2Vzc2lvbkNsZWFyS2V5Pihj
bGllbnQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9sZWdhY3kvTGVnYWN5Q0RNUHJpdmF0ZUNsZWFyS2V5LmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1Qcml2YXRlQ2xlYXJLZXkuaApp
bmRleCA4NzY0NjhiYTQ0OTdlYTViYTlhZGEzZTFlYmNjMjViMjEzOWI5N2Q0Li43MWI4MjgyYjcx
NTJiZjhiNzcxMjhmODRkZTc1MmQxYmVmZTFiNmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1Qcml2YXRlQ2xlYXJLZXku
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdh
Y3lDRE1Qcml2YXRlQ2xlYXJLZXkuaApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIGJvb2wgc3VwcG9ydHNLZXlTeXN0ZW1BbmRNaW1lVHlwZShjb25zdCBTdHJpbmcmIGtleVN5
c3RlbSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CiAKICAgICBib29sIHN1cHBvcnRzTUlNRVR5
cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgb3ZlcnJpZGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRy
PExlZ2FjeUNETVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCop
IG92ZXJyaWRlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxMZWdhY3lDRE1TZXNzaW9uPiBjcmVhdGVT
ZXNzaW9uKExlZ2FjeUNETVNlc3Npb25DbGllbnQmKSBvdmVycmlkZTsKIAogcHJvdGVjdGVkOgog
ICAgIExlZ2FjeUNETSogbV9jZG07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1Qcml2YXRlTWVkaWFQbGF5ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNUHJp
dmF0ZU1lZGlhUGxheWVyLmNwcAppbmRleCAzNTJlZmE4OTAzMjAzOTI3OTFiYTNkZDczNGQ3ZWJl
NGYzMmZkYjE4Li43ZjJlNzE1ZmNmM2ExNDUwNGFjNjljMGQ3ODFjY2Y3ODJkNjJmYjMyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdh
Y3lDRE1Qcml2YXRlTWVkaWFQbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVByaXZhdGVNZWRpYVBsYXllci5jcHAKQEAg
LTU0LDcgKzU0LDcgQEAgYm9vbCBDRE1Qcml2YXRlTWVkaWFQbGF5ZXI6OnN1cHBvcnRzTUlNRVR5
cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OnN1cHBv
cnRzS2V5U3lzdGVtKG1fY2RtLT5rZXlTeXN0ZW0oKSwgbWltZVR5cGUpOwogfQogCi1zdGQ6OnVu
aXF1ZV9wdHI8TGVnYWN5Q0RNU2Vzc2lvbj4gQ0RNUHJpdmF0ZU1lZGlhUGxheWVyOjpjcmVhdGVT
ZXNzaW9uKExlZ2FjeUNETVNlc3Npb25DbGllbnQqIGNsaWVudCkKK3N0ZDo6dW5pcXVlX3B0cjxM
ZWdhY3lDRE1TZXNzaW9uPiBDRE1Qcml2YXRlTWVkaWFQbGF5ZXI6OmNyZWF0ZVNlc3Npb24oTGVn
YWN5Q0RNU2Vzc2lvbkNsaWVudCYgY2xpZW50KQogewogICAgIGF1dG8gbWVkaWFQbGF5ZXIgPSBt
X2NkbS0+bWVkaWFQbGF5ZXIoKTsKICAgICBpZiAoIW1lZGlhUGxheWVyKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNUHJp
dmF0ZU1lZGlhUGxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L2xlZ2FjeS9MZWdhY3lDRE1Qcml2YXRlTWVkaWFQbGF5ZXIuaAppbmRleCA2NjAyZWJmZTkwNDQ1
YzU1OTNjNmU1ZmY4ZjFhNWIyZTJkZDkyYzE3Li41ZGMzYzExMGIwNzRlNzc1MjNmMmEwYjk2Njg4
NGNjNDdkYWEzOTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1Qcml2YXRlTWVkaWFQbGF5ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1Qcml2YXRlTWVk
aWFQbGF5ZXIuaApAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q0RNUHJp
dmF0ZU1lZGlhUGxheWVyKCkgPSBkZWZhdWx0OwogCiAgICAgYm9vbCBzdXBwb3J0c01JTUVUeXBl
KGNvbnN0IFN0cmluZyYgbWltZVR5cGUpIG92ZXJyaWRlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxM
ZWdhY3lDRE1TZXNzaW9uPiBjcmVhdGVTZXNzaW9uKExlZ2FjeUNETVNlc3Npb25DbGllbnQqKSBv
dmVycmlkZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TGVnYWN5Q0RNU2Vzc2lvbj4gY3JlYXRlU2Vz
c2lvbihMZWdhY3lDRE1TZXNzaW9uQ2xpZW50Jikgb3ZlcnJpZGU7CiAKICAgICBMZWdhY3lDRE0q
IGNkbSgpIGNvbnN0IHsgcmV0dXJuIG1fY2RtOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVNlc3Npb25DbGVhcktl
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdh
Y3lDRE1TZXNzaW9uQ2xlYXJLZXkuY3BwCmluZGV4IDNjOWNlNjU4NjYxYjRlYjNiNDdlMjlmMzkz
ODUzNWNmOTc2MTczN2QuLjRmZjZhZGY0ZWNmZDdkZWJhZWFiMDUxZDU5NjBiNGI5NTkyZmM3OGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5
L0xlZ2FjeUNETVNlc3Npb25DbGVhcktleS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNU2Vzc2lvbkNsZWFyS2V5LmNwcApAQCAt
NDksNyArNDksNyBAQCBzdGF0aWMgVk0mIGNsZWFyS2V5Vk0oKQogICAgIHJldHVybiB2bTsKIH0K
IAotQ0RNU2Vzc2lvbkNsZWFyS2V5OjpDRE1TZXNzaW9uQ2xlYXJLZXkoTGVnYWN5Q0RNU2Vzc2lv
bkNsaWVudCogY2xpZW50KQorQ0RNU2Vzc2lvbkNsZWFyS2V5OjpDRE1TZXNzaW9uQ2xlYXJLZXko
TGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCYgY2xpZW50KQogICAgIDogbV9jbGllbnQoY2xpZW50KQog
ICAgICwgbV9zZXNzaW9uSWQoY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpKQogewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5
Q0RNU2Vzc2lvbkNsZWFyS2V5LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL2xlZ2FjeS9MZWdhY3lDRE1TZXNzaW9uQ2xlYXJLZXkuaAppbmRleCBmZTUzNDU5MWFkN2Q1
NjAwYzQxOWZhYzc5NzA0YzQxZDY2NzFiNDkwLi5hOWI0ZDBhMzYzZWQ1OGI0YzBkNDJhNDMyY2U5
Nzg0ZTcxYTcxYTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1TZXNzaW9uQ2xlYXJLZXkuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1TZXNzaW9uQ2xlYXJL
ZXkuaApAQCAtMzYsMTIgKzM2LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENETVNl
c3Npb25DbGVhcktleSBmaW5hbCA6IHB1YmxpYyBMZWdhY3lDRE1TZXNzaW9uIHsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBDRE1TZXNzaW9uQ2xlYXJLZXkoTGVn
YWN5Q0RNU2Vzc2lvbkNsaWVudCopOworICAgIENETVNlc3Npb25DbGVhcktleShMZWdhY3lDRE1T
ZXNzaW9uQ2xpZW50Jik7CiAgICAgdmlydHVhbCB+Q0RNU2Vzc2lvbkNsZWFyS2V5KCk7CiAKICAg
ICAvLyBDRE1TZXNzaW9uUHJpdmF0ZQogICAgIExlZ2FjeUNETVNlc3Npb25UeXBlIHR5cGUoKSBv
dmVycmlkZSB7IHJldHVybiBDRE1TZXNzaW9uVHlwZUNsZWFyS2V5OyB9Ci0gICAgdm9pZCBzZXRD
bGllbnQoTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCogY2xpZW50KSBvdmVycmlkZSB7IG1fY2xpZW50
ID0gY2xpZW50OyB9CiAgICAgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtX3Nlc3Npb25JZDsgfQogICAgIFJlZlB0cjxVaW50OEFycmF5PiBnZW5lcmF0
ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgVWludDhBcnJheSosIFN0cmluZyYs
IHVuc2lnbmVkIHNob3J0JiwgdWludDMyX3QmKSBvdmVycmlkZTsKICAgICB2b2lkIHJlbGVhc2VL
ZXlzKCkgb3ZlcnJpZGU7CkBAIC00OSw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICBSZWZQdHI8QXJy
YXlCdWZmZXI+IGNhY2hlZEtleUZvcktleUlEKGNvbnN0IFN0cmluZyYpIGNvbnN0IG92ZXJyaWRl
OwogCiBwcml2YXRlOgotICAgIExlZ2FjeUNETVNlc3Npb25DbGllbnQqIG1fY2xpZW50OworICAg
IFdlYWtQdHI8TGVnYWN5Q0RNU2Vzc2lvbkNsaWVudD4gbV9jbGllbnQ7CiAgICAgUmVmUHRyPFVp
bnQ4QXJyYXk+IG1faW5pdERhdGE7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFZlY3Rvcjx1aW50OF90
Pj4gbV9jYWNoZWRLZXlzOwogICAgIFN0cmluZyBtX3Nlc3Npb25JZDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5
U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2Fj
eS9XZWJLaXRNZWRpYUtleVNlc3Npb24uY3BwCmluZGV4IDljOTVkOWVhMTNkMmQ5MWU1NWI4NDI2
YTU4NzFlNDJhMGNmZGY5Y2IuLjA5NmNlOTYzOGE3NDY0ZDQwMmJhZDVkMzY3OWU2OTYzMzIyZTQw
ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVn
YWN5L1dlYktpdE1lZGlhS2V5U2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9uLmNwcApAQCAtMzEs
NiArMzEsNyBAQAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRXZlbnRMb29wLmgi
CiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRl
ICJQYWdlLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW5EYXRhLmgiCiAjaW5jbHVkZSAiU2V0
dGluZ3MuaCIKQEAgLTQwLDM4ICs0MSw0MyBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Vp
bnQ4QXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9J
c29NYWxsb2NJbmxpbmVzLmg+CisjaW5jbHVkZSA8d3RmL0xvZ2dlckhlbHBlci5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChXZWJLaXRNZWRp
YUtleVNlc3Npb24pOwogCi1SZWY8V2ViS2l0TWVkaWFLZXlTZXNzaW9uPiBXZWJLaXRNZWRpYUtl
eVNlc3Npb246OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBXZWJLaXRN
ZWRpYUtleXMmIGtleXMsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKQorUmVmPFdlYktpdE1lZGlh
S2V5U2Vzc2lvbj4gV2ViS2l0TWVkaWFLZXlTZXNzaW9uOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3Vt
ZW50LCBXZWJLaXRNZWRpYUtleXMmIGtleXMsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKQogewot
ICAgIGF1dG8gc2Vzc2lvbiA9IGFkb3B0UmVmKCpuZXcgV2ViS2l0TWVkaWFLZXlTZXNzaW9uKGNv
bnRleHQsIGtleXMsIGtleVN5c3RlbSkpOworICAgIGF1dG8gc2Vzc2lvbiA9IGFkb3B0UmVmKCpu
ZXcgV2ViS2l0TWVkaWFLZXlTZXNzaW9uKGRvY3VtZW50LCBrZXlzLCBrZXlTeXN0ZW0pKTsKICAg
ICBzZXNzaW9uLT5zdXNwZW5kSWZOZWVkZWQoKTsKICAgICByZXR1cm4gc2Vzc2lvbjsKIH0KIAot
V2ViS2l0TWVkaWFLZXlTZXNzaW9uOjpXZWJLaXRNZWRpYUtleVNlc3Npb24oU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCwgV2ViS2l0TWVkaWFLZXlzJiBrZXlzLCBjb25zdCBTdHJpbmcm
IGtleVN5c3RlbSkKLSAgICA6IEFjdGl2ZURPTU9iamVjdCgmY29udGV4dCkKK1dlYktpdE1lZGlh
S2V5U2Vzc2lvbjo6V2ViS2l0TWVkaWFLZXlTZXNzaW9uKERvY3VtZW50JiBkb2N1bWVudCwgV2Vi
S2l0TWVkaWFLZXlzJiBrZXlzLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSkKKyAgICA6IEFjdGl2
ZURPTU9iamVjdCgmZG9jdW1lbnQpCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgLCBt
X2xvZ2dlcihkb2N1bWVudC5sb2dnZXIoKSkKKyAgICAsIG1fbG9nSWRlbnRpZmllcihMb2dnZXJI
ZWxwZXI6OnVuaXF1ZUxvZ0lkZW50aWZpZXIoKSkKKyNlbmRpZgogICAgICwgbV9rZXlzKCZrZXlz
KQogICAgICwgbV9rZXlTeXN0ZW0oa2V5U3lzdGVtKQogICAgICwgbV9zZXNzaW9uKGtleXMuY2Rt
KCkuY3JlYXRlU2Vzc2lvbigqdGhpcykpCiAgICAgLCBtX2tleVJlcXVlc3RUaW1lcigqdGhpcywg
JldlYktpdE1lZGlhS2V5U2Vzc2lvbjo6a2V5UmVxdWVzdFRpbWVyRmlyZWQpCiAgICAgLCBtX2Fk
ZEtleVRpbWVyKCp0aGlzLCAmV2ViS2l0TWVkaWFLZXlTZXNzaW9uOjphZGRLZXlUaW1lckZpcmVk
KQogeworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CiAgICAgaWYgKG1fc2Vzc2lvbikK
ICAgICAgICAgbV9zZXNzaW9uSWQgPSBtX3Nlc3Npb24tPnNlc3Npb25JZCgpOwogfQogCiBXZWJL
aXRNZWRpYUtleVNlc3Npb246On5XZWJLaXRNZWRpYUtleVNlc3Npb24oKQogewotICAgIGlmICht
X3Nlc3Npb24pCi0gICAgICAgIG1fc2Vzc2lvbi0+c2V0Q2xpZW50KG51bGxwdHIpOworICAgIEFM
V0FZU19MT0coTE9HSURFTlRJRklFUik7CiB9Ci0KIHZvaWQgV2ViS2l0TWVkaWFLZXlTZXNzaW9u
OjpjbG9zZSgpCiB7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKICAgICBpZiAobV9z
ZXNzaW9uKSB7CiAgICAgICAgIG1fc2Vzc2lvbi0+cmVsZWFzZUtleXMoKTsKICAgICAgICAgbV9z
ZXNzaW9uID0gbnVsbHB0cjsKQEAgLTg1LDYgKzkxLDcgQEAgUmVmUHRyPEFycmF5QnVmZmVyPiBX
ZWJLaXRNZWRpYUtleVNlc3Npb246OmNhY2hlZEtleUZvcktleUlkKGNvbnN0IFN0cmluZyYga2V5
SWQKIAogdm9pZCBXZWJLaXRNZWRpYUtleVNlc3Npb246OmdlbmVyYXRlS2V5UmVxdWVzdChjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBSZWY8VWludDhBcnJheT4mJiBpbml0RGF0YSkKIHsKKyAgICBB
TFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJtaW1lVHlwZTogIiwgbWltZVR5cGUpOwogICAgIG1f
cGVuZGluZ0tleVJlcXVlc3RzLmFwcGVuZCh7IG1pbWVUeXBlLCBXVEZNb3ZlKGluaXREYXRhKSB9
KTsKICAgICBtX2tleVJlcXVlc3RUaW1lci5zdGFydE9uZVNob3QoMF9zKTsKIH0KQEAgLTEzOCw5
ICsxNDUsMTIgQEAgRXhjZXB0aW9uT3I8dm9pZD4gV2ViS2l0TWVkaWFLZXlTZXNzaW9uOjp1cGRh
dGUoUmVmPFVpbnQ4QXJyYXk+JiYga2V5KQogICAgIC8vIFRoZSBhZGRLZXkoa2V5KSBtZXRob2Qg
bXVzdCBydW4gdGhlIGZvbGxvd2luZyBzdGVwczoKICAgICAvLyAxLiBJZiB0aGUgZmlyc3Qgb3Ig
c2Vjb25kIGFyZ3VtZW50IFtzaWNdIGlzIGFuIGVtcHR5IGFycmF5LCB0aHJvdyBhbiBJbnZhbGlk
QWNjZXNzRXJyb3IuCiAgICAgLy8gTk9URTogdGhlIHJlZmVyZW5jZSB0byBhICJzZWNvbmQgYXJn
dW1lbnQiIGlzIGEgc3BlYyBidWcuCi0gICAgaWYgKCFrZXktPmxlbmd0aCgpKQorICAgIGlmICgh
a2V5LT5sZW5ndGgoKSkgeworICAgICAgICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwgImVycm9y
OiBlbXB0eSBrZXkiKTsKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRBY2Nlc3NF
cnJvciB9OworICAgIH0KIAorICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CiAgICAgLy8g
Mi4gU2NoZWR1bGUgYSB0YXNrIHRvIGhhbmRsZSB0aGUgY2FsbCwgcHJvdmlkaW5nIGtleS4KICAg
ICBtX3BlbmRpbmdLZXlzLmFwcGVuZChXVEZNb3ZlKGtleSkpOwogICAgIG1fYWRkS2V5VGltZXIu
c3RhcnRPbmVTaG90KDBfcyk7CkBAIC0yMDQsNiArMjE0LDcgQEAgdm9pZCBXZWJLaXRNZWRpYUtl
eVNlc3Npb246OmFkZEtleVRpbWVyRmlyZWQoKQogCiB2b2lkIFdlYktpdE1lZGlhS2V5U2Vzc2lv
bjo6c2VuZE1lc3NhZ2UoVWludDhBcnJheSogbWVzc2FnZSwgU3RyaW5nIGRlc3RpbmF0aW9uVVJM
KQogeworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CiAgICAgYXV0byBldmVudCA9IFdl
YktpdE1lZGlhS2V5TWVzc2FnZUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLndlYmtpdGtleW1l
c3NhZ2VFdmVudCwgbWVzc2FnZSwgZGVzdGluYXRpb25VUkwpOwogICAgIGV2ZW50LT5zZXRUYXJn
ZXQodGhpcyk7CiAgICAgcXVldWVUYXNrVG9EaXNwYXRjaEV2ZW50KCp0aGlzLCBUYXNrU291cmNl
OjpOZXR3b3JraW5nLCBXVEZNb3ZlKGV2ZW50KSk7CkBAIC0yMTEsNiArMjIyLDcgQEAgdm9pZCBX
ZWJLaXRNZWRpYUtleVNlc3Npb246OnNlbmRNZXNzYWdlKFVpbnQ4QXJyYXkqIG1lc3NhZ2UsIFN0
cmluZyBkZXN0aW5hdGlvblUKIAogdm9pZCBXZWJLaXRNZWRpYUtleVNlc3Npb246OnNlbmRFcnJv
cihNZWRpYUtleUVycm9yQ29kZSBlcnJvckNvZGUsIHVpbnQzMl90IHN5c3RlbUNvZGUpCiB7Cisg
ICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAiZXJyb3JDb2RlOiAiLCAodW5zaWduZWQpZXJy
b3JDb2RlLCAiLCBzeXN0ZW1Db2RlOiAiLCBzeXN0ZW1Db2RlKTsKICAgICBtX2Vycm9yID0gV2Vi
S2l0TWVkaWFLZXlFcnJvcjo6Y3JlYXRlKGVycm9yQ29kZSwgc3lzdGVtQ29kZSk7CiAKICAgICBh
dXRvIGtleWVycm9yRXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS53ZWJraXRrZXll
cnJvckV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8p
OwpAQCAtMjUwLDYgKzI2MiwxMyBAQCBjb25zdCBjaGFyKiBXZWJLaXRNZWRpYUtleVNlc3Npb246
OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdAogICAgIHJldHVybiAiV2ViS2l0TWVkaWFLZXlT
ZXNzaW9uIjsKIH0KIAorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorV1RGTG9nQ2hhbm5lbCYg
V2ViS2l0TWVkaWFLZXlTZXNzaW9uOjpsb2dDaGFubmVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
TG9nRU1FOworfQorI2VuZGlmCisKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleVNlc3Npb24u
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1l
ZGlhS2V5U2Vzc2lvbi5oCmluZGV4IGZmM2Y2YmY3YjhiYjNhZmQ5OWJlNjYxMGQwZGE2YzRjZDg5
OWUwOTUuLjRlNzkyZjYzZjYxZTRjNDJkYzhhNDJhYzIxNGJkYWI3NDAwNjJlZjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1l
ZGlhS2V5U2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5U2Vzc2lvbi5oCkBAIC00Myw3ICs0Myw3IEBAIGNsYXNz
IFdlYktpdE1lZGlhS2V5czsKIGNsYXNzIFdlYktpdE1lZGlhS2V5U2Vzc2lvbiBmaW5hbCA6IHB1
YmxpYyBSZWZDb3VudGVkPFdlYktpdE1lZGlhS2V5U2Vzc2lvbj4sIHB1YmxpYyBFdmVudFRhcmdl
dFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwcml2YXRlIExlZ2FjeUNE
TVNlc3Npb25DbGllbnQgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoV2ViS2l0TWVkaWFL
ZXlTZXNzaW9uKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYktpdE1lZGlhS2V5U2Vzc2lv
bj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBXZWJLaXRNZWRpYUtleXMmLCBjb25z
dCBTdHJpbmcmIGtleVN5c3RlbSk7CisgICAgc3RhdGljIFJlZjxXZWJLaXRNZWRpYUtleVNlc3Np
b24+IGNyZWF0ZShEb2N1bWVudCYsIFdlYktpdE1lZGlhS2V5cyYsIGNvbnN0IFN0cmluZyYga2V5
U3lzdGVtKTsKICAgICB+V2ViS2l0TWVkaWFLZXlTZXNzaW9uKCk7CiAKICAgICBXZWJLaXRNZWRp
YUtleUVycm9yKiBlcnJvcigpIHsgcmV0dXJuIG1fZXJyb3IuZ2V0KCk7IH0KQEAgLTYzLDcgKzYz
LDcgQEAgcHVibGljOgogICAgIHVzaW5nIFJlZkNvdW50ZWQ6OmRlcmVmOwogCiBwcml2YXRlOgot
ICAgIFdlYktpdE1lZGlhS2V5U2Vzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgV2ViS2l0
TWVkaWFLZXlzJiwgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pOworICAgIFdlYktpdE1lZGlhS2V5
U2Vzc2lvbihEb2N1bWVudCYsIFdlYktpdE1lZGlhS2V5cyYsIGNvbnN0IFN0cmluZyYga2V5U3lz
dGVtKTsKICAgICB2b2lkIGtleVJlcXVlc3RUaW1lckZpcmVkKCk7CiAgICAgdm9pZCBhZGRLZXlU
aW1lckZpcmVkKCk7CiAKQEAgLTgyLDYgKzgyLDE2IEBAIHByaXZhdGU6CiAgICAgRXZlbnRUYXJn
ZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBX
ZWJLaXRNZWRpYUtleVNlc3Npb25FdmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KICAgICBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgZmluYWwg
eyByZXR1cm4gQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KIAor
I2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIGNvbnN0IExvZ2dlciYgbG9nZ2VyKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV9sb2dnZXI7IH0KKyAgICBjb25zdCB2b2lkKiBsb2dJZGVudGlm
aWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9sb2dJZGVudGlmaWVyOyB9CisgICAgY29uc3Qg
Y2hhciogbG9nQ2xhc3NOYW1lKCkgY29uc3QgeyByZXR1cm4gIldlYktpdE1lZGlhS2V5U2Vzc2lv
biI7IH0KKyAgICBXVEZMb2dDaGFubmVsJiBsb2dDaGFubmVsKCkgY29uc3Q7CisKKyAgICBSZWY8
TG9nZ2VyPiBtX2xvZ2dlcjsKKyAgICBjb25zdCB2b2lkKiBtX2xvZ0lkZW50aWZpZXI7CisjZW5k
aWYKKwogICAgIFdlYktpdE1lZGlhS2V5cyogbV9rZXlzOwogICAgIFN0cmluZyBtX2tleVN5c3Rl
bTsKICAgICBTdHJpbmcgbV9zZXNzaW9uSWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleXMuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlzLmNw
cAppbmRleCAxODFhODM5NDJiMDQwYzcyYzI5ZGNlYWYzNGFmMzZmNDM3ZGVlNjVmLi43MGRiMTFj
NDc0ZTgwMTdhYWI3NGJiOTY1MTRjOWVjMzU0MjQ5MjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleXMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1l
ZGlhS2V5cy5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgV2ViS2l0TWVkaWFLZXlzOjp+V2ViS2l0TWVk
aWFLZXlzKCkKICAgICB9CiB9CiAKLUV4Y2VwdGlvbk9yPFJlZjxXZWJLaXRNZWRpYUtleVNlc3Np
b24+PiBXZWJLaXRNZWRpYUtleXM6OmNyZWF0ZVNlc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8VWludDhBcnJheT4mJiBpbml0RGF0
YSkKK0V4Y2VwdGlvbk9yPFJlZjxXZWJLaXRNZWRpYUtleVNlc3Npb24+PiBXZWJLaXRNZWRpYUtl
eXM6OmNyZWF0ZVNlc3Npb24oRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIHR5cGUs
IFJlZjxVaW50OEFycmF5PiYmIGluaXREYXRhKQogewogICAgIC8vIEZyb20gPGh0dHA6Ly93d3cu
dzMub3JnL1RSLzIwMTQvV0QtZW5jcnlwdGVkLW1lZGlhLTIwMTQwMjE4LyNkb20tY3JlYXRlc2Vz
c2lvbj46CiAgICAgLy8gVGhlIGNyZWF0ZVNlc3Npb24odHlwZSwgaW5pdERhdGEpIG1ldGhvZCBt
dXN0IHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgpAQCAtOTYsNyArOTYsNyBAQCBFeGNlcHRpb25P
cjxSZWY8V2ViS2l0TWVkaWFLZXlTZXNzaW9uPj4gV2ViS2l0TWVkaWFLZXlzOjpjcmVhdGVTZXNz
aW9uKFNjcmlwdEV4ZQogICAgIC8vIDQuIENyZWF0ZSBhIG5ldyBNZWRpYUtleVNlc3Npb24gb2Jq
ZWN0LgogICAgIC8vIDQuMSBMZXQgdGhlIGtleVN5c3RlbSBhdHRyaWJ1dGUgYmUga2V5U3lzdGVt
LgogICAgIC8vIDQuMiBMZXQgdGhlIHNlc3Npb25JZCBhdHRyaWJ1dGUgYmUgYSB1bmlxdWUgU2Vz
c2lvbiBJRCBzdHJpbmcuIEl0IG1heSBiZSBnZW5lcmF0ZWQgYnkgY2RtLgotICAgIGF1dG8gc2Vz
c2lvbiA9IFdlYktpdE1lZGlhS2V5U2Vzc2lvbjo6Y3JlYXRlKGNvbnRleHQsICp0aGlzLCBtX2tl
eVN5c3RlbSk7CisgICAgYXV0byBzZXNzaW9uID0gV2ViS2l0TWVkaWFLZXlTZXNzaW9uOjpjcmVh
dGUoZG9jdW1lbnQsICp0aGlzLCBtX2tleVN5c3RlbSk7CiAKICAgICBtX3Nlc3Npb25zLmFwcGVu
ZChzZXNzaW9uLmNvcHlSZWYoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5cy5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlzLmgKaW5kZXgg
MmQwYzFkMDNmNTQyODk3OGIxODA1YzY0ZWQ5MDE0OWI4NzBjMzZiZC4uNDQ2OTM3NDg2YTIwOWM0
ZjgxZDZlYTQyNDBhNGRjZDc4ZTcxYTFiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlzLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlzLmgK
QEAgLTM1LDggKzM1LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBEb2N1bWVu
dDsKIGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7Ci1jbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0
OwogY2xhc3MgV2ViS2l0TWVkaWFLZXlTZXNzaW9uOwogCiBjbGFzcyBXZWJLaXRNZWRpYUtleXMg
ZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJLaXRNZWRpYUtleXM+LCBwcml2YXRlIExlZ2Fj
eUNETUNsaWVudCB7CkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgRXhjZXB0
aW9uT3I8UmVmPFdlYktpdE1lZGlhS2V5cz4+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGtleVN5c3Rl
bSk7CiAgICAgdmlydHVhbCB+V2ViS2l0TWVkaWFLZXlzKCk7CiAKLSAgICBFeGNlcHRpb25PcjxS
ZWY8V2ViS2l0TWVkaWFLZXlTZXNzaW9uPj4gY3JlYXRlU2Vzc2lvbihTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgUmVmPFVpbnQ4QXJyYXk+JiYgaW5pdERh
dGEpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxXZWJLaXRNZWRpYUtleVNlc3Npb24+PiBjcmVhdGVT
ZXNzaW9uKERvY3VtZW50JiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgUmVmPFVpbnQ4QXJyYXk+
JiYgaW5pdERhdGEpOwogICAgIHN0YXRpYyBib29sIGlzVHlwZVN1cHBvcnRlZChjb25zdCBTdHJp
bmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CiAgICAgY29uc3QgU3RyaW5n
JiBrZXlTeXN0ZW0oKSBjb25zdCB7IHJldHVybiBtX2tleVN5c3RlbTsgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRp
YUtleXMuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kv
V2ViS2l0TWVkaWFLZXlzLmlkbAppbmRleCBiYjY2ZmRlMTQzMjQ3NjZkYTBlNzZhODc3OTc5ZGU3
MTZiN2NkMjQ5Li4xNTE3ODM4NGY3ZGYzZTM5NjE0MmViNWY3NGZlNGYyMWU0YjZiMGViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJL
aXRNZWRpYUtleXMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5cy5pZGwKQEAgLTMwLDcgKzMwLDcgQEAKIF0gaW50ZXJm
YWNlIFdlYktpdE1lZGlhS2V5cyB7CiAgICAgY29uc3RydWN0b3IoRE9NU3RyaW5nIGtleVN5c3Rl
bSk7CiAKLSAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gV2ViS2l0TWVkaWFL
ZXlTZXNzaW9uIGNyZWF0ZVNlc3Npb24oRE9NU3RyaW5nIHR5cGUsIFVpbnQ4QXJyYXkgaW5pdERh
dGEpOworICAgIFtDYWxsV2l0aD1Eb2N1bWVudF0gV2ViS2l0TWVkaWFLZXlTZXNzaW9uIGNyZWF0
ZVNlc3Npb24oRE9NU3RyaW5nIHR5cGUsIFVpbnQ4QXJyYXkgaW5pdERhdGEpOwogICAgIHN0YXRp
YyBib29sZWFuIGlzVHlwZVN1cHBvcnRlZChET01TdHJpbmcga2V5U3lzdGVtLCBvcHRpb25hbCBE
T01TdHJpbmcgdHlwZSk7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBrZXlTeXN0
ZW07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGVn
YWN5Q0RNU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGVnYWN5
Q0RNU2Vzc2lvbi5oCmluZGV4IGY4NDRmNGY5ODY5YWQwNzMyNmUyYmFhZDI2ZWFmOWRlN2E1OWY1
YmIuLmI5MTcxYmEyZTY2YWMyNTliNjMzYTJkMWEwNmE2MzlmNDAxYzkxYTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xlZ2FjeUNETVNlc3Npb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MZWdhY3lDRE1TZXNzaW9uLmgKQEAg
LTI5LDEwICsyOSwxMSBAQAogCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRm9yd2FyZC5oPgog
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBMZWdhY3lDRE1TZXNzaW9uQ2xpZW50IHsKK2NsYXNz
IExlZ2FjeUNETVNlc3Npb25DbGllbnQgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8TGVnYWN5Q0RN
U2Vzc2lvbkNsaWVudD4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIHZpcnR1YWwgfkxlZ2FjeUNETVNlc3Npb25DbGllbnQoKSA9IGRlZmF1bHQ7CkBAIC01MCw2
ICs1MSwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNlbmRFcnJvcihNZWRpYUtleUVy
cm9yQ29kZSwgdWludDMyX3Qgc3lzdGVtQ29kZSkgPSAwOwogCiAgICAgdmlydHVhbCBTdHJpbmcg
bWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0ID0gMDsKKworI2lmICFSRUxFQVNFX0xP
R19ESVNBQkxFRAorICAgIHZpcnR1YWwgY29uc3QgTG9nZ2VyJiBsb2dnZXIoKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKCkgY29uc3QgPSAwOworI2Vu
ZGlmCiB9OwogCiBlbnVtIExlZ2FjeUNETVNlc3Npb25UeXBlIHsKQEAgLTY2LDcgKzcyLDYgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgfkxlZ2FjeUNETVNlc3Npb24oKSA9IGRlZmF1bHQ7CiAKICAg
ICB2aXJ0dWFsIExlZ2FjeUNETVNlc3Npb25UeXBlIHR5cGUoKSB7IHJldHVybiBDRE1TZXNzaW9u
VHlwZVVua25vd247IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q2xpZW50KExlZ2FjeUNETVNlc3Np
b25DbGllbnQqKSA9IDA7CiAgICAgdmlydHVhbCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCgpIGNv
bnN0ID0gMDsKICAgICB2aXJ0dWFsIFJlZlB0cjxVaW50OEFycmF5PiBnZW5lcmF0ZUtleVJlcXVl
c3QoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgVWludDhBcnJheSogaW5pdERhdGEsIFN0cmluZyYg
ZGVzdGluYXRpb25VUkwsIHVuc2lnbmVkIHNob3J0JiBlcnJvckNvZGUsIHVpbnQzMl90JiBzeXN0
ZW1Db2RlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlbGVhc2VLZXlzKCkgPSAwOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IDc1
ZDQ5NTM0ZjRkMWI3OWRiNmRlNzBkYmQ4MzA2YTc0MjdjZDQyMGUuLmY1NjY1MDk2ZjI1ZGI1NzUx
NzJiM2E2MGFlYzcyODFlZDRiNDA2ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTY2OCw3ICs2NjgsNyBAQCB2b2lkIE1lZGlh
UGxheWVyOjpzZXRCdWZmZXJpbmdQb2xpY3koQnVmZmVyaW5nUG9saWN5IHBvbGljeSkKIAogI2lm
IEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQogCi1zdGQ6OnVuaXF1ZV9wdHI8TGVnYWN5
Q0RNU2Vzc2lvbj4gTWVkaWFQbGF5ZXI6OmNyZWF0ZVNlc3Npb24oY29uc3QgU3RyaW5nJiBrZXlT
eXN0ZW0sIExlZ2FjeUNETVNlc3Npb25DbGllbnQqIGNsaWVudCkKK3N0ZDo6dW5pcXVlX3B0cjxM
ZWdhY3lDRE1TZXNzaW9uPiBNZWRpYVBsYXllcjo6Y3JlYXRlU2Vzc2lvbihjb25zdCBTdHJpbmcm
IGtleVN5c3RlbSwgTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCYgY2xpZW50KQogewogICAgIHJldHVy
biBtX3ByaXZhdGUtPmNyZWF0ZVNlc3Npb24oa2V5U3lzdGVtLCBjbGllbnQpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKaW5kZXggMDA0NWI1
NGY1MDQ4MjAzM2Q0ZjhmMzRjNmNkNjVlM2Q5MDlhNzMxMC4uZjU0OWM3OTA4ZGQ4ZTFhZTNkNDlh
OGY1NTM0NWMyNjFkNzJhZjJmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5oCkBAIC0zODAsNyArMzgwLDcgQEAgcHVibGljOgogICAgIC8vIFRo
aXMgaXMgZGlmZmVyZW50IGZyb20gdGhlIGFzeW5jaHJvbm91cyBNZWRpYUtleUVycm9yLgogICAg
IGVudW0gTWVkaWFLZXlFeGNlcHRpb24geyBOb0Vycm9yLCBJbnZhbGlkUGxheWVyU3RhdGUsIEtl
eVN5c3RlbU5vdFN1cHBvcnRlZCB9OwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNETVNl
c3Npb24+IGNyZWF0ZVNlc3Npb24oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIExlZ2FjeUNETVNl
c3Npb25DbGllbnQqKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TGVnYWN5Q0RNU2Vzc2lvbj4gY3Jl
YXRlU2Vzc2lvbihjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgTGVnYWN5Q0RNU2Vzc2lvbkNsaWVu
dCYpOwogICAgIHZvaWQgc2V0Q0RNKExlZ2FjeUNETSopOwogICAgIHZvaWQgc2V0Q0RNU2Vzc2lv
bihMZWdhY3lDRE1TZXNzaW9uKik7CiAgICAgdm9pZCBrZXlBZGRlZCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaAppbmRl
eCBjZjQ2MzEyYzUyYTk4NzJiYzA0NWFkMWQ0MjJhZjQ4YjEwMDhjYTZjLi4xNGJhN2RhZDM3NDA1
MGM4MWIxZTAxN2NmMzE1YzlkMzg5NjBlNzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaApAQCAtMjQ1LDcgKzI0NSw3
IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEp
Ci0gICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8TGVnYWN5Q0RNU2Vzc2lvbj4gY3JlYXRlU2Vz
c2lvbihjb25zdCBTdHJpbmcmLCBMZWdhY3lDRE1TZXNzaW9uQ2xpZW50KikgeyByZXR1cm4gbnVs
bHB0cjsgfQorICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNETVNlc3Npb24+IGNy
ZWF0ZVNlc3Npb24oY29uc3QgU3RyaW5nJiwgTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCYpIHsgcmV0
dXJuIG51bGxwdHI7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0Q0RNKExlZ2FjeUNETSopIHsgfQog
ICAgIHZpcnR1YWwgdm9pZCBzZXRDRE1TZXNzaW9uKExlZ2FjeUNETVNlc3Npb24qKSB7IH0KICAg
ICB2aXJ0dWFsIHZvaWQga2V5QWRkZWQoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RN
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCmluZGV4IDFiNzYzZGQ4NGEzOGQ3NWFhNzU0NGU0
NDk5NDdmYjZjZmRiMTFlNTIuLmZmZWZkNTljYTZkN2FkZDBjZmQxNDY1YWYzMDA3MWFmNTBjNzNh
MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9DRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akMuaApAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNL
ZXlTeXN0ZW1BbmRNaW1lVHlwZShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSk7CiAKICAgICBib29sIHN1cHBvcnRzTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSkgb3ZlcnJpZGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNETVNlc3Npb24+
IGNyZWF0ZVNlc3Npb24oTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCopIG92ZXJyaWRlOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxMZWdhY3lDRE1TZXNzaW9uPiBjcmVhdGVTZXNzaW9uKExlZ2FjeUNETVNl
c3Npb25DbGllbnQmKSBvdmVycmlkZTsKIAogICAgIExlZ2FjeUNETSogY2RtKCkgY29uc3QgeyBy
ZXR1cm4gbV9jZG07IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL0NETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQy5tbQppbmRleCA4NjAyNWYyYTdiMTg1NzhkNDdjODA4OTUxNWQzMWNhZDll
MWM2MWQxLi4yZGFmOGVhYWM5MDhjZWJiYjk0ZGEzMzA2NDRhNWU3NzE3YjM2NzM5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQpAQCAt
MTI3LDcgKzEyNyw3IEBAIGJvb2wgQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c3VwcG9y
dHNNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogICAgIHJldHVybiBNZWRpYVBsYXll
clByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnN1cHBvcnRzVHlwZUFuZENvZGVjcyhwYXJhbWV0
ZXJzKSAhPSBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZDsKIH0KIAot
c3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNETVNlc3Npb24+IENETVByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakM6OmNyZWF0ZVNlc3Npb24oTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCogY2xpZW50KQorc3Rk
Ojp1bmlxdWVfcHRyPExlZ2FjeUNETVNlc3Npb24+IENETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akM6OmNyZWF0ZVNlc3Npb24oTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCYgY2xpZW50KQogewogICAg
IFN0cmluZyBrZXlTeXN0ZW0gPSBtX2NkbS0+a2V5U3lzdGVtKCk7IC8vIExvY2FsIGNvcHkgZm9y
IFN0cmluZ1ZpZXcgdXNhZ2UKICAgICBhdXRvIHBhcmFtZXRlcnMgPSBwYXJzZUtleVN5c3RlbSht
X2NkbS0+a2V5U3lzdGVtKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24u
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NE
TVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uLmgKaW5kZXggMDIxMDI2OTU4NmFmMWQ1YTA0MmM2
M2RjNDY0ZDk5YTIwYzNjNzViMC4uNzE5YTExZmUyMjliZWYwZDQzYzljM2VmZDVkOTAyMDgwZTc2
YzdmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZD
b250ZW50S2V5U2Vzc2lvbi5oCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIENETVByaXZhdGVNZWRp
YVNvdXJjZUFWRk9iakM7CiBjbGFzcyBDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbiA6IHB1
YmxpYyBDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDIHsKICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKLSAgICBDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbihWZWN0
b3I8aW50PiYmIHByb3RvY29sVmVyc2lvbnMsIGludCBjZG1WZXJzaW9uLCBDRE1Qcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDJiwgTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCopOworICAgIENETVNlc3Np
b25BVkNvbnRlbnRLZXlTZXNzaW9uKFZlY3RvcjxpbnQ+JiYgcHJvdG9jb2xWZXJzaW9ucywgaW50
IGNkbVZlcnNpb24sIENETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMmLCBMZWdhY3lDRE1TZXNz
aW9uQ2xpZW50Jik7CiAgICAgdmlydHVhbCB+Q0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24o
KTsKIAogICAgIHN0YXRpYyBib29sIGlzQXZhaWxhYmxlKCk7CkBAIC02Niw2ICs2NiwxMCBAQCBw
cm90ZWN0ZWQ6CiAgICAgYm9vbCBoYXNDb250ZW50S2V5U2Vzc2lvbigpIGNvbnN0IHsgcmV0dXJu
IG1fY29udGVudEtleVNlc3Npb247IH0KICAgICBBVkNvbnRlbnRLZXlTZXNzaW9uKiBjb250ZW50
S2V5U2Vzc2lvbigpOwogCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgY29uc3QgY2hh
ciogbG9nQ2xhc3NOYW1lKCkgY29uc3QgeyByZXR1cm4gIkNETVNlc3Npb25BVkNvbnRlbnRLZXlT
ZXNzaW9uIjsgfQorI2VuZGlmCisKICAgICBSZXRhaW5QdHI8QVZDb250ZW50S2V5U2Vzc2lvbj4g
bV9jb250ZW50S2V5U2Vzc2lvbjsKICAgICBSZXRhaW5QdHI8V2ViQ0RNU2Vzc2lvbkFWQ29udGVu
dEtleVNlc3Npb25EZWxlZ2F0ZT4gbV9jb250ZW50S2V5U2Vzc2lvbkRlbGVnYXRlOwogICAgIFJl
dGFpblB0cjxBVkNvbnRlbnRLZXlSZXF1ZXN0PiBtX2tleVJlcXVlc3Q7CkBAIC03Niw2ICs4MCwx
MSBAQCBwcm90ZWN0ZWQ6CiAgICAgaW50IG1fY2RtVmVyc2lvbjsKICAgICBpbnQzMl90IG1fcHJv
dGVjdGVkVHJhY2tJRCB7IDEgfTsKICAgICBlbnVtIHsgTm9ybWFsLCBLZXlSZWxlYXNlIH0gbV9t
b2RlOworCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgUmVmPGNvbnN0IExvZ2dlcj4g
bV9sb2dnZXI7CisgICAgY29uc3Qgdm9pZCogbV9sb2dJZGVudGlmaWVyOworI2VuZGlmCiB9Owog
CiBpbmxpbmUgQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24qIHRvQ0RNU2Vzc2lvbkFWQ29u
dGVudEtleVNlc3Npb24oTGVnYWN5Q0RNU2Vzc2lvbiogc2Vzc2lvbikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Np
b25BVkNvbnRlbnRLZXlTZXNzaW9uLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24ubW0KaW5k
ZXggNjUyYTA4NTA4NzdlYjc4MGYzNWU2ZWY1MTRlMmFjMzJjZDc3OTNhYy4uN2VjNTc3NDI2MTBj
Mzg0YmU2ZGRkYzU4NzRmZjM5NWU1YjVmMmVkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtl
eVNlc3Npb24ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24ubW0KQEAgLTEwNCwxMyAr
MTA0LDE4IEBAIEBlbmQKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1DRE1TZXNzaW9uQVZDb250
ZW50S2V5U2Vzc2lvbjo6Q0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24oVmVjdG9yPGludD4m
JiBwcm90b2NvbFZlcnNpb25zLCBpbnQgY2RtVmVyc2lvbiwgQ0RNUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQyYgY2RtLCBMZWdhY3lDRE1TZXNzaW9uQ2xpZW50KiBjbGllbnQpCitDRE1TZXNzaW9u
QVZDb250ZW50S2V5U2Vzc2lvbjo6Q0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24oVmVjdG9y
PGludD4mJiBwcm90b2NvbFZlcnNpb25zLCBpbnQgY2RtVmVyc2lvbiwgQ0RNUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQyYgY2RtLCBMZWdhY3lDRE1TZXNzaW9uQ2xpZW50JiBjbGllbnQpCiAgICAg
OiBDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDKGNkbSwgY2xpZW50KQogICAgICwgbV9jb250
ZW50S2V5U2Vzc2lvbkRlbGVnYXRlKGFkb3B0TlMoW1tXZWJDRE1TZXNzaW9uQVZDb250ZW50S2V5
U2Vzc2lvbkRlbGVnYXRlIGFsbG9jXSBpbml0V2l0aFBhcmVudDp0aGlzXSkpCiAgICAgLCBtX3By
b3RvY29sVmVyc2lvbnMoV1RGTW92ZShwcm90b2NvbFZlcnNpb25zKSkKICAgICAsIG1fY2RtVmVy
c2lvbihjZG1WZXJzaW9uKQogICAgICwgbV9tb2RlKE5vcm1hbCkKKyNpZiAhUkVMRUFTRV9MT0df
RElTQUJMRUQKKyAgICAsIG1fbG9nZ2VyKGNsaWVudC5sb2dnZXIoKSkKKyAgICAsIG1fbG9nSWRl
bnRpZmllcihjbGllbnQubG9nSWRlbnRpZmllcigpKQorI2VuZGlmCiB7CisgICAgQUxXQVlTX0xP
RyhMT0dJREVOVElGSUVSKTsKIH0KIAogQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb246On5D
RE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbigpCkBAIC0xMzIsNyArMTM3LDcgQEAgUmVmUHRy
PFVpbnQ4QXJyYXk+IENETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uOjpnZW5lcmF0ZUtleVJl
cXVlc3QoY29uc3QgU3RyaW4KICAgICBVTlVTRURfUEFSQU0oZGVzdGluYXRpb25VUkwpOwogICAg
IEFTU0VSVChpbml0RGF0YSk7CiAKLSAgICBMT0coTWVkaWEsICJDRE1TZXNzaW9uQVZDb250ZW50
S2V5U2Vzc2lvbjo6Z2VuZXJhdGVLZXlSZXF1ZXN0KCVwKSIsIHRoaXMpOworICAgIEFMV0FZU19M
T0coTE9HSURFTlRJRklFUiwgIm1pbWVUeXBlOiAiLCBtaW1lVHlwZSk7CiAKICAgICBlcnJvckNv
ZGUgPSBNZWRpYVBsYXllcjo6Tm9FcnJvcjsKICAgICBzeXN0ZW1Db2RlID0gMDsKQEAgLTE2Myw3
ICsxNjgsNyBAQCB2b2lkIENETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uOjpyZWxlYXNlS2V5
cygpCiAgICAgICAgIGZvciAoYXV0byYgc291cmNlQnVmZmVyIDogbV9zb3VyY2VCdWZmZXJzKQog
ICAgICAgICAgICAgc291cmNlQnVmZmVyLT5mbHVzaCgpOwogCi0gICAgICAgIExPRyhNZWRpYSwg
IkNETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uOjpyZWxlYXNlS2V5cyglcCkgLSBleHBpcmlu
ZyBzdHJlYW0gc2Vzc2lvbiIsIHRoaXMpOworICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJ
RVIsICJleHBpcmluZyBzdHJlYW0gc2Vzc2lvbiIpOwogICAgICAgICBbY29udGVudEtleVNlc3Np
b24oKSBleHBpcmVdOwogCiAgICAgICAgIGlmICghbV9jZXJ0aWZpY2F0ZSkKQEAgLTE4Niw3ICsx
OTEsNyBAQCB2b2lkIENETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uOjpyZWxlYXNlS2V5cygp
CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgIGlmIChtX3Nlc3Npb25J
ZCA9PSBTdHJpbmcocGxheWJhY2tTZXNzaW9uSWRWYWx1ZSkpIHsKLSAgICAgICAgICAgICAgICBM
T0coTWVkaWEsICJDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6cmVsZWFzZUtleXMoJXAp
IC0gZm91bmQgc2Vzc2lvbiwgc2VuZGluZyBleHBpcmF0aW9uIG1lc3NhZ2UiKTsKKyAgICAgICAg
ICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJmb3VuZCBzZXNzaW9uLCBzZW5kaW5n
IGV4cGlyYXRpb24gbWVzc2FnZSIpOwogICAgICAgICAgICAgICAgIG1fZXhwaXJlZFNlc3Npb24g
PSBleHBpcmVkU2Vzc2lvbkRhdGE7CiAgICAgICAgICAgICAgICAgbV9jbGllbnQtPnNlbmRNZXNz
YWdlKFVpbnQ4QXJyYXk6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oW21fZXhw
aXJlZFNlc3Npb24gYnl0ZXNdKSwgW21fZXhwaXJlZFNlc3Npb24gbGVuZ3RoXSkucHRyKCksIGVt
cHR5U3RyaW5nKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjE2LDcgKzIyMSw3IEBA
IGJvb2wgQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb246OnVwZGF0ZShVaW50OEFycmF5KiBr
ZXksIFJlZlB0cjxVaW50OEFycmF5PiYKICAgICBVTlVTRURfUEFSQU0obmV4dE1lc3NhZ2UpOwog
CiAgICAgaWYgKGlzRXF1YWwoa2V5LCAiYWNrbm93bGVkZ2VkIikpIHsKLSAgICAgICAgTE9HKE1l
ZGlhLCAiQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb246OnVwZGF0ZSglcCkgLSBhY2tub3ds
ZWRpbmcgc2VjdXJlIHN0b3AgbWVzc2FnZSIsIHRoaXMpOworICAgICAgICBBTFdBWVNfTE9HKExP
R0lERU5USUZJRVIsICJhY2tub3dsZWRpbmcgc2VjdXJlIHN0b3AgbWVzc2FnZSIpOwogCiAgICAg
ICAgIFN0cmluZyBzdG9yYWdlUGF0aCA9IHRoaXMtPnN0b3JhZ2VQYXRoKCk7CiAgICAgICAgIGlm
ICghbV9leHBpcmVkU2Vzc2lvbiB8fCBzdG9yYWdlUGF0aC5pc0VtcHR5KCkpIHsKQEAgLTIzOSw3
ICsyNDQsNyBAQCBib29sIENETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uOjp1cGRhdGUoVWlu
dDhBcnJheSoga2V5LCBSZWZQdHI8VWludDhBcnJheT4mCiAKICAgICBib29sIHNob3VsZEdlbmVy
YXRlS2V5UmVxdWVzdCA9ICFtX2NlcnRpZmljYXRlIHx8IGlzRXF1YWwoa2V5LCAicmVuZXciKTsK
ICAgICBpZiAoIW1fY2VydGlmaWNhdGUpIHsKLSAgICAgICAgTE9HKE1lZGlhLCAiQ0RNU2Vzc2lv
bkFWQ29udGVudEtleVNlc3Npb246OnVwZGF0ZSglcCkgLSBjZXJ0aWZpY2F0ZSBkYXRhIiwgdGhp
cyk7CisgICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgImNlcnRpZmljYXRlIGRhdGEi
KTsKIAogICAgICAgICBtX2NlcnRpZmljYXRlID0ga2V5OwogICAgIH0KQEAgLTI5NiwxNCArMzAx
LDE2IEBAIGJvb2wgQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb246OnVwZGF0ZShVaW50OEFy
cmF5KiBrZXksIFJlZlB0cjxVaW50OEFycmF5PiYKICAgICAgICAgaWYgKGVycm9yKSB7CiAgICAg
ICAgICAgICBlcnJvckNvZGUgPSBMZWdhY3lDRE06OkRvbWFpbkVycm9yOwogICAgICAgICAgICAg
c3lzdGVtQ29kZSA9IG1lZGlhS2V5RXJyb3JTeXN0ZW1Db2RlKGVycm9yKTsKKyAgICAgICAgICAg
IEVSUk9SX0xPRyhMT0dJREVOVElGSUVSLCAiZXJyb3I6ICIsIFN0cmluZyhlcnJvci5sb2NhbGl6
ZWREZXNjcmlwdGlvbikpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAK
KyAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAiZ2VuZXJhdGVkIGtleSByZXF1ZXN0
Iik7CiAgICAgICAgIG5leHRNZXNzYWdlID0gVWludDhBcnJheTo6dHJ5Q3JlYXRlKHN0YXRpY19j
YXN0PGNvbnN0IHVpbnQ4X3QqPihbcmVxdWVzdERhdGEgYnl0ZXNdKSwgW3JlcXVlc3REYXRhIGxl
bmd0aF0pOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgTE9HKE1lZGlhLCAi
Q0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb246OnVwZGF0ZSglcCkgLSBrZXkgZGF0YSIsIHRo
aXMpOworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgInByb2Nlc3Npbmcga2V5IHJlc3Bv
bnNlIik7CiAgICAgZXJyb3JDb2RlID0gTWVkaWFQbGF5ZXI6Ok5vRXJyb3I7CiAgICAgc3lzdGVt
Q29kZSA9IDA7CiAgICAgUmV0YWluUHRyPE5TRGF0YT4ga2V5RGF0YSA9IGFkb3B0TlMoW1tOU0Rh
dGEgYWxsb2NdIGluaXRXaXRoQnl0ZXM6a2V5LT5kYXRhKCkgbGVuZ3RoOmtleS0+bGVuZ3RoKCld
KTsKQEAgLTMyMyw2ICszMzAsNyBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IENETVNlc3Npb25BVkNv
bnRlbnRLZXlTZXNzaW9uOjpjYWNoZWRLZXlGb3JLZXlJRChjb25zdCBTdHJpbgogCiB2b2lkIENE
TVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uOjphZGRQYXJzZXIoQVZTdHJlYW1EYXRhUGFyc2Vy
KiBwYXJzZXIpCiB7CisgICAgSU5GT19MT0coTE9HSURFTlRJRklFUik7CiAgICAgaWYgKFtjb250
ZW50S2V5U2Vzc2lvbigpIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoYWRkQ29udGVudEtl
eVJlY2lwaWVudDopXSkKICAgICAgICAgW2NvbnRlbnRLZXlTZXNzaW9uKCkgYWRkQ29udGVudEtl
eVJlY2lwaWVudDpwYXJzZXJdOwogICAgIGVsc2UKQEAgLTMzMSw2ICszMzksNyBAQCB2b2lkIENE
TVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uOjphZGRQYXJzZXIoQVZTdHJlYW1EYXRhUGFyc2Vy
KiBwYXJzZXIpCiAKIHZvaWQgQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb246OnJlbW92ZVBh
cnNlcihBVlN0cmVhbURhdGFQYXJzZXIqIHBhcnNlcikKIHsKKyAgICBJTkZPX0xPRyhMT0dJREVO
VElGSUVSKTsKICAgICBpZiAoW2NvbnRlbnRLZXlTZXNzaW9uKCkgcmVzcG9uZHNUb1NlbGVjdG9y
OkBzZWxlY3RvcihyZW1vdmVDb250ZW50S2V5UmVjaXBpZW50OildKQogICAgICAgICBbY29udGVu
dEtleVNlc3Npb24oKSByZW1vdmVDb250ZW50S2V5UmVjaXBpZW50OnBhcnNlcl07CiAgICAgZWxz
ZQpAQCAtMzUxLDE0ICszNjAsMTQgQEAgUmVmUHRyPFVpbnQ4QXJyYXk+IENETVNlc3Npb25BVkNv
bnRlbnRLZXlTZXNzaW9uOjpnZW5lcmF0ZUtleVJlbGVhc2VNZXNzYWdlKHVuc2kKIAogICAgIE5T
QXJyYXkqIGV4cGlyZWRTZXNzaW9ucyA9IFtQQUw6OmdldEFWQ29udGVudEtleVNlc3Npb25DbGFz
cygpIHBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9ydHNXaXRoQXBwSWRlbnRpZmllcjpjZXJ0aWZp
Y2F0ZURhdGEuZ2V0KCkgc3RvcmFnZURpcmVjdG9yeUF0VVJMOltOU1VSTCBmaWxlVVJMV2l0aFBh
dGg6c3RvcmFnZVBhdGhdXTsKICAgICBpZiAoIVtleHBpcmVkU2Vzc2lvbnMgY291bnRdKSB7Ci0g
ICAgICAgIExPRyhNZWRpYSwgIkNETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uOjpnZW5lcmF0
ZUtleVJlbGVhc2VNZXNzYWdlKCVwKSAtIG5vIGV4cGlyZWQgc2Vzc2lvbnMgZm91bmQiLCB0aGlz
KTsKKyAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAibm8gZXhwaXJlZCBzZXNzaW9u
cyBmb3VuZCIpOwogCiAgICAgICAgIGVycm9yQ29kZSA9IE1lZGlhUGxheWVyOjpLZXlTeXN0ZW1O
b3RTdXBwb3J0ZWQ7CiAgICAgICAgIHN5c3RlbUNvZGUgPSAnIW1vcic7CiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIH0KIAotICAgIExPRyhNZWRpYSwgIkNETVNlc3Npb25BVkNvbnRlbnRL
ZXlTZXNzaW9uOjpnZW5lcmF0ZUtleVJlbGVhc2VNZXNzYWdlKCVwKSAtIGZvdW5kICVkIGV4cGly
ZWQgc2Vzc2lvbnMiLCB0aGlzLCBbZXhwaXJlZFNlc3Npb25zIGNvdW50XSk7CisgICAgQUxXQVlT
X0xPRyhMT0dJREVOVElGSUVSLCAiZm91bmQgIiwgW2V4cGlyZWRTZXNzaW9ucyBjb3VudF0sICIg
ZXhwaXJlZCBzZXNzaW9ucyIpOwogCiAgICAgZXJyb3JDb2RlID0gMDsKICAgICBzeXN0ZW1Db2Rl
ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0
aW9uT2JqQy5oCmluZGV4IDk1OTE4ZjAzZTVkYmZiYzdkNTc3N2I3MzRhZjhmYjFlNTEwYzM3MzIu
Ljc5MTBiYzRkZGMyZDFkYzljMmFjMWU4ZjgzZTYzZTY3OGJmNjdjZDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Np
b25BVkZvdW5kYXRpb25PYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMuaApAQCAtNDIs
MTEgKzQyLDEwIEBAIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM7CiBj
bGFzcyBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQyBmaW5hbCA6IHB1YmxpYyBMZWdhY3lDRE1T
ZXNzaW9uLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakM+
IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBDRE1TZXNzaW9u
QVZGb3VuZGF0aW9uT2JqQyhNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKiBwYXJl
bnQsIExlZ2FjeUNETVNlc3Npb25DbGllbnQqKTsKKyAgICBDRE1TZXNzaW9uQVZGb3VuZGF0aW9u
T2JqQyhNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKiBwYXJlbnQsIExlZ2FjeUNE
TVNlc3Npb25DbGllbnQmKTsKICAgICB2aXJ0dWFsIH5DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2Jq
QygpOwogCiAgICAgTGVnYWN5Q0RNU2Vzc2lvblR5cGUgdHlwZSgpIG92ZXJyaWRlIHsgcmV0dXJu
IENETVNlc3Npb25UeXBlQVZGb3VuZGF0aW9uT2JqQzsgfQotICAgIHZvaWQgc2V0Q2xpZW50KExl
Z2FjeUNETVNlc3Npb25DbGllbnQqIGNsaWVudCkgb3ZlcnJpZGUgeyBtX2NsaWVudCA9IGNsaWVu
dDsgfQogICAgIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gbV9zZXNzaW9uSWQ7IH0KICAgICBSZWZQdHI8VWludDhBcnJheT4gZ2VuZXJhdGVLZXlSZXF1
ZXN0KGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFVpbnQ4QXJyYXkqIGluaXREYXRhLCBTdHJpbmcm
IGRlc3RpbmF0aW9uVVJMLCB1bnNpZ25lZCBzaG9ydCYgZXJyb3JDb2RlLCB1aW50MzJfdCYgc3lz
dGVtQ29kZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCByZWxlYXNlS2V5cygpIG92ZXJyaWRlOwpAQCAt
NTYsMTAgKzU1LDIyIEBAIHB1YmxpYzoKICAgICB2b2lkIHBsYXllckRpZFJlY2VpdmVFcnJvcihO
U0Vycm9yICopOwogCiBwcml2YXRlOgorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIGNv
bnN0IExvZ2dlciYgbG9nZ2VyKCkgY29uc3QgeyByZXR1cm4gbV9sb2dnZXI7IH0KKyAgICBjb25z
dCB2b2lkKiBsb2dJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9sb2dJZGVudGlmaWVyOyB9
CisgICAgY29uc3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29uc3QgeyByZXR1cm4gIkNETVNlc3Np
b25BVkZvdW5kYXRpb25PYmpDIjsgfQorICAgIFdURkxvZ0NoYW5uZWwmIGxvZ0NoYW5uZWwoKSBj
b25zdDsKKyNlbmRpZgorCiAgICAgV2Vha1B0cjxNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDPiBtX3BhcmVudDsKLSAgICBMZWdhY3lDRE1TZXNzaW9uQ2xpZW50KiBtX2NsaWVudDsK
KyAgICBXZWFrUHRyPExlZ2FjeUNETVNlc3Npb25DbGllbnQ+IG1fY2xpZW50OwogICAgIFN0cmlu
ZyBtX3Nlc3Npb25JZDsKICAgICBSZXRhaW5QdHI8QVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVl
c3Q+IG1fcmVxdWVzdDsKKworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIFJlZjxjb25z
dCBMb2dnZXI+IG1fbG9nZ2VyOworICAgIGNvbnN0IHZvaWQqIG1fbG9nSWRlbnRpZmllcjsKKyNl
bmRpZgogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9u
QVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCBkYWRjZGZjNTU1NmVmODgwODkyMmU5ODkzOTFmNzE4
N2MxNDlmNjE1Li4xN2VmMTg3NGJkMTczZDRlYjIxYWIzYzRkNWNmMWIzN2UzZjk1MThjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2Jq
Qy5tbQpAQCAtMzAsNiArMzAsNyBAQAogCiAjaW1wb3J0ICJMZWdhY3lDRE0uaCIKICNpbXBvcnQg
IkxlZ2FjeUNETVNlc3Npb24uaCIKKyNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIk1lZGlh
UGxheWVyLmgiCiAjaW1wb3J0ICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgi
CiAjaW1wb3J0ICJXZWJDb3JlTlNFcnJvckV4dHJhcy5oIgpAQCAtMzcsMjEgKzM4LDI4IEBACiAj
aW1wb3J0IDxBVkZvdW5kYXRpb24vQVZBc3NldFJlc291cmNlTG9hZGVyLmg+CiAjaW1wb3J0IDxK
YXZhU2NyaXB0Q29yZS9UeXBlZEFycmF5SW5saW5lcy5oPgogI2ltcG9ydCA8b2JqYy9vYmpjLXJ1
bnRpbWUuaD4KKyNpbXBvcnQgPHd0Zi9Mb2dnZXJIZWxwZXIuaD4KICNpbXBvcnQgPHd0Zi9NYWlu
VGhyZWFkLmg+CiAjaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KICNpbXBvcnQgPHd0Zi9VVUlE
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakM6
OkNETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDKE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakMqIHBhcmVudCwgTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCogY2xpZW50KQorQ0RNU2Vzc2lv
bkFWRm91bmRhdGlvbk9iakM6OkNETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDKE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMqIHBhcmVudCwgTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCYg
Y2xpZW50KQogICAgIDogbV9wYXJlbnQoKnBhcmVudCkKICAgICAsIG1fY2xpZW50KGNsaWVudCkK
ICAgICAsIG1fc2Vzc2lvbklkKGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSkKKyNpZiAhUkVM
RUFTRV9MT0dfRElTQUJMRUQKKyAgICAsIG1fbG9nZ2VyKGNsaWVudC5sb2dnZXIoKSkKKyAgICAs
IG1fbG9nSWRlbnRpZmllcihjbGllbnQubG9nSWRlbnRpZmllcigpKQorI2VuZGlmCiB7CisgICAg
QUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKIH0KIAogQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9i
akM6On5DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQygpCiB7CisgICAgQUxXQVlTX0xPRyhMT0dJ
REVOVElGSUVSKTsKIH0KIAogUmVmUHRyPFVpbnQ4QXJyYXk+IENETVNlc3Npb25BVkZvdW5kYXRp
b25PYmpDOjpnZW5lcmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgVWludDhB
cnJheSogaW5pdERhdGEsIFN0cmluZyYgZGVzdGluYXRpb25VUkwsIHVuc2lnbmVkIHNob3J0JiBl
cnJvckNvZGUsIHVpbnQzMl90JiBzeXN0ZW1Db2RlKQpAQCAtNTksNiArNjcsNyBAQCBSZWZQdHI8
VWludDhBcnJheT4gQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakM6OmdlbmVyYXRlS2V5UmVxdWVz
dChjb25zdCBTdHJpbmcmCiAgICAgVU5VU0VEX1BBUkFNKG1pbWVUeXBlKTsKIAogICAgIGlmICgh
bV9wYXJlbnQpIHsKKyAgICAgICAgRVJST1JfTE9HKExPR0lERU5USUZJRVIsICJlcnJvcjogIXBh
cmVudCIpOwogICAgICAgICBlcnJvckNvZGUgPSBMZWdhY3lDRE06OlVua25vd25FcnJvcjsKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQpAQCAtNjcsMTIgKzc2LDE0IEBAIFJlZlB0cjxV
aW50OEFycmF5PiBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQzo6Z2VuZXJhdGVLZXlSZXF1ZXN0
KGNvbnN0IFN0cmluZyYKICAgICBTdHJpbmcga2V5SUQ7CiAgICAgUmVmUHRyPFVpbnQ4QXJyYXk+
IGNlcnRpZmljYXRlOwogICAgIGlmICghTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qzo6ZXh0cmFjdEtleVVSSUtleUlEQW5kQ2VydGlmaWNhdGVGcm9tSW5pdERhdGEoaW5pdERhdGEs
IGtleVVSSSwga2V5SUQsIGNlcnRpZmljYXRlKSkgeworICAgICAgICBFUlJPUl9MT0coTE9HSURF
TlRJRklFUiwgImVycm9yOiBjb3VsZCBub3QgZXh0cmFjdCBrZXkgaW5mbyIpOwogICAgICAgICBl
cnJvckNvZGUgPSBMZWdhY3lDRE06OlVua25vd25FcnJvcjsKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgfQogCiAgICAgbV9yZXF1ZXN0ID0gbV9wYXJlbnQtPnRha2VSZXF1ZXN0Rm9yS2V5
VVJJKGtleVVSSSk7CiAgICAgaWYgKCFtX3JlcXVlc3QpIHsKKyAgICAgICAgRVJST1JfTE9HKExP
R0lERU5USUZJRVIsICJlcnJvcjogY291bGQgbm90IGZpbmQgcmVxdWVzdCBmb3Iga2V5IFVSSSIp
OwogICAgICAgICBlcnJvckNvZGUgPSBMZWdhY3lDRE06OlVua25vd25FcnJvcjsKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgfQpAQCAtODQsNiArOTUsNyBAQCBSZWZQdHI8VWludDhBcnJh
eT4gQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakM6OmdlbmVyYXRlS2V5UmVxdWVzdChjb25zdCBT
dHJpbmcmCiAgICAgUmV0YWluUHRyPE5TRGF0YT4ga2V5UmVxdWVzdCA9IFttX3JlcXVlc3Qgc3Ry
ZWFtaW5nQ29udGVudEtleVJlcXVlc3REYXRhRm9yQXBwOmNlcnRpZmljYXRlRGF0YS5nZXQoKSBj
b250ZW50SWRlbnRpZmllcjphc3NldElELmdldCgpIG9wdGlvbnM6bmlsIGVycm9yOiZuc0Vycm9y
XTsKIAogICAgIGlmICgha2V5UmVxdWVzdCkgeworICAgICAgICBFUlJPUl9MT0coTE9HSURFTlRJ
RklFUiwgImZhaWxlZCB0byBnZW5lcmF0ZSBrZXkgcmVxdWVzdCB3aXRoIGVycm9yOiAiLCBTdHJp
bmcobnNFcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbikpOwogICAgICAgICBlcnJvckNvZGUgPSBM
ZWdhY3lDRE06OkRvbWFpbkVycm9yOwogICAgICAgICBzeXN0ZW1Db2RlID0gbWVkaWFLZXlFcnJv
clN5c3RlbUNvZGUobnNFcnJvcik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtOTMsNiAr
MTA1LDggQEAgUmVmUHRyPFVpbnQ4QXJyYXk+IENETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDOjpn
ZW5lcmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5nJgogICAgIHN5c3RlbUNvZGUgPSAwOwogICAg
IGRlc3RpbmF0aW9uVVJMID0gU3RyaW5nKCk7CiAKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJ
RVIpOworCiAgICAgYXV0byBrZXlSZXF1ZXN0QnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShb
a2V5UmVxdWVzdCBieXRlc10sIFtrZXlSZXF1ZXN0IGxlbmd0aF0pOwogICAgIHVuc2lnbmVkIGJ5
dGVMZW5ndGggPSBrZXlSZXF1ZXN0QnVmZmVyLT5ieXRlTGVuZ3RoKCk7CiAgICAgcmV0dXJuIFVp
bnQ4QXJyYXk6OnRyeUNyZWF0ZShXVEZNb3ZlKGtleVJlcXVlc3RCdWZmZXIpLCAwLCBieXRlTGVu
Z3RoKTsKQEAgLTExMSw2ICsxMjUsOCBAQCBib29sIENETVNlc3Npb25BVkZvdW5kYXRpb25PYmpD
Ojp1cGRhdGUoVWludDhBcnJheSoga2V5LCBSZWZQdHI8VWludDhBcnJheT4mIG5leAogICAgIHN5
c3RlbUNvZGUgPSAwOwogICAgIG5leHRNZXNzYWdlID0gbnVsbHB0cjsKIAorICAgIEFMV0FZU19M
T0coTE9HSURFTlRJRklFUik7CisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMTI0LDEwICsx
NDAsMTkgQEAgdm9pZCBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQzo6cGxheWVyRGlkUmVjZWl2
ZUVycm9yKE5TRXJyb3IgKmVycm9yKQogICAgIGlmICghbV9jbGllbnQpCiAgICAgICAgIHJldHVy
bjsKIAorICAgIEVSUk9SX0xPRyhMT0dJREVOVElGSUVSLCBTdHJpbmcoZXJyb3IubG9jYWxpemVk
RGVzY3JpcHRpb24pKTsKKwogICAgIHVuc2lnbmVkIGxvbmcgY29kZSA9IG1lZGlhS2V5RXJyb3JT
eXN0ZW1Db2RlKGVycm9yKTsKICAgICBtX2NsaWVudC0+c2VuZEVycm9yKExlZ2FjeUNETVNlc3Np
b25DbGllbnQ6Ok1lZGlhS2V5RXJyb3JEb21haW4sIGNvZGUpOwogfQogCisjaWYgIVJFTEVBU0Vf
TE9HX0RJU0FCTEVECitXVEZMb2dDaGFubmVsJiBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQzo6
bG9nQ2hhbm5lbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIExvZ0VNRTsKK30KKyNlbmRpZgorCiB9
CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbi5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWU3Ry
ZWFtU2Vzc2lvbi5oCmluZGV4IDNiNDIyZWNhZjRhMWQxMTM4N2IxYWJmMTEwYmJlNjE0NTAyMGFl
NTAuLmIyOGJjMzM5ZTNkZmY5N2M5OTk5Mzc1NmVkYzg4MjgyZGZiOTZhOGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNl
c3Npb25BVlN0cmVhbVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uLmgKQEAgLTQy
LDcgKzQyLDcgQEAgY2xhc3MgQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzsKIGNsYXNzIENE
TVNlc3Npb25BVlN0cmVhbVNlc3Npb24gOiBwdWJsaWMgQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZG
T2JqQyB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgQ0RNU2Vz
c2lvbkFWU3RyZWFtU2Vzc2lvbihWZWN0b3I8aW50PiYmIHByb3RvY29sVmVyc2lvbnMsIENETVBy
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakMmLCBMZWdhY3lDRE1TZXNzaW9uQ2xpZW50Kik7CisgICAg
Q0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbihWZWN0b3I8aW50PiYmIHByb3RvY29sVmVyc2lvbnMs
IENETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMmLCBMZWdhY3lDRE1TZXNzaW9uQ2xpZW50Jik7
CiAgICAgdmlydHVhbCB+Q0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbigpOwogCiAgICAgLy8gTGVn
YWN5Q0RNU2Vzc2lvbgpAQCAtNjEsNiArNjEsMTAgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAg
IFJlZlB0cjxVaW50OEFycmF5PiBnZW5lcmF0ZUtleVJlbGVhc2VNZXNzYWdlKHVuc2lnbmVkIHNo
b3J0JiBlcnJvckNvZGUsIHVpbnQzMl90JiBzeXN0ZW1Db2RlKTsKIAorI2lmICFSRUxFQVNFX0xP
R19ESVNBQkxFRAorICAgIGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0IHsgcmV0dXJu
ICJDRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uIjsgfQorI2VuZGlmCisKICAgICBSZXRhaW5QdHI8
QVZTdHJlYW1TZXNzaW9uPiBtX3N0cmVhbVNlc3Npb247CiAgICAgUmVmUHRyPFVpbnQ4QXJyYXk+
IG1faW5pdERhdGE7CiAgICAgUmVmUHRyPFVpbnQ4QXJyYXk+IG1fY2VydGlmaWNhdGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9DRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbi5tbQpp
bmRleCBmMzVjYWE4ZTZhZmY1N2QzMDg4YWU3YzBkM2Y5MjhmZjc2Yjk2ZWUxLi44NDBhMjMzN2Fl
MmQxYjM3OTE3YTExNTNjYWJhZWQ4NzlhN2EyNTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZTdHJlYW1T
ZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0NETVNlc3Npb25BVlN0cmVhbVNlc3Npb24ubW0KQEAgLTQwLDYgKzQwLDcgQEAK
ICNpbXBvcnQgPG9iamMvb2JqYy1ydW50aW1lLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL0FW
Rm91bmRhdGlvblNQSS5oPgogI2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KKyNpbXBvcnQgPHd0
Zi9Mb2dnZXJIZWxwZXIuaD4KICNpbXBvcnQgPHd0Zi9VVUlELmg+CiAjaW1wb3J0IDx3dGYvY29j
b2EvVmVjdG9yQ29jb2EuaD4KIApAQCAtODEsMTYgKzgyLDE4IEBAIEBlbmQKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1DRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uOjpDRE1TZXNzaW9uQVZTdHJl
YW1TZXNzaW9uKFZlY3RvcjxpbnQ+JiYgcHJvdG9jb2xWZXJzaW9ucywgQ0RNUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQyYgY2RtLCBMZWdhY3lDRE1TZXNzaW9uQ2xpZW50KiBjbGllbnQpCitDRE1T
ZXNzaW9uQVZTdHJlYW1TZXNzaW9uOjpDRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uKFZlY3Rvcjxp
bnQ+JiYgcHJvdG9jb2xWZXJzaW9ucywgQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyYgY2Rt
LCBMZWdhY3lDRE1TZXNzaW9uQ2xpZW50JiBjbGllbnQpCiAgICAgOiBDRE1TZXNzaW9uTWVkaWFT
b3VyY2VBVkZPYmpDKGNkbSwgY2xpZW50KQogICAgICwgbV9kYXRhUGFyc2VyT2JzZXJ2ZXIoYWRv
cHROUyhbW1dlYkNETVNlc3Npb25BVlN0cmVhbVNlc3Npb25PYnNlcnZlciBhbGxvY10gaW5pdFdp
dGhQYXJlbnQ6dGhpc10pKQogICAgICwgbV9wcm90b2NvbFZlcnNpb25zKFdURk1vdmUocHJvdG9j
b2xWZXJzaW9ucykpCiAgICAgLCBtX21vZGUoTm9ybWFsKQogeworICAgIEFMV0FZU19MT0coTE9H
SURFTlRJRklFUik7CiB9CiAKIENETVNlc3Npb25BVlN0cmVhbVNlc3Npb246On5DRE1TZXNzaW9u
QVZTdHJlYW1TZXNzaW9uKCkKIHsKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOwogICAg
IHNldFN0cmVhbVNlc3Npb24obnVsbHB0cik7CiAKICAgICBmb3IgKGF1dG8mIHNvdXJjZUJ1ZmZl
ciA6IG1fc291cmNlQnVmZmVycykKQEAgLTEwMyw3ICsxMDYsNyBAQCBSZWZQdHI8VWludDhBcnJh
eT4gQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbjo6Z2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0
cmluZyYgbQogICAgIFVOVVNFRF9QQVJBTShkZXN0aW5hdGlvblVSTCk7CiAgICAgQVNTRVJUKGlu
aXREYXRhKTsKIAotICAgIExPRyhNZWRpYSwgIkNETVNlc3Npb25BVlN0cmVhbVNlc3Npb246Omdl
bmVyYXRlS2V5UmVxdWVzdCglcCkiLCB0aGlzKTsKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJ
RVIpOwogCiAgICAgZXJyb3JDb2RlID0gTWVkaWFQbGF5ZXI6Ok5vRXJyb3I7CiAgICAgc3lzdGVt
Q29kZSA9IDA7CkBAIC0xMjksNyArMTMyLDcgQEAgdm9pZCBDRE1TZXNzaW9uQVZTdHJlYW1TZXNz
aW9uOjpyZWxlYXNlS2V5cygpCiAgICAgICAgIGZvciAoYXV0byYgc291cmNlQnVmZmVyIDogbV9z
b3VyY2VCdWZmZXJzKQogICAgICAgICAgICAgc291cmNlQnVmZmVyLT5mbHVzaCgpOwogCi0gICAg
ICAgIExPRyhNZWRpYSwgIkNETVNlc3Npb25BVlN0cmVhbVNlc3Npb246OnJlbGVhc2VLZXlzKCVw
KSAtIGV4cGlyaW5nIHN0cmVhbSBzZXNzaW9uIiwgdGhpcyk7CisgICAgICAgIEFMV0FZU19MT0co
TE9HSURFTlRJRklFUiwgImV4cGlyaW5nIHN0cmVhbSBzZXNzaW9uIik7CiAgICAgICAgIFttX3N0
cmVhbVNlc3Npb24gZXhwaXJlXTsKIAogICAgICAgICBpZiAoIW1fY2VydGlmaWNhdGUpCkBAIC0x
NTAsNyArMTUzLDcgQEAgdm9pZCBDRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uOjpyZWxlYXNlS2V5
cygpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgIGlmIChtX3Nlc3Np
b25JZCA9PSBTdHJpbmcocGxheWJhY2tTZXNzaW9uSWRWYWx1ZSkpIHsKLSAgICAgICAgICAgICAg
ICBMT0coTWVkaWEsICJDRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uOjpyZWxlYXNlS2V5cyglcCkg
LSBmb3VuZCBzZXNzaW9uLCBzZW5kaW5nIGV4cGlyYXRpb24gbWVzc2FnZSIpOworICAgICAgICAg
ICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgImZvdW5kIHNlc3Npb24sIHNlbmRpbmcg
ZXhwaXJhdGlvbiBtZXNzYWdlIik7CiAgICAgICAgICAgICAgICAgbV9leHBpcmVkU2Vzc2lvbiA9
IGV4cGlyZWRTZXNzaW9uRGF0YTsKICAgICAgICAgICAgICAgICBtX2NsaWVudC0+c2VuZE1lc3Nh
Z2UoVWludDhBcnJheTo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihbbV9leHBp
cmVkU2Vzc2lvbiBieXRlc10pLCBbbV9leHBpcmVkU2Vzc2lvbiBsZW5ndGhdKS5wdHIoKSwgZW1w
dHlTdHJpbmcoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xNzksMTMgKzE4MiwxMyBA
QCBib29sIENETVNlc3Npb25BVlN0cmVhbVNlc3Npb246OnVwZGF0ZShVaW50OEFycmF5KiBrZXks
IFJlZlB0cjxVaW50OEFycmF5PiYgbmV4dAogewogICAgIGJvb2wgc2hvdWxkR2VuZXJhdGVLZXlS
ZXF1ZXN0ID0gIW1fY2VydGlmaWNhdGUgfHwgaXNFcXVhbDIoa2V5LCAicmVuZXciKTsKICAgICBp
ZiAoIW1fY2VydGlmaWNhdGUpIHsKLSAgICAgICAgTE9HKE1lZGlhLCAiQ0RNU2Vzc2lvbkFWU3Ry
ZWFtU2Vzc2lvbjo6dXBkYXRlKCVwKSAtIGNlcnRpZmljYXRlIGRhdGEiLCB0aGlzKTsKKyAgICAg
ICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAiY2VydGlmaWNhdGUgZGF0YSIpOwogCiAgICAg
ICAgIG1fY2VydGlmaWNhdGUgPSBrZXk7CiAgICAgfQogCiAgICAgaWYgKGlzRXF1YWwyKGtleSwg
ImFja25vd2xlZGdlZCIpKSB7Ci0gICAgICAgIExPRyhNZWRpYSwgIkNETVNlc3Npb25BVlN0cmVh
bVNlc3Npb246OnVwZGF0ZSglcCkgLSBhY2tub3dsZWRpbmcgc2VjdXJlIHN0b3AgbWVzc2FnZSIs
IHRoaXMpOworICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJhY2tub3dsZWRpbmcg
c2VjdXJlIHN0b3AgbWVzc2FnZSIpOwogCiAgICAgICAgIGlmICghbV9leHBpcmVkU2Vzc2lvbikg
ewogICAgICAgICAgICAgZXJyb3JDb2RlID0gTWVkaWFQbGF5ZXI6OkludmFsaWRQbGF5ZXJTdGF0
ZTsKQEAgLTI0MSwyNCArMjQ0LDI2IEBAIGJvb2wgQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbjo6
dXBkYXRlKFVpbnQ4QXJyYXkqIGtleSwgUmVmUHRyPFVpbnQ4QXJyYXk+JiBuZXh0CiAgICAgICAg
ICAgICBtX3Nlc3Npb25JZCA9IGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKTsKIAogICAgICAg
ICBpZiAoZXJyb3IpIHsKLSAgICAgICAgICAgIExPRyhNZWRpYSwgIkNETVNlc3Npb25BVlN0cmVh
bVNlc3Npb246OnVwZGF0ZSglcCkgLSBlcnJvcjolQCIsIHRoaXMsIFtlcnJvciBkZXNjcmlwdGlv
bl0pOworICAgICAgICAgICAgRVJST1JfTE9HKExPR0lERU5USUZJRVIsICJlcnJvciBnZW5lcmF0
aW5nIGtleSByZXF1ZXN0OiAiLCBTdHJpbmcoZXJyb3IuZGVzY3JpcHRpb24pKTsKICAgICAgICAg
ICAgIGVycm9yQ29kZSA9IE1lZGlhUGxheWVyOjpJbnZhbGlkUGxheWVyU3RhdGU7CiAgICAgICAg
ICAgICBzeXN0ZW1Db2RlID0gbWVkaWFLZXlFcnJvclN5c3RlbUNvZGUoZXJyb3IpOwogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKKyAgICAgICAgQUxXQVlTX0xPRyhMT0dJ
REVOVElGSUVSLCAiZ2VuZXJhdGVkIGtleSByZXF1ZXN0Iik7CiAgICAgICAgIG5leHRNZXNzYWdl
ID0gVWludDhBcnJheTo6Y3JlYXRlKFtyZXF1ZXN0IGxlbmd0aF0pOwogICAgICAgICBbcmVxdWVz
dCBnZXRCeXRlczpuZXh0TWVzc2FnZS0+ZGF0YSgpIGxlbmd0aDpuZXh0TWVzc2FnZS0+bGVuZ3Ro
KCldOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgaWYgKCFwcm90ZWN0ZWRT
b3VyY2VCdWZmZXIpIHsKKyAgICAgICAgRVJST1JfTE9HKExPR0lERU5USUZJRVIsICJlcnJvcjog
IXByb3RlY3RlZFNvdXJjZUJ1ZmZlciIpOwogICAgICAgICBlcnJvckNvZGUgPSBNZWRpYVBsYXll
cjo6SW52YWxpZFBsYXllclN0YXRlOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAg
ICAgQVNTRVJUKCFtX3NvdXJjZUJ1ZmZlcnMuaXNFbXB0eSgpKTsKLSAgICBMT0coTWVkaWEsICJD
RE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uOjp1cGRhdGUoJXApIC0ga2V5IGRhdGEiLCB0aGlzKTsK
KyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJwcm9jZXNzaW5nIGtleSByZXNwb25zZSIp
OwogICAgIGVycm9yQ29kZSA9IE1lZGlhUGxheWVyOjpOb0Vycm9yOwogICAgIHN5c3RlbUNvZGUg
PSAwOwogICAgIFJldGFpblB0cjxOU0RhdGE+IGtleURhdGEgPSBhZG9wdE5TKFtbTlNEYXRhIGFs
bG9jXSBpbml0V2l0aEJ5dGVzOmtleS0+ZGF0YSgpIGxlbmd0aDprZXktPmxlbmd0aCgpXSk7CkBA
IC0yOTMsMTIgKzI5OCwxNCBAQCB2b2lkIENETVNlc3Npb25BVlN0cmVhbVNlc3Npb246OnNldFN0
cmVhbVNlc3Npb24oQVZTdHJlYW1TZXNzaW9uICpzdHJlYW1TZXNzaW9uKQogCiB2b2lkIENETVNl
c3Npb25BVlN0cmVhbVNlc3Npb246OmFkZFBhcnNlcihBVlN0cmVhbURhdGFQYXJzZXIqIHBhcnNl
cikKIHsKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOwogICAgIGlmIChtX3N0cmVhbVNl
c3Npb24pCiAgICAgICAgIFttX3N0cmVhbVNlc3Npb24gYWRkU3RyZWFtRGF0YVBhcnNlcjpwYXJz
ZXJdOwogfQogCiB2b2lkIENETVNlc3Npb25BVlN0cmVhbVNlc3Npb246OnJlbW92ZVBhcnNlcihB
VlN0cmVhbURhdGFQYXJzZXIqIHBhcnNlcikKIHsKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJ
RVIpOwogICAgIGlmIChtX3N0cmVhbVNlc3Npb24pCiAgICAgICAgIFttX3N0cmVhbVNlc3Npb24g
cmVtb3ZlU3RyZWFtRGF0YVBhcnNlcjpwYXJzZXJdOwogfQpAQCAtMzE4LDE0ICszMjUsMTQgQEAg
UmVmUHRyPFVpbnQ4QXJyYXk+IENETVNlc3Npb25BVlN0cmVhbVNlc3Npb246OmdlbmVyYXRlS2V5
UmVsZWFzZU1lc3NhZ2UodW5zaWduZWQKIAogICAgIE5TQXJyYXkqIGV4cGlyZWRTZXNzaW9ucyA9
IFtQQUw6OmdldEFWU3RyZWFtU2Vzc2lvbkNsYXNzKCkgcGVuZGluZ0V4cGlyZWRTZXNzaW9uUmVw
b3J0c1dpdGhBcHBJZGVudGlmaWVyOmNlcnRpZmljYXRlRGF0YS5nZXQoKSBzdG9yYWdlRGlyZWN0
b3J5QXRVUkw6W05TVVJMIGZpbGVVUkxXaXRoUGF0aDpzdG9yYWdlUGF0aF1dOwogICAgIGlmICgh
W2V4cGlyZWRTZXNzaW9ucyBjb3VudF0pIHsKLSAgICAgICAgTE9HKE1lZGlhLCAiQ0RNU2Vzc2lv
bkFWU3RyZWFtU2Vzc2lvbjo6Z2VuZXJhdGVLZXlSZWxlYXNlTWVzc2FnZSglcCkgLSBubyBleHBp
cmVkIHNlc3Npb25zIGZvdW5kIiwgdGhpcyk7CisgICAgICAgIEFMV0FZU19MT0coIm5vIGV4cGly
ZWQgc2Vzc2lvbnMgZm91bmQiKTsKIAogICAgICAgICBlcnJvckNvZGUgPSBNZWRpYVBsYXllcjo6
S2V5U3lzdGVtTm90U3VwcG9ydGVkOwogICAgICAgICBzeXN0ZW1Db2RlID0gJyFtb3InOwogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBMT0coTWVkaWEsICJDRE1TZXNzaW9u
QVZTdHJlYW1TZXNzaW9uOjpnZW5lcmF0ZUtleVJlbGVhc2VNZXNzYWdlKCVwKSAtIGZvdW5kICVk
IGV4cGlyZWQgc2Vzc2lvbnMiLCB0aGlzLCBbZXhwaXJlZFNlc3Npb25zIGNvdW50XSk7CisgICAg
QUxXQVlTX0xPRygiZm91bmQgIiwgW2V4cGlyZWRTZXNzaW9ucyBjb3VudF0sICIgZXhwaXJlZCBz
ZXNzaW9ucyIpOwogCiAgICAgZXJyb3JDb2RlID0gMDsKICAgICBzeXN0ZW1Db2RlID0gMDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL0NETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9i
akMuaAppbmRleCBlZWI1Zjk4M2I4YTNmYmJmMzRiYWM2NGRkMGZkNTViYzI1M2IwZWEwLi4yOThm
ZDBjOGYyOTAwNjY2YWRkMzI2NGQ5MmYwM2ViYTVkNzE4ZmJkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uTWVk
aWFTb3VyY2VBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQy5oCkBAIC00Mywx
NCArNDMsMTMgQEAgY2xhc3MgQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzsKIGNsYXNzIENE
TVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMgOiBwdWJsaWMgTGVnYWN5Q0RNU2Vzc2lvbiwgcHVi
bGljIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDRXJyb3JDbGllbnQsIHB1YmxpYyBDYW5NYWtl
V2Vha1B0cjxDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDPiB7CiAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQyhD
RE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDJiwgTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCopOwor
ICAgIENETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMoQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQyYsIExlZ2FjeUNETVNlc3Npb25DbGllbnQmKTsKICAgICB2aXJ0dWFsIH5DRE1TZXNzaW9u
TWVkaWFTb3VyY2VBVkZPYmpDKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgYWRkUGFyc2VyKEFWU3Ry
ZWFtRGF0YVBhcnNlciopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlUGFyc2VyKEFWU3Ry
ZWFtRGF0YVBhcnNlciopID0gMDsKIAogICAgIC8vIExlZ2FjeUNETVNlc3Npb24KLSAgICB2b2lk
IHNldENsaWVudChMZWdhY3lDRE1TZXNzaW9uQ2xpZW50KiBjbGllbnQpIG92ZXJyaWRlIHsgbV9j
bGllbnQgPSBjbGllbnQ7IH0KICAgICBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIG1fc2Vzc2lvbklkOyB9CiAKICAgICAvLyBTb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQ0Vycm9yQ2xpZW50CkBAIC02OCwxMiArNjcsMjMgQEAgcHVibGljOgogcHJvdGVj
dGVkOgogICAgIFN0cmluZyBzdG9yYWdlUGF0aCgpIGNvbnN0OwogCisjaWYgIVJFTEVBU0VfTE9H
X0RJU0FCTEVECisgICAgY29uc3QgTG9nZ2VyJiBsb2dnZXIoKSBjb25zdCB7IHJldHVybiBtX2xv
Z2dlcjsgfQorICAgIGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBt
X2xvZ0lkZW50aWZpZXI7IH0KKyAgICBXVEZMb2dDaGFubmVsJiBsb2dDaGFubmVsKCkgY29uc3Q7
CisjZW5kaWYKKwogICAgIENETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMqIG1fY2RtOwotICAg
IExlZ2FjeUNETVNlc3Npb25DbGllbnQqIG1fY2xpZW50IHsgbnVsbHB0ciB9OworICAgIFdlYWtQ
dHI8TGVnYWN5Q0RNU2Vzc2lvbkNsaWVudD4gbV9jbGllbnQ7CiAgICAgVmVjdG9yPFJlZlB0cjxT
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQz4+IG1fc291cmNlQnVmZmVyczsKICAgICBSZWZQdHI8
VWludDhBcnJheT4gbV9jZXJ0aWZpY2F0ZTsKICAgICBTdHJpbmcgbV9zZXNzaW9uSWQ7CiAgICAg
Ym9vbCBtX3N0b3BwZWQgeyBmYWxzZSB9OworCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisg
ICAgUmVmPGNvbnN0IExvZ2dlcj4gbV9sb2dnZXI7CisgICAgY29uc3Qgdm9pZCogbV9sb2dJZGVu
dGlmaWVyOworI2VuZGlmCiB9OwogCiBpbmxpbmUgQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2Jq
QyogdG9DRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDKExlZ2FjeUNETVNlc3Npb24qIHNlc3Np
b24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9DRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbk1lZGlhU291
cmNlQVZGT2JqQy5tbQppbmRleCBmMDNlNzM5YjIwMDc5N2QxMDU3OTBmNWIwODI0YTIxZmJmMTQ0
MDdkLi4yODZhNWE0ODg3ZThkOTU2MDBlN2M4YmFjM2FmYmU2Njc2MTYwNTU0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1T
ZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMu
bW0KQEAgLTM1LDkgKzM1LDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ0RNU2Vzc2lv
bk1lZGlhU291cmNlQVZGT2JqQzo6Q0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQyhDRE1Qcml2
YXRlTWVkaWFTb3VyY2VBVkZPYmpDJiBjZG0sIExlZ2FjeUNETVNlc3Npb25DbGllbnQqIGNsaWVu
dCkKK0NETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakM6OkNETVNlc3Npb25NZWRpYVNvdXJjZUFW
Rk9iakMoQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyYgY2RtLCBMZWdhY3lDRE1TZXNzaW9u
Q2xpZW50JiBjbGllbnQpCiAgICAgOiBtX2NkbSgmY2RtKQogICAgICwgbV9jbGllbnQoY2xpZW50
KQorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgICwgbV9sb2dnZXIoY2xpZW50LmxvZ2dl
cigpKQorICAgICwgbV9sb2dJZGVudGlmaWVyKGNsaWVudC5sb2dJZGVudGlmaWVyKCkpCisjZW5k
aWYKIHsKIH0KIApAQCAtMTEyLDYgKzExNiwxMyBAQCBTdHJpbmcgQ0RNU2Vzc2lvbk1lZGlhU291
cmNlQVZGT2JqQzo6c3RvcmFnZVBhdGgoKSBjb25zdAogICAgIHJldHVybiBGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQoc3RvcmFnZURpcmVjdG9yeSwgIlNlY3VyZVN0b3AucGxp
c3QiKTsKIH0KIAorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorV1RGTG9nQ2hhbm5lbCYgQ0RN
U2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQzo6bG9nQ2hhbm5lbCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIExvZ0VNRTsKK30KKyNlbmRpZgorCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoTEVHQUNZX0VO
Q1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFKE1FRElBX1NPVVJDRSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMu
aAppbmRleCBlYjQ1NTJlNTZhNTFhYTYwY2NjM2RlYTM3NDNiNjM0ZTEwZGQzNjZmLi4xZTY1NzU3
MjQ2NTQ5NzM0M2NkZTJhMjRkOGYwZGM2YjRlMDI2N2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5o
CkBAIC0yNjgsNyArMjY4LDcgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQ
VEVEX01FRElBKQogICAgIHZvaWQga2V5QWRkZWQoKSBmaW5hbDsKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8TGVnYWN5Q0RNU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbihjb25zdCBTdHJpbmcmIGtleVN5c3Rl
bSwgTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCopIGZpbmFsOworICAgIHN0ZDo6dW5pcXVlX3B0cjxM
ZWdhY3lDRE1TZXNzaW9uPiBjcmVhdGVTZXNzaW9uKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBM
ZWdhY3lDRE1TZXNzaW9uQ2xpZW50JikgZmluYWw7CiAjZW5kaWYKIAogICAgIFN0cmluZyBsYW5n
dWFnZU9mUHJpbWFyeUF1ZGlvVHJhY2soKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Lm1tCmluZGV4IDE1ZGI1ZWVmNmZjMzM0Y2UyOWU4ZjJiYmUxOGRhNDNmNDU2MGViMzMuLmNkNjVh
YjU1MjI0YjE4MDMzY2IwYTk0YjhlY2ZjNTdjMTUxMGE2ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qy5tbQpAQCAtMjAyNyw2ICsyMDI3LDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDOjpzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2UoQVZBc3NldFIKIAogI2lm
IEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKSB8fCBFTkFCTEUoRU5DUllQVEVEX01FRElB
KQogICAgIGlmIChzY2hlbWUgPT0gInNrZCIpIHsKKyAgICAgICAgSU5GT19MT0coTE9HSURFTlRJ
RklFUiwgInJlY2VpdmVkIHNrZDovLyBVUkkiKTsKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRF
RF9NRURJQSkKICAgICAgICAgLy8gQ3JlYXRlIGFuIGluaXREYXRhIHdpdGggdGhlIGZvbGxvd2lu
ZyBsYXlvdXQ6CiAgICAgICAgIC8vIFs0IGJ5dGVzOiBrZXlVUkkgc2l6ZV0sIFtrZXlVUkkgc2l6
ZSBieXRlczoga2V5VVJJXQpAQCAtMjczNiw3ICsyNzM3LDcgQEAgdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDOjprZXlBZGRlZCgpCiAgICAgICAgIG1fa2V5VVJJVG9SZXF1
ZXN0TWFwLnJlbW92ZShrZXlJZCk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxMZWdhY3lDRE1TZXNz
aW9uPiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVTZXNzaW9uKGNv
bnN0IFN0cmluZyYga2V5U3lzdGVtLCBMZWdhY3lDRE1TZXNzaW9uQ2xpZW50KiBjbGllbnQpCitz
dGQ6OnVuaXF1ZV9wdHI8TGVnYWN5Q0RNU2Vzc2lvbj4gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQzo6Y3JlYXRlU2Vzc2lvbihjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgTGVnYWN5
Q0RNU2Vzc2lvbkNsaWVudCYgY2xpZW50KQogewogICAgIGlmICgha2V5U3lzdGVtSXNTdXBwb3J0
ZWQoa2V5U3lzdGVtKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0xlZ2FjeU1vY2tDRE0uY3BwIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9MZWdhY3lNb2NrQ0RNLmNwcAppbmRleCA3ZTFkYmYyNjk0NmMzYmZmNDMwODQ5MWQyNTgz
MTU2Y2FiNzQ4NTYzLi44YWNjMTBhMzFkN2VhYjNhYTU0MWVhMDRkZjIzODBlZDYyMDNlMDI1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0xlZ2FjeU1vY2tDRE0uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTGVnYWN5TW9ja0NETS5jcHAKQEAgLTQwLDEwICs0MCw5
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIE1vY2tDRE1TZXNzaW9uIDogcHVibGljIExl
Z2FjeUNETVNlc3Npb24gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgot
ICAgIE1vY2tDRE1TZXNzaW9uKExlZ2FjeUNETVNlc3Npb25DbGllbnQqKTsKKyAgICBNb2NrQ0RN
U2Vzc2lvbihMZWdhY3lDRE1TZXNzaW9uQ2xpZW50Jik7CiAgICAgdmlydHVhbCB+TW9ja0NETVNl
c3Npb24oKSA9IGRlZmF1bHQ7CiAKLSAgICB2b2lkIHNldENsaWVudChMZWdhY3lDRE1TZXNzaW9u
Q2xpZW50KiBjbGllbnQpIG92ZXJyaWRlIHsgbV9jbGllbnQgPSBjbGllbnQ7IH0KICAgICBjb25z
dCBTdHJpbmcmIHNlc3Npb25JZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fc2Vzc2lvbklk
OyB9CiAgICAgUmVmUHRyPFVpbnQ4QXJyYXk+IGdlbmVyYXRlS2V5UmVxdWVzdChjb25zdCBTdHJp
bmcmIG1pbWVUeXBlLCBVaW50OEFycmF5KiBpbml0RGF0YSwgU3RyaW5nJiBkZXN0aW5hdGlvblVS
TCwgdW5zaWduZWQgc2hvcnQmIGVycm9yQ29kZSwgdWludDMyX3QmIHN5c3RlbUNvZGUpIG92ZXJy
aWRlOwogICAgIHZvaWQgcmVsZWFzZUtleXMoKSBvdmVycmlkZTsKQEAgLTUxLDcgKzUwLDcgQEAg
cHVibGljOgogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gY2FjaGVkS2V5Rm9yS2V5SUQoY29uc3Qg
U3RyaW5nJikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQogCiBwcm90ZWN0ZWQ6
Ci0gICAgTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCogbV9jbGllbnQ7CisgICAgV2Vha1B0cjxMZWdh
Y3lDRE1TZXNzaW9uQ2xpZW50PiBtX2NsaWVudDsKICAgICBTdHJpbmcgbV9zZXNzaW9uSWQ7CiB9
OwogCkBAIC03Myw3ICs3Miw3IEBAIGJvb2wgTGVnYWN5TW9ja0NETTo6c3VwcG9ydHNNSU1FVHlw
ZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogICAgIHJldHVybiBlcXVhbExldHRlcnNJZ25vcmlu
Z0FTQ0lJQ2FzZShtaW1lVHlwZSwgInZpZGVvL21vY2siKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRy
PExlZ2FjeUNETVNlc3Npb24+IExlZ2FjeU1vY2tDRE06OmNyZWF0ZVNlc3Npb24oTGVnYWN5Q0RN
U2Vzc2lvbkNsaWVudCogY2xpZW50KQorc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNETVNlc3Npb24+
IExlZ2FjeU1vY2tDRE06OmNyZWF0ZVNlc3Npb24oTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCYgY2xp
ZW50KQogewogICAgIHJldHVybiBtYWtlVW5pcXVlPE1vY2tDRE1TZXNzaW9uPihjbGllbnQpOwog
fQpAQCAtMTA4LDcgKzEwNyw3IEBAIHN0YXRpYyBTdHJpbmcgZ2VuZXJhdGVTZXNzaW9uSWQoKQog
ICAgIHJldHVybiBTdHJpbmc6Om51bWJlcihtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1Nlc3Npb25J
ZCsrKTsKIH0KIAotTW9ja0NETVNlc3Npb246Ok1vY2tDRE1TZXNzaW9uKExlZ2FjeUNETVNlc3Np
b25DbGllbnQqIGNsaWVudCkKK01vY2tDRE1TZXNzaW9uOjpNb2NrQ0RNU2Vzc2lvbihMZWdhY3lD
RE1TZXNzaW9uQ2xpZW50JiBjbGllbnQpCiAgICAgOiBtX2NsaWVudChjbGllbnQpCiAgICAgLCBt
X3Nlc3Npb25JZChnZW5lcmF0ZVNlc3Npb25JZCgpKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9MZWdhY3lNb2NrQ0RNLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0xl
Z2FjeU1vY2tDRE0uaAppbmRleCBiOTNhZWI5M2ZmNjMyOWU1MTU0N2MxM2ZmNzZhNjkyZWU2YTcx
ODZjLi5mMTBkZmViNjRiMTM1MTJiYmY3NTQ3YTBlMDE5ZmM4ODQ1MWM2M2IzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0xlZ2FjeU1vY2tDRE0uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0xlZ2FjeU1vY2tDRE0uaApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB+TGVnYWN5TW9ja0NETSgpID0gZGVmYXVsdDsKIAogICAgIGJvb2wgc3VwcG9y
dHNNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKSBvdmVycmlkZTsKLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8TGVnYWN5Q0RNU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbihMZWdhY3lDRE1TZXNzaW9u
Q2xpZW50Kikgb3ZlcnJpZGU7CisgICAgc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNETVNlc3Npb24+
IGNyZWF0ZVNlc3Npb24oTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCYpIG92ZXJyaWRlOwogCiBwcm90
ZWN0ZWQ6CiAgICAgTGVnYWN5Q0RNKiBtX2NkbTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5jcHAK
aW5kZXggN2NlZGI5NzEyZmM2NmI1YjhkYjUyYmFmMDhjYjBjMmE2NGU5NGVlNy4uNjM4NDUyODkx
MDg5YTUyYjEzYzdiN2VlZDRkMDFjODk1MTk1NTJjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94
eS5jcHAKQEAgLTE3MCw2ICsxNzAsMTggQEAgYm9vbCBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJv
eHk6OmFsbG93c0V4aXRVbmRlck1lbW9yeVByZXNzdXJlKCkgY29uc3QKICAgICByZXR1cm4gbV9z
ZXNzaW9ucy5pc0VtcHR5KCk7CiB9CiAKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKK2NvbnN0
IExvZ2dlciYgUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5Ojpsb2dnZXIoKSBjb25zdAorewor
ICAgIGlmICghbV9sb2dnZXIpIHsKKyAgICAgICAgbV9sb2dnZXIgPSBMb2dnZXI6OmNyZWF0ZSh0
aGlzKTsKKyAgICAgICAgbV9sb2dnZXItPnNldEVuYWJsZWQodGhpcywgbV9ncHVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzID8gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5zZXNzaW9uSUQoKS5p
c0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSA6IGZhbHNlKTsKKyAgICB9CisKKyAgICByZXR1cm4g
Km1fbG9nZ2VyOworfQorI2VuZGlmCisKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5LmggYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5
LmgKaW5kZXggZDg3NDlkZTEwMWE5NjhlYWEwMDFjN2IxYmRlZTE4ODY3MzhmODI3Ni4uM2ExN2Q0
MTU2MGIxMjIxZmQ3NWI1MmMxMThiZTk0YWI4YWFkOGJiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJv
eHkuaApAQCAtNjYsNiArNjYsMTAgQEAgcHVibGljOgogCiAgICAgYm9vbCBhbGxvd3NFeGl0VW5k
ZXJNZW1vcnlQcmVzc3VyZSgpIGNvbnN0OwogCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisg
ICAgY29uc3QgTG9nZ2VyJiBsb2dnZXIoKSBjb25zdDsKKyNlbmRpZgorCiBwcml2YXRlOgogICAg
IGZyaWVuZCBjbGFzcyBHUFVQcm9jZXNzQ29ubmVjdGlvbjsKICAgICAvLyBJUEM6Ok1lc3NhZ2VS
ZWNlaXZlcgpAQCAtNzksNiArODMsMTAgQEAgcHJpdmF0ZToKICAgICBXZWFrUHRyPEdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M+IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzczsKICAgICBIYXNo
TWFwPFJlbW90ZUxlZ2FjeUNETUlkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMZWdh
Y3lDRE1Qcm94eT4+IG1fcHJveGllczsKICAgICBIYXNoTWFwPFJlbW90ZUxlZ2FjeUNETVNlc3Np
b25JZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5
Pj4gbV9zZXNzaW9uczsKKworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIG11dGFibGUg
UmVmUHRyPExvZ2dlcj4gbV9sb2dnZXI7CisjZW5kaWYKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuY3BwCmlu
ZGV4IGZmZjZlYjUyOWU1NjlmYjhmNGJlMTMwZDdkOGNlMzA3NjUzOWI3ODAuLjhhNzQzYWYzNDg2
OWZmOTQyN2I3NzM1NGQ3NGMyMjM3N2MyYjNhNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmNwcApAQCAtNjEsMTcg
KzYxLDE3IEBAIHZvaWQgUmVtb3RlTGVnYWN5Q0RNUHJveHk6OnN1cHBvcnRzTUlNRVR5cGUoY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgU3VwcG9ydHNNSU1FCiAgICAgY2FsbGJhY2sobV9jZG0tPnN1
cHBvcnRzTUlNRVR5cGUobWltZVR5cGUpKTsKIH0KIAotdm9pZCBSZW1vdGVMZWdhY3lDRE1Qcm94
eTo6Y3JlYXRlU2Vzc2lvbihjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgQ3JlYXRlU2Vzc2lvbkNh
bGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIFJlbW90ZUxlZ2FjeUNETVByb3h5OjpjcmVhdGVTZXNz
aW9uKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCB1aW50NjRfdCBsb2dJZGVudGlmaWVyLCBDcmVh
dGVTZXNzaW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIW1fY2RtIHx8ICFtX2Zh
Y3RvcnkpIHsKICAgICAgICAgY2FsbGJhY2soeyB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIGF1dG8gaWRlbnRpZmllciA9IFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVy
OjpnZW5lcmF0ZSgpOwotICAgIGF1dG8gc2Vzc2lvbiA9IFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Q
cm94eTo6Y3JlYXRlKG1fZmFjdG9yeS5nZXQoKSwgaWRlbnRpZmllciwgKm1fY2RtKTsKLSAgICBt
X2ZhY3RvcnktPmFkZFNlc3Npb24oaWRlbnRpZmllciwgV1RGTW92ZShzZXNzaW9uKSk7Ci0gICAg
Y2FsbGJhY2soV1RGTW92ZShpZGVudGlmaWVyKSk7CisgICAgYXV0byBzZXNzaW9uSWRlbnRpZmll
ciA9IFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyOjpnZW5lcmF0ZSgpOworICAgIGF1
dG8gc2Vzc2lvbiA9IFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6Y3JlYXRlKCptX2ZhY3Rv
cnksIGxvZ0lkZW50aWZpZXIsIHNlc3Npb25JZGVudGlmaWVyLCAqbV9jZG0pOworICAgIG1fZmFj
dG9yeS0+YWRkU2Vzc2lvbihzZXNzaW9uSWRlbnRpZmllciwgV1RGTW92ZShzZXNzaW9uKSk7Cisg
ICAgY2FsbGJhY2soV1RGTW92ZShzZXNzaW9uSWRlbnRpZmllcikpOwogfQogCiB2b2lkIFJlbW90
ZUxlZ2FjeUNETVByb3h5OjpzZXRQbGF5ZXJJZChzdGQ6Om9wdGlvbmFsPE1lZGlhUGxheWVySWRl
bnRpZmllcj4mJiBwbGF5ZXJJZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmgKaW5kZXggZGU4ZjZkZjU1YTZlMWZhOGJlOTY2
Zjk0MWUwN2ZlMmY1YzUwMjFhNy4uOTFlNDM4YWM3ZTRjNGRmNGQzMjM3NjY3MmYyZWYyYTc0ZDg2
MjgzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxl
Z2FjeUNETVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUxlZ2FjeUNETVByb3h5LmgKQEAgLTYyLDcgKzYyLDcgQEAgcHJpdmF0ZToKICAgICB1c2luZyBT
dXBwb3J0c01JTUVUeXBlQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPjsK
ICAgICB2b2lkIHN1cHBvcnRzTUlNRVR5cGUoY29uc3QgU3RyaW5nJiwgU3VwcG9ydHNNSU1FVHlw
ZUNhbGxiYWNrJiYpOwogICAgIHVzaW5nIENyZWF0ZVNlc3Npb25DYWxsYmFjayA9IENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXImJik+OwotICAg
IHZvaWQgY3JlYXRlU2Vzc2lvbihjb25zdCBTdHJpbmcmLCBDcmVhdGVTZXNzaW9uQ2FsbGJhY2sm
Jik7CisgICAgdm9pZCBjcmVhdGVTZXNzaW9uKGNvbnN0IFN0cmluZyYsIHVpbnQ2NF90LCBDcmVh
dGVTZXNzaW9uQ2FsbGJhY2smJik7CiAgICAgdm9pZCBzZXRQbGF5ZXJJZChzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6Ok1lZGlhUGxheWVySWRlbnRpZmllcj4mJik7CiAKICAgICAvLyBMZWdhY3lDRE1D
bGllbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVM
ZWdhY3lDRE1Qcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5tZXNzYWdlcy5pbgppbmRleCA4ZWM2YjNiN2FhZWY2YjFi
NWZkNmYwZTM4NTdmZGM1MWEyYWY2NjA3Li4wNmY4YjBjYjRmMDFjYjZjN2IwYzZkNmVmYWQ2MTU4
YTM4YjZkZjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTGVnYWN5Q0RNUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yNSw3ICsyNSw3
IEBACiAKIG1lc3NhZ2VzIC0+IFJlbW90ZUxlZ2FjeUNETVByb3h5IE5vdFJlZkNvdW50ZWQgewog
ICAgIFN1cHBvcnRzTUlNRVR5cGUoU3RyaW5nIG1pbWVUeXBlKSAtPiAoYm9vbCBzdXBwb3J0cykg
U3luY2hyb25vdXMKLSAgICBDcmVhdGVTZXNzaW9uKFN0cmluZyBtZWRpYUtleXNTdG9yYWdlRGly
ZWN0b3J5KSAtPiAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllciBpZGVu
dGlmaWVyKSBTeW5jaHJvbm91cworICAgIENyZWF0ZVNlc3Npb24oU3RyaW5nIG1lZGlhS2V5c1N0
b3JhZ2VEaXJlY3RvcnksIHVpbnQ2NF90IGxvZ0lkZW50aWZpZXIpIC0+IChXZWJLaXQ6OlJlbW90
ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyIGlkZW50aWZpZXIpIFN5bmNocm9ub3VzCiAgICAg
U2V0UGxheWVySWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZpZXI+
IHBsYXllcklkKQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuY3BwCmluZGV4IDkzYjJmZjc0
MWIxZjgzNjliMjA1ODRlNDk3ZTRhMDIxYjljY2Y1NzguLmEwMDQwMmM5NmIyYjQyYWUwNmIxMjdh
YTcxYTVhYmJlNzg1OGRjNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuY3BwCkBAIC0zNSwx
OSArMzUsMjQgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9HZW5lcmljVHlwZWRBcnJheVZp
ZXdJbmxpbmVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9MZWdhY3lDRE0uaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgorI2luY2x1ZGUgPHd0Zi9Mb2dnZXJIZWxwZXIuaD4KIAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1zdGQ6OnVu
aXF1ZV9wdHI8UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5PiBSZW1vdGVMZWdhY3lDRE1TZXNz
aW9uUHJveHk6OmNyZWF0ZShXZWFrUHRyPFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eT4mJiBm
YWN0b3J5LCBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJD
b3JlOjpMZWdhY3lDRE0mIGNkbSkKK3N0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMZWdhY3lDRE1TZXNz
aW9uUHJveHk+IFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6Y3JlYXRlKFJlbW90ZUxlZ2Fj
eUNETUZhY3RvcnlQcm94eSYgZmFjdG9yeSwgdWludDY0X3QgbG9nSWRlbnRpZmllciwgUmVtb3Rl
TGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXIgc2Vzc2lvbklkZW50aWZpZXIsIFdlYkNvcmU6Okxl
Z2FjeUNETSYgY2RtKQogewotICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGVnYWN5
Q0RNU2Vzc2lvblByb3h5PihuZXcgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5KFdURk1vdmUo
ZmFjdG9yeSksIGlkZW50aWZpZXIsIGNkbSkpOworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8
UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5PihuZXcgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblBy
b3h5KGZhY3RvcnksIGxvZ0lkZW50aWZpZXIsIHNlc3Npb25JZGVudGlmaWVyLCBjZG0pKTsKIH0K
IAotUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJv
eHkoV2Vha1B0cjxSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk+JiYgZmFjdG9yeSwgUmVtb3Rl
TGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6TGVnYWN5Q0RN
JiBjZG0pCi0gICAgOiBtX2ZhY3RvcnkoV1RGTW92ZShmYWN0b3J5KSkKLSAgICAsIG1faWRlbnRp
ZmllcihpZGVudGlmaWVyKQorUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpSZW1vdGVMZWdh
Y3lDRE1TZXNzaW9uUHJveHkoUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5JiBmYWN0b3J5LCB1
aW50NjRfdCBsb2dJZGVudGlmaWVyLCBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllciBz
ZXNzaW9uSWRlbnRpZmllciwgV2ViQ29yZTo6TGVnYWN5Q0RNJiBjZG0pCisgICAgOiBtX2ZhY3Rv
cnkoZmFjdG9yeSkKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICAsIG1fbG9nZ2VyKGZh
Y3RvcnkubG9nZ2VyKCkpCisgICAgLCBtX2xvZ0lkZW50aWZpZXIocmVpbnRlcnByZXRfY2FzdDxj
b25zdCB2b2lkKj4obG9nSWRlbnRpZmllcikpCisjZW5kaWYKKyAgICAsIG1faWRlbnRpZmllcihz
ZXNzaW9uSWRlbnRpZmllcikKICAgICAsIG1fc2Vzc2lvbihjZG0uY3JlYXRlU2Vzc2lvbigqdGhp
cykpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmgKaW5kZXggMTU0NmJkZmRmZGNmMDkxMDg3
ODk0NGYzNDA3OTY3YTdhYjM4YmY4Ni4uZWE0OTk4MzYyYTYwMWUxYTQ3MjM1ZjYyYzFlMTVkNjcz
MTRjYTU3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuaApAQCAtNTMsNyArNTMsNyBAQCBjbGFz
cyBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkKICAgICA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VS
ZWNlaXZlcgogICAgICwgcHVibGljIFdlYkNvcmU6OkxlZ2FjeUNETVNlc3Npb25DbGllbnQgewog
cHVibGljOgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGVnYWN5Q0RNU2Vzc2lv
blByb3h5PiBjcmVhdGUoV2Vha1B0cjxSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk+JiYsIFJl
bW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyLCBXZWJDb3JlOjpMZWdhY3lDRE0mKTsKKyAg
ICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eT4gY3Jl
YXRlKFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eSYsIHVpbnQ2NF90IGxvZ0lkZW50aWZpZXIs
IFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyLCBXZWJDb3JlOjpMZWdhY3lDRE0mKTsK
ICAgICB+UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5KCk7CiAKICAgICBSZW1vdGVMZWdhY3lD
RE1GYWN0b3J5UHJveHkqIGZhY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2ZhY3RvcnkuZ2V0KCk7
IH0KQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFz
cyBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk7Ci0gICAgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lv
blByb3h5KFdlYWtQdHI8UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5PiYmLCBSZW1vdGVMZWdh
Y3lDRE1TZXNzaW9uSWRlbnRpZmllciwgV2ViQ29yZTo6TGVnYWN5Q0RNJik7CisgICAgUmVtb3Rl
TGVnYWN5Q0RNU2Vzc2lvblByb3h5KFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eSYsIHVpbnQ2
NF90IGxvZ0lkZW50aWZpZXIsIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyLCBXZWJD
b3JlOjpMZWdhY3lDRE0mKTsKIAogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgdm9p
ZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5h
bDsKQEAgLTc1LDYgKzc1LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZW5kTWVzc2FnZShVaW50
OEFycmF5KiwgU3RyaW5nIGRlc3RpbmF0aW9uVVJMKSBmaW5hbDsKICAgICB2b2lkIHNlbmRFcnJv
cihNZWRpYUtleUVycm9yQ29kZSwgdWludDMyX3Qgc3lzdGVtQ29kZSkgZmluYWw7CiAgICAgU3Ry
aW5nIG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdCBmaW5hbDsKKyNpZiAhUkVMRUFT
RV9MT0dfRElTQUJMRUQKKyAgICBjb25zdCBMb2dnZXImIGxvZ2dlcigpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIG1fbG9nZ2VyOyB9CisgICAgY29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcigpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1fbG9nSWRlbnRpZmllcjsgfQorI2VuZGlmCiAKICAgICAvLyBNZXNz
YWdlcwogICAgIHVzaW5nIEdlbmVyYXRlS2V5Q2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJDb3B5PiYmLCBjb25zdCBTdHJpbmcm
LCB1bnNpZ25lZCBzaG9ydCwgdWludDMyX3QpPjsKQEAgLTg2LDYgKzkwLDEyIEBAIHByaXZhdGU6
CiAgICAgdm9pZCBjYWNoZWRLZXlGb3JLZXlJRChTdHJpbmcga2V5SWQsIENhY2hlZEtleUZvcktl
eUlEQ2FsbGJhY2smJik7CiAKICAgICBXZWFrUHRyPFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94
eT4gbV9mYWN0b3J5OworCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgUmVmPGNvbnN0
IExvZ2dlcj4gbV9sb2dnZXI7CisgICAgY29uc3Qgdm9pZCogbV9sb2dJZGVudGlmaWVyOworI2Vu
ZGlmCisKICAgICBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllciBtX2lkZW50aWZpZXI7
CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkxlZ2FjeUNETVNlc3Npb24+IG1fc2Vzc2lv
bjsKICAgICBXZWFrUHRyPFJlbW90ZU1lZGlhUGxheWVyUHJveHk+IG1fcGxheWVyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZh
dGVSZW1vdGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBs
YXllclByaXZhdGVSZW1vdGUuY3BwCmluZGV4IGQwZGUzMzMzZDhiZDk2YTljZGY4MGFlZjEzYzc4
ZWI2MjU3MDk2MzAuLmYzNjRlNWMxNjQ2YjUyNGI2NTJmZDYwZDU0ODg0ZjlmNGEyYjVmOGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKQEAgLTExNDksNyArMTE0OSw3IEBAIEF1ZGlv
U291cmNlUHJvdmlkZXIqIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6YXVkaW9Tb3VyY2VQcm92
aWRlcigpCiAjZW5kaWYKIAogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQotc3Rk
Ojp1bmlxdWVfcHRyPExlZ2FjeUNETVNlc3Npb24+IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
Y3JlYXRlU2Vzc2lvbihjb25zdCBTdHJpbmcmLCBMZWdhY3lDRE1TZXNzaW9uQ2xpZW50KikKK3N0
ZDo6dW5pcXVlX3B0cjxMZWdhY3lDRE1TZXNzaW9uPiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6
OmNyZWF0ZVNlc3Npb24oY29uc3QgU3RyaW5nJiwgTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCYpCiB7
CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZS5oCmluZGV4IGE1NTk5ZDYyNTIwZGIyYzg3ZDAxMWVhMmQyYWQ0ODE2M2U2OTAw
MTMuLmIwYWZlMjFlZTAzZWUyNjM3ODQwOTcyYmYyZjMwNDQ3MjNkNjcxYmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXll
clByaXZhdGVSZW1vdGUuaApAQCAtMzQ3LDcgKzM0Nyw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAog
I2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQotICAgIHN0ZDo6dW5pcXVlX3B0cjxX
ZWJDb3JlOjpMZWdhY3lDRE1TZXNzaW9uPiBjcmVhdGVTZXNzaW9uKGNvbnN0IFN0cmluZyYsIFdl
YkNvcmU6OkxlZ2FjeUNETVNlc3Npb25DbGllbnQqKSBmaW5hbDsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8V2ViQ29yZTo6TGVnYWN5Q0RNU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbihjb25zdCBTdHJpbmcm
LCBXZWJDb3JlOjpMZWdhY3lDRE1TZXNzaW9uQ2xpZW50JikgZmluYWw7CiAgICAgdm9pZCBzZXRD
RE0oV2ViQ29yZTo6TGVnYWN5Q0RNKikgZmluYWw7CiAgICAgdm9pZCBzZXRDRE1TZXNzaW9uKFdl
YkNvcmU6OkxlZ2FjeUNETVNlc3Npb24qKSBmaW5hbDsKICAgICB2b2lkIGtleUFkZGVkKCkgZmlu
YWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUxlZ2FjeUNETS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUxlZ2FjeUNETS5jcHAKaW5kZXggNzU2ZjhmOTlmMTYyNjkzMzg3ZjA5M2RkNmYyYjA1NGE4Zjc5
OWY1Zi4uOGEzYWI5ZWQzNzVhMmU5MmU5Y2IzMzc3OTdlNmY4NDY5ZWVkOTViZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE0uY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RN
LmNwcApAQCAtNjAsMTggKzYwLDIzIEBAIGJvb2wgUmVtb3RlTGVnYWN5Q0RNOjpzdXBwb3J0c01J
TUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAgICAgcmV0dXJuIHN1cHBvcnRlZDsKIH0K
IAotc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkxlZ2FjeUNETVNlc3Npb24+IFJlbW90ZUxlZ2Fj
eUNETTo6Y3JlYXRlU2Vzc2lvbihXZWJDb3JlOjpMZWdhY3lDRE1TZXNzaW9uQ2xpZW50KiBjbGll
bnQpCitzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TGVnYWN5Q0RNU2Vzc2lvbj4gUmVtb3RlTGVn
YWN5Q0RNOjpjcmVhdGVTZXNzaW9uKFdlYkNvcmU6OkxlZ2FjeUNETVNlc3Npb25DbGllbnQmIGNs
aWVudCkKIHsKICAgICBpZiAoIW1fZmFjdG9yeSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
LSAgICBTdHJpbmcgc3RvcmFnZURpcmVjdG9yeSA9IGNsaWVudCA/IGNsaWVudC0+bWVkaWFLZXlz
U3RvcmFnZURpcmVjdG9yeSgpIDogZW1wdHlTdHJpbmcoKTsKKyAgICBTdHJpbmcgc3RvcmFnZURp
cmVjdG9yeSA9IGNsaWVudC5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCk7CisKKyAgICB1aW50
NjRfdCBsb2dJZGVudGlmaWVyIHsgMCB9OworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAg
IGxvZ0lkZW50aWZpZXIgPSByZWludGVycHJldF9jYXN0PHVpbnQ2NF90PihjbGllbnQubG9nSWRl
bnRpZmllcigpKTsKKyNlbmRpZgogCiAgICAgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZp
ZXIgaWRlbnRpZmllcjsKLSAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29u
bmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVMZWdhY3lDRE1Qcm94eTo6Q3JlYXRl
U2Vzc2lvbihzdG9yYWdlRGlyZWN0b3J5KSwgTWVzc2FnZXM6OlJlbW90ZUxlZ2FjeUNETVByb3h5
OjpDcmVhdGVTZXNzaW9uOjpSZXBseShpZGVudGlmaWVyKSwgbV9pZGVudGlmaWVyKTsKKyAgICBt
X2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1l
c3NhZ2VzOjpSZW1vdGVMZWdhY3lDRE1Qcm94eTo6Q3JlYXRlU2Vzc2lvbihzdG9yYWdlRGlyZWN0
b3J5LCBsb2dJZGVudGlmaWVyKSwgTWVzc2FnZXM6OlJlbW90ZUxlZ2FjeUNETVByb3h5OjpDcmVh
dGVTZXNzaW9uOjpSZXBseShpZGVudGlmaWVyKSwgbV9pZGVudGlmaWVyKTsKICAgICBpZiAoIWlk
ZW50aWZpZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBSZW1vdGVMZWdh
Y3lDRE1TZXNzaW9uOjpjcmVhdGUobV9mYWN0b3J5LCBXVEZNb3ZlKGlkZW50aWZpZXIpKTsKKyAg
ICByZXR1cm4gUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbjo6Y3JlYXRlKG1fZmFjdG9yeSwgV1RGTW92
ZShpZGVudGlmaWVyKSwgY2xpZW50KTsKIH0KIAogdm9pZCBSZW1vdGVMZWdhY3lDRE06OnNldFBs
YXllcklkKE1lZGlhUGxheWVySWRlbnRpZmllciBpZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE0uaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNLmgKaW5kZXggNDdm
MDJjYmViMjRkOGI1ZjA4MjYyZDQ2NTVhMDY5ZjlkNzgyZjAzNy4uYzEyNmMzMWUwYzUzN2Y1ZDU4
MTUxZjk2NTU0ZjNhODFmMzA2MmEwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE0uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETS5oCkBAIC01MCw3ICs1MCw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIH5SZW1vdGVMZWdhY3lDRE0oKTsKIAogICAgIGJvb2wgc3VwcG9ydHNN
SU1FVHlwZShjb25zdCBTdHJpbmcmKSBmaW5hbDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29y
ZTo6TGVnYWN5Q0RNU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbihXZWJDb3JlOjpMZWdhY3lDRE1TZXNz
aW9uQ2xpZW50KikgZmluYWw7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkxlZ2FjeUNE
TVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oV2ViQ29yZTo6TGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCYp
IGZpbmFsOwogICAgIHZvaWQgc2V0UGxheWVySWQoV2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVudGlm
aWVyKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24uY3BwCmluZGV4IGE1M2YxNTdi
ZWViZDdkYjJlODFiMmY1ZWNiZDYzODE4NjJhNjgwOGEuLjM3NWMxMGVlYTVhNzY0ZDVkOGVkYzVh
NTUxM2Q3OTUyOWE2ZTBkNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmNwcApAQCAtNjUsMTQg
KzY1LDE1IEBAIHN0YXRpYyBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkgY29udmVydFRvU2hhcmVkQnVm
ZmVyQ29weShUIGFycmF5KQogICAgIHJldHVybiB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFycmF5
LT5kYXRhKCksIGFycmF5LT5ieXRlTGVuZ3RoKCkpIH07CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxS
ZW1vdGVMZWdhY3lDRE1TZXNzaW9uPiBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uOjpjcmVhdGUoV2Vh
a1B0cjxSZW1vdGVMZWdhY3lDRE1GYWN0b3J5PiBmYWN0b3J5LCBSZW1vdGVMZWdhY3lDRE1TZXNz
aW9uSWRlbnRpZmllciYmIGlkZW50aWZpZXIpCitzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGVnYWN5
Q0RNU2Vzc2lvbj4gUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbjo6Y3JlYXRlKFdlYWtQdHI8UmVtb3Rl
TGVnYWN5Q0RNRmFjdG9yeT4gZmFjdG9yeSwgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZp
ZXImJiBpZGVudGlmaWVyLCBMZWdhY3lDRE1TZXNzaW9uQ2xpZW50JiBjbGllbnQpCiB7Ci0gICAg
cmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMZWdhY3lDRE1TZXNzaW9uPihuZXcgUmVtb3Rl
TGVnYWN5Q0RNU2Vzc2lvbihXVEZNb3ZlKGZhY3RvcnkpLCBXVEZNb3ZlKGlkZW50aWZpZXIpKSk7
CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMZWdhY3lDRE1TZXNzaW9uPihuZXcg
UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbihXVEZNb3ZlKGZhY3RvcnkpLCBXVEZNb3ZlKGlkZW50aWZp
ZXIpLCBjbGllbnQpKTsKIH0KIAotUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbjo6UmVtb3RlTGVnYWN5
Q0RNU2Vzc2lvbihXZWFrUHRyPFJlbW90ZUxlZ2FjeUNETUZhY3Rvcnk+IGZhY3RvcnksIFJlbW90
ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyJiYgaWRlbnRpZmllcikKK1JlbW90ZUxlZ2FjeUNE
TVNlc3Npb246OlJlbW90ZUxlZ2FjeUNETVNlc3Npb24oV2Vha1B0cjxSZW1vdGVMZWdhY3lDRE1G
YWN0b3J5PiBmYWN0b3J5LCBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllciYmIGlkZW50
aWZpZXIsIExlZ2FjeUNETVNlc3Npb25DbGllbnQmIGNsaWVudCkKICAgICA6IG1fZmFjdG9yeShX
VEZNb3ZlKGZhY3RvcnkpKQogICAgICwgbV9pZGVudGlmaWVyKFdURk1vdmUoaWRlbnRpZmllcikp
CisgICAgLCBtX2NsaWVudChjbGllbnQpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmgKaW5k
ZXggNTJjMGQxYTQ4YTk0MDlhMWRkMDk0NDhhZWI3NGM0YzQ4MTMyYmQyYi4uNTgxNTFmNDMyOGRh
OTZjN2VhN2Q5MmQyNjA2MDM4ZjNkMDZmYjc4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmgKQEAg
LTQ0LDcgKzQ0LDcgQEAgY2xhc3MgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbiBmaW5hbAogICAgIDog
cHVibGljIFdlYkNvcmU6OkxlZ2FjeUNETVNlc3Npb24KICAgICAsIHB1YmxpYyBJUEM6Ok1lc3Nh
Z2VSZWNlaXZlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVM
ZWdhY3lDRE1TZXNzaW9uPiBjcmVhdGUoV2Vha1B0cjxSZW1vdGVMZWdhY3lDRE1GYWN0b3J5Piwg
UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXImJik7CisgICAgc3RhdGljIHN0ZDo6dW5p
cXVlX3B0cjxSZW1vdGVMZWdhY3lDRE1TZXNzaW9uPiBjcmVhdGUoV2Vha1B0cjxSZW1vdGVMZWdh
Y3lDRE1GYWN0b3J5PiwgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXImJiwgV2ViQ29y
ZTo6TGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCYpOwogICAgIH5SZW1vdGVMZWdhY3lDRE1TZXNzaW9u
KCk7CiAKICAgICAvLyBNZXNzYWdlUmVjZWl2ZXIKQEAgLTUzLDExICs1MywxMCBAQCBwdWJsaWM6
CiAgICAgY29uc3QgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXImIGlkZW50aWZpZXIo
KSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KIAogcHJpdmF0ZToKLSAgICBSZW1vdGVM
ZWdhY3lDRE1TZXNzaW9uKFdlYWtQdHI8UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeT4sIFJlbW90ZUxl
Z2FjeUNETVNlc3Npb25JZGVudGlmaWVyJiYpOworICAgIFJlbW90ZUxlZ2FjeUNETVNlc3Npb24o
V2Vha1B0cjxSZW1vdGVMZWdhY3lDRE1GYWN0b3J5PiwgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklk
ZW50aWZpZXImJiwgV2ViQ29yZTo6TGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCYpOwogCiAgICAgLy8g
TGVnYWN5Q0RNU2Vzc2lvbgogICAgIFdlYkNvcmU6OkxlZ2FjeUNETVNlc3Npb25UeXBlIHR5cGUo
KSBmaW5hbCB7IHJldHVybiBXZWJDb3JlOjpDRE1TZXNzaW9uVHlwZVJlbW90ZTsgfQotICAgIHZv
aWQgc2V0Q2xpZW50KFdlYkNvcmU6OkxlZ2FjeUNETVNlc3Npb25DbGllbnQqIGNsaWVudCkgZmlu
YWwgeyBtX2NsaWVudCA9IGNsaWVudDsgfQogICAgIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gbV9zZXNzaW9uSWQ7IH0KICAgICBSZWZQdHI8VWludDhBcnJh
eT4gZ2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFVpbnQ4QXJyYXkq
IGluaXREYXRhLCBTdHJpbmcmIGRlc3RpbmF0aW9uVVJMLCB1bnNpZ25lZCBzaG9ydCYgZXJyb3JD
b2RlLCB1aW50MzJfdCYgc3lzdGVtQ29kZSkgZmluYWw7CiAgICAgdm9pZCByZWxlYXNlS2V5cygp
IGZpbmFsOwpAQCAtNzAsNyArNjksNyBAQCBwcml2YXRlOgogCiAgICAgV2Vha1B0cjxSZW1vdGVM
ZWdhY3lDRE1GYWN0b3J5PiBtX2ZhY3Rvcnk7CiAgICAgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklk
ZW50aWZpZXIgbV9pZGVudGlmaWVyOwotICAgIFdlYkNvcmU6OkxlZ2FjeUNETVNlc3Npb25DbGll
bnQqIG1fY2xpZW50OworICAgIFdlYWtQdHI8V2ViQ29yZTo6TGVnYWN5Q0RNU2Vzc2lvbkNsaWVu
dD4gbV9jbGllbnQ7CiAgICAgU3RyaW5nIG1fc2Vzc2lvbklkOwogICAgIG11dGFibGUgSGFzaE1h
cDxTdHJpbmcsIFJlZlB0cjxBcnJheUJ1ZmZlcj4+IG1fY2FjaGVkS2V5Q2FjaGU7CiB9Owo=
</data>
<flag name="commit-queue"
          id="472767"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450246</attachid>
            <date>2022-01-28 09:58:11 -0800</date>
            <delta_ts>2022-02-24 12:04:35 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-234319-20220128095810.patch</filename>
            <type>text/plain</type>
            <size>81689</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4NjU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWNiYmEwMjEwNmVlNzky
NzY4Yjc3MGJlMGE1OTU2YzdmNjNhM2Y4Yi4uOWQ5MmE5NWFkOTYwOWQ4OGVlNzBjODUwMjMxMTFk
MzE0M2U4N2RhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk3IEBACisyMDIxLTEyLTE0ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtSZWZhY3Rvcl0gQWRvcHQg
TG9nZ2VySGVscGVyIGluIExvZ2dpbmcgRU1FIGNsYXNzZXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDMxOQorCisgICAgICAgIFJldmlld2VkIGJ5
IEVyaWMgQ2FybHNvbi4KKworICAgICAgICBJbiBvcmRlciB0byBwYXNzIGRvd24gYSBsb2dnZXIo
KSBhbmQgbG9nSWRlbnRpZmllcigpIHRvIHRoZSBwbGF0Zm9ybS8KKyAgICAgICAgY2xhc3Nlcywg
bW9kaWZ5IExlZ2FjeUNETVNlc3Npb25DbGllbnQgdG8gYmUgYSBDYW5NYWtlV2Vha1B0ciBjbGFz
cywKKyAgICAgICAgc28gaXQgY2FuIGJlIHBhc3NlZCBhcm91bmQgYnkgcmVmZXJlbmNlIGFuZCBh
dXRvbWF0aWNhbGx5IGludmFsaWRhdGVkCisgICAgICAgIHdoZW4gdGhlIGNsaWVudCBpcyBkZXN0
cm95ZWQuIFRoZW4gbW9kaWZ5IExlZ2FjeUNETVNlc3Npb25DbGllbnQgdG8KKyAgICAgICAgcHJv
dmlkZSBhIGxvZ2dlcigpIGFuZCBsb2dJZGVudGlmaWVyKCkgdG8gY2FsbGVycy4KKworICAgICAg
ICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpMZWdhY3lDRE06OmNyZWF0ZVNlc3Npb24pOgorICAgICAgICAqIE1vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVByaXZhdGUuaDoKKyAgICAgICAgKiBNb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1Qcml2YXRlQ2xlYXJLZXkuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TGVnYWN5Q0RNUHJpdmF0ZUNsZWFyS2V5OjpjcmVhdGVTZXNzaW9u
KToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1Qcml2
YXRlQ2xlYXJLZXkuaDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9M
ZWdhY3lDRE1Qcml2YXRlTWVkaWFQbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0RNUHJp
dmF0ZU1lZGlhUGxheWVyOjpjcmVhdGVTZXNzaW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1Qcml2YXRlTWVkaWFQbGF5ZXIuaDoKKyAgICAgICAg
KiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1TZXNzaW9uQ2xlYXJLZXku
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0RNU2Vzc2lvbkNsZWFyS2V5OjpDRE1TZXNzaW9uQ2xl
YXJLZXkpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNE
TVNlc3Npb25DbGVhcktleS5oOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVn
YWN5L1dlYktpdE1lZGlhS2V5U2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRN
ZWRpYUtleVNlc3Npb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRNZWRpYUtl
eVNlc3Npb246OldlYktpdE1lZGlhS2V5U2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpXZWJL
aXRNZWRpYUtleVNlc3Npb246OmxvZ0NoYW5uZWwgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViS2l0TWVkaWFLZXlTZXNzaW9uOjp+V2ViS2l0TWVkaWFLZXlTZXNzaW9uKTogRGVsZXRlZC4K
KyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleVNl
c3Npb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRN
ZWRpYUtleXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0TWVkaWFLZXlzOjpjcmVhdGVT
ZXNzaW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRN
ZWRpYUtleXMuaDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJL
aXRNZWRpYUtleXMuaWRsOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0xlZ2FjeUNETVNl
c3Npb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6Y3JlYXRlU2Vzc2lvbik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllclByaXZhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZUludGVyZmFjZTo6Y3JlYXRlU2Vzc2lvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL0NETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akM6OmNyZWF0ZVNlc3Npb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9jZi9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGOjpDRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0YpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9DRE1TZXNzaW9uQVZGb3Vu
ZGF0aW9uQ0YuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2Yv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OmNyZWF0ZVNlc3Npb24pOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25DRi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL0NETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uLmg6CisgICAgICAgIChXZWJDb3Jl
OjpDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6bG9nQ2xhc3NOYW1lIGNvbnN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZD
b250ZW50S2V5U2Vzc2lvbi5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNETVNlc3Npb25BVkNvbnRl
bnRLZXlTZXNzaW9uOjpDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbik6CisgICAgICAgIChX
ZWJDb3JlOjpDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6Z2VuZXJhdGVLZXlSZXF1ZXN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkNETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uOjpyZWxl
YXNlS2V5cyk6CisgICAgICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lv
bjo6dXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNz
aW9uOjphZGRQYXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNU2Vzc2lvbkFWQ29udGVudEtl
eVNlc3Npb246OnJlbW92ZVBhcnNlcik6CisgICAgICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uQVZD
b250ZW50S2V5U2Vzc2lvbjo6Z2VuZXJhdGVLZXlSZWxlYXNlTWVzc2FnZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWRm91bmRhdGlv
bk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9D
RE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNETVNlc3Np
b25BVkZvdW5kYXRpb25PYmpDOjpDRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQyk6CisgICAgICAg
IChXZWJDb3JlOjpDRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQzo6fkNETVNlc3Npb25BVkZvdW5k
YXRpb25PYmpDKToKKyAgICAgICAgKFdlYkNvcmU6OkNETVNlc3Npb25BVkZvdW5kYXRpb25PYmpD
OjpnZW5lcmF0ZUtleVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNU2Vzc2lvbkFWRm91
bmRhdGlvbk9iakM6OnVwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uQVZGb3Vu
ZGF0aW9uT2JqQzo6cGxheWVyRGlkUmVjZWl2ZUVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNE
TVNlc3Npb25BVkZvdW5kYXRpb25PYmpDOjpsb2dDaGFubmVsIGNvbnN0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZTdHJlYW1TZXNz
aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uOjpsb2dD
bGFzc05hbWUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL0NETVNlc3Npb25BVlN0cmVhbVNlc3Npb24ubW06CisgICAgICAgIChXZWJDb3JlOjpD
RE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uOjpDRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNETVNlc3Npb25BVlN0cmVhbVNlc3Npb246On5DRE1TZXNzaW9uQVZT
dHJlYW1TZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNETVNlc3Npb25BVlN0cmVhbVNlc3Np
b246OmdlbmVyYXRlS2V5UmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uQVZT
dHJlYW1TZXNzaW9uOjpyZWxlYXNlS2V5cyk6CisgICAgICAgIChXZWJDb3JlOjpDRE1TZXNzaW9u
QVZTdHJlYW1TZXNzaW9uOjp1cGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNU2Vzc2lvbkFW
U3RyZWFtU2Vzc2lvbjo6YWRkUGFyc2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkNETVNlc3Npb25B
VlN0cmVhbVNlc3Npb246OnJlbW92ZVBhcnNlcik6CisgICAgICAgIChXZWJDb3JlOjpDRE1TZXNz
aW9uQVZTdHJlYW1TZXNzaW9uOjpnZW5lcmF0ZUtleVJlbGVhc2VNZXNzYWdlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uTWVkaWFTb3Vy
Y2VBVkZPYmpDLmg6CisgICAgICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZP
YmpDOjpsb2dnZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNU2Vzc2lvbk1lZGlhU291
cmNlQVZGT2JqQzo6bG9nSWRlbnRpZmllciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OkNETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakM6OkNETVNlc3Np
b25NZWRpYVNvdXJjZUFWRk9iakMpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNU2Vzc2lvbk1lZGlh
U291cmNlQVZGT2JqQzo6bG9nQ2hhbm5lbCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVz
b3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQzo6Y3JlYXRlU2Vzc2lvbik6CisgICAgICAgICogdGVzdGluZy9MZWdhY3lNb2NrQ0RNLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeU1vY2tDRE06OmNyZWF0ZVNlc3Npb24pOgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja0NETVNlc3Npb246Ok1vY2tDRE1TZXNzaW9uKToKKyAgICAgICAg
KiB0ZXN0aW5nL0xlZ2FjeU1vY2tDRE0uaDoKKwogMjAyMi0wMS0yNiAgV2Vuc29uIEhzaWVoICA8
d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIHNvbWUgbWlub3IgYWRqdXN0
bWVudHMgYWZ0ZXIgcjI4ODYyMQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA4ZWU5MDM3NmY5NThmMmU3MTcwZDdkMzQ3
YzRkNGUyMGUyZjY1ZDMzLi43ZWMxYzViZDhiNjIzM2JiNDkzOGQ2MWY3NGJiZDRlNDM2YTlhZWJl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDIxLTEyLTE0ICBKZXIgTm9ibGUgIDxqZXIu
bm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtSZWZhY3Rvcl0gQWRvcHQgTG9nZ2VySGVscGVy
IGluIExlZ2FjeSBFTUUgY2xhc3NlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjM0MzE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29u
LgorCisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk6Omxv
Z2dlciBjb25zdCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1G
YWN0b3J5UHJveHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNE
TVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNUHJveHk6OmNyZWF0
ZVNlc3Npb24pOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vz
c2lvblByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblBy
b3h5OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJv
eHk6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eSk6CisgICAgICAgICogR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwOgorICAgICAgICAoV2ViS2l0
OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNyZWF0ZVNlc3Npb24pOgorICAgICAgICAqIFdl
YlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUxlZ2FjeUNETTo6Y3JlYXRlU2Vzc2lvbik6CisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUxlZ2FjeUNETUZhY3Rvcnk6OmNyZWF0ZUNETSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUxlZ2FjeUNETVNlc3Npb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2Fj
eUNETVNlc3Npb246OlJlbW90ZUxlZ2FjeUNETVNlc3Npb24pOgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24uaDoKKwogMjAyMi0wMS0yNiAgSiBQ
YXNjb2UgIDxqX3Bhc2NvZUBhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYkF1dGhuXSBXZSBzaG91
bGQgcGFzcyBleHRlbnNpb25zIHRvIEFTQyBpZiBwb3NzaWJsZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETS5jcHAK
aW5kZXggMWYxYmVjN2MzMzQyNGZlMDg0Mjc1NDhmMDcyY2M3ZGZkMTJmZDBjZS4uNjllNzU5YjQ5
MWNmYWZjOGEwZDhkZGU2YmViMDM0OGFlZDYwOGNkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE0uY3BwCkBA
IC0xMzAsNyArMTMwLDcgQEAgYm9vbCBMZWdhY3lDRE06OnN1cHBvcnRzTUlNRVR5cGUoY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSkgY29uc3QKIAogc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNETVNlc3Np
b24+IExlZ2FjeUNETTo6Y3JlYXRlU2Vzc2lvbihMZWdhY3lDRE1TZXNzaW9uQ2xpZW50JiBjbGll
bnQpCiB7Ci0gICAgYXV0byBzZXNzaW9uID0gbV9wcml2YXRlLT5jcmVhdGVTZXNzaW9uKCZjbGll
bnQpOworICAgIGF1dG8gc2Vzc2lvbiA9IG1fcHJpdmF0ZS0+Y3JlYXRlU2Vzc2lvbihjbGllbnQp
OwogICAgIGlmIChtZWRpYVBsYXllcigpKQogICAgICAgICBtZWRpYVBsYXllcigpLT5zZXRDRE1T
ZXNzaW9uKHNlc3Npb24uZ2V0KCkpOwogICAgIHJldHVybiBzZXNzaW9uOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNUHJp
dmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVn
YWN5Q0RNUHJpdmF0ZS5oCmluZGV4IGYyNDk3MDcyZTc4NTc2MGM1OWUyMzAzOTM0ZmI3ZjljYzQ3
NzJkZmIuLmU3ZDRjNGI3YzU0MDhjMGIyMmE4YzFiYWQzOGViN2RhMzBjOGZkNDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNE
TVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xl
Z2FjeS9MZWdhY3lDRE1Qcml2YXRlLmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogCiAgICAg
dmlydHVhbCBib29sIHN1cHBvcnRzTUlNRVR5cGUoY29uc3QgU3RyaW5nJikgPSAwOwogCi0gICAg
dmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8TGVnYWN5Q0RNU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbihM
ZWdhY3lDRE1TZXNzaW9uQ2xpZW50KikgPSAwOworICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRy
PExlZ2FjeUNETVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCYp
ID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVByaXZhdGVDbGVh
cktleS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9M
ZWdhY3lDRE1Qcml2YXRlQ2xlYXJLZXkuY3BwCmluZGV4IDE3ZDRmYjcyNzQwZDZlMWMzZGY2ZmU2
Zjc2ODc1YjRjOTRiMjNiYjcuLmI3YWZmY2E5MTM5YTc5MDRkZTJjNDk4NDA3Yzk3OTBmMjIzZGQ0
NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVn
YWN5L0xlZ2FjeUNETVByaXZhdGVDbGVhcktleS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNUHJpdmF0ZUNsZWFyS2V5LmNwcApA
QCAtNTksNyArNTksNyBAQCBib29sIExlZ2FjeUNETVByaXZhdGVDbGVhcktleTo6c3VwcG9ydHNN
SU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogICAgIHJldHVybiBNZWRpYVBsYXllcjo6
c3VwcG9ydHNLZXlTeXN0ZW0obV9jZG0tPmtleVN5c3RlbSgpLCBtaW1lVHlwZSk7CiB9CiAKLXN0
ZDo6dW5pcXVlX3B0cjxMZWdhY3lDRE1TZXNzaW9uPiBMZWdhY3lDRE1Qcml2YXRlQ2xlYXJLZXk6
OmNyZWF0ZVNlc3Npb24oTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCogY2xpZW50KQorc3RkOjp1bmlx
dWVfcHRyPExlZ2FjeUNETVNlc3Npb24+IExlZ2FjeUNETVByaXZhdGVDbGVhcktleTo6Y3JlYXRl
U2Vzc2lvbihMZWdhY3lDRE1TZXNzaW9uQ2xpZW50JiBjbGllbnQpCiB7CiAgICAgcmV0dXJuIG1h
a2VVbmlxdWU8Q0RNU2Vzc2lvbkNsZWFyS2V5PihjbGllbnQpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNUHJpdmF0
ZUNsZWFyS2V5LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2Fj
eS9MZWdhY3lDRE1Qcml2YXRlQ2xlYXJLZXkuaAppbmRleCA4NzY0NjhiYTQ0OTdlYTViYTlhZGEz
ZTFlYmNjMjViMjEzOWI5N2Q0Li43MWI4MjgyYjcxNTJiZjhiNzcxMjhmODRkZTc1MmQxYmVmZTFi
NmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xl
Z2FjeS9MZWdhY3lDRE1Qcml2YXRlQ2xlYXJLZXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1Qcml2YXRlQ2xlYXJLZXkuaApAQCAt
NDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNLZXlTeXN0ZW1B
bmRNaW1lVHlwZShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSk7CiAKICAgICBib29sIHN1cHBvcnRzTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkg
b3ZlcnJpZGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNETVNlc3Npb24+IGNyZWF0ZVNl
c3Npb24oTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCopIG92ZXJyaWRlOworICAgIHN0ZDo6dW5pcXVl
X3B0cjxMZWdhY3lDRE1TZXNzaW9uPiBjcmVhdGVTZXNzaW9uKExlZ2FjeUNETVNlc3Npb25DbGll
bnQmKSBvdmVycmlkZTsKIAogcHJvdGVjdGVkOgogICAgIExlZ2FjeUNETSogbV9jZG07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdh
Y3lDRE1Qcml2YXRlTWVkaWFQbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNUHJpdmF0ZU1lZGlhUGxheWVyLmNwcAppbmRleCAz
NTJlZmE4OTAzMjAzOTI3OTFiYTNkZDczNGQ3ZWJlNGYzMmZkYjE4Li43ZjJlNzE1ZmNmM2ExNDUw
NGFjNjljMGQ3ODFjY2Y3ODJkNjJmYjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1Qcml2YXRlTWVkaWFQbGF5ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2Fj
eUNETVByaXZhdGVNZWRpYVBsYXllci5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgYm9vbCBDRE1Qcml2
YXRlTWVkaWFQbGF5ZXI6OnN1cHBvcnRzTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkK
ICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OnN1cHBvcnRzS2V5U3lzdGVtKG1fY2RtLT5rZXlTeXN0
ZW0oKSwgbWltZVR5cGUpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8TGVnYWN5Q0RNU2Vzc2lvbj4g
Q0RNUHJpdmF0ZU1lZGlhUGxheWVyOjpjcmVhdGVTZXNzaW9uKExlZ2FjeUNETVNlc3Npb25DbGll
bnQqIGNsaWVudCkKK3N0ZDo6dW5pcXVlX3B0cjxMZWdhY3lDRE1TZXNzaW9uPiBDRE1Qcml2YXRl
TWVkaWFQbGF5ZXI6OmNyZWF0ZVNlc3Npb24oTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCYgY2xpZW50
KQogewogICAgIGF1dG8gbWVkaWFQbGF5ZXIgPSBtX2NkbS0+bWVkaWFQbGF5ZXIoKTsKICAgICBp
ZiAoIW1lZGlhUGxheWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNUHJpdmF0ZU1lZGlhUGxheWVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1Qcml2YXRlTWVk
aWFQbGF5ZXIuaAppbmRleCA2NjAyZWJmZTkwNDQ1YzU1OTNjNmU1ZmY4ZjFhNWIyZTJkZDkyYzE3
Li41ZGMzYzExMGIwNzRlNzc1MjNmMmEwYjk2Njg4NGNjNDdkYWEzOTU0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1Qcml2
YXRlTWVkaWFQbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL2xlZ2FjeS9MZWdhY3lDRE1Qcml2YXRlTWVkaWFQbGF5ZXIuaApAQCAtNDUsNyArNDUsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q0RNUHJpdmF0ZU1lZGlhUGxheWVyKCkgPSBkZWZhdWx0
OwogCiAgICAgYm9vbCBzdXBwb3J0c01JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpIG92
ZXJyaWRlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxMZWdhY3lDRE1TZXNzaW9uPiBjcmVhdGVTZXNz
aW9uKExlZ2FjeUNETVNlc3Npb25DbGllbnQqKSBvdmVycmlkZTsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8TGVnYWN5Q0RNU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbihMZWdhY3lDRE1TZXNzaW9uQ2xpZW50
Jikgb3ZlcnJpZGU7CiAKICAgICBMZWdhY3lDRE0qIGNkbSgpIGNvbnN0IHsgcmV0dXJuIG1fY2Rt
OyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
bGVnYWN5L0xlZ2FjeUNETVNlc3Npb25DbGVhcktleS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1TZXNzaW9uQ2xlYXJLZXkuY3BwCmlu
ZGV4IDNjOWNlNjU4NjYxYjRlYjNiNDdlMjlmMzkzODUzNWNmOTc2MTczN2QuLjRmZjZhZGY0ZWNm
ZDdkZWJhZWFiMDUxZDU5NjBiNGI5NTkyZmM3OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVNlc3Npb25DbGVhcktleS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVn
YWN5Q0RNU2Vzc2lvbkNsZWFyS2V5LmNwcApAQCAtNDksNyArNDksNyBAQCBzdGF0aWMgVk0mIGNs
ZWFyS2V5Vk0oKQogICAgIHJldHVybiB2bTsKIH0KIAotQ0RNU2Vzc2lvbkNsZWFyS2V5OjpDRE1T
ZXNzaW9uQ2xlYXJLZXkoTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCogY2xpZW50KQorQ0RNU2Vzc2lv
bkNsZWFyS2V5OjpDRE1TZXNzaW9uQ2xlYXJLZXkoTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCYgY2xp
ZW50KQogICAgIDogbV9jbGllbnQoY2xpZW50KQogICAgICwgbV9zZXNzaW9uSWQoY3JlYXRlQ2Fu
b25pY2FsVVVJRFN0cmluZygpKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNU2Vzc2lvbkNsZWFyS2V5LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1TZXNzaW9u
Q2xlYXJLZXkuaAppbmRleCBmZTUzNDU5MWFkN2Q1NjAwYzQxOWZhYzc5NzA0YzQxZDY2NzFiNDkw
Li5hOWI0ZDBhMzYzZWQ1OGI0YzBkNDJhNDMyY2U5Nzg0ZTcxYTcxYTIwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1TZXNz
aW9uQ2xlYXJLZXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L2xlZ2FjeS9MZWdhY3lDRE1TZXNzaW9uQ2xlYXJLZXkuaApAQCAtMzYsMTIgKzM2LDExIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENETVNlc3Npb25DbGVhcktleSBmaW5hbCA6IHB1Ymxp
YyBMZWdhY3lDRE1TZXNzaW9uIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKLSAgICBDRE1TZXNzaW9uQ2xlYXJLZXkoTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCopOworICAg
IENETVNlc3Npb25DbGVhcktleShMZWdhY3lDRE1TZXNzaW9uQ2xpZW50Jik7CiAgICAgdmlydHVh
bCB+Q0RNU2Vzc2lvbkNsZWFyS2V5KCk7CiAKICAgICAvLyBDRE1TZXNzaW9uUHJpdmF0ZQogICAg
IExlZ2FjeUNETVNlc3Npb25UeXBlIHR5cGUoKSBvdmVycmlkZSB7IHJldHVybiBDRE1TZXNzaW9u
VHlwZUNsZWFyS2V5OyB9Ci0gICAgdm9pZCBzZXRDbGllbnQoTGVnYWN5Q0RNU2Vzc2lvbkNsaWVu
dCogY2xpZW50KSBvdmVycmlkZSB7IG1fY2xpZW50ID0gY2xpZW50OyB9CiAgICAgY29uc3QgU3Ry
aW5nJiBzZXNzaW9uSWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3Nlc3Npb25JZDsgfQog
ICAgIFJlZlB0cjxVaW50OEFycmF5PiBnZW5lcmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgVWludDhBcnJheSosIFN0cmluZyYsIHVuc2lnbmVkIHNob3J0JiwgdWludDMyX3Qm
KSBvdmVycmlkZTsKICAgICB2b2lkIHJlbGVhc2VLZXlzKCkgb3ZlcnJpZGU7CkBAIC00OSw3ICs0
OCw3IEBAIHB1YmxpYzoKICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGNhY2hlZEtleUZvcktleUlE
KGNvbnN0IFN0cmluZyYpIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIExlZ2FjeUNE
TVNlc3Npb25DbGllbnQqIG1fY2xpZW50OworICAgIFdlYWtQdHI8TGVnYWN5Q0RNU2Vzc2lvbkNs
aWVudD4gbV9jbGllbnQ7CiAgICAgUmVmUHRyPFVpbnQ4QXJyYXk+IG1faW5pdERhdGE7CiAgICAg
SGFzaE1hcDxTdHJpbmcsIFZlY3Rvcjx1aW50OF90Pj4gbV9jYWNoZWRLZXlzOwogICAgIFN0cmlu
ZyBtX3Nlc3Npb25JZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleVNlc3Npb24uY3Bw
CmluZGV4IDljOTVkOWVhMTNkMmQ5MWU1NWI4NDI2YTU4NzFlNDJhMGNmZGY5Y2IuLjA5NmNlOTYz
OGE3NDY0ZDQwMmJhZDVkMzY3OWU2OTYzMzIyZTQwODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5U2Vzc2lvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2Vi
S2l0TWVkaWFLZXlTZXNzaW9uLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkRvY3Vt
ZW50LmgiCiAjaW5jbHVkZSAiRXZlbnRMb29wLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgor
I2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiU2VjdXJp
dHlPcmlnaW5EYXRhLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKQEAgLTQwLDM4ICs0MSw0MyBA
QAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1VpbnQ4QXJyYXkuaD4KICNpbmNsdWRlIDx3dGYv
RmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CisjaW5jbHVk
ZSA8d3RmL0xvZ2dlckhlbHBlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtF
X0lTT19BTExPQ0FURURfSU1QTChXZWJLaXRNZWRpYUtleVNlc3Npb24pOwogCi1SZWY8V2ViS2l0
TWVkaWFLZXlTZXNzaW9uPiBXZWJLaXRNZWRpYUtleVNlc3Npb246OmNyZWF0ZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0LCBXZWJLaXRNZWRpYUtleXMmIGtleXMsIGNvbnN0IFN0cmlu
ZyYga2V5U3lzdGVtKQorUmVmPFdlYktpdE1lZGlhS2V5U2Vzc2lvbj4gV2ViS2l0TWVkaWFLZXlT
ZXNzaW9uOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBXZWJLaXRNZWRpYUtleXMmIGtleXMs
IGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKQogewotICAgIGF1dG8gc2Vzc2lvbiA9IGFkb3B0UmVm
KCpuZXcgV2ViS2l0TWVkaWFLZXlTZXNzaW9uKGNvbnRleHQsIGtleXMsIGtleVN5c3RlbSkpOwor
ICAgIGF1dG8gc2Vzc2lvbiA9IGFkb3B0UmVmKCpuZXcgV2ViS2l0TWVkaWFLZXlTZXNzaW9uKGRv
Y3VtZW50LCBrZXlzLCBrZXlTeXN0ZW0pKTsKICAgICBzZXNzaW9uLT5zdXNwZW5kSWZOZWVkZWQo
KTsKICAgICByZXR1cm4gc2Vzc2lvbjsKIH0KIAotV2ViS2l0TWVkaWFLZXlTZXNzaW9uOjpXZWJL
aXRNZWRpYUtleVNlc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgV2ViS2l0
TWVkaWFLZXlzJiBrZXlzLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSkKLSAgICA6IEFjdGl2ZURP
TU9iamVjdCgmY29udGV4dCkKK1dlYktpdE1lZGlhS2V5U2Vzc2lvbjo6V2ViS2l0TWVkaWFLZXlT
ZXNzaW9uKERvY3VtZW50JiBkb2N1bWVudCwgV2ViS2l0TWVkaWFLZXlzJiBrZXlzLCBjb25zdCBT
dHJpbmcmIGtleVN5c3RlbSkKKyAgICA6IEFjdGl2ZURPTU9iamVjdCgmZG9jdW1lbnQpCisjaWYg
IVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgLCBtX2xvZ2dlcihkb2N1bWVudC5sb2dnZXIoKSkK
KyAgICAsIG1fbG9nSWRlbnRpZmllcihMb2dnZXJIZWxwZXI6OnVuaXF1ZUxvZ0lkZW50aWZpZXIo
KSkKKyNlbmRpZgogICAgICwgbV9rZXlzKCZrZXlzKQogICAgICwgbV9rZXlTeXN0ZW0oa2V5U3lz
dGVtKQogICAgICwgbV9zZXNzaW9uKGtleXMuY2RtKCkuY3JlYXRlU2Vzc2lvbigqdGhpcykpCiAg
ICAgLCBtX2tleVJlcXVlc3RUaW1lcigqdGhpcywgJldlYktpdE1lZGlhS2V5U2Vzc2lvbjo6a2V5
UmVxdWVzdFRpbWVyRmlyZWQpCiAgICAgLCBtX2FkZEtleVRpbWVyKCp0aGlzLCAmV2ViS2l0TWVk
aWFLZXlTZXNzaW9uOjphZGRLZXlUaW1lckZpcmVkKQogeworICAgIEFMV0FZU19MT0coTE9HSURF
TlRJRklFUik7CiAgICAgaWYgKG1fc2Vzc2lvbikKICAgICAgICAgbV9zZXNzaW9uSWQgPSBtX3Nl
c3Npb24tPnNlc3Npb25JZCgpOwogfQogCiBXZWJLaXRNZWRpYUtleVNlc3Npb246On5XZWJLaXRN
ZWRpYUtleVNlc3Npb24oKQogewotICAgIGlmIChtX3Nlc3Npb24pCi0gICAgICAgIG1fc2Vzc2lv
bi0+c2V0Q2xpZW50KG51bGxwdHIpOworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CiB9
Ci0KIHZvaWQgV2ViS2l0TWVkaWFLZXlTZXNzaW9uOjpjbG9zZSgpCiB7CisgICAgQUxXQVlTX0xP
RyhMT0dJREVOVElGSUVSKTsKICAgICBpZiAobV9zZXNzaW9uKSB7CiAgICAgICAgIG1fc2Vzc2lv
bi0+cmVsZWFzZUtleXMoKTsKICAgICAgICAgbV9zZXNzaW9uID0gbnVsbHB0cjsKQEAgLTg1LDYg
KzkxLDcgQEAgUmVmUHRyPEFycmF5QnVmZmVyPiBXZWJLaXRNZWRpYUtleVNlc3Npb246OmNhY2hl
ZEtleUZvcktleUlkKGNvbnN0IFN0cmluZyYga2V5SWQKIAogdm9pZCBXZWJLaXRNZWRpYUtleVNl
c3Npb246OmdlbmVyYXRlS2V5UmVxdWVzdChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBSZWY8VWlu
dDhBcnJheT4mJiBpbml0RGF0YSkKIHsKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJt
aW1lVHlwZTogIiwgbWltZVR5cGUpOwogICAgIG1fcGVuZGluZ0tleVJlcXVlc3RzLmFwcGVuZCh7
IG1pbWVUeXBlLCBXVEZNb3ZlKGluaXREYXRhKSB9KTsKICAgICBtX2tleVJlcXVlc3RUaW1lci5z
dGFydE9uZVNob3QoMF9zKTsKIH0KQEAgLTEzOCw5ICsxNDUsMTIgQEAgRXhjZXB0aW9uT3I8dm9p
ZD4gV2ViS2l0TWVkaWFLZXlTZXNzaW9uOjp1cGRhdGUoUmVmPFVpbnQ4QXJyYXk+JiYga2V5KQog
ICAgIC8vIFRoZSBhZGRLZXkoa2V5KSBtZXRob2QgbXVzdCBydW4gdGhlIGZvbGxvd2luZyBzdGVw
czoKICAgICAvLyAxLiBJZiB0aGUgZmlyc3Qgb3Igc2Vjb25kIGFyZ3VtZW50IFtzaWNdIGlzIGFu
IGVtcHR5IGFycmF5LCB0aHJvdyBhbiBJbnZhbGlkQWNjZXNzRXJyb3IuCiAgICAgLy8gTk9URTog
dGhlIHJlZmVyZW5jZSB0byBhICJzZWNvbmQgYXJndW1lbnQiIGlzIGEgc3BlYyBidWcuCi0gICAg
aWYgKCFrZXktPmxlbmd0aCgpKQorICAgIGlmICgha2V5LT5sZW5ndGgoKSkgeworICAgICAgICBF
UlJPUl9MT0coTE9HSURFTlRJRklFUiwgImVycm9yOiBlbXB0eSBrZXkiKTsKICAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRBY2Nlc3NFcnJvciB9OworICAgIH0KIAorICAgIEFMV0FZ
U19MT0coTE9HSURFTlRJRklFUik7CiAgICAgLy8gMi4gU2NoZWR1bGUgYSB0YXNrIHRvIGhhbmRs
ZSB0aGUgY2FsbCwgcHJvdmlkaW5nIGtleS4KICAgICBtX3BlbmRpbmdLZXlzLmFwcGVuZChXVEZN
b3ZlKGtleSkpOwogICAgIG1fYWRkS2V5VGltZXIuc3RhcnRPbmVTaG90KDBfcyk7CkBAIC0yMDQs
NiArMjE0LDcgQEAgdm9pZCBXZWJLaXRNZWRpYUtleVNlc3Npb246OmFkZEtleVRpbWVyRmlyZWQo
KQogCiB2b2lkIFdlYktpdE1lZGlhS2V5U2Vzc2lvbjo6c2VuZE1lc3NhZ2UoVWludDhBcnJheSog
bWVzc2FnZSwgU3RyaW5nIGRlc3RpbmF0aW9uVVJMKQogeworICAgIEFMV0FZU19MT0coTE9HSURF
TlRJRklFUik7CiAgICAgYXV0byBldmVudCA9IFdlYktpdE1lZGlhS2V5TWVzc2FnZUV2ZW50Ojpj
cmVhdGUoZXZlbnROYW1lcygpLndlYmtpdGtleW1lc3NhZ2VFdmVudCwgbWVzc2FnZSwgZGVzdGlu
YXRpb25VUkwpOwogICAgIGV2ZW50LT5zZXRUYXJnZXQodGhpcyk7CiAgICAgcXVldWVUYXNrVG9E
aXNwYXRjaEV2ZW50KCp0aGlzLCBUYXNrU291cmNlOjpOZXR3b3JraW5nLCBXVEZNb3ZlKGV2ZW50
KSk7CkBAIC0yMTEsNiArMjIyLDcgQEAgdm9pZCBXZWJLaXRNZWRpYUtleVNlc3Npb246OnNlbmRN
ZXNzYWdlKFVpbnQ4QXJyYXkqIG1lc3NhZ2UsIFN0cmluZyBkZXN0aW5hdGlvblUKIAogdm9pZCBX
ZWJLaXRNZWRpYUtleVNlc3Npb246OnNlbmRFcnJvcihNZWRpYUtleUVycm9yQ29kZSBlcnJvckNv
ZGUsIHVpbnQzMl90IHN5c3RlbUNvZGUpCiB7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVS
LCAiZXJyb3JDb2RlOiAiLCAodW5zaWduZWQpZXJyb3JDb2RlLCAiLCBzeXN0ZW1Db2RlOiAiLCBz
eXN0ZW1Db2RlKTsKICAgICBtX2Vycm9yID0gV2ViS2l0TWVkaWFLZXlFcnJvcjo6Y3JlYXRlKGVy
cm9yQ29kZSwgc3lzdGVtQ29kZSk7CiAKICAgICBhdXRvIGtleWVycm9yRXZlbnQgPSBFdmVudDo6
Y3JlYXRlKGV2ZW50TmFtZXMoKS53ZWJraXRrZXllcnJvckV2ZW50LCBFdmVudDo6Q2FuQnViYmxl
OjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pOwpAQCAtMjUwLDYgKzI2MiwxMyBAQCBjb25z
dCBjaGFyKiBXZWJLaXRNZWRpYUtleVNlc3Npb246OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25z
dAogICAgIHJldHVybiAiV2ViS2l0TWVkaWFLZXlTZXNzaW9uIjsKIH0KIAorI2lmICFSRUxFQVNF
X0xPR19ESVNBQkxFRAorV1RGTG9nQ2hhbm5lbCYgV2ViS2l0TWVkaWFLZXlTZXNzaW9uOjpsb2dD
aGFubmVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gTG9nRU1FOworfQorI2VuZGlmCisKIH0KIAog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L2xlZ2FjeS9XZWJLaXRNZWRpYUtleVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5U2Vzc2lvbi5oCmluZGV4IGZmM2Y2
YmY3YjhiYjNhZmQ5OWJlNjYxMGQwZGE2YzRjZDg5OWUwOTUuLjRlNzkyZjYzZjYxZTRjNDJkYzhh
NDJhYzIxNGJkYWI3NDAwNjJlZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5U2Vzc2lvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5U2Vz
c2lvbi5oCkBAIC00Myw3ICs0Myw3IEBAIGNsYXNzIFdlYktpdE1lZGlhS2V5czsKIGNsYXNzIFdl
YktpdE1lZGlhS2V5U2Vzc2lvbiBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYktpdE1lZGlh
S2V5U2Vzc2lvbj4sIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMgQWN0
aXZlRE9NT2JqZWN0LCBwcml2YXRlIExlZ2FjeUNETVNlc3Npb25DbGllbnQgewogICAgIFdURl9N
QUtFX0lTT19BTExPQ0FURUQoV2ViS2l0TWVkaWFLZXlTZXNzaW9uKTsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUmVmPFdlYktpdE1lZGlhS2V5U2Vzc2lvbj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmLCBXZWJLaXRNZWRpYUtleXMmLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSk7CisgICAg
c3RhdGljIFJlZjxXZWJLaXRNZWRpYUtleVNlc3Npb24+IGNyZWF0ZShEb2N1bWVudCYsIFdlYktp
dE1lZGlhS2V5cyYsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKTsKICAgICB+V2ViS2l0TWVkaWFL
ZXlTZXNzaW9uKCk7CiAKICAgICBXZWJLaXRNZWRpYUtleUVycm9yKiBlcnJvcigpIHsgcmV0dXJu
IG1fZXJyb3IuZ2V0KCk7IH0KQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogICAgIHVzaW5nIFJl
ZkNvdW50ZWQ6OmRlcmVmOwogCiBwcml2YXRlOgotICAgIFdlYktpdE1lZGlhS2V5U2Vzc2lvbihT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiwgV2ViS2l0TWVkaWFLZXlzJiwgY29uc3QgU3RyaW5nJiBr
ZXlTeXN0ZW0pOworICAgIFdlYktpdE1lZGlhS2V5U2Vzc2lvbihEb2N1bWVudCYsIFdlYktpdE1l
ZGlhS2V5cyYsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKTsKICAgICB2b2lkIGtleVJlcXVlc3RU
aW1lckZpcmVkKCk7CiAgICAgdm9pZCBhZGRLZXlUaW1lckZpcmVkKCk7CiAKQEAgLTgyLDYgKzgy
LDE2IEBAIHByaXZhdGU6CiAgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRl
cmZhY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBXZWJLaXRNZWRpYUtleVNlc3Npb25FdmVudFRh
cmdldEludGVyZmFjZVR5cGU7IH0KICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gQWN0aXZlRE9NT2JqZWN0Ojpz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KIAorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAor
ICAgIGNvbnN0IExvZ2dlciYgbG9nZ2VyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9sb2dnZXI7
IH0KKyAgICBjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
bV9sb2dJZGVudGlmaWVyOyB9CisgICAgY29uc3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29uc3Qg
eyByZXR1cm4gIldlYktpdE1lZGlhS2V5U2Vzc2lvbiI7IH0KKyAgICBXVEZMb2dDaGFubmVsJiBs
b2dDaGFubmVsKCkgY29uc3Q7CisKKyAgICBSZWY8TG9nZ2VyPiBtX2xvZ2dlcjsKKyAgICBjb25z
dCB2b2lkKiBtX2xvZ0lkZW50aWZpZXI7CisjZW5kaWYKKwogICAgIFdlYktpdE1lZGlhS2V5cyog
bV9rZXlzOwogICAgIFN0cmluZyBtX2tleVN5c3RlbTsKICAgICBTdHJpbmcgbV9zZXNzaW9uSWQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2Fj
eS9XZWJLaXRNZWRpYUtleXMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlzLmNwcAppbmRleCAxODFhODM5NDJiMDQwYzcyYzI5
ZGNlYWYzNGFmMzZmNDM3ZGVlNjVmLi43MGRiMTFjNDc0ZTgwMTdhYWI3NGJiOTY1MTRjOWVjMzU0
MjQ5MjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L2xlZ2FjeS9XZWJLaXRNZWRpYUtleXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5cy5jcHAKQEAgLTc0LDcgKzc0LDcg
QEAgV2ViS2l0TWVkaWFLZXlzOjp+V2ViS2l0TWVkaWFLZXlzKCkKICAgICB9CiB9CiAKLUV4Y2Vw
dGlvbk9yPFJlZjxXZWJLaXRNZWRpYUtleVNlc3Npb24+PiBXZWJLaXRNZWRpYUtleXM6OmNyZWF0
ZVNlc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiB0
eXBlLCBSZWY8VWludDhBcnJheT4mJiBpbml0RGF0YSkKK0V4Y2VwdGlvbk9yPFJlZjxXZWJLaXRN
ZWRpYUtleVNlc3Npb24+PiBXZWJLaXRNZWRpYUtleXM6OmNyZWF0ZVNlc3Npb24oRG9jdW1lbnQm
IGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxVaW50OEFycmF5PiYmIGluaXREYXRh
KQogewogICAgIC8vIEZyb20gPGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMTQvV0QtZW5jcnlwdGVk
LW1lZGlhLTIwMTQwMjE4LyNkb20tY3JlYXRlc2Vzc2lvbj46CiAgICAgLy8gVGhlIGNyZWF0ZVNl
c3Npb24odHlwZSwgaW5pdERhdGEpIG1ldGhvZCBtdXN0IHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBz
OgpAQCAtOTYsNyArOTYsNyBAQCBFeGNlcHRpb25PcjxSZWY8V2ViS2l0TWVkaWFLZXlTZXNzaW9u
Pj4gV2ViS2l0TWVkaWFLZXlzOjpjcmVhdGVTZXNzaW9uKFNjcmlwdEV4ZQogICAgIC8vIDQuIENy
ZWF0ZSBhIG5ldyBNZWRpYUtleVNlc3Npb24gb2JqZWN0LgogICAgIC8vIDQuMSBMZXQgdGhlIGtl
eVN5c3RlbSBhdHRyaWJ1dGUgYmUga2V5U3lzdGVtLgogICAgIC8vIDQuMiBMZXQgdGhlIHNlc3Np
b25JZCBhdHRyaWJ1dGUgYmUgYSB1bmlxdWUgU2Vzc2lvbiBJRCBzdHJpbmcuIEl0IG1heSBiZSBn
ZW5lcmF0ZWQgYnkgY2RtLgotICAgIGF1dG8gc2Vzc2lvbiA9IFdlYktpdE1lZGlhS2V5U2Vzc2lv
bjo6Y3JlYXRlKGNvbnRleHQsICp0aGlzLCBtX2tleVN5c3RlbSk7CisgICAgYXV0byBzZXNzaW9u
ID0gV2ViS2l0TWVkaWFLZXlTZXNzaW9uOjpjcmVhdGUoZG9jdW1lbnQsICp0aGlzLCBtX2tleVN5
c3RlbSk7CiAKICAgICBtX3Nlc3Npb25zLmFwcGVuZChzZXNzaW9uLmNvcHlSZWYoKSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dl
YktpdE1lZGlhS2V5cy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9s
ZWdhY3kvV2ViS2l0TWVkaWFLZXlzLmgKaW5kZXggMmQwYzFkMDNmNTQyODk3OGIxODA1YzY0ZWQ5
MDE0OWI4NzBjMzZiZC4uNDQ2OTM3NDg2YTIwOWM0ZjgxZDZlYTQyNDBhNGRjZDc4ZTcxYTFiOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kv
V2ViS2l0TWVkaWFLZXlzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlzLmgKQEAgLTM1LDggKzM1LDggQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCitjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7
Ci1jbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogY2xhc3MgV2ViS2l0TWVkaWFLZXlTZXNz
aW9uOwogCiBjbGFzcyBXZWJLaXRNZWRpYUtleXMgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxX
ZWJLaXRNZWRpYUtleXM+LCBwcml2YXRlIExlZ2FjeUNETUNsaWVudCB7CkBAIC00NCw3ICs0NCw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPFdlYktpdE1lZGlhS2V5cz4+
IGNyZWF0ZShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSk7CiAgICAgdmlydHVhbCB+V2ViS2l0TWVk
aWFLZXlzKCk7CiAKLSAgICBFeGNlcHRpb25PcjxSZWY8V2ViS2l0TWVkaWFLZXlTZXNzaW9uPj4g
Y3JlYXRlU2Vzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgUmVmPFVpbnQ4QXJyYXk+JiYgaW5pdERhdGEpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxX
ZWJLaXRNZWRpYUtleVNlc3Npb24+PiBjcmVhdGVTZXNzaW9uKERvY3VtZW50JiwgY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgUmVmPFVpbnQ4QXJyYXk+JiYgaW5pdERhdGEpOwogICAgIHN0YXRpYyBi
b29sIGlzVHlwZVN1cHBvcnRlZChjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSk7CiAgICAgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0oKSBjb25zdCB7IHJldHVy
biBtX2tleVN5c3RlbTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleXMuaWRsIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlzLmlkbAppbmRleCBi
YjY2ZmRlMTQzMjQ3NjZkYTBlNzZhODc3OTc5ZGU3MTZiN2NkMjQ5Li4xNTE3ODM4NGY3ZGYzZTM5
NjE0MmViNWY3NGZlNGYyMWU0YjZiMGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleXMuaWRsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5cy5p
ZGwKQEAgLTMwLDcgKzMwLDcgQEAKIF0gaW50ZXJmYWNlIFdlYktpdE1lZGlhS2V5cyB7CiAgICAg
Y29uc3RydWN0b3IoRE9NU3RyaW5nIGtleVN5c3RlbSk7CiAKLSAgICBbQ2FsbFdpdGg9U2NyaXB0
RXhlY3V0aW9uQ29udGV4dF0gV2ViS2l0TWVkaWFLZXlTZXNzaW9uIGNyZWF0ZVNlc3Npb24oRE9N
U3RyaW5nIHR5cGUsIFVpbnQ4QXJyYXkgaW5pdERhdGEpOworICAgIFtDYWxsV2l0aD1Eb2N1bWVu
dF0gV2ViS2l0TWVkaWFLZXlTZXNzaW9uIGNyZWF0ZVNlc3Npb24oRE9NU3RyaW5nIHR5cGUsIFVp
bnQ4QXJyYXkgaW5pdERhdGEpOwogICAgIHN0YXRpYyBib29sZWFuIGlzVHlwZVN1cHBvcnRlZChE
T01TdHJpbmcga2V5U3lzdGVtLCBvcHRpb25hbCBET01TdHJpbmcgdHlwZSk7CiAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIERPTVN0cmluZyBrZXlTeXN0ZW07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGVnYWN5Q0RNU2Vzc2lvbi5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGVnYWN5Q0RNU2Vzc2lvbi5oCmluZGV4IGY4NDRmNGY5
ODY5YWQwNzMyNmUyYmFhZDI2ZWFmOWRlN2E1OWY1YmIuLmI5MTcxYmEyZTY2YWMyNTliNjMzYTJk
MWEwNmE2MzlmNDAxYzkxYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0xlZ2FjeUNETVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9MZWdhY3lDRE1TZXNzaW9uLmgKQEAgLTI5LDEwICsyOSwxMSBAQAogCiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Cisj
aW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBM
ZWdhY3lDRE1TZXNzaW9uQ2xpZW50IHsKK2NsYXNzIExlZ2FjeUNETVNlc3Npb25DbGllbnQgOiBw
dWJsaWMgQ2FuTWFrZVdlYWtQdHI8TGVnYWN5Q0RNU2Vzc2lvbkNsaWVudD4gewogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfkxlZ2FjeUNETVNlc3Np
b25DbGllbnQoKSA9IGRlZmF1bHQ7CkBAIC01MCw2ICs1MSwxMSBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIHNlbmRFcnJvcihNZWRpYUtleUVycm9yQ29kZSwgdWludDMyX3Qgc3lzdGVtQ29k
ZSkgPSAwOwogCiAgICAgdmlydHVhbCBTdHJpbmcgbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgp
IGNvbnN0ID0gMDsKKworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIHZpcnR1YWwgY29u
c3QgTG9nZ2VyJiBsb2dnZXIoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBjb25zdCB2b2lkKiBs
b2dJZGVudGlmaWVyKCkgY29uc3QgPSAwOworI2VuZGlmCiB9OwogCiBlbnVtIExlZ2FjeUNETVNl
c3Npb25UeXBlIHsKQEAgLTY2LDcgKzcyLDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkxlZ2Fj
eUNETVNlc3Npb24oKSA9IGRlZmF1bHQ7CiAKICAgICB2aXJ0dWFsIExlZ2FjeUNETVNlc3Npb25U
eXBlIHR5cGUoKSB7IHJldHVybiBDRE1TZXNzaW9uVHlwZVVua25vd247IH0KLSAgICB2aXJ0dWFs
IHZvaWQgc2V0Q2xpZW50KExlZ2FjeUNETVNlc3Npb25DbGllbnQqKSA9IDA7CiAgICAgdmlydHVh
bCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFJlZlB0
cjxVaW50OEFycmF5PiBnZW5lcmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
VWludDhBcnJheSogaW5pdERhdGEsIFN0cmluZyYgZGVzdGluYXRpb25VUkwsIHVuc2lnbmVkIHNo
b3J0JiBlcnJvckNvZGUsIHVpbnQzMl90JiBzeXN0ZW1Db2RlKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHJlbGVhc2VLZXlzKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IGVjMThiYTNlOGVjYmI4NWE5ZWJkODFjM2VjOTAw
ZDQxOTczZWNlZTIuLjUxYTliM2EzNTRmMTE5YmUyOWY3NDExYTkzNDU3ODQ5OWE2ZGE3NmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAK
QEAgLTY2OCw3ICs2NjgsNyBAQCB2b2lkIE1lZGlhUGxheWVyOjpzZXRCdWZmZXJpbmdQb2xpY3ko
QnVmZmVyaW5nUG9saWN5IHBvbGljeSkKIAogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01F
RElBKQogCi1zdGQ6OnVuaXF1ZV9wdHI8TGVnYWN5Q0RNU2Vzc2lvbj4gTWVkaWFQbGF5ZXI6OmNy
ZWF0ZVNlc3Npb24oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIExlZ2FjeUNETVNlc3Npb25DbGll
bnQqIGNsaWVudCkKK3N0ZDo6dW5pcXVlX3B0cjxMZWdhY3lDRE1TZXNzaW9uPiBNZWRpYVBsYXll
cjo6Y3JlYXRlU2Vzc2lvbihjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgTGVnYWN5Q0RNU2Vzc2lv
bkNsaWVudCYgY2xpZW50KQogewogICAgIHJldHVybiBtX3ByaXZhdGUtPmNyZWF0ZVNlc3Npb24o
a2V5U3lzdGVtLCBjbGllbnQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyLmgKaW5kZXggMDcxY2MxZTZlNWUwM2ZmMTQ3NWEwZjQ5NTJjYjViOGQw
YWUxMGQ2Yi4uZWJiYWQxNmE2NWFiNTNlYWZmY2ZhMjYyNzZiODJjOWY2YTdkNjVlYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCkBAIC0zNzks
NyArMzc5LDcgQEAgcHVibGljOgogICAgIC8vIFRoaXMgaXMgZGlmZmVyZW50IGZyb20gdGhlIGFz
eW5jaHJvbm91cyBNZWRpYUtleUVycm9yLgogICAgIGVudW0gTWVkaWFLZXlFeGNlcHRpb24geyBO
b0Vycm9yLCBJbnZhbGlkUGxheWVyU3RhdGUsIEtleVN5c3RlbU5vdFN1cHBvcnRlZCB9OwogCi0g
ICAgc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNETVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oY29uc3Qg
U3RyaW5nJiBrZXlTeXN0ZW0sIExlZ2FjeUNETVNlc3Npb25DbGllbnQqKTsKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8TGVnYWN5Q0RNU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbihjb25zdCBTdHJpbmcmIGtl
eVN5c3RlbSwgTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCYpOwogICAgIHZvaWQgc2V0Q0RNKExlZ2Fj
eUNETSopOwogICAgIHZvaWQgc2V0Q0RNU2Vzc2lvbihMZWdhY3lDRE1TZXNzaW9uKik7CiAgICAg
dm9pZCBrZXlBZGRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllclByaXZhdGUuaAppbmRleCBmOWZmNGNiZjI4NjlkOTMzMTIwZWRlMDBk
MDE1ZTVhZGRmNDc4MjkxLi4xOGVlNTY0MmY3OWQ2NTIwZDUwOWU5MTZhMGYzYjJiNDU0ZGYxNzQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
clByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllclByaXZhdGUuaApAQCAtMjQ2LDcgKzI0Niw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYg
RU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCi0gICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9w
dHI8TGVnYWN5Q0RNU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbihjb25zdCBTdHJpbmcmLCBMZWdhY3lD
RE1TZXNzaW9uQ2xpZW50KikgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIHZpcnR1YWwgc3RkOjp1
bmlxdWVfcHRyPExlZ2FjeUNETVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oY29uc3QgU3RyaW5nJiwg
TGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCYpIHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICB2aXJ0dWFs
IHZvaWQgc2V0Q0RNKExlZ2FjeUNETSopIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRDRE1TZXNz
aW9uKExlZ2FjeUNETVNlc3Npb24qKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQga2V5QWRkZWQoKSB7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9DRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5o
CmluZGV4IDFiNzYzZGQ4NGEzOGQ3NWFhNzU0NGU0NDk5NDdmYjZjZmRiMTFlNTIuLmZmZWZkNTlj
YTZkN2FkZDBjZmQxNDY1YWYzMDA3MWFmNTBjNzNhMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL0NETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaApAQCAtNDgsNyArNDgsNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNLZXlTeXN0ZW1BbmRNaW1lVHlwZShjb25zdCBT
dHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CiAKICAgICBib29sIHN1
cHBvcnRzTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgb3ZlcnJpZGU7Ci0gICAgc3Rk
Ojp1bmlxdWVfcHRyPExlZ2FjeUNETVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oTGVnYWN5Q0RNU2Vz
c2lvbkNsaWVudCopIG92ZXJyaWRlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxMZWdhY3lDRE1TZXNz
aW9uPiBjcmVhdGVTZXNzaW9uKExlZ2FjeUNETVNlc3Npb25DbGllbnQmKSBvdmVycmlkZTsKIAog
ICAgIExlZ2FjeUNETSogY2RtKCkgY29uc3QgeyByZXR1cm4gbV9jZG07IH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETVByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQppbmRleCA4NjAy
NWYyYTdiMTg1NzhkNDdjODA4OTUxNWQzMWNhZDllMWM2MWQxLi4yZGFmOGVhYWM5MDhjZWJiYjk0
ZGEzMzA2NDRhNWU3NzE3YjM2NzM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQpAQCAtMTI3LDcgKzEyNyw3IEBAIGJvb2wgQ0RNUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c3VwcG9ydHNNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1p
bWVUeXBlKQogICAgIHJldHVybiBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6
OnN1cHBvcnRzVHlwZUFuZENvZGVjcyhwYXJhbWV0ZXJzKSAhPSBNZWRpYVBsYXllcjo6U3VwcG9y
dHNUeXBlOjpJc05vdFN1cHBvcnRlZDsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNETVNl
c3Npb24+IENETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmNyZWF0ZVNlc3Npb24oTGVnYWN5
Q0RNU2Vzc2lvbkNsaWVudCogY2xpZW50KQorc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNETVNlc3Np
b24+IENETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmNyZWF0ZVNlc3Npb24oTGVnYWN5Q0RN
U2Vzc2lvbkNsaWVudCYgY2xpZW50KQogewogICAgIFN0cmluZyBrZXlTeXN0ZW0gPSBtX2NkbS0+
a2V5U3lzdGVtKCk7IC8vIExvY2FsIGNvcHkgZm9yIFN0cmluZ1ZpZXcgdXNhZ2UKICAgICBhdXRv
IHBhcmFtZXRlcnMgPSBwYXJzZUtleVN5c3RlbShtX2NkbS0+a2V5U3lzdGVtKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0NE
TVNlc3Npb25BVkZvdW5kYXRpb25DRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vY2YvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGLmNwcAppbmRleCA3
YTg5OWVjNjZjNTdiN2Q5MjYyZGI3MzI2OGRiNGY0OTdiMWNkZGQxLi4yM2IwMzQ0NDQ1ZDE2OTc3
NmVkNjI5MGFmZWZmNGFkZGMxZDNiMTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2Yv
Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGLmNwcApAQCAtNDUsNyArNDUsNyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLUNETVNlc3Npb25BVkZvdW5kYXRpb25DRjo6Q0RNU2Vzc2lvbkFWRm91
bmRhdGlvbkNGKE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGJiBwYXJlbnQsIExlZ2Fj
eUNETVNlc3Npb25DbGllbnQqKQorQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGOjpDRE1TZXNzaW9u
QVZGb3VuZGF0aW9uQ0YoTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YmIHBhcmVudCwg
TGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCYpCiAgICAgOiBtX3BhcmVudChwYXJlbnQpCiAgICAgLCBt
X3Nlc3Npb25JZChjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkpCiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvQ0RNU2Vzc2lv
bkFWRm91bmRhdGlvbkNGLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vY2YvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGLmgKaW5kZXggNzljYmZjZDgzZjEz
OGMwZDA5MzdmYzU1ZTRmZDgwMDU2NzViMmI4Yi4uNDBkZmY2NDViMmVhOTU4Mjk4ZmEzMjVhYzhm
Mjg5OTczZGJhNjI3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL2NmL0NETVNlc3Npb25BVkZvdW5kYXRpb25DRi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9DRE1TZXNzaW9uQVZG
b3VuZGF0aW9uQ0YuaApAQCAtNDAsMTAgKzQwLDkgQEAgY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uQ0Y7CiBjbGFzcyBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0YgZmluYWwgOiBw
dWJsaWMgTGVnYWN5Q0RNU2Vzc2lvbiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6Ci0gICAgQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGKE1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbkNGJiBwYXJlbnQsIExlZ2FjeUNETVNlc3Npb25DbGllbnQqKTsKKyAgICBDRE1T
ZXNzaW9uQVZGb3VuZGF0aW9uQ0YoTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YmIHBh
cmVudCwgTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCYpOwogCiBwcml2YXRlOgotICAgIHZvaWQgc2V0
Q2xpZW50KExlZ2FjeUNETVNlc3Npb25DbGllbnQqIGNsaWVudCkgZmluYWwgeyB9CiAgICAgY29u
c3QgU3RyaW5nJiBzZXNzaW9uSWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Nlc3Npb25JZDsg
fQogICAgIFJlZlB0cjxVaW50OEFycmF5PiBnZW5lcmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgVWludDhBcnJheSogaW5pdERhdGEsIFN0cmluZyYgZGVzdGluYXRpb25VUkws
IHVuc2lnbmVkIHNob3J0JiBlcnJvckNvZGUsIHVpbnQzMl90JiBzeXN0ZW1Db2RlKSBmaW5hbDsK
ICAgICB2b2lkIHJlbGVhc2VLZXlzKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcAppbmRleCBhM2Jj
OWY1ZmNkZjhmNzA1ZGY3ZmI5YjY5YThiNTA5OTI0NTBjODFjLi44ZWQ5ZTBhMDc1YjE1M2JjYTVm
OTBkNTFjMTA5MDY0NTNmMDRkMGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
Q0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAKQEAgLTExNjgsNyArMTE2
OCw3IEBAIFJldGFpblB0cjxBVkNGQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0UmVmPiBNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6CiAgICAgcmV0dXJuIG1fYXZmV3JhcHBlci0+
dGFrZVJlcXVlc3RGb3JLZXlVUkkoa2V5VVJJKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPExlZ2Fj
eUNETVNlc3Npb24+IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpjcmVhdGVTZXNz
aW9uKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBMZWdhY3lDRE1TZXNzaW9uQ2xpZW50KiBjbGll
bnQpCitzdGQ6OnVuaXF1ZV9wdHI8TGVnYWN5Q0RNU2Vzc2lvbj4gTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uQ0Y6OmNyZWF0ZVNlc3Npb24oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIExl
Z2FjeUNETVNlc3Npb25DbGllbnQmIGNsaWVudCkKIHsKICAgICBpZiAoIWtleVN5c3RlbUlzU3Vw
cG9ydGVkKGtleVN5c3RlbSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTE3OCw3ICsx
MTc4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNETVNlc3Npb24+IE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbkNGOjpjcmVhdGVTZXNzaW8KIAogI2VsaWYgRU5BQkxFKExFR0FDWV9F
TkNSWVBURURfTUVESUEpCiAKLXN0ZDo6dW5pcXVlX3B0cjxMZWdhY3lDRE1TZXNzaW9uPiBNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6Y3JlYXRlU2Vzc2lvbihjb25zdCBTdHJpbmcm
IGtleVN5c3RlbSwgTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCopCitzdGQ6OnVuaXF1ZV9wdHI8TGVn
YWN5Q0RNU2Vzc2lvbj4gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OmNyZWF0ZVNl
c3Npb24oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIExlZ2FjeUNETVNlc3Npb25DbGllbnQmKQog
ewogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbkNGLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
Y2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuaAppbmRleCBjY2Q2YWU3YmNmOGZh
ZDk2OTk1MjNlMGE3YWFhYTVkNjEzMDdmZDk2Li4xMjhjMTgzNGVjNTlkMTY1MDg3MDQ2OWJmNjFk
YTdkMGFlZDlmMTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuaApAQCAtMTE3LDcgKzExNyw3IEBAIHByaXZhdGU6
CiAgICAgdmlydHVhbCB2b2lkIGNvbnRlbnRzTmVlZHNEaXNwbGF5KCk7CiAKICNpZiBFTkFCTEUo
TEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8TGVnYWN5Q0RNU2Vz
c2lvbj4gY3JlYXRlU2Vzc2lvbihjb25zdCBTdHJpbmcmLCBMZWdhY3lDRE1TZXNzaW9uQ2xpZW50
Kikgb3ZlcnJpZGU7CisgICAgc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNETVNlc3Npb24+IGNyZWF0
ZVNlc3Npb24oY29uc3QgU3RyaW5nJiwgTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCYpIG92ZXJyaWRl
OwogI2VuZGlmCiAKICAgICBTdHJpbmcgbGFuZ3VhZ2VPZlByaW1hcnlBdWRpb1RyYWNrKCkgY29u
c3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbi5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lv
bkFWQ29udGVudEtleVNlc3Npb24uaAppbmRleCAwMjEwMjY5NTg2YWYxZDVhMDQyYzYzZGM0NjRk
OTlhMjBjM2M3NWIwLi43MTlhMTFmZTIyOWJlZjBkNDNjOWMzZWZkNWQ5MDIwODBlNzZjN2YwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9DRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRlbnRL
ZXlTZXNzaW9uLmgKQEAgLTQyLDcgKzQyLDcgQEAgY2xhc3MgQ0RNUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQzsKIGNsYXNzIENETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uIDogcHVibGljIENE
TVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgotICAgIENETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uKFZlY3RvcjxpbnQ+
JiYgcHJvdG9jb2xWZXJzaW9ucywgaW50IGNkbVZlcnNpb24sIENETVByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakMmLCBMZWdhY3lDRE1TZXNzaW9uQ2xpZW50Kik7CisgICAgQ0RNU2Vzc2lvbkFWQ29u
dGVudEtleVNlc3Npb24oVmVjdG9yPGludD4mJiBwcm90b2NvbFZlcnNpb25zLCBpbnQgY2RtVmVy
c2lvbiwgQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyYsIExlZ2FjeUNETVNlc3Npb25DbGll
bnQmKTsKICAgICB2aXJ0dWFsIH5DRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbigpOwogCiAg
ICAgc3RhdGljIGJvb2wgaXNBdmFpbGFibGUoKTsKQEAgLTY2LDYgKzY2LDEwIEBAIHByb3RlY3Rl
ZDoKICAgICBib29sIGhhc0NvbnRlbnRLZXlTZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9jb250
ZW50S2V5U2Vzc2lvbjsgfQogICAgIEFWQ29udGVudEtleVNlc3Npb24qIGNvbnRlbnRLZXlTZXNz
aW9uKCk7CiAKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBjb25zdCBjaGFyKiBsb2dD
bGFzc05hbWUoKSBjb25zdCB7IHJldHVybiAiQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24i
OyB9CisjZW5kaWYKKwogICAgIFJldGFpblB0cjxBVkNvbnRlbnRLZXlTZXNzaW9uPiBtX2NvbnRl
bnRLZXlTZXNzaW9uOwogICAgIFJldGFpblB0cjxXZWJDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vz
c2lvbkRlbGVnYXRlPiBtX2NvbnRlbnRLZXlTZXNzaW9uRGVsZWdhdGU7CiAgICAgUmV0YWluUHRy
PEFWQ29udGVudEtleVJlcXVlc3Q+IG1fa2V5UmVxdWVzdDsKQEAgLTc2LDYgKzgwLDExIEBAIHBy
b3RlY3RlZDoKICAgICBpbnQgbV9jZG1WZXJzaW9uOwogICAgIGludDMyX3QgbV9wcm90ZWN0ZWRU
cmFja0lEIHsgMSB9OwogICAgIGVudW0geyBOb3JtYWwsIEtleVJlbGVhc2UgfSBtX21vZGU7CisK
KyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBSZWY8Y29uc3QgTG9nZ2VyPiBtX2xvZ2dl
cjsKKyAgICBjb25zdCB2b2lkKiBtX2xvZ0lkZW50aWZpZXI7CisjZW5kaWYKIH07CiAKIGlubGlu
ZSBDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbiogdG9DRE1TZXNzaW9uQVZDb250ZW50S2V5
U2Vzc2lvbihMZWdhY3lDRE1TZXNzaW9uKiBzZXNzaW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29u
dGVudEtleVNlc3Npb24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbi5tbQppbmRleCA2NTJh
MDg1MDg3N2ViNzgwZjM1ZTZlZjUxNGUyYWMzMmNkNzc5M2FjLi43ZWM1Nzc0MjYxMGMzODRiZTZk
ZGRjNTg3NGZmMzk1ZTViNWYyZWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lv
bi5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9DRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbi5tbQpAQCAtMTA0LDEzICsxMDQsMTgg
QEAgQGVuZAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUNETVNlc3Npb25BVkNvbnRlbnRLZXlT
ZXNzaW9uOjpDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbihWZWN0b3I8aW50PiYmIHByb3Rv
Y29sVmVyc2lvbnMsIGludCBjZG1WZXJzaW9uLCBDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpD
JiBjZG0sIExlZ2FjeUNETVNlc3Npb25DbGllbnQqIGNsaWVudCkKK0NETVNlc3Npb25BVkNvbnRl
bnRLZXlTZXNzaW9uOjpDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbihWZWN0b3I8aW50PiYm
IHByb3RvY29sVmVyc2lvbnMsIGludCBjZG1WZXJzaW9uLCBDRE1Qcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDJiBjZG0sIExlZ2FjeUNETVNlc3Npb25DbGllbnQmIGNsaWVudCkKICAgICA6IENETVNl
c3Npb25NZWRpYVNvdXJjZUFWRk9iakMoY2RtLCBjbGllbnQpCiAgICAgLCBtX2NvbnRlbnRLZXlT
ZXNzaW9uRGVsZWdhdGUoYWRvcHROUyhbW1dlYkNETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9u
RGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoUGFyZW50OnRoaXNdKSkKICAgICAsIG1fcHJvdG9jb2xW
ZXJzaW9ucyhXVEZNb3ZlKHByb3RvY29sVmVyc2lvbnMpKQogICAgICwgbV9jZG1WZXJzaW9uKGNk
bVZlcnNpb24pCiAgICAgLCBtX21vZGUoTm9ybWFsKQorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxF
RAorICAgICwgbV9sb2dnZXIoY2xpZW50LmxvZ2dlcigpKQorICAgICwgbV9sb2dJZGVudGlmaWVy
KGNsaWVudC5sb2dJZGVudGlmaWVyKCkpCisjZW5kaWYKIHsKKyAgICBBTFdBWVNfTE9HKExPR0lE
RU5USUZJRVIpOwogfQogCiBDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6fkNETVNlc3Np
b25BVkNvbnRlbnRLZXlTZXNzaW9uKCkKQEAgLTEzMiw3ICsxMzcsNyBAQCBSZWZQdHI8VWludDhB
cnJheT4gQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb246OmdlbmVyYXRlS2V5UmVxdWVzdChj
b25zdCBTdHJpbgogICAgIFVOVVNFRF9QQVJBTShkZXN0aW5hdGlvblVSTCk7CiAgICAgQVNTRVJU
KGluaXREYXRhKTsKIAotICAgIExPRyhNZWRpYSwgIkNETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNz
aW9uOjpnZW5lcmF0ZUtleVJlcXVlc3QoJXApIiwgdGhpcyk7CisgICAgQUxXQVlTX0xPRyhMT0dJ
REVOVElGSUVSLCAibWltZVR5cGU6ICIsIG1pbWVUeXBlKTsKIAogICAgIGVycm9yQ29kZSA9IE1l
ZGlhUGxheWVyOjpOb0Vycm9yOwogICAgIHN5c3RlbUNvZGUgPSAwOwpAQCAtMTYzLDcgKzE2OCw3
IEBAIHZvaWQgQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb246OnJlbGVhc2VLZXlzKCkKICAg
ICAgICAgZm9yIChhdXRvJiBzb3VyY2VCdWZmZXIgOiBtX3NvdXJjZUJ1ZmZlcnMpCiAgICAgICAg
ICAgICBzb3VyY2VCdWZmZXItPmZsdXNoKCk7CiAKLSAgICAgICAgTE9HKE1lZGlhLCAiQ0RNU2Vz
c2lvbkFWQ29udGVudEtleVNlc3Npb246OnJlbGVhc2VLZXlzKCVwKSAtIGV4cGlyaW5nIHN0cmVh
bSBzZXNzaW9uIiwgdGhpcyk7CisgICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgImV4
cGlyaW5nIHN0cmVhbSBzZXNzaW9uIik7CiAgICAgICAgIFtjb250ZW50S2V5U2Vzc2lvbigpIGV4
cGlyZV07CiAKICAgICAgICAgaWYgKCFtX2NlcnRpZmljYXRlKQpAQCAtMTg2LDcgKzE5MSw3IEBA
IHZvaWQgQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb246OnJlbGVhc2VLZXlzKCkKICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgaWYgKG1fc2Vzc2lvbklkID09IFN0
cmluZyhwbGF5YmFja1Nlc3Npb25JZFZhbHVlKSkgewotICAgICAgICAgICAgICAgIExPRyhNZWRp
YSwgIkNETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uOjpyZWxlYXNlS2V5cyglcCkgLSBmb3Vu
ZCBzZXNzaW9uLCBzZW5kaW5nIGV4cGlyYXRpb24gbWVzc2FnZSIpOworICAgICAgICAgICAgICAg
IEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgImZvdW5kIHNlc3Npb24sIHNlbmRpbmcgZXhwaXJh
dGlvbiBtZXNzYWdlIik7CiAgICAgICAgICAgICAgICAgbV9leHBpcmVkU2Vzc2lvbiA9IGV4cGly
ZWRTZXNzaW9uRGF0YTsKICAgICAgICAgICAgICAgICBtX2NsaWVudC0+c2VuZE1lc3NhZ2UoVWlu
dDhBcnJheTo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihbbV9leHBpcmVkU2Vz
c2lvbiBieXRlc10pLCBbbV9leHBpcmVkU2Vzc2lvbiBsZW5ndGhdKS5wdHIoKSwgZW1wdHlTdHJp
bmcoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yMTYsNyArMjIxLDcgQEAgYm9vbCBD
RE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6dXBkYXRlKFVpbnQ4QXJyYXkqIGtleSwgUmVm
UHRyPFVpbnQ4QXJyYXk+JgogICAgIFVOVVNFRF9QQVJBTShuZXh0TWVzc2FnZSk7CiAKICAgICBp
ZiAoaXNFcXVhbChrZXksICJhY2tub3dsZWRnZWQiKSkgewotICAgICAgICBMT0coTWVkaWEsICJD
RE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6dXBkYXRlKCVwKSAtIGFja25vd2xlZGluZyBz
ZWN1cmUgc3RvcCBtZXNzYWdlIiwgdGhpcyk7CisgICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJ
RklFUiwgImFja25vd2xlZGluZyBzZWN1cmUgc3RvcCBtZXNzYWdlIik7CiAKICAgICAgICAgU3Ry
aW5nIHN0b3JhZ2VQYXRoID0gdGhpcy0+c3RvcmFnZVBhdGgoKTsKICAgICAgICAgaWYgKCFtX2V4
cGlyZWRTZXNzaW9uIHx8IHN0b3JhZ2VQYXRoLmlzRW1wdHkoKSkgewpAQCAtMjM5LDcgKzI0NCw3
IEBAIGJvb2wgQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb246OnVwZGF0ZShVaW50OEFycmF5
KiBrZXksIFJlZlB0cjxVaW50OEFycmF5PiYKIAogICAgIGJvb2wgc2hvdWxkR2VuZXJhdGVLZXlS
ZXF1ZXN0ID0gIW1fY2VydGlmaWNhdGUgfHwgaXNFcXVhbChrZXksICJyZW5ldyIpOwogICAgIGlm
ICghbV9jZXJ0aWZpY2F0ZSkgewotICAgICAgICBMT0coTWVkaWEsICJDRE1TZXNzaW9uQVZDb250
ZW50S2V5U2Vzc2lvbjo6dXBkYXRlKCVwKSAtIGNlcnRpZmljYXRlIGRhdGEiLCB0aGlzKTsKKyAg
ICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAiY2VydGlmaWNhdGUgZGF0YSIpOwogCiAg
ICAgICAgIG1fY2VydGlmaWNhdGUgPSBrZXk7CiAgICAgfQpAQCAtMjk2LDE0ICszMDEsMTYgQEAg
Ym9vbCBDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6dXBkYXRlKFVpbnQ4QXJyYXkqIGtl
eSwgUmVmUHRyPFVpbnQ4QXJyYXk+JgogICAgICAgICBpZiAoZXJyb3IpIHsKICAgICAgICAgICAg
IGVycm9yQ29kZSA9IExlZ2FjeUNETTo6RG9tYWluRXJyb3I7CiAgICAgICAgICAgICBzeXN0ZW1D
b2RlID0gbWVkaWFLZXlFcnJvclN5c3RlbUNvZGUoZXJyb3IpOworICAgICAgICAgICAgRVJST1Jf
TE9HKExPR0lERU5USUZJRVIsICJlcnJvcjogIiwgU3RyaW5nKGVycm9yLmxvY2FsaXplZERlc2Ny
aXB0aW9uKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAorICAgICAg
ICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJnZW5lcmF0ZWQga2V5IHJlcXVlc3QiKTsKICAg
ICAgICAgbmV4dE1lc3NhZ2UgPSBVaW50OEFycmF5Ojp0cnlDcmVhdGUoc3RhdGljX2Nhc3Q8Y29u
c3QgdWludDhfdCo+KFtyZXF1ZXN0RGF0YSBieXRlc10pLCBbcmVxdWVzdERhdGEgbGVuZ3RoXSk7
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBMT0coTWVkaWEsICJDRE1TZXNz
aW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6dXBkYXRlKCVwKSAtIGtleSBkYXRhIiwgdGhpcyk7Cisg
ICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAicHJvY2Vzc2luZyBrZXkgcmVzcG9uc2UiKTsK
ICAgICBlcnJvckNvZGUgPSBNZWRpYVBsYXllcjo6Tm9FcnJvcjsKICAgICBzeXN0ZW1Db2RlID0g
MDsKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBrZXlEYXRhID0gYWRvcHROUyhbW05TRGF0YSBhbGxv
Y10gaW5pdFdpdGhCeXRlczprZXktPmRhdGEoKSBsZW5ndGg6a2V5LT5sZW5ndGgoKV0pOwpAQCAt
MzIzLDYgKzMzMCw3IEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4gQ0RNU2Vzc2lvbkFWQ29udGVudEtl
eVNlc3Npb246OmNhY2hlZEtleUZvcktleUlEKGNvbnN0IFN0cmluCiAKIHZvaWQgQ0RNU2Vzc2lv
bkFWQ29udGVudEtleVNlc3Npb246OmFkZFBhcnNlcihBVlN0cmVhbURhdGFQYXJzZXIqIHBhcnNl
cikKIHsKKyAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSKTsKICAgICBpZiAoW2NvbnRlbnRLZXlT
ZXNzaW9uKCkgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihhZGRDb250ZW50S2V5UmVjaXBp
ZW50OildKQogICAgICAgICBbY29udGVudEtleVNlc3Npb24oKSBhZGRDb250ZW50S2V5UmVjaXBp
ZW50OnBhcnNlcl07CiAgICAgZWxzZQpAQCAtMzMxLDYgKzMzOSw3IEBAIHZvaWQgQ0RNU2Vzc2lv
bkFWQ29udGVudEtleVNlc3Npb246OmFkZFBhcnNlcihBVlN0cmVhbURhdGFQYXJzZXIqIHBhcnNl
cikKIAogdm9pZCBDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6cmVtb3ZlUGFyc2VyKEFW
U3RyZWFtRGF0YVBhcnNlciogcGFyc2VyKQogeworICAgIElORk9fTE9HKExPR0lERU5USUZJRVIp
OwogICAgIGlmIChbY29udGVudEtleVNlc3Npb24oKSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVj
dG9yKHJlbW92ZUNvbnRlbnRLZXlSZWNpcGllbnQ6KV0pCiAgICAgICAgIFtjb250ZW50S2V5U2Vz
c2lvbigpIHJlbW92ZUNvbnRlbnRLZXlSZWNpcGllbnQ6cGFyc2VyXTsKICAgICBlbHNlCkBAIC0z
NTEsMTQgKzM2MCwxNCBAQCBSZWZQdHI8VWludDhBcnJheT4gQ0RNU2Vzc2lvbkFWQ29udGVudEtl
eVNlc3Npb246OmdlbmVyYXRlS2V5UmVsZWFzZU1lc3NhZ2UodW5zaQogCiAgICAgTlNBcnJheSog
ZXhwaXJlZFNlc3Npb25zID0gW1BBTDo6Z2V0QVZDb250ZW50S2V5U2Vzc2lvbkNsYXNzKCkgcGVu
ZGluZ0V4cGlyZWRTZXNzaW9uUmVwb3J0c1dpdGhBcHBJZGVudGlmaWVyOmNlcnRpZmljYXRlRGF0
YS5nZXQoKSBzdG9yYWdlRGlyZWN0b3J5QXRVUkw6W05TVVJMIGZpbGVVUkxXaXRoUGF0aDpzdG9y
YWdlUGF0aF1dOwogICAgIGlmICghW2V4cGlyZWRTZXNzaW9ucyBjb3VudF0pIHsKLSAgICAgICAg
TE9HKE1lZGlhLCAiQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb246OmdlbmVyYXRlS2V5UmVs
ZWFzZU1lc3NhZ2UoJXApIC0gbm8gZXhwaXJlZCBzZXNzaW9ucyBmb3VuZCIsIHRoaXMpOworICAg
ICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJubyBleHBpcmVkIHNlc3Npb25zIGZvdW5k
Iik7CiAKICAgICAgICAgZXJyb3JDb2RlID0gTWVkaWFQbGF5ZXI6OktleVN5c3RlbU5vdFN1cHBv
cnRlZDsKICAgICAgICAgc3lzdGVtQ29kZSA9ICchbW9yJzsKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgfQogCi0gICAgTE9HKE1lZGlhLCAiQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Np
b246OmdlbmVyYXRlS2V5UmVsZWFzZU1lc3NhZ2UoJXApIC0gZm91bmQgJWQgZXhwaXJlZCBzZXNz
aW9ucyIsIHRoaXMsIFtleHBpcmVkU2Vzc2lvbnMgY291bnRdKTsKKyAgICBBTFdBWVNfTE9HKExP
R0lERU5USUZJRVIsICJmb3VuZCAiLCBbZXhwaXJlZFNlc3Npb25zIGNvdW50XSwgIiBleHBpcmVk
IHNlc3Npb25zIik7CiAKICAgICBlcnJvckNvZGUgPSAwOwogICAgIHN5c3RlbUNvZGUgPSAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkZvdW5kYXRpb25PYmpD
LmgKaW5kZXggOTU5MThmMDNlNWRiZmJjN2Q1Nzc3YjczNGFmOGZiMWU1MTBjMzczMi4uNzkxMGJj
NGRkYzJkMWRjOWMyYWMxZThmODNlNjNlNjc4YmY2N2NkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWRm91
bmRhdGlvbk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5oCkBAIC00MiwxMSArNDIs
MTAgQEAgY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzsKIGNsYXNzIENE
TVNlc3Npb25BVkZvdW5kYXRpb25PYmpDIGZpbmFsIDogcHVibGljIExlZ2FjeUNETVNlc3Npb24s
IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxDRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQz4gewogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIENETVNlc3Npb25BVkZvdW5k
YXRpb25PYmpDKE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMqIHBhcmVudCwgTGVn
YWN5Q0RNU2Vzc2lvbkNsaWVudCopOworICAgIENETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDKE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMqIHBhcmVudCwgTGVnYWN5Q0RNU2Vzc2lv
bkNsaWVudCYpOwogICAgIHZpcnR1YWwgfkNETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDKCk7CiAK
ICAgICBMZWdhY3lDRE1TZXNzaW9uVHlwZSB0eXBlKCkgb3ZlcnJpZGUgeyByZXR1cm4gQ0RNU2Vz
c2lvblR5cGVBVkZvdW5kYXRpb25PYmpDOyB9Ci0gICAgdm9pZCBzZXRDbGllbnQoTGVnYWN5Q0RN
U2Vzc2lvbkNsaWVudCogY2xpZW50KSBvdmVycmlkZSB7IG1fY2xpZW50ID0gY2xpZW50OyB9CiAg
ICAgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3Nl
c3Npb25JZDsgfQogICAgIFJlZlB0cjxVaW50OEFycmF5PiBnZW5lcmF0ZUtleVJlcXVlc3QoY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgVWludDhBcnJheSogaW5pdERhdGEsIFN0cmluZyYgZGVzdGlu
YXRpb25VUkwsIHVuc2lnbmVkIHNob3J0JiBlcnJvckNvZGUsIHVpbnQzMl90JiBzeXN0ZW1Db2Rl
KSBvdmVycmlkZTsKICAgICB2b2lkIHJlbGVhc2VLZXlzKCkgb3ZlcnJpZGU7CkBAIC01NiwxMCAr
NTUsMjIgQEAgcHVibGljOgogICAgIHZvaWQgcGxheWVyRGlkUmVjZWl2ZUVycm9yKE5TRXJyb3Ig
Kik7CiAKIHByaXZhdGU6CisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgY29uc3QgTG9n
Z2VyJiBsb2dnZXIoKSBjb25zdCB7IHJldHVybiBtX2xvZ2dlcjsgfQorICAgIGNvbnN0IHZvaWQq
IGxvZ0lkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2xvZ0lkZW50aWZpZXI7IH0KKyAgICBj
b25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSBjb25zdCB7IHJldHVybiAiQ0RNU2Vzc2lvbkFWRm91
bmRhdGlvbk9iakMiOyB9CisgICAgV1RGTG9nQ2hhbm5lbCYgbG9nQ2hhbm5lbCgpIGNvbnN0Owor
I2VuZGlmCisKICAgICBXZWFrUHRyPE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM+
IG1fcGFyZW50OwotICAgIExlZ2FjeUNETVNlc3Npb25DbGllbnQqIG1fY2xpZW50OworICAgIFdl
YWtQdHI8TGVnYWN5Q0RNU2Vzc2lvbkNsaWVudD4gbV9jbGllbnQ7CiAgICAgU3RyaW5nIG1fc2Vz
c2lvbklkOwogICAgIFJldGFpblB0cjxBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdD4gbV9y
ZXF1ZXN0OworCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgUmVmPGNvbnN0IExvZ2dl
cj4gbV9sb2dnZXI7CisgICAgY29uc3Qgdm9pZCogbV9sb2dJZGVudGlmaWVyOworI2VuZGlmCiB9
OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkZvdW5k
YXRpb25PYmpDLm1tCmluZGV4IGRhZGNkZmM1NTU2ZWY4ODA4OTIyZTk4OTM5MWY3MTg3YzE0OWY2
MTUuLjE3ZWYxODc0YmQxNzNkNGViMjFhYjNjNGQ1Y2YxYjM3ZTNmOTUxOGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNl
c3Npb25BVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDLm1tCkBA
IC0zMCw2ICszMCw3IEBACiAKICNpbXBvcnQgIkxlZ2FjeUNETS5oIgogI2ltcG9ydCAiTGVnYWN5
Q0RNU2Vzc2lvbi5oIgorI2ltcG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCAiTWVkaWFQbGF5ZXIu
aCIKICNpbXBvcnQgIk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaCIKICNpbXBv
cnQgIldlYkNvcmVOU0Vycm9yRXh0cmFzLmgiCkBAIC0zNywyMSArMzgsMjggQEAKICNpbXBvcnQg
PEFWRm91bmRhdGlvbi9BVkFzc2V0UmVzb3VyY2VMb2FkZXIuaD4KICNpbXBvcnQgPEphdmFTY3Jp
cHRDb3JlL1R5cGVkQXJyYXlJbmxpbmVzLmg+CiAjaW1wb3J0IDxvYmpjL29iamMtcnVudGltZS5o
PgorI2ltcG9ydCA8d3RmL0xvZ2dlckhlbHBlci5oPgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQu
aD4KICNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgogI2ltcG9ydCA8d3RmL1VVSUQuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQzo6Q0RNU2Vz
c2lvbkFWRm91bmRhdGlvbk9iakMoTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyog
cGFyZW50LCBMZWdhY3lDRE1TZXNzaW9uQ2xpZW50KiBjbGllbnQpCitDRE1TZXNzaW9uQVZGb3Vu
ZGF0aW9uT2JqQzo6Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMoTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQyogcGFyZW50LCBMZWdhY3lDRE1TZXNzaW9uQ2xpZW50JiBjbGllbnQp
CiAgICAgOiBtX3BhcmVudCgqcGFyZW50KQogICAgICwgbV9jbGllbnQoY2xpZW50KQogICAgICwg
bV9zZXNzaW9uSWQoY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpKQorI2lmICFSRUxFQVNFX0xP
R19ESVNBQkxFRAorICAgICwgbV9sb2dnZXIoY2xpZW50LmxvZ2dlcigpKQorICAgICwgbV9sb2dJ
ZGVudGlmaWVyKGNsaWVudC5sb2dJZGVudGlmaWVyKCkpCisjZW5kaWYKIHsKKyAgICBBTFdBWVNf
TE9HKExPR0lERU5USUZJRVIpOwogfQogCiBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQzo6fkNE
TVNlc3Npb25BVkZvdW5kYXRpb25PYmpDKCkKIHsKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJ
RVIpOwogfQogCiBSZWZQdHI8VWludDhBcnJheT4gQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakM6
OmdlbmVyYXRlS2V5UmVxdWVzdChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBVaW50OEFycmF5KiBp
bml0RGF0YSwgU3RyaW5nJiBkZXN0aW5hdGlvblVSTCwgdW5zaWduZWQgc2hvcnQmIGVycm9yQ29k
ZSwgdWludDMyX3QmIHN5c3RlbUNvZGUpCkBAIC01OSw2ICs2Nyw3IEBAIFJlZlB0cjxVaW50OEFy
cmF5PiBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQzo6Z2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0
IFN0cmluZyYKICAgICBVTlVTRURfUEFSQU0obWltZVR5cGUpOwogCiAgICAgaWYgKCFtX3BhcmVu
dCkgeworICAgICAgICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwgImVycm9yOiAhcGFyZW50Iik7
CiAgICAgICAgIGVycm9yQ29kZSA9IExlZ2FjeUNETTo6VW5rbm93bkVycm9yOwogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICB9CkBAIC02NywxMiArNzYsMTQgQEAgUmVmUHRyPFVpbnQ4QXJy
YXk+IENETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDOjpnZW5lcmF0ZUtleVJlcXVlc3QoY29uc3Qg
U3RyaW5nJgogICAgIFN0cmluZyBrZXlJRDsKICAgICBSZWZQdHI8VWludDhBcnJheT4gY2VydGlm
aWNhdGU7CiAgICAgaWYgKCFNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpleHRy
YWN0S2V5VVJJS2V5SURBbmRDZXJ0aWZpY2F0ZUZyb21Jbml0RGF0YShpbml0RGF0YSwga2V5VVJJ
LCBrZXlJRCwgY2VydGlmaWNhdGUpKSB7CisgICAgICAgIEVSUk9SX0xPRyhMT0dJREVOVElGSUVS
LCAiZXJyb3I6IGNvdWxkIG5vdCBleHRyYWN0IGtleSBpbmZvIik7CiAgICAgICAgIGVycm9yQ29k
ZSA9IExlZ2FjeUNETTo6VW5rbm93bkVycm9yOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9CiAKICAgICBtX3JlcXVlc3QgPSBtX3BhcmVudC0+dGFrZVJlcXVlc3RGb3JLZXlVUkkoa2V5
VVJJKTsKICAgICBpZiAoIW1fcmVxdWVzdCkgeworICAgICAgICBFUlJPUl9MT0coTE9HSURFTlRJ
RklFUiwgImVycm9yOiBjb3VsZCBub3QgZmluZCByZXF1ZXN0IGZvciBrZXkgVVJJIik7CiAgICAg
ICAgIGVycm9yQ29kZSA9IExlZ2FjeUNETTo6VW5rbm93bkVycm9yOwogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICB9CkBAIC04NCw2ICs5NSw3IEBAIFJlZlB0cjxVaW50OEFycmF5PiBDRE1T
ZXNzaW9uQVZGb3VuZGF0aW9uT2JqQzo6Z2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmluZyYK
ICAgICBSZXRhaW5QdHI8TlNEYXRhPiBrZXlSZXF1ZXN0ID0gW21fcmVxdWVzdCBzdHJlYW1pbmdD
b250ZW50S2V5UmVxdWVzdERhdGFGb3JBcHA6Y2VydGlmaWNhdGVEYXRhLmdldCgpIGNvbnRlbnRJ
ZGVudGlmaWVyOmFzc2V0SUQuZ2V0KCkgb3B0aW9uczpuaWwgZXJyb3I6Jm5zRXJyb3JdOwogCiAg
ICAgaWYgKCFrZXlSZXF1ZXN0KSB7CisgICAgICAgIEVSUk9SX0xPRyhMT0dJREVOVElGSUVSLCAi
ZmFpbGVkIHRvIGdlbmVyYXRlIGtleSByZXF1ZXN0IHdpdGggZXJyb3I6ICIsIFN0cmluZyhuc0Vy
cm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKSk7CiAgICAgICAgIGVycm9yQ29kZSA9IExlZ2FjeUNE
TTo6RG9tYWluRXJyb3I7CiAgICAgICAgIHN5c3RlbUNvZGUgPSBtZWRpYUtleUVycm9yU3lzdGVt
Q29kZShuc0Vycm9yKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC05Myw2ICsxMDUsOCBA
QCBSZWZQdHI8VWludDhBcnJheT4gQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakM6OmdlbmVyYXRl
S2V5UmVxdWVzdChjb25zdCBTdHJpbmcmCiAgICAgc3lzdGVtQ29kZSA9IDA7CiAgICAgZGVzdGlu
YXRpb25VUkwgPSBTdHJpbmcoKTsKIAorICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CisK
ICAgICBhdXRvIGtleVJlcXVlc3RCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKFtrZXlSZXF1
ZXN0IGJ5dGVzXSwgW2tleVJlcXVlc3QgbGVuZ3RoXSk7CiAgICAgdW5zaWduZWQgYnl0ZUxlbmd0
aCA9IGtleVJlcXVlc3RCdWZmZXItPmJ5dGVMZW5ndGgoKTsKICAgICByZXR1cm4gVWludDhBcnJh
eTo6dHJ5Q3JlYXRlKFdURk1vdmUoa2V5UmVxdWVzdEJ1ZmZlciksIDAsIGJ5dGVMZW5ndGgpOwpA
QCAtMTExLDYgKzEyNSw4IEBAIGJvb2wgQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakM6OnVwZGF0
ZShVaW50OEFycmF5KiBrZXksIFJlZlB0cjxVaW50OEFycmF5PiYgbmV4CiAgICAgc3lzdGVtQ29k
ZSA9IDA7CiAgICAgbmV4dE1lc3NhZ2UgPSBudWxscHRyOwogCisgICAgQUxXQVlTX0xPRyhMT0dJ
REVOVElGSUVSKTsKKwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xMjQsMTAgKzE0MCwxOSBA
QCB2b2lkIENETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDOjpwbGF5ZXJEaWRSZWNlaXZlRXJyb3Io
TlNFcnJvciAqZXJyb3IpCiAgICAgaWYgKCFtX2NsaWVudCkKICAgICAgICAgcmV0dXJuOwogCisg
ICAgRVJST1JfTE9HKExPR0lERU5USUZJRVIsIFN0cmluZyhlcnJvci5sb2NhbGl6ZWREZXNjcmlw
dGlvbikpOworCiAgICAgdW5zaWduZWQgbG9uZyBjb2RlID0gbWVkaWFLZXlFcnJvclN5c3RlbUNv
ZGUoZXJyb3IpOwogICAgIG1fY2xpZW50LT5zZW5kRXJyb3IoTGVnYWN5Q0RNU2Vzc2lvbkNsaWVu
dDo6TWVkaWFLZXlFcnJvckRvbWFpbiwgY29kZSk7CiB9CiAKKyNpZiAhUkVMRUFTRV9MT0dfRElT
QUJMRUQKK1dURkxvZ0NoYW5uZWwmIENETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDOjpsb2dDaGFu
bmVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gTG9nRU1FOworfQorI2VuZGlmCisKIH0KIAogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9DRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZTdHJlYW1TZXNz
aW9uLmgKaW5kZXggM2I0MjJlY2FmNGExZDExMzg3YjFhYmYxMTBiYmU2MTQ1MDIwYWU1MC4uYjI4
YmMzMzllM2RmZjk3Yzk5OTkzNzU2ZWRjODgyODJkZmI5NmE4ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFW
U3RyZWFtU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVlN0cmVhbVNlc3Npb24uaApAQCAtNDIsNyArNDIs
NyBAQCBjbGFzcyBDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOwogY2xhc3MgQ0RNU2Vzc2lv
bkFWU3RyZWFtU2Vzc2lvbiA6IHB1YmxpYyBDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDIHsK
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBDRE1TZXNzaW9uQVZT
dHJlYW1TZXNzaW9uKFZlY3RvcjxpbnQ+JiYgcHJvdG9jb2xWZXJzaW9ucywgQ0RNUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQyYsIExlZ2FjeUNETVNlc3Npb25DbGllbnQqKTsKKyAgICBDRE1TZXNz
aW9uQVZTdHJlYW1TZXNzaW9uKFZlY3RvcjxpbnQ+JiYgcHJvdG9jb2xWZXJzaW9ucywgQ0RNUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQyYsIExlZ2FjeUNETVNlc3Npb25DbGllbnQmKTsKICAgICB2
aXJ0dWFsIH5DRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uKCk7CiAKICAgICAvLyBMZWdhY3lDRE1T
ZXNzaW9uCkBAIC02MSw2ICs2MSwxMCBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgUmVmUHRy
PFVpbnQ4QXJyYXk+IGdlbmVyYXRlS2V5UmVsZWFzZU1lc3NhZ2UodW5zaWduZWQgc2hvcnQmIGVy
cm9yQ29kZSwgdWludDMyX3QmIHN5c3RlbUNvZGUpOwogCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FC
TEVECisgICAgY29uc3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29uc3QgeyByZXR1cm4gIkNETVNl
c3Npb25BVlN0cmVhbVNlc3Npb24iOyB9CisjZW5kaWYKKwogICAgIFJldGFpblB0cjxBVlN0cmVh
bVNlc3Npb24+IG1fc3RyZWFtU2Vzc2lvbjsKICAgICBSZWZQdHI8VWludDhBcnJheT4gbV9pbml0
RGF0YTsKICAgICBSZWZQdHI8VWludDhBcnJheT4gbV9jZXJ0aWZpY2F0ZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNl
c3Npb25BVlN0cmVhbVNlc3Npb24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uLm1tCmluZGV4IGYz
NWNhYThlNmFmZjU3ZDMwODhhZTdjMGQzZjkyOGZmNzZiOTZlZTEuLjg0MGEyMzM3YWUyZDFiMzc5
MTdhMTE1M2NhYmFlZDg3OWE3YTI1NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVlN0cmVhbVNlc3Npb24u
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbi5tbQpAQCAtNDAsNiArNDAsNyBAQAogI2ltcG9y
dCA8b2JqYy9vYmpjLXJ1bnRpbWUuaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvQVZGb3VuZGF0
aW9uU1BJLmg+CiAjaW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5oPgorI2ltcG9ydCA8d3RmL0xvZ2dl
ckhlbHBlci5oPgogI2ltcG9ydCA8d3RmL1VVSUQuaD4KICNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0
b3JDb2NvYS5oPgogCkBAIC04MSwxNiArODIsMTggQEAgQGVuZAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLUNETVNlc3Npb25BVlN0cmVhbVNlc3Npb246OkNETVNlc3Npb25BVlN0cmVhbVNlc3Np
b24oVmVjdG9yPGludD4mJiBwcm90b2NvbFZlcnNpb25zLCBDRE1Qcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDJiBjZG0sIExlZ2FjeUNETVNlc3Npb25DbGllbnQqIGNsaWVudCkKK0NETVNlc3Npb25B
VlN0cmVhbVNlc3Npb246OkNETVNlc3Npb25BVlN0cmVhbVNlc3Npb24oVmVjdG9yPGludD4mJiBw
cm90b2NvbFZlcnNpb25zLCBDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDJiBjZG0sIExlZ2Fj
eUNETVNlc3Npb25DbGllbnQmIGNsaWVudCkKICAgICA6IENETVNlc3Npb25NZWRpYVNvdXJjZUFW
Rk9iakMoY2RtLCBjbGllbnQpCiAgICAgLCBtX2RhdGFQYXJzZXJPYnNlcnZlcihhZG9wdE5TKFtb
V2ViQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbk9ic2VydmVyIGFsbG9jXSBpbml0V2l0aFBhcmVu
dDp0aGlzXSkpCiAgICAgLCBtX3Byb3RvY29sVmVyc2lvbnMoV1RGTW92ZShwcm90b2NvbFZlcnNp
b25zKSkKICAgICAsIG1fbW9kZShOb3JtYWwpCiB7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElG
SUVSKTsKIH0KIAogQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbjo6fkNETVNlc3Npb25BVlN0cmVh
bVNlc3Npb24oKQogeworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CiAgICAgc2V0U3Ry
ZWFtU2Vzc2lvbihudWxscHRyKTsKIAogICAgIGZvciAoYXV0byYgc291cmNlQnVmZmVyIDogbV9z
b3VyY2VCdWZmZXJzKQpAQCAtMTAzLDcgKzEwNiw3IEBAIFJlZlB0cjxVaW50OEFycmF5PiBDRE1T
ZXNzaW9uQVZTdHJlYW1TZXNzaW9uOjpnZW5lcmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5nJiBt
CiAgICAgVU5VU0VEX1BBUkFNKGRlc3RpbmF0aW9uVVJMKTsKICAgICBBU1NFUlQoaW5pdERhdGEp
OwogCi0gICAgTE9HKE1lZGlhLCAiQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbjo6Z2VuZXJhdGVL
ZXlSZXF1ZXN0KCVwKSIsIHRoaXMpOworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CiAK
ICAgICBlcnJvckNvZGUgPSBNZWRpYVBsYXllcjo6Tm9FcnJvcjsKICAgICBzeXN0ZW1Db2RlID0g
MDsKQEAgLTEyOSw3ICsxMzIsNyBAQCB2b2lkIENETVNlc3Npb25BVlN0cmVhbVNlc3Npb246OnJl
bGVhc2VLZXlzKCkKICAgICAgICAgZm9yIChhdXRvJiBzb3VyY2VCdWZmZXIgOiBtX3NvdXJjZUJ1
ZmZlcnMpCiAgICAgICAgICAgICBzb3VyY2VCdWZmZXItPmZsdXNoKCk7CiAKLSAgICAgICAgTE9H
KE1lZGlhLCAiQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbjo6cmVsZWFzZUtleXMoJXApIC0gZXhw
aXJpbmcgc3RyZWFtIHNlc3Npb24iLCB0aGlzKTsKKyAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVO
VElGSUVSLCAiZXhwaXJpbmcgc3RyZWFtIHNlc3Npb24iKTsKICAgICAgICAgW21fc3RyZWFtU2Vz
c2lvbiBleHBpcmVdOwogCiAgICAgICAgIGlmICghbV9jZXJ0aWZpY2F0ZSkKQEAgLTE1MCw3ICsx
NTMsNyBAQCB2b2lkIENETVNlc3Npb25BVlN0cmVhbVNlc3Npb246OnJlbGVhc2VLZXlzKCkKICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgaWYgKG1fc2Vzc2lvbklkID09
IFN0cmluZyhwbGF5YmFja1Nlc3Npb25JZFZhbHVlKSkgewotICAgICAgICAgICAgICAgIExPRyhN
ZWRpYSwgIkNETVNlc3Npb25BVlN0cmVhbVNlc3Npb246OnJlbGVhc2VLZXlzKCVwKSAtIGZvdW5k
IHNlc3Npb24sIHNlbmRpbmcgZXhwaXJhdGlvbiBtZXNzYWdlIik7CisgICAgICAgICAgICAgICAg
QUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAiZm91bmQgc2Vzc2lvbiwgc2VuZGluZyBleHBpcmF0
aW9uIG1lc3NhZ2UiKTsKICAgICAgICAgICAgICAgICBtX2V4cGlyZWRTZXNzaW9uID0gZXhwaXJl
ZFNlc3Npb25EYXRhOwogICAgICAgICAgICAgICAgIG1fY2xpZW50LT5zZW5kTWVzc2FnZShVaW50
OEFycmF5OjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KFttX2V4cGlyZWRTZXNz
aW9uIGJ5dGVzXSksIFttX2V4cGlyZWRTZXNzaW9uIGxlbmd0aF0pLnB0cigpLCBlbXB0eVN0cmlu
ZygpKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTE3OSwxMyArMTgyLDEzIEBAIGJvb2wg
Q0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbjo6dXBkYXRlKFVpbnQ4QXJyYXkqIGtleSwgUmVmUHRy
PFVpbnQ4QXJyYXk+JiBuZXh0CiB7CiAgICAgYm9vbCBzaG91bGRHZW5lcmF0ZUtleVJlcXVlc3Qg
PSAhbV9jZXJ0aWZpY2F0ZSB8fCBpc0VxdWFsMihrZXksICJyZW5ldyIpOwogICAgIGlmICghbV9j
ZXJ0aWZpY2F0ZSkgewotICAgICAgICBMT0coTWVkaWEsICJDRE1TZXNzaW9uQVZTdHJlYW1TZXNz
aW9uOjp1cGRhdGUoJXApIC0gY2VydGlmaWNhdGUgZGF0YSIsIHRoaXMpOworICAgICAgICBBTFdB
WVNfTE9HKExPR0lERU5USUZJRVIsICJjZXJ0aWZpY2F0ZSBkYXRhIik7CiAKICAgICAgICAgbV9j
ZXJ0aWZpY2F0ZSA9IGtleTsKICAgICB9CiAKICAgICBpZiAoaXNFcXVhbDIoa2V5LCAiYWNrbm93
bGVkZ2VkIikpIHsKLSAgICAgICAgTE9HKE1lZGlhLCAiQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lv
bjo6dXBkYXRlKCVwKSAtIGFja25vd2xlZGluZyBzZWN1cmUgc3RvcCBtZXNzYWdlIiwgdGhpcyk7
CisgICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgImFja25vd2xlZGluZyBzZWN1cmUg
c3RvcCBtZXNzYWdlIik7CiAKICAgICAgICAgaWYgKCFtX2V4cGlyZWRTZXNzaW9uKSB7CiAgICAg
ICAgICAgICBlcnJvckNvZGUgPSBNZWRpYVBsYXllcjo6SW52YWxpZFBsYXllclN0YXRlOwpAQCAt
MjQxLDI0ICsyNDQsMjYgQEAgYm9vbCBDRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uOjp1cGRhdGUo
VWludDhBcnJheSoga2V5LCBSZWZQdHI8VWludDhBcnJheT4mIG5leHQKICAgICAgICAgICAgIG1f
c2Vzc2lvbklkID0gY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpOwogCiAgICAgICAgIGlmIChl
cnJvcikgewotICAgICAgICAgICAgTE9HKE1lZGlhLCAiQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lv
bjo6dXBkYXRlKCVwKSAtIGVycm9yOiVAIiwgdGhpcywgW2Vycm9yIGRlc2NyaXB0aW9uXSk7Cisg
ICAgICAgICAgICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwgImVycm9yIGdlbmVyYXRpbmcga2V5
IHJlcXVlc3Q6ICIsIFN0cmluZyhlcnJvci5kZXNjcmlwdGlvbikpOwogICAgICAgICAgICAgZXJy
b3JDb2RlID0gTWVkaWFQbGF5ZXI6OkludmFsaWRQbGF5ZXJTdGF0ZTsKICAgICAgICAgICAgIHN5
c3RlbUNvZGUgPSBtZWRpYUtleUVycm9yU3lzdGVtQ29kZShlcnJvcik7CiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAorICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJ
RVIsICJnZW5lcmF0ZWQga2V5IHJlcXVlc3QiKTsKICAgICAgICAgbmV4dE1lc3NhZ2UgPSBVaW50
OEFycmF5OjpjcmVhdGUoW3JlcXVlc3QgbGVuZ3RoXSk7CiAgICAgICAgIFtyZXF1ZXN0IGdldEJ5
dGVzOm5leHRNZXNzYWdlLT5kYXRhKCkgbGVuZ3RoOm5leHRNZXNzYWdlLT5sZW5ndGgoKV07CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBpZiAoIXByb3RlY3RlZFNvdXJjZUJ1
ZmZlcikgeworICAgICAgICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwgImVycm9yOiAhcHJvdGVj
dGVkU291cmNlQnVmZmVyIik7CiAgICAgICAgIGVycm9yQ29kZSA9IE1lZGlhUGxheWVyOjpJbnZh
bGlkUGxheWVyU3RhdGU7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBBU1NF
UlQoIW1fc291cmNlQnVmZmVycy5pc0VtcHR5KCkpOwotICAgIExPRyhNZWRpYSwgIkNETVNlc3Np
b25BVlN0cmVhbVNlc3Npb246OnVwZGF0ZSglcCkgLSBrZXkgZGF0YSIsIHRoaXMpOworICAgIEFM
V0FZU19MT0coTE9HSURFTlRJRklFUiwgInByb2Nlc3Npbmcga2V5IHJlc3BvbnNlIik7CiAgICAg
ZXJyb3JDb2RlID0gTWVkaWFQbGF5ZXI6Ok5vRXJyb3I7CiAgICAgc3lzdGVtQ29kZSA9IDA7CiAg
ICAgUmV0YWluUHRyPE5TRGF0YT4ga2V5RGF0YSA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGlu
aXRXaXRoQnl0ZXM6a2V5LT5kYXRhKCkgbGVuZ3RoOmtleS0+bGVuZ3RoKCldKTsKQEAgLTI5Mywx
MiArMjk4LDE0IEBAIHZvaWQgQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbjo6c2V0U3RyZWFtU2Vz
c2lvbihBVlN0cmVhbVNlc3Npb24gKnN0cmVhbVNlc3Npb24pCiAKIHZvaWQgQ0RNU2Vzc2lvbkFW
U3RyZWFtU2Vzc2lvbjo6YWRkUGFyc2VyKEFWU3RyZWFtRGF0YVBhcnNlciogcGFyc2VyKQogewor
ICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CiAgICAgaWYgKG1fc3RyZWFtU2Vzc2lvbikK
ICAgICAgICAgW21fc3RyZWFtU2Vzc2lvbiBhZGRTdHJlYW1EYXRhUGFyc2VyOnBhcnNlcl07CiB9
CiAKIHZvaWQgQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbjo6cmVtb3ZlUGFyc2VyKEFWU3RyZWFt
RGF0YVBhcnNlciogcGFyc2VyKQogeworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CiAg
ICAgaWYgKG1fc3RyZWFtU2Vzc2lvbikKICAgICAgICAgW21fc3RyZWFtU2Vzc2lvbiByZW1vdmVT
dHJlYW1EYXRhUGFyc2VyOnBhcnNlcl07CiB9CkBAIC0zMTgsMTQgKzMyNSwxNCBAQCBSZWZQdHI8
VWludDhBcnJheT4gQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbjo6Z2VuZXJhdGVLZXlSZWxlYXNl
TWVzc2FnZSh1bnNpZ25lZAogCiAgICAgTlNBcnJheSogZXhwaXJlZFNlc3Npb25zID0gW1BBTDo6
Z2V0QVZTdHJlYW1TZXNzaW9uQ2xhc3MoKSBwZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBvcnRzV2l0
aEFwcElkZW50aWZpZXI6Y2VydGlmaWNhdGVEYXRhLmdldCgpIHN0b3JhZ2VEaXJlY3RvcnlBdFVS
TDpbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOnN0b3JhZ2VQYXRoXV07CiAgICAgaWYgKCFbZXhwaXJl
ZFNlc3Npb25zIGNvdW50XSkgewotICAgICAgICBMT0coTWVkaWEsICJDRE1TZXNzaW9uQVZTdHJl
YW1TZXNzaW9uOjpnZW5lcmF0ZUtleVJlbGVhc2VNZXNzYWdlKCVwKSAtIG5vIGV4cGlyZWQgc2Vz
c2lvbnMgZm91bmQiLCB0aGlzKTsKKyAgICAgICAgQUxXQVlTX0xPRygibm8gZXhwaXJlZCBzZXNz
aW9ucyBmb3VuZCIpOwogCiAgICAgICAgIGVycm9yQ29kZSA9IE1lZGlhUGxheWVyOjpLZXlTeXN0
ZW1Ob3RTdXBwb3J0ZWQ7CiAgICAgICAgIHN5c3RlbUNvZGUgPSAnIW1vcic7CiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIH0KIAotICAgIExPRyhNZWRpYSwgIkNETVNlc3Npb25BVlN0cmVh
bVNlc3Npb246OmdlbmVyYXRlS2V5UmVsZWFzZU1lc3NhZ2UoJXApIC0gZm91bmQgJWQgZXhwaXJl
ZCBzZXNzaW9ucyIsIHRoaXMsIFtleHBpcmVkU2Vzc2lvbnMgY291bnRdKTsKKyAgICBBTFdBWVNf
TE9HKCJmb3VuZCAiLCBbZXhwaXJlZFNlc3Npb25zIGNvdW50XSwgIiBleHBpcmVkIHNlc3Npb25z
Iik7CiAKICAgICBlcnJvckNvZGUgPSAwOwogICAgIHN5c3RlbUNvZGUgPSAwOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RN
U2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQy5oCmlu
ZGV4IGVlYjVmOTgzYjhhM2ZiYmYzNGJhYzY0ZGQwZmQ1NWJjMjUzYjBlYTAuLjI5OGZkMGM4ZjI5
MDA2NjZhZGQzMjY0ZDkyZjAzZWJhNWQ3MThmYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25NZWRpYVNvdXJj
ZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9DRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDLmgKQEAgLTQzLDE0ICs0Mywx
MyBAQCBjbGFzcyBDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOwogY2xhc3MgQ0RNU2Vzc2lv
bk1lZGlhU291cmNlQVZGT2JqQyA6IHB1YmxpYyBMZWdhY3lDRE1TZXNzaW9uLCBwdWJsaWMgU291
cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakNFcnJvckNsaWVudCwgcHVibGljIENhbk1ha2VXZWFrUHRy
PENETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakM+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKLSAgICBDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDKENETVByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakMmLCBMZWdhY3lDRE1TZXNzaW9uQ2xpZW50Kik7CisgICAgQ0RN
U2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQyhDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDJiwg
TGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCYpOwogICAgIHZpcnR1YWwgfkNETVNlc3Npb25NZWRpYVNv
dXJjZUFWRk9iakMoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBhZGRQYXJzZXIoQVZTdHJlYW1EYXRh
UGFyc2VyKikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVQYXJzZXIoQVZTdHJlYW1EYXRh
UGFyc2VyKikgPSAwOwogCiAgICAgLy8gTGVnYWN5Q0RNU2Vzc2lvbgotICAgIHZvaWQgc2V0Q2xp
ZW50KExlZ2FjeUNETVNlc3Npb25DbGllbnQqIGNsaWVudCkgb3ZlcnJpZGUgeyBtX2NsaWVudCA9
IGNsaWVudDsgfQogICAgIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV9zZXNzaW9uSWQ7IH0KIAogICAgIC8vIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDRXJyb3JDbGllbnQKQEAgLTY4LDEyICs2NywyMyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAg
ICAgU3RyaW5nIHN0b3JhZ2VQYXRoKCkgY29uc3Q7CiAKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJM
RUQKKyAgICBjb25zdCBMb2dnZXImIGxvZ2dlcigpIGNvbnN0IHsgcmV0dXJuIG1fbG9nZ2VyOyB9
CisgICAgY29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fbG9nSWRl
bnRpZmllcjsgfQorICAgIFdURkxvZ0NoYW5uZWwmIGxvZ0NoYW5uZWwoKSBjb25zdDsKKyNlbmRp
ZgorCiAgICAgQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyogbV9jZG07Ci0gICAgTGVnYWN5
Q0RNU2Vzc2lvbkNsaWVudCogbV9jbGllbnQgeyBudWxscHRyIH07CisgICAgV2Vha1B0cjxMZWdh
Y3lDRE1TZXNzaW9uQ2xpZW50PiBtX2NsaWVudDsKICAgICBWZWN0b3I8UmVmUHRyPFNvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDPj4gbV9zb3VyY2VCdWZmZXJzOwogICAgIFJlZlB0cjxVaW50OEFy
cmF5PiBtX2NlcnRpZmljYXRlOwogICAgIFN0cmluZyBtX3Nlc3Npb25JZDsKICAgICBib29sIG1f
c3RvcHBlZCB7IGZhbHNlIH07CisKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBSZWY8
Y29uc3QgTG9nZ2VyPiBtX2xvZ2dlcjsKKyAgICBjb25zdCB2b2lkKiBtX2xvZ0lkZW50aWZpZXI7
CisjZW5kaWYKIH07CiAKIGlubGluZSBDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDKiB0b0NE
TVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMoTGVnYWN5Q0RNU2Vzc2lvbiogc2Vzc2lvbikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL0NETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZP
YmpDLm1tCmluZGV4IGYwM2U3MzliMjAwNzk3ZDEwNTc5MGY1YjA4MjRhMjFmYmYxNDQwN2QuLjI4
NmE1YTQ4ODdlOGQ5NTYwMGU3YzhiYWMzYWZiZTY2NzYxNjA1NTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25N
ZWRpYVNvdXJjZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQy5tbQpAQCAt
MzUsOSArMzUsMTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1DRE1TZXNzaW9uTWVkaWFT
b3VyY2VBVkZPYmpDOjpDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDKENETVByaXZhdGVNZWRp
YVNvdXJjZUFWRk9iakMmIGNkbSwgTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCogY2xpZW50KQorQ0RN
U2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQzo6Q0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQyhD
RE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDJiBjZG0sIExlZ2FjeUNETVNlc3Npb25DbGllbnQm
IGNsaWVudCkKICAgICA6IG1fY2RtKCZjZG0pCiAgICAgLCBtX2NsaWVudChjbGllbnQpCisjaWYg
IVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgLCBtX2xvZ2dlcihjbGllbnQubG9nZ2VyKCkpCisg
ICAgLCBtX2xvZ0lkZW50aWZpZXIoY2xpZW50LmxvZ0lkZW50aWZpZXIoKSkKKyNlbmRpZgogewog
fQogCkBAIC0xMTIsNiArMTE2LDEzIEBAIFN0cmluZyBDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZP
YmpDOjpzdG9yYWdlUGF0aCgpIGNvbnN0CiAgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChzdG9yYWdlRGlyZWN0b3J5LCAiU2VjdXJlU3RvcC5wbGlzdCIpOwog
fQogCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECitXVEZMb2dDaGFubmVsJiBDRE1TZXNzaW9u
TWVkaWFTb3VyY2VBVkZPYmpDOjpsb2dDaGFubmVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gTG9n
RU1FOworfQorI2VuZGlmCisKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVE
X01FRElBKSAmJiBFTkFCTEUoTUVESUFfU09VUkNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCmluZGV4
IGNkYWExYjA5OGMzYTU0YjFhNmM2MWE0NWRkZGJkZjJjNjkzZDYyYWIuLmFhY2Q3MzdiOTYzNThj
MGY1M2NlMzc3YTU5NjU0MDU2YTljYjIwY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKQEAgLTI2
OSw3ICsyNjksNyBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVE
SUEpCiAgICAgdm9pZCBrZXlBZGRlZCgpIGZpbmFsOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxMZWdh
Y3lDRE1TZXNzaW9uPiBjcmVhdGVTZXNzaW9uKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBMZWdh
Y3lDRE1TZXNzaW9uQ2xpZW50KikgZmluYWw7CisgICAgc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNE
TVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIExlZ2FjeUNE
TVNlc3Npb25DbGllbnQmKSBmaW5hbDsKICNlbmRpZgogCiAgICAgU3RyaW5nIGxhbmd1YWdlT2ZQ
cmltYXJ5QXVkaW9UcmFjaygpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KaW5k
ZXggYTA4ZGEwZjRmMTBlNGMzZTRhOWE3MWVlOGY1MzI1ZmE2NmUwOTFmZi4uZDc1NDg3ODVhNTZl
NDU4NjZlYmZjNTQ3ZTVjNTZhZjBhNzM5NTU1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCkBA
IC0xOTk3LDYgKzE5OTcsNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akM6OnNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZShBVkFzc2V0UgogCiAjaWYgRU5BQkxF
KExFR0FDWV9FTkNSWVBURURfTUVESUEpIHx8IEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAgICAg
aWYgKHNjaGVtZSA9PSAic2tkIikgeworICAgICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAi
cmVjZWl2ZWQgc2tkOi8vIFVSSSIpOwogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElB
KQogICAgICAgICAvLyBDcmVhdGUgYW4gaW5pdERhdGEgd2l0aCB0aGUgZm9sbG93aW5nIGxheW91
dDoKICAgICAgICAgLy8gWzQgYnl0ZXM6IGtleVVSSSBzaXplXSwgW2tleVVSSSBzaXplIGJ5dGVz
OiBrZXlVUkldCkBAIC0yNzEyLDcgKzI3MTMsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakM6OmtleUFkZGVkKCkKICAgICAgICAgbV9rZXlVUklUb1JlcXVlc3RNYXAu
cmVtb3ZlKGtleUlkKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNETVNlc3Npb24+IE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZVNlc3Npb24oY29uc3QgU3Ry
aW5nJiBrZXlTeXN0ZW0sIExlZ2FjeUNETVNlc3Npb25DbGllbnQqIGNsaWVudCkKK3N0ZDo6dW5p
cXVlX3B0cjxMZWdhY3lDRE1TZXNzaW9uPiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDOjpjcmVhdGVTZXNzaW9uKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBMZWdhY3lDRE1TZXNz
aW9uQ2xpZW50JiBjbGllbnQpCiB7CiAgICAgaWYgKCFrZXlTeXN0ZW1Jc1N1cHBvcnRlZChrZXlT
eXN0ZW0pKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvTGVnYWN5TW9ja0NETS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0xl
Z2FjeU1vY2tDRE0uY3BwCmluZGV4IDdlMWRiZjI2OTQ2YzNiZmY0MzA4NDkxZDI1ODMxNTZjYWI3
NDg1NjMuLjhhY2MxMGEzMWQ3ZWFiM2FhNTQxZWEwNGRmMjM4MGVkNjIwM2UwMjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTGVnYWN5TW9ja0NETS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9MZWdhY3lNb2NrQ0RNLmNwcApAQCAtNDAsMTAgKzQwLDkgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgTW9ja0NETVNlc3Npb24gOiBwdWJsaWMgTGVnYWN5Q0RN
U2Vzc2lvbiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgTW9j
a0NETVNlc3Npb24oTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCopOworICAgIE1vY2tDRE1TZXNzaW9u
KExlZ2FjeUNETVNlc3Npb25DbGllbnQmKTsKICAgICB2aXJ0dWFsIH5Nb2NrQ0RNU2Vzc2lvbigp
ID0gZGVmYXVsdDsKIAotICAgIHZvaWQgc2V0Q2xpZW50KExlZ2FjeUNETVNlc3Npb25DbGllbnQq
IGNsaWVudCkgb3ZlcnJpZGUgeyBtX2NsaWVudCA9IGNsaWVudDsgfQogICAgIGNvbnN0IFN0cmlu
ZyYgc2Vzc2lvbklkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9zZXNzaW9uSWQ7IH0KICAg
ICBSZWZQdHI8VWludDhBcnJheT4gZ2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIFVpbnQ4QXJyYXkqIGluaXREYXRhLCBTdHJpbmcmIGRlc3RpbmF0aW9uVVJMLCB1bnNp
Z25lZCBzaG9ydCYgZXJyb3JDb2RlLCB1aW50MzJfdCYgc3lzdGVtQ29kZSkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCByZWxlYXNlS2V5cygpIG92ZXJyaWRlOwpAQCAtNTEsNyArNTAsNyBAQCBwdWJsaWM6
CiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBjYWNoZWRLZXlGb3JLZXlJRChjb25zdCBTdHJpbmcm
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CiAKIHByb3RlY3RlZDoKLSAgICBM
ZWdhY3lDRE1TZXNzaW9uQ2xpZW50KiBtX2NsaWVudDsKKyAgICBXZWFrUHRyPExlZ2FjeUNETVNl
c3Npb25DbGllbnQ+IG1fY2xpZW50OwogICAgIFN0cmluZyBtX3Nlc3Npb25JZDsKIH07CiAKQEAg
LTczLDcgKzcyLDcgQEAgYm9vbCBMZWdhY3lNb2NrQ0RNOjpzdXBwb3J0c01JTUVUeXBlKGNvbnN0
IFN0cmluZyYgbWltZVR5cGUpCiAgICAgcmV0dXJuIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlKG1pbWVUeXBlLCAidmlkZW8vbW9jayIpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8TGVnYWN5
Q0RNU2Vzc2lvbj4gTGVnYWN5TW9ja0NETTo6Y3JlYXRlU2Vzc2lvbihMZWdhY3lDRE1TZXNzaW9u
Q2xpZW50KiBjbGllbnQpCitzdGQ6OnVuaXF1ZV9wdHI8TGVnYWN5Q0RNU2Vzc2lvbj4gTGVnYWN5
TW9ja0NETTo6Y3JlYXRlU2Vzc2lvbihMZWdhY3lDRE1TZXNzaW9uQ2xpZW50JiBjbGllbnQpCiB7
CiAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TW9ja0NETVNlc3Npb24+KGNsaWVudCk7CiB9CkBAIC0x
MDgsNyArMTA3LDcgQEAgc3RhdGljIFN0cmluZyBnZW5lcmF0ZVNlc3Npb25JZCgpCiAgICAgcmV0
dXJuIFN0cmluZzo6bnVtYmVyKG1vbm90b25pY2FsbHlJbmNyZWFzaW5nU2Vzc2lvbklkKyspOwog
fQogCi1Nb2NrQ0RNU2Vzc2lvbjo6TW9ja0NETVNlc3Npb24oTGVnYWN5Q0RNU2Vzc2lvbkNsaWVu
dCogY2xpZW50KQorTW9ja0NETVNlc3Npb246Ok1vY2tDRE1TZXNzaW9uKExlZ2FjeUNETVNlc3Np
b25DbGllbnQmIGNsaWVudCkKICAgICA6IG1fY2xpZW50KGNsaWVudCkKICAgICAsIG1fc2Vzc2lv
bklkKGdlbmVyYXRlU2Vzc2lvbklkKCkpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0xlZ2FjeU1vY2tDRE0uaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTGVnYWN5TW9j
a0NETS5oCmluZGV4IGI5M2FlYjkzZmY2MzI5ZTUxNTQ3YzEzZmY3NmE2OTJlZTZhNzE4NmMuLmYx
MGRmZWI2NGIxMzUxMmJiZjc1NDdhMGUwMTlmYzg4NDUxYzYzYjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvTGVnYWN5TW9ja0NETS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvTGVnYWN5TW9ja0NETS5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIH5MZWdhY3lNb2NrQ0RNKCkgPSBkZWZhdWx0OwogCiAgICAgYm9vbCBzdXBwb3J0c01JTUVU
eXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpIG92ZXJyaWRlOwotICAgIHN0ZDo6dW5pcXVlX3B0
cjxMZWdhY3lDRE1TZXNzaW9uPiBjcmVhdGVTZXNzaW9uKExlZ2FjeUNETVNlc3Npb25DbGllbnQq
KSBvdmVycmlkZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TGVnYWN5Q0RNU2Vzc2lvbj4gY3JlYXRl
U2Vzc2lvbihMZWdhY3lDRE1TZXNzaW9uQ2xpZW50Jikgb3ZlcnJpZGU7CiAKIHByb3RlY3RlZDoK
ICAgICBMZWdhY3lDRE0qIG1fY2RtOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5LmNwcAppbmRleCA3
Y2VkYjk3MTJmYzY2YjViOGRiNTJiYWYwOGNiMGMyYTY0ZTk0ZWU3Li42Mzg0NTI4OTEwODlhNTJi
MTNjN2I3ZWVkNGQwMWM4OTUxOTU1MmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5LmNwcApA
QCAtMTcwLDYgKzE3MCwxOCBAQCBib29sIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eTo6YWxs
b3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUoKSBjb25zdAogICAgIHJldHVybiBtX3Nlc3Npb25z
LmlzRW1wdHkoKTsKIH0KIAorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorY29uc3QgTG9nZ2Vy
JiBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk6OmxvZ2dlcigpIGNvbnN0Cit7CisgICAgaWYg
KCFtX2xvZ2dlcikgeworICAgICAgICBtX2xvZ2dlciA9IExvZ2dlcjo6Y3JlYXRlKHRoaXMpOwor
ICAgICAgICBtX2xvZ2dlci0+c2V0RW5hYmxlZCh0aGlzLCBtX2dwdUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MgPyBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPnNlc3Npb25JRCgpLmlzQWx3YXlz
T25Mb2dnaW5nQWxsb3dlZCgpIDogZmFsc2UpOworICAgIH0KKworICAgIHJldHVybiAqbV9sb2dn
ZXI7Cit9CisjZW5kaWYKKwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkuaAppbmRl
eCBkODc0OWRlMTAxYTk2OGVhYTAwMWM3YjFiZGVlMTg4NjczOGY4Mjc2Li4zYTE3ZDQxNTYwYjEy
MjFmZDc1YjUyYzExOGJlOTRhYjhhYWQ4YmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5oCkBA
IC02Niw2ICs2NiwxMCBAQCBwdWJsaWM6CiAKICAgICBib29sIGFsbG93c0V4aXRVbmRlck1lbW9y
eVByZXNzdXJlKCkgY29uc3Q7CiAKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBjb25z
dCBMb2dnZXImIGxvZ2dlcigpIGNvbnN0OworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgZnJpZW5k
IGNsYXNzIEdQVVByb2Nlc3NDb25uZWN0aW9uOwogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVy
CkBAIC03OSw2ICs4MywxMCBAQCBwcml2YXRlOgogICAgIFdlYWtQdHI8R1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcz4gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOwogICAgIEhhc2hNYXA8UmVt
b3RlTGVnYWN5Q0RNSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxlZ2FjeUNETVBy
b3h5Pj4gbV9wcm94aWVzOwogICAgIEhhc2hNYXA8UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50
aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk+PiBtX3Nl
c3Npb25zOworCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgbXV0YWJsZSBSZWZQdHI8
TG9nZ2VyPiBtX2xvZ2dlcjsKKyNlbmRpZgogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5jcHAKaW5kZXggZmZm
NmViNTI5ZTU2OWZiOGY0YmUxMzBkN2Q4Y2UzMDc2NTM5Yjc4MC4uOGE3NDNhZjM0ODY5ZmY5NDI3
Yjc3MzU0ZDc0YzIyMzc3YzJiM2E0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuY3BwCkBAIC02MSwxNyArNjEsMTcg
QEAgdm9pZCBSZW1vdGVMZWdhY3lDRE1Qcm94eTo6c3VwcG9ydHNNSU1FVHlwZShjb25zdCBTdHJp
bmcmIG1pbWVUeXBlLCBTdXBwb3J0c01JTUUKICAgICBjYWxsYmFjayhtX2NkbS0+c3VwcG9ydHNN
SU1FVHlwZShtaW1lVHlwZSkpOwogfQogCi12b2lkIFJlbW90ZUxlZ2FjeUNETVByb3h5OjpjcmVh
dGVTZXNzaW9uKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBDcmVhdGVTZXNzaW9uQ2FsbGJhY2sm
JiBjYWxsYmFjaykKK3ZvaWQgUmVtb3RlTGVnYWN5Q0RNUHJveHk6OmNyZWF0ZVNlc3Npb24oY29u
c3QgU3RyaW5nJiBrZXlTeXN0ZW0sIHVpbnQ2NF90IGxvZ0lkZW50aWZpZXIsIENyZWF0ZVNlc3Np
b25DYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIGlmICghbV9jZG0gfHwgIW1fZmFjdG9yeSkg
ewogICAgICAgICBjYWxsYmFjayh7IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
YXV0byBpZGVudGlmaWVyID0gUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXI6OmdlbmVy
YXRlKCk7Ci0gICAgYXV0byBzZXNzaW9uID0gUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5Ojpj
cmVhdGUobV9mYWN0b3J5LmdldCgpLCBpZGVudGlmaWVyLCAqbV9jZG0pOwotICAgIG1fZmFjdG9y
eS0+YWRkU2Vzc2lvbihpZGVudGlmaWVyLCBXVEZNb3ZlKHNlc3Npb24pKTsKLSAgICBjYWxsYmFj
ayhXVEZNb3ZlKGlkZW50aWZpZXIpKTsKKyAgICBhdXRvIHNlc3Npb25JZGVudGlmaWVyID0gUmVt
b3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXI6OmdlbmVyYXRlKCk7CisgICAgYXV0byBzZXNz
aW9uID0gUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpjcmVhdGUoKm1fZmFjdG9yeSwgbG9n
SWRlbnRpZmllciwgc2Vzc2lvbklkZW50aWZpZXIsICptX2NkbSk7CisgICAgbV9mYWN0b3J5LT5h
ZGRTZXNzaW9uKHNlc3Npb25JZGVudGlmaWVyLCBXVEZNb3ZlKHNlc3Npb24pKTsKKyAgICBjYWxs
YmFjayhXVEZNb3ZlKHNlc3Npb25JZGVudGlmaWVyKSk7CiB9CiAKIHZvaWQgUmVtb3RlTGVnYWN5
Q0RNUHJveHk6OnNldFBsYXllcklkKHN0ZDo6b3B0aW9uYWw8TWVkaWFQbGF5ZXJJZGVudGlmaWVy
PiYmIHBsYXllcklkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUxlZ2FjeUNETVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTGVnYWN5Q0RNUHJveHkuaAppbmRleCBkZThmNmRmNTVhNmUxZmE4YmU5NjZmOTQxZTA3
ZmUyZjVjNTAyMWE3Li45MWU0MzhhYzdlNGM0ZGY0ZDMyMzc2NjcyZjJlZjJhNzRkODYyODM1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RN
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5
Q0RNUHJveHkuaApAQCAtNjIsNyArNjIsNyBAQCBwcml2YXRlOgogICAgIHVzaW5nIFN1cHBvcnRz
TUlNRVR5cGVDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+OwogICAgIHZv
aWQgc3VwcG9ydHNNSU1FVHlwZShjb25zdCBTdHJpbmcmLCBTdXBwb3J0c01JTUVUeXBlQ2FsbGJh
Y2smJik7CiAgICAgdXNpbmcgQ3JlYXRlU2Vzc2lvbkNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllciYmKT47Ci0gICAgdm9pZCBj
cmVhdGVTZXNzaW9uKGNvbnN0IFN0cmluZyYsIENyZWF0ZVNlc3Npb25DYWxsYmFjayYmKTsKKyAg
ICB2b2lkIGNyZWF0ZVNlc3Npb24oY29uc3QgU3RyaW5nJiwgdWludDY0X3QsIENyZWF0ZVNlc3Np
b25DYWxsYmFjayYmKTsKICAgICB2b2lkIHNldFBsYXllcklkKHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVyPiYmKTsKIAogICAgIC8vIExlZ2FjeUNETUNsaWVudApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNE
TVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUxlZ2FjeUNETVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDhlYzZiM2I3YWFlZjZiMWI1ZmQ2ZjBl
Mzg1N2ZkYzUxYTJhZjY2MDcuLjA2ZjhiMGNiNGYwMWNiNmM3YjBjNmQ2ZWZhZDYxNThhMzhiNmRm
MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdh
Y3lDRE1Qcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkubWVzc2FnZXMuaW4KQEAgLTI1LDcgKzI1LDcgQEAKIAog
bWVzc2FnZXMgLT4gUmVtb3RlTGVnYWN5Q0RNUHJveHkgTm90UmVmQ291bnRlZCB7CiAgICAgU3Vw
cG9ydHNNSU1FVHlwZShTdHJpbmcgbWltZVR5cGUpIC0+IChib29sIHN1cHBvcnRzKSBTeW5jaHJv
bm91cwotICAgIENyZWF0ZVNlc3Npb24oU3RyaW5nIG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnkp
IC0+IChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyIGlkZW50aWZpZXIp
IFN5bmNocm9ub3VzCisgICAgQ3JlYXRlU2Vzc2lvbihTdHJpbmcgbWVkaWFLZXlzU3RvcmFnZURp
cmVjdG9yeSwgdWludDY0X3QgbG9nSWRlbnRpZmllcikgLT4gKFdlYktpdDo6UmVtb3RlTGVnYWN5
Q0RNU2Vzc2lvbklkZW50aWZpZXIgaWRlbnRpZmllcikgU3luY2hyb25vdXMKICAgICBTZXRQbGF5
ZXJJZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Ok1lZGlhUGxheWVySWRlbnRpZmllcj4gcGxheWVy
SWQpCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5jcHAKaW5kZXggYzhlNzQ2M2RlNjc4MzI5
MTc2MzU1YmYxYTEwYTIzZjRkODg2OWFiYS4uZDNhZTAwNWMyZmQwN2EwMjAxNTEzNmNlNTM0ZmVi
NDQ0M2MyNTA2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5jcHAKQEAgLTM1LDE5ICszNSwy
NCBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGlu
ZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0xlZ2FjeUNETS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
U2hhcmVkQnVmZmVyLmg+CisjaW5jbHVkZSA8d3RmL0xvZ2dlckhlbHBlci5oPgogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLXN0ZDo6dW5pcXVlX3B0
cjxSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk+IFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94
eTo6Y3JlYXRlKFdlYWtQdHI8UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5PiYmIGZhY3Rvcnks
IFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6Okxl
Z2FjeUNETSYgY2RtKQorc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94
eT4gUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpjcmVhdGUoUmVtb3RlTGVnYWN5Q0RNRmFj
dG9yeVByb3h5JiBmYWN0b3J5LCB1aW50NjRfdCBsb2dJZGVudGlmaWVyLCBSZW1vdGVMZWdhY3lD
RE1TZXNzaW9uSWRlbnRpZmllciBzZXNzaW9uSWRlbnRpZmllciwgV2ViQ29yZTo6TGVnYWN5Q0RN
JiBjZG0pCiB7Ci0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMZWdhY3lDRE1TZXNz
aW9uUHJveHk+KG5ldyBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkoV1RGTW92ZShmYWN0b3J5
KSwgaWRlbnRpZmllciwgY2RtKSk7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVM
ZWdhY3lDRE1TZXNzaW9uUHJveHk+KG5ldyBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkoZmFj
dG9yeSwgbG9nSWRlbnRpZmllciwgc2Vzc2lvbklkZW50aWZpZXIsIGNkbSkpOwogfQogCi1SZW1v
dGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eShXZWFr
UHRyPFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eT4mJiBmYWN0b3J5LCBSZW1vdGVMZWdhY3lD
RE1TZXNzaW9uSWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJDb3JlOjpMZWdhY3lDRE0mIGNkbSkK
LSAgICA6IG1fZmFjdG9yeShXVEZNb3ZlKGZhY3RvcnkpKQotICAgICwgbV9pZGVudGlmaWVyKGlk
ZW50aWZpZXIpCitSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OlJlbW90ZUxlZ2FjeUNETVNl
c3Npb25Qcm94eShSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkmIGZhY3RvcnksIHVpbnQ2NF90
IGxvZ0lkZW50aWZpZXIsIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyIHNlc3Npb25J
ZGVudGlmaWVyLCBXZWJDb3JlOjpMZWdhY3lDRE0mIGNkbSkKKyAgICA6IG1fZmFjdG9yeShmYWN0
b3J5KQorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgICwgbV9sb2dnZXIoZmFjdG9yeS5s
b2dnZXIoKSkKKyAgICAsIG1fbG9nSWRlbnRpZmllcihyZWludGVycHJldF9jYXN0PGNvbnN0IHZv
aWQqPihsb2dJZGVudGlmaWVyKSkKKyNlbmRpZgorICAgICwgbV9pZGVudGlmaWVyKHNlc3Npb25J
ZGVudGlmaWVyKQogICAgICwgbV9zZXNzaW9uKGNkbS5jcmVhdGVTZXNzaW9uKCp0aGlzKSkKIHsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdh
Y3lDRE1TZXNzaW9uUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuaAppbmRleCAxNTQ2YmRmZGZkY2YwOTEwODc4OTQ0ZjM0
MDc5NjdhN2FiMzhiZjg2Li5lYTQ5OTgzNjJhNjAxZTFhNDcyMzVmNjJjMWUxNWQ2NzMxNGNhNTc2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5
Q0RNU2Vzc2lvblByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5oCkBAIC01Myw3ICs1Myw3IEBAIGNsYXNzIFJlbW90
ZUxlZ2FjeUNETVNlc3Npb25Qcm94eQogICAgIDogcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVy
CiAgICAgLCBwdWJsaWMgV2ViQ29yZTo6TGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk+
IGNyZWF0ZShXZWFrUHRyPFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eT4mJiwgUmVtb3RlTGVn
YWN5Q0RNU2Vzc2lvbklkZW50aWZpZXIsIFdlYkNvcmU6OkxlZ2FjeUNETSYpOworICAgIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5PiBjcmVhdGUoUmVt
b3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5JiwgdWludDY0X3QgbG9nSWRlbnRpZmllciwgUmVtb3Rl
TGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXIsIFdlYkNvcmU6OkxlZ2FjeUNETSYpOwogICAgIH5S
ZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkoKTsKIAogICAgIFJlbW90ZUxlZ2FjeUNETUZhY3Rv
cnlQcm94eSogZmFjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fZmFjdG9yeS5nZXQoKTsgfQpAQCAt
NjUsNyArNjUsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFJlbW90
ZUxlZ2FjeUNETUZhY3RvcnlQcm94eTsKLSAgICBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHko
V2Vha1B0cjxSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk+JiYsIFJlbW90ZUxlZ2FjeUNETVNl
c3Npb25JZGVudGlmaWVyLCBXZWJDb3JlOjpMZWdhY3lDRE0mKTsKKyAgICBSZW1vdGVMZWdhY3lD
RE1TZXNzaW9uUHJveHkoUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5JiwgdWludDY0X3QgbG9n
SWRlbnRpZmllciwgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXIsIFdlYkNvcmU6Okxl
Z2FjeUNETSYpOwogCiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICB2b2lkIGRpZFJl
Y2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwpAQCAt
NzUsNiArNzUsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNlbmRNZXNzYWdlKFVpbnQ4QXJyYXkq
LCBTdHJpbmcgZGVzdGluYXRpb25VUkwpIGZpbmFsOwogICAgIHZvaWQgc2VuZEVycm9yKE1lZGlh
S2V5RXJyb3JDb2RlLCB1aW50MzJfdCBzeXN0ZW1Db2RlKSBmaW5hbDsKICAgICBTdHJpbmcgbWVk
aWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0IGZpbmFsOworI2lmICFSRUxFQVNFX0xPR19E
SVNBQkxFRAorICAgIGNvbnN0IExvZ2dlciYgbG9nZ2VyKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
bV9sb2dnZXI7IH0KKyAgICBjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbV9sb2dJZGVudGlmaWVyOyB9CisjZW5kaWYKIAogICAgIC8vIE1lc3NhZ2VzCiAg
ICAgdXNpbmcgR2VuZXJhdGVLZXlDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3Rk
OjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+JiYsIGNvbnN0IFN0cmluZyYsIHVuc2ln
bmVkIHNob3J0LCB1aW50MzJfdCk+OwpAQCAtODYsNiArOTAsMTIgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGNhY2hlZEtleUZvcktleUlEKFN0cmluZyBrZXlJZCwgQ2FjaGVkS2V5Rm9yS2V5SURDYWxs
YmFjayYmKTsKIAogICAgIFdlYWtQdHI8UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5PiBtX2Zh
Y3Rvcnk7CisKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBSZWY8Y29uc3QgTG9nZ2Vy
PiBtX2xvZ2dlcjsKKyAgICBjb25zdCB2b2lkKiBtX2xvZ0lkZW50aWZpZXI7CisjZW5kaWYKKwog
ICAgIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyIG1faWRlbnRpZmllcjsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TGVnYWN5Q0RNU2Vzc2lvbj4gbV9zZXNzaW9uOwogICAg
IFdlYWtQdHI8UmVtb3RlTWVkaWFQbGF5ZXJQcm94eT4gbV9wbGF5ZXI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZS5jcHAKaW5kZXggOGQ5ZTVmZjkyYWMzYjNmMGViNzEzMzllZmU4YjRiZjNmNDI5
NjRkYy4uMzNkYThhYTA2YjYxNzI5NzMyNzAzZTkwYWVlMDI1YzRhNzYyNmJmOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVS
ZW1vdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlLmNwcApAQCAtMTE1NCw3ICsxMTU0LDcgQEAgQXVkaW9Tb3VyY2VQ
cm92aWRlciogTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjphdWRpb1NvdXJjZVByb3ZpZGVyKCkK
ICNlbmRpZgogCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCi1zdGQ6OnVuaXF1
ZV9wdHI8TGVnYWN5Q0RNU2Vzc2lvbj4gTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjcmVhdGVT
ZXNzaW9uKGNvbnN0IFN0cmluZyYsIExlZ2FjeUNETVNlc3Npb25DbGllbnQqKQorc3RkOjp1bmlx
dWVfcHRyPExlZ2FjeUNETVNlc3Npb24+IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y3JlYXRl
U2Vzc2lvbihjb25zdCBTdHJpbmcmLCBMZWdhY3lDRE1TZXNzaW9uQ2xpZW50JikKIHsKICAgICBu
b3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlLmgKaW5kZXggMWE2YTM0MDM0M2QxNDJlZGZkZWVhMzZiMzc0YTk5Zjk5M2VmZWI5Mi4uZjM0
MTQ2YzVlOTRhOWJjOWYxZDBmYTZmYTRmYTJhZDIyMGNhNjZmYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZS5oCkBAIC0zNDcsNyArMzQ3LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAjaWYgRU5B
QkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCi0gICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6
OkxlZ2FjeUNETVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6
TGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCopIGZpbmFsOworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJD
b3JlOjpMZWdhY3lDRE1TZXNzaW9uPiBjcmVhdGVTZXNzaW9uKGNvbnN0IFN0cmluZyYsIFdlYkNv
cmU6OkxlZ2FjeUNETVNlc3Npb25DbGllbnQmKSBmaW5hbDsKICAgICB2b2lkIHNldENETShXZWJD
b3JlOjpMZWdhY3lDRE0qKSBmaW5hbDsKICAgICB2b2lkIHNldENETVNlc3Npb24oV2ViQ29yZTo6
TGVnYWN5Q0RNU2Vzc2lvbiopIGZpbmFsOwogICAgIHZvaWQga2V5QWRkZWQoKSBmaW5hbDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5
Q0RNLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5
Q0RNLmNwcAppbmRleCA3NTZmOGY5OWYxNjI2OTMzODdmMDkzZGQ2ZjJiMDU0YThmNzk5ZjVmLi44
YTNhYjllZDM3NWEyZTkyZTljYjMzNzc5N2U2Zjg0NjllZWQ5NWJlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE0uY3BwCkBA
IC02MCwxOCArNjAsMjMgQEAgYm9vbCBSZW1vdGVMZWdhY3lDRE06OnN1cHBvcnRzTUlNRVR5cGUo
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKICAgICByZXR1cm4gc3VwcG9ydGVkOwogfQogCi1zdGQ6
OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TGVnYWN5Q0RNU2Vzc2lvbj4gUmVtb3RlTGVnYWN5Q0RNOjpj
cmVhdGVTZXNzaW9uKFdlYkNvcmU6OkxlZ2FjeUNETVNlc3Npb25DbGllbnQqIGNsaWVudCkKK3N0
ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpMZWdhY3lDRE1TZXNzaW9uPiBSZW1vdGVMZWdhY3lDRE06
OmNyZWF0ZVNlc3Npb24oV2ViQ29yZTo6TGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCYgY2xpZW50KQog
ewogICAgIGlmICghbV9mYWN0b3J5KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFN0
cmluZyBzdG9yYWdlRGlyZWN0b3J5ID0gY2xpZW50ID8gY2xpZW50LT5tZWRpYUtleXNTdG9yYWdl
RGlyZWN0b3J5KCkgOiBlbXB0eVN0cmluZygpOworICAgIFN0cmluZyBzdG9yYWdlRGlyZWN0b3J5
ID0gY2xpZW50Lm1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKTsKKworICAgIHVpbnQ2NF90IGxv
Z0lkZW50aWZpZXIgeyAwIH07CisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgbG9nSWRl
bnRpZmllciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDY0X3Q+KGNsaWVudC5sb2dJZGVudGlmaWVy
KCkpOworI2VuZGlmCiAKICAgICBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllciBpZGVu
dGlmaWVyOwotICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9u
KCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUxlZ2FjeUNETVByb3h5OjpDcmVhdGVTZXNzaW9u
KHN0b3JhZ2VEaXJlY3RvcnkpLCBNZXNzYWdlczo6UmVtb3RlTGVnYWN5Q0RNUHJveHk6OkNyZWF0
ZVNlc3Npb246OlJlcGx5KGlkZW50aWZpZXIpLCBtX2lkZW50aWZpZXIpOworICAgIG1fZmFjdG9y
eS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6
OlJlbW90ZUxlZ2FjeUNETVByb3h5OjpDcmVhdGVTZXNzaW9uKHN0b3JhZ2VEaXJlY3RvcnksIGxv
Z0lkZW50aWZpZXIpLCBNZXNzYWdlczo6UmVtb3RlTGVnYWN5Q0RNUHJveHk6OkNyZWF0ZVNlc3Np
b246OlJlcGx5KGlkZW50aWZpZXIpLCBtX2lkZW50aWZpZXIpOwogICAgIGlmICghaWRlbnRpZmll
cikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFJlbW90ZUxlZ2FjeUNETVNl
c3Npb246OmNyZWF0ZShtX2ZhY3RvcnksIFdURk1vdmUoaWRlbnRpZmllcikpOworICAgIHJldHVy
biBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uOjpjcmVhdGUobV9mYWN0b3J5LCBXVEZNb3ZlKGlkZW50
aWZpZXIpLCBjbGllbnQpOwogfQogCiB2b2lkIFJlbW90ZUxlZ2FjeUNETTo6c2V0UGxheWVySWQo
TWVkaWFQbGF5ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETS5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE0uaAppbmRleCA0N2YwMmNiZWIy
NGQ4YjVmMDgyNjJkNDY1NWEwNjlmOWQ3ODJmMDM3Li5jMTI2YzMxZTBjNTM3ZjVkNTgxNTFmOTY1
NTRmM2E4MWYzMDYyYTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUxlZ2FjeUNETS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNLmgKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgflJlbW90ZUxlZ2FjeUNETSgpOwogCiAgICAgYm9vbCBzdXBwb3J0c01JTUVUeXBl
KGNvbnN0IFN0cmluZyYpIGZpbmFsOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpMZWdh
Y3lDRE1TZXNzaW9uPiBjcmVhdGVTZXNzaW9uKFdlYkNvcmU6OkxlZ2FjeUNETVNlc3Npb25DbGll
bnQqKSBmaW5hbDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TGVnYWN5Q0RNU2Vzc2lv
bj4gY3JlYXRlU2Vzc2lvbihXZWJDb3JlOjpMZWdhY3lDRE1TZXNzaW9uQ2xpZW50JikgZmluYWw7
CiAgICAgdm9pZCBzZXRQbGF5ZXJJZChXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZpZXIpOwog
CiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5jcHAKaW5kZXggNjE1NWE4ZGE5ZjQ4ZmVj
ODQ2YTlhNDc4YjY1YzJlYjM1NWI4NmQ0Ny4uYjNiMDIwZWY5MGI5M2Y4ZTI1MjBhZjZhMGYzNjMz
OWI2YmY4ZGNlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24uY3BwCkBAIC02NSwxNCArNjUsMTUg
QEAgc3RhdGljIElQQzo6U2hhcmVkQnVmZmVyQ29weSBjb252ZXJ0VG9TaGFyZWRCdWZmZXJDb3B5
KFQgYXJyYXkpCiAgICAgcmV0dXJuIElQQzo6U2hhcmVkQnVmZmVyQ29weShTaGFyZWRCdWZmZXI6
OmNyZWF0ZShhcnJheS0+ZGF0YSgpLCBhcnJheS0+Ynl0ZUxlbmd0aCgpKSk7CiB9CiAKLXN0ZDo6
dW5pcXVlX3B0cjxSZW1vdGVMZWdhY3lDRE1TZXNzaW9uPiBSZW1vdGVMZWdhY3lDRE1TZXNzaW9u
OjpjcmVhdGUoV2Vha1B0cjxSZW1vdGVMZWdhY3lDRE1GYWN0b3J5PiBmYWN0b3J5LCBSZW1vdGVM
ZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllciYmIGlkZW50aWZpZXIpCitzdGQ6OnVuaXF1ZV9wdHI8
UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbj4gUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbjo6Y3JlYXRlKFdl
YWtQdHI8UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeT4gZmFjdG9yeSwgUmVtb3RlTGVnYWN5Q0RNU2Vz
c2lvbklkZW50aWZpZXImJiBpZGVudGlmaWVyLCBMZWdhY3lDRE1TZXNzaW9uQ2xpZW50JiBjbGll
bnQpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMZWdhY3lDRE1TZXNzaW9u
PihuZXcgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbihXVEZNb3ZlKGZhY3RvcnkpLCBXVEZNb3ZlKGlk
ZW50aWZpZXIpKSk7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMZWdhY3lDRE1T
ZXNzaW9uPihuZXcgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbihXVEZNb3ZlKGZhY3RvcnkpLCBXVEZN
b3ZlKGlkZW50aWZpZXIpLCBjbGllbnQpKTsKIH0KIAotUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbjo6
UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbihXZWFrUHRyPFJlbW90ZUxlZ2FjeUNETUZhY3Rvcnk+IGZh
Y3RvcnksIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyJiYgaWRlbnRpZmllcikKK1Jl
bW90ZUxlZ2FjeUNETVNlc3Npb246OlJlbW90ZUxlZ2FjeUNETVNlc3Npb24oV2Vha1B0cjxSZW1v
dGVMZWdhY3lDRE1GYWN0b3J5PiBmYWN0b3J5LCBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRp
ZmllciYmIGlkZW50aWZpZXIsIExlZ2FjeUNETVNlc3Npb25DbGllbnQmIGNsaWVudCkKICAgICA6
IG1fZmFjdG9yeShXVEZNb3ZlKGZhY3RvcnkpKQogICAgICwgbV9pZGVudGlmaWVyKFdURk1vdmUo
aWRlbnRpZmllcikpCisgICAgLCBtX2NsaWVudChjbGllbnQpCiB7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lv
bi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1T
ZXNzaW9uLmgKaW5kZXggNTJjMGQxYTQ4YTk0MDlhMWRkMDk0NDhhZWI3NGM0YzQ4MTMyYmQyYi4u
NTgxNTFmNDMyOGRhOTZjN2VhN2Q5MmQyNjA2MDM4ZjNkMDZmYjc4ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1T
ZXNzaW9uLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgY2xhc3MgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbiBm
aW5hbAogICAgIDogcHVibGljIFdlYkNvcmU6OkxlZ2FjeUNETVNlc3Npb24KICAgICAsIHB1Ymxp
YyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxSZW1vdGVMZWdhY3lDRE1TZXNzaW9uPiBjcmVhdGUoV2Vha1B0cjxSZW1vdGVMZWdhY3lD
RE1GYWN0b3J5PiwgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXImJik7CisgICAgc3Rh
dGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMZWdhY3lDRE1TZXNzaW9uPiBjcmVhdGUoV2Vha1B0
cjxSZW1vdGVMZWdhY3lDRE1GYWN0b3J5PiwgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZp
ZXImJiwgV2ViQ29yZTo6TGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCYpOwogICAgIH5SZW1vdGVMZWdh
Y3lDRE1TZXNzaW9uKCk7CiAKICAgICAvLyBNZXNzYWdlUmVjZWl2ZXIKQEAgLTUzLDExICs1Mywx
MCBAQCBwdWJsaWM6CiAgICAgY29uc3QgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXIm
IGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KIAogcHJpdmF0ZToK
LSAgICBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uKFdlYWtQdHI8UmVtb3RlTGVnYWN5Q0RNRmFjdG9y
eT4sIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyJiYpOworICAgIFJlbW90ZUxlZ2Fj
eUNETVNlc3Npb24oV2Vha1B0cjxSZW1vdGVMZWdhY3lDRE1GYWN0b3J5PiwgUmVtb3RlTGVnYWN5
Q0RNU2Vzc2lvbklkZW50aWZpZXImJiwgV2ViQ29yZTo6TGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCYp
OwogCiAgICAgLy8gTGVnYWN5Q0RNU2Vzc2lvbgogICAgIFdlYkNvcmU6OkxlZ2FjeUNETVNlc3Np
b25UeXBlIHR5cGUoKSBmaW5hbCB7IHJldHVybiBXZWJDb3JlOjpDRE1TZXNzaW9uVHlwZVJlbW90
ZTsgfQotICAgIHZvaWQgc2V0Q2xpZW50KFdlYkNvcmU6OkxlZ2FjeUNETVNlc3Npb25DbGllbnQq
IGNsaWVudCkgZmluYWwgeyBtX2NsaWVudCA9IGNsaWVudDsgfQogICAgIGNvbnN0IFN0cmluZyYg
c2Vzc2lvbklkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zZXNzaW9uSWQ7IH0KICAgICBSZWZQ
dHI8VWludDhBcnJheT4gZ2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IFVpbnQ4QXJyYXkqIGluaXREYXRhLCBTdHJpbmcmIGRlc3RpbmF0aW9uVVJMLCB1bnNpZ25lZCBz
aG9ydCYgZXJyb3JDb2RlLCB1aW50MzJfdCYgc3lzdGVtQ29kZSkgZmluYWw7CiAgICAgdm9pZCBy
ZWxlYXNlS2V5cygpIGZpbmFsOwpAQCAtNzAsNyArNjksNyBAQCBwcml2YXRlOgogCiAgICAgV2Vh
a1B0cjxSZW1vdGVMZWdhY3lDRE1GYWN0b3J5PiBtX2ZhY3Rvcnk7CiAgICAgUmVtb3RlTGVnYWN5
Q0RNU2Vzc2lvbklkZW50aWZpZXIgbV9pZGVudGlmaWVyOwotICAgIFdlYkNvcmU6OkxlZ2FjeUNE
TVNlc3Npb25DbGllbnQqIG1fY2xpZW50OworICAgIFdlYWtQdHI8V2ViQ29yZTo6TGVnYWN5Q0RN
U2Vzc2lvbkNsaWVudD4gbV9jbGllbnQ7CiAgICAgU3RyaW5nIG1fc2Vzc2lvbklkOwogICAgIG11
dGFibGUgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxBcnJheUJ1ZmZlcj4+IG1fY2FjaGVkS2V5Q2Fj
aGU7CiB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453123</attachid>
            <date>2022-02-24 12:04:38 -0800</date>
            <delta_ts>2022-02-24 12:27:44 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-234319-20220224120437.patch</filename>
            <type>text/plain</type>
            <size>184955</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwMzQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTU1NmUzZjNmYzQ3YmQy
MTc3ZmIxNmE2NjQwYWQ3MmE5ZmYzMWRlNi4uNDk3NWMzMTEzMjlhMjEzZGQ1NTFiYzg3YjgzNjE5
ZjI5NDBkYjNjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3MiBAQAorMjAyMS0xMi0xNCAgSmVy
IE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbUmVmYWN0b3JdIEFkb3B0
IExvZ2dlckhlbHBlciBpbiBMb2dnaW5nIEVNRSBjbGFzc2VzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQzMTkKKworICAgICAgICBSZXZpZXdlZCBi
eSBFcmljIENhcmxzb24uCisKKyAgICAgICAgSW4gb3JkZXIgdG8gcGFzcyBkb3duIGEgbG9nZ2Vy
KCkgYW5kIGxvZ0lkZW50aWZpZXIoKSB0byB0aGUgcGxhdGZvcm0vCisgICAgICAgIGNsYXNzZXMs
IG1vZGlmeSBMZWdhY3lDRE1TZXNzaW9uQ2xpZW50IHRvIGJlIGEgQ2FuTWFrZVdlYWtQdHIgY2xh
c3MsCisgICAgICAgIHNvIGl0IGNhbiBiZSBwYXNzZWQgYXJvdW5kIGJ5IHJlZmVyZW5jZSBhbmQg
YXV0b21hdGljYWxseSBpbnZhbGlkYXRlZAorICAgICAgICB3aGVuIHRoZSBjbGllbnQgaXMgZGVz
dHJveWVkLiBUaGVuIG1vZGlmeSBMZWdhY3lDRE1TZXNzaW9uQ2xpZW50IHRvCisgICAgICAgIHBy
b3ZpZGUgYSBsb2dnZXIoKSBhbmQgbG9nSWRlbnRpZmllcigpIHRvIGNhbGxlcnMuCisKKyAgICAg
ICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
RE06OkNETSk6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNETTo6bG9nSWRlbnRpZmllciBjb25zdCk6CisgICAgICAgICogTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFLZXlTZXNzaW9uOjpnZW5lcmF0ZVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFLZXlTZXNzaW9uOjpsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6
dXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6Y2xvc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9uOjpyZW1vdmUpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFLZXlTZXNzaW9uOjp1cGRhdGVLZXlTdGF0dXNlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUtleVNlc3Npb246OnNlc3Npb25DbG9zZWQpOgorICAgICAgICAqIE1vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvTWVkaWFLZXlzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5czo6
TWVkaWFLZXlzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5czo6Y3JlYXRlU2Vzc2lvbik6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleXM6OnNldFNlcnZlckNlcnRpZmljYXRlKToKKyAg
ICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5oOgorICAgICAgICAqIE1v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpMZWdhY3lDRE06OmNyZWF0ZVNlc3Npb24pOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVByaXZhdGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1Qcml2YXRlQ2xlYXJLZXkuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TGVnYWN5Q0RNUHJpdmF0ZUNsZWFyS2V5OjpjcmVhdGVTZXNzaW9uKToKKyAg
ICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1Qcml2YXRlQ2xl
YXJLZXkuaDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lD
RE1Qcml2YXRlTWVkaWFQbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZU1l
ZGlhUGxheWVyOjpjcmVhdGVTZXNzaW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL2xlZ2FjeS9MZWdhY3lDRE1Qcml2YXRlTWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKiBNb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1TZXNzaW9uQ2xlYXJLZXkuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q0RNU2Vzc2lvbkNsZWFyS2V5OjpDRE1TZXNzaW9uQ2xlYXJLZXkp
OgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVNlc3Np
b25DbGVhcktleS5oOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dl
YktpdE1lZGlhS2V5U2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRNZWRpYUtl
eVNlc3Npb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRNZWRpYUtleVNlc3Np
b246OldlYktpdE1lZGlhS2V5U2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRNZWRp
YUtleVNlc3Npb246On5XZWJLaXRNZWRpYUtleVNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6
V2ViS2l0TWVkaWFLZXlTZXNzaW9uOjpjbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRN
ZWRpYUtleVNlc3Npb246OmdlbmVyYXRlS2V5UmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJLaXRNZWRpYUtleVNlc3Npb246OnVwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRN
ZWRpYUtleVNlc3Npb246OnNlbmRNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdE1l
ZGlhS2V5U2Vzc2lvbjo6c2VuZEVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdE1lZGlh
S2V5U2Vzc2lvbjo6bG9nQ2hhbm5lbCBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9uLmg6CisgICAgICAgICogTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldlYktpdE1lZGlhS2V5czo6Y3JlYXRlU2Vzc2lvbik6CisgICAgICAgICogTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlzLmg6CisgICAgICAgICogcGxh
dGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNRmFjdG9yeS5oOgorICAgICAgICAqIHBsYXRmb3JtL2Vu
Y3J5cHRlZG1lZGlhL0NETUluc3RhbmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5j
ZTo6c2V0TG9nSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZTo6c2V0
TG9nZ2VyKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1J
bnN0YW5jZVNlc3Npb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6
c2V0TG9nSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246
OnNldExvZ2dlcik6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEv
Q0RNUHJpdmF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZTo6c2V0TG9nSWRlbnRp
Zmllcik6CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2YXRlOjpzZXRMb2dnZXIpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNETUZhY3RvcnlDbGVhcktleTo6Y3JlYXRlQ0RNKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0xlZ2FjeUNETVNlc3Npb24uaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllcjo6Y3JlYXRlU2Vzc2lvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
clByaXZhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFj
ZTo6Y3JlYXRlU2Vzc2lvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNETUZhY3Rv
cnlGYWlyUGxheVN0cmVhbWluZzo6Y3JlYXRlQ0RNKToKKyAgICAgICAgKFdlYkNvcmU6OkNETVBy
aXZhdGVGYWlyUGxheVN0cmVhbWluZzo6Q0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydHNDb25m
aWd1cmF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETVByaXZhdGVGYWlyUGxheVN0
cmVhbWluZzo6Y3JlYXRlSW5zdGFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZUZh
aXJQbGF5U3RyZWFtaW5nOjpzZXRMb2dnZXIpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETVByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDOjpjcmVhdGVTZXNzaW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vY2YvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNETVNlc3Npb25BVkZvdW5kYXRpb25DRjo6Q0RNU2Vzc2lvbkFWRm91bmRh
dGlvbkNGKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvQ0RN
U2Vzc2lvbkFWRm91bmRhdGlvbkNGLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpjcmVhdGVTZXNz
aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3Rh
bmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5z
dGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OkNETUluc3RhbmNlRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1J
bnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c2V0U3RvcmFnZURpcmVjdG9yeSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlk
UHJvdmlkZVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VGYWlyUGxheVN0
cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZW5ld2luZ1JlcXVlc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVQZXJz
aXN0YWJsZVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VGYWlyUGxheVN0
cmVhbWluZ0FWRk9iakM6OmRpZEZhaWxUb1Byb3ZpZGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkNETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZXF1ZXN0RGlkU3VjY2Vl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2Jq
Qzo6c2hvdWxkUmV0cnlSZXF1ZXN0Rm9yUmVhc29uKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUlu
c3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpncm91cFNlc3Npb25JZGVudGlmaWVyQ2hh
bmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZG
T2JqQzo6ZXh0ZXJuYWxQcm90ZWN0aW9uU3RhdHVzRGlkQ2hhbmdlRm9yQ29udGVudEtleVJlcXVl
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakMpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZP
YmpDOjpyZXF1ZXN0TGljZW5zZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Np
b25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpsb2FkU2Vz
c2lvbik6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVh
bWluZ0FWRk9iakM6OmNsb3NlU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5j
ZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlbW92ZVNlc3Npb25EYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2Jq
Qzo6ZGlkUHJvdmlkZVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNz
aW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdHMpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpk
aWRQcm92aWRlUmVuZXdpbmdSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNl
U2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkRmFpbFRvUHJvdmlkZVJlcXVlc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDOjpyZXF1ZXN0RGlkU3VjY2VlZCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5j
ZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6Om91dHB1dE9ic2N1cmVkRHVlVG9JbnN1
ZmZpY2llbnRFeHRlcm5hbFByb3RlY3Rpb25DaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkNE
TUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cHJvdGVjdGlvblN0YXR1
c0ZvckRpc3BsYXlJRCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZUZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQzo6c2V0TG9nZ2VyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c2V0TG9nZ2Vy
KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9DRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbi5oOgorICAgICAgICAoV2ViQ29yZTo6Q0RN
U2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb246OmxvZ0NsYXNzTmFtZSBjb25zdCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVu
dEtleVNlc3Npb24ubW06CisgICAgICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uQVZDb250ZW50S2V5
U2Vzc2lvbjo6Q0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24pOgorICAgICAgICAoV2ViQ29y
ZTo6Q0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb246OmdlbmVyYXRlS2V5UmVxdWVzdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6cmVsZWFzZUtl
eXMpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb246OnVw
ZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6
YWRkUGFyc2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkNETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNz
aW9uOjpyZW1vdmVQYXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNU2Vzc2lvbkFWQ29udGVu
dEtleVNlc3Npb246OmdlbmVyYXRlS2V5UmVsZWFzZU1lc3NhZ2UpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkZvdW5kYXRpb25PYmpD
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vz
c2lvbkFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uQVZG
b3VuZGF0aW9uT2JqQzo6Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakM6On5DRE1TZXNzaW9uQVZGb3VuZGF0aW9u
T2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQzo6Z2Vu
ZXJhdGVLZXlSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETVNlc3Npb25BVkZvdW5kYXRp
b25PYmpDOjp1cGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNU2Vzc2lvbkFWRm91bmRhdGlv
bk9iakM6OnBsYXllckRpZFJlY2VpdmVFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpDRE1TZXNz
aW9uQVZGb3VuZGF0aW9uT2JqQzo6bG9nQ2hhbm5lbCBjb25zdCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbi5o
OgorICAgICAgICAoV2ViQ29yZTo6Q0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbjo6bG9nQ2xhc3NO
YW1lIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9DRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q0RNU2Vz
c2lvbkFWU3RyZWFtU2Vzc2lvbjo6Q0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbik6CisgICAgICAg
IChXZWJDb3JlOjpDRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uOjp+Q0RNU2Vzc2lvbkFWU3RyZWFt
U2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uOjpn
ZW5lcmF0ZUtleVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNU2Vzc2lvbkFWU3RyZWFt
U2Vzc2lvbjo6cmVsZWFzZUtleXMpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNU2Vzc2lvbkFWU3Ry
ZWFtU2Vzc2lvbjo6dXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETVNlc3Npb25BVlN0cmVh
bVNlc3Npb246OmFkZFBhcnNlcik6CisgICAgICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uQVZTdHJl
YW1TZXNzaW9uOjpyZW1vdmVQYXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNU2Vzc2lvbkFW
U3RyZWFtU2Vzc2lvbjo6Z2VuZXJhdGVLZXlSZWxlYXNlTWVzc2FnZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZG
T2JqQy5oOgorICAgICAgICAoV2ViQ29yZTo6Q0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQzo6
bG9nZ2VyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETVNlc3Npb25NZWRpYVNvdXJjZUFW
Rk9iakM6OmxvZ0lkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMubW06CisgICAg
ICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDOjpDRE1TZXNzaW9uTWVk
aWFTb3VyY2VBVkZPYmpDKToKKyAgICAgICAgKFdlYkNvcmU6OkNETVNlc3Npb25NZWRpYVNvdXJj
ZUFWRk9iakM6OmxvZ0NoYW5uZWwgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291cmNl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6
OmNyZWF0ZVNlc3Npb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9l
bWUvQ0RNVGh1bmRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDRE1GYWN0b3J5VGh1bmRlcjo6
Y3JlYXRlQ0RNKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NE
TVRodW5kZXIuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0xlZ2FjeU1vY2tDRE0uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TGVnYWN5TW9ja0NETTo6Y3JlYXRlU2Vzc2lvbik6CisgICAgICAgIChXZWJD
b3JlOjpNb2NrQ0RNU2Vzc2lvbjo6TW9ja0NETVNlc3Npb24pOgorICAgICAgICAqIHRlc3Rpbmcv
TGVnYWN5TW9ja0NETS5oOgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUZhY3Rvcnk6OmNyZWF0ZUNETSk6CisgICAgICAgICog
dGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5oOgorCiAyMDIyLTAyLTIxICBKZXIgTm9ibGUgIDxqZXIu
bm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIFdlYktpdCBhcHAgaXMgc29tZXRpbWVz
IG5vdCAiTm93IFBsYXlpbmciIGR1cmluZyBpbml0aWFsIHBsYXliYWNrCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGJl
ZDBjZDM3ZjE4ZTU4MGVkMDFkNTE1NmYzZDIzMWNmMWE5ZjMzOWMuLmVkMTIwMWZhNzdhMTVkZTE4
MmE2NmIyODZlY2UxZjMwMTRiNWFhN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzAgQEAKKzIwMjEt
MTItMTQgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgW1JlZmFj
dG9yXSBBZG9wdCBMb2dnZXJIZWxwZXIgaW4gTGVnYWN5IEVNRSBjbGFzc2VzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQzMTkKKworICAgICAgICBS
ZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUNETUZhY3RvcnlQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3Rv
cnlQcm94eTo6Y3JlYXRlQ0RNKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeVBy
b3h5Ojpsb2dnZXIgY29uc3QpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RN
RmFjdG9yeVByb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0
YW5jZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6UmVtb3Rl
Q0RNSW5zdGFuY2VQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlUHJv
eHk6OmNyZWF0ZVNlc3Npb24pOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RN
SW5zdGFuY2VQcm94eS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5z
dGFuY2VQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uUHJveHk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvblByb3h5OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpzZXRMb2dJZGVu
dGlmaWVyKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vz
c2lvblByb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUNETVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNUHJveHk6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETVByb3h5OjpSZW1vdGVDRE1Qcm94eSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETVByb3h5OjpzZXRMb2dJZGVudGlmaWVyKToKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUNETVByb3h5Ojpsb2dnZXIgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVD
RE1Qcm94eTo6bG9nSWRlbnRpZmllciBjb25zdCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVDRE1Qcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUxlZ2FjeUNETUZhY3RvcnlQcm94eTo6bG9nZ2VyIGNvbnN0KToKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5oOgorICAgICAgICAqIEdQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVMZWdhY3lDRE1Qcm94eTo6Y3JlYXRlU2Vzc2lvbik6CisgICAgICAgICogR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5
KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94
eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y3Jl
YXRlU2Vzc2lvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RN
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNOjpzZXRMb2dJZGVudGlmaWVyKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1Db25maWd1cmF0aW9uLmg6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUNETUNvbmZpZ3VyYXRpb246OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUNETUNvbmZpZ3VyYXRpb246OmRlY29kZSk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUNETUZhY3Rvcnk6OmNyZWF0ZUNETSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlQ0RNRmFjdG9yeS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUNETUluc3RhbmNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2U6OmNy
ZWF0ZVNlc3Npb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvbjo6c2V0TG9nSWRlbnRpZmllcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlTGVnYWN5Q0RNLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RN
OjpjcmVhdGVTZXNzaW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVM
ZWdhY3lDRE0uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lD
RE1TZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbjo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbjo6UmVtb3Rl
TGVnYWN5Q0RNU2Vzc2lvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
TGVnYWN5Q0RNU2Vzc2lvbi5oOgorCiAyMDIyLTAyLTIyICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5m
cmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFdpdGggRE9NIFJlbmRlcmluZyBpbiBHUFUgcHJv
Y2VzcywgZXZlcnkgZGlzcGxheSByZXN1bHRzIGluIG5ldyBJT1N1cmZhY2UgYWxsb2NhdGlvbgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwCmluZGV4IDAx
NjEyMTlkMWUyNmIyNjJjNGVlZWM4MTk4YzQ2ZDhlYjE0YzFiMDIuLjY1NDNmMzkxOTgzYzdjNDYz
M2QyNzhhOWVhOTVmNTBjMzk5YTI0ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL0NETS5jcHAKQEAgLTczLDkgKzczLDkgQEAgQ0RNOjpDRE0oRG9jdW1lbnQm
IGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSkKICAgICBBU1NFUlQoc3VwcG9ydHNL
ZXlTeXN0ZW0oa2V5U3lzdGVtKSk7CiAgICAgZm9yIChhdXRvKiBmYWN0b3J5IDogQ0RNRmFjdG9y
eTo6cmVnaXN0ZXJlZEZhY3RvcmllcygpKSB7CiAgICAgICAgIGlmIChmYWN0b3J5LT5zdXBwb3J0
c0tleVN5c3RlbShrZXlTeXN0ZW0pKSB7Ci0gICAgICAgICAgICBtX3ByaXZhdGUgPSBmYWN0b3J5
LT5jcmVhdGVDRE0oa2V5U3lzdGVtKTsKKyAgICAgICAgICAgIG1fcHJpdmF0ZSA9IGZhY3Rvcnkt
PmNyZWF0ZUNETShrZXlTeXN0ZW0sICp0aGlzKTsKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQK
LSAgICAgICAgICAgIG1fcHJpdmF0ZS0+c2V0TG9nZ2VyKG1fbG9nZ2VyLCBtX2xvZ0lkZW50aWZp
ZXIpOworICAgICAgICAgICAgbV9wcml2YXRlLT5zZXRMb2dJZGVudGlmaWVyKG1fbG9nSWRlbnRp
Zmllcik7CiAjZW5kaWYKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaAppbmRleCBkN2IxZDUzZDA0OTFmNzI3
NzliNTk0YjJkODNjMDliODNiY2YyMDdmLi5iMjU1Nzk3ZDRlMTMwMThlY2M0YzIyZGFmYjYzODg1
MTMyMTU5ZmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL0NETS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RN
LmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAKKyNp
bmNsdWRlICJDRE1Qcml2YXRlLmgiCiAjaW5jbHVkZSAiQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2
ZXIuaCIKICNpbmNsdWRlICJNZWRpYUtleVNlc3Npb25UeXBlLmgiCiAjaW5jbHVkZSAiTWVkaWFL
ZXlTeXN0ZW1Db25maWd1cmF0aW9uLmgiCkBAIC01NCw3ICs1NSw3IEBAIGNsYXNzIERvY3VtZW50
OwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIGNsYXNzIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI7CiAKLWNsYXNzIENETSA6IHB1YmxpYyBSZWZDb3VudGVkPENETT4sIHB1YmxpYyBDYW5N
YWtlV2Vha1B0cjxDRE0+LCBwcml2YXRlIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyIHsKK2Ns
YXNzIENETSA6IHB1YmxpYyBSZWZDb3VudGVkPENETT4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxD
RE0+LCBwdWJsaWMgQ0RNUHJpdmF0ZUNsaWVudCwgcHJpdmF0ZSBDb250ZXh0RGVzdHJ1Y3Rpb25P
YnNlcnZlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNLZXlTeXN0ZW0oY29u
c3QgU3RyaW5nJik7CiAgICAgc3RhdGljIGJvb2wgaXNQZXJzaXN0ZW50VHlwZShNZWRpYUtleVNl
c3Npb25UeXBlKTsKQEAgLTgyLDExICs4MywxNiBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcgc3Rv
cmFnZURpcmVjdG9yeSgpIGNvbnN0OwogCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAg
Y29uc3QgTG9nZ2VyJiBsb2dnZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2xvZ2dlcjsgfQor
ICAgIGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2xvZ0lkZW50
aWZpZXI7IH0KKyNlbmRpZgorCiBwcml2YXRlOgogICAgIENETShEb2N1bWVudCYsIGNvbnN0IFN0
cmluZyYga2V5U3lzdGVtKTsKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAotICAgIFJlZjxM
b2dnZXI+IG1fbG9nZ2VyOworICAgIFJlZjxjb25zdCBMb2dnZXI+IG1fbG9nZ2VyOwogICAgIGNv
bnN0IHZvaWQqIG1fbG9nSWRlbnRpZmllcjsKICNlbmRpZgogICAgIFN0cmluZyBtX2tleVN5c3Rl
bTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVk
aWFLZXlTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
TWVkaWFLZXlTZXNzaW9uLmNwcAppbmRleCBmYjRhN2Y4ODRmNjc5NTViNmQ3OWQwMmNlNWNkZDU4
NDlkMmZjOTY1Li5jYzhhZmE0ZTIyMDcxNzIwMjAxM2UwNTE2OTk3NGIyMDdhMGRkYjQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vz
c2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleVNlc3Npb24uY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIK
ICNpbmNsdWRlICJFdmVudExvb3AuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCisjaW5jbHVk
ZSAiSlNNZWRpYUtleVN0YXR1c01hcC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRl
ICJNZWRpYUtleU1lc3NhZ2VFdmVudC5oIgogI2luY2x1ZGUgIk1lZGlhS2V5TWVzc2FnZUV2ZW50
SW5pdC5oIgpAQCAtNDksNiArNTAsNyBAQAogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luRGF0YS5o
IgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCisjaW5j
bHVkZSA8d3RmL0hhc2hDb3VudGVkU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGlu
ZXMuaD4KICNpbmNsdWRlIDx3dGYvTG9nZ2VySGVscGVyLmg+CiAKQEAgLTgyLDggKzg0LDcgQEAg
TWVkaWFLZXlTZXNzaW9uOjpNZWRpYUtleVNlc3Npb24oRG9jdW1lbnQmIGRvY3VtZW50LCBXZWFr
UHRyPE1lZGlhS2V5cz4mJiBrZXlzLAogICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9lbmNy
eXB0ZWQtbWVkaWEvI2RvbS1tZWRpYWtleXMtY3JlYXRlc2Vzc2lvbgogICAgIC8vIFczQyBFZGl0
b3IncyBEcmFmdCAwOSBOb3ZlbWJlciAyMDE2CiAgICAgLy8gY3JlYXRlU2Vzc2lvbigpLCBjdGQu
Ci0KLSAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAic2Vzc2lvblR5cGUoIiwgc2Vzc2lvblR5
cGUsICIpLCB1c2VEaXN0aW5jdGl2ZUlkZW50aWZpZXIoIiwgdXNlRGlzdGluY3RpdmVJZGVudGlm
aWVyLCAiKSIpOworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgInNlc3Npb25UeXBlKCIs
IHNlc3Npb25UeXBlLCAiKSwgdXNlRGlzdGluY3RpdmVJZGVudGlmaWVyKCIsIHVzZURpc3RpbmN0
aXZlSWRlbnRpZmllciwgIikiKTsKIAogICAgIC8vIDMuMS4gTGV0IHRoZSBzZXNzaW9uSWQgYXR0
cmlidXRlIGJlIHRoZSBlbXB0eSBzdHJpbmcuCiAgICAgLy8gMy4yLiBMZXQgdGhlIGV4cGlyYXRp
b24gYXR0cmlidXRlIGJlIE5hTi4KQEAgLTEwNCw3ICsxMDUsNyBAQCBNZWRpYUtleVNlc3Npb246
Ok1lZGlhS2V5U2Vzc2lvbihEb2N1bWVudCYgZG9jdW1lbnQsIFdlYWtQdHI8TWVkaWFLZXlzPiYm
IGtleXMsCiAgICAgVU5VU0VEX1BBUkFNKG1fdW5pbml0aWFsaXplZCk7CiAKICNpZiAhUkVMRUFT
RV9MT0dfRElTQUJMRUQKLSAgICBtX2luc3RhbmNlU2Vzc2lvbi0+c2V0TG9nZ2VyKG1fbG9nZ2Vy
LCBtX2xvZ0lkZW50aWZpZXIpOworICAgIG1faW5zdGFuY2VTZXNzaW9uLT5zZXRMb2dJZGVudGlm
aWVyKG1fbG9nSWRlbnRpZmllcik7CiAjZW5kaWYKICAgICBtX2luc3RhbmNlU2Vzc2lvbi0+c2V0
Q2xpZW50KCp0aGlzKTsKIApAQCAtMTQxLDEwICsxNDIsMTAgQEAgdm9pZCBNZWRpYUtleVNlc3Np
b246OmdlbmVyYXRlUmVxdWVzdChjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0
IEJ1ZmYKICAgICAvLyAxLiBJZiB0aGlzIG9iamVjdCBpcyBjbG9zZWQsIHJldHVybiBhIHByb21p
c2UgcmVqZWN0ZWQgd2l0aCBhbiBJbnZhbGlkU3RhdGVFcnJvci4KICAgICAvLyAyLiBJZiB0aGlz
IG9iamVjdCdzIHVuaW5pdGlhbGl6ZWQgdmFsdWUgaXMgZmFsc2UsIHJldHVybiBhIHByb21pc2Ug
cmVqZWN0ZWQgd2l0aCBhbiBJbnZhbGlkU3RhdGVFcnJvci4KICAgICBhdXRvIGlkZW50aWZpZXIg
PSBMT0dJREVOVElGSUVSOwotICAgIElORk9fTE9HKGlkZW50aWZpZXIsICJpbml0RGF0YVR5cGUo
IiwgaW5pdERhdGFUeXBlLCAiKSwgaW5pdERhdGEubGVuZ3RoKCIsIGluaXREYXRhLmxlbmd0aCgp
LCAiKSIpOworICAgIEFMV0FZU19MT0coaWRlbnRpZmllciwgImluaXREYXRhVHlwZSgiLCBpbml0
RGF0YVR5cGUsICIpLCBpbml0RGF0YS5sZW5ndGgoIiwgaW5pdERhdGEubGVuZ3RoKCksICIpIik7
CiAKICAgICBpZiAobV9jbG9zZWQgfHwgIW1fdW5pbml0aWFsaXplZCkgewotICAgICAgICBJTkZP
X0xPRyhpZGVudGlmaWVyLCAiUmVqZWN0ZWQ6IGNsb3NlZCgiLCBtX2Nsb3NlZCwgIikgb3IgIXVu
aW5pdGlhbGl6ZWQoIiwgIW1fdW5pbml0aWFsaXplZCwgIikiKTsKKyAgICAgICAgRVJST1JfTE9H
KGlkZW50aWZpZXIsICJSZWplY3RlZDogY2xvc2VkKCIsIG1fY2xvc2VkLCAiKSBvciAhdW5pbml0
aWFsaXplZCgiLCAhbV91bmluaXRpYWxpemVkLCAiKSIpOwogICAgICAgICBwcm9taXNlLT5yZWpl
Y3QoSW52YWxpZFN0YXRlRXJyb3IpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTU1LDcg
KzE1Niw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjpnZW5lcmF0ZVJlcXVlc3QoY29uc3QgQXRv
bVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBCdWZmCiAgICAgLy8gNC4gSWYgaW5pdERhdGFU
eXBlIGlzIHRoZSBlbXB0eSBzdHJpbmcsIHJldHVybiBhIHByb21pc2UgcmVqZWN0ZWQgd2l0aCBh
IG5ld2x5IGNyZWF0ZWQgVHlwZUVycm9yLgogICAgIC8vIDUuIElmIGluaXREYXRhIGlzIGFuIGVt
cHR5IGFycmF5LCByZXR1cm4gYSBwcm9taXNlIHJlamVjdGVkIHdpdGggYSBuZXdseSBjcmVhdGVk
IFR5cGVFcnJvci4KICAgICBpZiAoaW5pdERhdGFUeXBlLmlzRW1wdHkoKSB8fCAhaW5pdERhdGEu
bGVuZ3RoKCkpIHsKLSAgICAgICAgSU5GT19MT0coaWRlbnRpZmllciwgIlJlamVjdGVkOiBpbml0
RGF0YVR5cGUgZW1wdHkoIiwgaW5pdERhdGFUeXBlLmlzRW1wdHkoKSwgIikgb3IgaW5pdERhdGEg
ZW1wdHkoIiwgIWluaXREYXRhLmxlbmd0aCgpLCAiKSIpOworICAgICAgICBFUlJPUl9MT0coaWRl
bnRpZmllciwgIlJlamVjdGVkOiBpbml0RGF0YVR5cGUgZW1wdHkoIiwgaW5pdERhdGFUeXBlLmlz
RW1wdHkoKSwgIikgb3IgaW5pdERhdGEgZW1wdHkoIiwgIWluaXREYXRhLmxlbmd0aCgpLCAiKSIp
OwogICAgICAgICBwcm9taXNlLT5yZWplY3QoVHlwZUVycm9yKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KQEAgLTE2NCw3ICsxNjUsNyBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6Z2VuZXJhdGVS
ZXF1ZXN0KGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgQnVmZgogICAgIC8v
ICAgIGluaXREYXRhVHlwZSBhcyBhbiBJbml0aWFsaXphdGlvbiBEYXRhIFR5cGUsIHJldHVybiBh
IHByb21pc2UgcmVqZWN0ZWQgd2l0aCBhIE5vdFN1cHBvcnRlZEVycm9yLiBTdHJpbmcKICAgICAv
LyAgICBjb21wYXJpc29uIGlzIGNhc2Utc2Vuc2l0aXZlLgogICAgIGlmICghbV9pbXBsZW1lbnRh
dGlvbi0+c3VwcG9ydHNJbml0RGF0YVR5cGUoaW5pdERhdGFUeXBlKSkgewotICAgICAgICBJTkZP
X0xPRyhpZGVudGlmaWVyLCAiUmVqZWN0ZWQ6IGluaXREYXRhVHlwZSgiLCBpbml0RGF0YVR5cGUs
ICIpIHVuc3VwcG9ydGVkIik7CisgICAgICAgIEVSUk9SX0xPRyhpZGVudGlmaWVyLCAiUmVqZWN0
ZWQ6IGluaXREYXRhVHlwZSgiLCBpbml0RGF0YVR5cGUsICIpIHVuc3VwcG9ydGVkIik7CiAgICAg
ICAgIHByb21pc2UtPnJlamVjdChOb3RTdXBwb3J0ZWRFcnJvcik7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CkBAIC0xODAsMTQgKzE4MSwxNCBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6Z2VuZXJh
dGVSZXF1ZXN0KGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgQnVmZgogCiAg
ICAgICAgIC8vIDEwLjMuIElmIHRoZSBwcmVjZWRpbmcgc3RlcCBmYWlsZWQsIHJlamVjdCBwcm9t
aXNlIHdpdGggYSBuZXdseSBjcmVhdGVkIFR5cGVFcnJvci4KICAgICAgICAgaWYgKCFzYW5pdGl6
ZWRJbml0RGF0YSkgewotICAgICAgICAgICAgSU5GT19MT0coaWRlbnRpZmllciwgIjo6dGFzaygp
IFJlamVjdGVkOiBjYW5ub3Qgc2FuaXRpemUgaW5pdCBkYXRhIik7CisgICAgICAgICAgICBFUlJP
Ul9MT0coaWRlbnRpZmllciwgIjo6dGFzaygpIFJlamVjdGVkOiBjYW5ub3Qgc2FuaXRpemUgaW5p
dCBkYXRhIik7CiAgICAgICAgICAgICBwcm9taXNlLT5yZWplY3QoVHlwZUVycm9yKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIC8vIDEwLjQuIElmIHNhbml0aXpl
ZCBpbml0IGRhdGEgaXMgZW1wdHksIHJlamVjdCBwcm9taXNlIHdpdGggYSBOb3RTdXBwb3J0ZWRF
cnJvci4KICAgICAgICAgaWYgKHNhbml0aXplZEluaXREYXRhLT5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgICAgIElORk9fTE9HKGlkZW50aWZpZXIsICI6OnRhc2soKSBSZWplY3RlZDogZW1wdHkgc2Fu
aXRpemVkIGluaXQgZGF0YSIpOworICAgICAgICAgICAgRVJST1JfTE9HKGlkZW50aWZpZXIsICI6
OnRhc2soKSBSZWplY3RlZDogZW1wdHkgc2FuaXRpemVkIGluaXQgZGF0YSIpOwogICAgICAgICAg
ICAgcHJvbWlzZS0+cmVqZWN0KE5vdFN1cHBvcnRlZEVycm9yKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQpAQCAtMTk5LDcgKzIwMCw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjpn
ZW5lcmF0ZVJlcXVlc3QoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBCdWZm
CiAgICAgICAgIC8vIDEwLjkuIFVzZSB0aGUgY2RtIHRvIGV4ZWN1dGUgdGhlIGZvbGxvd2luZyBz
dGVwczoKICAgICAgICAgLy8gMTAuOS4xLiBJZiB0aGUgc2FuaXRpemVkIGluaXQgZGF0YSBpcyBu
b3Qgc3VwcG9ydGVkIGJ5IHRoZSBjZG0sIHJlamVjdCBwcm9taXNlIHdpdGggYSBOb3RTdXBwb3J0
ZWRFcnJvci4KICAgICAgICAgaWYgKCFtX2ltcGxlbWVudGF0aW9uLT5zdXBwb3J0c0luaXREYXRh
KGluaXREYXRhVHlwZSwgKnNhbml0aXplZEluaXREYXRhKSkgewotICAgICAgICAgICAgSU5GT19M
T0coaWRlbnRpZmllciwgIjo6dGFzaygpIFJlamVjdGVkOiB1bnN1cHBvcnRlZCBpbml0RGF0YVR5
cGUgKCIsIGluaXREYXRhVHlwZSwgIikgb3Igc2FuaXRpemVkIGluaXREYXRhIik7CisgICAgICAg
ICAgICBFUlJPUl9MT0coaWRlbnRpZmllciwgIjo6dGFzaygpIFJlamVjdGVkOiB1bnN1cHBvcnRl
ZCBpbml0RGF0YVR5cGUgKCIsIGluaXREYXRhVHlwZSwgIikgb3Igc2FuaXRpemVkIGluaXREYXRh
Iik7CiAgICAgICAgICAgICBwcm9taXNlLT5yZWplY3QoTm90U3VwcG9ydGVkRXJyb3IpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0yNDcsNyArMjQ4LDcgQEAgdm9pZCBNZWRp
YUtleVNlc3Npb246OmdlbmVyYXRlUmVxdWVzdChjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5
cGUsIGNvbnN0IEJ1ZmYKICAgICAgICAgICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgq
dGhpcywgVGFza1NvdXJjZTo6TmV0d29ya2luZywgW3RoaXMsIHByb21pc2UgPSBXVEZNb3ZlKHBy
b21pc2UpLCBtZXNzYWdlID0gV1RGTW92ZShtZXNzYWdlKSwgbWVzc2FnZVR5cGUsIHNlc3Npb25J
ZCwgc3VjY2VlZGVkLCBpZGVudGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVyKV0gKCkgbXV0YWJs
ZSB7CiAgICAgICAgICAgICAgICAgLy8gMTAuMTAuMS4gSWYgYW55IG9mIHRoZSBwcmVjZWRpbmcg
c3RlcHMgZmFpbGVkLCByZWplY3QgcHJvbWlzZSB3aXRoIGEgbmV3IERPTUV4Y2VwdGlvbiB3aG9z
ZSBuYW1lIGlzIHRoZSBhcHByb3ByaWF0ZSBlcnJvciBuYW1lLgogICAgICAgICAgICAgICAgIGlm
IChzdWNjZWVkZWQgPT0gQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFsdWU6OkZhaWxlZCkg
ewotICAgICAgICAgICAgICAgICAgICBJTkZPX0xPRyhpZGVudGlmaWVyLCAiOjp0YXNrKCkgUmVq
ZWN0ZWQ6IGZhaWxlZCB0byByZXF1ZXN0IGxpY2Vuc2UiKTsKKyAgICAgICAgICAgICAgICAgICAg
RVJST1JfTE9HKGlkZW50aWZpZXIsICI6OnRhc2soKSBSZWplY3RlZDogZmFpbGVkIHRvIHJlcXVl
c3QgbGljZW5zZSIpOwogICAgICAgICAgICAgICAgICAgICBwcm9taXNlLT5yZWplY3QoTm90U3Vw
cG9ydGVkRXJyb3IpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAg
ICAgfQpAQCAtMjYxLDcgKzI2Miw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjpnZW5lcmF0ZVJl
cXVlc3QoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBCdWZmCiAgICAgICAg
ICAgICAgICAgZW5xdWV1ZU1lc3NhZ2UobWVzc2FnZVR5cGUsIG1lc3NhZ2UpOwogCiAgICAgICAg
ICAgICAgICAgLy8gMTAuOS4zLiBSZXNvbHZlIHByb21pc2UuCi0gICAgICAgICAgICAgICAgSU5G
T19MT0coaWRlbnRpZmllciwgIjo6dGFzaygpIFJlc29sdmVkIik7CisgICAgICAgICAgICAgICAg
QUxXQVlTX0xPRyhpZGVudGlmaWVyLCAiOjp0YXNrKCkgUmVzb2x2ZWQiKTsKICAgICAgICAgICAg
ICAgICBwcm9taXNlLT5yZXNvbHZlKCk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSk7CkBA
IC0yNzYsMTIgKzI3NywxMiBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6bG9hZChjb25zdCBTdHJp
bmcmIHNlc3Npb25JZCwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taQogICAgIC8vIFczQyBF
ZGl0b3IncyBEcmFmdCAwOSBOb3ZlbWJlciAyMDE2CiAKICAgICBhdXRvIGlkZW50aWZpZXIgPSBM
T0dJREVOVElGSUVSOwotICAgIElORk9fTE9HKGlkZW50aWZpZXIsICJzZXNzaW9uSWQoIiwgc2Vz
c2lvbklkLCAiKSIpOworICAgIEFMV0FZU19MT0coaWRlbnRpZmllciwgInNlc3Npb25JZCgiLCBz
ZXNzaW9uSWQsICIpIik7CiAKICAgICAvLyAxLiBJZiB0aGlzIG9iamVjdCBpcyBjbG9zZWQsIHJl
dHVybiBhIHByb21pc2UgcmVqZWN0ZWQgd2l0aCBhbiBJbnZhbGlkU3RhdGVFcnJvci4KICAgICAv
LyAyLiBJZiB0aGlzIG9iamVjdCdzIHVuaW5pdGlhbGl6ZWQgdmFsdWUgaXMgZmFsc2UsIHJldHVy
biBhIHByb21pc2UgcmVqZWN0ZWQgd2l0aCBhbiBJbnZhbGlkU3RhdGVFcnJvci4KICAgICBpZiAo
bV9jbG9zZWQgfHwgIW1fdW5pbml0aWFsaXplZCkgewotICAgICAgICBJTkZPX0xPRyhpZGVudGlm
aWVyLCAiUmVqZWN0ZWQ6IGNsb3NlZCgiLCBtX2Nsb3NlZCwgIikgb3IgIXVuaW5pdGlhbGl6ZWQo
IiwgIW1fdW5pbml0aWFsaXplZCwgIikiKTsKKyAgICAgICAgRVJST1JfTE9HKGlkZW50aWZpZXIs
ICJSZWplY3RlZDogY2xvc2VkKCIsIG1fY2xvc2VkLCAiKSBvciAhdW5pbml0aWFsaXplZCgiLCAh
bV91bmluaXRpYWxpemVkLCAiKSIpOwogICAgICAgICBwcm9taXNlLT5yZWplY3QoSW52YWxpZFN0
YXRlRXJyb3IpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjkyLDcgKzI5Myw3IEBAIHZv
aWQgTWVkaWFLZXlTZXNzaW9uOjpsb2FkKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBSZWY8RGVm
ZXJyZWRQcm9taXNlPiYmIHByb21pCiAgICAgLy8gNC4gSWYgc2Vzc2lvbklkIGlzIHRoZSBlbXB0
eSBzdHJpbmcsIHJldHVybiBhIHByb21pc2UgcmVqZWN0ZWQgd2l0aCBhIG5ld2x5IGNyZWF0ZWQg
VHlwZUVycm9yLgogICAgIC8vIDUuIElmIHRoZSByZXN1bHQgb2YgcnVubmluZyB0aGUgSXMgcGVy
c2lzdGVudCBzZXNzaW9uIHR5cGU/IGFsZ29yaXRobSBvbiB0aGlzIG9iamVjdCdzIHNlc3Npb24g
dHlwZSBpcyBmYWxzZSwgcmV0dXJuIGEgcHJvbWlzZSByZWplY3RlZCB3aXRoIGEgbmV3bHkgY3Jl
YXRlZCBUeXBlRXJyb3IuCiAgICAgaWYgKHNlc3Npb25JZC5pc0VtcHR5KCkgfHwgbV9zZXNzaW9u
VHlwZSA9PSBNZWRpYUtleVNlc3Npb25UeXBlOjpUZW1wb3JhcnkpIHsKLSAgICAgICAgSU5GT19M
T0coaWRlbnRpZmllciwgIlJlamVjdGVkOiBzZXNzaW9uSUQgZW1wdHkoIiwgc2Vzc2lvbklkLmlz
RW1wdHkoKSwgIikgb3Igc2Vzc2lvblR5cGUgPT0gVGVtcG9yYXJ5ICgiLCBtX3Nlc3Npb25UeXBl
ID09IE1lZGlhS2V5U2Vzc2lvblR5cGU6OlRlbXBvcmFyeSwgIikiKTsKKyAgICAgICAgRVJST1Jf
TE9HKGlkZW50aWZpZXIsICJSZWplY3RlZDogc2Vzc2lvbklEIGVtcHR5KCIsIHNlc3Npb25JZC5p
c0VtcHR5KCksICIpIG9yIHNlc3Npb25UeXBlID09IFRlbXBvcmFyeSAoIiwgbV9zZXNzaW9uVHlw
ZSA9PSBNZWRpYUtleVNlc3Npb25UeXBlOjpUZW1wb3JhcnksICIpIik7CiAgICAgICAgIHByb21p
c2UtPnJlamVjdChUeXBlRXJyb3IpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMzA3LDcg
KzMwOCw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjpsb2FkKGNvbnN0IFN0cmluZyYgc2Vzc2lv
bklkLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pCiAgICAgICAgIC8vIDguMi4gSWYgdGhl
IHByZWNlZGluZyBzdGVwIGZhaWxlZCwgb3IgaWYgc2FuaXRpemVkIHNlc3Npb24gSUQgaXMgZW1w
dHksIHJlamVjdCBwcm9taXNlIHdpdGggYSBuZXdseSBjcmVhdGVkIFR5cGVFcnJvci4KICAgICAg
ICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHNhbml0aXplZFNlc3Npb25JZCA9IG1faW1wbGVtZW50
YXRpb24tPnNhbml0aXplU2Vzc2lvbklkKHNlc3Npb25JZCk7CiAgICAgICAgIGlmICghc2FuaXRp
emVkU2Vzc2lvbklkIHx8IHNhbml0aXplZFNlc3Npb25JZC0+aXNFbXB0eSgpKSB7Ci0gICAgICAg
ICAgICBJTkZPX0xPRyhpZGVudGlmaWVyLCAiUmVqZWN0ZWQ6IHNhbml0aXplZFNTZXNzaW9uSUQg
ZW1wdHkiKTsKKyAgICAgICAgICAgIEVSUk9SX0xPRyhpZGVudGlmaWVyLCAiUmVqZWN0ZWQ6IHNh
bml0aXplZFNTZXNzaW9uSUQgZW1wdHkiKTsKICAgICAgICAgICAgIHByb21pc2UtPnJlamVjdChU
eXBlRXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0zMzksMTUgKzM0
MCwxNSBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6bG9hZChjb25zdCBTdHJpbmcmIHNlc3Npb25J
ZCwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taQogICAgICAgICAgICAgaWYgKHN1Y2NlZWRl
ZCA9PSBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZTo6RmFpbGVkKSB7CiAgICAgICAg
ICAgICAgICAgc3dpdGNoIChmYWlsdXJlKSB7CiAgICAgICAgICAgICAgICAgY2FzZSBDRE1JbnN0
YW5jZVNlc3Npb246OlNlc3Npb25Mb2FkRmFpbHVyZTo6Tm9TZXNzaW9uRGF0YToKLSAgICAgICAg
ICAgICAgICAgICAgSU5GT19MT0coaWRlbnRpZmllciwgIjo6dGFzaygpIFJlc29sdmVkOiBOb1Nl
c3Npb25EYXRhIik7CisgICAgICAgICAgICAgICAgICAgIEFMV0FZU19MT0coaWRlbnRpZmllciwg
Ijo6dGFzaygpIFJlc29sdmVkOiBOb1Nlc3Npb25EYXRhIik7CiAgICAgICAgICAgICAgICAgICAg
IHByb21pc2UtPnJlc29sdmU8SURMQm9vbGVhbj4oZmFsc2UpOwogICAgICAgICAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgICAgICAgICAgY2FzZSBDRE1JbnN0YW5jZVNlc3Npb246OlNlc3Np
b25Mb2FkRmFpbHVyZTo6TWlzbWF0Y2hlZFNlc3Npb25UeXBlOgotICAgICAgICAgICAgICAgICAg
ICBJTkZPX0xPRyhpZGVudGlmaWVyLCAiOjp0YXNrKCkgUmVqZWN0ZWQ6IE1pc21hdGNoZWRTZXNz
aW9uVHlwZSIpOworICAgICAgICAgICAgICAgICAgICBFUlJPUl9MT0coaWRlbnRpZmllciwgIjo6
dGFzaygpIFJlamVjdGVkOiBNaXNtYXRjaGVkU2Vzc2lvblR5cGUiKTsKICAgICAgICAgICAgICAg
ICAgICAgcHJvbWlzZS0+cmVqZWN0KFR5cGVFcnJvcik7CiAgICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgICAgICAgICBjYXNlIENETUluc3RhbmNlU2Vzc2lvbjo6U2Vzc2lvbkxv
YWRGYWlsdXJlOjpRdW90YUV4Y2VlZGVkOgotICAgICAgICAgICAgICAgICAgICBJTkZPX0xPRyhp
ZGVudGlmaWVyLCAiOjp0YXNrKCkgUmVqZWN0ZWQ6IFF1b3RhRXhjZWVkZWQiKTsKKyAgICAgICAg
ICAgICAgICAgICAgRVJST1JfTE9HKGlkZW50aWZpZXIsICI6OnRhc2soKSBSZWplY3RlZDogUXVv
dGFFeGNlZWRlZCIpOwogICAgICAgICAgICAgICAgICAgICBwcm9taXNlLT5yZWplY3QoUXVvdGFF
eGNlZWRlZEVycm9yKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAg
ICAgIGNhc2UgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTZXNzaW9uTG9hZEZhaWx1cmU6Ok5vbmU6CkBA
IC0zNjEsNyArMzYyLDcgQEAgdm9pZCBNZWRpYUtleVNlc3Npb246OmxvYWQoY29uc3QgU3RyaW5n
JiBzZXNzaW9uSWQsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWkKICAgICAgICAgICAgIHF1
ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6TmV0d29ya2luZywg
W3RoaXMsIGtub3duS2V5cyA9IFdURk1vdmUoa25vd25LZXlzKSwgZXhwaXJhdGlvbiA9IFdURk1v
dmUoZXhwaXJhdGlvbiksIG1lc3NhZ2UgPSBXVEZNb3ZlKG1lc3NhZ2UpLCBzYW5pdGl6ZWRTZXNz
aW9uSWQsIHN1Y2NlZWRlZCwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGlkZW50aWZpZXIg
PSBXVEZNb3ZlKGlkZW50aWZpZXIpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICAvLyA4
LjkuMS4gSWYgYW55IG9mIHRoZSBwcmVjZWRpbmcgc3RlcHMgZmFpbGVkLCByZWplY3QgcHJvbWlz
ZSB3aXRoIGEgdGhlIGFwcHJvcHJpYXRlIGVycm9yIG5hbWUuCiAgICAgICAgICAgICAgICAgaWYg
KHN1Y2NlZWRlZCA9PSBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZTo6RmFpbGVkKSB7
Ci0gICAgICAgICAgICAgICAgICAgIElORk9fTE9HKGlkZW50aWZpZXIsICI6OnRhc2soKSBSZWpl
Y3RlZDogT3RoZXIgZmFpbHVyZSIpOworICAgICAgICAgICAgICAgICAgICBFUlJPUl9MT0coaWRl
bnRpZmllciwgIjo6dGFzaygpIFJlamVjdGVkOiBPdGhlciBmYWlsdXJlIik7CiAgICAgICAgICAg
ICAgICAgICAgIHByb21pc2UtPnJlamVjdChOb3RTdXBwb3J0ZWRFcnJvcik7CiAgICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CkBAIC0zODQsNyArMzg1LDcgQEAg
dm9pZCBNZWRpYUtleVNlc3Npb246OmxvYWQoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIFJlZjxE
ZWZlcnJlZFByb21pc2U+JiYgcHJvbWkKICAgICAgICAgICAgICAgICAgICAgZW5xdWV1ZU1lc3Nh
Z2UobWVzc2FnZS0+Zmlyc3QsIFdURk1vdmUobWVzc2FnZS0+c2Vjb25kKSk7CiAKICAgICAgICAg
ICAgICAgICAvLyA4LjkuNy4gUmVzb2x2ZSBwcm9taXNlIHdpdGggdHJ1ZS4KLSAgICAgICAgICAg
ICAgICBJTkZPX0xPRyhpZGVudGlmaWVyLCAiOjp0YXNrKCkgUmVzb2x2ZWQiKTsKKyAgICAgICAg
ICAgICAgICBBTFdBWVNfTE9HKGlkZW50aWZpZXIsICI6OnRhc2soKSBSZXNvbHZlZCIpOwogICAg
ICAgICAgICAgICAgIHByb21pc2UtPnJlc29sdmU8SURMQm9vbGVhbj4odHJ1ZSk7CiAgICAgICAg
ICAgICB9KTsKICAgICAgICAgfSk7CkBAIC00MDIsMTcgKzQwMywxNyBAQCB2b2lkIE1lZGlhS2V5
U2Vzc2lvbjo6dXBkYXRlKGNvbnN0IEJ1ZmZlclNvdXJjZSYgcmVzcG9uc2UsIFJlZjxEZWZlcnJl
ZFByb21pc2U+JgogICAgIC8vIDEuIElmIHRoaXMgb2JqZWN0IGlzIGNsb3NlZCwgcmV0dXJuIGEg
cHJvbWlzZSByZWplY3RlZCB3aXRoIGFuIEludmFsaWRTdGF0ZUVycm9yLgogICAgIC8vIDIuIElm
IHRoaXMgb2JqZWN0J3MgY2FsbGFibGUgdmFsdWUgaXMgZmFsc2UsIHJldHVybiBhIHByb21pc2Ug
cmVqZWN0ZWQgd2l0aCBhbiBJbnZhbGlkU3RhdGVFcnJvci4KICAgICBhdXRvIGlkZW50aWZpZXIg
PSBMT0dJREVOVElGSUVSOwotICAgIElORk9fTE9HKGlkZW50aWZpZXIsICJyZXNwb25zZS5sZW5n
dGgoIiwgcmVzcG9uc2UubGVuZ3RoKCksICIpIik7CisgICAgQUxXQVlTX0xPRyhpZGVudGlmaWVy
LCAicmVzcG9uc2UubGVuZ3RoKCIsIHJlc3BvbnNlLmxlbmd0aCgpLCAiKSIpOwogCiAgICAgaWYg
KG1fY2xvc2VkIHx8ICFtX2NhbGxhYmxlKSB7Ci0gICAgICAgIElORk9fTE9HKGlkZW50aWZpZXIs
ICJSZWplY3RlZDogY2xvc2VkKCIsIG1fY2xvc2VkLCAiKSBvciAhY2FsbGFibGUoIiwgIW1fY2Fs
bGFibGUsICIpIik7CisgICAgICAgIEVSUk9SX0xPRyhpZGVudGlmaWVyLCAiUmVqZWN0ZWQ6IGNs
b3NlZCgiLCBtX2Nsb3NlZCwgIikgb3IgIWNhbGxhYmxlKCIsICFtX2NhbGxhYmxlLCAiKSIpOwog
ICAgICAgICBwcm9taXNlLT5yZWplY3QoSW52YWxpZFN0YXRlRXJyb3IpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCiAgICAgLy8gMy4gSWYgcmVzcG9uc2UgaXMgYW4gZW1wdHkgYXJyYXksIHJl
dHVybiBhIHByb21pc2UgcmVqZWN0ZWQgd2l0aCBhIG5ld2x5IGNyZWF0ZWQgVHlwZUVycm9yLgog
ICAgIGlmICghcmVzcG9uc2UubGVuZ3RoKCkpIHsKLSAgICAgICAgSU5GT19MT0coaWRlbnRpZmll
ciwgIlJlamVjdGVkOiBlbXB0eSByZXNwb25zZSIpOworICAgICAgICBFUlJPUl9MT0coaWRlbnRp
ZmllciwgIlJlamVjdGVkOiBlbXB0eSByZXNwb25zZSIpOwogICAgICAgICBwcm9taXNlLT5yZWpl
Y3QoVHlwZUVycm9yKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTQyNiw3ICs0MjcsNyBA
QCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6dXBkYXRlKGNvbnN0IEJ1ZmZlclNvdXJjZSYgcmVzcG9u
c2UsIFJlZjxEZWZlcnJlZFByb21pc2U+JgogCiAgICAgICAgIC8vIDYuMi4gSWYgdGhlIHByZWNl
ZGluZyBzdGVwIGZhaWxlZCwgb3IgaWYgc2FuaXRpemVkIHJlc3BvbnNlIGlzIGVtcHR5LCByZWpl
Y3QgcHJvbWlzZSB3aXRoIGEgbmV3bHkgY3JlYXRlZCBUeXBlRXJyb3IuCiAgICAgICAgIGlmICgh
c2FuaXRpemVkUmVzcG9uc2UgfHwgc2FuaXRpemVkUmVzcG9uc2UtPmlzRW1wdHkoKSkgewotICAg
ICAgICAgICAgSU5GT19MT0coaWRlbnRpZmllciwgIjo6dGFzayAtIFJlamVjdGVkOiBlbXB0eSBz
YW5pdGl6ZWQgcmVzcG9uc2UiKTsKKyAgICAgICAgICAgIEVSUk9SX0xPRyhpZGVudGlmaWVyLCAi
Ojp0YXNrIC0gUmVqZWN0ZWQ6IGVtcHR5IHNhbml0aXplZCByZXNwb25zZSIpOwogICAgICAgICAg
ICAgcHJvbWlzZS0+cmVqZWN0KFR5cGVFcnJvcik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KQEAgLTQ2Myw3ICs0NjQsNyBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6dXBkYXRlKGNv
bnN0IEJ1ZmZlclNvdXJjZSYgcmVzcG9uc2UsIFJlZjxEZWZlcnJlZFByb21pc2U+JgogICAgICAg
ICAgICAgLy8gTk9URTogU3RlcHMgNi43LjEuIGFuZCA2LjcuMi4gc2hvdWxkIGJlIGltcGxlbWVu
dGVkIGluIENETUluc3RhbmNlLgogCiAgICAgICAgICAgICBpZiAoc3VjY2VlZGVkID09IENETUlu
c3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlOjpGYWlsZWQpIHsKLSAgICAgICAgICAgICAgICBJ
TkZPX0xPRyhpZGVudGlmaWVyLCAiOjp0YXNrKCkgUmVqZWN0ZWQiKTsKKyAgICAgICAgICAgICAg
ICBFUlJPUl9MT0coaWRlbnRpZmllciwgIjo6dGFzaygpIFJlamVjdGVkOiBGYWlsZWQiKTsKICAg
ICAgICAgICAgICAgICBwcm9taXNlLT5yZWplY3QoVHlwZUVycm9yKTsKICAgICAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgICAgICB9CkBAIC01MTgsNyArNTE5LDcgQEAgdm9pZCBNZWRpYUtl
eVNlc3Npb246OnVwZGF0ZShjb25zdCBCdWZmZXJTb3VyY2UmIHJlc3BvbnNlLCBSZWY8RGVmZXJy
ZWRQcm9taXNlPiYKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICAvLyA2Ljgu
Mi4gUmVzb2x2ZSBwcm9taXNlLgotICAgICAgICAgICAgICAgIElORk9fTE9HKGlkZW50aWZpZXIs
ICI6OnRhc2soKSBSZXNvbHZlZCIpOworICAgICAgICAgICAgICAgIEFMV0FZU19MT0coaWRlbnRp
ZmllciwgIjo6dGFzaygpIFJlc29sdmVkIik7CiAgICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVz
b2x2ZSgpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwpAQCAtNTMzLDIxICs1MzQsMjAg
QEAgdm9pZCBNZWRpYUtleVNlc3Npb246OmNsb3NlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJv
bWlzZSkKICAgICAvLyBXM0MgRWRpdG9yJ3MgRHJhZnQgMDkgTm92ZW1iZXIgMjAxNgogCiAgICAg
YXV0byBpZGVudGlmaWVyID0gTE9HSURFTlRJRklFUjsKLSAgICBJTkZPX0xPRyhpZGVudGlmaWVy
KTsKIAogICAgIC8vIDEuIExldCBzZXNzaW9uIGJlIHRoZSBhc3NvY2lhdGVkIE1lZGlhS2V5U2Vz
c2lvbiBvYmplY3QuCiAgICAgLy8gMi4gSWYgc2Vzc2lvbiBpcyBjbG9zZWQsIHJldHVybiBhIHJl
c29sdmVkIHByb21pc2UuCi0gICAgTE9HKEVNRSwgIkVNRSAtIGNsb3Npbmcgc2Vzc2lvbiAlcyIs
IG1fc2Vzc2lvbklkLnV0ZjgoKS5kYXRhKCkpOworICAgIEFMV0FZU19MT0coaWRlbnRpZmllciwg
IkVNRSAtIGNsb3Npbmcgc2Vzc2lvbiAiLCBtX3Nlc3Npb25JZC51dGY4KCkuZGF0YSgpKTsKIAog
ICAgIGlmIChtX2Nsb3NlZCkgewotICAgICAgICBJTkZPX0xPRyhpZGVudGlmaWVyLCAiUmVzb2x2
ZWQ6IGFscmVhZHkgY2xvc2VkIik7CisgICAgICAgIEFMV0FZU19MT0coaWRlbnRpZmllciwgIlJl
c29sdmVkOiBhbHJlYWR5IGNsb3NlZCIpOwogICAgICAgICBwcm9taXNlLT5yZXNvbHZlKCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICAvLyAzLiBJZiBzZXNzaW9uJ3MgY2FsbGFibGUg
dmFsdWUgaXMgZmFsc2UsIHJldHVybiBhIHByb21pc2UgcmVqZWN0ZWQgd2l0aCBhbiBJbnZhbGlk
U3RhdGVFcnJvci4KICAgICBpZiAoIW1fY2FsbGFibGUpIHsKLSAgICAgICAgSU5GT19MT0coaWRl
bnRpZmllciwgIlJlamVjdGVkOiAhY2FsbGFibGUiKTsKKyAgICAgICAgRVJST1JfTE9HKGlkZW50
aWZpZXIsICJSZWplY3RlZDogIWNhbGxhYmxlIik7CiAgICAgICAgIHByb21pc2UtPnJlamVjdChJ
bnZhbGlkU3RhdGVFcnJvcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC01NjcsNyArNTY3
LDcgQEAgdm9pZCBNZWRpYUtleVNlc3Npb246OmNsb3NlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYg
cHJvbWlzZSkKICAgICAgICAgICAgICAgICBzZXNzaW9uQ2xvc2VkKCk7CiAKICAgICAgICAgICAg
ICAgICAvLyA1LjMuMi4gUmVzb2x2ZSBwcm9taXNlLgotICAgICAgICAgICAgICAgIElORk9fTE9H
KGlkZW50aWZpZXIsICI6OnRhc2soKSBSZXNvbHZlZCIpOworICAgICAgICAgICAgICAgIEFMV0FZ
U19MT0coaWRlbnRpZmllciwgIjo6dGFzaygpIFJlc29sdmVkIik7CiAgICAgICAgICAgICAgICAg
cHJvbWlzZS0+cmVzb2x2ZSgpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwpAQCAtNTg1
LDEwICs1ODUsMTAgQEAgdm9pZCBNZWRpYUtleVNlc3Npb246OnJlbW92ZShSZWY8RGVmZXJyZWRQ
cm9taXNlPiYmIHByb21pc2UpCiAgICAgLy8gMi4gSWYgdGhpcyBvYmplY3QncyBjYWxsYWJsZSB2
YWx1ZSBpcyBmYWxzZSwgcmV0dXJuIGEgcHJvbWlzZSByZWplY3RlZCB3aXRoIGFuIEludmFsaWRT
dGF0ZUVycm9yLgogCiAgICAgYXV0byBpZGVudGlmaWVyID0gTE9HSURFTlRJRklFUjsKLSAgICBJ
TkZPX0xPRyhpZGVudGlmaWVyKTsKKyAgICBBTFdBWVNfTE9HKGlkZW50aWZpZXIpOwogCiAgICAg
aWYgKG1fY2xvc2VkIHx8ICFtX2NhbGxhYmxlKSB7Ci0gICAgICAgIElORk9fTE9HKGlkZW50aWZp
ZXIsICJSZWplY3RlZDogY2xvc2VkKCIsIG1fY2xvc2VkLCAiKSBvciAhY2FsbGFibGUoIiwgIW1f
Y2FsbGFibGUsICIpIik7CisgICAgICAgIEVSUk9SX0xPRyhpZGVudGlmaWVyLCAiUmVqZWN0ZWQ6
IGNsb3NlZCgiLCBtX2Nsb3NlZCwgIikgb3IgIWNhbGxhYmxlKCIsICFtX2NhbGxhYmxlLCAiKSIp
OwogICAgICAgICBwcm9taXNlLT5yZWplY3QoSW52YWxpZFN0YXRlRXJyb3IpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQpAQCAtNjI5LDcgKzYyOSw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjpy
ZW1vdmUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogCiAgICAgICAgICAgICAgICAg
Ly8gNC41LjMuIElmIGFueSBvZiB0aGUgcHJlY2VkaW5nIHN0ZXBzIGZhaWxlZCwgcmVqZWN0IHBy
b21pc2Ugd2l0aCBhIG5ldyBET01FeGNlcHRpb24gd2hvc2UgbmFtZSBpcyB0aGUgYXBwcm9wcmlh
dGUgZXJyb3IgbmFtZS4KICAgICAgICAgICAgICAgICBpZiAoc3VjY2VlZGVkID09IENETUluc3Rh
bmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlOjpGYWlsZWQpIHsKLSAgICAgICAgICAgICAgICAgICAg
SU5GT19MT0coaWRlbnRpZmllciwgIlJlamVjdGVkOiBmYWlsZWQiKTsKKyAgICAgICAgICAgICAg
ICAgICAgRVJST1JfTE9HKGlkZW50aWZpZXIsICJSZWplY3RlZDogZmFpbGVkIik7CiAgICAgICAg
ICAgICAgICAgICAgIHByb21pc2UtPnJlamVjdChOb3RTdXBwb3J0ZWRFcnJvcik7CiAgICAgICAg
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CkBAIC02NDAsNyArNjQwLDcg
QEAgdm9pZCBNZWRpYUtleVNlc3Npb246OnJlbW92ZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHBy
b21pc2UpCiAgICAgICAgICAgICAgICAgICAgIGVucXVldWVNZXNzYWdlKE1lZGlhS2V5TWVzc2Fn
ZVR5cGU6OkxpY2Vuc2VSZWxlYXNlLCAqbWVzc2FnZSk7CiAKICAgICAgICAgICAgICAgICAvLyA0
LjUuNi4gUmVzb2x2ZSBwcm9taXNlLgotICAgICAgICAgICAgICAgIElORk9fTE9HKGlkZW50aWZp
ZXIsICJSZXNvbHZlZCIpOworICAgICAgICAgICAgICAgIEFMV0FZU19MT0coaWRlbnRpZmllciwg
IlJlc29sdmVkIik7CiAgICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZSgpOwogICAgICAg
ICAgICAgfSk7CiAgICAgICAgIH0pOwpAQCAtNzAwLDEwICs3MDAsMzAgQEAgdm9pZCBNZWRpYUtl
eVNlc3Npb246OnVwZGF0ZUtleVN0YXR1c2VzKENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVz
VmVjdG9yJiYgaW4KICAgICAgICAgcmV0dXJuIE1lZGlhS2V5U3RhdHVzOjpJbnRlcm5hbEVycm9y
OwogICAgIH07CiAKLSAgICBtX3N0YXR1c2VzID0gV1RGOjptYXAoV1RGTW92ZShpbnB1dFN0YXR1
c2VzKSwgW10oYXV0byYmIHN0YXR1cykgewotICAgICAgICByZXR1cm4gc3RkOjpwYWlyIHsgV1RG
TW92ZShzdGF0dXMuZmlyc3QpLCB0b01lZGlhS2V5U3RhdHVzKHN0YXR1cy5zZWNvbmQpIH07Cisj
aWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgSGFzaENvdW50ZWRTZXQ8TWVkaWFLZXlTdGF0
dXMsIEludEhhc2g8TWVkaWFLZXlTdGF0dXM+LCBXVEY6OlN0cm9uZ0VudW1IYXNoVHJhaXRzPE1l
ZGlhS2V5U3RhdHVzPj4gc3RhdHVzQ291bnRzOworI2VuZGlmCisKKyAgICBtX3N0YXR1c2VzID0g
V1RGOjptYXAoV1RGTW92ZShpbnB1dFN0YXR1c2VzKSwgWyZdKGF1dG8mJiBpbnB1dFN0YXR1cykg
eworICAgICAgICBhdXRvIHN0YXR1cyA9IHN0ZDo6cGFpciB7IFdURk1vdmUoaW5wdXRTdGF0dXMu
Zmlyc3QpLCB0b01lZGlhS2V5U3RhdHVzKGlucHV0U3RhdHVzLnNlY29uZCkgfTsKKyNpZiAhUkVM
RUFTRV9MT0dfRElTQUJMRUQKKyAgICAgICAgc3RhdHVzQ291bnRzLmFkZChzdGF0dXMuc2Vjb25k
KTsKKyNlbmRpZgorICAgICAgICByZXR1cm4gc3RhdHVzOwogICAgIH0pOwogCisjaWYgIVJFTEVB
U0VfTE9HX0RJU0FCTEVECisgICAgU3RyaW5nQnVpbGRlciBzdGF0dXNTdHJpbmc7CisgICAgZm9y
IChhdXRvJiBzdGF0dXNDb3VudCA6IHN0YXR1c0NvdW50cykgeworICAgICAgICBpZiAoIXN0YXR1
c0NvdW50LnZhbHVlKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmICghc3RhdHVz
U3RyaW5nLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHN0YXR1c1N0cmluZy5hcHBlbmQoIiwgIik7
CisgICAgICAgIHN0YXR1c1N0cmluZy5hcHBlbmQobWFrZVN0cmluZyhjb252ZXJ0RW51bWVyYXRp
b25Ub1N0cmluZyhzdGF0dXNDb3VudC5rZXkpLCAiOiAiLCBzdGF0dXNDb3VudC52YWx1ZSkpOwor
ICAgIH0KKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJzdGF0dXNlczogeyIsIHN0YXR1
c1N0cmluZy50b1N0cmluZygpLCAifSIpOworI2VuZGlmCisKICAgICAvLyA1LiBRdWV1ZSBhIHRh
c2sgdG8gZmlyZSBhIHNpbXBsZSBldmVudCBuYW1lZCBrZXlzdGF0dXNlc2NoYW5nZSBhdCB0aGUg
c2Vzc2lvbi4KICAgICBxdWV1ZVRhc2tUb0Rpc3BhdGNoRXZlbnQoKnRoaXMsIFRhc2tTb3VyY2U6
Ok5ldHdvcmtpbmcsIEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmtleXN0YXR1c2VzY2hhbmdl
RXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykpOwog
CkBAIC03NDYsNyArNzY2LDcgQEAgdm9pZCBNZWRpYUtleVNlc3Npb246OnNlc3Npb25DbG9zZWQo
KQogewogICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9lbmNyeXB0ZWQtbWVkaWEvI3Nlc3Np
b24tY2xvc2VkCiAgICAgLy8gVzNDIEVkaXRvcidzIERyYWZ0IDA5IE5vdmVtYmVyIDIwMTYKLSAg
ICBJTkZPX0xPRyhMT0dJREVOVElGSUVSKTsKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIp
OwogCiAgICAgLy8gMS4gTGV0IHNlc3Npb24gYmUgdGhlIGFzc29jaWF0ZWQgTWVkaWFLZXlTZXNz
aW9uIG9iamVjdC4KICAgICAvLyAyLiBJZiBzZXNzaW9uJ3Mgc2Vzc2lvbiB0eXBlIGlzICJwZXJz
aXN0ZW50LXVzYWdlLXJlY29yZCIsIGV4ZWN1dGUgdGhlIGZvbGxvd2luZyBzdGVwcyBpbiBwYXJh
bGxlbDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
TWVkaWFLZXlzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVk
aWFLZXlzLmNwcAppbmRleCAzNjdmMzFkMTg2YjUxNjM5YTljNzQyMTNmMGNmOGU2ZjJmOGQyNmVh
Li5hNzAxOTlkMGJiYTc5ZmNlZTU1NTlkMDgwYzUyYTZjNDk4OTExYmYyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuY3BwCkBAIC02
Miw3ICs2Miw3IEBAIE1lZGlhS2V5czo6TWVkaWFLZXlzKERvY3VtZW50JiBkb2N1bWVudCwgYm9v
bCB1c2VEaXN0aW5jdGl2ZUlkZW50aWZpZXIsIGJvb2wgcGVyCiAjZW5kaWYKIHsKICNpZiAhUkVM
RUFTRV9MT0dfRElTQUJMRUQKLSAgICBtX2luc3RhbmNlLT5zZXRMb2dnZXIoZG9jdW1lbnQubG9n
Z2VyKCksIG1fbG9nSWRlbnRpZmllcik7CisgICAgbV9pbnN0YW5jZS0+c2V0TG9nSWRlbnRpZmll
cihtX2xvZ0lkZW50aWZpZXIpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZG9jdW1lbnQpOwog
I2VuZGlmCkBAIC03NiwzMiArNzYsMzEgQEAgRXhjZXB0aW9uT3I8UmVmPE1lZGlhS2V5U2Vzc2lv
bj4+IE1lZGlhS2V5czo6Y3JlYXRlU2Vzc2lvbihEb2N1bWVudCYgZG9jdW1lbnQsIE0KICAgICAv
LyBodHRwczovL3czYy5naXRodWIuaW8vZW5jcnlwdGVkLW1lZGlhLyNkb20tbWVkaWFrZXlzLXNl
dHNlcnZlcmNlcnRpZmljYXRlCiAgICAgLy8gVzNDIEVkaXRvcidzIERyYWZ0IDA5IE5vdmVtYmVy
IDIwMTYKICAgICBhdXRvIGlkZW50aWZpZXIgPSBMT0dJREVOVElGSUVSOwotICAgIElORk9fTE9H
KGlkZW50aWZpZXIsICJFTUUgLSBjaGVjayBpZiBhIG5ldyBzZXNzaW9uIGNhbiBiZSBjcmVhdGVk
Iik7CiAKICAgICAvLyBXaGVuIHRoaXMgbWV0aG9kIGlzIGludm9rZWQsIHRoZSB1c2VyIGFnZW50
IG11c3QgcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6CiAgICAgLy8gMS4gSWYgdGhpcyBvYmplY3Qn
cyBzdXBwb3J0ZWQgc2Vzc2lvbiB0eXBlcyB2YWx1ZSBkb2VzIG5vdCBjb250YWluIHNlc3Npb25U
eXBlLCB0aHJvdyBbV2ViSURMXSBhIE5vdFN1cHBvcnRlZEVycm9yLgogICAgIGlmICghbV9zdXBw
b3J0ZWRTZXNzaW9uVHlwZXMuY29udGFpbnMoc2Vzc2lvblR5cGUpKSB7Ci0gICAgICAgIElORk9f
TE9HKGlkZW50aWZpZXIsICJFeGNlcHRpb246IHVuc3VwcG9ydGVkIHNlc3Npb25UeXBlOiAiLCBz
ZXNzaW9uVHlwZSk7CisgICAgICAgIEVSUk9SX0xPRyhpZGVudGlmaWVyLCAiRXhjZXB0aW9uOiB1
bnN1cHBvcnRlZCBzZXNzaW9uVHlwZTogIiwgc2Vzc2lvblR5cGUpOwogICAgICAgICByZXR1cm4g
RXhjZXB0aW9uKE5vdFN1cHBvcnRlZEVycm9yKTsKICAgICB9CiAKICAgICAvLyAyLiBJZiB0aGUg
aW1wbGVtZW50YXRpb24gZG9lcyBub3Qgc3VwcG9ydCBNZWRpYUtleVNlc3Npb24gb3BlcmF0aW9u
cyBpbiB0aGUgY3VycmVudCBzdGF0ZSwgdGhyb3cgW1dlYklETF0gYW4gSW52YWxpZFN0YXRlRXJy
b3IuCiAgICAgaWYgKCFtX2ltcGxlbWVudGF0aW9uLT5zdXBwb3J0c1Nlc3Npb25zKCkpIHsKLSAg
ICAgICAgSU5GT19MT0coaWRlbnRpZmllciwgIkV4Y2VwdGlvbjogaW1wbGVtZW50YXRpb24gZG9l
cyBub3Qgc3VwcG9ydCBzZXNzaW9ucyIpOworICAgICAgICBFUlJPUl9MT0coaWRlbnRpZmllciwg
IkV4Y2VwdGlvbjogaW1wbGVtZW50YXRpb24gZG9lcyBub3Qgc3VwcG9ydCBzZXNzaW9ucyIpOwog
ICAgICAgICByZXR1cm4gRXhjZXB0aW9uKEludmFsaWRTdGF0ZUVycm9yKTsKICAgICB9CiAKICAg
ICBhdXRvIGluc3RhbmNlU2Vzc2lvbiA9IG1faW5zdGFuY2UtPmNyZWF0ZVNlc3Npb24oKTsKICAg
ICBpZiAoIWluc3RhbmNlU2Vzc2lvbikgewotICAgICAgICBJTkZPX0xPRyhpZGVudGlmaWVyLCAi
RXhjZXB0aW9uOiBjb3VsZCBub3QgY3JlYXRlIHNlc3Npb24iKTsKKyAgICAgICAgRVJST1JfTE9H
KGlkZW50aWZpZXIsICJFeGNlcHRpb246IGNvdWxkIG5vdCBjcmVhdGUgc2Vzc2lvbiIpOwogICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uKEludmFsaWRTdGF0ZUVycm9yKTsKICAgICB9CiAKICAgICAv
LyAzLiBMZXQgc2Vzc2lvbiBiZSBhIG5ldyBNZWRpYUtleVNlc3Npb24gb2JqZWN0LCBhbmQgaW5p
dGlhbGl6ZSBpdCBhcyBmb2xsb3dzOgogICAgIC8vIE5PVEU6IENvbnRpbnVlZCBpbiBNZWRpYUtl
eVNlc3Npb24uCiAgICAgLy8gNC4gUmV0dXJuIHNlc3Npb24uCisgICAgQUxXQVlTX0xPRyhpZGVu
dGlmaWVyKTsKICAgICBhdXRvIHNlc3Npb24gPSBNZWRpYUtleVNlc3Npb246OmNyZWF0ZShkb2N1
bWVudCwgKnRoaXMsIHNlc3Npb25UeXBlLCBtX3VzZURpc3RpbmN0aXZlSWRlbnRpZmllciwgbV9p
bXBsZW1lbnRhdGlvbi5jb3B5UmVmKCksIGluc3RhbmNlU2Vzc2lvbi5yZWxlYXNlTm9uTnVsbCgp
KTsKLSAgICBJTkZPX0xPRyhpZGVudGlmaWVyLCAiQ3JlYXRlZCBzZXNzaW9uIik7CiAgICAgbV9z
ZXNzaW9ucy5hcHBlbmQoc2Vzc2lvbi5jb3B5UmVmKCkpOwogICAgIHJldHVybiBzZXNzaW9uOwog
fQpAQCAtMTE2LDE0ICsxMTUsMTQgQEAgdm9pZCBNZWRpYUtleXM6OnNldFNlcnZlckNlcnRpZmlj
YXRlKGNvbnN0IEJ1ZmZlclNvdXJjZSYgc2VydmVyQ2VydGlmaWNhdGUsIFJlZjwKICAgICAvLyAx
LiBJZiB0aGUgS2V5IFN5c3RlbSBpbXBsZW1lbnRhdGlvbiByZXByZXNlbnRlZCBieSB0aGlzIG9i
amVjdCdzIGNkbSBpbXBsZW1lbnRhdGlvbiB2YWx1ZSBkb2VzIG5vdCBzdXBwb3J0CiAgICAgLy8g
ICAgc2VydmVyIGNlcnRpZmljYXRlcywgcmV0dXJuIGEgcHJvbWlzZSByZXNvbHZlZCB3aXRoIGZh
bHNlLgogICAgIGlmICghbV9pbXBsZW1lbnRhdGlvbi0+c3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0
ZXMoKSkgewotICAgICAgICBJTkZPX0xPRyhpZGVudGlmaWVyLCAiUmVqZWN0ZWQ6ICFzdXBwb3J0
c1NlcnZlckNlcnRpZmljYXRlcygpIik7CisgICAgICAgIEFMV0FZU19MT0coaWRlbnRpZmllciwg
IlJlc29sdmVkOiAhc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMoKSIpOwogICAgICAgICBwcm9t
aXNlLT5yZXNvbHZlPElETEJvb2xlYW4+KGZhbHNlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAogICAgIC8vIDIuIElmIHNlcnZlckNlcnRpZmljYXRlIGlzIGFuIGVtcHR5IGFycmF5LCByZXR1
cm4gYSBwcm9taXNlIHJlamVjdGVkIHdpdGggYSBuZXcgYSBuZXdseSBjcmVhdGVkIFR5cGVFcnJv
ci4KICAgICBpZiAoIXNlcnZlckNlcnRpZmljYXRlLmxlbmd0aCgpKSB7Ci0gICAgICAgIElORk9f
TE9HKGlkZW50aWZpZXIsICJSZWplY3RlZDogZW1wdHkgc2VydmVyQ2VydGlmaWNhdGUiKTsKKyAg
ICAgICAgRVJST1JfTE9HKGlkZW50aWZpZXIsICJSZWplY3RlZDogZW1wdHkgc2VydmVyQ2VydGlm
aWNhdGUiKTsKICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KFR5cGVFcnJvcik7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CkBAIC0xMzUsMTYgKzEzNCwxNyBAQCB2b2lkIE1lZGlhS2V5czo6c2V0U2Vy
dmVyQ2VydGlmaWNhdGUoY29uc3QgQnVmZmVyU291cmNlJiBzZXJ2ZXJDZXJ0aWZpY2F0ZSwgUmVm
PAogICAgIC8vIDUuIFJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzIGluIHBhcmFsbGVsOgogCiAgICAg
Ly8gNS4xLiBVc2UgdGhpcyBvYmplY3QncyBjZG0gaW5zdGFuY2UgdG8gcHJvY2VzcyBjZXJ0aWZp
Y2F0ZS4KKyAgICBBTFdBWVNfTE9HKGlkZW50aWZpZXIpOwogICAgIG1faW5zdGFuY2UtPnNldFNl
cnZlckNlcnRpZmljYXRlKFdURk1vdmUoY2VydGlmaWNhdGUpLCBbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IFJlZiB7ICp0aGlzIH0sIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBpZGVudGlmaWVy
ID0gV1RGTW92ZShpZGVudGlmaWVyKV0gKGF1dG8gc3VjY2VzcykgewogICAgICAgICAvLyA1LjIu
IElmIHRoZSBwcmVjZWRpbmcgc3RlcCBmYWlsZWQsIHJlc29sdmUgcHJvbWlzZSB3aXRoIGEgbmV3
IERPTUV4Y2VwdGlvbiB3aG9zZSBuYW1lIGlzIHRoZSBhcHByb3ByaWF0ZSBlcnJvciBuYW1lLgog
ICAgICAgICAvLyA1LjEuIFtFbHNlLF0gUmVzb2x2ZSBwcm9taXNlIHdpdGggdHJ1ZS4KICAgICAg
ICAgaWYgKHN1Y2Nlc3MgPT0gQ0RNSW5zdGFuY2U6OkZhaWxlZCkgewotICAgICAgICAgICAgSU5G
T19MT0coaWRlbnRpZmllciwgIjo6dGFzaygpIC0gUmVqZWN0ZWQsIHNldFNlcnZlckNlcnRpZmlj
YXRlKCkgZmFpbGVkIik7CisgICAgICAgICAgICBFUlJPUl9MT0coaWRlbnRpZmllciwgIjo6dGFz
aygpIC0gUmVqZWN0ZWQsIHNldFNlcnZlckNlcnRpZmljYXRlKCkgZmFpbGVkIik7CiAgICAgICAg
ICAgICBwcm9taXNlLT5yZWplY3QoSW52YWxpZFN0YXRlRXJyb3IpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgSU5GT19MT0coaWRlbnRpZmllciwgIjo6dGFzaygp
IC0gUmVzb2x2ZWQiKTsKKyAgICAgICAgQUxXQVlTX0xPRyhpZGVudGlmaWVyLCAiOjp0YXNrKCkg
LSBSZXNvbHZlZCIpOwogICAgICAgICBwcm9taXNlLT5yZXNvbHZlPElETEJvb2xlYW4+KHRydWUp
OwogICAgIH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5cy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9NZWRpYUtleXMuaAppbmRleCA5MWExYTA3MTE0MzNiZTI0N2RkMmE4NWM1ZjRhZDA5MzhhMDlh
N2FjLi5iN2VhZGFmYjcwYjc2MzBlZGRmYTk2OWUxZjc5ZmNhODEwYWQ0NmU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmgKQEAgLTg5
LDggKzg5LDggQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgdW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlv
bkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JikgZmluYWw7CiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLSAgICBjb25zdCBMb2dnZXIm
IGxvZ2dlcigpIGNvbnN0IHsgcmV0dXJuIG1fbG9nZ2VyOyB9Ci0gICAgY29uc3Qgdm9pZCogbG9n
SWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fbG9nSWRlbnRpZmllcjsgfQorICAgIGNvbnN0
IExvZ2dlciYgbG9nZ2VyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9sb2dnZXI7IH0KKyAgICBj
b25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9sb2dJZGVu
dGlmaWVyOyB9CiAjZW5kaWYKIAogICAgIGJvb2wgbV91c2VEaXN0aW5jdGl2ZUlkZW50aWZpZXI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2Fj
eS9MZWdhY3lDRE0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9s
ZWdhY3kvTGVnYWN5Q0RNLmNwcAppbmRleCAxZjFiZWM3YzMzNDI0ZmUwODQyNzU0OGYwNzJjYzdk
ZmQxMmZkMGNlLi42OWU3NTliNDkxY2ZhZmM4YTBkOGRkZTZiZWIwMzQ4YWVkNjA4Y2QwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdh
Y3lDRE0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVn
YWN5L0xlZ2FjeUNETS5jcHAKQEAgLTEzMCw3ICsxMzAsNyBAQCBib29sIExlZ2FjeUNETTo6c3Vw
cG9ydHNNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKSBjb25zdAogCiBzdGQ6OnVuaXF1
ZV9wdHI8TGVnYWN5Q0RNU2Vzc2lvbj4gTGVnYWN5Q0RNOjpjcmVhdGVTZXNzaW9uKExlZ2FjeUNE
TVNlc3Npb25DbGllbnQmIGNsaWVudCkKIHsKLSAgICBhdXRvIHNlc3Npb24gPSBtX3ByaXZhdGUt
PmNyZWF0ZVNlc3Npb24oJmNsaWVudCk7CisgICAgYXV0byBzZXNzaW9uID0gbV9wcml2YXRlLT5j
cmVhdGVTZXNzaW9uKGNsaWVudCk7CiAgICAgaWYgKG1lZGlhUGxheWVyKCkpCiAgICAgICAgIG1l
ZGlhUGxheWVyKCktPnNldENETVNlc3Npb24oc2Vzc2lvbi5nZXQoKSk7CiAgICAgcmV0dXJuIHNl
c3Npb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L2xlZ2FjeS9MZWdhY3lDRE1Qcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1Qcml2YXRlLmgKaW5kZXggZjI0OTcwNzJlNzg1NzYw
YzU5ZTIzMDM5MzRmYjdmOWNjNDc3MmRmYi4uZTdkNGM0YjdjNTQwOGMwYjIyYThjMWJhZDM4ZWI3
ZGEzMGM4ZmQ0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9sZWdhY3kvTGVnYWN5Q0RNUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVByaXZhdGUuaApAQCAtNDIsNyArNDIs
NyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNNSU1FVHlwZShjb25zdCBT
dHJpbmcmKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxMZWdhY3lDRE1TZXNz
aW9uPiBjcmVhdGVTZXNzaW9uKExlZ2FjeUNETVNlc3Npb25DbGllbnQqKSA9IDA7CisgICAgdmly
dHVhbCBzdGQ6OnVuaXF1ZV9wdHI8TGVnYWN5Q0RNU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbihMZWdh
Y3lDRE1TZXNzaW9uQ2xpZW50JikgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kv
TGVnYWN5Q0RNUHJpdmF0ZUNsZWFyS2V5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVByaXZhdGVDbGVhcktleS5jcHAKaW5kZXggMTdk
NGZiNzI3NDBkNmUxYzNkZjZmZTZmNzY4NzViNGM5NGIyM2JiNy4uYjdhZmZjYTkxMzlhNzkwNGRl
MmM0OTg0MDdjOTc5MGYyMjNkZDQ3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNUHJpdmF0ZUNsZWFyS2V5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1Q
cml2YXRlQ2xlYXJLZXkuY3BwCkBAIC01OSw3ICs1OSw3IEBAIGJvb2wgTGVnYWN5Q0RNUHJpdmF0
ZUNsZWFyS2V5OjpzdXBwb3J0c01JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAgICAg
cmV0dXJuIE1lZGlhUGxheWVyOjpzdXBwb3J0c0tleVN5c3RlbShtX2NkbS0+a2V5U3lzdGVtKCks
IG1pbWVUeXBlKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNETVNlc3Npb24+IExlZ2Fj
eUNETVByaXZhdGVDbGVhcktleTo6Y3JlYXRlU2Vzc2lvbihMZWdhY3lDRE1TZXNzaW9uQ2xpZW50
KiBjbGllbnQpCitzdGQ6OnVuaXF1ZV9wdHI8TGVnYWN5Q0RNU2Vzc2lvbj4gTGVnYWN5Q0RNUHJp
dmF0ZUNsZWFyS2V5OjpjcmVhdGVTZXNzaW9uKExlZ2FjeUNETVNlc3Npb25DbGllbnQmIGNsaWVu
dCkKIHsKICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDRE1TZXNzaW9uQ2xlYXJLZXk+KGNsaWVudCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xl
Z2FjeS9MZWdhY3lDRE1Qcml2YXRlQ2xlYXJLZXkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVByaXZhdGVDbGVhcktleS5oCmluZGV4IDg3
NjQ2OGJhNDQ5N2VhNWJhOWFkYTNlMWViY2MyNWIyMTM5Yjk3ZDQuLjcxYjgyODJiNzE1MmJmOGI3
NzEyOGY4NGRlNzUyZDFiZWZlMWI2YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVByaXZhdGVDbGVhcktleS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVBy
aXZhdGVDbGVhcktleS5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9v
bCBzdXBwb3J0c0tleVN5c3RlbUFuZE1pbWVUeXBlKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKIAogICAgIGJvb2wgc3VwcG9ydHNNSU1FVHlwZShjb25z
dCBTdHJpbmcmIG1pbWVUeXBlKSBvdmVycmlkZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8TGVnYWN5
Q0RNU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbihMZWdhY3lDRE1TZXNzaW9uQ2xpZW50Kikgb3ZlcnJp
ZGU7CisgICAgc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNETVNlc3Npb24+IGNyZWF0ZVNlc3Npb24o
TGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCYpIG92ZXJyaWRlOwogCiBwcm90ZWN0ZWQ6CiAgICAgTGVn
YWN5Q0RNKiBtX2NkbTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVByaXZhdGVNZWRpYVBsYXllci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1Qcml2YXRlTWVk
aWFQbGF5ZXIuY3BwCmluZGV4IDM1MmVmYTg5MDMyMDM5Mjc5MWJhM2RkNzM0ZDdlYmU0ZjMyZmRi
MTguLjdmMmU3MTVmY2YzYTE0NTA0YWM2OWMwZDc4MWNjZjc4MmQ2MmZiMzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVBy
aXZhdGVNZWRpYVBsYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNUHJpdmF0ZU1lZGlhUGxheWVyLmNwcApAQCAtNTQsNyAr
NTQsNyBAQCBib29sIENETVByaXZhdGVNZWRpYVBsYXllcjo6c3VwcG9ydHNNSU1FVHlwZShjb25z
dCBTdHJpbmcmIG1pbWVUeXBlKQogICAgIHJldHVybiBNZWRpYVBsYXllcjo6c3VwcG9ydHNLZXlT
eXN0ZW0obV9jZG0tPmtleVN5c3RlbSgpLCBtaW1lVHlwZSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0
cjxMZWdhY3lDRE1TZXNzaW9uPiBDRE1Qcml2YXRlTWVkaWFQbGF5ZXI6OmNyZWF0ZVNlc3Npb24o
TGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCogY2xpZW50KQorc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNE
TVNlc3Npb24+IENETVByaXZhdGVNZWRpYVBsYXllcjo6Y3JlYXRlU2Vzc2lvbihMZWdhY3lDRE1T
ZXNzaW9uQ2xpZW50JiBjbGllbnQpCiB7CiAgICAgYXV0byBtZWRpYVBsYXllciA9IG1fY2RtLT5t
ZWRpYVBsYXllcigpOwogICAgIGlmICghbWVkaWFQbGF5ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1Qcml2YXRlTWVk
aWFQbGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5
L0xlZ2FjeUNETVByaXZhdGVNZWRpYVBsYXllci5oCmluZGV4IDY2MDJlYmZlOTA0NDVjNTU5M2M2
ZTVmZjhmMWE1YjJlMmRkOTJjMTcuLjVkYzNjMTEwYjA3NGU3NzUyM2YyYTBiOTY2ODg0Y2M0N2Rh
YTM5NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
bGVnYWN5L0xlZ2FjeUNETVByaXZhdGVNZWRpYVBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVByaXZhdGVNZWRpYVBsYXll
ci5oCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DRE1Qcml2YXRlTWVk
aWFQbGF5ZXIoKSA9IGRlZmF1bHQ7CiAKICAgICBib29sIHN1cHBvcnRzTUlNRVR5cGUoY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSkgb3ZlcnJpZGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNE
TVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCopIG92ZXJyaWRl
OworICAgIHN0ZDo6dW5pcXVlX3B0cjxMZWdhY3lDRE1TZXNzaW9uPiBjcmVhdGVTZXNzaW9uKExl
Z2FjeUNETVNlc3Npb25DbGllbnQmKSBvdmVycmlkZTsKIAogICAgIExlZ2FjeUNETSogY2RtKCkg
Y29uc3QgeyByZXR1cm4gbV9jZG07IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNU2Vzc2lvbkNsZWFyS2V5LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVNl
c3Npb25DbGVhcktleS5jcHAKaW5kZXggZGI2MmZlMDU2MDBmYjU0ZGIxNzc2NDgyMTNhMzMyYWMy
MTdiZWZiOS4uY2UyMWNiODI3MGVjZmZhN2IwNWQ3NDBiOTY3MzZkZDIzY2JmNDExNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5
Q0RNU2Vzc2lvbkNsZWFyS2V5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1TZXNzaW9uQ2xlYXJLZXkuY3BwCkBAIC00OSw3ICs0
OSw3IEBAIHN0YXRpYyBWTSYgY2xlYXJLZXlWTSgpCiAgICAgcmV0dXJuIHZtOwogfQogCi1DRE1T
ZXNzaW9uQ2xlYXJLZXk6OkNETVNlc3Npb25DbGVhcktleShMZWdhY3lDRE1TZXNzaW9uQ2xpZW50
KiBjbGllbnQpCitDRE1TZXNzaW9uQ2xlYXJLZXk6OkNETVNlc3Npb25DbGVhcktleShMZWdhY3lD
RE1TZXNzaW9uQ2xpZW50JiBjbGllbnQpCiAgICAgOiBtX2NsaWVudChjbGllbnQpCiAgICAgLCBt
X3Nlc3Npb25JZChjcmVhdGVWZXJzaW9uNFVVSURTdHJpbmcoKSkKIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVNlc3Np
b25DbGVhcktleS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdh
Y3kvTGVnYWN5Q0RNU2Vzc2lvbkNsZWFyS2V5LmgKaW5kZXggZmU1MzQ1OTFhZDdkNTYwMGM0MTlm
YWM3OTcwNGM0MWQ2NjcxYjQ5MC4uYTliNGQwYTM2M2VkNThiNGMwZDQyYTQzMmNlOTc4NGU3MWE3
MWEyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9s
ZWdhY3kvTGVnYWN5Q0RNU2Vzc2lvbkNsZWFyS2V5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNU2Vzc2lvbkNsZWFyS2V5LmgKQEAg
LTM2LDEyICszNiwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDRE1TZXNzaW9uQ2xl
YXJLZXkgZmluYWwgOiBwdWJsaWMgTGVnYWN5Q0RNU2Vzc2lvbiB7CiAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgQ0RNU2Vzc2lvbkNsZWFyS2V5KExlZ2FjeUNETVNl
c3Npb25DbGllbnQqKTsKKyAgICBDRE1TZXNzaW9uQ2xlYXJLZXkoTGVnYWN5Q0RNU2Vzc2lvbkNs
aWVudCYpOwogICAgIHZpcnR1YWwgfkNETVNlc3Npb25DbGVhcktleSgpOwogCiAgICAgLy8gQ0RN
U2Vzc2lvblByaXZhdGUKICAgICBMZWdhY3lDRE1TZXNzaW9uVHlwZSB0eXBlKCkgb3ZlcnJpZGUg
eyByZXR1cm4gQ0RNU2Vzc2lvblR5cGVDbGVhcktleTsgfQotICAgIHZvaWQgc2V0Q2xpZW50KExl
Z2FjeUNETVNlc3Npb25DbGllbnQqIGNsaWVudCkgb3ZlcnJpZGUgeyBtX2NsaWVudCA9IGNsaWVu
dDsgfQogICAgIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gbV9zZXNzaW9uSWQ7IH0KICAgICBSZWZQdHI8VWludDhBcnJheT4gZ2VuZXJhdGVLZXlSZXF1
ZXN0KGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFVpbnQ4QXJyYXkqLCBTdHJpbmcmLCB1bnNpZ25l
ZCBzaG9ydCYsIHVpbnQzMl90Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCByZWxlYXNlS2V5cygpIG92
ZXJyaWRlOwpAQCAtNDksNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgUmVmUHRyPEFycmF5QnVmZmVy
PiBjYWNoZWRLZXlGb3JLZXlJRChjb25zdCBTdHJpbmcmKSBjb25zdCBvdmVycmlkZTsKIAogcHJp
dmF0ZToKLSAgICBMZWdhY3lDRE1TZXNzaW9uQ2xpZW50KiBtX2NsaWVudDsKKyAgICBXZWFrUHRy
PExlZ2FjeUNETVNlc3Npb25DbGllbnQ+IG1fY2xpZW50OwogICAgIFJlZlB0cjxVaW50OEFycmF5
PiBtX2luaXREYXRhOwogICAgIEhhc2hNYXA8U3RyaW5nLCBWZWN0b3I8dWludDhfdD4+IG1fY2Fj
aGVkS2V5czsKICAgICBTdHJpbmcgbV9zZXNzaW9uSWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleVNlc3Npb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0
TWVkaWFLZXlTZXNzaW9uLmNwcAppbmRleCA5Yzk1ZDllYTEzZDJkOTFlNTViODQyNmE1ODcxZTQy
YTBjZmRmOWNiLi4wOTZjZTk2MzhhNzQ2NGQ0MDJiYWQ1ZDM2NzllNjk2MzMyMmU0MDg2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJL
aXRNZWRpYUtleVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5U2Vzc2lvbi5jcHAKQEAgLTMxLDYgKzMxLDcg
QEAKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkV2ZW50TG9vcC5oIgogI2luY2x1
ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUGFnZS5o
IgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luRGF0YS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgi
CkBAIC00MCwzOCArNDEsNDMgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9VaW50OEFycmF5
Lmg+CiAjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9j
SW5saW5lcy5oPgorI2luY2x1ZGUgPHd0Zi9Mb2dnZXJIZWxwZXIuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV2ViS2l0TWVkaWFLZXlTZXNz
aW9uKTsKIAotUmVmPFdlYktpdE1lZGlhS2V5U2Vzc2lvbj4gV2ViS2l0TWVkaWFLZXlTZXNzaW9u
OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgV2ViS2l0TWVkaWFLZXlz
JiBrZXlzLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSkKK1JlZjxXZWJLaXRNZWRpYUtleVNlc3Np
b24+IFdlYktpdE1lZGlhS2V5U2Vzc2lvbjo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgV2Vi
S2l0TWVkaWFLZXlzJiBrZXlzLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSkKIHsKLSAgICBhdXRv
IHNlc3Npb24gPSBhZG9wdFJlZigqbmV3IFdlYktpdE1lZGlhS2V5U2Vzc2lvbihjb250ZXh0LCBr
ZXlzLCBrZXlTeXN0ZW0pKTsKKyAgICBhdXRvIHNlc3Npb24gPSBhZG9wdFJlZigqbmV3IFdlYktp
dE1lZGlhS2V5U2Vzc2lvbihkb2N1bWVudCwga2V5cywga2V5U3lzdGVtKSk7CiAgICAgc2Vzc2lv
bi0+c3VzcGVuZElmTmVlZGVkKCk7CiAgICAgcmV0dXJuIHNlc3Npb247CiB9CiAKLVdlYktpdE1l
ZGlhS2V5U2Vzc2lvbjo6V2ViS2l0TWVkaWFLZXlTZXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQsIFdlYktpdE1lZGlhS2V5cyYga2V5cywgY29uc3QgU3RyaW5nJiBrZXlTeXN0
ZW0pCi0gICAgOiBBY3RpdmVET01PYmplY3QoJmNvbnRleHQpCitXZWJLaXRNZWRpYUtleVNlc3Np
b246OldlYktpdE1lZGlhS2V5U2Vzc2lvbihEb2N1bWVudCYgZG9jdW1lbnQsIFdlYktpdE1lZGlh
S2V5cyYga2V5cywgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pCisgICAgOiBBY3RpdmVET01PYmpl
Y3QoJmRvY3VtZW50KQorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgICwgbV9sb2dnZXIo
ZG9jdW1lbnQubG9nZ2VyKCkpCisgICAgLCBtX2xvZ0lkZW50aWZpZXIoTG9nZ2VySGVscGVyOjp1
bmlxdWVMb2dJZGVudGlmaWVyKCkpCisjZW5kaWYKICAgICAsIG1fa2V5cygma2V5cykKICAgICAs
IG1fa2V5U3lzdGVtKGtleVN5c3RlbSkKICAgICAsIG1fc2Vzc2lvbihrZXlzLmNkbSgpLmNyZWF0
ZVNlc3Npb24oKnRoaXMpKQogICAgICwgbV9rZXlSZXF1ZXN0VGltZXIoKnRoaXMsICZXZWJLaXRN
ZWRpYUtleVNlc3Npb246OmtleVJlcXVlc3RUaW1lckZpcmVkKQogICAgICwgbV9hZGRLZXlUaW1l
cigqdGhpcywgJldlYktpdE1lZGlhS2V5U2Vzc2lvbjo6YWRkS2V5VGltZXJGaXJlZCkKIHsKKyAg
ICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOwogICAgIGlmIChtX3Nlc3Npb24pCiAgICAgICAg
IG1fc2Vzc2lvbklkID0gbV9zZXNzaW9uLT5zZXNzaW9uSWQoKTsKIH0KIAogV2ViS2l0TWVkaWFL
ZXlTZXNzaW9uOjp+V2ViS2l0TWVkaWFLZXlTZXNzaW9uKCkKIHsKLSAgICBpZiAobV9zZXNzaW9u
KQotICAgICAgICBtX3Nlc3Npb24tPnNldENsaWVudChudWxscHRyKTsKKyAgICBBTFdBWVNfTE9H
KExPR0lERU5USUZJRVIpOwogfQotCiB2b2lkIFdlYktpdE1lZGlhS2V5U2Vzc2lvbjo6Y2xvc2Uo
KQogeworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CiAgICAgaWYgKG1fc2Vzc2lvbikg
ewogICAgICAgICBtX3Nlc3Npb24tPnJlbGVhc2VLZXlzKCk7CiAgICAgICAgIG1fc2Vzc2lvbiA9
IG51bGxwdHI7CkBAIC04NSw2ICs5MSw3IEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4gV2ViS2l0TWVk
aWFLZXlTZXNzaW9uOjpjYWNoZWRLZXlGb3JLZXlJZChjb25zdCBTdHJpbmcmIGtleUlkCiAKIHZv
aWQgV2ViS2l0TWVkaWFLZXlTZXNzaW9uOjpnZW5lcmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgUmVmPFVpbnQ4QXJyYXk+JiYgaW5pdERhdGEpCiB7CisgICAgQUxXQVlTX0xP
RyhMT0dJREVOVElGSUVSLCAibWltZVR5cGU6ICIsIG1pbWVUeXBlKTsKICAgICBtX3BlbmRpbmdL
ZXlSZXF1ZXN0cy5hcHBlbmQoeyBtaW1lVHlwZSwgV1RGTW92ZShpbml0RGF0YSkgfSk7CiAgICAg
bV9rZXlSZXF1ZXN0VGltZXIuc3RhcnRPbmVTaG90KDBfcyk7CiB9CkBAIC0xMzgsOSArMTQ1LDEy
IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFdlYktpdE1lZGlhS2V5U2Vzc2lvbjo6dXBkYXRlKFJlZjxV
aW50OEFycmF5PiYmIGtleSkKICAgICAvLyBUaGUgYWRkS2V5KGtleSkgbWV0aG9kIG11c3QgcnVu
IHRoZSBmb2xsb3dpbmcgc3RlcHM6CiAgICAgLy8gMS4gSWYgdGhlIGZpcnN0IG9yIHNlY29uZCBh
cmd1bWVudCBbc2ljXSBpcyBhbiBlbXB0eSBhcnJheSwgdGhyb3cgYW4gSW52YWxpZEFjY2Vzc0Vy
cm9yLgogICAgIC8vIE5PVEU6IHRoZSByZWZlcmVuY2UgdG8gYSAic2Vjb25kIGFyZ3VtZW50IiBp
cyBhIHNwZWMgYnVnLgotICAgIGlmICgha2V5LT5sZW5ndGgoKSkKKyAgICBpZiAoIWtleS0+bGVu
Z3RoKCkpIHsKKyAgICAgICAgRVJST1JfTE9HKExPR0lERU5USUZJRVIsICJlcnJvcjogZW1wdHkg
a2V5Iik7CiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkQWNjZXNzRXJyb3IgfTsK
KyAgICB9CiAKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOwogICAgIC8vIDIuIFNjaGVk
dWxlIGEgdGFzayB0byBoYW5kbGUgdGhlIGNhbGwsIHByb3ZpZGluZyBrZXkuCiAgICAgbV9wZW5k
aW5nS2V5cy5hcHBlbmQoV1RGTW92ZShrZXkpKTsKICAgICBtX2FkZEtleVRpbWVyLnN0YXJ0T25l
U2hvdCgwX3MpOwpAQCAtMjA0LDYgKzIxNCw3IEBAIHZvaWQgV2ViS2l0TWVkaWFLZXlTZXNzaW9u
OjphZGRLZXlUaW1lckZpcmVkKCkKIAogdm9pZCBXZWJLaXRNZWRpYUtleVNlc3Npb246OnNlbmRN
ZXNzYWdlKFVpbnQ4QXJyYXkqIG1lc3NhZ2UsIFN0cmluZyBkZXN0aW5hdGlvblVSTCkKIHsKKyAg
ICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOwogICAgIGF1dG8gZXZlbnQgPSBXZWJLaXRNZWRp
YUtleU1lc3NhZ2VFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS53ZWJraXRrZXltZXNzYWdlRXZl
bnQsIG1lc3NhZ2UsIGRlc3RpbmF0aW9uVVJMKTsKICAgICBldmVudC0+c2V0VGFyZ2V0KHRoaXMp
OwogICAgIHF1ZXVlVGFza1RvRGlzcGF0Y2hFdmVudCgqdGhpcywgVGFza1NvdXJjZTo6TmV0d29y
a2luZywgV1RGTW92ZShldmVudCkpOwpAQCAtMjExLDYgKzIyMiw3IEBAIHZvaWQgV2ViS2l0TWVk
aWFLZXlTZXNzaW9uOjpzZW5kTWVzc2FnZShVaW50OEFycmF5KiBtZXNzYWdlLCBTdHJpbmcgZGVz
dGluYXRpb25VCiAKIHZvaWQgV2ViS2l0TWVkaWFLZXlTZXNzaW9uOjpzZW5kRXJyb3IoTWVkaWFL
ZXlFcnJvckNvZGUgZXJyb3JDb2RlLCB1aW50MzJfdCBzeXN0ZW1Db2RlKQogeworICAgIEFMV0FZ
U19MT0coTE9HSURFTlRJRklFUiwgImVycm9yQ29kZTogIiwgKHVuc2lnbmVkKWVycm9yQ29kZSwg
Iiwgc3lzdGVtQ29kZTogIiwgc3lzdGVtQ29kZSk7CiAgICAgbV9lcnJvciA9IFdlYktpdE1lZGlh
S2V5RXJyb3I6OmNyZWF0ZShlcnJvckNvZGUsIHN5c3RlbUNvZGUpOwogCiAgICAgYXV0byBrZXll
cnJvckV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkud2Via2l0a2V5ZXJyb3JFdmVu
dCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKTsKQEAgLTI1
MCw2ICsyNjIsMTMgQEAgY29uc3QgY2hhciogV2ViS2l0TWVkaWFLZXlTZXNzaW9uOjphY3RpdmVE
T01PYmplY3ROYW1lKCkgY29uc3QKICAgICByZXR1cm4gIldlYktpdE1lZGlhS2V5U2Vzc2lvbiI7
CiB9CiAKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKK1dURkxvZ0NoYW5uZWwmIFdlYktpdE1l
ZGlhS2V5U2Vzc2lvbjo6bG9nQ2hhbm5lbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIExvZ0VNRTsK
K30KKyNlbmRpZgorCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleVNl
c3Npb24uaAppbmRleCBmZjNmNmJmN2I4YmIzYWZkOTliZTY2MTBkMGRhNmM0Y2Q4OTllMDk1Li40
ZTc5MmY2M2Y2MWU0YzQyZGM4YTQyYWMyMTRiZGFiNzQwMDYyZWYyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleVNl
c3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2Fj
eS9XZWJLaXRNZWRpYUtleVNlc3Npb24uaApAQCAtNDMsNyArNDMsNyBAQCBjbGFzcyBXZWJLaXRN
ZWRpYUtleXM7CiBjbGFzcyBXZWJLaXRNZWRpYUtleVNlc3Npb24gZmluYWwgOiBwdWJsaWMgUmVm
Q291bnRlZDxXZWJLaXRNZWRpYUtleVNlc3Npb24+LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5s
aW5lRGF0YSwgcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHJpdmF0ZSBMZWdhY3lDRE1TZXNzaW9u
Q2xpZW50IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFdlYktpdE1lZGlhS2V5U2Vzc2lv
bik7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJLaXRNZWRpYUtleVNlc3Npb24+IGNyZWF0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgV2ViS2l0TWVkaWFLZXlzJiwgY29uc3QgU3RyaW5n
JiBrZXlTeXN0ZW0pOworICAgIHN0YXRpYyBSZWY8V2ViS2l0TWVkaWFLZXlTZXNzaW9uPiBjcmVh
dGUoRG9jdW1lbnQmLCBXZWJLaXRNZWRpYUtleXMmLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSk7
CiAgICAgfldlYktpdE1lZGlhS2V5U2Vzc2lvbigpOwogCiAgICAgV2ViS2l0TWVkaWFLZXlFcnJv
ciogZXJyb3IoKSB7IHJldHVybiBtX2Vycm9yLmdldCgpOyB9CkBAIC02Myw3ICs2Myw3IEBAIHB1
YmxpYzoKICAgICB1c2luZyBSZWZDb3VudGVkOjpkZXJlZjsKIAogcHJpdmF0ZToKLSAgICBXZWJL
aXRNZWRpYUtleVNlc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFdlYktpdE1lZGlhS2V5
cyYsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKTsKKyAgICBXZWJLaXRNZWRpYUtleVNlc3Npb24o
RG9jdW1lbnQmLCBXZWJLaXRNZWRpYUtleXMmLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSk7CiAg
ICAgdm9pZCBrZXlSZXF1ZXN0VGltZXJGaXJlZCgpOwogICAgIHZvaWQgYWRkS2V5VGltZXJGaXJl
ZCgpOwogCkBAIC04Miw2ICs4MiwxNiBAQCBwcml2YXRlOgogICAgIEV2ZW50VGFyZ2V0SW50ZXJm
YWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gV2ViS2l0TWVk
aWFLZXlTZXNzaW9uRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9CiAgICAgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CiAKKyNpZiAhUkVM
RUFTRV9MT0dfRElTQUJMRUQKKyAgICBjb25zdCBMb2dnZXImIGxvZ2dlcigpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIG1fbG9nZ2VyOyB9CisgICAgY29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcigpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIG1fbG9nSWRlbnRpZmllcjsgfQorICAgIGNvbnN0IGNoYXIqIGxv
Z0NsYXNzTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJXZWJLaXRNZWRpYUtleVNlc3Npb24iOyB9Cisg
ICAgV1RGTG9nQ2hhbm5lbCYgbG9nQ2hhbm5lbCgpIGNvbnN0OworCisgICAgUmVmPExvZ2dlcj4g
bV9sb2dnZXI7CisgICAgY29uc3Qgdm9pZCogbV9sb2dJZGVudGlmaWVyOworI2VuZGlmCisKICAg
ICBXZWJLaXRNZWRpYUtleXMqIG1fa2V5czsKICAgICBTdHJpbmcgbV9rZXlTeXN0ZW07CiAgICAg
U3RyaW5nIG1fc2Vzc2lvbklkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5cy5jcHAKaW5kZXgg
MTgxYTgzOTQyYjA0MGM3MmMyOWRjZWFmMzRhZjM2ZjQzN2RlZTY1Zi4uNzBkYjExYzQ3NGU4MDE3
YWFiNzRiYjk2NTE0YzllYzM1NDI0OTIxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleXMu
Y3BwCkBAIC03NCw3ICs3NCw3IEBAIFdlYktpdE1lZGlhS2V5czo6fldlYktpdE1lZGlhS2V5cygp
CiAgICAgfQogfQogCi1FeGNlcHRpb25PcjxSZWY8V2ViS2l0TWVkaWFLZXlTZXNzaW9uPj4gV2Vi
S2l0TWVkaWFLZXlzOjpjcmVhdGVTZXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFVpbnQ4QXJyYXk+JiYgaW5pdERhdGEpCitFeGNl
cHRpb25PcjxSZWY8V2ViS2l0TWVkaWFLZXlTZXNzaW9uPj4gV2ViS2l0TWVkaWFLZXlzOjpjcmVh
dGVTZXNzaW9uKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8VWlu
dDhBcnJheT4mJiBpbml0RGF0YSkKIHsKICAgICAvLyBGcm9tIDxodHRwOi8vd3d3LnczLm9yZy9U
Ui8yMDE0L1dELWVuY3J5cHRlZC1tZWRpYS0yMDE0MDIxOC8jZG9tLWNyZWF0ZXNlc3Npb24+Ogog
ICAgIC8vIFRoZSBjcmVhdGVTZXNzaW9uKHR5cGUsIGluaXREYXRhKSBtZXRob2QgbXVzdCBydW4g
dGhlIGZvbGxvd2luZyBzdGVwczoKQEAgLTk2LDcgKzk2LDcgQEAgRXhjZXB0aW9uT3I8UmVmPFdl
YktpdE1lZGlhS2V5U2Vzc2lvbj4+IFdlYktpdE1lZGlhS2V5czo6Y3JlYXRlU2Vzc2lvbihTY3Jp
cHRFeGUKICAgICAvLyA0LiBDcmVhdGUgYSBuZXcgTWVkaWFLZXlTZXNzaW9uIG9iamVjdC4KICAg
ICAvLyA0LjEgTGV0IHRoZSBrZXlTeXN0ZW0gYXR0cmlidXRlIGJlIGtleVN5c3RlbS4KICAgICAv
LyA0LjIgTGV0IHRoZSBzZXNzaW9uSWQgYXR0cmlidXRlIGJlIGEgdW5pcXVlIFNlc3Npb24gSUQg
c3RyaW5nLiBJdCBtYXkgYmUgZ2VuZXJhdGVkIGJ5IGNkbS4KLSAgICBhdXRvIHNlc3Npb24gPSBX
ZWJLaXRNZWRpYUtleVNlc3Npb246OmNyZWF0ZShjb250ZXh0LCAqdGhpcywgbV9rZXlTeXN0ZW0p
OworICAgIGF1dG8gc2Vzc2lvbiA9IFdlYktpdE1lZGlhS2V5U2Vzc2lvbjo6Y3JlYXRlKGRvY3Vt
ZW50LCAqdGhpcywgbV9rZXlTeXN0ZW0pOwogCiAgICAgbV9zZXNzaW9ucy5hcHBlbmQoc2Vzc2lv
bi5jb3B5UmVmKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleXMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5cy5oCmluZGV4IDJkMGMxZDAz
ZjU0Mjg5NzhiMTgwNWM2NGVkOTAxNDliODcwYzM2YmQuLjQ0NjkzNzQ4NmEyMDljNGY4MWQ2ZWE0
MjQwYTRkY2Q3OGU3MWExYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5cy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5cy5oCkBAIC0zNSw4
ICszNSw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgRG9jdW1lbnQ7CiBjbGFz
cyBIVE1MTWVkaWFFbGVtZW50OwotY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIGNsYXNz
IFdlYktpdE1lZGlhS2V5U2Vzc2lvbjsKIAogY2xhc3MgV2ViS2l0TWVkaWFLZXlzIGZpbmFsIDog
cHVibGljIFJlZkNvdW50ZWQ8V2ViS2l0TWVkaWFLZXlzPiwgcHJpdmF0ZSBMZWdhY3lDRE1DbGll
bnQgewpAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJl
ZjxXZWJLaXRNZWRpYUtleXM+PiBjcmVhdGUoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pOwogICAg
IHZpcnR1YWwgfldlYktpdE1lZGlhS2V5cygpOwogCi0gICAgRXhjZXB0aW9uT3I8UmVmPFdlYktp
dE1lZGlhS2V5U2Vzc2lvbj4+IGNyZWF0ZVNlc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYs
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFJlZjxVaW50OEFycmF5PiYmIGluaXREYXRhKTsKKyAg
ICBFeGNlcHRpb25PcjxSZWY8V2ViS2l0TWVkaWFLZXlTZXNzaW9uPj4gY3JlYXRlU2Vzc2lvbihE
b2N1bWVudCYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFJlZjxVaW50OEFycmF5PiYmIGluaXRE
YXRhKTsKICAgICBzdGF0aWMgYm9vbCBpc1R5cGVTdXBwb3J0ZWQoY29uc3QgU3RyaW5nJiBrZXlT
eXN0ZW0sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwogICAgIGNvbnN0IFN0cmluZyYga2V5U3lz
dGVtKCkgY29uc3QgeyByZXR1cm4gbV9rZXlTeXN0ZW07IH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNRmFjdG9yeS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNRmFjdG9yeS5oCmluZGV4IDJkMmM0MzY0
NWIzZjdkYTM3YzkxMTc1Zjk4NjZjMmNkZDVjYmU2MzQuLjliN2MzMDliMDNmY2ZkNmEwZDFiZWI4
N2I3NzdmMWVmM2U5YzdjNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Vu
Y3J5cHRlZG1lZGlhL0NETUZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
bmNyeXB0ZWRtZWRpYS9DRE1GYWN0b3J5LmgKQEAgLTQxLDExICs0MSwxMiBAQCBjbGFzcyBMb2dn
ZXI7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENETVByaXZhdGU7CitjbGFzcyBDRE1Q
cml2YXRlQ2xpZW50OwogCiBjbGFzcyBDRE1GYWN0b3J5IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFs
IH5DRE1GYWN0b3J5KCkgeyB9OwotICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPENETVByaXZh
dGU+IGNyZWF0ZUNETShjb25zdCBTdHJpbmcmKSA9IDA7CisgICAgdmlydHVhbCBzdGQ6OnVuaXF1
ZV9wdHI8Q0RNUHJpdmF0ZT4gY3JlYXRlQ0RNKGNvbnN0IFN0cmluZyYsIGNvbnN0IENETVByaXZh
dGVDbGllbnQmKSA9IDA7CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0
IFN0cmluZyYpID0gMDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBWZWN0b3I8Q0RNRmFj
dG9yeSo+JiByZWdpc3RlcmVkRmFjdG9yaWVzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2UuaAppbmRleCAyZGU0MTkzNGRhMTk4
NzlkNzVjMGRmOGE4OWU2NGU1OTljMjlhZTAzLi4zYzY3NDlkMWY3MmZkMTUyNTRhOTdkNDdkYTBk
MDliYzJkOGQ4Njc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9DRE1JbnN0YW5jZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL0NETUluc3RhbmNlLmgKQEAgLTU1LDYgKzU1LDExIEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIH5DRE1JbnN0YW5jZUNsaWVudCgpID0gZGVmYXVsdDsKIAogICAgIHZpcnR1YWwgdm9p
ZCB1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYsIFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSA9IDA7CisKKyNpZiAhUkVMRUFTRV9MT0dfRElT
QUJMRUQKKyAgICB2aXJ0dWFsIGNvbnN0IExvZ2dlciYgbG9nZ2VyKCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgY29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcigpIGNvbnN0ID0gMDsKKyNlbmRpZgog
fTsKIAogLy8gSmF2YVNjcmlwdCdzIGhhbmRsZSB0byBhIENETUluc3RhbmNlLCBtdXN0IGJlIHVz
ZWQgZnJvbSB0aGUKQEAgLTY3LDcgKzcyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBj
bGVhckNsaWVudCgpIHsgfQogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgdmlydHVh
bCB2b2lkIHNldExvZ2dlcihMb2dnZXImLCBjb25zdCB2b2lkKikgeyB9CisgICAgdmlydHVhbCB2
b2lkIHNldExvZ0lkZW50aWZpZXIoY29uc3Qgdm9pZCopIHsgfQogI2VuZGlmCiAKICAgICBlbnVt
IGNsYXNzIEltcGxlbWVudGF0aW9uVHlwZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZVNlc3Npb24uaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5oCmluZGV4IGQy
NTkyMjViYTllMDJhNjRkMGNlY2Q2MTUxZmRmOTNmNGYyNDY2YTguLjcxOTczZmE4NmQzMzQxYjVi
YzRjYjExNGVkZDFkNDgwZmUzOGY2MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5oCkBAIC02Nyw3
ICs2Nyw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBNZXNzYWdlVHlwZSA9IENETU1lc3NhZ2VUeXBl
OwogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgdmlydHVhbCB2b2lkIHNldExvZ2dl
cihMb2dnZXImLCBjb25zdCB2b2lkKikgeyB9CisgICAgdmlydHVhbCB2b2lkIHNldExvZ0lkZW50
aWZpZXIoY29uc3Qgdm9pZCopIHsgfQogI2VuZGlmCiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q2xp
ZW50KFdlYWtQdHI8Q0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50PiYmKSB7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaAppbmRleCA1
MmE2MTQ4YzgzY2Q1MzkzYzhmODc0ZWQ4NWFkOGJmMjdlNWJlNTBmLi4yNTg5Nzk0ZmM1MDkxNzQ0
Nzc1Nzg1YjQ5NmUzNTgwZjQ5MjM2MTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5oCkBAIC00NSwxMiArNDUsMjIgQEAgc3Ry
dWN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb247CiBzdHJ1Y3QgQ0RNTWVkaWFDYXBhYmlsaXR5
Owogc3RydWN0IENETVJlc3RyaWN0aW9uczsKIAorY2xhc3MgQ0RNUHJpdmF0ZUNsaWVudCB7Citw
dWJsaWM6CisgICAgdmlydHVhbCB+Q0RNUHJpdmF0ZUNsaWVudCgpID0gZGVmYXVsdDsKKworI2lm
ICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIHZpcnR1YWwgY29uc3QgTG9nZ2VyJiBsb2dnZXIo
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKCkgY29u
c3QgPSAwOworI2VuZGlmCit9OworCiBjbGFzcyBDRE1Qcml2YXRlIDogcHVibGljIENhbk1ha2VX
ZWFrUHRyPENETVByaXZhdGU+IHsKIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFs
IH5DRE1Qcml2YXRlKCk7CiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLSAgICB2aXJ0dWFs
IHZvaWQgc2V0TG9nZ2VyKExvZ2dlciYsIGNvbnN0IHZvaWQqKSB7IH07CisgICAgdmlydHVhbCB2
b2lkIHNldExvZ0lkZW50aWZpZXIoY29uc3Qgdm9pZCopIHsgfTsKICNlbmRpZgogCiAgICAgZW51
bSBjbGFzcyBMb2NhbFN0b3JhZ2VBY2Nlc3MgOiBib29sIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFy
S2V5LmNwcAppbmRleCAzMWE5ZmRmYTAyZDZkMDBjYTI2MTgyNTJkZWQ5MzUzMTNkYzU4YWE5Li4x
OGQ3OGY3MWI1ZGJjMTUyMzkyNzJhODJlZWUyODY3OTkyODRhOTBiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkv
Q0RNQ2xlYXJLZXkuY3BwCkBAIC0yNjQsNyArMjY0LDcgQEAgQ0RNRmFjdG9yeUNsZWFyS2V5JiBD
RE1GYWN0b3J5Q2xlYXJLZXk6OnNpbmdsZXRvbigpCiBDRE1GYWN0b3J5Q2xlYXJLZXk6OkNETUZh
Y3RvcnlDbGVhcktleSgpID0gZGVmYXVsdDsKIENETUZhY3RvcnlDbGVhcktleTo6fkNETUZhY3Rv
cnlDbGVhcktleSgpID0gZGVmYXVsdDsKIAotc3RkOjp1bmlxdWVfcHRyPENETVByaXZhdGU+IENE
TUZhY3RvcnlDbGVhcktleTo6Y3JlYXRlQ0RNKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKQorc3Rk
Ojp1bmlxdWVfcHRyPENETVByaXZhdGU+IENETUZhY3RvcnlDbGVhcktleTo6Y3JlYXRlQ0RNKGNv
bnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBDRE1Qcml2YXRlQ2xpZW50JikKIHsKICNpZmRl
ZiBOREVCVUcKICAgICBVTlVTRURfUEFSQU0oa2V5U3lzdGVtKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVh
cktleS5oCmluZGV4IDllMjdmZTkxMmM0ZGEwNjdmYjI2Y2FmYmM3ZjZhNjUxZGE0NzUyOGIuLmNk
Nzk3YzYxYzdiMTQxNmEzYjM0NGE1ZWI3YzM0MzYyYjQ5MDE5MzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RN
Q2xlYXJLZXkuaApAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5DRE1G
YWN0b3J5Q2xlYXJLZXkoKTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxDRE1Qcml2YXRlPiBjcmVh
dGVDRE0oY29uc3QgU3RyaW5nJikgZmluYWw7CisgICAgc3RkOjp1bmlxdWVfcHRyPENETVByaXZh
dGU+IGNyZWF0ZUNETShjb25zdCBTdHJpbmcmLCBjb25zdCBDRE1Qcml2YXRlQ2xpZW50JikgZmlu
YWw7CiAgICAgYm9vbCBzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmKSBmaW5hbDsKIAog
cHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xl
Z2FjeUNETVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xlZ2Fj
eUNETVNlc3Npb24uaAppbmRleCBmODQ0ZjRmOTg2OWFkMDczMjZlMmJhYWQyNmVhZjlkZTdhNTlm
NWJiLi5iOTE3MWJhMmU2NmFjMjU5YjYzM2EyZDFhMDZhNjM5ZjQwMWM5MWEyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MZWdhY3lDRE1TZXNzaW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGVnYWN5Q0RNU2Vzc2lvbi5oCkBA
IC0yOSwxMCArMjksMTEgQEAKIAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0ZvcndhcmQuaD4K
ICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCB7CitjbGFz
cyBMZWdhY3lDRE1TZXNzaW9uQ2xpZW50IDogcHVibGljIENhbk1ha2VXZWFrUHRyPExlZ2FjeUNE
TVNlc3Npb25DbGllbnQ+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5MZWdhY3lDRE1TZXNzaW9uQ2xpZW50KCkgPSBkZWZhdWx0OwpAQCAtNTAs
NiArNTEsMTEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZW5kRXJyb3IoTWVkaWFLZXlF
cnJvckNvZGUsIHVpbnQzMl90IHN5c3RlbUNvZGUpID0gMDsKIAogICAgIHZpcnR1YWwgU3RyaW5n
IG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdCA9IDA7CisKKyNpZiAhUkVMRUFTRV9M
T0dfRElTQUJMRUQKKyAgICB2aXJ0dWFsIGNvbnN0IExvZ2dlciYgbG9nZ2VyKCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgY29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcigpIGNvbnN0ID0gMDsKKyNl
bmRpZgogfTsKIAogZW51bSBMZWdhY3lDRE1TZXNzaW9uVHlwZSB7CkBAIC02Niw3ICs3Miw2IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIH5MZWdhY3lDRE1TZXNzaW9uKCkgPSBkZWZhdWx0OwogCiAg
ICAgdmlydHVhbCBMZWdhY3lDRE1TZXNzaW9uVHlwZSB0eXBlKCkgeyByZXR1cm4gQ0RNU2Vzc2lv
blR5cGVVbmtub3duOyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldENsaWVudChMZWdhY3lDRE1TZXNz
aW9uQ2xpZW50KikgPSAwOwogICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQoKSBj
b25zdCA9IDA7CiAgICAgdmlydHVhbCBSZWZQdHI8VWludDhBcnJheT4gZ2VuZXJhdGVLZXlSZXF1
ZXN0KGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFVpbnQ4QXJyYXkqIGluaXREYXRhLCBTdHJpbmcm
IGRlc3RpbmF0aW9uVVJMLCB1bnNpZ25lZCBzaG9ydCYgZXJyb3JDb2RlLCB1aW50MzJfdCYgc3lz
dGVtQ29kZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZWxlYXNlS2V5cygpID0gMDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAppbmRleCBm
ZGE1YWQxZDkwNzBjY2Y0YzYwOGVkYWIxMmFmOTBiOTZlODZmNDI3Li5jMzk0NWIzNjgwYTU0ZTg1
OTBlMmE5OTk2ZTRlMDgwOTFiYmE4NzU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCkBAIC02OTIsNyArNjkyLDcgQEAgdm9pZCBNZWRp
YVBsYXllcjo6c2V0QnVmZmVyaW5nUG9saWN5KEJ1ZmZlcmluZ1BvbGljeSBwb2xpY3kpCiAKICNp
ZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKIAotc3RkOjp1bmlxdWVfcHRyPExlZ2Fj
eUNETVNlc3Npb24+IE1lZGlhUGxheWVyOjpjcmVhdGVTZXNzaW9uKGNvbnN0IFN0cmluZyYga2V5
U3lzdGVtLCBMZWdhY3lDRE1TZXNzaW9uQ2xpZW50KiBjbGllbnQpCitzdGQ6OnVuaXF1ZV9wdHI8
TGVnYWN5Q0RNU2Vzc2lvbj4gTWVkaWFQbGF5ZXI6OmNyZWF0ZVNlc3Npb24oY29uc3QgU3RyaW5n
JiBrZXlTeXN0ZW0sIExlZ2FjeUNETVNlc3Npb25DbGllbnQmIGNsaWVudCkKIHsKICAgICByZXR1
cm4gbV9wcml2YXRlLT5jcmVhdGVTZXNzaW9uKGtleVN5c3RlbSwgY2xpZW50KTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCmluZGV4IGExN2U1
ZWU2ZDdkNTA3ZGY1YWE4MGU3NmE5ZmZiNTM1MTM1YzcwZTcuLjU5MjBiMzM1N2U2ZWY0YzE0NzMw
OTY2MmZlY2ZiOTEyYzk0OTE2NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuaApAQCAtMzgxLDcgKzM4MSw3IEBAIHB1YmxpYzoKICAgICAvLyBU
aGlzIGlzIGRpZmZlcmVudCBmcm9tIHRoZSBhc3luY2hyb25vdXMgTWVkaWFLZXlFcnJvci4KICAg
ICBlbnVtIE1lZGlhS2V5RXhjZXB0aW9uIHsgTm9FcnJvciwgSW52YWxpZFBsYXllclN0YXRlLCBL
ZXlTeXN0ZW1Ob3RTdXBwb3J0ZWQgfTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxMZWdhY3lDRE1T
ZXNzaW9uPiBjcmVhdGVTZXNzaW9uKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBMZWdhY3lDRE1T
ZXNzaW9uQ2xpZW50Kik7CisgICAgc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNETVNlc3Npb24+IGNy
ZWF0ZVNlc3Npb24oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIExlZ2FjeUNETVNlc3Npb25DbGll
bnQmKTsKICAgICB2b2lkIHNldENETShMZWdhY3lDRE0qKTsKICAgICB2b2lkIHNldENETVNlc3Np
b24oTGVnYWN5Q0RNU2Vzc2lvbiopOwogICAgIHZvaWQga2V5QWRkZWQoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKaW5k
ZXggODA5YmUxNjUzMzIyNzIwNzY0ZmEwODE2YzgzODhkYzMyYjU4MWQ2YS4uNTkyZmI5YTE4ZDY2
YzNjMTc3MDAzMzI4Y2E2ZTg1OTY1MTk4M2M2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKQEAgLTI0Niw3ICsyNDYs
NyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElB
KQotICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNETVNlc3Npb24+IGNyZWF0ZVNl
c3Npb24oY29uc3QgU3RyaW5nJiwgTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCopIHsgcmV0dXJuIG51
bGxwdHI7IH0KKyAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxMZWdhY3lDRE1TZXNzaW9uPiBj
cmVhdGVTZXNzaW9uKGNvbnN0IFN0cmluZyYsIExlZ2FjeUNETVNlc3Npb25DbGllbnQmKSB7IHJl
dHVybiBudWxscHRyOyB9CiAgICAgdmlydHVhbCB2b2lkIHNldENETShMZWdhY3lDRE0qKSB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgc2V0Q0RNU2Vzc2lvbihMZWdhY3lDRE1TZXNzaW9uKikgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIGtleUFkZGVkKCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQ
bGF5U3RyZWFtaW5nLmNwcAppbmRleCBjNTQ2MTQ2MjNiODdlYzA4OTYxZjFkNDQyMGY5NjAxZjE2
YTZhYjRkLi42MjEyOWQyMmVhOTE5MDViNDI4NGJkMzkyMDM0ZDc5ZjcxMGJhZWI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFp
clBsYXlTdHJlYW1pbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAKQEAgLTI4LDYgKzI4LDcgQEAK
IAogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAKKyNpbmNsdWRlICJDRE0uaCIKICNpbmNs
dWRlICJDRE1DbGVhcktleS5oIgogI2luY2x1ZGUgIkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24u
aCIKICNpbmNsdWRlICJDRE1SZXN0cmljdGlvbnMuaCIKQEAgLTIzNywxMiArMjM4LDEyIEBAIENE
TUZhY3RvcnlGYWlyUGxheVN0cmVhbWluZyYgQ0RNRmFjdG9yeUZhaXJQbGF5U3RyZWFtaW5nOjpz
aW5nbGV0b24oKQogQ0RNRmFjdG9yeUZhaXJQbGF5U3RyZWFtaW5nOjpDRE1GYWN0b3J5RmFpclBs
YXlTdHJlYW1pbmcoKSA9IGRlZmF1bHQ7CiBDRE1GYWN0b3J5RmFpclBsYXlTdHJlYW1pbmc6On5D
RE1GYWN0b3J5RmFpclBsYXlTdHJlYW1pbmcoKSA9IGRlZmF1bHQ7CiAKLXN0ZDo6dW5pcXVlX3B0
cjxDRE1Qcml2YXRlPiBDRE1GYWN0b3J5RmFpclBsYXlTdHJlYW1pbmc6OmNyZWF0ZUNETShjb25z
dCBTdHJpbmcmIGtleVN5c3RlbSkKK3N0ZDo6dW5pcXVlX3B0cjxDRE1Qcml2YXRlPiBDRE1GYWN0
b3J5RmFpclBsYXlTdHJlYW1pbmc6OmNyZWF0ZUNETShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwg
Y29uc3QgQ0RNUHJpdmF0ZUNsaWVudCYgY2xpZW50KQogewogICAgIGlmICghc3VwcG9ydHNLZXlT
eXN0ZW0oa2V5U3lzdGVtKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4g
bWFrZVVuaXF1ZTxDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc+KCk7CisgICAgcmV0dXJuIG1h
a2VVbmlxdWU8Q0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nPihjbGllbnQpOwogfQogCiBib29s
IENETUZhY3RvcnlGYWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3Ry
aW5nJiBrZXlTeXN0ZW0pCkBAIC0yNTIsMTYgKzI1MywxNCBAQCBib29sIENETUZhY3RvcnlGYWly
UGxheVN0cmVhbWluZzo6c3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0p
CiAgICAgcmV0dXJuIGtleVN5c3RlbSA9PSAiY29tLmFwcGxlLmZwcyIgfHwga2V5U3lzdGVtLnN0
YXJ0c1dpdGgoImNvbS5hcHBsZS5mcHMuIl9zKTsKIH0KIAotQ0RNUHJpdmF0ZUZhaXJQbGF5U3Ry
ZWFtaW5nOjpDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmcoKSA9IGRlZmF1bHQ7Ci1DRE1Qcml2
YXRlRmFpclBsYXlTdHJlYW1pbmc6On5DRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmcoKSA9IGRl
ZmF1bHQ7Ci0KK0NETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6Q0RNUHJpdmF0ZUZhaXJQbGF5
U3RyZWFtaW5nKGNvbnN0IENETVByaXZhdGVDbGllbnQmIGNsaWVudCkKICNpZiAhUkVMRUFTRV9M
T0dfRElTQUJMRUQKLXZvaWQgQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzZXRMb2dnZXIo
TG9nZ2VyJiBsb2dnZXIsIGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIpCisgICAgOiBtX2xvZ2dl
cihjbGllbnQubG9nZ2VyKCkpCisjZW5kaWYKIHsKLSAgICBtX2xvZ2dlciA9ICZsb2dnZXI7Ci0g
ICAgbV9sb2dJZGVudGlmaWVyID0gbG9nSWRlbnRpZmllcjsKIH0KLSNlbmRpZgorCitDRE1Qcml2
YXRlRmFpclBsYXlTdHJlYW1pbmc6On5DRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmcoKSA9IGRl
ZmF1bHQ7CiAKIFZlY3RvcjxBdG9tU3RyaW5nPiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6
OnN1cHBvcnRlZEluaXREYXRhVHlwZXMoKSBjb25zdAogewpAQCAtMjcxLDI2ICsyNzAsMjYgQEAg
VmVjdG9yPEF0b21TdHJpbmc+IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydGVk
SW5pdERhdGFUeXBlcygpIGNvbnN0CiBib29sIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6
c3VwcG9ydHNDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mIGNv
bmZpZ3VyYXRpb24pIGNvbnN0CiB7CiAgICAgaWYgKCFXVEY6OmFueU9mKGNvbmZpZ3VyYXRpb24u
aW5pdERhdGFUeXBlcywgW10gKGF1dG8mIGluaXREYXRhVHlwZSkgeyByZXR1cm4gdmFsaWRJbml0
RGF0YVR5cGVzKCkuY29udGFpbnMoaW5pdERhdGFUeXBlKTsgfSkpIHsKLSAgICAgICAgREVCVUdf
TE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIsICIgZmFsc2UsIG5vIGluaXREYXRhVHlwZSBz
dXBwb3J0ZWQiKTsKKyAgICAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgIiBmYWxzZSwgbm8g
aW5pdERhdGFUeXBlIHN1cHBvcnRlZCIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
CiAjaWYgSEFWRShBVkNPTlRFTlRLRVlTRVNTSU9OKQogICAgIC8vIEZJWE1FOiB2ZXJpZnkgdGhh
dCBGYWlyUGxheVN0cmVhbWluZyBkb2VzIG5vdCAoYW5kIGNhbm5vdCkgZXhwb3NlIGEgZGlzdGlu
Y3RpdmUgaWRlbnRpZmllciB0byB0aGUgY2xpZW50CiAgICAgaWYgKGNvbmZpZ3VyYXRpb24uZGlz
dGluY3RpdmVJZGVudGlmaWVyID09IENETVJlcXVpcmVtZW50OjpSZXF1aXJlZCkgewotICAgICAg
ICBERUJVR19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwgImZhbHNlLCByZXF1cmllZCBk
aXN0aW5jdGl2ZUlkZW50aWZpZXIgbm90IHN1cHBvcnRlZCIpOworICAgICAgICBJTkZPX0xPRyhM
T0dJREVOVElGSUVSLCAiZmFsc2UsIHJlcXVyaWVkIGRpc3RpbmN0aXZlSWRlbnRpZmllciBub3Qg
c3VwcG9ydGVkIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBpZiAoY29u
ZmlndXJhdGlvbi5wZXJzaXN0ZW50U3RhdGUgPT0gQ0RNUmVxdWlyZW1lbnQ6OlJlcXVpcmVkICYm
ICFDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c3VwcG9ydHNQZXJzaXN0YWJs
ZVN0YXRlKCkpIHsKLSAgICAgICAgREVCVUdfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIs
ICJmYWxzZSwgcmVxdWlyZWQgcGVyc2lzdGVudFN0YXRlIG5vdCBzdXBwb3J0ZWQiKTsKKyAgICAg
ICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgImZhbHNlLCByZXF1aXJlZCBwZXJzaXN0ZW50U3Rh
dGUgbm90IHN1cHBvcnRlZCIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAg
aWYgKGNvbmZpZ3VyYXRpb24uc2Vzc2lvblR5cGVzLmNvbnRhaW5zKENETVNlc3Npb25UeXBlOjpQ
ZXJzaXN0ZW50TGljZW5zZSkKICAgICAgICAgJiYgIWNvbmZpZ3VyYXRpb24uc2Vzc2lvblR5cGVz
LmNvbnRhaW5zKENETVNlc3Npb25UeXBlOjpUZW1wb3JhcnkpCiAgICAgICAgICYmICFDRE1JbnN0
YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c3VwcG9ydHNQZXJzaXN0ZW50S2V5cygpKSB7
Ci0gICAgICAgIERFQlVHX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAiZmFsc2UsIHNl
c3Npb25UeXBlIFBlcnNpc3RlbnRMaWNlbnNlIG5vdCBzdXBwb3J0ZWQiKTsKKyAgICAgICAgSU5G
T19MT0coTE9HSURFTlRJRklFUiwgImZhbHNlLCBzZXNzaW9uVHlwZSBQZXJzaXN0ZW50TGljZW5z
ZSBub3Qgc3VwcG9ydGVkIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTI5
OCw3ICsyOTcsNyBAQCBib29sIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydHND
b25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZwogICAgICAgICAmJiAhV1RGOjph
bnlPZihjb25maWd1cmF0aW9uLmF1ZGlvQ2FwYWJpbGl0aWVzLCBbXShhdXRvJiBjYXBhYmlsaXR5
KSB7CiAgICAgICAgICAgICByZXR1cm4gQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9i
akM6OnN1cHBvcnRzTWVkaWFDYXBhYmlsaXR5KGNhcGFiaWxpdHkpOwogICAgICAgICB9KSkgewot
ICAgICAgICBERUJVR19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwgImZhbHNlLCBubyBh
dWRpbyBjb25maWd1cmF0aW9uIHN1cHBvcnRlZCIpOworICAgICAgICBJTkZPX0xPRyhMT0dJREVO
VElGSUVSLCAiZmFsc2UsIG5vIGF1ZGlvIGNvbmZpZ3VyYXRpb24gc3VwcG9ydGVkIik7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTMwNiwxMSArMzA1LDExIEBAIGJvb2wgQ0RN
UHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0c0NvbmZpZ3VyYXRpb24oY29uc3QgQ0RN
S2V5U3lzdGVtQ29uZmlnCiAgICAgICAgICYmICFXVEY6OmFueU9mKGNvbmZpZ3VyYXRpb24udmlk
ZW9DYXBhYmlsaXRpZXMsIFtdKGF1dG8mIGNhcGFiaWxpdHkpIHsKICAgICAgICAgICAgIHJldHVy
biBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c3VwcG9ydHNNZWRpYUNhcGFi
aWxpdHkoY2FwYWJpbGl0eSk7CiAgICAgICAgIH0pKSB7Ci0gICAgICAgICAgICBERUJVR19MT0df
SUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwgImZhbHNlLCBubyB2aWRlbyBjb25maWd1cmF0aW9u
IHN1cHBvcnRlZCIpOworICAgICAgICAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgImZhbHNl
LCBubyB2aWRlbyBjb25maWd1cmF0aW9uIHN1cHBvcnRlZCIpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCi0gICAgREVCVUdfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIsICJ0
cnVlLCBzdXBwb3J0ZWQiKTsKKyAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAidHJ1ZSwgc3Vw
cG9ydGVkIik7CiAgICAgcmV0dXJuIHRydWU7CiAjZWxzZQogICAgIHJldHVybiBmYWxzZTsKQEAg
LTM3MSw3ICszNzAsMTEgQEAgYm9vbCBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OmRpc3Rp
bmN0aXZlSWRlbnRpZmllcnNBcmVVbmlxdWVQZXJPcmlnaW5BbmRDbGUKIFJlZlB0cjxDRE1JbnN0
YW5jZT4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpjcmVhdGVJbnN0YW5jZSgpCiB7CiAj
aWYgSEFWRShBVkNPTlRFTlRLRVlTRVNTSU9OKQotICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ0RN
SW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMoKSk7CisgICAgYXV0byBpbnN0YW5jZSA9
IGFkb3B0UmVmKG5ldyBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQygqdGhpcykp
OworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIGluc3RhbmNlLT5zZXRMb2dJZGVudGlm
aWVyKG1fbG9nSWRlbnRpZmllcik7CisjZW5kaWYKKyAgICByZXR1cm4gaW5zdGFuY2U7CiAjZWxz
ZQogICAgIHJldHVybiBudWxscHRyOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxh
eVN0cmVhbWluZy5oCmluZGV4IDMxN2JiOGQ1N2U4NmMwNjIxNGUwYjQwNTlkZGY0Zjg4MDdjNzRj
NmIuLjQ1MWI4YmNjYTg5OTAxYTkyZGQ3ZDc5ODk0NDQyNWM4Nzk5ZDI2NzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxh
eVN0cmVhbWluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoK
IAogICAgIHZpcnR1YWwgfkNETUZhY3RvcnlGYWlyUGxheVN0cmVhbWluZygpOwogCi0gICAgc3Rk
Ojp1bmlxdWVfcHRyPENETVByaXZhdGU+IGNyZWF0ZUNETShjb25zdCBTdHJpbmcmKSBvdmVycmlk
ZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q0RNUHJpdmF0ZT4gY3JlYXRlQ0RNKGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IENETVByaXZhdGVDbGllbnQmKSBvdmVycmlkZTsKICAgICBib29sIHN1cHBvcnRz
S2V5U3lzdGVtKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogCiBwcml2YXRlOgpAQCAtNTIsMTEg
KzUyLDE0IEBAIHByaXZhdGU6CiBjbGFzcyBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmcgZmlu
YWwgOiBwdWJsaWMgQ0RNUHJpdmF0ZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6Ci0gICAgQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nKCk7CisgICAgQ0RNUHJpdmF0
ZUZhaXJQbGF5U3RyZWFtaW5nKGNvbnN0IENETVByaXZhdGVDbGllbnQmKTsKICAgICB2aXJ0dWFs
IH5DRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmcoKTsKIAogI2lmICFSRUxFQVNFX0xPR19ESVNB
QkxFRAotICAgIHZvaWQgc2V0TG9nZ2VyKExvZ2dlciYsIGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZp
ZXIpIGZpbmFsOworICAgIHZvaWQgc2V0TG9nSWRlbnRpZmllcihjb25zdCB2b2lkKiBsb2dJZGVu
dGlmaWVyKSBmaW5hbCB7IG1fbG9nSWRlbnRpZmllciA9IGxvZ0lkZW50aWZpZXI7IH0KKyAgICBj
b25zdCBMb2dnZXImIGxvZ2dlcigpIGNvbnN0IHsgcmV0dXJuIG1fbG9nZ2VyOyB9OworICAgIGNv
bnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2xvZ0lkZW50aWZpZXI7
IH0KKyAgICBjb25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSBjb25zdCB7IHJldHVybiAiQ0RNUHJp
dmF0ZUZhaXJQbGF5U3RyZWFtaW5nIjsgfQogI2VuZGlmCiAKICAgICBWZWN0b3I8QXRvbVN0cmlu
Zz4gc3VwcG9ydGVkSW5pdERhdGFUeXBlcygpIGNvbnN0IG92ZXJyaWRlOwpAQCAtODcsMTIgKzkw
LDggQEAgcHVibGljOgogCiBwcml2YXRlOgogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAotICAg
IExvZ2dlciogbG9nZ2VyUHRyKCkgY29uc3QgeyByZXR1cm4gbV9sb2dnZXIuZ2V0KCk7IH07Ci0g
ICAgY29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fbG9nSWRlbnRp
ZmllcjsgfQotICAgIGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJD
RE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmciOyB9Ci0KLSAgICBSZWZQdHI8TG9nZ2VyPiBtX2xv
Z2dlcjsKLSAgICBjb25zdCB2b2lkKiBtX2xvZ0lkZW50aWZpZXI7CisgICAgUmVmPGNvbnN0IExv
Z2dlcj4gbV9sb2dnZXI7CisgICAgY29uc3Qgdm9pZCogbV9sb2dJZGVudGlmaWVyIHsgbnVsbHB0
ciB9OwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETVByaXZhdGVNZWRp
YVNvdXJjZUFWRk9iakMuaAppbmRleCAxYjc2M2RkODRhMzhkNzVhYTc1NDRlNDQ5OTQ3ZmI2Y2Zk
YjExZTUyLi5mZmVmZDU5Y2E2ZDdhZGQwY2ZkMTQ2NWFmMzAwNzFhZjUwYzczYTIwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKQEAgLTQ4
LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIHN1cHBvcnRzS2V5U3lzdGVtQW5k
TWltZVR5cGUoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUp
OwogCiAgICAgYm9vbCBzdXBwb3J0c01JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpIG92
ZXJyaWRlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxMZWdhY3lDRE1TZXNzaW9uPiBjcmVhdGVTZXNz
aW9uKExlZ2FjeUNETVNlc3Npb25DbGllbnQqKSBvdmVycmlkZTsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8TGVnYWN5Q0RNU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbihMZWdhY3lDRE1TZXNzaW9uQ2xpZW50
Jikgb3ZlcnJpZGU7CiAKICAgICBMZWdhY3lDRE0qIGNkbSgpIGNvbnN0IHsgcmV0dXJuIG1fY2Rt
OyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akMubW0KaW5kZXggODYwMjVmMmE3YjE4NTc4ZDQ3YzgwODk1MTVkMzFjYWQ5ZTFjNjFkMS4uMmRh
ZjhlYWFjOTA4Y2ViYmI5NGRhMzMwNjQ0YTVlNzcxN2IzNjczOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETVByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL0NETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KQEAgLTEyNyw3ICsxMjcs
NyBAQCBib29sIENETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnN1cHBvcnRzTUlNRVR5cGUo
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKICAgICByZXR1cm4gTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDOjpzdXBwb3J0c1R5cGVBbmRDb2RlY3MocGFyYW1ldGVycykgIT0gTWVk
aWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0ZWQ7CiB9CiAKLXN0ZDo6dW5pcXVl
X3B0cjxMZWdhY3lDRE1TZXNzaW9uPiBDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpjcmVh
dGVTZXNzaW9uKExlZ2FjeUNETVNlc3Npb25DbGllbnQqIGNsaWVudCkKK3N0ZDo6dW5pcXVlX3B0
cjxMZWdhY3lDRE1TZXNzaW9uPiBDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpjcmVhdGVT
ZXNzaW9uKExlZ2FjeUNETVNlc3Npb25DbGllbnQmIGNsaWVudCkKIHsKICAgICBTdHJpbmcga2V5
U3lzdGVtID0gbV9jZG0tPmtleVN5c3RlbSgpOyAvLyBMb2NhbCBjb3B5IGZvciBTdHJpbmdWaWV3
IHVzYWdlCiAgICAgYXV0byBwYXJhbWV0ZXJzID0gcGFyc2VLZXlTeXN0ZW0obV9jZG0tPmtleVN5
c3RlbSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9jZi9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0YuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0NETVNlc3Npb25BVkZvdW5kYXRp
b25DRi5jcHAKaW5kZXggZGY0ZjE4MzVmNTZiM2Q2ZGJmMTRiNWQ0YjQ4ZWRhOGQ4N2I5OTQyZi4u
ZTgzZTUzM2E5Mzg2ODg4YjdjZmQ0MmEyMmVlMGUxZmUyODE2ODcwNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0NETVNlc3Npb25B
VkZvdW5kYXRpb25DRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL2NmL0NETVNlc3Npb25BVkZvdW5kYXRpb25DRi5jcHAKQEAgLTQ1LDcgKzQ1
LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1DRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0Y6
OkNETVNlc3Npb25BVkZvdW5kYXRpb25DRihNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25D
RiYgcGFyZW50LCBMZWdhY3lDRE1TZXNzaW9uQ2xpZW50KikKK0NETVNlc3Npb25BVkZvdW5kYXRp
b25DRjo6Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGKE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbkNGJiBwYXJlbnQsIExlZ2FjeUNETVNlc3Npb25DbGllbnQmKQogICAgIDogbV9wYXJlbnQo
cGFyZW50KQogICAgICwgbV9zZXNzaW9uSWQoY3JlYXRlVmVyc2lvbjRVVUlEU3RyaW5nKCkpCiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vY2YvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGLmgKaW5k
ZXggNzljYmZjZDgzZjEzOGMwZDA5MzdmYzU1ZTRmZDgwMDU2NzViMmI4Yi4uNDBkZmY2NDViMmVh
OTU4Mjk4ZmEzMjVhYzhmMjg5OTczZGJhNjI3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0NETVNlc3Npb25BVkZvdW5kYXRpb25D
Ri5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9j
Zi9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0YuaApAQCAtNDAsMTAgKzQwLDkgQEAgY2xhc3MgTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y7CiBjbGFzcyBDRE1TZXNzaW9uQVZGb3VuZGF0
aW9uQ0YgZmluYWwgOiBwdWJsaWMgTGVnYWN5Q0RNU2Vzc2lvbiB7CiAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGKE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGJiBwYXJlbnQsIExlZ2FjeUNETVNlc3Npb25DbGll
bnQqKTsKKyAgICBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0YoTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uQ0YmIHBhcmVudCwgTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCYpOwogCiBwcml2YXRl
OgotICAgIHZvaWQgc2V0Q2xpZW50KExlZ2FjeUNETVNlc3Npb25DbGllbnQqIGNsaWVudCkgZmlu
YWwgeyB9CiAgICAgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBtX3Nlc3Npb25JZDsgfQogICAgIFJlZlB0cjxVaW50OEFycmF5PiBnZW5lcmF0ZUtleVJlcXVl
c3QoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgVWludDhBcnJheSogaW5pdERhdGEsIFN0cmluZyYg
ZGVzdGluYXRpb25VUkwsIHVuc2lnbmVkIHNob3J0JiBlcnJvckNvZGUsIHVpbnQzMl90JiBzeXN0
ZW1Db2RlKSBmaW5hbDsKICAgICB2b2lkIHJlbGVhc2VLZXlzKCkgZmluYWw7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNG
LmNwcAppbmRleCBmNTVmNDMzNDRjMTI4YmY1MWI1Mzk5OGE1ZGI1ZDEyZDQyYzBjZGRjLi5jNzg3
NjYxNzhlMTJiOTRiMDg2ZGRjNmI1MjMxNzk5YTQ1YzAyYjRlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAK
QEAgLTExNjgsNyArMTE2OCw3IEBAIFJldGFpblB0cjxBVkNGQXNzZXRSZXNvdXJjZUxvYWRpbmdS
ZXF1ZXN0UmVmPiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6CiAgICAgcmV0dXJu
IG1fYXZmV3JhcHBlci0+dGFrZVJlcXVlc3RGb3JLZXlVUkkoa2V5VVJJKTsKIH0KIAotc3RkOjp1
bmlxdWVfcHRyPExlZ2FjeUNETVNlc3Npb24+IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bkNGOjpjcmVhdGVTZXNzaW9uKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBMZWdhY3lDRE1TZXNz
aW9uQ2xpZW50KiBjbGllbnQpCitzdGQ6OnVuaXF1ZV9wdHI8TGVnYWN5Q0RNU2Vzc2lvbj4gTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OmNyZWF0ZVNlc3Npb24oY29uc3QgU3RyaW5n
JiBrZXlTeXN0ZW0sIExlZ2FjeUNETVNlc3Npb25DbGllbnQmIGNsaWVudCkKIHsKICAgICBpZiAo
IWtleVN5c3RlbUlzU3VwcG9ydGVkKGtleVN5c3RlbSkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwpAQCAtMTE3OCw3ICsxMTc4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNETVNlc3Npb24+
IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpjcmVhdGVTZXNzaW8KIAogI2VsaWYg
RU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCiAKLXN0ZDo6dW5pcXVlX3B0cjxMZWdhY3lD
RE1TZXNzaW9uPiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6Y3JlYXRlU2Vzc2lv
bihjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCopCitzdGQ6
OnVuaXF1ZV9wdHI8TGVnYWN5Q0RNU2Vzc2lvbj4gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uQ0Y6OmNyZWF0ZVNlc3Npb24oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIExlZ2FjeUNETVNl
c3Npb25DbGllbnQmKQogewogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbkNGLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuaAppbmRl
eCBjY2Q2YWU3YmNmOGZhZDk2OTk1MjNlMGE3YWFhYTVkNjEzMDdmZDk2Li4xMjhjMTgzNGVjNTlk
MTY1MDg3MDQ2OWJmNjFkYTdkMGFlZDlmMTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uQ0YuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuaApAQCAtMTE3LDcgKzEx
Nyw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGNvbnRlbnRzTmVlZHNEaXNwbGF5KCk7
CiAKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8TGVnYWN5Q0RNU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbihjb25zdCBTdHJpbmcmLCBMZWdhY3lD
RE1TZXNzaW9uQ2xpZW50Kikgb3ZlcnJpZGU7CisgICAgc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNE
TVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oY29uc3QgU3RyaW5nJiwgTGVnYWN5Q0RNU2Vzc2lvbkNs
aWVudCYpIG92ZXJyaWRlOwogI2VuZGlmCiAKICAgICBTdHJpbmcgbGFuZ3VhZ2VPZlByaW1hcnlB
dWRpb1RyYWNrKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaAppbmRleCBk
NTlmZTQ4MDRkNThkZmU3OGNiNWJlYTcwNzRiMmU2ODcwNWMxZDQ5Li5iZWFlNGI2MWJjNzg4ZDE5
OGYzYmFiYTRlNTc3MDE0ZGVjMzdhOTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLmgKQEAgLTUx
LDYgKzUxLDcgQEAgY2xhc3MgTG9nZ2VyOwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBD
RE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM7CitjbGFzcyBDRE1Qcml2
YXRlRmFpclBsYXlTdHJlYW1pbmc7CiBzdHJ1Y3QgQ0RNTWVkaWFDYXBhYmlsaXR5OwogCiBjbGFz
cyBBVkNvbnRlbnRLZXlTZXNzaW9uRGVsZWdhdGVDbGllbnQgewpAQCAtNzEsMTMgKzcyLDkgQEAg
cHVibGljOgogCiBjbGFzcyBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQyBmaW5h
bCA6IHB1YmxpYyBDRE1JbnN0YW5jZSwgcHVibGljIEFWQ29udGVudEtleVNlc3Npb25EZWxlZ2F0
ZUNsaWVudCwgcHVibGljIENhbk1ha2VXZWFrUHRyPENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDPiB7CiBwdWJsaWM6Ci0gICAgQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakMoKTsKKyAgICBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQyhjb25zdCBD
RE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmcmKTsKICAgICB2aXJ0dWFsIH5DRE1JbnN0YW5jZUZh
aXJQbGF5U3RyZWFtaW5nQVZGT2JqQygpID0gZGVmYXVsdDsKIAotI2lmICFSRUxFQVNFX0xPR19E
SVNBQkxFRAotICAgIHZvaWQgc2V0TG9nZ2VyKExvZ2dlciYsIGNvbnN0IHZvaWQqIGxvZ0lkZW50
aWZpZXIpOwotI2VuZGlmCi0KICAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c1BlcnNpc3RhYmxlU3Rh
dGUoKTsKICAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c1BlcnNpc3RlbnRLZXlzKCk7CiAgICAgc3Rh
dGljIGJvb2wgc3VwcG9ydHNNZWRpYUNhcGFiaWxpdHkoY29uc3QgQ0RNTWVkaWFDYXBhYmlsaXR5
Jik7CkBAIC0xMjYsMTUgKzEyMywxNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNlc3Npb25LZXlT
dGF0dXNlc0NoYW5nZWQoY29uc3QgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDJik7CiAKLXByaXZhdGU6Ci0gICAgdm9pZCBoYW5kbGVVbmV4cGVjdGVkUmVxdWVzdHMo
VmVjdG9yPFJldGFpblB0cjxBVkNvbnRlbnRLZXlSZXF1ZXN0Pj4mJik7Ci0KICNpZiAhUkVMRUFT
RV9MT0dfRElTQUJMRUQKLSAgICBMb2dnZXIqIGxvZ2dlclB0cigpIGNvbnN0IHsgcmV0dXJuIG1f
bG9nZ2VyLmdldCgpOyB9OworICAgIHZvaWQgc2V0TG9nSWRlbnRpZmllcihjb25zdCB2b2lkKiBs
b2dJZGVudGlmaWVyKSBmaW5hbCB7IG1fbG9nSWRlbnRpZmllciA9IGxvZ0lkZW50aWZpZXI7IH0K
KyAgICBjb25zdCBMb2dnZXImIGxvZ2dlcigpIGNvbnN0IHsgcmV0dXJuIG1fbG9nZ2VyOyB9Owog
ICAgIGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2xvZ0lkZW50
aWZpZXI7IH0KICAgICBjb25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSBjb25zdCB7IHJldHVybiAi
Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMiOyB9CiAjZW5kaWYKIAorcHJpdmF0
ZToKKyAgICB2b2lkIGhhbmRsZVVuZXhwZWN0ZWRSZXF1ZXN0cyhWZWN0b3I8UmV0YWluUHRyPEFW
Q29udGVudEtleVJlcXVlc3Q+PiYmKTsKKwogICAgIFdlYWtQdHI8Q0RNSW5zdGFuY2VDbGllbnQ+
IG1fY2xpZW50OwogICAgIFJldGFpblB0cjxBVkNvbnRlbnRLZXlTZXNzaW9uPiBtX3Nlc3Npb247
CiAgICAgUmV0YWluUHRyPFdlYkNvcmVGUFNDb250ZW50S2V5U2Vzc2lvbkRlbGVnYXRlPiBtX2Rl
bGVnYXRlOwpAQCAtMTQ1LDcgKzE0Myw3IEBAIHByaXZhdGU6CiAgICAgSGFzaFNldDxSZXRhaW5Q
dHI8QVZDb250ZW50S2V5UmVxdWVzdD4+IG1fdW5leHBlY3RlZEtleVJlcXVlc3RzOwogICAgIFdl
YWtIYXNoU2V0PEtleVN0YXR1c2VzQ2hhbmdlZE9ic2VydmVyPiBtX2tleVN0YXR1c0NoYW5nZWRP
YnNlcnZlcnM7CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgUmVmUHRyPExvZ2dlcj4g
bV9sb2dnZXI7CisgICAgUmVmPGNvbnN0IExvZ2dlcj4gbV9sb2dnZXI7CiAgICAgY29uc3Qgdm9p
ZCogbV9sb2dJZGVudGlmaWVyIHsgbnVsbHB0ciB9OwogI2VuZGlmCiB9OwpAQCAtMTU1LDEwICsx
NTMsNiBAQCBwdWJsaWM6CiAgICAgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDKFJlZjxDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQz4mJik7CiAgICAg
dmlydHVhbCB+Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDKCk7CiAK
LSNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLSAgICB2b2lkIHNldExvZ2dlcihMb2dnZXImLCBj
b25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKTsKLSNlbmRpZgotCiAgICAgLy8gQ0RNSW5zdGFuY2VT
ZXNzaW9uCiAgICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0
cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0
YSwgTGljZW5zZUNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25z
dCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIExp
Y2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKQEAgLTIxMCw3ICsyMDQsOCBAQCBwcml2YXRl
OgogICAgIHN0ZDo6b3B0aW9uYWw8Q0RNS2V5U3RhdHVzPiBwcm90ZWN0aW9uU3RhdHVzRm9yRGlz
cGxheUlEKEFWQ29udGVudEtleVJlcXVlc3QgKiwgc3RkOjpvcHRpb25hbDxQbGF0Zm9ybURpc3Bs
YXlJRD4pIGNvbnN0OwogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgTG9nZ2VyKiBs
b2dnZXJQdHIoKSBjb25zdCB7IHJldHVybiBtX2xvZ2dlci5nZXQoKTsgfTsKKyAgICB2b2lkIHNl
dExvZ0lkZW50aWZpZXIoY29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcikgZmluYWwgeyBtX2xvZ0lk
ZW50aWZpZXIgPSBsb2dJZGVudGlmaWVyOyB9CisgICAgY29uc3QgTG9nZ2VyJiBsb2dnZXIoKSBj
b25zdCB7IHJldHVybiBtX2xvZ2dlcjsgfTsKICAgICBjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVy
KCkgY29uc3QgeyByZXR1cm4gbV9sb2dJZGVudGlmaWVyOyB9CiAgICAgY29uc3QgY2hhciogbG9n
Q2xhc3NOYW1lKCkgY29uc3QgeyByZXR1cm4gIkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQyI7IH0KICNlbmRpZgpAQCAtMjQwLDcgKzIzNSw3IEBAIHByaXZhdGU6CiAg
ICAgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayBtX3JlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2s7
CiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLSAgICBSZWZQdHI8TG9nZ2VyPiBtX2xvZ2dl
cjsKKyAgICBSZWY8Y29uc3QgTG9nZ2VyPiBtX2xvZ2dlcjsKICAgICBjb25zdCB2b2lkKiBtX2xv
Z0lkZW50aWZpZXIgeyBudWxscHRyIH07CiAjZW5kaWYKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZh
aXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
Lm1tCmluZGV4IDk2MjVmYTk1MDNlN2JlYmM3MTlmYzRiMzdhNjNjMzhkNzQ1MDMwOGEuLjk1YmRk
Mjc5ODlhMjc3MjdjMjE3MzhjOWEyMzhiM2FiNTM4MTA5ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZP
YmpDLm1tCkBAIC0yMzMsMTUgKzIzMywxMiBAQCBzdGF0aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IGluaXRpYWxpemF0aW9uRGF0YUZvclJlcXVlc3QoQVZDb250ZW50S2V5UmVxdQogICAg
IHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZXF1ZXN0LmluaXRpYWxpemF0aW9uRGF0YSk7
CiB9CiAKLUNETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpDRE1JbnN0YW5jZUZh
aXJQbGF5U3RyZWFtaW5nQVZGT2JqQygpID0gZGVmYXVsdDsKLQorQ0RNSW5zdGFuY2VGYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakM6OkNETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDKGNv
bnN0IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZyYgY2RtUHJpdmF0ZSkKICNpZiAhUkVMRUFT
RV9MT0dfRElTQUJMRUQKLXZvaWQgQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6
OnNldExvZ2dlcihMb2dnZXImIGxvZ2dlciwgY29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcikKKyAg
ICA6IG1fbG9nZ2VyKGNkbVByaXZhdGUubG9nZ2VyKCkpCisjZW5kaWYKIHsKLSAgICBtX2xvZ2dl
ciA9ICZsb2dnZXI7Ci0gICAgbV9sb2dJZGVudGlmaWVyID0gbG9nSWRlbnRpZmllcjsKIH0KLSNl
bmRpZgogCiBBVkNvbnRlbnRLZXlTZXNzaW9uKiBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQzo6Y29udGVudEtleVNlc3Npb24oKQogewpAQCAtMzg4LDE0ICszODUsMTQgQEAgdm9p
ZCBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6aW5pdGlhbGl6ZVdpdGhDb25m
aWd1cmF0aW9uKGNvbnN0IENETUsKIAogdm9pZCBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQzo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYgc2VydmVyQ2VydGlmaWNhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQogewotICAg
IERFQlVHX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSKTsKKyAgICBJTkZPX0xPRyhMT0dJ
REVOVElGSUVSKTsKICAgICBtX3NlcnZlckNlcnRpZmljYXRlID0gV1RGTW92ZShzZXJ2ZXJDZXJ0
aWZpY2F0ZSk7CiAgICAgY2FsbGJhY2soU3VjY2VlZGVkKTsKIH0KIAogdm9pZCBDRE1JbnN0YW5j
ZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJp
bmcmIHN0b3JhZ2VEaXJlY3RvcnkpCiB7Ci0gICAgREVCVUdfTE9HX0lGX1BPU1NJQkxFKExPR0lE
RU5USUZJRVIpOworICAgIElORk9fTE9HKExPR0lERU5USUZJRVIpOwogICAgIGlmIChzdG9yYWdl
RGlyZWN0b3J5LmlzRW1wdHkoKSkgewogICAgICAgICBtX3N0b3JhZ2VVUkwgPSBuaWw7CiAgICAg
ICAgIHJldHVybjsKQEAgLTQ2NCw3ICs0NjEsNyBAQCB2b2lkIENETUluc3RhbmNlRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBERUJVR19MT0dfSUZfUE9TU0lCTEUoTE9HSURF
TlRJRklFUiwgIi0gVW5leHBlY3RlZCByZXF1ZXN0Iik7CisgICAgQUxXQVlTX0xPRyhMT0dJREVO
VElGSUVSLCAiLSBVbmV4cGVjdGVkIHJlcXVlc3QiKTsKIAogICAgIGhhbmRsZVVuZXhwZWN0ZWRS
ZXF1ZXN0cyh7eyByZXF1ZXN0IH19KTsKIH0KQEAgLTQ5OCw3ICs0OTUsNyBAQCB2b2lkIENETUlu
c3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVuZXdpbmdSZXF1ZXN0
KEFWQ29udGVudEtleQogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIEVS
Uk9SX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAiLSBubyByZXNwb25zaWJsZSBzZXNz
aW9uOyBkcm9wcGluZyIpOworICAgIEVSUk9SX0xPRyhMT0dJREVOVElGSUVSLCAiLSBubyByZXNw
b25zaWJsZSBzZXNzaW9uOyBkcm9wcGluZyIpOwogfQogCiB2b2lkIENETUluc3RhbmNlRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUGVyc2lzdGFibGVSZXF1ZXN0KEFWQ29udGVu
dEtleVJlcXVlc3QgKnJlcXVlc3QpCkBAIC01MDksNyArNTA2LDcgQEAgdm9pZCBDRE1JbnN0YW5j
ZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVBlcnNpc3RhYmxlUmVxdWVzdChB
VkNvbnRlbnQKICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICBFUlJPUl9M
T0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwgIi0gbm8gcmVzcG9uc2libGUgc2Vzc2lvbjsg
ZHJvcHBpbmciKTsKKyAgICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwgIi0gbm8gcmVzcG9uc2li
bGUgc2Vzc2lvbjsgZHJvcHBpbmciKTsKIH0KIAogdm9pZCBDRE1JbnN0YW5jZUZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQzo6ZGlkRmFpbFRvUHJvdmlkZVJlcXVlc3QoQVZDb250ZW50S2V5UmVxdWVz
dCAqcmVxdWVzdCwgTlNFcnJvciAqZXJyb3IpCkBAIC01MjAsNyArNTE3LDcgQEAgdm9pZCBDRE1J
bnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkRmFpbFRvUHJvdmlkZVJlcXVlc3Qo
QVZDb250ZW50S2V5UmUKICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICBF
UlJPUl9MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwgIi0gbm8gcmVzcG9uc2libGUgc2Vz
c2lvbjsgZHJvcHBpbmciKTsKKyAgICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwgIi0gbm8gcmVz
cG9uc2libGUgc2Vzc2lvbjsgZHJvcHBpbmciKTsKIH0KIAogdm9pZCBDRE1JbnN0YW5jZUZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVxdWVzdERpZFN1Y2NlZWQoQVZDb250ZW50S2V5UmVxdWVz
dCAqcmVxdWVzdCkKQEAgLTUzMSw3ICs1MjgsNyBAQCB2b2lkIENETUluc3RhbmNlRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDOjpyZXF1ZXN0RGlkU3VjY2VlZChBVkNvbnRlbnRLZXlSZXF1ZXN0CiAg
ICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgRVJST1JfTE9HX0lGX1BPU1NJ
QkxFKExPR0lERU5USUZJRVIsICItIG5vIHJlc3BvbnNpYmxlIHNlc3Npb247IGRyb3BwaW5nIik7
CisgICAgRVJST1JfTE9HKExPR0lERU5USUZJRVIsICItIG5vIHJlc3BvbnNpYmxlIHNlc3Npb247
IGRyb3BwaW5nIik7CiB9CiAKIGJvb2wgQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9i
akM6OnNob3VsZFJldHJ5UmVxdWVzdEZvclJlYXNvbihBVkNvbnRlbnRLZXlSZXF1ZXN0ICpyZXF1
ZXN0LCBOU1N0cmluZyAqcmVhc29uKQpAQCAtNTQwLDcgKzUzNyw3IEBAIGJvb2wgQ0RNSW5zdGFu
Y2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnNob3VsZFJldHJ5UmVxdWVzdEZvclJlYXNvbihB
VkNvbnRlbnRLCiAgICAgICAgIHJldHVybiBzZXNzaW9uLT5zaG91bGRSZXRyeVJlcXVlc3RGb3JS
ZWFzb24ocmVxdWVzdCwgcmVhc29uKTsKIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
IEVSUk9SX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAiLSBubyByZXNwb25zaWJsZSBz
ZXNzaW9uOyBkcm9wcGluZyIpOworICAgIEVSUk9SX0xPRyhMT0dJREVOVElGSUVSLCAiLSBubyBy
ZXNwb25zaWJsZSBzZXNzaW9uOyBkcm9wcGluZyIpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApA
QCAtNTU0LDcgKzU1MSw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9i
akM6Omdyb3VwU2Vzc2lvbklkZW50aWZpZXJDaGFuZ2VkKEFWQ29udGVuCiB7CiAjaWYgSEFWRShB
VkNPTlRFTlRLRVlSRVBPUlRHUk9VUCkKICAgICBpZiAoZ3JvdXAgPT0gW21fc2Vzc2lvbiBkZWZh
dWx0Q29udGVudEtleUdyb3VwXSkgewotICAgICAgICBJTkZPX0xPR19JRl9QT1NTSUJMRShMT0dJ
REVOVElGSUVSLCAiLSBkZWZhdWx0IHVudXNlZCBncm91cCBpZGVudGlmaWVyIGNoYW5nZWQ7IGRy
b3BwaW5nIik7CisgICAgICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICItIGRlZmF1bHQgdW51
c2VkIGdyb3VwIGlkZW50aWZpZXIgY2hhbmdlZDsgZHJvcHBpbmciKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApAQCAtNTY0LDcgKzU2MSw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VGYWlyUGxheVN0
cmVhbWluZ0FWRk9iakM6Omdyb3VwU2Vzc2lvbklkZW50aWZpZXJDaGFuZ2VkKEFWQ29udGVuCiAg
ICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgRVJST1JfTE9HX0lGX1BPU1NJ
QkxFKExPR0lERU5USUZJRVIsICItIG5vIHJlc3BvbnNpYmxlIHNlc3Npb247IGRyb3BwaW5nIik7
CisgICAgRVJST1JfTE9HKExPR0lERU5USUZJRVIsICItIG5vIHJlc3BvbnNpYmxlIHNlc3Npb247
IGRyb3BwaW5nIik7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShncm91cCk7CiAgICAgVU5VU0VE
X1BBUkFNKHNlc3Npb25JZGVudGlmaWVyKTsKQEAgLTU4Nyw3ICs1ODQsNyBAQCB2b2lkIENETUlu
c3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpleHRlcm5hbFByb3RlY3Rpb25TdGF0dXNE
aWRDaGFuZ2VGb3JDbwogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIEVS
Uk9SX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAiLSBubyByZXNwb25zaWJsZSBzZXNz
aW9uOyBkcm9wcGluZyIpOworICAgIEVSUk9SX0xPRyhMT0dJREVOVElGSUVSLCAiLSBubyByZXNw
b25zaWJsZSBzZXNzaW9uOyBkcm9wcGluZyIpOwogfQogCiBDRE1JbnN0YW5jZVNlc3Npb25GYWly
UGxheVN0cmVhbWluZ0FWRk9iakMqIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
OjpzZXNzaW9uRm9yS2V5SURzKGNvbnN0IEtleXMmIGtleUlEcykgY29uc3QKQEAgLTY3MCw2ICs2
NjcsOSBAQCB2b2lkIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpzZXNzaW9u
S2V5U3RhdHVzZXNDaGFuZ2VkKGNvbnN0IENETUlucwogQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakMoUmVmPENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDPiYmIGluc3RhbmNl
KQogICAgIDogbV9pbnN0YW5jZShXVEZNb3ZlKGluc3RhbmNlKSkKICAgICAsIG1fZGVsZWdhdGUo
YWRvcHROUyhbW1dlYkNvcmVGUFNDb250ZW50S2V5U2Vzc2lvbkRlbGVnYXRlIGFsbG9jXSBpbml0
V2l0aFBhcmVudDp0aGlzXSkpCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgLCBtX2xv
Z2dlcihtX2luc3RhbmNlLT5sb2dnZXIoKSkKKyNlbmRpZgogewogfQogCkBAIC02NzgsMTQgKzY3
OCw2IEBAIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6fkNETUlu
c3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nCiAgICAgW21fZGVsZWdhdGUgaW52YWxpZGF0
ZV07CiB9CiAKLSNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLXZvaWQgQ0RNSW5zdGFuY2VTZXNz
aW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpzZXRMb2dnZXIoTG9nZ2VyJiBsb2dnZXIsIGNv
bnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIpCi17Ci0gICAgbV9sb2dnZXIgPSAmbG9nZ2VyOwotICAg
IG1fbG9nSWRlbnRpZmllciA9IGxvZ0lkZW50aWZpZXI7Ci19Ci0jZW5kaWYKLQogdXNpbmcgS2V5
cyA9IENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6S2V5czsKIHN0
YXRpYyBLZXlzIGtleUlEc0ZvclJlcXVlc3QoQVZDb250ZW50S2V5UmVxdWVzdCogcmVxdWVzdCkK
IHsKQEAgLTcyNSwyNSArNzE3LDI1IEBAIEtleXMgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDOjprZXlJRHMoKQogdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2Vuc2VUeXBl
LCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBpZiAo
IWlzTGljZW5zZVR5cGVTdXBwb3J0ZWQobGljZW5zZVR5cGUpKSB7Ci0gICAgICAgIERFQlVHX0xP
R19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAiIGZhbHNlLCBsaWNlbnNlVHlwZSBcIiIsIGxp
Y2Vuc2VUeXBlLCAiXCIgbm90IHN1cHBvcnRlZCIpOworICAgICAgICBFUlJPUl9MT0coTE9HSURF
TlRJRklFUiwgIiBmYWxzZSwgbGljZW5zZVR5cGUgXCIiLCBsaWNlbnNlVHlwZSwgIlwiIG5vdCBz
dXBwb3J0ZWQiKTsKICAgICAgICAgY2FsbGJhY2soU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgZW1w
dHlTdHJpbmcoKSwgZmFsc2UsIEZhaWxlZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAg
ICBpZiAoIW1faW5zdGFuY2UtPnNlcnZlckNlcnRpZmljYXRlKCkpIHsKLSAgICAgICAgREVCVUdf
TE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIsICIgZmFsc2UsIG5vIHNlcnZlckNlcnRpZmlj
YXRlIik7CisgICAgICAgIEVSUk9SX0xPRyhMT0dJREVOVElGSUVSLCAiIGZhbHNlLCBubyBzZXJ2
ZXJDZXJ0aWZpY2F0ZSIpOwogICAgICAgICBjYWxsYmFjayhTaGFyZWRCdWZmZXI6OmNyZWF0ZSgp
LCBlbXB0eVN0cmluZygpLCBmYWxzZSwgRmFpbGVkKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAogICAgIGlmICghZW5zdXJlU2Vzc2lvbk9yR3JvdXAoKSkgewotICAgICAgICBERUJVR19MT0df
SUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwgIiBmYWxzZSwgY291bGQgbm90IGNyZWF0ZSBzZXNz
aW9uIG9yIGdyb3VwIG9iamVjdCIpOworICAgICAgICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwg
IiBmYWxzZSwgY291bGQgbm90IGNyZWF0ZSBzZXNzaW9uIG9yIGdyb3VwIG9iamVjdCIpOwogICAg
ICAgICBjYWxsYmFjayhTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBlbXB0eVN0cmluZygpLCBmYWxz
ZSwgRmFpbGVkKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmIChhdXRvIHVuZXhw
ZWN0ZWRSZXF1ZXN0ID0gbV9pbnN0YW5jZS0+dGFrZVVuZXhwZWN0ZWRLZXlSZXF1ZXN0Rm9ySW5p
dGlhbGl6YXRpb25EYXRhKGluaXREYXRhVHlwZSwgaW5pdERhdGEpKSB7Ci0gICAgICAgIERFQlVH
X0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAiIGZvdW5kIHVuZXhwZWN0ZWRSZXF1ZXN0
IG1hdGNoaW5nIGluaXREYXRhIik7CisgICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwg
IiBmb3VuZCB1bmV4cGVjdGVkUmVxdWVzdCBtYXRjaGluZyBpbml0RGF0YSIpOwogI2lmIEhBVkUo
QVZDT05URU5US0VZUkVQT1JUR1JPVVApCiAgICAgICAgIGlmIChtX2dyb3VwKSB7CiAgICAgICAg
ICAgICBBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0JFR0lOCkBAIC03NzAsMTIgKzc2Miwx
MiBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVx
dWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgbGljZQogICAgIH0KICNlbmRpZgogICAgIGVsc2Ugewot
ICAgICAgICBERUJVR19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwgIiBmYWxzZSwgaW5p
dERhdGFUeXBlIG5vdCBzdXBwcG9ydGVkIik7CisgICAgICAgIEVSUk9SX0xPRyhMT0dJREVOVElG
SUVSLCAiIGZhbHNlLCBpbml0RGF0YVR5cGUgbm90IHN1cHBwb3J0ZWQiKTsKICAgICAgICAgY2Fs
bGJhY2soU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgZW1wdHlTdHJpbmcoKSwgZmFsc2UsIEZhaWxl
ZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBERUJVR19MT0dfSUZfUE9TU0lCTEUo
TE9HSURFTlRJRklFUiwgIiBwcm9jZXNzaW5nIHJlcXVlc3QiKTsKKyAgICBBTFdBWVNfTE9HKExP
R0lERU5USUZJRVIsICIgcHJvY2Vzc2luZyByZXF1ZXN0Iik7CiAgICAgbV9yZXF1ZXN0TGljZW5z
ZUNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7CiAKICNpZiBIQVZFKEFWQ09OVEVOVEtFWVJF
UE9SVEdST1VQKQpAQCAtODE1LDEyICs4MDcsMTIgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25G
YWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGkK
ICAgICAgICAgYXV0byogc3RvcmFnZVVSTCA9IG1faW5zdGFuY2UtPnN0b3JhZ2VVUkwoKTsKIAog
ICAgICAgICBpZiAoIWNlcnRpZmljYXRlIHx8ICFzdG9yYWdlVVJMKSB7Ci0gICAgICAgICAgICBE
RUJVR19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwgIlwiYWNrbm93bGVkZ2VkXCIsIEZh
aWxlZCwgbm8gY2VydGlmaWNhdGUgYW5kIHN0b3JhZ2VVUkwiKTsKKyAgICAgICAgICAgIEVSUk9S
X0xPRyhMT0dJREVOVElGSUVSLCAiXCJhY2tub3dsZWRnZWRcIiwgRmFpbGVkLCBubyBjZXJ0aWZp
Y2F0ZSBhbmQgc3RvcmFnZVVSTCIpOwogICAgICAgICAgICAgY2FsbGJhY2soZmFsc2UsIHN0ZDo6
bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIEZhaWxlZCk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBERUJVR19MT0dfSUZfUE9TU0lCTEUoTE9H
SURFTlRJRklFUiwgIlwiYWNrbm93bGVkZ2VkXCIsIFN1Y2NlZWRlZCwgcmVtb3ZpbmcgZXhwaXJl
ZCBzZXNzaW9uIHJlcG9ydCIpOworICAgICAgICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwgIlwi
YWNrbm93bGVkZ2VkXCIsIFN1Y2NlZWRlZCwgcmVtb3ZpbmcgZXhwaXJlZCBzZXNzaW9uIHJlcG9y
dCIpOwogICAgICAgICBhdXRvIGV4cGlyZWRTZXNzaW9ucyA9IGNyZWF0ZU5TQXJyYXkobV9leHBp
cmVkU2Vzc2lvbnMsIFtdIChhdXRvJiBkYXRhKSB7CiAgICAgICAgICAgICByZXR1cm4gZGF0YS5n
ZXQoKTsKICAgICAgICAgfSk7CkBAIC04MzMsMTEgKzgyNSwxMSBAQCB2b2lkIENETUluc3RhbmNl
U2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJp
bmcmLCBMaQogICAgIGlmICghbV9yZXF1ZXN0cy5pc0VtcHR5KCkgJiYgaXNFcXVhbChyZXNwb25z
ZURhdGEsICJyZW5ldyJfcykpIHsKICAgICAgICAgYXV0byByZXF1ZXN0ID0gbGFzdEtleVJlcXVl
c3QoKTsKICAgICAgICAgaWYgKCFyZXF1ZXN0KSB7Ci0gICAgICAgICAgICBERUJVR19MT0dfSUZf
UE9TU0lCTEUoTE9HSURFTlRJRklFUiwgIlwicmVuZXdcIiwgRmFpbGVkLCBubyBvdXRzdGFuZGlu
ZyBrZXlzIik7CisgICAgICAgICAgICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwgIlwicmVuZXdc
IiwgRmFpbGVkLCBubyBvdXRzdGFuZGluZyBrZXlzIik7CiAgICAgICAgICAgICBjYWxsYmFjayhm
YWxzZSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgRmFpbGVkKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBERUJVR19MT0dfSUZfUE9T
U0lCTEUoTE9HSURFTlRJRklFUiwgIlwicmVuZXdcIiwgcHJvY2Vzc2luZyByZW5ld2FsIik7Cisg
ICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgIlwicmVuZXdcIiwgcHJvY2Vzc2luZyBy
ZW5ld2FsIik7CiAgICAgICAgIGF1dG8gc2Vzc2lvbiA9IG1fc2Vzc2lvbiA/IG1fc2Vzc2lvbi5n
ZXQoKSA6IG1faW5zdGFuY2UtPmNvbnRlbnRLZXlTZXNzaW9uKCk7CiAgICAgICAgIFtzZXNzaW9u
IHJlbmV3RXhwaXJpbmdSZXNwb25zZURhdGFGb3JDb250ZW50S2V5UmVxdWVzdDpyZXF1ZXN0XTsK
ICAgICAgICAgbV91cGRhdGVMaWNlbnNlQ2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKTsKQEAg
LTg0NSwxMyArODM3LDEzIEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpCiAgICAgfQogCiAgICAg
aWYgKCFtX2N1cnJlbnRSZXF1ZXN0KSB7Ci0gICAgICAgIERFQlVHX0xPR19JRl9QT1NTSUJMRShM
T0dJREVOVElGSUVSLCAiIEZhaWxlZCwgbm8gY3VycmVudFJlcXVlc3QiKTsKKyAgICAgICAgRVJS
T1JfTE9HKExPR0lERU5USUZJRVIsICIgRmFpbGVkLCBubyBjdXJyZW50UmVxdWVzdCIpOwogICAg
ICAgICBjYWxsYmFjayhmYWxzZSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVs
bG9wdCwgRmFpbGVkKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBLZXlzIGtleUlEcyA9
IGtleUlEc0ZvclJlcXVlc3QobV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpKTsKICAgICBpZiAoa2V5
SURzLmlzRW1wdHkoKSkgewotICAgICAgICBERUJVR19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJ
RklFUiwgIiBGYWlsZWQsIG5vIGtleUlEcyBpbiBjdXJyZW50UmVxdWVzdCIpOworICAgICAgICBF
UlJPUl9MT0coTE9HSURFTlRJRklFUiwgIiBGYWlsZWQsIG5vIGtleUlEcyBpbiBjdXJyZW50UmVx
dWVzdCIpOwogICAgICAgICBjYWxsYmFjayhmYWxzZSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxv
cHQsIHN0ZDo6bnVsbG9wdCwgRmFpbGVkKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTg3
MCwxMiArODYyLDEyIEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpCiAgICAgICAgICAgICAgICAg
cmV0dXJuOwogCiAgICAgICAgICAgICBpZiAoIXJlc3BvbnNlcyB8fCByZXNwb25zZXMudmFsdWUo
KS5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICBERUJVR19MT0dfSUZfUE9TU0lCTEUoTE9H
SURFTlRJRklFUiwgIidjZW5jJyBpbml0RGF0YSwgRmFpbGVkLCBubyByZXNwb25zZXMiKTsKKyAg
ICAgICAgICAgICAgICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwgIidjZW5jJyBpbml0RGF0YSwg
RmFpbGVkLCBubyByZXNwb25zZXMiKTsKICAgICAgICAgICAgICAgICBtX3VwZGF0ZUxpY2Vuc2VD
YWxsYmFjayh0cnVlLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBG
YWlsZWQpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAotICAgICAg
ICAgICAgREVCVUdfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIsICInY2VuYycgaW5pdERh
dGEsIFN1Y2NlZWRlZCwgbm8ga2V5SURzIGluIGN1cnJlbnRSZXF1ZXN0Iik7CisgICAgICAgICAg
ICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICInY2VuYycgaW5pdERhdGEsIFN1Y2NlZWRlZCwg
bm8ga2V5SURzIGluIGN1cnJlbnRSZXF1ZXN0Iik7CiAgICAgICAgICAgICBtX3VwZGF0ZUxpY2Vu
c2VDYWxsYmFjayhmYWxzZSwga2V5U3RhdHVzZXMoKSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxv
cHQsIFN1Y2NlZWRlZCk7CiAgICAgICAgICAgICBtX3VwZGF0ZVJlc3BvbnNlQ29sbGVjdG9yID0g
bnVsbHB0cjsKICAgICAgICAgICAgIG1fY3VycmVudFJlcXVlc3QgPSBzdGQ6Om51bGxvcHQ7CkBA
IC05NDgsMTMgKzk0MCwxMyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaQogICAgICAgICB9Owog
ICAgICAgICBmb3IgKGF1dG8gdmFsdWUgOiAqYXJyYXkpIHsKICAgICAgICAgICAgIGlmICghcGFy
c2VSZXNwb25zZShXVEZNb3ZlKHZhbHVlKSkpIHsKLSAgICAgICAgICAgICAgICBERUJVR19MT0df
SUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwgIidjZW5jJyBpbml0RGF0YSwgRmFpbGVkLCBjb3Vs
ZCBub3QgcGFyc2UgcmVzcG9uc2UiKTsKKyAgICAgICAgICAgICAgICBFUlJPUl9MT0coTE9HSURF
TlRJRklFUiwgIidjZW5jJyBpbml0RGF0YSwgRmFpbGVkLCBjb3VsZCBub3QgcGFyc2UgcmVzcG9u
c2UiKTsKICAgICAgICAgICAgICAgICBjYWxsYmFjayhmYWxzZSwgc3RkOjpudWxsb3B0LCBzdGQ6
Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgRmFpbGVkKTsKICAgICAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9IGVsc2UgewotICAgICAgICBERUJVR19M
T0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwgIidzaW5mJyBpbml0RGF0YSwgcHJvY2Vzc2lu
ZyByZXNwb25zZSIpOworICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICInc2luZicg
aW5pdERhdGEsIHByb2Nlc3NpbmcgcmVzcG9uc2UiKTsKICAgICAgICAgW21fY3VycmVudFJlcXVl
c3QudmFsdWUoKS5yZXF1ZXN0cy5maXJzdCgpIHByb2Nlc3NDb250ZW50S2V5UmVzcG9uc2U6W1BB
TDo6Z2V0QVZDb250ZW50S2V5UmVzcG9uc2VDbGFzcygpIGNvbnRlbnRLZXlSZXNwb25zZVdpdGhG
YWlyUGxheVN0cmVhbWluZ0tleVJlc3BvbnNlRGF0YTpyZXNwb25zZURhdGEtPm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXV07CiAgICAgfQogCkBAIC05NzQsMTMgKzk2Niwx
MyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6bG9h
ZFNlc3Npb24oTGljZW5zZVR5cGUgbGljZW5zZQogICAgIGlmIChsaWNlbnNlVHlwZSA9PSBMaWNl
bnNlVHlwZTo6UGVyc2lzdGVudFVzYWdlUmVjb3JkKSB7CiAgICAgICAgIGF1dG8qIHN0b3JhZ2VV
UkwgPSBtX2luc3RhbmNlLT5zdG9yYWdlVVJMKCk7CiAgICAgICAgIGlmICghbV9pbnN0YW5jZS0+
cGVyc2lzdGVudFN0YXRlQWxsb3dlZCgpIHx8ICFzdG9yYWdlVVJMKSB7Ci0gICAgICAgICAgICBE
RUJVR19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwgIiBGYWlsZWQsIG1pc21hdGNoZWQg
c2Vzc2lvbiB0eXBlIik7CisgICAgICAgICAgICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwgIiBG
YWlsZWQsIG1pc21hdGNoZWQgc2Vzc2lvbiB0eXBlIik7CiAgICAgICAgICAgICBjYWxsYmFjayhz
dGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBGYWlsZWQsIFNlc3Npb25M
b2FkRmFpbHVyZTo6TWlzbWF0Y2hlZFNlc3Npb25UeXBlKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogICAgICAgICBhdXRvKiBjZXJ0aWZpY2F0ZSA9IG1faW5zdGFuY2UtPnNlcnZl
ckNlcnRpZmljYXRlKCk7CiAgICAgICAgIGlmICghY2VydGlmaWNhdGUpIHsKLSAgICAgICAgICAg
IERFQlVHX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAiIEZhaWxlZCwgbm8gc2Vzc2lv
bkNlcnRpZmljYXRlIik7CisgICAgICAgICAgICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwgIiBG
YWlsZWQsIG5vIHNlc3Npb25DZXJ0aWZpY2F0ZSIpOwogICAgICAgICAgICAgY2FsbGJhY2soc3Rk
OjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgRmFpbGVkLCBTZXNzaW9uTG9h
ZEZhaWx1cmU6Ok5vU2Vzc2lvbkRhdGEpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CkBAIC0xMDAyLDE5ICs5OTQsMTkgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0
cmVhbWluZ0FWRk9iakM6OmxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlIGxpY2Vuc2UKICAgICAgICAg
fQogCiAgICAgICAgIGlmIChjaGFuZ2VkS2V5cy5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIERF
QlVHX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAiIEZhaWxlZCwgbm8gc2Vzc2lvbiBk
YXRhIGZvdW5kIik7CisgICAgICAgICAgICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwgIiBGYWls
ZWQsIG5vIHNlc3Npb24gZGF0YSBmb3VuZCIpOwogICAgICAgICAgICAgY2FsbGJhY2soc3RkOjpu
dWxsb3B0LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgRmFpbGVkLCBTZXNzaW9uTG9hZEZh
aWx1cmU6Ok5vU2Vzc2lvbkRhdGEpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
LSAgICAgICAgREVCVUdfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIsICIgU3VjY2VlZGVk
LCBtaXNtYXRjaGVkIHNlc3Npb24gdHlwZSIpOworICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5U
SUZJRVIsICIgU3VjY2VlZGVkIik7CiAgICAgICAgIGNhbGxiYWNrKFdURk1vdmUoY2hhbmdlZEtl
eXMpLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgU3VjY2VlZGVkLCBTZXNzaW9uTG9hZEZh
aWx1cmU6Ok5vbmUpOwogICAgIH0KIH0KIAogdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakM6OmNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmLCBDbG9zZVNlc3Np
b25DYWxsYmFjayYmIGNhbGxiYWNrKQogewotICAgIERFQlVHX0xPR19JRl9QT1NTSUJMRShMT0dJ
REVOVElGSUVSKTsKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOwogICAgIGlmIChtX3Jl
cXVlc3RMaWNlbnNlQ2FsbGJhY2spIHsKICAgICAgICAgbV9yZXF1ZXN0TGljZW5zZUNhbGxiYWNr
KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIG1fc2Vzc2lvbklkLCBmYWxzZSwgRmFpbGVkKTsKICAg
ICAgICAgQVNTRVJUKCFtX3JlcXVlc3RMaWNlbnNlQ2FsbGJhY2spOwpAQCAtMTA0Nyw3ICsxMDM5
LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJl
bW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYKICAgICAgICAgYXV0byogY2VydGlmaWNhdGUg
PSBtX2luc3RhbmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgpOwogCiAgICAgICAgIGlmICghbV9pbnN0
YW5jZS0+cGVyc2lzdGVudFN0YXRlQWxsb3dlZCgpIHx8ICFzdG9yYWdlVVJMIHx8ICFjZXJ0aWZp
Y2F0ZSkgewotICAgICAgICAgICAgREVCVUdfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIs
ICIgRmFpbGVkLCBwZXJzaXN0ZW50U3RhdGUgbm90IGFsbG93ZWQgb3Igbm8gc3RvcmFnZVVSTCBv
ciBubyBjZXJ0aWZpY2F0ZSIpOworICAgICAgICAgICAgRVJST1JfTE9HKExPR0lERU5USUZJRVIs
ICIgRmFpbGVkLCBwZXJzaXN0ZW50U3RhdGUgbm90IGFsbG93ZWQgb3Igbm8gc3RvcmFnZVVSTCBv
ciBubyBjZXJ0aWZpY2F0ZSIpOwogICAgICAgICAgICAgY2FsbGJhY2soeyB9LCBzdGQ6Om51bGxv
cHQsIEZhaWxlZCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTEwNzEsNyAr
MTA2Myw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
OjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmCiAgICAgICAgIH0KIAogICAgICAgICBp
ZiAoIWV4cGlyZWRTZXNzaW9uc0FycmF5LmdldCgpLmNvdW50KSB7Ci0gICAgICAgICAgICBERUJV
R19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwgIiBTdWNjZWVkZWQsIG5vIGV4cGlyZWQg
c2Vzc2lvbnMiKTsKKyAgICAgICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgIiBTdWNj
ZWVkZWQsIG5vIGV4cGlyZWQgc2Vzc2lvbnMiKTsKICAgICAgICAgICAgIGNhbGxiYWNrKFdURk1v
dmUoY2hhbmdlZEtleXMpLCBzdGQ6Om51bGxvcHQsIFN1Y2NlZWRlZCk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KQEAgLTEwODEsNyArMTA3Myw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VT
ZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBT
dHJpbmcmCiAgICAgICAgICAgICAvLyBJdCBzaG91bGQgbm90IGJlIHBvc3NpYmxlIHRvIGhhdmUg
YSBwZXJzaXN0ZW50LXVzYWdlLXJlY29yZCBzZXNzaW9uIHRoYXQgZG9lcyBub3QgZ2VuZXJhdGUK
ICAgICAgICAgICAgIC8vIGEgcGVyc2lzdGVudC11c2FnZS1yZWNvcmQgbWVzc2FnZSBvbiBjbG9z
ZS4gU2lnbmFsIHRoaXMgYnkgZmFpbGluZyBhbmQgYXNzZXJ0LgogICAgICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICBERUJVR19MT0dfSUZfUE9TU0lCTEUoTE9HSURF
TlRJRklFUiwgIiBGYWlsZWQsIG5vIGV4cGlyZWQgc2Vzc2lvbiBkYXRhIik7CisgICAgICAgICAg
ICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwgIiBGYWlsZWQsIG5vIGV4cGlyZWQgc2Vzc2lvbiBk
YXRhIik7CiAgICAgICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKGNoYW5nZWRLZXlzKSwgc3RkOjpu
dWxsb3B0LCBGYWlsZWQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0xMDkx
LDkgKzEwODMsOSBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZG
T2JqQzo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJgogICAgICAgICBSZXRhaW5QdHI8
TlNEYXRhPiBleHBpcmVkU2Vzc2lvbnNEYXRhID0gW05TUHJvcGVydHlMaXN0U2VyaWFsaXphdGlv
biBkYXRhV2l0aFByb3BlcnR5TGlzdDpwcm9wZXJ0eUxpc3QgZm9ybWF0Ok5TUHJvcGVydHlMaXN0
QmluYXJ5Rm9ybWF0X3YxXzAgb3B0aW9uczprQ0ZQcm9wZXJ0eUxpc3RJbW11dGFibGUgZXJyb3I6
bnVsbHB0cl07CiAKICAgICAgICAgaWYgKGV4cGlyZWRTZXNzaW9uc0NvdW50ID4gMSkKLSAgICAg
ICAgICAgIEVSUk9SX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAiTXVsdGlwbGUoIiwg
ZXhwaXJlZFNlc3Npb25zQ291bnQsICIpIGV4cGlyZWQgc2Vzc2lvbiByZXBvcnRzIGZvdW5kIHdp
dGggc2FtZSBzZXNzaW9uSUQoIiwgc2Vzc2lvbklkLCAiKSEiKTsKKyAgICAgICAgICAgIEVSUk9S
X0xPRyhMT0dJREVOVElGSUVSLCAiTXVsdGlwbGUoIiwgZXhwaXJlZFNlc3Npb25zQ291bnQsICIp
IGV4cGlyZWQgc2Vzc2lvbiByZXBvcnRzIGZvdW5kIHdpdGggc2FtZSBzZXNzaW9uSUQoIiwgc2Vz
c2lvbklkLCAiKSEiKTsKIAotICAgICAgICBERUJVR19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJ
RklFUiwgIiBTdWNjZWVkZWQiKTsKKyAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAi
IFN1Y2NlZWRlZCIpOwogICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKGNoYW5nZWRLZXlzKSwgU2hh
cmVkQnVmZmVyOjpjcmVhdGUoZXhwaXJlZFNlc3Npb25zRGF0YS5nZXQoKSksIFN1Y2NlZWRlZCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMTI0LDggKzExMTYsMTAgQEAgdm9pZCBDRE1J
bnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmNsZWFyQ2xpZW50KCkKIHZv
aWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRl
UmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0ICpyZXF1ZXN0KQogewogICAgIGF1dG8gaW5pdERh
dGFUeXBlID0gaW5pdFR5cGVGb3JSZXF1ZXN0KHJlcXVlc3QpOwotICAgIGlmIChpbml0RGF0YVR5
cGUgPT0gZW1wdHlBdG9tKCkpCisgICAgaWYgKGluaXREYXRhVHlwZSA9PSBlbXB0eUF0b20oKSkg
eworICAgICAgICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwgIi0gcmVxdWVzdCBoYXMgZW1wdHkg
aW5pdERhdGFUeXBlIik7CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBSZXF1ZXN0IGN1
cnJlbnRSZXF1ZXN0ID0geyBpbml0RGF0YVR5cGUsIHsgcmVxdWVzdCB9IH07CiAKQEAgLTExMzQs
NiArMTEyOCw4IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZP
YmpDOjpkaWRQcm92aWRlUmVxdWVzdChBVkNvbnRlbnRLZXlSCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworCiAgICAgbV9jdXJyZW50UmVx
dWVzdCA9IGN1cnJlbnRSZXF1ZXN0OwogICAgIG1fcmVxdWVzdHMuYXBwZW5kKFdURk1vdmUoY3Vy
cmVudFJlcXVlc3QpKTsKIApAQCAtMTE3OCw3ICsxMTc0LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNl
c3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0KEFWQ29udGVu
dEtleVIKICAgICAgICAgICAgIH0pOwogICAgICAgICB9XTsKICAgICB9IEBjYXRjaChOU0V4Y2Vw
dGlvbiAqZXhjZXB0aW9uKSB7Ci0gICAgICAgIEVSUk9SX0xPR19JRl9QT1NTSUJMRShMT0dJREVO
VElGSUVSLCAiZXhjZXB0aW9uIHRocm93biBmcm9tIC1tYWtlU3RyZWFtaW5nQ29udGVudEtleVJl
cXVlc3REYXRhRm9yQXBwOmNvbnRlbnRJZGVudGlmaWVyOm9wdGlvbnM6Y29tcGxldGlvbkhhbmRs
ZXI6ICIsIFtbZXhjZXB0aW9uIG5hbWVdIFVURjhTdHJpbmddLCAiLCByZWFzb24gOiAiLCBbW2V4
Y2VwdGlvbiByZWFzb25dIFVURjhTdHJpbmddKTsKKyAgICAgICAgRVJST1JfTE9HKExPR0lERU5U
SUZJRVIsICJleGNlcHRpb24gdGhyb3duIGZyb20gLW1ha2VTdHJlYW1pbmdDb250ZW50S2V5UmVx
dWVzdERhdGFGb3JBcHA6Y29udGVudElkZW50aWZpZXI6b3B0aW9uczpjb21wbGV0aW9uSGFuZGxl
cjogIiwgW1tleGNlcHRpb24gbmFtZV0gVVRGOFN0cmluZ10sICIsIHJlYXNvbiA6ICIsIFtbZXhj
ZXB0aW9uIHJlYXNvbl0gVVRGOFN0cmluZ10pOwogICAgICAgICBpZiAobV91cGRhdGVMaWNlbnNl
Q2FsbGJhY2spCiAgICAgICAgICAgICBtX3VwZGF0ZUxpY2Vuc2VDYWxsYmFjayhmYWxzZSwgc3Rk
OjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgRmFpbGVkKTsKICAgICAgICAg
QVNTRVJUKCFtX3VwZGF0ZUxpY2Vuc2VDYWxsYmFjayk7CkBAIC0xMjA3LDYgKzEyMDMsOCBAQCB2
b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlk
ZVJlcXVlc3RzKFZlY3RvcjxSZXRhaQogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgQUxX
QVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKwogICAgIG1fY3VycmVudFJlcXVlc3QgPSBjdXJyZW50
UmVxdWVzdDsKICAgICBtX3JlcXVlc3RzLmFwcGVuZChXVEZNb3ZlKGN1cnJlbnRSZXF1ZXN0KSk7
CiAKQEAgLTEyNzksNyArMTI3Nyw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdHMoVmVjdG9yPFJldGFpCiAgICAgICAg
ICAgICB9XTsKICAgICAgICAgfQogICAgIH0gQGNhdGNoKE5TRXhjZXB0aW9uICpleGNlcHRpb24p
IHsKLSAgICAgICAgRVJST1JfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIsICJleGNlcHRp
b24gdGhyb3duIGZyb20gLW1ha2VTdHJlYW1pbmdDb250ZW50S2V5UmVxdWVzdERhdGFGb3JBcHA6
Y29udGVudElkZW50aWZpZXI6b3B0aW9uczpjb21wbGV0aW9uSGFuZGxlcjogIiwgW1tleGNlcHRp
b24gbmFtZV0gVVRGOFN0cmluZ10sICIsIHJlYXNvbiA6ICIsIFtbZXhjZXB0aW9uIHJlYXNvbl0g
VVRGOFN0cmluZ10pOworICAgICAgICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwgImV4Y2VwdGlv
biB0aHJvd24gZnJvbSAtbWFrZVN0cmVhbWluZ0NvbnRlbnRLZXlSZXF1ZXN0RGF0YUZvckFwcDpj
b250ZW50SWRlbnRpZmllcjpvcHRpb25zOmNvbXBsZXRpb25IYW5kbGVyOiAiLCBbW2V4Y2VwdGlv
biBuYW1lXSBVVEY4U3RyaW5nXSwgIiwgcmVhc29uIDogIiwgW1tleGNlcHRpb24gcmVhc29uXSBV
VEY4U3RyaW5nXSk7CiAgICAgICAgIGlmIChtX3JlcXVlc3RMaWNlbnNlQ2FsbGJhY2spCiAgICAg
ICAgICAgICBtX3JlcXVlc3RMaWNlbnNlQ2FsbGJhY2soU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwg
bV9zZXNzaW9uSWQsIGZhbHNlLCBGYWlsZWQpOwogICAgICAgICBBU1NFUlQoIW1fcmVxdWVzdExp
Y2Vuc2VDYWxsYmFjayk7CkBAIC0xMjk5LDYgKzEyOTcsOCBAQCB2b2lkIENETUluc3RhbmNlU2Vz
c2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlbmV3aW5nUmVxdWVzdChB
VkNvbgogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElG
SUVSKTsKKwogICAgIG1fY3VycmVudFJlcXVlc3QgPSBjdXJyZW50UmVxdWVzdDsKIAogICAgIC8v
IFRoZSBhc3N1bXB0aW9uIGhlcmUgaXMgdGhhdCBBVkNvbnRlbnRLZXlSZXF1ZXN0IHdpbGwgb25s
eSBldmVyIG5vdGlmeSB1cyBvZiBhIHJlbmV3aW5nIHJlcXVlc3QgYXMgYSByZXN1bHQgb2YgY2Fs
bGluZwpAQCAtMTMyNyw3ICsxMzI3LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZW5ld2luZ1JlcXVlc3QoQVZDb24KICAgICAg
ICAgICAgIH0pOwogICAgICAgICB9XTsKICAgICB9IEBjYXRjaChOU0V4Y2VwdGlvbiAqZXhjZXB0
aW9uKSB7Ci0gICAgICAgIEVSUk9SX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAiZXhj
ZXB0aW9uIHRocm93biBmcm9tIC1tYWtlU3RyZWFtaW5nQ29udGVudEtleVJlcXVlc3REYXRhRm9y
QXBwOmNvbnRlbnRJZGVudGlmaWVyOm9wdGlvbnM6Y29tcGxldGlvbkhhbmRsZXI6ICIsIFtbZXhj
ZXB0aW9uIG5hbWVdIFVURjhTdHJpbmddLCAiLCByZWFzb24gOiAiLCBbW2V4Y2VwdGlvbiByZWFz
b25dIFVURjhTdHJpbmddKTsKKyAgICAgICAgRVJST1JfTE9HKExPR0lERU5USUZJRVIsICJleGNl
cHRpb24gdGhyb3duIGZyb20gLW1ha2VTdHJlYW1pbmdDb250ZW50S2V5UmVxdWVzdERhdGFGb3JB
cHA6Y29udGVudElkZW50aWZpZXI6b3B0aW9uczpjb21wbGV0aW9uSGFuZGxlcjogIiwgW1tleGNl
cHRpb24gbmFtZV0gVVRGOFN0cmluZ10sICIsIHJlYXNvbiA6ICIsIFtbZXhjZXB0aW9uIHJlYXNv
bl0gVVRGOFN0cmluZ10pOwogICAgICAgICBpZiAobV91cGRhdGVMaWNlbnNlQ2FsbGJhY2spCiAg
ICAgICAgICAgICBtX3VwZGF0ZUxpY2Vuc2VDYWxsYmFjayhmYWxzZSwgc3RkOjpudWxsb3B0LCBz
dGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgRmFpbGVkKTsKICAgICAgICAgQVNTRVJUKCFtX3Vw
ZGF0ZUxpY2Vuc2VDYWxsYmFjayk7CkBAIC0xMzQ0LDYgKzEzNDQsNyBAQCB2b2lkIENETUluc3Rh
bmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkRmFpbFRvUHJvdmlkZVJlcXVl
c3QoQVZDb250ZQogICAgIC8vIHRoZSBrZXkgcmVxdWlyZXMgYSBoaWdoZXIgbGV2ZWwgb2Ygc2Vj
dXJpdHkgdGhhbiBpdCBpcyBjdXJyZW50bHkgYWJsZQogICAgIC8vIHRvIHByb3ZpZGUsIHNpZ25h
bCB0aGlzIHN0YXRlIGJ5ICJzdWNjZWVkaW5nIiwgYnV0IHNldCB0aGUga2V5IHN0YXR1cwogICAg
IC8vIHRvICJvdXRwdXQtcmVzdHJpY3RlZCIuCisgICAgRVJST1JfTE9HKExPR0lERU5USUZJRVIs
ICItIGVycm9yOiAiLCBTdHJpbmcgeyBlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbiB9KTsKIAog
ICAgIGlmIChlcnJvci5jb2RlID09IFNlY3VyaXR5TGV2ZWxFcnJvcikgewogICAgICAgICByZXF1
ZXN0RGlkU3VjY2VlZChyZXF1ZXN0KTsKQEAgLTEzNjcsNiArMTM2OCw4IEBAIHZvaWQgQ0RNSW5z
dGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRGYWlsVG9Qcm92aWRlUmVx
dWVzdChBVkNvbnRlCiAKIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDOjpyZXF1ZXN0RGlkU3VjY2VlZChBVkNvbnRlbnRLZXlSZXF1ZXN0ICpyZXF1ZXN0KQog
eworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CisKICAgICB1cGRhdGVLZXlTdGF0dXNl
cygpOwogCiAgICAgaWYgKG1fdXBkYXRlUmVzcG9uc2VDb2xsZWN0b3IpIHsKQEAgLTE1MTQsNyAr
MTUxNyw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
OjpvdXRwdXRPYnNjdXJlZER1ZVRvSW5zdWZmaWNpZW50CiAgICAgaWYgKG9ic2N1cmVkID09IG1f
b3V0cHV0T2JzY3VyZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIEFMV0FZU19MT0dfSUZfUE9T
U0lCTEUoTE9HSURFTlRJRklFUiwgb2JzY3VyZWQpOworICAgIEFMV0FZU19MT0coTE9HSURFTlRJ
RklFUiwgb2JzY3VyZWQpOwogICAgIG1fb3V0cHV0T2JzY3VyZWQgPSBvYnNjdXJlZDsKIAogICAg
IHVwZGF0ZUtleVN0YXR1c2VzKCk7CkBAIC0xNTU0LDEyICsxNTU3LDEyIEBAIHN0ZDo6b3B0aW9u
YWw8Q0RNS2V5U3RhdHVzPiBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9i
akM6OnByb3RlY3RpCiAgICAgICAgIC8vIHdpbGxPdXRwdXRCZU9ic2N1cmVkRHVlVG9JbnN1ZmZp
Y2llbnRFeHRlcm5hbFByb3RlY3Rpb25Gb3JEaXNwbGF5cyB3aWxsIGFsd2F5cyByZXR1cm4gIllF
UyIgcHJpb3IgdG8KICAgICAgICAgLy8gcmVjZWl2aW5nIGEgcmVzcG9uc2UuCiAgICAgICAgIGlm
IChyZXF1ZXN0LnN0YXR1cyAhPSBBVkNvbnRlbnRLZXlSZXF1ZXN0U3RhdHVzUmVjZWl2ZWRSZXNw
b25zZSAmJiByZXF1ZXN0LnN0YXR1cyAhPSBBVkNvbnRlbnRLZXlSZXF1ZXN0U3RhdHVzUmVuZXdl
ZCkgewotICAgICAgICAgICAgQUxXQVlTX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAi
cmVxdWVzdCBoYXMgaW5zdWZmaWNpZW50IHN0YXR1cyAiLCAoaW50KXJlcXVlc3Quc3RhdHVzKTsK
KyAgICAgICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgInJlcXVlc3QgaGFzIGluc3Vm
ZmljaWVudCBzdGF0dXMgIiwgKGludClyZXF1ZXN0LnN0YXR1cyk7CiAgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9CiAKICAgICAgICAgYXV0byBvYnNjdXJlZCA9IFty
ZXF1ZXN0IHdpbGxPdXRwdXRCZU9ic2N1cmVkRHVlVG9JbnN1ZmZpY2llbnRFeHRlcm5hbFByb3Rl
Y3Rpb25Gb3JEaXNwbGF5czpAWyBdXTsKLSAgICAgICAgQUxXQVlTX0xPR19JRl9QT1NTSUJMRShM
T0dJREVOVElGSUVSLCAicmVxdWVzdCB7ICIsIGtleUlEc0ZvclJlcXVlc3QocmVxdWVzdCksICIg
fSB3aWxsT3V0cHV0QmVPYnNjdXJlZC4uLmZvckRpc3BsYXlzOlsgbmlsIF0gPSAiLCBvYnNjdXJl
ZCA/ICJ0cnVlIiA6ICJmYWxzZSIpOworICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIs
ICJyZXF1ZXN0IHsgIiwga2V5SURzRm9yUmVxdWVzdChyZXF1ZXN0KSwgIiB9IHdpbGxPdXRwdXRC
ZU9ic2N1cmVkLi4uZm9yRGlzcGxheXM6WyBuaWwgXSA9ICIsIG9ic2N1cmVkID8gInRydWUiIDog
ImZhbHNlIik7CiAgICAgICAgIHJldHVybiBvYnNjdXJlZCA/IENETUtleVN0YXR1czo6T3V0cHV0
UmVzdHJpY3RlZCA6IENETUtleVN0YXR1czo6VXNhYmxlOwogICAgIH0KICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
Q0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9u
LmgKaW5kZXggNmMwNWUyZjhiMTAzYjg1MTc0N2NjOWEzNTQzY2Q1MWM5YWU4YzM4MC4uOTBkMjcz
ZDA3OTYxZmM5ODZmYjdjNDU2ZmY3MzM2MmMxNGVjNWQ1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29u
dGVudEtleVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbi5oCkBAIC00Miw3
ICs0Miw3IEBAIGNsYXNzIENETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM7CiBjbGFzcyBDRE1T
ZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbiA6IHB1YmxpYyBDRE1TZXNzaW9uTWVkaWFTb3VyY2VB
VkZPYmpDIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBDRE1T
ZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbihWZWN0b3I8aW50PiYmIHByb3RvY29sVmVyc2lvbnMs
IGludCBjZG1WZXJzaW9uLCBDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDJiwgTGVnYWN5Q0RN
U2Vzc2lvbkNsaWVudCopOworICAgIENETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uKFZlY3Rv
cjxpbnQ+JiYgcHJvdG9jb2xWZXJzaW9ucywgaW50IGNkbVZlcnNpb24sIENETVByaXZhdGVNZWRp
YVNvdXJjZUFWRk9iakMmLCBMZWdhY3lDRE1TZXNzaW9uQ2xpZW50Jik7CiAgICAgdmlydHVhbCB+
Q0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24oKTsKIAogICAgIHN0YXRpYyBib29sIGlzQXZh
aWxhYmxlKCk7CkBAIC02Niw2ICs2NiwxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBoYXNDb250
ZW50S2V5U2Vzc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudEtleVNlc3Npb247IH0KICAg
ICBBVkNvbnRlbnRLZXlTZXNzaW9uKiBjb250ZW50S2V5U2Vzc2lvbigpOwogCisjaWYgIVJFTEVB
U0VfTE9HX0RJU0FCTEVECisgICAgY29uc3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29uc3QgeyBy
ZXR1cm4gIkNETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uIjsgfQorI2VuZGlmCisKICAgICBS
ZXRhaW5QdHI8QVZDb250ZW50S2V5U2Vzc2lvbj4gbV9jb250ZW50S2V5U2Vzc2lvbjsKICAgICBS
ZXRhaW5QdHI8V2ViQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb25EZWxlZ2F0ZT4gbV9jb250
ZW50S2V5U2Vzc2lvbkRlbGVnYXRlOwogICAgIFJldGFpblB0cjxBVkNvbnRlbnRLZXlSZXF1ZXN0
PiBtX2tleVJlcXVlc3Q7CkBAIC03Niw2ICs4MCwxMSBAQCBwcm90ZWN0ZWQ6CiAgICAgaW50IG1f
Y2RtVmVyc2lvbjsKICAgICBpbnQzMl90IG1fcHJvdGVjdGVkVHJhY2tJRCB7IDEgfTsKICAgICBl
bnVtIHsgTm9ybWFsLCBLZXlSZWxlYXNlIH0gbV9tb2RlOworCisjaWYgIVJFTEVBU0VfTE9HX0RJ
U0FCTEVECisgICAgUmVmPGNvbnN0IExvZ2dlcj4gbV9sb2dnZXI7CisgICAgY29uc3Qgdm9pZCog
bV9sb2dJZGVudGlmaWVyOworI2VuZGlmCiB9OwogCiBpbmxpbmUgQ0RNU2Vzc2lvbkFWQ29udGVu
dEtleVNlc3Npb24qIHRvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24oTGVnYWN5Q0RNU2Vz
c2lvbiogc2Vzc2lvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vz
c2lvbkFWQ29udGVudEtleVNlc3Npb24ubW0KaW5kZXggN2Q1OTNhNjBkNjYzMmI5OTYyZmY0OTU2
MWEwZTcxYmNkY2U2MDk3MS4uNzJhMDk1MzA5Yzg0NWJkY2NmZGU3MDdiZTRiNzA3MGM1ZDUxZWJj
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24ubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29u
dGVudEtleVNlc3Npb24ubW0KQEAgLTEwNSwxMyArMTA1LDE4IEBAIEBlbmQKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1DRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6Q0RNU2Vzc2lvbkFW
Q29udGVudEtleVNlc3Npb24oVmVjdG9yPGludD4mJiBwcm90b2NvbFZlcnNpb25zLCBpbnQgY2Rt
VmVyc2lvbiwgQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyYgY2RtLCBMZWdhY3lDRE1TZXNz
aW9uQ2xpZW50KiBjbGllbnQpCitDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6Q0RNU2Vz
c2lvbkFWQ29udGVudEtleVNlc3Npb24oVmVjdG9yPGludD4mJiBwcm90b2NvbFZlcnNpb25zLCBp
bnQgY2RtVmVyc2lvbiwgQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyYgY2RtLCBMZWdhY3lD
RE1TZXNzaW9uQ2xpZW50JiBjbGllbnQpCiAgICAgOiBDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZP
YmpDKGNkbSwgY2xpZW50KQogICAgICwgbV9jb250ZW50S2V5U2Vzc2lvbkRlbGVnYXRlKGFkb3B0
TlMoW1tXZWJDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbkRlbGVnYXRlIGFsbG9jXSBpbml0
V2l0aFBhcmVudDp0aGlzXSkpCiAgICAgLCBtX3Byb3RvY29sVmVyc2lvbnMoV1RGTW92ZShwcm90
b2NvbFZlcnNpb25zKSkKICAgICAsIG1fY2RtVmVyc2lvbihjZG1WZXJzaW9uKQogICAgICwgbV9t
b2RlKE5vcm1hbCkKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICAsIG1fbG9nZ2VyKGNs
aWVudC5sb2dnZXIoKSkKKyAgICAsIG1fbG9nSWRlbnRpZmllcihjbGllbnQubG9nSWRlbnRpZmll
cigpKQorI2VuZGlmCiB7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKIH0KIAogQ0RN
U2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb246On5DRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lv
bigpCkBAIC0xMzMsNyArMTM4LDcgQEAgUmVmUHRyPFVpbnQ4QXJyYXk+IENETVNlc3Npb25BVkNv
bnRlbnRLZXlTZXNzaW9uOjpnZW5lcmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW4KICAgICBVTlVT
RURfUEFSQU0oZGVzdGluYXRpb25VUkwpOwogICAgIEFTU0VSVChpbml0RGF0YSk7CiAKLSAgICBM
T0coTWVkaWEsICJDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6Z2VuZXJhdGVLZXlSZXF1
ZXN0KCVwKSIsIHRoaXMpOworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgIm1pbWVUeXBl
OiAiLCBtaW1lVHlwZSk7CiAKICAgICBlcnJvckNvZGUgPSBNZWRpYVBsYXllcjo6Tm9FcnJvcjsK
ICAgICBzeXN0ZW1Db2RlID0gMDsKQEAgLTE2NCw3ICsxNjksNyBAQCB2b2lkIENETVNlc3Npb25B
VkNvbnRlbnRLZXlTZXNzaW9uOjpyZWxlYXNlS2V5cygpCiAgICAgICAgIGZvciAoYXV0byYgc291
cmNlQnVmZmVyIDogbV9zb3VyY2VCdWZmZXJzKQogICAgICAgICAgICAgc291cmNlQnVmZmVyLT5m
bHVzaCgpOwogCi0gICAgICAgIExPRyhNZWRpYSwgIkNETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNz
aW9uOjpyZWxlYXNlS2V5cyglcCkgLSBleHBpcmluZyBzdHJlYW0gc2Vzc2lvbiIsIHRoaXMpOwor
ICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJleHBpcmluZyBzdHJlYW0gc2Vzc2lv
biIpOwogICAgICAgICBbY29udGVudEtleVNlc3Npb24oKSBleHBpcmVdOwogCiAgICAgICAgIGlm
ICghbV9jZXJ0aWZpY2F0ZSkKQEAgLTE4Nyw3ICsxOTIsNyBAQCB2b2lkIENETVNlc3Npb25BVkNv
bnRlbnRLZXlTZXNzaW9uOjpyZWxlYXNlS2V5cygpCiAgICAgICAgICAgICAgICAgY29udGludWU7
CiAKICAgICAgICAgICAgIGlmIChtX3Nlc3Npb25JZCA9PSBTdHJpbmcocGxheWJhY2tTZXNzaW9u
SWRWYWx1ZSkpIHsKLSAgICAgICAgICAgICAgICBMT0coTWVkaWEsICJDRE1TZXNzaW9uQVZDb250
ZW50S2V5U2Vzc2lvbjo6cmVsZWFzZUtleXMoJXApIC0gZm91bmQgc2Vzc2lvbiwgc2VuZGluZyBl
eHBpcmF0aW9uIG1lc3NhZ2UiKTsKKyAgICAgICAgICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5U
SUZJRVIsICJmb3VuZCBzZXNzaW9uLCBzZW5kaW5nIGV4cGlyYXRpb24gbWVzc2FnZSIpOwogICAg
ICAgICAgICAgICAgIG1fZXhwaXJlZFNlc3Npb24gPSBleHBpcmVkU2Vzc2lvbkRhdGE7CiAgICAg
ICAgICAgICAgICAgbV9jbGllbnQtPnNlbmRNZXNzYWdlKFVpbnQ4QXJyYXk6OmNyZWF0ZShzdGF0
aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oW21fZXhwaXJlZFNlc3Npb24gYnl0ZXNdKSwgW21fZXhw
aXJlZFNlc3Npb24gbGVuZ3RoXSkucHRyKCksIGVtcHR5U3RyaW5nKCkpOwogICAgICAgICAgICAg
ICAgIGJyZWFrOwpAQCAtMjE3LDcgKzIyMiw3IEBAIGJvb2wgQ0RNU2Vzc2lvbkFWQ29udGVudEtl
eVNlc3Npb246OnVwZGF0ZShVaW50OEFycmF5KiBrZXksIFJlZlB0cjxVaW50OEFycmF5PiYKICAg
ICBVTlVTRURfUEFSQU0obmV4dE1lc3NhZ2UpOwogCiAgICAgaWYgKGlzRXF1YWwoa2V5LCAiYWNr
bm93bGVkZ2VkIikpIHsKLSAgICAgICAgTE9HKE1lZGlhLCAiQ0RNU2Vzc2lvbkFWQ29udGVudEtl
eVNlc3Npb246OnVwZGF0ZSglcCkgLSBhY2tub3dsZWRpbmcgc2VjdXJlIHN0b3AgbWVzc2FnZSIs
IHRoaXMpOworICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJhY2tub3dsZWRpbmcg
c2VjdXJlIHN0b3AgbWVzc2FnZSIpOwogCiAgICAgICAgIFN0cmluZyBzdG9yYWdlUGF0aCA9IHRo
aXMtPnN0b3JhZ2VQYXRoKCk7CiAgICAgICAgIGlmICghbV9leHBpcmVkU2Vzc2lvbiB8fCBzdG9y
YWdlUGF0aC5pc0VtcHR5KCkpIHsKQEAgLTI0MCw3ICsyNDUsNyBAQCBib29sIENETVNlc3Npb25B
VkNvbnRlbnRLZXlTZXNzaW9uOjp1cGRhdGUoVWludDhBcnJheSoga2V5LCBSZWZQdHI8VWludDhB
cnJheT4mCiAKICAgICBib29sIHNob3VsZEdlbmVyYXRlS2V5UmVxdWVzdCA9ICFtX2NlcnRpZmlj
YXRlIHx8IGlzRXF1YWwoa2V5LCAicmVuZXciKTsKICAgICBpZiAoIW1fY2VydGlmaWNhdGUpIHsK
LSAgICAgICAgTE9HKE1lZGlhLCAiQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb246OnVwZGF0
ZSglcCkgLSBjZXJ0aWZpY2F0ZSBkYXRhIiwgdGhpcyk7CisgICAgICAgIEFMV0FZU19MT0coTE9H
SURFTlRJRklFUiwgImNlcnRpZmljYXRlIGRhdGEiKTsKIAogICAgICAgICBtX2NlcnRpZmljYXRl
ID0ga2V5OwogICAgIH0KQEAgLTI5NywxNCArMzAyLDE2IEBAIGJvb2wgQ0RNU2Vzc2lvbkFWQ29u
dGVudEtleVNlc3Npb246OnVwZGF0ZShVaW50OEFycmF5KiBrZXksIFJlZlB0cjxVaW50OEFycmF5
PiYKICAgICAgICAgaWYgKGVycm9yKSB7CiAgICAgICAgICAgICBlcnJvckNvZGUgPSBMZWdhY3lD
RE06OkRvbWFpbkVycm9yOwogICAgICAgICAgICAgc3lzdGVtQ29kZSA9IG1lZGlhS2V5RXJyb3JT
eXN0ZW1Db2RlKGVycm9yKTsKKyAgICAgICAgICAgIEVSUk9SX0xPRyhMT0dJREVOVElGSUVSLCAi
ZXJyb3I6ICIsIFN0cmluZyhlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbikpOwogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKKyAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVO
VElGSUVSLCAiZ2VuZXJhdGVkIGtleSByZXF1ZXN0Iik7CiAgICAgICAgIG5leHRNZXNzYWdlID0g
VWludDhBcnJheTo6dHJ5Q3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihbcmVxdWVz
dERhdGEgYnl0ZXNdKSwgW3JlcXVlc3REYXRhIGxlbmd0aF0pOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCi0gICAgTE9HKE1lZGlhLCAiQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Np
b246OnVwZGF0ZSglcCkgLSBrZXkgZGF0YSIsIHRoaXMpOworICAgIEFMV0FZU19MT0coTE9HSURF
TlRJRklFUiwgInByb2Nlc3Npbmcga2V5IHJlc3BvbnNlIik7CiAgICAgZXJyb3JDb2RlID0gTWVk
aWFQbGF5ZXI6Ok5vRXJyb3I7CiAgICAgc3lzdGVtQ29kZSA9IDA7CiAgICAgUmV0YWluUHRyPE5T
RGF0YT4ga2V5RGF0YSA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXM6a2V5
LT5kYXRhKCkgbGVuZ3RoOmtleS0+bGVuZ3RoKCldKTsKQEAgLTMyNCw2ICszMzEsNyBAQCBSZWZQ
dHI8QXJyYXlCdWZmZXI+IENETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uOjpjYWNoZWRLZXlG
b3JLZXlJRChjb25zdCBTdHJpbgogCiB2b2lkIENETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9u
OjphZGRQYXJzZXIoQVZTdHJlYW1EYXRhUGFyc2VyKiBwYXJzZXIpCiB7CisgICAgSU5GT19MT0co
TE9HSURFTlRJRklFUik7CiAgICAgaWYgKFtjb250ZW50S2V5U2Vzc2lvbigpIHJlc3BvbmRzVG9T
ZWxlY3RvcjpAc2VsZWN0b3IoYWRkQ29udGVudEtleVJlY2lwaWVudDopXSkKICAgICAgICAgW2Nv
bnRlbnRLZXlTZXNzaW9uKCkgYWRkQ29udGVudEtleVJlY2lwaWVudDpwYXJzZXJdOwogICAgIGVs
c2UKQEAgLTMzMiw2ICszNDAsNyBAQCB2b2lkIENETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9u
OjphZGRQYXJzZXIoQVZTdHJlYW1EYXRhUGFyc2VyKiBwYXJzZXIpCiAKIHZvaWQgQ0RNU2Vzc2lv
bkFWQ29udGVudEtleVNlc3Npb246OnJlbW92ZVBhcnNlcihBVlN0cmVhbURhdGFQYXJzZXIqIHBh
cnNlcikKIHsKKyAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSKTsKICAgICBpZiAoW2NvbnRlbnRL
ZXlTZXNzaW9uKCkgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihyZW1vdmVDb250ZW50S2V5
UmVjaXBpZW50OildKQogICAgICAgICBbY29udGVudEtleVNlc3Npb24oKSByZW1vdmVDb250ZW50
S2V5UmVjaXBpZW50OnBhcnNlcl07CiAgICAgZWxzZQpAQCAtMzUyLDE0ICszNjEsMTQgQEAgUmVm
UHRyPFVpbnQ4QXJyYXk+IENETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uOjpnZW5lcmF0ZUtl
eVJlbGVhc2VNZXNzYWdlKHVuc2kKIAogICAgIE5TQXJyYXkqIGV4cGlyZWRTZXNzaW9ucyA9IFtQ
QUw6OmdldEFWQ29udGVudEtleVNlc3Npb25DbGFzcygpIHBlbmRpbmdFeHBpcmVkU2Vzc2lvblJl
cG9ydHNXaXRoQXBwSWRlbnRpZmllcjpjZXJ0aWZpY2F0ZURhdGEuZ2V0KCkgc3RvcmFnZURpcmVj
dG9yeUF0VVJMOltOU1VSTCBmaWxlVVJMV2l0aFBhdGg6c3RvcmFnZVBhdGhdXTsKICAgICBpZiAo
IVtleHBpcmVkU2Vzc2lvbnMgY291bnRdKSB7Ci0gICAgICAgIExPRyhNZWRpYSwgIkNETVNlc3Np
b25BVkNvbnRlbnRLZXlTZXNzaW9uOjpnZW5lcmF0ZUtleVJlbGVhc2VNZXNzYWdlKCVwKSAtIG5v
IGV4cGlyZWQgc2Vzc2lvbnMgZm91bmQiLCB0aGlzKTsKKyAgICAgICAgQUxXQVlTX0xPRyhMT0dJ
REVOVElGSUVSLCAibm8gZXhwaXJlZCBzZXNzaW9ucyBmb3VuZCIpOwogCiAgICAgICAgIGVycm9y
Q29kZSA9IE1lZGlhUGxheWVyOjpLZXlTeXN0ZW1Ob3RTdXBwb3J0ZWQ7CiAgICAgICAgIHN5c3Rl
bUNvZGUgPSAnIW1vcic7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIExP
RyhNZWRpYSwgIkNETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uOjpnZW5lcmF0ZUtleVJlbGVh
c2VNZXNzYWdlKCVwKSAtIGZvdW5kICVkIGV4cGlyZWQgc2Vzc2lvbnMiLCB0aGlzLCBbZXhwaXJl
ZFNlc3Npb25zIGNvdW50XSk7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAiZm91bmQg
IiwgW2V4cGlyZWRTZXNzaW9ucyBjb3VudF0sICIgZXhwaXJlZCBzZXNzaW9ucyIpOwogCiAgICAg
ZXJyb3JDb2RlID0gMDsKICAgICBzeXN0ZW1Db2RlID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkZv
dW5kYXRpb25PYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5oCmluZGV4IDk1OTE4ZjAzZTVk
YmZiYzdkNTc3N2I3MzRhZjhmYjFlNTEwYzM3MzIuLjc5MTBiYzRkZGMyZDFkYzljMmFjMWU4Zjgz
ZTYzZTY3OGJmNjdjZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vz
c2lvbkFWRm91bmRhdGlvbk9iakMuaApAQCAtNDIsMTEgKzQyLDEwIEBAIGNsYXNzIE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM7CiBjbGFzcyBDRE1TZXNzaW9uQVZGb3VuZGF0aW9u
T2JqQyBmaW5hbCA6IHB1YmxpYyBMZWdhY3lDRE1TZXNzaW9uLCBwdWJsaWMgQ2FuTWFrZVdlYWtQ
dHI8Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakM+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKLSAgICBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQyhNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDKiBwYXJlbnQsIExlZ2FjeUNETVNlc3Npb25DbGllbnQq
KTsKKyAgICBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQyhNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDKiBwYXJlbnQsIExlZ2FjeUNETVNlc3Npb25DbGllbnQmKTsKICAgICB2aXJ0
dWFsIH5DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQygpOwogCiAgICAgTGVnYWN5Q0RNU2Vzc2lv
blR5cGUgdHlwZSgpIG92ZXJyaWRlIHsgcmV0dXJuIENETVNlc3Npb25UeXBlQVZGb3VuZGF0aW9u
T2JqQzsgfQotICAgIHZvaWQgc2V0Q2xpZW50KExlZ2FjeUNETVNlc3Npb25DbGllbnQqIGNsaWVu
dCkgb3ZlcnJpZGUgeyBtX2NsaWVudCA9IGNsaWVudDsgfQogICAgIGNvbnN0IFN0cmluZyYgc2Vz
c2lvbklkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9zZXNzaW9uSWQ7IH0KICAgICBSZWZQ
dHI8VWludDhBcnJheT4gZ2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IFVpbnQ4QXJyYXkqIGluaXREYXRhLCBTdHJpbmcmIGRlc3RpbmF0aW9uVVJMLCB1bnNpZ25lZCBz
aG9ydCYgZXJyb3JDb2RlLCB1aW50MzJfdCYgc3lzdGVtQ29kZSkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCByZWxlYXNlS2V5cygpIG92ZXJyaWRlOwpAQCAtNTYsMTAgKzU1LDIyIEBAIHB1YmxpYzoKICAg
ICB2b2lkIHBsYXllckRpZFJlY2VpdmVFcnJvcihOU0Vycm9yICopOwogCiBwcml2YXRlOgorI2lm
ICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIGNvbnN0IExvZ2dlciYgbG9nZ2VyKCkgY29uc3Qg
eyByZXR1cm4gbV9sb2dnZXI7IH0KKyAgICBjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKCkgY29u
c3QgeyByZXR1cm4gbV9sb2dJZGVudGlmaWVyOyB9CisgICAgY29uc3QgY2hhciogbG9nQ2xhc3NO
YW1lKCkgY29uc3QgeyByZXR1cm4gIkNETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDIjsgfQorICAg
IFdURkxvZ0NoYW5uZWwmIGxvZ0NoYW5uZWwoKSBjb25zdDsKKyNlbmRpZgorCiAgICAgV2Vha1B0
cjxNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDPiBtX3BhcmVudDsKLSAgICBMZWdh
Y3lDRE1TZXNzaW9uQ2xpZW50KiBtX2NsaWVudDsKKyAgICBXZWFrUHRyPExlZ2FjeUNETVNlc3Np
b25DbGllbnQ+IG1fY2xpZW50OwogICAgIFN0cmluZyBtX3Nlc3Npb25JZDsKICAgICBSZXRhaW5Q
dHI8QVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3Q+IG1fcmVxdWVzdDsKKworI2lmICFSRUxF
QVNFX0xPR19ESVNBQkxFRAorICAgIFJlZjxjb25zdCBMb2dnZXI+IG1fbG9nZ2VyOworICAgIGNv
bnN0IHZvaWQqIG1fbG9nSWRlbnRpZmllcjsKKyNlbmRpZgogfTsKIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vz
c2lvbkFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCA2
MDc2ZmE4Y2MwOTJkZTVjZDExYzBhZDdlYjNhMGI4YjA1ODg2YTI1Li45YjZlODdiMTQ1NjU1NmVl
MjY3OWYzOGFlYTBmYmFlNDAyMzE4MGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2Jq
Qy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtMzAsNiArMzAsNyBAQAogCiAj
aW1wb3J0ICJMZWdhY3lDRE0uaCIKICNpbXBvcnQgIkxlZ2FjeUNETVNlc3Npb24uaCIKKyNpbXBv
cnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIk1lZGlhUGxheWVyLmgiCiAjaW1wb3J0ICJNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgiCiAjaW1wb3J0ICJXZWJDb3JlTlNFcnJvckV4
dHJhcy5oIgpAQCAtMzcsMjEgKzM4LDI4IEBACiAjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZBc3Nl
dFJlc291cmNlTG9hZGVyLmg+CiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9UeXBlZEFycmF5SW5s
aW5lcy5oPgogI2ltcG9ydCA8b2JqYy9vYmpjLXJ1bnRpbWUuaD4KKyNpbXBvcnQgPHd0Zi9Mb2dn
ZXJIZWxwZXIuaD4KICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW1wb3J0IDx3dGYvU29m
dExpbmtpbmcuaD4KICNpbXBvcnQgPHd0Zi9VVUlELmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakM6OkNETVNlc3Npb25BVkZvdW5kYXRpb25PYmpD
KE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMqIHBhcmVudCwgTGVnYWN5Q0RNU2Vz
c2lvbkNsaWVudCogY2xpZW50KQorQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakM6OkNETVNlc3Np
b25BVkZvdW5kYXRpb25PYmpDKE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMqIHBh
cmVudCwgTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCYgY2xpZW50KQogICAgIDogbV9wYXJlbnQoKnBh
cmVudCkKICAgICAsIG1fY2xpZW50KGNsaWVudCkKICAgICAsIG1fc2Vzc2lvbklkKGNyZWF0ZVZl
cnNpb240VVVJRFN0cmluZygpKQorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgICwgbV9s
b2dnZXIoY2xpZW50LmxvZ2dlcigpKQorICAgICwgbV9sb2dJZGVudGlmaWVyKGNsaWVudC5sb2dJ
ZGVudGlmaWVyKCkpCisjZW5kaWYKIHsKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOwog
fQogCiBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQzo6fkNETVNlc3Npb25BVkZvdW5kYXRpb25P
YmpDKCkKIHsKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOwogfQogCiBSZWZQdHI8VWlu
dDhBcnJheT4gQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakM6OmdlbmVyYXRlS2V5UmVxdWVzdChj
b25zdCBTdHJpbmcmIG1pbWVUeXBlLCBVaW50OEFycmF5KiBpbml0RGF0YSwgU3RyaW5nJiBkZXN0
aW5hdGlvblVSTCwgdW5zaWduZWQgc2hvcnQmIGVycm9yQ29kZSwgdWludDMyX3QmIHN5c3RlbUNv
ZGUpCkBAIC01OSw2ICs2Nyw3IEBAIFJlZlB0cjxVaW50OEFycmF5PiBDRE1TZXNzaW9uQVZGb3Vu
ZGF0aW9uT2JqQzo6Z2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmluZyYKICAgICBVTlVTRURf
UEFSQU0obWltZVR5cGUpOwogCiAgICAgaWYgKCFtX3BhcmVudCkgeworICAgICAgICBFUlJPUl9M
T0coTE9HSURFTlRJRklFUiwgImVycm9yOiAhcGFyZW50Iik7CiAgICAgICAgIGVycm9yQ29kZSA9
IExlZ2FjeUNETTo6VW5rbm93bkVycm9yOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9
CkBAIC02NywxMiArNzYsMTQgQEAgUmVmUHRyPFVpbnQ4QXJyYXk+IENETVNlc3Npb25BVkZvdW5k
YXRpb25PYmpDOjpnZW5lcmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5nJgogICAgIFN0cmluZyBr
ZXlJRDsKICAgICBSZWZQdHI8VWludDhBcnJheT4gY2VydGlmaWNhdGU7CiAgICAgaWYgKCFNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpleHRyYWN0S2V5VVJJS2V5SURBbmRDZXJ0
aWZpY2F0ZUZyb21Jbml0RGF0YShpbml0RGF0YSwga2V5VVJJLCBrZXlJRCwgY2VydGlmaWNhdGUp
KSB7CisgICAgICAgIEVSUk9SX0xPRyhMT0dJREVOVElGSUVSLCAiZXJyb3I6IGNvdWxkIG5vdCBl
eHRyYWN0IGtleSBpbmZvIik7CiAgICAgICAgIGVycm9yQ29kZSA9IExlZ2FjeUNETTo6VW5rbm93
bkVycm9yOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAgICBtX3JlcXVlc3Qg
PSBtX3BhcmVudC0+dGFrZVJlcXVlc3RGb3JLZXlVUkkoa2V5VVJJKTsKICAgICBpZiAoIW1fcmVx
dWVzdCkgeworICAgICAgICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwgImVycm9yOiBjb3VsZCBu
b3QgZmluZCByZXF1ZXN0IGZvciBrZXkgVVJJIik7CiAgICAgICAgIGVycm9yQ29kZSA9IExlZ2Fj
eUNETTo6VW5rbm93bkVycm9yOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CkBAIC04
NCw2ICs5NSw3IEBAIFJlZlB0cjxVaW50OEFycmF5PiBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2Jq
Qzo6Z2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmluZyYKICAgICBSZXRhaW5QdHI8TlNEYXRh
PiBrZXlSZXF1ZXN0ID0gW21fcmVxdWVzdCBzdHJlYW1pbmdDb250ZW50S2V5UmVxdWVzdERhdGFG
b3JBcHA6Y2VydGlmaWNhdGVEYXRhLmdldCgpIGNvbnRlbnRJZGVudGlmaWVyOmFzc2V0SUQuZ2V0
KCkgb3B0aW9uczpuaWwgZXJyb3I6Jm5zRXJyb3JdOwogCiAgICAgaWYgKCFrZXlSZXF1ZXN0KSB7
CisgICAgICAgIEVSUk9SX0xPRyhMT0dJREVOVElGSUVSLCAiZmFpbGVkIHRvIGdlbmVyYXRlIGtl
eSByZXF1ZXN0IHdpdGggZXJyb3I6ICIsIFN0cmluZyhuc0Vycm9yLmxvY2FsaXplZERlc2NyaXB0
aW9uKSk7CiAgICAgICAgIGVycm9yQ29kZSA9IExlZ2FjeUNETTo6RG9tYWluRXJyb3I7CiAgICAg
ICAgIHN5c3RlbUNvZGUgPSBtZWRpYUtleUVycm9yU3lzdGVtQ29kZShuc0Vycm9yKTsKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CkBAIC05Myw2ICsxMDUsOCBAQCBSZWZQdHI8VWludDhBcnJheT4g
Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakM6OmdlbmVyYXRlS2V5UmVxdWVzdChjb25zdCBTdHJp
bmcmCiAgICAgc3lzdGVtQ29kZSA9IDA7CiAgICAgZGVzdGluYXRpb25VUkwgPSBTdHJpbmcoKTsK
IAorICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CisKICAgICBhdXRvIGtleVJlcXVlc3RC
dWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKFtrZXlSZXF1ZXN0IGJ5dGVzXSwgW2tleVJlcXVl
c3QgbGVuZ3RoXSk7CiAgICAgdW5zaWduZWQgYnl0ZUxlbmd0aCA9IGtleVJlcXVlc3RCdWZmZXIt
PmJ5dGVMZW5ndGgoKTsKICAgICByZXR1cm4gVWludDhBcnJheTo6dHJ5Q3JlYXRlKFdURk1vdmUo
a2V5UmVxdWVzdEJ1ZmZlciksIDAsIGJ5dGVMZW5ndGgpOwpAQCAtMTExLDYgKzEyNSw4IEBAIGJv
b2wgQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakM6OnVwZGF0ZShVaW50OEFycmF5KiBrZXksIFJl
ZlB0cjxVaW50OEFycmF5PiYgbmV4CiAgICAgc3lzdGVtQ29kZSA9IDA7CiAgICAgbmV4dE1lc3Nh
Z2UgPSBudWxscHRyOwogCisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKwogICAgIHJl
dHVybiB0cnVlOwogfQogCkBAIC0xMjQsMTAgKzE0MCwxOSBAQCB2b2lkIENETVNlc3Npb25BVkZv
dW5kYXRpb25PYmpDOjpwbGF5ZXJEaWRSZWNlaXZlRXJyb3IoTlNFcnJvciAqZXJyb3IpCiAgICAg
aWYgKCFtX2NsaWVudCkKICAgICAgICAgcmV0dXJuOwogCisgICAgRVJST1JfTE9HKExPR0lERU5U
SUZJRVIsIFN0cmluZyhlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbikpOworCiAgICAgdW5zaWdu
ZWQgbG9uZyBjb2RlID0gbWVkaWFLZXlFcnJvclN5c3RlbUNvZGUoZXJyb3IpOwogICAgIG1fY2xp
ZW50LT5zZW5kRXJyb3IoTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudDo6TWVkaWFLZXlFcnJvckRvbWFp
biwgY29kZSk7CiB9CiAKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKK1dURkxvZ0NoYW5uZWwm
IENETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDOjpsb2dDaGFubmVsKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gTG9nRU1FOworfQorI2VuZGlmCisKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9u
QVZTdHJlYW1TZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uLmgKaW5kZXggM2I0MjJlY2Fm
NGExZDExMzg3YjFhYmYxMTBiYmU2MTQ1MDIwYWU1MC4uYjI4YmMzMzllM2RmZjk3Yzk5OTkzNzU2
ZWRjODgyODJkZmI5NmE4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNl
c3Npb25BVlN0cmVhbVNlc3Npb24uaApAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBDRE1Qcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDOwogY2xhc3MgQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbiA6IHB1
YmxpYyBDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDIHsKICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKLSAgICBDRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uKFZlY3Rvcjxp
bnQ+JiYgcHJvdG9jb2xWZXJzaW9ucywgQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyYsIExl
Z2FjeUNETVNlc3Npb25DbGllbnQqKTsKKyAgICBDRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uKFZl
Y3RvcjxpbnQ+JiYgcHJvdG9jb2xWZXJzaW9ucywgQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
QyYsIExlZ2FjeUNETVNlc3Npb25DbGllbnQmKTsKICAgICB2aXJ0dWFsIH5DRE1TZXNzaW9uQVZT
dHJlYW1TZXNzaW9uKCk7CiAKICAgICAvLyBMZWdhY3lDRE1TZXNzaW9uCkBAIC02MSw2ICs2MSwx
MCBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgUmVmUHRyPFVpbnQ4QXJyYXk+IGdlbmVyYXRl
S2V5UmVsZWFzZU1lc3NhZ2UodW5zaWduZWQgc2hvcnQmIGVycm9yQ29kZSwgdWludDMyX3QmIHN5
c3RlbUNvZGUpOwogCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgY29uc3QgY2hhciog
bG9nQ2xhc3NOYW1lKCkgY29uc3QgeyByZXR1cm4gIkNETVNlc3Npb25BVlN0cmVhbVNlc3Npb24i
OyB9CisjZW5kaWYKKwogICAgIFJldGFpblB0cjxBVlN0cmVhbVNlc3Npb24+IG1fc3RyZWFtU2Vz
c2lvbjsKICAgICBSZWZQdHI8VWludDhBcnJheT4gbV9pbml0RGF0YTsKICAgICBSZWZQdHI8VWlu
dDhBcnJheT4gbV9jZXJ0aWZpY2F0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVlN0cmVhbVNlc3Npb24u
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9D
RE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uLm1tCmluZGV4IDgyOGRhYmE3NjdhMGQ1MDNlNjZhNGM3
YTk2MjEwNGRlMjY2MjQ4YTkuLjU4OGQ5ZTgxODVlZTA2ODQ3NjZmNTE3ZjliM2ViNGM3YmI1MTE5
ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0NETVNlc3Npb25BVlN0cmVhbVNlc3Npb24ubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWU3RyZWFt
U2Vzc2lvbi5tbQpAQCAtNDAsNiArNDAsNyBAQAogI2ltcG9ydCA8b2JqYy9vYmpjLXJ1bnRpbWUu
aD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvQVZGb3VuZGF0aW9uU1BJLmg+CiAjaW1wb3J0IDx3
dGYvRmlsZVN5c3RlbS5oPgorI2ltcG9ydCA8d3RmL0xvZ2dlckhlbHBlci5oPgogI2ltcG9ydCA8
d3RmL1VVSUQuaD4KICNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgogCkBAIC04MSwx
NiArODIsMTggQEAgQGVuZAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUNETVNlc3Npb25BVlN0
cmVhbVNlc3Npb246OkNETVNlc3Npb25BVlN0cmVhbVNlc3Npb24oVmVjdG9yPGludD4mJiBwcm90
b2NvbFZlcnNpb25zLCBDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDJiBjZG0sIExlZ2FjeUNE
TVNlc3Npb25DbGllbnQqIGNsaWVudCkKK0NETVNlc3Npb25BVlN0cmVhbVNlc3Npb246OkNETVNl
c3Npb25BVlN0cmVhbVNlc3Npb24oVmVjdG9yPGludD4mJiBwcm90b2NvbFZlcnNpb25zLCBDRE1Q
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDJiBjZG0sIExlZ2FjeUNETVNlc3Npb25DbGllbnQmIGNs
aWVudCkKICAgICA6IENETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMoY2RtLCBjbGllbnQpCiAg
ICAgLCBtX2RhdGFQYXJzZXJPYnNlcnZlcihhZG9wdE5TKFtbV2ViQ0RNU2Vzc2lvbkFWU3RyZWFt
U2Vzc2lvbk9ic2VydmVyIGFsbG9jXSBpbml0V2l0aFBhcmVudDp0aGlzXSkpCiAgICAgLCBtX3By
b3RvY29sVmVyc2lvbnMoV1RGTW92ZShwcm90b2NvbFZlcnNpb25zKSkKICAgICAsIG1fbW9kZShO
b3JtYWwpCiB7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKIH0KIAogQ0RNU2Vzc2lv
bkFWU3RyZWFtU2Vzc2lvbjo6fkNETVNlc3Npb25BVlN0cmVhbVNlc3Npb24oKQogeworICAgIEFM
V0FZU19MT0coTE9HSURFTlRJRklFUik7CiAgICAgc2V0U3RyZWFtU2Vzc2lvbihudWxscHRyKTsK
IAogICAgIGZvciAoYXV0byYgc291cmNlQnVmZmVyIDogbV9zb3VyY2VCdWZmZXJzKQpAQCAtMTAz
LDcgKzEwNiw3IEBAIFJlZlB0cjxVaW50OEFycmF5PiBDRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9u
OjpnZW5lcmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5nJiBtCiAgICAgVU5VU0VEX1BBUkFNKGRl
c3RpbmF0aW9uVVJMKTsKICAgICBBU1NFUlQoaW5pdERhdGEpOwogCi0gICAgTE9HKE1lZGlhLCAi
Q0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbjo6Z2VuZXJhdGVLZXlSZXF1ZXN0KCVwKSIsIHRoaXMp
OworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CiAKICAgICBlcnJvckNvZGUgPSBNZWRp
YVBsYXllcjo6Tm9FcnJvcjsKICAgICBzeXN0ZW1Db2RlID0gMDsKQEAgLTEyOSw3ICsxMzIsNyBA
QCB2b2lkIENETVNlc3Npb25BVlN0cmVhbVNlc3Npb246OnJlbGVhc2VLZXlzKCkKICAgICAgICAg
Zm9yIChhdXRvJiBzb3VyY2VCdWZmZXIgOiBtX3NvdXJjZUJ1ZmZlcnMpCiAgICAgICAgICAgICBz
b3VyY2VCdWZmZXItPmZsdXNoKCk7CiAKLSAgICAgICAgTE9HKE1lZGlhLCAiQ0RNU2Vzc2lvbkFW
U3RyZWFtU2Vzc2lvbjo6cmVsZWFzZUtleXMoJXApIC0gZXhwaXJpbmcgc3RyZWFtIHNlc3Npb24i
LCB0aGlzKTsKKyAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAiZXhwaXJpbmcgc3Ry
ZWFtIHNlc3Npb24iKTsKICAgICAgICAgW21fc3RyZWFtU2Vzc2lvbiBleHBpcmVdOwogCiAgICAg
ICAgIGlmICghbV9jZXJ0aWZpY2F0ZSkKQEAgLTE1MCw3ICsxNTMsNyBAQCB2b2lkIENETVNlc3Np
b25BVlN0cmVhbVNlc3Npb246OnJlbGVhc2VLZXlzKCkKICAgICAgICAgICAgICAgICBjb250aW51
ZTsKIAogICAgICAgICAgICAgaWYgKG1fc2Vzc2lvbklkID09IFN0cmluZyhwbGF5YmFja1Nlc3Np
b25JZFZhbHVlKSkgewotICAgICAgICAgICAgICAgIExPRyhNZWRpYSwgIkNETVNlc3Npb25BVlN0
cmVhbVNlc3Npb246OnJlbGVhc2VLZXlzKCVwKSAtIGZvdW5kIHNlc3Npb24sIHNlbmRpbmcgZXhw
aXJhdGlvbiBtZXNzYWdlIik7CisgICAgICAgICAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElG
SUVSLCAiZm91bmQgc2Vzc2lvbiwgc2VuZGluZyBleHBpcmF0aW9uIG1lc3NhZ2UiKTsKICAgICAg
ICAgICAgICAgICBtX2V4cGlyZWRTZXNzaW9uID0gZXhwaXJlZFNlc3Npb25EYXRhOwogICAgICAg
ICAgICAgICAgIG1fY2xpZW50LT5zZW5kTWVzc2FnZShVaW50OEFycmF5OjpjcmVhdGUoc3RhdGlj
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KFttX2V4cGlyZWRTZXNzaW9uIGJ5dGVzXSksIFttX2V4cGly
ZWRTZXNzaW9uIGxlbmd0aF0pLnB0cigpLCBlbXB0eVN0cmluZygpKTsKICAgICAgICAgICAgICAg
ICBicmVhazsKQEAgLTE3OSwxMyArMTgyLDEzIEBAIGJvb2wgQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vz
c2lvbjo6dXBkYXRlKFVpbnQ4QXJyYXkqIGtleSwgUmVmUHRyPFVpbnQ4QXJyYXk+JiBuZXh0CiB7
CiAgICAgYm9vbCBzaG91bGRHZW5lcmF0ZUtleVJlcXVlc3QgPSAhbV9jZXJ0aWZpY2F0ZSB8fCBp
c0VxdWFsMihrZXksICJyZW5ldyIpOwogICAgIGlmICghbV9jZXJ0aWZpY2F0ZSkgewotICAgICAg
ICBMT0coTWVkaWEsICJDRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uOjp1cGRhdGUoJXApIC0gY2Vy
dGlmaWNhdGUgZGF0YSIsIHRoaXMpOworICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIs
ICJjZXJ0aWZpY2F0ZSBkYXRhIik7CiAKICAgICAgICAgbV9jZXJ0aWZpY2F0ZSA9IGtleTsKICAg
ICB9CiAKICAgICBpZiAoaXNFcXVhbDIoa2V5LCAiYWNrbm93bGVkZ2VkIikpIHsKLSAgICAgICAg
TE9HKE1lZGlhLCAiQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbjo6dXBkYXRlKCVwKSAtIGFja25v
d2xlZGluZyBzZWN1cmUgc3RvcCBtZXNzYWdlIiwgdGhpcyk7CisgICAgICAgIEFMV0FZU19MT0co
TE9HSURFTlRJRklFUiwgImFja25vd2xlZGluZyBzZWN1cmUgc3RvcCBtZXNzYWdlIik7CiAKICAg
ICAgICAgaWYgKCFtX2V4cGlyZWRTZXNzaW9uKSB7CiAgICAgICAgICAgICBlcnJvckNvZGUgPSBN
ZWRpYVBsYXllcjo6SW52YWxpZFBsYXllclN0YXRlOwpAQCAtMjQxLDI0ICsyNDQsMjYgQEAgYm9v
bCBDRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uOjp1cGRhdGUoVWludDhBcnJheSoga2V5LCBSZWZQ
dHI8VWludDhBcnJheT4mIG5leHQKICAgICAgICAgICAgIG1fc2Vzc2lvbklkID0gY3JlYXRlVmVy
c2lvbjRVVUlEU3RyaW5nKCk7CiAKICAgICAgICAgaWYgKGVycm9yKSB7Ci0gICAgICAgICAgICBM
T0coTWVkaWEsICJDRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uOjp1cGRhdGUoJXApIC0gZXJyb3I6
JUAiLCB0aGlzLCBbZXJyb3IgZGVzY3JpcHRpb25dKTsKKyAgICAgICAgICAgIEVSUk9SX0xPRyhM
T0dJREVOVElGSUVSLCAiZXJyb3IgZ2VuZXJhdGluZyBrZXkgcmVxdWVzdDogIiwgU3RyaW5nKGVy
cm9yLmRlc2NyaXB0aW9uKSk7CiAgICAgICAgICAgICBlcnJvckNvZGUgPSBNZWRpYVBsYXllcjo6
SW52YWxpZFBsYXllclN0YXRlOwogICAgICAgICAgICAgc3lzdGVtQ29kZSA9IG1lZGlhS2V5RXJy
b3JTeXN0ZW1Db2RlKGVycm9yKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
fQogCisgICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgImdlbmVyYXRlZCBrZXkgcmVx
dWVzdCIpOwogICAgICAgICBuZXh0TWVzc2FnZSA9IFVpbnQ4QXJyYXk6OmNyZWF0ZShbcmVxdWVz
dCBsZW5ndGhdKTsKICAgICAgICAgW3JlcXVlc3QgZ2V0Qnl0ZXM6bmV4dE1lc3NhZ2UtPmRhdGEo
KSBsZW5ndGg6bmV4dE1lc3NhZ2UtPmxlbmd0aCgpXTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KIAogICAgIGlmICghcHJvdGVjdGVkU291cmNlQnVmZmVyKSB7CisgICAgICAgIEVSUk9S
X0xPRyhMT0dJREVOVElGSUVSLCAiZXJyb3I6ICFwcm90ZWN0ZWRTb3VyY2VCdWZmZXIiKTsKICAg
ICAgICAgZXJyb3JDb2RlID0gTWVkaWFQbGF5ZXI6OkludmFsaWRQbGF5ZXJTdGF0ZTsKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIEFTU0VSVCghbV9zb3VyY2VCdWZmZXJzLmlz
RW1wdHkoKSk7Ci0gICAgTE9HKE1lZGlhLCAiQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbjo6dXBk
YXRlKCVwKSAtIGtleSBkYXRhIiwgdGhpcyk7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVS
LCAicHJvY2Vzc2luZyBrZXkgcmVzcG9uc2UiKTsKICAgICBlcnJvckNvZGUgPSBNZWRpYVBsYXll
cjo6Tm9FcnJvcjsKICAgICBzeXN0ZW1Db2RlID0gMDsKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBr
ZXlEYXRhID0gYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCeXRlczprZXktPmRhdGEo
KSBsZW5ndGg6a2V5LT5sZW5ndGgoKV0pOwpAQCAtMjkzLDEyICsyOTgsMTQgQEAgdm9pZCBDRE1T
ZXNzaW9uQVZTdHJlYW1TZXNzaW9uOjpzZXRTdHJlYW1TZXNzaW9uKEFWU3RyZWFtU2Vzc2lvbiAq
c3RyZWFtU2Vzc2lvbikKIAogdm9pZCBDRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uOjphZGRQYXJz
ZXIoQVZTdHJlYW1EYXRhUGFyc2VyKiBwYXJzZXIpCiB7CisgICAgQUxXQVlTX0xPRyhMT0dJREVO
VElGSUVSKTsKICAgICBpZiAobV9zdHJlYW1TZXNzaW9uKQogICAgICAgICBbbV9zdHJlYW1TZXNz
aW9uIGFkZFN0cmVhbURhdGFQYXJzZXI6cGFyc2VyXTsKIH0KIAogdm9pZCBDRE1TZXNzaW9uQVZT
dHJlYW1TZXNzaW9uOjpyZW1vdmVQYXJzZXIoQVZTdHJlYW1EYXRhUGFyc2VyKiBwYXJzZXIpCiB7
CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKICAgICBpZiAobV9zdHJlYW1TZXNzaW9u
KQogICAgICAgICBbbV9zdHJlYW1TZXNzaW9uIHJlbW92ZVN0cmVhbURhdGFQYXJzZXI6cGFyc2Vy
XTsKIH0KQEAgLTMxOCwxNCArMzI1LDE0IEBAIFJlZlB0cjxVaW50OEFycmF5PiBDRE1TZXNzaW9u
QVZTdHJlYW1TZXNzaW9uOjpnZW5lcmF0ZUtleVJlbGVhc2VNZXNzYWdlKHVuc2lnbmVkCiAKICAg
ICBOU0FycmF5KiBleHBpcmVkU2Vzc2lvbnMgPSBbUEFMOjpnZXRBVlN0cmVhbVNlc3Npb25DbGFz
cygpIHBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9ydHNXaXRoQXBwSWRlbnRpZmllcjpjZXJ0aWZp
Y2F0ZURhdGEuZ2V0KCkgc3RvcmFnZURpcmVjdG9yeUF0VVJMOltOU1VSTCBmaWxlVVJMV2l0aFBh
dGg6c3RvcmFnZVBhdGhdXTsKICAgICBpZiAoIVtleHBpcmVkU2Vzc2lvbnMgY291bnRdKSB7Ci0g
ICAgICAgIExPRyhNZWRpYSwgIkNETVNlc3Npb25BVlN0cmVhbVNlc3Npb246OmdlbmVyYXRlS2V5
UmVsZWFzZU1lc3NhZ2UoJXApIC0gbm8gZXhwaXJlZCBzZXNzaW9ucyBmb3VuZCIsIHRoaXMpOwor
ICAgICAgICBBTFdBWVNfTE9HKCJubyBleHBpcmVkIHNlc3Npb25zIGZvdW5kIik7CiAKICAgICAg
ICAgZXJyb3JDb2RlID0gTWVkaWFQbGF5ZXI6OktleVN5c3RlbU5vdFN1cHBvcnRlZDsKICAgICAg
ICAgc3lzdGVtQ29kZSA9ICchbW9yJzsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQog
Ci0gICAgTE9HKE1lZGlhLCAiQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbjo6Z2VuZXJhdGVLZXlS
ZWxlYXNlTWVzc2FnZSglcCkgLSBmb3VuZCAlZCBleHBpcmVkIHNlc3Npb25zIiwgdGhpcywgW2V4
cGlyZWRTZXNzaW9ucyBjb3VudF0pOworICAgIEFMV0FZU19MT0coImZvdW5kICIsIFtleHBpcmVk
U2Vzc2lvbnMgY291bnRdLCAiIGV4cGlyZWQgc2Vzc2lvbnMiKTsKIAogICAgIGVycm9yQ29kZSA9
IDA7CiAgICAgc3lzdGVtQ29kZSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZP
YmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9DRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDLmgKaW5kZXggZWViNWY5ODNiOGEzZmJiZjM0
YmFjNjRkZDBmZDU1YmMyNTNiMGVhMC4uMjk4ZmQwYzhmMjkwMDY2NmFkZDMyNjRkOTJmMDNlYmE1
ZDcxOGZiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25N
ZWRpYVNvdXJjZUFWRk9iakMuaApAQCAtNDMsMTQgKzQzLDEzIEBAIGNsYXNzIENETVByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakM7CiBjbGFzcyBDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDIDog
cHVibGljIExlZ2FjeUNETVNlc3Npb24sIHB1YmxpYyBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Q0Vycm9yQ2xpZW50LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8Q0RNU2Vzc2lvbk1lZGlhU291cmNl
QVZGT2JqQz4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIENE
TVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMoQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyYs
IExlZ2FjeUNETVNlc3Npb25DbGllbnQqKTsKKyAgICBDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZP
YmpDKENETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMmLCBMZWdhY3lDRE1TZXNzaW9uQ2xpZW50
Jik7CiAgICAgdmlydHVhbCB+Q0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQygpOwogCiAgICAg
dmlydHVhbCB2b2lkIGFkZFBhcnNlcihBVlN0cmVhbURhdGFQYXJzZXIqKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHJlbW92ZVBhcnNlcihBVlN0cmVhbURhdGFQYXJzZXIqKSA9IDA7CiAKICAgICAv
LyBMZWdhY3lDRE1TZXNzaW9uCi0gICAgdm9pZCBzZXRDbGllbnQoTGVnYWN5Q0RNU2Vzc2lvbkNs
aWVudCogY2xpZW50KSBvdmVycmlkZSB7IG1fY2xpZW50ID0gY2xpZW50OyB9CiAgICAgY29uc3Qg
U3RyaW5nJiBzZXNzaW9uSWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3Nlc3Npb25JZDsg
fQogCiAgICAgLy8gU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakNFcnJvckNsaWVudApAQCAtNjgs
MTIgKzY3LDIzIEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBTdHJpbmcgc3RvcmFnZVBhdGgo
KSBjb25zdDsKIAorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIGNvbnN0IExvZ2dlciYg
bG9nZ2VyKCkgY29uc3QgeyByZXR1cm4gbV9sb2dnZXI7IH0KKyAgICBjb25zdCB2b2lkKiBsb2dJ
ZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9sb2dJZGVudGlmaWVyOyB9CisgICAgV1RGTG9n
Q2hhbm5lbCYgbG9nQ2hhbm5lbCgpIGNvbnN0OworI2VuZGlmCisKICAgICBDRE1Qcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDKiBtX2NkbTsKLSAgICBMZWdhY3lDRE1TZXNzaW9uQ2xpZW50KiBtX2Ns
aWVudCB7IG51bGxwdHIgfTsKKyAgICBXZWFrUHRyPExlZ2FjeUNETVNlc3Npb25DbGllbnQ+IG1f
Y2xpZW50OwogICAgIFZlY3RvcjxSZWZQdHI8U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM+PiBt
X3NvdXJjZUJ1ZmZlcnM7CiAgICAgUmVmUHRyPFVpbnQ4QXJyYXk+IG1fY2VydGlmaWNhdGU7CiAg
ICAgU3RyaW5nIG1fc2Vzc2lvbklkOwogICAgIGJvb2wgbV9zdG9wcGVkIHsgZmFsc2UgfTsKKwor
I2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIFJlZjxjb25zdCBMb2dnZXI+IG1fbG9nZ2Vy
OworICAgIGNvbnN0IHZvaWQqIG1fbG9nSWRlbnRpZmllcjsKKyNlbmRpZgogfTsKIAogaW5saW5l
IENETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMqIHRvQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZG
T2JqQyhMZWdhY3lDRE1TZXNzaW9uKiBzZXNzaW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbk1lZGlhU291
cmNlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0NETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMubW0KaW5kZXggZjAzZTczOWIy
MDA3OTdkMTA1NzkwZjViMDgyNGEyMWZiZjE0NDA3ZC4uMjg2YTVhNDg4N2U4ZDk1NjAwZTdjOGJh
YzNhZmJlNjY3NjE2MDU1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9D
RE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDLm1tCkBAIC0zNSw5ICszNSwxMyBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLUNETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakM6OkNETVNlc3Np
b25NZWRpYVNvdXJjZUFWRk9iakMoQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyYgY2RtLCBM
ZWdhY3lDRE1TZXNzaW9uQ2xpZW50KiBjbGllbnQpCitDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZP
YmpDOjpDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDKENETVByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakMmIGNkbSwgTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCYgY2xpZW50KQogICAgIDogbV9jZG0o
JmNkbSkKICAgICAsIG1fY2xpZW50KGNsaWVudCkKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQK
KyAgICAsIG1fbG9nZ2VyKGNsaWVudC5sb2dnZXIoKSkKKyAgICAsIG1fbG9nSWRlbnRpZmllcihj
bGllbnQubG9nSWRlbnRpZmllcigpKQorI2VuZGlmCiB7CiB9CiAKQEAgLTExMiw2ICsxMTYsMTMg
QEAgU3RyaW5nIENETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakM6OnN0b3JhZ2VQYXRoKCkgY29u
c3QKICAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHN0b3Jh
Z2VEaXJlY3RvcnksICJTZWN1cmVTdG9wLnBsaXN0Iik7CiB9CiAKKyNpZiAhUkVMRUFTRV9MT0df
RElTQUJMRUQKK1dURkxvZ0NoYW5uZWwmIENETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakM6Omxv
Z0NoYW5uZWwoKSBjb25zdAoreworICAgIHJldHVybiBMb2dFTUU7Cit9CisjZW5kaWYKKwogfQog
CiAjZW5kaWYgLy8gRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpICYmIEVOQUJMRShNRURJ
QV9TT1VSQ0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKaW5kZXggMDJmMDkzYThlMDk0NjBmZmVmYzhm
OTNhY2EyM2QyMmM5NjFiYzljYS4uZmRiZThhYjIwODg5NzJlZTUzOTAzNzQwMDgyNTc1NzBjMjBk
YzVjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaApAQCAtMjY5LDcgKzI2OSw3IEBAIHByaXZhdGU6
CiAKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKICAgICB2b2lkIGtleUFkZGVk
KCkgZmluYWw7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNETVNlc3Npb24+IGNyZWF0ZVNl
c3Npb24oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIExlZ2FjeUNETVNlc3Npb25DbGllbnQqKSBm
aW5hbDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TGVnYWN5Q0RNU2Vzc2lvbj4gY3JlYXRlU2Vzc2lv
bihjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCYpIGZpbmFs
OwogI2VuZGlmCiAKICAgICBTdHJpbmcgbGFuZ3VhZ2VPZlByaW1hcnlBdWRpb1RyYWNrKCkgY29u
c3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCA2YmRhMmZlMGI4YWEzZDI4NWEx
NmYxMTAxMjUzYTE2ODVjYWVhY2Y4Li4xYjEzNWExNDVlOWZjMmJhZGIwZmVmZGIwYmEwZDg3NzZl
NzM4NjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTIxMDMsNiArMjEwMyw3IEBAIGJv
b2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2hvdWxkV2FpdEZvckxvYWRp
bmdPZlJlc291cmNlKEFWQXNzZXRSCiAKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJ
QSkgfHwgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKICAgICBpZiAoc2NoZW1lID09ICJza2QiKSB7
CisgICAgICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJyZWNlaXZlZCBza2Q6Ly8gVVJJIik7
CiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCiAgICAgICAgIC8vIENyZWF0ZSBh
biBpbml0RGF0YSB3aXRoIHRoZSBmb2xsb3dpbmcgbGF5b3V0OgogICAgICAgICAvLyBbNCBieXRl
czoga2V5VVJJIHNpemVdLCBba2V5VVJJIHNpemUgYnl0ZXM6IGtleVVSSV0KQEAgLTI4MTYsNyAr
MjgxNyw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6a2V5QWRk
ZWQoKQogICAgICAgICBtX2tleVVSSVRvUmVxdWVzdE1hcC5yZW1vdmUoa2V5SWQpOwogfQogCi1z
dGQ6OnVuaXF1ZV9wdHI8TGVnYWN5Q0RNU2Vzc2lvbj4gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQzo6Y3JlYXRlU2Vzc2lvbihjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgTGVnYWN5
Q0RNU2Vzc2lvbkNsaWVudCogY2xpZW50KQorc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNETVNlc3Np
b24+IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZVNlc3Npb24oY29u
c3QgU3RyaW5nJiBrZXlTeXN0ZW0sIExlZ2FjeUNETVNlc3Npb25DbGllbnQmIGNsaWVudCkKIHsK
ICAgICBpZiAoIWtleVN5c3RlbUlzU3VwcG9ydGVkKGtleVN5c3RlbSkpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5jcHAKaW5kZXggMGViZWFkOThjYTRmNmNk
OWU0ZTY0ZTY4ZTQwYzViNzRkYmJlYTQ1Ni4uMDRlYWUwMGNhNTUzOWU3ZDJkOWIyODM5NWNlOWFl
M2Y2ODcxMjI5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuY3BwCkBAIC0xMDIsNyArMTAyLDcg
QEAgQ0RNRmFjdG9yeVRodW5kZXImIENETUZhY3RvcnlUaHVuZGVyOjpzaW5nbGV0b24oKQogICAg
IHJldHVybiBzX2ZhY3Rvcnk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxDRE1Qcml2YXRlPiBDRE1G
YWN0b3J5VGh1bmRlcjo6Y3JlYXRlQ0RNKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKQorc3RkOjp1
bmlxdWVfcHRyPENETVByaXZhdGU+IENETUZhY3RvcnlUaHVuZGVyOjpjcmVhdGVDRE0oY29uc3Qg
U3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IENETVByaXZhdGVDbGllbnQmKQogewogICAgIEFTU0VS
VChzdXBwb3J0c0tleVN5c3RlbShrZXlTeXN0ZW0pKTsKICAgICByZXR1cm4gbWFrZVVuaXF1ZTxD
RE1Qcml2YXRlVGh1bmRlcj4oa2V5U3lzdGVtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmgKaW5kZXgg
MTAyMGUxNTMyMjcxYjUzNTFlMTA2ZGRlOGYyMWVhNTQwNWE5YzIzNy4uNmI4NDAwZWE0ZGFlNjYx
MDYxZDI2ZTZkMzMyMjFlZjkzMmM3ZWRjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmgKQEAgLTU5
LDcgKzU5LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+Q0RNRmFjdG9yeVRodW5kZXIoKSA9
IGRlZmF1bHQ7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q0RNUHJpdmF0ZT4gY3JlYXRlQ0RNKGNv
bnN0IFN0cmluZyYpIGZpbmFsOworICAgIHN0ZDo6dW5pcXVlX3B0cjxDRE1Qcml2YXRlPiBjcmVh
dGVDRE0oY29uc3QgU3RyaW5nJiwgY29uc3QgQ0RNUHJpdmF0ZUNsaWVudCYpIGZpbmFsOwogICAg
IFJlZlB0cjxDRE1Qcm94eT4gY3JlYXRlQ0RNUHJveHkoY29uc3QgU3RyaW5nJikgZmluYWw7CiAg
ICAgYm9vbCBzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgc3VwcG9ydGVkS2V5U3lzdGVtcygpIGNvbnN0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9MZWdhY3lNb2NrQ0RNLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvTGVnYWN5TW9ja0NETS5jcHAKaW5kZXggN2UxZGJmMjY5NDZjM2JmZjQzMDg0
OTFkMjU4MzE1NmNhYjc0ODU2My4uOGFjYzEwYTMxZDdlYWIzYWE1NDFlYTA0ZGYyMzgwZWQ2MjAz
ZTAyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9MZWdhY3lNb2NrQ0RNLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0xlZ2FjeU1vY2tDRE0uY3BwCkBAIC00MCwx
MCArNDAsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBNb2NrQ0RNU2Vzc2lvbiA6IHB1
YmxpYyBMZWdhY3lDRE1TZXNzaW9uIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKLSAgICBNb2NrQ0RNU2Vzc2lvbihMZWdhY3lDRE1TZXNzaW9uQ2xpZW50Kik7CisgICAg
TW9ja0NETVNlc3Npb24oTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCYpOwogICAgIHZpcnR1YWwgfk1v
Y2tDRE1TZXNzaW9uKCkgPSBkZWZhdWx0OwogCi0gICAgdm9pZCBzZXRDbGllbnQoTGVnYWN5Q0RN
U2Vzc2lvbkNsaWVudCogY2xpZW50KSBvdmVycmlkZSB7IG1fY2xpZW50ID0gY2xpZW50OyB9CiAg
ICAgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3Nl
c3Npb25JZDsgfQogICAgIFJlZlB0cjxVaW50OEFycmF5PiBnZW5lcmF0ZUtleVJlcXVlc3QoY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgVWludDhBcnJheSogaW5pdERhdGEsIFN0cmluZyYgZGVzdGlu
YXRpb25VUkwsIHVuc2lnbmVkIHNob3J0JiBlcnJvckNvZGUsIHVpbnQzMl90JiBzeXN0ZW1Db2Rl
KSBvdmVycmlkZTsKICAgICB2b2lkIHJlbGVhc2VLZXlzKCkgb3ZlcnJpZGU7CkBAIC01MSw3ICs1
MCw3IEBAIHB1YmxpYzoKICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGNhY2hlZEtleUZvcktleUlE
KGNvbnN0IFN0cmluZyYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KIAogcHJv
dGVjdGVkOgotICAgIExlZ2FjeUNETVNlc3Npb25DbGllbnQqIG1fY2xpZW50OworICAgIFdlYWtQ
dHI8TGVnYWN5Q0RNU2Vzc2lvbkNsaWVudD4gbV9jbGllbnQ7CiAgICAgU3RyaW5nIG1fc2Vzc2lv
bklkOwogfTsKIApAQCAtNzMsNyArNzIsNyBAQCBib29sIExlZ2FjeU1vY2tDRE06OnN1cHBvcnRz
TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKICAgICByZXR1cm4gZXF1YWxMZXR0ZXJz
SWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJ2aWRlby9tb2NrIik7CiB9CiAKLXN0ZDo6dW5p
cXVlX3B0cjxMZWdhY3lDRE1TZXNzaW9uPiBMZWdhY3lNb2NrQ0RNOjpjcmVhdGVTZXNzaW9uKExl
Z2FjeUNETVNlc3Npb25DbGllbnQqIGNsaWVudCkKK3N0ZDo6dW5pcXVlX3B0cjxMZWdhY3lDRE1T
ZXNzaW9uPiBMZWdhY3lNb2NrQ0RNOjpjcmVhdGVTZXNzaW9uKExlZ2FjeUNETVNlc3Npb25DbGll
bnQmIGNsaWVudCkKIHsKICAgICByZXR1cm4gbWFrZVVuaXF1ZTxNb2NrQ0RNU2Vzc2lvbj4oY2xp
ZW50KTsKIH0KQEAgLTEwOCw3ICsxMDcsNyBAQCBzdGF0aWMgU3RyaW5nIGdlbmVyYXRlU2Vzc2lv
bklkKCkKICAgICByZXR1cm4gU3RyaW5nOjpudW1iZXIobW9ub3RvbmljYWxseUluY3JlYXNpbmdT
ZXNzaW9uSWQrKyk7CiB9CiAKLU1vY2tDRE1TZXNzaW9uOjpNb2NrQ0RNU2Vzc2lvbihMZWdhY3lD
RE1TZXNzaW9uQ2xpZW50KiBjbGllbnQpCitNb2NrQ0RNU2Vzc2lvbjo6TW9ja0NETVNlc3Npb24o
TGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCYgY2xpZW50KQogICAgIDogbV9jbGllbnQoY2xpZW50KQog
ICAgICwgbV9zZXNzaW9uSWQoZ2VuZXJhdGVTZXNzaW9uSWQoKSkKIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvTGVnYWN5TW9ja0NETS5oIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9MZWdhY3lNb2NrQ0RNLmgKaW5kZXggYjkzYWViOTNmZjYzMjllNTE1NDdjMTNmZjc2YTY5
MmVlNmE3MTg2Yy4uZjEwZGZlYjY0YjEzNTEyYmJmNzU0N2EwZTAxOWZjODg0NTFjNjNiMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9MZWdhY3lNb2NrQ0RNLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9MZWdhY3lNb2NrQ0RNLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgfkxlZ2FjeU1vY2tDRE0oKSA9IGRlZmF1bHQ7CiAKICAgICBib29s
IHN1cHBvcnRzTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgb3ZlcnJpZGU7Ci0gICAg
c3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNETVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oTGVnYWN5Q0RN
U2Vzc2lvbkNsaWVudCopIG92ZXJyaWRlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxMZWdhY3lDRE1T
ZXNzaW9uPiBjcmVhdGVTZXNzaW9uKExlZ2FjeUNETVNlc3Npb25DbGllbnQmKSBvdmVycmlkZTsK
IAogcHJvdGVjdGVkOgogICAgIExlZ2FjeUNETSogbV9jZG07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvTW9ja0NETUZhY3RvcnkuY3BwCmluZGV4IDU2MDdkNDlmY2RlOWQ1Yjc0MTQ4NzJiZGI5MWZh
ZjY5NjRmNTY4OGUuLmY5ODA3NzZmNGE4NTMyYjQxNjEzMzQyNGEyODIyYjIwYzIzODMwMDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCkBAIC0xMDMsNyArMTAz
LDcgQEAgdm9pZCBNb2NrQ0RNRmFjdG9yeTo6c2V0U3VwcG9ydGVkUm9idXN0bmVzcyhWZWN0b3I8
U3RyaW5nPiYmIHJvYnVzdG5lc3NlcykKICAgICBtX3N1cHBvcnRlZFJvYnVzdG5lc3MgPSByb2J1
c3RuZXNzZXMubWFwKFtdIChhdXRvJiByb2J1c3RuZXNzKSAtPiBBdG9tU3RyaW5nIHsgcmV0dXJu
IHJvYnVzdG5lc3M7IH0pOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Q0RNUHJpdmF0ZT4gTW9ja0NE
TUZhY3Rvcnk6OmNyZWF0ZUNETShjb25zdCBTdHJpbmcmKQorc3RkOjp1bmlxdWVfcHRyPENETVBy
aXZhdGU+IE1vY2tDRE1GYWN0b3J5OjpjcmVhdGVDRE0oY29uc3QgU3RyaW5nJiwgY29uc3QgQ0RN
UHJpdmF0ZUNsaWVudCYpCiB7CiAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TW9ja0NETT4oKnRoaXMp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5o
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5oCmluZGV4IGQ5NmMxNTZl
ZTRkMjc5MWI4YjA5OThkYWY5NDBlYzc1Mzc4MDdiYzMuLmFiYTg0NGJlYjk2YjI3MzRhMzQ5YmZi
NjVhNDc5N2Y1NWY2NzY1N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9j
a0NETUZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5
LmgKQEAgLTgzLDcgKzgzLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIE1vY2tDRE1GYWN0
b3J5KCk7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPENETVByaXZhdGU+IGNyZWF0ZUNETShjb25zdCBT
dHJpbmcmKSBmaW5hbDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q0RNUHJpdmF0ZT4gY3JlYXRlQ0RN
KGNvbnN0IFN0cmluZyYsIGNvbnN0IENETVByaXZhdGVDbGllbnQmKSBmaW5hbDsKICAgICBib29s
IHN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogCiAgICAgTWVkaWFLZXlz
UmVxdWlyZW1lbnQgbV9kaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQgeyBNZWRpYUtl
eXNSZXF1aXJlbWVudDo6T3B0aW9uYWwgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94eS5jcHAKaW5kZXggYWVmMjhjNmY4
YmUzNTYxNTkzNTViNzNjYjJmYjkxMWIwNDJjY2Y2ZS4uYTViOGQ4YmNhMmFiODcwMDBkMjg4ODY4
MGZjZTVhMDMxZWMxODYyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94eS5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgdm9p
ZCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmNyZWF0ZUNETShjb25zdCBTdHJpbmcmIGtleVN5c3Rl
bSwgQ29tcGxldGlvbkhhbmRsZXIKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8g
cHJpdmF0ZUNETSA9IGZhY3RvcnktPmNyZWF0ZUNETShrZXlTeXN0ZW0pOworICAgIGF1dG8gcHJp
dmF0ZUNETSA9IGZhY3RvcnktPmNyZWF0ZUNETShrZXlTeXN0ZW0sICp0aGlzKTsKICAgICBpZiAo
IXByaXZhdGVDRE0pIHsKICAgICAgICAgY29tcGxldGlvbih7IH0sIHsgfSk7CiAgICAgICAgIHJl
dHVybjsKQEAgLTE2OSw2ICsxNjksMTggQEAgYm9vbCBSZW1vdGVDRE1GYWN0b3J5UHJveHk6OmFs
bG93c0V4aXRVbmRlck1lbW9yeVByZXNzdXJlKCkgY29uc3QKICAgICByZXR1cm4gbV9pbnN0YW5j
ZXMuaXNFbXB0eSgpOwogfQogCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECitjb25zdCBMb2dn
ZXImIFJlbW90ZUNETUZhY3RvcnlQcm94eTo6bG9nZ2VyKCkgY29uc3QKK3sKKyAgICBpZiAoIW1f
bG9nZ2VyKSB7CisgICAgICAgIG1fbG9nZ2VyID0gTG9nZ2VyOjpjcmVhdGUodGhpcyk7CisgICAg
ICAgIG1fbG9nZ2VyLT5zZXRFbmFibGVkKHRoaXMsIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vz
cyA/IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+c2Vzc2lvbklEKCkuaXNBbHdheXNPbkxv
Z2dpbmdBbGxvd2VkKCkgOiBmYWxzZSk7CisgICAgfQorCisgICAgcmV0dXJuICptX2xvZ2dlcjsK
K30KKyNlbmRpZgorCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94eS5oCmluZGV4IDAzODIxNmUyMGVmZjdj
NjM1ODQzYzZlZmQ2ZjBiNDEzOWQzMjI2ZjAuLjA5ZWE4Mzg4YzRkMDgyMGUxYzQzODNlZTVjZWY0
ZTllNzhlMjNmYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVDRE1GYWN0b3J5UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJS
ZW1vdGVDRE1JZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlm
aWVyLmgiCiAjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllci5oIgor
I2luY2x1ZGUgPFdlYkNvcmUvQ0RNUHJpdmF0ZS5oPgogI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYu
aD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCkBAIC00Myw3ICs0NCw3IEBAIGNsYXNzIFJl
bW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OwogY2xhc3MgUmVtb3RlQ0RNUHJveHk7CiBzdHJ1
Y3QgUmVtb3RlQ0RNQ29uZmlndXJhdGlvbjsKIAotY2xhc3MgUmVtb3RlQ0RNRmFjdG9yeVByb3h5
IGZpbmFsIDogcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKK2NsYXNzIFJlbW90ZUNETUZh
Y3RvcnlQcm94eSBmaW5hbCA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwgV2ViQ29yZTo6
Q0RNUHJpdmF0ZUNsaWVudCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CiAgICAgUmVtb3RlQ0RNRmFjdG9yeVByb3h5KEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmKTsK
QEAgLTcyLDYgKzczLDEwIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgYWxsb3dzRXhpdFVuZGVyTWVt
b3J5UHJlc3N1cmUoKSBjb25zdDsKIAorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIGNv
bnN0IExvZ2dlciYgbG9nZ2VyKCkgY29uc3Q7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBmcmll
bmQgY2xhc3MgR1BVUHJvY2Vzc0Nvbm5lY3Rpb247CiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2
ZXIKQEAgLTg2LDYgKzkxLDEwIEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDxSZW1vdGVDRE1JZGVu
dGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNUHJveHk+PiBtX3Byb3hpZXM7CiAgICAg
SGFzaE1hcDxSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxSZW1v
dGVDRE1JbnN0YW5jZVByb3h5Pj4gbV9pbnN0YW5jZXM7CiAgICAgSGFzaE1hcDxSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25JZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uUHJveHk+PiBtX3Nlc3Npb25zOworCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVE
CisgICAgbXV0YWJsZSBSZWZQdHI8TG9nZ2VyPiBtX2xvZ2dlcjsKKyNlbmRpZgogfTsKIAogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3Rh
bmNlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUlu
c3RhbmNlUHJveHkuY3BwCmluZGV4IDUxYzczOWMzMmM3NGQ3NzZkM2IxZjMwZTU1ZDVhNTRiZWIx
MDgyYzYuLmFkMWJjMDZmMzZlOTVjMTI1MjQ1ODZjNzk4MGY1NDRlYmYzYjZmOGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFu
Y2VQcm94eS5jcHAKQEAgLTM5LDE5ICszOSwyMyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLXN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1JbnN0YW5j
ZVByb3h5PiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpjcmVhdGUoV2Vha1B0cjxSZW1vdGVDRE1Q
cm94eT4mJiBjZG0sIFJlZjxDRE1JbnN0YW5jZT4mJiBwcml2LCBSZW1vdGVDRE1JbnN0YW5jZUlk
ZW50aWZpZXIgaWRlbnRpZmllcikKK3N0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1JbnN0YW5jZVBy
b3h5PiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpjcmVhdGUoUmVtb3RlQ0RNUHJveHkmIGNkbSwg
UmVmPENETUluc3RhbmNlPiYmIHByaXYsIFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciBpZGVu
dGlmaWVyKQogewogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IG1ha2VVbmlxdWVSZWZXaXRob3V0
RmFzdE1hbGxvY0NoZWNrPFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbiwgUmVtb3RlQ0RN
SW5zdGFuY2VDb25maWd1cmF0aW9uJiY+KHsKICAgICAgICAgcHJpdi0+a2V5U3lzdGVtKCksCiAg
ICAgfSk7Ci0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1JbnN0YW5jZVByb3h5
PihuZXcgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eShXVEZNb3ZlKGNkbSksIFdURk1vdmUocHJpdiks
IFdURk1vdmUoY29uZmlndXJhdGlvbiksIGlkZW50aWZpZXIpKTsKKyAgICByZXR1cm4gc3RkOjp1
bmlxdWVfcHRyPFJlbW90ZUNETUluc3RhbmNlUHJveHk+KG5ldyBSZW1vdGVDRE1JbnN0YW5jZVBy
b3h5KGNkbSwgV1RGTW92ZShwcml2KSwgV1RGTW92ZShjb25maWd1cmF0aW9uKSwgaWRlbnRpZmll
cikpOwogfQogCi1SZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5
KFdlYWtQdHI8UmVtb3RlQ0RNUHJveHk+JiYgY2RtLCBSZWY8Q0RNSW5zdGFuY2U+JiYgcHJpdiwg
VW5pcXVlUmVmPFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbj4mJiBjb25maWd1cmF0aW9u
LCBSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIgaWRlbnRpZmllcikKLSAgICA6IG1fY2RtKFdU
Rk1vdmUoY2RtKSkKK1JlbW90ZUNETUluc3RhbmNlUHJveHk6OlJlbW90ZUNETUluc3RhbmNlUHJv
eHkoUmVtb3RlQ0RNUHJveHkmIGNkbSwgUmVmPENETUluc3RhbmNlPiYmIHByaXYsIFVuaXF1ZVJl
ZjxSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24+JiYgY29uZmlndXJhdGlvbiwgUmVtb3Rl
Q0RNSW5zdGFuY2VJZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAgOiBtX2NkbShjZG0pCiAgICAg
LCBtX2luc3RhbmNlKFdURk1vdmUocHJpdikpCiAgICAgLCBtX2NvbmZpZ3VyYXRpb24oV1RGTW92
ZShjb25maWd1cmF0aW9uKSkKICAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQorI2lmICFS
RUxFQVNFX0xPR19ESVNBQkxFRAorICAgICwgbV9sb2dnZXIoY2RtLmxvZ2dlcigpKQorICAgICwg
bV9sb2dJZGVudGlmaWVyKGNkbS5sb2dJZGVudGlmaWVyKCkpCisjZW5kaWYKIHsKICAgICBtX2lu
c3RhbmNlLT5zZXRDbGllbnQoKnRoaXMpOwogfQpAQCAtOTcsMTUgKzEwMSwyMCBAQCB2b2lkIFJl
bW90ZUNETUluc3RhbmNlUHJveHk6OnNldFN0b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBk
aXJlY3RvcnkpCiAgICAgbV9pbnN0YW5jZS0+c2V0U3RvcmFnZURpcmVjdG9yeShkaXJlY3Rvcnkp
OwogfQogCi12b2lkIFJlbW90ZUNETUluc3RhbmNlUHJveHk6OmNyZWF0ZVNlc3Npb24oQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVy
Jik+JiYgY29tcGxldGlvbikKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6Y3JlYXRlU2Vz
c2lvbih1aW50NjRfdCBsb2dJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXImKT4mJiBjb21wbGV0aW9uKQogewog
ICAgIGF1dG8gcHJpdlNlc3Npb24gPSBtX2luc3RhbmNlLT5jcmVhdGVTZXNzaW9uKCk7CiAgICAg
aWYgKCFwcml2U2Vzc2lvbiB8fCAhbV9jZG0gfHwgIW1fY2RtLT5mYWN0b3J5KCkpIHsKICAgICAg
ICAgY29tcGxldGlvbih7IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQorCisjaWYgIVJFTEVB
U0VfTE9HX0RJU0FCTEVECisgICAgcHJpdlNlc3Npb24tPnNldExvZ0lkZW50aWZpZXIobV9sb2dJ
ZGVudGlmaWVyKTsKKyNlbmRpZgorCiAgICAgYXV0byBpZGVudGlmaWVyID0gUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKLSAgICBhdXRvIHNlc3Npb24gPSBS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6Y3JlYXRlKG1fY2RtLmdldCgpLCBwcml2U2Vz
c2lvbi5yZWxlYXNlTm9uTnVsbCgpLCBpZGVudGlmaWVyKTsKKyAgICBhdXRvIHNlc3Npb24gPSBS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6Y3JlYXRlKG1fY2RtLmdldCgpLCBwcml2U2Vz
c2lvbi5yZWxlYXNlTm9uTnVsbCgpLCBsb2dJZGVudGlmaWVyLCBpZGVudGlmaWVyKTsKICAgICBt
X2NkbS0+ZmFjdG9yeSgpLT5hZGRTZXNzaW9uKGlkZW50aWZpZXIsIFdURk1vdmUoc2Vzc2lvbikp
OwogICAgIGNvbXBsZXRpb24oaWRlbnRpZmllcik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuaAppbmRleCAwMmM1
Y2QzN2FlNTQ4MDJmNmQwYzhkY2NjYjBiYTgwY2YzMzg4YzMzLi44ZjJjZjliYjc2ZWNlNTk5Mjc0
NmE4MjA1NjQ4YjA5MmQzYzYxYzliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmgKQEAgLTU1LDcgKzU1LDcgQEAg
cHVibGljOgogICAgIHVzaW5nIFdlYkNvcmU6OkNETUluc3RhbmNlQ2xpZW50Ojp3ZWFrUHRyRmFj
dG9yeTsKICAgICB1c2luZyBXZWFrVmFsdWVUeXBlID0gV2ViQ29yZTo6Q0RNSW5zdGFuY2VDbGll
bnQ6OldlYWtWYWx1ZVR5cGU7CiAKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNE
TUluc3RhbmNlUHJveHk+IGNyZWF0ZShXZWFrUHRyPFJlbW90ZUNETVByb3h5PiYmLCBSZWY8V2Vi
Q29yZTo6Q0RNSW5zdGFuY2U+JiYsIFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllcik7CisgICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1JbnN0YW5jZVByb3h5PiBjcmVhdGUoUmVt
b3RlQ0RNUHJveHkmLCBSZWY8V2ViQ29yZTo6Q0RNSW5zdGFuY2U+JiYsIFJlbW90ZUNETUluc3Rh
bmNlSWRlbnRpZmllcik7CiAgICAgflJlbW90ZUNETUluc3RhbmNlUHJveHkoKTsKIAogICAgIGNv
bnN0IFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fY29uZmlndXJhdGlvbi5nZXQoKTsgfQpAQCAtNjMsMTAgKzYzLDE0IEBAIHB1
YmxpYzoKIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgUmVtb3RlQ0RNRmFjdG9yeVByb3h5
OwotICAgIFJlbW90ZUNETUluc3RhbmNlUHJveHkoV2Vha1B0cjxSZW1vdGVDRE1Qcm94eT4mJiwg
UmVmPFdlYkNvcmU6OkNETUluc3RhbmNlPiYmLCBVbmlxdWVSZWY8UmVtb3RlQ0RNSW5zdGFuY2VD
b25maWd1cmF0aW9uPiYmLCBSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIpOworICAgIFJlbW90
ZUNETUluc3RhbmNlUHJveHkoUmVtb3RlQ0RNUHJveHkmLCBSZWY8V2ViQ29yZTo6Q0RNSW5zdGFu
Y2U+JiYsIFVuaXF1ZVJlZjxSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24+JiYsIFJlbW90
ZUNETUluc3RhbmNlSWRlbnRpZmllcik7CiAKICAgICAvLyBDRE1JbnN0YW5jZUNsaWVudAogICAg
IHZvaWQgdW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcm
LCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisjaWYgIVJF
TEVBU0VfTE9HX0RJU0FCTEVECisgICAgY29uc3QgTG9nZ2VyJiBsb2dnZXIoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX2xvZ2dlcjsgfQorICAgIGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX2xvZ0lkZW50aWZpZXI7IH0KKyNlbmRpZgogCiAgICAgLy8g
SVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwpAQCAtODAsMTMgKzg0LDE4IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBpbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgV2ViQ29yZTo6
Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIEFsbG93RGlzdGluY3RpdmVJZGVudGlmaWVycywg
QWxsb3dQZXJzaXN0ZW50U3RhdGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3VjY2Vzc1ZhbHVl
KT4mJik7CiAgICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShJUEM6OlNoYXJlZEJ1ZmZlckNv
cHkmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdWNjZXNzVmFsdWUpPiYmKTsKICAgICB2b2lk
IHNldFN0b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCBjcmVhdGVTZXNz
aW9uKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
SWRlbnRpZmllciYpPiYmKTsKKyAgICB2b2lkIGNyZWF0ZVNlc3Npb24odWludDY0X3QgbG9nSWRl
bnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb25JZGVudGlmaWVyJik+JiYpOwogCiAgICAgV2Vha1B0cjxSZW1vdGVDRE1Qcm94eT4gbV9j
ZG07CiAgICAgUmVmPFdlYkNvcmU6OkNETUluc3RhbmNlPiBtX2luc3RhbmNlOwogICAgIFVuaXF1
ZVJlZjxSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24+IG1fY29uZmlndXJhdGlvbjsKICAg
ICBSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogICAgIEhhc2hNYXA8
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Pj4gbV9zZXNzaW9uczsKKworI2lmICFSRUxFQVNFX0xP
R19ESVNBQkxFRAorICAgIFJlZjxjb25zdCBMb2dnZXI+IG1fbG9nZ2VyOworICAgIGNvbnN0IHZv
aWQqIG1fbG9nSWRlbnRpZmllcjsKKyNlbmRpZgogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94
eS5tZXNzYWdlcy5pbgppbmRleCBkNTkyNmUyY2E4YmQxOWNlMGQ3YTExMzJmOGM5ZjZkMzYxN2Qy
MzdkLi4zNzZjMTUzZjEwMDkxNzlkNWFjZDhkNjk0YjU3ZDk4YmVlNDYxYWU5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RN
SW5zdGFuY2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjYsNyArMjYsNyBAQAogI2lmIEVOQUJMRShH
UFVfUFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKIAogbWVzc2FnZXMgLT4gUmVt
b3RlQ0RNSW5zdGFuY2VQcm94eSBOb3RSZWZDb3VudGVkIHsKLSAgICBDcmVhdGVTZXNzaW9uKCkg
LT4gKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllciBpZGVudGlmaWVy
KSBTeW5jaHJvbm91cworICAgIENyZWF0ZVNlc3Npb24odWludDY0X3QgbG9nSWRlbnRpZmllcikg
LT4gKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllciBpZGVudGlmaWVy
KSBTeW5jaHJvbm91cwogICAgIEluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihzdHJ1Y3QgV2Vi
Q29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uLCBlbnVtOmJvb2wg
V2ViQ29yZTo6Q0RNSW5zdGFuY2U6OkFsbG93RGlzdGluY3RpdmVJZGVudGlmaWVycyBkaXN0aW5j
dGl2ZUlkZW50aWZpZXJzQWxsb3dlZCwgZW51bTpib29sIFdlYkNvcmU6OkNETUluc3RhbmNlOjpB
bGxvd1BlcnNpc3RlbnRTdGF0ZSBwZXJzaXN0ZW50U3RhdGVBbGxvd2VkKSAtPiAoZW51bTpib29s
IFdlYkNvcmU6OkNETUluc3RhbmNlOjpTdWNjZXNzVmFsdWUgc3VjY2VzcykgQXN5bmMKICAgICBT
ZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShJUEM6OlNoYXJlZEJ1ZmZlckNvcHkgY2VydGlmaWNhdGUpIC0+
IChlbnVtOmJvb2wgV2ViQ29yZTo6Q0RNSW5zdGFuY2U6OlN1Y2Nlc3NWYWx1ZSBzdWNjZXNzKSBB
c3luYwogICAgIFNldFN0b3JhZ2VEaXJlY3RvcnkoU3RyaW5nIGRpcmVjdG9yeSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uUHJveHkuY3BwCmluZGV4IDdiYTE2NjRkZjE0OGYyZDRmNjU0MzYxNGUzMTQw
NDBhYjkyMjc5ZWYuLmVjYzIxMDY3Yzk4YzdlZWNlZWJhZWQ4NDE4ZTc0NTBiZjZhOWQxZjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb25Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmNwcApAQCAtMzgsMTUgKzM4LDE1IEBAIG5hbWVz
cGFjZSBXZWJLaXQgewogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotc3RkOjp1bmlxdWVf
cHRyPFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5PiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25Qcm94eTo6Y3JlYXRlKFdlYWtQdHI8UmVtb3RlQ0RNUHJveHk+JiYgcHJveHksIFJlZjxXZWJD
b3JlOjpDRE1JbnN0YW5jZVNlc3Npb24+JiYgc2Vzc2lvbiwgUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uSWRlbnRpZmllciBpZGVudGlmaWVyKQorc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvblByb3h5PiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6Y3JlYXRlKFdl
YWtQdHI8UmVtb3RlQ0RNUHJveHk+JiYgcHJveHksIFJlZjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNl
c3Npb24+JiYgc2Vzc2lvbiwgdWludDY0X3QgbG9nSWRlbnRpZmllciwgUmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uSWRlbnRpZmllciBpZGVudGlmaWVyKQogewotICAgIGF1dG8gc2Vzc2lvblByb3h5
ID0gc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5PihuZXcgUmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkoV1RGTW92ZShwcm94eSksIFdURk1vdmUoc2Vzc2lv
biksIGlkZW50aWZpZXIpKTsKKyAgICBhdXRvIHNlc3Npb25Qcm94eSA9IHN0ZDo6dW5pcXVlX3B0
cjxSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eT4obmV3IFJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvblByb3h5KFdURk1vdmUocHJveHkpLCBXVEZNb3ZlKHNlc3Npb24pLCBsb2dJZGVudGlmaWVy
LCBpZGVudGlmaWVyKSk7CiAgICAgV2Vha1B0cjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25D
bGllbnQ+IGNsaWVudCA9IHNlc3Npb25Qcm94eS5nZXQoKTsKICAgICBzZXNzaW9uUHJveHktPm1f
c2Vzc2lvbi0+c2V0Q2xpZW50KFdURk1vdmUoY2xpZW50KSk7CiAgICAgcmV0dXJuIHNlc3Npb25Q
cm94eTsKIH0KIAotUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OlJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvblByb3h5KFdlYWtQdHI8UmVtb3RlQ0RNUHJveHk+JiYgY2RtLCBSZWY8V2ViQ29y
ZTo6Q0RNSW5zdGFuY2VTZXNzaW9uPiYmIHNlc3Npb24sIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lv
bklkZW50aWZpZXIgaWRlbnRpZmllcikKK1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eShXZWFrUHRyPFJlbW90ZUNETVByb3h5PiYmIGNk
bSwgUmVmPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbj4mJiBzZXNzaW9uLCB1aW50NjRfdCBs
b2dJZGVudGlmaWVyLCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyIGlkZW50aWZp
ZXIpCiAgICAgOiBtX2NkbShXVEZNb3ZlKGNkbSkpCiAgICAgLCBtX3Nlc3Npb24oV1RGTW92ZShz
ZXNzaW9uKSkKICAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQpAQCAtNTcsNiArNTcsMTEg
QEAgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6On5SZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25Qcm94eSgpCiB7CiB9CiAKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnNl
dExvZ0lkZW50aWZpZXIodWludDY0X3QgbG9nSWRlbnRpZmllcikKK3sKKyAgICBtX3Nlc3Npb24t
PnNldExvZ0lkZW50aWZpZXIocmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lkKj4obG9nSWRlbnRp
ZmllcikpOworfQorCiB2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpyZXF1ZXN0
TGljZW5zZShMaWNlbnNlVHlwZSB0eXBlLCBBdG9tU3RyaW5nIGluaXREYXRhVHlwZSwgSVBDOjpT
aGFyZWRCdWZmZXJDb3B5JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmIGNvbXBsZXRpb24p
CiB7CiAgICAgaWYgKCFpbml0RGF0YS5idWZmZXIoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmggYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJv
eHkuaAppbmRleCBmZTczMDk3MTMxZTBiYjIwYTUwMDFlMTUwMTYwMmQ2NTE4NmIzMDkwLi5iOTQx
YWI2MzQ2OTEwOGMyZmYwMGFiY2E4MTUyMTYwZjYxZWI2OTM2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uUHJveHkuaApAQCAtNDQsMTIgKzQ0LDEyIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFz
cyBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eSBmaW5hbCA6IHByaXZhdGUgSVBDOjpNZXNz
YWdlUmVjZWl2ZXIsIHByaXZhdGUgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50IHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvblByb3h5PiBjcmVhdGUoV2Vha1B0cjxSZW1vdGVDRE1Qcm94eT4mJiwgUmVmPFdlYkNvcmU6
OkNETUluc3RhbmNlU2Vzc2lvbj4mJiwgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmll
cik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Q
cm94eT4gY3JlYXRlKFdlYWtQdHI8UmVtb3RlQ0RNUHJveHk+JiYsIFJlZjxXZWJDb3JlOjpDRE1J
bnN0YW5jZVNlc3Npb24+JiYsIHVpbnQ2NF90IGxvZ0lkZW50aWZpZXIsIFJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvbklkZW50aWZpZXIpOwogICAgIHZpcnR1YWwgflJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvblByb3h5KCk7CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFJlbW90ZUNETUZhY3Rv
cnlQcm94eTsKLSAgICBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eShXZWFrUHRyPFJlbW90
ZUNETVByb3h5PiYmLCBSZWY8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uPiYmLCBSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyKTsKKyAgICBSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25Qcm94eShXZWFrUHRyPFJlbW90ZUNETVByb3h5PiYmLCBSZWY8V2ViQ29yZTo6Q0RNSW5zdGFu
Y2VTZXNzaW9uPiYmLCB1aW50NjRfdCBsb2dJZGVudGlmaWVyLCBSZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb25JZGVudGlmaWVyKTsKIAogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgdm9p
ZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5h
bDsKQEAgLTY3LDYgKzY3LDcgQEAgcHJpdmF0ZToKICAgICB1c2luZyBTdG9yZVJlY29yZENhbGxi
YWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPjsKIAogICAgIC8vIE1lc3NhZ2VzCisgICAg
dm9pZCBzZXRMb2dJZGVudGlmaWVyKHVpbnQ2NF90KTsKICAgICB2b2lkIHJlcXVlc3RMaWNlbnNl
KExpY2Vuc2VUeXBlLCBBdG9tU3RyaW5nIGluaXREYXRhVHlwZSwgSVBDOjpTaGFyZWRCdWZmZXJD
b3B5JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKTsKICAgICB2b2lkIHVwZGF0ZUxpY2Vu
c2UoU3RyaW5nIHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIElQQzo6U2hhcmVkQnVmZmVyQ29weSYm
IHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJik7CiAgICAgdm9pZCBsb2FkU2Vzc2lv
bihMaWNlbnNlVHlwZSwgU3RyaW5nIHNlc3Npb25JZCwgU3RyaW5nIG9yaWdpbiwgTG9hZFNlc3Np
b25DYWxsYmFjayYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5tZXNzYWdl
cy5pbgppbmRleCA2MTJlYWEzOGFkZDI2NDNjZDYxOTgyYTBhN2RlZjU4ZTM0NTBmOGRkLi44YWQ2
ODI2OWNkN2UwYTY2YTNlNWZlNzUyMWIwYTNmYWVhYzgwYTVhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yNiw2ICsyNiw3IEBACiAjaWYgRU5B
QkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogCiBtZXNzYWdlcyAt
PiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eSBOb3RSZWZDb3VudGVkIHsKKyAgICBTZXRM
b2dJZGVudGlmaWVyKHVpbnQ2NF90IGxvZ0lkZW50aWZpZXIpCiAgICAgUmVxdWVzdExpY2Vuc2Uo
V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpMaWNlbnNlVHlwZSB0eXBlLCBBdG9tU3RyaW5n
IGluaXREYXRhVHlwZSwgSVBDOjpTaGFyZWRCdWZmZXJDb3B5IGluaXREYXRhKSAtPiAoSVBDOjpT
aGFyZWRCdWZmZXJDb3B5IG1lc3NhZ2UsIFN0cmluZyBzZXNzaW9uSWQsIGJvb2wgbmVlZHNJbmRp
dmlkdWFsaXphdGlvbiwgYm9vbCBzdWNjZWVkZWQpIEFzeW5jCiAgICAgVXBkYXRlTGljZW5zZShT
dHJpbmcgc2Vzc2lvbklkLCBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OkxpY2Vuc2VUeXBl
IHR5cGUsIElQQzo6U2hhcmVkQnVmZmVyQ29weSByZXNwb25zZSkgLT4gKGJvb2wgc2Vzc2lvbldh
c0Nsb3NlZCwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OktleVN0
YXR1c1ZlY3Rvcj4gY2hhbmdlZEtleXMsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBjaGFuZ2VkRXhw
aXJhdGlvbiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3Nh
Z2U+IG1lc3NhZ2UsIGJvb2wgc3VjY2VlZGVkKSBBc3luYwogICAgIExvYWRTZXNzaW9uKFdlYkNv
cmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TGljZW5zZVR5cGUgdHlwZSwgU3RyaW5nIHNlc3Npb25J
ZCwgU3RyaW5nIG9yaWdpbikgLT4gKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Q0RNSW5zdGFuY2VT
ZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3I+IGNoYW5nZWRLZXlzLCBzdGQ6Om9wdGlvbmFsPGRvdWJs
ZT4gY2hhbmdlZEV4cGlyYXRpb24sIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Q0RNSW5zdGFuY2VT
ZXNzaW9uOjpNZXNzYWdlPiBtZXNzYWdlLCBib29sIHN1Y2NlZWRlZCwgZW51bTp1aW50OF90IFdl
YkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6U2Vzc2lvbkxvYWRGYWlsdXJlIGxvYWRGYWlsdXJl
KSBBc3luYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUNETVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Q
cm94eS5jcHAKaW5kZXggZjdjYjZhNjNlYjkzM2FiZDRkNDUzYTIyYWIyOTRmMTMwMzIzMmIwNi4u
NDRmYzY4OGM4NGFmYzAyNGNkMzY4MmUwYTdkNzhhMzY3Yjg0MjVhYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuY3BwCkBAIC0zOSw3ICsz
OSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAot
c3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETVByb3h5PiBSZW1vdGVDRE1Qcm94eTo6Y3JlYXRlKFdl
YWtQdHI8UmVtb3RlQ0RNRmFjdG9yeVByb3h5PiYmIGZhY3RvcnksIHN0ZDo6dW5pcXVlX3B0cjxX
ZWJDb3JlOjpDRE1Qcml2YXRlPiYmIHByaXYpCitzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNUHJv
eHk+IFJlbW90ZUNETVByb3h5OjpjcmVhdGUoUmVtb3RlQ0RNRmFjdG9yeVByb3h5JiBmYWN0b3J5
LCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6Q0RNUHJpdmF0ZT4mJiBwcml2KQogewogICAgIGlm
ICghcHJpdikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC01MSwxMyArNTEsMTYgQEAgc3Rk
Ojp1bmlxdWVfcHRyPFJlbW90ZUNETVByb3h5PiBSZW1vdGVDRE1Qcm94eTo6Y3JlYXRlKFdlYWtQ
dHI8UmVtb3RlQ0RNRmFjdG9yeVAKICAgICAgICAgcHJpdi0+c3VwcG9ydHNTZXNzaW9ucygpCiAg
ICAgfSk7CiAgICAgLy8gVXNlIG5ldygpIHRvIGFjY2VzcyBDRE1Qcml2YXRlJ3MgcHJpdmF0ZSBj
b25zdHJ1Y3Rvci4KLSAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETVByb3h5Pihu
ZXcgUmVtb3RlQ0RNUHJveHkoV1RGTW92ZShmYWN0b3J5KSwgV1RGTW92ZShwcml2KSwgV1RGTW92
ZShjb25maWd1cmF0aW9uKSkpOworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RN
UHJveHk+KG5ldyBSZW1vdGVDRE1Qcm94eShmYWN0b3J5LCBXVEZNb3ZlKHByaXYpLCBXVEZNb3Zl
KGNvbmZpZ3VyYXRpb24pKSk7CiB9CiAKLVJlbW90ZUNETVByb3h5OjpSZW1vdGVDRE1Qcm94eShX
ZWFrUHRyPFJlbW90ZUNETUZhY3RvcnlQcm94eT4mJiBmYWN0b3J5LCBzdGQ6OnVuaXF1ZV9wdHI8
Q0RNUHJpdmF0ZT4mJiBwcml2LCBVbmlxdWVSZWY8UmVtb3RlQ0RNQ29uZmlndXJhdGlvbj4mJiBj
b25maWd1cmF0aW9uKQotICAgIDogbV9mYWN0b3J5KFdURk1vdmUoZmFjdG9yeSkpCitSZW1vdGVD
RE1Qcm94eTo6UmVtb3RlQ0RNUHJveHkoUmVtb3RlQ0RNRmFjdG9yeVByb3h5JiBmYWN0b3J5LCBz
dGQ6OnVuaXF1ZV9wdHI8Q0RNUHJpdmF0ZT4mJiBwcml2LCBVbmlxdWVSZWY8UmVtb3RlQ0RNQ29u
ZmlndXJhdGlvbj4mJiBjb25maWd1cmF0aW9uKQorICAgIDogbV9mYWN0b3J5KGZhY3RvcnkpCiAg
ICAgLCBtX3ByaXZhdGUoV1RGTW92ZShwcml2KSkKICAgICAsIG1fY29uZmlndXJhdGlvbihXVEZN
b3ZlKGNvbmZpZ3VyYXRpb24pKQorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgICwgbV9s
b2dnZXIoZmFjdG9yeS5sb2dnZXIoKSkKKyNlbmRpZgogewogfQogCkBAIC0xMDIsNiArMTA1LDE3
IEBAIHZvaWQgUmVtb3RlQ0RNUHJveHk6OmxvYWRBbmRJbml0aWFsaXplKCkKICAgICBtX3ByaXZh
dGUtPmxvYWRBbmRJbml0aWFsaXplKCk7CiB9CiAKK3ZvaWQgUmVtb3RlQ0RNUHJveHk6OnNldExv
Z0lkZW50aWZpZXIodWludDY0X3QgbG9nSWRlbnRpZmllcikKK3sKKyNpZiAhUkVMRUFTRV9MT0df
RElTQUJMRUQKKyAgICBtX2xvZ0lkZW50aWZpZXIgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHZv
aWQqPihsb2dJZGVudGlmaWVyKTsKKyAgICBpZiAobV9mYWN0b3J5KQorICAgICAgICBtX3ByaXZh
dGUtPnNldExvZ0lkZW50aWZpZXIobV9sb2dJZGVudGlmaWVyKTsKKyNlbHNlCisgICAgVU5VU0VE
X1BBUkFNKGxvZ0lkZW50aWZpZXIpOworI2VuZGlmCit9CisKIH0KIAogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5oCmluZGV4IDNiNjZj
Nzc1Nzg3MDY5ZTk3NmVlMDY0Zjk2ZmYwN2MwZjcxMmE5MGIuLmE4YmYxN2JiMmFjZWRiMzgxZDc4
M2Q4OTMzMDdhMGM2OTM2NjM5ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVDRE1Qcm94eS5oCkBAIC01MSw3ICs1MSw3IEBAIHN0cnVjdCBSZW1vdGVDRE1D
b25maWd1cmF0aW9uOwogCiBjbGFzcyBSZW1vdGVDRE1Qcm94eSA6IHB1YmxpYyBJUEM6Ok1lc3Nh
Z2VSZWNlaXZlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVD
RE1Qcm94eT4gY3JlYXRlKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeVByb3h5PiYmLCBzdGQ6OnVu
aXF1ZV9wdHI8V2ViQ29yZTo6Q0RNUHJpdmF0ZT4mJik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxSZW1vdGVDRE1Qcm94eT4gY3JlYXRlKFJlbW90ZUNETUZhY3RvcnlQcm94eSYsIHN0ZDo6
dW5pcXVlX3B0cjxXZWJDb3JlOjpDRE1Qcml2YXRlPiYmKTsKICAgICB+UmVtb3RlQ0RNUHJveHko
KTsKIAogICAgIGNvbnN0IFJlbW90ZUNETUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24oKSBj
b25zdCB7IHJldHVybiBtX2NvbmZpZ3VyYXRpb24uZ2V0KCk7IH0KQEAgLTYyLDkgKzYyLDE0IEBA
IHB1YmxpYzoKICAgICBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2Fu
aXRpemVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiByZXNw
b25zZSk7CiAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHNhbml0aXplU2Vzc2lvbklkKGNvbnN0
IFN0cmluZyYgc2Vzc2lvbklkKTsKIAorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIGNv
bnN0IExvZ2dlciYgbG9nZ2VyKCkgY29uc3QgeyByZXR1cm4gbV9sb2dnZXI7IH0KKyAgICBjb25z
dCB2b2lkKiBsb2dJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9sb2dJZGVudGlmaWVyOyB9
CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgUmVtb3RlQ0RNRmFjdG9yeVBy
b3h5OwotICAgIFJlbW90ZUNETVByb3h5KFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeVByb3h5PiYm
LCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6Q0RNUHJpdmF0ZT4mJiwgVW5pcXVlUmVmPFJlbW90
ZUNETUNvbmZpZ3VyYXRpb24+JiYpOworICAgIFJlbW90ZUNETVByb3h5KFJlbW90ZUNETUZhY3Rv
cnlQcm94eSYsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpDRE1Qcml2YXRlPiYmLCBVbmlxdWVS
ZWY8UmVtb3RlQ0RNQ29uZmlndXJhdGlvbj4mJik7CiAKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNl
aXZlcgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpE
ZWNvZGVyJikgZmluYWw7CkBAIC03NCwxMCArNzksMTYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdl
dFN1cHBvcnRlZENvbmZpZ3VyYXRpb24oV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlv
biYmLCBXZWJDb3JlOjpDRE1Qcml2YXRlOjpMb2NhbFN0b3JhZ2VBY2Nlc3MsIFdlYkNvcmU6OkNE
TVByaXZhdGU6OlN1cHBvcnRlZENvbmZpZ3VyYXRpb25DYWxsYmFjayYmKTsKICAgICB2b2lkIGNy
ZWF0ZUluc3RhbmNlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlQ0RNSW5zdGFuY2VJZGVu
dGlmaWVyLCBSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24mJik+JiYpOwogICAgIHZvaWQg
bG9hZEFuZEluaXRpYWxpemUoKTsKKyAgICB2b2lkIHNldExvZ0lkZW50aWZpZXIodWludDY0X3Qp
OwogCiAgICAgV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5UHJveHk+IG1fZmFjdG9yeTsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6Q0RNUHJpdmF0ZT4gbV9wcml2YXRlOwogICAgIFVuaXF1
ZVJlZjxSZW1vdGVDRE1Db25maWd1cmF0aW9uPiBtX2NvbmZpZ3VyYXRpb247CisKKyNpZiAhUkVM
RUFTRV9MT0dfRElTQUJMRUQKKyAgICBSZWY8Y29uc3QgTG9nZ2VyPiBtX2xvZ2dlcjsKKyAgICBj
b25zdCB2b2lkKiBtX2xvZ0lkZW50aWZpZXIgeyBudWxscHRyIH07CisjZW5kaWYKIH07CiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94
eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Q
cm94eS5tZXNzYWdlcy5pbgppbmRleCAxMjE0MWQxMmI2YmJiYmEzMjcwOGRhNGYzZWFiODhjNzYz
YzNhODg5Li41NzhjMjQ5OTdlM2ExYWI2NzdiYzYyZWVjNzg4ZGIwZjg2Zjk5YWE0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkubWVzc2Fn
ZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5
Lm1lc3NhZ2VzLmluCkBAIC0yOSw2ICsyOSw3IEBAIG1lc3NhZ2VzIC0+IFJlbW90ZUNETVByb3h5
IE5vdFJlZkNvdW50ZWQgewogICAgIEdldFN1cHBvcnRlZENvbmZpZ3VyYXRpb24oc3RydWN0IFdl
YkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24gY2FuZGlkYXRlQ29uZmlndXJhdGlvbiwg
ZW51bTpib29sIFdlYkNvcmU6OkNETVByaXZhdGU6OkxvY2FsU3RvcmFnZUFjY2VzcyBhY2Nlc3Mp
IC0+IChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24+IGFj
Y3VtdWxhdGVkQ29uZmlndXJhdGlvbikgQXN5bmMKICAgICBDcmVhdGVJbnN0YW5jZSgpIC0+IChX
ZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciBpZGVudGlmaWVyLCBzdHJ1Y3QgV2Vi
S2l0OjpSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbikgU3luY2hy
b25vdXMKICAgICBMb2FkQW5kSW5pdGlhbGl6ZSgpCisgICAgU2V0TG9nSWRlbnRpZmllcih1aW50
NjRfdCBsb2dJZGVudGlmaWVyKQogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5j
cHAKaW5kZXggN2NlZGI5NzEyZmM2NmI1YjhkYjUyYmFmMDhjYjBjMmE2NGU5NGVlNy4uNjM4NDUy
ODkxMDg5YTUyYjEzYzdiN2VlZDRkMDFjODk1MTk1NTJjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQ
cm94eS5jcHAKQEAgLTE3MCw2ICsxNzAsMTggQEAgYm9vbCBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5
UHJveHk6OmFsbG93c0V4aXRVbmRlck1lbW9yeVByZXNzdXJlKCkgY29uc3QKICAgICByZXR1cm4g
bV9zZXNzaW9ucy5pc0VtcHR5KCk7CiB9CiAKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKK2Nv
bnN0IExvZ2dlciYgUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5Ojpsb2dnZXIoKSBjb25zdAor
eworICAgIGlmICghbV9sb2dnZXIpIHsKKyAgICAgICAgbV9sb2dnZXIgPSBMb2dnZXI6OmNyZWF0
ZSh0aGlzKTsKKyAgICAgICAgbV9sb2dnZXItPnNldEVuYWJsZWQodGhpcywgbV9ncHVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzID8gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5zZXNzaW9uSUQo
KS5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSA6IGZhbHNlKTsKKyAgICB9CisKKyAgICByZXR1
cm4gKm1fbG9nZ2VyOworfQorI2VuZGlmCisKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVBy
b3h5LmgKaW5kZXggZDg3NDlkZTEwMWE5NjhlYWEwMDFjN2IxYmRlZTE4ODY3MzhmODI3Ni4uM2Ex
N2Q0MTU2MGIxMjIxZmQ3NWI1MmMxMThiZTk0YWI4YWFkOGJiOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5
UHJveHkuaApAQCAtNjYsNiArNjYsMTAgQEAgcHVibGljOgogCiAgICAgYm9vbCBhbGxvd3NFeGl0
VW5kZXJNZW1vcnlQcmVzc3VyZSgpIGNvbnN0OwogCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVE
CisgICAgY29uc3QgTG9nZ2VyJiBsb2dnZXIoKSBjb25zdDsKKyNlbmRpZgorCiBwcml2YXRlOgog
ICAgIGZyaWVuZCBjbGFzcyBHUFVQcm9jZXNzQ29ubmVjdGlvbjsKICAgICAvLyBJUEM6Ok1lc3Nh
Z2VSZWNlaXZlcgpAQCAtNzksNiArODMsMTAgQEAgcHJpdmF0ZToKICAgICBXZWFrUHRyPEdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M+IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzczsKICAgICBI
YXNoTWFwPFJlbW90ZUxlZ2FjeUNETUlkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVM
ZWdhY3lDRE1Qcm94eT4+IG1fcHJveGllczsKICAgICBIYXNoTWFwPFJlbW90ZUxlZ2FjeUNETVNl
c3Npb25JZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblBy
b3h5Pj4gbV9zZXNzaW9uczsKKworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIG11dGFi
bGUgUmVmUHRyPExvZ2dlcj4gbV9sb2dnZXI7CisjZW5kaWYKIH07CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuY3Bw
CmluZGV4IGZmZjZlYjUyOWU1NjlmYjhmNGJlMTMwZDdkOGNlMzA3NjUzOWI3ODAuLjhhNzQzYWYz
NDg2OWZmOTQyN2I3NzM1NGQ3NGMyMjM3N2MyYjNhNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmNwcApAQCAtNjEs
MTcgKzYxLDE3IEBAIHZvaWQgUmVtb3RlTGVnYWN5Q0RNUHJveHk6OnN1cHBvcnRzTUlNRVR5cGUo
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgU3VwcG9ydHNNSU1FCiAgICAgY2FsbGJhY2sobV9jZG0t
PnN1cHBvcnRzTUlNRVR5cGUobWltZVR5cGUpKTsKIH0KIAotdm9pZCBSZW1vdGVMZWdhY3lDRE1Q
cm94eTo6Y3JlYXRlU2Vzc2lvbihjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgQ3JlYXRlU2Vzc2lv
bkNhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIFJlbW90ZUxlZ2FjeUNETVByb3h5OjpjcmVhdGVT
ZXNzaW9uKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCB1aW50NjRfdCBsb2dJZGVudGlmaWVyLCBD
cmVhdGVTZXNzaW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIW1fY2RtIHx8ICFt
X2ZhY3RvcnkpIHsKICAgICAgICAgY2FsbGJhY2soeyB9KTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIGF1dG8gaWRlbnRpZmllciA9IFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlm
aWVyOjpnZW5lcmF0ZSgpOwotICAgIGF1dG8gc2Vzc2lvbiA9IFJlbW90ZUxlZ2FjeUNETVNlc3Np
b25Qcm94eTo6Y3JlYXRlKG1fZmFjdG9yeS5nZXQoKSwgaWRlbnRpZmllciwgKm1fY2RtKTsKLSAg
ICBtX2ZhY3RvcnktPmFkZFNlc3Npb24oaWRlbnRpZmllciwgV1RGTW92ZShzZXNzaW9uKSk7Ci0g
ICAgY2FsbGJhY2soV1RGTW92ZShpZGVudGlmaWVyKSk7CisgICAgYXV0byBzZXNzaW9uSWRlbnRp
ZmllciA9IFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyOjpnZW5lcmF0ZSgpOworICAg
IGF1dG8gc2Vzc2lvbiA9IFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6Y3JlYXRlKCptX2Zh
Y3RvcnksIGxvZ0lkZW50aWZpZXIsIHNlc3Npb25JZGVudGlmaWVyLCAqbV9jZG0pOworICAgIG1f
ZmFjdG9yeS0+YWRkU2Vzc2lvbihzZXNzaW9uSWRlbnRpZmllciwgV1RGTW92ZShzZXNzaW9uKSk7
CisgICAgY2FsbGJhY2soV1RGTW92ZShzZXNzaW9uSWRlbnRpZmllcikpOwogfQogCiB2b2lkIFJl
bW90ZUxlZ2FjeUNETVByb3h5OjpzZXRQbGF5ZXJJZChzdGQ6Om9wdGlvbmFsPE1lZGlhUGxheWVy
SWRlbnRpZmllcj4mJiBwbGF5ZXJJZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmgKaW5kZXggZGU4ZjZkZjU1YTZlMWZhOGJl
OTY2Zjk0MWUwN2ZlMmY1YzUwMjFhNy4uOTFlNDM4YWM3ZTRjNGRmNGQzMjM3NjY3MmYyZWYyYTc0
ZDg2MjgzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUxlZ2FjeUNETVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUxlZ2FjeUNETVByb3h5LmgKQEAgLTYyLDcgKzYyLDcgQEAgcHJpdmF0ZToKICAgICB1c2lu
ZyBTdXBwb3J0c01JTUVUeXBlQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PjsKICAgICB2b2lkIHN1cHBvcnRzTUlNRVR5cGUoY29uc3QgU3RyaW5nJiwgU3VwcG9ydHNNSU1F
VHlwZUNhbGxiYWNrJiYpOwogICAgIHVzaW5nIENyZWF0ZVNlc3Npb25DYWxsYmFjayA9IENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXImJik+Owot
ICAgIHZvaWQgY3JlYXRlU2Vzc2lvbihjb25zdCBTdHJpbmcmLCBDcmVhdGVTZXNzaW9uQ2FsbGJh
Y2smJik7CisgICAgdm9pZCBjcmVhdGVTZXNzaW9uKGNvbnN0IFN0cmluZyYsIHVpbnQ2NF90LCBD
cmVhdGVTZXNzaW9uQ2FsbGJhY2smJik7CiAgICAgdm9pZCBzZXRQbGF5ZXJJZChzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6Ok1lZGlhUGxheWVySWRlbnRpZmllcj4mJik7CiAKICAgICAvLyBMZWdhY3lD
RE1DbGllbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVMZWdhY3lDRE1Qcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5tZXNzYWdlcy5pbgppbmRleCA4ZWM2YjNiN2FhZWY2
YjFiNWZkNmYwZTM4NTdmZGM1MWEyYWY2NjA3Li4wNmY4YjBjYjRmMDFjYjZjN2IwYzZkNmVmYWQ2
MTU4YTM4YjZkZjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTGVnYWN5Q0RNUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yNSw3ICsy
NSw3IEBACiAKIG1lc3NhZ2VzIC0+IFJlbW90ZUxlZ2FjeUNETVByb3h5IE5vdFJlZkNvdW50ZWQg
ewogICAgIFN1cHBvcnRzTUlNRVR5cGUoU3RyaW5nIG1pbWVUeXBlKSAtPiAoYm9vbCBzdXBwb3J0
cykgU3luY2hyb25vdXMKLSAgICBDcmVhdGVTZXNzaW9uKFN0cmluZyBtZWRpYUtleXNTdG9yYWdl
RGlyZWN0b3J5KSAtPiAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllciBp
ZGVudGlmaWVyKSBTeW5jaHJvbm91cworICAgIENyZWF0ZVNlc3Npb24oU3RyaW5nIG1lZGlhS2V5
c1N0b3JhZ2VEaXJlY3RvcnksIHVpbnQ2NF90IGxvZ0lkZW50aWZpZXIpIC0+IChXZWJLaXQ6OlJl
bW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyIGlkZW50aWZpZXIpIFN5bmNocm9ub3VzCiAg
ICAgU2V0UGxheWVySWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZp
ZXI+IHBsYXllcklkKQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuY3BwCmluZGV4IGM4ZTc0
NjNkZTY3ODMyOTE3NjM1NWJmMWExMGEyM2Y0ZDg4NjlhYmEuLmQzYWUwMDVjMmZkMDdhMDIwMTUx
MzZjZTUzNGZlYjQ0NDNjMjUwNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuY3BwCkBAIC0z
NSwxOSArMzUsMjQgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9HZW5lcmljVHlwZWRBcnJh
eVZpZXdJbmxpbmVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9MZWdhY3lDRE0uaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgorI2luY2x1ZGUgPHd0Zi9Mb2dnZXJIZWxwZXIuaD4K
IAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1zdGQ6
OnVuaXF1ZV9wdHI8UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5PiBSZW1vdGVMZWdhY3lDRE1T
ZXNzaW9uUHJveHk6OmNyZWF0ZShXZWFrUHRyPFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eT4m
JiBmYWN0b3J5LCBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllciBpZGVudGlmaWVyLCBX
ZWJDb3JlOjpMZWdhY3lDRE0mIGNkbSkKK3N0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMZWdhY3lDRE1T
ZXNzaW9uUHJveHk+IFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6Y3JlYXRlKFJlbW90ZUxl
Z2FjeUNETUZhY3RvcnlQcm94eSYgZmFjdG9yeSwgdWludDY0X3QgbG9nSWRlbnRpZmllciwgUmVt
b3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXIgc2Vzc2lvbklkZW50aWZpZXIsIFdlYkNvcmU6
OkxlZ2FjeUNETSYgY2RtKQogewotICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGVn
YWN5Q0RNU2Vzc2lvblByb3h5PihuZXcgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5KFdURk1v
dmUoZmFjdG9yeSksIGlkZW50aWZpZXIsIGNkbSkpOworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9w
dHI8UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5PihuZXcgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lv
blByb3h5KGZhY3RvcnksIGxvZ0lkZW50aWZpZXIsIHNlc3Npb25JZGVudGlmaWVyLCBjZG0pKTsK
IH0KIAotUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9u
UHJveHkoV2Vha1B0cjxSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk+JiYgZmFjdG9yeSwgUmVt
b3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6TGVnYWN5
Q0RNJiBjZG0pCi0gICAgOiBtX2ZhY3RvcnkoV1RGTW92ZShmYWN0b3J5KSkKLSAgICAsIG1faWRl
bnRpZmllcihpZGVudGlmaWVyKQorUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpSZW1vdGVM
ZWdhY3lDRE1TZXNzaW9uUHJveHkoUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5JiBmYWN0b3J5
LCB1aW50NjRfdCBsb2dJZGVudGlmaWVyLCBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmll
ciBzZXNzaW9uSWRlbnRpZmllciwgV2ViQ29yZTo6TGVnYWN5Q0RNJiBjZG0pCisgICAgOiBtX2Zh
Y3RvcnkoZmFjdG9yeSkKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICAsIG1fbG9nZ2Vy
KGZhY3RvcnkubG9nZ2VyKCkpCisgICAgLCBtX2xvZ0lkZW50aWZpZXIocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB2b2lkKj4obG9nSWRlbnRpZmllcikpCisjZW5kaWYKKyAgICAsIG1faWRlbnRpZmll
cihzZXNzaW9uSWRlbnRpZmllcikKICAgICAsIG1fc2Vzc2lvbihjZG0uY3JlYXRlU2Vzc2lvbigq
dGhpcykpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmgKaW5kZXggMTU0NmJkZmRmZGNmMDkx
MDg3ODk0NGYzNDA3OTY3YTdhYjM4YmY4Ni4uZWE0OTk4MzYyYTYwMWUxYTQ3MjM1ZjYyYzFlMTVk
NjczMTRjYTU3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuaApAQCAtNTMsNyArNTMsNyBAQCBj
bGFzcyBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkKICAgICA6IHB1YmxpYyBJUEM6Ok1lc3Nh
Z2VSZWNlaXZlcgogICAgICwgcHVibGljIFdlYkNvcmU6OkxlZ2FjeUNETVNlc3Npb25DbGllbnQg
ewogcHVibGljOgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGVnYWN5Q0RNU2Vz
c2lvblByb3h5PiBjcmVhdGUoV2Vha1B0cjxSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk+JiYs
IFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyLCBXZWJDb3JlOjpMZWdhY3lDRE0mKTsK
KyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eT4g
Y3JlYXRlKFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eSYsIHVpbnQ2NF90IGxvZ0lkZW50aWZp
ZXIsIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyLCBXZWJDb3JlOjpMZWdhY3lDRE0m
KTsKICAgICB+UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5KCk7CiAKICAgICBSZW1vdGVMZWdh
Y3lDRE1GYWN0b3J5UHJveHkqIGZhY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2ZhY3RvcnkuZ2V0
KCk7IH0KQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGZyaWVuZCBj
bGFzcyBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk7Ci0gICAgUmVtb3RlTGVnYWN5Q0RNU2Vz
c2lvblByb3h5KFdlYWtQdHI8UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5PiYmLCBSZW1vdGVM
ZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllciwgV2ViQ29yZTo6TGVnYWN5Q0RNJik7CisgICAgUmVt
b3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5KFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eSYsIHVp
bnQ2NF90IGxvZ0lkZW50aWZpZXIsIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyLCBX
ZWJDb3JlOjpMZWdhY3lDRE0mKTsKIAogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAg
dm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBm
aW5hbDsKQEAgLTc1LDYgKzc1LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZW5kTWVzc2FnZShV
aW50OEFycmF5KiwgU3RyaW5nIGRlc3RpbmF0aW9uVVJMKSBmaW5hbDsKICAgICB2b2lkIHNlbmRF
cnJvcihNZWRpYUtleUVycm9yQ29kZSwgdWludDMyX3Qgc3lzdGVtQ29kZSkgZmluYWw7CiAgICAg
U3RyaW5nIG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdCBmaW5hbDsKKyNpZiAhUkVM
RUFTRV9MT0dfRElTQUJMRUQKKyAgICBjb25zdCBMb2dnZXImIGxvZ2dlcigpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIG1fbG9nZ2VyOyB9CisgICAgY29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcigpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIG1fbG9nSWRlbnRpZmllcjsgfQorI2VuZGlmCiAKICAgICAvLyBN
ZXNzYWdlcwogICAgIHVzaW5nIEdlbmVyYXRlS2V5Q2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJDb3B5PiYmLCBjb25zdCBTdHJp
bmcmLCB1bnNpZ25lZCBzaG9ydCwgdWludDMyX3QpPjsKQEAgLTg2LDYgKzkwLDEyIEBAIHByaXZh
dGU6CiAgICAgdm9pZCBjYWNoZWRLZXlGb3JLZXlJRChTdHJpbmcga2V5SWQsIENhY2hlZEtleUZv
cktleUlEQ2FsbGJhY2smJik7CiAKICAgICBXZWFrUHRyPFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQ
cm94eT4gbV9mYWN0b3J5OworCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgUmVmPGNv
bnN0IExvZ2dlcj4gbV9sb2dnZXI7CisgICAgY29uc3Qgdm9pZCogbV9sb2dJZGVudGlmaWVyOwor
I2VuZGlmCisKICAgICBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllciBtX2lkZW50aWZp
ZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkxlZ2FjeUNETVNlc3Npb24+IG1fc2Vz
c2lvbjsKICAgICBXZWFrUHRyPFJlbW90ZU1lZGlhUGxheWVyUHJveHk+IG1fcGxheWVyOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclBy
aXZhdGVSZW1vdGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRp
YVBsYXllclByaXZhdGVSZW1vdGUuY3BwCmluZGV4IGVhNGRjYjM3NGQwYzViOGRjYjkxMDkwNGZm
ZGRjYzAyYTQyZTk5N2IuLmI5YTM5NGI2YjA4YmMzYTZmZjA5NjkzNTBjMjNjZDQ5YTQzZWVlODEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKQEAgLTExNTksNyArMTE1OSw3IEBAIEF1
ZGlvU291cmNlUHJvdmlkZXIqIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6YXVkaW9Tb3VyY2VQ
cm92aWRlcigpCiAjZW5kaWYKIAogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQot
c3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNETVNlc3Npb24+IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6Y3JlYXRlU2Vzc2lvbihjb25zdCBTdHJpbmcmLCBMZWdhY3lDRE1TZXNzaW9uQ2xpZW50KikK
K3N0ZDo6dW5pcXVlX3B0cjxMZWdhY3lDRE1TZXNzaW9uPiBNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6OmNyZWF0ZVNlc3Npb24oY29uc3QgU3RyaW5nJiwgTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCYp
CiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZS5oCmluZGV4IDM4ZWY4ODk3MTgyMDI5NDQ0MDNjNTJmODNiOTQyNzE3MTIx
MThlNjQuLmY4NmZiZWFmNjkyMjE1NTZkYjUxYjM0MjQwZWQ0N2Y5ZGQ0YWU2NzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBs
YXllclByaXZhdGVSZW1vdGUuaApAQCAtMzUwLDcgKzM1MCw3IEBAIHByaXZhdGU6CiAjZW5kaWYK
IAogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQotICAgIHN0ZDo6dW5pcXVlX3B0
cjxXZWJDb3JlOjpMZWdhY3lDRE1TZXNzaW9uPiBjcmVhdGVTZXNzaW9uKGNvbnN0IFN0cmluZyYs
IFdlYkNvcmU6OkxlZ2FjeUNETVNlc3Npb25DbGllbnQqKSBmaW5hbDsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8V2ViQ29yZTo6TGVnYWN5Q0RNU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbihjb25zdCBTdHJp
bmcmLCBXZWJDb3JlOjpMZWdhY3lDRE1TZXNzaW9uQ2xpZW50JikgZmluYWw7CiAgICAgdm9pZCBz
ZXRDRE0oV2ViQ29yZTo6TGVnYWN5Q0RNKikgZmluYWw7CiAgICAgdm9pZCBzZXRDRE1TZXNzaW9u
KFdlYkNvcmU6OkxlZ2FjeUNETVNlc3Npb24qKSBmaW5hbDsKICAgICB2b2lkIGtleUFkZGVkKCkg
ZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUNETS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNE
TS5jcHAKaW5kZXggYzI4ZmU2NWYwY2YxNjQzOTk4MThhY2EzMmY5ODFjYzc3OGYxZTkxOS4uYjY5
NjEwMzUwZjMxMGUyM2E0YjJhYzc4MGI4MTM4OGVjYjlmYzJjZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmNwcApAQCAtNTUsNiArNTUsMTQg
QEAgUmVtb3RlQ0RNOjpSZW1vdGVDRE0oV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5PiYmIGZhY3Rv
cnksIFJlbW90ZUNETUlkZW50aWZpZXImJgogewogfQogCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FC
TEVECit2b2lkIFJlbW90ZUNETTo6c2V0TG9nSWRlbnRpZmllcihjb25zdCB2b2lkKiBsb2dJZGVu
dGlmaWVyKQoreworICAgIGlmIChtX2ZhY3RvcnkpCisgICAgICAgIG1fZmFjdG9yeS0+Z3B1UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlQ0RNUHJv
eHk6OlNldExvZ0lkZW50aWZpZXIocmVpbnRlcnByZXRfY2FzdDx1aW50NjRfdD4obG9nSWRlbnRp
ZmllcikpLCBtX2lkZW50aWZpZXIpOworfQorI2VuZGlmCisKIHZvaWQgUmVtb3RlQ0RNOjpnZXRT
dXBwb3J0ZWRDb25maWd1cmF0aW9uKENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mJiBjb25maWd1
cmF0aW9uLCBMb2NhbFN0b3JhZ2VBY2Nlc3MgYWNjZXNzLCBTdXBwb3J0ZWRDb25maWd1cmF0aW9u
Q2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIW1fZmFjdG9yeSkgewpAQCAtNjUsNyAr
NzMsNiBAQCB2b2lkIFJlbW90ZUNETTo6Z2V0U3VwcG9ydGVkQ29uZmlndXJhdGlvbihDRE1LZXlT
eXN0ZW1Db25maWd1cmF0aW9uJiYgY29uZmlndXJhdAogICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vz
c0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpS
ZW1vdGVDRE1Qcm94eTo6R2V0U3VwcG9ydGVkQ29uZmlndXJhdGlvbihXVEZNb3ZlKGNvbmZpZ3Vy
YXRpb24pLCBhY2Nlc3MpLCBXVEZNb3ZlKGNhbGxiYWNrKSwgbV9pZGVudGlmaWVyKTsKIH0KIAot
CiBib29sIFJlbW90ZUNETTo6c3VwcG9ydHNDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3Rl
bUNvbmZpZ3VyYXRpb24mKSBjb25zdAogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmgKaW5kZXggOGM0
NTRlYjgzZTU5OTRhOGU0ZDU5MmQ1MWRmOTFmZjliNTIzY2JlZi4uMzEzY2UwZjM2ODk1ZWIzNjdi
NWM0YzA2YWYzZmNjNzRlZmFiYmFhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUNETS5oCkBAIC00Myw2ICs0MywxMCBAQCBwdWJsaWM6CiBwcml2YXRl
OgogICAgIFJlbW90ZUNETShXZWFrUHRyPFJlbW90ZUNETUZhY3Rvcnk+JiYsIFJlbW90ZUNETUlk
ZW50aWZpZXImJiwgUmVtb3RlQ0RNQ29uZmlndXJhdGlvbiYmKTsKIAorI2lmICFSRUxFQVNFX0xP
R19ESVNBQkxFRAorICAgIHZvaWQgc2V0TG9nSWRlbnRpZmllcihjb25zdCB2b2lkKikgZmluYWw7
CisjZW5kaWYKKwogICAgIHZvaWQgZ2V0U3VwcG9ydGVkQ29uZmlndXJhdGlvbihXZWJDb3JlOjpD
RE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiYgY2FuZGlkYXRlQ29uZmlndXJhdGlvbiwgTG9jYWxT
dG9yYWdlQWNjZXNzLCBTdXBwb3J0ZWRDb25maWd1cmF0aW9uQ2FsbGJhY2smJikgZmluYWw7CiAK
ICAgICBib29sIHN1cHBvcnRzQ29uZmlndXJhdGlvbihjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0
ZW1Db25maWd1cmF0aW9uJikgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUNvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNQ29uZmlndXJhdGlvbi5oCmluZGV4
IDc5OTAyZGI4NWYwZjU5MDVhNzMyYTQ1OTg2NzM3MWU4MmZhNWMyMmYuLjkxYzA2OTg4ZmRiMDE3
N2ExMjhlNTlmYjczZjlhMTVhM2YwNTg3ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNQ29uZmlndXJhdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNQ29uZmlndXJhdGlvbi5oCkBAIC0z
Niw2ICszNiw3IEBAIHN0cnVjdCBSZW1vdGVDRE1Db25maWd1cmF0aW9uIHsKICAgICBWZWN0b3I8
QXRvbVN0cmluZz4gc3VwcG9ydGVkUm9idXN0bmVzc2VzOwogICAgIGJvb2wgc3VwcG9ydHNTZXJ2
ZXJDZXJ0aWZpY2F0ZXM7CiAgICAgYm9vbCBzdXBwb3J0c1Nlc3Npb25zOworICAgIHVpbnQ2NF90
IGxvZ0lkZW50aWZpZXIgeyAwIH07CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogICAg
IHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CkBAIC00NCw2ICs0NSw3IEBAIHN0
cnVjdCBSZW1vdGVDRE1Db25maWd1cmF0aW9uIHsKICAgICAgICAgZW5jb2RlciA8PCBzdXBwb3J0
ZWRSb2J1c3RuZXNzZXM7CiAgICAgICAgIGVuY29kZXIgPDwgc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZp
Y2F0ZXM7CiAgICAgICAgIGVuY29kZXIgPDwgc3VwcG9ydHNTZXNzaW9uczsKKyAgICAgICAgZW5j
b2RlciA8PCBsb2dJZGVudGlmaWVyOwogICAgIH0KIAogICAgIHRlbXBsYXRlIDxjbGFzcyBEZWNv
ZGVyPgpAQCAtNjksNiArNzEsMTEgQEAgc3RydWN0IFJlbW90ZUNETUNvbmZpZ3VyYXRpb24gewog
ICAgICAgICBpZiAoIXN1cHBvcnRzU2Vzc2lvbnMpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGxvZ0lkZW50aWZpZXI7
CisgICAgICAgIGRlY29kZXIgPj4gbG9nSWRlbnRpZmllcjsKKyAgICAgICAgaWYgKCFsb2dJZGVu
dGlmaWVyKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwogICAgICAgICByZXR1
cm4ge3sKICAgICAgICAgICAgIFdURk1vdmUoKnN1cHBvcnRlZEluaXREYXRhVHlwZXMpLAogICAg
ICAgICAgICAgV1RGTW92ZSgqc3VwcG9ydGVkUm9idXN0bmVzc2VzKSwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUZhY3RvcnkuY3BwCmlu
ZGV4IDg2ZjM4ZDRhMzIxMDAxYWU2NTFmMjZkYzA2ZmE5YTgyMTJiMmY3MTkuLjU2YjM1OGM3NTEz
ZWFkMGNkOGUxZjY5MjNkOWFkNWFjOTgxZGZlZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5LmNwcApAQCAtNjgsNyAr
NjgsNyBAQCBib29sIFJlbW90ZUNETUZhY3Rvcnk6OnN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0
cmluZyYga2V5U3lzdGVtKQogICAgIHJldHVybiBzdXBwb3J0ZWQ7CiB9CiAKLXN0ZDo6dW5pcXVl
X3B0cjxDRE1Qcml2YXRlPiBSZW1vdGVDRE1GYWN0b3J5OjpjcmVhdGVDRE0oY29uc3QgU3RyaW5n
JiBrZXlTeXN0ZW0pCitzdGQ6OnVuaXF1ZV9wdHI8Q0RNUHJpdmF0ZT4gUmVtb3RlQ0RNRmFjdG9y
eTo6Y3JlYXRlQ0RNKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBDRE1Qcml2YXRlQ2xp
ZW50JikKIHsKICAgICBSZW1vdGVDRE1JZGVudGlmaWVyIGlkZW50aWZpZXI7CiAgICAgUmVtb3Rl
Q0RNQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5LmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUZhY3RvcnkuaAppbmRleCBmNDMxOGM2MTA1
MDNjNmU2ZWQxNGIzZWYyMGEzMmZiNTRkZjE3NjQ5Li45YjE5ZWFjMzEyZDU2MzFmOGQxNTZmZTc1
OWY2YTRhY2E1MzEzODNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUNETUZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUNETUZhY3RvcnkuaApAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCByZW1vdmVTZXNzaW9uKFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIp
OwogCiBwcml2YXRlOgotICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpDRE1Qcml2YXRlPiBj
cmVhdGVDRE0oY29uc3QgU3RyaW5nJikgZmluYWw7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNv
cmU6OkNETVByaXZhdGU+IGNyZWF0ZUNETShjb25zdCBTdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpD
RE1Qcml2YXRlQ2xpZW50JikgZmluYWw7CiAgICAgYm9vbCBzdXBwb3J0c0tleVN5c3RlbShjb25z
dCBTdHJpbmcmKSBmaW5hbDsKIAogICAgIEhhc2hNYXA8UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
SWRlbnRpZmllciwgUmVmPFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbj4+IG1fc2Vzc2lvbnM7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUlu
c3RhbmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RN
SW5zdGFuY2UuY3BwCmluZGV4IDc1ZDVlNWE3OTUxNGRiYzNhYWFjMDBiOTg4NGE1N2RhYzE5OGY5
ZjYuLjI5NjJmYzE1OWRhMDRhZjUzMzIzYjcyNjRiYWMwMTc2OWE2OWM1OTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFu
Y2UuY3BwCkBAIC0xMDEsOCArMTAxLDE0IEBAIFJlZlB0cjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNl
c3Npb24+IFJlbW90ZUNETUluc3RhbmNlOjpjcmVhdGVTZXNzaW9uKCkKICAgICBpZiAoIW1fZmFj
dG9yeSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKKyAgICB1aW50NjRfdCBsb2dJZGVudGlm
aWVyIHsgMCB9OworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIGlmIChtX2NsaWVudCkK
KyAgICAgICAgbG9nSWRlbnRpZmllciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDY0X3Q+KG1fY2xp
ZW50LT5sb2dJZGVudGlmaWVyKCkpOworI2VuZGlmCisKICAgICBSZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb25JZGVudGlmaWVyIGlkZW50aWZpZXI7Ci0gICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29u
bmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFu
Y2VQcm94eTo6Q3JlYXRlU2Vzc2lvbigpLCBNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94
eTo6Q3JlYXRlU2Vzc2lvbjo6UmVwbHkoaWRlbnRpZmllciksIG1faWRlbnRpZmllcik7CisgICAg
bV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhN
ZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6Q3JlYXRlU2Vzc2lvbihsb2dJZGVudGlm
aWVyKSwgTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlUHJveHk6OkNyZWF0ZVNlc3Npb246OlJl
cGx5KGlkZW50aWZpZXIpLCBtX2lkZW50aWZpZXIpOwogICAgIGlmICghaWRlbnRpZmllcikKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgYXV0byBzZXNzaW9uID0gUmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uOjpjcmVhdGUobV9mYWN0b3J5LmdldCgpLCBXVEZNb3ZlKGlkZW50aWZpZXIpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcAppbmRleCA4YmVjZDU5YjVlYjM3ZTBkM2E1MTQ1
MzhmMzczODFkN2Y3N2Q4Y2NlLi45ZWNkMzkxODE3YTE1ZWYzYjE4NDFiYzlmOGM2M2MwNjkyYjJl
NWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUNETUluc3RhbmNlU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uY3BwCkBAIC00OSw2ICs0OSwxMyBAQCBS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbihXZWFrUHRy
PFJlbW90ZUNETUZhY3Rvcnk+JiYgZgogewogfQogCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVE
Cit2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6c2V0TG9nSWRlbnRpZmllcihjb25zdCB2
b2lkKiBsb2dJZGVudGlmaWVyKQoreworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rp
b24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
UHJveHk6OlNldExvZ0lkZW50aWZpZXIocmVpbnRlcnByZXRfY2FzdDx1aW50NjRfdD4obG9nSWRl
bnRpZmllcikpLCBtX2lkZW50aWZpZXIpOworfQorI2VuZGlmCisKIHZvaWQgUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSB0eXBlLCBjb25zdCBBdG9t
U3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXRE
YXRhLCBMaWNlbnNlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIW1fZmFjdG9yeSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmgKaW5kZXggNGU0Y2QyYzAwNWM2YjAwNjVmOWNkYjE4
OGM0YmNlMGI1YmZhNjYwMS4uZDYxNTI4MDgxY2M1OGFiMjYxOWVkMWIwNDg2NDJiNGY5ZDE3Yjc4
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5oCkBAIC00OSw2ICs0OSwxMCBAQCBwcml2YXRl
OgogICAgIGZyaWVuZCBjbGFzcyBSZW1vdGVDRE1GYWN0b3J5OwogICAgIFJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvbihXZWFrUHRyPFJlbW90ZUNETUZhY3Rvcnk+JiYsIFJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvbklkZW50aWZpZXImJik7CiAKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICB2
b2lkIHNldExvZ0lkZW50aWZpZXIoY29uc3Qgdm9pZCopIGZpbmFsOworI2VuZGlmCisKICAgICAv
LyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNLmNwcAppbmRleCA3NTZm
OGY5OWYxNjI2OTMzODdmMDkzZGQ2ZjJiMDU0YThmNzk5ZjVmLi44YTNhYjllZDM3NWEyZTkyZTlj
YjMzNzc5N2U2Zjg0NjllZWQ5NWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE0uY3BwCkBAIC02MCwxOCArNjAsMjMgQEAg
Ym9vbCBSZW1vdGVMZWdhY3lDRE06OnN1cHBvcnRzTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSkKICAgICByZXR1cm4gc3VwcG9ydGVkOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8V2ViQ29y
ZTo6TGVnYWN5Q0RNU2Vzc2lvbj4gUmVtb3RlTGVnYWN5Q0RNOjpjcmVhdGVTZXNzaW9uKFdlYkNv
cmU6OkxlZ2FjeUNETVNlc3Npb25DbGllbnQqIGNsaWVudCkKK3N0ZDo6dW5pcXVlX3B0cjxXZWJD
b3JlOjpMZWdhY3lDRE1TZXNzaW9uPiBSZW1vdGVMZWdhY3lDRE06OmNyZWF0ZVNlc3Npb24oV2Vi
Q29yZTo6TGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCYgY2xpZW50KQogewogICAgIGlmICghbV9mYWN0
b3J5KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFN0cmluZyBzdG9yYWdlRGlyZWN0
b3J5ID0gY2xpZW50ID8gY2xpZW50LT5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkgOiBlbXB0
eVN0cmluZygpOworICAgIFN0cmluZyBzdG9yYWdlRGlyZWN0b3J5ID0gY2xpZW50Lm1lZGlhS2V5
c1N0b3JhZ2VEaXJlY3RvcnkoKTsKKworICAgIHVpbnQ2NF90IGxvZ0lkZW50aWZpZXIgeyAwIH07
CisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgbG9nSWRlbnRpZmllciA9IHJlaW50ZXJw
cmV0X2Nhc3Q8dWludDY0X3Q+KGNsaWVudC5sb2dJZGVudGlmaWVyKCkpOworI2VuZGlmCiAKICAg
ICBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllciBpZGVudGlmaWVyOwotICAgIG1fZmFj
dG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2Fn
ZXM6OlJlbW90ZUxlZ2FjeUNETVByb3h5OjpDcmVhdGVTZXNzaW9uKHN0b3JhZ2VEaXJlY3Rvcnkp
LCBNZXNzYWdlczo6UmVtb3RlTGVnYWN5Q0RNUHJveHk6OkNyZWF0ZVNlc3Npb246OlJlcGx5KGlk
ZW50aWZpZXIpLCBtX2lkZW50aWZpZXIpOworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUxlZ2FjeUNETVBy
b3h5OjpDcmVhdGVTZXNzaW9uKHN0b3JhZ2VEaXJlY3RvcnksIGxvZ0lkZW50aWZpZXIpLCBNZXNz
YWdlczo6UmVtb3RlTGVnYWN5Q0RNUHJveHk6OkNyZWF0ZVNlc3Npb246OlJlcGx5KGlkZW50aWZp
ZXIpLCBtX2lkZW50aWZpZXIpOwogICAgIGlmICghaWRlbnRpZmllcikKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgcmV0dXJuIFJlbW90ZUxlZ2FjeUNETVNlc3Npb246OmNyZWF0ZShtX2Zh
Y3RvcnksIFdURk1vdmUoaWRlbnRpZmllcikpOworICAgIHJldHVybiBSZW1vdGVMZWdhY3lDRE1T
ZXNzaW9uOjpjcmVhdGUobV9mYWN0b3J5LCBXVEZNb3ZlKGlkZW50aWZpZXIpLCBjbGllbnQpOwog
fQogCiB2b2lkIFJlbW90ZUxlZ2FjeUNETTo6c2V0UGxheWVySWQoTWVkaWFQbGF5ZXJJZGVudGlm
aWVyIGlkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUxlZ2FjeUNETS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVMZWdhY3lDRE0uaAppbmRleCA0N2YwMmNiZWIyNGQ4YjVmMDgyNjJkNDY1NWEw
NjlmOWQ3ODJmMDM3Li5jMTI2YzMxZTBjNTM3ZjVkNTgxNTFmOTY1NTRmM2E4MWYzMDYyYTAzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2Fj
eUNETS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVn
YWN5Q0RNLmgKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflJlbW90ZUxl
Z2FjeUNETSgpOwogCiAgICAgYm9vbCBzdXBwb3J0c01JTUVUeXBlKGNvbnN0IFN0cmluZyYpIGZp
bmFsOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpMZWdhY3lDRE1TZXNzaW9uPiBjcmVh
dGVTZXNzaW9uKFdlYkNvcmU6OkxlZ2FjeUNETVNlc3Npb25DbGllbnQqKSBmaW5hbDsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TGVnYWN5Q0RNU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbihX
ZWJDb3JlOjpMZWdhY3lDRE1TZXNzaW9uQ2xpZW50JikgZmluYWw7CiAgICAgdm9pZCBzZXRQbGF5
ZXJJZChXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZpZXIpOwogCiBwcml2YXRlOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1T
ZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVn
YWN5Q0RNU2Vzc2lvbi5jcHAKaW5kZXggNjE1NWE4ZGE5ZjQ4ZmVjODQ2YTlhNDc4YjY1YzJlYjM1
NWI4NmQ0Ny4uYjNiMDIwZWY5MGI5M2Y4ZTI1MjBhZjZhMGYzNjMzOWI2YmY4ZGNlYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1T
ZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUxlZ2FjeUNETVNlc3Npb24uY3BwCkBAIC02NSwxNCArNjUsMTUgQEAgc3RhdGljIElQQzo6U2hh
cmVkQnVmZmVyQ29weSBjb252ZXJ0VG9TaGFyZWRCdWZmZXJDb3B5KFQgYXJyYXkpCiAgICAgcmV0
dXJuIElQQzo6U2hhcmVkQnVmZmVyQ29weShTaGFyZWRCdWZmZXI6OmNyZWF0ZShhcnJheS0+ZGF0
YSgpLCBhcnJheS0+Ynl0ZUxlbmd0aCgpKSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVM
ZWdhY3lDRE1TZXNzaW9uPiBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uOjpjcmVhdGUoV2Vha1B0cjxS
ZW1vdGVMZWdhY3lDRE1GYWN0b3J5PiBmYWN0b3J5LCBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRl
bnRpZmllciYmIGlkZW50aWZpZXIpCitzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGVnYWN5Q0RNU2Vz
c2lvbj4gUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbjo6Y3JlYXRlKFdlYWtQdHI8UmVtb3RlTGVnYWN5
Q0RNRmFjdG9yeT4gZmFjdG9yeSwgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXImJiBp
ZGVudGlmaWVyLCBMZWdhY3lDRE1TZXNzaW9uQ2xpZW50JiBjbGllbnQpCiB7Ci0gICAgcmV0dXJu
IHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMZWdhY3lDRE1TZXNzaW9uPihuZXcgUmVtb3RlTGVnYWN5
Q0RNU2Vzc2lvbihXVEZNb3ZlKGZhY3RvcnkpLCBXVEZNb3ZlKGlkZW50aWZpZXIpKSk7CisgICAg
cmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMZWdhY3lDRE1TZXNzaW9uPihuZXcgUmVtb3Rl
TGVnYWN5Q0RNU2Vzc2lvbihXVEZNb3ZlKGZhY3RvcnkpLCBXVEZNb3ZlKGlkZW50aWZpZXIpLCBj
bGllbnQpKTsKIH0KIAotUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbjo6UmVtb3RlTGVnYWN5Q0RNU2Vz
c2lvbihXZWFrUHRyPFJlbW90ZUxlZ2FjeUNETUZhY3Rvcnk+IGZhY3RvcnksIFJlbW90ZUxlZ2Fj
eUNETVNlc3Npb25JZGVudGlmaWVyJiYgaWRlbnRpZmllcikKK1JlbW90ZUxlZ2FjeUNETVNlc3Np
b246OlJlbW90ZUxlZ2FjeUNETVNlc3Npb24oV2Vha1B0cjxSZW1vdGVMZWdhY3lDRE1GYWN0b3J5
PiBmYWN0b3J5LCBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllciYmIGlkZW50aWZpZXIs
IExlZ2FjeUNETVNlc3Npb25DbGllbnQmIGNsaWVudCkKICAgICA6IG1fZmFjdG9yeShXVEZNb3Zl
KGZhY3RvcnkpKQogICAgICwgbV9pZGVudGlmaWVyKFdURk1vdmUoaWRlbnRpZmllcikpCisgICAg
LCBtX2NsaWVudChjbGllbnQpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmgKaW5kZXggNTJj
MGQxYTQ4YTk0MDlhMWRkMDk0NDhhZWI3NGM0YzQ4MTMyYmQyYi4uNTgxNTFmNDMyOGRhOTZjN2Vh
N2Q5MmQyNjA2MDM4ZjNkMDZmYjc4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmgKQEAgLTQ0LDcg
KzQ0LDcgQEAgY2xhc3MgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbiBmaW5hbAogICAgIDogcHVibGlj
IFdlYkNvcmU6OkxlZ2FjeUNETVNlc3Npb24KICAgICAsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNl
aXZlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMZWdhY3lD
RE1TZXNzaW9uPiBjcmVhdGUoV2Vha1B0cjxSZW1vdGVMZWdhY3lDRE1GYWN0b3J5PiwgUmVtb3Rl
TGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXImJik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxSZW1vdGVMZWdhY3lDRE1TZXNzaW9uPiBjcmVhdGUoV2Vha1B0cjxSZW1vdGVMZWdhY3lDRE1G
YWN0b3J5PiwgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXImJiwgV2ViQ29yZTo6TGVn
YWN5Q0RNU2Vzc2lvbkNsaWVudCYpOwogICAgIH5SZW1vdGVMZWdhY3lDRE1TZXNzaW9uKCk7CiAK
ICAgICAvLyBNZXNzYWdlUmVjZWl2ZXIKQEAgLTUzLDExICs1MywxMCBAQCBwdWJsaWM6CiAgICAg
Y29uc3QgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXImIGlkZW50aWZpZXIoKSBjb25z
dCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KIAogcHJpdmF0ZToKLSAgICBSZW1vdGVMZWdhY3lD
RE1TZXNzaW9uKFdlYWtQdHI8UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeT4sIFJlbW90ZUxlZ2FjeUNE
TVNlc3Npb25JZGVudGlmaWVyJiYpOworICAgIFJlbW90ZUxlZ2FjeUNETVNlc3Npb24oV2Vha1B0
cjxSZW1vdGVMZWdhY3lDRE1GYWN0b3J5PiwgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZp
ZXImJiwgV2ViQ29yZTo6TGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCYpOwogCiAgICAgLy8gTGVnYWN5
Q0RNU2Vzc2lvbgogICAgIFdlYkNvcmU6OkxlZ2FjeUNETVNlc3Npb25UeXBlIHR5cGUoKSBmaW5h
bCB7IHJldHVybiBXZWJDb3JlOjpDRE1TZXNzaW9uVHlwZVJlbW90ZTsgfQotICAgIHZvaWQgc2V0
Q2xpZW50KFdlYkNvcmU6OkxlZ2FjeUNETVNlc3Npb25DbGllbnQqIGNsaWVudCkgZmluYWwgeyBt
X2NsaWVudCA9IGNsaWVudDsgfQogICAgIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV9zZXNzaW9uSWQ7IH0KICAgICBSZWZQdHI8VWludDhBcnJheT4gZ2Vu
ZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFVpbnQ4QXJyYXkqIGluaXRE
YXRhLCBTdHJpbmcmIGRlc3RpbmF0aW9uVVJMLCB1bnNpZ25lZCBzaG9ydCYgZXJyb3JDb2RlLCB1
aW50MzJfdCYgc3lzdGVtQ29kZSkgZmluYWw7CiAgICAgdm9pZCByZWxlYXNlS2V5cygpIGZpbmFs
OwpAQCAtNzAsNyArNjksNyBAQCBwcml2YXRlOgogCiAgICAgV2Vha1B0cjxSZW1vdGVMZWdhY3lD
RE1GYWN0b3J5PiBtX2ZhY3Rvcnk7CiAgICAgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZp
ZXIgbV9pZGVudGlmaWVyOwotICAgIFdlYkNvcmU6OkxlZ2FjeUNETVNlc3Npb25DbGllbnQqIG1f
Y2xpZW50OworICAgIFdlYWtQdHI8V2ViQ29yZTo6TGVnYWN5Q0RNU2Vzc2lvbkNsaWVudD4gbV9j
bGllbnQ7CiAgICAgU3RyaW5nIG1fc2Vzc2lvbklkOwogICAgIG11dGFibGUgSGFzaE1hcDxTdHJp
bmcsIFJlZlB0cjxBcnJheUJ1ZmZlcj4+IG1fY2FjaGVkS2V5Q2FjaGU7CiB9Owo=
</data>
<flag name="commit-queue"
          id="480399"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453125</attachid>
            <date>2022-02-24 12:26:32 -0800</date>
            <delta_ts>2022-02-24 15:26:11 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-234319-20220224122631.patch</filename>
            <type>text/plain</type>
            <size>184903</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwMzQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTU1NmUzZjNmYzQ3YmQy
MTc3ZmIxNmE2NjQwYWQ3MmE5ZmYzMWRlNi4uNDk3NWMzMTEzMjlhMjEzZGQ1NTFiYzg3YjgzNjE5
ZjI5NDBkYjNjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3MiBAQAorMjAyMS0xMi0xNCAgSmVy
IE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbUmVmYWN0b3JdIEFkb3B0
IExvZ2dlckhlbHBlciBpbiBMb2dnaW5nIEVNRSBjbGFzc2VzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQzMTkKKworICAgICAgICBSZXZpZXdlZCBi
eSBFcmljIENhcmxzb24uCisKKyAgICAgICAgSW4gb3JkZXIgdG8gcGFzcyBkb3duIGEgbG9nZ2Vy
KCkgYW5kIGxvZ0lkZW50aWZpZXIoKSB0byB0aGUgcGxhdGZvcm0vCisgICAgICAgIGNsYXNzZXMs
IG1vZGlmeSBMZWdhY3lDRE1TZXNzaW9uQ2xpZW50IHRvIGJlIGEgQ2FuTWFrZVdlYWtQdHIgY2xh
c3MsCisgICAgICAgIHNvIGl0IGNhbiBiZSBwYXNzZWQgYXJvdW5kIGJ5IHJlZmVyZW5jZSBhbmQg
YXV0b21hdGljYWxseSBpbnZhbGlkYXRlZAorICAgICAgICB3aGVuIHRoZSBjbGllbnQgaXMgZGVz
dHJveWVkLiBUaGVuIG1vZGlmeSBMZWdhY3lDRE1TZXNzaW9uQ2xpZW50IHRvCisgICAgICAgIHBy
b3ZpZGUgYSBsb2dnZXIoKSBhbmQgbG9nSWRlbnRpZmllcigpIHRvIGNhbGxlcnMuCisKKyAgICAg
ICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
RE06OkNETSk6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNETTo6bG9nSWRlbnRpZmllciBjb25zdCk6CisgICAgICAgICogTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFLZXlTZXNzaW9uOjpnZW5lcmF0ZVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFLZXlTZXNzaW9uOjpsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6
dXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6Y2xvc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9uOjpyZW1vdmUpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFLZXlTZXNzaW9uOjp1cGRhdGVLZXlTdGF0dXNlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUtleVNlc3Npb246OnNlc3Npb25DbG9zZWQpOgorICAgICAgICAqIE1vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvTWVkaWFLZXlzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5czo6
TWVkaWFLZXlzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5czo6Y3JlYXRlU2Vzc2lvbik6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleXM6OnNldFNlcnZlckNlcnRpZmljYXRlKToKKyAg
ICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5oOgorICAgICAgICAqIE1v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpMZWdhY3lDRE06OmNyZWF0ZVNlc3Npb24pOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVByaXZhdGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1Qcml2YXRlQ2xlYXJLZXkuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TGVnYWN5Q0RNUHJpdmF0ZUNsZWFyS2V5OjpjcmVhdGVTZXNzaW9uKToKKyAg
ICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1Qcml2YXRlQ2xl
YXJLZXkuaDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lD
RE1Qcml2YXRlTWVkaWFQbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZU1l
ZGlhUGxheWVyOjpjcmVhdGVTZXNzaW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL2xlZ2FjeS9MZWdhY3lDRE1Qcml2YXRlTWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKiBNb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1TZXNzaW9uQ2xlYXJLZXkuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q0RNU2Vzc2lvbkNsZWFyS2V5OjpDRE1TZXNzaW9uQ2xlYXJLZXkp
OgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVNlc3Np
b25DbGVhcktleS5oOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dl
YktpdE1lZGlhS2V5U2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRNZWRpYUtl
eVNlc3Npb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRNZWRpYUtleVNlc3Np
b246OldlYktpdE1lZGlhS2V5U2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRNZWRp
YUtleVNlc3Npb246On5XZWJLaXRNZWRpYUtleVNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6
V2ViS2l0TWVkaWFLZXlTZXNzaW9uOjpjbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRN
ZWRpYUtleVNlc3Npb246OmdlbmVyYXRlS2V5UmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJLaXRNZWRpYUtleVNlc3Npb246OnVwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRN
ZWRpYUtleVNlc3Npb246OnNlbmRNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdE1l
ZGlhS2V5U2Vzc2lvbjo6c2VuZEVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdE1lZGlh
S2V5U2Vzc2lvbjo6bG9nQ2hhbm5lbCBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9uLmg6CisgICAgICAgICogTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldlYktpdE1lZGlhS2V5czo6Y3JlYXRlU2Vzc2lvbik6CisgICAgICAgICogTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlzLmg6CisgICAgICAgICogcGxh
dGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNRmFjdG9yeS5oOgorICAgICAgICAqIHBsYXRmb3JtL2Vu
Y3J5cHRlZG1lZGlhL0NETUluc3RhbmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5j
ZTo6c2V0TG9nSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZTo6c2V0
TG9nZ2VyKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1J
bnN0YW5jZVNlc3Npb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6
c2V0TG9nSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246
OnNldExvZ2dlcik6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEv
Q0RNUHJpdmF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZTo6c2V0TG9nSWRlbnRp
Zmllcik6CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2YXRlOjpzZXRMb2dnZXIpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNETUZhY3RvcnlDbGVhcktleTo6Y3JlYXRlQ0RNKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0xlZ2FjeUNETVNlc3Npb24uaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllcjo6Y3JlYXRlU2Vzc2lvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
clByaXZhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFj
ZTo6Y3JlYXRlU2Vzc2lvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNETUZhY3Rv
cnlGYWlyUGxheVN0cmVhbWluZzo6Y3JlYXRlQ0RNKToKKyAgICAgICAgKFdlYkNvcmU6OkNETVBy
aXZhdGVGYWlyUGxheVN0cmVhbWluZzo6Q0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydHNDb25m
aWd1cmF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETVByaXZhdGVGYWlyUGxheVN0
cmVhbWluZzo6Y3JlYXRlSW5zdGFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZUZh
aXJQbGF5U3RyZWFtaW5nOjpzZXRMb2dnZXIpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETVByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDOjpjcmVhdGVTZXNzaW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vY2YvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNETVNlc3Npb25BVkZvdW5kYXRpb25DRjo6Q0RNU2Vzc2lvbkFWRm91bmRh
dGlvbkNGKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvQ0RN
U2Vzc2lvbkFWRm91bmRhdGlvbkNGLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpjcmVhdGVTZXNz
aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3Rh
bmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5z
dGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OkNETUluc3RhbmNlRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1J
bnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c2V0U3RvcmFnZURpcmVjdG9yeSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlk
UHJvdmlkZVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VGYWlyUGxheVN0
cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZW5ld2luZ1JlcXVlc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVQZXJz
aXN0YWJsZVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VGYWlyUGxheVN0
cmVhbWluZ0FWRk9iakM6OmRpZEZhaWxUb1Byb3ZpZGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkNETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZXF1ZXN0RGlkU3VjY2Vl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2Jq
Qzo6c2hvdWxkUmV0cnlSZXF1ZXN0Rm9yUmVhc29uKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUlu
c3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpncm91cFNlc3Npb25JZGVudGlmaWVyQ2hh
bmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZG
T2JqQzo6ZXh0ZXJuYWxQcm90ZWN0aW9uU3RhdHVzRGlkQ2hhbmdlRm9yQ29udGVudEtleVJlcXVl
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakMpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZP
YmpDOjpyZXF1ZXN0TGljZW5zZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Np
b25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpsb2FkU2Vz
c2lvbik6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVh
bWluZ0FWRk9iakM6OmNsb3NlU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5j
ZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlbW92ZVNlc3Npb25EYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2Jq
Qzo6ZGlkUHJvdmlkZVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNz
aW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdHMpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpk
aWRQcm92aWRlUmVuZXdpbmdSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNl
U2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkRmFpbFRvUHJvdmlkZVJlcXVlc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDOjpyZXF1ZXN0RGlkU3VjY2VlZCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5j
ZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6Om91dHB1dE9ic2N1cmVkRHVlVG9JbnN1
ZmZpY2llbnRFeHRlcm5hbFByb3RlY3Rpb25DaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkNE
TUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cHJvdGVjdGlvblN0YXR1
c0ZvckRpc3BsYXlJRCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZUZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQzo6c2V0TG9nZ2VyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c2V0TG9nZ2Vy
KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9DRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbi5oOgorICAgICAgICAoV2ViQ29yZTo6Q0RN
U2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb246OmxvZ0NsYXNzTmFtZSBjb25zdCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVu
dEtleVNlc3Npb24ubW06CisgICAgICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uQVZDb250ZW50S2V5
U2Vzc2lvbjo6Q0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24pOgorICAgICAgICAoV2ViQ29y
ZTo6Q0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb246OmdlbmVyYXRlS2V5UmVxdWVzdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6cmVsZWFzZUtl
eXMpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb246OnVw
ZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6
YWRkUGFyc2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkNETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNz
aW9uOjpyZW1vdmVQYXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNU2Vzc2lvbkFWQ29udGVu
dEtleVNlc3Npb246OmdlbmVyYXRlS2V5UmVsZWFzZU1lc3NhZ2UpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkZvdW5kYXRpb25PYmpD
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vz
c2lvbkFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uQVZG
b3VuZGF0aW9uT2JqQzo6Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakM6On5DRE1TZXNzaW9uQVZGb3VuZGF0aW9u
T2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQzo6Z2Vu
ZXJhdGVLZXlSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETVNlc3Npb25BVkZvdW5kYXRp
b25PYmpDOjp1cGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNU2Vzc2lvbkFWRm91bmRhdGlv
bk9iakM6OnBsYXllckRpZFJlY2VpdmVFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpDRE1TZXNz
aW9uQVZGb3VuZGF0aW9uT2JqQzo6bG9nQ2hhbm5lbCBjb25zdCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbi5o
OgorICAgICAgICAoV2ViQ29yZTo6Q0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbjo6bG9nQ2xhc3NO
YW1lIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9DRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q0RNU2Vz
c2lvbkFWU3RyZWFtU2Vzc2lvbjo6Q0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbik6CisgICAgICAg
IChXZWJDb3JlOjpDRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uOjp+Q0RNU2Vzc2lvbkFWU3RyZWFt
U2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uOjpn
ZW5lcmF0ZUtleVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNU2Vzc2lvbkFWU3RyZWFt
U2Vzc2lvbjo6cmVsZWFzZUtleXMpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNU2Vzc2lvbkFWU3Ry
ZWFtU2Vzc2lvbjo6dXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETVNlc3Npb25BVlN0cmVh
bVNlc3Npb246OmFkZFBhcnNlcik6CisgICAgICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uQVZTdHJl
YW1TZXNzaW9uOjpyZW1vdmVQYXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNU2Vzc2lvbkFW
U3RyZWFtU2Vzc2lvbjo6Z2VuZXJhdGVLZXlSZWxlYXNlTWVzc2FnZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZG
T2JqQy5oOgorICAgICAgICAoV2ViQ29yZTo6Q0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQzo6
bG9nZ2VyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETVNlc3Npb25NZWRpYVNvdXJjZUFW
Rk9iakM6OmxvZ0lkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMubW06CisgICAg
ICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDOjpDRE1TZXNzaW9uTWVk
aWFTb3VyY2VBVkZPYmpDKToKKyAgICAgICAgKFdlYkNvcmU6OkNETVNlc3Npb25NZWRpYVNvdXJj
ZUFWRk9iakM6OmxvZ0NoYW5uZWwgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291cmNl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6
OmNyZWF0ZVNlc3Npb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9l
bWUvQ0RNVGh1bmRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDRE1GYWN0b3J5VGh1bmRlcjo6
Y3JlYXRlQ0RNKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NE
TVRodW5kZXIuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0xlZ2FjeU1vY2tDRE0uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TGVnYWN5TW9ja0NETTo6Y3JlYXRlU2Vzc2lvbik6CisgICAgICAgIChXZWJD
b3JlOjpNb2NrQ0RNU2Vzc2lvbjo6TW9ja0NETVNlc3Npb24pOgorICAgICAgICAqIHRlc3Rpbmcv
TGVnYWN5TW9ja0NETS5oOgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUZhY3Rvcnk6OmNyZWF0ZUNETSk6CisgICAgICAgICog
dGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5oOgorCiAyMDIyLTAyLTIxICBKZXIgTm9ibGUgIDxqZXIu
bm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIFdlYktpdCBhcHAgaXMgc29tZXRpbWVz
IG5vdCAiTm93IFBsYXlpbmciIGR1cmluZyBpbml0aWFsIHBsYXliYWNrCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGJl
ZDBjZDM3ZjE4ZTU4MGVkMDFkNTE1NmYzZDIzMWNmMWE5ZjMzOWMuLmVkMTIwMWZhNzdhMTVkZTE4
MmE2NmIyODZlY2UxZjMwMTRiNWFhN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzAgQEAKKzIwMjEt
MTItMTQgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgW1JlZmFj
dG9yXSBBZG9wdCBMb2dnZXJIZWxwZXIgaW4gTGVnYWN5IEVNRSBjbGFzc2VzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQzMTkKKworICAgICAgICBS
ZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUNETUZhY3RvcnlQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUZhY3Rv
cnlQcm94eTo6Y3JlYXRlQ0RNKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNRmFjdG9yeVBy
b3h5Ojpsb2dnZXIgY29uc3QpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RN
RmFjdG9yeVByb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0
YW5jZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6UmVtb3Rl
Q0RNSW5zdGFuY2VQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlUHJv
eHk6OmNyZWF0ZVNlc3Npb24pOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RN
SW5zdGFuY2VQcm94eS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5z
dGFuY2VQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uUHJveHk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvblByb3h5OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpzZXRMb2dJZGVu
dGlmaWVyKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vz
c2lvblByb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUNETVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNUHJveHk6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETVByb3h5OjpSZW1vdGVDRE1Qcm94eSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETVByb3h5OjpzZXRMb2dJZGVudGlmaWVyKToKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUNETVByb3h5Ojpsb2dnZXIgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVD
RE1Qcm94eTo6bG9nSWRlbnRpZmllciBjb25zdCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVDRE1Qcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUxlZ2FjeUNETUZhY3RvcnlQcm94eTo6bG9nZ2VyIGNvbnN0KToKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5oOgorICAgICAgICAqIEdQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVMZWdhY3lDRE1Qcm94eTo6Y3JlYXRlU2Vzc2lvbik6CisgICAgICAgICogR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5
KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94
eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y3Jl
YXRlU2Vzc2lvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RN
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNOjpzZXRMb2dJZGVudGlmaWVyKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1Db25maWd1cmF0aW9uLmg6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUNETUNvbmZpZ3VyYXRpb246OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUNETUNvbmZpZ3VyYXRpb246OmRlY29kZSk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUNETUZhY3Rvcnk6OmNyZWF0ZUNETSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlQ0RNRmFjdG9yeS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUNETUluc3RhbmNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2U6OmNy
ZWF0ZVNlc3Npb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvbjo6c2V0TG9nSWRlbnRpZmllcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlTGVnYWN5Q0RNLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RN
OjpjcmVhdGVTZXNzaW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVM
ZWdhY3lDRE0uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lD
RE1TZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbjo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbjo6UmVtb3Rl
TGVnYWN5Q0RNU2Vzc2lvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
TGVnYWN5Q0RNU2Vzc2lvbi5oOgorCiAyMDIyLTAyLTIyICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5m
cmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFdpdGggRE9NIFJlbmRlcmluZyBpbiBHUFUgcHJv
Y2VzcywgZXZlcnkgZGlzcGxheSByZXN1bHRzIGluIG5ldyBJT1N1cmZhY2UgYWxsb2NhdGlvbgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwCmluZGV4IDAx
NjEyMTlkMWUyNmIyNjJjNGVlZWM4MTk4YzQ2ZDhlYjE0YzFiMDIuLjY1NDNmMzkxOTgzYzdjNDYz
M2QyNzhhOWVhOTVmNTBjMzk5YTI0ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL0NETS5jcHAKQEAgLTczLDkgKzczLDkgQEAgQ0RNOjpDRE0oRG9jdW1lbnQm
IGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSkKICAgICBBU1NFUlQoc3VwcG9ydHNL
ZXlTeXN0ZW0oa2V5U3lzdGVtKSk7CiAgICAgZm9yIChhdXRvKiBmYWN0b3J5IDogQ0RNRmFjdG9y
eTo6cmVnaXN0ZXJlZEZhY3RvcmllcygpKSB7CiAgICAgICAgIGlmIChmYWN0b3J5LT5zdXBwb3J0
c0tleVN5c3RlbShrZXlTeXN0ZW0pKSB7Ci0gICAgICAgICAgICBtX3ByaXZhdGUgPSBmYWN0b3J5
LT5jcmVhdGVDRE0oa2V5U3lzdGVtKTsKKyAgICAgICAgICAgIG1fcHJpdmF0ZSA9IGZhY3Rvcnkt
PmNyZWF0ZUNETShrZXlTeXN0ZW0sICp0aGlzKTsKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQK
LSAgICAgICAgICAgIG1fcHJpdmF0ZS0+c2V0TG9nZ2VyKG1fbG9nZ2VyLCBtX2xvZ0lkZW50aWZp
ZXIpOworICAgICAgICAgICAgbV9wcml2YXRlLT5zZXRMb2dJZGVudGlmaWVyKG1fbG9nSWRlbnRp
Zmllcik7CiAjZW5kaWYKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaAppbmRleCBkN2IxZDUzZDA0OTFmNzI3
NzliNTk0YjJkODNjMDliODNiY2YyMDdmLi5iMjU1Nzk3ZDRlMTMwMThlY2M0YzIyZGFmYjYzODg1
MTMyMTU5ZmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL0NETS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RN
LmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAKKyNp
bmNsdWRlICJDRE1Qcml2YXRlLmgiCiAjaW5jbHVkZSAiQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2
ZXIuaCIKICNpbmNsdWRlICJNZWRpYUtleVNlc3Npb25UeXBlLmgiCiAjaW5jbHVkZSAiTWVkaWFL
ZXlTeXN0ZW1Db25maWd1cmF0aW9uLmgiCkBAIC01NCw3ICs1NSw3IEBAIGNsYXNzIERvY3VtZW50
OwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIGNsYXNzIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI7CiAKLWNsYXNzIENETSA6IHB1YmxpYyBSZWZDb3VudGVkPENETT4sIHB1YmxpYyBDYW5N
YWtlV2Vha1B0cjxDRE0+LCBwcml2YXRlIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyIHsKK2Ns
YXNzIENETSA6IHB1YmxpYyBSZWZDb3VudGVkPENETT4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxD
RE0+LCBwdWJsaWMgQ0RNUHJpdmF0ZUNsaWVudCwgcHJpdmF0ZSBDb250ZXh0RGVzdHJ1Y3Rpb25P
YnNlcnZlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNLZXlTeXN0ZW0oY29u
c3QgU3RyaW5nJik7CiAgICAgc3RhdGljIGJvb2wgaXNQZXJzaXN0ZW50VHlwZShNZWRpYUtleVNl
c3Npb25UeXBlKTsKQEAgLTgyLDExICs4MywxNiBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcgc3Rv
cmFnZURpcmVjdG9yeSgpIGNvbnN0OwogCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAg
Y29uc3QgTG9nZ2VyJiBsb2dnZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2xvZ2dlcjsgfQor
ICAgIGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2xvZ0lkZW50
aWZpZXI7IH0KKyNlbmRpZgorCiBwcml2YXRlOgogICAgIENETShEb2N1bWVudCYsIGNvbnN0IFN0
cmluZyYga2V5U3lzdGVtKTsKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAotICAgIFJlZjxM
b2dnZXI+IG1fbG9nZ2VyOworICAgIFJlZjxjb25zdCBMb2dnZXI+IG1fbG9nZ2VyOwogICAgIGNv
bnN0IHZvaWQqIG1fbG9nSWRlbnRpZmllcjsKICNlbmRpZgogICAgIFN0cmluZyBtX2tleVN5c3Rl
bTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVk
aWFLZXlTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
TWVkaWFLZXlTZXNzaW9uLmNwcAppbmRleCBmYjRhN2Y4ODRmNjc5NTViNmQ3OWQwMmNlNWNkZDU4
NDlkMmZjOTY1Li5jYzhhZmE0ZTIyMDcxNzIwMjAxM2UwNTE2OTk3NGIyMDdhMGRkYjQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vz
c2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleVNlc3Npb24uY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIK
ICNpbmNsdWRlICJFdmVudExvb3AuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCisjaW5jbHVk
ZSAiSlNNZWRpYUtleVN0YXR1c01hcC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRl
ICJNZWRpYUtleU1lc3NhZ2VFdmVudC5oIgogI2luY2x1ZGUgIk1lZGlhS2V5TWVzc2FnZUV2ZW50
SW5pdC5oIgpAQCAtNDksNiArNTAsNyBAQAogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luRGF0YS5o
IgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCisjaW5j
bHVkZSA8d3RmL0hhc2hDb3VudGVkU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGlu
ZXMuaD4KICNpbmNsdWRlIDx3dGYvTG9nZ2VySGVscGVyLmg+CiAKQEAgLTgyLDggKzg0LDcgQEAg
TWVkaWFLZXlTZXNzaW9uOjpNZWRpYUtleVNlc3Npb24oRG9jdW1lbnQmIGRvY3VtZW50LCBXZWFr
UHRyPE1lZGlhS2V5cz4mJiBrZXlzLAogICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9lbmNy
eXB0ZWQtbWVkaWEvI2RvbS1tZWRpYWtleXMtY3JlYXRlc2Vzc2lvbgogICAgIC8vIFczQyBFZGl0
b3IncyBEcmFmdCAwOSBOb3ZlbWJlciAyMDE2CiAgICAgLy8gY3JlYXRlU2Vzc2lvbigpLCBjdGQu
Ci0KLSAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAic2Vzc2lvblR5cGUoIiwgc2Vzc2lvblR5
cGUsICIpLCB1c2VEaXN0aW5jdGl2ZUlkZW50aWZpZXIoIiwgdXNlRGlzdGluY3RpdmVJZGVudGlm
aWVyLCAiKSIpOworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgInNlc3Npb25UeXBlKCIs
IHNlc3Npb25UeXBlLCAiKSwgdXNlRGlzdGluY3RpdmVJZGVudGlmaWVyKCIsIHVzZURpc3RpbmN0
aXZlSWRlbnRpZmllciwgIikiKTsKIAogICAgIC8vIDMuMS4gTGV0IHRoZSBzZXNzaW9uSWQgYXR0
cmlidXRlIGJlIHRoZSBlbXB0eSBzdHJpbmcuCiAgICAgLy8gMy4yLiBMZXQgdGhlIGV4cGlyYXRp
b24gYXR0cmlidXRlIGJlIE5hTi4KQEAgLTEwNCw3ICsxMDUsNyBAQCBNZWRpYUtleVNlc3Npb246
Ok1lZGlhS2V5U2Vzc2lvbihEb2N1bWVudCYgZG9jdW1lbnQsIFdlYWtQdHI8TWVkaWFLZXlzPiYm
IGtleXMsCiAgICAgVU5VU0VEX1BBUkFNKG1fdW5pbml0aWFsaXplZCk7CiAKICNpZiAhUkVMRUFT
RV9MT0dfRElTQUJMRUQKLSAgICBtX2luc3RhbmNlU2Vzc2lvbi0+c2V0TG9nZ2VyKG1fbG9nZ2Vy
LCBtX2xvZ0lkZW50aWZpZXIpOworICAgIG1faW5zdGFuY2VTZXNzaW9uLT5zZXRMb2dJZGVudGlm
aWVyKG1fbG9nSWRlbnRpZmllcik7CiAjZW5kaWYKICAgICBtX2luc3RhbmNlU2Vzc2lvbi0+c2V0
Q2xpZW50KCp0aGlzKTsKIApAQCAtMTQxLDEwICsxNDIsMTAgQEAgdm9pZCBNZWRpYUtleVNlc3Np
b246OmdlbmVyYXRlUmVxdWVzdChjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0
IEJ1ZmYKICAgICAvLyAxLiBJZiB0aGlzIG9iamVjdCBpcyBjbG9zZWQsIHJldHVybiBhIHByb21p
c2UgcmVqZWN0ZWQgd2l0aCBhbiBJbnZhbGlkU3RhdGVFcnJvci4KICAgICAvLyAyLiBJZiB0aGlz
IG9iamVjdCdzIHVuaW5pdGlhbGl6ZWQgdmFsdWUgaXMgZmFsc2UsIHJldHVybiBhIHByb21pc2Ug
cmVqZWN0ZWQgd2l0aCBhbiBJbnZhbGlkU3RhdGVFcnJvci4KICAgICBhdXRvIGlkZW50aWZpZXIg
PSBMT0dJREVOVElGSUVSOwotICAgIElORk9fTE9HKGlkZW50aWZpZXIsICJpbml0RGF0YVR5cGUo
IiwgaW5pdERhdGFUeXBlLCAiKSwgaW5pdERhdGEubGVuZ3RoKCIsIGluaXREYXRhLmxlbmd0aCgp
LCAiKSIpOworICAgIEFMV0FZU19MT0coaWRlbnRpZmllciwgImluaXREYXRhVHlwZSgiLCBpbml0
RGF0YVR5cGUsICIpLCBpbml0RGF0YS5sZW5ndGgoIiwgaW5pdERhdGEubGVuZ3RoKCksICIpIik7
CiAKICAgICBpZiAobV9jbG9zZWQgfHwgIW1fdW5pbml0aWFsaXplZCkgewotICAgICAgICBJTkZP
X0xPRyhpZGVudGlmaWVyLCAiUmVqZWN0ZWQ6IGNsb3NlZCgiLCBtX2Nsb3NlZCwgIikgb3IgIXVu
aW5pdGlhbGl6ZWQoIiwgIW1fdW5pbml0aWFsaXplZCwgIikiKTsKKyAgICAgICAgRVJST1JfTE9H
KGlkZW50aWZpZXIsICJSZWplY3RlZDogY2xvc2VkKCIsIG1fY2xvc2VkLCAiKSBvciAhdW5pbml0
aWFsaXplZCgiLCAhbV91bmluaXRpYWxpemVkLCAiKSIpOwogICAgICAgICBwcm9taXNlLT5yZWpl
Y3QoSW52YWxpZFN0YXRlRXJyb3IpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTU1LDcg
KzE1Niw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjpnZW5lcmF0ZVJlcXVlc3QoY29uc3QgQXRv
bVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBCdWZmCiAgICAgLy8gNC4gSWYgaW5pdERhdGFU
eXBlIGlzIHRoZSBlbXB0eSBzdHJpbmcsIHJldHVybiBhIHByb21pc2UgcmVqZWN0ZWQgd2l0aCBh
IG5ld2x5IGNyZWF0ZWQgVHlwZUVycm9yLgogICAgIC8vIDUuIElmIGluaXREYXRhIGlzIGFuIGVt
cHR5IGFycmF5LCByZXR1cm4gYSBwcm9taXNlIHJlamVjdGVkIHdpdGggYSBuZXdseSBjcmVhdGVk
IFR5cGVFcnJvci4KICAgICBpZiAoaW5pdERhdGFUeXBlLmlzRW1wdHkoKSB8fCAhaW5pdERhdGEu
bGVuZ3RoKCkpIHsKLSAgICAgICAgSU5GT19MT0coaWRlbnRpZmllciwgIlJlamVjdGVkOiBpbml0
RGF0YVR5cGUgZW1wdHkoIiwgaW5pdERhdGFUeXBlLmlzRW1wdHkoKSwgIikgb3IgaW5pdERhdGEg
ZW1wdHkoIiwgIWluaXREYXRhLmxlbmd0aCgpLCAiKSIpOworICAgICAgICBFUlJPUl9MT0coaWRl
bnRpZmllciwgIlJlamVjdGVkOiBpbml0RGF0YVR5cGUgZW1wdHkoIiwgaW5pdERhdGFUeXBlLmlz
RW1wdHkoKSwgIikgb3IgaW5pdERhdGEgZW1wdHkoIiwgIWluaXREYXRhLmxlbmd0aCgpLCAiKSIp
OwogICAgICAgICBwcm9taXNlLT5yZWplY3QoVHlwZUVycm9yKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KQEAgLTE2NCw3ICsxNjUsNyBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6Z2VuZXJhdGVS
ZXF1ZXN0KGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgQnVmZgogICAgIC8v
ICAgIGluaXREYXRhVHlwZSBhcyBhbiBJbml0aWFsaXphdGlvbiBEYXRhIFR5cGUsIHJldHVybiBh
IHByb21pc2UgcmVqZWN0ZWQgd2l0aCBhIE5vdFN1cHBvcnRlZEVycm9yLiBTdHJpbmcKICAgICAv
LyAgICBjb21wYXJpc29uIGlzIGNhc2Utc2Vuc2l0aXZlLgogICAgIGlmICghbV9pbXBsZW1lbnRh
dGlvbi0+c3VwcG9ydHNJbml0RGF0YVR5cGUoaW5pdERhdGFUeXBlKSkgewotICAgICAgICBJTkZP
X0xPRyhpZGVudGlmaWVyLCAiUmVqZWN0ZWQ6IGluaXREYXRhVHlwZSgiLCBpbml0RGF0YVR5cGUs
ICIpIHVuc3VwcG9ydGVkIik7CisgICAgICAgIEVSUk9SX0xPRyhpZGVudGlmaWVyLCAiUmVqZWN0
ZWQ6IGluaXREYXRhVHlwZSgiLCBpbml0RGF0YVR5cGUsICIpIHVuc3VwcG9ydGVkIik7CiAgICAg
ICAgIHByb21pc2UtPnJlamVjdChOb3RTdXBwb3J0ZWRFcnJvcik7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CkBAIC0xODAsMTQgKzE4MSwxNCBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6Z2VuZXJh
dGVSZXF1ZXN0KGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgQnVmZgogCiAg
ICAgICAgIC8vIDEwLjMuIElmIHRoZSBwcmVjZWRpbmcgc3RlcCBmYWlsZWQsIHJlamVjdCBwcm9t
aXNlIHdpdGggYSBuZXdseSBjcmVhdGVkIFR5cGVFcnJvci4KICAgICAgICAgaWYgKCFzYW5pdGl6
ZWRJbml0RGF0YSkgewotICAgICAgICAgICAgSU5GT19MT0coaWRlbnRpZmllciwgIjo6dGFzaygp
IFJlamVjdGVkOiBjYW5ub3Qgc2FuaXRpemUgaW5pdCBkYXRhIik7CisgICAgICAgICAgICBFUlJP
Ul9MT0coaWRlbnRpZmllciwgIjo6dGFzaygpIFJlamVjdGVkOiBjYW5ub3Qgc2FuaXRpemUgaW5p
dCBkYXRhIik7CiAgICAgICAgICAgICBwcm9taXNlLT5yZWplY3QoVHlwZUVycm9yKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIC8vIDEwLjQuIElmIHNhbml0aXpl
ZCBpbml0IGRhdGEgaXMgZW1wdHksIHJlamVjdCBwcm9taXNlIHdpdGggYSBOb3RTdXBwb3J0ZWRF
cnJvci4KICAgICAgICAgaWYgKHNhbml0aXplZEluaXREYXRhLT5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgICAgIElORk9fTE9HKGlkZW50aWZpZXIsICI6OnRhc2soKSBSZWplY3RlZDogZW1wdHkgc2Fu
aXRpemVkIGluaXQgZGF0YSIpOworICAgICAgICAgICAgRVJST1JfTE9HKGlkZW50aWZpZXIsICI6
OnRhc2soKSBSZWplY3RlZDogZW1wdHkgc2FuaXRpemVkIGluaXQgZGF0YSIpOwogICAgICAgICAg
ICAgcHJvbWlzZS0+cmVqZWN0KE5vdFN1cHBvcnRlZEVycm9yKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQpAQCAtMTk5LDcgKzIwMCw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjpn
ZW5lcmF0ZVJlcXVlc3QoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBCdWZm
CiAgICAgICAgIC8vIDEwLjkuIFVzZSB0aGUgY2RtIHRvIGV4ZWN1dGUgdGhlIGZvbGxvd2luZyBz
dGVwczoKICAgICAgICAgLy8gMTAuOS4xLiBJZiB0aGUgc2FuaXRpemVkIGluaXQgZGF0YSBpcyBu
b3Qgc3VwcG9ydGVkIGJ5IHRoZSBjZG0sIHJlamVjdCBwcm9taXNlIHdpdGggYSBOb3RTdXBwb3J0
ZWRFcnJvci4KICAgICAgICAgaWYgKCFtX2ltcGxlbWVudGF0aW9uLT5zdXBwb3J0c0luaXREYXRh
KGluaXREYXRhVHlwZSwgKnNhbml0aXplZEluaXREYXRhKSkgewotICAgICAgICAgICAgSU5GT19M
T0coaWRlbnRpZmllciwgIjo6dGFzaygpIFJlamVjdGVkOiB1bnN1cHBvcnRlZCBpbml0RGF0YVR5
cGUgKCIsIGluaXREYXRhVHlwZSwgIikgb3Igc2FuaXRpemVkIGluaXREYXRhIik7CisgICAgICAg
ICAgICBFUlJPUl9MT0coaWRlbnRpZmllciwgIjo6dGFzaygpIFJlamVjdGVkOiB1bnN1cHBvcnRl
ZCBpbml0RGF0YVR5cGUgKCIsIGluaXREYXRhVHlwZSwgIikgb3Igc2FuaXRpemVkIGluaXREYXRh
Iik7CiAgICAgICAgICAgICBwcm9taXNlLT5yZWplY3QoTm90U3VwcG9ydGVkRXJyb3IpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0yNDcsNyArMjQ4LDcgQEAgdm9pZCBNZWRp
YUtleVNlc3Npb246OmdlbmVyYXRlUmVxdWVzdChjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5
cGUsIGNvbnN0IEJ1ZmYKICAgICAgICAgICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgq
dGhpcywgVGFza1NvdXJjZTo6TmV0d29ya2luZywgW3RoaXMsIHByb21pc2UgPSBXVEZNb3ZlKHBy
b21pc2UpLCBtZXNzYWdlID0gV1RGTW92ZShtZXNzYWdlKSwgbWVzc2FnZVR5cGUsIHNlc3Npb25J
ZCwgc3VjY2VlZGVkLCBpZGVudGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVyKV0gKCkgbXV0YWJs
ZSB7CiAgICAgICAgICAgICAgICAgLy8gMTAuMTAuMS4gSWYgYW55IG9mIHRoZSBwcmVjZWRpbmcg
c3RlcHMgZmFpbGVkLCByZWplY3QgcHJvbWlzZSB3aXRoIGEgbmV3IERPTUV4Y2VwdGlvbiB3aG9z
ZSBuYW1lIGlzIHRoZSBhcHByb3ByaWF0ZSBlcnJvciBuYW1lLgogICAgICAgICAgICAgICAgIGlm
IChzdWNjZWVkZWQgPT0gQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFsdWU6OkZhaWxlZCkg
ewotICAgICAgICAgICAgICAgICAgICBJTkZPX0xPRyhpZGVudGlmaWVyLCAiOjp0YXNrKCkgUmVq
ZWN0ZWQ6IGZhaWxlZCB0byByZXF1ZXN0IGxpY2Vuc2UiKTsKKyAgICAgICAgICAgICAgICAgICAg
RVJST1JfTE9HKGlkZW50aWZpZXIsICI6OnRhc2soKSBSZWplY3RlZDogZmFpbGVkIHRvIHJlcXVl
c3QgbGljZW5zZSIpOwogICAgICAgICAgICAgICAgICAgICBwcm9taXNlLT5yZWplY3QoTm90U3Vw
cG9ydGVkRXJyb3IpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAg
ICAgfQpAQCAtMjYxLDcgKzI2Miw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjpnZW5lcmF0ZVJl
cXVlc3QoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBCdWZmCiAgICAgICAg
ICAgICAgICAgZW5xdWV1ZU1lc3NhZ2UobWVzc2FnZVR5cGUsIG1lc3NhZ2UpOwogCiAgICAgICAg
ICAgICAgICAgLy8gMTAuOS4zLiBSZXNvbHZlIHByb21pc2UuCi0gICAgICAgICAgICAgICAgSU5G
T19MT0coaWRlbnRpZmllciwgIjo6dGFzaygpIFJlc29sdmVkIik7CisgICAgICAgICAgICAgICAg
QUxXQVlTX0xPRyhpZGVudGlmaWVyLCAiOjp0YXNrKCkgUmVzb2x2ZWQiKTsKICAgICAgICAgICAg
ICAgICBwcm9taXNlLT5yZXNvbHZlKCk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSk7CkBA
IC0yNzYsMTIgKzI3NywxMiBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6bG9hZChjb25zdCBTdHJp
bmcmIHNlc3Npb25JZCwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taQogICAgIC8vIFczQyBF
ZGl0b3IncyBEcmFmdCAwOSBOb3ZlbWJlciAyMDE2CiAKICAgICBhdXRvIGlkZW50aWZpZXIgPSBM
T0dJREVOVElGSUVSOwotICAgIElORk9fTE9HKGlkZW50aWZpZXIsICJzZXNzaW9uSWQoIiwgc2Vz
c2lvbklkLCAiKSIpOworICAgIEFMV0FZU19MT0coaWRlbnRpZmllciwgInNlc3Npb25JZCgiLCBz
ZXNzaW9uSWQsICIpIik7CiAKICAgICAvLyAxLiBJZiB0aGlzIG9iamVjdCBpcyBjbG9zZWQsIHJl
dHVybiBhIHByb21pc2UgcmVqZWN0ZWQgd2l0aCBhbiBJbnZhbGlkU3RhdGVFcnJvci4KICAgICAv
LyAyLiBJZiB0aGlzIG9iamVjdCdzIHVuaW5pdGlhbGl6ZWQgdmFsdWUgaXMgZmFsc2UsIHJldHVy
biBhIHByb21pc2UgcmVqZWN0ZWQgd2l0aCBhbiBJbnZhbGlkU3RhdGVFcnJvci4KICAgICBpZiAo
bV9jbG9zZWQgfHwgIW1fdW5pbml0aWFsaXplZCkgewotICAgICAgICBJTkZPX0xPRyhpZGVudGlm
aWVyLCAiUmVqZWN0ZWQ6IGNsb3NlZCgiLCBtX2Nsb3NlZCwgIikgb3IgIXVuaW5pdGlhbGl6ZWQo
IiwgIW1fdW5pbml0aWFsaXplZCwgIikiKTsKKyAgICAgICAgRVJST1JfTE9HKGlkZW50aWZpZXIs
ICJSZWplY3RlZDogY2xvc2VkKCIsIG1fY2xvc2VkLCAiKSBvciAhdW5pbml0aWFsaXplZCgiLCAh
bV91bmluaXRpYWxpemVkLCAiKSIpOwogICAgICAgICBwcm9taXNlLT5yZWplY3QoSW52YWxpZFN0
YXRlRXJyb3IpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjkyLDcgKzI5Myw3IEBAIHZv
aWQgTWVkaWFLZXlTZXNzaW9uOjpsb2FkKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBSZWY8RGVm
ZXJyZWRQcm9taXNlPiYmIHByb21pCiAgICAgLy8gNC4gSWYgc2Vzc2lvbklkIGlzIHRoZSBlbXB0
eSBzdHJpbmcsIHJldHVybiBhIHByb21pc2UgcmVqZWN0ZWQgd2l0aCBhIG5ld2x5IGNyZWF0ZWQg
VHlwZUVycm9yLgogICAgIC8vIDUuIElmIHRoZSByZXN1bHQgb2YgcnVubmluZyB0aGUgSXMgcGVy
c2lzdGVudCBzZXNzaW9uIHR5cGU/IGFsZ29yaXRobSBvbiB0aGlzIG9iamVjdCdzIHNlc3Npb24g
dHlwZSBpcyBmYWxzZSwgcmV0dXJuIGEgcHJvbWlzZSByZWplY3RlZCB3aXRoIGEgbmV3bHkgY3Jl
YXRlZCBUeXBlRXJyb3IuCiAgICAgaWYgKHNlc3Npb25JZC5pc0VtcHR5KCkgfHwgbV9zZXNzaW9u
VHlwZSA9PSBNZWRpYUtleVNlc3Npb25UeXBlOjpUZW1wb3JhcnkpIHsKLSAgICAgICAgSU5GT19M
T0coaWRlbnRpZmllciwgIlJlamVjdGVkOiBzZXNzaW9uSUQgZW1wdHkoIiwgc2Vzc2lvbklkLmlz
RW1wdHkoKSwgIikgb3Igc2Vzc2lvblR5cGUgPT0gVGVtcG9yYXJ5ICgiLCBtX3Nlc3Npb25UeXBl
ID09IE1lZGlhS2V5U2Vzc2lvblR5cGU6OlRlbXBvcmFyeSwgIikiKTsKKyAgICAgICAgRVJST1Jf
TE9HKGlkZW50aWZpZXIsICJSZWplY3RlZDogc2Vzc2lvbklEIGVtcHR5KCIsIHNlc3Npb25JZC5p
c0VtcHR5KCksICIpIG9yIHNlc3Npb25UeXBlID09IFRlbXBvcmFyeSAoIiwgbV9zZXNzaW9uVHlw
ZSA9PSBNZWRpYUtleVNlc3Npb25UeXBlOjpUZW1wb3JhcnksICIpIik7CiAgICAgICAgIHByb21p
c2UtPnJlamVjdChUeXBlRXJyb3IpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMzA3LDcg
KzMwOCw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjpsb2FkKGNvbnN0IFN0cmluZyYgc2Vzc2lv
bklkLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pCiAgICAgICAgIC8vIDguMi4gSWYgdGhl
IHByZWNlZGluZyBzdGVwIGZhaWxlZCwgb3IgaWYgc2FuaXRpemVkIHNlc3Npb24gSUQgaXMgZW1w
dHksIHJlamVjdCBwcm9taXNlIHdpdGggYSBuZXdseSBjcmVhdGVkIFR5cGVFcnJvci4KICAgICAg
ICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHNhbml0aXplZFNlc3Npb25JZCA9IG1faW1wbGVtZW50
YXRpb24tPnNhbml0aXplU2Vzc2lvbklkKHNlc3Npb25JZCk7CiAgICAgICAgIGlmICghc2FuaXRp
emVkU2Vzc2lvbklkIHx8IHNhbml0aXplZFNlc3Npb25JZC0+aXNFbXB0eSgpKSB7Ci0gICAgICAg
ICAgICBJTkZPX0xPRyhpZGVudGlmaWVyLCAiUmVqZWN0ZWQ6IHNhbml0aXplZFNTZXNzaW9uSUQg
ZW1wdHkiKTsKKyAgICAgICAgICAgIEVSUk9SX0xPRyhpZGVudGlmaWVyLCAiUmVqZWN0ZWQ6IHNh
bml0aXplZFNTZXNzaW9uSUQgZW1wdHkiKTsKICAgICAgICAgICAgIHByb21pc2UtPnJlamVjdChU
eXBlRXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0zMzksMTUgKzM0
MCwxNSBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6bG9hZChjb25zdCBTdHJpbmcmIHNlc3Npb25J
ZCwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taQogICAgICAgICAgICAgaWYgKHN1Y2NlZWRl
ZCA9PSBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZTo6RmFpbGVkKSB7CiAgICAgICAg
ICAgICAgICAgc3dpdGNoIChmYWlsdXJlKSB7CiAgICAgICAgICAgICAgICAgY2FzZSBDRE1JbnN0
YW5jZVNlc3Npb246OlNlc3Npb25Mb2FkRmFpbHVyZTo6Tm9TZXNzaW9uRGF0YToKLSAgICAgICAg
ICAgICAgICAgICAgSU5GT19MT0coaWRlbnRpZmllciwgIjo6dGFzaygpIFJlc29sdmVkOiBOb1Nl
c3Npb25EYXRhIik7CisgICAgICAgICAgICAgICAgICAgIEFMV0FZU19MT0coaWRlbnRpZmllciwg
Ijo6dGFzaygpIFJlc29sdmVkOiBOb1Nlc3Npb25EYXRhIik7CiAgICAgICAgICAgICAgICAgICAg
IHByb21pc2UtPnJlc29sdmU8SURMQm9vbGVhbj4oZmFsc2UpOwogICAgICAgICAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgICAgICAgICAgY2FzZSBDRE1JbnN0YW5jZVNlc3Npb246OlNlc3Np
b25Mb2FkRmFpbHVyZTo6TWlzbWF0Y2hlZFNlc3Npb25UeXBlOgotICAgICAgICAgICAgICAgICAg
ICBJTkZPX0xPRyhpZGVudGlmaWVyLCAiOjp0YXNrKCkgUmVqZWN0ZWQ6IE1pc21hdGNoZWRTZXNz
aW9uVHlwZSIpOworICAgICAgICAgICAgICAgICAgICBFUlJPUl9MT0coaWRlbnRpZmllciwgIjo6
dGFzaygpIFJlamVjdGVkOiBNaXNtYXRjaGVkU2Vzc2lvblR5cGUiKTsKICAgICAgICAgICAgICAg
ICAgICAgcHJvbWlzZS0+cmVqZWN0KFR5cGVFcnJvcik7CiAgICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgICAgICAgICBjYXNlIENETUluc3RhbmNlU2Vzc2lvbjo6U2Vzc2lvbkxv
YWRGYWlsdXJlOjpRdW90YUV4Y2VlZGVkOgotICAgICAgICAgICAgICAgICAgICBJTkZPX0xPRyhp
ZGVudGlmaWVyLCAiOjp0YXNrKCkgUmVqZWN0ZWQ6IFF1b3RhRXhjZWVkZWQiKTsKKyAgICAgICAg
ICAgICAgICAgICAgRVJST1JfTE9HKGlkZW50aWZpZXIsICI6OnRhc2soKSBSZWplY3RlZDogUXVv
dGFFeGNlZWRlZCIpOwogICAgICAgICAgICAgICAgICAgICBwcm9taXNlLT5yZWplY3QoUXVvdGFF
eGNlZWRlZEVycm9yKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAg
ICAgIGNhc2UgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTZXNzaW9uTG9hZEZhaWx1cmU6Ok5vbmU6CkBA
IC0zNjEsNyArMzYyLDcgQEAgdm9pZCBNZWRpYUtleVNlc3Npb246OmxvYWQoY29uc3QgU3RyaW5n
JiBzZXNzaW9uSWQsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWkKICAgICAgICAgICAgIHF1
ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6TmV0d29ya2luZywg
W3RoaXMsIGtub3duS2V5cyA9IFdURk1vdmUoa25vd25LZXlzKSwgZXhwaXJhdGlvbiA9IFdURk1v
dmUoZXhwaXJhdGlvbiksIG1lc3NhZ2UgPSBXVEZNb3ZlKG1lc3NhZ2UpLCBzYW5pdGl6ZWRTZXNz
aW9uSWQsIHN1Y2NlZWRlZCwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGlkZW50aWZpZXIg
PSBXVEZNb3ZlKGlkZW50aWZpZXIpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICAvLyA4
LjkuMS4gSWYgYW55IG9mIHRoZSBwcmVjZWRpbmcgc3RlcHMgZmFpbGVkLCByZWplY3QgcHJvbWlz
ZSB3aXRoIGEgdGhlIGFwcHJvcHJpYXRlIGVycm9yIG5hbWUuCiAgICAgICAgICAgICAgICAgaWYg
KHN1Y2NlZWRlZCA9PSBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZTo6RmFpbGVkKSB7
Ci0gICAgICAgICAgICAgICAgICAgIElORk9fTE9HKGlkZW50aWZpZXIsICI6OnRhc2soKSBSZWpl
Y3RlZDogT3RoZXIgZmFpbHVyZSIpOworICAgICAgICAgICAgICAgICAgICBFUlJPUl9MT0coaWRl
bnRpZmllciwgIjo6dGFzaygpIFJlamVjdGVkOiBPdGhlciBmYWlsdXJlIik7CiAgICAgICAgICAg
ICAgICAgICAgIHByb21pc2UtPnJlamVjdChOb3RTdXBwb3J0ZWRFcnJvcik7CiAgICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CkBAIC0zODQsNyArMzg1LDcgQEAg
dm9pZCBNZWRpYUtleVNlc3Npb246OmxvYWQoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIFJlZjxE
ZWZlcnJlZFByb21pc2U+JiYgcHJvbWkKICAgICAgICAgICAgICAgICAgICAgZW5xdWV1ZU1lc3Nh
Z2UobWVzc2FnZS0+Zmlyc3QsIFdURk1vdmUobWVzc2FnZS0+c2Vjb25kKSk7CiAKICAgICAgICAg
ICAgICAgICAvLyA4LjkuNy4gUmVzb2x2ZSBwcm9taXNlIHdpdGggdHJ1ZS4KLSAgICAgICAgICAg
ICAgICBJTkZPX0xPRyhpZGVudGlmaWVyLCAiOjp0YXNrKCkgUmVzb2x2ZWQiKTsKKyAgICAgICAg
ICAgICAgICBBTFdBWVNfTE9HKGlkZW50aWZpZXIsICI6OnRhc2soKSBSZXNvbHZlZCIpOwogICAg
ICAgICAgICAgICAgIHByb21pc2UtPnJlc29sdmU8SURMQm9vbGVhbj4odHJ1ZSk7CiAgICAgICAg
ICAgICB9KTsKICAgICAgICAgfSk7CkBAIC00MDIsMTcgKzQwMywxNyBAQCB2b2lkIE1lZGlhS2V5
U2Vzc2lvbjo6dXBkYXRlKGNvbnN0IEJ1ZmZlclNvdXJjZSYgcmVzcG9uc2UsIFJlZjxEZWZlcnJl
ZFByb21pc2U+JgogICAgIC8vIDEuIElmIHRoaXMgb2JqZWN0IGlzIGNsb3NlZCwgcmV0dXJuIGEg
cHJvbWlzZSByZWplY3RlZCB3aXRoIGFuIEludmFsaWRTdGF0ZUVycm9yLgogICAgIC8vIDIuIElm
IHRoaXMgb2JqZWN0J3MgY2FsbGFibGUgdmFsdWUgaXMgZmFsc2UsIHJldHVybiBhIHByb21pc2Ug
cmVqZWN0ZWQgd2l0aCBhbiBJbnZhbGlkU3RhdGVFcnJvci4KICAgICBhdXRvIGlkZW50aWZpZXIg
PSBMT0dJREVOVElGSUVSOwotICAgIElORk9fTE9HKGlkZW50aWZpZXIsICJyZXNwb25zZS5sZW5n
dGgoIiwgcmVzcG9uc2UubGVuZ3RoKCksICIpIik7CisgICAgQUxXQVlTX0xPRyhpZGVudGlmaWVy
LCAicmVzcG9uc2UubGVuZ3RoKCIsIHJlc3BvbnNlLmxlbmd0aCgpLCAiKSIpOwogCiAgICAgaWYg
KG1fY2xvc2VkIHx8ICFtX2NhbGxhYmxlKSB7Ci0gICAgICAgIElORk9fTE9HKGlkZW50aWZpZXIs
ICJSZWplY3RlZDogY2xvc2VkKCIsIG1fY2xvc2VkLCAiKSBvciAhY2FsbGFibGUoIiwgIW1fY2Fs
bGFibGUsICIpIik7CisgICAgICAgIEVSUk9SX0xPRyhpZGVudGlmaWVyLCAiUmVqZWN0ZWQ6IGNs
b3NlZCgiLCBtX2Nsb3NlZCwgIikgb3IgIWNhbGxhYmxlKCIsICFtX2NhbGxhYmxlLCAiKSIpOwog
ICAgICAgICBwcm9taXNlLT5yZWplY3QoSW52YWxpZFN0YXRlRXJyb3IpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCiAgICAgLy8gMy4gSWYgcmVzcG9uc2UgaXMgYW4gZW1wdHkgYXJyYXksIHJl
dHVybiBhIHByb21pc2UgcmVqZWN0ZWQgd2l0aCBhIG5ld2x5IGNyZWF0ZWQgVHlwZUVycm9yLgog
ICAgIGlmICghcmVzcG9uc2UubGVuZ3RoKCkpIHsKLSAgICAgICAgSU5GT19MT0coaWRlbnRpZmll
ciwgIlJlamVjdGVkOiBlbXB0eSByZXNwb25zZSIpOworICAgICAgICBFUlJPUl9MT0coaWRlbnRp
ZmllciwgIlJlamVjdGVkOiBlbXB0eSByZXNwb25zZSIpOwogICAgICAgICBwcm9taXNlLT5yZWpl
Y3QoVHlwZUVycm9yKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTQyNiw3ICs0MjcsNyBA
QCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6dXBkYXRlKGNvbnN0IEJ1ZmZlclNvdXJjZSYgcmVzcG9u
c2UsIFJlZjxEZWZlcnJlZFByb21pc2U+JgogCiAgICAgICAgIC8vIDYuMi4gSWYgdGhlIHByZWNl
ZGluZyBzdGVwIGZhaWxlZCwgb3IgaWYgc2FuaXRpemVkIHJlc3BvbnNlIGlzIGVtcHR5LCByZWpl
Y3QgcHJvbWlzZSB3aXRoIGEgbmV3bHkgY3JlYXRlZCBUeXBlRXJyb3IuCiAgICAgICAgIGlmICgh
c2FuaXRpemVkUmVzcG9uc2UgfHwgc2FuaXRpemVkUmVzcG9uc2UtPmlzRW1wdHkoKSkgewotICAg
ICAgICAgICAgSU5GT19MT0coaWRlbnRpZmllciwgIjo6dGFzayAtIFJlamVjdGVkOiBlbXB0eSBz
YW5pdGl6ZWQgcmVzcG9uc2UiKTsKKyAgICAgICAgICAgIEVSUk9SX0xPRyhpZGVudGlmaWVyLCAi
Ojp0YXNrIC0gUmVqZWN0ZWQ6IGVtcHR5IHNhbml0aXplZCByZXNwb25zZSIpOwogICAgICAgICAg
ICAgcHJvbWlzZS0+cmVqZWN0KFR5cGVFcnJvcik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KQEAgLTQ2Myw3ICs0NjQsNyBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6dXBkYXRlKGNv
bnN0IEJ1ZmZlclNvdXJjZSYgcmVzcG9uc2UsIFJlZjxEZWZlcnJlZFByb21pc2U+JgogICAgICAg
ICAgICAgLy8gTk9URTogU3RlcHMgNi43LjEuIGFuZCA2LjcuMi4gc2hvdWxkIGJlIGltcGxlbWVu
dGVkIGluIENETUluc3RhbmNlLgogCiAgICAgICAgICAgICBpZiAoc3VjY2VlZGVkID09IENETUlu
c3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlOjpGYWlsZWQpIHsKLSAgICAgICAgICAgICAgICBJ
TkZPX0xPRyhpZGVudGlmaWVyLCAiOjp0YXNrKCkgUmVqZWN0ZWQiKTsKKyAgICAgICAgICAgICAg
ICBFUlJPUl9MT0coaWRlbnRpZmllciwgIjo6dGFzaygpIFJlamVjdGVkOiBGYWlsZWQiKTsKICAg
ICAgICAgICAgICAgICBwcm9taXNlLT5yZWplY3QoVHlwZUVycm9yKTsKICAgICAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgICAgICB9CkBAIC01MTgsNyArNTE5LDcgQEAgdm9pZCBNZWRpYUtl
eVNlc3Npb246OnVwZGF0ZShjb25zdCBCdWZmZXJTb3VyY2UmIHJlc3BvbnNlLCBSZWY8RGVmZXJy
ZWRQcm9taXNlPiYKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICAvLyA2Ljgu
Mi4gUmVzb2x2ZSBwcm9taXNlLgotICAgICAgICAgICAgICAgIElORk9fTE9HKGlkZW50aWZpZXIs
ICI6OnRhc2soKSBSZXNvbHZlZCIpOworICAgICAgICAgICAgICAgIEFMV0FZU19MT0coaWRlbnRp
ZmllciwgIjo6dGFzaygpIFJlc29sdmVkIik7CiAgICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVz
b2x2ZSgpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwpAQCAtNTMzLDIxICs1MzQsMjAg
QEAgdm9pZCBNZWRpYUtleVNlc3Npb246OmNsb3NlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJv
bWlzZSkKICAgICAvLyBXM0MgRWRpdG9yJ3MgRHJhZnQgMDkgTm92ZW1iZXIgMjAxNgogCiAgICAg
YXV0byBpZGVudGlmaWVyID0gTE9HSURFTlRJRklFUjsKLSAgICBJTkZPX0xPRyhpZGVudGlmaWVy
KTsKIAogICAgIC8vIDEuIExldCBzZXNzaW9uIGJlIHRoZSBhc3NvY2lhdGVkIE1lZGlhS2V5U2Vz
c2lvbiBvYmplY3QuCiAgICAgLy8gMi4gSWYgc2Vzc2lvbiBpcyBjbG9zZWQsIHJldHVybiBhIHJl
c29sdmVkIHByb21pc2UuCi0gICAgTE9HKEVNRSwgIkVNRSAtIGNsb3Npbmcgc2Vzc2lvbiAlcyIs
IG1fc2Vzc2lvbklkLnV0ZjgoKS5kYXRhKCkpOworICAgIEFMV0FZU19MT0coaWRlbnRpZmllciwg
IkVNRSAtIGNsb3Npbmcgc2Vzc2lvbiAiLCBtX3Nlc3Npb25JZC51dGY4KCkuZGF0YSgpKTsKIAog
ICAgIGlmIChtX2Nsb3NlZCkgewotICAgICAgICBJTkZPX0xPRyhpZGVudGlmaWVyLCAiUmVzb2x2
ZWQ6IGFscmVhZHkgY2xvc2VkIik7CisgICAgICAgIEFMV0FZU19MT0coaWRlbnRpZmllciwgIlJl
c29sdmVkOiBhbHJlYWR5IGNsb3NlZCIpOwogICAgICAgICBwcm9taXNlLT5yZXNvbHZlKCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICAvLyAzLiBJZiBzZXNzaW9uJ3MgY2FsbGFibGUg
dmFsdWUgaXMgZmFsc2UsIHJldHVybiBhIHByb21pc2UgcmVqZWN0ZWQgd2l0aCBhbiBJbnZhbGlk
U3RhdGVFcnJvci4KICAgICBpZiAoIW1fY2FsbGFibGUpIHsKLSAgICAgICAgSU5GT19MT0coaWRl
bnRpZmllciwgIlJlamVjdGVkOiAhY2FsbGFibGUiKTsKKyAgICAgICAgRVJST1JfTE9HKGlkZW50
aWZpZXIsICJSZWplY3RlZDogIWNhbGxhYmxlIik7CiAgICAgICAgIHByb21pc2UtPnJlamVjdChJ
bnZhbGlkU3RhdGVFcnJvcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC01NjcsNyArNTY3
LDcgQEAgdm9pZCBNZWRpYUtleVNlc3Npb246OmNsb3NlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYg
cHJvbWlzZSkKICAgICAgICAgICAgICAgICBzZXNzaW9uQ2xvc2VkKCk7CiAKICAgICAgICAgICAg
ICAgICAvLyA1LjMuMi4gUmVzb2x2ZSBwcm9taXNlLgotICAgICAgICAgICAgICAgIElORk9fTE9H
KGlkZW50aWZpZXIsICI6OnRhc2soKSBSZXNvbHZlZCIpOworICAgICAgICAgICAgICAgIEFMV0FZ
U19MT0coaWRlbnRpZmllciwgIjo6dGFzaygpIFJlc29sdmVkIik7CiAgICAgICAgICAgICAgICAg
cHJvbWlzZS0+cmVzb2x2ZSgpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwpAQCAtNTg1
LDEwICs1ODUsMTAgQEAgdm9pZCBNZWRpYUtleVNlc3Npb246OnJlbW92ZShSZWY8RGVmZXJyZWRQ
cm9taXNlPiYmIHByb21pc2UpCiAgICAgLy8gMi4gSWYgdGhpcyBvYmplY3QncyBjYWxsYWJsZSB2
YWx1ZSBpcyBmYWxzZSwgcmV0dXJuIGEgcHJvbWlzZSByZWplY3RlZCB3aXRoIGFuIEludmFsaWRT
dGF0ZUVycm9yLgogCiAgICAgYXV0byBpZGVudGlmaWVyID0gTE9HSURFTlRJRklFUjsKLSAgICBJ
TkZPX0xPRyhpZGVudGlmaWVyKTsKKyAgICBBTFdBWVNfTE9HKGlkZW50aWZpZXIpOwogCiAgICAg
aWYgKG1fY2xvc2VkIHx8ICFtX2NhbGxhYmxlKSB7Ci0gICAgICAgIElORk9fTE9HKGlkZW50aWZp
ZXIsICJSZWplY3RlZDogY2xvc2VkKCIsIG1fY2xvc2VkLCAiKSBvciAhY2FsbGFibGUoIiwgIW1f
Y2FsbGFibGUsICIpIik7CisgICAgICAgIEVSUk9SX0xPRyhpZGVudGlmaWVyLCAiUmVqZWN0ZWQ6
IGNsb3NlZCgiLCBtX2Nsb3NlZCwgIikgb3IgIWNhbGxhYmxlKCIsICFtX2NhbGxhYmxlLCAiKSIp
OwogICAgICAgICBwcm9taXNlLT5yZWplY3QoSW52YWxpZFN0YXRlRXJyb3IpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQpAQCAtNjI5LDcgKzYyOSw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjpy
ZW1vdmUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogCiAgICAgICAgICAgICAgICAg
Ly8gNC41LjMuIElmIGFueSBvZiB0aGUgcHJlY2VkaW5nIHN0ZXBzIGZhaWxlZCwgcmVqZWN0IHBy
b21pc2Ugd2l0aCBhIG5ldyBET01FeGNlcHRpb24gd2hvc2UgbmFtZSBpcyB0aGUgYXBwcm9wcmlh
dGUgZXJyb3IgbmFtZS4KICAgICAgICAgICAgICAgICBpZiAoc3VjY2VlZGVkID09IENETUluc3Rh
bmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlOjpGYWlsZWQpIHsKLSAgICAgICAgICAgICAgICAgICAg
SU5GT19MT0coaWRlbnRpZmllciwgIlJlamVjdGVkOiBmYWlsZWQiKTsKKyAgICAgICAgICAgICAg
ICAgICAgRVJST1JfTE9HKGlkZW50aWZpZXIsICJSZWplY3RlZDogZmFpbGVkIik7CiAgICAgICAg
ICAgICAgICAgICAgIHByb21pc2UtPnJlamVjdChOb3RTdXBwb3J0ZWRFcnJvcik7CiAgICAgICAg
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CkBAIC02NDAsNyArNjQwLDcg
QEAgdm9pZCBNZWRpYUtleVNlc3Npb246OnJlbW92ZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHBy
b21pc2UpCiAgICAgICAgICAgICAgICAgICAgIGVucXVldWVNZXNzYWdlKE1lZGlhS2V5TWVzc2Fn
ZVR5cGU6OkxpY2Vuc2VSZWxlYXNlLCAqbWVzc2FnZSk7CiAKICAgICAgICAgICAgICAgICAvLyA0
LjUuNi4gUmVzb2x2ZSBwcm9taXNlLgotICAgICAgICAgICAgICAgIElORk9fTE9HKGlkZW50aWZp
ZXIsICJSZXNvbHZlZCIpOworICAgICAgICAgICAgICAgIEFMV0FZU19MT0coaWRlbnRpZmllciwg
IlJlc29sdmVkIik7CiAgICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZSgpOwogICAgICAg
ICAgICAgfSk7CiAgICAgICAgIH0pOwpAQCAtNzAwLDEwICs3MDAsMzAgQEAgdm9pZCBNZWRpYUtl
eVNlc3Npb246OnVwZGF0ZUtleVN0YXR1c2VzKENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVz
VmVjdG9yJiYgaW4KICAgICAgICAgcmV0dXJuIE1lZGlhS2V5U3RhdHVzOjpJbnRlcm5hbEVycm9y
OwogICAgIH07CiAKLSAgICBtX3N0YXR1c2VzID0gV1RGOjptYXAoV1RGTW92ZShpbnB1dFN0YXR1
c2VzKSwgW10oYXV0byYmIHN0YXR1cykgewotICAgICAgICByZXR1cm4gc3RkOjpwYWlyIHsgV1RG
TW92ZShzdGF0dXMuZmlyc3QpLCB0b01lZGlhS2V5U3RhdHVzKHN0YXR1cy5zZWNvbmQpIH07Cisj
aWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgSGFzaENvdW50ZWRTZXQ8TWVkaWFLZXlTdGF0
dXMsIEludEhhc2g8TWVkaWFLZXlTdGF0dXM+LCBXVEY6OlN0cm9uZ0VudW1IYXNoVHJhaXRzPE1l
ZGlhS2V5U3RhdHVzPj4gc3RhdHVzQ291bnRzOworI2VuZGlmCisKKyAgICBtX3N0YXR1c2VzID0g
V1RGOjptYXAoV1RGTW92ZShpbnB1dFN0YXR1c2VzKSwgWyZdKGF1dG8mJiBpbnB1dFN0YXR1cykg
eworICAgICAgICBhdXRvIHN0YXR1cyA9IHN0ZDo6cGFpciB7IFdURk1vdmUoaW5wdXRTdGF0dXMu
Zmlyc3QpLCB0b01lZGlhS2V5U3RhdHVzKGlucHV0U3RhdHVzLnNlY29uZCkgfTsKKyNpZiAhUkVM
RUFTRV9MT0dfRElTQUJMRUQKKyAgICAgICAgc3RhdHVzQ291bnRzLmFkZChzdGF0dXMuc2Vjb25k
KTsKKyNlbmRpZgorICAgICAgICByZXR1cm4gc3RhdHVzOwogICAgIH0pOwogCisjaWYgIVJFTEVB
U0VfTE9HX0RJU0FCTEVECisgICAgU3RyaW5nQnVpbGRlciBzdGF0dXNTdHJpbmc7CisgICAgZm9y
IChhdXRvJiBzdGF0dXNDb3VudCA6IHN0YXR1c0NvdW50cykgeworICAgICAgICBpZiAoIXN0YXR1
c0NvdW50LnZhbHVlKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmICghc3RhdHVz
U3RyaW5nLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHN0YXR1c1N0cmluZy5hcHBlbmQoIiwgIik7
CisgICAgICAgIHN0YXR1c1N0cmluZy5hcHBlbmQobWFrZVN0cmluZyhjb252ZXJ0RW51bWVyYXRp
b25Ub1N0cmluZyhzdGF0dXNDb3VudC5rZXkpLCAiOiAiLCBzdGF0dXNDb3VudC52YWx1ZSkpOwor
ICAgIH0KKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJzdGF0dXNlczogeyIsIHN0YXR1
c1N0cmluZy50b1N0cmluZygpLCAifSIpOworI2VuZGlmCisKICAgICAvLyA1LiBRdWV1ZSBhIHRh
c2sgdG8gZmlyZSBhIHNpbXBsZSBldmVudCBuYW1lZCBrZXlzdGF0dXNlc2NoYW5nZSBhdCB0aGUg
c2Vzc2lvbi4KICAgICBxdWV1ZVRhc2tUb0Rpc3BhdGNoRXZlbnQoKnRoaXMsIFRhc2tTb3VyY2U6
Ok5ldHdvcmtpbmcsIEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmtleXN0YXR1c2VzY2hhbmdl
RXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykpOwog
CkBAIC03NDYsNyArNzY2LDcgQEAgdm9pZCBNZWRpYUtleVNlc3Npb246OnNlc3Npb25DbG9zZWQo
KQogewogICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9lbmNyeXB0ZWQtbWVkaWEvI3Nlc3Np
b24tY2xvc2VkCiAgICAgLy8gVzNDIEVkaXRvcidzIERyYWZ0IDA5IE5vdmVtYmVyIDIwMTYKLSAg
ICBJTkZPX0xPRyhMT0dJREVOVElGSUVSKTsKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIp
OwogCiAgICAgLy8gMS4gTGV0IHNlc3Npb24gYmUgdGhlIGFzc29jaWF0ZWQgTWVkaWFLZXlTZXNz
aW9uIG9iamVjdC4KICAgICAvLyAyLiBJZiBzZXNzaW9uJ3Mgc2Vzc2lvbiB0eXBlIGlzICJwZXJz
aXN0ZW50LXVzYWdlLXJlY29yZCIsIGV4ZWN1dGUgdGhlIGZvbGxvd2luZyBzdGVwcyBpbiBwYXJh
bGxlbDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
TWVkaWFLZXlzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVk
aWFLZXlzLmNwcAppbmRleCAzNjdmMzFkMTg2YjUxNjM5YTljNzQyMTNmMGNmOGU2ZjJmOGQyNmVh
Li5hNzAxOTlkMGJiYTc5ZmNlZTU1NTlkMDgwYzUyYTZjNDk4OTExYmYyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuY3BwCkBAIC02
Miw3ICs2Miw3IEBAIE1lZGlhS2V5czo6TWVkaWFLZXlzKERvY3VtZW50JiBkb2N1bWVudCwgYm9v
bCB1c2VEaXN0aW5jdGl2ZUlkZW50aWZpZXIsIGJvb2wgcGVyCiAjZW5kaWYKIHsKICNpZiAhUkVM
RUFTRV9MT0dfRElTQUJMRUQKLSAgICBtX2luc3RhbmNlLT5zZXRMb2dnZXIoZG9jdW1lbnQubG9n
Z2VyKCksIG1fbG9nSWRlbnRpZmllcik7CisgICAgbV9pbnN0YW5jZS0+c2V0TG9nSWRlbnRpZmll
cihtX2xvZ0lkZW50aWZpZXIpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZG9jdW1lbnQpOwog
I2VuZGlmCkBAIC03NiwzMiArNzYsMzEgQEAgRXhjZXB0aW9uT3I8UmVmPE1lZGlhS2V5U2Vzc2lv
bj4+IE1lZGlhS2V5czo6Y3JlYXRlU2Vzc2lvbihEb2N1bWVudCYgZG9jdW1lbnQsIE0KICAgICAv
LyBodHRwczovL3czYy5naXRodWIuaW8vZW5jcnlwdGVkLW1lZGlhLyNkb20tbWVkaWFrZXlzLXNl
dHNlcnZlcmNlcnRpZmljYXRlCiAgICAgLy8gVzNDIEVkaXRvcidzIERyYWZ0IDA5IE5vdmVtYmVy
IDIwMTYKICAgICBhdXRvIGlkZW50aWZpZXIgPSBMT0dJREVOVElGSUVSOwotICAgIElORk9fTE9H
KGlkZW50aWZpZXIsICJFTUUgLSBjaGVjayBpZiBhIG5ldyBzZXNzaW9uIGNhbiBiZSBjcmVhdGVk
Iik7CiAKICAgICAvLyBXaGVuIHRoaXMgbWV0aG9kIGlzIGludm9rZWQsIHRoZSB1c2VyIGFnZW50
IG11c3QgcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6CiAgICAgLy8gMS4gSWYgdGhpcyBvYmplY3Qn
cyBzdXBwb3J0ZWQgc2Vzc2lvbiB0eXBlcyB2YWx1ZSBkb2VzIG5vdCBjb250YWluIHNlc3Npb25U
eXBlLCB0aHJvdyBbV2ViSURMXSBhIE5vdFN1cHBvcnRlZEVycm9yLgogICAgIGlmICghbV9zdXBw
b3J0ZWRTZXNzaW9uVHlwZXMuY29udGFpbnMoc2Vzc2lvblR5cGUpKSB7Ci0gICAgICAgIElORk9f
TE9HKGlkZW50aWZpZXIsICJFeGNlcHRpb246IHVuc3VwcG9ydGVkIHNlc3Npb25UeXBlOiAiLCBz
ZXNzaW9uVHlwZSk7CisgICAgICAgIEVSUk9SX0xPRyhpZGVudGlmaWVyLCAiRXhjZXB0aW9uOiB1
bnN1cHBvcnRlZCBzZXNzaW9uVHlwZTogIiwgc2Vzc2lvblR5cGUpOwogICAgICAgICByZXR1cm4g
RXhjZXB0aW9uKE5vdFN1cHBvcnRlZEVycm9yKTsKICAgICB9CiAKICAgICAvLyAyLiBJZiB0aGUg
aW1wbGVtZW50YXRpb24gZG9lcyBub3Qgc3VwcG9ydCBNZWRpYUtleVNlc3Npb24gb3BlcmF0aW9u
cyBpbiB0aGUgY3VycmVudCBzdGF0ZSwgdGhyb3cgW1dlYklETF0gYW4gSW52YWxpZFN0YXRlRXJy
b3IuCiAgICAgaWYgKCFtX2ltcGxlbWVudGF0aW9uLT5zdXBwb3J0c1Nlc3Npb25zKCkpIHsKLSAg
ICAgICAgSU5GT19MT0coaWRlbnRpZmllciwgIkV4Y2VwdGlvbjogaW1wbGVtZW50YXRpb24gZG9l
cyBub3Qgc3VwcG9ydCBzZXNzaW9ucyIpOworICAgICAgICBFUlJPUl9MT0coaWRlbnRpZmllciwg
IkV4Y2VwdGlvbjogaW1wbGVtZW50YXRpb24gZG9lcyBub3Qgc3VwcG9ydCBzZXNzaW9ucyIpOwog
ICAgICAgICByZXR1cm4gRXhjZXB0aW9uKEludmFsaWRTdGF0ZUVycm9yKTsKICAgICB9CiAKICAg
ICBhdXRvIGluc3RhbmNlU2Vzc2lvbiA9IG1faW5zdGFuY2UtPmNyZWF0ZVNlc3Npb24oKTsKICAg
ICBpZiAoIWluc3RhbmNlU2Vzc2lvbikgewotICAgICAgICBJTkZPX0xPRyhpZGVudGlmaWVyLCAi
RXhjZXB0aW9uOiBjb3VsZCBub3QgY3JlYXRlIHNlc3Npb24iKTsKKyAgICAgICAgRVJST1JfTE9H
KGlkZW50aWZpZXIsICJFeGNlcHRpb246IGNvdWxkIG5vdCBjcmVhdGUgc2Vzc2lvbiIpOwogICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uKEludmFsaWRTdGF0ZUVycm9yKTsKICAgICB9CiAKICAgICAv
LyAzLiBMZXQgc2Vzc2lvbiBiZSBhIG5ldyBNZWRpYUtleVNlc3Npb24gb2JqZWN0LCBhbmQgaW5p
dGlhbGl6ZSBpdCBhcyBmb2xsb3dzOgogICAgIC8vIE5PVEU6IENvbnRpbnVlZCBpbiBNZWRpYUtl
eVNlc3Npb24uCiAgICAgLy8gNC4gUmV0dXJuIHNlc3Npb24uCisgICAgQUxXQVlTX0xPRyhpZGVu
dGlmaWVyKTsKICAgICBhdXRvIHNlc3Npb24gPSBNZWRpYUtleVNlc3Npb246OmNyZWF0ZShkb2N1
bWVudCwgKnRoaXMsIHNlc3Npb25UeXBlLCBtX3VzZURpc3RpbmN0aXZlSWRlbnRpZmllciwgbV9p
bXBsZW1lbnRhdGlvbi5jb3B5UmVmKCksIGluc3RhbmNlU2Vzc2lvbi5yZWxlYXNlTm9uTnVsbCgp
KTsKLSAgICBJTkZPX0xPRyhpZGVudGlmaWVyLCAiQ3JlYXRlZCBzZXNzaW9uIik7CiAgICAgbV9z
ZXNzaW9ucy5hcHBlbmQoc2Vzc2lvbi5jb3B5UmVmKCkpOwogICAgIHJldHVybiBzZXNzaW9uOwog
fQpAQCAtMTE2LDE0ICsxMTUsMTQgQEAgdm9pZCBNZWRpYUtleXM6OnNldFNlcnZlckNlcnRpZmlj
YXRlKGNvbnN0IEJ1ZmZlclNvdXJjZSYgc2VydmVyQ2VydGlmaWNhdGUsIFJlZjwKICAgICAvLyAx
LiBJZiB0aGUgS2V5IFN5c3RlbSBpbXBsZW1lbnRhdGlvbiByZXByZXNlbnRlZCBieSB0aGlzIG9i
amVjdCdzIGNkbSBpbXBsZW1lbnRhdGlvbiB2YWx1ZSBkb2VzIG5vdCBzdXBwb3J0CiAgICAgLy8g
ICAgc2VydmVyIGNlcnRpZmljYXRlcywgcmV0dXJuIGEgcHJvbWlzZSByZXNvbHZlZCB3aXRoIGZh
bHNlLgogICAgIGlmICghbV9pbXBsZW1lbnRhdGlvbi0+c3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0
ZXMoKSkgewotICAgICAgICBJTkZPX0xPRyhpZGVudGlmaWVyLCAiUmVqZWN0ZWQ6ICFzdXBwb3J0
c1NlcnZlckNlcnRpZmljYXRlcygpIik7CisgICAgICAgIEFMV0FZU19MT0coaWRlbnRpZmllciwg
IlJlc29sdmVkOiAhc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMoKSIpOwogICAgICAgICBwcm9t
aXNlLT5yZXNvbHZlPElETEJvb2xlYW4+KGZhbHNlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAogICAgIC8vIDIuIElmIHNlcnZlckNlcnRpZmljYXRlIGlzIGFuIGVtcHR5IGFycmF5LCByZXR1
cm4gYSBwcm9taXNlIHJlamVjdGVkIHdpdGggYSBuZXcgYSBuZXdseSBjcmVhdGVkIFR5cGVFcnJv
ci4KICAgICBpZiAoIXNlcnZlckNlcnRpZmljYXRlLmxlbmd0aCgpKSB7Ci0gICAgICAgIElORk9f
TE9HKGlkZW50aWZpZXIsICJSZWplY3RlZDogZW1wdHkgc2VydmVyQ2VydGlmaWNhdGUiKTsKKyAg
ICAgICAgRVJST1JfTE9HKGlkZW50aWZpZXIsICJSZWplY3RlZDogZW1wdHkgc2VydmVyQ2VydGlm
aWNhdGUiKTsKICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KFR5cGVFcnJvcik7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CkBAIC0xMzUsMTYgKzEzNCwxNyBAQCB2b2lkIE1lZGlhS2V5czo6c2V0U2Vy
dmVyQ2VydGlmaWNhdGUoY29uc3QgQnVmZmVyU291cmNlJiBzZXJ2ZXJDZXJ0aWZpY2F0ZSwgUmVm
PAogICAgIC8vIDUuIFJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzIGluIHBhcmFsbGVsOgogCiAgICAg
Ly8gNS4xLiBVc2UgdGhpcyBvYmplY3QncyBjZG0gaW5zdGFuY2UgdG8gcHJvY2VzcyBjZXJ0aWZp
Y2F0ZS4KKyAgICBBTFdBWVNfTE9HKGlkZW50aWZpZXIpOwogICAgIG1faW5zdGFuY2UtPnNldFNl
cnZlckNlcnRpZmljYXRlKFdURk1vdmUoY2VydGlmaWNhdGUpLCBbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IFJlZiB7ICp0aGlzIH0sIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBpZGVudGlmaWVy
ID0gV1RGTW92ZShpZGVudGlmaWVyKV0gKGF1dG8gc3VjY2VzcykgewogICAgICAgICAvLyA1LjIu
IElmIHRoZSBwcmVjZWRpbmcgc3RlcCBmYWlsZWQsIHJlc29sdmUgcHJvbWlzZSB3aXRoIGEgbmV3
IERPTUV4Y2VwdGlvbiB3aG9zZSBuYW1lIGlzIHRoZSBhcHByb3ByaWF0ZSBlcnJvciBuYW1lLgog
ICAgICAgICAvLyA1LjEuIFtFbHNlLF0gUmVzb2x2ZSBwcm9taXNlIHdpdGggdHJ1ZS4KICAgICAg
ICAgaWYgKHN1Y2Nlc3MgPT0gQ0RNSW5zdGFuY2U6OkZhaWxlZCkgewotICAgICAgICAgICAgSU5G
T19MT0coaWRlbnRpZmllciwgIjo6dGFzaygpIC0gUmVqZWN0ZWQsIHNldFNlcnZlckNlcnRpZmlj
YXRlKCkgZmFpbGVkIik7CisgICAgICAgICAgICBFUlJPUl9MT0coaWRlbnRpZmllciwgIjo6dGFz
aygpIC0gUmVqZWN0ZWQsIHNldFNlcnZlckNlcnRpZmljYXRlKCkgZmFpbGVkIik7CiAgICAgICAg
ICAgICBwcm9taXNlLT5yZWplY3QoSW52YWxpZFN0YXRlRXJyb3IpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgSU5GT19MT0coaWRlbnRpZmllciwgIjo6dGFzaygp
IC0gUmVzb2x2ZWQiKTsKKyAgICAgICAgQUxXQVlTX0xPRyhpZGVudGlmaWVyLCAiOjp0YXNrKCkg
LSBSZXNvbHZlZCIpOwogICAgICAgICBwcm9taXNlLT5yZXNvbHZlPElETEJvb2xlYW4+KHRydWUp
OwogICAgIH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5cy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9NZWRpYUtleXMuaAppbmRleCA5MWExYTA3MTE0MzNiZTI0N2RkMmE4NWM1ZjRhZDA5MzhhMDlh
N2FjLi5iN2VhZGFmYjcwYjc2MzBlZGRmYTk2OWUxZjc5ZmNhODEwYWQ0NmU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmgKQEAgLTg5
LDggKzg5LDggQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgdW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlv
bkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JikgZmluYWw7CiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLSAgICBjb25zdCBMb2dnZXIm
IGxvZ2dlcigpIGNvbnN0IHsgcmV0dXJuIG1fbG9nZ2VyOyB9Ci0gICAgY29uc3Qgdm9pZCogbG9n
SWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fbG9nSWRlbnRpZmllcjsgfQorICAgIGNvbnN0
IExvZ2dlciYgbG9nZ2VyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9sb2dnZXI7IH0KKyAgICBj
b25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9sb2dJZGVu
dGlmaWVyOyB9CiAjZW5kaWYKIAogICAgIGJvb2wgbV91c2VEaXN0aW5jdGl2ZUlkZW50aWZpZXI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2Fj
eS9MZWdhY3lDRE0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9s
ZWdhY3kvTGVnYWN5Q0RNLmNwcAppbmRleCAxZjFiZWM3YzMzNDI0ZmUwODQyNzU0OGYwNzJjYzdk
ZmQxMmZkMGNlLi42OWU3NTliNDkxY2ZhZmM4YTBkOGRkZTZiZWIwMzQ4YWVkNjA4Y2QwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdh
Y3lDRE0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVn
YWN5L0xlZ2FjeUNETS5jcHAKQEAgLTEzMCw3ICsxMzAsNyBAQCBib29sIExlZ2FjeUNETTo6c3Vw
cG9ydHNNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKSBjb25zdAogCiBzdGQ6OnVuaXF1
ZV9wdHI8TGVnYWN5Q0RNU2Vzc2lvbj4gTGVnYWN5Q0RNOjpjcmVhdGVTZXNzaW9uKExlZ2FjeUNE
TVNlc3Npb25DbGllbnQmIGNsaWVudCkKIHsKLSAgICBhdXRvIHNlc3Npb24gPSBtX3ByaXZhdGUt
PmNyZWF0ZVNlc3Npb24oJmNsaWVudCk7CisgICAgYXV0byBzZXNzaW9uID0gbV9wcml2YXRlLT5j
cmVhdGVTZXNzaW9uKGNsaWVudCk7CiAgICAgaWYgKG1lZGlhUGxheWVyKCkpCiAgICAgICAgIG1l
ZGlhUGxheWVyKCktPnNldENETVNlc3Npb24oc2Vzc2lvbi5nZXQoKSk7CiAgICAgcmV0dXJuIHNl
c3Npb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L2xlZ2FjeS9MZWdhY3lDRE1Qcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1Qcml2YXRlLmgKaW5kZXggZjI0OTcwNzJlNzg1NzYw
YzU5ZTIzMDM5MzRmYjdmOWNjNDc3MmRmYi4uZTdkNGM0YjdjNTQwOGMwYjIyYThjMWJhZDM4ZWI3
ZGEzMGM4ZmQ0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9sZWdhY3kvTGVnYWN5Q0RNUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVByaXZhdGUuaApAQCAtNDIsNyArNDIs
NyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNNSU1FVHlwZShjb25zdCBT
dHJpbmcmKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxMZWdhY3lDRE1TZXNz
aW9uPiBjcmVhdGVTZXNzaW9uKExlZ2FjeUNETVNlc3Npb25DbGllbnQqKSA9IDA7CisgICAgdmly
dHVhbCBzdGQ6OnVuaXF1ZV9wdHI8TGVnYWN5Q0RNU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbihMZWdh
Y3lDRE1TZXNzaW9uQ2xpZW50JikgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kv
TGVnYWN5Q0RNUHJpdmF0ZUNsZWFyS2V5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVByaXZhdGVDbGVhcktleS5jcHAKaW5kZXggMTdk
NGZiNzI3NDBkNmUxYzNkZjZmZTZmNzY4NzViNGM5NGIyM2JiNy4uYjdhZmZjYTkxMzlhNzkwNGRl
MmM0OTg0MDdjOTc5MGYyMjNkZDQ3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNUHJpdmF0ZUNsZWFyS2V5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1Q
cml2YXRlQ2xlYXJLZXkuY3BwCkBAIC01OSw3ICs1OSw3IEBAIGJvb2wgTGVnYWN5Q0RNUHJpdmF0
ZUNsZWFyS2V5OjpzdXBwb3J0c01JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAgICAg
cmV0dXJuIE1lZGlhUGxheWVyOjpzdXBwb3J0c0tleVN5c3RlbShtX2NkbS0+a2V5U3lzdGVtKCks
IG1pbWVUeXBlKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNETVNlc3Npb24+IExlZ2Fj
eUNETVByaXZhdGVDbGVhcktleTo6Y3JlYXRlU2Vzc2lvbihMZWdhY3lDRE1TZXNzaW9uQ2xpZW50
KiBjbGllbnQpCitzdGQ6OnVuaXF1ZV9wdHI8TGVnYWN5Q0RNU2Vzc2lvbj4gTGVnYWN5Q0RNUHJp
dmF0ZUNsZWFyS2V5OjpjcmVhdGVTZXNzaW9uKExlZ2FjeUNETVNlc3Npb25DbGllbnQmIGNsaWVu
dCkKIHsKICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDRE1TZXNzaW9uQ2xlYXJLZXk+KGNsaWVudCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xl
Z2FjeS9MZWdhY3lDRE1Qcml2YXRlQ2xlYXJLZXkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVByaXZhdGVDbGVhcktleS5oCmluZGV4IDg3
NjQ2OGJhNDQ5N2VhNWJhOWFkYTNlMWViY2MyNWIyMTM5Yjk3ZDQuLjcxYjgyODJiNzE1MmJmOGI3
NzEyOGY4NGRlNzUyZDFiZWZlMWI2YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVByaXZhdGVDbGVhcktleS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVBy
aXZhdGVDbGVhcktleS5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9v
bCBzdXBwb3J0c0tleVN5c3RlbUFuZE1pbWVUeXBlKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKIAogICAgIGJvb2wgc3VwcG9ydHNNSU1FVHlwZShjb25z
dCBTdHJpbmcmIG1pbWVUeXBlKSBvdmVycmlkZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8TGVnYWN5
Q0RNU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbihMZWdhY3lDRE1TZXNzaW9uQ2xpZW50Kikgb3ZlcnJp
ZGU7CisgICAgc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNETVNlc3Npb24+IGNyZWF0ZVNlc3Npb24o
TGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCYpIG92ZXJyaWRlOwogCiBwcm90ZWN0ZWQ6CiAgICAgTGVn
YWN5Q0RNKiBtX2NkbTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVByaXZhdGVNZWRpYVBsYXllci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1Qcml2YXRlTWVk
aWFQbGF5ZXIuY3BwCmluZGV4IDM1MmVmYTg5MDMyMDM5Mjc5MWJhM2RkNzM0ZDdlYmU0ZjMyZmRi
MTguLjdmMmU3MTVmY2YzYTE0NTA0YWM2OWMwZDc4MWNjZjc4MmQ2MmZiMzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVBy
aXZhdGVNZWRpYVBsYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNUHJpdmF0ZU1lZGlhUGxheWVyLmNwcApAQCAtNTQsNyAr
NTQsNyBAQCBib29sIENETVByaXZhdGVNZWRpYVBsYXllcjo6c3VwcG9ydHNNSU1FVHlwZShjb25z
dCBTdHJpbmcmIG1pbWVUeXBlKQogICAgIHJldHVybiBNZWRpYVBsYXllcjo6c3VwcG9ydHNLZXlT
eXN0ZW0obV9jZG0tPmtleVN5c3RlbSgpLCBtaW1lVHlwZSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0
cjxMZWdhY3lDRE1TZXNzaW9uPiBDRE1Qcml2YXRlTWVkaWFQbGF5ZXI6OmNyZWF0ZVNlc3Npb24o
TGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCogY2xpZW50KQorc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNE
TVNlc3Npb24+IENETVByaXZhdGVNZWRpYVBsYXllcjo6Y3JlYXRlU2Vzc2lvbihMZWdhY3lDRE1T
ZXNzaW9uQ2xpZW50JiBjbGllbnQpCiB7CiAgICAgYXV0byBtZWRpYVBsYXllciA9IG1fY2RtLT5t
ZWRpYVBsYXllcigpOwogICAgIGlmICghbWVkaWFQbGF5ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1Qcml2YXRlTWVk
aWFQbGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5
L0xlZ2FjeUNETVByaXZhdGVNZWRpYVBsYXllci5oCmluZGV4IDY2MDJlYmZlOTA0NDVjNTU5M2M2
ZTVmZjhmMWE1YjJlMmRkOTJjMTcuLjVkYzNjMTEwYjA3NGU3NzUyM2YyYTBiOTY2ODg0Y2M0N2Rh
YTM5NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
bGVnYWN5L0xlZ2FjeUNETVByaXZhdGVNZWRpYVBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVByaXZhdGVNZWRpYVBsYXll
ci5oCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DRE1Qcml2YXRlTWVk
aWFQbGF5ZXIoKSA9IGRlZmF1bHQ7CiAKICAgICBib29sIHN1cHBvcnRzTUlNRVR5cGUoY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSkgb3ZlcnJpZGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNE
TVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCopIG92ZXJyaWRl
OworICAgIHN0ZDo6dW5pcXVlX3B0cjxMZWdhY3lDRE1TZXNzaW9uPiBjcmVhdGVTZXNzaW9uKExl
Z2FjeUNETVNlc3Npb25DbGllbnQmKSBvdmVycmlkZTsKIAogICAgIExlZ2FjeUNETSogY2RtKCkg
Y29uc3QgeyByZXR1cm4gbV9jZG07IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNU2Vzc2lvbkNsZWFyS2V5LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVNl
c3Npb25DbGVhcktleS5jcHAKaW5kZXggZGI2MmZlMDU2MDBmYjU0ZGIxNzc2NDgyMTNhMzMyYWMy
MTdiZWZiOS4uY2UyMWNiODI3MGVjZmZhN2IwNWQ3NDBiOTY3MzZkZDIzY2JmNDExNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5
Q0RNU2Vzc2lvbkNsZWFyS2V5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1TZXNzaW9uQ2xlYXJLZXkuY3BwCkBAIC00OSw3ICs0
OSw3IEBAIHN0YXRpYyBWTSYgY2xlYXJLZXlWTSgpCiAgICAgcmV0dXJuIHZtOwogfQogCi1DRE1T
ZXNzaW9uQ2xlYXJLZXk6OkNETVNlc3Npb25DbGVhcktleShMZWdhY3lDRE1TZXNzaW9uQ2xpZW50
KiBjbGllbnQpCitDRE1TZXNzaW9uQ2xlYXJLZXk6OkNETVNlc3Npb25DbGVhcktleShMZWdhY3lD
RE1TZXNzaW9uQ2xpZW50JiBjbGllbnQpCiAgICAgOiBtX2NsaWVudChjbGllbnQpCiAgICAgLCBt
X3Nlc3Npb25JZChjcmVhdGVWZXJzaW9uNFVVSURTdHJpbmcoKSkKIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVNlc3Np
b25DbGVhcktleS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdh
Y3kvTGVnYWN5Q0RNU2Vzc2lvbkNsZWFyS2V5LmgKaW5kZXggZmU1MzQ1OTFhZDdkNTYwMGM0MTlm
YWM3OTcwNGM0MWQ2NjcxYjQ5MC4uYTliNGQwYTM2M2VkNThiNGMwZDQyYTQzMmNlOTc4NGU3MWE3
MWEyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9s
ZWdhY3kvTGVnYWN5Q0RNU2Vzc2lvbkNsZWFyS2V5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNU2Vzc2lvbkNsZWFyS2V5LmgKQEAg
LTM2LDEyICszNiwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDRE1TZXNzaW9uQ2xl
YXJLZXkgZmluYWwgOiBwdWJsaWMgTGVnYWN5Q0RNU2Vzc2lvbiB7CiAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgQ0RNU2Vzc2lvbkNsZWFyS2V5KExlZ2FjeUNETVNl
c3Npb25DbGllbnQqKTsKKyAgICBDRE1TZXNzaW9uQ2xlYXJLZXkoTGVnYWN5Q0RNU2Vzc2lvbkNs
aWVudCYpOwogICAgIHZpcnR1YWwgfkNETVNlc3Npb25DbGVhcktleSgpOwogCiAgICAgLy8gQ0RN
U2Vzc2lvblByaXZhdGUKICAgICBMZWdhY3lDRE1TZXNzaW9uVHlwZSB0eXBlKCkgb3ZlcnJpZGUg
eyByZXR1cm4gQ0RNU2Vzc2lvblR5cGVDbGVhcktleTsgfQotICAgIHZvaWQgc2V0Q2xpZW50KExl
Z2FjeUNETVNlc3Npb25DbGllbnQqIGNsaWVudCkgb3ZlcnJpZGUgeyBtX2NsaWVudCA9IGNsaWVu
dDsgfQogICAgIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gbV9zZXNzaW9uSWQ7IH0KICAgICBSZWZQdHI8VWludDhBcnJheT4gZ2VuZXJhdGVLZXlSZXF1
ZXN0KGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFVpbnQ4QXJyYXkqLCBTdHJpbmcmLCB1bnNpZ25l
ZCBzaG9ydCYsIHVpbnQzMl90Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCByZWxlYXNlS2V5cygpIG92
ZXJyaWRlOwpAQCAtNDksNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgUmVmUHRyPEFycmF5QnVmZmVy
PiBjYWNoZWRLZXlGb3JLZXlJRChjb25zdCBTdHJpbmcmKSBjb25zdCBvdmVycmlkZTsKIAogcHJp
dmF0ZToKLSAgICBMZWdhY3lDRE1TZXNzaW9uQ2xpZW50KiBtX2NsaWVudDsKKyAgICBXZWFrUHRy
PExlZ2FjeUNETVNlc3Npb25DbGllbnQ+IG1fY2xpZW50OwogICAgIFJlZlB0cjxVaW50OEFycmF5
PiBtX2luaXREYXRhOwogICAgIEhhc2hNYXA8U3RyaW5nLCBWZWN0b3I8dWludDhfdD4+IG1fY2Fj
aGVkS2V5czsKICAgICBTdHJpbmcgbV9zZXNzaW9uSWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleVNlc3Npb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0
TWVkaWFLZXlTZXNzaW9uLmNwcAppbmRleCA5Yzk1ZDllYTEzZDJkOTFlNTViODQyNmE1ODcxZTQy
YTBjZmRmOWNiLi4wOTZjZTk2MzhhNzQ2NGQ0MDJiYWQ1ZDM2NzllNjk2MzMyMmU0MDg2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJL
aXRNZWRpYUtleVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5U2Vzc2lvbi5jcHAKQEAgLTMxLDYgKzMxLDcg
QEAKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkV2ZW50TG9vcC5oIgogI2luY2x1
ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUGFnZS5o
IgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luRGF0YS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgi
CkBAIC00MCwzOCArNDEsNDMgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9VaW50OEFycmF5
Lmg+CiAjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9j
SW5saW5lcy5oPgorI2luY2x1ZGUgPHd0Zi9Mb2dnZXJIZWxwZXIuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV2ViS2l0TWVkaWFLZXlTZXNz
aW9uKTsKIAotUmVmPFdlYktpdE1lZGlhS2V5U2Vzc2lvbj4gV2ViS2l0TWVkaWFLZXlTZXNzaW9u
OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgV2ViS2l0TWVkaWFLZXlz
JiBrZXlzLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSkKK1JlZjxXZWJLaXRNZWRpYUtleVNlc3Np
b24+IFdlYktpdE1lZGlhS2V5U2Vzc2lvbjo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgV2Vi
S2l0TWVkaWFLZXlzJiBrZXlzLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSkKIHsKLSAgICBhdXRv
IHNlc3Npb24gPSBhZG9wdFJlZigqbmV3IFdlYktpdE1lZGlhS2V5U2Vzc2lvbihjb250ZXh0LCBr
ZXlzLCBrZXlTeXN0ZW0pKTsKKyAgICBhdXRvIHNlc3Npb24gPSBhZG9wdFJlZigqbmV3IFdlYktp
dE1lZGlhS2V5U2Vzc2lvbihkb2N1bWVudCwga2V5cywga2V5U3lzdGVtKSk7CiAgICAgc2Vzc2lv
bi0+c3VzcGVuZElmTmVlZGVkKCk7CiAgICAgcmV0dXJuIHNlc3Npb247CiB9CiAKLVdlYktpdE1l
ZGlhS2V5U2Vzc2lvbjo6V2ViS2l0TWVkaWFLZXlTZXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQsIFdlYktpdE1lZGlhS2V5cyYga2V5cywgY29uc3QgU3RyaW5nJiBrZXlTeXN0
ZW0pCi0gICAgOiBBY3RpdmVET01PYmplY3QoJmNvbnRleHQpCitXZWJLaXRNZWRpYUtleVNlc3Np
b246OldlYktpdE1lZGlhS2V5U2Vzc2lvbihEb2N1bWVudCYgZG9jdW1lbnQsIFdlYktpdE1lZGlh
S2V5cyYga2V5cywgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pCisgICAgOiBBY3RpdmVET01PYmpl
Y3QoJmRvY3VtZW50KQorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgICwgbV9sb2dnZXIo
ZG9jdW1lbnQubG9nZ2VyKCkpCisgICAgLCBtX2xvZ0lkZW50aWZpZXIoTG9nZ2VySGVscGVyOjp1
bmlxdWVMb2dJZGVudGlmaWVyKCkpCisjZW5kaWYKICAgICAsIG1fa2V5cygma2V5cykKICAgICAs
IG1fa2V5U3lzdGVtKGtleVN5c3RlbSkKICAgICAsIG1fc2Vzc2lvbihrZXlzLmNkbSgpLmNyZWF0
ZVNlc3Npb24oKnRoaXMpKQogICAgICwgbV9rZXlSZXF1ZXN0VGltZXIoKnRoaXMsICZXZWJLaXRN
ZWRpYUtleVNlc3Npb246OmtleVJlcXVlc3RUaW1lckZpcmVkKQogICAgICwgbV9hZGRLZXlUaW1l
cigqdGhpcywgJldlYktpdE1lZGlhS2V5U2Vzc2lvbjo6YWRkS2V5VGltZXJGaXJlZCkKIHsKKyAg
ICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOwogICAgIGlmIChtX3Nlc3Npb24pCiAgICAgICAg
IG1fc2Vzc2lvbklkID0gbV9zZXNzaW9uLT5zZXNzaW9uSWQoKTsKIH0KIAogV2ViS2l0TWVkaWFL
ZXlTZXNzaW9uOjp+V2ViS2l0TWVkaWFLZXlTZXNzaW9uKCkKIHsKLSAgICBpZiAobV9zZXNzaW9u
KQotICAgICAgICBtX3Nlc3Npb24tPnNldENsaWVudChudWxscHRyKTsKKyAgICBBTFdBWVNfTE9H
KExPR0lERU5USUZJRVIpOwogfQotCiB2b2lkIFdlYktpdE1lZGlhS2V5U2Vzc2lvbjo6Y2xvc2Uo
KQogeworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CiAgICAgaWYgKG1fc2Vzc2lvbikg
ewogICAgICAgICBtX3Nlc3Npb24tPnJlbGVhc2VLZXlzKCk7CiAgICAgICAgIG1fc2Vzc2lvbiA9
IG51bGxwdHI7CkBAIC04NSw2ICs5MSw3IEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4gV2ViS2l0TWVk
aWFLZXlTZXNzaW9uOjpjYWNoZWRLZXlGb3JLZXlJZChjb25zdCBTdHJpbmcmIGtleUlkCiAKIHZv
aWQgV2ViS2l0TWVkaWFLZXlTZXNzaW9uOjpnZW5lcmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgUmVmPFVpbnQ4QXJyYXk+JiYgaW5pdERhdGEpCiB7CisgICAgQUxXQVlTX0xP
RyhMT0dJREVOVElGSUVSLCAibWltZVR5cGU6ICIsIG1pbWVUeXBlKTsKICAgICBtX3BlbmRpbmdL
ZXlSZXF1ZXN0cy5hcHBlbmQoeyBtaW1lVHlwZSwgV1RGTW92ZShpbml0RGF0YSkgfSk7CiAgICAg
bV9rZXlSZXF1ZXN0VGltZXIuc3RhcnRPbmVTaG90KDBfcyk7CiB9CkBAIC0xMzgsOSArMTQ1LDEy
IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFdlYktpdE1lZGlhS2V5U2Vzc2lvbjo6dXBkYXRlKFJlZjxV
aW50OEFycmF5PiYmIGtleSkKICAgICAvLyBUaGUgYWRkS2V5KGtleSkgbWV0aG9kIG11c3QgcnVu
IHRoZSBmb2xsb3dpbmcgc3RlcHM6CiAgICAgLy8gMS4gSWYgdGhlIGZpcnN0IG9yIHNlY29uZCBh
cmd1bWVudCBbc2ljXSBpcyBhbiBlbXB0eSBhcnJheSwgdGhyb3cgYW4gSW52YWxpZEFjY2Vzc0Vy
cm9yLgogICAgIC8vIE5PVEU6IHRoZSByZWZlcmVuY2UgdG8gYSAic2Vjb25kIGFyZ3VtZW50IiBp
cyBhIHNwZWMgYnVnLgotICAgIGlmICgha2V5LT5sZW5ndGgoKSkKKyAgICBpZiAoIWtleS0+bGVu
Z3RoKCkpIHsKKyAgICAgICAgRVJST1JfTE9HKExPR0lERU5USUZJRVIsICJlcnJvcjogZW1wdHkg
a2V5Iik7CiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkQWNjZXNzRXJyb3IgfTsK
KyAgICB9CiAKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOwogICAgIC8vIDIuIFNjaGVk
dWxlIGEgdGFzayB0byBoYW5kbGUgdGhlIGNhbGwsIHByb3ZpZGluZyBrZXkuCiAgICAgbV9wZW5k
aW5nS2V5cy5hcHBlbmQoV1RGTW92ZShrZXkpKTsKICAgICBtX2FkZEtleVRpbWVyLnN0YXJ0T25l
U2hvdCgwX3MpOwpAQCAtMjA0LDYgKzIxNCw3IEBAIHZvaWQgV2ViS2l0TWVkaWFLZXlTZXNzaW9u
OjphZGRLZXlUaW1lckZpcmVkKCkKIAogdm9pZCBXZWJLaXRNZWRpYUtleVNlc3Npb246OnNlbmRN
ZXNzYWdlKFVpbnQ4QXJyYXkqIG1lc3NhZ2UsIFN0cmluZyBkZXN0aW5hdGlvblVSTCkKIHsKKyAg
ICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOwogICAgIGF1dG8gZXZlbnQgPSBXZWJLaXRNZWRp
YUtleU1lc3NhZ2VFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS53ZWJraXRrZXltZXNzYWdlRXZl
bnQsIG1lc3NhZ2UsIGRlc3RpbmF0aW9uVVJMKTsKICAgICBldmVudC0+c2V0VGFyZ2V0KHRoaXMp
OwogICAgIHF1ZXVlVGFza1RvRGlzcGF0Y2hFdmVudCgqdGhpcywgVGFza1NvdXJjZTo6TmV0d29y
a2luZywgV1RGTW92ZShldmVudCkpOwpAQCAtMjExLDYgKzIyMiw3IEBAIHZvaWQgV2ViS2l0TWVk
aWFLZXlTZXNzaW9uOjpzZW5kTWVzc2FnZShVaW50OEFycmF5KiBtZXNzYWdlLCBTdHJpbmcgZGVz
dGluYXRpb25VCiAKIHZvaWQgV2ViS2l0TWVkaWFLZXlTZXNzaW9uOjpzZW5kRXJyb3IoTWVkaWFL
ZXlFcnJvckNvZGUgZXJyb3JDb2RlLCB1aW50MzJfdCBzeXN0ZW1Db2RlKQogeworICAgIEFMV0FZ
U19MT0coTE9HSURFTlRJRklFUiwgImVycm9yQ29kZTogIiwgKHVuc2lnbmVkKWVycm9yQ29kZSwg
Iiwgc3lzdGVtQ29kZTogIiwgc3lzdGVtQ29kZSk7CiAgICAgbV9lcnJvciA9IFdlYktpdE1lZGlh
S2V5RXJyb3I6OmNyZWF0ZShlcnJvckNvZGUsIHN5c3RlbUNvZGUpOwogCiAgICAgYXV0byBrZXll
cnJvckV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkud2Via2l0a2V5ZXJyb3JFdmVu
dCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKTsKQEAgLTI1
MCw2ICsyNjIsMTMgQEAgY29uc3QgY2hhciogV2ViS2l0TWVkaWFLZXlTZXNzaW9uOjphY3RpdmVE
T01PYmplY3ROYW1lKCkgY29uc3QKICAgICByZXR1cm4gIldlYktpdE1lZGlhS2V5U2Vzc2lvbiI7
CiB9CiAKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKK1dURkxvZ0NoYW5uZWwmIFdlYktpdE1l
ZGlhS2V5U2Vzc2lvbjo6bG9nQ2hhbm5lbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIExvZ0VNRTsK
K30KKyNlbmRpZgorCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleVNl
c3Npb24uaAppbmRleCBmZjNmNmJmN2I4YmIzYWZkOTliZTY2MTBkMGRhNmM0Y2Q4OTllMDk1Li40
ZTc5MmY2M2Y2MWU0YzQyZGM4YTQyYWMyMTRiZGFiNzQwMDYyZWYyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleVNl
c3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2Fj
eS9XZWJLaXRNZWRpYUtleVNlc3Npb24uaApAQCAtNDMsNyArNDMsNyBAQCBjbGFzcyBXZWJLaXRN
ZWRpYUtleXM7CiBjbGFzcyBXZWJLaXRNZWRpYUtleVNlc3Npb24gZmluYWwgOiBwdWJsaWMgUmVm
Q291bnRlZDxXZWJLaXRNZWRpYUtleVNlc3Npb24+LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5s
aW5lRGF0YSwgcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHJpdmF0ZSBMZWdhY3lDRE1TZXNzaW9u
Q2xpZW50IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFdlYktpdE1lZGlhS2V5U2Vzc2lv
bik7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJLaXRNZWRpYUtleVNlc3Npb24+IGNyZWF0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgV2ViS2l0TWVkaWFLZXlzJiwgY29uc3QgU3RyaW5n
JiBrZXlTeXN0ZW0pOworICAgIHN0YXRpYyBSZWY8V2ViS2l0TWVkaWFLZXlTZXNzaW9uPiBjcmVh
dGUoRG9jdW1lbnQmLCBXZWJLaXRNZWRpYUtleXMmLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSk7
CiAgICAgfldlYktpdE1lZGlhS2V5U2Vzc2lvbigpOwogCiAgICAgV2ViS2l0TWVkaWFLZXlFcnJv
ciogZXJyb3IoKSB7IHJldHVybiBtX2Vycm9yLmdldCgpOyB9CkBAIC02Myw3ICs2Myw3IEBAIHB1
YmxpYzoKICAgICB1c2luZyBSZWZDb3VudGVkOjpkZXJlZjsKIAogcHJpdmF0ZToKLSAgICBXZWJL
aXRNZWRpYUtleVNlc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFdlYktpdE1lZGlhS2V5
cyYsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKTsKKyAgICBXZWJLaXRNZWRpYUtleVNlc3Npb24o
RG9jdW1lbnQmLCBXZWJLaXRNZWRpYUtleXMmLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSk7CiAg
ICAgdm9pZCBrZXlSZXF1ZXN0VGltZXJGaXJlZCgpOwogICAgIHZvaWQgYWRkS2V5VGltZXJGaXJl
ZCgpOwogCkBAIC04Miw2ICs4MiwxNiBAQCBwcml2YXRlOgogICAgIEV2ZW50VGFyZ2V0SW50ZXJm
YWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gV2ViS2l0TWVk
aWFLZXlTZXNzaW9uRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9CiAgICAgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CiAKKyNpZiAhUkVM
RUFTRV9MT0dfRElTQUJMRUQKKyAgICBjb25zdCBMb2dnZXImIGxvZ2dlcigpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIG1fbG9nZ2VyOyB9CisgICAgY29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcigpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIG1fbG9nSWRlbnRpZmllcjsgfQorICAgIGNvbnN0IGNoYXIqIGxv
Z0NsYXNzTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJXZWJLaXRNZWRpYUtleVNlc3Npb24iOyB9Cisg
ICAgV1RGTG9nQ2hhbm5lbCYgbG9nQ2hhbm5lbCgpIGNvbnN0OworCisgICAgUmVmPExvZ2dlcj4g
bV9sb2dnZXI7CisgICAgY29uc3Qgdm9pZCogbV9sb2dJZGVudGlmaWVyOworI2VuZGlmCisKICAg
ICBXZWJLaXRNZWRpYUtleXMqIG1fa2V5czsKICAgICBTdHJpbmcgbV9rZXlTeXN0ZW07CiAgICAg
U3RyaW5nIG1fc2Vzc2lvbklkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5cy5jcHAKaW5kZXgg
MTgxYTgzOTQyYjA0MGM3MmMyOWRjZWFmMzRhZjM2ZjQzN2RlZTY1Zi4uNzBkYjExYzQ3NGU4MDE3
YWFiNzRiYjk2NTE0YzllYzM1NDI0OTIxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleXMu
Y3BwCkBAIC03NCw3ICs3NCw3IEBAIFdlYktpdE1lZGlhS2V5czo6fldlYktpdE1lZGlhS2V5cygp
CiAgICAgfQogfQogCi1FeGNlcHRpb25PcjxSZWY8V2ViS2l0TWVkaWFLZXlTZXNzaW9uPj4gV2Vi
S2l0TWVkaWFLZXlzOjpjcmVhdGVTZXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFVpbnQ4QXJyYXk+JiYgaW5pdERhdGEpCitFeGNl
cHRpb25PcjxSZWY8V2ViS2l0TWVkaWFLZXlTZXNzaW9uPj4gV2ViS2l0TWVkaWFLZXlzOjpjcmVh
dGVTZXNzaW9uKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8VWlu
dDhBcnJheT4mJiBpbml0RGF0YSkKIHsKICAgICAvLyBGcm9tIDxodHRwOi8vd3d3LnczLm9yZy9U
Ui8yMDE0L1dELWVuY3J5cHRlZC1tZWRpYS0yMDE0MDIxOC8jZG9tLWNyZWF0ZXNlc3Npb24+Ogog
ICAgIC8vIFRoZSBjcmVhdGVTZXNzaW9uKHR5cGUsIGluaXREYXRhKSBtZXRob2QgbXVzdCBydW4g
dGhlIGZvbGxvd2luZyBzdGVwczoKQEAgLTk2LDcgKzk2LDcgQEAgRXhjZXB0aW9uT3I8UmVmPFdl
YktpdE1lZGlhS2V5U2Vzc2lvbj4+IFdlYktpdE1lZGlhS2V5czo6Y3JlYXRlU2Vzc2lvbihTY3Jp
cHRFeGUKICAgICAvLyA0LiBDcmVhdGUgYSBuZXcgTWVkaWFLZXlTZXNzaW9uIG9iamVjdC4KICAg
ICAvLyA0LjEgTGV0IHRoZSBrZXlTeXN0ZW0gYXR0cmlidXRlIGJlIGtleVN5c3RlbS4KICAgICAv
LyA0LjIgTGV0IHRoZSBzZXNzaW9uSWQgYXR0cmlidXRlIGJlIGEgdW5pcXVlIFNlc3Npb24gSUQg
c3RyaW5nLiBJdCBtYXkgYmUgZ2VuZXJhdGVkIGJ5IGNkbS4KLSAgICBhdXRvIHNlc3Npb24gPSBX
ZWJLaXRNZWRpYUtleVNlc3Npb246OmNyZWF0ZShjb250ZXh0LCAqdGhpcywgbV9rZXlTeXN0ZW0p
OworICAgIGF1dG8gc2Vzc2lvbiA9IFdlYktpdE1lZGlhS2V5U2Vzc2lvbjo6Y3JlYXRlKGRvY3Vt
ZW50LCAqdGhpcywgbV9rZXlTeXN0ZW0pOwogCiAgICAgbV9zZXNzaW9ucy5hcHBlbmQoc2Vzc2lv
bi5jb3B5UmVmKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleXMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5cy5oCmluZGV4IDJkMGMxZDAz
ZjU0Mjg5NzhiMTgwNWM2NGVkOTAxNDliODcwYzM2YmQuLjQ0NjkzNzQ4NmEyMDljNGY4MWQ2ZWE0
MjQwYTRkY2Q3OGU3MWExYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5cy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5cy5oCkBAIC0zNSw4
ICszNSw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgRG9jdW1lbnQ7CiBjbGFz
cyBIVE1MTWVkaWFFbGVtZW50OwotY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIGNsYXNz
IFdlYktpdE1lZGlhS2V5U2Vzc2lvbjsKIAogY2xhc3MgV2ViS2l0TWVkaWFLZXlzIGZpbmFsIDog
cHVibGljIFJlZkNvdW50ZWQ8V2ViS2l0TWVkaWFLZXlzPiwgcHJpdmF0ZSBMZWdhY3lDRE1DbGll
bnQgewpAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJl
ZjxXZWJLaXRNZWRpYUtleXM+PiBjcmVhdGUoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pOwogICAg
IHZpcnR1YWwgfldlYktpdE1lZGlhS2V5cygpOwogCi0gICAgRXhjZXB0aW9uT3I8UmVmPFdlYktp
dE1lZGlhS2V5U2Vzc2lvbj4+IGNyZWF0ZVNlc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYs
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFJlZjxVaW50OEFycmF5PiYmIGluaXREYXRhKTsKKyAg
ICBFeGNlcHRpb25PcjxSZWY8V2ViS2l0TWVkaWFLZXlTZXNzaW9uPj4gY3JlYXRlU2Vzc2lvbihE
b2N1bWVudCYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFJlZjxVaW50OEFycmF5PiYmIGluaXRE
YXRhKTsKICAgICBzdGF0aWMgYm9vbCBpc1R5cGVTdXBwb3J0ZWQoY29uc3QgU3RyaW5nJiBrZXlT
eXN0ZW0sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwogICAgIGNvbnN0IFN0cmluZyYga2V5U3lz
dGVtKCkgY29uc3QgeyByZXR1cm4gbV9rZXlTeXN0ZW07IH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNRmFjdG9yeS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNRmFjdG9yeS5oCmluZGV4IDJkMmM0MzY0
NWIzZjdkYTM3YzkxMTc1Zjk4NjZjMmNkZDVjYmU2MzQuLjliN2MzMDliMDNmY2ZkNmEwZDFiZWI4
N2I3NzdmMWVmM2U5YzdjNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Vu
Y3J5cHRlZG1lZGlhL0NETUZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
bmNyeXB0ZWRtZWRpYS9DRE1GYWN0b3J5LmgKQEAgLTQxLDExICs0MSwxMiBAQCBjbGFzcyBMb2dn
ZXI7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENETVByaXZhdGU7CitjbGFzcyBDRE1Q
cml2YXRlQ2xpZW50OwogCiBjbGFzcyBDRE1GYWN0b3J5IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFs
IH5DRE1GYWN0b3J5KCkgeyB9OwotICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPENETVByaXZh
dGU+IGNyZWF0ZUNETShjb25zdCBTdHJpbmcmKSA9IDA7CisgICAgdmlydHVhbCBzdGQ6OnVuaXF1
ZV9wdHI8Q0RNUHJpdmF0ZT4gY3JlYXRlQ0RNKGNvbnN0IFN0cmluZyYsIGNvbnN0IENETVByaXZh
dGVDbGllbnQmKSA9IDA7CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0
IFN0cmluZyYpID0gMDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBWZWN0b3I8Q0RNRmFj
dG9yeSo+JiByZWdpc3RlcmVkRmFjdG9yaWVzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2UuaAppbmRleCAyZGU0MTkzNGRhMTk4
NzlkNzVjMGRmOGE4OWU2NGU1OTljMjlhZTAzLi4zYzY3NDlkMWY3MmZkMTUyNTRhOTdkNDdkYTBk
MDliYzJkOGQ4Njc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9DRE1JbnN0YW5jZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL0NETUluc3RhbmNlLmgKQEAgLTU1LDYgKzU1LDExIEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIH5DRE1JbnN0YW5jZUNsaWVudCgpID0gZGVmYXVsdDsKIAogICAgIHZpcnR1YWwgdm9p
ZCB1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYsIFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSA9IDA7CisKKyNpZiAhUkVMRUFTRV9MT0dfRElT
QUJMRUQKKyAgICB2aXJ0dWFsIGNvbnN0IExvZ2dlciYgbG9nZ2VyKCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgY29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcigpIGNvbnN0ID0gMDsKKyNlbmRpZgog
fTsKIAogLy8gSmF2YVNjcmlwdCdzIGhhbmRsZSB0byBhIENETUluc3RhbmNlLCBtdXN0IGJlIHVz
ZWQgZnJvbSB0aGUKQEAgLTY3LDcgKzcyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBj
bGVhckNsaWVudCgpIHsgfQogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgdmlydHVh
bCB2b2lkIHNldExvZ2dlcihMb2dnZXImLCBjb25zdCB2b2lkKikgeyB9CisgICAgdmlydHVhbCB2
b2lkIHNldExvZ0lkZW50aWZpZXIoY29uc3Qgdm9pZCopIHsgfQogI2VuZGlmCiAKICAgICBlbnVt
IGNsYXNzIEltcGxlbWVudGF0aW9uVHlwZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZVNlc3Npb24uaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5oCmluZGV4IGQy
NTkyMjViYTllMDJhNjRkMGNlY2Q2MTUxZmRmOTNmNGYyNDY2YTguLjcxOTczZmE4NmQzMzQxYjVi
YzRjYjExNGVkZDFkNDgwZmUzOGY2MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5oCkBAIC02Nyw3
ICs2Nyw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBNZXNzYWdlVHlwZSA9IENETU1lc3NhZ2VUeXBl
OwogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgdmlydHVhbCB2b2lkIHNldExvZ2dl
cihMb2dnZXImLCBjb25zdCB2b2lkKikgeyB9CisgICAgdmlydHVhbCB2b2lkIHNldExvZ0lkZW50
aWZpZXIoY29uc3Qgdm9pZCopIHsgfQogI2VuZGlmCiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q2xp
ZW50KFdlYWtQdHI8Q0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50PiYmKSB7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaAppbmRleCA1
MmE2MTQ4YzgzY2Q1MzkzYzhmODc0ZWQ4NWFkOGJmMjdlNWJlNTBmLi40NTExNjgzMTVjYmE0YTk0
ZGVhZWM0NDhjMzYzNDI5ODYxNGE2NWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5oCkBAIC00NSwxMiArNDUsMjEgQEAgc3Ry
dWN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb247CiBzdHJ1Y3QgQ0RNTWVkaWFDYXBhYmlsaXR5
Owogc3RydWN0IENETVJlc3RyaWN0aW9uczsKIAorY2xhc3MgQ0RNUHJpdmF0ZUNsaWVudCB7Citw
dWJsaWM6CisgICAgdmlydHVhbCB+Q0RNUHJpdmF0ZUNsaWVudCgpID0gZGVmYXVsdDsKKworI2lm
ICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIHZpcnR1YWwgY29uc3QgTG9nZ2VyJiBsb2dnZXIo
KSBjb25zdCA9IDA7CisjZW5kaWYKK307CisKIGNsYXNzIENETVByaXZhdGUgOiBwdWJsaWMgQ2Fu
TWFrZVdlYWtQdHI8Q0RNUHJpdmF0ZT4gewogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZp
cnR1YWwgfkNETVByaXZhdGUoKTsKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAotICAgIHZp
cnR1YWwgdm9pZCBzZXRMb2dnZXIoTG9nZ2VyJiwgY29uc3Qgdm9pZCopIHsgfTsKKyAgICB2aXJ0
dWFsIHZvaWQgc2V0TG9nSWRlbnRpZmllcihjb25zdCB2b2lkKikgeyB9OwogI2VuZGlmCiAKICAg
ICBlbnVtIGNsYXNzIExvY2FsU3RvcmFnZUFjY2VzcyA6IGJvb2wgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXku
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RN
Q2xlYXJLZXkuY3BwCmluZGV4IDMxYTlmZGZhMDJkNmQwMGNhMjYxODI1MmRlZDkzNTMxM2RjNThh
YTkuLjE4ZDc4ZjcxYjVkYmMxNTIzOTI3MmE4MmVlZTI4Njc5OTI4NGE5MGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFy
S2V5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVh
cmtleS9DRE1DbGVhcktleS5jcHAKQEAgLTI2NCw3ICsyNjQsNyBAQCBDRE1GYWN0b3J5Q2xlYXJL
ZXkmIENETUZhY3RvcnlDbGVhcktleTo6c2luZ2xldG9uKCkKIENETUZhY3RvcnlDbGVhcktleTo6
Q0RNRmFjdG9yeUNsZWFyS2V5KCkgPSBkZWZhdWx0OwogQ0RNRmFjdG9yeUNsZWFyS2V5Ojp+Q0RN
RmFjdG9yeUNsZWFyS2V5KCkgPSBkZWZhdWx0OwogCi1zdGQ6OnVuaXF1ZV9wdHI8Q0RNUHJpdmF0
ZT4gQ0RNRmFjdG9yeUNsZWFyS2V5OjpjcmVhdGVDRE0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0p
CitzdGQ6OnVuaXF1ZV9wdHI8Q0RNUHJpdmF0ZT4gQ0RNRmFjdG9yeUNsZWFyS2V5OjpjcmVhdGVD
RE0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IENETVByaXZhdGVDbGllbnQmKQogewog
I2lmZGVmIE5ERUJVRwogICAgIFVOVVNFRF9QQVJBTShrZXlTeXN0ZW0pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJL
ZXkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NE
TUNsZWFyS2V5LmgKaW5kZXggOWUyN2ZlOTEyYzRkYTA2N2ZiMjZjYWZiYzdmNmE2NTFkYTQ3NTI4
Yi4uY2Q3OTdjNjFjN2IxNDE2YTNiMzQ0YTVlYjdjMzQzNjJiNDkwMTkzNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJL
ZXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtl
eS9DRE1DbGVhcktleS5oCkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwg
fkNETUZhY3RvcnlDbGVhcktleSgpOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPENETVByaXZhdGU+
IGNyZWF0ZUNETShjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q0RN
UHJpdmF0ZT4gY3JlYXRlQ0RNKGNvbnN0IFN0cmluZyYsIGNvbnN0IENETVByaXZhdGVDbGllbnQm
KSBmaW5hbDsKICAgICBib29sIHN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYpIGZpbmFs
OwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTGVnYWN5Q0RNU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TGVnYWN5Q0RNU2Vzc2lvbi5oCmluZGV4IGY4NDRmNGY5ODY5YWQwNzMyNmUyYmFhZDI2ZWFmOWRl
N2E1OWY1YmIuLmI5MTcxYmEyZTY2YWMyNTliNjMzYTJkMWEwNmE2MzlmNDAxYzkxYTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xlZ2FjeUNETVNlc3Npb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MZWdhY3lDRE1TZXNzaW9u
LmgKQEAgLTI5LDEwICsyOSwxMSBAQAogCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRm9yd2Fy
ZC5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBMZWdhY3lDRE1TZXNzaW9uQ2xpZW50IHsK
K2NsYXNzIExlZ2FjeUNETVNlc3Npb25DbGllbnQgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8TGVn
YWN5Q0RNU2Vzc2lvbkNsaWVudD4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIHZpcnR1YWwgfkxlZ2FjeUNETVNlc3Npb25DbGllbnQoKSA9IGRlZmF1bHQ7CkBA
IC01MCw2ICs1MSwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNlbmRFcnJvcihNZWRp
YUtleUVycm9yQ29kZSwgdWludDMyX3Qgc3lzdGVtQ29kZSkgPSAwOwogCiAgICAgdmlydHVhbCBT
dHJpbmcgbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0ID0gMDsKKworI2lmICFSRUxF
QVNFX0xPR19ESVNBQkxFRAorICAgIHZpcnR1YWwgY29uc3QgTG9nZ2VyJiBsb2dnZXIoKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKCkgY29uc3QgPSAw
OworI2VuZGlmCiB9OwogCiBlbnVtIExlZ2FjeUNETVNlc3Npb25UeXBlIHsKQEAgLTY2LDcgKzcy
LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkxlZ2FjeUNETVNlc3Npb24oKSA9IGRlZmF1bHQ7
CiAKICAgICB2aXJ0dWFsIExlZ2FjeUNETVNlc3Npb25UeXBlIHR5cGUoKSB7IHJldHVybiBDRE1T
ZXNzaW9uVHlwZVVua25vd247IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q2xpZW50KExlZ2FjeUNE
TVNlc3Npb25DbGllbnQqKSA9IDA7CiAgICAgdmlydHVhbCBjb25zdCBTdHJpbmcmIHNlc3Npb25J
ZCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFJlZlB0cjxVaW50OEFycmF5PiBnZW5lcmF0ZUtl
eVJlcXVlc3QoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgVWludDhBcnJheSogaW5pdERhdGEsIFN0
cmluZyYgZGVzdGluYXRpb25VUkwsIHVuc2lnbmVkIHNob3J0JiBlcnJvckNvZGUsIHVpbnQzMl90
JiBzeXN0ZW1Db2RlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlbGVhc2VLZXlzKCkgPSAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmlu
ZGV4IGZkYTVhZDFkOTA3MGNjZjRjNjA4ZWRhYjEyYWY5MGI5NmU4NmY0MjcuLmMzOTQ1YjM2ODBh
NTRlODU5MGUyYTk5OTZlNGUwODA5MWJiYTg3NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTY5Miw3ICs2OTIsNyBAQCB2b2lk
IE1lZGlhUGxheWVyOjpzZXRCdWZmZXJpbmdQb2xpY3koQnVmZmVyaW5nUG9saWN5IHBvbGljeSkK
IAogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQogCi1zdGQ6OnVuaXF1ZV9wdHI8
TGVnYWN5Q0RNU2Vzc2lvbj4gTWVkaWFQbGF5ZXI6OmNyZWF0ZVNlc3Npb24oY29uc3QgU3RyaW5n
JiBrZXlTeXN0ZW0sIExlZ2FjeUNETVNlc3Npb25DbGllbnQqIGNsaWVudCkKK3N0ZDo6dW5pcXVl
X3B0cjxMZWdhY3lDRE1TZXNzaW9uPiBNZWRpYVBsYXllcjo6Y3JlYXRlU2Vzc2lvbihjb25zdCBT
dHJpbmcmIGtleVN5c3RlbSwgTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCYgY2xpZW50KQogewogICAg
IHJldHVybiBtX3ByaXZhdGUtPmNyZWF0ZVNlc3Npb24oa2V5U3lzdGVtLCBjbGllbnQpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKaW5kZXgg
YTE3ZTVlZTZkN2Q1MDdkZjVhYTgwZTc2YTlmZmI1MzUxMzVjNzBlNy4uNTkyMGIzMzU3ZTZlZjRj
MTQ3MzA5NjYyZmVjZmI5MTJjOTQ5MTY1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXllci5oCkBAIC0zODEsNyArMzgxLDcgQEAgcHVibGljOgogICAg
IC8vIFRoaXMgaXMgZGlmZmVyZW50IGZyb20gdGhlIGFzeW5jaHJvbm91cyBNZWRpYUtleUVycm9y
LgogICAgIGVudW0gTWVkaWFLZXlFeGNlcHRpb24geyBOb0Vycm9yLCBJbnZhbGlkUGxheWVyU3Rh
dGUsIEtleVN5c3RlbU5vdFN1cHBvcnRlZCB9OwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPExlZ2Fj
eUNETVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIExlZ2Fj
eUNETVNlc3Npb25DbGllbnQqKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TGVnYWN5Q0RNU2Vzc2lv
bj4gY3JlYXRlU2Vzc2lvbihjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgTGVnYWN5Q0RNU2Vzc2lv
bkNsaWVudCYpOwogICAgIHZvaWQgc2V0Q0RNKExlZ2FjeUNETSopOwogICAgIHZvaWQgc2V0Q0RN
U2Vzc2lvbihMZWdhY3lDRE1TZXNzaW9uKik7CiAgICAgdm9pZCBrZXlBZGRlZCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUu
aAppbmRleCA4MDliZTE2NTMzMjI3MjA3NjRmYTA4MTZjODM4OGRjMzJiNTgxZDZhLi41OTJmYjlh
MThkNjZjM2MxNzcwMDMzMjhjYTZlODU5NjUxOTgzYzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaApAQCAtMjQ2LDcg
KzI0Niw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURf
TUVESUEpCi0gICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8TGVnYWN5Q0RNU2Vzc2lvbj4gY3Jl
YXRlU2Vzc2lvbihjb25zdCBTdHJpbmcmLCBMZWdhY3lDRE1TZXNzaW9uQ2xpZW50KikgeyByZXR1
cm4gbnVsbHB0cjsgfQorICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNETVNlc3Np
b24+IGNyZWF0ZVNlc3Npb24oY29uc3QgU3RyaW5nJiwgTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCYp
IHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0Q0RNKExlZ2FjeUNETSop
IHsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRDRE1TZXNzaW9uKExlZ2FjeUNETVNlc3Npb24qKSB7
IH0KICAgICB2aXJ0dWFsIHZvaWQga2V5QWRkZWQoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWlu
Zy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RN
RmFpclBsYXlTdHJlYW1pbmcuY3BwCmluZGV4IGM1NDYxNDYyM2I4N2VjMDg5NjFmMWQ0NDIwZjk2
MDFmMTZhNmFiNGQuLjYyMTI5ZDIyZWE5MTkwNWI0Mjg0YmQzOTIwMzRkNzlmNzEwYmFlYjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9D
RE1GYWlyUGxheVN0cmVhbWluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcApAQCAtMjgsNiArMjgs
NyBAQAogCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKIAorI2luY2x1ZGUgIkNETS5oIgog
I2luY2x1ZGUgIkNETUNsZWFyS2V5LmgiCiAjaW5jbHVkZSAiQ0RNS2V5U3lzdGVtQ29uZmlndXJh
dGlvbi5oIgogI2luY2x1ZGUgIkNETVJlc3RyaWN0aW9ucy5oIgpAQCAtMjM3LDEyICsyMzgsMTIg
QEAgQ0RNRmFjdG9yeUZhaXJQbGF5U3RyZWFtaW5nJiBDRE1GYWN0b3J5RmFpclBsYXlTdHJlYW1p
bmc6OnNpbmdsZXRvbigpCiBDRE1GYWN0b3J5RmFpclBsYXlTdHJlYW1pbmc6OkNETUZhY3RvcnlG
YWlyUGxheVN0cmVhbWluZygpID0gZGVmYXVsdDsKIENETUZhY3RvcnlGYWlyUGxheVN0cmVhbWlu
Zzo6fkNETUZhY3RvcnlGYWlyUGxheVN0cmVhbWluZygpID0gZGVmYXVsdDsKIAotc3RkOjp1bmlx
dWVfcHRyPENETVByaXZhdGU+IENETUZhY3RvcnlGYWlyUGxheVN0cmVhbWluZzo6Y3JlYXRlQ0RN
KGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKQorc3RkOjp1bmlxdWVfcHRyPENETVByaXZhdGU+IENE
TUZhY3RvcnlGYWlyUGxheVN0cmVhbWluZzo6Y3JlYXRlQ0RNKGNvbnN0IFN0cmluZyYga2V5U3lz
dGVtLCBjb25zdCBDRE1Qcml2YXRlQ2xpZW50JiBjbGllbnQpCiB7CiAgICAgaWYgKCFzdXBwb3J0
c0tleVN5c3RlbShrZXlTeXN0ZW0pKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJl
dHVybiBtYWtlVW5pcXVlPENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZz4oKTsKKyAgICByZXR1
cm4gbWFrZVVuaXF1ZTxDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc+KGNsaWVudCk7CiB9CiAK
IGJvb2wgQ0RNRmFjdG9yeUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0c0tleVN5c3RlbShjb25z
dCBTdHJpbmcmIGtleVN5c3RlbSkKQEAgLTI1MiwxNiArMjUzLDE0IEBAIGJvb2wgQ0RNRmFjdG9y
eUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmIGtleVN5
c3RlbSkKICAgICByZXR1cm4ga2V5U3lzdGVtID09ICJjb20uYXBwbGUuZnBzIiB8fCBrZXlTeXN0
ZW0uc3RhcnRzV2l0aCgiY29tLmFwcGxlLmZwcy4iX3MpOwogfQogCi1DRE1Qcml2YXRlRmFpclBs
YXlTdHJlYW1pbmc6OkNETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZygpID0gZGVmYXVsdDsKLUNE
TVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6fkNETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZygp
ID0gZGVmYXVsdDsKLQorQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpDRE1Qcml2YXRlRmFp
clBsYXlTdHJlYW1pbmcoY29uc3QgQ0RNUHJpdmF0ZUNsaWVudCYgY2xpZW50KQogI2lmICFSRUxF
QVNFX0xPR19ESVNBQkxFRAotdm9pZCBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNldExv
Z2dlcihMb2dnZXImIGxvZ2dlciwgY29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcikKKyAgICA6IG1f
bG9nZ2VyKGNsaWVudC5sb2dnZXIoKSkKKyNlbmRpZgogewotICAgIG1fbG9nZ2VyID0gJmxvZ2dl
cjsKLSAgICBtX2xvZ0lkZW50aWZpZXIgPSBsb2dJZGVudGlmaWVyOwogfQotI2VuZGlmCisKK0NE
TVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6fkNETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZygp
ID0gZGVmYXVsdDsKIAogVmVjdG9yPEF0b21TdHJpbmc+IENETVByaXZhdGVGYWlyUGxheVN0cmVh
bWluZzo6c3VwcG9ydGVkSW5pdERhdGFUeXBlcygpIGNvbnN0CiB7CkBAIC0yNzEsMjYgKzI3MCwy
NiBAQCBWZWN0b3I8QXRvbVN0cmluZz4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBw
b3J0ZWRJbml0RGF0YVR5cGVzKCkgY29uc3QKIGJvb2wgQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFt
aW5nOjpzdXBwb3J0c0NvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlv
biYgY29uZmlndXJhdGlvbikgY29uc3QKIHsKICAgICBpZiAoIVdURjo6YW55T2YoY29uZmlndXJh
dGlvbi5pbml0RGF0YVR5cGVzLCBbXSAoYXV0byYgaW5pdERhdGFUeXBlKSB7IHJldHVybiB2YWxp
ZEluaXREYXRhVHlwZXMoKS5jb250YWlucyhpbml0RGF0YVR5cGUpOyB9KSkgewotICAgICAgICBE
RUJVR19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwgIiBmYWxzZSwgbm8gaW5pdERhdGFU
eXBlIHN1cHBvcnRlZCIpOworICAgICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAiIGZhbHNl
LCBubyBpbml0RGF0YVR5cGUgc3VwcG9ydGVkIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAKICNpZiBIQVZFKEFWQ09OVEVOVEtFWVNFU1NJT04pCiAgICAgLy8gRklYTUU6IHZlcmlm
eSB0aGF0IEZhaXJQbGF5U3RyZWFtaW5nIGRvZXMgbm90IChhbmQgY2Fubm90KSBleHBvc2UgYSBk
aXN0aW5jdGl2ZSBpZGVudGlmaWVyIHRvIHRoZSBjbGllbnQKICAgICBpZiAoY29uZmlndXJhdGlv
bi5kaXN0aW5jdGl2ZUlkZW50aWZpZXIgPT0gQ0RNUmVxdWlyZW1lbnQ6OlJlcXVpcmVkKSB7Ci0g
ICAgICAgIERFQlVHX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAiZmFsc2UsIHJlcXVy
aWVkIGRpc3RpbmN0aXZlSWRlbnRpZmllciBub3Qgc3VwcG9ydGVkIik7CisgICAgICAgIElORk9f
TE9HKExPR0lERU5USUZJRVIsICJmYWxzZSwgcmVxdXJpZWQgZGlzdGluY3RpdmVJZGVudGlmaWVy
IG5vdCBzdXBwb3J0ZWQiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGlm
IChjb25maWd1cmF0aW9uLnBlcnNpc3RlbnRTdGF0ZSA9PSBDRE1SZXF1aXJlbWVudDo6UmVxdWly
ZWQgJiYgIUNETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpzdXBwb3J0c1BlcnNp
c3RhYmxlU3RhdGUoKSkgewotICAgICAgICBERUJVR19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJ
RklFUiwgImZhbHNlLCByZXF1aXJlZCBwZXJzaXN0ZW50U3RhdGUgbm90IHN1cHBvcnRlZCIpOwor
ICAgICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAiZmFsc2UsIHJlcXVpcmVkIHBlcnNpc3Rl
bnRTdGF0ZSBub3Qgc3VwcG9ydGVkIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAK
ICAgICBpZiAoY29uZmlndXJhdGlvbi5zZXNzaW9uVHlwZXMuY29udGFpbnMoQ0RNU2Vzc2lvblR5
cGU6OlBlcnNpc3RlbnRMaWNlbnNlKQogICAgICAgICAmJiAhY29uZmlndXJhdGlvbi5zZXNzaW9u
VHlwZXMuY29udGFpbnMoQ0RNU2Vzc2lvblR5cGU6OlRlbXBvcmFyeSkKICAgICAgICAgJiYgIUNE
TUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpzdXBwb3J0c1BlcnNpc3RlbnRLZXlz
KCkpIHsKLSAgICAgICAgREVCVUdfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIsICJmYWxz
ZSwgc2Vzc2lvblR5cGUgUGVyc2lzdGVudExpY2Vuc2Ugbm90IHN1cHBvcnRlZCIpOworICAgICAg
ICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAiZmFsc2UsIHNlc3Npb25UeXBlIFBlcnNpc3RlbnRM
aWNlbnNlIG5vdCBzdXBwb3J0ZWQiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApA
QCAtMjk4LDcgKzI5Nyw3IEBAIGJvb2wgQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBw
b3J0c0NvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlnCiAgICAgICAgICYmICFX
VEY6OmFueU9mKGNvbmZpZ3VyYXRpb24uYXVkaW9DYXBhYmlsaXRpZXMsIFtdKGF1dG8mIGNhcGFi
aWxpdHkpIHsKICAgICAgICAgICAgIHJldHVybiBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQzo6c3VwcG9ydHNNZWRpYUNhcGFiaWxpdHkoY2FwYWJpbGl0eSk7CiAgICAgICAgIH0p
KSB7Ci0gICAgICAgIERFQlVHX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAiZmFsc2Us
IG5vIGF1ZGlvIGNvbmZpZ3VyYXRpb24gc3VwcG9ydGVkIik7CisgICAgICAgIElORk9fTE9HKExP
R0lERU5USUZJRVIsICJmYWxzZSwgbm8gYXVkaW8gY29uZmlndXJhdGlvbiBzdXBwb3J0ZWQiKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMzA2LDExICszMDUsMTEgQEAgYm9v
bCBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRzQ29uZmlndXJhdGlvbihjb25z
dCBDRE1LZXlTeXN0ZW1Db25maWcKICAgICAgICAgJiYgIVdURjo6YW55T2YoY29uZmlndXJhdGlv
bi52aWRlb0NhcGFiaWxpdGllcywgW10oYXV0byYgY2FwYWJpbGl0eSkgewogICAgICAgICAgICAg
cmV0dXJuIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpzdXBwb3J0c01lZGlh
Q2FwYWJpbGl0eShjYXBhYmlsaXR5KTsKICAgICAgICAgfSkpIHsKLSAgICAgICAgICAgIERFQlVH
X0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAiZmFsc2UsIG5vIHZpZGVvIGNvbmZpZ3Vy
YXRpb24gc3VwcG9ydGVkIik7CisgICAgICAgICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAi
ZmFsc2UsIG5vIHZpZGVvIGNvbmZpZ3VyYXRpb24gc3VwcG9ydGVkIik7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAKLSAgICBERUJVR19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklF
UiwgInRydWUsIHN1cHBvcnRlZCIpOworICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJ0cnVl
LCBzdXBwb3J0ZWQiKTsKICAgICByZXR1cm4gdHJ1ZTsKICNlbHNlCiAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtMzcxLDcgKzM3MCwxMSBAQCBib29sIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6
ZGlzdGluY3RpdmVJZGVudGlmaWVyc0FyZVVuaXF1ZVBlck9yaWdpbkFuZENsZQogUmVmUHRyPENE
TUluc3RhbmNlPiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OmNyZWF0ZUluc3RhbmNlKCkK
IHsKICNpZiBIQVZFKEFWQ09OVEVOVEtFWVNFU1NJT04pCi0gICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQygpKTsKKyAgICBhdXRvIGluc3Rh
bmNlID0gYWRvcHRSZWYobmV3IENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDKCp0
aGlzKSk7CisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgaW5zdGFuY2UtPnNldExvZ0lk
ZW50aWZpZXIobV9sb2dJZGVudGlmaWVyKTsKKyNlbmRpZgorICAgIHJldHVybiBpbnN0YW5jZTsK
ICNlbHNlCiAgICAgcmV0dXJuIG51bGxwdHI7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWlu
Zy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZh
aXJQbGF5U3RyZWFtaW5nLmgKaW5kZXggMzE3YmI4ZDU3ZTg2YzA2MjE0ZTBiNDA1OWRkZjRmODgw
N2M3NGM2Yi4uNDUxYjhiY2NhODk5MDFhOTJkZDdkNzk4OTQ0NDI1Yzg3OTlkMjY3MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZh
aXJQbGF5U3RyZWFtaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmgKQEAgLTQxLDcgKzQxLDcgQEAgcHVi
bGljOgogCiAgICAgdmlydHVhbCB+Q0RNRmFjdG9yeUZhaXJQbGF5U3RyZWFtaW5nKCk7CiAKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8Q0RNUHJpdmF0ZT4gY3JlYXRlQ0RNKGNvbnN0IFN0cmluZyYpIG92
ZXJyaWRlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxDRE1Qcml2YXRlPiBjcmVhdGVDRE0oY29uc3Qg
U3RyaW5nJiwgY29uc3QgQ0RNUHJpdmF0ZUNsaWVudCYpIG92ZXJyaWRlOwogICAgIGJvb2wgc3Vw
cG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CkBAIC01
MiwxMSArNTIsMTQgQEAgcHJpdmF0ZToKIGNsYXNzIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWlu
ZyBmaW5hbCA6IHB1YmxpYyBDRE1Qcml2YXRlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKLSAgICBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmcoKTsKKyAgICBDRE1Q
cml2YXRlRmFpclBsYXlTdHJlYW1pbmcoY29uc3QgQ0RNUHJpdmF0ZUNsaWVudCYpOwogICAgIHZp
cnR1YWwgfkNETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZygpOwogCiAjaWYgIVJFTEVBU0VfTE9H
X0RJU0FCTEVECi0gICAgdm9pZCBzZXRMb2dnZXIoTG9nZ2VyJiwgY29uc3Qgdm9pZCogbG9nSWRl
bnRpZmllcikgZmluYWw7CisgICAgdm9pZCBzZXRMb2dJZGVudGlmaWVyKGNvbnN0IHZvaWQqIGxv
Z0lkZW50aWZpZXIpIGZpbmFsIHsgbV9sb2dJZGVudGlmaWVyID0gbG9nSWRlbnRpZmllcjsgfQor
ICAgIGNvbnN0IExvZ2dlciYgbG9nZ2VyKCkgY29uc3QgeyByZXR1cm4gbV9sb2dnZXI7IH07Cisg
ICAgY29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fbG9nSWRlbnRp
ZmllcjsgfQorICAgIGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJD
RE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmciOyB9CiAjZW5kaWYKIAogICAgIFZlY3RvcjxBdG9t
U3RyaW5nPiBzdXBwb3J0ZWRJbml0RGF0YVR5cGVzKCkgY29uc3Qgb3ZlcnJpZGU7CkBAIC04Nywx
MiArOTAsOCBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVE
Ci0gICAgTG9nZ2VyKiBsb2dnZXJQdHIoKSBjb25zdCB7IHJldHVybiBtX2xvZ2dlci5nZXQoKTsg
fTsKLSAgICBjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9sb2dJ
ZGVudGlmaWVyOyB9Ci0gICAgY29uc3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29uc3QgeyByZXR1
cm4gIkNETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZyI7IH0KLQotICAgIFJlZlB0cjxMb2dnZXI+
IG1fbG9nZ2VyOwotICAgIGNvbnN0IHZvaWQqIG1fbG9nSWRlbnRpZmllcjsKKyAgICBSZWY8Y29u
c3QgTG9nZ2VyPiBtX2xvZ2dlcjsKKyAgICBjb25zdCB2b2lkKiBtX2xvZ0lkZW50aWZpZXIgeyBu
dWxscHRyIH07CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQy5oCmluZGV4IDFiNzYzZGQ4NGEzOGQ3NWFhNzU0NGU0NDk5NDdm
YjZjZmRiMTFlNTIuLmZmZWZkNTljYTZkN2FkZDBjZmQxNDY1YWYzMDA3MWFmNTBjNzNhMjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9D
RE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaApA
QCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNLZXlTeXN0
ZW1BbmRNaW1lVHlwZShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSk7CiAKICAgICBib29sIHN1cHBvcnRzTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSkgb3ZlcnJpZGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNETVNlc3Npb24+IGNyZWF0
ZVNlc3Npb24oTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCopIG92ZXJyaWRlOworICAgIHN0ZDo6dW5p
cXVlX3B0cjxMZWdhY3lDRE1TZXNzaW9uPiBjcmVhdGVTZXNzaW9uKExlZ2FjeUNETVNlc3Npb25D
bGllbnQmKSBvdmVycmlkZTsKIAogICAgIExlZ2FjeUNETSogY2RtKCkgY29uc3QgeyByZXR1cm4g
bV9jZG07IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL0NETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQy5tbQppbmRleCA4NjAyNWYyYTdiMTg1NzhkNDdjODA4OTUxNWQzMWNhZDllMWM2MWQx
Li4yZGFmOGVhYWM5MDhjZWJiYjk0ZGEzMzA2NDRhNWU3NzE3YjM2NzM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQpAQCAtMTI3LDcg
KzEyNyw3IEBAIGJvb2wgQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c3VwcG9ydHNNSU1F
VHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogICAgIHJldHVybiBNZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakM6OnN1cHBvcnRzVHlwZUFuZENvZGVjcyhwYXJhbWV0ZXJzKSAh
PSBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpJc05vdFN1cHBvcnRlZDsKIH0KIAotc3RkOjp1
bmlxdWVfcHRyPExlZ2FjeUNETVNlc3Npb24+IENETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6
OmNyZWF0ZVNlc3Npb24oTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCogY2xpZW50KQorc3RkOjp1bmlx
dWVfcHRyPExlZ2FjeUNETVNlc3Npb24+IENETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmNy
ZWF0ZVNlc3Npb24oTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCYgY2xpZW50KQogewogICAgIFN0cmlu
ZyBrZXlTeXN0ZW0gPSBtX2NkbS0+a2V5U3lzdGVtKCk7IC8vIExvY2FsIGNvcHkgZm9yIFN0cmlu
Z1ZpZXcgdXNhZ2UKICAgICBhdXRvIHBhcmFtZXRlcnMgPSBwYXJzZUtleVN5c3RlbShtX2NkbS0+
a2V5U3lzdGVtKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL2NmL0NETVNlc3Npb25BVkZvdW5kYXRpb25DRi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvQ0RNU2Vzc2lvbkFWRm91
bmRhdGlvbkNGLmNwcAppbmRleCBkZjRmMTgzNWY1NmIzZDZkYmYxNGI1ZDRiNDhlZGE4ZDg3Yjk5
NDJmLi5lODNlNTMzYTkzODY4ODhiN2NmZDQyYTIyZWUwZTFmZTI4MTY4NzA0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvQ0RNU2Vz
c2lvbkFWRm91bmRhdGlvbkNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vY2YvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGLmNwcApAQCAtNDUs
NyArNDUsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUNETVNlc3Npb25BVkZvdW5kYXRp
b25DRjo6Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGKE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbkNGJiBwYXJlbnQsIExlZ2FjeUNETVNlc3Npb25DbGllbnQqKQorQ0RNU2Vzc2lvbkFWRm91
bmRhdGlvbkNGOjpDRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0YoTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uQ0YmIHBhcmVudCwgTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCYpCiAgICAgOiBtX3Bh
cmVudChwYXJlbnQpCiAgICAgLCBtX3Nlc3Npb25JZChjcmVhdGVWZXJzaW9uNFVVSURTdHJpbmco
KSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9jZi9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0YuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0Yu
aAppbmRleCA3OWNiZmNkODNmMTM4YzBkMDkzN2ZjNTVlNGZkODAwNTY3NWIyYjhiLi40MGRmZjY0
NWIyZWE5NTgyOThmYTMyNWFjOGYyODk5NzNkYmE2Mjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvQ0RNU2Vzc2lvbkFWRm91bmRh
dGlvbkNGLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL2NmL0NETVNlc3Npb25BVkZvdW5kYXRpb25DRi5oCkBAIC00MCwxMCArNDAsOSBAQCBjbGFz
cyBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjsKIGNsYXNzIENETVNlc3Npb25BVkZv
dW5kYXRpb25DRiBmaW5hbCA6IHB1YmxpYyBMZWdhY3lDRE1TZXNzaW9uIHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0Yo
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YmIHBhcmVudCwgTGVnYWN5Q0RNU2Vzc2lv
bkNsaWVudCopOworICAgIENETVNlc3Npb25BVkZvdW5kYXRpb25DRihNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25DRiYgcGFyZW50LCBMZWdhY3lDRE1TZXNzaW9uQ2xpZW50Jik7CiAKIHBy
aXZhdGU6Ci0gICAgdm9pZCBzZXRDbGllbnQoTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCogY2xpZW50
KSBmaW5hbCB7IH0KICAgICBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIG1fc2Vzc2lvbklkOyB9CiAgICAgUmVmUHRyPFVpbnQ4QXJyYXk+IGdlbmVyYXRlS2V5
UmVxdWVzdChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBVaW50OEFycmF5KiBpbml0RGF0YSwgU3Ry
aW5nJiBkZXN0aW5hdGlvblVSTCwgdW5zaWduZWQgc2hvcnQmIGVycm9yQ29kZSwgdWludDMyX3Qm
IHN5c3RlbUNvZGUpIGZpbmFsOwogICAgIHZvaWQgcmVsZWFzZUtleXMoKSBmaW5hbDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uQ0YuY3BwCmluZGV4IGY1NWY0MzM0NGMxMjhiZjUxYjUzOTk4YTVkYjVkMTJkNDJjMGNkZGMu
LmM3ODc2NjE3OGUxMmI5NGIwODZkZGM2YjUyMzE3OTlhNDVjMDJiNGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNG
LmNwcApAQCAtMTE2OCw3ICsxMTY4LDcgQEAgUmV0YWluUHRyPEFWQ0ZBc3NldFJlc291cmNlTG9h
ZGluZ1JlcXVlc3RSZWY+IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjoKICAgICBy
ZXR1cm4gbV9hdmZXcmFwcGVyLT50YWtlUmVxdWVzdEZvcktleVVSSShrZXlVUkkpOwogfQogCi1z
dGQ6OnVuaXF1ZV9wdHI8TGVnYWN5Q0RNU2Vzc2lvbj4gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uQ0Y6OmNyZWF0ZVNlc3Npb24oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIExlZ2FjeUNE
TVNlc3Npb25DbGllbnQqIGNsaWVudCkKK3N0ZDo6dW5pcXVlX3B0cjxMZWdhY3lDRE1TZXNzaW9u
PiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6Y3JlYXRlU2Vzc2lvbihjb25zdCBT
dHJpbmcmIGtleVN5c3RlbSwgTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCYgY2xpZW50KQogewogICAg
IGlmICgha2V5U3lzdGVtSXNTdXBwb3J0ZWQoa2V5U3lzdGVtKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CkBAIC0xMTc4LDcgKzExNzgsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8TGVnYWN5Q0RNU2Vz
c2lvbj4gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OmNyZWF0ZVNlc3NpbwogCiAj
ZWxpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKIAotc3RkOjp1bmlxdWVfcHRyPExl
Z2FjeUNETVNlc3Npb24+IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpjcmVhdGVT
ZXNzaW9uKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBMZWdhY3lDRE1TZXNzaW9uQ2xpZW50KikK
K3N0ZDo6dW5pcXVlX3B0cjxMZWdhY3lDRE1TZXNzaW9uPiBNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25DRjo6Y3JlYXRlU2Vzc2lvbihjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgTGVnYWN5
Q0RNU2Vzc2lvbkNsaWVudCYpCiB7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5o
CmluZGV4IGNjZDZhZTdiY2Y4ZmFkOTY5OTUyM2UwYTdhYWFhNWQ2MTMwN2ZkOTYuLjEyOGMxODM0
ZWM1OWQxNjUwODcwNDY5YmY2MWRhN2QwYWVkOWYxMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25DRi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5oCkBAIC0xMTcs
NyArMTE3LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgY29udGVudHNOZWVkc0Rpc3Bs
YXkoKTsKIAogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQotICAgIHN0ZDo6dW5p
cXVlX3B0cjxMZWdhY3lDRE1TZXNzaW9uPiBjcmVhdGVTZXNzaW9uKGNvbnN0IFN0cmluZyYsIExl
Z2FjeUNETVNlc3Npb25DbGllbnQqKSBvdmVycmlkZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TGVn
YWN5Q0RNU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbihjb25zdCBTdHJpbmcmLCBMZWdhY3lDRE1TZXNz
aW9uQ2xpZW50Jikgb3ZlcnJpZGU7CiAjZW5kaWYKIAogICAgIFN0cmluZyBsYW5ndWFnZU9mUHJp
bWFyeUF1ZGlvVHJhY2soKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5oCmlu
ZGV4IGQ1OWZlNDgwNGQ1OGRmZTc4Y2I1YmVhNzA3NGIyZTY4NzA1YzFkNDkuLmJlYWU0YjYxYmM3
ODhkMTk4ZjNiYWJhNGU1NzcwMTRkZWMzN2E5NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaApA
QCAtNTEsNiArNTEsNyBAQCBjbGFzcyBMb2dnZXI7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzsKK2NsYXNzIENE
TVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzsKIHN0cnVjdCBDRE1NZWRpYUNhcGFiaWxpdHk7CiAK
IGNsYXNzIEFWQ29udGVudEtleVNlc3Npb25EZWxlZ2F0ZUNsaWVudCB7CkBAIC03MSwxMyArNzIs
OSBAQCBwdWJsaWM6CiAKIGNsYXNzIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
IGZpbmFsIDogcHVibGljIENETUluc3RhbmNlLCBwdWJsaWMgQVZDb250ZW50S2V5U2Vzc2lvbkRl
bGVnYXRlQ2xpZW50LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8Q0RNSW5zdGFuY2VGYWlyUGxheVN0
cmVhbWluZ0FWRk9iakM+IHsKIHB1YmxpYzoKLSAgICBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQygpOworICAgIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDKGNv
bnN0IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZyYpOwogICAgIHZpcnR1YWwgfkNETUluc3Rh
bmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDKCkgPSBkZWZhdWx0OwogCi0jaWYgIVJFTEVBU0Vf
TE9HX0RJU0FCTEVECi0gICAgdm9pZCBzZXRMb2dnZXIoTG9nZ2VyJiwgY29uc3Qgdm9pZCogbG9n
SWRlbnRpZmllcik7Ci0jZW5kaWYKLQogICAgIHN0YXRpYyBib29sIHN1cHBvcnRzUGVyc2lzdGFi
bGVTdGF0ZSgpOwogICAgIHN0YXRpYyBib29sIHN1cHBvcnRzUGVyc2lzdGVudEtleXMoKTsKICAg
ICBzdGF0aWMgYm9vbCBzdXBwb3J0c01lZGlhQ2FwYWJpbGl0eShjb25zdCBDRE1NZWRpYUNhcGFi
aWxpdHkmKTsKQEAgLTEyNiwxNSArMTIzLDE2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2Vzc2lv
bktleVN0YXR1c2VzQ2hhbmdlZChjb25zdCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVh
bWluZ0FWRk9iakMmKTsKIAotcHJpdmF0ZToKLSAgICB2b2lkIGhhbmRsZVVuZXhwZWN0ZWRSZXF1
ZXN0cyhWZWN0b3I8UmV0YWluUHRyPEFWQ29udGVudEtleVJlcXVlc3Q+PiYmKTsKLQogI2lmICFS
RUxFQVNFX0xPR19ESVNBQkxFRAotICAgIExvZ2dlciogbG9nZ2VyUHRyKCkgY29uc3QgeyByZXR1
cm4gbV9sb2dnZXIuZ2V0KCk7IH07CisgICAgdm9pZCBzZXRMb2dJZGVudGlmaWVyKGNvbnN0IHZv
aWQqIGxvZ0lkZW50aWZpZXIpIGZpbmFsIHsgbV9sb2dJZGVudGlmaWVyID0gbG9nSWRlbnRpZmll
cjsgfQorICAgIGNvbnN0IExvZ2dlciYgbG9nZ2VyKCkgY29uc3QgeyByZXR1cm4gbV9sb2dnZXI7
IH07CiAgICAgY29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fbG9n
SWRlbnRpZmllcjsgfQogICAgIGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0IHsgcmV0
dXJuICJDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQyI7IH0KICNlbmRpZgogCitw
cml2YXRlOgorICAgIHZvaWQgaGFuZGxlVW5leHBlY3RlZFJlcXVlc3RzKFZlY3RvcjxSZXRhaW5Q
dHI8QVZDb250ZW50S2V5UmVxdWVzdD4+JiYpOworCiAgICAgV2Vha1B0cjxDRE1JbnN0YW5jZUNs
aWVudD4gbV9jbGllbnQ7CiAgICAgUmV0YWluUHRyPEFWQ29udGVudEtleVNlc3Npb24+IG1fc2Vz
c2lvbjsKICAgICBSZXRhaW5QdHI8V2ViQ29yZUZQU0NvbnRlbnRLZXlTZXNzaW9uRGVsZWdhdGU+
IG1fZGVsZWdhdGU7CkBAIC0xNDUsNyArMTQzLDcgQEAgcHJpdmF0ZToKICAgICBIYXNoU2V0PFJl
dGFpblB0cjxBVkNvbnRlbnRLZXlSZXF1ZXN0Pj4gbV91bmV4cGVjdGVkS2V5UmVxdWVzdHM7CiAg
ICAgV2Vha0hhc2hTZXQ8S2V5U3RhdHVzZXNDaGFuZ2VkT2JzZXJ2ZXI+IG1fa2V5U3RhdHVzQ2hh
bmdlZE9ic2VydmVyczsKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLSAgICBSZWZQdHI8TG9n
Z2VyPiBtX2xvZ2dlcjsKKyAgICBSZWY8Y29uc3QgTG9nZ2VyPiBtX2xvZ2dlcjsKICAgICBjb25z
dCB2b2lkKiBtX2xvZ0lkZW50aWZpZXIgeyBudWxscHRyIH07CiAjZW5kaWYKIH07CkBAIC0xNTUs
MTAgKzE1Myw2IEBAIHB1YmxpYzoKICAgICBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVh
bWluZ0FWRk9iakMoUmVmPENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDPiYmKTsK
ICAgICB2aXJ0dWFsIH5DRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakMo
KTsKIAotI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAotICAgIHZvaWQgc2V0TG9nZ2VyKExvZ2dl
ciYsIGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIpOwotI2VuZGlmCi0KICAgICAvLyBDRE1JbnN0
YW5jZVNlc3Npb24KICAgICB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBB
dG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGlu
aXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCB1cGRhdGVMaWNlbnNl
KGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOwpAQCAtMjEwLDcgKzIwNCw4IEBAIHBy
aXZhdGU6CiAgICAgc3RkOjpvcHRpb25hbDxDRE1LZXlTdGF0dXM+IHByb3RlY3Rpb25TdGF0dXNG
b3JEaXNwbGF5SUQoQVZDb250ZW50S2V5UmVxdWVzdCAqLCBzdGQ6Om9wdGlvbmFsPFBsYXRmb3Jt
RGlzcGxheUlEPikgY29uc3Q7CiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLSAgICBMb2dn
ZXIqIGxvZ2dlclB0cigpIGNvbnN0IHsgcmV0dXJuIG1fbG9nZ2VyLmdldCgpOyB9OworICAgIHZv
aWQgc2V0TG9nSWRlbnRpZmllcihjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKSBmaW5hbCB7IG1f
bG9nSWRlbnRpZmllciA9IGxvZ0lkZW50aWZpZXI7IH0KKyAgICBjb25zdCBMb2dnZXImIGxvZ2dl
cigpIGNvbnN0IHsgcmV0dXJuIG1fbG9nZ2VyOyB9OwogICAgIGNvbnN0IHZvaWQqIGxvZ0lkZW50
aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2xvZ0lkZW50aWZpZXI7IH0KICAgICBjb25zdCBjaGFy
KiBsb2dDbGFzc05hbWUoKSBjb25zdCB7IHJldHVybiAiQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDIjsgfQogI2VuZGlmCkBAIC0yNDAsNyArMjM1LDcgQEAgcHJpdmF0
ZToKICAgICBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrIG1fcmVtb3ZlU2Vzc2lvbkRhdGFDYWxs
YmFjazsKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAotICAgIFJlZlB0cjxMb2dnZXI+IG1f
bG9nZ2VyOworICAgIFJlZjxjb25zdCBMb2dnZXI+IG1fbG9nZ2VyOwogICAgIGNvbnN0IHZvaWQq
IG1fbG9nSWRlbnRpZmllciB7IG51bGxwdHIgfTsKICNlbmRpZgogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3Rh
bmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakMubW0KaW5kZXggOTYyNWZhOTUwM2U3YmViYzcxOWZjNGIzN2E2M2MzOGQ3NDUwMzA4YS4u
OTViZGQyNzk4OWEyNzcyN2MyMTczOGM5YTIzOGIzYWI1MzgxMDllMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFu
Y2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakMubW0KQEAgLTIzMywxNSArMjMzLDEyIEBAIHN0YXRpYyBSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gaW5pdGlhbGl6YXRpb25EYXRhRm9yUmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1
CiAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlcXVlc3QuaW5pdGlhbGl6YXRpb25E
YXRhKTsKIH0KIAotQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OkNETUluc3Rh
bmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDKCkgPSBkZWZhdWx0OwotCitDRE1JbnN0YW5jZUZh
aXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9i
akMoY29uc3QgQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nJiBjZG1Qcml2YXRlKQogI2lmICFS
RUxFQVNFX0xPR19ESVNBQkxFRAotdm9pZCBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZG
T2JqQzo6c2V0TG9nZ2VyKExvZ2dlciYgbG9nZ2VyLCBjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVy
KQorICAgIDogbV9sb2dnZXIoY2RtUHJpdmF0ZS5sb2dnZXIoKSkKKyNlbmRpZgogewotICAgIG1f
bG9nZ2VyID0gJmxvZ2dlcjsKLSAgICBtX2xvZ0lkZW50aWZpZXIgPSBsb2dJZGVudGlmaWVyOwog
fQotI2VuZGlmCiAKIEFWQ29udGVudEtleVNlc3Npb24qIENETUluc3RhbmNlRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDOjpjb250ZW50S2V5U2Vzc2lvbigpCiB7CkBAIC0zODgsMTQgKzM4NSwxNCBA
QCB2b2lkIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjppbml0aWFsaXplV2l0
aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNSwogCiB2b2lkIENETUluc3RhbmNlRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiBzZXJ2ZXJDZXJ0aWZpY2F0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7
Ci0gICAgREVCVUdfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIpOworICAgIElORk9fTE9H
KExPR0lERU5USUZJRVIpOwogICAgIG1fc2VydmVyQ2VydGlmaWNhdGUgPSBXVEZNb3ZlKHNlcnZl
ckNlcnRpZmljYXRlKTsKICAgICBjYWxsYmFjayhTdWNjZWVkZWQpOwogfQogCiB2b2lkIENETUlu
c3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0
IFN0cmluZyYgc3RvcmFnZURpcmVjdG9yeSkKIHsKLSAgICBERUJVR19MT0dfSUZfUE9TU0lCTEUo
TE9HSURFTlRJRklFUik7CisgICAgSU5GT19MT0coTE9HSURFTlRJRklFUik7CiAgICAgaWYgKHN0
b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpKSB7CiAgICAgICAgIG1fc3RvcmFnZVVSTCA9IG5pbDsK
ICAgICAgICAgcmV0dXJuOwpAQCAtNDY0LDcgKzQ2MSw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VGYWly
UGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0KEFWQ29udGVudEtleVJlcXVl
c3QKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIERFQlVHX0xPR19JRl9QT1NTSUJMRShM
T0dJREVOVElGSUVSLCAiLSBVbmV4cGVjdGVkIHJlcXVlc3QiKTsKKyAgICBBTFdBWVNfTE9HKExP
R0lERU5USUZJRVIsICItIFVuZXhwZWN0ZWQgcmVxdWVzdCIpOwogCiAgICAgaGFuZGxlVW5leHBl
Y3RlZFJlcXVlc3RzKHt7IHJlcXVlc3QgfX0pOwogfQpAQCAtNDk4LDcgKzQ5NSw3IEBAIHZvaWQg
Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZW5ld2luZ1Jl
cXVlc3QoQVZDb250ZW50S2V5CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgRVJST1JfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIsICItIG5vIHJlc3BvbnNpYmxl
IHNlc3Npb247IGRyb3BwaW5nIik7CisgICAgRVJST1JfTE9HKExPR0lERU5USUZJRVIsICItIG5v
IHJlc3BvbnNpYmxlIHNlc3Npb247IGRyb3BwaW5nIik7CiB9CiAKIHZvaWQgQ0RNSW5zdGFuY2VG
YWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVQZXJzaXN0YWJsZVJlcXVlc3QoQVZD
b250ZW50S2V5UmVxdWVzdCAqcmVxdWVzdCkKQEAgLTUwOSw3ICs1MDYsNyBAQCB2b2lkIENETUlu
c3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUGVyc2lzdGFibGVSZXF1
ZXN0KEFWQ29udGVudAogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIEVS
Uk9SX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAiLSBubyByZXNwb25zaWJsZSBzZXNz
aW9uOyBkcm9wcGluZyIpOworICAgIEVSUk9SX0xPRyhMT0dJREVOVElGSUVSLCAiLSBubyByZXNw
b25zaWJsZSBzZXNzaW9uOyBkcm9wcGluZyIpOwogfQogCiB2b2lkIENETUluc3RhbmNlRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRGYWlsVG9Qcm92aWRlUmVxdWVzdChBVkNvbnRlbnRLZXlS
ZXF1ZXN0ICpyZXF1ZXN0LCBOU0Vycm9yICplcnJvcikKQEAgLTUyMCw3ICs1MTcsNyBAQCB2b2lk
IENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRGYWlsVG9Qcm92aWRlUmVx
dWVzdChBVkNvbnRlbnRLZXlSZQogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgIEVSUk9SX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAiLSBubyByZXNwb25zaWJs
ZSBzZXNzaW9uOyBkcm9wcGluZyIpOworICAgIEVSUk9SX0xPRyhMT0dJREVOVElGSUVSLCAiLSBu
byByZXNwb25zaWJsZSBzZXNzaW9uOyBkcm9wcGluZyIpOwogfQogCiB2b2lkIENETUluc3RhbmNl
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZXF1ZXN0RGlkU3VjY2VlZChBVkNvbnRlbnRLZXlS
ZXF1ZXN0ICpyZXF1ZXN0KQpAQCAtNTMxLDcgKzUyOCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VGYWly
UGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3REaWRTdWNjZWVkKEFWQ29udGVudEtleVJlcXVl
c3QKICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICBFUlJPUl9MT0dfSUZf
UE9TU0lCTEUoTE9HSURFTlRJRklFUiwgIi0gbm8gcmVzcG9uc2libGUgc2Vzc2lvbjsgZHJvcHBp
bmciKTsKKyAgICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwgIi0gbm8gcmVzcG9uc2libGUgc2Vz
c2lvbjsgZHJvcHBpbmciKTsKIH0KIAogYm9vbCBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQzo6c2hvdWxkUmV0cnlSZXF1ZXN0Rm9yUmVhc29uKEFWQ29udGVudEtleVJlcXVlc3Qg
KnJlcXVlc3QsIE5TU3RyaW5nICpyZWFzb24pCkBAIC01NDAsNyArNTM3LDcgQEAgYm9vbCBDRE1J
bnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c2hvdWxkUmV0cnlSZXF1ZXN0Rm9yUmVh
c29uKEFWQ29udGVudEsKICAgICAgICAgcmV0dXJuIHNlc3Npb24tPnNob3VsZFJldHJ5UmVxdWVz
dEZvclJlYXNvbihyZXF1ZXN0LCByZWFzb24pOwogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgRVJST1JfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIsICItIG5vIHJlc3BvbnNp
YmxlIHNlc3Npb247IGRyb3BwaW5nIik7CisgICAgRVJST1JfTE9HKExPR0lERU5USUZJRVIsICIt
IG5vIHJlc3BvbnNpYmxlIHNlc3Npb247IGRyb3BwaW5nIik7CiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCkBAIC01NTQsNyArNTUxLDcgQEAgdm9pZCBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQzo6Z3JvdXBTZXNzaW9uSWRlbnRpZmllckNoYW5nZWQoQVZDb250ZW4KIHsKICNpZiBI
QVZFKEFWQ09OVEVOVEtFWVJFUE9SVEdST1VQKQogICAgIGlmIChncm91cCA9PSBbbV9zZXNzaW9u
IGRlZmF1bHRDb250ZW50S2V5R3JvdXBdKSB7Ci0gICAgICAgIElORk9fTE9HX0lGX1BPU1NJQkxF
KExPR0lERU5USUZJRVIsICItIGRlZmF1bHQgdW51c2VkIGdyb3VwIGlkZW50aWZpZXIgY2hhbmdl
ZDsgZHJvcHBpbmciKTsKKyAgICAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgIi0gZGVmYXVs
dCB1bnVzZWQgZ3JvdXAgaWRlbnRpZmllciBjaGFuZ2VkOyBkcm9wcGluZyIpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkBAIC01NjQsNyArNTYxLDcgQEAgdm9pZCBDRE1JbnN0YW5jZUZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQzo6Z3JvdXBTZXNzaW9uSWRlbnRpZmllckNoYW5nZWQoQVZDb250
ZW4KICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICBFUlJPUl9MT0dfSUZf
UE9TU0lCTEUoTE9HSURFTlRJRklFUiwgIi0gbm8gcmVzcG9uc2libGUgc2Vzc2lvbjsgZHJvcHBp
bmciKTsKKyAgICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwgIi0gbm8gcmVzcG9uc2libGUgc2Vz
c2lvbjsgZHJvcHBpbmciKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGdyb3VwKTsKICAgICBV
TlVTRURfUEFSQU0oc2Vzc2lvbklkZW50aWZpZXIpOwpAQCAtNTg3LDcgKzU4NCw3IEBAIHZvaWQg
Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmV4dGVybmFsUHJvdGVjdGlvblN0
YXR1c0RpZENoYW5nZUZvckNvCiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgRVJST1JfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIsICItIG5vIHJlc3BvbnNpYmxl
IHNlc3Npb247IGRyb3BwaW5nIik7CisgICAgRVJST1JfTE9HKExPR0lERU5USUZJRVIsICItIG5v
IHJlc3BvbnNpYmxlIHNlc3Npb247IGRyb3BwaW5nIik7CiB9CiAKIENETUluc3RhbmNlU2Vzc2lv
bkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQyogQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakM6OnNlc3Npb25Gb3JLZXlJRHMoY29uc3QgS2V5cyYga2V5SURzKSBjb25zdApAQCAtNjcw
LDYgKzY2Nyw5IEBAIHZvaWQgQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnNl
c3Npb25LZXlTdGF0dXNlc0NoYW5nZWQoY29uc3QgQ0RNSW5zCiBDRE1JbnN0YW5jZVNlc3Npb25G
YWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQyhSZWY8Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM+JiYgaW5z
dGFuY2UpCiAgICAgOiBtX2luc3RhbmNlKFdURk1vdmUoaW5zdGFuY2UpKQogICAgICwgbV9kZWxl
Z2F0ZShhZG9wdE5TKFtbV2ViQ29yZUZQU0NvbnRlbnRLZXlTZXNzaW9uRGVsZWdhdGUgYWxsb2Nd
IGluaXRXaXRoUGFyZW50OnRoaXNdKSkKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICAs
IG1fbG9nZ2VyKG1faW5zdGFuY2UtPmxvZ2dlcigpKQorI2VuZGlmCiB7CiB9CiAKQEAgLTY3OCwx
NCArNjc4LDYgQEAgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp+
Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmcKICAgICBbbV9kZWxlZ2F0ZSBpbnZh
bGlkYXRlXTsKIH0KIAotI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAotdm9pZCBDRE1JbnN0YW5j
ZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnNldExvZ2dlcihMb2dnZXImIGxvZ2dl
ciwgY29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcikKLXsKLSAgICBtX2xvZ2dlciA9ICZsb2dnZXI7
Ci0gICAgbV9sb2dJZGVudGlmaWVyID0gbG9nSWRlbnRpZmllcjsKLX0KLSNlbmRpZgotCiB1c2lu
ZyBLZXlzID0gQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpLZXlz
Owogc3RhdGljIEtleXMga2V5SURzRm9yUmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0KiByZXF1
ZXN0KQogewpAQCAtNzI1LDI1ICs3MTcsMjUgQEAgS2V5cyBDRE1JbnN0YW5jZVNlc3Npb25GYWly
UGxheVN0cmVhbWluZ0FWRk9iakM6OmtleUlEcygpCiB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZh
aXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgbGljZW5z
ZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAg
IGlmICghaXNMaWNlbnNlVHlwZVN1cHBvcnRlZChsaWNlbnNlVHlwZSkpIHsKLSAgICAgICAgREVC
VUdfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIsICIgZmFsc2UsIGxpY2Vuc2VUeXBlIFwi
IiwgbGljZW5zZVR5cGUsICJcIiBub3Qgc3VwcG9ydGVkIik7CisgICAgICAgIEVSUk9SX0xPRyhM
T0dJREVOVElGSUVSLCAiIGZhbHNlLCBsaWNlbnNlVHlwZSBcIiIsIGxpY2Vuc2VUeXBlLCAiXCIg
bm90IHN1cHBvcnRlZCIpOwogICAgICAgICBjYWxsYmFjayhTaGFyZWRCdWZmZXI6OmNyZWF0ZSgp
LCBlbXB0eVN0cmluZygpLCBmYWxzZSwgRmFpbGVkKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAogICAgIGlmICghbV9pbnN0YW5jZS0+c2VydmVyQ2VydGlmaWNhdGUoKSkgewotICAgICAgICBE
RUJVR19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwgIiBmYWxzZSwgbm8gc2VydmVyQ2Vy
dGlmaWNhdGUiKTsKKyAgICAgICAgRVJST1JfTE9HKExPR0lERU5USUZJRVIsICIgZmFsc2UsIG5v
IHNlcnZlckNlcnRpZmljYXRlIik7CiAgICAgICAgIGNhbGxiYWNrKFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKCksIGVtcHR5U3RyaW5nKCksIGZhbHNlLCBGYWlsZWQpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCiAgICAgaWYgKCFlbnN1cmVTZXNzaW9uT3JHcm91cCgpKSB7Ci0gICAgICAgIERFQlVH
X0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAiIGZhbHNlLCBjb3VsZCBub3QgY3JlYXRl
IHNlc3Npb24gb3IgZ3JvdXAgb2JqZWN0Iik7CisgICAgICAgIEVSUk9SX0xPRyhMT0dJREVOVElG
SUVSLCAiIGZhbHNlLCBjb3VsZCBub3QgY3JlYXRlIHNlc3Npb24gb3IgZ3JvdXAgb2JqZWN0Iik7
CiAgICAgICAgIGNhbGxiYWNrKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIGVtcHR5U3RyaW5nKCks
IGZhbHNlLCBGYWlsZWQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKGF1dG8g
dW5leHBlY3RlZFJlcXVlc3QgPSBtX2luc3RhbmNlLT50YWtlVW5leHBlY3RlZEtleVJlcXVlc3RG
b3JJbml0aWFsaXphdGlvbkRhdGEoaW5pdERhdGFUeXBlLCBpbml0RGF0YSkpIHsKLSAgICAgICAg
REVCVUdfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIsICIgZm91bmQgdW5leHBlY3RlZFJl
cXVlc3QgbWF0Y2hpbmcgaW5pdERhdGEiKTsKKyAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElG
SUVSLCAiIGZvdW5kIHVuZXhwZWN0ZWRSZXF1ZXN0IG1hdGNoaW5nIGluaXREYXRhIik7CiAjaWYg
SEFWRShBVkNPTlRFTlRLRVlSRVBPUlRHUk9VUCkKICAgICAgICAgaWYgKG1fZ3JvdXApIHsKICAg
ICAgICAgICAgIEFMTE9XX05FV19BUElfV0lUSE9VVF9HVUFSRFNfQkVHSU4KQEAgLTc3MCwxMiAr
NzYyLDEyIEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
OjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlCiAgICAgfQogI2VuZGlmCiAgICAgZWxz
ZSB7Ci0gICAgICAgIERFQlVHX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAiIGZhbHNl
LCBpbml0RGF0YVR5cGUgbm90IHN1cHBwb3J0ZWQiKTsKKyAgICAgICAgRVJST1JfTE9HKExPR0lE
RU5USUZJRVIsICIgZmFsc2UsIGluaXREYXRhVHlwZSBub3Qgc3VwcHBvcnRlZCIpOwogICAgICAg
ICBjYWxsYmFjayhTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBlbXB0eVN0cmluZygpLCBmYWxzZSwg
RmFpbGVkKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIERFQlVHX0xPR19JRl9QT1NT
SUJMRShMT0dJREVOVElGSUVSLCAiIHByb2Nlc3NpbmcgcmVxdWVzdCIpOworICAgIEFMV0FZU19M
T0coTE9HSURFTlRJRklFUiwgIiBwcm9jZXNzaW5nIHJlcXVlc3QiKTsKICAgICBtX3JlcXVlc3RM
aWNlbnNlQ2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKTsKIAogI2lmIEhBVkUoQVZDT05URU5U
S0VZUkVQT1JUR1JPVVApCkBAIC04MTUsMTIgKzgwNywxMiBAQCB2b2lkIENETUluc3RhbmNlU2Vz
c2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcm
LCBMaQogICAgICAgICBhdXRvKiBzdG9yYWdlVVJMID0gbV9pbnN0YW5jZS0+c3RvcmFnZVVSTCgp
OwogCiAgICAgICAgIGlmICghY2VydGlmaWNhdGUgfHwgIXN0b3JhZ2VVUkwpIHsKLSAgICAgICAg
ICAgIERFQlVHX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAiXCJhY2tub3dsZWRnZWRc
IiwgRmFpbGVkLCBubyBjZXJ0aWZpY2F0ZSBhbmQgc3RvcmFnZVVSTCIpOworICAgICAgICAgICAg
RVJST1JfTE9HKExPR0lERU5USUZJRVIsICJcImFja25vd2xlZGdlZFwiLCBGYWlsZWQsIG5vIGNl
cnRpZmljYXRlIGFuZCBzdG9yYWdlVVJMIik7CiAgICAgICAgICAgICBjYWxsYmFjayhmYWxzZSwg
c3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgRmFpbGVkKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIERFQlVHX0xPR19JRl9QT1NTSUJM
RShMT0dJREVOVElGSUVSLCAiXCJhY2tub3dsZWRnZWRcIiwgU3VjY2VlZGVkLCByZW1vdmluZyBl
eHBpcmVkIHNlc3Npb24gcmVwb3J0Iik7CisgICAgICAgIEVSUk9SX0xPRyhMT0dJREVOVElGSUVS
LCAiXCJhY2tub3dsZWRnZWRcIiwgU3VjY2VlZGVkLCByZW1vdmluZyBleHBpcmVkIHNlc3Npb24g
cmVwb3J0Iik7CiAgICAgICAgIGF1dG8gZXhwaXJlZFNlc3Npb25zID0gY3JlYXRlTlNBcnJheSht
X2V4cGlyZWRTZXNzaW9ucywgW10gKGF1dG8mIGRhdGEpIHsKICAgICAgICAgICAgIHJldHVybiBk
YXRhLmdldCgpOwogICAgICAgICB9KTsKQEAgLTgzMywxMSArODI1LDExIEBAIHZvaWQgQ0RNSW5z
dGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0
IFN0cmluZyYsIExpCiAgICAgaWYgKCFtX3JlcXVlc3RzLmlzRW1wdHkoKSAmJiBpc0VxdWFsKHJl
c3BvbnNlRGF0YSwgInJlbmV3Il9zKSkgewogICAgICAgICBhdXRvIHJlcXVlc3QgPSBsYXN0S2V5
UmVxdWVzdCgpOwogICAgICAgICBpZiAoIXJlcXVlc3QpIHsKLSAgICAgICAgICAgIERFQlVHX0xP
R19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAiXCJyZW5ld1wiLCBGYWlsZWQsIG5vIG91dHN0
YW5kaW5nIGtleXMiKTsKKyAgICAgICAgICAgIEVSUk9SX0xPRyhMT0dJREVOVElGSUVSLCAiXCJy
ZW5ld1wiLCBGYWlsZWQsIG5vIG91dHN0YW5kaW5nIGtleXMiKTsKICAgICAgICAgICAgIGNhbGxi
YWNrKGZhbHNlLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBGYWls
ZWQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIERFQlVHX0xPR19J
Rl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAiXCJyZW5ld1wiLCBwcm9jZXNzaW5nIHJlbmV3YWwi
KTsKKyAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAiXCJyZW5ld1wiLCBwcm9jZXNz
aW5nIHJlbmV3YWwiKTsKICAgICAgICAgYXV0byBzZXNzaW9uID0gbV9zZXNzaW9uID8gbV9zZXNz
aW9uLmdldCgpIDogbV9pbnN0YW5jZS0+Y29udGVudEtleVNlc3Npb24oKTsKICAgICAgICAgW3Nl
c3Npb24gcmVuZXdFeHBpcmluZ1Jlc3BvbnNlRGF0YUZvckNvbnRlbnRLZXlSZXF1ZXN0OnJlcXVl
c3RdOwogICAgICAgICBtX3VwZGF0ZUxpY2Vuc2VDYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
OwpAQCAtODQ1LDEzICs4MzcsMTMgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0
cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGkKICAgICB9CiAK
ICAgICBpZiAoIW1fY3VycmVudFJlcXVlc3QpIHsKLSAgICAgICAgREVCVUdfTE9HX0lGX1BPU1NJ
QkxFKExPR0lERU5USUZJRVIsICIgRmFpbGVkLCBubyBjdXJyZW50UmVxdWVzdCIpOworICAgICAg
ICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwgIiBGYWlsZWQsIG5vIGN1cnJlbnRSZXF1ZXN0Iik7
CiAgICAgICAgIGNhbGxiYWNrKGZhbHNlLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgc3Rk
OjpudWxsb3B0LCBGYWlsZWQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIEtleXMga2V5
SURzID0ga2V5SURzRm9yUmVxdWVzdChtX2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkpOwogICAgIGlm
IChrZXlJRHMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIERFQlVHX0xPR19JRl9QT1NTSUJMRShMT0dJ
REVOVElGSUVSLCAiIEZhaWxlZCwgbm8ga2V5SURzIGluIGN1cnJlbnRSZXF1ZXN0Iik7CisgICAg
ICAgIEVSUk9SX0xPRyhMT0dJREVOVElGSUVSLCAiIEZhaWxlZCwgbm8ga2V5SURzIGluIGN1cnJl
bnRSZXF1ZXN0Iik7CiAgICAgICAgIGNhbGxiYWNrKGZhbHNlLCBzdGQ6Om51bGxvcHQsIHN0ZDo6
bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBGYWlsZWQpOwogICAgICAgICByZXR1cm47CiAgICAgfQpA
QCAtODcwLDEyICs4NjIsMTIgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVh
bWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGkKICAgICAgICAgICAg
ICAgICByZXR1cm47CiAKICAgICAgICAgICAgIGlmICghcmVzcG9uc2VzIHx8IHJlc3BvbnNlcy52
YWx1ZSgpLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgICAgIERFQlVHX0xPR19JRl9QT1NTSUJM
RShMT0dJREVOVElGSUVSLCAiJ2NlbmMnIGluaXREYXRhLCBGYWlsZWQsIG5vIHJlc3BvbnNlcyIp
OworICAgICAgICAgICAgICAgIEVSUk9SX0xPRyhMT0dJREVOVElGSUVSLCAiJ2NlbmMnIGluaXRE
YXRhLCBGYWlsZWQsIG5vIHJlc3BvbnNlcyIpOwogICAgICAgICAgICAgICAgIG1fdXBkYXRlTGlj
ZW5zZUNhbGxiYWNrKHRydWUsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxv
cHQsIEZhaWxlZCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCi0g
ICAgICAgICAgICBERUJVR19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwgIidjZW5jJyBp
bml0RGF0YSwgU3VjY2VlZGVkLCBubyBrZXlJRHMgaW4gY3VycmVudFJlcXVlc3QiKTsKKyAgICAg
ICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgIidjZW5jJyBpbml0RGF0YSwgU3VjY2Vl
ZGVkLCBubyBrZXlJRHMgaW4gY3VycmVudFJlcXVlc3QiKTsKICAgICAgICAgICAgIG1fdXBkYXRl
TGljZW5zZUNhbGxiYWNrKGZhbHNlLCBrZXlTdGF0dXNlcygpLCBzdGQ6Om51bGxvcHQsIHN0ZDo6
bnVsbG9wdCwgU3VjY2VlZGVkKTsKICAgICAgICAgICAgIG1fdXBkYXRlUmVzcG9uc2VDb2xsZWN0
b3IgPSBudWxscHRyOwogICAgICAgICAgICAgbV9jdXJyZW50UmVxdWVzdCA9IHN0ZDo6bnVsbG9w
dDsKQEAgLTk0OCwxMyArOTQwLDEzIEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpCiAgICAgICAg
IH07CiAgICAgICAgIGZvciAoYXV0byB2YWx1ZSA6ICphcnJheSkgewogICAgICAgICAgICAgaWYg
KCFwYXJzZVJlc3BvbnNlKFdURk1vdmUodmFsdWUpKSkgewotICAgICAgICAgICAgICAgIERFQlVH
X0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAiJ2NlbmMnIGluaXREYXRhLCBGYWlsZWQs
IGNvdWxkIG5vdCBwYXJzZSByZXNwb25zZSIpOworICAgICAgICAgICAgICAgIEVSUk9SX0xPRyhM
T0dJREVOVElGSUVSLCAiJ2NlbmMnIGluaXREYXRhLCBGYWlsZWQsIGNvdWxkIG5vdCBwYXJzZSBy
ZXNwb25zZSIpOwogICAgICAgICAgICAgICAgIGNhbGxiYWNrKGZhbHNlLCBzdGQ6Om51bGxvcHQs
IHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBGYWlsZWQpOwogICAgICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0gZWxzZSB7Ci0gICAgICAgIERF
QlVHX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAiJ3NpbmYnIGluaXREYXRhLCBwcm9j
ZXNzaW5nIHJlc3BvbnNlIik7CisgICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgIidz
aW5mJyBpbml0RGF0YSwgcHJvY2Vzc2luZyByZXNwb25zZSIpOwogICAgICAgICBbbV9jdXJyZW50
UmVxdWVzdC52YWx1ZSgpLnJlcXVlc3RzLmZpcnN0KCkgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25z
ZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNl
V2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRhOnJlc3BvbnNlRGF0YS0+bWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsKICAgICB9CiAKQEAgLTk3NCwxMyAr
OTY2LDEzIEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
Ojpsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSBsaWNlbnNlCiAgICAgaWYgKGxpY2Vuc2VUeXBlID09
IExpY2Vuc2VUeXBlOjpQZXJzaXN0ZW50VXNhZ2VSZWNvcmQpIHsKICAgICAgICAgYXV0byogc3Rv
cmFnZVVSTCA9IG1faW5zdGFuY2UtPnN0b3JhZ2VVUkwoKTsKICAgICAgICAgaWYgKCFtX2luc3Rh
bmNlLT5wZXJzaXN0ZW50U3RhdGVBbGxvd2VkKCkgfHwgIXN0b3JhZ2VVUkwpIHsKLSAgICAgICAg
ICAgIERFQlVHX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAiIEZhaWxlZCwgbWlzbWF0
Y2hlZCBzZXNzaW9uIHR5cGUiKTsKKyAgICAgICAgICAgIEVSUk9SX0xPRyhMT0dJREVOVElGSUVS
LCAiIEZhaWxlZCwgbWlzbWF0Y2hlZCBzZXNzaW9uIHR5cGUiKTsKICAgICAgICAgICAgIGNhbGxi
YWNrKHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIEZhaWxlZCwgU2Vz
c2lvbkxvYWRGYWlsdXJlOjpNaXNtYXRjaGVkU2Vzc2lvblR5cGUpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAgICAgICAgIGF1dG8qIGNlcnRpZmljYXRlID0gbV9pbnN0YW5jZS0+
c2VydmVyQ2VydGlmaWNhdGUoKTsKICAgICAgICAgaWYgKCFjZXJ0aWZpY2F0ZSkgewotICAgICAg
ICAgICAgREVCVUdfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIsICIgRmFpbGVkLCBubyBz
ZXNzaW9uQ2VydGlmaWNhdGUiKTsKKyAgICAgICAgICAgIEVSUk9SX0xPRyhMT0dJREVOVElGSUVS
LCAiIEZhaWxlZCwgbm8gc2Vzc2lvbkNlcnRpZmljYXRlIik7CiAgICAgICAgICAgICBjYWxsYmFj
ayhzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBGYWlsZWQsIFNlc3Np
b25Mb2FkRmFpbHVyZTo6Tm9TZXNzaW9uRGF0YSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KQEAgLTEwMDIsMTkgKzk5NCwxOSBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQzo6bG9hZFNlc3Npb24oTGljZW5zZVR5cGUgbGljZW5zZQogICAg
ICAgICB9CiAKICAgICAgICAgaWYgKGNoYW5nZWRLZXlzLmlzRW1wdHkoKSkgewotICAgICAgICAg
ICAgREVCVUdfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIsICIgRmFpbGVkLCBubyBzZXNz
aW9uIGRhdGEgZm91bmQiKTsKKyAgICAgICAgICAgIEVSUk9SX0xPRyhMT0dJREVOVElGSUVSLCAi
IEZhaWxlZCwgbm8gc2Vzc2lvbiBkYXRhIGZvdW5kIik7CiAgICAgICAgICAgICBjYWxsYmFjayhz
dGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBGYWlsZWQsIFNlc3Npb25M
b2FkRmFpbHVyZTo6Tm9TZXNzaW9uRGF0YSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIAotICAgICAgICBERUJVR19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwgIiBTdWNj
ZWVkZWQsIG1pc21hdGNoZWQgc2Vzc2lvbiB0eXBlIik7CisgICAgICAgIEFMV0FZU19MT0coTE9H
SURFTlRJRklFUiwgIiBTdWNjZWVkZWQiKTsKICAgICAgICAgY2FsbGJhY2soV1RGTW92ZShjaGFu
Z2VkS2V5cyksIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBTdWNjZWVkZWQsIFNlc3Npb25M
b2FkRmFpbHVyZTo6Tm9uZSk7CiAgICAgfQogfQogCiB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZh
aXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6Y2xvc2VTZXNzaW9uKGNvbnN0IFN0cmluZyYsIENsb3Nl
U2Vzc2lvbkNhbGxiYWNrJiYgY2FsbGJhY2spCiB7Ci0gICAgREVCVUdfTE9HX0lGX1BPU1NJQkxF
KExPR0lERU5USUZJRVIpOworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CiAgICAgaWYg
KG1fcmVxdWVzdExpY2Vuc2VDYWxsYmFjaykgewogICAgICAgICBtX3JlcXVlc3RMaWNlbnNlQ2Fs
bGJhY2soU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgbV9zZXNzaW9uSWQsIGZhbHNlLCBGYWlsZWQp
OwogICAgICAgICBBU1NFUlQoIW1fcmVxdWVzdExpY2Vuc2VDYWxsYmFjayk7CkBAIC0xMDQ3LDcg
KzEwMzksNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2Jq
Qzo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJgogICAgICAgICBhdXRvKiBjZXJ0aWZp
Y2F0ZSA9IG1faW5zdGFuY2UtPnNlcnZlckNlcnRpZmljYXRlKCk7CiAKICAgICAgICAgaWYgKCFt
X2luc3RhbmNlLT5wZXJzaXN0ZW50U3RhdGVBbGxvd2VkKCkgfHwgIXN0b3JhZ2VVUkwgfHwgIWNl
cnRpZmljYXRlKSB7Ci0gICAgICAgICAgICBERUJVR19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJ
RklFUiwgIiBGYWlsZWQsIHBlcnNpc3RlbnRTdGF0ZSBub3QgYWxsb3dlZCBvciBubyBzdG9yYWdl
VVJMIG9yIG5vIGNlcnRpZmljYXRlIik7CisgICAgICAgICAgICBFUlJPUl9MT0coTE9HSURFTlRJ
RklFUiwgIiBGYWlsZWQsIHBlcnNpc3RlbnRTdGF0ZSBub3QgYWxsb3dlZCBvciBubyBzdG9yYWdl
VVJMIG9yIG5vIGNlcnRpZmljYXRlIik7CiAgICAgICAgICAgICBjYWxsYmFjayh7IH0sIHN0ZDo6
bnVsbG9wdCwgRmFpbGVkKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMTA3
MSw3ICsxMDYzLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakM6OnJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYKICAgICAgICAgfQogCiAgICAg
ICAgIGlmICghZXhwaXJlZFNlc3Npb25zQXJyYXkuZ2V0KCkuY291bnQpIHsKLSAgICAgICAgICAg
IERFQlVHX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAiIFN1Y2NlZWRlZCwgbm8gZXhw
aXJlZCBzZXNzaW9ucyIpOworICAgICAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAi
IFN1Y2NlZWRlZCwgbm8gZXhwaXJlZCBzZXNzaW9ucyIpOwogICAgICAgICAgICAgY2FsbGJhY2so
V1RGTW92ZShjaGFuZ2VkS2V5cyksIHN0ZDo6bnVsbG9wdCwgU3VjY2VlZGVkKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMTA4MSw3ICsxMDczLDcgQEAgdm9pZCBDRE1JbnN0
YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlbW92ZVNlc3Npb25EYXRhKGNv
bnN0IFN0cmluZyYKICAgICAgICAgICAgIC8vIEl0IHNob3VsZCBub3QgYmUgcG9zc2libGUgdG8g
aGF2ZSBhIHBlcnNpc3RlbnQtdXNhZ2UtcmVjb3JkIHNlc3Npb24gdGhhdCBkb2VzIG5vdCBnZW5l
cmF0ZQogICAgICAgICAgICAgLy8gYSBwZXJzaXN0ZW50LXVzYWdlLXJlY29yZCBtZXNzYWdlIG9u
IGNsb3NlLiBTaWduYWwgdGhpcyBieSBmYWlsaW5nIGFuZCBhc3NlcnQuCiAgICAgICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIERFQlVHX0xPR19JRl9QT1NTSUJMRShM
T0dJREVOVElGSUVSLCAiIEZhaWxlZCwgbm8gZXhwaXJlZCBzZXNzaW9uIGRhdGEiKTsKKyAgICAg
ICAgICAgIEVSUk9SX0xPRyhMT0dJREVOVElGSUVSLCAiIEZhaWxlZCwgbm8gZXhwaXJlZCBzZXNz
aW9uIGRhdGEiKTsKICAgICAgICAgICAgIGNhbGxiYWNrKFdURk1vdmUoY2hhbmdlZEtleXMpLCBz
dGQ6Om51bGxvcHQsIEZhaWxlZCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAg
LTEwOTEsOSArMTA4Myw5IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDOjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmCiAgICAgICAgIFJldGFp
blB0cjxOU0RhdGE+IGV4cGlyZWRTZXNzaW9uc0RhdGEgPSBbTlNQcm9wZXJ0eUxpc3RTZXJpYWxp
emF0aW9uIGRhdGFXaXRoUHJvcGVydHlMaXN0OnByb3BlcnR5TGlzdCBmb3JtYXQ6TlNQcm9wZXJ0
eUxpc3RCaW5hcnlGb3JtYXRfdjFfMCBvcHRpb25zOmtDRlByb3BlcnR5TGlzdEltbXV0YWJsZSBl
cnJvcjpudWxscHRyXTsKIAogICAgICAgICBpZiAoZXhwaXJlZFNlc3Npb25zQ291bnQgPiAxKQot
ICAgICAgICAgICAgRVJST1JfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIsICJNdWx0aXBs
ZSgiLCBleHBpcmVkU2Vzc2lvbnNDb3VudCwgIikgZXhwaXJlZCBzZXNzaW9uIHJlcG9ydHMgZm91
bmQgd2l0aCBzYW1lIHNlc3Npb25JRCgiLCBzZXNzaW9uSWQsICIpISIpOworICAgICAgICAgICAg
RVJST1JfTE9HKExPR0lERU5USUZJRVIsICJNdWx0aXBsZSgiLCBleHBpcmVkU2Vzc2lvbnNDb3Vu
dCwgIikgZXhwaXJlZCBzZXNzaW9uIHJlcG9ydHMgZm91bmQgd2l0aCBzYW1lIHNlc3Npb25JRCgi
LCBzZXNzaW9uSWQsICIpISIpOwogCi0gICAgICAgIERFQlVHX0xPR19JRl9QT1NTSUJMRShMT0dJ
REVOVElGSUVSLCAiIFN1Y2NlZWRlZCIpOworICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJ
RVIsICIgU3VjY2VlZGVkIik7CiAgICAgICAgIGNhbGxiYWNrKFdURk1vdmUoY2hhbmdlZEtleXMp
LCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShleHBpcmVkU2Vzc2lvbnNEYXRhLmdldCgpKSwgU3VjY2Vl
ZGVkKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTExMjQsOCArMTExNiwxMCBAQCB2b2lk
IENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6Y2xlYXJDbGllbnQo
KQogdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFBy
b3ZpZGVSZXF1ZXN0KEFWQ29udGVudEtleVJlcXVlc3QgKnJlcXVlc3QpCiB7CiAgICAgYXV0byBp
bml0RGF0YVR5cGUgPSBpbml0VHlwZUZvclJlcXVlc3QocmVxdWVzdCk7Ci0gICAgaWYgKGluaXRE
YXRhVHlwZSA9PSBlbXB0eUF0b20oKSkKKyAgICBpZiAoaW5pdERhdGFUeXBlID09IGVtcHR5QXRv
bSgpKSB7CisgICAgICAgIEVSUk9SX0xPRyhMT0dJREVOVElGSUVSLCAiLSByZXF1ZXN0IGhhcyBl
bXB0eSBpbml0RGF0YVR5cGUiKTsKICAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIFJlcXVl
c3QgY3VycmVudFJlcXVlc3QgPSB7IGluaXREYXRhVHlwZSwgeyByZXF1ZXN0IH0gfTsKIApAQCAt
MTEzNCw2ICsxMTI4LDggQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0KEFWQ29udGVudEtleVIKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAorICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CisKICAgICBtX2N1cnJl
bnRSZXF1ZXN0ID0gY3VycmVudFJlcXVlc3Q7CiAgICAgbV9yZXF1ZXN0cy5hcHBlbmQoV1RGTW92
ZShjdXJyZW50UmVxdWVzdCkpOwogCkBAIC0xMTc4LDcgKzExNzQsNyBAQCB2b2lkIENETUluc3Rh
bmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3QoQVZD
b250ZW50S2V5UgogICAgICAgICAgICAgfSk7CiAgICAgICAgIH1dOwogICAgIH0gQGNhdGNoKE5T
RXhjZXB0aW9uICpleGNlcHRpb24pIHsKLSAgICAgICAgRVJST1JfTE9HX0lGX1BPU1NJQkxFKExP
R0lERU5USUZJRVIsICJleGNlcHRpb24gdGhyb3duIGZyb20gLW1ha2VTdHJlYW1pbmdDb250ZW50
S2V5UmVxdWVzdERhdGFGb3JBcHA6Y29udGVudElkZW50aWZpZXI6b3B0aW9uczpjb21wbGV0aW9u
SGFuZGxlcjogIiwgW1tleGNlcHRpb24gbmFtZV0gVVRGOFN0cmluZ10sICIsIHJlYXNvbiA6ICIs
IFtbZXhjZXB0aW9uIHJlYXNvbl0gVVRGOFN0cmluZ10pOworICAgICAgICBFUlJPUl9MT0coTE9H
SURFTlRJRklFUiwgImV4Y2VwdGlvbiB0aHJvd24gZnJvbSAtbWFrZVN0cmVhbWluZ0NvbnRlbnRL
ZXlSZXF1ZXN0RGF0YUZvckFwcDpjb250ZW50SWRlbnRpZmllcjpvcHRpb25zOmNvbXBsZXRpb25I
YW5kbGVyOiAiLCBbW2V4Y2VwdGlvbiBuYW1lXSBVVEY4U3RyaW5nXSwgIiwgcmVhc29uIDogIiwg
W1tleGNlcHRpb24gcmVhc29uXSBVVEY4U3RyaW5nXSk7CiAgICAgICAgIGlmIChtX3VwZGF0ZUxp
Y2Vuc2VDYWxsYmFjaykKICAgICAgICAgICAgIG1fdXBkYXRlTGljZW5zZUNhbGxiYWNrKGZhbHNl
LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBGYWlsZWQpOwogICAg
ICAgICBBU1NFUlQoIW1fdXBkYXRlTGljZW5zZUNhbGxiYWNrKTsKQEAgLTEyMDcsNiArMTIwMyw4
IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQ
cm92aWRlUmVxdWVzdHMoVmVjdG9yPFJldGFpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAg
ICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworCiAgICAgbV9jdXJyZW50UmVxdWVzdCA9IGN1
cnJlbnRSZXF1ZXN0OwogICAgIG1fcmVxdWVzdHMuYXBwZW5kKFdURk1vdmUoY3VycmVudFJlcXVl
c3QpKTsKIApAQCAtMTI3OSw3ICsxMjc3LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWly
UGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0cyhWZWN0b3I8UmV0YWkKICAg
ICAgICAgICAgIH1dOwogICAgICAgICB9CiAgICAgfSBAY2F0Y2goTlNFeGNlcHRpb24gKmV4Y2Vw
dGlvbikgewotICAgICAgICBFUlJPUl9MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwgImV4
Y2VwdGlvbiB0aHJvd24gZnJvbSAtbWFrZVN0cmVhbWluZ0NvbnRlbnRLZXlSZXF1ZXN0RGF0YUZv
ckFwcDpjb250ZW50SWRlbnRpZmllcjpvcHRpb25zOmNvbXBsZXRpb25IYW5kbGVyOiAiLCBbW2V4
Y2VwdGlvbiBuYW1lXSBVVEY4U3RyaW5nXSwgIiwgcmVhc29uIDogIiwgW1tleGNlcHRpb24gcmVh
c29uXSBVVEY4U3RyaW5nXSk7CisgICAgICAgIEVSUk9SX0xPRyhMT0dJREVOVElGSUVSLCAiZXhj
ZXB0aW9uIHRocm93biBmcm9tIC1tYWtlU3RyZWFtaW5nQ29udGVudEtleVJlcXVlc3REYXRhRm9y
QXBwOmNvbnRlbnRJZGVudGlmaWVyOm9wdGlvbnM6Y29tcGxldGlvbkhhbmRsZXI6ICIsIFtbZXhj
ZXB0aW9uIG5hbWVdIFVURjhTdHJpbmddLCAiLCByZWFzb24gOiAiLCBbW2V4Y2VwdGlvbiByZWFz
b25dIFVURjhTdHJpbmddKTsKICAgICAgICAgaWYgKG1fcmVxdWVzdExpY2Vuc2VDYWxsYmFjaykK
ICAgICAgICAgICAgIG1fcmVxdWVzdExpY2Vuc2VDYWxsYmFjayhTaGFyZWRCdWZmZXI6OmNyZWF0
ZSgpLCBtX3Nlc3Npb25JZCwgZmFsc2UsIEZhaWxlZCk7CiAgICAgICAgIEFTU0VSVCghbV9yZXF1
ZXN0TGljZW5zZUNhbGxiYWNrKTsKQEAgLTEyOTksNiArMTI5Nyw4IEBAIHZvaWQgQ0RNSW5zdGFu
Y2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVuZXdpbmdSZXF1
ZXN0KEFWQ29uCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBBTFdBWVNfTE9HKExPR0lE
RU5USUZJRVIpOworCiAgICAgbV9jdXJyZW50UmVxdWVzdCA9IGN1cnJlbnRSZXF1ZXN0OwogCiAg
ICAgLy8gVGhlIGFzc3VtcHRpb24gaGVyZSBpcyB0aGF0IEFWQ29udGVudEtleVJlcXVlc3Qgd2ls
bCBvbmx5IGV2ZXIgbm90aWZ5IHVzIG9mIGEgcmVuZXdpbmcgcmVxdWVzdCBhcyBhIHJlc3VsdCBv
ZiBjYWxsaW5nCkBAIC0xMzI3LDcgKzEzMjcsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZh
aXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlbmV3aW5nUmVxdWVzdChBVkNvbgog
ICAgICAgICAgICAgfSk7CiAgICAgICAgIH1dOwogICAgIH0gQGNhdGNoKE5TRXhjZXB0aW9uICpl
eGNlcHRpb24pIHsKLSAgICAgICAgRVJST1JfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIs
ICJleGNlcHRpb24gdGhyb3duIGZyb20gLW1ha2VTdHJlYW1pbmdDb250ZW50S2V5UmVxdWVzdERh
dGFGb3JBcHA6Y29udGVudElkZW50aWZpZXI6b3B0aW9uczpjb21wbGV0aW9uSGFuZGxlcjogIiwg
W1tleGNlcHRpb24gbmFtZV0gVVRGOFN0cmluZ10sICIsIHJlYXNvbiA6ICIsIFtbZXhjZXB0aW9u
IHJlYXNvbl0gVVRGOFN0cmluZ10pOworICAgICAgICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwg
ImV4Y2VwdGlvbiB0aHJvd24gZnJvbSAtbWFrZVN0cmVhbWluZ0NvbnRlbnRLZXlSZXF1ZXN0RGF0
YUZvckFwcDpjb250ZW50SWRlbnRpZmllcjpvcHRpb25zOmNvbXBsZXRpb25IYW5kbGVyOiAiLCBb
W2V4Y2VwdGlvbiBuYW1lXSBVVEY4U3RyaW5nXSwgIiwgcmVhc29uIDogIiwgW1tleGNlcHRpb24g
cmVhc29uXSBVVEY4U3RyaW5nXSk7CiAgICAgICAgIGlmIChtX3VwZGF0ZUxpY2Vuc2VDYWxsYmFj
aykKICAgICAgICAgICAgIG1fdXBkYXRlTGljZW5zZUNhbGxiYWNrKGZhbHNlLCBzdGQ6Om51bGxv
cHQsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBGYWlsZWQpOwogICAgICAgICBBU1NFUlQo
IW1fdXBkYXRlTGljZW5zZUNhbGxiYWNrKTsKQEAgLTEzNDQsNiArMTM0NCw3IEBAIHZvaWQgQ0RN
SW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRGYWlsVG9Qcm92aWRl
UmVxdWVzdChBVkNvbnRlCiAgICAgLy8gdGhlIGtleSByZXF1aXJlcyBhIGhpZ2hlciBsZXZlbCBv
ZiBzZWN1cml0eSB0aGFuIGl0IGlzIGN1cnJlbnRseSBhYmxlCiAgICAgLy8gdG8gcHJvdmlkZSwg
c2lnbmFsIHRoaXMgc3RhdGUgYnkgInN1Y2NlZWRpbmciLCBidXQgc2V0IHRoZSBrZXkgc3RhdHVz
CiAgICAgLy8gdG8gIm91dHB1dC1yZXN0cmljdGVkIi4KKyAgICBFUlJPUl9MT0coTE9HSURFTlRJ
RklFUiwgIi0gZXJyb3I6ICIsIFN0cmluZyB7IGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uIH0p
OwogCiAgICAgaWYgKGVycm9yLmNvZGUgPT0gU2VjdXJpdHlMZXZlbEVycm9yKSB7CiAgICAgICAg
IHJlcXVlc3REaWRTdWNjZWVkKHJlcXVlc3QpOwpAQCAtMTM2Nyw2ICsxMzY4LDggQEAgdm9pZCBD
RE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZEZhaWxUb1Byb3Zp
ZGVSZXF1ZXN0KEFWQ29udGUKIAogdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVh
bWluZ0FWRk9iakM6OnJlcXVlc3REaWRTdWNjZWVkKEFWQ29udGVudEtleVJlcXVlc3QgKnJlcXVl
c3QpCiB7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKwogICAgIHVwZGF0ZUtleVN0
YXR1c2VzKCk7CiAKICAgICBpZiAobV91cGRhdGVSZXNwb25zZUNvbGxlY3RvcikgewpAQCAtMTUx
NCw3ICsxNTE3LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakM6Om91dHB1dE9ic2N1cmVkRHVlVG9JbnN1ZmZpY2llbnQKICAgICBpZiAob2JzY3VyZWQg
PT0gbV9vdXRwdXRPYnNjdXJlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQUxXQVlTX0xPR19J
Rl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCBvYnNjdXJlZCk7CisgICAgQUxXQVlTX0xPRyhMT0dJ
REVOVElGSUVSLCBvYnNjdXJlZCk7CiAgICAgbV9vdXRwdXRPYnNjdXJlZCA9IG9ic2N1cmVkOwog
CiAgICAgdXBkYXRlS2V5U3RhdHVzZXMoKTsKQEAgLTE1NTQsMTIgKzE1NTcsMTIgQEAgc3RkOjpv
cHRpb25hbDxDRE1LZXlTdGF0dXM+IENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQzo6cHJvdGVjdGkKICAgICAgICAgLy8gd2lsbE91dHB1dEJlT2JzY3VyZWREdWVUb0lu
c3VmZmljaWVudEV4dGVybmFsUHJvdGVjdGlvbkZvckRpc3BsYXlzIHdpbGwgYWx3YXlzIHJldHVy
biAiWUVTIiBwcmlvciB0bwogICAgICAgICAvLyByZWNlaXZpbmcgYSByZXNwb25zZS4KICAgICAg
ICAgaWYgKHJlcXVlc3Quc3RhdHVzICE9IEFWQ29udGVudEtleVJlcXVlc3RTdGF0dXNSZWNlaXZl
ZFJlc3BvbnNlICYmIHJlcXVlc3Quc3RhdHVzICE9IEFWQ29udGVudEtleVJlcXVlc3RTdGF0dXNS
ZW5ld2VkKSB7Ci0gICAgICAgICAgICBBTFdBWVNfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJ
RVIsICJyZXF1ZXN0IGhhcyBpbnN1ZmZpY2llbnQgc3RhdHVzICIsIChpbnQpcmVxdWVzdC5zdGF0
dXMpOworICAgICAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAicmVxdWVzdCBoYXMg
aW5zdWZmaWNpZW50IHN0YXR1cyAiLCAoaW50KXJlcXVlc3Quc3RhdHVzKTsKICAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KIAogICAgICAgICBhdXRvIG9ic2N1cmVk
ID0gW3JlcXVlc3Qgd2lsbE91dHB1dEJlT2JzY3VyZWREdWVUb0luc3VmZmljaWVudEV4dGVybmFs
UHJvdGVjdGlvbkZvckRpc3BsYXlzOkBbIF1dOwotICAgICAgICBBTFdBWVNfTE9HX0lGX1BPU1NJ
QkxFKExPR0lERU5USUZJRVIsICJyZXF1ZXN0IHsgIiwga2V5SURzRm9yUmVxdWVzdChyZXF1ZXN0
KSwgIiB9IHdpbGxPdXRwdXRCZU9ic2N1cmVkLi4uZm9yRGlzcGxheXM6WyBuaWwgXSA9ICIsIG9i
c2N1cmVkID8gInRydWUiIDogImZhbHNlIik7CisgICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJ
RklFUiwgInJlcXVlc3QgeyAiLCBrZXlJRHNGb3JSZXF1ZXN0KHJlcXVlc3QpLCAiIH0gd2lsbE91
dHB1dEJlT2JzY3VyZWQuLi5mb3JEaXNwbGF5czpbIG5pbCBdID0gIiwgb2JzY3VyZWQgPyAidHJ1
ZSIgOiAiZmFsc2UiKTsKICAgICAgICAgcmV0dXJuIG9ic2N1cmVkID8gQ0RNS2V5U3RhdHVzOjpP
dXRwdXRSZXN0cmljdGVkIDogQ0RNS2V5U3RhdHVzOjpVc2FibGU7CiAgICAgfQogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9DRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNl
c3Npb24uaAppbmRleCA2YzA1ZTJmOGIxMDNiODUxNzQ3Y2M5YTM1NDNjZDUxYzlhZThjMzgwLi45
MGQyNzNkMDc5NjFmYzk4NmZiN2M0NTZmZjczMzYyYzE0ZWM1ZDU2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9u
QVZDb250ZW50S2V5U2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uLmgKQEAg
LTQyLDcgKzQyLDcgQEAgY2xhc3MgQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzsKIGNsYXNz
IENETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uIDogcHVibGljIENETVNlc3Npb25NZWRpYVNv
dXJjZUFWRk9iakMgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAg
IENETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uKFZlY3RvcjxpbnQ+JiYgcHJvdG9jb2xWZXJz
aW9ucywgaW50IGNkbVZlcnNpb24sIENETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMmLCBMZWdh
Y3lDRE1TZXNzaW9uQ2xpZW50Kik7CisgICAgQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24o
VmVjdG9yPGludD4mJiBwcm90b2NvbFZlcnNpb25zLCBpbnQgY2RtVmVyc2lvbiwgQ0RNUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQyYsIExlZ2FjeUNETVNlc3Npb25DbGllbnQmKTsKICAgICB2aXJ0
dWFsIH5DRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbigpOwogCiAgICAgc3RhdGljIGJvb2wg
aXNBdmFpbGFibGUoKTsKQEAgLTY2LDYgKzY2LDEwIEBAIHByb3RlY3RlZDoKICAgICBib29sIGhh
c0NvbnRlbnRLZXlTZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50S2V5U2Vzc2lvbjsg
fQogICAgIEFWQ29udGVudEtleVNlc3Npb24qIGNvbnRlbnRLZXlTZXNzaW9uKCk7CiAKKyNpZiAh
UkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBjb25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSBjb25z
dCB7IHJldHVybiAiQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24iOyB9CisjZW5kaWYKKwog
ICAgIFJldGFpblB0cjxBVkNvbnRlbnRLZXlTZXNzaW9uPiBtX2NvbnRlbnRLZXlTZXNzaW9uOwog
ICAgIFJldGFpblB0cjxXZWJDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbkRlbGVnYXRlPiBt
X2NvbnRlbnRLZXlTZXNzaW9uRGVsZWdhdGU7CiAgICAgUmV0YWluUHRyPEFWQ29udGVudEtleVJl
cXVlc3Q+IG1fa2V5UmVxdWVzdDsKQEAgLTc2LDYgKzgwLDExIEBAIHByb3RlY3RlZDoKICAgICBp
bnQgbV9jZG1WZXJzaW9uOwogICAgIGludDMyX3QgbV9wcm90ZWN0ZWRUcmFja0lEIHsgMSB9Owog
ICAgIGVudW0geyBOb3JtYWwsIEtleVJlbGVhc2UgfSBtX21vZGU7CisKKyNpZiAhUkVMRUFTRV9M
T0dfRElTQUJMRUQKKyAgICBSZWY8Y29uc3QgTG9nZ2VyPiBtX2xvZ2dlcjsKKyAgICBjb25zdCB2
b2lkKiBtX2xvZ0lkZW50aWZpZXI7CisjZW5kaWYKIH07CiAKIGlubGluZSBDRE1TZXNzaW9uQVZD
b250ZW50S2V5U2Vzc2lvbiogdG9DRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbihMZWdhY3lD
RE1TZXNzaW9uKiBzZXNzaW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24u
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9D
RE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbi5tbQppbmRleCA3ZDU5M2E2MGQ2NjMyYjk5NjJm
ZjQ5NTYxYTBlNzFiY2RjZTYwOTcxLi43MmEwOTUzMDljODQ1YmRjY2ZkZTcwN2JlNGI3MDcwYzVk
NTFlYmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbi5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9u
QVZDb250ZW50S2V5U2Vzc2lvbi5tbQpAQCAtMTA1LDEzICsxMDUsMTggQEAgQGVuZAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLUNETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uOjpDRE1TZXNz
aW9uQVZDb250ZW50S2V5U2Vzc2lvbihWZWN0b3I8aW50PiYmIHByb3RvY29sVmVyc2lvbnMsIGlu
dCBjZG1WZXJzaW9uLCBDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDJiBjZG0sIExlZ2FjeUNE
TVNlc3Npb25DbGllbnQqIGNsaWVudCkKK0NETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uOjpD
RE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbihWZWN0b3I8aW50PiYmIHByb3RvY29sVmVyc2lv
bnMsIGludCBjZG1WZXJzaW9uLCBDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDJiBjZG0sIExl
Z2FjeUNETVNlc3Npb25DbGllbnQmIGNsaWVudCkKICAgICA6IENETVNlc3Npb25NZWRpYVNvdXJj
ZUFWRk9iakMoY2RtLCBjbGllbnQpCiAgICAgLCBtX2NvbnRlbnRLZXlTZXNzaW9uRGVsZWdhdGUo
YWRvcHROUyhbW1dlYkNETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uRGVsZWdhdGUgYWxsb2Nd
IGluaXRXaXRoUGFyZW50OnRoaXNdKSkKICAgICAsIG1fcHJvdG9jb2xWZXJzaW9ucyhXVEZNb3Zl
KHByb3RvY29sVmVyc2lvbnMpKQogICAgICwgbV9jZG1WZXJzaW9uKGNkbVZlcnNpb24pCiAgICAg
LCBtX21vZGUoTm9ybWFsKQorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgICwgbV9sb2dn
ZXIoY2xpZW50LmxvZ2dlcigpKQorICAgICwgbV9sb2dJZGVudGlmaWVyKGNsaWVudC5sb2dJZGVu
dGlmaWVyKCkpCisjZW5kaWYKIHsKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOwogfQog
CiBDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6fkNETVNlc3Npb25BVkNvbnRlbnRLZXlT
ZXNzaW9uKCkKQEAgLTEzMyw3ICsxMzgsNyBAQCBSZWZQdHI8VWludDhBcnJheT4gQ0RNU2Vzc2lv
bkFWQ29udGVudEtleVNlc3Npb246OmdlbmVyYXRlS2V5UmVxdWVzdChjb25zdCBTdHJpbgogICAg
IFVOVVNFRF9QQVJBTShkZXN0aW5hdGlvblVSTCk7CiAgICAgQVNTRVJUKGluaXREYXRhKTsKIAot
ICAgIExPRyhNZWRpYSwgIkNETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uOjpnZW5lcmF0ZUtl
eVJlcXVlc3QoJXApIiwgdGhpcyk7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAibWlt
ZVR5cGU6ICIsIG1pbWVUeXBlKTsKIAogICAgIGVycm9yQ29kZSA9IE1lZGlhUGxheWVyOjpOb0Vy
cm9yOwogICAgIHN5c3RlbUNvZGUgPSAwOwpAQCAtMTY0LDcgKzE2OSw3IEBAIHZvaWQgQ0RNU2Vz
c2lvbkFWQ29udGVudEtleVNlc3Npb246OnJlbGVhc2VLZXlzKCkKICAgICAgICAgZm9yIChhdXRv
JiBzb3VyY2VCdWZmZXIgOiBtX3NvdXJjZUJ1ZmZlcnMpCiAgICAgICAgICAgICBzb3VyY2VCdWZm
ZXItPmZsdXNoKCk7CiAKLSAgICAgICAgTE9HKE1lZGlhLCAiQ0RNU2Vzc2lvbkFWQ29udGVudEtl
eVNlc3Npb246OnJlbGVhc2VLZXlzKCVwKSAtIGV4cGlyaW5nIHN0cmVhbSBzZXNzaW9uIiwgdGhp
cyk7CisgICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgImV4cGlyaW5nIHN0cmVhbSBz
ZXNzaW9uIik7CiAgICAgICAgIFtjb250ZW50S2V5U2Vzc2lvbigpIGV4cGlyZV07CiAKICAgICAg
ICAgaWYgKCFtX2NlcnRpZmljYXRlKQpAQCAtMTg3LDcgKzE5Miw3IEBAIHZvaWQgQ0RNU2Vzc2lv
bkFWQ29udGVudEtleVNlc3Npb246OnJlbGVhc2VLZXlzKCkKICAgICAgICAgICAgICAgICBjb250
aW51ZTsKIAogICAgICAgICAgICAgaWYgKG1fc2Vzc2lvbklkID09IFN0cmluZyhwbGF5YmFja1Nl
c3Npb25JZFZhbHVlKSkgewotICAgICAgICAgICAgICAgIExPRyhNZWRpYSwgIkNETVNlc3Npb25B
VkNvbnRlbnRLZXlTZXNzaW9uOjpyZWxlYXNlS2V5cyglcCkgLSBmb3VuZCBzZXNzaW9uLCBzZW5k
aW5nIGV4cGlyYXRpb24gbWVzc2FnZSIpOworICAgICAgICAgICAgICAgIEFMV0FZU19MT0coTE9H
SURFTlRJRklFUiwgImZvdW5kIHNlc3Npb24sIHNlbmRpbmcgZXhwaXJhdGlvbiBtZXNzYWdlIik7
CiAgICAgICAgICAgICAgICAgbV9leHBpcmVkU2Vzc2lvbiA9IGV4cGlyZWRTZXNzaW9uRGF0YTsK
ICAgICAgICAgICAgICAgICBtX2NsaWVudC0+c2VuZE1lc3NhZ2UoVWludDhBcnJheTo6Y3JlYXRl
KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihbbV9leHBpcmVkU2Vzc2lvbiBieXRlc10pLCBb
bV9leHBpcmVkU2Vzc2lvbiBsZW5ndGhdKS5wdHIoKSwgZW1wdHlTdHJpbmcoKSk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CkBAIC0yMTcsNyArMjIyLDcgQEAgYm9vbCBDRE1TZXNzaW9uQVZDb250
ZW50S2V5U2Vzc2lvbjo6dXBkYXRlKFVpbnQ4QXJyYXkqIGtleSwgUmVmUHRyPFVpbnQ4QXJyYXk+
JgogICAgIFVOVVNFRF9QQVJBTShuZXh0TWVzc2FnZSk7CiAKICAgICBpZiAoaXNFcXVhbChrZXks
ICJhY2tub3dsZWRnZWQiKSkgewotICAgICAgICBMT0coTWVkaWEsICJDRE1TZXNzaW9uQVZDb250
ZW50S2V5U2Vzc2lvbjo6dXBkYXRlKCVwKSAtIGFja25vd2xlZGluZyBzZWN1cmUgc3RvcCBtZXNz
YWdlIiwgdGhpcyk7CisgICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgImFja25vd2xl
ZGluZyBzZWN1cmUgc3RvcCBtZXNzYWdlIik7CiAKICAgICAgICAgU3RyaW5nIHN0b3JhZ2VQYXRo
ID0gdGhpcy0+c3RvcmFnZVBhdGgoKTsKICAgICAgICAgaWYgKCFtX2V4cGlyZWRTZXNzaW9uIHx8
IHN0b3JhZ2VQYXRoLmlzRW1wdHkoKSkgewpAQCAtMjQwLDcgKzI0NSw3IEBAIGJvb2wgQ0RNU2Vz
c2lvbkFWQ29udGVudEtleVNlc3Npb246OnVwZGF0ZShVaW50OEFycmF5KiBrZXksIFJlZlB0cjxV
aW50OEFycmF5PiYKIAogICAgIGJvb2wgc2hvdWxkR2VuZXJhdGVLZXlSZXF1ZXN0ID0gIW1fY2Vy
dGlmaWNhdGUgfHwgaXNFcXVhbChrZXksICJyZW5ldyIpOwogICAgIGlmICghbV9jZXJ0aWZpY2F0
ZSkgewotICAgICAgICBMT0coTWVkaWEsICJDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6
dXBkYXRlKCVwKSAtIGNlcnRpZmljYXRlIGRhdGEiLCB0aGlzKTsKKyAgICAgICAgQUxXQVlTX0xP
RyhMT0dJREVOVElGSUVSLCAiY2VydGlmaWNhdGUgZGF0YSIpOwogCiAgICAgICAgIG1fY2VydGlm
aWNhdGUgPSBrZXk7CiAgICAgfQpAQCAtMjk3LDE0ICszMDIsMTYgQEAgYm9vbCBDRE1TZXNzaW9u
QVZDb250ZW50S2V5U2Vzc2lvbjo6dXBkYXRlKFVpbnQ4QXJyYXkqIGtleSwgUmVmUHRyPFVpbnQ4
QXJyYXk+JgogICAgICAgICBpZiAoZXJyb3IpIHsKICAgICAgICAgICAgIGVycm9yQ29kZSA9IExl
Z2FjeUNETTo6RG9tYWluRXJyb3I7CiAgICAgICAgICAgICBzeXN0ZW1Db2RlID0gbWVkaWFLZXlF
cnJvclN5c3RlbUNvZGUoZXJyb3IpOworICAgICAgICAgICAgRVJST1JfTE9HKExPR0lERU5USUZJ
RVIsICJlcnJvcjogIiwgU3RyaW5nKGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKSk7CiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAorICAgICAgICBBTFdBWVNfTE9HKExP
R0lERU5USUZJRVIsICJnZW5lcmF0ZWQga2V5IHJlcXVlc3QiKTsKICAgICAgICAgbmV4dE1lc3Nh
Z2UgPSBVaW50OEFycmF5Ojp0cnlDcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KFty
ZXF1ZXN0RGF0YSBieXRlc10pLCBbcmVxdWVzdERhdGEgbGVuZ3RoXSk7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAKLSAgICBMT0coTWVkaWEsICJDRE1TZXNzaW9uQVZDb250ZW50S2V5
U2Vzc2lvbjo6dXBkYXRlKCVwKSAtIGtleSBkYXRhIiwgdGhpcyk7CisgICAgQUxXQVlTX0xPRyhM
T0dJREVOVElGSUVSLCAicHJvY2Vzc2luZyBrZXkgcmVzcG9uc2UiKTsKICAgICBlcnJvckNvZGUg
PSBNZWRpYVBsYXllcjo6Tm9FcnJvcjsKICAgICBzeXN0ZW1Db2RlID0gMDsKICAgICBSZXRhaW5Q
dHI8TlNEYXRhPiBrZXlEYXRhID0gYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCeXRl
czprZXktPmRhdGEoKSBsZW5ndGg6a2V5LT5sZW5ndGgoKV0pOwpAQCAtMzI0LDYgKzMzMSw3IEBA
IFJlZlB0cjxBcnJheUJ1ZmZlcj4gQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb246OmNhY2hl
ZEtleUZvcktleUlEKGNvbnN0IFN0cmluCiAKIHZvaWQgQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNl
c3Npb246OmFkZFBhcnNlcihBVlN0cmVhbURhdGFQYXJzZXIqIHBhcnNlcikKIHsKKyAgICBJTkZP
X0xPRyhMT0dJREVOVElGSUVSKTsKICAgICBpZiAoW2NvbnRlbnRLZXlTZXNzaW9uKCkgcmVzcG9u
ZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihhZGRDb250ZW50S2V5UmVjaXBpZW50OildKQogICAgICAg
ICBbY29udGVudEtleVNlc3Npb24oKSBhZGRDb250ZW50S2V5UmVjaXBpZW50OnBhcnNlcl07CiAg
ICAgZWxzZQpAQCAtMzMyLDYgKzM0MCw3IEBAIHZvaWQgQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNl
c3Npb246OmFkZFBhcnNlcihBVlN0cmVhbURhdGFQYXJzZXIqIHBhcnNlcikKIAogdm9pZCBDRE1T
ZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6cmVtb3ZlUGFyc2VyKEFWU3RyZWFtRGF0YVBhcnNl
ciogcGFyc2VyKQogeworICAgIElORk9fTE9HKExPR0lERU5USUZJRVIpOwogICAgIGlmIChbY29u
dGVudEtleVNlc3Npb24oKSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHJlbW92ZUNvbnRl
bnRLZXlSZWNpcGllbnQ6KV0pCiAgICAgICAgIFtjb250ZW50S2V5U2Vzc2lvbigpIHJlbW92ZUNv
bnRlbnRLZXlSZWNpcGllbnQ6cGFyc2VyXTsKICAgICBlbHNlCkBAIC0zNTIsMTQgKzM2MSwxNCBA
QCBSZWZQdHI8VWludDhBcnJheT4gQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb246OmdlbmVy
YXRlS2V5UmVsZWFzZU1lc3NhZ2UodW5zaQogCiAgICAgTlNBcnJheSogZXhwaXJlZFNlc3Npb25z
ID0gW1BBTDo6Z2V0QVZDb250ZW50S2V5U2Vzc2lvbkNsYXNzKCkgcGVuZGluZ0V4cGlyZWRTZXNz
aW9uUmVwb3J0c1dpdGhBcHBJZGVudGlmaWVyOmNlcnRpZmljYXRlRGF0YS5nZXQoKSBzdG9yYWdl
RGlyZWN0b3J5QXRVUkw6W05TVVJMIGZpbGVVUkxXaXRoUGF0aDpzdG9yYWdlUGF0aF1dOwogICAg
IGlmICghW2V4cGlyZWRTZXNzaW9ucyBjb3VudF0pIHsKLSAgICAgICAgTE9HKE1lZGlhLCAiQ0RN
U2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb246OmdlbmVyYXRlS2V5UmVsZWFzZU1lc3NhZ2UoJXAp
IC0gbm8gZXhwaXJlZCBzZXNzaW9ucyBmb3VuZCIsIHRoaXMpOworICAgICAgICBBTFdBWVNfTE9H
KExPR0lERU5USUZJRVIsICJubyBleHBpcmVkIHNlc3Npb25zIGZvdW5kIik7CiAKICAgICAgICAg
ZXJyb3JDb2RlID0gTWVkaWFQbGF5ZXI6OktleVN5c3RlbU5vdFN1cHBvcnRlZDsKICAgICAgICAg
c3lzdGVtQ29kZSA9ICchbW9yJzsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0g
ICAgTE9HKE1lZGlhLCAiQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb246OmdlbmVyYXRlS2V5
UmVsZWFzZU1lc3NhZ2UoJXApIC0gZm91bmQgJWQgZXhwaXJlZCBzZXNzaW9ucyIsIHRoaXMsIFtl
eHBpcmVkU2Vzc2lvbnMgY291bnRdKTsKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJm
b3VuZCAiLCBbZXhwaXJlZFNlc3Npb25zIGNvdW50XSwgIiBleHBpcmVkIHNlc3Npb25zIik7CiAK
ICAgICBlcnJvckNvZGUgPSAwOwogICAgIHN5c3RlbUNvZGUgPSAwOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lv
bkFWRm91bmRhdGlvbk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDLmgKaW5kZXggOTU5MThm
MDNlNWRiZmJjN2Q1Nzc3YjczNGFmOGZiMWU1MTBjMzczMi4uNzkxMGJjNGRkYzJkMWRjOWMyYWMx
ZThmODNlNjNlNjc4YmY2N2NkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9D
RE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5oCkBAIC00MiwxMSArNDIsMTAgQEAgY2xhc3MgTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzsKIGNsYXNzIENETVNlc3Npb25BVkZvdW5k
YXRpb25PYmpDIGZpbmFsIDogcHVibGljIExlZ2FjeUNETVNlc3Npb24sIHB1YmxpYyBDYW5NYWtl
V2Vha1B0cjxDRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQz4gewogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgotICAgIENETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDKE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMqIHBhcmVudCwgTGVnYWN5Q0RNU2Vzc2lvbkNs
aWVudCopOworICAgIENETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDKE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMqIHBhcmVudCwgTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCYpOwogICAg
IHZpcnR1YWwgfkNETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDKCk7CiAKICAgICBMZWdhY3lDRE1T
ZXNzaW9uVHlwZSB0eXBlKCkgb3ZlcnJpZGUgeyByZXR1cm4gQ0RNU2Vzc2lvblR5cGVBVkZvdW5k
YXRpb25PYmpDOyB9Ci0gICAgdm9pZCBzZXRDbGllbnQoTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCog
Y2xpZW50KSBvdmVycmlkZSB7IG1fY2xpZW50ID0gY2xpZW50OyB9CiAgICAgY29uc3QgU3RyaW5n
JiBzZXNzaW9uSWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3Nlc3Npb25JZDsgfQogICAg
IFJlZlB0cjxVaW50OEFycmF5PiBnZW5lcmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgVWludDhBcnJheSogaW5pdERhdGEsIFN0cmluZyYgZGVzdGluYXRpb25VUkwsIHVuc2ln
bmVkIHNob3J0JiBlcnJvckNvZGUsIHVpbnQzMl90JiBzeXN0ZW1Db2RlKSBvdmVycmlkZTsKICAg
ICB2b2lkIHJlbGVhc2VLZXlzKCkgb3ZlcnJpZGU7CkBAIC01NiwxMCArNTUsMjIgQEAgcHVibGlj
OgogICAgIHZvaWQgcGxheWVyRGlkUmVjZWl2ZUVycm9yKE5TRXJyb3IgKik7CiAKIHByaXZhdGU6
CisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgY29uc3QgTG9nZ2VyJiBsb2dnZXIoKSBj
b25zdCB7IHJldHVybiBtX2xvZ2dlcjsgfQorICAgIGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIo
KSBjb25zdCB7IHJldHVybiBtX2xvZ0lkZW50aWZpZXI7IH0KKyAgICBjb25zdCBjaGFyKiBsb2dD
bGFzc05hbWUoKSBjb25zdCB7IHJldHVybiAiQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMiOyB9
CisgICAgV1RGTG9nQ2hhbm5lbCYgbG9nQ2hhbm5lbCgpIGNvbnN0OworI2VuZGlmCisKICAgICBX
ZWFrUHRyPE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM+IG1fcGFyZW50OwotICAg
IExlZ2FjeUNETVNlc3Npb25DbGllbnQqIG1fY2xpZW50OworICAgIFdlYWtQdHI8TGVnYWN5Q0RN
U2Vzc2lvbkNsaWVudD4gbV9jbGllbnQ7CiAgICAgU3RyaW5nIG1fc2Vzc2lvbklkOwogICAgIFJl
dGFpblB0cjxBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdD4gbV9yZXF1ZXN0OworCisjaWYg
IVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgUmVmPGNvbnN0IExvZ2dlcj4gbV9sb2dnZXI7Cisg
ICAgY29uc3Qgdm9pZCogbV9sb2dJZGVudGlmaWVyOworI2VuZGlmCiB9OwogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9D
RE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDLm1tCmlu
ZGV4IDYwNzZmYThjYzA5MmRlNWNkMTFjMGFkN2ViM2EwYjhiMDU4ODZhMjUuLjliNmU4N2IxNDU2
NTU2ZWUyNjc5ZjM4YWVhMGZiYWU0MDIzMTgwZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkZvdW5kYXRp
b25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0NETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDLm1tCkBAIC0zMCw2ICszMCw3IEBA
CiAKICNpbXBvcnQgIkxlZ2FjeUNETS5oIgogI2ltcG9ydCAiTGVnYWN5Q0RNU2Vzc2lvbi5oIgor
I2ltcG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCAiTWVkaWFQbGF5ZXIuaCIKICNpbXBvcnQgIk1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaCIKICNpbXBvcnQgIldlYkNvcmVOU0Vy
cm9yRXh0cmFzLmgiCkBAIC0zNywyMSArMzgsMjggQEAKICNpbXBvcnQgPEFWRm91bmRhdGlvbi9B
VkFzc2V0UmVzb3VyY2VMb2FkZXIuaD4KICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL1R5cGVkQXJy
YXlJbmxpbmVzLmg+CiAjaW1wb3J0IDxvYmpjL29iamMtcnVudGltZS5oPgorI2ltcG9ydCA8d3Rm
L0xvZ2dlckhlbHBlci5oPgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KICNpbXBvcnQgPHd0
Zi9Tb2Z0TGlua2luZy5oPgogI2ltcG9ydCA8d3RmL1VVSUQuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQzo6Q0RNU2Vzc2lvbkFWRm91bmRhdGlv
bk9iakMoTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyogcGFyZW50LCBMZWdhY3lD
RE1TZXNzaW9uQ2xpZW50KiBjbGllbnQpCitDRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQzo6Q0RN
U2Vzc2lvbkFWRm91bmRhdGlvbk9iakMoTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
QyogcGFyZW50LCBMZWdhY3lDRE1TZXNzaW9uQ2xpZW50JiBjbGllbnQpCiAgICAgOiBtX3BhcmVu
dCgqcGFyZW50KQogICAgICwgbV9jbGllbnQoY2xpZW50KQogICAgICwgbV9zZXNzaW9uSWQoY3Jl
YXRlVmVyc2lvbjRVVUlEU3RyaW5nKCkpCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAg
LCBtX2xvZ2dlcihjbGllbnQubG9nZ2VyKCkpCisgICAgLCBtX2xvZ0lkZW50aWZpZXIoY2xpZW50
LmxvZ0lkZW50aWZpZXIoKSkKKyNlbmRpZgogeworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklF
Uik7CiB9CiAKIENETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDOjp+Q0RNU2Vzc2lvbkFWRm91bmRh
dGlvbk9iakMoKQogeworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CiB9CiAKIFJlZlB0
cjxVaW50OEFycmF5PiBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQzo6Z2VuZXJhdGVLZXlSZXF1
ZXN0KGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFVpbnQ4QXJyYXkqIGluaXREYXRhLCBTdHJpbmcm
IGRlc3RpbmF0aW9uVVJMLCB1bnNpZ25lZCBzaG9ydCYgZXJyb3JDb2RlLCB1aW50MzJfdCYgc3lz
dGVtQ29kZSkKQEAgLTU5LDYgKzY3LDcgQEAgUmVmUHRyPFVpbnQ4QXJyYXk+IENETVNlc3Npb25B
VkZvdW5kYXRpb25PYmpDOjpnZW5lcmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5nJgogICAgIFVO
VVNFRF9QQVJBTShtaW1lVHlwZSk7CiAKICAgICBpZiAoIW1fcGFyZW50KSB7CisgICAgICAgIEVS
Uk9SX0xPRyhMT0dJREVOVElGSUVSLCAiZXJyb3I6ICFwYXJlbnQiKTsKICAgICAgICAgZXJyb3JD
b2RlID0gTGVnYWN5Q0RNOjpVbmtub3duRXJyb3I7CiAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIH0KQEAgLTY3LDEyICs3NiwxNCBAQCBSZWZQdHI8VWludDhBcnJheT4gQ0RNU2Vzc2lvbkFW
Rm91bmRhdGlvbk9iakM6OmdlbmVyYXRlS2V5UmVxdWVzdChjb25zdCBTdHJpbmcmCiAgICAgU3Ry
aW5nIGtleUlEOwogICAgIFJlZlB0cjxVaW50OEFycmF5PiBjZXJ0aWZpY2F0ZTsKICAgICBpZiAo
IU1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmV4dHJhY3RLZXlVUklLZXlJREFu
ZENlcnRpZmljYXRlRnJvbUluaXREYXRhKGluaXREYXRhLCBrZXlVUkksIGtleUlELCBjZXJ0aWZp
Y2F0ZSkpIHsKKyAgICAgICAgRVJST1JfTE9HKExPR0lERU5USUZJRVIsICJlcnJvcjogY291bGQg
bm90IGV4dHJhY3Qga2V5IGluZm8iKTsKICAgICAgICAgZXJyb3JDb2RlID0gTGVnYWN5Q0RNOjpV
bmtub3duRXJyb3I7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAogICAgIG1fcmVx
dWVzdCA9IG1fcGFyZW50LT50YWtlUmVxdWVzdEZvcktleVVSSShrZXlVUkkpOwogICAgIGlmICgh
bV9yZXF1ZXN0KSB7CisgICAgICAgIEVSUk9SX0xPRyhMT0dJREVOVElGSUVSLCAiZXJyb3I6IGNv
dWxkIG5vdCBmaW5kIHJlcXVlc3QgZm9yIGtleSBVUkkiKTsKICAgICAgICAgZXJyb3JDb2RlID0g
TGVnYWN5Q0RNOjpVbmtub3duRXJyb3I7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0K
QEAgLTg0LDYgKzk1LDcgQEAgUmVmUHRyPFVpbnQ4QXJyYXk+IENETVNlc3Npb25BVkZvdW5kYXRp
b25PYmpDOjpnZW5lcmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5nJgogICAgIFJldGFpblB0cjxO
U0RhdGE+IGtleVJlcXVlc3QgPSBbbV9yZXF1ZXN0IHN0cmVhbWluZ0NvbnRlbnRLZXlSZXF1ZXN0
RGF0YUZvckFwcDpjZXJ0aWZpY2F0ZURhdGEuZ2V0KCkgY29udGVudElkZW50aWZpZXI6YXNzZXRJ
RC5nZXQoKSBvcHRpb25zOm5pbCBlcnJvcjombnNFcnJvcl07CiAKICAgICBpZiAoIWtleVJlcXVl
c3QpIHsKKyAgICAgICAgRVJST1JfTE9HKExPR0lERU5USUZJRVIsICJmYWlsZWQgdG8gZ2VuZXJh
dGUga2V5IHJlcXVlc3Qgd2l0aCBlcnJvcjogIiwgU3RyaW5nKG5zRXJyb3IubG9jYWxpemVkRGVz
Y3JpcHRpb24pKTsKICAgICAgICAgZXJyb3JDb2RlID0gTGVnYWN5Q0RNOjpEb21haW5FcnJvcjsK
ICAgICAgICAgc3lzdGVtQ29kZSA9IG1lZGlhS2V5RXJyb3JTeXN0ZW1Db2RlKG5zRXJyb3IpOwog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTkzLDYgKzEwNSw4IEBAIFJlZlB0cjxVaW50OEFy
cmF5PiBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQzo6Z2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0
IFN0cmluZyYKICAgICBzeXN0ZW1Db2RlID0gMDsKICAgICBkZXN0aW5hdGlvblVSTCA9IFN0cmlu
ZygpOwogCisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKwogICAgIGF1dG8ga2V5UmVx
dWVzdEJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUoW2tleVJlcXVlc3QgYnl0ZXNdLCBba2V5
UmVxdWVzdCBsZW5ndGhdKTsKICAgICB1bnNpZ25lZCBieXRlTGVuZ3RoID0ga2V5UmVxdWVzdEJ1
ZmZlci0+Ynl0ZUxlbmd0aCgpOwogICAgIHJldHVybiBVaW50OEFycmF5Ojp0cnlDcmVhdGUoV1RG
TW92ZShrZXlSZXF1ZXN0QnVmZmVyKSwgMCwgYnl0ZUxlbmd0aCk7CkBAIC0xMTEsNiArMTI1LDgg
QEAgYm9vbCBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRlKFVpbnQ4QXJyYXkqIGtl
eSwgUmVmUHRyPFVpbnQ4QXJyYXk+JiBuZXgKICAgICBzeXN0ZW1Db2RlID0gMDsKICAgICBuZXh0
TWVzc2FnZSA9IG51bGxwdHI7CiAKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTEyNCwxMCArMTQwLDE5IEBAIHZvaWQgQ0RNU2Vzc2lv
bkFWRm91bmRhdGlvbk9iakM6OnBsYXllckRpZFJlY2VpdmVFcnJvcihOU0Vycm9yICplcnJvcikK
ICAgICBpZiAoIW1fY2xpZW50KQogICAgICAgICByZXR1cm47CiAKKyAgICBFUlJPUl9MT0coTE9H
SURFTlRJRklFUiwgU3RyaW5nKGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKSk7CisKICAgICB1
bnNpZ25lZCBsb25nIGNvZGUgPSBtZWRpYUtleUVycm9yU3lzdGVtQ29kZShlcnJvcik7CiAgICAg
bV9jbGllbnQtPnNlbmRFcnJvcihMZWdhY3lDRE1TZXNzaW9uQ2xpZW50OjpNZWRpYUtleUVycm9y
RG9tYWluLCBjb2RlKTsKIH0KIAorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorV1RGTG9nQ2hh
bm5lbCYgQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakM6OmxvZ0NoYW5uZWwoKSBjb25zdAorewor
ICAgIHJldHVybiBMb2dFTUU7Cit9CisjZW5kaWYKKwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNl
c3Npb25BVlN0cmVhbVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVlN0cmVhbVNlc3Npb24uaAppbmRleCAzYjQy
MmVjYWY0YTFkMTEzODdiMWFiZjExMGJiZTYxNDUwMjBhZTUwLi5iMjhiYzMzOWUzZGZmOTdjOTk5
OTM3NTZlZGM4ODI4MmRmYjk2YThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
Q0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbi5oCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIENETVBy
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakM7CiBjbGFzcyBDRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9u
IDogcHVibGljIENETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMgewogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIENETVNlc3Npb25BVlN0cmVhbVNlc3Npb24oVmVj
dG9yPGludD4mJiBwcm90b2NvbFZlcnNpb25zLCBDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpD
JiwgTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCopOworICAgIENETVNlc3Npb25BVlN0cmVhbVNlc3Np
b24oVmVjdG9yPGludD4mJiBwcm90b2NvbFZlcnNpb25zLCBDRE1Qcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDJiwgTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCYpOwogICAgIHZpcnR1YWwgfkNETVNlc3Np
b25BVlN0cmVhbVNlc3Npb24oKTsKIAogICAgIC8vIExlZ2FjeUNETVNlc3Npb24KQEAgLTYxLDYg
KzYxLDEwIEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBSZWZQdHI8VWludDhBcnJheT4gZ2Vu
ZXJhdGVLZXlSZWxlYXNlTWVzc2FnZSh1bnNpZ25lZCBzaG9ydCYgZXJyb3JDb2RlLCB1aW50MzJf
dCYgc3lzdGVtQ29kZSk7CiAKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBjb25zdCBj
aGFyKiBsb2dDbGFzc05hbWUoKSBjb25zdCB7IHJldHVybiAiQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vz
c2lvbiI7IH0KKyNlbmRpZgorCiAgICAgUmV0YWluUHRyPEFWU3RyZWFtU2Vzc2lvbj4gbV9zdHJl
YW1TZXNzaW9uOwogICAgIFJlZlB0cjxVaW50OEFycmF5PiBtX2luaXREYXRhOwogICAgIFJlZlB0
cjxVaW50OEFycmF5PiBtX2NlcnRpZmljYXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vz
c2lvbi5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL0NETVNlc3Npb25BVlN0cmVhbVNlc3Npb24ubW0KaW5kZXggODI4ZGFiYTc2N2EwZDUwM2U2
NmE0YzdhOTYyMTA0ZGUyNjYyNDhhOS4uNTg4ZDllODE4NWVlMDY4NDc2NmY1MTdmOWIzZWI0Yzdi
YjUxMTlkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbi5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZT
dHJlYW1TZXNzaW9uLm1tCkBAIC00MCw2ICs0MCw3IEBACiAjaW1wb3J0IDxvYmpjL29iamMtcnVu
dGltZS5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9BVkZvdW5kYXRpb25TUEkuaD4KICNpbXBv
cnQgPHd0Zi9GaWxlU3lzdGVtLmg+CisjaW1wb3J0IDx3dGYvTG9nZ2VySGVscGVyLmg+CiAjaW1w
b3J0IDx3dGYvVVVJRC5oPgogI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAKQEAg
LTgxLDE2ICs4MiwxOCBAQCBAZW5kCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ0RNU2Vzc2lv
bkFWU3RyZWFtU2Vzc2lvbjo6Q0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbihWZWN0b3I8aW50PiYm
IHByb3RvY29sVmVyc2lvbnMsIENETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMmIGNkbSwgTGVn
YWN5Q0RNU2Vzc2lvbkNsaWVudCogY2xpZW50KQorQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbjo6
Q0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbihWZWN0b3I8aW50PiYmIHByb3RvY29sVmVyc2lvbnMs
IENETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMmIGNkbSwgTGVnYWN5Q0RNU2Vzc2lvbkNsaWVu
dCYgY2xpZW50KQogICAgIDogQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQyhjZG0sIGNsaWVu
dCkKICAgICAsIG1fZGF0YVBhcnNlck9ic2VydmVyKGFkb3B0TlMoW1tXZWJDRE1TZXNzaW9uQVZT
dHJlYW1TZXNzaW9uT2JzZXJ2ZXIgYWxsb2NdIGluaXRXaXRoUGFyZW50OnRoaXNdKSkKICAgICAs
IG1fcHJvdG9jb2xWZXJzaW9ucyhXVEZNb3ZlKHByb3RvY29sVmVyc2lvbnMpKQogICAgICwgbV9t
b2RlKE5vcm1hbCkKIHsKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOwogfQogCiBDRE1T
ZXNzaW9uQVZTdHJlYW1TZXNzaW9uOjp+Q0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbigpCiB7Cisg
ICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKICAgICBzZXRTdHJlYW1TZXNzaW9uKG51bGxw
dHIpOwogCiAgICAgZm9yIChhdXRvJiBzb3VyY2VCdWZmZXIgOiBtX3NvdXJjZUJ1ZmZlcnMpCkBA
IC0xMDMsNyArMTA2LDcgQEAgUmVmUHRyPFVpbnQ4QXJyYXk+IENETVNlc3Npb25BVlN0cmVhbVNl
c3Npb246OmdlbmVyYXRlS2V5UmVxdWVzdChjb25zdCBTdHJpbmcmIG0KICAgICBVTlVTRURfUEFS
QU0oZGVzdGluYXRpb25VUkwpOwogICAgIEFTU0VSVChpbml0RGF0YSk7CiAKLSAgICBMT0coTWVk
aWEsICJDRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uOjpnZW5lcmF0ZUtleVJlcXVlc3QoJXApIiwg
dGhpcyk7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKIAogICAgIGVycm9yQ29kZSA9
IE1lZGlhUGxheWVyOjpOb0Vycm9yOwogICAgIHN5c3RlbUNvZGUgPSAwOwpAQCAtMTI5LDcgKzEz
Miw3IEBAIHZvaWQgQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbjo6cmVsZWFzZUtleXMoKQogICAg
ICAgICBmb3IgKGF1dG8mIHNvdXJjZUJ1ZmZlciA6IG1fc291cmNlQnVmZmVycykKICAgICAgICAg
ICAgIHNvdXJjZUJ1ZmZlci0+Zmx1c2goKTsKIAotICAgICAgICBMT0coTWVkaWEsICJDRE1TZXNz
aW9uQVZTdHJlYW1TZXNzaW9uOjpyZWxlYXNlS2V5cyglcCkgLSBleHBpcmluZyBzdHJlYW0gc2Vz
c2lvbiIsIHRoaXMpOworICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJleHBpcmlu
ZyBzdHJlYW0gc2Vzc2lvbiIpOwogICAgICAgICBbbV9zdHJlYW1TZXNzaW9uIGV4cGlyZV07CiAK
ICAgICAgICAgaWYgKCFtX2NlcnRpZmljYXRlKQpAQCAtMTUwLDcgKzE1Myw3IEBAIHZvaWQgQ0RN
U2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbjo6cmVsZWFzZUtleXMoKQogICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwogCiAgICAgICAgICAgICBpZiAobV9zZXNzaW9uSWQgPT0gU3RyaW5nKHBsYXliYWNr
U2Vzc2lvbklkVmFsdWUpKSB7Ci0gICAgICAgICAgICAgICAgTE9HKE1lZGlhLCAiQ0RNU2Vzc2lv
bkFWU3RyZWFtU2Vzc2lvbjo6cmVsZWFzZUtleXMoJXApIC0gZm91bmQgc2Vzc2lvbiwgc2VuZGlu
ZyBleHBpcmF0aW9uIG1lc3NhZ2UiKTsKKyAgICAgICAgICAgICAgICBBTFdBWVNfTE9HKExPR0lE
RU5USUZJRVIsICJmb3VuZCBzZXNzaW9uLCBzZW5kaW5nIGV4cGlyYXRpb24gbWVzc2FnZSIpOwog
ICAgICAgICAgICAgICAgIG1fZXhwaXJlZFNlc3Npb24gPSBleHBpcmVkU2Vzc2lvbkRhdGE7CiAg
ICAgICAgICAgICAgICAgbV9jbGllbnQtPnNlbmRNZXNzYWdlKFVpbnQ4QXJyYXk6OmNyZWF0ZShz
dGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oW21fZXhwaXJlZFNlc3Npb24gYnl0ZXNdKSwgW21f
ZXhwaXJlZFNlc3Npb24gbGVuZ3RoXSkucHRyKCksIGVtcHR5U3RyaW5nKCkpOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwpAQCAtMTc5LDEzICsxODIsMTMgQEAgYm9vbCBDRE1TZXNzaW9uQVZTdHJl
YW1TZXNzaW9uOjp1cGRhdGUoVWludDhBcnJheSoga2V5LCBSZWZQdHI8VWludDhBcnJheT4mIG5l
eHQKIHsKICAgICBib29sIHNob3VsZEdlbmVyYXRlS2V5UmVxdWVzdCA9ICFtX2NlcnRpZmljYXRl
IHx8IGlzRXF1YWwyKGtleSwgInJlbmV3Iik7CiAgICAgaWYgKCFtX2NlcnRpZmljYXRlKSB7Ci0g
ICAgICAgIExPRyhNZWRpYSwgIkNETVNlc3Npb25BVlN0cmVhbVNlc3Npb246OnVwZGF0ZSglcCkg
LSBjZXJ0aWZpY2F0ZSBkYXRhIiwgdGhpcyk7CisgICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJ
RklFUiwgImNlcnRpZmljYXRlIGRhdGEiKTsKIAogICAgICAgICBtX2NlcnRpZmljYXRlID0ga2V5
OwogICAgIH0KIAogICAgIGlmIChpc0VxdWFsMihrZXksICJhY2tub3dsZWRnZWQiKSkgewotICAg
ICAgICBMT0coTWVkaWEsICJDRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uOjp1cGRhdGUoJXApIC0g
YWNrbm93bGVkaW5nIHNlY3VyZSBzdG9wIG1lc3NhZ2UiLCB0aGlzKTsKKyAgICAgICAgQUxXQVlT
X0xPRyhMT0dJREVOVElGSUVSLCAiYWNrbm93bGVkaW5nIHNlY3VyZSBzdG9wIG1lc3NhZ2UiKTsK
IAogICAgICAgICBpZiAoIW1fZXhwaXJlZFNlc3Npb24pIHsKICAgICAgICAgICAgIGVycm9yQ29k
ZSA9IE1lZGlhUGxheWVyOjpJbnZhbGlkUGxheWVyU3RhdGU7CkBAIC0yNDEsMjQgKzI0NCwyNiBA
QCBib29sIENETVNlc3Npb25BVlN0cmVhbVNlc3Npb246OnVwZGF0ZShVaW50OEFycmF5KiBrZXks
IFJlZlB0cjxVaW50OEFycmF5PiYgbmV4dAogICAgICAgICAgICAgbV9zZXNzaW9uSWQgPSBjcmVh
dGVWZXJzaW9uNFVVSURTdHJpbmcoKTsKIAogICAgICAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAg
ICAgIExPRyhNZWRpYSwgIkNETVNlc3Npb25BVlN0cmVhbVNlc3Npb246OnVwZGF0ZSglcCkgLSBl
cnJvcjolQCIsIHRoaXMsIFtlcnJvciBkZXNjcmlwdGlvbl0pOworICAgICAgICAgICAgRVJST1Jf
TE9HKExPR0lERU5USUZJRVIsICJlcnJvciBnZW5lcmF0aW5nIGtleSByZXF1ZXN0OiAiLCBTdHJp
bmcoZXJyb3IuZGVzY3JpcHRpb24pKTsKICAgICAgICAgICAgIGVycm9yQ29kZSA9IE1lZGlhUGxh
eWVyOjpJbnZhbGlkUGxheWVyU3RhdGU7CiAgICAgICAgICAgICBzeXN0ZW1Db2RlID0gbWVkaWFL
ZXlFcnJvclN5c3RlbUNvZGUoZXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICB9CiAKKyAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAiZ2VuZXJhdGVkIGtl
eSByZXF1ZXN0Iik7CiAgICAgICAgIG5leHRNZXNzYWdlID0gVWludDhBcnJheTo6Y3JlYXRlKFty
ZXF1ZXN0IGxlbmd0aF0pOwogICAgICAgICBbcmVxdWVzdCBnZXRCeXRlczpuZXh0TWVzc2FnZS0+
ZGF0YSgpIGxlbmd0aDpuZXh0TWVzc2FnZS0+bGVuZ3RoKCldOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCiAgICAgaWYgKCFwcm90ZWN0ZWRTb3VyY2VCdWZmZXIpIHsKKyAgICAgICAg
RVJST1JfTE9HKExPR0lERU5USUZJRVIsICJlcnJvcjogIXByb3RlY3RlZFNvdXJjZUJ1ZmZlciIp
OwogICAgICAgICBlcnJvckNvZGUgPSBNZWRpYVBsYXllcjo6SW52YWxpZFBsYXllclN0YXRlOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgQVNTRVJUKCFtX3NvdXJjZUJ1ZmZl
cnMuaXNFbXB0eSgpKTsKLSAgICBMT0coTWVkaWEsICJDRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9u
Ojp1cGRhdGUoJXApIC0ga2V5IGRhdGEiLCB0aGlzKTsKKyAgICBBTFdBWVNfTE9HKExPR0lERU5U
SUZJRVIsICJwcm9jZXNzaW5nIGtleSByZXNwb25zZSIpOwogICAgIGVycm9yQ29kZSA9IE1lZGlh
UGxheWVyOjpOb0Vycm9yOwogICAgIHN5c3RlbUNvZGUgPSAwOwogICAgIFJldGFpblB0cjxOU0Rh
dGE+IGtleURhdGEgPSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzOmtleS0+
ZGF0YSgpIGxlbmd0aDprZXktPmxlbmd0aCgpXSk7CkBAIC0yOTMsMTIgKzI5OCwxNCBAQCB2b2lk
IENETVNlc3Npb25BVlN0cmVhbVNlc3Npb246OnNldFN0cmVhbVNlc3Npb24oQVZTdHJlYW1TZXNz
aW9uICpzdHJlYW1TZXNzaW9uKQogCiB2b2lkIENETVNlc3Npb25BVlN0cmVhbVNlc3Npb246OmFk
ZFBhcnNlcihBVlN0cmVhbURhdGFQYXJzZXIqIHBhcnNlcikKIHsKKyAgICBBTFdBWVNfTE9HKExP
R0lERU5USUZJRVIpOwogICAgIGlmIChtX3N0cmVhbVNlc3Npb24pCiAgICAgICAgIFttX3N0cmVh
bVNlc3Npb24gYWRkU3RyZWFtRGF0YVBhcnNlcjpwYXJzZXJdOwogfQogCiB2b2lkIENETVNlc3Np
b25BVlN0cmVhbVNlc3Npb246OnJlbW92ZVBhcnNlcihBVlN0cmVhbURhdGFQYXJzZXIqIHBhcnNl
cikKIHsKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOwogICAgIGlmIChtX3N0cmVhbVNl
c3Npb24pCiAgICAgICAgIFttX3N0cmVhbVNlc3Npb24gcmVtb3ZlU3RyZWFtRGF0YVBhcnNlcjpw
YXJzZXJdOwogfQpAQCAtMzE4LDE0ICszMjUsMTQgQEAgUmVmUHRyPFVpbnQ4QXJyYXk+IENETVNl
c3Npb25BVlN0cmVhbVNlc3Npb246OmdlbmVyYXRlS2V5UmVsZWFzZU1lc3NhZ2UodW5zaWduZWQK
IAogICAgIE5TQXJyYXkqIGV4cGlyZWRTZXNzaW9ucyA9IFtQQUw6OmdldEFWU3RyZWFtU2Vzc2lv
bkNsYXNzKCkgcGVuZGluZ0V4cGlyZWRTZXNzaW9uUmVwb3J0c1dpdGhBcHBJZGVudGlmaWVyOmNl
cnRpZmljYXRlRGF0YS5nZXQoKSBzdG9yYWdlRGlyZWN0b3J5QXRVUkw6W05TVVJMIGZpbGVVUkxX
aXRoUGF0aDpzdG9yYWdlUGF0aF1dOwogICAgIGlmICghW2V4cGlyZWRTZXNzaW9ucyBjb3VudF0p
IHsKLSAgICAgICAgTE9HKE1lZGlhLCAiQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbjo6Z2VuZXJh
dGVLZXlSZWxlYXNlTWVzc2FnZSglcCkgLSBubyBleHBpcmVkIHNlc3Npb25zIGZvdW5kIiwgdGhp
cyk7CisgICAgICAgIEFMV0FZU19MT0coIm5vIGV4cGlyZWQgc2Vzc2lvbnMgZm91bmQiKTsKIAog
ICAgICAgICBlcnJvckNvZGUgPSBNZWRpYVBsYXllcjo6S2V5U3lzdGVtTm90U3VwcG9ydGVkOwog
ICAgICAgICBzeXN0ZW1Db2RlID0gJyFtb3InOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9CiAKLSAgICBMT0coTWVkaWEsICJDRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uOjpnZW5lcmF0
ZUtleVJlbGVhc2VNZXNzYWdlKCVwKSAtIGZvdW5kICVkIGV4cGlyZWQgc2Vzc2lvbnMiLCB0aGlz
LCBbZXhwaXJlZFNlc3Npb25zIGNvdW50XSk7CisgICAgQUxXQVlTX0xPRygiZm91bmQgIiwgW2V4
cGlyZWRTZXNzaW9ucyBjb3VudF0sICIgZXhwaXJlZCBzZXNzaW9ucyIpOwogCiAgICAgZXJyb3JD
b2RlID0gMDsKICAgICBzeXN0ZW1Db2RlID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25NZWRpYVNvdXJj
ZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL0NETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMuaAppbmRleCBlZWI1Zjk4M2I4YTNm
YmJmMzRiYWM2NGRkMGZkNTViYzI1M2IwZWEwLi4yOThmZDBjOGYyOTAwNjY2YWRkMzI2NGQ5MmYw
M2ViYTVkNzE4ZmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vz
c2lvbk1lZGlhU291cmNlQVZGT2JqQy5oCkBAIC00MywxNCArNDMsMTMgQEAgY2xhc3MgQ0RNUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQzsKIGNsYXNzIENETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9i
akMgOiBwdWJsaWMgTGVnYWN5Q0RNU2Vzc2lvbiwgcHVibGljIFNvdXJjZUJ1ZmZlclByaXZhdGVB
VkZPYmpDRXJyb3JDbGllbnQsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxDRE1TZXNzaW9uTWVkaWFT
b3VyY2VBVkZPYmpDPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0g
ICAgQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQyhDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDJiwgTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCopOworICAgIENETVNlc3Npb25NZWRpYVNvdXJj
ZUFWRk9iakMoQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyYsIExlZ2FjeUNETVNlc3Npb25D
bGllbnQmKTsKICAgICB2aXJ0dWFsIH5DRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDKCk7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgYWRkUGFyc2VyKEFWU3RyZWFtRGF0YVBhcnNlciopID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgcmVtb3ZlUGFyc2VyKEFWU3RyZWFtRGF0YVBhcnNlciopID0gMDsKIAog
ICAgIC8vIExlZ2FjeUNETVNlc3Npb24KLSAgICB2b2lkIHNldENsaWVudChMZWdhY3lDRE1TZXNz
aW9uQ2xpZW50KiBjbGllbnQpIG92ZXJyaWRlIHsgbV9jbGllbnQgPSBjbGllbnQ7IH0KICAgICBj
b25zdCBTdHJpbmcmIHNlc3Npb25JZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fc2Vzc2lv
bklkOyB9CiAKICAgICAvLyBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQ0Vycm9yQ2xpZW50CkBA
IC02OCwxMiArNjcsMjMgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIFN0cmluZyBzdG9yYWdl
UGF0aCgpIGNvbnN0OwogCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgY29uc3QgTG9n
Z2VyJiBsb2dnZXIoKSBjb25zdCB7IHJldHVybiBtX2xvZ2dlcjsgfQorICAgIGNvbnN0IHZvaWQq
IGxvZ0lkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2xvZ0lkZW50aWZpZXI7IH0KKyAgICBX
VEZMb2dDaGFubmVsJiBsb2dDaGFubmVsKCkgY29uc3Q7CisjZW5kaWYKKwogICAgIENETVByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakMqIG1fY2RtOwotICAgIExlZ2FjeUNETVNlc3Npb25DbGllbnQq
IG1fY2xpZW50IHsgbnVsbHB0ciB9OworICAgIFdlYWtQdHI8TGVnYWN5Q0RNU2Vzc2lvbkNsaWVu
dD4gbV9jbGllbnQ7CiAgICAgVmVjdG9yPFJlZlB0cjxTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qz4+IG1fc291cmNlQnVmZmVyczsKICAgICBSZWZQdHI8VWludDhBcnJheT4gbV9jZXJ0aWZpY2F0
ZTsKICAgICBTdHJpbmcgbV9zZXNzaW9uSWQ7CiAgICAgYm9vbCBtX3N0b3BwZWQgeyBmYWxzZSB9
OworCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgUmVmPGNvbnN0IExvZ2dlcj4gbV9s
b2dnZXI7CisgICAgY29uc3Qgdm9pZCogbV9sb2dJZGVudGlmaWVyOworI2VuZGlmCiB9OwogCiBp
bmxpbmUgQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQyogdG9DRE1TZXNzaW9uTWVkaWFTb3Vy
Y2VBVkZPYmpDKExlZ2FjeUNETVNlc3Npb24qIHNlc3Npb24pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uTWVk
aWFTb3VyY2VBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQy5tbQppbmRleCBmMDNl
NzM5YjIwMDc5N2QxMDU3OTBmNWIwODI0YTIxZmJmMTQ0MDdkLi4yODZhNWE0ODg3ZThkOTU2MDBl
N2M4YmFjM2FmYmU2Njc2MTYwNTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpD
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL0NETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMubW0KQEAgLTM1LDkgKzM1LDEzIEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQzo6Q0RN
U2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQyhDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDJiBj
ZG0sIExlZ2FjeUNETVNlc3Npb25DbGllbnQqIGNsaWVudCkKK0NETVNlc3Npb25NZWRpYVNvdXJj
ZUFWRk9iakM6OkNETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMoQ0RNUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQyYgY2RtLCBMZWdhY3lDRE1TZXNzaW9uQ2xpZW50JiBjbGllbnQpCiAgICAgOiBt
X2NkbSgmY2RtKQogICAgICwgbV9jbGllbnQoY2xpZW50KQorI2lmICFSRUxFQVNFX0xPR19ESVNB
QkxFRAorICAgICwgbV9sb2dnZXIoY2xpZW50LmxvZ2dlcigpKQorICAgICwgbV9sb2dJZGVudGlm
aWVyKGNsaWVudC5sb2dJZGVudGlmaWVyKCkpCisjZW5kaWYKIHsKIH0KIApAQCAtMTEyLDYgKzEx
NiwxMyBAQCBTdHJpbmcgQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQzo6c3RvcmFnZVBhdGgo
KSBjb25zdAogICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
c3RvcmFnZURpcmVjdG9yeSwgIlNlY3VyZVN0b3AucGxpc3QiKTsKIH0KIAorI2lmICFSRUxFQVNF
X0xPR19ESVNBQkxFRAorV1RGTG9nQ2hhbm5lbCYgQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2Jq
Qzo6bG9nQ2hhbm5lbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIExvZ0VNRTsKK30KKyNlbmRpZgor
CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxF
KE1FRElBX1NPVVJDRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaAppbmRleCAwMmYwOTNhOGUwOTQ2MGZm
ZWZjOGY5M2FjYTIzZDIyYzk2MWJjOWNhLi5mZGJlOGFiMjA4ODk3MmVlNTM5MDM3NDAwODI1NzU3
MGMyMGRjNWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCkBAIC0yNjksNyArMjY5LDcgQEAgcHJp
dmF0ZToKIAogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQogICAgIHZvaWQga2V5
QWRkZWQoKSBmaW5hbDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8TGVnYWN5Q0RNU2Vzc2lvbj4gY3Jl
YXRlU2Vzc2lvbihjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgTGVnYWN5Q0RNU2Vzc2lvbkNsaWVu
dCopIGZpbmFsOworICAgIHN0ZDo6dW5pcXVlX3B0cjxMZWdhY3lDRE1TZXNzaW9uPiBjcmVhdGVT
ZXNzaW9uKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBMZWdhY3lDRE1TZXNzaW9uQ2xpZW50Jikg
ZmluYWw7CiAjZW5kaWYKIAogICAgIFN0cmluZyBsYW5ndWFnZU9mUHJpbWFyeUF1ZGlvVHJhY2so
KSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IDZiZGEyZmUwYjhhYTNk
Mjg1YTE2ZjExMDEyNTNhMTY4NWNhZWFjZjguLjFiMTM1YTE0NWU5ZmMyYmFkYjBmZWZkYjBiYTBk
ODc3NmU3Mzg2MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtMjEwMyw2ICsyMTAzLDcg
QEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzaG91bGRXYWl0Rm9y
TG9hZGluZ09mUmVzb3VyY2UoQVZBc3NldFIKIAogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVE
X01FRElBKSB8fCBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogICAgIGlmIChzY2hlbWUgPT0gInNr
ZCIpIHsKKyAgICAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgInJlY2VpdmVkIHNrZDovLyBV
UkkiKTsKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKICAgICAgICAgLy8gQ3Jl
YXRlIGFuIGluaXREYXRhIHdpdGggdGhlIGZvbGxvd2luZyBsYXlvdXQ6CiAgICAgICAgIC8vIFs0
IGJ5dGVzOiBrZXlVUkkgc2l6ZV0sIFtrZXlVUkkgc2l6ZSBieXRlczoga2V5VVJJXQpAQCAtMjgx
Niw3ICsyODE3LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpr
ZXlBZGRlZCgpCiAgICAgICAgIG1fa2V5VVJJVG9SZXF1ZXN0TWFwLnJlbW92ZShrZXlJZCk7CiB9
CiAKLXN0ZDo6dW5pcXVlX3B0cjxMZWdhY3lDRE1TZXNzaW9uPiBNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDOjpjcmVhdGVTZXNzaW9uKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBM
ZWdhY3lDRE1TZXNzaW9uQ2xpZW50KiBjbGllbnQpCitzdGQ6OnVuaXF1ZV9wdHI8TGVnYWN5Q0RN
U2Vzc2lvbj4gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlU2Vzc2lv
bihjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCYgY2xpZW50
KQogewogICAgIGlmICgha2V5U3lzdGVtSXNTdXBwb3J0ZWQoa2V5U3lzdGVtKSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcAppbmRleCAwZWJlYWQ5OGNh
NGY2Y2Q5ZTRlNjRlNjhlNDBjNWI3NGRiYmVhNDU2Li4wNGVhZTAwY2E1NTM5ZTdkMmQ5YjI4Mzk1
Y2U5YWUzZjY4NzEyMjlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5jcHAKQEAgLTEwMiw3ICsx
MDIsNyBAQCBDRE1GYWN0b3J5VGh1bmRlciYgQ0RNRmFjdG9yeVRodW5kZXI6OnNpbmdsZXRvbigp
CiAgICAgcmV0dXJuIHNfZmFjdG9yeTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPENETVByaXZhdGU+
IENETUZhY3RvcnlUaHVuZGVyOjpjcmVhdGVDRE0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pCitz
dGQ6OnVuaXF1ZV9wdHI8Q0RNUHJpdmF0ZT4gQ0RNRmFjdG9yeVRodW5kZXI6OmNyZWF0ZUNETShj
b25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgQ0RNUHJpdmF0ZUNsaWVudCYpCiB7CiAgICAg
QVNTRVJUKHN1cHBvcnRzS2V5U3lzdGVtKGtleVN5c3RlbSkpOwogICAgIHJldHVybiBtYWtlVW5p
cXVlPENETVByaXZhdGVUaHVuZGVyPihrZXlTeXN0ZW0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuaApp
bmRleCAxMDIwZTE1MzIyNzFiNTM1MWUxMDZkZGU4ZjIxZWE1NDA1YTljMjM3Li42Yjg0MDBlYTRk
YWU2NjEwNjFkMjZlNmQzMzIyMWVmOTMyYzdlZGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuaApA
QCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5DRE1GYWN0b3J5VGh1bmRl
cigpID0gZGVmYXVsdDsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxDRE1Qcml2YXRlPiBjcmVhdGVD
RE0oY29uc3QgU3RyaW5nJikgZmluYWw7CisgICAgc3RkOjp1bmlxdWVfcHRyPENETVByaXZhdGU+
IGNyZWF0ZUNETShjb25zdCBTdHJpbmcmLCBjb25zdCBDRE1Qcml2YXRlQ2xpZW50JikgZmluYWw7
CiAgICAgUmVmUHRyPENETVByb3h5PiBjcmVhdGVDRE1Qcm94eShjb25zdCBTdHJpbmcmKSBmaW5h
bDsKICAgICBib29sIHN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAg
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzdXBwb3J0ZWRLZXlTeXN0ZW1zKCkgY29uc3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0xlZ2FjeU1vY2tDRE0uY3BwIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9MZWdhY3lNb2NrQ0RNLmNwcAppbmRleCA3ZTFkYmYyNjk0NmMzYmZm
NDMwODQ5MWQyNTgzMTU2Y2FiNzQ4NTYzLi44YWNjMTBhMzFkN2VhYjNhYTU0MWVhMDRkZjIzODBl
ZDYyMDNlMDI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0xlZ2FjeU1vY2tD
RE0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTGVnYWN5TW9ja0NETS5jcHAKQEAg
LTQwLDEwICs0MCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIE1vY2tDRE1TZXNzaW9u
IDogcHVibGljIExlZ2FjeUNETVNlc3Npb24gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgotICAgIE1vY2tDRE1TZXNzaW9uKExlZ2FjeUNETVNlc3Npb25DbGllbnQqKTsK
KyAgICBNb2NrQ0RNU2Vzc2lvbihMZWdhY3lDRE1TZXNzaW9uQ2xpZW50Jik7CiAgICAgdmlydHVh
bCB+TW9ja0NETVNlc3Npb24oKSA9IGRlZmF1bHQ7CiAKLSAgICB2b2lkIHNldENsaWVudChMZWdh
Y3lDRE1TZXNzaW9uQ2xpZW50KiBjbGllbnQpIG92ZXJyaWRlIHsgbV9jbGllbnQgPSBjbGllbnQ7
IH0KICAgICBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IG1fc2Vzc2lvbklkOyB9CiAgICAgUmVmUHRyPFVpbnQ4QXJyYXk+IGdlbmVyYXRlS2V5UmVxdWVz
dChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBVaW50OEFycmF5KiBpbml0RGF0YSwgU3RyaW5nJiBk
ZXN0aW5hdGlvblVSTCwgdW5zaWduZWQgc2hvcnQmIGVycm9yQ29kZSwgdWludDMyX3QmIHN5c3Rl
bUNvZGUpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVsZWFzZUtleXMoKSBvdmVycmlkZTsKQEAgLTUx
LDcgKzUwLDcgQEAgcHVibGljOgogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gY2FjaGVkS2V5Rm9y
S2V5SUQoY29uc3QgU3RyaW5nJikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQog
CiBwcm90ZWN0ZWQ6Ci0gICAgTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCogbV9jbGllbnQ7CisgICAg
V2Vha1B0cjxMZWdhY3lDRE1TZXNzaW9uQ2xpZW50PiBtX2NsaWVudDsKICAgICBTdHJpbmcgbV9z
ZXNzaW9uSWQ7CiB9OwogCkBAIC03Myw3ICs3Miw3IEBAIGJvb2wgTGVnYWN5TW9ja0NETTo6c3Vw
cG9ydHNNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogICAgIHJldHVybiBlcXVhbExl
dHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgInZpZGVvL21vY2siKTsKIH0KIAotc3Rk
Ojp1bmlxdWVfcHRyPExlZ2FjeUNETVNlc3Npb24+IExlZ2FjeU1vY2tDRE06OmNyZWF0ZVNlc3Np
b24oTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCogY2xpZW50KQorc3RkOjp1bmlxdWVfcHRyPExlZ2Fj
eUNETVNlc3Npb24+IExlZ2FjeU1vY2tDRE06OmNyZWF0ZVNlc3Npb24oTGVnYWN5Q0RNU2Vzc2lv
bkNsaWVudCYgY2xpZW50KQogewogICAgIHJldHVybiBtYWtlVW5pcXVlPE1vY2tDRE1TZXNzaW9u
PihjbGllbnQpOwogfQpAQCAtMTA4LDcgKzEwNyw3IEBAIHN0YXRpYyBTdHJpbmcgZ2VuZXJhdGVT
ZXNzaW9uSWQoKQogICAgIHJldHVybiBTdHJpbmc6Om51bWJlcihtb25vdG9uaWNhbGx5SW5jcmVh
c2luZ1Nlc3Npb25JZCsrKTsKIH0KIAotTW9ja0NETVNlc3Npb246Ok1vY2tDRE1TZXNzaW9uKExl
Z2FjeUNETVNlc3Npb25DbGllbnQqIGNsaWVudCkKK01vY2tDRE1TZXNzaW9uOjpNb2NrQ0RNU2Vz
c2lvbihMZWdhY3lDRE1TZXNzaW9uQ2xpZW50JiBjbGllbnQpCiAgICAgOiBtX2NsaWVudChjbGll
bnQpCiAgICAgLCBtX3Nlc3Npb25JZChnZW5lcmF0ZVNlc3Npb25JZCgpKQogewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9MZWdhY3lNb2NrQ0RNLmggYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0xlZ2FjeU1vY2tDRE0uaAppbmRleCBiOTNhZWI5M2ZmNjMyOWU1MTU0N2MxM2Zm
NzZhNjkyZWU2YTcxODZjLi5mMTBkZmViNjRiMTM1MTJiYmY3NTQ3YTBlMDE5ZmM4ODQ1MWM2M2Iz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0xlZ2FjeU1vY2tDRE0uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0xlZ2FjeU1vY2tDRE0uaApAQCAtNDcsNyArNDcsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB+TGVnYWN5TW9ja0NETSgpID0gZGVmYXVsdDsKIAogICAg
IGJvb2wgc3VwcG9ydHNNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKSBvdmVycmlkZTsK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8TGVnYWN5Q0RNU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbihMZWdh
Y3lDRE1TZXNzaW9uQ2xpZW50Kikgb3ZlcnJpZGU7CisgICAgc3RkOjp1bmlxdWVfcHRyPExlZ2Fj
eUNETVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCYpIG92ZXJy
aWRlOwogCiBwcm90ZWN0ZWQ6CiAgICAgTGVnYWN5Q0RNKiBtX2NkbTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAKaW5kZXggNTYwN2Q0OWZjZGU5ZDViNzQxNDg3MmJk
YjkxZmFmNjk2NGY1Njg4ZS4uZjk4MDc3NmY0YTg1MzJiNDE2MTMzNDI0YTI4MjJiMjBjMjM4MzAw
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAKQEAgLTEwMyw3
ICsxMDMsNyBAQCB2b2lkIE1vY2tDRE1GYWN0b3J5OjpzZXRTdXBwb3J0ZWRSb2J1c3RuZXNzKFZl
Y3RvcjxTdHJpbmc+JiYgcm9idXN0bmVzc2VzKQogICAgIG1fc3VwcG9ydGVkUm9idXN0bmVzcyA9
IHJvYnVzdG5lc3Nlcy5tYXAoW10gKGF1dG8mIHJvYnVzdG5lc3MpIC0+IEF0b21TdHJpbmcgeyBy
ZXR1cm4gcm9idXN0bmVzczsgfSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxDRE1Qcml2YXRlPiBN
b2NrQ0RNRmFjdG9yeTo6Y3JlYXRlQ0RNKGNvbnN0IFN0cmluZyYpCitzdGQ6OnVuaXF1ZV9wdHI8
Q0RNUHJpdmF0ZT4gTW9ja0NETUZhY3Rvcnk6OmNyZWF0ZUNETShjb25zdCBTdHJpbmcmLCBjb25z
dCBDRE1Qcml2YXRlQ2xpZW50JikKIHsKICAgICByZXR1cm4gbWFrZVVuaXF1ZTxNb2NrQ0RNPigq
dGhpcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0
b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmgKaW5kZXggZDk2
YzE1NmVlNGQyNzkxYjhiMDk5OGRhZjk0MGVjNzUzNzgwN2JjMy4uYWJhODQ0YmViOTZiMjczNGEz
NDliZmI2NWE0Nzk3ZjU1ZjY3NjU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9Nb2NrQ0RNRmFjdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZh
Y3RvcnkuaApAQCAtODMsNyArODMsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgTW9ja0NE
TUZhY3RvcnkoKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q0RNUHJpdmF0ZT4gY3JlYXRlQ0RNKGNv
bnN0IFN0cmluZyYpIGZpbmFsOworICAgIHN0ZDo6dW5pcXVlX3B0cjxDRE1Qcml2YXRlPiBjcmVh
dGVDRE0oY29uc3QgU3RyaW5nJiwgY29uc3QgQ0RNUHJpdmF0ZUNsaWVudCYpIGZpbmFsOwogICAg
IGJvb2wgc3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJikgZmluYWw7CiAKICAgICBNZWRp
YUtleXNSZXF1aXJlbWVudCBtX2Rpc3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVudCB7IE1l
ZGlhS2V5c1JlcXVpcmVtZW50OjpPcHRpb25hbCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmNwcAppbmRleCBhZWYy
OGM2ZjhiZTM1NjE1OTM1NWI3M2NiMmZiOTExYjA0MmNjZjZlLi5hNWI4ZDhiY2EyYWI4NzAwMGQy
ODg4NjgwZmNlNWEwMzFlYzE4NjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmNwcApAQCAtNjQsNyArNjQsNyBA
QCB2b2lkIFJlbW90ZUNETUZhY3RvcnlQcm94eTo6Y3JlYXRlQ0RNKGNvbnN0IFN0cmluZyYga2V5
U3lzdGVtLCBDb21wbGV0aW9uSGFuZGxlcgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
YXV0byBwcml2YXRlQ0RNID0gZmFjdG9yeS0+Y3JlYXRlQ0RNKGtleVN5c3RlbSk7CisgICAgYXV0
byBwcml2YXRlQ0RNID0gZmFjdG9yeS0+Y3JlYXRlQ0RNKGtleVN5c3RlbSwgKnRoaXMpOwogICAg
IGlmICghcHJpdmF0ZUNETSkgewogICAgICAgICBjb21wbGV0aW9uKHsgfSwgeyB9KTsKICAgICAg
ICAgcmV0dXJuOwpAQCAtMTY5LDYgKzE2OSwxOCBAQCBib29sIFJlbW90ZUNETUZhY3RvcnlQcm94
eTo6YWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUoKSBjb25zdAogICAgIHJldHVybiBtX2lu
c3RhbmNlcy5pc0VtcHR5KCk7CiB9CiAKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKK2NvbnN0
IExvZ2dlciYgUmVtb3RlQ0RNRmFjdG9yeVByb3h5Ojpsb2dnZXIoKSBjb25zdAoreworICAgIGlm
ICghbV9sb2dnZXIpIHsKKyAgICAgICAgbV9sb2dnZXIgPSBMb2dnZXI6OmNyZWF0ZSh0aGlzKTsK
KyAgICAgICAgbV9sb2dnZXItPnNldEVuYWJsZWQodGhpcywgbV9ncHVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzID8gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5zZXNzaW9uSUQoKS5pc0Fsd2F5
c09uTG9nZ2luZ0FsbG93ZWQoKSA6IGZhbHNlKTsKKyAgICB9CisKKyAgICByZXR1cm4gKm1fbG9n
Z2VyOworfQorI2VuZGlmCisKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmgKaW5kZXggMDM4MjE2ZTIw
ZWZmN2M2MzU4NDNjNmVmZDZmMGI0MTM5ZDMyMjZmMC4uMDllYTgzODhjNGQwODIwZTFjNDM4M2Vl
NWNlZjRlOWU3OGUyM2ZhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5UHJveHkuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1
ZGUgIlJlbW90ZUNETUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZUlk
ZW50aWZpZXIuaCIKICNpbmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVy
LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DRE1Qcml2YXRlLmg+CiAjaW5jbHVkZSA8d3RmL1VuaXF1
ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKQEAgLTQzLDcgKzQ0LDcgQEAgY2xh
c3MgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk7CiBjbGFzcyBSZW1vdGVDRE1Qcm94eTsK
IHN0cnVjdCBSZW1vdGVDRE1Db25maWd1cmF0aW9uOwogCi1jbGFzcyBSZW1vdGVDRE1GYWN0b3J5
UHJveHkgZmluYWwgOiBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworY2xhc3MgUmVtb3Rl
Q0RNRmFjdG9yeVByb3h5IGZpbmFsIDogcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBXZWJD
b3JlOjpDRE1Qcml2YXRlQ2xpZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBSZW1vdGVDRE1GYWN0b3J5UHJveHkoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyYpOwpAQCAtNzIsNiArNzMsMTAgQEAgcHVibGljOgogCiAgICAgYm9vbCBhbGxvd3NFeGl0VW5k
ZXJNZW1vcnlQcmVzc3VyZSgpIGNvbnN0OwogCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisg
ICAgY29uc3QgTG9nZ2VyJiBsb2dnZXIoKSBjb25zdDsKKyNlbmRpZgorCiBwcml2YXRlOgogICAg
IGZyaWVuZCBjbGFzcyBHUFVQcm9jZXNzQ29ubmVjdGlvbjsKICAgICAvLyBJUEM6Ok1lc3NhZ2VS
ZWNlaXZlcgpAQCAtODYsNiArOTEsMTAgQEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPFJlbW90ZUNE
TUlkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1Qcm94eT4+IG1fcHJveGllczsK
ICAgICBIYXNoTWFwPFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRy
PFJlbW90ZUNETUluc3RhbmNlUHJveHk+PiBtX2luc3RhbmNlczsKICAgICBIYXNoTWFwPFJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25Qcm94eT4+IG1fc2Vzc2lvbnM7CisKKyNpZiAhUkVMRUFTRV9MT0dfRElT
QUJMRUQKKyAgICBtdXRhYmxlIFJlZlB0cjxMb2dnZXI+IG1fbG9nZ2VyOworI2VuZGlmCiB9Owog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RN
SW5zdGFuY2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
Q0RNSW5zdGFuY2VQcm94eS5jcHAKaW5kZXggNTFjNzM5YzMyYzc0ZDc3NmQzYjFmMzBlNTVkNWE1
NGJlYjEwODJjNi4uYWQxYmMwNmYzNmU5NWMxMjUyNDU4NmM3OTgwZjU0NGViZjNiNmY4YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNl
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1J
bnN0YW5jZVByb3h5LmNwcApAQCAtMzksMTkgKzM5LDIzIEBAIG5hbWVzcGFjZSBXZWJLaXQgewog
CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETUlu
c3RhbmNlUHJveHk+IFJlbW90ZUNETUluc3RhbmNlUHJveHk6OmNyZWF0ZShXZWFrUHRyPFJlbW90
ZUNETVByb3h5PiYmIGNkbSwgUmVmPENETUluc3RhbmNlPiYmIHByaXYsIFJlbW90ZUNETUluc3Rh
bmNlSWRlbnRpZmllciBpZGVudGlmaWVyKQorc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETUluc3Rh
bmNlUHJveHk+IFJlbW90ZUNETUluc3RhbmNlUHJveHk6OmNyZWF0ZShSZW1vdGVDRE1Qcm94eSYg
Y2RtLCBSZWY8Q0RNSW5zdGFuY2U+JiYgcHJpdiwgUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVy
IGlkZW50aWZpZXIpCiB7CiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gbWFrZVVuaXF1ZVJlZldp
dGhvdXRGYXN0TWFsbG9jQ2hlY2s8UmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uLCBSZW1v
dGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24mJj4oewogICAgICAgICBwcml2LT5rZXlTeXN0ZW0o
KSwKICAgICB9KTsKLSAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETUluc3RhbmNl
UHJveHk+KG5ldyBSZW1vdGVDRE1JbnN0YW5jZVByb3h5KFdURk1vdmUoY2RtKSwgV1RGTW92ZShw
cml2KSwgV1RGTW92ZShjb25maWd1cmF0aW9uKSwgaWRlbnRpZmllcikpOworICAgIHJldHVybiBz
dGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNSW5zdGFuY2VQcm94eT4obmV3IFJlbW90ZUNETUluc3Rh
bmNlUHJveHkoY2RtLCBXVEZNb3ZlKHByaXYpLCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pLCBpZGVu
dGlmaWVyKSk7CiB9CiAKLVJlbW90ZUNETUluc3RhbmNlUHJveHk6OlJlbW90ZUNETUluc3RhbmNl
UHJveHkoV2Vha1B0cjxSZW1vdGVDRE1Qcm94eT4mJiBjZG0sIFJlZjxDRE1JbnN0YW5jZT4mJiBw
cml2LCBVbmlxdWVSZWY8UmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uPiYmIGNvbmZpZ3Vy
YXRpb24sIFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciBpZGVudGlmaWVyKQotICAgIDogbV9j
ZG0oV1RGTW92ZShjZG0pKQorUmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6UmVtb3RlQ0RNSW5zdGFu
Y2VQcm94eShSZW1vdGVDRE1Qcm94eSYgY2RtLCBSZWY8Q0RNSW5zdGFuY2U+JiYgcHJpdiwgVW5p
cXVlUmVmPFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbj4mJiBjb25maWd1cmF0aW9uLCBS
ZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIgaWRlbnRpZmllcikKKyAgICA6IG1fY2RtKGNkbSkK
ICAgICAsIG1faW5zdGFuY2UoV1RGTW92ZShwcml2KSkKICAgICAsIG1fY29uZmlndXJhdGlvbihX
VEZNb3ZlKGNvbmZpZ3VyYXRpb24pKQogICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCisj
aWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgLCBtX2xvZ2dlcihjZG0ubG9nZ2VyKCkpCisg
ICAgLCBtX2xvZ0lkZW50aWZpZXIoY2RtLmxvZ0lkZW50aWZpZXIoKSkKKyNlbmRpZgogewogICAg
IG1faW5zdGFuY2UtPnNldENsaWVudCgqdGhpcyk7CiB9CkBAIC05NywxNSArMTAxLDIwIEBAIHZv
aWQgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6c2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJp
bmcmIGRpcmVjdG9yeSkKICAgICBtX2luc3RhbmNlLT5zZXRTdG9yYWdlRGlyZWN0b3J5KGRpcmVj
dG9yeSk7CiB9CiAKLXZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6Y3JlYXRlU2Vzc2lvbihD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50
aWZpZXImKT4mJiBjb21wbGV0aW9uKQordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpjcmVh
dGVTZXNzaW9uKHVpbnQ2NF90IGxvZ0lkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllciYpPiYmIGNvbXBsZXRpb24p
CiB7CiAgICAgYXV0byBwcml2U2Vzc2lvbiA9IG1faW5zdGFuY2UtPmNyZWF0ZVNlc3Npb24oKTsK
ICAgICBpZiAoIXByaXZTZXNzaW9uIHx8ICFtX2NkbSB8fCAhbV9jZG0tPmZhY3RvcnkoKSkgewog
ICAgICAgICBjb21wbGV0aW9uKHsgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisKKyNpZiAh
UkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBwcml2U2Vzc2lvbi0+c2V0TG9nSWRlbnRpZmllciht
X2xvZ0lkZW50aWZpZXIpOworI2VuZGlmCisKICAgICBhdXRvIGlkZW50aWZpZXIgPSBSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyOjpnZW5lcmF0ZSgpOwotICAgIGF1dG8gc2Vzc2lv
biA9IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpjcmVhdGUobV9jZG0uZ2V0KCksIHBy
aXZTZXNzaW9uLnJlbGVhc2VOb25OdWxsKCksIGlkZW50aWZpZXIpOworICAgIGF1dG8gc2Vzc2lv
biA9IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpjcmVhdGUobV9jZG0uZ2V0KCksIHBy
aXZTZXNzaW9uLnJlbGVhc2VOb25OdWxsKCksIGxvZ0lkZW50aWZpZXIsIGlkZW50aWZpZXIpOwog
ICAgIG1fY2RtLT5mYWN0b3J5KCktPmFkZFNlc3Npb24oaWRlbnRpZmllciwgV1RGTW92ZShzZXNz
aW9uKSk7CiAgICAgY29tcGxldGlvbihpZGVudGlmaWVyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oCmluZGV4
IDAyYzVjZDM3YWU1NDgwMmY2ZDBjOGRjY2NiMGJhODBjZjMzODhjMzMuLjhmMmNmOWJiNzZlY2U1
OTkyNzQ2YTgyMDU2NDhiMDkyZDNjNjFjOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuaApAQCAtNTUsNyArNTUs
NyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgV2ViQ29yZTo6Q0RNSW5zdGFuY2VDbGllbnQ6OndlYWtQ
dHJGYWN0b3J5OwogICAgIHVzaW5nIFdlYWtWYWx1ZVR5cGUgPSBXZWJDb3JlOjpDRE1JbnN0YW5j
ZUNsaWVudDo6V2Vha1ZhbHVlVHlwZTsKIAotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVt
b3RlQ0RNSW5zdGFuY2VQcm94eT4gY3JlYXRlKFdlYWtQdHI8UmVtb3RlQ0RNUHJveHk+JiYsIFJl
ZjxXZWJDb3JlOjpDRE1JbnN0YW5jZT4mJiwgUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyKTsK
KyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETUluc3RhbmNlUHJveHk+IGNyZWF0
ZShSZW1vdGVDRE1Qcm94eSYsIFJlZjxXZWJDb3JlOjpDRE1JbnN0YW5jZT4mJiwgUmVtb3RlQ0RN
SW5zdGFuY2VJZGVudGlmaWVyKTsKICAgICB+UmVtb3RlQ0RNSW5zdGFuY2VQcm94eSgpOwogCiAg
ICAgY29uc3QgUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9jb25maWd1cmF0aW9uLmdldCgpOyB9CkBAIC02MywxMCArNjMsMTQg
QEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBSZW1vdGVDRE1GYWN0b3J5
UHJveHk7Ci0gICAgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eShXZWFrUHRyPFJlbW90ZUNETVByb3h5
PiYmLCBSZWY8V2ViQ29yZTo6Q0RNSW5zdGFuY2U+JiYsIFVuaXF1ZVJlZjxSZW1vdGVDRE1JbnN0
YW5jZUNvbmZpZ3VyYXRpb24+JiYsIFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllcik7CisgICAg
UmVtb3RlQ0RNSW5zdGFuY2VQcm94eShSZW1vdGVDRE1Qcm94eSYsIFJlZjxXZWJDb3JlOjpDRE1J
bnN0YW5jZT4mJiwgVW5pcXVlUmVmPFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbj4mJiwg
UmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyKTsKIAogICAgIC8vIENETUluc3RhbmNlQ2xpZW50
CiAgICAgdm9pZCB1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0
cmluZyYsIFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyNp
ZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBjb25zdCBMb2dnZXImIGxvZ2dlcigpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1fbG9nZ2VyOyB9CisgICAgY29uc3Qgdm9pZCogbG9nSWRlbnRpZmll
cigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fbG9nSWRlbnRpZmllcjsgfQorI2VuZGlmCiAKICAg
ICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CkBAIC04MCwxMyArODQsMTggQEAg
cHJpdmF0ZToKICAgICB2b2lkIGluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBXZWJD
b3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgQWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZp
ZXJzLCBBbGxvd1BlcnNpc3RlbnRTdGF0ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdWNjZXNz
VmFsdWUpPiYmKTsKICAgICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKElQQzo6U2hhcmVkQnVm
ZmVyQ29weSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN1Y2Nlc3NWYWx1ZSk+JiYpOwogICAg
IHZvaWQgc2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIGNyZWF0
ZVNlc3Npb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb25JZGVudGlmaWVyJik+JiYpOworICAgIHZvaWQgY3JlYXRlU2Vzc2lvbih1aW50NjRfdCBs
b2dJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvbklkZW50aWZpZXImKT4mJik7CiAKICAgICBXZWFrUHRyPFJlbW90ZUNETVByb3h5
PiBtX2NkbTsKICAgICBSZWY8V2ViQ29yZTo6Q0RNSW5zdGFuY2U+IG1faW5zdGFuY2U7CiAgICAg
VW5pcXVlUmVmPFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbj4gbV9jb25maWd1cmF0aW9u
OwogICAgIFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAgICAgSGFz
aE1hcDxSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk+PiBtX3Nlc3Npb25zOworCisjaWYgIVJFTEVB
U0VfTE9HX0RJU0FCTEVECisgICAgUmVmPGNvbnN0IExvZ2dlcj4gbV9sb2dnZXI7CisgICAgY29u
c3Qgdm9pZCogbV9sb2dJZGVudGlmaWVyOworI2VuZGlmCiB9OwogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5j
ZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGQ1OTI2ZTJjYThiZDE5Y2UwZDdhMTEzMmY4YzlmNmQz
NjE3ZDIzN2QuLjM3NmMxNTNmMTAwOTE3OWQ1YWNkOGQ2OTRiNTdkOThiZWU0NjFhZTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVBy
b3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVDRE1JbnN0YW5jZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yNiw3ICsyNiw3IEBACiAjaWYgRU5B
QkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogCiBtZXNzYWdlcyAt
PiBSZW1vdGVDRE1JbnN0YW5jZVByb3h5IE5vdFJlZkNvdW50ZWQgewotICAgIENyZWF0ZVNlc3Np
b24oKSAtPiAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyIGlkZW50
aWZpZXIpIFN5bmNocm9ub3VzCisgICAgQ3JlYXRlU2Vzc2lvbih1aW50NjRfdCBsb2dJZGVudGlm
aWVyKSAtPiAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyIGlkZW50
aWZpZXIpIFN5bmNocm9ub3VzCiAgICAgSW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKHN0cnVj
dCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24sIGVudW06
Ym9vbCBXZWJDb3JlOjpDRE1JbnN0YW5jZTo6QWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzIGRp
c3RpbmN0aXZlSWRlbnRpZmllcnNBbGxvd2VkLCBlbnVtOmJvb2wgV2ViQ29yZTo6Q0RNSW5zdGFu
Y2U6OkFsbG93UGVyc2lzdGVudFN0YXRlIHBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQpIC0+IChlbnVt
OmJvb2wgV2ViQ29yZTo6Q0RNSW5zdGFuY2U6OlN1Y2Nlc3NWYWx1ZSBzdWNjZXNzKSBBc3luYwog
ICAgIFNldFNlcnZlckNlcnRpZmljYXRlKElQQzo6U2hhcmVkQnVmZmVyQ29weSBjZXJ0aWZpY2F0
ZSkgLT4gKGVudW06Ym9vbCBXZWJDb3JlOjpDRE1JbnN0YW5jZTo6U3VjY2Vzc1ZhbHVlIHN1Y2Nl
c3MpIEFzeW5jCiAgICAgU2V0U3RvcmFnZURpcmVjdG9yeShTdHJpbmcgZGlyZWN0b3J5KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNl
U2Vzc2lvblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25Qcm94eS5jcHAKaW5kZXggN2JhMTY2NGRmMTQ4ZjJkNGY2NTQzNjE0
ZTMxNDA0MGFiOTIyNzllZi4uZWNjMjEwNjdjOThjN2VlY2VlYmFlZDg0MThlNzQ1MGJmNmE5ZDFm
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuY3BwCkBAIC0zOCwxNSArMzgsMTUgQEAg
bmFtZXNwYWNlIFdlYktpdCB7CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1zdGQ6OnVu
aXF1ZV9wdHI8UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk+IFJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvblByb3h5OjpjcmVhdGUoV2Vha1B0cjxSZW1vdGVDRE1Qcm94eT4mJiBwcm94eSwgUmVm
PFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbj4mJiBzZXNzaW9uLCBSZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb25JZGVudGlmaWVyIGlkZW50aWZpZXIpCitzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uUHJveHk+IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpjcmVh
dGUoV2Vha1B0cjxSZW1vdGVDRE1Qcm94eT4mJiBwcm94eSwgUmVmPFdlYkNvcmU6OkNETUluc3Rh
bmNlU2Vzc2lvbj4mJiBzZXNzaW9uLCB1aW50NjRfdCBsb2dJZGVudGlmaWVyLCBSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25JZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0gICAgYXV0byBzZXNzaW9u
UHJveHkgPSBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk+KG5l
dyBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eShXVEZNb3ZlKHByb3h5KSwgV1RGTW92ZShz
ZXNzaW9uKSwgaWRlbnRpZmllcikpOworICAgIGF1dG8gc2Vzc2lvblByb3h5ID0gc3RkOjp1bmlx
dWVfcHRyPFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5PihuZXcgUmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uUHJveHkoV1RGTW92ZShwcm94eSksIFdURk1vdmUoc2Vzc2lvbiksIGxvZ0lkZW50
aWZpZXIsIGlkZW50aWZpZXIpKTsKICAgICBXZWFrUHRyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vz
c2lvbkNsaWVudD4gY2xpZW50ID0gc2Vzc2lvblByb3h5LmdldCgpOwogICAgIHNlc3Npb25Qcm94
eS0+bV9zZXNzaW9uLT5zZXRDbGllbnQoV1RGTW92ZShjbGllbnQpKTsKICAgICByZXR1cm4gc2Vz
c2lvblByb3h5OwogfQogCi1SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6UmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uUHJveHkoV2Vha1B0cjxSZW1vdGVDRE1Qcm94eT4mJiBjZG0sIFJlZjxX
ZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb24+JiYgc2Vzc2lvbiwgUmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uSWRlbnRpZmllciBpZGVudGlmaWVyKQorUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJv
eHk6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5KFdlYWtQdHI8UmVtb3RlQ0RNUHJveHk+
JiYgY2RtLCBSZWY8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uPiYmIHNlc3Npb24sIHVpbnQ2
NF90IGxvZ0lkZW50aWZpZXIsIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIgaWRl
bnRpZmllcikKICAgICA6IG1fY2RtKFdURk1vdmUoY2RtKSkKICAgICAsIG1fc2Vzc2lvbihXVEZN
b3ZlKHNlc3Npb24pKQogICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCkBAIC01Nyw2ICs1
NywxMSBAQCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6flJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvblByb3h5KCkKIHsKIH0KIAordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94
eTo6c2V0TG9nSWRlbnRpZmllcih1aW50NjRfdCBsb2dJZGVudGlmaWVyKQoreworICAgIG1fc2Vz
c2lvbi0+c2V0TG9nSWRlbnRpZmllcihyZWludGVycHJldF9jYXN0PGNvbnN0IHZvaWQqPihsb2dJ
ZGVudGlmaWVyKSk7Cit9CisKIHZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnJl
cXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIHR5cGUsIEF0b21TdHJpbmcgaW5pdERhdGFUeXBlLCBJ
UEM6OlNoYXJlZEJ1ZmZlckNvcHkmJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYgY29tcGxl
dGlvbikKIHsKICAgICBpZiAoIWluaXREYXRhLmJ1ZmZlcigpKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25Qcm94eS5oCmluZGV4IGZlNzMwOTcxMzFlMGJiMjBhNTAwMWUxNTAxNjAyZDY1MTg2YjMwOTAu
LmI5NDFhYjYzNDY5MTA4YzJmZjAwYWJjYTgxNTIxNjBmNjFlYjY5MzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb25Qcm94eS5oCkBAIC00NCwxMiArNDQsMTIgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAK
IGNsYXNzIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5IGZpbmFsIDogcHJpdmF0ZSBJUEM6
Ok1lc3NhZ2VSZWNlaXZlciwgcHJpdmF0ZSBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25DbGll
bnQgewogcHVibGljOgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uUHJveHk+IGNyZWF0ZShXZWFrUHRyPFJlbW90ZUNETVByb3h5PiYmLCBSZWY8V2Vi
Q29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uPiYmLCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVu
dGlmaWVyKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvblByb3h5PiBjcmVhdGUoV2Vha1B0cjxSZW1vdGVDRE1Qcm94eT4mJiwgUmVmPFdlYkNvcmU6
OkNETUluc3RhbmNlU2Vzc2lvbj4mJiwgdWludDY0X3QgbG9nSWRlbnRpZmllciwgUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uSWRlbnRpZmllcik7CiAgICAgdmlydHVhbCB+UmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uUHJveHkoKTsKIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgUmVtb3RlQ0RN
RmFjdG9yeVByb3h5OwotICAgIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5KFdlYWtQdHI8
UmVtb3RlQ0RNUHJveHk+JiYsIFJlZjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb24+JiYsIFJl
bW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIpOworICAgIFJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvblByb3h5KFdlYWtQdHI8UmVtb3RlQ0RNUHJveHk+JiYsIFJlZjxXZWJDb3JlOjpDRE1J
bnN0YW5jZVNlc3Npb24+JiYsIHVpbnQ2NF90IGxvZ0lkZW50aWZpZXIsIFJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvbklkZW50aWZpZXIpOwogCiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAg
ICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYp
IGZpbmFsOwpAQCAtNjcsNiArNjcsNyBAQCBwcml2YXRlOgogICAgIHVzaW5nIFN0b3JlUmVjb3Jk
Q2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+OwogCiAgICAgLy8gTWVzc2FnZXMK
KyAgICB2b2lkIHNldExvZ0lkZW50aWZpZXIodWludDY0X3QpOwogICAgIHZvaWQgcmVxdWVzdExp
Y2Vuc2UoTGljZW5zZVR5cGUsIEF0b21TdHJpbmcgaW5pdERhdGFUeXBlLCBJUEM6OlNoYXJlZEJ1
ZmZlckNvcHkmJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpOwogICAgIHZvaWQgdXBkYXRl
TGljZW5zZShTdHJpbmcgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSwgSVBDOjpTaGFyZWRCdWZmZXJD
b3B5JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKTsKICAgICB2b2lkIGxvYWRT
ZXNzaW9uKExpY2Vuc2VUeXBlLCBTdHJpbmcgc2Vzc2lvbklkLCBTdHJpbmcgb3JpZ2luLCBMb2Fk
U2Vzc2lvbkNhbGxiYWNrJiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Lm1l
c3NhZ2VzLmluCmluZGV4IDYxMmVhYTM4YWRkMjY0M2NkNjE5ODJhMGE3ZGVmNThlMzQ1MGY4ZGQu
LjhhZDY4MjY5Y2Q3ZTBhNjZhM2U1ZmU3NTIxYjBhM2ZhZWFjODBhNWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94
eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uUHJveHkubWVzc2FnZXMuaW4KQEAgLTI2LDYgKzI2LDcgQEAKICNp
ZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAKIG1lc3Nh
Z2VzIC0+IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5IE5vdFJlZkNvdW50ZWQgeworICAg
IFNldExvZ0lkZW50aWZpZXIodWludDY0X3QgbG9nSWRlbnRpZmllcikKICAgICBSZXF1ZXN0TGlj
ZW5zZShXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246OkxpY2Vuc2VUeXBlIHR5cGUsIEF0b21T
dHJpbmcgaW5pdERhdGFUeXBlLCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkgaW5pdERhdGEpIC0+IChJ
UEM6OlNoYXJlZEJ1ZmZlckNvcHkgbWVzc2FnZSwgU3RyaW5nIHNlc3Npb25JZCwgYm9vbCBuZWVk
c0luZGl2aWR1YWxpemF0aW9uLCBib29sIHN1Y2NlZWRlZCkgQXN5bmMKICAgICBVcGRhdGVMaWNl
bnNlKFN0cmluZyBzZXNzaW9uSWQsIFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TGljZW5z
ZVR5cGUgdHlwZSwgSVBDOjpTaGFyZWRCdWZmZXJDb3B5IHJlc3BvbnNlKSAtPiAoYm9vbCBzZXNz
aW9uV2FzQ2xvc2VkLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6
S2V5U3RhdHVzVmVjdG9yPiBjaGFuZ2VkS2V5cywgc3RkOjpvcHRpb25hbDxkb3VibGU+IGNoYW5n
ZWRFeHBpcmF0aW9uLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6
TWVzc2FnZT4gbWVzc2FnZSwgYm9vbCBzdWNjZWVkZWQpIEFzeW5jCiAgICAgTG9hZFNlc3Npb24o
V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpMaWNlbnNlVHlwZSB0eXBlLCBTdHJpbmcgc2Vz
c2lvbklkLCBTdHJpbmcgb3JpZ2luKSAtPiAoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpDRE1JbnN0
YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3Rvcj4gY2hhbmdlZEtleXMsIHN0ZDo6b3B0aW9uYWw8
ZG91YmxlPiBjaGFuZ2VkRXhwaXJhdGlvbiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpDRE1JbnN0
YW5jZVNlc3Npb246Ok1lc3NhZ2U+IG1lc3NhZ2UsIGJvb2wgc3VjY2VlZGVkLCBlbnVtOnVpbnQ4
X3QgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpTZXNzaW9uTG9hZEZhaWx1cmUgbG9hZEZh
aWx1cmUpIEFzeW5jCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlQ0RNUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUNETVByb3h5LmNwcAppbmRleCBmN2NiNmE2M2ViOTMzYWJkNGQ0NTNhMjJhYjI5NGYxMzAzMjMy
YjA2Li40NGZjNjg4Yzg0YWZjMDI0Y2QzNjgyZTBhN2Q3OGEzNjdiODQyNWFjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5jcHAKQEAgLTM5
LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCi1zdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNUHJveHk+IFJlbW90ZUNETVByb3h5OjpjcmVh
dGUoV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5UHJveHk+JiYgZmFjdG9yeSwgc3RkOjp1bmlxdWVf
cHRyPFdlYkNvcmU6OkNETVByaXZhdGU+JiYgcHJpdikKK3N0ZDo6dW5pcXVlX3B0cjxSZW1vdGVD
RE1Qcm94eT4gUmVtb3RlQ0RNUHJveHk6OmNyZWF0ZShSZW1vdGVDRE1GYWN0b3J5UHJveHkmIGZh
Y3RvcnksIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpDRE1Qcml2YXRlPiYmIHByaXYpCiB7CiAg
ICAgaWYgKCFwcml2KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTUxLDEzICs1MSwxNiBA
QCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNUHJveHk+IFJlbW90ZUNETVByb3h5OjpjcmVhdGUo
V2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5UAogICAgICAgICBwcml2LT5zdXBwb3J0c1Nlc3Npb25z
KCkKICAgICB9KTsKICAgICAvLyBVc2UgbmV3KCkgdG8gYWNjZXNzIENETVByaXZhdGUncyBwcml2
YXRlIGNvbnN0cnVjdG9yLgotICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ0RNUHJv
eHk+KG5ldyBSZW1vdGVDRE1Qcm94eShXVEZNb3ZlKGZhY3RvcnkpLCBXVEZNb3ZlKHByaXYpLCBX
VEZNb3ZlKGNvbmZpZ3VyYXRpb24pKSk7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxSZW1v
dGVDRE1Qcm94eT4obmV3IFJlbW90ZUNETVByb3h5KGZhY3RvcnksIFdURk1vdmUocHJpdiksIFdU
Rk1vdmUoY29uZmlndXJhdGlvbikpKTsKIH0KIAotUmVtb3RlQ0RNUHJveHk6OlJlbW90ZUNETVBy
b3h5KFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeVByb3h5PiYmIGZhY3RvcnksIHN0ZDo6dW5pcXVl
X3B0cjxDRE1Qcml2YXRlPiYmIHByaXYsIFVuaXF1ZVJlZjxSZW1vdGVDRE1Db25maWd1cmF0aW9u
PiYmIGNvbmZpZ3VyYXRpb24pCi0gICAgOiBtX2ZhY3RvcnkoV1RGTW92ZShmYWN0b3J5KSkKK1Jl
bW90ZUNETVByb3h5OjpSZW1vdGVDRE1Qcm94eShSZW1vdGVDRE1GYWN0b3J5UHJveHkmIGZhY3Rv
cnksIHN0ZDo6dW5pcXVlX3B0cjxDRE1Qcml2YXRlPiYmIHByaXYsIFVuaXF1ZVJlZjxSZW1vdGVD
RE1Db25maWd1cmF0aW9uPiYmIGNvbmZpZ3VyYXRpb24pCisgICAgOiBtX2ZhY3RvcnkoZmFjdG9y
eSkKICAgICAsIG1fcHJpdmF0ZShXVEZNb3ZlKHByaXYpKQogICAgICwgbV9jb25maWd1cmF0aW9u
KFdURk1vdmUoY29uZmlndXJhdGlvbikpCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAg
LCBtX2xvZ2dlcihmYWN0b3J5LmxvZ2dlcigpKQorI2VuZGlmCiB7CiB9CiAKQEAgLTEwMiw2ICsx
MDUsMTcgQEAgdm9pZCBSZW1vdGVDRE1Qcm94eTo6bG9hZEFuZEluaXRpYWxpemUoKQogICAgIG1f
cHJpdmF0ZS0+bG9hZEFuZEluaXRpYWxpemUoKTsKIH0KIAordm9pZCBSZW1vdGVDRE1Qcm94eTo6
c2V0TG9nSWRlbnRpZmllcih1aW50NjRfdCBsb2dJZGVudGlmaWVyKQoreworI2lmICFSRUxFQVNF
X0xPR19ESVNBQkxFRAorICAgIG1fbG9nSWRlbnRpZmllciA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3Qgdm9pZCo+KGxvZ0lkZW50aWZpZXIpOworICAgIGlmIChtX2ZhY3RvcnkpCisgICAgICAgIG1f
cHJpdmF0ZS0+c2V0TG9nSWRlbnRpZmllcihtX2xvZ0lkZW50aWZpZXIpOworI2Vsc2UKKyAgICBV
TlVTRURfUEFSQU0obG9nSWRlbnRpZmllcik7CisjZW5kaWYKK30KKwogfQogCiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5o
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmgKaW5kZXgg
M2I2NmM3NzU3ODcwNjllOTc2ZWUwNjRmOTZmZjA3YzBmNzEyYTkwYi4uYThiZjE3YmIyYWNlZGIz
ODFkNzgzZDg5MzMwN2EwYzY5MzY2MzlmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmgKQEAgLTUxLDcgKzUxLDcgQEAgc3RydWN0IFJlbW90
ZUNETUNvbmZpZ3VyYXRpb247CiAKIGNsYXNzIFJlbW90ZUNETVByb3h5IDogcHVibGljIElQQzo6
TWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJl
bW90ZUNETVByb3h5PiBjcmVhdGUoV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5UHJveHk+JiYsIHN0
ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpDRE1Qcml2YXRlPiYmKTsKKyAgICBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPFJlbW90ZUNETVByb3h5PiBjcmVhdGUoUmVtb3RlQ0RNRmFjdG9yeVByb3h5Jiwg
c3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkNETVByaXZhdGU+JiYpOwogICAgIH5SZW1vdGVDRE1Q
cm94eSgpOwogCiAgICAgY29uc3QgUmVtb3RlQ0RNQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fY29uZmlndXJhdGlvbi5nZXQoKTsgfQpAQCAtNjIsOSArNjIs
MTQgQEAgcHVibGljOgogICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
IHJlc3BvbnNlKTsKICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gc2FuaXRpemVTZXNzaW9uSWQo
Y29uc3QgU3RyaW5nJiBzZXNzaW9uSWQpOwogCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisg
ICAgY29uc3QgTG9nZ2VyJiBsb2dnZXIoKSBjb25zdCB7IHJldHVybiBtX2xvZ2dlcjsgfQorICAg
IGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2xvZ0lkZW50aWZp
ZXI7IH0KKyNlbmRpZgorCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBSZW1vdGVDRE1GYWN0
b3J5UHJveHk7Ci0gICAgUmVtb3RlQ0RNUHJveHkoV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5UHJv
eHk+JiYsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpDRE1Qcml2YXRlPiYmLCBVbmlxdWVSZWY8
UmVtb3RlQ0RNQ29uZmlndXJhdGlvbj4mJik7CisgICAgUmVtb3RlQ0RNUHJveHkoUmVtb3RlQ0RN
RmFjdG9yeVByb3h5Jiwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkNETVByaXZhdGU+JiYsIFVu
aXF1ZVJlZjxSZW1vdGVDRE1Db25maWd1cmF0aW9uPiYmKTsKIAogICAgIC8vIElQQzo6TWVzc2Fn
ZVJlY2VpdmVyCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJ
UEM6OkRlY29kZXImKSBmaW5hbDsKQEAgLTc0LDEwICs3OSwxNiBAQCBwcml2YXRlOgogICAgIHZv
aWQgZ2V0U3VwcG9ydGVkQ29uZmlndXJhdGlvbihXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1
cmF0aW9uJiYsIFdlYkNvcmU6OkNETVByaXZhdGU6OkxvY2FsU3RvcmFnZUFjY2VzcywgV2ViQ29y
ZTo6Q0RNUHJpdmF0ZTo6U3VwcG9ydGVkQ29uZmlndXJhdGlvbkNhbGxiYWNrJiYpOwogICAgIHZv
aWQgY3JlYXRlSW5zdGFuY2UoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZW1vdGVDRE1JbnN0YW5j
ZUlkZW50aWZpZXIsIFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbiYmKT4mJik7CiAgICAg
dm9pZCBsb2FkQW5kSW5pdGlhbGl6ZSgpOworICAgIHZvaWQgc2V0TG9nSWRlbnRpZmllcih1aW50
NjRfdCk7CiAKICAgICBXZWFrUHRyPFJlbW90ZUNETUZhY3RvcnlQcm94eT4gbV9mYWN0b3J5Owog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpDRE1Qcml2YXRlPiBtX3ByaXZhdGU7CiAgICAg
VW5pcXVlUmVmPFJlbW90ZUNETUNvbmZpZ3VyYXRpb24+IG1fY29uZmlndXJhdGlvbjsKKworI2lm
ICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIFJlZjxjb25zdCBMb2dnZXI+IG1fbG9nZ2VyOwor
ICAgIGNvbnN0IHZvaWQqIG1fbG9nSWRlbnRpZmllciB7IG51bGxwdHIgfTsKKyNlbmRpZgogfTsK
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNE
TVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUNETVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDEyMTQxZDEyYjZiYmJiYTMyNzA4ZGE0ZjNlYWI4
OGM3NjNjM2E4ODkuLjU3OGMyNDk5N2UzYTFhYjY3N2JjNjJlZWM3ODhkYjBmODZmOTlhYTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RN
UHJveHkubWVzc2FnZXMuaW4KQEAgLTI5LDYgKzI5LDcgQEAgbWVzc2FnZXMgLT4gUmVtb3RlQ0RN
UHJveHkgTm90UmVmQ291bnRlZCB7CiAgICAgR2V0U3VwcG9ydGVkQ29uZmlndXJhdGlvbihzdHJ1
Y3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiBjYW5kaWRhdGVDb25maWd1cmF0
aW9uLCBlbnVtOmJvb2wgV2ViQ29yZTo6Q0RNUHJpdmF0ZTo6TG9jYWxTdG9yYWdlQWNjZXNzIGFj
Y2VzcykgLT4gKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlv
bj4gYWNjdW11bGF0ZWRDb25maWd1cmF0aW9uKSBBc3luYwogICAgIENyZWF0ZUluc3RhbmNlKCkg
LT4gKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyIGlkZW50aWZpZXIsIHN0cnVj
dCBXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKSBT
eW5jaHJvbm91cwogICAgIExvYWRBbmRJbml0aWFsaXplKCkKKyAgICBTZXRMb2dJZGVudGlmaWVy
KHVpbnQ2NF90IGxvZ0lkZW50aWZpZXIpCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVBy
b3h5LmNwcAppbmRleCA3Y2VkYjk3MTJmYzY2YjViOGRiNTJiYWYwOGNiMGMyYTY0ZTk0ZWU3Li42
Mzg0NTI4OTEwODlhNTJiMTNjN2I3ZWVkNGQwMWM4OTUxOTU1MmM3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFj
dG9yeVByb3h5LmNwcApAQCAtMTcwLDYgKzE3MCwxOCBAQCBib29sIFJlbW90ZUxlZ2FjeUNETUZh
Y3RvcnlQcm94eTo6YWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1cmUoKSBjb25zdAogICAgIHJl
dHVybiBtX3Nlc3Npb25zLmlzRW1wdHkoKTsKIH0KIAorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxF
RAorY29uc3QgTG9nZ2VyJiBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk6OmxvZ2dlcigpIGNv
bnN0Cit7CisgICAgaWYgKCFtX2xvZ2dlcikgeworICAgICAgICBtX2xvZ2dlciA9IExvZ2dlcjo6
Y3JlYXRlKHRoaXMpOworICAgICAgICBtX2xvZ2dlci0+c2V0RW5hYmxlZCh0aGlzLCBtX2dwdUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MgPyBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPnNlc3Np
b25JRCgpLmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpIDogZmFsc2UpOworICAgIH0KKworICAg
IHJldHVybiAqbV9sb2dnZXI7Cit9CisjZW5kaWYKKwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0
b3J5UHJveHkuaAppbmRleCBkODc0OWRlMTAxYTk2OGVhYTAwMWM3YjFiZGVlMTg4NjczOGY4Mjc2
Li4zYTE3ZDQxNTYwYjEyMjFmZDc1YjUyYzExOGJlOTRhYjhhYWQ4YmI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZh
Y3RvcnlQcm94eS5oCkBAIC02Niw2ICs2NiwxMCBAQCBwdWJsaWM6CiAKICAgICBib29sIGFsbG93
c0V4aXRVbmRlck1lbW9yeVByZXNzdXJlKCkgY29uc3Q7CiAKKyNpZiAhUkVMRUFTRV9MT0dfRElT
QUJMRUQKKyAgICBjb25zdCBMb2dnZXImIGxvZ2dlcigpIGNvbnN0OworI2VuZGlmCisKIHByaXZh
dGU6CiAgICAgZnJpZW5kIGNsYXNzIEdQVVByb2Nlc3NDb25uZWN0aW9uOwogICAgIC8vIElQQzo6
TWVzc2FnZVJlY2VpdmVyCkBAIC03OSw2ICs4MywxMCBAQCBwcml2YXRlOgogICAgIFdlYWtQdHI8
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOwog
ICAgIEhhc2hNYXA8UmVtb3RlTGVnYWN5Q0RNSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFJl
bW90ZUxlZ2FjeUNETVByb3h5Pj4gbV9wcm94aWVzOwogICAgIEhhc2hNYXA8UmVtb3RlTGVnYWN5
Q0RNU2Vzc2lvbklkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMZWdhY3lDRE1TZXNz
aW9uUHJveHk+PiBtX3Nlc3Npb25zOworCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAg
bXV0YWJsZSBSZWZQdHI8TG9nZ2VyPiBtX2xvZ2dlcjsKKyNlbmRpZgogfTsKIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94
eS5jcHAKaW5kZXggZmZmNmViNTI5ZTU2OWZiOGY0YmUxMzBkN2Q4Y2UzMDc2NTM5Yjc4MC4uOGE3
NDNhZjM0ODY5ZmY5NDI3Yjc3MzU0ZDc0YzIyMzc3YzJiM2E0MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuY3BwCkBA
IC02MSwxNyArNjEsMTcgQEAgdm9pZCBSZW1vdGVMZWdhY3lDRE1Qcm94eTo6c3VwcG9ydHNNSU1F
VHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBTdXBwb3J0c01JTUUKICAgICBjYWxsYmFjayht
X2NkbS0+c3VwcG9ydHNNSU1FVHlwZShtaW1lVHlwZSkpOwogfQogCi12b2lkIFJlbW90ZUxlZ2Fj
eUNETVByb3h5OjpjcmVhdGVTZXNzaW9uKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBDcmVhdGVT
ZXNzaW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgUmVtb3RlTGVnYWN5Q0RNUHJveHk6OmNy
ZWF0ZVNlc3Npb24oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIHVpbnQ2NF90IGxvZ0lkZW50aWZp
ZXIsIENyZWF0ZVNlc3Npb25DYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIGlmICghbV9jZG0g
fHwgIW1fZmFjdG9yeSkgewogICAgICAgICBjYWxsYmFjayh7IH0pOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgYXV0byBpZGVudGlmaWVyID0gUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklk
ZW50aWZpZXI6OmdlbmVyYXRlKCk7Ci0gICAgYXV0byBzZXNzaW9uID0gUmVtb3RlTGVnYWN5Q0RN
U2Vzc2lvblByb3h5OjpjcmVhdGUobV9mYWN0b3J5LmdldCgpLCBpZGVudGlmaWVyLCAqbV9jZG0p
OwotICAgIG1fZmFjdG9yeS0+YWRkU2Vzc2lvbihpZGVudGlmaWVyLCBXVEZNb3ZlKHNlc3Npb24p
KTsKLSAgICBjYWxsYmFjayhXVEZNb3ZlKGlkZW50aWZpZXIpKTsKKyAgICBhdXRvIHNlc3Npb25J
ZGVudGlmaWVyID0gUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXI6OmdlbmVyYXRlKCk7
CisgICAgYXV0byBzZXNzaW9uID0gUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpjcmVhdGUo
Km1fZmFjdG9yeSwgbG9nSWRlbnRpZmllciwgc2Vzc2lvbklkZW50aWZpZXIsICptX2NkbSk7Cisg
ICAgbV9mYWN0b3J5LT5hZGRTZXNzaW9uKHNlc3Npb25JZGVudGlmaWVyLCBXVEZNb3ZlKHNlc3Np
b24pKTsKKyAgICBjYWxsYmFjayhXVEZNb3ZlKHNlc3Npb25JZGVudGlmaWVyKSk7CiB9CiAKIHZv
aWQgUmVtb3RlTGVnYWN5Q0RNUHJveHk6OnNldFBsYXllcklkKHN0ZDo6b3B0aW9uYWw8TWVkaWFQ
bGF5ZXJJZGVudGlmaWVyPiYmIHBsYXllcklkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuaAppbmRleCBkZThmNmRmNTVhNmUx
ZmE4YmU5NjZmOTQxZTA3ZmUyZjVjNTAyMWE3Li45MWU0MzhhYzdlNGM0ZGY0ZDMyMzc2NjcyZjJl
ZjJhNzRkODYyODM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTGVnYWN5Q0RNUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuaApAQCAtNjIsNyArNjIsNyBAQCBwcml2YXRlOgogICAg
IHVzaW5nIFN1cHBvcnRzTUlNRVR5cGVDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+OwogICAgIHZvaWQgc3VwcG9ydHNNSU1FVHlwZShjb25zdCBTdHJpbmcmLCBTdXBwb3J0
c01JTUVUeXBlQ2FsbGJhY2smJik7CiAgICAgdXNpbmcgQ3JlYXRlU2Vzc2lvbkNhbGxiYWNrID0g
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllciYm
KT47Ci0gICAgdm9pZCBjcmVhdGVTZXNzaW9uKGNvbnN0IFN0cmluZyYsIENyZWF0ZVNlc3Npb25D
YWxsYmFjayYmKTsKKyAgICB2b2lkIGNyZWF0ZVNlc3Npb24oY29uc3QgU3RyaW5nJiwgdWludDY0
X3QsIENyZWF0ZVNlc3Npb25DYWxsYmFjayYmKTsKICAgICB2b2lkIHNldFBsYXllcklkKHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVyPiYmKTsKIAogICAgIC8vIExl
Z2FjeUNETUNsaWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUxlZ2FjeUNETVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDhlYzZiM2I3
YWFlZjZiMWI1ZmQ2ZjBlMzg1N2ZkYzUxYTJhZjY2MDcuLjA2ZjhiMGNiNGYwMWNiNmM3YjBjNmQ2
ZWZhZDYxNThhMzhiNmRmMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkubWVzc2FnZXMuaW4KQEAgLTI1
LDcgKzI1LDcgQEAKIAogbWVzc2FnZXMgLT4gUmVtb3RlTGVnYWN5Q0RNUHJveHkgTm90UmVmQ291
bnRlZCB7CiAgICAgU3VwcG9ydHNNSU1FVHlwZShTdHJpbmcgbWltZVR5cGUpIC0+IChib29sIHN1
cHBvcnRzKSBTeW5jaHJvbm91cwotICAgIENyZWF0ZVNlc3Npb24oU3RyaW5nIG1lZGlhS2V5c1N0
b3JhZ2VEaXJlY3RvcnkpIC0+IChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlm
aWVyIGlkZW50aWZpZXIpIFN5bmNocm9ub3VzCisgICAgQ3JlYXRlU2Vzc2lvbihTdHJpbmcgbWVk
aWFLZXlzU3RvcmFnZURpcmVjdG9yeSwgdWludDY0X3QgbG9nSWRlbnRpZmllcikgLT4gKFdlYktp
dDo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXIgaWRlbnRpZmllcikgU3luY2hyb25v
dXMKICAgICBTZXRQbGF5ZXJJZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Ok1lZGlhUGxheWVySWRl
bnRpZmllcj4gcGxheWVySWQpCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5jcHAKaW5kZXgg
YzhlNzQ2M2RlNjc4MzI5MTc2MzU1YmYxYTEwYTIzZjRkODg2OWFiYS4uZDNhZTAwNWMyZmQwN2Ew
MjAxNTEzNmNlNTM0ZmViNDQ0M2MyNTA2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5jcHAK
QEAgLTM1LDE5ICszNSwyNCBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0dlbmVyaWNUeXBl
ZEFycmF5Vmlld0lubGluZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0xlZ2FjeUNETS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CisjaW5jbHVkZSA8d3RmL0xvZ2dlckhlbHBl
ci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
LXN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk+IFJlbW90ZUxlZ2Fj
eUNETVNlc3Npb25Qcm94eTo6Y3JlYXRlKFdlYWtQdHI8UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVBy
b3h5PiYmIGZhY3RvcnksIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyIGlkZW50aWZp
ZXIsIFdlYkNvcmU6OkxlZ2FjeUNETSYgY2RtKQorc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxlZ2Fj
eUNETVNlc3Npb25Qcm94eT4gUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpjcmVhdGUoUmVt
b3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5JiBmYWN0b3J5LCB1aW50NjRfdCBsb2dJZGVudGlmaWVy
LCBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllciBzZXNzaW9uSWRlbnRpZmllciwgV2Vi
Q29yZTo6TGVnYWN5Q0RNJiBjZG0pCiB7Ci0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxSZW1v
dGVMZWdhY3lDRE1TZXNzaW9uUHJveHk+KG5ldyBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHko
V1RGTW92ZShmYWN0b3J5KSwgaWRlbnRpZmllciwgY2RtKSk7CisgICAgcmV0dXJuIHN0ZDo6dW5p
cXVlX3B0cjxSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk+KG5ldyBSZW1vdGVMZWdhY3lDRE1T
ZXNzaW9uUHJveHkoZmFjdG9yeSwgbG9nSWRlbnRpZmllciwgc2Vzc2lvbklkZW50aWZpZXIsIGNk
bSkpOwogfQogCi1SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OlJlbW90ZUxlZ2FjeUNETVNl
c3Npb25Qcm94eShXZWFrUHRyPFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eT4mJiBmYWN0b3J5
LCBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJDb3JlOjpM
ZWdhY3lDRE0mIGNkbSkKLSAgICA6IG1fZmFjdG9yeShXVEZNb3ZlKGZhY3RvcnkpKQotICAgICwg
bV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCitSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OlJl
bW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eShSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkmIGZh
Y3RvcnksIHVpbnQ2NF90IGxvZ0lkZW50aWZpZXIsIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVu
dGlmaWVyIHNlc3Npb25JZGVudGlmaWVyLCBXZWJDb3JlOjpMZWdhY3lDRE0mIGNkbSkKKyAgICA6
IG1fZmFjdG9yeShmYWN0b3J5KQorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgICwgbV9s
b2dnZXIoZmFjdG9yeS5sb2dnZXIoKSkKKyAgICAsIG1fbG9nSWRlbnRpZmllcihyZWludGVycHJl
dF9jYXN0PGNvbnN0IHZvaWQqPihsb2dJZGVudGlmaWVyKSkKKyNlbmRpZgorICAgICwgbV9pZGVu
dGlmaWVyKHNlc3Npb25JZGVudGlmaWVyKQogICAgICwgbV9zZXNzaW9uKGNkbS5jcmVhdGVTZXNz
aW9uKCp0aGlzKSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuaAppbmRleCAxNTQ2YmRmZGZk
Y2YwOTEwODc4OTQ0ZjM0MDc5NjdhN2FiMzhiZjg2Li5lYTQ5OTgzNjJhNjAxZTFhNDcyMzVmNjJj
MWUxNWQ2NzMxNGNhNTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5oCkBAIC01Myw3ICs1Myw3
IEBAIGNsYXNzIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eQogICAgIDogcHVibGljIElQQzo6
TWVzc2FnZVJlY2VpdmVyCiAgICAgLCBwdWJsaWMgV2ViQ29yZTo6TGVnYWN5Q0RNU2Vzc2lvbkNs
aWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMZWdhY3lD
RE1TZXNzaW9uUHJveHk+IGNyZWF0ZShXZWFrUHRyPFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94
eT4mJiwgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXIsIFdlYkNvcmU6OkxlZ2FjeUNE
TSYpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblBy
b3h5PiBjcmVhdGUoUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5JiwgdWludDY0X3QgbG9nSWRl
bnRpZmllciwgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXIsIFdlYkNvcmU6OkxlZ2Fj
eUNETSYpOwogICAgIH5SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkoKTsKIAogICAgIFJlbW90
ZUxlZ2FjeUNETUZhY3RvcnlQcm94eSogZmFjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fZmFjdG9y
eS5nZXQoKTsgfQpAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgZnJp
ZW5kIGNsYXNzIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eTsKLSAgICBSZW1vdGVMZWdhY3lD
RE1TZXNzaW9uUHJveHkoV2Vha1B0cjxSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk+JiYsIFJl
bW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyLCBXZWJDb3JlOjpMZWdhY3lDRE0mKTsKKyAg
ICBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkoUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5
JiwgdWludDY0X3QgbG9nSWRlbnRpZmllciwgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZp
ZXIsIFdlYkNvcmU6OkxlZ2FjeUNETSYpOwogCiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIK
ICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2Rl
ciYpIGZpbmFsOwpAQCAtNzUsNiArNzUsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNlbmRNZXNz
YWdlKFVpbnQ4QXJyYXkqLCBTdHJpbmcgZGVzdGluYXRpb25VUkwpIGZpbmFsOwogICAgIHZvaWQg
c2VuZEVycm9yKE1lZGlhS2V5RXJyb3JDb2RlLCB1aW50MzJfdCBzeXN0ZW1Db2RlKSBmaW5hbDsK
ICAgICBTdHJpbmcgbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0IGZpbmFsOworI2lm
ICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIGNvbnN0IExvZ2dlciYgbG9nZ2VyKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV9sb2dnZXI7IH0KKyAgICBjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVy
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9sb2dJZGVudGlmaWVyOyB9CisjZW5kaWYKIAogICAg
IC8vIE1lc3NhZ2VzCiAgICAgdXNpbmcgR2VuZXJhdGVLZXlDYWxsYmFjayA9IENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+JiYsIGNvbnN0
IFN0cmluZyYsIHVuc2lnbmVkIHNob3J0LCB1aW50MzJfdCk+OwpAQCAtODYsNiArOTAsMTIgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGNhY2hlZEtleUZvcktleUlEKFN0cmluZyBrZXlJZCwgQ2FjaGVk
S2V5Rm9yS2V5SURDYWxsYmFjayYmKTsKIAogICAgIFdlYWtQdHI8UmVtb3RlTGVnYWN5Q0RNRmFj
dG9yeVByb3h5PiBtX2ZhY3Rvcnk7CisKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBS
ZWY8Y29uc3QgTG9nZ2VyPiBtX2xvZ2dlcjsKKyAgICBjb25zdCB2b2lkKiBtX2xvZ0lkZW50aWZp
ZXI7CisjZW5kaWYKKwogICAgIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyIG1faWRl
bnRpZmllcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TGVnYWN5Q0RNU2Vzc2lvbj4g
bV9zZXNzaW9uOwogICAgIFdlYWtQdHI8UmVtb3RlTWVkaWFQbGF5ZXJQcm94eT4gbV9wbGF5ZXI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKaW5kZXggZWE0ZGNiMzc0ZDBjNWI4ZGNiOTEw
OTA0ZmZkZGNjMDJhNDJlOTk3Yi4uYjlhMzk0YjZiMDhiYzNhNmZmMDk2OTM1MGMyM2NkNDlhNDNl
ZWU4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRp
YVBsYXllclByaXZhdGVSZW1vdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcApAQCAtMTE1OSw3ICsxMTU5LDcg
QEAgQXVkaW9Tb3VyY2VQcm92aWRlciogTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjphdWRpb1Nv
dXJjZVByb3ZpZGVyKCkKICNlbmRpZgogCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVE
SUEpCi1zdGQ6OnVuaXF1ZV9wdHI8TGVnYWN5Q0RNU2Vzc2lvbj4gTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlOjpjcmVhdGVTZXNzaW9uKGNvbnN0IFN0cmluZyYsIExlZ2FjeUNETVNlc3Npb25DbGll
bnQqKQorc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNETVNlc3Npb24+IE1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6Y3JlYXRlU2Vzc2lvbihjb25zdCBTdHJpbmcmLCBMZWdhY3lDRE1TZXNzaW9uQ2xp
ZW50JikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBudWxscHRyOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclBy
aXZhdGVSZW1vdGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlLmgKaW5kZXggMzhlZjg4OTcxODIwMjk0NDQwM2M1MmY4M2I5NDI3
MTcxMjExOGU2NC4uZjg2ZmJlYWY2OTIyMTU1NmRiNTFiMzQyNDBlZDQ3ZjlkZDRhZTY3NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclBy
aXZhdGVSZW1vdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oCkBAIC0zNTAsNyArMzUwLDcgQEAgcHJpdmF0ZToKICNl
bmRpZgogCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCi0gICAgc3RkOjp1bmlx
dWVfcHRyPFdlYkNvcmU6OkxlZ2FjeUNETVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oY29uc3QgU3Ry
aW5nJiwgV2ViQ29yZTo6TGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCopIGZpbmFsOworICAgIHN0ZDo6
dW5pcXVlX3B0cjxXZWJDb3JlOjpMZWdhY3lDRE1TZXNzaW9uPiBjcmVhdGVTZXNzaW9uKGNvbnN0
IFN0cmluZyYsIFdlYkNvcmU6OkxlZ2FjeUNETVNlc3Npb25DbGllbnQmKSBmaW5hbDsKICAgICB2
b2lkIHNldENETShXZWJDb3JlOjpMZWdhY3lDRE0qKSBmaW5hbDsKICAgICB2b2lkIHNldENETVNl
c3Npb24oV2ViQ29yZTo6TGVnYWN5Q0RNU2Vzc2lvbiopIGZpbmFsOwogICAgIHZvaWQga2V5QWRk
ZWQoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlQ0RNLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlQ0RNLmNwcAppbmRleCBjMjhmZTY1ZjBjZjE2NDM5OTgxOGFjYTMyZjk4MWNjNzc4ZjFlOTE5
Li5iNjk2MTAzNTBmMzEwZTIzYTRiMmFjNzgwYjgxMzg4ZWNiOWZjMmNkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uY3BwCkBAIC01NSw2ICs1
NSwxNCBAQCBSZW1vdGVDRE06OlJlbW90ZUNETShXZWFrUHRyPFJlbW90ZUNETUZhY3Rvcnk+JiYg
ZmFjdG9yeSwgUmVtb3RlQ0RNSWRlbnRpZmllciYmCiB7CiB9CiAKKyNpZiAhUkVMRUFTRV9MT0df
RElTQUJMRUQKK3ZvaWQgUmVtb3RlQ0RNOjpzZXRMb2dJZGVudGlmaWVyKGNvbnN0IHZvaWQqIGxv
Z0lkZW50aWZpZXIpCit7CisgICAgaWYgKG1fZmFjdG9yeSkKKyAgICAgICAgbV9mYWN0b3J5LT5n
cHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVD
RE1Qcm94eTo6U2V0TG9nSWRlbnRpZmllcihyZWludGVycHJldF9jYXN0PHVpbnQ2NF90Pihsb2dJ
ZGVudGlmaWVyKSksIG1faWRlbnRpZmllcik7Cit9CisjZW5kaWYKKwogdm9pZCBSZW1vdGVDRE06
OmdldFN1cHBvcnRlZENvbmZpZ3VyYXRpb24oQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYmIGNv
bmZpZ3VyYXRpb24sIExvY2FsU3RvcmFnZUFjY2VzcyBhY2Nlc3MsIFN1cHBvcnRlZENvbmZpZ3Vy
YXRpb25DYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIGlmICghbV9mYWN0b3J5KSB7CkBAIC02
NSw3ICs3Myw2IEBAIHZvaWQgUmVtb3RlQ0RNOjpnZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKENE
TUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0CiAgICAgbV9mYWN0b3J5LT5ncHVQ
cm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2Fn
ZXM6OlJlbW90ZUNETVByb3h5OjpHZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKFdURk1vdmUoY29u
ZmlndXJhdGlvbiksIGFjY2VzcyksIFdURk1vdmUoY2FsbGJhY2spLCBtX2lkZW50aWZpZXIpOwog
fQogCi0KIGJvb2wgUmVtb3RlQ0RNOjpzdXBwb3J0c0NvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5
U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0CiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNE
TS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uaAppbmRl
eCA4YzQ1NGViODNlNTk5NGE4ZTRkNTkyZDUxZGY5MWZmOWI1MjNjYmVmLi4zMTNjZTBmMzY4OTVl
YjM2N2I1YzRjMDZhZjNmY2M3NGVmYWJiYWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmgKQEAgLTQzLDYgKzQzLDEwIEBAIHB1YmxpYzoKIHBy
aXZhdGU6CiAgICAgUmVtb3RlQ0RNKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4mJiwgUmVtb3Rl
Q0RNSWRlbnRpZmllciYmLCBSZW1vdGVDRE1Db25maWd1cmF0aW9uJiYpOwogCisjaWYgIVJFTEVB
U0VfTE9HX0RJU0FCTEVECisgICAgdm9pZCBzZXRMb2dJZGVudGlmaWVyKGNvbnN0IHZvaWQqKSBm
aW5hbDsKKyNlbmRpZgorCiAgICAgdm9pZCBnZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKFdlYkNv
cmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mJiBjYW5kaWRhdGVDb25maWd1cmF0aW9uLCBM
b2NhbFN0b3JhZ2VBY2Nlc3MsIFN1cHBvcnRlZENvbmZpZ3VyYXRpb25DYWxsYmFjayYmKSBmaW5h
bDsKIAogICAgIGJvb2wgc3VwcG9ydHNDb25maWd1cmF0aW9uKGNvbnN0IFdlYkNvcmU6OkNETUtl
eVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNQ29uZmlndXJhdGlvbi5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1Db25maWd1cmF0aW9uLmgK
aW5kZXggNzk5MDJkYjg1ZjBmNTkwNWE3MzJhNDU5ODY3MzcxZTgyZmE1YzIyZi4uOTFjMDY5ODhm
ZGIwMTc3YTEyOGU1OWZiNzNmOWExNWEzZjA1ODc4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1Db25maWd1cmF0aW9uLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1Db25maWd1cmF0aW9uLmgK
QEAgLTM2LDYgKzM2LDcgQEAgc3RydWN0IFJlbW90ZUNETUNvbmZpZ3VyYXRpb24gewogICAgIFZl
Y3RvcjxBdG9tU3RyaW5nPiBzdXBwb3J0ZWRSb2J1c3RuZXNzZXM7CiAgICAgYm9vbCBzdXBwb3J0
c1NlcnZlckNlcnRpZmljYXRlczsKICAgICBib29sIHN1cHBvcnRzU2Vzc2lvbnM7CisgICAgdWlu
dDY0X3QgbG9nSWRlbnRpZmllciB7IDAgfTsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+
CiAgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKQEAgLTQ0LDYgKzQ1LDcg
QEAgc3RydWN0IFJlbW90ZUNETUNvbmZpZ3VyYXRpb24gewogICAgICAgICBlbmNvZGVyIDw8IHN1
cHBvcnRlZFJvYnVzdG5lc3NlczsKICAgICAgICAgZW5jb2RlciA8PCBzdXBwb3J0c1NlcnZlckNl
cnRpZmljYXRlczsKICAgICAgICAgZW5jb2RlciA8PCBzdXBwb3J0c1Nlc3Npb25zOworICAgICAg
ICBlbmNvZGVyIDw8IGxvZ0lkZW50aWZpZXI7CiAgICAgfQogCiAgICAgdGVtcGxhdGUgPGNsYXNz
IERlY29kZXI+CkBAIC02OSw2ICs3MSwxMSBAQCBzdHJ1Y3QgUmVtb3RlQ0RNQ29uZmlndXJhdGlv
biB7CiAgICAgICAgIGlmICghc3VwcG9ydHNTZXNzaW9ucykKICAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gbG9nSWRlbnRp
ZmllcjsKKyAgICAgICAgZGVjb2RlciA+PiBsb2dJZGVudGlmaWVyOworICAgICAgICBpZiAoIWxv
Z0lkZW50aWZpZXIpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCiAgICAgICAg
IHJldHVybiB7ewogICAgICAgICAgICAgV1RGTW92ZSgqc3VwcG9ydGVkSW5pdERhdGFUeXBlcyks
CiAgICAgICAgICAgICBXVEZNb3ZlKCpzdXBwb3J0ZWRSb2J1c3RuZXNzZXMpLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeS5j
cHAKaW5kZXggODZmMzhkNGEzMjEwMDFhZTY1MWYyNmRjMDZmYTlhODIxMmIyZjcxOS4uNTZiMzU4
Yzc1MTNlYWQwY2Q4ZTFmNjkyM2Q5YWQ1YWM5ODFkZmVlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUZhY3RvcnkuY3BwCkBAIC02
OCw3ICs2OCw3IEBAIGJvb2wgUmVtb3RlQ0RNRmFjdG9yeTo6c3VwcG9ydHNLZXlTeXN0ZW0oY29u
c3QgU3RyaW5nJiBrZXlTeXN0ZW0pCiAgICAgcmV0dXJuIHN1cHBvcnRlZDsKIH0KIAotc3RkOjp1
bmlxdWVfcHRyPENETVByaXZhdGU+IFJlbW90ZUNETUZhY3Rvcnk6OmNyZWF0ZUNETShjb25zdCBT
dHJpbmcmIGtleVN5c3RlbSkKK3N0ZDo6dW5pcXVlX3B0cjxDRE1Qcml2YXRlPiBSZW1vdGVDRE1G
YWN0b3J5OjpjcmVhdGVDRE0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IENETVByaXZh
dGVDbGllbnQmKQogewogICAgIFJlbW90ZUNETUlkZW50aWZpZXIgaWRlbnRpZmllcjsKICAgICBS
ZW1vdGVDRE1Db25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUZhY3RvcnkuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeS5oCmluZGV4IGY0MzE4
YzYxMDUwM2M2ZTZlZDE0YjNlZjIwYTMyZmI1NGRmMTc2NDkuLjliMTllYWMzMTJkNTYzMWY4ZDE1
NmZlNzU5ZjZhNGFjYTUzMTM4M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeS5oCkBAIC03Miw3ICs3Miw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHJlbW92ZVNlc3Npb24oUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uSWRlbnRp
Zmllcik7CiAKIHByaXZhdGU6Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkNETVByaXZh
dGU+IGNyZWF0ZUNETShjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
V2ViQ29yZTo6Q0RNUHJpdmF0ZT4gY3JlYXRlQ0RNKGNvbnN0IFN0cmluZyYsIGNvbnN0IFdlYkNv
cmU6OkNETVByaXZhdGVDbGllbnQmKSBmaW5hbDsKICAgICBib29sIHN1cHBvcnRzS2V5U3lzdGVt
KGNvbnN0IFN0cmluZyYpIGZpbmFsOwogCiAgICAgSGFzaE1hcDxSZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb25JZGVudGlmaWVyLCBSZWY8UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uPj4gbV9zZXNzaW9u
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
Q0RNSW5zdGFuY2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVDRE1JbnN0YW5jZS5jcHAKaW5kZXggNzVkNWU1YTc5NTE0ZGJjM2FhYWMwMGI5ODg0YTU3ZGFj
MTk4ZjlmNi4uMjk2MmZjMTU5ZGEwNGFmNTMzMjNiNzI2NGJhYzAxNzY5YTY5YzU5OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5j
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1J
bnN0YW5jZS5jcHAKQEAgLTEwMSw4ICsxMDEsMTQgQEAgUmVmUHRyPFdlYkNvcmU6OkNETUluc3Rh
bmNlU2Vzc2lvbj4gUmVtb3RlQ0RNSW5zdGFuY2U6OmNyZWF0ZVNlc3Npb24oKQogICAgIGlmICgh
bV9mYWN0b3J5KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAorICAgIHVpbnQ2NF90IGxvZ0lk
ZW50aWZpZXIgeyAwIH07CisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgaWYgKG1fY2xp
ZW50KQorICAgICAgICBsb2dJZGVudGlmaWVyID0gcmVpbnRlcnByZXRfY2FzdDx1aW50NjRfdD4o
bV9jbGllbnQtPmxvZ0lkZW50aWZpZXIoKSk7CisjZW5kaWYKKwogICAgIFJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvbklkZW50aWZpZXIgaWRlbnRpZmllcjsKLSAgICBtX2ZhY3RvcnktPmdwdVByb2Nl
c3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVDRE1J
bnN0YW5jZVByb3h5OjpDcmVhdGVTZXNzaW9uKCksIE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5j
ZVByb3h5OjpDcmVhdGVTZXNzaW9uOjpSZXBseShpZGVudGlmaWVyKSwgbV9pZGVudGlmaWVyKTsK
KyAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRT
eW5jKE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpDcmVhdGVTZXNzaW9uKGxvZ0lk
ZW50aWZpZXIpLCBNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6Q3JlYXRlU2Vzc2lv
bjo6UmVwbHkoaWRlbnRpZmllciksIG1faWRlbnRpZmllcik7CiAgICAgaWYgKCFpZGVudGlmaWVy
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBhdXRvIHNlc3Npb24gPSBSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb246OmNyZWF0ZShtX2ZhY3RvcnkuZ2V0KCksIFdURk1vdmUoaWRlbnRpZmll
cikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uY3BwCmluZGV4IDhiZWNkNTliNWViMzdlMGQz
YTUxNDUzOGYzNzM4MWQ3Zjc3ZDhjY2UuLjllY2QzOTE4MTdhMTVlZjNiMTg0MWJjOWY4YzYzYzA2
OTJiMmU1YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5jcHAKQEAgLTQ5LDYgKzQ5LDEz
IEBAIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uKFdl
YWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4mJiBmCiB7CiB9CiAKKyNpZiAhUkVMRUFTRV9MT0dfRElT
QUJMRUQKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpzZXRMb2dJZGVudGlmaWVyKGNv
bnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIpCit7CisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29u
bmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb25Qcm94eTo6U2V0TG9nSWRlbnRpZmllcihyZWludGVycHJldF9jYXN0PHVpbnQ2NF90Pihs
b2dJZGVudGlmaWVyKSksIG1faWRlbnRpZmllcik7Cit9CisjZW5kaWYKKwogdm9pZCBSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb246OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIHR5cGUsIGNvbnN0
IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYg
aW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIGlmICghbV9mYWN0
b3J5KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUNETUluc3RhbmNlU2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uaAppbmRleCA0ZTRjZDJjMDA1YzZiMDA2NWY5
Y2RiMTg4YzRiY2UwYjViZmE2NjAxLi5kNjE1MjgwODFjYzU4YWIyNjE5ZWQxYjA0ODY0MmI0Zjlk
MTdiNzg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUNETUluc3RhbmNlU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmgKQEAgLTQ5LDYgKzQ5LDEwIEBAIHBy
aXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFJlbW90ZUNETUZhY3Rvcnk7CiAgICAgUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4mJiwgUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uSWRlbnRpZmllciYmKTsKIAorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAor
ICAgIHZvaWQgc2V0TG9nSWRlbnRpZmllcihjb25zdCB2b2lkKikgZmluYWw7CisjZW5kaWYKKwog
ICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE0uY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE0uY3BwCmluZGV4
IDc1NmY4Zjk5ZjE2MjY5MzM4N2YwOTNkZDZmMmIwNTRhOGY3OTlmNWYuLjhhM2FiOWVkMzc1YTJl
OTJlOWNiMzM3Nzk3ZTZmODQ2OWVlZDk1YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETS5jcHAKQEAgLTYwLDE4ICs2MCwy
MyBAQCBib29sIFJlbW90ZUxlZ2FjeUNETTo6c3VwcG9ydHNNSU1FVHlwZShjb25zdCBTdHJpbmcm
IG1pbWVUeXBlKQogICAgIHJldHVybiBzdXBwb3J0ZWQ7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxX
ZWJDb3JlOjpMZWdhY3lDRE1TZXNzaW9uPiBSZW1vdGVMZWdhY3lDRE06OmNyZWF0ZVNlc3Npb24o
V2ViQ29yZTo6TGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCogY2xpZW50KQorc3RkOjp1bmlxdWVfcHRy
PFdlYkNvcmU6OkxlZ2FjeUNETVNlc3Npb24+IFJlbW90ZUxlZ2FjeUNETTo6Y3JlYXRlU2Vzc2lv
bihXZWJDb3JlOjpMZWdhY3lDRE1TZXNzaW9uQ2xpZW50JiBjbGllbnQpCiB7CiAgICAgaWYgKCFt
X2ZhY3RvcnkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgU3RyaW5nIHN0b3JhZ2VE
aXJlY3RvcnkgPSBjbGllbnQgPyBjbGllbnQtPm1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSA6
IGVtcHR5U3RyaW5nKCk7CisgICAgU3RyaW5nIHN0b3JhZ2VEaXJlY3RvcnkgPSBjbGllbnQubWVk
aWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpOworCisgICAgdWludDY0X3QgbG9nSWRlbnRpZmllciB7
IDAgfTsKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBsb2dJZGVudGlmaWVyID0gcmVp
bnRlcnByZXRfY2FzdDx1aW50NjRfdD4oY2xpZW50LmxvZ0lkZW50aWZpZXIoKSk7CisjZW5kaWYK
IAogICAgIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyIGlkZW50aWZpZXI7Ci0gICAg
bV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhN
ZXNzYWdlczo6UmVtb3RlTGVnYWN5Q0RNUHJveHk6OkNyZWF0ZVNlc3Npb24oc3RvcmFnZURpcmVj
dG9yeSksIE1lc3NhZ2VzOjpSZW1vdGVMZWdhY3lDRE1Qcm94eTo6Q3JlYXRlU2Vzc2lvbjo6UmVw
bHkoaWRlbnRpZmllciksIG1faWRlbnRpZmllcik7CisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNz
Q29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlTGVnYWN5
Q0RNUHJveHk6OkNyZWF0ZVNlc3Npb24oc3RvcmFnZURpcmVjdG9yeSwgbG9nSWRlbnRpZmllciks
IE1lc3NhZ2VzOjpSZW1vdGVMZWdhY3lDRE1Qcm94eTo6Q3JlYXRlU2Vzc2lvbjo6UmVwbHkoaWRl
bnRpZmllciksIG1faWRlbnRpZmllcik7CiAgICAgaWYgKCFpZGVudGlmaWVyKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbjo6Y3JlYXRl
KG1fZmFjdG9yeSwgV1RGTW92ZShpZGVudGlmaWVyKSk7CisgICAgcmV0dXJuIFJlbW90ZUxlZ2Fj
eUNETVNlc3Npb246OmNyZWF0ZShtX2ZhY3RvcnksIFdURk1vdmUoaWRlbnRpZmllciksIGNsaWVu
dCk7CiB9CiAKIHZvaWQgUmVtb3RlTGVnYWN5Q0RNOjpzZXRQbGF5ZXJJZChNZWRpYVBsYXllcklk
ZW50aWZpZXIgaWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETS5oCmluZGV4IDQ3ZjAyY2JlYjI0ZDhiNWYwODI2MmQ0
NjU1YTA2OWY5ZDc4MmYwMzcuLmMxMjZjMzFlMGM1MzdmNWQ1ODE1MWY5NjU1NGYzYTgxZjMwNjJh
MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
TGVnYWN5Q0RNLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVMZWdhY3lDRE0uaApAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+UmVt
b3RlTGVnYWN5Q0RNKCk7CiAKICAgICBib29sIHN1cHBvcnRzTUlNRVR5cGUoY29uc3QgU3RyaW5n
JikgZmluYWw7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkxlZ2FjeUNETVNlc3Npb24+
IGNyZWF0ZVNlc3Npb24oV2ViQ29yZTo6TGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCopIGZpbmFsOwor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpMZWdhY3lDRE1TZXNzaW9uPiBjcmVhdGVTZXNz
aW9uKFdlYkNvcmU6OkxlZ2FjeUNETVNlc3Npb25DbGllbnQmKSBmaW5hbDsKICAgICB2b2lkIHNl
dFBsYXllcklkKFdlYkNvcmU6Ok1lZGlhUGxheWVySWRlbnRpZmllcik7CiAKIHByaXZhdGU6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2Fj
eUNETVNlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVMZWdhY3lDRE1TZXNzaW9uLmNwcAppbmRleCA2MTU1YThkYTlmNDhmZWM4NDZhOWE0NzhiNjVj
MmViMzU1Yjg2ZDQ3Li5iM2IwMjBlZjkwYjkzZjhlMjUyMGFmNmEwZjM2MzM5YjZiZjhkY2VjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2Fj
eUNETVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5jcHAKQEAgLTY1LDE0ICs2NSwxNSBAQCBzdGF0aWMgSVBD
OjpTaGFyZWRCdWZmZXJDb3B5IGNvbnZlcnRUb1NoYXJlZEJ1ZmZlckNvcHkoVCBhcnJheSkKICAg
ICByZXR1cm4gSVBDOjpTaGFyZWRCdWZmZXJDb3B5KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFycmF5
LT5kYXRhKCksIGFycmF5LT5ieXRlTGVuZ3RoKCkpKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPFJl
bW90ZUxlZ2FjeUNETVNlc3Npb24+IFJlbW90ZUxlZ2FjeUNETVNlc3Npb246OmNyZWF0ZShXZWFr
UHRyPFJlbW90ZUxlZ2FjeUNETUZhY3Rvcnk+IGZhY3RvcnksIFJlbW90ZUxlZ2FjeUNETVNlc3Np
b25JZGVudGlmaWVyJiYgaWRlbnRpZmllcikKK3N0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMZWdhY3lD
RE1TZXNzaW9uPiBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uOjpjcmVhdGUoV2Vha1B0cjxSZW1vdGVM
ZWdhY3lDRE1GYWN0b3J5PiBmYWN0b3J5LCBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmll
ciYmIGlkZW50aWZpZXIsIExlZ2FjeUNETVNlc3Npb25DbGllbnQmIGNsaWVudCkKIHsKLSAgICBy
ZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxlZ2FjeUNETVNlc3Npb24+KG5ldyBSZW1vdGVM
ZWdhY3lDRE1TZXNzaW9uKFdURk1vdmUoZmFjdG9yeSksIFdURk1vdmUoaWRlbnRpZmllcikpKTsK
KyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxlZ2FjeUNETVNlc3Npb24+KG5ldyBS
ZW1vdGVMZWdhY3lDRE1TZXNzaW9uKFdURk1vdmUoZmFjdG9yeSksIFdURk1vdmUoaWRlbnRpZmll
ciksIGNsaWVudCkpOwogfQogCi1SZW1vdGVMZWdhY3lDRE1TZXNzaW9uOjpSZW1vdGVMZWdhY3lD
RE1TZXNzaW9uKFdlYWtQdHI8UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeT4gZmFjdG9yeSwgUmVtb3Rl
TGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXImJiBpZGVudGlmaWVyKQorUmVtb3RlTGVnYWN5Q0RN
U2Vzc2lvbjo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbihXZWFrUHRyPFJlbW90ZUxlZ2FjeUNETUZh
Y3Rvcnk+IGZhY3RvcnksIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyJiYgaWRlbnRp
ZmllciwgTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCYgY2xpZW50KQogICAgIDogbV9mYWN0b3J5KFdU
Rk1vdmUoZmFjdG9yeSkpCiAgICAgLCBtX2lkZW50aWZpZXIoV1RGTW92ZShpZGVudGlmaWVyKSkK
KyAgICAsIG1fY2xpZW50KGNsaWVudCkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24uaAppbmRl
eCA1MmMwZDFhNDhhOTQwOWExZGQwOTQ0OGFlYjc0YzRjNDgxMzJiZDJiLi41ODE1MWY0MzI4ZGE5
NmM3ZWE3ZDkyZDI2MDYwMzhmM2QwNmZiNzhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24uaApAQCAt
NDQsNyArNDQsNyBAQCBjbGFzcyBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uIGZpbmFsCiAgICAgOiBw
dWJsaWMgV2ViQ29yZTo6TGVnYWN5Q0RNU2Vzc2lvbgogICAgICwgcHVibGljIElQQzo6TWVzc2Fn
ZVJlY2VpdmVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxl
Z2FjeUNETVNlc3Npb24+IGNyZWF0ZShXZWFrUHRyPFJlbW90ZUxlZ2FjeUNETUZhY3Rvcnk+LCBS
ZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllciYmKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPFJlbW90ZUxlZ2FjeUNETVNlc3Npb24+IGNyZWF0ZShXZWFrUHRyPFJlbW90ZUxlZ2Fj
eUNETUZhY3Rvcnk+LCBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllciYmLCBXZWJDb3Jl
OjpMZWdhY3lDRE1TZXNzaW9uQ2xpZW50Jik7CiAgICAgflJlbW90ZUxlZ2FjeUNETVNlc3Npb24o
KTsKIAogICAgIC8vIE1lc3NhZ2VSZWNlaXZlcgpAQCAtNTMsMTEgKzUzLDEwIEBAIHB1YmxpYzoK
ICAgICBjb25zdCBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllciYgaWRlbnRpZmllcigp
IGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQogCiBwcml2YXRlOgotICAgIFJlbW90ZUxl
Z2FjeUNETVNlc3Npb24oV2Vha1B0cjxSZW1vdGVMZWdhY3lDRE1GYWN0b3J5PiwgUmVtb3RlTGVn
YWN5Q0RNU2Vzc2lvbklkZW50aWZpZXImJik7CisgICAgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbihX
ZWFrUHRyPFJlbW90ZUxlZ2FjeUNETUZhY3Rvcnk+LCBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRl
bnRpZmllciYmLCBXZWJDb3JlOjpMZWdhY3lDRE1TZXNzaW9uQ2xpZW50Jik7CiAKICAgICAvLyBM
ZWdhY3lDRE1TZXNzaW9uCiAgICAgV2ViQ29yZTo6TGVnYWN5Q0RNU2Vzc2lvblR5cGUgdHlwZSgp
IGZpbmFsIHsgcmV0dXJuIFdlYkNvcmU6OkNETVNlc3Npb25UeXBlUmVtb3RlOyB9Ci0gICAgdm9p
ZCBzZXRDbGllbnQoV2ViQ29yZTo6TGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCogY2xpZW50KSBmaW5h
bCB7IG1fY2xpZW50ID0gY2xpZW50OyB9CiAgICAgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX3Nlc3Npb25JZDsgfQogICAgIFJlZlB0cjxVaW50OEFycmF5
PiBnZW5lcmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgVWludDhBcnJheSog
aW5pdERhdGEsIFN0cmluZyYgZGVzdGluYXRpb25VUkwsIHVuc2lnbmVkIHNob3J0JiBlcnJvckNv
ZGUsIHVpbnQzMl90JiBzeXN0ZW1Db2RlKSBmaW5hbDsKICAgICB2b2lkIHJlbGVhc2VLZXlzKCkg
ZmluYWw7CkBAIC03MCw3ICs2OSw3IEBAIHByaXZhdGU6CiAKICAgICBXZWFrUHRyPFJlbW90ZUxl
Z2FjeUNETUZhY3Rvcnk+IG1fZmFjdG9yeTsKICAgICBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRl
bnRpZmllciBtX2lkZW50aWZpZXI7Ci0gICAgV2ViQ29yZTo6TGVnYWN5Q0RNU2Vzc2lvbkNsaWVu
dCogbV9jbGllbnQ7CisgICAgV2Vha1B0cjxXZWJDb3JlOjpMZWdhY3lDRE1TZXNzaW9uQ2xpZW50
PiBtX2NsaWVudDsKICAgICBTdHJpbmcgbV9zZXNzaW9uSWQ7CiAgICAgbXV0YWJsZSBIYXNoTWFw
PFN0cmluZywgUmVmUHRyPEFycmF5QnVmZmVyPj4gbV9jYWNoZWRLZXlDYWNoZTsKIH07Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>