<?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>226026</bug_id>
          
          <creation_ts>2021-05-20 10:22:12 -0700</creation_ts>
          <short_desc>Use CheckedLock more in WebCore</short_desc>
          <delta_ts>2021-05-20 12:24:07 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>alecflett</cc>
    
    <cc>beidson</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>hi</cc>
    
    <cc>hta</cc>
    
    <cc>jamesr</cc>
    
    <cc>jer.noble</cc>
    
    <cc>joepeck</cc>
    
    <cc>jsbell</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>luiz</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>philipj</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>tommyw</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1762016</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-20 10:22:12 -0700</bug_when>
    <thetext>Use CheckedLock more in WebCore to benefit from Clang Thread Safety Analysis.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762017</commentid>
    <comment_count>1</comment_count>
      <attachid>429184</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-20 10:24:32 -0700</bug_when>
    <thetext>Created attachment 429184
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762053</commentid>
    <comment_count>2</comment_count>
      <attachid>429184</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2021-05-20 11:23:02 -0700</bug_when>
    <thetext>Comment on attachment 429184
Patch

rs=me

Pretty cool!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762060</commentid>
    <comment_count>3</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-05-20 11:41:42 -0700</bug_when>
    <thetext>Committed r277805 (237960@main): &lt;https://commits.webkit.org/237960@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 429184.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762062</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-05-20 11:42:34 -0700</bug_when>
    <thetext>&lt;rdar://problem/78269193&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762084</commentid>
    <comment_count>5</comment_count>
      <attachid>429184</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2021-05-20 12:24:07 -0700</bug_when>
    <thetext>Comment on attachment 429184
Patch

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

&gt; Source/WebCore/page/WheelEventTestMonitor.cpp:117
&gt; +    Locker locker { m_lock };

Nice!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429184</attachid>
            <date>2021-05-20 10:24:32 -0700</date>
            <delta_ts>2021-05-20 11:41:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226026-20210520102431.patch</filename>
            <type>text/plain</type>
            <size>116241</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3NzYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGU5NGFiYWFkYTA1OTZl
MjdkYjBlMTFmZWFmMjJlOTQzMmUwZDA5Ni4uYTJkYzVjYzVjMTExNDg3NzgyZTAxMWJkNDE3OGRh
OTg0ODRiYjRlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwOCBAQAorMjAyMS0wNS0yMCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBDaGVja2VkTG9jayBt
b3JlIGluIFdlYkNvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyNjAyNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFVzZSBDaGVja2VkTG9jayBtb3JlIGluIFdlYkNvcmUgdG8gYmVuZWZpdCBmcm9tIENs
YW5nIFRocmVhZCBTYWZldHkgQW5hbHlzaXMuCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9JREJPYmplY3RTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6
Y3JlYXRlSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmluZGV4KToK
KyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpkZWxldGVJbmRleCk6CisgICAgICAg
IChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6cm9sbGJhY2tGb3JWZXJzaW9uQ2hhbmdlQWJvcnQp
OgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OnZpc2l0UmVmZXJlbmNlZEluZGV4
ZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OnJlbmFtZVJlZmVy
ZW5jZWRJbmRleCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUu
aDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6b2JqZWN0U3RvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCVHJhbnNhY3Rpb246OmludGVybmFsQWJvcnQpOgorICAgICAgICAoV2ViQ29yZTo6
SURCVHJhbnNhY3Rpb246OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QlRyYW5zYWN0aW9uOjpyZW5hbWVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJU
cmFuc2FjdGlvbjo6cmVuYW1lSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rp
b246OmRlbGV0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9u
Ojp2aXNpdFJlZmVyZW5jZWRPYmplY3RTdG9yZXMgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
Y2xpZW50L0lEQkNvbm5lY3Rpb25Qcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGll
bnQ6OklEQkNvbm5lY3Rpb25Qcm94eTo6b3BlbkRhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5OjpkZWxldGVEYXRhYmFzZSk6CisgICAgICAg
IChXZWJDb3JlOjpJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eTo6Y29tcGxldGVPcGVuREJS
ZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5
OjpzYXZlT3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCQ29ubmVj
dGlvblByb3h5Ojpjb21wbGV0ZU9wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGll
bnQ6OklEQkNvbm5lY3Rpb25Qcm94eTo6ZmlyZVZlcnNpb25DaGFuZ2VFdmVudCk6CisgICAgICAg
IChXZWJDb3JlOjpJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eTo6bm90aWZ5T3BlbkRCUmVx
dWVzdEJsb2NrZWQpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJDb25uZWN0aW9u
UHJveHk6OmVzdGFibGlzaFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVu
dDo6SURCQ29ubmVjdGlvblByb3h5OjpkaWRTdGFydFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5Ojpjb21taXRUcmFuc2FjdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eTo6ZGlkQ29t
bWl0VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJDb25uZWN0
aW9uUHJveHk6OmFib3J0VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50
OjpJREJDb25uZWN0aW9uUHJveHk6OmRpZEFib3J0VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6SURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHk6OmRpZENsb3NlRnJvbVNlcnZlcik6
CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eTo6Y29ubmVj
dGlvblRvU2VydmVyTG9zdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQkNvbm5l
Y3Rpb25Qcm94eTo6c2NoZWR1bGVNYWluVGhyZWFkVGFza3MpOgorICAgICAgICAoV2ViQ29yZTo6
SURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHk6OmhhbmRsZU1haW5UaHJlYWRUYXNrcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eTo6Z2V0QWxsRGF0
YWJhc2VOYW1lc0FuZFZlcnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURC
Q29ubmVjdGlvblByb3h5OjpkaWRHZXRBbGxEYXRhYmFzZU5hbWVzQW5kVmVyc2lvbnMpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHk6OnJlZ2lzdGVyRGF0
YWJhc2VDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCQ29ubmVj
dGlvblByb3h5Ojp1bnJlZ2lzdGVyRGF0YWJhc2VDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5Ojpmb3JnZXRBY3RpdmVPcGVyYXRpb25z
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5Ojpmb3Jn
ZXRUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQkNvbm5lY3Rp
b25Qcm94eTo6Zm9yZ2V0QWN0aXZpdHlGb3JDdXJyZW50VGhyZWFkKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5OjpzZXRDb250ZXh0U3VzcGVuZGVkKToK
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblByb3h5Lmg6
CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6c2V0RW5jcnlw
dGlvbktleSk6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6ZGVj
cnlwdEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpl
bmNyeXB0RnJhbWUpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1l
VHJhbnNmb3JtZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNjcmlw
dFRyYW5zZm9ybS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTY3JpcHRUcmFuc2Zvcm06
OnNldFRyYW5zZm9ybWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNjcmlwdFRyYW5zZm9y
bTo6c2V0dXBUcmFuc2Zvcm1lcik6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTY3JpcHRUcmFu
c2Zvcm06OmNsZWFyKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNjcmlw
dFRyYW5zZm9ybS5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xp
YldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJS
VENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNldENsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpMaWJX
ZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OmNoZWNrU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpPbk1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpPbkJ1ZmZlcmVkQW1vdW50Q2hhbmdlKToK
KyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hh
bm5lbEhhbmRsZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9M
aWJXZWJSVENSdHBUcmFuc2Zvcm1CYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpYldl
YlJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQ6OnNldElucHV0Q2FsbGJhY2spOgorICAgICAgICAoV2Vi
Q29yZTo6TGliV2ViUlRDUnRwVHJhbnNmb3JtQmFja2VuZDo6c2V0T3V0cHV0Q2FsbGJhY2spOgor
ICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUnRwVHJhbnNmb3JtQmFja2VuZDo6cHJvY2Vzc1Ry
YW5zZm9ybWVkRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUnRwVHJhbnNmb3Jt
QmFja2VuZDo6VHJhbnNmb3JtKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENSdHBUcmFuc2Zvcm1CYWNrZW5kLmg6CisgICAgICAgICogaW5zcGVjdG9y
L2FnZW50cy9XZWJIZWFwQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VuZEdhcmJhZ2VD
b2xsZWN0aW9uRXZlbnRzVGFzazo6YWRkR2FyYmFnZUNvbGxlY3Rpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6U2VuZEdhcmJhZ2VDb2xsZWN0aW9uRXZlbnRzVGFzazo6cmVzZXQpOgorICAgICAgICAo
V2ViQ29yZTo6U2VuZEdhcmJhZ2VDb2xsZWN0aW9uRXZlbnRzVGFzazo6dGltZXJGaXJlZCk6Cisg
ICAgICAgICogcGFnZS9SZXNvdXJjZVVzYWdlVGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlVXNhZ2VUaHJlYWQ6OmFkZE9ic2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlVXNhZ2VUaHJlYWQ6OnJlbW92ZU9ic2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlVXNhZ2VUaHJlYWQ6OndhaXRVbnRpbE9ic2VydmVycyk6CisgICAgICAgIChXZWJDb3Jl
OjpSZXNvdXJjZVVzYWdlVGhyZWFkOjpub3RpZnlPYnNlcnZlcnMpOgorICAgICAgICAqIHBhZ2Uv
UmVzb3VyY2VVc2FnZVRocmVhZC5oOgorICAgICAgICAqIHBhZ2UvV2hlZWxFdmVudFRlc3RNb25p
dG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldoZWVsRXZlbnRUZXN0TW9uaXRvcjo6Y2xlYXJB
bGxUZXN0RGVmZXJyYWxzKToKKyAgICAgICAgKFdlYkNvcmU6OldoZWVsRXZlbnRUZXN0TW9uaXRv
cjo6c2V0VGVzdENhbGxiYWNrQW5kU3RhcnRNb25pdG9yaW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OldoZWVsRXZlbnRUZXN0TW9uaXRvcjo6ZGVmZXJGb3JSZWFzb24pOgorICAgICAgICAoV2ViQ29y
ZTo6V2hlZWxFdmVudFRlc3RNb25pdG9yOjpyZW1vdmVEZWZlcnJhbEZvclJlYXNvbik6CisgICAg
ICAgIChXZWJDb3JlOjpXaGVlbEV2ZW50VGVzdE1vbml0b3I6OnJlY2VpdmVkV2hlZWxFdmVudCk6
CisgICAgICAgIChXZWJDb3JlOjpXaGVlbEV2ZW50VGVzdE1vbml0b3I6OmNoZWNrU2hvdWxkRmly
ZUNhbGxiYWNrcyk6CisgICAgICAgICogcGFnZS9XaGVlbEV2ZW50VGVzdE1vbml0b3IuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OldoZWVsRXZlbnRUZXN0TW9uaXRvcjo6V1RGX0dVQVJERURfQllfTE9D
Syk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlOjpjb21wdXRlV2hlZWxQcm9jZXNzaW5nU3RlcHMpOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZTo6ZGV0ZXJtaW5lV2hlZWxFdmVudFByb2Nl
c3NpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZTo6aGFuZGxlV2hlZWxFdmVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlOjpjb21taXRUcmVlU3RhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZTo6bWFpbkZyYW1lU2Nyb2xsUG9zaXRpb24g
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZTo6c2V0TWFpbkZyYW1lU2Ny
b2xsUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZTo6c2V0R2VzdHVy
ZVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWU6Omdlc3R1cmVTdGF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlOjpldmVudFRyYWNraW5nVHlwZUZvclBv
aW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWU6OmlzUnViYmVyQmFuZEluUHJv
Z3Jlc3NGb3JOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWU6OnNldFJ1YmJl
ckJhbmRpbmdJblByb2dyZXNzRm9yTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdU
cmVlOjppc1VzZXJTY3JvbGxJblByb2dyZXNzRm9yTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxpbmdUcmVlOjpzZXRVc2VyU2Nyb2xsSW5Qcm9ncmVzc0Zvck5vZGUpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsaW5nVHJlZTo6Y2xlYXJOb2Rlc1dpdGhVc2VyU2Nyb2xsSW5Qcm9ncmVz
cyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlOjppc1Njcm9sbFNuYXBJblByb2dy
ZXNzRm9yTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlOjpzZXROb2RlU2Ny
b2xsU25hcEluUHJvZ3Jlc3MpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZTo6c2V0
TWFpbkZyYW1lUGlubmVkU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZTo6
c2V0TWFpbkZyYW1lQ2FuUnViYmVyQmFuZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdU
cmVlOjptYWluRnJhbWVDYW5SdWJiZXJCYW5kSW5EaXJlY3Rpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsaW5nVHJlZTo6YWRkUGVuZGluZ1Njcm9sbFVwZGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxpbmdUcmVlOjp0YWtlUGVuZGluZ1Njcm9sbFVwZGF0ZXMpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsaW5nVHJlZTo6c2V0U2Nyb2xsUGlubmluZ0JlaGF2aW9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWU6OnNjcm9sbFBpbm5pbmdCZWhhdmlvcik6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlOjp3aWxsV2hlZWxFdmVudFN0YXJ0U3dpcGVHZXN0
dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWU6OndpbmRvd1NjcmVlbkRpZENo
YW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlOjpkaXNwbGF5SUQpOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZTo6aGFzUHJvY2Vzc2VkV2hlZWxFdmVudHNSZWNl
bnRseSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlOjp3aWxsUHJvY2Vzc1doZWVs
RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZTo6bm9taW5hbEZyYW1lc1Bl
clNlY29uZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlOjpzY3JvbGxpbmdUcmVl
QXNUZXh0KToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmg6CisgICAg
ICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZUxhdGNoaW5nQ29udHJvbGxlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlTGF0Y2hpbmdDb250cm9sbGVyOjpyZWNl
aXZlZFdoZWVsRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZUxhdGNoaW5n
Q29udHJvbGxlcjo6bGF0Y2hpbmdEYXRhRm9yRXZlbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsaW5nVHJlZUxhdGNoaW5nQ29udHJvbGxlcjo6bGF0Y2hlZE5vZGVJRCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlTGF0Y2hpbmdDb250cm9sbGVyOjpsYXRj
aGVkTm9kZUFuZFN0ZXBzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVM
YXRjaGluZ0NvbnRyb2xsZXI6Om5vZGVEaWRIYW5kbGVFdmVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxpbmdUcmVlTGF0Y2hpbmdDb250cm9sbGVyOjpub2RlV2FzUmVtb3ZlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlTGF0Y2hpbmdDb250cm9sbGVyOjpjbGVhckxhdGNo
ZWROb2RlKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlTGF0Y2hpbmdD
b250cm9sbGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlTG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhSVEZEYXRhYmFzZUxvYWRlcjo6bG9hZEFzeW5jaHJv
bm91c2x5KToKKyAgICAgICAgKFdlYkNvcmU6OkhSVEZEYXRhYmFzZUxvYWRlcjo6d2FpdEZvckxv
YWRlclRocmVhZENvbXBsZXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0hSVEZEYXRh
YmFzZUxvYWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRGVzdGlu
YXRpb25Db2NvYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6
Omhhc0Vub3VnaEZyYW1lcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0
aW9uQ29jb2E6OnJlbmRlcik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uQ29j
b2E6OnJlbmRlck9uUmVuZGVyaW5nVGhlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2Nv
Y29hL0F1ZGlvRGVzdGluYXRpb25Db2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL0NETVByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNETVByb3h5OjppbnN0YW5j
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcm94eTo6c2V0SW5zdGFuY2UpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0RNUHJveHk6OnN0YXJ0ZWRXYWl0aW5nRm9yS2V5IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNETVByb3h5OjpzdG9wcGVkV2FpdGluZ0ZvcktleSBjb25zdCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bjo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6c2V0RGVsYXlDYWxsYmFja3MgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpjbGVhck1h
aW5UaHJlYWRQZW5kaW5nRmxhZyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb246OnNjaGVkdWxlTWFpblRocmVhZE5vdGlmaWNhdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OmRpc3BhdGNoTm90aWZp
Y2F0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpwcm9jZXNzTmV3VmlkZW9TYW1wbGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0lPU3VyZmFjZVBvb2wuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SU9TdXJmYWNlUG9vbDo6dGFrZVN1cmZhY2UpOgorICAgICAgICAoV2ViQ29y
ZTo6SU9TdXJmYWNlUG9vbDo6YWRkU3VyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpJT1N1cmZh
Y2VQb29sOjpzZXRQb29sU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpJT1N1cmZhY2VQb29sOjpj
b2xsZWN0aW9uVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpJT1N1cmZhY2VQb29sOjpk
aXNjYXJkQWxsU3VyZmFjZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0lPU3Vy
ZmFjZVBvb2wuaDoKKyAgICAgICAgKFdlYkNvcmU6OklPU3VyZmFjZVBvb2w6OldURl9HVUFSREVE
X0JZX0xPQ0spOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1N1YmltYWdlQ2FjaGVX
aXRoVGltZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3ViaW1hZ2VDYWNoZVdpdGhUaW1lcjo6
cHJ1bmVDYWNoZVRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6U3ViaW1hZ2VDYWNoZVdp
dGhUaW1lcjo6c3ViaW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6U3ViaW1hZ2VDYWNoZVdpdGhU
aW1lcjo6Y2xlYXJJbWFnZUFuZFN1YmltYWdlcyk6CisgICAgICAgIChXZWJDb3JlOjpTdWJpbWFn
ZUNhY2hlV2l0aFRpbWVyOjpjbGVhckFsbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnREYXRh
YmFzZTo6Y29sbGVjdGlvbkZvckZhbWlseSk6CisgICAgICAgIChXZWJDb3JlOjpGb250RGF0YWJh
c2U6OmNsZWFyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VS
TFNlc3Npb24ubW06CisgICAgICAgIChXZWJDb3JlOjpXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRh
c2tDbGllbnQ6OmNsZWFyVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb3JlTlNVUkxTZXNz
aW9uRGF0YVRhc2tDbGllbnQ6OmRhdGFTZW50KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVO
U1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDo6cmVzcG9uc2VSZWNlaXZlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ6OnNob3VsZENhY2hlUmVz
cG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xp
ZW50OjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZU5TVVJMU2Vzc2lv
bkRhdGFUYXNrQ2xpZW50OjpyZWRpcmVjdFJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDo6YWNjZXNzQ29udHJvbENoZWNrRmFpbGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDo6
bG9hZEZhaWxlZCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRh
c2tDbGllbnQ6OmxvYWRGaW5pc2hlZCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMv
V2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLmg6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25R
dWV1ZURlbGVnYXRlLm1tOgorICAgICAgICAoLVtXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJh
dGlvblF1ZXVlRGVsZWdhdGUgZGV0YWNoSGFuZGxlXSk6CisgICAgICAgICgtW1dlYkNvcmVSZXNv
dXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZSBjb25uZWN0aW9uOndpbGxTZW5kUmVx
dWVzdDpyZWRpcmVjdFJlc3BvbnNlOl0pOgorICAgICAgICAoLVtXZWJDb3JlUmVzb3VyY2VIYW5k
bGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUgY29ubmVjdGlvbjpjYW5BdXRoZW50aWNhdGVBZ2Fp
bnN0UHJvdGVjdGlvblNwYWNlOl0pOgorICAgICAgICAoLVtXZWJDb3JlUmVzb3VyY2VIYW5kbGVB
c09wZXJhdGlvblF1ZXVlRGVsZWdhdGUgY29ubmVjdGlvbjp3aWxsQ2FjaGVSZXNwb25zZTpdKToK
KyAgICAgICAgKiBzdG9yYWdlL1N0b3JhZ2VRdW90YU1hbmFnZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U3RvcmFnZVF1b3RhTWFuYWdlcjo6cmVxdWVzdFNwYWNlT25CYWNrZ3JvdW5kVGhyZWFk
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VRdW90YU1hbmFnZXI6OnJlc2V0UXVvdGFVcGRh
dGVkQmFzZWRPblVzYWdlRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlUXVv
dGFNYW5hZ2VyOjpyZXNldFF1b3RhRm9yVGVzdGluZyk6CisgICAgICAgICogc3RvcmFnZS9TdG9y
YWdlUXVvdGFNYW5hZ2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlUXVvdGFNYW5hZ2Vy
OjpXVEZfR1VBUkRFRF9CWV9MT0NLKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlck9yV29ya2xl
dFNjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyT3JXb3JrbGV0
U2NyaXB0Q29udHJvbGxlcjo6c2NoZWR1bGVFeGVjdXRpb25UZXJtaW5hdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjppc1Rlcm1pbmF0aW5n
RXhlY3V0aW9uIGNvbnN0KToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlck9yV29ya2xldFNjcmlw
dENvbnRyb2xsZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck9yV29ya2xldFNjcmlwdENv
bnRyb2xsZXI6OldURl9HVUFSREVEX0JZX0xPQ0spOgorCiAyMDIxLTA1LTE5ICBTYW0gV2Vpbmln
ICA8d2VpbmlnQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgSW1hZ2VCdWZmZXI6OnRvQkdS
QSgpIGFuZCByZXBsYWNlIGl0cyB1c2VzIHdpdGggdGhlIG1vcmUgZ2VuZXJhbCBJbWFnZUJ1ZmZl
cjo6Z2V0UGl4ZWxCdWZmZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCmluZGV4IDMzNDdiMDZjNjA4NjY1YmVkNTA5ZDgyMmUx
YWMxNjJhNzIxYTc5NGUuLmUwZGQ5YTA4ZDVjY2I5NWVmN2QzNWJjMmY4Y2EyNTRkM2M0YmMwZTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0
b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RT
dG9yZS5jcHAKQEAgLTQ4NCw3ICs0ODQsNyBAQCBFeGNlcHRpb25PcjxSZWY8SURCSW5kZXg+PiBJ
REJPYmplY3RTdG9yZTo6Y3JlYXRlSW5kZXgoSlNHbG9iYWxPYmplY3QmLCBjb25zdCBTdAogCiAg
ICAgUmVmPElEQkluZGV4PiByZWZlcmVuY2VkSW5kZXggeyAqaW5kZXggfTsKIAotICAgIExvY2tl
cjxMb2NrPiBsb2NrZXIobV9yZWZlcmVuY2VkSW5kZXhMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2Vy
IHsgbV9yZWZlcmVuY2VkSW5kZXhMb2NrIH07CiAgICAgbV9yZWZlcmVuY2VkSW5kZXhlcy5zZXQo
bmFtZSwgV1RGTW92ZShpbmRleCkpOwogCiAgICAgcmV0dXJuIHJlZmVyZW5jZWRJbmRleDsKQEAg
LTUwNCw3ICs1MDQsNyBAQCBFeGNlcHRpb25PcjxSZWY8SURCSW5kZXg+PiBJREJPYmplY3RTdG9y
ZTo6aW5kZXgoY29uc3QgU3RyaW5nJiBpbmRleE5hbWUpCiAgICAgaWYgKG1fdHJhbnNhY3Rpb24u
aXNGaW5pc2hlZE9yRmluaXNoaW5nKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZh
bGlkU3RhdGVFcnJvciwgIkZhaWxlZCB0byBleGVjdXRlICdpbmRleCcgb24gJ0lEQk9iamVjdFN0
b3JlJzogVGhlIHRyYW5zYWN0aW9uIGlzIGZpbmlzaGVkLiJfcyB9OwogCi0gICAgTG9ja2VyPExv
Y2s+IGxvY2tlcihtX3JlZmVyZW5jZWRJbmRleExvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBt
X3JlZmVyZW5jZWRJbmRleExvY2sgfTsKICAgICBhdXRvIGl0ZXJhdG9yID0gbV9yZWZlcmVuY2Vk
SW5kZXhlcy5maW5kKGluZGV4TmFtZSk7CiAgICAgaWYgKGl0ZXJhdG9yICE9IG1fcmVmZXJlbmNl
ZEluZGV4ZXMuZW5kKCkpCiAgICAgICAgIHJldHVybiBSZWY8SURCSW5kZXg+IHsgKml0ZXJhdG9y
LT52YWx1ZSB9OwpAQCAtNTQ2LDcgKzU0Niw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IElEQk9iamVj
dFN0b3JlOjpkZWxldGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgbV9pbmZvLmRlbGV0
ZUluZGV4KG5hbWUpOwogCiAgICAgewotICAgICAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKG1fcmVm
ZXJlbmNlZEluZGV4TG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3JlZmVyZW5jZWRJ
bmRleExvY2sgfTsKICAgICAgICAgaWYgKGF1dG8gaW5kZXggPSBtX3JlZmVyZW5jZWRJbmRleGVz
LnRha2UobmFtZSkpIHsKICAgICAgICAgICAgIGluZGV4LT5tYXJrQXNEZWxldGVkKCk7CiAgICAg
ICAgICAgICBhdXRvIGlkZW50aWZpZXIgPSBpbmRleC0+aW5mbygpLmlkZW50aWZpZXIoKTsKQEAg
LTcwMSw3ICs3MDEsNyBAQCB2b2lkIElEQk9iamVjdFN0b3JlOjpyb2xsYmFja0ZvclZlcnNpb25D
aGFuZ2VBYm9ydCgpCiAgICAgICAgICAgICBtX2luZm8uZGVsZXRlSW5kZXgoaW5kZXhJZGVudGlm
aWVyKTsKICAgICB9CiAKLSAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKG1fcmVmZXJlbmNlZEluZGV4
TG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fcmVmZXJlbmNlZEluZGV4TG9jayB9OwogCiAg
ICAgVmVjdG9yPHVpbnQ2NF90PiBpZGVudGlmaWVyc1RvUmVtb3ZlOwogICAgIFZlY3RvcjxzdGQ6
OnVuaXF1ZV9wdHI8SURCSW5kZXg+PiBpbmRleGVzVG9EZWxldGU7CkBAIC03MzIsNyArNzMyLDcg
QEAgdm9pZCBJREJPYmplY3RTdG9yZTo6cm9sbGJhY2tGb3JWZXJzaW9uQ2hhbmdlQWJvcnQoKQog
dGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4KIHZvaWQgSURCT2JqZWN0U3RvcmU6OnZpc2l0UmVm
ZXJlbmNlZEluZGV4ZXMoVmlzaXRvciYgdmlzaXRvcikgY29uc3QKIHsKLSAgICBMb2NrZXI8TG9j
az4gbG9ja2VyKG1fcmVmZXJlbmNlZEluZGV4TG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1f
cmVmZXJlbmNlZEluZGV4TG9jayB9OwogICAgIGZvciAoYXV0byYgaW5kZXggOiBtX3JlZmVyZW5j
ZWRJbmRleGVzLnZhbHVlcygpKQogICAgICAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3QoaW5kZXgu
Z2V0KCkpOwogICAgIGZvciAoYXV0byYgaW5kZXggOiBtX2RlbGV0ZWRJbmRleGVzLnZhbHVlcygp
KQpAQCAtNzQ0LDYgKzc0NCw3IEBAIHRlbXBsYXRlIHZvaWQgSURCT2JqZWN0U3RvcmU6OnZpc2l0
UmVmZXJlbmNlZEluZGV4ZXMoU2xvdFZpc2l0b3ImKSBjb25zdDsKIAogdm9pZCBJREJPYmplY3RT
dG9yZTo6cmVuYW1lUmVmZXJlbmNlZEluZGV4KElEQkluZGV4JiBpbmRleCwgY29uc3QgU3RyaW5n
JiBuZXdOYW1lKQogeworICAgIExvY2tlciBsb2NrZXIgeyBtX3JlZmVyZW5jZWRJbmRleExvY2sg
fTsKICAgICBMT0coSW5kZXhlZERCLCAiSURCT2JqZWN0U3RvcmU6OnJlbmFtZVJlZmVyZW5jZWRJ
bmRleCIpOwogCiAgICAgYXV0byogaW5kZXhJbmZvID0gbV9pbmZvLmluZm9Gb3JFeGlzdGluZ0lu
ZGV4KGluZGV4LmluZm8oKS5pZGVudGlmaWVyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmgKaW5kZXggMWI3Yjk3M2RjNDU4MWRlNzJm
MjAxNmI0MGFkZTBkYThkZDNhMGQxYS4uNGUwYmVlNjI4NGVkN2I5Yzc2NTU1ZWU4MjY5YTkyNDk5
NTZiNGU3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
T2JqZWN0U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJP
YmplY3RTdG9yZS5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiSURCQ3Vyc29yRGlyZWN0
aW9uLmgiCiAjaW5jbHVkZSAiSURCS2V5UGF0aC5oIgogI2luY2x1ZGUgIklEQk9iamVjdFN0b3Jl
SW5mby5oIgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9Jc29N
YWxsb2MuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0xMzMsOSArMTM0LDkgQEAgcHJpdmF0ZToK
IAogICAgIGJvb2wgbV9kZWxldGVkIHsgZmFsc2UgfTsKIAotICAgIG11dGFibGUgTG9jayBtX3Jl
ZmVyZW5jZWRJbmRleExvY2s7Ci0gICAgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxJ
REJJbmRleD4+IG1fcmVmZXJlbmNlZEluZGV4ZXM7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgc3Rk
Ojp1bmlxdWVfcHRyPElEQkluZGV4Pj4gbV9kZWxldGVkSW5kZXhlczsKKyAgICBtdXRhYmxlIENo
ZWNrZWRMb2NrIG1fcmVmZXJlbmNlZEluZGV4TG9jazsKKyAgICBIYXNoTWFwPFN0cmluZywgc3Rk
Ojp1bmlxdWVfcHRyPElEQkluZGV4Pj4gbV9yZWZlcmVuY2VkSW5kZXhlcyBXVEZfR1VBUkRFRF9C
WV9MT0NLKG1fcmVmZXJlbmNlZEluZGV4TG9jayk7CisgICAgSGFzaE1hcDx1aW50NjRfdCwgc3Rk
Ojp1bmlxdWVfcHRyPElEQkluZGV4Pj4gbV9kZWxldGVkSW5kZXhlcyBXVEZfR1VBUkRFRF9CWV9M
T0NLKG1fcmVmZXJlbmNlZEluZGV4TG9jayk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2Fj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlv
bi5jcHAKaW5kZXggZGJmNDgwYWZmMmFiZjM3NjRmZTI0YTI3NWU5NjcwYjM1OTBlOWNiZS4uOTk4
YTFmYzllYTJjZjU1YTY3MDJkNTEwODMzZjQ1Mjg2NDExNmFiYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcApAQCAtMTU0LDcg
KzE1NCw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxJREJPYmplY3RTdG9yZT4+IElEQlRyYW5zYWN0aW9u
OjpvYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG9iamVjCiAgICAgaWYgKGlzRmluaXNoZWRPckZp
bmlzaGluZygpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3Is
ICJGYWlsZWQgdG8gZXhlY3V0ZSAnb2JqZWN0U3RvcmUnIG9uICdJREJUcmFuc2FjdGlvbic6IFRo
ZSB0cmFuc2FjdGlvbiBmaW5pc2hlZC4iX3MgfTsKIAotICAgIExvY2tlcjxMb2NrPiBsb2NrZXIo
bV9yZWZlcmVuY2VkT2JqZWN0U3RvcmVMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9yZWZl
cmVuY2VkT2JqZWN0U3RvcmVMb2NrIH07CiAKICAgICBpZiAoYXV0byogc3RvcmUgPSBtX3JlZmVy
ZW5jZWRPYmplY3RTdG9yZXMuZ2V0KG9iamVjdFN0b3JlTmFtZSkpCiAgICAgICAgIHJldHVybiBt
YWtlUmVmKCpzdG9yZSk7CkBAIC0yMjYsNyArMjI2LDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6
aW50ZXJuYWxBYm9ydCgpCiAgICAgbV9kYXRhYmFzZS0+d2lsbEFib3J0VHJhbnNhY3Rpb24oKnRo
aXMpOwogCiAgICAgaWYgKGlzVmVyc2lvbkNoYW5nZSgpKSB7Ci0gICAgICAgIExvY2tlcjxMb2Nr
PiBsb2NrZXIobV9yZWZlcmVuY2VkT2JqZWN0U3RvcmVMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxv
Y2tlciB7IG1fcmVmZXJlbmNlZE9iamVjdFN0b3JlTG9jayB9OwogCiAgICAgICAgIGF1dG8mIGlu
Zm8gPSBtX2RhdGFiYXNlLT5pbmZvKCk7CiAgICAgICAgIFZlY3Rvcjx1aW50NjRfdD4gaWRlbnRp
ZmllcnNUb1JlbW92ZTsKQEAgLTYyMyw3ICs2MjMsNyBAQCBSZWY8SURCT2JqZWN0U3RvcmU+IElE
QlRyYW5zYWN0aW9uOjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBJREJPYmplY3RTdG9yZUluZm8m
CiAgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgQVNTRVJUKGNhbkN1
cnJlbnRUaHJlYWRBY2Nlc3NUaHJlYWRMb2NhbERhdGEobV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFk
KCkpKTsKIAotICAgIExvY2tlcjxMb2NrPiBsb2NrZXIobV9yZWZlcmVuY2VkT2JqZWN0U3RvcmVM
b2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9yZWZlcmVuY2VkT2JqZWN0U3RvcmVMb2NrIH07
CiAKICAgICBhdXRvIG9iamVjdFN0b3JlID0gbWFrZVVuaXF1ZTxJREJPYmplY3RTdG9yZT4oKnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgaW5mbywgKnRoaXMpOwogICAgIGF1dG8qIHJhd09iamVj
dFN0b3JlID0gb2JqZWN0U3RvcmUuZ2V0KCk7CkBAIC02NTksNyArNjU5LDcgQEAgdm9pZCBJREJU
cmFuc2FjdGlvbjo6cmVuYW1lT2JqZWN0U3RvcmUoSURCT2JqZWN0U3RvcmUmIG9iamVjdFN0b3Jl
LCBjb25zdCBTdHJpbmcKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OnJl
bmFtZU9iamVjdFN0b3JlIik7CiAKLSAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKG1fcmVmZXJlbmNl
ZE9iamVjdFN0b3JlTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fcmVmZXJlbmNlZE9iamVj
dFN0b3JlTG9jayB9OwogCiAgICAgQVNTRVJUKGlzVmVyc2lvbkNoYW5nZSgpKTsKICAgICBBU1NF
UlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKQEAgLTc0Niw3ICs3NDYsNyBAQCB2b2lkIElE
QlRyYW5zYWN0aW9uOjpkaWRDcmVhdGVJbmRleE9uU2VydmVyKGNvbnN0IElEQlJlc3VsdERhdGEm
IHJlc3VsdERhdGEpCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpyZW5hbWVJbmRleChJREJJbmRleCYg
aW5kZXgsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURC
VHJhbnNhY3Rpb246OnJlbmFtZUluZGV4Iik7Ci0gICAgTG9ja2VyPExvY2s+IGxvY2tlcihtX3Jl
ZmVyZW5jZWRPYmplY3RTdG9yZUxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX3JlZmVyZW5j
ZWRPYmplY3RTdG9yZUxvY2sgfTsKIAogICAgIEFTU0VSVChpc1ZlcnNpb25DaGFuZ2UoKSk7CiAg
ICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CkBAIC0xMzA4LDcgKzEzMDgsNyBA
QCB2b2lkIElEQlRyYW5zYWN0aW9uOjpkZWxldGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG9i
amVjdFN0b3JlTmFtZSkKICAgICBBU1NFUlQoY2FuQ3VycmVudFRocmVhZEFjY2Vzc1RocmVhZExv
Y2FsRGF0YShtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWQoKSkpOwogICAgIEFTU0VSVChpc1ZlcnNp
b25DaGFuZ2UoKSk7CiAKLSAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKG1fcmVmZXJlbmNlZE9iamVj
dFN0b3JlTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fcmVmZXJlbmNlZE9iamVjdFN0b3Jl
TG9jayB9OwogCiAgICAgaWYgKGF1dG8gb2JqZWN0U3RvcmUgPSBtX3JlZmVyZW5jZWRPYmplY3RT
dG9yZXMudGFrZShvYmplY3RTdG9yZU5hbWUpKSB7CiAgICAgICAgIG9iamVjdFN0b3JlLT5tYXJr
QXNEZWxldGVkKCk7CkBAIC0xNDU2LDcgKzE0NTYsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpj
b25uZWN0aW9uQ2xvc2VkRnJvbVNlcnZlcihjb25zdCBJREJFcnJvciYgZXJyb3IpCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBWaXNpdG9yPgogdm9pZCBJREJUcmFuc2FjdGlvbjo6dmlzaXRSZWZlcmVuY2Vk
T2JqZWN0U3RvcmVzKFZpc2l0b3ImIHZpc2l0b3IpIGNvbnN0CiB7Ci0gICAgTG9ja2VyPExvY2s+
IGxvY2tlcihtX3JlZmVyZW5jZWRPYmplY3RTdG9yZUxvY2spOworICAgIExvY2tlciBsb2NrZXIg
eyBtX3JlZmVyZW5jZWRPYmplY3RTdG9yZUxvY2sgfTsKICAgICBmb3IgKGF1dG8mIG9iamVjdFN0
b3JlIDogbV9yZWZlcmVuY2VkT2JqZWN0U3RvcmVzLnZhbHVlcygpKQogICAgICAgICB2aXNpdG9y
LmFkZE9wYXF1ZVJvb3Qob2JqZWN0U3RvcmUuZ2V0KCkpOwogICAgIGZvciAoYXV0byYgb2JqZWN0
U3RvcmUgOiBtX2RlbGV0ZWRPYmplY3RTdG9yZXMudmFsdWVzKCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaAppbmRleCA3NmFkMWVhYTIz
Y2ZjNmIwMjk2MDZjYTdiNTE3MzAwMThhNTY3N2NmLi44ZjZmMTBlZjNiNjViMTgyODkyMDhhZmUy
YmE2YTVhOGViMDNhZDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJUcmFuc2FjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQlRyYW5zYWN0aW9uLmgKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJJREJUcmFu
c2FjdGlvbk1vZGUuaCIKICNpbmNsdWRlICJJbmRleGVkREIuaCIKICNpbmNsdWRlICJUaW1lci5o
IgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgog
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKQEAgLTI1Myw4ICsyNTQsOCBAQCBwcml2YXRlOgog
CiAgICAgSGFzaE1hcDxJREJSZXNvdXJjZUlkZW50aWZpZXIsIFJlZlB0cjxJREJDbGllbnQ6OlRy
YW5zYWN0aW9uT3BlcmF0aW9uPj4gbV90cmFuc2FjdGlvbk9wZXJhdGlvbk1hcDsKIAotICAgIG11
dGFibGUgTG9jayBtX3JlZmVyZW5jZWRPYmplY3RTdG9yZUxvY2s7Ci0gICAgSGFzaE1hcDxTdHJp
bmcsIHN0ZDo6dW5pcXVlX3B0cjxJREJPYmplY3RTdG9yZT4+IG1fcmVmZXJlbmNlZE9iamVjdFN0
b3JlczsKKyAgICBtdXRhYmxlIENoZWNrZWRMb2NrIG1fcmVmZXJlbmNlZE9iamVjdFN0b3JlTG9j
azsKKyAgICBIYXNoTWFwPFN0cmluZywgc3RkOjp1bmlxdWVfcHRyPElEQk9iamVjdFN0b3JlPj4g
bV9yZWZlcmVuY2VkT2JqZWN0U3RvcmVzIFdURl9HVUFSREVEX0JZX0xPQ0sobV9yZWZlcmVuY2Vk
T2JqZWN0U3RvcmVMb2NrKTsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBzdGQ6OnVuaXF1ZV9wdHI8
SURCT2JqZWN0U3RvcmU+PiBtX2RlbGV0ZWRPYmplY3RTdG9yZXM7CiAKICAgICBIYXNoU2V0PFJl
ZlB0cjxJREJSZXF1ZXN0Pj4gbV9vcGVuUmVxdWVzdHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uUHJveHku
Y3BwCmluZGV4IDdlMzYxZjc4NGViZDJmOGIxNmM5ZjU1YTQ1YTk0ZGI0YTkxYzRkN2IuLmM1NjQ2
MjhkYzE0NjkwZDI2ZTFlMDkzNWJjMmE5NDk3Y2I4YTgyZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9u
UHJveHkuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIFJlZjxJREJPcGVuREJSZXF1ZXN0PiBJREJDb25u
ZWN0aW9uUHJveHk6Om9wZW5EYXRhYmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjCiB7CiAg
ICAgUmVmUHRyPElEQk9wZW5EQlJlcXVlc3Q+IHJlcXVlc3Q7CiAgICAgewotICAgICAgICBMb2Nr
ZXI8TG9jaz4gbG9ja2VyKG1fb3BlbkRCUmVxdWVzdE1hcExvY2spOworICAgICAgICBMb2NrZXIg
bG9ja2VyIHsgbV9vcGVuREJSZXF1ZXN0TWFwTG9jayB9OwogCiAgICAgICAgIHJlcXVlc3QgPSBJ
REJPcGVuREJSZXF1ZXN0OjpjcmVhdGVPcGVuUmVxdWVzdChjb250ZXh0LCAqdGhpcywgZGF0YWJh
c2VJZGVudGlmaWVyLCB2ZXJzaW9uKTsKICAgICAgICAgQVNTRVJUKCFtX29wZW5EQlJlcXVlc3RN
YXAuY29udGFpbnMocmVxdWVzdC0+cmVzb3VyY2VJZGVudGlmaWVyKCkpKTsKQEAgLTgzLDcgKzgz
LDcgQEAgUmVmPElEQk9wZW5EQlJlcXVlc3Q+IElEQkNvbm5lY3Rpb25Qcm94eTo6ZGVsZXRlRGF0
YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYKIHsKICAgICBSZWZQdHI8SURCT3BlbkRCUmVx
dWVzdD4gcmVxdWVzdDsKICAgICB7Ci0gICAgICAgIExvY2tlcjxMb2NrPiBsb2NrZXIobV9vcGVu
REJSZXF1ZXN0TWFwTG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX29wZW5EQlJlcXVl
c3RNYXBMb2NrIH07CiAKICAgICAgICAgcmVxdWVzdCA9IElEQk9wZW5EQlJlcXVlc3Q6OmNyZWF0
ZURlbGV0ZVJlcXVlc3QoY29udGV4dCwgKnRoaXMsIGRhdGFiYXNlSWRlbnRpZmllcik7CiAgICAg
ICAgIEFTU0VSVCghbV9vcGVuREJSZXF1ZXN0TWFwLmNvbnRhaW5zKHJlcXVlc3QtPnJlc291cmNl
SWRlbnRpZmllcigpKSk7CkBAIC0xMTEsNyArMTExLDcgQEAgdm9pZCBJREJDb25uZWN0aW9uUHJv
eHk6OmNvbXBsZXRlT3BlbkRCUmVxdWVzdChjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRh
KQogCiAgICAgUmVmUHRyPElEQk9wZW5EQlJlcXVlc3Q+IHJlcXVlc3Q7CiAgICAgewotICAgICAg
ICBMb2NrZXI8TG9jaz4gbG9ja2VyKG1fb3BlbkRCUmVxdWVzdE1hcExvY2spOworICAgICAgICBM
b2NrZXIgbG9ja2VyIHsgbV9vcGVuREJSZXF1ZXN0TWFwTG9jayB9OwogICAgICAgICByZXF1ZXN0
ID0gbV9vcGVuREJSZXF1ZXN0TWFwLnRha2UocmVzdWx0RGF0YS5yZXF1ZXN0SWRlbnRpZmllcigp
KTsKICAgICB9CiAKQEAgLTI0OSw3ICsyNDksNyBAQCB2b2lkIElEQkNvbm5lY3Rpb25Qcm94eTo6
aXRlcmF0ZUN1cnNvcihUcmFuc2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9uLCBjb25zdCBJRAog
CiB2b2lkIElEQkNvbm5lY3Rpb25Qcm94eTo6c2F2ZU9wZXJhdGlvbihUcmFuc2FjdGlvbk9wZXJh
dGlvbiYgb3BlcmF0aW9uKQogewotICAgIExvY2tlcjxMb2NrPiBsb2NrZXIobV90cmFuc2FjdGlv
bk9wZXJhdGlvbkxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX3RyYW5zYWN0aW9uT3BlcmF0
aW9uTG9jayB9OwogCiAgICAgQVNTRVJUKCFtX2FjdGl2ZU9wZXJhdGlvbnMuY29udGFpbnMob3Bl
cmF0aW9uLmlkZW50aWZpZXIoKSkpOwogICAgIG1fYWN0aXZlT3BlcmF0aW9ucy5zZXQob3BlcmF0
aW9uLmlkZW50aWZpZXIoKSwgJm9wZXJhdGlvbik7CkBAIC0yNTksNyArMjU5LDcgQEAgdm9pZCBJ
REJDb25uZWN0aW9uUHJveHk6OmNvbXBsZXRlT3BlcmF0aW9uKGNvbnN0IElEQlJlc3VsdERhdGEm
IHJlc3VsdERhdGEpCiB7CiAgICAgUmVmUHRyPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiBvcGVyYXRp
b247CiAgICAgewotICAgICAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKG1fdHJhbnNhY3Rpb25PcGVy
YXRpb25Mb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fdHJhbnNhY3Rpb25PcGVyYXRp
b25Mb2NrIH07CiAgICAgICAgIG9wZXJhdGlvbiA9IG1fYWN0aXZlT3BlcmF0aW9ucy50YWtlKHJl
c3VsdERhdGEucmVxdWVzdElkZW50aWZpZXIoKSk7CiAgICAgfQogCkBAIC0yNzgsNyArMjc4LDcg
QEAgdm9pZCBJREJDb25uZWN0aW9uUHJveHk6OmZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQodWludDY0
X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnQKIHsKICAgICBSZWZQdHI8SURCRGF0YWJhc2U+IGRh
dGFiYXNlOwogICAgIHsKLSAgICAgICAgTG9ja2VyPExvY2s+IGxvY2tlcihtX2RhdGFiYXNlQ29u
bmVjdGlvbk1hcExvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9kYXRhYmFzZUNvbm5l
Y3Rpb25NYXBMb2NrIH07CiAgICAgICAgIGRhdGFiYXNlID0gbV9kYXRhYmFzZUNvbm5lY3Rpb25N
YXAuZ2V0KGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpOwogICAgIH0KIApAQCAtMzA1LDcg
KzMwNSw3IEBAIHZvaWQgSURCQ29ubmVjdGlvblByb3h5Ojpub3RpZnlPcGVuREJSZXF1ZXN0Qmxv
Y2tlZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImCiAKICAgICBSZWZQdHI8SURCT3BlbkRC
UmVxdWVzdD4gcmVxdWVzdDsKICAgICB7Ci0gICAgICAgIExvY2tlcjxMb2NrPiBsb2NrZXIobV9v
cGVuREJSZXF1ZXN0TWFwTG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX29wZW5EQlJl
cXVlc3RNYXBMb2NrIH07CiAgICAgICAgIHJlcXVlc3QgPSBtX29wZW5EQlJlcXVlc3RNYXAuZ2V0
KHJlcXVlc3RJZGVudGlmaWVyKTsKICAgICB9CiAKQEAgLTMyMyw3ICszMjMsNyBAQCB2b2lkIElE
QkNvbm5lY3Rpb25Qcm94eTo6b3BlbkRCUmVxdWVzdENhbmNlbGxlZChjb25zdCBJREJSZXF1ZXN0
RGF0YSYgcmVxdWVzdERhdAogdm9pZCBJREJDb25uZWN0aW9uUHJveHk6OmVzdGFibGlzaFRyYW5z
YWN0aW9uKElEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbikKIHsKICAgICB7Ci0gICAgICAgIExv
Y2tlcjxMb2NrPiBsb2NrZXIobV90cmFuc2FjdGlvbk1hcExvY2spOworICAgICAgICBMb2NrZXIg
bG9ja2VyIHsgbV90cmFuc2FjdGlvbk1hcExvY2sgfTsKICAgICAgICAgQVNTRVJUKCFoYXNSZWNv
cmRPZlRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uKSk7CiAgICAgICAgIG1fcGVuZGluZ1RyYW5zYWN0
aW9ucy5zZXQodHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKSwgJnRyYW5zYWN0aW9uKTsK
ICAgICB9CkBAIC0zMzUsNyArMzM1LDcgQEAgdm9pZCBJREJDb25uZWN0aW9uUHJveHk6OmRpZFN0
YXJ0VHJhbnNhY3Rpb24oY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2EKIHsKICAg
ICBSZWZQdHI8SURCVHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9uOwogICAgIHsKLSAgICAgICAgTG9j
a2VyPExvY2s+IGxvY2tlcihtX3RyYW5zYWN0aW9uTWFwTG9jayk7CisgICAgICAgIExvY2tlciBs
b2NrZXIgeyBtX3RyYW5zYWN0aW9uTWFwTG9jayB9OwogICAgICAgICB0cmFuc2FjdGlvbiA9IG1f
cGVuZGluZ1RyYW5zYWN0aW9ucy50YWtlKHRyYW5zYWN0aW9uSWRlbnRpZmllcik7CiAgICAgfQog
CkBAIC0zNDgsNyArMzQ4LDcgQEAgdm9pZCBJREJDb25uZWN0aW9uUHJveHk6OmRpZFN0YXJ0VHJh
bnNhY3Rpb24oY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2EKIHZvaWQgSURCQ29u
bmVjdGlvblByb3h5Ojpjb21taXRUcmFuc2FjdGlvbihJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rp
b24pCiB7CiAgICAgewotICAgICAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKG1fdHJhbnNhY3Rpb25N
YXBMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fdHJhbnNhY3Rpb25NYXBMb2NrIH07
CiAgICAgICAgIEFTU0VSVCghbV9jb21taXR0aW5nVHJhbnNhY3Rpb25zLmNvbnRhaW5zKHRyYW5z
YWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCkpKTsKICAgICAgICAgbV9jb21taXR0aW5nVHJhbnNh
Y3Rpb25zLnNldCh0cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRpZmllcigpLCAmdHJhbnNhY3Rpb24p
OwogICAgIH0KQEAgLTM2MCw3ICszNjAsNyBAQCB2b2lkIElEQkNvbm5lY3Rpb25Qcm94eTo6ZGlk
Q29tbWl0VHJhbnNhY3Rpb24oY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFucwogewog
ICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbj4gdHJhbnNhY3Rpb247CiAgICAgewotICAgICAgICBM
b2NrZXI8TG9jaz4gbG9ja2VyKG1fdHJhbnNhY3Rpb25NYXBMb2NrKTsKKyAgICAgICAgTG9ja2Vy
IGxvY2tlciB7IG1fdHJhbnNhY3Rpb25NYXBMb2NrIH07CiAgICAgICAgIHRyYW5zYWN0aW9uID0g
bV9jb21taXR0aW5nVHJhbnNhY3Rpb25zLnRha2UodHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKICAg
ICB9CiAKQEAgLTM3Myw3ICszNzMsNyBAQCB2b2lkIElEQkNvbm5lY3Rpb25Qcm94eTo6ZGlkQ29t
bWl0VHJhbnNhY3Rpb24oY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFucwogdm9pZCBJ
REJDb25uZWN0aW9uUHJveHk6OmFib3J0VHJhbnNhY3Rpb24oSURCVHJhbnNhY3Rpb24mIHRyYW5z
YWN0aW9uKQogewogICAgIHsKLSAgICAgICAgTG9ja2VyPExvY2s+IGxvY2tlcihtX3RyYW5zYWN0
aW9uTWFwTG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3RyYW5zYWN0aW9uTWFwTG9j
ayB9OwogICAgICAgICBBU1NFUlQoIW1fYWJvcnRpbmdUcmFuc2FjdGlvbnMuY29udGFpbnModHJh
bnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKSkpOwogICAgICAgICBtX2Fib3J0aW5nVHJhbnNh
Y3Rpb25zLnNldCh0cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRpZmllcigpLCAmdHJhbnNhY3Rpb24p
OwogICAgIH0KQEAgLTM4NSw3ICszODUsNyBAQCB2b2lkIElEQkNvbm5lY3Rpb25Qcm94eTo6ZGlk
QWJvcnRUcmFuc2FjdGlvbihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYQogewog
ICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbj4gdHJhbnNhY3Rpb247CiAgICAgewotICAgICAgICBM
b2NrZXI8TG9jaz4gbG9ja2VyKG1fdHJhbnNhY3Rpb25NYXBMb2NrKTsKKyAgICAgICAgTG9ja2Vy
IGxvY2tlciB7IG1fdHJhbnNhY3Rpb25NYXBMb2NrIH07CiAgICAgICAgIHRyYW5zYWN0aW9uID0g
bV9hYm9ydGluZ1RyYW5zYWN0aW9ucy50YWtlKHRyYW5zYWN0aW9uSWRlbnRpZmllcik7CiAgICAg
fQogCkBAIC00MjIsNyArNDIyLDcgQEAgdm9pZCBJREJDb25uZWN0aW9uUHJveHk6OmRpZENsb3Nl
RnJvbVNlcnZlcih1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWUKIHsKICAgICBS
ZWZQdHI8SURCRGF0YWJhc2U+IGRhdGFiYXNlOwogICAgIHsKLSAgICAgICAgTG9ja2VyPExvY2s+
IGxvY2tlcihtX2RhdGFiYXNlQ29ubmVjdGlvbk1hcExvY2spOworICAgICAgICBMb2NrZXIgbG9j
a2VyIHsgbV9kYXRhYmFzZUNvbm5lY3Rpb25NYXBMb2NrIH07CiAgICAgICAgIGRhdGFiYXNlID0g
bV9kYXRhYmFzZUNvbm5lY3Rpb25NYXAuZ2V0KGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIp
OwogICAgIH0KIApAQCAtNDM2LDE0ICs0MzYsMTQgQEAgdm9pZCBJREJDb25uZWN0aW9uUHJveHk6
OmNvbm5lY3Rpb25Ub1NlcnZlckxvc3QoY29uc3QgSURCRXJyb3ImIGVycm9yKQogewogICAgIFZl
Y3Rvcjx1aW50NjRfdD4gZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcnM7CiAgICAgewotICAg
ICAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKG1fZGF0YWJhc2VDb25uZWN0aW9uTWFwTG9jayk7Cisg
ICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2RhdGFiYXNlQ29ubmVjdGlvbk1hcExvY2sgfTsKICAg
ICAgICAgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcnMgPSBjb3B5VG9WZWN0b3IobV9kYXRh
YmFzZUNvbm5lY3Rpb25NYXAua2V5cygpKTsKICAgICB9CiAKICAgICBmb3IgKGF1dG8gY29ubmVj
dGlvbklkZW50aWZpZXIgOiBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVycykgewogICAgICAg
ICBSZWZQdHI8SURCRGF0YWJhc2U+IGRhdGFiYXNlOwogICAgICAgICB7Ci0gICAgICAgICAgICBM
b2NrZXI8TG9jaz4gbG9ja2VyKG1fZGF0YWJhc2VDb25uZWN0aW9uTWFwTG9jayk7CisgICAgICAg
ICAgICBMb2NrZXIgbG9ja2VyIHsgbV9kYXRhYmFzZUNvbm5lY3Rpb25NYXBMb2NrIH07CiAgICAg
ICAgICAgICBkYXRhYmFzZSA9IG1fZGF0YWJhc2VDb25uZWN0aW9uTWFwLmdldChjb25uZWN0aW9u
SWRlbnRpZmllcik7CiAgICAgICAgIH0KIApAQCAtNDU1LDE0ICs0NTUsMTQgQEAgdm9pZCBJREJD
b25uZWN0aW9uUHJveHk6OmNvbm5lY3Rpb25Ub1NlcnZlckxvc3QoY29uc3QgSURCRXJyb3ImIGVy
cm9yKQogCiAgICAgVmVjdG9yPElEQlJlc291cmNlSWRlbnRpZmllcj4gb3BlbkRCUmVxdWVzdElk
ZW50aWZpZXJzOwogICAgIHsKLSAgICAgICAgTG9ja2VyPExvY2s+IGxvY2tlcihtX29wZW5EQlJl
cXVlc3RNYXBMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fb3BlbkRCUmVxdWVzdE1h
cExvY2sgfTsKICAgICAgICAgb3BlbkRCUmVxdWVzdElkZW50aWZpZXJzID0gY29weVRvVmVjdG9y
KG1fb3BlbkRCUmVxdWVzdE1hcC5rZXlzKCkpOwogICAgIH0KIAogICAgIGZvciAoYXV0byYgcmVx
dWVzdElkZW50aWZpZXIgOiBvcGVuREJSZXF1ZXN0SWRlbnRpZmllcnMpIHsKICAgICAgICAgUmVm
UHRyPElEQk9wZW5EQlJlcXVlc3Q+IHJlcXVlc3Q7CiAgICAgICAgIHsKLSAgICAgICAgICAgIExv
Y2tlcjxMb2NrPiBsb2NrZXIobV9vcGVuREJSZXF1ZXN0TWFwTG9jayk7CisgICAgICAgICAgICBM
b2NrZXIgbG9ja2VyIHsgbV9vcGVuREJSZXF1ZXN0TWFwTG9jayB9OwogICAgICAgICAgICAgcmVx
dWVzdCA9IG1fb3BlbkRCUmVxdWVzdE1hcC5nZXQocmVxdWVzdElkZW50aWZpZXIpOwogICAgICAg
ICB9CiAKQEAgLTQ3NSw3ICs0NzUsNyBAQCB2b2lkIElEQkNvbm5lY3Rpb25Qcm94eTo6Y29ubmVj
dGlvblRvU2VydmVyTG9zdChjb25zdCBJREJFcnJvciYgZXJyb3IpCiAKICAgICBWZWN0b3I8SURC
UmVzb3VyY2VJZGVudGlmaWVyPiBpbmZvQ2FsbGJhY2tJZGVudGlmaWVyczsKICAgICB7Ci0gICAg
ICAgIExvY2tlcjxMb2NrPiBsb2NrKG1fZGF0YWJhc2VJbmZvTWFwTG9jayk7CisgICAgICAgIExv
Y2tlciBsb2NrZXIgeyBtX2RhdGFiYXNlSW5mb01hcExvY2sgfTsKICAgICAgICAgaW5mb0NhbGxi
YWNrSWRlbnRpZmllcnMgPSBjb3B5VG9WZWN0b3IobV9kYXRhYmFzZUluZm9DYWxsYmFja3Mua2V5
cygpKTsKICAgICB9CiAKQEAgLTQ4NSw3ICs0ODUsNyBAQCB2b2lkIElEQkNvbm5lY3Rpb25Qcm94
eTo6Y29ubmVjdGlvblRvU2VydmVyTG9zdChjb25zdCBJREJFcnJvciYgZXJyb3IpCiAKIHZvaWQg
SURCQ29ubmVjdGlvblByb3h5OjpzY2hlZHVsZU1haW5UaHJlYWRUYXNrcygpCiB7Ci0gICAgTG9j
a2VyPExvY2s+IGxvY2tlcihtX21haW5UaHJlYWRUYXNrTG9jayk7CisgICAgTG9ja2VyIGxvY2tl
ciB7IG1fbWFpblRocmVhZFRhc2tMb2NrIH07CiAgICAgaWYgKG1fbWFpblRocmVhZFByb3RlY3Rv
cikKICAgICAgICAgcmV0dXJuOwogCkBAIC00OTksNyArNDk5LDcgQEAgdm9pZCBJREJDb25uZWN0
aW9uUHJveHk6OmhhbmRsZU1haW5UaHJlYWRUYXNrcygpCiB7CiAgICAgUmVmUHRyPElEQkNvbm5l
Y3Rpb25Ub1NlcnZlcj4gcHJvdGVjdG9yOwogICAgIHsKLSAgICAgICAgTG9ja2VyPExvY2s+IGxv
Y2tlcihtX21haW5UaHJlYWRUYXNrTG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX21h
aW5UaHJlYWRUYXNrTG9jayB9OwogICAgICAgICBBU1NFUlQobV9tYWluVGhyZWFkUHJvdGVjdG9y
KTsKICAgICAgICAgcHJvdGVjdG9yID0gV1RGTW92ZShtX21haW5UaHJlYWRQcm90ZWN0b3IpOwog
ICAgIH0KQEAgLTUxNCw3ICs1MTQsNyBAQCB2b2lkIElEQkNvbm5lY3Rpb25Qcm94eTo6Z2V0QWxs
RGF0YWJhc2VOYW1lc0FuZFZlcnNpb25zKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmCiAKICAgICBJ
REJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uUmVxdWVzdCogcmVxdWVzdDsKICAgICB7Ci0gICAgICAg
IExvY2tlcjxMb2NrPiBsb2NrZXIobV9kYXRhYmFzZUluZm9NYXBMb2NrKTsKKyAgICAgICAgTG9j
a2VyIGxvY2tlciB7IG1fZGF0YWJhc2VJbmZvTWFwTG9jayB9OwogICAgICAgICBhdXRvIG5ld1Jl
cXVlc3QgPSBJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uUmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQs
ICp0aGlzLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgICAgIEFTU0VSVCghbV9kYXRhYmFzZUlu
Zm9DYWxsYmFja3MuY29udGFpbnMobmV3UmVxdWVzdC0+cmVzb3VyY2VJZGVudGlmaWVyKCkpKTsK
ICAgICAgICAgcmVxdWVzdCA9IG5ld1JlcXVlc3QucHRyKCk7CkBAIC01MjgsNyArNTI4LDcgQEAg
dm9pZCBJREJDb25uZWN0aW9uUHJveHk6OmRpZEdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9u
cyhjb25zdCBJREJSZXNvdXJjZUlkZW4KIHsKICAgICBSZWZQdHI8SURCRGF0YWJhc2VOYW1lQW5k
VmVyc2lvblJlcXVlc3Q+IHJlcXVlc3Q7CiAgICAgewotICAgICAgICBMb2NrZXI8TG9jaz4gbG9j
a2VyKG1fZGF0YWJhc2VJbmZvTWFwTG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2Rh
dGFiYXNlSW5mb01hcExvY2sgfTsKICAgICAgICAgcmVxdWVzdCA9IG1fZGF0YWJhc2VJbmZvQ2Fs
bGJhY2tzLnRha2UocmVxdWVzdElkZW50aWZpZXIpOwogICAgICAgICBpZiAoIXJlcXVlc3QpCiAg
ICAgICAgICAgICByZXR1cm47CkBAIC01MzksNyArNTM5LDcgQEAgdm9pZCBJREJDb25uZWN0aW9u
UHJveHk6OmRpZEdldEFsbERhdGFiYXNlTmFtZXNBbmRWZXJzaW9ucyhjb25zdCBJREJSZXNvdXJj
ZUlkZW4KIAogdm9pZCBJREJDb25uZWN0aW9uUHJveHk6OnJlZ2lzdGVyRGF0YWJhc2VDb25uZWN0
aW9uKElEQkRhdGFiYXNlJiBkYXRhYmFzZSkKIHsKLSAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKG1f
ZGF0YWJhc2VDb25uZWN0aW9uTWFwTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fZGF0YWJh
c2VDb25uZWN0aW9uTWFwTG9jayB9OwogCiAgICAgQVNTRVJUKCFtX2RhdGFiYXNlQ29ubmVjdGlv
bk1hcC5jb250YWlucyhkYXRhYmFzZS5kYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKCkpKTsK
ICAgICBtX2RhdGFiYXNlQ29ubmVjdGlvbk1hcC5zZXQoZGF0YWJhc2UuZGF0YWJhc2VDb25uZWN0
aW9uSWRlbnRpZmllcigpLCAmZGF0YWJhc2UpOwpAQCAtNTQ3LDcgKzU0Nyw3IEBAIHZvaWQgSURC
Q29ubmVjdGlvblByb3h5OjpyZWdpc3RlckRhdGFiYXNlQ29ubmVjdGlvbihJREJEYXRhYmFzZSYg
ZGF0YWJhc2UpCiAKIHZvaWQgSURCQ29ubmVjdGlvblByb3h5Ojp1bnJlZ2lzdGVyRGF0YWJhc2VD
b25uZWN0aW9uKElEQkRhdGFiYXNlJiBkYXRhYmFzZSkKIHsKLSAgICBMb2NrZXI8TG9jaz4gbG9j
a2VyKG1fZGF0YWJhc2VDb25uZWN0aW9uTWFwTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1f
ZGF0YWJhc2VDb25uZWN0aW9uTWFwTG9jayB9OwogCiAgICAgQVNTRVJUKCFtX2RhdGFiYXNlQ29u
bmVjdGlvbk1hcC5jb250YWlucyhkYXRhYmFzZS5kYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVy
KCkpIHx8IG1fZGF0YWJhc2VDb25uZWN0aW9uTWFwLmdldChkYXRhYmFzZS5kYXRhYmFzZUNvbm5l
Y3Rpb25JZGVudGlmaWVyKCkpID09ICZkYXRhYmFzZSk7CiAgICAgbV9kYXRhYmFzZUNvbm5lY3Rp
b25NYXAucmVtb3ZlKGRhdGFiYXNlLmRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIoKSk7CkBA
IC01NTUsNyArNTU1LDcgQEAgdm9pZCBJREJDb25uZWN0aW9uUHJveHk6OnVucmVnaXN0ZXJEYXRh
YmFzZUNvbm5lY3Rpb24oSURCRGF0YWJhc2UmIGRhdGFiYXNlKQogCiB2b2lkIElEQkNvbm5lY3Rp
b25Qcm94eTo6Zm9yZ2V0QWN0aXZlT3BlcmF0aW9ucyhjb25zdCBWZWN0b3I8UmVmUHRyPFRyYW5z
YWN0aW9uT3BlcmF0aW9uPj4mIG9wZXJhdGlvbnMpCiB7Ci0gICAgTG9ja2VyPExvY2s+IGxvY2tl
cihtX3RyYW5zYWN0aW9uT3BlcmF0aW9uTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fdHJh
bnNhY3Rpb25PcGVyYXRpb25Mb2NrIH07CiAKICAgICBmb3IgKGF1dG8mIG9wZXJhdGlvbiA6IG9w
ZXJhdGlvbnMpCiAgICAgICAgIG1fYWN0aXZlT3BlcmF0aW9ucy5yZW1vdmUob3BlcmF0aW9uLT5p
ZGVudGlmaWVyKCkpOwpAQCAtNTYzLDcgKzU2Myw3IEBAIHZvaWQgSURCQ29ubmVjdGlvblByb3h5
Ojpmb3JnZXRBY3RpdmVPcGVyYXRpb25zKGNvbnN0IFZlY3RvcjxSZWZQdHI8VHJhbnNhY3Rpb25P
CiAKIHZvaWQgSURCQ29ubmVjdGlvblByb3h5Ojpmb3JnZXRUcmFuc2FjdGlvbihJREJUcmFuc2Fj
dGlvbiYgdHJhbnNhY3Rpb24pCiB7Ci0gICAgTG9ja2VyPExvY2s+IGxvY2tlcihtX3RyYW5zYWN0
aW9uTWFwTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fdHJhbnNhY3Rpb25NYXBMb2NrIH07
CiAKICAgICBtX3BlbmRpbmdUcmFuc2FjdGlvbnMucmVtb3ZlKHRyYW5zYWN0aW9uLmluZm8oKS5p
ZGVudGlmaWVyKCkpOwogICAgIG1fY29tbWl0dGluZ1RyYW5zYWN0aW9ucy5yZW1vdmUodHJhbnNh
Y3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKSk7CkBAIC02MTIsMjUgKzYxMiwyNSBAQCB2b2lkIElE
QkNvbm5lY3Rpb25Qcm94eTo6Zm9yZ2V0QWN0aXZpdHlGb3JDdXJyZW50VGhyZWFkKCkKICAgICBB
U1NFUlQoIWlzTWFpblRocmVhZCgpKTsKIAogICAgIHsKLSAgICAgICAgTG9ja2VyPExvY2s+IGxv
Y2sobV9kYXRhYmFzZUNvbm5lY3Rpb25NYXBMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7
IG1fZGF0YWJhc2VDb25uZWN0aW9uTWFwTG9jayB9OwogICAgICAgICByZW1vdmVJdGVtc01hdGNo
aW5nQ3VycmVudFRocmVhZChtX2RhdGFiYXNlQ29ubmVjdGlvbk1hcCk7CiAgICAgfQogICAgIHsK
LSAgICAgICAgTG9ja2VyPExvY2s+IGxvY2sobV9vcGVuREJSZXF1ZXN0TWFwTG9jayk7CisgICAg
ICAgIExvY2tlciBsb2NrZXIgeyBtX29wZW5EQlJlcXVlc3RNYXBMb2NrIH07CiAgICAgICAgIHJl
bW92ZUl0ZW1zTWF0Y2hpbmdDdXJyZW50VGhyZWFkKG1fb3BlbkRCUmVxdWVzdE1hcCk7CiAgICAg
fQogICAgIHsKLSAgICAgICAgTG9ja2VyPExvY2s+IGxvY2sobV90cmFuc2FjdGlvbk1hcExvY2sp
OworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV90cmFuc2FjdGlvbk1hcExvY2sgfTsKICAgICAg
ICAgcmVtb3ZlSXRlbXNNYXRjaGluZ0N1cnJlbnRUaHJlYWQobV9wZW5kaW5nVHJhbnNhY3Rpb25z
KTsKICAgICAgICAgcmVtb3ZlSXRlbXNNYXRjaGluZ0N1cnJlbnRUaHJlYWQobV9jb21taXR0aW5n
VHJhbnNhY3Rpb25zKTsKICAgICAgICAgcmVtb3ZlSXRlbXNNYXRjaGluZ0N1cnJlbnRUaHJlYWQo
bV9hYm9ydGluZ1RyYW5zYWN0aW9ucyk7CiAgICAgfQogICAgIHsKLSAgICAgICAgTG9ja2VyPExv
Y2s+IGxvY2sobV90cmFuc2FjdGlvbk9wZXJhdGlvbkxvY2spOworICAgICAgICBMb2NrZXIgbG9j
a2VyIHsgbV90cmFuc2FjdGlvbk9wZXJhdGlvbkxvY2sgfTsKICAgICAgICAgcmVtb3ZlSXRlbXNN
YXRjaGluZ0N1cnJlbnRUaHJlYWQobV9hY3RpdmVPcGVyYXRpb25zKTsKICAgICB9CiAgICAgewot
ICAgICAgICBMb2NrZXI8TG9jaz4gbG9jayhtX2RhdGFiYXNlSW5mb01hcExvY2spOworICAgICAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9kYXRhYmFzZUluZm9NYXBMb2NrIH07CiAgICAgICAgIHJlbW92
ZUl0ZW1zTWF0Y2hpbmdDdXJyZW50VGhyZWFkKG1fZGF0YWJhc2VJbmZvQ2FsbGJhY2tzKTsKICAg
ICB9CiB9CkBAIC02MzgsMTEgKzYzOCwxMSBAQCB2b2lkIElEQkNvbm5lY3Rpb25Qcm94eTo6Zm9y
Z2V0QWN0aXZpdHlGb3JDdXJyZW50VGhyZWFkKCkKIHZvaWQgSURCQ29ubmVjdGlvblByb3h5Ojpz
ZXRDb250ZXh0U3VzcGVuZGVkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGN1cnJlbnRDb250ZXh0
LCBib29sIGlzQ29udGV4dFN1c3BlbmRlZCkKIHsKICAgICB7Ci0gICAgICAgIExvY2tlcjxMb2Nr
PiBsb2NrKG1fZGF0YWJhc2VDb25uZWN0aW9uTWFwTG9jayk7CisgICAgICAgIExvY2tlciBsb2Nr
ZXIgeyBtX2RhdGFiYXNlQ29ubmVjdGlvbk1hcExvY2sgfTsKICAgICAgICAgc2V0TWF0Y2hpbmdJ
dGVtc0NvbnRleHRTdXNwZW5kZWQoY3VycmVudENvbnRleHQsIG1fZGF0YWJhc2VDb25uZWN0aW9u
TWFwLCBpc0NvbnRleHRTdXNwZW5kZWQpOwogICAgIH0KICAgICB7Ci0gICAgICAgIExvY2tlcjxM
b2NrPiBsb2NrKG1fb3BlbkRCUmVxdWVzdE1hcExvY2spOworICAgICAgICBMb2NrZXIgbG9ja2Vy
IHsgbV9vcGVuREJSZXF1ZXN0TWFwTG9jayB9OwogICAgICAgICBzZXRNYXRjaGluZ0l0ZW1zQ29u
dGV4dFN1c3BlbmRlZChjdXJyZW50Q29udGV4dCwgbV9vcGVuREJSZXF1ZXN0TWFwLCBpc0NvbnRl
eHRTdXNwZW5kZWQpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uUHJveHkuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uUHJveHkuaAppbmRleCAwZWNm
NmRhY2E2ZjFkNGZmNzBjNzk0M2NiZTkxMGE0N2NiY2ZkOGY1Li44NjU4Y2ZkMmQ4YzlkYTEzN2E5
MmI0Yjg2MGIwZjE4NzRiYWMyNWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblByb3h5LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Qcm94eS5oCkBAIC0yOSw2
ICsyOSw3IEBACiAjaW5jbHVkZSAiSURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvblJlcXVlc3QuaCIK
ICNpbmNsdWRlICJJREJSZXNvdXJjZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJUcmFuc2FjdGlv
bk9wZXJhdGlvbi5oIgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkTG9jay5oPgogI2luY2x1ZGUgPHd0
Zi9Dcm9zc1RocmVhZFF1ZXVlLmg+CiAjaW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFkVGFzay5oPgog
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CkBAIC0xMjcsNyArMTI4LDcgQEAgcHVibGljOgogCiBw
cml2YXRlOgogICAgIHZvaWQgY29tcGxldGVPcGVuREJSZXF1ZXN0KGNvbnN0IElEQlJlc3VsdERh
dGEmKTsKLSAgICBib29sIGhhc1JlY29yZE9mVHJhbnNhY3Rpb24oY29uc3QgSURCVHJhbnNhY3Rp
b24mKSBjb25zdDsKKyAgICBib29sIGhhc1JlY29yZE9mVHJhbnNhY3Rpb24oY29uc3QgSURCVHJh
bnNhY3Rpb24mKSBjb25zdCBXVEZfUkVRVUlSRVNfTE9DSyhtX3RyYW5zYWN0aW9uTWFwTG9jayk7
CiAKICAgICB2b2lkIHNhdmVPcGVyYXRpb24oVHJhbnNhY3Rpb25PcGVyYXRpb24mKTsKIApAQCAt
MTU1LDI2ICsxNTYsMjMgQEAgcHJpdmF0ZToKICAgICBJREJDb25uZWN0aW9uVG9TZXJ2ZXImIG1f
Y29ubmVjdGlvblRvU2VydmVyOwogICAgIElEQkNvbm5lY3Rpb25JZGVudGlmaWVyIG1fc2VydmVy
Q29ubmVjdGlvbklkZW50aWZpZXI7CiAKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBJREJEYXRhYmFz
ZSo+IG1fZGF0YWJhc2VDb25uZWN0aW9uTWFwOwotICAgIExvY2sgbV9kYXRhYmFzZUNvbm5lY3Rp
b25NYXBMb2NrOwotCi0gICAgSGFzaE1hcDxJREJSZXNvdXJjZUlkZW50aWZpZXIsIFJlZlB0cjxJ
REJPcGVuREJSZXF1ZXN0Pj4gbV9vcGVuREJSZXF1ZXN0TWFwOwotICAgIExvY2sgbV9vcGVuREJS
ZXF1ZXN0TWFwTG9jazsKLQotICAgIEhhc2hNYXA8SURCUmVzb3VyY2VJZGVudGlmaWVyLCBSZWZQ
dHI8SURCVHJhbnNhY3Rpb24+PiBtX3BlbmRpbmdUcmFuc2FjdGlvbnM7Ci0gICAgSGFzaE1hcDxJ
REJSZXNvdXJjZUlkZW50aWZpZXIsIFJlZlB0cjxJREJUcmFuc2FjdGlvbj4+IG1fY29tbWl0dGlu
Z1RyYW5zYWN0aW9uczsKLSAgICBIYXNoTWFwPElEQlJlc291cmNlSWRlbnRpZmllciwgUmVmUHRy
PElEQlRyYW5zYWN0aW9uPj4gbV9hYm9ydGluZ1RyYW5zYWN0aW9uczsKLSAgICBMb2NrIG1fdHJh
bnNhY3Rpb25NYXBMb2NrOwotCi0gICAgSGFzaE1hcDxJREJSZXNvdXJjZUlkZW50aWZpZXIsIFJl
ZlB0cjxUcmFuc2FjdGlvbk9wZXJhdGlvbj4+IG1fYWN0aXZlT3BlcmF0aW9uczsKLSAgICBMb2Nr
IG1fdHJhbnNhY3Rpb25PcGVyYXRpb25Mb2NrOwotCi0gICAgSGFzaE1hcDxJREJSZXNvdXJjZUlk
ZW50aWZpZXIsIFJlZjxJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uUmVxdWVzdD4+IG1fZGF0YWJh
c2VJbmZvQ2FsbGJhY2tzOwotICAgIExvY2sgbV9kYXRhYmFzZUluZm9NYXBMb2NrOworICAgIENo
ZWNrZWRMb2NrIG1fZGF0YWJhc2VDb25uZWN0aW9uTWFwTG9jazsKKyAgICBDaGVja2VkTG9jayBt
X29wZW5EQlJlcXVlc3RNYXBMb2NrOworICAgIENoZWNrZWRMb2NrIG1fdHJhbnNhY3Rpb25NYXBM
b2NrOworICAgIENoZWNrZWRMb2NrIG1fdHJhbnNhY3Rpb25PcGVyYXRpb25Mb2NrOworICAgIENo
ZWNrZWRMb2NrIG1fZGF0YWJhc2VJbmZvTWFwTG9jazsKKyAgICBDaGVja2VkTG9jayBtX21haW5U
aHJlYWRUYXNrTG9jazsKKworICAgIEhhc2hNYXA8dWludDY0X3QsIElEQkRhdGFiYXNlKj4gbV9k
YXRhYmFzZUNvbm5lY3Rpb25NYXAgV1RGX0dVQVJERURfQllfTE9DSyhtX2RhdGFiYXNlQ29ubmVj
dGlvbk1hcExvY2spOworICAgIEhhc2hNYXA8SURCUmVzb3VyY2VJZGVudGlmaWVyLCBSZWZQdHI8
SURCT3BlbkRCUmVxdWVzdD4+IG1fb3BlbkRCUmVxdWVzdE1hcCBXVEZfR1VBUkRFRF9CWV9MT0NL
KG1fb3BlbkRCUmVxdWVzdE1hcExvY2spOworICAgIEhhc2hNYXA8SURCUmVzb3VyY2VJZGVudGlm
aWVyLCBSZWZQdHI8SURCVHJhbnNhY3Rpb24+PiBtX3BlbmRpbmdUcmFuc2FjdGlvbnMgV1RGX0dV
QVJERURfQllfTE9DSyhtX3RyYW5zYWN0aW9uTWFwTG9jayk7CisgICAgSGFzaE1hcDxJREJSZXNv
dXJjZUlkZW50aWZpZXIsIFJlZlB0cjxJREJUcmFuc2FjdGlvbj4+IG1fY29tbWl0dGluZ1RyYW5z
YWN0aW9ucyBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fdHJhbnNhY3Rpb25NYXBMb2NrKTsKKyAgICBI
YXNoTWFwPElEQlJlc291cmNlSWRlbnRpZmllciwgUmVmUHRyPElEQlRyYW5zYWN0aW9uPj4gbV9h
Ym9ydGluZ1RyYW5zYWN0aW9ucyBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fdHJhbnNhY3Rpb25NYXBM
b2NrKTsKKyAgICBIYXNoTWFwPElEQlJlc291cmNlSWRlbnRpZmllciwgUmVmUHRyPFRyYW5zYWN0
aW9uT3BlcmF0aW9uPj4gbV9hY3RpdmVPcGVyYXRpb25zIFdURl9HVUFSREVEX0JZX0xPQ0sobV90
cmFuc2FjdGlvbk9wZXJhdGlvbkxvY2spOworICAgIEhhc2hNYXA8SURCUmVzb3VyY2VJZGVudGlm
aWVyLCBSZWY8SURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvblJlcXVlc3Q+PiBtX2RhdGFiYXNlSW5m
b0NhbGxiYWNrcyBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fZGF0YWJhc2VJbmZvTWFwTG9jayk7CiAK
ICAgICBDcm9zc1RocmVhZFF1ZXVlPENyb3NzVGhyZWFkVGFzaz4gbV9tYWluVGhyZWFkUXVldWU7
Ci0gICAgTG9jayBtX21haW5UaHJlYWRUYXNrTG9jazsKLSAgICBSZWZQdHI8SURCQ29ubmVjdGlv
blRvU2VydmVyPiBtX21haW5UaHJlYWRQcm90ZWN0b3I7CisgICAgUmVmUHRyPElEQkNvbm5lY3Rp
b25Ub1NlcnZlcj4gbV9tYWluVGhyZWFkUHJvdGVjdG9yIFdURl9HVUFSREVEX0JZX0xPQ0sobV9t
YWluVGhyZWFkVGFza0xvY2spOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSURCQ2xpZW50CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRy
YW5zZm9ybWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRw
U0ZyYW1lVHJhbnNmb3JtZXIuY3BwCmluZGV4IGQxZjFhN2FjNjI2MzJmMjE0ZDZiNmM0YzEyZjBk
YTY1NjhmMGYwMGMuLmY2OWYxODk1OGExMDQyNGZhZGNhOWVhNmZkNjYzNjY1MmFlOGQyNjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1l
VHJhbnNmb3JtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIuY3BwCkBAIC0xNTYsNyArMTU2LDcgQEAgUlRDUnRwU0Zy
YW1lVHJhbnNmb3JtZXI6On5SVENSdHBTRnJhbWVUcmFuc2Zvcm1lcigpCiAKIEV4Y2VwdGlvbk9y
PHZvaWQ+IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpzZXRFbmNyeXB0aW9uS2V5KGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYgcmF3S2V5LCBPcHRpb25hbDx1aW50NjRfdD4ga2V5SWQpCiB7Ci0gICAg
YXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2tleUxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBt
X2tleUxvY2sgfTsKICAgICByZXR1cm4gdXBkYXRlRW5jcnlwdGlvbktleShyYXdLZXksIGtleUlk
LCBTaG91bGRVcGRhdGVLZXlzOjpZZXMpOwogfQogCkBAIC0yMjQsNyArMjI0LDcgQEAgRXhjZXB0
aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6ZGVjcnlwdEZy
YW1lKGNvbnN0IHVpbnQ4X3QKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgYXV0byBsb2Nr
ZXIgPSBob2xkTG9jayhtX2tleUxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2tleUxvY2sg
fTsKIAogICAgIGF1dG8gaGVhZGVyID0gcGFyc2VTRnJhbWVIZWFkZXIoZnJhbWVEYXRhLCBmcmFt
ZVNpemUpOwogCkBAIC0yODYsNyArMjg2LDcgQEAgRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+
PiBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6ZW5jcnlwdEZyYW1lKGNvbnN0IHVpbnQ4X3QKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2tleUxv
Y2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2tleUxvY2sgfTsKIAogICAgIGF1dG8gaXYgPSBj
b21wdXRlSVYobV9jb3VudGVyLCBtX3NhbHRLZXkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmgK
aW5kZXggMTQ5OTk0MGQwNWEyMTNkMjM5OThkZTNiNmNlMzRmMTQ5OWI0MDEyMS4uY2M0ZTk0ZTdj
NDJkM2ZhZjEyZjFjYjRjNThmZjBmNDhiOGFlMTU4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIu
aApAQCAtMjksNyArMjksNyBAQAogCiAjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKICNpbmNsdWRl
ICJSVENSdHBUcmFuc2Zvcm1CYWNrZW5kLmgiCi0jaW5jbHVkZSA8d3RmL0xvY2suaD4KKyNpbmNs
dWRlIDx3dGYvQ2hlY2tlZExvY2suaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50
ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNjUsNyArNjUsNyBAQCBwcml2YXRlOgog
ICAgIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gZW5jcnlwdEZyYW1lKGNvbnN0IHVpbnQ4
X3QqLCBzaXplX3QpOwogCiAgICAgZW51bSBjbGFzcyBTaG91bGRVcGRhdGVLZXlzIHsgTm8sIFll
cyB9OwotICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHVwZGF0ZUVuY3J5cHRpb25LZXkoY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiByYXdLZXksIE9wdGlvbmFsPHVpbnQ2NF90PiwgU2hvdWxkVXBkYXRlS2V5
cyA9IFNob3VsZFVwZGF0ZUtleXM6Olllcyk7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gdXBkYXRl
RW5jcnlwdGlvbktleShjb25zdCBWZWN0b3I8dWludDhfdD4mIHJhd0tleSwgT3B0aW9uYWw8dWlu
dDY0X3Q+LCBTaG91bGRVcGRhdGVLZXlzID0gU2hvdWxkVXBkYXRlS2V5czo6WWVzKSBXVEZfUkVR
VUlSRVNfTE9DSyhtX2tleUxvY2spOwogCiAgICAgRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+
PiBjb21wdXRlU2FsdEtleShjb25zdCBWZWN0b3I8dWludDhfdD4mKTsKICAgICBFeGNlcHRpb25P
cjxWZWN0b3I8dWludDhfdD4+IGNvbXB1dGVBdXRoZW50aWNhdGlvbktleShjb25zdCBWZWN0b3I8
dWludDhfdD4mKTsKQEAgLTc2LDcgKzc2LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8dWludDhf
dD4gY29tcHV0ZUVuY3J5cHRlZERhdGFTaWduYXR1cmUoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBu
b25jZSwgY29uc3QgdWludDhfdCogaGVhZGVyLCBzaXplX3QgaGVhZGVyU2l6ZSwgY29uc3QgdWlu
dDhfdCogZGF0YSwgc2l6ZV90IGRhdGFTaXplLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSk7
CiAgICAgdm9pZCB1cGRhdGVBdXRoZW50aWNhdGlvblNpemUoKTsKIAotICAgIExvY2sgbV9rZXlM
b2NrOworICAgIENoZWNrZWRMb2NrIG1fa2V5TG9jazsKICAgICBib29sIG1faGFzS2V5IHsgZmFs
c2UgfTsKICAgICBWZWN0b3I8dWludDhfdD4gbV9hdXRoZW50aWNhdGlvbktleTsKICAgICBWZWN0
b3I8dWludDhfdD4gbV9lbmNyeXB0aW9uS2V5OwpAQCAtODYsNyArODYsNyBAQCBwcml2YXRlOgog
ICAgICAgICB1aW50NjRfdCBrZXlJZCB7IDAgfTsKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGtl
eURhdGE7CiAgICAgfTsKLSAgICBWZWN0b3I8SWRlbnRpZmllZEtleT4gbV9rZXlzOworICAgIFZl
Y3RvcjxJZGVudGlmaWVkS2V5PiBtX2tleXMgV1RGX0dVQVJERURfQllfTE9DSyhtX2tleUxvY2sp
OwogCiAgICAgYm9vbCBtX2lzRW5jcnlwdGluZyB7IGZhbHNlIH07CiAgICAgdWludDY0X3QgbV9h
dXRoZW50aWNhdGlvblNpemUgeyAxMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm0uY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm0uY3BwCmluZGV4IDhm
Zjk4OGE0MmMyZDA3MTc2NDcxZTNkNjYzODkxNjVkNGJmMjQ5MmEuLjE2NTI3YmIzY2Q3MWM3NDJl
NWRkZTIyNTBiNGFkYjQ0MTVhNGE0NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNjcmlwdFRyYW5zZm9ybS5jcHAKQEAgLTgz
LDcgKzgzLDcgQEAgdm9pZCBSVENSdHBTY3JpcHRUcmFuc2Zvcm06OnNldFRyYW5zZm9ybWVyKFJU
Q1J0cFNjcmlwdFRyYW5zZm9ybWVyJiB0cmFuc2Zvcm1lcikKIHsKICAgICBBU1NFUlQoIWlzTWFp
blRocmVhZCgpKTsKICAgICB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV90cmFu
c2Zvcm1lckxvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV90cmFuc2Zvcm1lckxvY2sg
fTsKICAgICAgICAgQVNTRVJUKCFtX2lzVHJhbnNmb3JtZXJJbml0aWFsaXplZCk7CiAgICAgICAg
IG1faXNUcmFuc2Zvcm1lckluaXRpYWxpemVkID0gdHJ1ZTsKICAgICAgICAgbV90cmFuc2Zvcm1l
ciA9IG1ha2VXZWFrUHRyKHRyYW5zZm9ybWVyKTsKQEAgLTExOSw3ICsxMTksNyBAQCB2b2lkIFJU
Q1J0cFNjcmlwdFRyYW5zZm9ybTo6aW5pdGlhbGl6ZVRyYW5zZm9ybWVyKFJUQ1J0cFRyYW5zZm9y
bUJhY2tlbmQmIGJhY2tlbgogCiBib29sIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybTo6c2V0dXBUcmFu
c2Zvcm1lcihSZWY8UlRDUnRwVHJhbnNmb3JtQmFja2VuZD4mJiBiYWNrZW5kKQogewotICAgIGF1
dG8gbG9ja2VyID0gaG9sZExvY2sobV90cmFuc2Zvcm1lckxvY2spOworICAgIExvY2tlciBsb2Nr
ZXIgeyBtX3RyYW5zZm9ybWVyTG9jayB9OwogICAgIGlmICghbV9pc1RyYW5zZm9ybWVySW5pdGlh
bGl6ZWQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMTM0LDcgKzEzNCw3IEBAIHZvaWQg
UlRDUnRwU2NyaXB0VHJhbnNmb3JtOjpjbGVhcihSVENSdHBTY3JpcHRUcmFuc2Zvcm1lcjo6Q2xl
YXJDYWxsYmFjayBjbGVhckNhCiB7CiAgICAgbV9pc0F0dGFjaGVkID0gZmFsc2U7CiAKLSAgICBh
dXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fdHJhbnNmb3JtZXJMb2NrKTsKKyAgICBMb2NrZXIgbG9j
a2VyIHsgbV90cmFuc2Zvcm1lckxvY2sgfTsKICAgICBtX2lzVHJhbnNmb3JtZXJJbml0aWFsaXpl
ZCA9IGZhbHNlOwogICAgIG1fd29ya2VyLT5wb3N0VGFza1RvV29ya2VyR2xvYmFsU2NvcGUoW3Ry
YW5zZm9ybWVyID0gV1RGTW92ZShtX3RyYW5zZm9ybWVyKSwgY2xlYXJDYWxsYmFja10oYXV0byYp
IG11dGFibGUgewogICAgICAgICBpZiAodHJhbnNmb3JtZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNjcmlwdFRyYW5zZm9ybS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm0uaApp
bmRleCBiMjc3YTczNzllMGRiNDQwZTMyMGY4MTU5MzJhODVjYjRlZTI3ZDY2Li5jYjg3MzNkYjJh
ZDA4ODM1NDlkMjkxNGNiMTY2NzMzMTJiYjcyYTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNjcmlwdFRyYW5zZm9ybS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtLmgKQEAg
LTMzLDcgKzMzLDcgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NKU1ZhbHVlLmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNPYmplY3QuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9TdHJvbmcuaD4KLSNpbmNsdWRlIDx3dGYvTG9jay5oPgorI2luY2x1ZGUgPHd0Zi9DaGVj
a2VkTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkBAIC04Myw5ICs4Myw5IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lz
QXR0YWNoZWQgeyBmYWxzZSB9OwogICAgIFJlZlB0cjxSVENSdHBUcmFuc2Zvcm1CYWNrZW5kPiBt
X2JhY2tlbmQ7CiAKLSAgICBMb2NrIG1fdHJhbnNmb3JtZXJMb2NrOwotICAgIGJvb2wgbV9pc1Ry
YW5zZm9ybWVySW5pdGlhbGl6ZWQgeyBmYWxzZSB9OwotICAgIFdlYWtQdHI8UlRDUnRwU2NyaXB0
VHJhbnNmb3JtZXI+IG1fdHJhbnNmb3JtZXI7CisgICAgQ2hlY2tlZExvY2sgbV90cmFuc2Zvcm1l
ckxvY2s7CisgICAgYm9vbCBtX2lzVHJhbnNmb3JtZXJJbml0aWFsaXplZCBXVEZfR1VBUkRFRF9C
WV9MT0NLKG1fdHJhbnNmb3JtZXJMb2NrKSB7IGZhbHNlIH07CisgICAgV2Vha1B0cjxSVENSdHBT
Y3JpcHRUcmFuc2Zvcm1lcj4gbV90cmFuc2Zvcm1lciBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fdHJh
bnNmb3JtZXJMb2NrKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0Rh
dGFDaGFubmVsSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCmluZGV4IDJmM2QwOWU3
YzkxNGUxYmYxYTRlMGY5NDg4MTEyYTc2ZDY1OGJlYjAuLmM3NGU0YzA5ZjlmMDRiZjAyOTFjYTEz
ZWMxMDY4NzZhNWMxMzk2ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0
YUNoYW5uZWxIYW5kbGVyLmNwcApAQCAtODgsMTggKzg4LDE4IEBAIExpYldlYlJUQ0RhdGFDaGFu
bmVsSGFuZGxlcjo6fkxpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcigpCiB2b2lkIExpYldlYlJU
Q0RhdGFDaGFubmVsSGFuZGxlcjo6c2V0Q2xpZW50KFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVu
dCYgY2xpZW50LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWRlbnRp
ZmllcikKIHsKICAgICB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9jbGllbnRM
b2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fY2xpZW50TG9jayB9OwogICAgICAgICBB
U1NFUlQoIW1fY2xpZW50KTsKICAgICAgICAgbV9jbGllbnQgPSAmY2xpZW50OwogICAgICAgICBt
X2NvbnRleHRJZGVudGlmaWVyID0gY29udGV4dElkZW50aWZpZXI7CiAKICAgICAgICAgZm9yIChh
dXRvJiBtZXNzYWdlIDogbV9idWZmZXJlZE1lc3NhZ2VzKSB7Ci0gICAgICAgICAgICBzd2l0Y2hP
bihtZXNzYWdlLCBbdGhpc10oUmVmPFNoYXJlZEJ1ZmZlcj4mIGRhdGEpIHsKLSAgICAgICAgICAg
ICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZVJhd0RhdGEoZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXpl
KCkpOwotICAgICAgICAgICAgfSwgW3RoaXNdKFN0cmluZyYgdGV4dCkgewotICAgICAgICAgICAg
ICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlU3RyaW5nRGF0YSh0ZXh0KTsKLSAgICAgICAgICAgIH0s
IFt0aGlzXShSVENEYXRhQ2hhbm5lbFN0YXRlIHN0YXRlKSB7Ci0gICAgICAgICAgICAgICAgbV9j
bGllbnQtPmRpZENoYW5nZVJlYWR5U3RhdGUoc3RhdGUpOworICAgICAgICAgICAgc3dpdGNoT24o
bWVzc2FnZSwgWyZdKFJlZjxTaGFyZWRCdWZmZXI+JiBkYXRhKSB7CisgICAgICAgICAgICAgICAg
Y2xpZW50LmRpZFJlY2VpdmVSYXdEYXRhKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAg
ICAgICAgICAgIH0sIFsmXShTdHJpbmcmIHRleHQpIHsKKyAgICAgICAgICAgICAgICBjbGllbnQu
ZGlkUmVjZWl2ZVN0cmluZ0RhdGEodGV4dCk7CisgICAgICAgICAgICB9LCBbJl0oUlRDRGF0YUNo
YW5uZWxTdGF0ZSBzdGF0ZSkgeworICAgICAgICAgICAgICAgIGNsaWVudC5kaWRDaGFuZ2VSZWFk
eVN0YXRlKHN0YXRlKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9CiAgICAgICAgIG1fYnVm
ZmVyZWRNZXNzYWdlcy5jbGVhcigpOwpAQCAtMTQ1LDcgKzE0NSw3IEBAIHZvaWQgTGliV2ViUlRD
RGF0YUNoYW5uZWxIYW5kbGVyOjpjaGVja1N0YXRlKCkKICAgICAgICAgYnJlYWs7CiAgICAgfQog
Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2NsaWVudExvY2spOworICAgIExvY2tlciBs
b2NrZXIgeyBtX2NsaWVudExvY2sgfTsKICAgICBpZiAoIW1fY2xpZW50KSB7CiAgICAgICAgIG1f
YnVmZmVyZWRNZXNzYWdlcy5hcHBlbmQoc3RhdGUpOwogICAgICAgICByZXR1cm47CkBAIC0xNTcs
NyArMTU3LDcgQEAgdm9pZCBMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OmNoZWNrU3RhdGUo
KQogCiB2b2lkIExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6T25NZXNzYWdlKGNvbnN0IHdl
YnJ0Yzo6RGF0YUJ1ZmZlciYgYnVmZmVyKQogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2so
bV9jbGllbnRMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9jbGllbnRMb2NrIH07CiAgICAg
aWYgKCFtX2NsaWVudCkgewogICAgICAgICBjb25zdCBjaGFyKiBkYXRhID0gcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBjaGFyKj4oYnVmZmVyLmRhdGEuZGF0YTxjaGFyPigpKTsKICAgICAgICAgaWYg
KGJ1ZmZlci5iaW5hcnkpCkBAIC0xNzksNyArMTc5LDcgQEAgdm9pZCBMaWJXZWJSVENEYXRhQ2hh
bm5lbEhhbmRsZXI6Ok9uTWVzc2FnZShjb25zdCB3ZWJydGM6OkRhdGFCdWZmZXImIGJ1ZmZlcikK
IAogdm9pZCBMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6Ok9uQnVmZmVyZWRBbW91bnRDaGFu
Z2UodWludDY0X3QgYW1vdW50KQogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9jbGll
bnRMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9jbGllbnRMb2NrIH07CiAgICAgaWYgKCFt
X2NsaWVudCkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJU
Q0RhdGFDaGFubmVsSGFuZGxlci5oCmluZGV4IDU1OTdhYmY0ZTdkYTI2MTA1YTBjNTFkYzY3ZTkw
ZWMxNjFjMDYzOTAuLjNkYTc5OGRiZDQ4NTFmZDVmNjNmYzQ3M2RiYmUzYzExYTM1ZTljOGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xp
YldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5oCkBAIC0z
MCw3ICszMCw3IEBACiAjaW5jbHVkZSAiUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmgiCiAjaW5jbHVk
ZSAiUlRDRGF0YUNoYW5uZWxTdGF0ZS5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgotI2lu
Y2x1ZGUgPHd0Zi9Mb2NrLmg+CisjaW5jbHVkZSA8d3RmL0NoZWNrZWRMb2NrLmg+CiAKIEFMTE9X
X1VOVVNFRF9QQVJBTUVURVJTX0JFR0lOCiAKQEAgLTgyLDggKzgyLDggQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHBvc3RUYXNrKEZ1bmN0aW9uPHZvaWQoKT4mJik7CiAKICAgICBydGM6OnNjb3BlZF9y
ZWZwdHI8d2VicnRjOjpEYXRhQ2hhbm5lbEludGVyZmFjZT4gbV9jaGFubmVsOwotICAgIExvY2sg
bV9jbGllbnRMb2NrOwotICAgIFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCogbV9jbGllbnQg
eyBudWxscHRyIH07CisgICAgQ2hlY2tlZExvY2sgbV9jbGllbnRMb2NrOworICAgIFJUQ0RhdGFD
aGFubmVsSGFuZGxlckNsaWVudCogbV9jbGllbnQgV1RGX0dVQVJERURfQllfTE9DSyhtX2NsaWVu
dExvY2spIHsgbnVsbHB0ciB9OwogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVy
IG1fY29udGV4dElkZW50aWZpZXI7CiAgICAgUGVuZGluZ01lc3NhZ2VzIG1fYnVmZmVyZWRNZXNz
YWdlczsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBUcmFuc2Zvcm1CYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFRyYW5zZm9ybUJh
Y2tlbmQuY3BwCmluZGV4IGJiZDYwNDkzMTNkZWMyNDYzZDY5YTcyNjg4NzQzYTdiYTExM2JmMjYu
LjdjMmE5ZmJhM2I0NjU2ZWI4ZDBkYjAxZjc5OTEzMTgyNWIzOWE1ZWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFRy
YW5zZm9ybUJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQuY3BwCkBAIC0zMyw3ICsz
Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBMaWJXZWJSVENSdHBUcmFuc2Zvcm1C
YWNrZW5kOjpzZXRJbnB1dENhbGxiYWNrKENhbGxiYWNrJiYgY2FsbGJhY2spCiB7Ci0gICAgYXV0
byBsb2NrZXIgPSBob2xkTG9jayhtX2lucHV0Q2FsbGJhY2tMb2NrKTsKKyAgICBMb2NrZXIgbG9j
a2VyIHsgbV9pbnB1dENhbGxiYWNrTG9jayB9OwogICAgIG1faW5wdXRDYWxsYmFjayA9IFdURk1v
dmUoY2FsbGJhY2spOwogfQogCkBAIC00NCw3ICs0NCw3IEBAIHZvaWQgTGliV2ViUlRDUnRwVHJh
bnNmb3JtQmFja2VuZDo6Y2xlYXJUcmFuc2Zvcm1hYmxlRnJhbWVDYWxsYmFjaygpCiAKIHZvaWQg
TGliV2ViUlRDUnRwVHJhbnNmb3JtQmFja2VuZDo6c2V0T3V0cHV0Q2FsbGJhY2socnRjOjpzY29w
ZWRfcmVmcHRyPHdlYnJ0Yzo6VHJhbnNmb3JtZWRGcmFtZUNhbGxiYWNrPiYmIGNhbGxiYWNrKQog
ewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9vdXRwdXRDYWxsYmFja0xvY2spOworICAg
IExvY2tlciBsb2NrZXIgeyBtX291dHB1dENhbGxiYWNrTG9jayB9OwogICAgIG1fb3V0cHV0Q2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKTsKIH0KIApAQCAtNTMsNyArNTMsNyBAQCB2b2lkIExp
YldlYlJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQ6OnByb2Nlc3NUcmFuc2Zvcm1lZEZyYW1lKFJUQ1J0
cFRyYW5zZm9ybWFibGVGcgogICAgIGF1dG8gcnRjRnJhbWUgPSBzdGF0aWNfY2FzdDxMaWJXZWJS
VENSdHBUcmFuc2Zvcm1hYmxlRnJhbWUmPihmcmFtZSkudGFrZVJUQ0ZyYW1lKCk7CiAgICAgaWYg
KCFydGNGcmFtZSkKICAgICAgICAgcmV0dXJuOwotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2so
bV9vdXRwdXRDYWxsYmFja0xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX291dHB1dENhbGxi
YWNrTG9jayB9OwogICAgIGlmIChtX291dHB1dENhbGxiYWNrKQogICAgICAgICBtX291dHB1dENh
bGxiYWNrLT5PblRyYW5zZm9ybWVkRnJhbWUoV1RGTW92ZShydGNGcmFtZSkpOwogfQpAQCAtNjEs
MTQgKzYxLDE0IEBAIHZvaWQgTGliV2ViUlRDUnRwVHJhbnNmb3JtQmFja2VuZDo6cHJvY2Vzc1Ry
YW5zZm9ybWVkRnJhbWUoUlRDUnRwVHJhbnNmb3JtYWJsZUZyCiB2b2lkIExpYldlYlJUQ1J0cFRy
YW5zZm9ybUJhY2tlbmQ6OlRyYW5zZm9ybShzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpUcmFuc2Zv
cm1hYmxlRnJhbWVJbnRlcmZhY2U+IHJ0Y0ZyYW1lKQogewogICAgIHsKLSAgICAgICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhtX2lucHV0Q2FsbGJhY2tMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxv
Y2tlciB7IG1faW5wdXRDYWxsYmFja0xvY2sgfTsKICAgICAgICAgaWYgKG1faW5wdXRDYWxsYmFj
aykgewogICAgICAgICAgICAgbV9pbnB1dENhbGxiYWNrKExpYldlYlJUQ1J0cFRyYW5zZm9ybWFi
bGVGcmFtZTo6Y3JlYXRlKFdURk1vdmUocnRjRnJhbWUpLCBtX21lZGlhVHlwZSA9PSBNZWRpYVR5
cGU6OkF1ZGlvICYmIG1fc2lkZSA9PSBTaWRlOjpTZW5kZXIpKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogICAgIH0KICAgICAvLyBJbiBjYXNlIG9mIG5vIGlucHV0IGNhbGxiYWNr
LCBtYWtlIHRoZSB0cmFuc2Zvcm0gYSBuby1vcC4KLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2Nr
KG1fb3V0cHV0Q2FsbGJhY2tMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9vdXRwdXRDYWxs
YmFja0xvY2sgfTsKICAgICBpZiAobV9vdXRwdXRDYWxsYmFjaykKICAgICAgICAgbV9vdXRwdXRD
YWxsYmFjay0+T25UcmFuc2Zvcm1lZEZyYW1lKFdURk1vdmUocnRjRnJhbWUpKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldl
YlJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQuaAppbmRleCA3YmIw
ODU1YTM1M2JmODAzY2VjYmQ0OTczNGUxMDIwOWZhOWZmYzRkLi4wMzRhNzc4ZTY0OGE3ZTg1ZGZk
YmQ0MGI2ZmE2NGFlYTA2ZjZjOTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBUcmFuc2Zvcm1CYWNrZW5kLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRD
UnRwVHJhbnNmb3JtQmFja2VuZC5oCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSAiTGliV2Vi
UlRDTWFjcm9zLmgiCiAjaW5jbHVkZSAiUlRDUnRwVHJhbnNmb3JtQmFja2VuZC5oIgogI2luY2x1
ZGUgPHdlYnJ0Yy9hcGkvc2NvcGVkX3JlZnB0ci5oPgotI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+Cisj
aW5jbHVkZSA8d3RmL0NoZWNrZWRMb2NrLmg+CiAKIEFMTE9XX1VOVVNFRF9QQVJBTUVURVJTX0JF
R0lOCiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgpAQCAtNjksMTEgKzY5LDEx
IEBAIHByaXZhdGU6CiAgICAgTWVkaWFUeXBlIG1fbWVkaWFUeXBlOwogICAgIFNpZGUgbV9zaWRl
OwogCi0gICAgTG9jayBtX2lucHV0Q2FsbGJhY2tMb2NrOwotICAgIENhbGxiYWNrIG1faW5wdXRD
YWxsYmFjazsKKyAgICBDaGVja2VkTG9jayBtX2lucHV0Q2FsbGJhY2tMb2NrOworICAgIENhbGxi
YWNrIG1faW5wdXRDYWxsYmFjayBXVEZfR1VBUkRFRF9CWV9MT0NLKG1faW5wdXRDYWxsYmFja0xv
Y2spOwogCi0gICAgTG9jayBtX291dHB1dENhbGxiYWNrTG9jazsKLSAgICBydGM6OnNjb3BlZF9y
ZWZwdHI8d2VicnRjOjpUcmFuc2Zvcm1lZEZyYW1lQ2FsbGJhY2s+IG1fb3V0cHV0Q2FsbGJhY2s7
CisgICAgQ2hlY2tlZExvY2sgbV9vdXRwdXRDYWxsYmFja0xvY2s7CisgICAgcnRjOjpzY29wZWRf
cmVmcHRyPHdlYnJ0Yzo6VHJhbnNmb3JtZWRGcmFtZUNhbGxiYWNrPiBtX291dHB1dENhbGxiYWNr
IFdURl9HVUFSREVEX0JZX0xPQ0sobV9vdXRwdXRDYWxsYmFja0xvY2spOwogfTsKIAogaW5saW5l
IExpYldlYlJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQ6OkxpYldlYlJUQ1J0cFRyYW5zZm9ybUJhY2tl
bmQoTWVkaWFUeXBlIG1lZGlhVHlwZSwgU2lkZSBzaWRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9XZWJIZWFwQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9XZWJIZWFwQWdlbnQuY3BwCmluZGV4IDkyNzVlOGY3OWQwMGZlMWEx
MTgyMWVkOGE4NjljMGUxN2I0MDgwMjIuLmM3MmQzN2I5MDg5NTFmMmFhOTkzNzA2ZDYxNDQ0MDg2
MDBkYmFlNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvV2Vi
SGVhcEFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL1dlYkhl
YXBBZ2VudC5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdB
Z2VudHMuaCIKICNpbmNsdWRlICJXZWJDb25zb2xlQWdlbnQuaCIKKyNpbmNsdWRlIDx3dGYvQ2hl
Y2tlZExvY2suaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC01MCw5ICs1MSw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCB0aW1lckZpcmVkKCk7CiAK
ICAgICBXZWJIZWFwQWdlbnQmIG1fYWdlbnQ7Ci0gICAgVmVjdG9yPEdhcmJhZ2VDb2xsZWN0aW9u
RGF0YT4gbV9jb2xsZWN0aW9uczsKKyAgICBDaGVja2VkTG9jayBtX2NvbGxlY3Rpb25zTG9jazsK
KyAgICBWZWN0b3I8R2FyYmFnZUNvbGxlY3Rpb25EYXRhPiBtX2NvbGxlY3Rpb25zIFdURl9HVUFS
REVEX0JZX0xPQ0sobV9jb2xsZWN0aW9uc0xvY2spOwogICAgIFJ1bkxvb3A6OlRpbWVyPFNlbmRH
YXJiYWdlQ29sbGVjdGlvbkV2ZW50c1Rhc2s+IG1fdGltZXI7Ci0gICAgTG9jayBtX211dGV4Owog
fTsKIAogU2VuZEdhcmJhZ2VDb2xsZWN0aW9uRXZlbnRzVGFzazo6U2VuZEdhcmJhZ2VDb2xsZWN0
aW9uRXZlbnRzVGFzayhXZWJIZWFwQWdlbnQmIGFnZW50KQpAQCAtNjQsNyArNjUsNyBAQCBTZW5k
R2FyYmFnZUNvbGxlY3Rpb25FdmVudHNUYXNrOjpTZW5kR2FyYmFnZUNvbGxlY3Rpb25FdmVudHNU
YXNrKFdlYkhlYXBBZ2VudCYgYQogdm9pZCBTZW5kR2FyYmFnZUNvbGxlY3Rpb25FdmVudHNUYXNr
OjphZGRHYXJiYWdlQ29sbGVjdGlvbihHYXJiYWdlQ29sbGVjdGlvbkRhdGEmJiBjb2xsZWN0aW9u
KQogewogICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX211dGV4KTsKKyAg
ICAgICAgTG9ja2VyIGxvY2tlciB7IG1fY29sbGVjdGlvbnNMb2NrIH07CiAgICAgICAgIG1fY29s
bGVjdGlvbnMuYXBwZW5kKFdURk1vdmUoY29sbGVjdGlvbikpOwogICAgIH0KIApAQCAtNzUsNyAr
NzYsNyBAQCB2b2lkIFNlbmRHYXJiYWdlQ29sbGVjdGlvbkV2ZW50c1Rhc2s6OmFkZEdhcmJhZ2VD
b2xsZWN0aW9uKEdhcmJhZ2VDb2xsZWN0aW9uRGF0YQogdm9pZCBTZW5kR2FyYmFnZUNvbGxlY3Rp
b25FdmVudHNUYXNrOjpyZXNldCgpCiB7CiAgICAgewotICAgICAgICBhdXRvIGxvY2tlciA9IGhv
bGRMb2NrKG1fbXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9jb2xsZWN0aW9uc0xv
Y2sgfTsKICAgICAgICAgbV9jb2xsZWN0aW9ucy5jbGVhcigpOwogICAgIH0KIApAQCAtODcsNyAr
ODgsNyBAQCB2b2lkIFNlbmRHYXJiYWdlQ29sbGVjdGlvbkV2ZW50c1Rhc2s6OnRpbWVyRmlyZWQo
KQogICAgIFZlY3RvcjxHYXJiYWdlQ29sbGVjdGlvbkRhdGE+IGNvbGxlY3Rpb25zVG9TZW5kOwog
CiAgICAgewotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbXV0ZXgpOworICAgICAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9jb2xsZWN0aW9uc0xvY2sgfTsKICAgICAgICAgbV9jb2xsZWN0
aW9ucy5zd2FwKGNvbGxlY3Rpb25zVG9TZW5kKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUmVzb3VyY2VVc2FnZVRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1Jlc291cmNlVXNhZ2VUaHJlYWQuY3BwCmluZGV4IDAyMmQ2NGI0ZGE0OTk0N2Y3ZTQwOWQ4
MmIzMjBiZTM3NTFkN2QwNjMuLmRiYjVkY2JiYWM1Y2U1NDg1NmQzZTU2MDc1MTQ1MThkMDgyNTZj
N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVzb3VyY2VVc2FnZVRocmVhZC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZXNvdXJjZVVzYWdlVGhyZWFkLmNwcApAQCAt
NTIsNyArNTIsNyBAQCB2b2lkIFJlc291cmNlVXNhZ2VUaHJlYWQ6OmFkZE9ic2VydmVyKHZvaWQq
IGtleSwgUmVzb3VyY2VVc2FnZUNvbGxlY3Rpb25Nb2RlIG1vZAogICAgIHJlc291cmNlVXNhZ2VU
aHJlYWQuY3JlYXRlVGhyZWFkSWZOZWVkZWQoKTsKIAogICAgIHsKLSAgICAgICAgTG9ja0hvbGRl
ciBsb2NrZXIocmVzb3VyY2VVc2FnZVRocmVhZC5tX2xvY2spOworICAgICAgICBMb2NrZXIgbG9j
a2VyIHsgcmVzb3VyY2VVc2FnZVRocmVhZC5tX29ic2VydmVyc0xvY2sgfTsKICAgICAgICAgYm9v
bCB3YXNFbXB0eSA9IHJlc291cmNlVXNhZ2VUaHJlYWQubV9vYnNlcnZlcnMuaXNFbXB0eSgpOwog
ICAgICAgICByZXNvdXJjZVVzYWdlVGhyZWFkLm1fb2JzZXJ2ZXJzLnNldChrZXksIHN0ZDo6bWFr
ZV9wYWlyKG1vZGUsIGZ1bmN0aW9uKSk7CiAKQEAgLTcwLDcgKzcwLDcgQEAgdm9pZCBSZXNvdXJj
ZVVzYWdlVGhyZWFkOjpyZW1vdmVPYnNlcnZlcih2b2lkKiBrZXkpCiAgICAgYXV0byYgcmVzb3Vy
Y2VVc2FnZVRocmVhZCA9IFJlc291cmNlVXNhZ2VUaHJlYWQ6OnNpbmdsZXRvbigpOwogCiAgICAg
ewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihyZXNvdXJjZVVzYWdlVGhyZWFkLm1fbG9jayk7
CisgICAgICAgIExvY2tlciBsb2NrZXIgeyByZXNvdXJjZVVzYWdlVGhyZWFkLm1fb2JzZXJ2ZXJz
TG9jayB9OwogICAgICAgICByZXNvdXJjZVVzYWdlVGhyZWFkLm1fb2JzZXJ2ZXJzLnJlbW92ZShr
ZXkpOwogCiAgICAgICAgIHJlc291cmNlVXNhZ2VUaHJlYWQucmVjb21wdXRlQ29sbGVjdGlvbk1v
ZGUoKTsKQEAgLTc5LDkgKzc5LDkgQEAgdm9pZCBSZXNvdXJjZVVzYWdlVGhyZWFkOjpyZW1vdmVP
YnNlcnZlcih2b2lkKiBrZXkpCiAKIHZvaWQgUmVzb3VyY2VVc2FnZVRocmVhZDo6d2FpdFVudGls
T2JzZXJ2ZXJzKCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworICAgIExvY2tl
ciBsb2NrZXIgeyBtX29ic2VydmVyc0xvY2sgfTsKICAgICB3aGlsZSAobV9vYnNlcnZlcnMuaXNF
bXB0eSgpKSB7Ci0gICAgICAgIG1fY29uZGl0aW9uLndhaXQobV9sb2NrKTsKKyAgICAgICAgbV9j
b25kaXRpb24ud2FpdChtX29ic2VydmVyc0xvY2spOwogCiAgICAgICAgIC8vIFdhaXQgYSBiaXQg
YWZ0ZXIgd2FraW5nIHVwIGZvciB0aGUgZmlyc3QgdGltZS4KICAgICAgICAgV1RGOjpzbGVlcCgx
MF9tcyk7CkBAIC05NSw3ICs5NSw3IEBAIHZvaWQgUmVzb3VyY2VVc2FnZVRocmVhZDo6bm90aWZ5
T2JzZXJ2ZXJzKFJlc291cmNlVXNhZ2VEYXRhJiYgZGF0YSkKIAogICAgICAgICB7CiAgICAgICAg
ICAgICBhdXRvJiByZXNvdXJjZVVzYWdlVGhyZWFkID0gUmVzb3VyY2VVc2FnZVRocmVhZDo6c2lu
Z2xldG9uKCk7Ci0gICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihyZXNvdXJjZVVzYWdlVGhy
ZWFkLm1fbG9jayk7CisgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgcmVzb3VyY2VVc2FnZVRo
cmVhZC5tX29ic2VydmVyc0xvY2sgfTsKICAgICAgICAgICAgIHBhaXJzID0gY29weVRvVmVjdG9y
KHJlc291cmNlVXNhZ2VUaHJlYWQubV9vYnNlcnZlcnMudmFsdWVzKCkpOwogICAgICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVzb3VyY2VVc2FnZVRocmVhZC5oIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9SZXNvdXJjZVVzYWdlVGhyZWFkLmgKaW5kZXggNDcyOTdkOThh
Y2EzMWQ0NWZjZGUzNjhiMzM0NGJlYzk0OTU3MTcxMC4uZmQ0MTQ5YzI4NTRhZTQzMWE3NDNiYTdm
YzVjNzk2MTBhZGMwYzBjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZXNvdXJj
ZVVzYWdlVGhyZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZXNvdXJjZVVzYWdlVGhy
ZWFkLmgKQEAgLTMwLDcgKzMwLDggQEAKICNpbmNsdWRlICJSZXNvdXJjZVVzYWdlRGF0YS5oIgog
I2luY2x1ZGUgPGFycmF5PgogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+Ci0jaW5jbHVkZSA8d3RmL0Nv
bmRpdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkQ29uZGl0aW9uLmg+CisjaW5jbHVkZSA8
d3RmL0NoZWNrZWRMb2NrLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3
dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgpAQCAtNjksNyArNzAs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2FpdFVudGlsT2JzZXJ2ZXJzKCk7CiAgICAgdm9pZCBu
b3RpZnlPYnNlcnZlcnMoUmVzb3VyY2VVc2FnZURhdGEmJik7CiAKLSAgICB2b2lkIHJlY29tcHV0
ZUNvbGxlY3Rpb25Nb2RlKCk7CisgICAgdm9pZCByZWNvbXB1dGVDb2xsZWN0aW9uTW9kZSgpIFdU
Rl9SRVFVSVJFU19MT0NLKG1fb2JzZXJ2ZXJzTG9jayk7CiAKICAgICB2b2lkIGNyZWF0ZVRocmVh
ZElmTmVlZGVkKCk7CiAgICAgTk9fUkVUVVJOIHZvaWQgdGhyZWFkQm9keSgpOwpAQCAtNzksOSAr
ODAsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1Db2xsZWN0TWVtb3J5RGF0YShKU0M6
OlZNKiwgUmVzb3VyY2VVc2FnZURhdGEmKTsKIAogICAgIFJlZlB0cjxUaHJlYWQ+IG1fdGhyZWFk
OwotICAgIExvY2sgbV9sb2NrOwotICAgIENvbmRpdGlvbiBtX2NvbmRpdGlvbjsKLSAgICBIYXNo
TWFwPHZvaWQqLCBzdGQ6OnBhaXI8UmVzb3VyY2VVc2FnZUNvbGxlY3Rpb25Nb2RlLCBzdGQ6OmZ1
bmN0aW9uPHZvaWQgKGNvbnN0IFJlc291cmNlVXNhZ2VEYXRhJik+Pj4gbV9vYnNlcnZlcnM7Cisg
ICAgQ2hlY2tlZExvY2sgbV9vYnNlcnZlcnNMb2NrOworICAgIENoZWNrZWRDb25kaXRpb24gbV9j
b25kaXRpb247CisgICAgSGFzaE1hcDx2b2lkKiwgc3RkOjpwYWlyPFJlc291cmNlVXNhZ2VDb2xs
ZWN0aW9uTW9kZSwgc3RkOjpmdW5jdGlvbjx2b2lkKGNvbnN0IFJlc291cmNlVXNhZ2VEYXRhJik+
Pj4gbV9vYnNlcnZlcnMgV1RGX0dVQVJERURfQllfTE9DSyhtX29ic2VydmVyc0xvY2spOwogICAg
IFJlc291cmNlVXNhZ2VDb2xsZWN0aW9uTW9kZSBtX2NvbGxlY3Rpb25Nb2RlIHsgTm9uZSB9Owog
CiAgICAgLy8gUGxhdGZvcm1zIG1heSBuZWVkIHRvIGFjY2VzcyBzb21lIGRhdGEgZnJvbSB0aGUg
Y29tbW9uIFZNLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9XaGVlbEV2ZW50VGVz
dE1vbml0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9XaGVlbEV2ZW50VGVzdE1vbml0b3Iu
Y3BwCmluZGV4IGY5NGQxODI4ZDU2MGRmZTFiZWZiZTY3YjQ0Y2I0MDQxOTVjOTk2MzguLjlkY2Zm
NjExYTAzNWUyMWYzYjBmNTViYmY3OTNmZjkyNDVkNDc2MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvV2hlZWxFdmVudFRlc3RNb25pdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1doZWVsRXZlbnRUZXN0TW9uaXRvci5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgV2hlZWxF
dmVudFRlc3RNb25pdG9yOjpXaGVlbEV2ZW50VGVzdE1vbml0b3IoUGFnZSYgcGFnZSkKIAogdm9p
ZCBXaGVlbEV2ZW50VGVzdE1vbml0b3I6OmNsZWFyQWxsVGVzdERlZmVycmFscygpCiB7Ci0gICAg
TG9ja0hvbGRlciBsb2NrKG1fbXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsK
IAogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgbV9kZWZlckNvbXBsZXRpb25SZWFz
b25zLmNsZWFyKCk7CkBAIC02Miw2ICs2Miw4IEBAIHZvaWQgV2hlZWxFdmVudFRlc3RNb25pdG9y
OjpjbGVhckFsbFRlc3REZWZlcnJhbHMoKQogCiB2b2lkIFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6
c2V0VGVzdENhbGxiYWNrQW5kU3RhcnRNb25pdG9yaW5nKGJvb2wgZXhwZWN0V2hlZWxFbmRPckNh
bmNlbCwgYm9vbCBleHBlY3RNb21lbnR1bUVuZCwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgZnVu
Y3Rpb25DYWxsYmFjaykKIHsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CisKICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIG1fY29tcGxldGlvbkNhbGxiYWNrID0gV1RGTW92
ZShmdW5jdGlvbkNhbGxiYWNrKTsKICNpZiBFTkFCTEUoS0lORVRJQ19TQ1JPTExJTkcpCkBAIC03
OSw3ICs4MSw3IEBAIHZvaWQgV2hlZWxFdmVudFRlc3RNb25pdG9yOjpzZXRUZXN0Q2FsbGJhY2tB
bmRTdGFydE1vbml0b3JpbmcoYm9vbCBleHBlY3RXaGVlbEVuCiAKIHZvaWQgV2hlZWxFdmVudFRl
c3RNb25pdG9yOjpkZWZlckZvclJlYXNvbihTY3JvbGxhYmxlQXJlYUlkZW50aWZpZXIgaWRlbnRp
ZmllciwgRGVmZXJSZWFzb24gcmVhc29uKQogewotICAgIExvY2tIb2xkZXIgbG9jayhtX211dGV4
KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAKICAgICBtX2RlZmVyQ29tcGxldGlv
blJlYXNvbnMuZW5zdXJlKGlkZW50aWZpZXIsIFtdIHsKICAgICAgICAgcmV0dXJuIE9wdGlvblNl
dDxEZWZlclJlYXNvbj4oKTsKQEAgLTkyLDcgKzk0LDcgQEAgdm9pZCBXaGVlbEV2ZW50VGVzdE1v
bml0b3I6OmRlZmVyRm9yUmVhc29uKFNjcm9sbGFibGVBcmVhSWRlbnRpZmllciBpZGVudGlmaWVy
LAogCiB2b2lkIFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6cmVtb3ZlRGVmZXJyYWxGb3JSZWFzb24o
U2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVyIGlkZW50aWZpZXIsIERlZmVyUmVhc29uIHJlYXNvbikK
IHsKLSAgICBMb2NrSG9sZGVyIGxvY2sobV9tdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1f
bG9jayB9OwogCiAgICAgYXV0byBpdCA9IG1fZGVmZXJDb21wbGV0aW9uUmVhc29ucy5maW5kKGlk
ZW50aWZpZXIpOwogICAgIGlmIChpdCA9PSBtX2RlZmVyQ29tcGxldGlvblJlYXNvbnMuZW5kKCkp
IHsKQEAgLTExMiw2ICsxMTQsOCBAQCB2b2lkIFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6cmVtb3Zl
RGVmZXJyYWxGb3JSZWFzb24oU2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVyIGlkZQogdm9pZCBXaGVl
bEV2ZW50VGVzdE1vbml0b3I6OnJlY2VpdmVkV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVs
RXZlbnQmIGV2ZW50KQogewogI2lmIEVOQUJMRShLSU5FVElDX1NDUk9MTElORykKKyAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV9sb2NrIH07CisKICAgICBpZiAoZXZlbnQucGhhc2UoKSA9PSBQbGF0Zm9y
bVdoZWVsRXZlbnRQaGFzZTo6RW5kZWQgfHwgZXZlbnQucGhhc2UoKSA9PSBQbGF0Zm9ybVdoZWVs
RXZlbnRQaGFzZTo6Q2FuY2VsbGVkKQogICAgICAgICBtX3JlY2VpdmVkV2hlZWxFbmRPckNhbmNl
bCA9IHRydWU7CiAKQEAgLTEzMiw3ICsxMzYsNyBAQCB2b2lkIFdoZWVsRXZlbnRUZXN0TW9uaXRv
cjo6Y2hlY2tTaG91bGRGaXJlQ2FsbGJhY2tzKCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOwogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrKG1fbXV0ZXgpOworICAgICAgICBM
b2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAKICAgICAgICAgaWYgKCFtX2RlZmVyQ29tcGxldGlv
blJlYXNvbnMuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBMT0dfV0lUSF9TVFJFQU0oV2hlZWxF
dmVudFRlc3RNb25pdG9yLCBzdHJlYW0gPDwgIiAgV2hlZWxFdmVudFRlc3RNb25pdG9yOjpjaGVj
a1Nob3VsZEZpcmVDYWxsYmFja3MgLSBzY3JvbGxpbmcgc3RpbGwgYWN0aXZlLCByZWFzb25zICIg
PDwgbV9kZWZlckNvbXBsZXRpb25SZWFzb25zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvV2hlZWxFdmVudFRlc3RNb25pdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1doZWVs
RXZlbnRUZXN0TW9uaXRvci5oCmluZGV4IGVlMTJkZTJkMjE2ZjE2Njg1YmRmZGFhZWVhNmNiYmU0
NWI4MGJlYzEuLjdjZDJmYTA0OWNmNGNmYTU1MjE2ODAxMGM4OWEzNjIwNmNlZmRjODMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2hlZWxFdmVudFRlc3RNb25pdG9yLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9XaGVlbEV2ZW50VGVzdE1vbml0b3IuaApAQCAtMzAsOSArMzAs
OSBAQAogCiAjaW5jbHVkZSAiUGxhdGZvcm1XaGVlbEV2ZW50LmgiCiAjaW5jbHVkZSA8ZnVuY3Rp
b25hbD4KKyNpbmNsdWRlIDx3dGYvQ2hlY2tlZExvY2suaD4KICNpbmNsdWRlIDx3dGYvRnVuY3Rp
b24uaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAj
aW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKQEAgLTczLDEzICs3MywxMyBAQCBwcml2YXRlOgogICAgIFdURjo6RnVuY3Rpb248dm9pZCgp
PiBtX2NvbXBsZXRpb25DYWxsYmFjazsKICAgICBQYWdlJiBtX3BhZ2U7CiAKLSAgICBMb2NrIG1f
bXV0ZXg7Ci0gICAgU2Nyb2xsYWJsZUFyZWFSZWFzb25NYXAgbV9kZWZlckNvbXBsZXRpb25SZWFz
b25zOwotICAgIGJvb2wgbV9leHBlY3RXaGVlbEVuZE9yQ2FuY2VsIHsgZmFsc2UgfTsKLSAgICBi
b29sIG1fcmVjZWl2ZWRXaGVlbEVuZE9yQ2FuY2VsIHsgZmFsc2UgfTsKLSAgICBib29sIG1fZXhw
ZWN0TW9tZW50dW1FbmQgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9yZWNlaXZlZE1vbWVudHVtRW5k
IHsgZmFsc2UgfTsKLSAgICBib29sIG1fZXZlckhhZERlZmVycmFsIHsgZmFsc2UgfTsKKyAgICBD
aGVja2VkTG9jayBtX2xvY2s7CisgICAgU2Nyb2xsYWJsZUFyZWFSZWFzb25NYXAgbV9kZWZlckNv
bXBsZXRpb25SZWFzb25zIFdURl9HVUFSREVEX0JZX0xPQ0sobV9sb2NrKTsKKyAgICBib29sIG1f
ZXhwZWN0V2hlZWxFbmRPckNhbmNlbCBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fbG9jaykgeyBmYWxz
ZSB9OworICAgIGJvb2wgbV9yZWNlaXZlZFdoZWVsRW5kT3JDYW5jZWwgV1RGX0dVQVJERURfQllf
TE9DSyhtX2xvY2spIHsgZmFsc2UgfTsKKyAgICBib29sIG1fZXhwZWN0TW9tZW50dW1FbmQgV1RG
X0dVQVJERURfQllfTE9DSyhtX2xvY2spIHsgZmFsc2UgfTsKKyAgICBib29sIG1fcmVjZWl2ZWRN
b21lbnR1bUVuZCBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fbG9jaykgeyBmYWxzZSB9OworICAgIGJv
b2wgbV9ldmVySGFkRGVmZXJyYWwgV1RGX0dVQVJERURfQllfTE9DSyhtX2xvY2spIHsgZmFsc2Ug
fTsKIH07CiAKIGNsYXNzIFdoZWVsRXZlbnRUZXN0TW9uaXRvckNvbXBsZXRpb25EZWZlcnJlciB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuY3BwCmlu
ZGV4IGRhOWE2MzgwOTExYTA5NGM4NWQ0MjliZGQ2MTVkN2ExMDFkY2NlNGEuLmU1MWQ2MzY2MmYx
OWVjMmJjZGEzZWIxMDIxYjUzYjYwOGZiNmQ2OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuY3BwCkBAIC02MywxMCArNjMsNDYgQEAgU2Nyb2xs
aW5nVHJlZTo6U2Nyb2xsaW5nVHJlZSgpCiAKIFNjcm9sbGluZ1RyZWU6On5TY3JvbGxpbmdUcmVl
KCkgPSBkZWZhdWx0OwogCitPcHRpb25TZXQ8V2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwcz4gU2Ny
b2xsaW5nVHJlZTo6Y29tcHV0ZVdoZWVsUHJvY2Vzc2luZ1N0ZXBzKGNvbnN0IFBsYXRmb3JtV2hl
ZWxFdmVudCYgd2hlZWxFdmVudCkKK3sKKyAgICBpZiAoIW1fcm9vdE5vZGUpCisgICAgICAgIHJl
dHVybiB7IFdoZWVsRXZlbnRQcm9jZXNzaW5nU3RlcHM6OlNjcm9sbGluZ1RocmVhZCB9OworCisg
ICAgRmxvYXRQb2ludCBwb3NpdGlvbiA9IHdoZWVsRXZlbnQucG9zaXRpb24oKTsKKyAgICBwb3Np
dGlvbi5tb3ZlKG1fcm9vdE5vZGUtPnZpZXdUb0NvbnRlbnRzT2Zmc2V0KG1fdHJlZVN0YXRlLm1h
aW5GcmFtZVNjcm9sbFBvc2l0aW9uKSk7CisKKyAgICBpZiAoIW1fdHJlZVN0YXRlLmV2ZW50VHJh
Y2tpbmdSZWdpb25zLmlzRW1wdHkoKSkgeworICAgICAgICBjb25zdCBFdmVudE5hbWVzJiBuYW1l
cyA9IGV2ZW50TmFtZXMoKTsKKyAgICAgICAgSW50UG9pbnQgcm91bmRlZFBvc2l0aW9uID0gcm91
bmRlZEludFBvaW50KHBvc2l0aW9uKTsKKworICAgICAgICAvLyBFdmVudCByZWdpb25zIGFyZSBh
ZmZlY3RlZCBieSBwYWdlIHNjYWxlLCBzbyBubyBuZWVkIHRvIG1hcCB0aHJvdWdoIHNjYWxlLgor
ICAgICAgICBib29sIGlzU3luY2hyb25vdXNEaXNwYXRjaFJlZ2lvbiA9IG1fdHJlZVN0YXRlLmV2
ZW50VHJhY2tpbmdSZWdpb25zLnRyYWNraW5nVHlwZUZvclBvaW50KG5hbWVzLndoZWVsRXZlbnQs
IHJvdW5kZWRQb3NpdGlvbikgPT0gVHJhY2tpbmdUeXBlOjpTeW5jaHJvbm91cworICAgICAgICAg
ICAgfHwgbV90cmVlU3RhdGUuZXZlbnRUcmFja2luZ1JlZ2lvbnMudHJhY2tpbmdUeXBlRm9yUG9p
bnQobmFtZXMubW91c2V3aGVlbEV2ZW50LCByb3VuZGVkUG9zaXRpb24pID09IFRyYWNraW5nVHlw
ZTo6U3luY2hyb25vdXM7CisgICAgICAgIExPR19XSVRIX1NUUkVBTShTY3JvbGxpbmcsIHN0cmVh
bSA8PCAiXG5TY3JvbGxpbmdUcmVlOjpkZXRlcm1pbmVXaGVlbEV2ZW50UHJvY2Vzc2luZzogd2hl
ZWxFdmVudCAiIDw8IHdoZWVsRXZlbnQgPDwgIiBtYXBwZWQgdG8gY29udGVudCBwb2ludCAiIDw8
IHBvc2l0aW9uIDw8ICIsIGluIG5vbi1mYXN0IHJlZ2lvbiAiIDw8IGlzU3luY2hyb25vdXNEaXNw
YXRjaFJlZ2lvbik7CisKKyAgICAgICAgaWYgKGlzU3luY2hyb25vdXNEaXNwYXRjaFJlZ2lvbikK
KyAgICAgICAgICAgIHJldHVybiB7IFdoZWVsRXZlbnRQcm9jZXNzaW5nU3RlcHM6Ok1haW5UaHJl
YWRGb3JTY3JvbGxpbmcsIFdoZWVsRXZlbnRQcm9jZXNzaW5nU3RlcHM6Ok1haW5UaHJlYWRGb3JC
bG9ja2luZ0RPTUV2ZW50RGlzcGF0Y2ggfTsKKyAgICB9CisKKyNpZiBFTkFCTEUoV0hFRUxfRVZF
TlRfUkVHSU9OUykKKyAgICBhdXRvIGV2ZW50TGlzdGVuZXJUeXBlcyA9IGV2ZW50TGlzdGVuZXJS
ZWdpb25UeXBlc0ZvclBvaW50KHBvc2l0aW9uKTsKKyAgICBpZiAoZXZlbnRMaXN0ZW5lclR5cGVz
LmNvbnRhaW5zKEV2ZW50TGlzdGVuZXJSZWdpb25UeXBlOjpOb25QYXNzaXZlV2hlZWwpKSB7Cisg
ICAgICAgIGlmIChtX3RyZWVTdGF0ZS5nZXN0dXJlU3RhdGUudmFsdWVPcihXaGVlbFNjcm9sbEdl
c3R1cmVTdGF0ZTo6QmxvY2tpbmcpID09IFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRlOjpOb25CbG9j
a2luZykKKyAgICAgICAgICAgIHJldHVybiB7IFdoZWVsRXZlbnRQcm9jZXNzaW5nU3RlcHM6OlNj
cm9sbGluZ1RocmVhZCwgV2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwczo6TWFpblRocmVhZEZvck5v
bkJsb2NraW5nRE9NRXZlbnREaXNwYXRjaCB9OworCisgICAgICAgIHJldHVybiB7IFdoZWVsRXZl
bnRQcm9jZXNzaW5nU3RlcHM6Ok1haW5UaHJlYWRGb3JTY3JvbGxpbmcsIFdoZWVsRXZlbnRQcm9j
ZXNzaW5nU3RlcHM6Ok1haW5UaHJlYWRGb3JCbG9ja2luZ0RPTUV2ZW50RGlzcGF0Y2ggfTsKKyAg
ICB9CisKKyAgICBpZiAoZXZlbnRMaXN0ZW5lclR5cGVzLmNvbnRhaW5zKEV2ZW50TGlzdGVuZXJS
ZWdpb25UeXBlOjpXaGVlbCkpCisgICAgICAgIHJldHVybiB7IFdoZWVsRXZlbnRQcm9jZXNzaW5n
U3RlcHM6OlNjcm9sbGluZ1RocmVhZCwgV2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwczo6TWFpblRo
cmVhZEZvck5vbkJsb2NraW5nRE9NRXZlbnREaXNwYXRjaCB9OworI2VuZGlmCisgICAgcmV0dXJu
IHsgV2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwczo6U2Nyb2xsaW5nVGhyZWFkIH07Cit9CisKIE9w
dGlvblNldDxXaGVlbEV2ZW50UHJvY2Vzc2luZ1N0ZXBzPiBTY3JvbGxpbmdUcmVlOjpkZXRlcm1p
bmVXaGVlbEV2ZW50UHJvY2Vzc2luZyhjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZl
bnQpCiB7CiAgICAgLy8gVGhpcyBtZXRob2QgaXMgaW52b2tlZCBieSB0aGUgZXZlbnQgaGFuZGxp
bmcgdGhyZWFkCi0gICAgTG9ja0hvbGRlciBsb2NrKG1fdHJlZVN0YXRlTXV0ZXgpOworICAgIExv
Y2tlciBsb2NrZXIgeyBtX3RyZWVTdGF0ZUxvY2sgfTsKIAogICAgIGF1dG8gbGF0Y2hlZE5vZGVB
bmRTdGVwcyA9IG1fbGF0Y2hpbmdDb250cm9sbGVyLmxhdGNoaW5nRGF0YUZvckV2ZW50KHdoZWVs
RXZlbnQsIG1fYWxsb3dMYXRjaGluZyk7CiAgICAgaWYgKGxhdGNoZWROb2RlQW5kU3RlcHMpIHsK
QEAgLTc2LDQwICsxMTIsNyBAQCBPcHRpb25TZXQ8V2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwcz4g
U2Nyb2xsaW5nVHJlZTo6ZGV0ZXJtaW5lV2hlZWxFdmVudFByb2Nlc3NpbgogICAgIGlmICh3aGVl
bEV2ZW50LmlzR2VzdHVyZVN0YXJ0KCkgfHwgd2hlZWxFdmVudC5pc05vbkdlc3R1cmVFdmVudCgp
KQogICAgICAgICBtX3RyZWVTdGF0ZS5nZXN0dXJlU3RhdGUgPSBXVEY6Om51bGxvcHQ7CiAKLSAg
ICBhdXRvIHByb2Nlc3NpbmdTdGVwcyA9IFsmXSgpIC0+IE9wdGlvblNldDxXaGVlbEV2ZW50UHJv
Y2Vzc2luZ1N0ZXBzPiB7Ci0gICAgICAgIGlmICghbV9yb290Tm9kZSkKLSAgICAgICAgICAgIHJl
dHVybiB7IFdoZWVsRXZlbnRQcm9jZXNzaW5nU3RlcHM6OlNjcm9sbGluZ1RocmVhZCB9OwotCi0g
ICAgICAgIEZsb2F0UG9pbnQgcG9zaXRpb24gPSB3aGVlbEV2ZW50LnBvc2l0aW9uKCk7Ci0gICAg
ICAgIHBvc2l0aW9uLm1vdmUobV9yb290Tm9kZS0+dmlld1RvQ29udGVudHNPZmZzZXQobV90cmVl
U3RhdGUubWFpbkZyYW1lU2Nyb2xsUG9zaXRpb24pKTsKLQotICAgICAgICBpZiAoIW1fdHJlZVN0
YXRlLmV2ZW50VHJhY2tpbmdSZWdpb25zLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgY29uc3Qg
RXZlbnROYW1lcyYgbmFtZXMgPSBldmVudE5hbWVzKCk7Ci0gICAgICAgICAgICBJbnRQb2ludCBy
b3VuZGVkUG9zaXRpb24gPSByb3VuZGVkSW50UG9pbnQocG9zaXRpb24pOwotCi0gICAgICAgICAg
ICAvLyBFdmVudCByZWdpb25zIGFyZSBhZmZlY3RlZCBieSBwYWdlIHNjYWxlLCBzbyBubyBuZWVk
IHRvIG1hcCB0aHJvdWdoIHNjYWxlLgotICAgICAgICAgICAgYm9vbCBpc1N5bmNocm9ub3VzRGlz
cGF0Y2hSZWdpb24gPSBtX3RyZWVTdGF0ZS5ldmVudFRyYWNraW5nUmVnaW9ucy50cmFja2luZ1R5
cGVGb3JQb2ludChuYW1lcy53aGVlbEV2ZW50LCByb3VuZGVkUG9zaXRpb24pID09IFRyYWNraW5n
VHlwZTo6U3luY2hyb25vdXMKLSAgICAgICAgICAgICAgICB8fCBtX3RyZWVTdGF0ZS5ldmVudFRy
YWNraW5nUmVnaW9ucy50cmFja2luZ1R5cGVGb3JQb2ludChuYW1lcy5tb3VzZXdoZWVsRXZlbnQs
IHJvdW5kZWRQb3NpdGlvbikgPT0gVHJhY2tpbmdUeXBlOjpTeW5jaHJvbm91czsKLSAgICAgICAg
ICAgIExPR19XSVRIX1NUUkVBTShTY3JvbGxpbmcsIHN0cmVhbSA8PCAiXG5TY3JvbGxpbmdUcmVl
OjpkZXRlcm1pbmVXaGVlbEV2ZW50UHJvY2Vzc2luZzogd2hlZWxFdmVudCAiIDw8IHdoZWVsRXZl
bnQgPDwgIiBtYXBwZWQgdG8gY29udGVudCBwb2ludCAiIDw8IHBvc2l0aW9uIDw8ICIsIGluIG5v
bi1mYXN0IHJlZ2lvbiAiIDw8IGlzU3luY2hyb25vdXNEaXNwYXRjaFJlZ2lvbik7Ci0KLSAgICAg
ICAgICAgIGlmIChpc1N5bmNocm9ub3VzRGlzcGF0Y2hSZWdpb24pCi0gICAgICAgICAgICAgICAg
cmV0dXJuIHsgV2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwczo6TWFpblRocmVhZEZvclNjcm9sbGlu
ZywgV2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwczo6TWFpblRocmVhZEZvckJsb2NraW5nRE9NRXZl
bnREaXNwYXRjaCB9OwotICAgICAgICB9Ci0KLSNpZiBFTkFCTEUoV0hFRUxfRVZFTlRfUkVHSU9O
UykKLSAgICAgICAgYXV0byBldmVudExpc3RlbmVyVHlwZXMgPSBldmVudExpc3RlbmVyUmVnaW9u
VHlwZXNGb3JQb2ludChwb3NpdGlvbik7Ci0gICAgICAgIGlmIChldmVudExpc3RlbmVyVHlwZXMu
Y29udGFpbnMoRXZlbnRMaXN0ZW5lclJlZ2lvblR5cGU6Ok5vblBhc3NpdmVXaGVlbCkpIHsKLSAg
ICAgICAgICAgIGlmIChtX3RyZWVTdGF0ZS5nZXN0dXJlU3RhdGUudmFsdWVPcihXaGVlbFNjcm9s
bEdlc3R1cmVTdGF0ZTo6QmxvY2tpbmcpID09IFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRlOjpOb25C
bG9ja2luZykKLSAgICAgICAgICAgICAgICByZXR1cm4geyBXaGVlbEV2ZW50UHJvY2Vzc2luZ1N0
ZXBzOjpTY3JvbGxpbmdUaHJlYWQsIFdoZWVsRXZlbnRQcm9jZXNzaW5nU3RlcHM6Ok1haW5UaHJl
YWRGb3JOb25CbG9ja2luZ0RPTUV2ZW50RGlzcGF0Y2ggfTsKLQotICAgICAgICAgICAgcmV0dXJu
IHsgV2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwczo6TWFpblRocmVhZEZvclNjcm9sbGluZywgV2hl
ZWxFdmVudFByb2Nlc3NpbmdTdGVwczo6TWFpblRocmVhZEZvckJsb2NraW5nRE9NRXZlbnREaXNw
YXRjaCB9OwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGV2ZW50TGlzdGVuZXJUeXBlcy5jb250
YWlucyhFdmVudExpc3RlbmVyUmVnaW9uVHlwZTo6V2hlZWwpKQotICAgICAgICAgICAgcmV0dXJu
IHsgV2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwczo6U2Nyb2xsaW5nVGhyZWFkLCBXaGVlbEV2ZW50
UHJvY2Vzc2luZ1N0ZXBzOjpNYWluVGhyZWFkRm9yTm9uQmxvY2tpbmdET01FdmVudERpc3BhdGNo
IH07Ci0jZW5kaWYKLSAgICAgICAgcmV0dXJuIHsgV2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwczo6
U2Nyb2xsaW5nVGhyZWFkIH07Ci0gICAgfSgpOworICAgIGF1dG8gcHJvY2Vzc2luZ1N0ZXBzID0g
Y29tcHV0ZVdoZWVsUHJvY2Vzc2luZ1N0ZXBzKHdoZWVsRXZlbnQpOwogCiAgICAgbV9sYXRjaGlu
Z0NvbnRyb2xsZXIucmVjZWl2ZWRXaGVlbEV2ZW50KHdoZWVsRXZlbnQsIHByb2Nlc3NpbmdTdGVw
cywgbV9hbGxvd0xhdGNoaW5nKTsKIApAQCAtMTYxLDcgKzE2NCwxMCBAQCBXaGVlbEV2ZW50SGFu
ZGxpbmdSZXN1bHQgU2Nyb2xsaW5nVHJlZTo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9y
bVdoZWVsRXZlbgogICAgICAgICB9CiAKICAgICAgICAgRmxvYXRQb2ludCBwb3NpdGlvbiA9IHdo
ZWVsRXZlbnQucG9zaXRpb24oKTsKLSAgICAgICAgcG9zaXRpb24ubW92ZShtX3Jvb3ROb2RlLT52
aWV3VG9Db250ZW50c09mZnNldChtX3RyZWVTdGF0ZS5tYWluRnJhbWVTY3JvbGxQb3NpdGlvbikp
OworICAgICAgICB7CisgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV90cmVlU3RhdGVMb2Nr
IH07CisgICAgICAgICAgICBwb3NpdGlvbi5tb3ZlKG1fcm9vdE5vZGUtPnZpZXdUb0NvbnRlbnRz
T2Zmc2V0KG1fdHJlZVN0YXRlLm1haW5GcmFtZVNjcm9sbFBvc2l0aW9uKSk7CisgICAgICAgIH0K
ICAgICAgICAgYXV0byBub2RlID0gc2Nyb2xsaW5nTm9kZUZvclBvaW50KHBvc2l0aW9uKTsKIAog
ICAgICAgICBMT0dfV0lUSF9TVFJFQU0oU2Nyb2xsaW5nLCBzdHJlYW0gPDwgIlNjcm9sbGluZ1Ry
ZWU6OmhhbmRsZVdoZWVsRXZlbnQgZm91bmQgbm9kZSAiIDw8IChub2RlID8gbm9kZS0+c2Nyb2xs
aW5nTm9kZUlEKCkgOiAwKSA8PCAiIGZvciBwb2ludCAiIDw8IHBvc2l0aW9uKTsKQEAgLTI3NCw3
ICsyODAsNyBAQCB2b2lkIFNjcm9sbGluZ1RyZWU6OmNvbW1pdFRyZWVTdGF0ZShzdGQ6OnVuaXF1
ZV9wdHI8U2Nyb2xsaW5nU3RhdGVUcmVlPiYmIHNjcm9sbAogICAgICAgICAgICAgfHwgcm9vdE5v
ZGUtPmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpXaGVl
bEV2ZW50R2VzdHVyZXNCZWNvbWVOb25CbG9ja2luZykKICAgICAgICAgICAgIHx8IHJvb3ROb2Rl
LT5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6U2Nyb2xs
aW5nUGVyZm9ybWFuY2VUZXN0aW5nRW5hYmxlZCkKICAgICAgICAgICAgIHx8IHJvb3ROb2RlLT5o
YXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6SXNNb25pdG9y
aW5nV2hlZWxFdmVudHMpKSkgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2sobV90cmVlU3RhdGVN
dXRleCk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3RyZWVTdGF0ZUxvY2sgfTsKIAogICAg
ICAgICBpZiAocm9vdFN0YXRlTm9kZUNoYW5nZWQgfHwgcm9vdE5vZGUtPmhhc0NoYW5nZWRQcm9w
ZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpTY3JvbGxlZENvbnRlbnRzTGF5ZXIp
KQogICAgICAgICAgICAgbV90cmVlU3RhdGUubWFpbkZyYW1lU2Nyb2xsUG9zaXRpb24gPSB7IH07
CkBAIC00ODIsMzEgKzQ4OCwzMSBAQCB2b2lkIFNjcm9sbGluZ1RyZWU6OmNsZWFyTGF0Y2hlZE5v
ZGUoKQogCiBGbG9hdFBvaW50IFNjcm9sbGluZ1RyZWU6Om1haW5GcmFtZVNjcm9sbFBvc2l0aW9u
KCkgY29uc3QKIHsKLSAgICBBU1NFUlQobV90cmVlU3RhdGVNdXRleC5pc0xvY2tlZCgpKTsKKyAg
ICBBU1NFUlQobV90cmVlU3RhdGVMb2NrLmlzTG9ja2VkKCkpOwogICAgIHJldHVybiBtX3RyZWVT
dGF0ZS5tYWluRnJhbWVTY3JvbGxQb3NpdGlvbjsKIH0KIAogdm9pZCBTY3JvbGxpbmdUcmVlOjpz
ZXRNYWluRnJhbWVTY3JvbGxQb3NpdGlvbihGbG9hdFBvaW50IHBvc2l0aW9uKQogewotICAgIExv
Y2tIb2xkZXIgbG9jayhtX3RyZWVTdGF0ZU11dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV90
cmVlU3RhdGVMb2NrIH07CiAgICAgbV90cmVlU3RhdGUubWFpbkZyYW1lU2Nyb2xsUG9zaXRpb24g
PSBwb3NpdGlvbjsKIH0KIAogdm9pZCBTY3JvbGxpbmdUcmVlOjpzZXRHZXN0dXJlU3RhdGUoT3B0
aW9uYWw8V2hlZWxTY3JvbGxHZXN0dXJlU3RhdGU+IGdlc3R1cmVTdGF0ZSkKIHsKLSAgICBMb2Nr
SG9sZGVyIGxvY2sobV90cmVlU3RhdGVNdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fdHJl
ZVN0YXRlTG9jayB9OwogICAgIG1fdHJlZVN0YXRlLmdlc3R1cmVTdGF0ZSA9IGdlc3R1cmVTdGF0
ZTsKIH0KIAogT3B0aW9uYWw8V2hlZWxTY3JvbGxHZXN0dXJlU3RhdGU+IFNjcm9sbGluZ1RyZWU6
Omdlc3R1cmVTdGF0ZSgpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrKG1fdHJlZVN0YXRlTXV0ZXgp
OworICAgIExvY2tlciBsb2NrZXIgeyBtX3RyZWVTdGF0ZUxvY2sgfTsKICAgICByZXR1cm4gbV90
cmVlU3RhdGUuZ2VzdHVyZVN0YXRlOwogfQogCiBUcmFja2luZ1R5cGUgU2Nyb2xsaW5nVHJlZTo6
ZXZlbnRUcmFja2luZ1R5cGVGb3JQb2ludChjb25zdCBBdG9tU3RyaW5nJiBldmVudE5hbWUsIElu
dFBvaW50IHApCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrKG1fdHJlZVN0YXRlTXV0ZXgpOworICAg
IExvY2tlciBsb2NrZXIgeyBtX3RyZWVTdGF0ZUxvY2sgfTsKICAgICByZXR1cm4gbV90cmVlU3Rh
dGUuZXZlbnRUcmFja2luZ1JlZ2lvbnMudHJhY2tpbmdUeXBlRm9yUG9pbnQoZXZlbnROYW1lLCBw
KTsKIH0KIApAQCAtNTE2LDEzICs1MjIsMTMgQEAgYm9vbCBTY3JvbGxpbmdUcmVlOjppc1J1YmJl
ckJhbmRJblByb2dyZXNzRm9yTm9kZShTY3JvbGxpbmdOb2RlSUQgbm9kZUlEKQogICAgIGlmICgh
bm9kZUlEKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBMb2NrSG9sZGVyIGxvY2sobV90
cmVlU3RhdGVNdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fdHJlZVN0YXRlTG9jayB9Owog
ICAgIHJldHVybiBtX3RyZWVTdGF0ZS5ub2Rlc1dpdGhBY3RpdmVSdWJiZXJCYW5kaW5nLmNvbnRh
aW5zKG5vZGVJRCk7CiB9CiAKIHZvaWQgU2Nyb2xsaW5nVHJlZTo6c2V0UnViYmVyQmFuZGluZ0lu
UHJvZ3Jlc3NGb3JOb2RlKFNjcm9sbGluZ05vZGVJRCBub2RlSUQsIGJvb2wgaXNSdWJiZXJCYW5k
aW5nKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fdHJlZVN0YXRlTXV0ZXgpOworICAgIExv
Y2tlciBsb2NrZXIgeyBtX3RyZWVTdGF0ZUxvY2sgfTsKICAgICBpZiAoaXNSdWJiZXJCYW5kaW5n
KQogICAgICAgICBtX3RyZWVTdGF0ZS5ub2Rlc1dpdGhBY3RpdmVSdWJiZXJCYW5kaW5nLmFkZChu
b2RlSUQpOwogICAgIGVsc2UKQEAgLTUzNSwxNCArNTQxLDE0IEBAIGJvb2wgU2Nyb2xsaW5nVHJl
ZTo6aXNVc2VyU2Nyb2xsSW5Qcm9ncmVzc0Zvck5vZGUoU2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCkK
ICAgICBpZiAoIW5vZGVJRCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgTG9ja0hvbGRl
ciBsb2NrKG1fdHJlZVN0YXRlTXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX3RyZWVTdGF0
ZUxvY2sgfTsKICAgICByZXR1cm4gbV90cmVlU3RhdGUubm9kZXNXaXRoQWN0aXZlVXNlclNjcm9s
bHMuY29udGFpbnMobm9kZUlEKTsKIH0KICAgICAKIHZvaWQgU2Nyb2xsaW5nVHJlZTo6c2V0VXNl
clNjcm9sbEluUHJvZ3Jlc3NGb3JOb2RlKFNjcm9sbGluZ05vZGVJRCBub2RlSUQsIGJvb2wgaXNT
Y3JvbGxpbmcpCiB7CiAgICAgQVNTRVJUKG5vZGVJRCk7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIo
bV90cmVlU3RhdGVNdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fdHJlZVN0YXRlTG9jayB9
OwogICAgIGlmIChpc1Njcm9sbGluZykKICAgICAgICAgbV90cmVlU3RhdGUubm9kZXNXaXRoQWN0
aXZlVXNlclNjcm9sbHMuYWRkKG5vZGVJRCk7CiAgICAgZWxzZQpAQCAtNTUxLDcgKzU1Nyw3IEBA
IHZvaWQgU2Nyb2xsaW5nVHJlZTo6c2V0VXNlclNjcm9sbEluUHJvZ3Jlc3NGb3JOb2RlKFNjcm9s
bGluZ05vZGVJRCBub2RlSUQsIGJvb2wKIAogdm9pZCBTY3JvbGxpbmdUcmVlOjpjbGVhck5vZGVz
V2l0aFVzZXJTY3JvbGxJblByb2dyZXNzKCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3Ry
ZWVTdGF0ZU11dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV90cmVlU3RhdGVMb2NrIH07CiAg
ICAgbV90cmVlU3RhdGUubm9kZXNXaXRoQWN0aXZlVXNlclNjcm9sbHMuY2xlYXIoKTsKIH0KIApA
QCAtNTYxLDE0ICs1NjcsMTQgQEAgYm9vbCBTY3JvbGxpbmdUcmVlOjppc1Njcm9sbFNuYXBJblBy
b2dyZXNzRm9yTm9kZShTY3JvbGxpbmdOb2RlSUQgbm9kZUlEKQogICAgIGlmICghbm9kZUlEKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBMb2NrSG9sZGVyIGxvY2sobV90cmVlU3RhdGVN
dXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fdHJlZVN0YXRlTG9jayB9OwogICAgIHJldHVy
biBtX3RyZWVTdGF0ZS5ub2Rlc1dpdGhBY3RpdmVTY3JvbGxTbmFwLmNvbnRhaW5zKG5vZGVJRCk7
CiB9CiAgICAgCiB2b2lkIFNjcm9sbGluZ1RyZWU6OnNldE5vZGVTY3JvbGxTbmFwSW5Qcm9ncmVz
cyhTY3JvbGxpbmdOb2RlSUQgbm9kZUlELCBib29sIGlzU2Nyb2xsU25hcHBpbmcpCiB7CiAgICAg
QVNTRVJUKG5vZGVJRCk7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV90cmVlU3RhdGVNdXRleCk7
CisgICAgTG9ja2VyIGxvY2tlciB7IG1fdHJlZVN0YXRlTG9jayB9OwogICAgIGlmIChpc1Njcm9s
bFNuYXBwaW5nKQogICAgICAgICBtX3RyZWVTdGF0ZS5ub2Rlc1dpdGhBY3RpdmVTY3JvbGxTbmFw
LmFkZChub2RlSUQpOwogICAgIGVsc2UKQEAgLTU3NywyMSArNTgzLDIxIEBAIHZvaWQgU2Nyb2xs
aW5nVHJlZTo6c2V0Tm9kZVNjcm9sbFNuYXBJblByb2dyZXNzKFNjcm9sbGluZ05vZGVJRCBub2Rl
SUQsIGJvb2wgaXNTCiAKIHZvaWQgU2Nyb2xsaW5nVHJlZTo6c2V0TWFpbkZyYW1lUGlubmVkU3Rh
dGUoUmVjdEVkZ2VzPGJvb2w+IGVkZ2VQaW5uaW5nU3RhdGUpCiB7Ci0gICAgTG9ja0hvbGRlciBs
b2NrZXIobV9zd2lwZVN0YXRlTXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX3N3aXBlU3Rh
dGVMb2NrIH07CiAKICAgICBtX3N3aXBlU3RhdGUubWFpbkZyYW1lUGlubmVkU3RhdGUgPSBlZGdl
UGlubmluZ1N0YXRlOwogfQogCiB2b2lkIFNjcm9sbGluZ1RyZWU6OnNldE1haW5GcmFtZUNhblJ1
YmJlckJhbmQoUmVjdEVkZ2VzPGJvb2w+IGNhblJ1YmJlckJhbmQpCiB7Ci0gICAgTG9ja0hvbGRl
ciBsb2NrZXIobV9zd2lwZVN0YXRlTXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX3N3aXBl
U3RhdGVMb2NrIH07CiAKICAgICBtX3N3aXBlU3RhdGUuY2FuUnViYmVyQmFuZCA9IGNhblJ1YmJl
ckJhbmQ7CiB9CiAKIGJvb2wgU2Nyb2xsaW5nVHJlZTo6bWFpbkZyYW1lQ2FuUnViYmVyQmFuZElu
RGlyZWN0aW9uKFNjcm9sbERpcmVjdGlvbiBkaXJlY3Rpb24pCiB7Ci0gICAgTG9ja0hvbGRlciBs
b2NrZXIobV9zd2lwZVN0YXRlTXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX3N3aXBlU3Rh
dGVMb2NrIH07CiAKICAgICBzd2l0Y2ggKGRpcmVjdGlvbikgewogICAgIGNhc2UgU2Nyb2xsVXA6
IHJldHVybiBtX3N3aXBlU3RhdGUuY2FuUnViYmVyQmFuZC50b3AoKTsKQEAgLTYwNSw3ICs2MTEs
NyBAQCBib29sIFNjcm9sbGluZ1RyZWU6Om1haW5GcmFtZUNhblJ1YmJlckJhbmRJbkRpcmVjdGlv
bihTY3JvbGxEaXJlY3Rpb24gZGlyZWN0aW9uKQogCiB2b2lkIFNjcm9sbGluZ1RyZWU6OmFkZFBl
bmRpbmdTY3JvbGxVcGRhdGUoU2Nyb2xsVXBkYXRlJiYgdXBkYXRlKQogewotICAgIGF1dG8gbG9j
a2VyID0gaG9sZExvY2sobV9wZW5kaW5nU2Nyb2xsVXBkYXRlc0xvY2spOworICAgIExvY2tlciBs
b2NrZXIgeyBtX3BlbmRpbmdTY3JvbGxVcGRhdGVzTG9jayB9OwogICAgIGZvciAoYXV0byYgZXhp
c3RpbmdVcGRhdGUgOiBtX3BlbmRpbmdTY3JvbGxVcGRhdGVzKSB7CiAgICAgICAgIGlmIChleGlz
dGluZ1VwZGF0ZS5jYW5NZXJnZSh1cGRhdGUpKSB7CiAgICAgICAgICAgICBleGlzdGluZ1VwZGF0
ZS5tZXJnZShXVEZNb3ZlKHVwZGF0ZSkpOwpAQCAtNjE4LDIxICs2MjQsMjEgQEAgdm9pZCBTY3Jv
bGxpbmdUcmVlOjphZGRQZW5kaW5nU2Nyb2xsVXBkYXRlKFNjcm9sbFVwZGF0ZSYmIHVwZGF0ZSkK
IAogVmVjdG9yPFNjcm9sbGluZ1RyZWU6OlNjcm9sbFVwZGF0ZT4gU2Nyb2xsaW5nVHJlZTo6dGFr
ZVBlbmRpbmdTY3JvbGxVcGRhdGVzKCkKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1f
cGVuZGluZ1Njcm9sbFVwZGF0ZXNMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9wZW5kaW5n
U2Nyb2xsVXBkYXRlc0xvY2sgfTsKICAgICByZXR1cm4gc3RkOjpleGNoYW5nZShtX3BlbmRpbmdT
Y3JvbGxVcGRhdGVzLCB7IH0pOwogfQogCiAvLyBDYW4gYmUgY2FsbGVkIGZyb20gdGhlIG1haW4g
dGhyZWFkLgogdm9pZCBTY3JvbGxpbmdUcmVlOjpzZXRTY3JvbGxQaW5uaW5nQmVoYXZpb3IoU2Ny
b2xsUGlubmluZ0JlaGF2aW9yIHBpbm5pbmcpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9z
d2lwZVN0YXRlTXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX3N3aXBlU3RhdGVMb2NrIH07
CiAgICAgCiAgICAgbV9zd2lwZVN0YXRlLnNjcm9sbFBpbm5pbmdCZWhhdmlvciA9IHBpbm5pbmc7
CiB9CiAKIFNjcm9sbFBpbm5pbmdCZWhhdmlvciBTY3JvbGxpbmdUcmVlOjpzY3JvbGxQaW5uaW5n
QmVoYXZpb3IoKQogewotICAgIExvY2tIb2xkZXIgbG9jayhtX3N3aXBlU3RhdGVNdXRleCk7Cisg
ICAgTG9ja2VyIGxvY2tlciB7IG1fc3dpcGVTdGF0ZUxvY2sgfTsKICAgICAKICAgICByZXR1cm4g
bV9zd2lwZVN0YXRlLnNjcm9sbFBpbm5pbmdCZWhhdmlvcjsKIH0KQEAgLTY0Miw3ICs2NDgsNyBA
QCBib29sIFNjcm9sbGluZ1RyZWU6OndpbGxXaGVlbEV2ZW50U3RhcnRTd2lwZUdlc3R1cmUoY29u
c3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aAogICAgIGlmICh3aGVlbEV2ZW50LnBoYXNlKCkgIT0g
UGxhdGZvcm1XaGVlbEV2ZW50UGhhc2U6OkJlZ2FuKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICBMb2NrSG9sZGVyIGxvY2sobV9zd2lwZVN0YXRlTXV0ZXgpOworICAgIExvY2tlciBsb2Nr
ZXIgeyBtX3N3aXBlU3RhdGVMb2NrIH07CiAKICAgICBpZiAod2hlZWxFdmVudC5kZWx0YVgoKSA+
IDAgJiYgbV9zd2lwZVN0YXRlLm1haW5GcmFtZVBpbm5lZFN0YXRlLmxlZnQoKSAmJiAhbV9zd2lw
ZVN0YXRlLmNhblJ1YmJlckJhbmQubGVmdCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTY2
OSwyMCArNjc1LDIwIEBAIHZvaWQgU2Nyb2xsaW5nVHJlZTo6c2Nyb2xsQnlTaW11bGF0aW5nV2hl
ZWxFdmVudEZvclRlc3RpbmcoU2Nyb2xsaW5nTm9kZUlEIG5vZGVJCiAKIHZvaWQgU2Nyb2xsaW5n
VHJlZTo6d2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCwg
T3B0aW9uYWw8RnJhbWVzUGVyU2Vjb25kPiBub21pbmFsRnJhbWVzUGVyU2Vjb25kKQogewotICAg
IExvY2tIb2xkZXIgbG9ja2VyKG1fdHJlZVN0YXRlTXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIg
eyBtX3RyZWVTdGF0ZUxvY2sgfTsKICAgICBtX3RyZWVTdGF0ZS5kaXNwbGF5SUQgPSBkaXNwbGF5
SUQ7CiAgICAgbV90cmVlU3RhdGUubm9taW5hbEZyYW1lc1BlclNlY29uZCA9IG5vbWluYWxGcmFt
ZXNQZXJTZWNvbmQ7CiB9CiAKIFBsYXRmb3JtRGlzcGxheUlEIFNjcm9sbGluZ1RyZWU6OmRpc3Bs
YXlJRCgpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV90cmVlU3RhdGVNdXRleCk7CisgICAg
TG9ja2VyIGxvY2tlciB7IG1fdHJlZVN0YXRlTG9jayB9OwogICAgIHJldHVybiBtX3RyZWVTdGF0
ZS5kaXNwbGF5SUQ7CiB9CiAKIGJvb2wgU2Nyb2xsaW5nVHJlZTo6aGFzUHJvY2Vzc2VkV2hlZWxF
dmVudHNSZWNlbnRseSgpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9sYXN0V2hlZWxFdmVu
dFRpbWVNdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbGFzdFdoZWVsRXZlbnRUaW1lTG9j
ayB9OwogICAgIGNvbnN0ZXhwciBhdXRvIGFjdGl2aXR5SW50ZXJ2YWwgPSA1MF9tczsgLy8gRHVy
YXRpb24gb2YgYSBmZXcgZnJhbWVzIHNvIHRoYXQgd2Ugc3RheSBhY3RpdmUgZm9yIHNlcXVlbmNl
IG9mIHdoZWVsIGV2ZW50cy4KICAgICAKICAgICByZXR1cm4gKE1vbm90b25pY1RpbWU6Om5vdygp
IC0gbV9sYXN0V2hlZWxFdmVudFRpbWUpIDwgYWN0aXZpdHlJbnRlcnZhbDsKQEAgLTY5MCwxMyAr
Njk2LDEzIEBAIGJvb2wgU2Nyb2xsaW5nVHJlZTo6aGFzUHJvY2Vzc2VkV2hlZWxFdmVudHNSZWNl
bnRseSgpCiAKIHZvaWQgU2Nyb2xsaW5nVHJlZTo6d2lsbFByb2Nlc3NXaGVlbEV2ZW50KCkKIHsK
LSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xhc3RXaGVlbEV2ZW50VGltZU11dGV4KTsKKyAgICBM
b2NrZXIgbG9ja2VyIHsgbV9sYXN0V2hlZWxFdmVudFRpbWVMb2NrIH07CiAgICAgbV9sYXN0V2hl
ZWxFdmVudFRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKIH0KIAogT3B0aW9uYWw8dW5zaWdu
ZWQ+IFNjcm9sbGluZ1RyZWU6Om5vbWluYWxGcmFtZXNQZXJTZWNvbmQoKQogewotICAgIExvY2tI
b2xkZXIgbG9ja2VyKG1fdHJlZVN0YXRlTXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX3Ry
ZWVTdGF0ZUxvY2sgfTsKICAgICByZXR1cm4gbV90cmVlU3RhdGUubm9taW5hbEZyYW1lc1BlclNl
Y29uZDsKIH0KIApAQCAtNzA4LDcgKzcxNCw3IEBAIFN0cmluZyBTY3JvbGxpbmdUcmVlOjpzY3Jv
bGxpbmdUcmVlQXNUZXh0KFNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dEJlaGF2aW9yIGJlaGF2CiAg
ICAgICAgIFRleHRTdHJlYW06Okdyb3VwU2NvcGUgc2NvcGUodHMpOwogICAgICAgICB0cyA8PCAi
c2Nyb2xsaW5nIHRyZWUiOwogCi0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fdHJlZVN0YXRl
TXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV90cmVlU3RhdGVMb2NrIH07CiAKICAg
ICAgICAgaWYgKGF1dG8gbGF0Y2hlZE5vZGVJRCA9IG1fbGF0Y2hpbmdDb250cm9sbGVyLmxhdGNo
ZWROb2RlSUQoKSkKICAgICAgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgibGF0Y2hlZCBub2RlIiwg
bGF0Y2hlZE5vZGVJRC52YWx1ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ1RyZWUuaAppbmRleCBmNzEzZWRkYzU3ZGMxMDI3MjNhOTI4MDk1NjBjOTJmZGEz
NjJjZmRmLi5kZmVkZmRmMzc5MDE3ODE1YzFjN2ZiMTdlYWM5NDNiMWFiZDM4YmIwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5oCkBAIC0zNyw2ICsz
Nyw3IEBACiAjaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZUdlc3R1cmVTdGF0ZS5oIgogI2luY2x1ZGUg
IlNjcm9sbGluZ1RyZWVMYXRjaGluZ0NvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJXaGVlbEV2ZW50
VGVzdE1vbml0b3IuaCIKKyNpbmNsdWRlIDx3dGYvQ2hlY2tlZExvY2suaD4KICNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL01vbm90
b25pY1RpbWUuaD4KQEAgLTI0OCw3ICsyNDksNyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAg
V2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0IGhhbmRsZVdoZWVsRXZlbnRXaXRoTm9kZShjb25zdCBQ
bGF0Zm9ybVdoZWVsRXZlbnQmLCBPcHRpb25TZXQ8V2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwcz4s
IFNjcm9sbGluZ1RyZWVOb2RlKiwgRXZlbnRUYXJnZXRpbmcgPSBFdmVudFRhcmdldGluZzo6UHJv
cGFnYXRlKTsKIAotICAgIEZsb2F0UG9pbnQgbWFpbkZyYW1lU2Nyb2xsUG9zaXRpb24oKSBjb25z
dDsKKyAgICBGbG9hdFBvaW50IG1haW5GcmFtZVNjcm9sbFBvc2l0aW9uKCkgY29uc3QgV1RGX1JF
UVVJUkVTX0xPQ0sobV90cmVlU3RhdGVMb2NrKTsKICAgICB2b2lkIHNldE1haW5GcmFtZVNjcm9s
bFBvc2l0aW9uKEZsb2F0UG9pbnQpOwogCiAgICAgdm9pZCBzZXRHZXN0dXJlU3RhdGUoT3B0aW9u
YWw8V2hlZWxTY3JvbGxHZXN0dXJlU3RhdGU+KTsKQEAgLTI3NCw2ICsyNzUsOCBAQCBwcml2YXRl
OgogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgT3B0aW9uU2V0PEV2ZW50TGlzdGVuZXJSZWdp
b25UeXBlPiBldmVudExpc3RlbmVyUmVnaW9uVHlwZXNGb3JQb2ludChGbG9hdFBvaW50KSBjb25z
dDsKICNlbmRpZgogCisgICAgT3B0aW9uU2V0PFdoZWVsRXZlbnRQcm9jZXNzaW5nU3RlcHM+IGNv
bXB1dGVXaGVlbFByb2Nlc3NpbmdTdGVwcyhjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmKSBXVEZf
UkVRVUlSRVNfTE9DSyhtX3RyZWVTdGF0ZUxvY2spOworCiAgICAgdmlydHVhbCB2b2lkIHJlY2Vp
dmVkV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmKSB7IH0KICAgICAKICAgICBS
ZWZQdHI8U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZT4gbV9yb290Tm9kZTsKQEAgLTMw
MCw4ICszMDMsOCBAQCBwcml2YXRlOgogICAgICAgICBIYXNoU2V0PFNjcm9sbGluZ05vZGVJRD4g
bm9kZXNXaXRoQWN0aXZlVXNlclNjcm9sbHM7CiAgICAgfTsKICAgICAKLSAgICBMb2NrIG1fdHJl
ZVN0YXRlTXV0ZXg7Ci0gICAgVHJlZVN0YXRlIG1fdHJlZVN0YXRlOworICAgIENoZWNrZWRMb2Nr
IG1fdHJlZVN0YXRlTG9jazsKKyAgICBUcmVlU3RhdGUgbV90cmVlU3RhdGUgV1RGX0dVQVJERURf
QllfTE9DSyhtX3RyZWVTdGF0ZUxvY2spOwogCiAgICAgc3RydWN0IFN3aXBlU3RhdGUgewogICAg
ICAgICBTY3JvbGxQaW5uaW5nQmVoYXZpb3Igc2Nyb2xsUGlubmluZ0JlaGF2aW9yIHsgRG9Ob3RQ
aW4gfTsKQEAgLTMxNCwxNCArMzE3LDE0IEBAIHByaXZhdGU6CiAgICAgICAgIFJlY3RFZGdlczxi
b29sPiBtYWluRnJhbWVQaW5uZWRTdGF0ZSB7IHRydWUsIHRydWUsIHRydWUsIHRydWUgfTsKICAg
ICB9OwogCi0gICAgTG9jayBtX3N3aXBlU3RhdGVNdXRleDsKLSAgICBTd2lwZVN0YXRlIG1fc3dp
cGVTdGF0ZTsKKyAgICBDaGVja2VkTG9jayBtX3N3aXBlU3RhdGVMb2NrOworICAgIFN3aXBlU3Rh
dGUgbV9zd2lwZVN0YXRlIFdURl9HVUFSREVEX0JZX0xPQ0sobV9zd2lwZVN0YXRlTG9jayk7CiAK
LSAgICBMb2NrIG1fcGVuZGluZ1Njcm9sbFVwZGF0ZXNMb2NrOwotICAgIFZlY3RvcjxTY3JvbGxV
cGRhdGU+IG1fcGVuZGluZ1Njcm9sbFVwZGF0ZXM7CisgICAgQ2hlY2tlZExvY2sgbV9wZW5kaW5n
U2Nyb2xsVXBkYXRlc0xvY2s7CisgICAgVmVjdG9yPFNjcm9sbFVwZGF0ZT4gbV9wZW5kaW5nU2Ny
b2xsVXBkYXRlcyBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fcGVuZGluZ1Njcm9sbFVwZGF0ZXNMb2Nr
KTsKIAotICAgIExvY2sgbV9sYXN0V2hlZWxFdmVudFRpbWVNdXRleDsKLSAgICBNb25vdG9uaWNU
aW1lIG1fbGFzdFdoZWVsRXZlbnRUaW1lOworICAgIENoZWNrZWRMb2NrIG1fbGFzdFdoZWVsRXZl
bnRUaW1lTG9jazsKKyAgICBNb25vdG9uaWNUaW1lIG1fbGFzdFdoZWVsRXZlbnRUaW1lIFdURl9H
VUFSREVEX0JZX0xPQ0sobV9sYXN0V2hlZWxFdmVudFRpbWVMb2NrKTsKIAogcHJvdGVjdGVkOgog
ICAgIGJvb2wgbV9hbGxvd0xhdGNoaW5nIHsgdHJ1ZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZUxhdGNoaW5nQ29udHJvbGxlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlTGF0Y2hpbmdDb250
cm9sbGVyLmNwcAppbmRleCA3OTQxMjIwNjk0M2VmOTZhOWMxMTNmZTFkMDU2OGU3OTUwZWJiODI2
Li4wYzdmNGE2MGFlNTBjMzJiY2ViNmI5NTA5OTg0YWMyNzRmM2ZmNTBmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlTGF0Y2hpbmdDb250cm9s
bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVl
TGF0Y2hpbmdDb250cm9sbGVyLmNwcApAQCAtNDYsNyArNDYsNyBAQCB2b2lkIFNjcm9sbGluZ1Ry
ZWVMYXRjaGluZ0NvbnRyb2xsZXI6OnJlY2VpdmVkV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdo
ZWVsRXZlbgogICAgIGlmICghYWxsb3dMYXRjaGluZykKICAgICAgICAgcmV0dXJuOwogCi0gICAg
TG9ja0hvbGRlciBsb2NrZXIobV9sYXRjaGVkTm9kZU11dGV4KTsKKyAgICBMb2NrZXIgbG9ja2Vy
IHsgbV9sYXRjaGVkTm9kZUxvY2sgfTsKICAgICBpZiAod2hlZWxFdmVudC5pc0dlc3R1cmVTdGFy
dCgpICYmICFsYXRjaGVkTm9kZUlzUmVsZXZhbnQoKSkgewogICAgICAgICBpZiAobV9sYXRjaGVk
Tm9kZUFuZFN0ZXBzKSB7CiAgICAgICAgICAgICBMT0dfV0lUSF9TVFJFQU0oU2Nyb2xsTGF0Y2hp
bmcsIHN0cmVhbSA8PCAiU2Nyb2xsaW5nVHJlZUxhdGNoaW5nQ29udHJvbGxlciAiIDw8IHRoaXMg
PDwgIiByZWNlaXZlZFdoZWVsRXZlbnQgLSAiIDw8IChNb25vdG9uaWNUaW1lOjpub3coKSAtIG1f
bGFzdExhdGNoZWROb2RlSW50ZXJhdGlvblRpbWUpLm1pbGxpc2Vjb25kcygpIDw8ICJtcyBzaW5j
ZSBsYXN0IGV2ZW50LCBjbGVhcmluZyBsYXRjaGVkIG5vZGUiKTsKQEAgLTYxLDcgKzYxLDcgQEAg
T3B0aW9uYWw8U2Nyb2xsaW5nVHJlZUxhdGNoaW5nQ29udHJvbGxlcjo6U2Nyb2xsaW5nTm9kZUFu
ZFByb2Nlc3NpbmdTdGVwcz4gU2Nyb2wKICAgICBpZiAoIWFsbG93TGF0Y2hpbmcpCiAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xhdGNoZWRO
b2RlTXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX2xhdGNoZWROb2RlTG9jayB9OwogCiAg
ICAgLy8gSWYgd2UgaGF2ZSBhIGxhdGNoZWQgbm9kZSwgdXNlIGl0LgogICAgIGlmICh3aGVlbEV2
ZW50LnVzZUxhdGNoZWRFdmVudEVsZW1lbnQoKSAmJiBtX2xhdGNoZWROb2RlQW5kU3RlcHMgJiYg
bGF0Y2hlZE5vZGVJc1JlbGV2YW50KCkpIHsKQEAgLTc0LDcgKzc0LDcgQEAgT3B0aW9uYWw8U2Ny
b2xsaW5nVHJlZUxhdGNoaW5nQ29udHJvbGxlcjo6U2Nyb2xsaW5nTm9kZUFuZFByb2Nlc3NpbmdT
dGVwcz4gU2Nyb2wKIAogT3B0aW9uYWw8U2Nyb2xsaW5nTm9kZUlEPiBTY3JvbGxpbmdUcmVlTGF0
Y2hpbmdDb250cm9sbGVyOjpsYXRjaGVkTm9kZUlEKCkgY29uc3QKIHsKLSAgICBMb2NrSG9sZGVy
IGxvY2tlcihtX2xhdGNoZWROb2RlTXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX2xhdGNo
ZWROb2RlTG9jayB9OwogICAgIGlmIChtX2xhdGNoZWROb2RlQW5kU3RlcHMpCiAgICAgICAgIHJl
dHVybiBtX2xhdGNoZWROb2RlQW5kU3RlcHMtPnNjcm9sbGluZ05vZGVJRDsKIApAQCAtODMsNyAr
ODMsNyBAQCBPcHRpb25hbDxTY3JvbGxpbmdOb2RlSUQ+IFNjcm9sbGluZ1RyZWVMYXRjaGluZ0Nv
bnRyb2xsZXI6OmxhdGNoZWROb2RlSUQoKSBjb25zdAogCiBPcHRpb25hbDxTY3JvbGxpbmdUcmVl
TGF0Y2hpbmdDb250cm9sbGVyOjpTY3JvbGxpbmdOb2RlQW5kUHJvY2Vzc2luZ1N0ZXBzPiBTY3Jv
bGxpbmdUcmVlTGF0Y2hpbmdDb250cm9sbGVyOjpsYXRjaGVkTm9kZUFuZFN0ZXBzKCkgY29uc3QK
IHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xhdGNoZWROb2RlTXV0ZXgpOworICAgIExvY2tl
ciBsb2NrZXIgeyBtX2xhdGNoZWROb2RlTG9jayB9OwogICAgIHJldHVybiBtX2xhdGNoZWROb2Rl
QW5kU3RlcHM7CiB9CiAKQEAgLTkyLDcgKzkyLDcgQEAgdm9pZCBTY3JvbGxpbmdUcmVlTGF0Y2hp
bmdDb250cm9sbGVyOjpub2RlRGlkSGFuZGxlRXZlbnQoU2Nyb2xsaW5nTm9kZUlEIHNjcm9sbGkK
ICAgICBpZiAoIWFsbG93TGF0Y2hpbmcpCiAgICAgICAgIHJldHVybjsKIAotICAgIExvY2tIb2xk
ZXIgbG9ja2VyKG1fbGF0Y2hlZE5vZGVNdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbGF0
Y2hlZE5vZGVMb2NrIH07CiAKICAgICBpZiAod2hlZWxFdmVudC51c2VMYXRjaGVkRXZlbnRFbGVt
ZW50KCkgJiYgbV9sYXRjaGVkTm9kZUFuZFN0ZXBzICYmIG1fbGF0Y2hlZE5vZGVBbmRTdGVwcy0+
c2Nyb2xsaW5nTm9kZUlEID09IHNjcm9sbGluZ05vZGVJRCkgewogICAgICAgICBpZiAod2hlZWxF
dmVudC5pc0VuZE9mTW9tZW50dW1TY3JvbGwoKSkKQEAgLTEzMCwxNCArMTMwLDE0IEBAIHZvaWQg
U2Nyb2xsaW5nVHJlZUxhdGNoaW5nQ29udHJvbGxlcjo6bm9kZURpZEhhbmRsZUV2ZW50KFNjcm9s
bGluZ05vZGVJRCBzY3JvbGxpCiAKIHZvaWQgU2Nyb2xsaW5nVHJlZUxhdGNoaW5nQ29udHJvbGxl
cjo6bm9kZVdhc1JlbW92ZWQoU2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCkKIHsKLSAgICBMb2NrSG9s
ZGVyIGxvY2tlcihtX2xhdGNoZWROb2RlTXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX2xh
dGNoZWROb2RlTG9jayB9OwogICAgIGlmIChtX2xhdGNoZWROb2RlQW5kU3RlcHMgJiYgbV9sYXRj
aGVkTm9kZUFuZFN0ZXBzLT5zY3JvbGxpbmdOb2RlSUQgPT0gbm9kZUlEKQogICAgICAgICBtX2xh
dGNoZWROb2RlQW5kU3RlcHMucmVzZXQoKTsKIH0KIAogdm9pZCBTY3JvbGxpbmdUcmVlTGF0Y2hp
bmdDb250cm9sbGVyOjpjbGVhckxhdGNoZWROb2RlKCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tl
cihtX2xhdGNoZWROb2RlTXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX2xhdGNoZWROb2Rl
TG9jayB9OwogICAgIExPR19XSVRIX1NUUkVBTShTY3JvbGxMYXRjaGluZywgc3RyZWFtIDw8ICJT
Y3JvbGxpbmdUcmVlTGF0Y2hpbmdDb250cm9sbGVyICIgPDwgdGhpcyA8PCAiIGNsZWFyTGF0Y2hl
ZE5vZGUiKTsKICAgICBtX2xhdGNoZWROb2RlQW5kU3RlcHMucmVzZXQoKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVMYXRjaGluZ0Nv
bnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVM
YXRjaGluZ0NvbnRyb2xsZXIuaAppbmRleCA2NDE4ZWE4ODU3MzcwOWU2NDFhM2NmMzE3ODg3YTk2
NGNlM2NlZmUzLi5lNDdlZDY0YTQ5ZTRjNmFjZmM4MWFmOTIzODg3NDJkNWVlODQ4NGQ3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlTGF0Y2hp
bmdDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nVHJlZUxhdGNoaW5nQ29udHJvbGxlci5oCkBAIC0yOCw3ICsyOCw3IEBACiAjaWYgRU5BQkxF
KEFTWU5DX1NDUk9MTElORykKIAogI2luY2x1ZGUgIlNjcm9sbFR5cGVzLmgiCi0jaW5jbHVkZSA8
d3RmL0xvY2suaD4KKyNpbmNsdWRlIDx3dGYvQ2hlY2tlZExvY2suaD4KICNpbmNsdWRlIDx3dGYv
TWFya2FibGUuaD4KICNpbmNsdWRlIDx3dGYvTW9ub3RvbmljVGltZS5oPgogI2luY2x1ZGUgPHd0
Zi9PcHRpb25TZXQuaD4KQEAgLTYyLDggKzYyLDggQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBi
b29sIGxhdGNoZWROb2RlSXNSZWxldmFudCgpIGNvbnN0OwogCi0gICAgbXV0YWJsZSBMb2NrIG1f
bGF0Y2hlZE5vZGVNdXRleDsKLSAgICBPcHRpb25hbDxTY3JvbGxpbmdOb2RlQW5kUHJvY2Vzc2lu
Z1N0ZXBzPiBtX2xhdGNoZWROb2RlQW5kU3RlcHM7CisgICAgbXV0YWJsZSBDaGVja2VkTG9jayBt
X2xhdGNoZWROb2RlTG9jazsKKyAgICBPcHRpb25hbDxTY3JvbGxpbmdOb2RlQW5kUHJvY2Vzc2lu
Z1N0ZXBzPiBtX2xhdGNoZWROb2RlQW5kU3RlcHMgV1RGX0dVQVJERURfQllfTE9DSyhtX2xhdGNo
ZWROb2RlTG9jayk7CiAgICAgT3B0aW9uYWw8T3B0aW9uU2V0PFdoZWVsRXZlbnRQcm9jZXNzaW5n
U3RlcHM+PiBtX3Byb2Nlc3NpbmdTdGVwc0ZvckN1cnJlbnRHZXN0dXJlOwogICAgIE1vbm90b25p
Y1RpbWUgbV9sYXN0TGF0Y2hlZE5vZGVJbnRlcmF0aW9uVGltZTsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2VMb2FkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlTG9hZGVyLmNwcAppbmRleCBh
NDc0YTcwYzQwODUyYWUyZTFmOWY1OGE0OWEwMDAzNjE1ODBiMzE1Li44ODBkMjIyNjU4NGMwYzcz
YTQ0Y2MyNzMyNDIyODQ5NGFiNmJiYzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFzZUxvYWRlci5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgdm9p
ZCBIUlRGRGF0YWJhc2VMb2FkZXI6OmxvYWRBc3luY2hyb25vdXNseSgpCiB7CiAgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKIAotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fdGhyZWFkTG9jayk7
CisgICAgTG9ja2VyIGxvY2tlciB7IG1fdGhyZWFkTG9jayB9OwogICAgIAogICAgIGlmICghbV9o
cnRmRGF0YWJhc2UuZ2V0KCkgJiYgIW1fZGF0YWJhc2VMb2FkZXJUaHJlYWQpIHsKICAgICAgICAg
Ly8gU3RhcnQgdGhlIGFzeW5jaHJvbm91cyBkYXRhYmFzZSBsb2FkaW5nIHByb2Nlc3MuCkBAIC0x
MTAsNyArMTEwLDcgQEAgYm9vbCBIUlRGRGF0YWJhc2VMb2FkZXI6OmlzTG9hZGVkKCkgY29uc3QK
IAogdm9pZCBIUlRGRGF0YWJhc2VMb2FkZXI6OndhaXRGb3JMb2FkZXJUaHJlYWRDb21wbGV0aW9u
KCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3RocmVhZExvY2spOworICAgIExvY2tlciBs
b2NrZXIgeyBtX3RocmVhZExvY2sgfTsKICAgICAKICAgICAvLyB3YWl0Rm9yVGhyZWFkQ29tcGxl
dGlvbigpIHNob3VsZCBub3QgYmUgY2FsbGVkIHR3aWNlIGZvciB0aGUgc2FtZSB0aHJlYWQuCiAg
ICAgaWYgKG1fZGF0YWJhc2VMb2FkZXJUaHJlYWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFzZUxvYWRlci5oCmluZGV4IDFmZjQ5NjJhMjY0NjI0OWNh
ZWJhOTlmNGM3N2ZjNmQ0MzNiMDM0ZGIuLjlmODQ3ZDU0YWRhNmUxYjgyMmUyYWY2OWFkZjQ2NWMw
YWU1ZWRlZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZE
YXRhYmFzZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZE
YXRhYmFzZUxvYWRlci5oCkBAIC0zMSw3ICszMSw3IEBACiAKICNpbmNsdWRlICJIUlRGRGF0YWJh
c2UuaCIKICNpbmNsdWRlIDxtZW1vcnk+Ci0jaW5jbHVkZSA8d3RmL0xvY2suaD4KKyNpbmNsdWRl
IDx3dGYvQ2hlY2tlZExvY2suaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CkBAIC03NSw4ICs3
NSw4IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPEhSVEZEYXRhYmFzZT4gbV9ocnRm
RGF0YWJhc2U7CiAKICAgICAvLyBIb2xkaW5nIGEgbV90aHJlYWRMb2NrIGlzIHJlcXVpcmVkIHdo
ZW4gYWNjZXNzaW5nIG1fZGF0YWJhc2VMb2FkZXJUaHJlYWQuCi0gICAgTG9jayBtX3RocmVhZExv
Y2s7Ci0gICAgUmVmUHRyPFRocmVhZD4gbV9kYXRhYmFzZUxvYWRlclRocmVhZDsKKyAgICBDaGVj
a2VkTG9jayBtX3RocmVhZExvY2s7CisgICAgUmVmUHRyPFRocmVhZD4gbV9kYXRhYmFzZUxvYWRl
clRocmVhZCBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fdGhyZWFkTG9jayk7CiAKICAgICBmbG9hdCBt
X2RhdGFiYXNlU2FtcGxlUmF0ZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9EZXN0aW5hdGlvbkNvY29hLmNwcAppbmRleCBi
Y2RlNDdiODk2MDRlMTQ3YTQ1NDQwYzZjODljODJkNmFiYzU2ZWMzLi5lMTRmODc0MzJmMmEwOWJh
Y2EyNmJmNjZiYTY4MzRjNmZmODVkMGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRGVzdGluYXRpb25Db2NvYS5jcHAKQEAg
LTE5Miw3ICsxOTIsNyBAQCBzdGF0aWMgdm9pZCBhc3NpZ25BdWRpb0J1ZmZlcnNUb0J1cyhBdWRp
b0J1ZmZlciogYnVmZmVycywgQXVkaW9CdXMmIGJ1cywgVUludDMyCiAKIGJvb2wgQXVkaW9EZXN0
aW5hdGlvbkNvY29hOjpoYXNFbm91Z2hGcmFtZXMoVUludDMyIG51bWJlck9mRnJhbWVzKSBjb25z
dAogewotICAgIHJldHVybiBtX2ZpZm8tPmxlbmd0aCgpID49IG51bWJlck9mRnJhbWVzOworICAg
IHJldHVybiBmaWZvU2l6ZSA+PSBudW1iZXJPZkZyYW1lczsKIH0KIAogLy8gUHVsbHMgb24gb3Vy
IHByb3ZpZGVyIHRvIGdldCByZW5kZXJlZCBhdWRpbyBzdHJlYW0uCkBAIC0yMTYsNyArMjE2LDcg
QEAgT1NTdGF0dXMgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpyZW5kZXIoZG91YmxlIHNhbXBsZVRp
bWUsIHVpbnQ2NF90IGhvc3RUaW1lLCBVSW4KICAgICBzaXplX3QgZnJhbWVzVG9SZW5kZXI7CiAK
ICAgICB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9maWZvTG9jayk7CisgICAg
ICAgIExvY2tlciBsb2NrZXIgeyBtX2ZpZm9Mb2NrIH07CiAgICAgICAgIGZyYW1lc1RvUmVuZGVy
ID0gbV9maWZvLT5wdWxsKG1fb3V0cHV0QnVzLnB0cigpLCBudW1iZXJPZkZyYW1lcyk7CiAgICAg
fQogCkBAIC0yNTIsNyArMjUyLDcgQEAgdm9pZCBBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnJlbmRl
ck9uUmVuZGVyaW5nVGhlYWQoc2l6ZV90IGZyYW1lc1RvUmVuZGVyKQogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBjYWxsUmVuZGVyQ2FsbGJhY2sobnVsbHB0ciwgbV9yZW5kZXJCdXMucHRyKCks
IEF1ZGlvVXRpbGl0aWVzOjpyZW5kZXJRdWFudHVtU2l6ZSwgbV9vdXRwdXRUaW1lc3RhbXApOwog
Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9maWZvTG9jayk7CisgICAgICAgIExv
Y2tlciBsb2NrZXIgeyBtX2ZpZm9Mb2NrIH07CiAgICAgICAgIG1fZmlmby0+cHVzaChtX3JlbmRl
ckJ1cy5wdHIoKSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vY29jb2EvQXVkaW9EZXN0aW5hdGlvbkNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuaAppbmRleCAzYzE2NzAy
Y2NlNzcyMzZmYTc1ZTQyN2NmNTRmYmIwM2MwNWU5YjJlLi41ZDEyMzkyYmU4MWU3MGIyZmMwZTIz
NjYzZjUwMzU0NmQ0NzQxOGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9jb2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuaApAQCAtMzAsNiArMzAs
NyBAQAogI2luY2x1ZGUgIkF1ZGlvRGVzdGluYXRpb24uaCIKICNpbmNsdWRlICJBdWRpb091dHB1
dFVuaXRBZGFwdG9yLmgiCiAjaW5jbHVkZSA8QXVkaW9Vbml0L0F1ZGlvVW5pdC5oPgorI2luY2x1
ZGUgPHd0Zi9DaGVja2VkTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRl
IDx3dGYvVW5pcXVlUmVmLmg+CiAKQEAgLTg0LDggKzg1LDggQEAgcHJpdmF0ZToKIAogICAgIC8v
IFJlc29sdmVzIHRoZSBidWZmZXIgc2l6ZSBtaXNtYXRjaCBiZXR3ZWVuIHRoZSBXZWJBdWRpbyBl
bmdpbmUgYW5kCiAgICAgLy8gdGhlIGNhbGxiYWNrIGZ1bmN0aW9uIGZyb20gdGhlIGFjdHVhbCBh
dWRpbyBkZXZpY2UuCi0gICAgVW5pcXVlUmVmPFB1c2hQdWxsRklGTz4gbV9maWZvOwotICAgIExv
Y2sgbV9maWZvTG9jazsKKyAgICBDaGVja2VkTG9jayBtX2ZpZm9Mb2NrOworICAgIFVuaXF1ZVJl
ZjxQdXNoUHVsbEZJRk8+IG1fZmlmbyBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fZmlmb0xvY2spOwog
CiAgICAgc3RkOjp1bmlxdWVfcHRyPE11bHRpQ2hhbm5lbFJlc2FtcGxlcj4gbV9yZXNhbXBsZXI7
CiAgICAgQXVkaW9JT1Bvc2l0aW9uIG1fb3V0cHV0VGltZXN0YW1wOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuY3BwCmluZGV4IGI3NzEy
NzU5NzI5MTJmZTEwYmExOWFhMjkzOTJlZjlhZDMyNTk5OTkuLjM4YWJmMDZhNGM0Zjc2YmRjMTcw
OTgwOTgzMGNlMWQ3MGVhYzhkNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5jcHAKQEAgLTI0Miw5ICsyNDIsMTUgQEAgdm9pZCBD
RE1Qcm94eTo6dXBkYXRlS2V5U3RvcmUoY29uc3QgS2V5U3RvcmUmIG5ld0tleVN0b3JlKQogICAg
IG1fa2V5c0NvbmRpdGlvbi5ub3RpZnlBbGwoKTsKIH0KIAorY29uc3QgQ0RNSW5zdGFuY2VQcm94
eSogQ0RNUHJveHk6Omluc3RhbmNlKCkgY29uc3QKK3sKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9p
bnN0YW5jZUxvY2sgfTsKKyAgICByZXR1cm4gbV9pbnN0YW5jZTsKK30KKwogdm9pZCBDRE1Qcm94
eTo6c2V0SW5zdGFuY2UoQ0RNSW5zdGFuY2VQcm94eSogaW5zdGFuY2UpCiB7Ci0gICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhtX2luc3RhbmNlTXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBt
X2luc3RhbmNlTG9jayB9OwogICAgIG1faW5zdGFuY2UgPSBpbnN0YW5jZTsKIH0KIApAQCAtMjU3
LDcgKzI2Myw3IEBAIFJlZlB0cjxLZXlIYW5kbGU+IENETVByb3h5OjprZXlIYW5kbGUoY29uc3Qg
S2V5SURUeXBlJiBrZXlJRCkgY29uc3QKIAogdm9pZCBDRE1Qcm94eTo6c3RhcnRlZFdhaXRpbmdG
b3JLZXkoKSBjb25zdAogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9pbnN0YW5jZU11
dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9pbnN0YW5jZUxvY2sgfTsKICAgICBMT0coRU1F
LCAiRU1FIC0gQ0RNUHJveHkgLSBzdGFydGVkIHdhaXRpbmcgZm9yIGEga2V5Iik7CiAgICAgQVNT
RVJUKG1faW5zdGFuY2UpOwogICAgIG1faW5zdGFuY2UtPnN0YXJ0ZWRXYWl0aW5nRm9yS2V5KCk7
CkBAIC0yNjUsNyArMjcxLDcgQEAgdm9pZCBDRE1Qcm94eTo6c3RhcnRlZFdhaXRpbmdGb3JLZXko
KSBjb25zdAogCiB2b2lkIENETVByb3h5OjpzdG9wcGVkV2FpdGluZ0ZvcktleSgpIGNvbnN0CiB7
Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2luc3RhbmNlTXV0ZXgpOworICAgIExvY2tl
ciBsb2NrZXIgeyBtX2luc3RhbmNlTG9jayB9OwogICAgIExPRyhFTUUsICJFTUUgLSBDRE1Qcm94
eSAtIHN0b3BwZWQgd2FpdGluZyBmb3IgYSBrZXkiKTsKICAgICBBU1NFUlQobV9pbnN0YW5jZSk7
CiAgICAgbV9pbnN0YW5jZS0+c3RvcHBlZFdhaXRpbmdGb3JLZXkoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5oCmluZGV4IGY0YmM3OWYx
OWI0OTViOWYwMDRmY2EzZTQyZDE4NzI0MWU5ZjVmYjcuLmI0NGYxNTg5YmRkMWM2Y2IwYTU1MTU3
MDVlYjUxYzEwODk2MzBhNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Vu
Y3J5cHRlZG1lZGlhL0NETVByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5j
cnlwdGVkbWVkaWEvQ0RNUHJveHkuaApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIk1lZGlh
UGxheWVyUHJpdmF0ZS5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0
Zi9Cb3hQdHIuaD4KKyNpbmNsdWRlIDx3dGYvQ2hlY2tlZExvY2suaD4KICNpbmNsdWRlIDx3dGYv
Q29uZGl0aW9uLmg+CiAKICNpZiBFTkFCTEUoVEhVTkRFUikKQEAgLTE2NywxMSArMTY4LDExIEBA
IHByb3RlY3RlZDoKICAgICBPcHRpb25hbDxLZXlIYW5kbGVWYWx1ZVZhcmlhbnQ+IGdldE9yV2Fp
dEZvcktleVZhbHVlKGNvbnN0IEtleUlEVHlwZSYsIFdlYWtQdHI8Q0RNUHJveHlEZWNyeXB0aW9u
Q2xpZW50PiYmKSBjb25zdDsKICAgICB2b2lkIHN0YXJ0ZWRXYWl0aW5nRm9yS2V5KCkgY29uc3Q7
CiAgICAgdm9pZCBzdG9wcGVkV2FpdGluZ0ZvcktleSgpIGNvbnN0OwotICAgIGNvbnN0IENETUlu
c3RhbmNlUHJveHkqIGluc3RhbmNlKCkgY29uc3QgeyByZXR1cm4gbV9pbnN0YW5jZTsgfQorICAg
IGNvbnN0IENETUluc3RhbmNlUHJveHkqIGluc3RhbmNlKCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0g
ICAgbXV0YWJsZSBMb2NrIG1faW5zdGFuY2VNdXRleDsKLSAgICBDRE1JbnN0YW5jZVByb3h5KiBt
X2luc3RhbmNlOworICAgIG11dGFibGUgQ2hlY2tlZExvY2sgbV9pbnN0YW5jZUxvY2s7CisgICAg
Q0RNSW5zdGFuY2VQcm94eSogbV9pbnN0YW5jZSBXVEZfR1VBUkRFRF9CWV9MT0NLKG1faW5zdGFu
Y2VMb2NrKTsKIAogICAgIG11dGFibGUgTG9jayBtX2tleXNNdXRleDsKICAgICBtdXRhYmxlIENv
bmRpdGlvbiBtX2tleXNDb25kaXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwCmluZGV4IDBkMTlkZGIzNDExZjQxNmZjMmUz
ZGI3YmYyMGVhYTI1NTM1NTVmMjYuLjY4YjRmNTczNTIwY2JiMGI2NWE5YjQ4NWY1ZDY5YTkzNzRh
ZTBlYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb24uY3BwCkBAIC01Niw4ICs1Niw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb24oTWVkaWFQbGF5ZXIqIHBsYXllcikKICAgICA6IG1fcGxheWVyKHBsYXllcikKLSAgICAs
IG1fcXVldWVkTm90aWZpY2F0aW9ucygpCi0gICAgLCBtX3F1ZXVlTXV0ZXgoKQogICAgICwgbV9u
ZXR3b3JrU3RhdGUoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6RW1wdHkpCiAgICAgLCBtX3Jl
YWR5U3RhdGUoTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGU6OkhhdmVOb3RoaW5nKQogICAgICwgbV9w
cmVsb2FkKE1lZGlhUGxheWVyOjpQcmVsb2FkOjpBdXRvKQpAQCAtNzEwLDcgKzcwOCw3IEBAIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpzZXRQcmVsb2FkKE1lZGlhUGxheWVy
OjpQcmVsb2FkIHByZWxvYWQpCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
OjpzZXREZWxheUNhbGxiYWNrcyhib29sIGRlbGF5KSBjb25zdAogewotICAgIExvY2tIb2xkZXIg
bG9jayhtX3F1ZXVlTXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX3F1ZXVlZE5vdGlmaWNh
dGlvbnNMb2NrIH07CiAgICAgaWYgKGRlbGF5KQogICAgICAgICArK21fZGVsYXlDYWxsYmFja3M7
CiAgICAgZWxzZSB7CkBAIC03MjcsNyArNzI1LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb246Om1haW5UaHJlYWRDYWxsYmFjaygpCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uOjpjbGVhck1haW5UaHJlYWRQZW5kaW5nRmxhZygpCiB7Ci0gICAgTG9j
a0hvbGRlciBsb2NrKG1fcXVldWVNdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fcXVldWVk
Tm90aWZpY2F0aW9uc0xvY2sgfTsKICAgICBtX21haW5UaHJlYWRDYWxsUGVuZGluZyA9IGZhbHNl
OwogfQogCkBAIC03NDMsMzIgKzc0MSwzMiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbjo6c2NoZWR1bGVNYWluVGhyZWFkTm90aWZpY2F0aW9uKE5vdGlmaWNhdGlvbgogCiB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6c2NoZWR1bGVNYWluVGhyZWFkTm90
aWZpY2F0aW9uKE5vdGlmaWNhdGlvbiYmIG5vdGlmaWNhdGlvbikKIHsKLSAgICBtX3F1ZXVlTXV0
ZXgubG9jaygpOworICAgIHsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fcXVldWVkTm90aWZp
Y2F0aW9uc0xvY2sgfTsKIAotICAgIC8vIEl0IGlzIGltcG9ydGFudCB0byBhbHdheXMgcHJvY2Vz
cyB0aGUgcHJvcGVydGllcyBpbiB0aGUgb3JkZXIgdGhhdCB3ZSBhcmUgbm90aWZpZWQsCi0gICAg
Ly8gc28gYWx3YXlzIGdvIHRocm91Z2ggdGhlIHF1ZXVlIGJlY2F1c2Ugbm90aWZpY2F0aW9ucyBo
YXBwZW4gb24gZGlmZmVyZW50IHRocmVhZHMuCi0gICAgbV9xdWV1ZWROb3RpZmljYXRpb25zLmFw
cGVuZChXVEZNb3ZlKG5vdGlmaWNhdGlvbikpOworICAgICAgICAvLyBJdCBpcyBpbXBvcnRhbnQg
dG8gYWx3YXlzIHByb2Nlc3MgdGhlIHByb3BlcnRpZXMgaW4gdGhlIG9yZGVyIHRoYXQgd2UgYXJl
IG5vdGlmaWVkLAorICAgICAgICAvLyBzbyBhbHdheXMgZ28gdGhyb3VnaCB0aGUgcXVldWUgYmVj
YXVzZSBub3RpZmljYXRpb25zIGhhcHBlbiBvbiBkaWZmZXJlbnQgdGhyZWFkcy4KKyAgICAgICAg
bV9xdWV1ZWROb3RpZmljYXRpb25zLmFwcGVuZChXVEZNb3ZlKG5vdGlmaWNhdGlvbikpOwogCiAj
aWYgT1MoV0lORE9XUykKLSAgICBib29sIGRlbGF5RGlzcGF0Y2ggPSB0cnVlOworICAgICAgICBi
b29sIGRlbGF5RGlzcGF0Y2ggPSB0cnVlOwogI2Vsc2UKLSAgICBib29sIGRlbGF5RGlzcGF0Y2gg
PSBtX2RlbGF5Q2FsbGJhY2tzIHx8ICFpc01haW5UaHJlYWQoKTsKKyAgICAgICAgYm9vbCBkZWxh
eURpc3BhdGNoID0gbV9kZWxheUNhbGxiYWNrcyB8fCAhaXNNYWluVGhyZWFkKCk7CiAjZW5kaWYK
LSAgICBpZiAoZGVsYXlEaXNwYXRjaCAmJiAhbV9tYWluVGhyZWFkQ2FsbFBlbmRpbmcpIHsKLSAg
ICAgICAgbV9tYWluVGhyZWFkQ2FsbFBlbmRpbmcgPSB0cnVlOwotCi0gICAgICAgIGNhbGxPbk1h
aW5UaHJlYWQoW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSB7Ci0gICAgICAgICAgICBp
ZiAoIXdlYWtUaGlzKQotICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKGRlbGF5
RGlzcGF0Y2ggJiYgIW1fbWFpblRocmVhZENhbGxQZW5kaW5nKSB7CisgICAgICAgICAgICBtX21h
aW5UaHJlYWRDYWxsUGVuZGluZyA9IHRydWU7CiAKLSAgICAgICAgICAgIHdlYWtUaGlzLT5tYWlu
VGhyZWFkQ2FsbGJhY2soKTsKLSAgICAgICAgfSk7Ci0gICAgfQorICAgICAgICAgICAgY2FsbE9u
TWFpblRocmVhZChbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldIHsKKyAgICAgICAgICAg
ICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICBt
X3F1ZXVlTXV0ZXgudW5sb2NrKCk7CisgICAgICAgICAgICAgICAgd2Vha1RoaXMtPm1haW5UaHJl
YWRDYWxsYmFjaygpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KIAotICAgIGlmIChkZWxh
eURpc3BhdGNoKQotICAgICAgICByZXR1cm47CisgICAgICAgIGlmIChkZWxheURpc3BhdGNoKQor
ICAgICAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIGRpc3BhdGNoTm90aWZpY2F0aW9uKCk7
CiB9CkBAIC03NzksNyArNzc3LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b246OmRpc3BhdGNoTm90aWZpY2F0aW9uKCkKIAogICAgIE5vdGlmaWNhdGlvbiBub3RpZmljYXRp
b247CiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2sobV9xdWV1ZU11dGV4KTsKKyAgICAg
ICAgTG9ja2VyIGxvY2tlciB7IG1fcXVldWVkTm90aWZpY2F0aW9uc0xvY2sgfTsKICAgICAgICAg
CiAgICAgICAgIGlmIChtX3F1ZXVlZE5vdGlmaWNhdGlvbnMuaXNFbXB0eSgpKQogICAgICAgICAg
ICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbi5oCmluZGV4IDc3ZjRjNjUxZmE0ZTZiZTllNWQ5ZWVlMzRiMzIxN2EyMDIzYThl
Y2MuLmQ4YWI5YzY2NzJjYTdlZjFiNjRlNmVhMTBhMGIxZjFlNzA4ZmU5OGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmgKQEAgLTMx
LDkgKzMxLDkgQEAKICNpbmNsdWRlICJJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmgiCiAjaW5j
bHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKKyNpbmNsdWRl
IDx3dGYvQ2hlY2tlZExvY2suaD4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3
dGYvRnVuY3Rpb24uaD4KLSNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9Mb2dn
ZXJIZWxwZXIuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCkBAIC0zMjMsOCArMzIzLDgg
QEAgcHJpdmF0ZToKIAogICAgIFdURjo6RnVuY3Rpb248dm9pZCgpPiBtX3BlbmRpbmdTZWVrOwog
Ci0gICAgRGVxdWU8Tm90aWZpY2F0aW9uPiBtX3F1ZXVlZE5vdGlmaWNhdGlvbnM7Ci0gICAgbXV0
YWJsZSBMb2NrIG1fcXVldWVNdXRleDsKKyAgICBtdXRhYmxlIENoZWNrZWRMb2NrIG1fcXVldWVk
Tm90aWZpY2F0aW9uc0xvY2s7CisgICAgRGVxdWU8Tm90aWZpY2F0aW9uPiBtX3F1ZXVlZE5vdGlm
aWNhdGlvbnMgV1RGX0dVQVJERURfQllfTE9DSyhtX3F1ZXVlZE5vdGlmaWNhdGlvbnNMb2NrKTsK
IAogICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gbV9jYWNo
ZWRMb2FkZWRUaW1lUmFuZ2VzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVh
bUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oCmluZGV4IDBkZjc2
ZTBkYjI4OGU0MzhiMmIxMWMzYmNkMWFjYmZkNWNlM2MzYzEuLjFiZDQ5ZjE0ZTFiYTNhZWExNzcz
NzhkOWI5MDMzYTg2NDQ4ZmVjY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFt
QVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oCkBAIC0zMSw2
ICszMSw3IEBACiAjaW5jbHVkZSAiTWVkaWFTYW1wbGUuaCIKICNpbmNsdWRlICJNZWRpYVN0cmVh
bVByaXZhdGUuaCIKICNpbmNsdWRlICJTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaCIKKyNpbmNs
dWRlIDx3dGYvQ2hlY2tlZExvY2suaD4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Mb2dnZXJIZWxwZXIuaD4KQEAgLTI2NCw4
ICsyNjUsOCBAQCBwcml2YXRlOgogCiAgICAgUmV0YWluUHRyPFdlYlJvb3RTYW1wbGVCdWZmZXJC
b3VuZHNDaGFuZ2VMaXN0ZW5lcj4gbV9ib3VuZHNDaGFuZ2VMaXN0ZW5lcjsKIAotICAgIExvY2sg
bV9jdXJyZW50VmlkZW9TYW1wbGVMb2NrOwotICAgIFJlZlB0cjxNZWRpYVNhbXBsZT4gbV9jdXJy
ZW50VmlkZW9TYW1wbGU7CisgICAgQ2hlY2tlZExvY2sgbV9jdXJyZW50VmlkZW9TYW1wbGVMb2Nr
OworICAgIFJlZlB0cjxNZWRpYVNhbXBsZT4gbV9jdXJyZW50VmlkZW9TYW1wbGUgV1RGX0dVQVJE
RURfQllfTE9DSyhtX2N1cnJlbnRWaWRlb1NhbXBsZUxvY2spOwogCiAgICAgYm9vbCBtX3BsYXlp
bmcgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9tdXRlZCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVh
bUFWRk9iakMubW0KaW5kZXggZjM1NDlkNDdmYTI0MWQ2Mjg4NGM0ZmM3ZWZlN2I2NWNjODFjNTJl
Yy4uYTlhMDY2MTkwNWUyODA3YWQyNzI4NTkzMTZjMmNhZmViZjZiM2Q2NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U3RyZWFtQVZGT2JqQy5tbQpAQCAtMjcyLDcgKzI3Miw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpwcm9jZXNzTmV3VmlkZW9TYW1wbGUoTWVkaWFTYW1wbGUm
IHNhCiB7CiAgICAgaWYgKCFpc01haW5UaHJlYWQoKSkgewogICAgICAgICB7Ci0gICAgICAgICAg
ICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fY3VycmVudFZpZGVvU2FtcGxlTG9jayk7CisgICAg
ICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9jdXJyZW50VmlkZW9TYW1wbGVMb2NrIH07CiAgICAg
ICAgICAgICBtX2N1cnJlbnRWaWRlb1NhbXBsZSA9ICZzYW1wbGU7CiAgICAgICAgIH0KICAgICAg
ICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgaGFzQ2hh
bmdlZE9yaWVudGF0aW9uXSgpIG11dGFibGUgewpAQCAtMjg0LDcgKzI4NCw3IEBAIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpwcm9jZXNzTmV3VmlkZW9TYW1wbGUo
TWVkaWFTYW1wbGUmIHNhCiAKICAgICAgICAgICAgIFJlZlB0cjxNZWRpYVNhbXBsZT4gc2FtcGxl
OwogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2so
d2Vha1RoaXMtPm1fY3VycmVudFZpZGVvU2FtcGxlTG9jayk7CisgICAgICAgICAgICAgICAgTG9j
a2VyIGxvY2tlciB7IHdlYWtUaGlzLT5tX2N1cnJlbnRWaWRlb1NhbXBsZUxvY2sgfTsKICAgICAg
ICAgICAgICAgICBzYW1wbGUgPSBXVEZNb3ZlKHdlYWtUaGlzLT5tX2N1cnJlbnRWaWRlb1NhbXBs
ZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoIXNhbXBsZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lPU3VyZmFjZVBvb2wuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSU9TdXJmYWNlUG9vbC5jcHAKaW5k
ZXggN2ZmNjY0NzZjZTJkZjI3YTliZDQxMWU5YmNkNzMxNDRkYWEyOGNkNC4uYjhlMGExNmMzZjUy
NThjNzY0ZDk1YjhlMjUxOTdmN2I5ZTIzYWMwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSU9TdXJmYWNlUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSU9TdXJmYWNlUG9vbC5jcHAKQEAgLTEwNCw3ICsxMDQs
NyBAQCB2b2lkIElPU3VyZmFjZVBvb2w6OmRpZFVzZVN1cmZhY2VPZlNpemUoSW50U2l6ZSBzaXpl
KQogCiBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBJT1N1cmZhY2VQb29sOjp0YWtlU3VyZmFj
ZShJbnRTaXplIHNpemUsIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlLCBJT1N1cmZhY2U6OkZv
cm1hdCBmb3JtYXQpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2xvY2spOworICAg
IExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICBDYWNoZWRTdXJmYWNlTWFwOjppdGVyYXRv
ciBtYXBJdGVyID0gbV9jYWNoZWRTdXJmYWNlcy5maW5kKHNpemUpOwogCiAgICAgaWYgKG1hcEl0
ZXIgPT0gbV9jYWNoZWRTdXJmYWNlcy5lbmQoKSkgewpAQCAtMTcwLDcgKzE3MCw3IEBAIGJvb2wg
SU9TdXJmYWNlUG9vbDo6c2hvdWxkQ2FjaGVTdXJmYWNlKGNvbnN0IElPU3VyZmFjZSYgc3VyZmFj
ZSkgY29uc3QKIAogdm9pZCBJT1N1cmZhY2VQb29sOjphZGRTdXJmYWNlKHN0ZDo6dW5pcXVlX3B0
cjxJT1N1cmZhY2U+IHN1cmZhY2UpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2xv
Y2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICBpZiAoIXNob3VsZENhY2hl
U3VyZmFjZSgqc3VyZmFjZSkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMjAzLDcgKzIwMyw3IEBA
IHZvaWQgSU9TdXJmYWNlUG9vbDo6aW5zZXJ0U3VyZmFjZUludG9Qb29sKHN0ZDo6dW5pcXVlX3B0
cjxJT1N1cmZhY2U+IHN1cmZhY2UpCiAKIHZvaWQgSU9TdXJmYWNlUG9vbDo6c2V0UG9vbFNpemUo
c2l6ZV90IHBvb2xTaXplSW5CeXRlcykKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1f
bG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgIG1fbWF4aW11bUJ5dGVz
Q2FjaGVkID0gcG9vbFNpemVJbkJ5dGVzOwogICAgIGV2aWN0KDApOwogfQpAQCAtMzA2LDcgKzMw
Niw3IEBAIGJvb2wgSU9TdXJmYWNlUG9vbDo6bWFya09sZGVyU3VyZmFjZXNQdXJnZWFibGUoKQog
CiB2b2lkIElPU3VyZmFjZVBvb2w6OmNvbGxlY3Rpb25UaW1lckZpcmVkKCkKIHsKLSAgICBhdXRv
IGxvY2tlciA9IGhvbGRMb2NrKG1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9
OwogICAgIGNvbGxlY3RJblVzZVN1cmZhY2VzKCk7CiAgICAgYm9vbCBtYXJrZWRBbGxTdXJmYWNl
cyA9IG1hcmtPbGRlclN1cmZhY2VzUHVyZ2VhYmxlKCk7CiAKQEAgLTMyNSw3ICszMjUsNyBAQCB2
b2lkIElPU3VyZmFjZVBvb2w6OnNjaGVkdWxlQ29sbGVjdGlvblRpbWVyKCkKIAogdm9pZCBJT1N1
cmZhY2VQb29sOjpkaXNjYXJkQWxsU3VyZmFjZXMoKQogewotICAgIGF1dG8gbG9ja2VyID0gaG9s
ZExvY2sobV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgZGlzY2Fy
ZEFsbFN1cmZhY2VzSW50ZXJuYWwoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSU9TdXJmYWNlUG9vbC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSU9TdXJmYWNlUG9vbC5oCmluZGV4IDc2ODg2MGYyMDA5YjRjOTQ4
YjQ3ZTNhODQ4MGVkM2M5ODY5Nzc3YzguLjNiNTk2NDAwNzI4ZGFjMWY0NGVlMzUyNjI2Y2RiNGU5
YTQzNTkyZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0lPU3VyZmFjZVBvb2wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JT1N1cmZhY2VQb29sLmgKQEAgLTMxLDkgKzMxLDkgQEAKICNpbmNsdWRlICJJbnRTaXplLmgi
CiAjaW5jbHVkZSAiSW50U2l6ZUhhc2guaCIKICNpbmNsdWRlICJUaW1lci5oIgorI2luY2x1ZGUg
PHd0Zi9DaGVja2VkTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJE
ZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogCkBAIC03OCwzOSArNzgsMzkg
QEAgcHJpdmF0ZToKICAgICAvLyB0aGV5IGNhbid0IGJlIGltbWVkaWF0ZWx5IHJldHVybmVkIHdo
ZW4gcmVxdWVzdGVkIChidXQgd2lsbCBiZSBmcmVlZCB1cCBpbiB0aGUgZnV0dXJlKS4KICAgICBz
dGF0aWMgY29uc3RleHByIHNpemVfdCBtYXhpbXVtSW5Vc2VCeXRlcyA9IGRlZmF1bHRNYXhpbXVt
Qnl0ZXNDYWNoZWQgLyAyOwogICAgIAotICAgIGJvb2wgc2hvdWxkQ2FjaGVTdXJmYWNlKGNvbnN0
IElPU3VyZmFjZSYpIGNvbnN0OworICAgIGJvb2wgc2hvdWxkQ2FjaGVTdXJmYWNlKGNvbnN0IElP
U3VyZmFjZSYpIGNvbnN0IFdURl9SRVFVSVJFU19MT0NLKG1fbG9jayk7CiAKLSAgICB2b2lkIHdp
bGxBZGRTdXJmYWNlKElPU3VyZmFjZSYsIGJvb2wgaW5Vc2UpOwotICAgIHZvaWQgZGlkUmVtb3Zl
U3VyZmFjZShJT1N1cmZhY2UmLCBib29sIGluVXNlKTsKLSAgICB2b2lkIGRpZFVzZVN1cmZhY2VP
ZlNpemUoSW50U2l6ZSk7CisgICAgdm9pZCB3aWxsQWRkU3VyZmFjZShJT1N1cmZhY2UmLCBib29s
IGluVXNlKSBXVEZfUkVRVUlSRVNfTE9DSyhtX2xvY2spOworICAgIHZvaWQgZGlkUmVtb3ZlU3Vy
ZmFjZShJT1N1cmZhY2UmLCBib29sIGluVXNlKSBXVEZfUkVRVUlSRVNfTE9DSyhtX2xvY2spOwor
ICAgIHZvaWQgZGlkVXNlU3VyZmFjZU9mU2l6ZShJbnRTaXplKSBXVEZfUkVRVUlSRVNfTE9DSyht
X2xvY2spOwogCi0gICAgdm9pZCBpbnNlcnRTdXJmYWNlSW50b1Bvb2woc3RkOjp1bmlxdWVfcHRy
PElPU3VyZmFjZT4pOworICAgIHZvaWQgaW5zZXJ0U3VyZmFjZUludG9Qb29sKHN0ZDo6dW5pcXVl
X3B0cjxJT1N1cmZhY2U+KSBXVEZfUkVRVUlSRVNfTE9DSyhtX2xvY2spOwogCi0gICAgdm9pZCBl
dmljdChzaXplX3QgYWRkaXRpb25hbFNpemUpOwotICAgIHZvaWQgdHJ5RXZpY3RJblVzZVN1cmZh
Y2UoKTsKLSAgICB2b2lkIHRyeUV2aWN0T2xkZXN0Q2FjaGVkU3VyZmFjZSgpOworICAgIHZvaWQg
ZXZpY3Qoc2l6ZV90IGFkZGl0aW9uYWxTaXplKSBXVEZfUkVRVUlSRVNfTE9DSyhtX2xvY2spOwor
ICAgIHZvaWQgdHJ5RXZpY3RJblVzZVN1cmZhY2UoKSBXVEZfUkVRVUlSRVNfTE9DSyhtX2xvY2sp
OworICAgIHZvaWQgdHJ5RXZpY3RPbGRlc3RDYWNoZWRTdXJmYWNlKCkgV1RGX1JFUVVJUkVTX0xP
Q0sobV9sb2NrKTsKIAotICAgIHZvaWQgc2NoZWR1bGVDb2xsZWN0aW9uVGltZXIoKTsKKyAgICB2
b2lkIHNjaGVkdWxlQ29sbGVjdGlvblRpbWVyKCkgV1RGX1JFUVVJUkVTX0xPQ0sobV9sb2NrKTsK
ICAgICB2b2lkIGNvbGxlY3Rpb25UaW1lckZpcmVkKCk7Ci0gICAgdm9pZCBjb2xsZWN0SW5Vc2VT
dXJmYWNlcygpOwotICAgIGJvb2wgbWFya09sZGVyU3VyZmFjZXNQdXJnZWFibGUoKTsKKyAgICB2
b2lkIGNvbGxlY3RJblVzZVN1cmZhY2VzKCkgV1RGX1JFUVVJUkVTX0xPQ0sobV9sb2NrKTsKKyAg
ICBib29sIG1hcmtPbGRlclN1cmZhY2VzUHVyZ2VhYmxlKCkgV1RGX1JFUVVJUkVTX0xPQ0sobV9s
b2NrKTsKIAogICAgIHZvaWQgcGxhdGZvcm1HYXJiYWdlQ29sbGVjdE5vdygpOwogCi0gICAgdm9p
ZCBkaXNjYXJkQWxsU3VyZmFjZXNJbnRlcm5hbCgpOworICAgIHZvaWQgZGlzY2FyZEFsbFN1cmZh
Y2VzSW50ZXJuYWwoKSBXVEZfUkVRVUlSRVNfTE9DSyhtX2xvY2spOwogCiAgICAgdm9pZCBzaG93
UG9vbFN0YXRpc3RpY3MoY29uc3QgY2hhciopOwogCi0gICAgUnVuTG9vcDo6VGltZXI8SU9TdXJm
YWNlUG9vbD4gbV9jb2xsZWN0aW9uVGltZXI7Ci0gICAgTG9jayBtX2xvY2s7Ci0gICAgQ2FjaGVk
U3VyZmFjZU1hcCBtX2NhY2hlZFN1cmZhY2VzOwotICAgIENhY2hlZFN1cmZhY2VRdWV1ZSBtX2lu
VXNlU3VyZmFjZXM7Ci0gICAgQ2FjaGVkU3VyZmFjZURldGFpbHNNYXAgbV9zdXJmYWNlRGV0YWls
czsKLSAgICBWZWN0b3I8SW50U2l6ZT4gbV9zaXplc0luUHJ1bmVPcmRlcjsKKyAgICBDaGVja2Vk
TG9jayBtX2xvY2s7CisgICAgUnVuTG9vcDo6VGltZXI8SU9TdXJmYWNlUG9vbD4gbV9jb2xsZWN0
aW9uVGltZXIgV1RGX0dVQVJERURfQllfTE9DSyhtX2xvY2spOworICAgIENhY2hlZFN1cmZhY2VN
YXAgbV9jYWNoZWRTdXJmYWNlcyBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fbG9jayk7CisgICAgQ2Fj
aGVkU3VyZmFjZVF1ZXVlIG1faW5Vc2VTdXJmYWNlcyBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fbG9j
ayk7CisgICAgQ2FjaGVkU3VyZmFjZURldGFpbHNNYXAgbV9zdXJmYWNlRGV0YWlscyBXVEZfR1VB
UkRFRF9CWV9MT0NLKG1fbG9jayk7CisgICAgVmVjdG9yPEludFNpemU+IG1fc2l6ZXNJblBydW5l
T3JkZXIgV1RGX0dVQVJERURfQllfTE9DSyhtX2xvY2spOwogCi0gICAgc2l6ZV90IG1fYnl0ZXND
YWNoZWQgeyAwIH07Ci0gICAgc2l6ZV90IG1faW5Vc2VCeXRlc0NhY2hlZCB7IDAgfTsKLSAgICBz
aXplX3QgbV9tYXhpbXVtQnl0ZXNDYWNoZWQgeyBkZWZhdWx0TWF4aW11bUJ5dGVzQ2FjaGVkIH07
CisgICAgc2l6ZV90IG1fYnl0ZXNDYWNoZWQgV1RGX0dVQVJERURfQllfTE9DSyhtX2xvY2spIHsg
MCB9OworICAgIHNpemVfdCBtX2luVXNlQnl0ZXNDYWNoZWQgV1RGX0dVQVJERURfQllfTE9DSyht
X2xvY2spIHsgMCB9OworICAgIHNpemVfdCBtX21heGltdW1CeXRlc0NhY2hlZCBXVEZfR1VBUkRF
RF9CWV9MT0NLKG1fbG9jaykgeyBkZWZhdWx0TWF4aW11bUJ5dGVzQ2FjaGVkIH07CiB9OwogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9TdWJpbWFn
ZUNhY2hlV2l0aFRpbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L1N1YmltYWdlQ2FjaGVXaXRoVGltZXIuY3BwCmluZGV4IGYzYzVhZjdhNmRlNTllZWI0Y2M0MWZm
NjllMjNhYTA1MWVkYmU1YTkuLjE3NGJkNDgxMDAwOGI0MDNjNjI3NmNlM2U0ZDM2YjQ3NDg5ZmE2
ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1N1Ymlt
YWdlQ2FjaGVXaXRoVGltZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL1N1YmltYWdlQ2FjaGVXaXRoVGltZXIuY3BwCkBAIC04OSw3ICs4OSw3IEBAIFN1Ymlt
YWdlQ2FjaGVXaXRoVGltZXI6OlN1YmltYWdlQ2FjaGVXaXRoVGltZXIoKQogCiB2b2lkIFN1Ymlt
YWdlQ2FjaGVXaXRoVGltZXI6OnBydW5lQ2FjaGVUaW1lckZpcmVkKCkKIHsKLSAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKG1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9Owog
ICAgIHBydW5lKCk7CiAgICAgaWYgKG1fY2FjaGUuaXNFbXB0eSgpKSB7CiAgICAgICAgIEFTU0VS
VChtX2ltYWdlQ291bnRzLmlzRW1wdHkoKSk7CkBAIC0xMTYsNyArMTE2LDcgQEAgdm9pZCBTdWJp
bWFnZUNhY2hlV2l0aFRpbWVyOjpwcnVuZSgpCiAKIFJldGFpblB0cjxDR0ltYWdlUmVmPiBTdWJp
bWFnZUNhY2hlV2l0aFRpbWVyOjpzdWJpbWFnZShDR0ltYWdlUmVmIGltYWdlLCBjb25zdCBGbG9h
dFJlY3QmIHJlY3QpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2xvY2spOworICAg
IExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICBpZiAoIW1fdGltZXIuaXNBY3RpdmUoKSkK
ICAgICAgICAgbV90aW1lci5zdGFydFJlcGVhdGluZyhzdWJpbWFnZUNhY2hlUHJ1bmVEZWxheSk7
CiAKQEAgLTEzNyw3ICsxMzcsNyBAQCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gU3ViaW1hZ2VDYWNo
ZVdpdGhUaW1lcjo6c3ViaW1hZ2UoQ0dJbWFnZVJlZiBpbWFnZSwgY29uc3QgRgogCiB2b2lkIFN1
YmltYWdlQ2FjaGVXaXRoVGltZXI6OmNsZWFySW1hZ2VBbmRTdWJpbWFnZXMoQ0dJbWFnZVJlZiBp
bWFnZSkKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbG9jayk7CisgICAgTG9ja2Vy
IGxvY2tlciB7IG1fbG9jayB9OwogICAgIGlmIChtX2ltYWdlQ291bnRzLmNvbnRhaW5zKGltYWdl
KSkgewogICAgICAgICBWZWN0b3I8U3ViaW1hZ2VDYWNoZUVudHJ5PiB0b0JlUmVtb3ZlZDsKICAg
ICAgICAgZm9yIChjb25zdCBhdXRvJiBlbnRyeSA6IG1fY2FjaGUpIHsKQEAgLTE1NCw3ICsxNTQs
NyBAQCB2b2lkIFN1YmltYWdlQ2FjaGVXaXRoVGltZXI6OmNsZWFySW1hZ2VBbmRTdWJpbWFnZXMo
Q0dJbWFnZVJlZiBpbWFnZSkKIAogdm9pZCBTdWJpbWFnZUNhY2hlV2l0aFRpbWVyOjpjbGVhckFs
bCgpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2xvY2spOworICAgIExvY2tlciBs
b2NrZXIgeyBtX2xvY2sgfTsKICAgICBtX2ltYWdlQ291bnRzLmNsZWFyKCk7CiAgICAgbV9jYWNo
ZS5jbGVhcigpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5oCmluZGV4IDlmYWNlYzRmMDE0MjNm
NDA1NDM2NWI0YjliNWIyN2UxNzEyMTY2ZDkuLjUzNThiODU3ZTUxODc2N2ZmZjViMmYzZjc5MjA0
YWYzNWI0YmVmMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL1N1YmltYWdlQ2FjaGVXaXRoVGltZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9TdWJpbWFnZUNhY2hlV2l0aFRpbWVyLmgKQEAgLTI5LDEwICsyOSwxMCBA
QAogI2luY2x1ZGUgIlRpbWVyLmgiCiAKICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ29yZUdyYXBo
aWNzLmg+CisjaW5jbHVkZSA8d3RmL0NoZWNrZWRMb2NrLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hD
b3VudGVkU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvSGFz
aFRyYWl0cy5oPgotI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAKQEAgLTk0LDEzICs5NCwxMyBAQCBwcml2
YXRlOgogCiAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IHN1YmltYWdlKENHSW1hZ2VSZWYsIGNv
bnN0IEZsb2F0UmVjdCYpOwogICAgIHZvaWQgY2xlYXJJbWFnZUFuZFN1YmltYWdlcyhDR0ltYWdl
UmVmKTsKLSAgICB2b2lkIHBydW5lKCk7CisgICAgdm9pZCBwcnVuZSgpIFdURl9SRVFVSVJFU19M
T0NLKG1fbG9jayk7CiAgICAgdm9pZCBjbGVhckFsbCgpOwogCi0gICAgTG9jayBtX2xvY2s7Ci0g
ICAgSGFzaENvdW50ZWRTZXQ8Q0dJbWFnZVJlZj4gbV9pbWFnZUNvdW50czsKLSAgICBTdWJpbWFn
ZUNhY2hlSGFzaFNldCBtX2NhY2hlOwotICAgIFJ1bkxvb3A6OlRpbWVyPFN1YmltYWdlQ2FjaGVX
aXRoVGltZXI+IG1fdGltZXI7CisgICAgQ2hlY2tlZExvY2sgbV9sb2NrOworICAgIEhhc2hDb3Vu
dGVkU2V0PENHSW1hZ2VSZWY+IG1faW1hZ2VDb3VudHMgV1RGX0dVQVJERURfQllfTE9DSyhtX2xv
Y2spOworICAgIFN1YmltYWdlQ2FjaGVIYXNoU2V0IG1fY2FjaGUgV1RGX0dVQVJERURfQllfTE9D
SyhtX2xvY2spOworICAgIFJ1bkxvb3A6OlRpbWVyPFN1YmltYWdlQ2FjaGVXaXRoVGltZXI+IG1f
dGltZXIgV1RGX0dVQVJERURfQllfTE9DSyhtX2xvY2spOwogCiAgICAgc3RhdGljIFN1YmltYWdl
Q2FjaGVXaXRoVGltZXImIHN1YmltYWdlQ2FjaGUoKTsKICAgICBzdGF0aWMgYm9vbCBzdWJpbWFn
ZUNhY2hlRXhpc3RzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKaW5kZXggNDAyNjc1ZjFhMjM4
MzU5ZDQyNGYxYmFkODQwM2FkNzIwMDY2NjkxYy4uOTRjYWUwOWNlZWYxZmIzZGJiZGE1NmUzMTMz
NmMzMjJmZDVkMDExZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcApAQCAtMzUsNiArMzUsNyBA
QAogCiAjaW5jbHVkZSA8Q29yZVRleHQvU0ZOVExheW91dFR5cGVzLmg+CiAKKyNpbmNsdWRlIDx3
dGYvQ2hlY2tlZExvY2suaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0
Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5oPgpA
QCAtODQ1LDcgKzg0Niw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIGF1dG8gZm9sZGVkID0g
Rm9udENhc2NhZGVEZXNjcmlwdGlvbjo6Zm9sZGVkRmFtaWx5TmFtZShmYW1pbHlOYW1lKTsKICAg
ICAgICAgewotICAgICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2ZhbWlseU5hbWVU
b0ZvbnREZXNjcmlwdG9yc0xvY2spOworICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fZmFt
aWx5TmFtZVRvRm9udERlc2NyaXB0b3JzTG9jayB9OwogICAgICAgICAgICAgYXV0byBpdCA9IG1f
ZmFtaWx5TmFtZVRvRm9udERlc2NyaXB0b3JzLmZpbmQoZm9sZGVkKTsKICAgICAgICAgICAgIGlm
IChpdCAhPSBtX2ZhbWlseU5hbWVUb0ZvbnREZXNjcmlwdG9ycy5lbmQoKSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gKml0LT52YWx1ZTsKQEAgLTg3MSw3ICs4NzIsNyBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbnN0YWxsZWRGb250RmFtaWx5PigpOwogICAgICAg
ICB9KCk7CiAKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2ZhbWlseU5hbWVUb0Zv
bnREZXNjcmlwdG9yc0xvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9mYW1pbHlOYW1l
VG9Gb250RGVzY3JpcHRvcnNMb2NrIH07CiAgICAgICAgIHJldHVybiAqbV9mYW1pbHlOYW1lVG9G
b250RGVzY3JpcHRvcnMuYWRkKGZvbGRlZC5pc29sYXRlZENvcHkoKSwgV1RGTW92ZShpbnN0YWxs
ZWRGb250RmFtaWx5KSkuaXRlcmF0b3ItPnZhbHVlOwogICAgIH0KIApAQCAtODk1LDcgKzg5Niw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyKCkKICAgICB7CiAgICAgICAgIHsKLSAgICAgICAg
ICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9mYW1pbHlOYW1lVG9Gb250RGVzY3JpcHRvcnNM
b2NrKTsKKyAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2ZhbWlseU5hbWVUb0ZvbnREZXNj
cmlwdG9yc0xvY2sgfTsKICAgICAgICAgICAgIG1fZmFtaWx5TmFtZVRvRm9udERlc2NyaXB0b3Jz
LmNsZWFyKCk7CiAgICAgICAgIH0KICAgICAgICAgbV9wb3N0U2NyaXB0TmFtZVRvRm9udERlc2Ny
aXB0b3JzLmNsZWFyKCk7CkBAIC05MDksOCArOTEwLDggQEAgcHJpdmF0ZToKICAgICB7CiAgICAg
fQogCi0gICAgTG9jayBtX2ZhbWlseU5hbWVUb0ZvbnREZXNjcmlwdG9yc0xvY2s7Ci0gICAgSGFz
aE1hcDxTdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxJbnN0YWxsZWRGb250RmFtaWx5Pj4gbV9mYW1p
bHlOYW1lVG9Gb250RGVzY3JpcHRvcnM7CisgICAgQ2hlY2tlZExvY2sgbV9mYW1pbHlOYW1lVG9G
b250RGVzY3JpcHRvcnNMb2NrOworICAgIEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8
SW5zdGFsbGVkRm9udEZhbWlseT4+IG1fZmFtaWx5TmFtZVRvRm9udERlc2NyaXB0b3JzIFdURl9H
VUFSREVEX0JZX0xPQ0sobV9mYW1pbHlOYW1lVG9Gb250RGVzY3JpcHRvcnNMb2NrKTsKICAgICBI
YXNoTWFwPFN0cmluZywgSW5zdGFsbGVkRm9udD4gbV9wb3N0U2NyaXB0TmFtZVRvRm9udERlc2Ny
aXB0b3JzOwogICAgIEFsbG93VXNlckluc3RhbGxlZEZvbnRzIG1fYWxsb3dVc2VySW5zdGFsbGVk
Rm9udHM7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
b2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCmluZGV4IDZjNDhjMDA0MjczMDg1ZWYx
MzNlYTJmNjMzNzRkZjkzNDhjMTY5OTUuLjNhNTYxYmVhZWY1ZjNkMDkwYzM3NTEwOTNmZGQwNGE5
MDExM2ZjOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29j
b2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KQEAgLTMyLDYgKzMyLDcgQEAKICNp
bXBvcnQgIlN1YnJlc291cmNlTG9hZGVyLmgiCiAjaW1wb3J0IDxwYWwvc3BpL2NmL0NGTmV0d29y
a1NQSS5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CisjaW1wb3J0IDx3dGYvQ2hlY2tlZExv
Y2suaD4KICNpbXBvcnQgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2ltcG9ydCA8d3RmL1dl
YWtPYmpDUHRyLmg+CiAjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KQEAgLTU3Miwx
OSArNTczLDE5IEBAIHB1YmxpYzoKICAgICB2b2lkIGxvYWRGaW5pc2hlZChQbGF0Zm9ybU1lZGlh
UmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKIAogcHJpdmF0
ZToKLSAgICBMb2NrIG1fdGFza0xvY2s7Ci0gICAgV2Vha09iakNQdHI8V2ViQ29yZU5TVVJMU2Vz
c2lvbkRhdGFUYXNrPiBtX3Rhc2s7CisgICAgQ2hlY2tlZExvY2sgbV90YXNrTG9jazsKKyAgICBX
ZWFrT2JqQ1B0cjxXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2s+IG1fdGFzayBXVEZfR1VBUkRF
RF9CWV9MT0NLKG1fdGFza0xvY2spOwogfTsKIAogdm9pZCBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0
YVRhc2tDbGllbnQ6OmNsZWFyVGFzaygpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV90YXNr
TG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fdGFza0xvY2sgfTsKICAgICBtX3Rhc2sgPSBu
dWxscHRyOwogfQogCiB2b2lkIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDo6ZGF0
YVNlbnQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiByZXNvdXJjZSwgdW5zaWduZWQgbG9uZyBsb25n
IGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkKIHsKLSAg
ICBMb2NrSG9sZGVyIGxvY2tlcihtX3Rhc2tMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV90
YXNrTG9jayB9OwogICAgIGlmICghbV90YXNrKQogICAgICAgICByZXR1cm47CiAKQEAgLTU5NCw3
ICs1OTUsNyBAQCB2b2lkIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDo6ZGF0YVNl
bnQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiByZXNvdXJjZQogdm9pZCBXZWJDb3JlTlNVUkxTZXNz
aW9uRGF0YVRhc2tDbGllbnQ6OnJlc3BvbnNlUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNl
JiByZXNvdXJjZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoU2hvdWxkQ29udGludWVQb2xpY3lDaGVjayk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgYXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyk7Ci0gICAgTG9j
a0hvbGRlciBsb2NrZXIobV90YXNrTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fdGFza0xv
Y2sgfTsKICAgICBpZiAoIW1fdGFzaykKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVy
KFNob3VsZENvbnRpbnVlUG9saWN5Q2hlY2s6Ok5vKTsKIApAQCAtNjAzLDcgKzYwNCw3IEBAIHZv
aWQgV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50OjpyZXNwb25zZVJlY2VpdmVkKFBs
YXRmb3JtTWVkaWFSZXNvdXJjZSYKIAogYm9vbCBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tD
bGllbnQ6OnNob3VsZENhY2hlUmVzcG9uc2UoUGxhdGZvcm1NZWRpYVJlc291cmNlJiByZXNvdXJj
ZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7Ci0gICAgTG9ja0hvbGRlciBs
b2NrZXIobV90YXNrTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fdGFza0xvY2sgfTsKICAg
ICBpZiAoIW1fdGFzaykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC02MTIsNyArNjEzLDcg
QEAgYm9vbCBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ6OnNob3VsZENhY2hlUmVz
cG9uc2UoUGxhdGZvcm1NZWRpYVJlc291cmMKIAogdm9pZCBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0
YVRhc2tDbGllbnQ6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmIHJlc291cmNl
LCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQogewotICAgIExvY2tIb2xkZXIgbG9ja2Vy
KG1fdGFza0xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX3Rhc2tMb2NrIH07CiAgICAgaWYg
KCFtX3Rhc2spCiAgICAgICAgIHJldHVybjsKIApAQCAtNjIxLDcgKzYyMiw3IEBAIHZvaWQgV2Vi
Q29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50OjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRp
YVJlc291cmNlJiByZXNvCiAKIHZvaWQgV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50
OjpyZWRpcmVjdFJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYgcmVzb3VyY2UsIFJlc291
cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3Rhc2tMb2NrKTsKKyAgICBMb2NrZXIg
bG9ja2VyIHsgbV90YXNrTG9jayB9OwogICAgIGlmICghbV90YXNrKQogICAgICAgICByZXR1cm47
CiAKQEAgLTYzNCw3ICs2MzUsNyBAQCB2b2lkIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0Ns
aWVudDo6cmVkaXJlY3RSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmCiAKIHZvaWQgV2Vi
Q29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50OjphY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQo
UGxhdGZvcm1NZWRpYVJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJy
b3IpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV90YXNrTG9jayk7CisgICAgTG9ja2VyIGxv
Y2tlciB7IG1fdGFza0xvY2sgfTsKICAgICBpZiAoIW1fdGFzaykKICAgICAgICAgcmV0dXJuOwog
CkBAIC02NDMsNyArNjQ0LDcgQEAgdm9pZCBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGll
bnQ6OmFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChQbGF0Zm9ybU1lZGlhUmUKIAogdm9pZCBXZWJD
b3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ6OmxvYWRGYWlsZWQoUGxhdGZvcm1NZWRpYVJl
c291cmNlJiByZXNvdXJjZSwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7Ci0gICAgTG9j
a0hvbGRlciBsb2NrZXIobV90YXNrTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fdGFza0xv
Y2sgfTsKICAgICBpZiAoIW1fdGFzaykKICAgICAgICAgcmV0dXJuOwogCkBAIC02NTIsNyArNjUz
LDcgQEAgdm9pZCBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ6OmxvYWRGYWlsZWQo
UGxhdGZvcm1NZWRpYVJlc291cmNlJiByZXNvdXIKIAogdm9pZCBXZWJDb3JlTlNVUkxTZXNzaW9u
RGF0YVRhc2tDbGllbnQ6OmxvYWRGaW5pc2hlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmIHJlc291
cmNlLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgTG9ja0hvbGRl
ciBsb2NrZXIobV90YXNrTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fdGFza0xvY2sgfTsK
ICAgICBpZiAoIW1fdGFzaykKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJh
dGlvblF1ZXVlRGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFj
L1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5oCmluZGV4IDYy
MmU3Njk2OWM5ODQyYzU4M2NkMjNhNDU0MDk1ZGM0YTkzYTUzZTUuLmE2ZDIwNDM2MmNiYTA2YTM4
MTUxMTk1NjNkNzQ1ZjhhMzM1ZjExYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxl
Z2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVS
ZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5oCkBAIC0yNCw4ICsyNCw4IEBA
CiAgKi8KIAogI2ltcG9ydCA8ZGlzcGF0Y2gvZGlzcGF0Y2guaD4KKyNpbXBvcnQgPHd0Zi9DaGVj
a2VkTG9jay5oPgogI2ltcG9ydCA8d3RmL0Z1bmN0aW9uLmg+Ci0jaW1wb3J0IDx3dGYvTG9jay5o
PgogI2ltcG9ydCA8d3RmL01lc3NhZ2VRdWV1ZS5oPgogI2ltcG9ydCA8d3RmL1JlZlB0ci5oPgog
I2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgpAQCAtMzgsMTMgKzM4LDEzIEBAIGNsYXNzIFN5bmNo
cm9ub3VzTG9hZGVyTWVzc2FnZVF1ZXVlOwogfQogCiBAaW50ZXJmYWNlIFdlYkNvcmVSZXNvdXJj
ZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxOU1VSTENvbm5lY3Rp
b25EZWxlZ2F0ZT4gewotICAgIFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiBtX2hhbmRsZTsKKyAg
ICBDaGVja2VkTG9jayBtX2xvY2s7CisgICAgV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqIG1faGFu
ZGxlIFdURl9HVUFSREVEX0JZX0xPQ0sobV9sb2NrKTsKIAogICAgIC8vIFN5bmNocm9ub3VzIGRl
bGVnYXRlcyBvbiBvcGVyYXRpb24gcXVldWUgd2FpdCB1bnRpbCBtYWluIHRocmVhZCBzZW5kcyBh
biBhc3luY2hyb25vdXMgcmVzcG9uc2UuCiAgICAgQmluYXJ5U2VtYXBob3JlIG1fc2VtYXBob3Jl
OwogICAgIFJlZlB0cjxXZWJDb3JlOjpTeW5jaHJvbm91c0xvYWRlck1lc3NhZ2VRdWV1ZT4gbV9t
ZXNzYWdlUXVldWU7CiAgICAgUmV0YWluUHRyPE5TVVJMUmVxdWVzdD4gbV9yZXF1ZXN0UmVzdWx0
OwotICAgIExvY2sgbV9tdXRleDsKICAgICBSZXRhaW5QdHI8TlNDYWNoZWRVUkxSZXNwb25zZT4g
bV9jYWNoZWRSZXNwb25zZVJlc3VsdDsKICAgICBPcHRpb25hbDxTY2hlZHVsZVBhaXJIYXNoU2V0
PiBtX3NjaGVkdWxlZFBhaXJzOwogICAgIEJPT0wgbV9ib29sUmVzdWx0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxl
QXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1t
CmluZGV4IGQ0OTc4NjBkODc0NWNjMjIyNWZkMTNlZTZkMGQzMjgyNjc0YTVjYTYuLjQyZjZjOGY1
MzEyNmJhYjA3MGQxMjBlZmI2ODFjNGFlODRlYjQwNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9u
UXVldWVEZWxlZ2F0ZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21h
Yy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0KQEAgLTk3
LDcgKzk3LDcgQEAgLSAoaWQpaW5pdFdpdGhIYW5kbGU6KFdlYkNvcmU6OlJlc291cmNlSGFuZGxl
KiloYW5kbGUgbWVzc2FnZVF1ZXVlOihSZWZQdHI8V2ViQ28KIAogLSAodm9pZClkZXRhY2hIYW5k
bGUKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2sobV9tdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7
IG1fbG9jayB9OwogCiAgICAgbV9oYW5kbGUgPSBudWxscHRyOwogCkBAIC0xNTUsNyArMTU1LDcg
QEAgLSAoTlNVUkxSZXF1ZXN0ICopY29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY29ubmVj
dGlvbiB3aWxsU2VuZFJlcXVlc3Q6KE5TVVIKICAgICBbc2VsZiBjYWxsRnVuY3Rpb25Pbk1haW5U
aHJlYWQ6V1RGTW92ZSh3b3JrKV07CiAgICAgbV9zZW1hcGhvcmUud2FpdCgpOwogCi0gICAgTG9j
a0hvbGRlciBsb2NrKG1fbXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAg
ICBpZiAoIW1faGFuZGxlKQogICAgICAgICByZXR1cm4gbmlsOwogCkBAIC0yMTMsNyArMjEzLDcg
QEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgW3NlbGYgY2FsbEZ1
bmN0aW9uT25NYWluVGhyZWFkOldURk1vdmUod29yayldOwogICAgIG1fc2VtYXBob3JlLndhaXQo
KTsKIAotICAgIExvY2tIb2xkZXIgbG9jayhtX211dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsg
bV9sb2NrIH07CiAgICAgaWYgKCFtX2hhbmRsZSkKICAgICAgICAgcmV0dXJuIE5POwogCkBAIC0z
NzQsNyArMzc0LDcgQEAgLSAoTlNDYWNoZWRVUkxSZXNwb25zZSAqKWNvbm5lY3Rpb246KE5TVVJM
Q29ubmVjdGlvbiAqKWNvbm5lY3Rpb24gd2lsbENhY2hlUmVzcG8KICAgICBbc2VsZiBjYWxsRnVu
Y3Rpb25Pbk1haW5UaHJlYWQ6V1RGTW92ZSh3b3JrKV07CiAgICAgbV9zZW1hcGhvcmUud2FpdCgp
OwogCi0gICAgTG9ja0hvbGRlciBsb2NrKG1fbXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBt
X2xvY2sgfTsKICAgICBpZiAoIW1faGFuZGxlKQogICAgICAgICByZXR1cm4gbmlsOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VRdW90YU1hbmFnZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlUXVvdGFNYW5hZ2VyLmNwcAppbmRleCBiYjQ3
Nzk5YWQ0ZDViZjY1MzU4YjEzNjNiYjZjZDVhMTRmMzVlYjBiLi4zNzFkMzNiNmYxNTY3N2I3MWNi
OTUwMGU5MmVlMjA5MzIzZTIzNmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdl
L1N0b3JhZ2VRdW90YU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3Rv
cmFnZVF1b3RhTWFuYWdlci5jcHAKQEAgLTczLDcgKzczLDcgQEAgU3RvcmFnZVF1b3RhTWFuYWdl
cjo6RGVjaXNpb24gU3RvcmFnZVF1b3RhTWFuYWdlcjo6cmVxdWVzdFNwYWNlT25CYWNrZ3JvdW5k
VGhyZWEKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKIAotICAgIExvY2tIb2xkZXIg
bG9ja2VyKG1fcXVvdGFDb3VudERvd25Mb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9xdW90
YUNvdW50RG93bkxvY2sgfTsKIAogICAgIGlmICh0cnlHcmFudFJlcXVlc3Qoc3BhY2VSZXF1ZXN0
ZWQpKQogICAgICAgICByZXR1cm4gRGVjaXNpb246OkdyYW50OwpAQCAtMTMxLDcgKzEzMSw3IEBA
IHZvaWQgU3RvcmFnZVF1b3RhTWFuYWdlcjo6dXBkYXRlUXVvdGFCYXNlZE9uVXNhZ2UoKQogCiB2
b2lkIFN0b3JhZ2VRdW90YU1hbmFnZXI6OnJlc2V0UXVvdGFVcGRhdGVkQmFzZWRPblVzYWdlRm9y
VGVzdGluZygpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9xdW90YUNvdW50RG93bkxvY2sp
OworICAgIExvY2tlciBsb2NrZXIgeyBtX3F1b3RhQ291bnREb3duTG9jayB9OwogICAgIG1fcXVv
dGEgPSBtX2luaXRpYWxRdW90YTsKICAgICBtX3F1b3RhQ291bnREb3duID0gMDsKICAgICBtX3F1
b3RhVXBkYXRlZEJhc2VkT25Vc2FnZSA9IGZhbHNlOwpAQCAtMTM5LDcgKzEzOSw3IEBAIHZvaWQg
U3RvcmFnZVF1b3RhTWFuYWdlcjo6cmVzZXRRdW90YVVwZGF0ZWRCYXNlZE9uVXNhZ2VGb3JUZXN0
aW5nKCkKIAogdm9pZCBTdG9yYWdlUXVvdGFNYW5hZ2VyOjpyZXNldFF1b3RhRm9yVGVzdGluZygp
CiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9xdW90YUNvdW50RG93bkxvY2spOworICAgIExv
Y2tlciBsb2NrZXIgeyBtX3F1b3RhQ291bnREb3duTG9jayB9OwogICAgIG1fcXVvdGEgPSBtX2lu
aXRpYWxRdW90YTsKICAgICBtX3F1b3RhQ291bnREb3duID0gMDsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZVF1b3RhTWFuYWdlci5oIGIvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9TdG9yYWdlUXVvdGFNYW5hZ2VyLmgKaW5kZXggY2U5MzQyMTI0ZmU2MTZlZmZm
ZTZjYTExZTE1ZDNjZTFjOWVlMTkzZC4uZDczZmM0ZWIyNTQxZWQxYmViYTBiNGQyYTYyNWQ0YTAy
YThmMTc3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlUXVvdGFN
YW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlUXVvdGFNYW5hZ2Vy
LmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlIDx3dGYvQ2hl
Y2tlZExvY2suaD4KICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRl
IDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgpAQCAtNTIsMTIgKzUzLDEy
IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc2V0UXVvdGFGb3JUZXN0aW5n
KCk7CiBwcml2YXRlOgogICAgIFN0b3JhZ2VRdW90YU1hbmFnZXIodWludDY0X3QgcXVvdGEsIFVz
YWdlR2V0dGVyJiYsIFF1b3RhSW5jcmVhc2VSZXF1ZXN0ZXImJik7Ci0gICAgYm9vbCB0cnlHcmFu
dFJlcXVlc3QodWludDY0X3QpOworICAgIGJvb2wgdHJ5R3JhbnRSZXF1ZXN0KHVpbnQ2NF90KSBX
VEZfUkVRVUlSRVNfTE9DSyhtX3F1b3RhQ291bnREb3duTG9jayk7CiAKICAgICB2b2lkIHVwZGF0
ZVF1b3RhQmFzZWRPblVzYWdlKCk7CiAKLSAgICBMb2NrIG1fcXVvdGFDb3VudERvd25Mb2NrOwot
ICAgIHVpbnQ2NF90IG1fcXVvdGFDb3VudERvd24geyAwIH07CisgICAgQ2hlY2tlZExvY2sgbV9x
dW90YUNvdW50RG93bkxvY2s7CisgICAgdWludDY0X3QgbV9xdW90YUNvdW50RG93biBXVEZfR1VB
UkRFRF9CWV9MT0NLKG1fcXVvdGFDb3VudERvd25Mb2NrKSB7IDAgfTsKICAgICB1aW50NjRfdCBt
X3F1b3RhIHsgMCB9OwogICAgIHVpbnQ2NF90IG1fdXNhZ2UgeyAwIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xs
ZXIuY3BwCmluZGV4IGYxZGQ5YzgzNDViZDgxYTFhY2ExZDI2MzlhZmVhZDQzNGM5ODQ5ZmMuLmI5
NWY1YzZkNjlkYWU0YzljYjcxNDM5NzhjM2QzOGYwYTRlOGIyNDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVy
LmNwcApAQCAtMTE5LDE0ICsxMTksMTQgQEAgYm9vbCBXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250
cm9sbGVyOjppc0V4ZWN1dGlvbkZvcmJpZGRlbigpIGNvbnN0CiAKIHZvaWQgV29ya2VyT3JXb3Jr
bGV0U2NyaXB0Q29udHJvbGxlcjo6c2NoZWR1bGVFeGVjdXRpb25UZXJtaW5hdGlvbigpCiB7Ci0g
ICAgaWYgKG1faXNUZXJtaW5hdGluZ0V4ZWN1dGlvbikKLSAgICAgICAgcmV0dXJuOwotCiAgICAg
ewogICAgICAgICAvLyBUaGUgbXV0ZXggcHJvdmlkZXMgYSBtZW1vcnkgYmFycmllciB0byBlbnN1
cmUgdGhhdCBvbmNlCiAgICAgICAgIC8vIHRlcm1pbmF0aW9uIGlzIHNjaGVkdWxlZCwgaXNUZXJt
aW5hdGluZ0V4ZWN1dGlvbigpIHdpbGwKICAgICAgICAgLy8gYWNjdXJhdGVseSByZWZsZWN0IHRo
YXQgbGV4aWNhbEdsb2JhbE9iamVjdCB3aGVuIGNhbGxlZCBmcm9tIGFub3RoZXIgdGhyZWFkLgot
ICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3NjaGVkdWxlZFRlcm1pbmF0aW9uTXV0ZXgpOwor
ICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9zY2hlZHVsZWRUZXJtaW5hdGlvbkxvY2sgfTsKKyAg
ICAgICAgaWYgKG1faXNUZXJtaW5hdGluZ0V4ZWN1dGlvbikKKyAgICAgICAgICAgIHJldHVybjsK
KwogICAgICAgICBtX2lzVGVybWluYXRpbmdFeGVjdXRpb24gPSB0cnVlOwogICAgIH0KICAgICBt
X3ZtLT5ub3RpZnlOZWVkVGVybWluYXRpb24oKTsKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIFdv
cmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OnNjaGVkdWxlRXhlY3V0aW9uVGVybWluYXRp
b24oKQogYm9vbCBXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjppc1Rlcm1pbmF0aW5n
RXhlY3V0aW9uKCkgY29uc3QKIHsKICAgICAvLyBTZWUgY29tbWVudHMgaW4gc2NoZWR1bGVFeGVj
dXRpb25UZXJtaW5hdGlvbiByZWdhcmRpbmcgbXV0ZXggdXNhZ2UuCi0gICAgTG9ja0hvbGRlciBs
b2NrZXIobV9zY2hlZHVsZWRUZXJtaW5hdGlvbk11dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsg
bV9zY2hlZHVsZWRUZXJtaW5hdGlvbkxvY2sgfTsKICAgICByZXR1cm4gbV9pc1Rlcm1pbmF0aW5n
RXhlY3V0aW9uOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oCmluZGV4IDQzNTgzZGE1MzE4MmYxMDBmMjE1
M2Q1YjAyOWVmNzg3ZDQ3YzRiZTUuLmNmY2E3NDQ0YjQ5ODk1YzJkMGUxOWJhYWFhMjVkZTc1MTk4
M2JlZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0
U2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JX
b3JrbGV0U2NyaXB0Q29udHJvbGxlci5oCkBAIC0zMCw4ICszMCw4IEBACiAjaW5jbHVkZSAiV29y
a2VyVGhyZWFkVHlwZS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0RlYnVnZ2VyLmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNSdW5Mb29wVGltZXIuaD4KKyNpbmNsdWRlIDx3dGYv
Q2hlY2tlZExvY2suaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9M
b2NrLmg+CiAjaW5jbHVkZSA8d3RmL01lc3NhZ2VRdWV1ZS5oPgogI2luY2x1ZGUgPHd0Zi9OYWtl
ZFB0ci5oPgogCkBAIC0xMjEsOCArMTIxLDggQEAgcHJpdmF0ZToKICAgICBXb3JrZXJPcldvcmts
ZXRHbG9iYWxTY29wZSogbV9nbG9iYWxTY29wZTsKICAgICBKU0M6OlN0cm9uZzxKU0RPTUdsb2Jh
bE9iamVjdD4gbV9nbG9iYWxTY29wZVdyYXBwZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdvcmtl
ckNvbnNvbGVDbGllbnQ+IG1fY29uc29sZUNsaWVudDsKLSAgICBtdXRhYmxlIExvY2sgbV9zY2hl
ZHVsZWRUZXJtaW5hdGlvbk11dGV4OwotICAgIGJvb2wgbV9pc1Rlcm1pbmF0aW5nRXhlY3V0aW9u
IHsgZmFsc2UgfTsKKyAgICBtdXRhYmxlIENoZWNrZWRMb2NrIG1fc2NoZWR1bGVkVGVybWluYXRp
b25Mb2NrOworICAgIGJvb2wgbV9pc1Rlcm1pbmF0aW5nRXhlY3V0aW9uIFdURl9HVUFSREVEX0JZ
X0xPQ0sobV9zY2hlZHVsZWRUZXJtaW5hdGlvbkxvY2spIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
      

    </bug>

</bugzilla>