<?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>226001</bug_id>
          
          <creation_ts>2021-05-19 19:29:07 -0700</creation_ts>
          <short_desc>Use CheckedLock more in WebKit2 code</short_desc>
          <delta_ts>2021-05-20 09:12:17 -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>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=226021</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>benjamin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1761811</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-19 19:29:07 -0700</bug_when>
    <thetext>Use CheckedLock more in WebKit2 code to benefit for Clang Thread Safety Analysis.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761813</commentid>
    <comment_count>1</comment_count>
      <attachid>429127</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-19 19:30:59 -0700</bug_when>
    <thetext>Created attachment 429127
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761826</commentid>
    <comment_count>2</comment_count>
      <attachid>429127</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-05-19 20:52:55 -0700</bug_when>
    <thetext>Comment on attachment 429127
Patch

I like WTF_GUARDED_BY_LOCK</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761848</commentid>
    <comment_count>3</comment_count>
      <attachid>429140</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-19 23:09:39 -0700</bug_when>
    <thetext>Created attachment 429140
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761866</commentid>
    <comment_count>4</comment_count>
      <attachid>429140</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-05-20 01:21:52 -0700</bug_when>
    <thetext>Comment on attachment 429140
Patch

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

great work.
maybe the lockable() could be reverted / not added.

&gt; Source/WTF/ChangeLog:8
&gt; +        Add lockable() getter to Locker&lt;CheckedLock&gt; to match the regular Locker&lt;T&gt;.

I didn&apos;t see the use case to add that.
That enables the anti-pattern that is being invoked also in this patch.

&gt; Source/WebKit/WebProcess/GPU/webrtc/LibWebRTCCodecs.cpp:177
&gt; +void LibWebRTCCodecs::ensureGPUProcessConnectionOnMainThread(Locker&lt;CheckedLock&gt;&amp; locker)

For CheckedLock, this sort of unused parameter pattern is now an anti-pattern.

The annotation in the header file would be :
   void LibWebRTCCodecs::ensureGPUProcessConnectionOnMainThread() WTF_REQUIRES_LOCK(m_connectionLock);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761948</commentid>
    <comment_count>5</comment_count>
      <attachid>429171</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-20 07:37:17 -0700</bug_when>
    <thetext>Created attachment 429171
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761949</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-20 07:38:48 -0700</bug_when>
    <thetext>(In reply to Kimmo Kinnunen from comment #4)
&gt; Comment on attachment 429140 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=429140&amp;action=review
&gt; 
&gt; great work.
&gt; maybe the lockable() could be reverted / not added.
&gt; 
&gt; &gt; Source/WTF/ChangeLog:8
&gt; &gt; +        Add lockable() getter to Locker&lt;CheckedLock&gt; to match the regular Locker&lt;T&gt;.
&gt; 
&gt; I didn&apos;t see the use case to add that.
&gt; That enables the anti-pattern that is being invoked also in this patch.

Yes, definitely not needed if we get rid of the &quot;Passing Locker as parameter&quot; pattern. I dropped this.

&gt; &gt; Source/WebKit/WebProcess/GPU/webrtc/LibWebRTCCodecs.cpp:177
&gt; &gt; +void LibWebRTCCodecs::ensureGPUProcessConnectionOnMainThread(Locker&lt;CheckedLock&gt;&amp; locker)
&gt; 
&gt; For CheckedLock, this sort of unused parameter pattern is now an
&gt; anti-pattern.
&gt; 
&gt; The annotation in the header file would be :
&gt;    void LibWebRTCCodecs::ensureGPUProcessConnectionOnMainThread()
&gt; WTF_REQUIRES_LOCK(m_connectionLock);

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761978</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-05-20 09:11:32 -0700</bug_when>
    <thetext>Committed r277787 (237948@main): &lt;https://commits.webkit.org/237948@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 429171.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761979</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-05-20 09:12:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/78261485&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429127</attachid>
            <date>2021-05-19 19:30:59 -0700</date>
            <delta_ts>2021-05-19 23:09:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226001-20210519193058.patch</filename>
            <type>text/plain</type>
            <size>49150</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3NzYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGY5NjhhY2IzMGM3YmJkN2M3YmI0ZWYw
NjkyYzgwYzczMWZiZjhhMGUuLjkwZWVmZWY1NzY2Y2RlZDEyYTkxNTU3ZjNhNGY3NjUzNTI2ZWM4
MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMDUtMTkgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgQ2hlY2tlZExvY2sgbW9yZSBpbiBXZWJLaXQyIGNv
ZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjAw
MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBs
b2NrYWJsZSgpIGdldHRlciB0byBMb2NrZXI8Q2hlY2tlZExvY2s+IHRvIG1hdGNoIHRoZSByZWd1
bGFyIExvY2tlcjxUPi4KKworICAgICAgICAqIHd0Zi9DaGVja2VkTG9jay5oOgorCiAyMDIxLTA1
LTE5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgRHJvcCAiZ2V0
IiBwcmVmaXggZnJvbSBTUUxpdGVTdGF0ZW1lbnQgbWVtYmVyIGZ1bmN0aW9ucyBhcyB3ZWxsIGFz
IG91dC1wYXJhbWV0ZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDM0YjNkNGU5ODcxOWMxZjhhMTNlMzM2N2U3OWU5
YTQ5YzMzODgzOTQuLjIyZjNiYWY5YTkxODQyYzUyMjEyZWFiZWU4MGMzZDExYjE2YTNjMDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsOTIgQEAKKzIwMjEtMDUtMTkgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgQ2hlY2tlZExvY2sgbW9yZSBpbiBXZWJLaXQyIGNv
ZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjAw
MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBD
aGVja2VkTG9jayBtb3JlIGluIFdlYktpdDIgY29kZSB0byBiZW5lZml0IGZvciBDbGFuZyBUaHJl
YWQgU2FmZXR5IEFuYWx5c2lzLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJv
dG9jb2xzL0NvY29hL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNvY29hLm1tOgorICAgICAg
ICAoTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpuZXR3b3JrUHJvY2Vzc0NyZWF0ZWQpOgor
ICAgICAgICAoV2ViS2l0OjpMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXI6OnJlZ2lzdGVyU2No
ZW1lKToKKyAgICAgICAgKFdlYktpdDo6TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjp1bnJl
Z2lzdGVyU2NoZW1lKToKKyAgICAgICAgKFdlYktpdDo6TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5h
Z2VyOjpzdXBwb3J0c1NjaGVtZSk6CisgICAgICAgIChXZWJLaXQ6OkxlZ2FjeUN1c3RvbVByb3Rv
Y29sTWFuYWdlcjo6cHJvdG9jb2xGb3JJRCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ3Vz
dG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OkxlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlcjo6YWRkQ3VzdG9tUHJvdG9jb2wpOgor
ICAgICAgICAoV2ViS2l0OjpMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXI6OnJlbW92ZUN1c3Rv
bVByb3RvY29sKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVn
YWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6YWRkU2Vz
c2lvblN0b3JhZ2VRdW90YU1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
czo6cmVtb3ZlU2Vzc2lvblN0b3JhZ2VRdW90YU1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzczo6c2V0U2Vzc2lvblN0b3JhZ2VRdW90YU1hbmFnZXJJREJSb290UGF0aCk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZXNldFF1b3RhKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnN0b3JhZ2VRdW90YU1hbmFnZXIpOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlclNldC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0
b3JhZ2VNYW5hZ2VyU2V0OjpzdXNwZW5kKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFn
ZXJTZXQ6OnJlc3VtZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9y
YWdlTWFuYWdlclNldC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL0xhdW5jaFNl
cnZpY2VzRGF0YWJhc2VPYnNlcnZlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29h
L0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlci5tbToKKyAgICAgICAgKFdlYktpdDo6TGF1
bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyOjpMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2
ZXIpOgorICAgICAgICAoV2ViS2l0OjpMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXI6OnN0
YXJ0T2JzZXJ2aW5nKToKKyAgICAgICAgKFdlYktpdDo6TGF1bmNoU2VydmljZXNEYXRhYmFzZU9i
c2VydmVyOjpoYW5kbGVFdmVudCk6CisgICAgICAgICogU2hhcmVkL0Jsb2NraW5nUmVzcG9uc2VN
YXAuaDoKKyAgICAgICAgKEJsb2NraW5nUmVzcG9uc2VNYXA6OndhaXRGb3JSZXNwb25zZSk6Cisg
ICAgICAgIChCbG9ja2luZ1Jlc3BvbnNlTWFwOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAg
ICAqIFNoYXJlZC9Db2NvYS9YUENFbmRwb2ludENsaWVudC5oOgorICAgICAgICAqIFNoYXJlZC9D
b2NvYS9YUENFbmRwb2ludENsaWVudC5tbToKKyAgICAgICAgKFdlYktpdDo6WFBDRW5kcG9pbnRD
bGllbnQ6OnNldEVuZHBvaW50KToKKyAgICAgICAgKFdlYktpdDo6WFBDRW5kcG9pbnRDbGllbnQ6
OmNvbm5lY3Rpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lVGFzazo6cmVxdWVzdCBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OndpbGxQZXJmb3JtUmVkaXJlY3Rpb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpkaWRQZXJmb3JtUmVkaXJlY3Rpb24p
OgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpwYWdlRGVzdHJveWVkKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lVGFzazo6c3RvcCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlVSTFNjaGVtZVRhc2s6Om5zUmVxdWVzdCBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlVSTFNjaGVtZVRhc2suaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL0Rpc3BsYXlMaW5r
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6RGlzcGxheUxpbms6OmFkZE9ic2VydmVyKToKKyAgICAg
ICAgKFdlYktpdDo6RGlzcGxheUxpbms6OnJlbW92ZU9ic2VydmVyKToKKyAgICAgICAgKFdlYktp
dDo6RGlzcGxheUxpbms6OnJlbW92ZU9ic2VydmVycyk6CisgICAgICAgIChXZWJLaXQ6OkRpc3Bs
YXlMaW5rOjppbmNyZW1lbnRGdWxsU3BlZWRSZXF1ZXN0Q2xpZW50Q291bnQpOgorICAgICAgICAo
V2ViS2l0OjpEaXNwbGF5TGluazo6ZGVjcmVtZW50RnVsbFNwZWVkUmVxdWVzdENsaWVudENvdW50
KToKKyAgICAgICAgKFdlYktpdDo6RGlzcGxheUxpbms6OnNldFByZWZlcnJlZEZyYW1lc1BlclNl
Y29uZCk6CisgICAgICAgIChXZWJLaXQ6OkRpc3BsYXlMaW5rOjpub3RpZnlPYnNlcnZlcnNEaXNw
bGF5V2FzUmVmcmVzaGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL0Rpc3BsYXlMaW5rLmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjczo6ZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rp
b25Pbk1haW5UaHJlYWQpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENDb2RlY3M6OmVuc3Vy
ZUdQVVByb2Nlc3NDb25uZWN0aW9uQW5kRGlzcGF0Y2hUb1RocmVhZCk6CisgICAgICAgIChXZWJL
aXQ6OkxpYldlYlJUQ0NvZGVjczo6Y3JlYXRlRGVjb2Rlcik6CisgICAgICAgIChXZWJLaXQ6Okxp
YldlYlJUQ0NvZGVjczo6ZGVjb2RlRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVEND
b2RlY3M6OmNyZWF0ZUVuY29kZXIpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENDb2RlY3M6
OmVuY29kZUZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDQ29kZWNzOjpzZXRFbmNv
ZGVSYXRlcyk6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjczo6Z3B1UHJvY2Vzc0Nv
bm5lY3Rpb25EaWRDbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjczo6c2V0
TG9nZ2luZ0xldmVsKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRD
Q29kZWNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25u
ZWN0aW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NDb25uZWN0
aW9uTWFuYWdlcjo6Z2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0
OjpQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXI6OnJlbW92ZVBsdWdpblByb2Nlc3NDb25u
ZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2Vy
OjpwbHVnaW5Qcm9jZXNzQ3Jhc2hlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9FdmVudERpc3BhdGNoZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpFdmVudERpc3BhdGNo
ZXI6OmFkZFNjcm9sbGluZ1RyZWVGb3JQYWdlKToKKyAgICAgICAgKFdlYktpdDo6RXZlbnREaXNw
YXRjaGVyOjpyZW1vdmVTY3JvbGxpbmdUcmVlRm9yUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OkV2
ZW50RGlzcGF0Y2hlcjo6d2hlZWxFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OkV2ZW50RGlzcGF0
Y2hlcjo6dGFrZVF1ZXVlZFRvdWNoRXZlbnRzRm9yUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OkV2
ZW50RGlzcGF0Y2hlcjo6dG91Y2hFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OkV2ZW50RGlzcGF0
Y2hlcjo6ZGlzcGF0Y2hUb3VjaEV2ZW50cyk6CisgICAgICAgIChXZWJLaXQ6OkV2ZW50RGlzcGF0
Y2hlcjo6bm90aWZ5U2Nyb2xsaW5nVHJlZXNEaXNwbGF5V2FzUmVmcmVzaGVkKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1ZpZXdVcGRhdGVEaXNwYXRjaGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
Vmlld1VwZGF0ZURpc3BhdGNoZXI6OnZpc2libGVDb250ZW50UmVjdFVwZGF0ZSk6CisgICAgICAg
IChXZWJLaXQ6OlZpZXdVcGRhdGVEaXNwYXRjaGVyOjpkaXNwYXRjaFZpc2libGVDb250ZW50UmVj
dFVwZGF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdVcGRhdGVEaXNwYXRj
aGVyLmg6CisKIDIwMjEtMDUtMTkgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgogCiAg
ICAgICAgIFJlbW92ZSBJbWFnZUJ1ZmZlcjo6dG9CR1JBKCkgYW5kIHJlcGxhY2UgaXRzIHVzZXMg
d2l0aCB0aGUgbW9yZSBnZW5lcmFsIEltYWdlQnVmZmVyOjpnZXRQaXhlbEJ1ZmZlcigpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DaGVja2VkTG9jay5oIGIvU291cmNlL1dURi93dGYvQ2hl
Y2tlZExvY2suaAppbmRleCA0NGI4OTk5NjkxMjM0NTIwMDE5OGZkODY0YTk5ODk2Njc3NjM5OTQy
Li4zNDQ0NGI1NjI0ODg0MGNjNmFiOGFlYWIxN2U1ZTFiNWU2ODI3MGVmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9DaGVja2VkTG9jay5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0NoZWNrZWRM
b2NrLmgKQEAgLTk4LDYgKzk4LDkgQEAgcHVibGljOgogICAgIH0KICAgICBMb2NrZXIoY29uc3Qg
TG9ja2VyPENoZWNrZWRMb2NrPiYpID0gZGVsZXRlOwogICAgIExvY2tlciYgb3BlcmF0b3I9KGNv
bnN0IExvY2tlcjxDaGVja2VkTG9jaz4mKSA9IGRlbGV0ZTsKKworICAgIENoZWNrZWRMb2NrKiBs
b2NrYWJsZSgpIHsgcmV0dXJuICZtX2xvY2s7IH0KKwogcHJpdmF0ZToKICAgICBDaGVja2VkTG9j
ayYgbV9sb2NrOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q3VzdG9tUHJvdG9jb2xzL0NvY29hL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNvY29hLm1t
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvQ29jb2EvTGVn
YWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ29jb2EubW0KaW5kZXggMWFhNTNjYzJmYjc3YmFmOWUz
MjY1MDcyMTA4MDlmZDc2Y2ZiYmYyNy4uYjY1NDk4YzI1YzQ2ZjE3NTM4MDg4MmFhYjE0YTVhOGJi
MGRkN2U4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Q
cm90b2NvbHMvQ29jb2EvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ29jb2EubW0KKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvQ29jb2EvTGVnYWN5
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ29jb2EubW0KQEAgLTQ5LDcgKzQ5LDcgQEAgdm9pZCBMZWdh
Y3lDdXN0b21Qcm90b2NvbE1hbmFnZXI6Om5ldHdvcmtQcm9jZXNzQ3JlYXRlZChOZXR3b3JrUHJv
Y2VzcyYgbmV0d29ya1AKICAgICBhdXRvIGhhc1JlZ2lzdGVyZWRTY2hlbWVzID0gW10gKGF1dG8q
IGxlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlcikgewogICAgICAgICBpZiAoIWxlZ2FjeUN1c3Rv
bVByb3RvY29sTWFuYWdlcikKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgTG9j
a0hvbGRlciBsb2NrZXIobGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLT5tX3JlZ2lzdGVyZWRT
Y2hlbWVzTXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbGVnYWN5Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyLT5tX3JlZ2lzdGVyZWRTY2hlbWVzTG9jayB9OwogICAgICAgICByZXR1cm4gIWxl
Z2FjeUN1c3RvbVByb3RvY29sTWFuYWdlci0+bV9yZWdpc3RlcmVkU2NoZW1lcy5pc0VtcHR5KCk7
CiAgICAgfTsKIApAQCAtMTM1LDE0ICsxMzUsMTQgQEAgdm9pZCBMZWdhY3lDdXN0b21Qcm90b2Nv
bE1hbmFnZXI6OnJlZ2lzdGVyUHJvdG9jb2xDbGFzcyhOU1VSTFNlc3Npb25Db25maWd1cmF0aW8K
IHZvaWQgTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpyZWdpc3RlclNjaGVtZShjb25zdCBT
dHJpbmcmIHNjaGVtZSkKIHsKICAgICBBU1NFUlQoIXNjaGVtZS5pc051bGwoKSk7Ci0gICAgTG9j
a0hvbGRlciBsb2NrZXIobV9yZWdpc3RlcmVkU2NoZW1lc011dGV4KTsKKyAgICBMb2NrZXIgbG9j
a2VyIHsgbV9yZWdpc3RlcmVkU2NoZW1lc0xvY2sgfTsKICAgICBtX3JlZ2lzdGVyZWRTY2hlbWVz
LmFkZChzY2hlbWUpOwogfQogCiB2b2lkIExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlcjo6dW5y
ZWdpc3RlclNjaGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSkKIHsKICAgICBBU1NFUlQoIXNjaGVt
ZS5pc051bGwoKSk7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9yZWdpc3RlcmVkU2NoZW1lc011
dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9yZWdpc3RlcmVkU2NoZW1lc0xvY2sgfTsKICAg
ICBtX3JlZ2lzdGVyZWRTY2hlbWVzLnJlbW92ZShzY2hlbWUpOwogfQogCkBAIC0xNTEsNyArMTUx
LDcgQEAgYm9vbCBMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXI6OnN1cHBvcnRzU2NoZW1lKGNv
bnN0IFN0cmluZyYgc2NoZW1lKQogICAgIGlmIChzY2hlbWUuaXNOdWxsKCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fcmVnaXN0ZXJlZFNjaGVtZXNN
dXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fcmVnaXN0ZXJlZFNjaGVtZXNMb2NrIH07CiAg
ICAgcmV0dXJuIG1fcmVnaXN0ZXJlZFNjaGVtZXMuY29udGFpbnMoc2NoZW1lKTsKIH0KIApAQCAt
MjMyLDcgKzIzMiw3IEBAIHZvaWQgTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjp3YXNSZWRp
cmVjdGVkVG9SZXF1ZXN0KExlZ2FjeUN1c3RvbVByb3RvY29sSUQKIAogUmV0YWluUHRyPFdLQ3Vz
dG9tUHJvdG9jb2w+IExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlcjo6cHJvdG9jb2xGb3JJRChM
ZWdhY3lDdXN0b21Qcm90b2NvbElEIGN1c3RvbVByb3RvY29sSUQpCiB7Ci0gICAgTG9ja0hvbGRl
ciBsb2NrZXIobV9jdXN0b21Qcm90b2NvbE1hcE11dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsg
bV9jdXN0b21Qcm90b2NvbE1hcExvY2sgfTsKIAogICAgIEN1c3RvbVByb3RvY29sTWFwOjpjb25z
dF9pdGVyYXRvciBpdCA9IG1fY3VzdG9tUHJvdG9jb2xNYXAuZmluZChjdXN0b21Qcm90b2NvbElE
KTsKICAgICBpZiAoaXQgPT0gbV9jdXN0b21Qcm90b2NvbE1hcC5lbmQoKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3Rv
bVByb3RvY29sTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3Rv
bVByb3RvY29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIuY3BwCmluZGV4IGZkYTY0YjMy
MjE4ZWIxZDJkODU5N2RkMTViNzliOWRjMjUxZGE4NGQuLmY0YzQ3ODk3OTljYzc3NWFiNGQzYmVl
NWU1ZGIzMTNkNmMwNjg3NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9t
UHJvdG9jb2xNYW5hZ2VyLmNwcApAQCAtNTcsNyArNTcsNyBAQCB2b2lkIExlZ2FjeUN1c3RvbVBy
b3RvY29sTWFuYWdlcjo6aW5pdGlhbGl6ZShjb25zdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldAogCiBMZWdhY3lDdXN0b21Qcm90b2NvbElEIExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdl
cjo6YWRkQ3VzdG9tUHJvdG9jb2woQ3VzdG9tUHJvdG9jb2wmJiBjdXN0b21Qcm90b2NvbCkKIHsK
LSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2N1c3RvbVByb3RvY29sTWFwTXV0ZXgpOworICAgIExv
Y2tlciBsb2NrZXIgeyBtX2N1c3RvbVByb3RvY29sTWFwTG9jayB9OwogICAgIGF1dG8gY3VzdG9t
UHJvdG9jb2xJRCA9IExlZ2FjeUN1c3RvbVByb3RvY29sSUQ6OmdlbmVyYXRlKCk7CiAgICAgbV9j
dXN0b21Qcm90b2NvbE1hcC5hZGQoY3VzdG9tUHJvdG9jb2xJRCwgV1RGTW92ZShjdXN0b21Qcm90
b2NvbCkpOwogICAgIHJldHVybiBjdXN0b21Qcm90b2NvbElEOwpAQCAtNjUsNyArNjUsNyBAQCBM
ZWdhY3lDdXN0b21Qcm90b2NvbElEIExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlcjo6YWRkQ3Vz
dG9tUHJvdG9jb2woQ3VzdG9tUHJvdAogCiB2b2lkIExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdl
cjo6cmVtb3ZlQ3VzdG9tUHJvdG9jb2woTGVnYWN5Q3VzdG9tUHJvdG9jb2xJRCBjdXN0b21Qcm90
b2NvbElEKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fY3VzdG9tUHJvdG9jb2xNYXBNdXRl
eCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fY3VzdG9tUHJvdG9jb2xNYXBMb2NrIH07CiAgICAg
bV9jdXN0b21Qcm90b2NvbE1hcC5yZW1vdmUoY3VzdG9tUHJvdG9jb2xJRCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0xlZ2Fj
eUN1c3RvbVByb3RvY29sTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
dXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmgKaW5kZXggMGJjZDU2
NzNjOTM0NmFkYTExZDY1NmMzYWRkNTFiZTRlZGJjMjczMC4uNzg1MmY5N2E1ZDk0MWEwNzY2MTll
NGZiNzY1MDk1NWRlZDY0ZTk5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmgKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9t
UHJvdG9jb2xNYW5hZ2VyLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJMZWdhY3lDdXN0
b21Qcm90b2NvbElELmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAi
TmV0d29ya1Byb2Nlc3NTdXBwbGVtZW50LmgiCisjaW5jbHVkZSA8d3RmL0NoZWNrZWRMb2NrLmg+
CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KQEAgLTk1LDEyICs5NiwxMiBAQCBwcml2YXRl
OgogICAgIE5ldHdvcmtQcm9jZXNzJiBtX25ldHdvcmtQcm9jZXNzOwogCiAgICAgdHlwZWRlZiBI
YXNoTWFwPExlZ2FjeUN1c3RvbVByb3RvY29sSUQsIEN1c3RvbVByb3RvY29sPiBDdXN0b21Qcm90
b2NvbE1hcDsKLSAgICBDdXN0b21Qcm90b2NvbE1hcCBtX2N1c3RvbVByb3RvY29sTWFwOwotICAg
IExvY2sgbV9jdXN0b21Qcm90b2NvbE1hcE11dGV4OworICAgIEN1c3RvbVByb3RvY29sTWFwIG1f
Y3VzdG9tUHJvdG9jb2xNYXAgV1RGX0dVQVJERURfQllfTE9DSyhtX2N1c3RvbVByb3RvY29sTWFw
TG9jayk7CisgICAgQ2hlY2tlZExvY2sgbV9jdXN0b21Qcm90b2NvbE1hcExvY2s7CiAKICNpZiBQ
TEFURk9STShDT0NPQSkKLSAgICBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVI
YXNoPiBtX3JlZ2lzdGVyZWRTY2hlbWVzOwotICAgIExvY2sgbV9yZWdpc3RlcmVkU2NoZW1lc011
dGV4OworICAgIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IG1fcmVn
aXN0ZXJlZFNjaGVtZXMgV1RGX0dVQVJERURfQllfTE9DSyhtX3JlZ2lzdGVyZWRTY2hlbWVzTG9j
ayk7CisgICAgQ2hlY2tlZExvY2sgbV9yZWdpc3RlcmVkU2NoZW1lc0xvY2s7CiAKICAgICAvLyBX
S0N1c3RvbVByb3RvY29sIG9iamVjdHMgY2FuIGJlIHJlbW92ZWQgZnJvbSB0aGUgbV9jdXN0b21Q
cm90b2NvbE1hcCBmcm9tIG11bHRpcGxlIHRocmVhZHMuCiAgICAgLy8gV2UgcmV0dXJuIGEgUmV0
YWluUHRyIGhlcmUgYmVjYXVzZSBpdCBpcyB1bnNhZmUgdG8gcmV0dXJuIGEgcmF3IHBvaW50ZXIg
c2luY2UgdGhlIG9iamVjdCBtaWdodCBpbW1lZGlhdGVseSBiZSBkZXN0cm95ZWQgZnJvbSBhIGRp
ZmZlcmVudCB0aHJlYWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuY3BwCmluZGV4IGI4NDgxNDVmZTZjNTFkYTg1YWVjMjQxNGM2ZTUyN2IzYzFlNzU4
ZjUuLmMyYzUzYWJmNWVlYjBiNzRhMWUxNTM2NTc4YzA3N2MyYjNmMTU5OWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC00MjgsNyAr
NDI4LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6YWRkV2Vic2l0ZURhdGFTdG9yZShXZWJzaXRl
RGF0YVN0b3JlUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6
YWRkU2Vzc2lvblN0b3JhZ2VRdW90YU1hbmFnZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1
aW50NjRfdCBkZWZhdWx0UXVvdGEsIHVpbnQ2NF90IGRlZmF1bHRUaGlyZFBhcnR5UXVvdGEsIGNv
bnN0IFN0cmluZyYgY2FjaGVSb290UGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBjYWNo
ZVJvb3RQYXRoSGFuZGxlKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2Vzc2lvblN0b3Jh
Z2VRdW90YU1hbmFnZXJzTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fc2Vzc2lvblN0b3Jh
Z2VRdW90YU1hbmFnZXJzTG9jayB9OwogICAgIGF1dG8gaXNOZXdFbnRyeSA9IG1fc2Vzc2lvblN0
b3JhZ2VRdW90YU1hbmFnZXJzLmVuc3VyZShzZXNzaW9uSUQsIFtkZWZhdWx0UXVvdGEsIGRlZmF1
bHRUaGlyZFBhcnR5UXVvdGEsICZjYWNoZVJvb3RQYXRoXSB7CiAgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPFNlc3Npb25TdG9yYWdlUXVvdGFNYW5hZ2VyPihjYWNoZVJvb3RQYXRoLCBkZWZhdWx0
UXVvdGEsIGRlZmF1bHRUaGlyZFBhcnR5UXVvdGEpOwogICAgIH0pLmlzTmV3RW50cnk7CkBAIC00
NDAsNyArNDQwLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6YWRkU2Vzc2lvblN0b3JhZ2VRdW90
YU1hbmFnZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW4KIAogdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6cmVtb3ZlU2Vzc2lvblN0b3JhZ2VRdW90YU1hbmFnZXIoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklEKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2Vzc2lvblN0b3JhZ2VRdW90YU1h
bmFnZXJzTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fc2Vzc2lvblN0b3JhZ2VRdW90YU1h
bmFnZXJzTG9jayB9OwogICAgIEFTU0VSVChtX3Nlc3Npb25TdG9yYWdlUXVvdGFNYW5hZ2Vycy5j
b250YWlucyhzZXNzaW9uSUQpKTsKICAgICBtX3Nlc3Npb25TdG9yYWdlUXVvdGFNYW5hZ2Vycy5y
ZW1vdmUoc2Vzc2lvbklEKTsKIH0KQEAgLTIzNzksNyArMjM3OSw3IEBAIHZvaWQgTmV0d29ya1By
b2Nlc3M6OmFkZEluZGV4ZWREYXRhYmFzZVNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBTdHJpbmcmCiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFNlc3Npb25TdG9yYWdlUXVvdGFN
YW5hZ2VySURCUm9vdFBhdGgoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcm
IGlkYlJvb3RQYXRoKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2Vzc2lvblN0b3JhZ2VR
dW90YU1hbmFnZXJzTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fc2Vzc2lvblN0b3JhZ2VR
dW90YU1hbmFnZXJzTG9jayB9OwogICAgIGF1dG8qIHNlc3Npb25TdG9yYWdlUXVvdGFNYW5hZ2Vy
ID0gbV9zZXNzaW9uU3RvcmFnZVF1b3RhTWFuYWdlcnMuZ2V0KHNlc3Npb25JRCk7CiAgICAgQVNT
RVJUKHNlc3Npb25TdG9yYWdlUXVvdGFNYW5hZ2VyKTsKICAgICBzZXNzaW9uU3RvcmFnZVF1b3Rh
TWFuYWdlci0+c2V0SURCUm9vdFBhdGgoaWRiUm9vdFBhdGgpOwpAQCAtMjM5Myw3ICsyMzkzLDcg
QEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c3luY0xvY2FsU3RvcmFnZShDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmQKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVzZXRR
dW90YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3Nlc3Npb25T
dG9yYWdlUXVvdGFNYW5hZ2Vyc0xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX3Nlc3Npb25T
dG9yYWdlUXVvdGFNYW5hZ2Vyc0xvY2sgfTsKICAgICBpZiAoYXV0byogc2Vzc2lvblN0b3JhZ2VR
dW90YU1hbmFnZXIgPSBtX3Nlc3Npb25TdG9yYWdlUXVvdGFNYW5hZ2Vycy5nZXQoc2Vzc2lvbklE
KSkgewogICAgICAgICBmb3IgKGF1dG8gc3RvcmFnZVF1b3RhTWFuYWdlciA6IHNlc3Npb25TdG9y
YWdlUXVvdGFNYW5hZ2VyLT5leGlzdGluZ1N0b3JhZ2VRdW90YU1hbmFnZXJzKCkpCiAgICAgICAg
ICAgICBzdG9yYWdlUXVvdGFNYW5hZ2VyLT5yZXNldFF1b3RhRm9yVGVzdGluZygpOwpAQCAtMjQ5
OCw3ICsyNDk4LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVxdWVzdFN0b3JhZ2VTcGFjZShQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IENsaWVudE8KIAogUmVmUHRyPFN0b3JhZ2VR
dW90YU1hbmFnZXI+IE5ldHdvcmtQcm9jZXNzOjpzdG9yYWdlUXVvdGFNYW5hZ2VyKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4pCiB7Ci0gICAgTG9j
a0hvbGRlciBsb2NrZXIobV9zZXNzaW9uU3RvcmFnZVF1b3RhTWFuYWdlcnNMb2NrKTsKKyAgICBM
b2NrZXIgbG9ja2VyIHsgbV9zZXNzaW9uU3RvcmFnZVF1b3RhTWFuYWdlcnNMb2NrIH07CiAgICAg
YXV0byogc2Vzc2lvblN0b3JhZ2VRdW90YU1hbmFnZXIgPSBtX3Nlc3Npb25TdG9yYWdlUXVvdGFN
YW5hZ2Vycy5nZXQoc2Vzc2lvbklEKTsKICAgICBpZiAoIXNlc3Npb25TdG9yYWdlUXVvdGFNYW5h
Z2VyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCAyY2Q1ZDBhN2Q3NTIzOTE0NzMxODcyYzkxMzcx
MzU2ODc1NTJmZTIzLi5iNGZlMmM4ZTNmNjY0MjE2ZjFhNzU2ZGNlNTdmZWVkOGNkZjQxNGY4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC01
MSw2ICs1MSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VySWRlbnRpZmllci5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlclR5cGVzLmg+CiAjaW5jbHVkZSA8bWVt
b3J5PgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9Dcm9zc1Ro
cmVhZFRhc2suaD4KICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvSGFz
aFNldC5oPgpAQCAtNTg0LDggKzU4NSw4IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFJUQ0RhdGFD
aGFubmVsUmVtb3RlTWFuYWdlclByb3h5PiBtX3J0Y0RhdGFDaGFubmVsUHJveHk7CiAjZW5kaWYK
IAotICAgIExvY2sgbV9zZXNzaW9uU3RvcmFnZVF1b3RhTWFuYWdlcnNMb2NrOwotICAgIEhhc2hN
YXA8UEFMOjpTZXNzaW9uSUQsIHN0ZDo6dW5pcXVlX3B0cjxTZXNzaW9uU3RvcmFnZVF1b3RhTWFu
YWdlcj4+IG1fc2Vzc2lvblN0b3JhZ2VRdW90YU1hbmFnZXJzOworICAgIENoZWNrZWRMb2NrIG1f
c2Vzc2lvblN0b3JhZ2VRdW90YU1hbmFnZXJzTG9jazsKKyAgICBIYXNoTWFwPFBBTDo6U2Vzc2lv
bklELCBzdGQ6OnVuaXF1ZV9wdHI8U2Vzc2lvblN0b3JhZ2VRdW90YU1hbmFnZXI+PiBtX3Nlc3Np
b25TdG9yYWdlUXVvdGFNYW5hZ2VycyBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fc2Vzc2lvblN0b3Jh
Z2VRdW90YU1hbmFnZXJzTG9jayk7CiAgICAgYm9vbCBtX3F1b3RhTG9nZ2luZ0VuYWJsZWQgeyBm
YWxzZSB9OwogCiAgICAgT3B0aW9uU2V0PE5ldHdvcmtDYWNoZTo6Q2FjaGVPcHRpb24+IG1fY2Fj
aGVPcHRpb25zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJT
dG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlclNldC5jcHAKaW5kZXggN2M0Y2Q4YTVjMzNlMmFk
NjlmZmZkYzVmN2ZlNTFjMWJlNmYwMzQ4Ni4uZjllODQzZGUzNzMxOWRkNmM1YzEwNjNhM2NkY2Y1
YzFkNGJiYTE5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJT
dG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQuY3BwCkBAIC0xNjMsMTMgKzE2Mywx
MyBAQCB2b2lkIFN0b3JhZ2VNYW5hZ2VyU2V0OjpzdXNwZW5kKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkp
OwogCiAgICAgQ29tcGxldGlvbkhhbmRsZXJDYWxsaW5nU2NvcGUgY29tcGxldGlvbkhhbmRsZXJD
YWxsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAgIExvY2tlcjxMb2NrPiBzdGF0
ZUxvY2tlcihtX3N0YXRlTG9jayk7CisgICAgTG9ja2VyIHN0YXRlTG9ja2VyIHsgbV9zdGF0ZUxv
Y2sgfTsKICAgICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6UnVubmluZykKICAgICAgICAgcmV0dXJu
OwogICAgIG1fc3RhdGUgPSBTdGF0ZTo6V2lsbFN1c3BlbmQ7CiAKICAgICBtX3F1ZXVlLT5kaXNw
YXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFu
ZGxlciA9IGNvbXBsZXRpb25IYW5kbGVyQ2FsbGVyLnJlbGVhc2UoKV0gKCkgbXV0YWJsZSB7Ci0g
ICAgICAgIExvY2tlcjxMb2NrPiBzdGF0ZUxvY2tlcihtX3N0YXRlTG9jayk7CisgICAgICAgIExv
Y2tlciBzdGF0ZUxvY2tlciB7IG1fc3RhdGVMb2NrIH07CiAgICAgICAgIEFTU0VSVChtX3N0YXRl
ICE9IFN0YXRlOjpTdXNwZW5kZWQpOwogCiAgICAgICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpX
aWxsU3VzcGVuZCkgewpAQCAtMTkwLDcgKzE5MCw3IEBAIHZvaWQgU3RvcmFnZU1hbmFnZXJTZXQ6
OnJlc3VtZSgpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIExvY2tl
cjxMb2NrPiBzdGF0ZUxvY2tlcihtX3N0YXRlTG9jayk7CisgICAgTG9ja2VyIHN0YXRlTG9ja2Vy
IHsgbV9zdGF0ZUxvY2sgfTsKICAgICBhdXRvIHByZXZpb3VzU3RhdGUgPSBtX3N0YXRlOwogICAg
IG1fc3RhdGUgPSBTdGF0ZTo6UnVubmluZzsKICAgICBpZiAocHJldmlvdXNTdGF0ZSA9PSBTdGF0
ZTo6U3VzcGVuZGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9X
ZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQuaAppbmRleCAwYzcyNDljM2M4NDUxNzM2
Y2Y2N2I4MDJhMDNjYzkxODEwODk2NTgzLi40MzBmOTZkYTVjNjg4ODU5ZDYwZGM3ODFhZTAwMWUw
NTUxMjNhYTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0
b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQuaApAQCAtMzEsNiArMzEsOCBAQAogI2lu
Y2x1ZGUgIlN0b3JhZ2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdp
bkRhdGEuaD4KICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CisjaW5jbHVkZSA8d3RmL0NoZWNr
ZWRDb25kaXRpb24uaD4KKyNpbmNsdWRlIDx3dGYvQ2hlY2tlZExvY2suaD4KICNpbmNsdWRlIDx3
dGYvV2Vha1B0ci5oPgogCiB1c2luZyBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE7CkBAIC0x
MDIsOCArMTA0LDggQEAgcHJpdmF0ZToKICAgICAgICAgU3VzcGVuZGVkCiAgICAgfTsKICAgICBT
dGF0ZSBtX3N0YXRlIHsgU3RhdGU6OlJ1bm5pbmcgfTsKLSAgICBMb2NrIG1fc3RhdGVMb2NrOwot
ICAgIENvbmRpdGlvbiBtX3N0YXRlQ2hhbmdlQ29uZGl0aW9uOworICAgIENoZWNrZWRMb2NrIG1f
c3RhdGVMb2NrOworICAgIENoZWNrZWRDb25kaXRpb24gbV9zdGF0ZUNoYW5nZUNvbmRpdGlvbjsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU9i
c2VydmVyLmgKaW5kZXggN2QyZWY4ZjQ1YzE0ZDk4YTQyMzBhZWI0YzdkZTdhNjFkY2MwZmUyNy4u
ODRkZjI4MWMxNzhjYTAyYWY3ZjVhZGQ0NTU2M2I0MDBjMjA2ODRmZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2Jz
ZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL0xhdW5jaFNl
cnZpY2VzRGF0YWJhc2VPYnNlcnZlci5oCkBAIC0yOCw3ICsyOCw3IEBACiAjaW5jbHVkZSAiTmV0
d29ya1Byb2Nlc3MuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc1N1cHBsZW1lbnQuaCIKICNp
bmNsdWRlICJYUENFbmRwb2ludC5oIgotI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CisjaW5jbHVkZSA8
d3RmL0NoZWNrZWRMb2NrLmg+CiAjaW5jbHVkZSA8d3RmL09TT2JqZWN0UHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1JldGFpblB0ci5oPgogCkBAIC01NSw4ICs1NSw4IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBpbml0aWFsaXplQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb24qKSBmaW5hbDsKIAogICAgIFJl
dGFpblB0cjxpZD4gbV9vYnNlcnZlcjsKLSAgICBWZWN0b3I8T1NPYmplY3RQdHI8eHBjX2Nvbm5l
Y3Rpb25fdD4+IG1fY29ubmVjdGlvbnM7Ci0gICAgTG9jayBtX2Nvbm5lY3Rpb25zTG9jazsKKyAg
ICBDaGVja2VkTG9jayBtX2Nvbm5lY3Rpb25zTG9jazsKKyAgICBWZWN0b3I8T1NPYmplY3RQdHI8
eHBjX2Nvbm5lY3Rpb25fdD4+IG1fY29ubmVjdGlvbnMgV1RGX0dVQVJERURfQllfTE9DSyhtX2Nv
bm5lY3Rpb25zTG9jayk7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NvY29hL0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlci5tbSBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2Vy
dmVyLm1tCmluZGV4IDY4MGNiNDBhMGY1ZmYyMjBjOGE4MjhlNTY0NmJhNzQ0NTY4MGU3MTcuLjQz
MjJlNDRlOGVhMDYzYzNkYWE4ZTJjNmRlN2E1YTA4NWY1YTgxZTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2Vy
dmVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTGF1bmNoU2Vy
dmljZXNEYXRhYmFzZU9ic2VydmVyLm1tCkBAIC01Niw3ICs1Niw3IEBAIExhdW5jaFNlcnZpY2Vz
RGF0YWJhc2VPYnNlcnZlcjo6TGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyKE5ldHdvcmtQ
cm9jZXNzJikKICAgICAgICAgeHBjX2RpY3Rpb25hcnlfc2V0X3N0cmluZyhtZXNzYWdlLmdldCgp
LCBYUENFbmRwb2ludDo6eHBjTWVzc2FnZU5hbWVLZXksIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VY
UENDb25zdGFudHM6OnhwY1VwZGF0ZUxhdW5jaFNlcnZpY2VzRGF0YWJhc2VNZXNzYWdlTmFtZSk7
CiAgICAgICAgIHhwY19kaWN0aW9uYXJ5X3NldF92YWx1ZShtZXNzYWdlLmdldCgpLCBMYXVuY2hT
ZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzOjp4cGNMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlS2V5
LCBjaGFuZ2UpOwogCi0gICAgICAgIExvY2tIb2xkZXIgaG9sZGVyKG1fY29ubmVjdGlvbnNMb2Nr
KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fY29ubmVjdGlvbnNMb2NrIH07CiAgICAgICAg
IGZvciAoYXV0byYgY29ubmVjdGlvbiA6IG1fY29ubmVjdGlvbnMpIHsKICAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUKHhwY19nZXRfdHlwZShjb25uZWN0aW9uLmdldCgpKSA9PSBYUENfVFlQRV9D
T05ORUNUSU9OKTsKICAgICAgICAgICAgIHhwY19jb25uZWN0aW9uX3NlbmRfbWVzc2FnZShjb25u
ZWN0aW9uLmdldCgpLCBtZXNzYWdlLmdldCgpKTsKQEAgLTczLDcgKzczLDcgQEAgY29uc3QgY2hh
ciogTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyOjpzdXBwbGVtZW50TmFtZSgpCiB2b2lk
IExhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlcjo6c3RhcnRPYnNlcnZpbmcoT1NPYmplY3RQ
dHI8eHBjX2Nvbm5lY3Rpb25fdD4gY29ubmVjdGlvbikKIHsKICAgICB7Ci0gICAgICAgIExvY2tI
b2xkZXIgaG9sZGVyKG1fY29ubmVjdGlvbnNMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7
IG1fY29ubmVjdGlvbnNMb2NrIH07CiAgICAgICAgIG1fY29ubmVjdGlvbnMuYXBwZW5kKGNvbm5l
Y3Rpb24pOwogICAgIH0KIApAQCAtMTMyLDcgKzEzMiw3IEBAIHZvaWQgTGF1bmNoU2VydmljZXNE
YXRhYmFzZU9ic2VydmVyOjpoYW5kbGVFdmVudCh4cGNfY29ubmVjdGlvbl90IGNvbm5lY3Rpb24s
IHhwCiAgICAgICAgIGlmIChldmVudCAhPSBYUENfRVJST1JfQ09OTkVDVElPTl9JTlZBTElEICYm
IGV2ZW50ICE9IFhQQ19FUlJPUl9URVJNSU5BVElPTl9JTU1JTkVOVCkKICAgICAgICAgICAgIHJl
dHVybjsKIAotICAgICAgICBMb2NrSG9sZGVyIGhvbGRlcihtX2Nvbm5lY3Rpb25zTG9jayk7Cisg
ICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2Nvbm5lY3Rpb25zTG9jayB9OwogICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG1fY29ubmVjdGlvbnMuc2l6ZSgpOyBpKyspIHsKICAgICAgICAg
ICAgIGlmIChtX2Nvbm5lY3Rpb25zW2ldLmdldCgpID09IGNvbm5lY3Rpb24pIHsKICAgICAgICAg
ICAgICAgICBtX2Nvbm5lY3Rpb25zLnJlbW92ZShpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0Jsb2NraW5nUmVzcG9uc2VNYXAuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Js
b2NraW5nUmVzcG9uc2VNYXAuaAppbmRleCA1MmY3OGZjMzYyMTY0NzRhOWY1ZDZkMzhhN2ZiODcx
Zjc0MTUyOTY2Li44OGIwNjM5MmZmYjg0NTI5NTAwZjFmMDRjYmNkNjU5N2YxNDE5OWNjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9CbG9ja2luZ1Jlc3BvbnNlTWFwLmgKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQmxvY2tpbmdSZXNwb25zZU1hcC5oCkBAIC0yNiw5ICsyNiw5
IEBACiAjaWZuZGVmIEJsb2NraW5nUmVzcG9uc2VNYXBfaAogI2RlZmluZSBCbG9ja2luZ1Jlc3Bv
bnNlTWFwX2gKIAotI2luY2x1ZGUgPHd0Zi9Db25kaXRpb24uaD4KKyNpbmNsdWRlIDx3dGYvQ2hl
Y2tlZENvbmRpdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkTG9jay5oPgogI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvTm9u
Y29weWFibGUuaD4KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KQEAgLTQxLDcgKzQxLDcgQEAgcHVi
bGljOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxUPiB3YWl0Rm9yUmVzcG9uc2UodWludDY0X3QgcmVx
dWVzdElEKQogICAgIHsKICAgICAgICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8TG9jaz4gbG9jayhtX211dGV4KTsKKyAgICAgICAgICAgIExvY2tlciBsb2Nr
ZXIgeyBtX3Jlc3BvbnNlc0xvY2sgfTsKIAogICAgICAgICAgICAgaWYgKG1fY2FuY2VsZWQpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgIGlmIChzdGQ6OnVuaXF1ZV9wdHI8VD4gcmVzcG9uc2UgPSBtX3Jlc3BvbnNl
cy50YWtlKHJlcXVlc3RJRCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlOwogCi0g
ICAgICAgICAgICBtX2NvbmRpdGlvbi53YWl0KGxvY2spOworICAgICAgICAgICAgbV9jb25kaXRp
b24ud2FpdChtX3Jlc3BvbnNlc0xvY2spOwogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGlkUmVjZWl2ZVJl
c3BvbnNlKHVpbnQ2NF90IHJlcXVlc3RJRCwgc3RkOjp1bmlxdWVfcHRyPFQ+IHJlc3BvbnNlKQog
ICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX211dGV4KTsKKyAgICAgICAg
TG9ja2VyIGxvY2tlciB7IG1fcmVzcG9uc2VzTG9jayB9OwogICAgICAgICBBU1NFUlQoIW1fcmVz
cG9uc2VzLmNvbnRhaW5zKHJlcXVlc3RJRCkpOwogCiAgICAgICAgIG1fcmVzcG9uc2VzLnNldChy
ZXF1ZXN0SUQsIFdURk1vdmUocmVzcG9uc2UpKTsKQEAgLTc1LDEwICs3NSwxMCBAQCBwdWJsaWM6
CiAgICAgfQogCiBwcml2YXRlOgotICAgIExvY2sgbV9tdXRleDsKLSAgICBDb25kaXRpb24gbV9j
b25kaXRpb247CisgICAgQ2hlY2tlZExvY2sgbV9yZXNwb25zZXNMb2NrOworICAgIENoZWNrZWRD
b25kaXRpb24gbV9jb25kaXRpb247CiAKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBzdGQ6OnVuaXF1
ZV9wdHI8VD4+IG1fcmVzcG9uc2VzOworICAgIEhhc2hNYXA8dWludDY0X3QsIHN0ZDo6dW5pcXVl
X3B0cjxUPj4gbV9yZXNwb25zZXMgV1RGX0dVQVJERURfQllfTE9DSyhtX3Jlc3BvbnNlc0xvY2sp
OwogICAgIGJvb2wgbV9jYW5jZWxlZDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0NvY29hL1hQQ0VuZHBvaW50Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9D
b2NvYS9YUENFbmRwb2ludENsaWVudC5oCmluZGV4IGQ3ZTQzNWQyYjljN2M2MmExMjgwMDlhNTgz
ZTg3YWMwZjg2NTFiZTkuLjViODI5YmM2OWFhZTE5ZmJmOWJiYzE5NTExNjk1NjA2MGUxMGQ0NTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hQQ0VuZHBvaW50Q2xpZW50
LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvWFBDRW5kcG9pbnRDbGllbnQuaApA
QCAtMjYsNyArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJXS0RlY2xhcmF0aW9u
U3BlY2lmaWVycy5oIgotI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CisjaW5jbHVkZSA8d3RmL0NoZWNr
ZWRMb2NrLmg+CiAjaW5jbHVkZSA8d3RmL09TT2JqZWN0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL3Nw
aS9kYXJ3aW4vWFBDU1BJLmg+CiAKQEAgLTQ1LDggKzQ1LDggQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIHZvaWQgaGFuZGxlRXZlbnQoeHBjX29iamVjdF90KSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGRpZENvbm5lY3QoKSA9IDA7CiAKLSAgICBPU09iamVjdFB0cjx4cGNfY29ubmVjdGlvbl90PiBt
X2Nvbm5lY3Rpb247Ci0gICAgTG9jayBtX2xvY2s7CisgICAgQ2hlY2tlZExvY2sgbV9jb25uZWN0
aW9uTG9jazsKKyAgICBPU09iamVjdFB0cjx4cGNfY29ubmVjdGlvbl90PiBtX2Nvbm5lY3Rpb24g
V1RGX0dVQVJERURfQllfTE9DSyhtX2Nvbm5lY3Rpb25Mb2NrKTsKIH07CiAKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hQQ0VuZHBvaW50Q2xpZW50Lm1tIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvWFBDRW5kcG9pbnRDbGllbnQubW0KaW5kZXggZWUxNzgx
YjIzM2I1OGI0OWM4YTZjYjczNGM3MTY3ZTMyN2M5MTZmNy4uMDAyZGUzN2VkZDE2ODlkNjc4MzRj
MjE4Y2Y0NDViNGE4YzM4NTZmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29j
b2EvWFBDRW5kcG9pbnRDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2Ev
WFBDRW5kcG9pbnRDbGllbnQubW0KQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7
CiB2b2lkIFhQQ0VuZHBvaW50Q2xpZW50OjpzZXRFbmRwb2ludCh4cGNfZW5kcG9pbnRfdCBlbmRw
b2ludCkKIHsKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CisgICAg
ICAgIExvY2tlciBsb2NrZXIgeyBtX2Nvbm5lY3Rpb25Mb2NrIH07CiAKICAgICAgICAgaWYgKG1f
Y29ubmVjdGlvbikKICAgICAgICAgICAgIHJldHVybjsKQEAgLTQ1LDcgKzQ1LDcgQEAgdm9pZCBY
UENFbmRwb2ludENsaWVudDo6c2V0RW5kcG9pbnQoeHBjX2VuZHBvaW50X3QgZW5kcG9pbnQpCiAg
ICAgICAgICAgICB4cGNfdHlwZV90IHR5cGUgPSB4cGNfZ2V0X3R5cGUobWVzc2FnZSk7CiAgICAg
ICAgICAgICBpZiAodHlwZSA9PSBYUENfVFlQRV9FUlJPUikgewogICAgICAgICAgICAgICAgIGlm
IChtZXNzYWdlID09IFhQQ19FUlJPUl9DT05ORUNUSU9OX0lOVkFMSUQgfHwgbWVzc2FnZSA9PSBY
UENfRVJST1JfVEVSTUlOQVRJT05fSU1NSU5FTlQpIHsKLSAgICAgICAgICAgICAgICAgICAgTG9j
a0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgTG9ja2VyIGxvY2tl
ciB7IG1fY29ubmVjdGlvbkxvY2sgfTsKICAgICAgICAgICAgICAgICAgICAgbV9jb25uZWN0aW9u
ID0gbnVsbHB0cjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpA
QCAtNzQsNyArNzQsNyBAQCB2b2lkIFhQQ0VuZHBvaW50Q2xpZW50OjpzZXRFbmRwb2ludCh4cGNf
ZW5kcG9pbnRfdCBlbmRwb2ludCkKIAogT1NPYmplY3RQdHI8eHBjX2Nvbm5lY3Rpb25fdD4gWFBD
RW5kcG9pbnRDbGllbnQ6OmNvbm5lY3Rpb24oKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1f
bG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fY29ubmVjdGlvbkxvY2sgfTsKICAgICByZXR1
cm4gbV9jb25uZWN0aW9uOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJVUkxTY2hlbWVUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNj
aGVtZVRhc2suY3BwCmluZGV4IDE2ZDJjY2I5Y2Q3ZjcyMzZlMThlNmU2ODIzMTBjYzM3ZDhmYWY0
MzcuLjk3NmNmYjVkNjM4MGU3ZjhkMzYyZjYyYjVlMWJkMTVlNWJkNWE2YzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCkBAIC02MCw2ICs2MCwxMyBA
QCBXZWJVUkxTY2hlbWVUYXNrOjp+V2ViVVJMU2NoZW1lVGFzaygpCiAgICAgQVNTRVJUKFJ1bkxv
b3A6OmlzTWFpbigpKTsKIH0KIAorUmVzb3VyY2VSZXF1ZXN0IFdlYlVSTFNjaGVtZVRhc2s6OnJl
cXVlc3QoKSBjb25zdAoreworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAgTG9j
a2VyIGxvY2tlciB7IG1fcmVxdWVzdExvY2sgfTsKKyAgICByZXR1cm4gbV9yZXF1ZXN0OworfQor
CiBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OndpbGxQZXJmb3JtUmVkaXJlY3Rpb24oUmVzb3VyY2VS
ZXNwb25zZSYmIHJlc3BvbnNlLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCAgRnVuY3Rpb248
dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIC0+IEV4Y2VwdGlv
blR5cGUKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwpAQCAtODMsNyArOTAsNyBA
QCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OndpbGxQZXJmb3JtUmVkaXJlY3Rpb24oUmVzb3VyY2VS
ZXNwb25zZSYmIHJlc3BvbnNlLCBSZXNvdQogICAgICAgICBtX3N5bmNSZXNwb25zZSA9IHJlc3Bv
bnNlOwogCiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3JlcXVlc3RMb2NrKTsK
KyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fcmVxdWVzdExvY2sgfTsKICAgICAgICAgbV9yZXF1
ZXN0ID0gcmVxdWVzdDsKICAgICB9CiAKQEAgLTEyNyw3ICsxMzQsNyBAQCBhdXRvIFdlYlVSTFNj
aGVtZVRhc2s6OmRpZFBlcmZvcm1SZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiYgcmVzcG9ucwogICAgICAgICBtX3N5bmNSZXNwb25zZSA9IHJlc3BvbnNlOwogCiAgICAgewot
ICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3JlcXVlc3RMb2NrKTsKKyAgICAgICAgTG9ja2Vy
IGxvY2tlciB7IG1fcmVxdWVzdExvY2sgfTsKICAgICAgICAgbV9yZXF1ZXN0ID0gcmVxdWVzdDsK
ICAgICB9CiAKQEAgLTIzOCw3ICsyNDUsNyBAQCB2b2lkIFdlYlVSTFNjaGVtZVRhc2s6OnBhZ2VE
ZXN0cm95ZWQoKQogICAgIG1fc3RvcHBlZCA9IHRydWU7CiAgICAgCiAgICAgaWYgKGlzU3luYygp
KSB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fcmVxdWVzdExvY2spOworICAgICAgICBM
b2NrZXIgbG9ja2VyIHsgbV9yZXF1ZXN0TG9jayB9OwogICAgICAgICBtX3N5bmNDb21wbGV0aW9u
SGFuZGxlcih7IH0sIGZhaWxlZEN1c3RvbVByb3RvY29sU3luY0xvYWQobV9yZXF1ZXN0KSwgeyB9
KTsKICAgICB9CiB9CkBAIC0yNTEsNyArMjU4LDcgQEAgdm9pZCBXZWJVUkxTY2hlbWVUYXNrOjpz
dG9wKCkKICAgICBtX3N0b3BwZWQgPSB0cnVlOwogCiAgICAgaWYgKGlzU3luYygpKSB7Ci0gICAg
ICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fcmVxdWVzdExvY2spOworICAgICAgICBMb2NrZXIgbG9j
a2VyIHsgbV9yZXF1ZXN0TG9jayB9OwogICAgICAgICBtX3N5bmNDb21wbGV0aW9uSGFuZGxlcih7
IH0sIGZhaWxlZEN1c3RvbVByb3RvY29sU3luY0xvYWQobV9yZXF1ZXN0KSwgeyB9KTsKICAgICB9
CiB9CkBAIC0yNTksNyArMjY2LDcgQEAgdm9pZCBXZWJVUkxTY2hlbWVUYXNrOjpzdG9wKCkKICNp
ZiBQTEFURk9STShDT0NPQSkKIE5TVVJMUmVxdWVzdCAqV2ViVVJMU2NoZW1lVGFzazo6bnNSZXF1
ZXN0KCkgY29uc3QKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3JlcXVlc3RMb2NrKTsKKyAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9yZXF1ZXN0TG9jayB9OwogICAgIHJldHVybiBtX3JlcXVlc3Qu
bnNVUkxSZXF1ZXN0KFdlYkNvcmU6OkhUVFBCb2R5VXBkYXRlUG9saWN5OjpVcGRhdGVIVFRQQm9k
eSk7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVS
TFNjaGVtZVRhc2suaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2su
aAppbmRleCBmZTNjNTI5OTU4ZGQ5OWEzNWQ4N2E0OTRkM2ZkNDE0MjNjNGU4OTI0Li5iOTI5Mjg5
NGZhNWMzNGE5ZjVkOGJmMzFjZjZhMzIwYTFkYWZmMzhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSA8V2Vi
Q29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9u
c2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgorI2luY2x1ZGUgPHd0Zi9D
aGVja2VkTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1
ZGUgPHd0Zi9JbnN0YW5jZUNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpA
QCAtNjQsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdl
UHJveHlJRCgpIGNvbnN0IHsgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsgcmV0dXJuIG1fcGFn
ZVByb3h5SUQ7IH0KICAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQoKSBjb25z
dCB7IEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7IHJldHVybiBtX3dlYlBhZ2VJRDsgfQogICAg
IFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcygpIHsgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsg
cmV0dXJuIG1fcHJvY2Vzcy5nZXQoKTsgfQotICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCgpIGNvbnN0IHsgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsgcmV0dXJu
IG1fcmVxdWVzdDsgfQorICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0KCkgY29u
c3Q7CiAgICAgQVBJOjpGcmFtZUluZm8mIGZyYW1lSW5mbygpIGNvbnN0IHsgcmV0dXJuIG1fZnJh
bWVJbmZvLmdldCgpOyB9CiAKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTEwMyw5ICsxMDQsOSBA
QCBwcml2YXRlOgogICAgIHVpbnQ2NF90IG1faWRlbnRpZmllcjsKICAgICBXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyIG1fcGFnZVByb3h5SUQ7CiAgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV93
ZWJQYWdlSUQ7Ci0gICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IG1fcmVxdWVzdDsKKyAgICBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgbV9yZXF1ZXN0IFdURl9HVUFSREVEX0JZX0xPQ0sobV9y
ZXF1ZXN0TG9jayk7CiAgICAgUmVmPEFQSTo6RnJhbWVJbmZvPiBtX2ZyYW1lSW5mbzsKLSAgICBt
dXRhYmxlIExvY2sgbV9yZXF1ZXN0TG9jazsKKyAgICBtdXRhYmxlIENoZWNrZWRMb2NrIG1fcmVx
dWVzdExvY2s7CiAgICAgYm9vbCBtX3N0b3BwZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9yZXNw
b25zZVNlbnQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9kYXRhU2VudCB7IGZhbHNlIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvRGlzcGxheUxpbmsuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL0Rpc3BsYXlMaW5rLmNwcAppbmRleCA0NWJlZDY0OGIz
NjYzNzQ2M2NjNGNhMTJjZjllNTE5NmY4Nzg5YWQzLi41YjAwZWM1ODJkMTQyZWJlMzMyMTkxYTFm
YmY2MWFiODhlODlhZWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMv
RGlzcGxheUxpbmsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9EaXNwbGF5
TGluay5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgdm9pZCBEaXNwbGF5TGluazo6YWRkT2JzZXJ2ZXIo
SVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBEaXNwbGF5TGlua09ic2VydmVySUQKICAgICBM
T0dfV0lUSF9TVFJFQU0oRGlzcGxheUxpbmssIHN0cmVhbSA8PCAiW1VJIF0gRGlzcGxheUxpbmsg
IiA8PCB0aGlzIDw8ICIgZm9yIGRpc3BsYXkgZGlzcGxheSAiIDw8IG1fZGlzcGxheUlEIDw8ICIg
YWRkIG9ic2VydmVyICIgPDwgb2JzZXJ2ZXJJRCA8PCAiIGZwcyAiIDw8IHByZWZlcnJlZEZyYW1l
c1BlclNlY29uZCk7CiAKICAgICB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9v
YnNlcnZlcnNMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fb2JzZXJ2ZXJzTG9jayB9
OwogICAgICAgICBtX29ic2VydmVycy5lbnN1cmUoJmNvbm5lY3Rpb24sIFtdIHsKICAgICAgICAg
ICAgIHJldHVybiBDb25uZWN0aW9uQ2xpZW50SW5mbyB7IH07CiAgICAgICAgIH0pLml0ZXJhdG9y
LT52YWx1ZS5vYnNlcnZlcnMuYXBwZW5kKHsgb2JzZXJ2ZXJJRCwgcHJlZmVycmVkRnJhbWVzUGVy
U2Vjb25kIH0pOwpAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgRGlzcGxheUxpbms6OnJlbW92ZU9i
c2VydmVyKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgRGlzcGxheUxpbmtPYnNlcnZlCiB7
CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIGF1dG8gbG9ja2VyID0gaG9s
ZExvY2sobV9vYnNlcnZlcnNMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9vYnNlcnZlcnNM
b2NrIH07CiAKICAgICBhdXRvIGl0ID0gbV9vYnNlcnZlcnMuZmluZCgmY29ubmVjdGlvbik7CiAg
ICAgaWYgKGl0ID09IG1fb2JzZXJ2ZXJzLmVuZCgpKQpAQCAtMTM1LDcgKzEzNSw3IEBAIHZvaWQg
RGlzcGxheUxpbms6OnJlbW92ZU9ic2VydmVycyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24p
CiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIGF1dG8gbG9ja2VyID0g
aG9sZExvY2sobV9vYnNlcnZlcnNMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9vYnNlcnZl
cnNMb2NrIH07CiAgICAgbV9vYnNlcnZlcnMucmVtb3ZlKCZjb25uZWN0aW9uKTsKIAogICAgIC8v
IFdlIGRvIG5vdCBzdG9wIHRoZSBkaXNwbGF5IGxpbmsgcmlnaHQgYXdheSB3aGVuIHxtX29ic2Vy
dmVyc3wgYmVjb21lcyBlbXB0eS4gSW5zdGVhZCwgd2UKQEAgLTE1Niw3ICsxNTYsNyBAQCB2b2lk
IERpc3BsYXlMaW5rOjpyZW1vdmVJbmZvRm9yQ29ubmVjdGlvbklmUG9zc2libGUoSVBDOjpDb25u
ZWN0aW9uJiBjb25uZWN0aW9uKQogCiB2b2lkIERpc3BsYXlMaW5rOjppbmNyZW1lbnRGdWxsU3Bl
ZWRSZXF1ZXN0Q2xpZW50Q291bnQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogewotICAg
IGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9vYnNlcnZlcnNMb2NrKTsKKyAgICBMb2NrZXIgbG9j
a2VyIHsgbV9vYnNlcnZlcnNMb2NrIH07CiAKICAgICBhdXRvJiBjb25uZWN0aW9uSW5mbyA9IG1f
b2JzZXJ2ZXJzLmVuc3VyZSgmY29ubmVjdGlvbiwgW10gewogICAgICAgICByZXR1cm4gQ29ubmVj
dGlvbkNsaWVudEluZm8geyB9OwpAQCAtMTY3LDcgKzE2Nyw3IEBAIHZvaWQgRGlzcGxheUxpbms6
OmluY3JlbWVudEZ1bGxTcGVlZFJlcXVlc3RDbGllbnRDb3VudChJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lY3RpCiAKIHZvaWQgRGlzcGxheUxpbms6OmRlY3JlbWVudEZ1bGxTcGVlZFJlcXVlc3RDbGll
bnRDb3VudChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiB7Ci0gICAgYXV0byBsb2NrZXIg
PSBob2xkTG9jayhtX29ic2VydmVyc0xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX29ic2Vy
dmVyc0xvY2sgfTsKIAogICAgIGF1dG8gaXQgPSBtX29ic2VydmVycy5maW5kKCZjb25uZWN0aW9u
KTsKICAgICBpZiAoaXQgPT0gbV9vYnNlcnZlcnMuZW5kKCkpCkBAIC0xODMsNyArMTgzLDcgQEAg
dm9pZCBEaXNwbGF5TGluazo6c2V0UHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kKElQQzo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbiwgRGlzcGwKIHsKICAgICBMT0dfV0lUSF9TVFJFQU0oRGlzcGxheUxp
bmssIHN0cmVhbSA8PCAiW1VJIF0gRGlzcGxheUxpbmsgIiA8PCB0aGlzIDw8ICIgc2V0UHJlZmVy
cmVkRnJhbWVzUGVyU2Vjb25kIC0gZGlzcGxheSAiIDw8IG1fZGlzcGxheUlEIDw8ICIgb2JzZXJ2
ZXIgIiA8PCBvYnNlcnZlcklEIDw8ICIgZnBzICIgPDwgcHJlZmVycmVkRnJhbWVzUGVyU2Vjb25k
KTsKIAotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9vYnNlcnZlcnNMb2NrKTsKKyAgICBM
b2NrZXIgbG9ja2VyIHsgbV9vYnNlcnZlcnNMb2NrIH07CiAKICAgICBhdXRvIGl0ID0gbV9vYnNl
cnZlcnMuZmluZCgmY29ubmVjdGlvbik7CiAgICAgaWYgKGl0ID09IG1fb2JzZXJ2ZXJzLmVuZCgp
KQpAQCAtMjA4LDcgKzIwOCw3IEBAIHZvaWQgRGlzcGxheUxpbms6Om5vdGlmeU9ic2VydmVyc0Rp
c3BsYXlXYXNSZWZyZXNoZWQoKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwog
Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX29ic2VydmVyc0xvY2spOworICAgIExvY2tl
ciBsb2NrZXIgeyBtX29ic2VydmVyc0xvY2sgfTsKIAogICAgIGF1dG8gbWF4RnJhbWVzUGVyU2Vj
b25kID0gW10oY29uc3QgVmVjdG9yPE9ic2VydmVySW5mbz4mIG9ic2VydmVycykgewogICAgICAg
ICBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZXNQZXJTZWNvbmQ+IG9ic2VydmVyc01heEZyYW1lc1Bl
clNlY29uZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9EaXNwbGF5
TGluay5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL0Rpc3BsYXlMaW5rLmgKaW5kZXgg
NjdkMTRlMTE0ZjhmYTk1NzE4OTZhZDc4NjdkOGI1OWM4Y2NiMDE0Yy4uNDI4N2EwOTdmNjliNTE1
ZTIxNjkyZmRmNWM3ZTYyOGUyOTUxYzY2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvbWFjL0Rpc3BsYXlMaW5rLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFj
L0Rpc3BsYXlMaW5rLmgKQEAgLTMyLDggKzMyLDggQEAKICNpbmNsdWRlIDxXZWJDb3JlL0FuaW1h
dGlvbkZyYW1lUmF0ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheVVwZGF0ZS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1TY3JlZW4uaD4KKyNpbmNsdWRlIDx3dGYvQ2hlY2tlZExv
Y2suaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAK
IG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVjdGlvbjsKQEAgLTY4LDcgKzY4LDcgQEAgcHJp
dmF0ZToKICAgICBzdGF0aWMgQ1ZSZXR1cm4gZGlzcGxheUxpbmtDYWxsYmFjayhDVkRpc3BsYXlM
aW5rUmVmLCBjb25zdCBDVlRpbWVTdGFtcCosIGNvbnN0IENWVGltZVN0YW1wKiwgQ1ZPcHRpb25G
bGFncywgQ1ZPcHRpb25GbGFncyosIHZvaWQqIGRhdGEpOwogICAgIHZvaWQgbm90aWZ5T2JzZXJ2
ZXJzRGlzcGxheVdhc1JlZnJlc2hlZCgpOwogCi0gICAgdm9pZCByZW1vdmVJbmZvRm9yQ29ubmVj
dGlvbklmUG9zc2libGUoSVBDOjpDb25uZWN0aW9uJik7CisgICAgdm9pZCByZW1vdmVJbmZvRm9y
Q29ubmVjdGlvbklmUG9zc2libGUoSVBDOjpDb25uZWN0aW9uJikgV1RGX1JFUVVJUkVTX0xPQ0so
bV9vYnNlcnZlcnNMb2NrKTsKIAogICAgIHN0YXRpYyBXZWJDb3JlOjpGcmFtZXNQZXJTZWNvbmQg
bm9taW5hbEZyYW1lc1BlclNlY29uZEZyb21EaXNwbGF5TGluayhDVkRpc3BsYXlMaW5rUmVmKTsK
IApAQCAtODMsOCArODMsOCBAQCBwcml2YXRlOgogICAgIH07CiAKICAgICBDVkRpc3BsYXlMaW5r
UmVmIG1fZGlzcGxheUxpbmsgeyBudWxscHRyIH07Ci0gICAgTG9jayBtX29ic2VydmVyc0xvY2s7
Ci0gICAgSGFzaE1hcDxSZWZQdHI8SVBDOjpDb25uZWN0aW9uPiwgQ29ubmVjdGlvbkNsaWVudElu
Zm8+IG1fb2JzZXJ2ZXJzOworICAgIENoZWNrZWRMb2NrIG1fb2JzZXJ2ZXJzTG9jazsKKyAgICBI
YXNoTWFwPFJlZlB0cjxJUEM6OkNvbm5lY3Rpb24+LCBDb25uZWN0aW9uQ2xpZW50SW5mbz4gbV9v
YnNlcnZlcnMgV1RGX0dVQVJERURfQllfTE9DSyhtX29ic2VydmVyc0xvY2spOwogICAgIFdlYkNv
cmU6OlBsYXRmb3JtRGlzcGxheUlEIG1fZGlzcGxheUlEOwogICAgIFdlYkNvcmU6OkZyYW1lc1Bl
clNlY29uZCBtX2Rpc3BsYXlOb21pbmFsRnJhbWVzUGVyU2Vjb25kIHsgMCB9OwogICAgIFdlYkNv
cmU6OkRpc3BsYXlVcGRhdGUgbV9jdXJyZW50VXBkYXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5jcHAKaW5kZXggYmY3
MTJhZWI1MzNlY2Q1ZDliMGJmYTVlY2E4NTA1OTJlNmIxMjhjOC4uZThmNDFiZTllOGM3MDdmYzZh
N2QzMWFjZmM0MTlmZDQwMjkwMTM2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuY3BwCkBAIC0xNzQsNyArMTc0LDcg
QEAgTGliV2ViUlRDQ29kZWNzOjpMaWJXZWJSVENDb2RlY3MoKQogewogfQogCi12b2lkIExpYldl
YlJUQ0NvZGVjczo6ZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb25Pbk1haW5UaHJlYWQoTG9ja2Vy
PExvY2s+JiBsb2NrZXIpCit2b2lkIExpYldlYlJUQ0NvZGVjczo6ZW5zdXJlR1BVUHJvY2Vzc0Nv
bm5lY3Rpb25Pbk1haW5UaHJlYWQoTG9ja2VyPENoZWNrZWRMb2NrPiYgbG9ja2VyKQogewogICAg
IEFTU0VSVChpc01haW5SdW5Mb29wKCkpOwogICAgIEFTU0VSVF9VTlVTRUQobG9ja2VyLCBsb2Nr
ZXIubG9ja2FibGUoKSA9PSAmbV9jb25uZWN0aW9uTG9jayk7CkBAIC0xOTUsNyArMTk1LDcgQEAg
dm9pZCBMaWJXZWJSVENDb2RlY3M6OmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uQW5kRGlzcGF0
Y2hUb1RocmVhZChGdW5jdGlvbjx2b2kKIHsKICAgICBtX25lZWRzR1BVUHJvY2Vzc0Nvbm5lY3Rp
b24gPSB0cnVlOwogCi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2Nvbm5lY3Rpb25Mb2Nr
KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9jb25uZWN0aW9uTG9jayB9OwogCiAgICAgLy8gRmFz
dCBwYXRoIHdoZW4gd2UgYWxyZWFkeSBoYXZlIGEgY29ubmVjdGlvbi4KICAgICBpZiAobV9jb25u
ZWN0aW9uKSB7CkBAIC0yMDksNyArMjA5LDcgQEAgdm9pZCBMaWJXZWJSVENDb2RlY3M6OmVuc3Vy
ZUdQVVByb2Nlc3NDb25uZWN0aW9uQW5kRGlzcGF0Y2hUb1RocmVhZChGdW5jdGlvbjx2b2kKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgY2FsbE9uTWFpblJ1bkxvb3AoW3RoaXNdIHsKLSAgICAgICAg
YXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2Nvbm5lY3Rpb25Mb2NrKTsKKyAgICAgICAgTG9ja2Vy
IGxvY2tlciB7IG1fY29ubmVjdGlvbkxvY2sgfTsKICAgICAgICAgZW5zdXJlR1BVUHJvY2Vzc0Nv
bm5lY3Rpb25Pbk1haW5UaHJlYWQobG9ja2VyKTsKICAgICAgICAgZm9yIChhdXRvJiB0YXNrIDog
c3RkOjpleGNoYW5nZShtX3Rhc2tzVG9EaXNwYXRjaEFmdGVyRXN0YWJsaXNoaW5nQ29ubmVjdGlv
biwgeyB9KSkKICAgICAgICAgICAgIGRpc3BhdGNoVG9UaHJlYWQoV1RGTW92ZSh0YXNrKSk7CkBA
IC0yNTgsNyArMjU4LDcgQEAgTGliV2ViUlRDQ29kZWNzOjpEZWNvZGVyKiBMaWJXZWJSVENDb2Rl
Y3M6OmNyZWF0ZURlY29kZXIoVHlwZSB0eXBlKQogICAgIGRlY29kZXItPnR5cGUgPSB0eXBlOwog
CiAgICAgZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb25BbmREaXNwYXRjaFRvVGhyZWFkKFt0aGlz
LCBkZWNvZGVyID0gV1RGTW92ZShkZWNvZGVyKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhtX2Nvbm5lY3Rpb25Mb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tl
ciB7IG1fY29ubmVjdGlvbkxvY2sgfTsKICAgICAgICAgZGVjb2Rlci0+Y29ubmVjdGlvbiA9IG1f
Y29ubmVjdGlvbjsKICAgICAgICAgY3JlYXRlUmVtb3RlRGVjb2RlcigqZGVjb2RlciwgKm1fY29u
bmVjdGlvbik7CiAKQEAgLTI4NCw3ICsyODQsNyBAQCBpbnQzMl90IExpYldlYlJUQ0NvZGVjczo6
cmVsZWFzZURlY29kZXIoRGVjb2RlciYgZGVjb2RlcikKIAogaW50MzJfdCBMaWJXZWJSVENDb2Rl
Y3M6OmRlY29kZUZyYW1lKERlY29kZXImIGRlY29kZXIsIHVpbnQzMl90IHRpbWVTdGFtcCwgY29u
c3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUsIHVpbnQxNl90IHdpZHRoLCB1aW50MTZfdCBo
ZWlnaHQpCiB7Ci0gICAgTG9ja0hvbGRlciBob2xkZXIobV9jb25uZWN0aW9uTG9jayk7CisgICAg
TG9ja2VyIGxvY2tlciB7IG1fY29ubmVjdGlvbkxvY2sgfTsKICAgICBpZiAoIWRlY29kZXIuY29u
bmVjdGlvbiB8fCBkZWNvZGVyLmhhc0Vycm9yKSB7CiAgICAgICAgIGRlY29kZXIuaGFzRXJyb3Ig
PSBmYWxzZTsKICAgICAgICAgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RFQ19FUlJPUjsKQEAgLTM4
MCw3ICszODAsNyBAQCBMaWJXZWJSVENDb2RlY3M6OkVuY29kZXIqIExpYldlYlJUQ0NvZGVjczo6
Y3JlYXRlRW5jb2RlcihUeXBlIHR5cGUsIGNvbnN0IHN0ZDo6bQogICAgICAgICBwYXJhbWV0ZXJz
LmFwcGVuZChzdGQ6Om1ha2VfcGFpcihTdHJpbmc6OmZyb21VVEY4KGtleVZhbHVlLmZpcnN0LmRh
dGEoKSwga2V5VmFsdWUuZmlyc3QubGVuZ3RoKCkpLCBTdHJpbmc6OmZyb21VVEY4KGtleVZhbHVl
LnNlY29uZC5kYXRhKCksIGtleVZhbHVlLnNlY29uZC5sZW5ndGgoKSkpKTsKIAogICAgIGVuc3Vy
ZUdQVVByb2Nlc3NDb25uZWN0aW9uQW5kRGlzcGF0Y2hUb1RocmVhZChbdGhpcywgZW5jb2RlciA9
IFdURk1vdmUoZW5jb2RlciksIHR5cGUsIHBhcmFtZXRlcnMgPSBXVEZNb3ZlKHBhcmFtZXRlcnMp
XSgpIG11dGFibGUgewotICAgICAgICBMb2NrSG9sZGVyIGhvbGRlcihtX2Nvbm5lY3Rpb25Mb2Nr
KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fY29ubmVjdGlvbkxvY2sgfTsKICAgICAgICAg
ZW5jb2Rlci0+Y29ubmVjdGlvbiA9IG1fY29ubmVjdGlvbjsKICAgICAgICAgZW5jb2Rlci0+Y29u
bmVjdGlvbi0+c2VuZChNZXNzYWdlczo6TGliV2ViUlRDQ29kZWNzUHJveHk6OkNyZWF0ZUVuY29k
ZXIgeyBlbmNvZGVyLT5pZGVudGlmaWVyLCBmb3JtYXROYW1lRnJvbUNvZGVjVHlwZSh0eXBlKSwg
cGFyYW1ldGVycywgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS53ZWJS
VENIMjY0TG93TGF0ZW5jeUVuY29kZXJFbmFibGVkKCkgfSwgMCk7CiAgICAgICAgIGVuY29kZXIt
PnBhcmFtZXRlcnMgPSBXVEZNb3ZlKHBhcmFtZXRlcnMpOwpAQCAtNDE2LDcgKzQxNiw3IEBAIGlu
dDMyX3QgTGliV2ViUlRDQ29kZWNzOjppbml0aWFsaXplRW5jb2RlcihFbmNvZGVyJiBlbmNvZGVy
LCB1aW50MTZfdCB3aWR0aCwgdWluCiAKIGludDMyX3QgTGliV2ViUlRDQ29kZWNzOjplbmNvZGVG
cmFtZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCB3ZWJydGM6OlZpZGVvRnJhbWUmIGZyYW1lLCBi
b29sIHNob3VsZEVuY29kZUFzS2V5RnJhbWUpCiB7Ci0gICAgTG9ja0hvbGRlciBob2xkZXIobV9j
b25uZWN0aW9uTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fY29ubmVjdGlvbkxvY2sgfTsK
IAogICAgIGlmICghZW5jb2Rlci5jb25uZWN0aW9uKQogICAgICAgICByZXR1cm4gV0VCUlRDX1ZJ
REVPX0NPREVDX0VSUk9SOwpAQCAtNDYyLDcgKzQ2Miw3IEBAIHZvaWQgTGliV2ViUlRDQ29kZWNz
OjpyZWdpc3RlckVuY29kZUZyYW1lQ2FsbGJhY2soRW5jb2RlciYgZW5jb2Rlciwgdm9pZCogZW5j
b2RlCiAKIHZvaWQgTGliV2ViUlRDQ29kZWNzOjpzZXRFbmNvZGVSYXRlcyhFbmNvZGVyJiBlbmNv
ZGVyLCB1aW50MzJfdCBiaXRSYXRlLCB1aW50MzJfdCBmcmFtZVJhdGUpCiB7Ci0gICAgTG9ja0hv
bGRlciBob2xkZXIobV9jb25uZWN0aW9uTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fY29u
bmVjdGlvbkxvY2sgfTsKIAogICAgIGlmICghZW5jb2Rlci5jb25uZWN0aW9uKSB7CiAgICAgICAg
IGNhbGxPbk1haW5SdW5Mb29wKFtlbmNvZGVySWRlbnRpZmllciA9IGVuY29kZXIuaWRlbnRpZmll
ciwgYml0UmF0ZSwgZnJhbWVSYXRlXSB7CkBAIC01MTAsNyArNTEwLDcgQEAgdm9pZCBMaWJXZWJS
VENDb2RlY3M6OmRpc3BhdGNoVG9UaHJlYWQoRnVuY3Rpb248dm9pZCgpPiYmIGNhbGxiYWNrKQog
dm9pZCBMaWJXZWJSVENDb2RlY3M6OmdwdVByb2Nlc3NDb25uZWN0aW9uRGlkQ2xvc2UoR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb24mKQogewogICAgIEFTU0VSVChpc01haW5SdW5Mb29wKCkpOwotICAgIGF1
dG8gbG9ja2VyID0gaG9sZExvY2sobV9jb25uZWN0aW9uTG9jayk7CisgICAgTG9ja2VyIGxvY2tl
ciB7IG1fY29ubmVjdGlvbkxvY2sgfTsKICAgICBzdGQ6OmV4Y2hhbmdlKG1fY29ubmVjdGlvbiwg
bnVsbHB0ciktPnJlbW92ZVRocmVhZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6TGliV2ViUlRD
Q29kZWNzOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpOwogICAgIGlmICghbV9uZWVkc0dQVVByb2Nl
c3NDb25uZWN0aW9uKQogICAgICAgICByZXR1cm47CkBAIC01MTgsNyArNTE4LDcgQEAgdm9pZCBM
aWJXZWJSVENDb2RlY3M6OmdwdVByb2Nlc3NDb25uZWN0aW9uRGlkQ2xvc2UoR1BVUHJvY2Vzc0Nv
bm5lY3Rpb24mKQogICAgIGVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uT25NYWluVGhyZWFkKGxv
Y2tlcik7CiAgICAgZGlzcGF0Y2hUb1RocmVhZChbdGhpc10oKSB7CiAgICAgICAgIC8vIExvY2sg
ZXZlcnl0aGluZyBzbyB0aGF0IHdlIGNhbiB1cGRhdGUgZW5jb2Rlci9kZWNvZGVyIGNvbm5lY3Rp
b24uCi0gICAgICAgIExvY2tIb2xkZXIgaG9sZGVyKG1fY29ubmVjdGlvbkxvY2spOworICAgICAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9jb25uZWN0aW9uTG9jayB9OwogICAgICAgICAvLyBSZWNyZWF0
ZSBlbmNvZGVycyBhbmQgaW5pdGlhbGl6ZSB0aGVtLCByZWNyZWF0ZSBkZWNvZGVycy4KICAgICAg
ICAgZm9yIChhdXRvJiBlbmNvZGVyIDogbV9lbmNvZGVycy52YWx1ZXMoKSkgewogICAgICAgICAg
ICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpMaWJXZWJSVENDb2RlY3NQcm94eTo6Q3Jl
YXRlRW5jb2RlciB7IGVuY29kZXItPmlkZW50aWZpZXIsIGZvcm1hdE5hbWVGcm9tV2ViUlRDQ29k
ZWNUeXBlKGVuY29kZXItPmNvZGVjVHlwZSksIGVuY29kZXItPnBhcmFtZXRlcnMsIFJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2ViUlRDSDI2NExvd0xhdGVuY3lFbmNv
ZGVyRW5hYmxlZCgpIH0sIDApOwpAQCAtNTM2LDYgKzUzNiw4IEBAIHZvaWQgTGliV2ViUlRDQ29k
ZWNzOjpncHVQcm9jZXNzQ29ubmVjdGlvbkRpZENsb3NlKEdQVVByb2Nlc3NDb25uZWN0aW9uJikK
IHZvaWQgTGliV2ViUlRDQ29kZWNzOjpzZXRMb2dnaW5nTGV2ZWwoV1RGTG9nTGV2ZWwgbGV2ZWwp
CiB7CiAgICAgbV9sb2dnaW5nTGV2ZWwgPSBsZXZlbDsKKworICAgIExvY2tlciBsb2NrZXIgeyBt
X2Nvbm5lY3Rpb25Mb2NrIH07CiAgICAgaWYgKG1fY29ubmVjdGlvbikKICAgICAgICAgbV9jb25u
ZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpMaWJXZWJSVENDb2RlY3NQcm94eTo6U2V0UlRDTG9nZ2lu
Z0xldmVsKGxldmVsKSwgMCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5oCmluZGV4IDcwYzk4YmNhMzVhNjdlNzZhMjQy
NGZmZDQ3ZDg5YWYyNGUxYzZjZTMuLjBhMmM2NGY3MzQ3MGQ5MzljYjg5MDNjY2ZjMmZlNDAwMGI2
NjVhNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xp
YldlYlJUQ0NvZGVjcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRj
L0xpYldlYlJUQ0NvZGVjcy5oCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Q
aXhlbEJ1ZmZlckNvbmZvcm1lckNWLmg+CiAjaW5jbHVkZSA8bWFwPgogI2luY2x1ZGUgPHdlYnJ0
Yy9hcGkvdmlkZW8vdmlkZW9fY29kZWNfdHlwZS5oPgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkTG9j
ay5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4K
ICNpbmNsdWRlIDx3dGYvTG9jay5oPgpAQCAtMTIyLDcgKzEyMyw3IEBAIHB1YmxpYzoKIHByaXZh
dGU6CiAgICAgTGliV2ViUlRDQ29kZWNzKCk7CiAgICAgdm9pZCBlbnN1cmVHUFVQcm9jZXNzQ29u
bmVjdGlvbkFuZERpc3BhdGNoVG9UaHJlYWQoRnVuY3Rpb248dm9pZCgpPiYmKTsKLSAgICB2b2lk
IGVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uT25NYWluVGhyZWFkKExvY2tlcjxMb2NrPiYpOwor
ICAgIHZvaWQgZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb25Pbk1haW5UaHJlYWQoTG9ja2VyPENo
ZWNrZWRMb2NrPiYpIFdURl9SRVFVSVJFU19MT0NLKG1fY29ubmVjdGlvbkxvY2spOwogICAgIHZv
aWQgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb25NYXlOb0xvbmdlckJlTmVlZGVkKCk7CiAKICAgICB2b2lk
IGZhaWxlZERlY29kaW5nKFJUQ0RlY29kZXJJZGVudGlmaWVyKTsKQEAgLTE0NCw4ICsxNDUsOCBA
QCBwcml2YXRlOgogCiAgICAgc3RkOjphdG9taWM8Ym9vbD4gbV9uZWVkc0dQVVByb2Nlc3NDb25u
ZWN0aW9uOwogCi0gICAgTG9jayBtX2Nvbm5lY3Rpb25Mb2NrOwotICAgIFJlZlB0cjxJUEM6OkNv
bm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKKyAgICBDaGVja2VkTG9jayBtX2Nvbm5lY3Rpb25Mb2Nr
OworICAgIFJlZlB0cjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbiBXVEZfR1VBUkRFRF9C
WV9MT0NLKG1fY29ubmVjdGlvbkxvY2spOwogICAgIFZlY3RvcjxGdW5jdGlvbjx2b2lkKCk+PiBt
X3Rhc2tzVG9EaXNwYXRjaEFmdGVyRXN0YWJsaXNoaW5nQ29ubmVjdGlvbjsKIAogICAgIFJlZjxX
b3JrUXVldWU+IG1fcXVldWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmNwcApp
bmRleCA5MjFkNjI3MjJjMWE2YjVlMjNkMjUyMjU2ZTdkNmY3ZjQwNzFkN2EyLi4xZjMyODRjNjg3
YWMzMTM3Y2Y5YTdhOTRhYTMyZmFlMTMyZGY2ZjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0
aW9uTWFuYWdlci5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24q
IFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6Z2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3QK
ICAgICBtX3BsdWdpblByb2Nlc3NDb25uZWN0aW9ucy5hcHBlbmQocGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb24uY29weVJlZigpKTsKIAogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV90
b2tlbnNBbmRDb25uZWN0aW9uc011dGV4KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fdG9r
ZW5zQW5kQ29ubmVjdGlvbnNMb2NrIH07CiAgICAgICAgIEFTU0VSVCghbV90b2tlbnNBbmRDb25u
ZWN0aW9ucy5jb250YWlucyhwbHVnaW5Qcm9jZXNzVG9rZW4pKTsKIAogICAgICAgICBtX3Rva2Vu
c0FuZENvbm5lY3Rpb25zLnNldChwbHVnaW5Qcm9jZXNzVG9rZW4sIHBsdWdpblByb2Nlc3NDb25u
ZWN0aW9uLT5jb25uZWN0aW9uKCkpOwpAQCAtMTA0LDcgKzEwNCw3IEBAIHZvaWQgUGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyOjpyZW1vdmVQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihQbHVn
aW5Qcm9jZXNzCiAgICAgQVNTRVJUKHZlY3RvckluZGV4ICE9IG5vdEZvdW5kKTsKIAogICAgIHsK
LSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV90b2tlbnNBbmRDb25uZWN0aW9uc011dGV4KTsK
KyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fdG9rZW5zQW5kQ29ubmVjdGlvbnNMb2NrIH07CiAg
ICAgICAgIEFTU0VSVChtX3Rva2Vuc0FuZENvbm5lY3Rpb25zLmNvbnRhaW5zKHBsdWdpblByb2Nl
c3NDb25uZWN0aW9uLT5wbHVnaW5Qcm9jZXNzVG9rZW4oKSkpOwogICAgICAgICAKICAgICAgICAg
bV90b2tlbnNBbmRDb25uZWN0aW9ucy5yZW1vdmUocGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24tPnBs
dWdpblByb2Nlc3NUb2tlbigpKTsKQEAgLTExNSw3ICsxMTUsNyBAQCB2b2lkIFBsdWdpblByb2Nl
c3NDb25uZWN0aW9uTWFuYWdlcjo6cmVtb3ZlUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oUGx1Z2lu
UHJvY2VzcwogCiB2b2lkIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6cGx1Z2luUHJv
Y2Vzc0NyYXNoZWQodWludDY0X3QgcGx1Z2luUHJvY2Vzc1Rva2VuKQogewotICAgIExvY2tIb2xk
ZXIgbG9ja2VyKG1fdG9rZW5zQW5kQ29ubmVjdGlvbnNNdXRleCk7CisgICAgTG9ja2VyIGxvY2tl
ciB7IG1fdG9rZW5zQW5kQ29ubmVjdGlvbnNMb2NrIH07CiAgICAgSVBDOjpDb25uZWN0aW9uKiBj
b25uZWN0aW9uID0gbV90b2tlbnNBbmRDb25uZWN0aW9ucy5nZXQocGx1Z2luUHJvY2Vzc1Rva2Vu
KTsKIAogICAgIC8vIEl0J3MgT0sgZm9yIGNvbm5lY3Rpb24gdG8gYmUgbnVsbCBoZXJlOyBpdCB3
aWxsIGhhcHBlbiBpZiB0aGlzIHdlYiBwcm9jZXNzIGRvZXNuJ3Qga25vdwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25N
YW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNz
Q29ubmVjdGlvbk1hbmFnZXIuaAppbmRleCA0ZjEzN2I4NWRkMDE3NjEzZWJkMWY4YWYyMTJlN2M3
Yzg2MzBjZjhjLi5hMDBhOWRlNDUwN2IxOTExNGE3M2YzMTkxMjgxZmE2YTFlODdjODY1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuaApAQCAtMjksNiArMjksNyBAQAogI2lmIEVO
QUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogCiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzcy5oIgor
I2luY2x1ZGUgPHd0Zi9DaGVja2VkTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAj
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KQEAg
LTY0LDggKzY1LDggQEAgcHJpdmF0ZToKIAogICAgIFZlY3RvcjxSZWZQdHI8UGx1Z2luUHJvY2Vz
c0Nvbm5lY3Rpb24+PiBtX3BsdWdpblByb2Nlc3NDb25uZWN0aW9uczsKIAotICAgIExvY2sgbV90
b2tlbnNBbmRDb25uZWN0aW9uc011dGV4OwotICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxJ
UEM6OkNvbm5lY3Rpb24+PiBtX3Rva2Vuc0FuZENvbm5lY3Rpb25zOworICAgIENoZWNrZWRMb2Nr
IG1fdG9rZW5zQW5kQ29ubmVjdGlvbnNMb2NrOworICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0
cjxJUEM6OkNvbm5lY3Rpb24+PiBtX3Rva2Vuc0FuZENvbm5lY3Rpb25zIFdURl9HVUFSREVEX0JZ
X0xPQ0sobV90b2tlbnNBbmRDb25uZWN0aW9uc0xvY2spOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5jcHAKaW5kZXgg
N2IzZjA4NWQ5MGI3NGFmODczNGFjNjRkYTg5ZWRhNmVjZTQwYTZhMi4uMWJkYWY4MjEyOTFkMzY2
NWE5MWE0YjhmMTUyMGVkODEwODBkMmU4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIuY3BwCkBAIC03Myw3ICs3Myw3IEBAIEV2
ZW50RGlzcGF0Y2hlcjo6fkV2ZW50RGlzcGF0Y2hlcigpCiAjaWYgRU5BQkxFKFNDUk9MTElOR19U
SFJFQUQpCiB2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6YWRkU2Nyb2xsaW5nVHJlZUZvclBhZ2UoV2Vi
UGFnZSogd2ViUGFnZSkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3Njcm9sbGluZ1RyZWVz
TXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX3Njcm9sbGluZ1RyZWVzTG9jayB9OwogCiAg
ICAgQVNTRVJUKHdlYlBhZ2UtPmNvcmVQYWdlKCktPnNjcm9sbGluZ0Nvb3JkaW5hdG9yKCkpOwog
ICAgIEFTU0VSVCghbV9zY3JvbGxpbmdUcmVlcy5jb250YWlucyh3ZWJQYWdlLT5pZGVudGlmaWVy
KCkpKTsKQEAgLTg0LDcgKzg0LDcgQEAgdm9pZCBFdmVudERpc3BhdGNoZXI6OmFkZFNjcm9sbGlu
Z1RyZWVGb3JQYWdlKFdlYlBhZ2UqIHdlYlBhZ2UpCiAKIHZvaWQgRXZlbnREaXNwYXRjaGVyOjpy
ZW1vdmVTY3JvbGxpbmdUcmVlRm9yUGFnZShXZWJQYWdlKiB3ZWJQYWdlKQogewotICAgIExvY2tI
b2xkZXIgbG9ja2VyKG1fc2Nyb2xsaW5nVHJlZXNNdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7
IG1fc2Nyb2xsaW5nVHJlZXNMb2NrIH07CiAgICAgQVNTRVJUKG1fc2Nyb2xsaW5nVHJlZXMuY29u
dGFpbnMod2ViUGFnZS0+aWRlbnRpZmllcigpKSk7CiAKICAgICBtX3Njcm9sbGluZ1RyZWVzLnJl
bW92ZSh3ZWJQYWdlLT5pZGVudGlmaWVyKCkpOwpAQCAtMTI0LDcgKzEyNCw3IEBAIHZvaWQgRXZl
bnREaXNwYXRjaGVyOjp3aGVlbEV2ZW50KFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgV2Vi
V2hlZWxFdmVudCYgd2hlCiAgICAgYXV0byBwcm9jZXNzaW5nU3RlcHMgPSBPcHRpb25TZXQ8V2Vi
Q29yZTo6V2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwcz4geyBXaGVlbEV2ZW50UHJvY2Vzc2luZ1N0
ZXBzOjpNYWluVGhyZWFkRm9yU2Nyb2xsaW5nLCBXaGVlbEV2ZW50UHJvY2Vzc2luZ1N0ZXBzOjpN
YWluVGhyZWFkRm9yQmxvY2tpbmdET01FdmVudERpc3BhdGNoIH07CiAjaWYgRU5BQkxFKFNDUk9M
TElOR19USFJFQUQpCiAgICAgZG8gewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3Njcm9s
bGluZ1RyZWVzTXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9zY3JvbGxpbmdUcmVl
c0xvY2sgfTsKIAogICAgICAgICBhdXRvIHNjcm9sbGluZ1RyZWUgPSBtX3Njcm9sbGluZ1RyZWVz
LmdldChwYWdlSUQpOwogICAgICAgICBpZiAoIXNjcm9sbGluZ1RyZWUpIHsKQEAgLTE4Niw3ICsx
ODYsNyBAQCB2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6Z2VzdHVyZUV2ZW50KFBhZ2VJZGVudGlmaWVy
IHBhZ2VJRCwgY29uc3QgV2ViS2l0OjpXZWJHZXN0dQogI2lmIEVOQUJMRShJT1NfVE9VQ0hfRVZF
TlRTKQogdm9pZCBFdmVudERpc3BhdGNoZXI6OnRha2VRdWV1ZWRUb3VjaEV2ZW50c0ZvclBhZ2Uo
Y29uc3QgV2ViUGFnZSYgd2ViUGFnZSwgVG91Y2hFdmVudFF1ZXVlJiBkZXN0aW5hdGlvblF1ZXVl
KQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKCZtX3RvdWNoRXZlbnRzTG9jayk7CisgICAgTG9j
a2VyIGxvY2tlciB7IG1fdG91Y2hFdmVudHNMb2NrIH07CiAgICAgZGVzdGluYXRpb25RdWV1ZSA9
IG1fdG91Y2hFdmVudHMudGFrZSh3ZWJQYWdlLmlkZW50aWZpZXIoKSk7CiB9CiAKQEAgLTE5OSw3
ICsxOTksNyBAQCB2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6dG91Y2hFdmVudChQYWdlSWRlbnRpZmll
ciBwYWdlSUQsIGNvbnN0IFdlYlRvdWNoRXZlbnQmIHRvdQogewogICAgIGJvb2wgdXBkYXRlTGlz
dFdhc0VtcHR5OwogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIoJm1fdG91Y2hFdmVu
dHNMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fdG91Y2hFdmVudHNMb2NrIH07CiAg
ICAgICAgIHVwZGF0ZUxpc3RXYXNFbXB0eSA9IG1fdG91Y2hFdmVudHMuaXNFbXB0eSgpOwogICAg
ICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fdG91Y2hFdmVudHMuYWRkKHBhZ2VJRCwgVG91Y2hFdmVu
dFF1ZXVlKCkpOwogICAgICAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpCkBAIC0yMjksNyAr
MjI5LDcgQEAgdm9pZCBFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoVG91Y2hFdmVudHMoKQogCiAg
ICAgSGFzaE1hcDxQYWdlSWRlbnRpZmllciwgVG91Y2hFdmVudFF1ZXVlPiBsb2NhbENvcHk7CiAg
ICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcigmbV90b3VjaEV2ZW50c0xvY2spOworICAg
ICAgICBMb2NrZXIgbG9ja2VyIHsgbV90b3VjaEV2ZW50c0xvY2sgfTsKICAgICAgICAgbG9jYWxD
b3B5LnN3YXAobV90b3VjaEV2ZW50cyk7CiAgICAgfQogCkBAIC0yODIsNyArMjgyLDcgQEAgdm9p
ZCBFdmVudERpc3BhdGNoZXI6OnNlbmREaWRSZWNlaXZlRXZlbnQoUGFnZUlkZW50aWZpZXIgcGFn
ZUlELCBXZWJFdmVudDo6VHlwZQogdm9pZCBFdmVudERpc3BhdGNoZXI6Om5vdGlmeVNjcm9sbGlu
Z1RyZWVzRGlzcGxheVdhc1JlZnJlc2hlZChQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQpCiB7
CiAjaWYgRU5BQkxFKFNDUk9MTElOR19USFJFQUQpCi0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9z
Y3JvbGxpbmdUcmVlc011dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9zY3JvbGxpbmdUcmVl
c0xvY2sgfTsKICAgICBmb3IgKGF1dG8ga2V5VmFsdWVQYWlyIDogbV9zY3JvbGxpbmdUcmVlcykK
ICAgICAgICAga2V5VmFsdWVQYWlyLnZhbHVlLT5kaXNwbGF5RGlkUmVmcmVzaChkaXNwbGF5SUQp
OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9F
dmVudERpc3BhdGNoZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0V2ZW50
RGlzcGF0Y2hlci5oCmluZGV4IGIyY2NiODQ0YWFjNTU3YzMxYmY2MTMxMDU4YjYxZjJlZTE4YTBj
YzUuLmZjMjZjNDRlNzhhYjRjODgyMDNmMjU2Yjc1Yjc3ZTk1ZWM0NDE1NTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5oCkBAIC0z
Miw4ICszMiw4IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVdoZWVsRXZlbnQuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1doZWVsRXZlbnREZWx0YUZpbHRlci5oPgogI2luY2x1ZGUgPG1lbW9y
eT4KKyNpbmNsdWRlIDx3dGYvQ2hlY2tlZExvY2suaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgotI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAj
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmdQcmltaXRpdmVz
Lmg+CkBAIC0xMTgsMTMgKzExOCwxMyBAQCBwcml2YXRlOgogICAgIFJlZjxXb3JrUXVldWU+IG1f
cXVldWU7CiAKICNpZiBFTkFCTEUoU0NST0xMSU5HX1RIUkVBRCkKLSAgICBMb2NrIG1fc2Nyb2xs
aW5nVHJlZXNNdXRleDsKLSAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBSZWZQ
dHI8V2ViQ29yZTo6VGhyZWFkZWRTY3JvbGxpbmdUcmVlPj4gbV9zY3JvbGxpbmdUcmVlczsKKyAg
ICBDaGVja2VkTG9jayBtX3Njcm9sbGluZ1RyZWVzTG9jazsKKyAgICBIYXNoTWFwPFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyLCBSZWZQdHI8V2ViQ29yZTo6VGhyZWFkZWRTY3JvbGxpbmdUcmVlPj4g
bV9zY3JvbGxpbmdUcmVlcyBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fc2Nyb2xsaW5nVHJlZXNMb2Nr
KTsKICNlbmRpZgogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpXaGVlbEV2ZW50RGVsdGFG
aWx0ZXI+IG1fcmVjZW50V2hlZWxFdmVudERlbHRhRmlsdGVyOwogI2lmIEVOQUJMRShJT1NfVE9V
Q0hfRVZFTlRTKQotICAgIExvY2sgbV90b3VjaEV2ZW50c0xvY2s7Ci0gICAgSGFzaE1hcDxXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciwgVG91Y2hFdmVudFF1ZXVlPiBtX3RvdWNoRXZlbnRzOworICAg
IENoZWNrZWRMb2NrIG1fdG91Y2hFdmVudHNMb2NrOworICAgIEhhc2hNYXA8V2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIsIFRvdWNoRXZlbnRRdWV1ZT4gbV90b3VjaEV2ZW50cyBXVEZfR1VBUkRFRF9C
WV9MT0NLKG1fdG91Y2hFdmVudHNMb2NrKTsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld1VwZGF0ZURpc3BhdGNoZXIuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld1VwZGF0ZURpc3BhdGNoZXIuY3Bw
CmluZGV4IGU5YTEzOTQ4M2RjYzQ1NGE2MmQ4ZmE5MzUxNzBkZGE3ODE4NWFlMGUuLjQ0NjdlNDg4
OGM1NjgzZWZjMjFjNTk2ZTQ0YmE4NDhmNjlkNzU1MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdVcGRhdGVEaXNwYXRjaGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3VXBkYXRlRGlzcGF0Y2hlci5jcHAKQEAg
LTYwLDcgKzYwLDcgQEAgdm9pZCBWaWV3VXBkYXRlRGlzcGF0Y2hlcjo6dmlzaWJsZUNvbnRlbnRS
ZWN0VXBkYXRlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2UKIHsKICAgICBib29sIHVwZGF0
ZUxpc3RXYXNFbXB0eTsKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKCZtX2RhdGFN
dXRleCk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2xhdGVzdFVwZGF0ZUxvY2sgfTsKICAg
ICAgICAgdXBkYXRlTGlzdFdhc0VtcHR5ID0gbV9sYXRlc3RVcGRhdGUuaXNFbXB0eSgpOwogICAg
ICAgICBhdXRvIGl0ZXJhdG9yID0gbV9sYXRlc3RVcGRhdGUuZmluZChwYWdlSUQpOwogICAgICAg
ICBpZiAoaXRlcmF0b3IgPT0gbV9sYXRlc3RVcGRhdGUuZW5kKCkpCkBAIC03OSw3ICs3OSw3IEBA
IHZvaWQgVmlld1VwZGF0ZURpc3BhdGNoZXI6OmRpc3BhdGNoVmlzaWJsZUNvbnRlbnRSZWN0VXBk
YXRlKCkKIHsKICAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBVbmlxdWVSZWY8
VXBkYXRlRGF0YT4+IHVwZGF0ZTsKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKCZt
X2RhdGFNdXRleCk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2xhdGVzdFVwZGF0ZUxvY2sg
fTsKICAgICAgICAgdXBkYXRlID0gc3RkOjpleGNoYW5nZShtX2xhdGVzdFVwZGF0ZSwgeyB9KTsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1Zp
ZXdVcGRhdGVEaXNwYXRjaGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9W
aWV3VXBkYXRlRGlzcGF0Y2hlci5oCmluZGV4IDA1NmU1Mzc4NDNiYzc1NTkzNjZhZGIzZmIxYTAy
NTU3MDAzYmZkMTMuLjE4YjAzMWQ2MjJiMDc5YzFmZGM3NTE0ODllOTc4YzFiNGFjM2RkZWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdVcGRhdGVEaXNw
YXRjaGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld1VwZGF0
ZURpc3BhdGNoZXIuaApAQCAtMzEsOCArMzEsOCBAQAogCiAjaW5jbHVkZSAiVmlzaWJsZUNvbnRl
bnRSZWN0VXBkYXRlSW5mby5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4K
KyNpbmNsdWRlIDx3dGYvQ2hlY2tlZExvY2suaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgot
I2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKQEAgLTY0LDggKzY0LDggQEAgcHJpdmF0ZToKICAgICB9OwogCiAgICAgUmVmPFdv
cmtRdWV1ZT4gbV9xdWV1ZTsKLSAgICBMb2NrIG1fZGF0YU11dGV4OwotICAgIEhhc2hNYXA8V2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIsIFVuaXF1ZVJlZjxVcGRhdGVEYXRhPj4gbV9sYXRlc3RVcGRh
dGU7CisgICAgQ2hlY2tlZExvY2sgbV9sYXRlc3RVcGRhdGVMb2NrOworICAgIEhhc2hNYXA8V2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIsIFVuaXF1ZVJlZjxVcGRhdGVEYXRhPj4gbV9sYXRlc3RVcGRh
dGUgV1RGX0dVQVJERURfQllfTE9DSyhtX2xhdGVzdFVwZGF0ZUxvY2spOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429140</attachid>
            <date>2021-05-19 23:09:39 -0700</date>
            <delta_ts>2021-05-20 07:37:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226001-20210519230938.patch</filename>
            <type>text/plain</type>
            <size>51332</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3NzYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGY5NjhhY2IzMGM3YmJkN2M3YmI0ZWYw
NjkyYzgwYzczMWZiZjhhMGUuLjkwZWVmZWY1NzY2Y2RlZDEyYTkxNTU3ZjNhNGY3NjUzNTI2ZWM4
MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMDUtMTkgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgQ2hlY2tlZExvY2sgbW9yZSBpbiBXZWJLaXQyIGNv
ZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjAw
MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBs
b2NrYWJsZSgpIGdldHRlciB0byBMb2NrZXI8Q2hlY2tlZExvY2s+IHRvIG1hdGNoIHRoZSByZWd1
bGFyIExvY2tlcjxUPi4KKworICAgICAgICAqIHd0Zi9DaGVja2VkTG9jay5oOgorCiAyMDIxLTA1
LTE5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgRHJvcCAiZ2V0
IiBwcmVmaXggZnJvbSBTUUxpdGVTdGF0ZW1lbnQgbWVtYmVyIGZ1bmN0aW9ucyBhcyB3ZWxsIGFz
IG91dC1wYXJhbWV0ZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDM0YjNkNGU5ODcxOWMxZjhhMTNlMzM2N2U3OWU5
YTQ5YzMzODgzOTQuLmYwYTM4YzE3MjE5NDRlZDRjYjMyNDc2YzRlMTJkYzdjMTNiMTE3N2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsOTIgQEAKKzIwMjEtMDUtMTkgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgQ2hlY2tlZExvY2sgbW9yZSBpbiBXZWJLaXQyIGNv
ZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjAw
MQorCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAgVXNl
IENoZWNrZWRMb2NrIG1vcmUgaW4gV2ViS2l0MiBjb2RlIHRvIGJlbmVmaXQgZnJvbSBDbGFuZyBU
aHJlYWQgU2FmZXR5IEFuYWx5c2lzLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ3VzdG9t
UHJvdG9jb2xzL0NvY29hL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNvY29hLm1tOgorICAg
ICAgICAoTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpuZXR3b3JrUHJvY2Vzc0NyZWF0ZWQp
OgorICAgICAgICAoV2ViS2l0OjpMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXI6OnJlZ2lzdGVy
U2NoZW1lKToKKyAgICAgICAgKFdlYktpdDo6TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjp1
bnJlZ2lzdGVyU2NoZW1lKToKKyAgICAgICAgKFdlYktpdDo6TGVnYWN5Q3VzdG9tUHJvdG9jb2xN
YW5hZ2VyOjpzdXBwb3J0c1NjaGVtZSk6CisgICAgICAgIChXZWJLaXQ6OkxlZ2FjeUN1c3RvbVBy
b3RvY29sTWFuYWdlcjo6cHJvdG9jb2xGb3JJRCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Q3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlci5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkxlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlcjo6YWRkQ3VzdG9tUHJvdG9jb2wp
OgorICAgICAgICAoV2ViS2l0OjpMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXI6OnJlbW92ZUN1
c3RvbVByb3RvY29sKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMv
TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6YWRk
U2Vzc2lvblN0b3JhZ2VRdW90YU1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6cmVtb3ZlU2Vzc2lvblN0b3JhZ2VRdW90YU1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzczo6c2V0U2Vzc2lvblN0b3JhZ2VRdW90YU1hbmFnZXJJREJSb290UGF0
aCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZXNldFF1b3RhKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnN0b3JhZ2VRdW90YU1hbmFnZXIpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlclNldC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlN0b3JhZ2VNYW5hZ2VyU2V0OjpzdXNwZW5kKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1h
bmFnZXJTZXQ6OnJlc3VtZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9T
dG9yYWdlTWFuYWdlclNldC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL0xhdW5j
aFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2Nv
Y29hL0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlci5tbToKKyAgICAgICAgKFdlYktpdDo6
TGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyOjpMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2Jz
ZXJ2ZXIpOgorICAgICAgICAoV2ViS2l0OjpMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXI6
OnN0YXJ0T2JzZXJ2aW5nKToKKyAgICAgICAgKFdlYktpdDo6TGF1bmNoU2VydmljZXNEYXRhYmFz
ZU9ic2VydmVyOjpoYW5kbGVFdmVudCk6CisgICAgICAgICogU2hhcmVkL0Jsb2NraW5nUmVzcG9u
c2VNYXAuaDoKKyAgICAgICAgKEJsb2NraW5nUmVzcG9uc2VNYXA6OndhaXRGb3JSZXNwb25zZSk6
CisgICAgICAgIChCbG9ja2luZ1Jlc3BvbnNlTWFwOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAg
ICAgICAqIFNoYXJlZC9Db2NvYS9YUENFbmRwb2ludENsaWVudC5oOgorICAgICAgICAqIFNoYXJl
ZC9Db2NvYS9YUENFbmRwb2ludENsaWVudC5tbToKKyAgICAgICAgKFdlYktpdDo6WFBDRW5kcG9p
bnRDbGllbnQ6OnNldEVuZHBvaW50KToKKyAgICAgICAgKFdlYktpdDo6WFBDRW5kcG9pbnRDbGll
bnQ6OmNvbm5lY3Rpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lVGFzazo6cmVxdWVzdCBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OndpbGxQZXJmb3JtUmVkaXJlY3Rpb24p
OgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpkaWRQZXJmb3JtUmVkaXJlY3Rp
b24pOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpwYWdlRGVzdHJveWVkKToK
KyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lVGFzazo6c3RvcCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlVSTFNjaGVtZVRhc2s6Om5zUmVxdWVzdCBjb25zdCk6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlVSTFNjaGVtZVRhc2suaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL0Rpc3BsYXlM
aW5rLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RGlzcGxheUxpbms6OmFkZE9ic2VydmVyKToKKyAg
ICAgICAgKFdlYktpdDo6RGlzcGxheUxpbms6OnJlbW92ZU9ic2VydmVyKToKKyAgICAgICAgKFdl
YktpdDo6RGlzcGxheUxpbms6OnJlbW92ZU9ic2VydmVycyk6CisgICAgICAgIChXZWJLaXQ6OkRp
c3BsYXlMaW5rOjppbmNyZW1lbnRGdWxsU3BlZWRSZXF1ZXN0Q2xpZW50Q291bnQpOgorICAgICAg
ICAoV2ViS2l0OjpEaXNwbGF5TGluazo6ZGVjcmVtZW50RnVsbFNwZWVkUmVxdWVzdENsaWVudENv
dW50KToKKyAgICAgICAgKFdlYktpdDo6RGlzcGxheUxpbms6OnNldFByZWZlcnJlZEZyYW1lc1Bl
clNlY29uZCk6CisgICAgICAgIChXZWJLaXQ6OkRpc3BsYXlMaW5rOjpub3RpZnlPYnNlcnZlcnNE
aXNwbGF5V2FzUmVmcmVzaGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL0Rpc3BsYXlMaW5r
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjczo6ZW5zdXJlR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb25Pbk1haW5UaHJlYWQpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENDb2RlY3M6OmVu
c3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uQW5kRGlzcGF0Y2hUb1RocmVhZCk6CisgICAgICAgIChX
ZWJLaXQ6OkxpYldlYlJUQ0NvZGVjczo6Y3JlYXRlRGVjb2Rlcik6CisgICAgICAgIChXZWJLaXQ6
OkxpYldlYlJUQ0NvZGVjczo6ZGVjb2RlRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJS
VENDb2RlY3M6OmNyZWF0ZUVuY29kZXIpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENDb2Rl
Y3M6OmVuY29kZUZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDQ29kZWNzOjpzZXRF
bmNvZGVSYXRlcyk6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjczo6Z3B1UHJvY2Vz
c0Nvbm5lY3Rpb25EaWRDbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjczo6
c2V0TG9nZ2luZ0xldmVsKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2Vi
UlRDQ29kZWNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3ND
b25uZWN0aW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NDb25u
ZWN0aW9uTWFuYWdlcjo6Z2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2Vi
S2l0OjpQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXI6OnJlbW92ZVBsdWdpblByb2Nlc3ND
b25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5h
Z2VyOjpwbHVnaW5Qcm9jZXNzQ3Jhc2hlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9FdmVudERpc3BhdGNoZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpFdmVudERpc3Bh
dGNoZXI6OmFkZFNjcm9sbGluZ1RyZWVGb3JQYWdlKToKKyAgICAgICAgKFdlYktpdDo6RXZlbnRE
aXNwYXRjaGVyOjpyZW1vdmVTY3JvbGxpbmdUcmVlRm9yUGFnZSk6CisgICAgICAgIChXZWJLaXQ6
OkV2ZW50RGlzcGF0Y2hlcjo6d2hlZWxFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OkV2ZW50RGlz
cGF0Y2hlcjo6dGFrZVF1ZXVlZFRvdWNoRXZlbnRzRm9yUGFnZSk6CisgICAgICAgIChXZWJLaXQ6
OkV2ZW50RGlzcGF0Y2hlcjo6dG91Y2hFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OkV2ZW50RGlz
cGF0Y2hlcjo6ZGlzcGF0Y2hUb3VjaEV2ZW50cyk6CisgICAgICAgIChXZWJLaXQ6OkV2ZW50RGlz
cGF0Y2hlcjo6bm90aWZ5U2Nyb2xsaW5nVHJlZXNEaXNwbGF5V2FzUmVmcmVzaGVkKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1ZpZXdVcGRhdGVEaXNwYXRjaGVyLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6Vmlld1VwZGF0ZURpc3BhdGNoZXI6OnZpc2libGVDb250ZW50UmVjdFVwZGF0ZSk6CisgICAg
ICAgIChXZWJLaXQ6OlZpZXdVcGRhdGVEaXNwYXRjaGVyOjpkaXNwYXRjaFZpc2libGVDb250ZW50
UmVjdFVwZGF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdVcGRhdGVEaXNw
YXRjaGVyLmg6CisKIDIwMjEtMDUtMTkgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgog
CiAgICAgICAgIFJlbW92ZSBJbWFnZUJ1ZmZlcjo6dG9CR1JBKCkgYW5kIHJlcGxhY2UgaXRzIHVz
ZXMgd2l0aCB0aGUgbW9yZSBnZW5lcmFsIEltYWdlQnVmZmVyOjpnZXRQaXhlbEJ1ZmZlcigpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DaGVja2VkTG9jay5oIGIvU291cmNlL1dURi93dGYv
Q2hlY2tlZExvY2suaAppbmRleCA0NGI4OTk5NjkxMjM0NTIwMDE5OGZkODY0YTk5ODk2Njc3NjM5
OTQyLi4zNDQ0NGI1NjI0ODg0MGNjNmFiOGFlYWIxN2U1ZTFiNWU2ODI3MGVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9DaGVja2VkTG9jay5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0NoZWNr
ZWRMb2NrLmgKQEAgLTk4LDYgKzk4LDkgQEAgcHVibGljOgogICAgIH0KICAgICBMb2NrZXIoY29u
c3QgTG9ja2VyPENoZWNrZWRMb2NrPiYpID0gZGVsZXRlOwogICAgIExvY2tlciYgb3BlcmF0b3I9
KGNvbnN0IExvY2tlcjxDaGVja2VkTG9jaz4mKSA9IGRlbGV0ZTsKKworICAgIENoZWNrZWRMb2Nr
KiBsb2NrYWJsZSgpIHsgcmV0dXJuICZtX2xvY2s7IH0KKwogcHJpdmF0ZToKICAgICBDaGVja2Vk
TG9jayYgbV9sb2NrOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ3VzdG9tUHJvdG9jb2xzL0NvY29hL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNvY29h
Lm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvQ29jb2Ev
TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ29jb2EubW0KaW5kZXggMWFhNTNjYzJmYjc3YmFm
OWUzMjY1MDcyMTA4MDlmZDc2Y2ZiYmYyNy4uYjY1NDk4YzI1YzQ2ZjE3NTM4MDg4MmFhYjE0YTVh
OGJiMGRkN2U4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0
b21Qcm90b2NvbHMvQ29jb2EvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ29jb2EubW0KKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvQ29jb2EvTGVn
YWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ29jb2EubW0KQEAgLTQ5LDcgKzQ5LDcgQEAgdm9pZCBM
ZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXI6Om5ldHdvcmtQcm9jZXNzQ3JlYXRlZChOZXR3b3Jr
UHJvY2VzcyYgbmV0d29ya1AKICAgICBhdXRvIGhhc1JlZ2lzdGVyZWRTY2hlbWVzID0gW10gKGF1
dG8qIGxlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlcikgewogICAgICAgICBpZiAoIWxlZ2FjeUN1
c3RvbVByb3RvY29sTWFuYWdlcikKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
TG9ja0hvbGRlciBsb2NrZXIobGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLT5tX3JlZ2lzdGVy
ZWRTY2hlbWVzTXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbGVnYWN5Q3VzdG9tUHJv
dG9jb2xNYW5hZ2VyLT5tX3JlZ2lzdGVyZWRTY2hlbWVzTG9jayB9OwogICAgICAgICByZXR1cm4g
IWxlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlci0+bV9yZWdpc3RlcmVkU2NoZW1lcy5pc0VtcHR5
KCk7CiAgICAgfTsKIApAQCAtMTM1LDE0ICsxMzUsMTQgQEAgdm9pZCBMZWdhY3lDdXN0b21Qcm90
b2NvbE1hbmFnZXI6OnJlZ2lzdGVyUHJvdG9jb2xDbGFzcyhOU1VSTFNlc3Npb25Db25maWd1cmF0
aW8KIHZvaWQgTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpyZWdpc3RlclNjaGVtZShjb25z
dCBTdHJpbmcmIHNjaGVtZSkKIHsKICAgICBBU1NFUlQoIXNjaGVtZS5pc051bGwoKSk7Ci0gICAg
TG9ja0hvbGRlciBsb2NrZXIobV9yZWdpc3RlcmVkU2NoZW1lc011dGV4KTsKKyAgICBMb2NrZXIg
bG9ja2VyIHsgbV9yZWdpc3RlcmVkU2NoZW1lc0xvY2sgfTsKICAgICBtX3JlZ2lzdGVyZWRTY2hl
bWVzLmFkZChzY2hlbWUpOwogfQogCiB2b2lkIExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlcjo6
dW5yZWdpc3RlclNjaGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSkKIHsKICAgICBBU1NFUlQoIXNj
aGVtZS5pc051bGwoKSk7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9yZWdpc3RlcmVkU2NoZW1l
c011dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9yZWdpc3RlcmVkU2NoZW1lc0xvY2sgfTsK
ICAgICBtX3JlZ2lzdGVyZWRTY2hlbWVzLnJlbW92ZShzY2hlbWUpOwogfQogCkBAIC0xNTEsNyAr
MTUxLDcgQEAgYm9vbCBMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXI6OnN1cHBvcnRzU2NoZW1l
KGNvbnN0IFN0cmluZyYgc2NoZW1lKQogICAgIGlmIChzY2hlbWUuaXNOdWxsKCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fcmVnaXN0ZXJlZFNjaGVt
ZXNNdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fcmVnaXN0ZXJlZFNjaGVtZXNMb2NrIH07
CiAgICAgcmV0dXJuIG1fcmVnaXN0ZXJlZFNjaGVtZXMuY29udGFpbnMoc2NoZW1lKTsKIH0KIApA
QCAtMjMyLDcgKzIzMiw3IEBAIHZvaWQgTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjp3YXNS
ZWRpcmVjdGVkVG9SZXF1ZXN0KExlZ2FjeUN1c3RvbVByb3RvY29sSUQKIAogUmV0YWluUHRyPFdL
Q3VzdG9tUHJvdG9jb2w+IExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlcjo6cHJvdG9jb2xGb3JJ
RChMZWdhY3lDdXN0b21Qcm90b2NvbElEIGN1c3RvbVByb3RvY29sSUQpCiB7Ci0gICAgTG9ja0hv
bGRlciBsb2NrZXIobV9jdXN0b21Qcm90b2NvbE1hcE11dGV4KTsKKyAgICBMb2NrZXIgbG9ja2Vy
IHsgbV9jdXN0b21Qcm90b2NvbE1hcExvY2sgfTsKIAogICAgIEN1c3RvbVByb3RvY29sTWFwOjpj
b25zdF9pdGVyYXRvciBpdCA9IG1fY3VzdG9tUHJvdG9jb2xNYXAuZmluZChjdXN0b21Qcm90b2Nv
bElEKTsKICAgICBpZiAoaXQgPT0gbV9jdXN0b21Qcm90b2NvbE1hcC5lbmQoKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1
c3RvbVByb3RvY29sTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1
c3RvbVByb3RvY29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIuY3BwCmluZGV4IGZkYTY0
YjMyMjE4ZWIxZDJkODU5N2RkMTViNzliOWRjMjUxZGE4NGQuLmY0YzQ3ODk3OTljYzc3NWFiNGQz
YmVlNWU1ZGIzMTNkNmMwNjg3NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyLmNwcApAQCAtNTcsNyArNTcsNyBAQCB2b2lkIExlZ2FjeUN1c3Rv
bVByb3RvY29sTWFuYWdlcjo6aW5pdGlhbGl6ZShjb25zdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldAogCiBMZWdhY3lDdXN0b21Qcm90b2NvbElEIExlZ2FjeUN1c3RvbVByb3RvY29sTWFu
YWdlcjo6YWRkQ3VzdG9tUHJvdG9jb2woQ3VzdG9tUHJvdG9jb2wmJiBjdXN0b21Qcm90b2NvbCkK
IHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2N1c3RvbVByb3RvY29sTWFwTXV0ZXgpOworICAg
IExvY2tlciBsb2NrZXIgeyBtX2N1c3RvbVByb3RvY29sTWFwTG9jayB9OwogICAgIGF1dG8gY3Vz
dG9tUHJvdG9jb2xJRCA9IExlZ2FjeUN1c3RvbVByb3RvY29sSUQ6OmdlbmVyYXRlKCk7CiAgICAg
bV9jdXN0b21Qcm90b2NvbE1hcC5hZGQoY3VzdG9tUHJvdG9jb2xJRCwgV1RGTW92ZShjdXN0b21Q
cm90b2NvbCkpOwogICAgIHJldHVybiBjdXN0b21Qcm90b2NvbElEOwpAQCAtNjUsNyArNjUsNyBA
QCBMZWdhY3lDdXN0b21Qcm90b2NvbElEIExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlcjo6YWRk
Q3VzdG9tUHJvdG9jb2woQ3VzdG9tUHJvdAogCiB2b2lkIExlZ2FjeUN1c3RvbVByb3RvY29sTWFu
YWdlcjo6cmVtb3ZlQ3VzdG9tUHJvdG9jb2woTGVnYWN5Q3VzdG9tUHJvdG9jb2xJRCBjdXN0b21Q
cm90b2NvbElEKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fY3VzdG9tUHJvdG9jb2xNYXBN
dXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fY3VzdG9tUHJvdG9jb2xNYXBMb2NrIH07CiAg
ICAgbV9jdXN0b21Qcm90b2NvbE1hcC5yZW1vdmUoY3VzdG9tUHJvdG9jb2xJRCk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0xl
Z2FjeUN1c3RvbVByb3RvY29sTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmgKaW5kZXggMGJj
ZDU2NzNjOTM0NmFkYTExZDY1NmMzYWRkNTFiZTRlZGJjMjczMC4uNzg1MmY5N2E1ZDk0MWEwNzY2
MTllNGZiNzY1MDk1NWRlZDY0ZTk5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmgKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJMZWdhY3lD
dXN0b21Qcm90b2NvbElELmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVk
ZSAiTmV0d29ya1Byb2Nlc3NTdXBwbGVtZW50LmgiCisjaW5jbHVkZSA8d3RmL0NoZWNrZWRMb2Nr
Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KQEAgLTk1LDEyICs5NiwxMiBAQCBwcml2
YXRlOgogICAgIE5ldHdvcmtQcm9jZXNzJiBtX25ldHdvcmtQcm9jZXNzOwogCiAgICAgdHlwZWRl
ZiBIYXNoTWFwPExlZ2FjeUN1c3RvbVByb3RvY29sSUQsIEN1c3RvbVByb3RvY29sPiBDdXN0b21Q
cm90b2NvbE1hcDsKLSAgICBDdXN0b21Qcm90b2NvbE1hcCBtX2N1c3RvbVByb3RvY29sTWFwOwot
ICAgIExvY2sgbV9jdXN0b21Qcm90b2NvbE1hcE11dGV4OworICAgIEN1c3RvbVByb3RvY29sTWFw
IG1fY3VzdG9tUHJvdG9jb2xNYXAgV1RGX0dVQVJERURfQllfTE9DSyhtX2N1c3RvbVByb3RvY29s
TWFwTG9jayk7CisgICAgQ2hlY2tlZExvY2sgbV9jdXN0b21Qcm90b2NvbE1hcExvY2s7CiAKICNp
ZiBQTEFURk9STShDT0NPQSkKLSAgICBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRp
dmVIYXNoPiBtX3JlZ2lzdGVyZWRTY2hlbWVzOwotICAgIExvY2sgbV9yZWdpc3RlcmVkU2NoZW1l
c011dGV4OworICAgIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IG1f
cmVnaXN0ZXJlZFNjaGVtZXMgV1RGX0dVQVJERURfQllfTE9DSyhtX3JlZ2lzdGVyZWRTY2hlbWVz
TG9jayk7CisgICAgQ2hlY2tlZExvY2sgbV9yZWdpc3RlcmVkU2NoZW1lc0xvY2s7CiAKICAgICAv
LyBXS0N1c3RvbVByb3RvY29sIG9iamVjdHMgY2FuIGJlIHJlbW92ZWQgZnJvbSB0aGUgbV9jdXN0
b21Qcm90b2NvbE1hcCBmcm9tIG11bHRpcGxlIHRocmVhZHMuCiAgICAgLy8gV2UgcmV0dXJuIGEg
UmV0YWluUHRyIGhlcmUgYmVjYXVzZSBpdCBpcyB1bnNhZmUgdG8gcmV0dXJuIGEgcmF3IHBvaW50
ZXIgc2luY2UgdGhlIG9iamVjdCBtaWdodCBpbW1lZGlhdGVseSBiZSBkZXN0cm95ZWQgZnJvbSBh
IGRpZmZlcmVudCB0aHJlYWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuY3BwCmluZGV4IGI4NDgxNDVmZTZjNTFkYTg1YWVjMjQxNGM2ZTUyN2IzYzFl
NzU4ZjUuLmMyYzUzYWJmNWVlYjBiNzRhMWUxNTM2NTc4YzA3N2MyYjNmMTU5OWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC00Mjgs
NyArNDI4LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6YWRkV2Vic2l0ZURhdGFTdG9yZShXZWJz
aXRlRGF0YVN0b3JlUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMKIAogdm9pZCBOZXR3b3JrUHJvY2Vz
czo6YWRkU2Vzc2lvblN0b3JhZ2VRdW90YU1hbmFnZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCB1aW50NjRfdCBkZWZhdWx0UXVvdGEsIHVpbnQ2NF90IGRlZmF1bHRUaGlyZFBhcnR5UXVvdGEs
IGNvbnN0IFN0cmluZyYgY2FjaGVSb290UGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBj
YWNoZVJvb3RQYXRoSGFuZGxlKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2Vzc2lvblN0
b3JhZ2VRdW90YU1hbmFnZXJzTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fc2Vzc2lvblN0
b3JhZ2VRdW90YU1hbmFnZXJzTG9jayB9OwogICAgIGF1dG8gaXNOZXdFbnRyeSA9IG1fc2Vzc2lv
blN0b3JhZ2VRdW90YU1hbmFnZXJzLmVuc3VyZShzZXNzaW9uSUQsIFtkZWZhdWx0UXVvdGEsIGRl
ZmF1bHRUaGlyZFBhcnR5UXVvdGEsICZjYWNoZVJvb3RQYXRoXSB7CiAgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPFNlc3Npb25TdG9yYWdlUXVvdGFNYW5hZ2VyPihjYWNoZVJvb3RQYXRoLCBkZWZh
dWx0UXVvdGEsIGRlZmF1bHRUaGlyZFBhcnR5UXVvdGEpOwogICAgIH0pLmlzTmV3RW50cnk7CkBA
IC00NDAsNyArNDQwLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6YWRkU2Vzc2lvblN0b3JhZ2VR
dW90YU1hbmFnZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW4KIAogdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6cmVtb3ZlU2Vzc2lvblN0b3JhZ2VRdW90YU1hbmFnZXIoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklEKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2Vzc2lvblN0b3JhZ2VRdW90
YU1hbmFnZXJzTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fc2Vzc2lvblN0b3JhZ2VRdW90
YU1hbmFnZXJzTG9jayB9OwogICAgIEFTU0VSVChtX3Nlc3Npb25TdG9yYWdlUXVvdGFNYW5hZ2Vy
cy5jb250YWlucyhzZXNzaW9uSUQpKTsKICAgICBtX3Nlc3Npb25TdG9yYWdlUXVvdGFNYW5hZ2Vy
cy5yZW1vdmUoc2Vzc2lvbklEKTsKIH0KQEAgLTIzNzksNyArMjM3OSw3IEBAIHZvaWQgTmV0d29y
a1Byb2Nlc3M6OmFkZEluZGV4ZWREYXRhYmFzZVNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBTdHJpbmcmCiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFNlc3Npb25TdG9yYWdlUXVv
dGFNYW5hZ2VySURCUm9vdFBhdGgoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJp
bmcmIGlkYlJvb3RQYXRoKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2Vzc2lvblN0b3Jh
Z2VRdW90YU1hbmFnZXJzTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fc2Vzc2lvblN0b3Jh
Z2VRdW90YU1hbmFnZXJzTG9jayB9OwogICAgIGF1dG8qIHNlc3Npb25TdG9yYWdlUXVvdGFNYW5h
Z2VyID0gbV9zZXNzaW9uU3RvcmFnZVF1b3RhTWFuYWdlcnMuZ2V0KHNlc3Npb25JRCk7CiAgICAg
QVNTRVJUKHNlc3Npb25TdG9yYWdlUXVvdGFNYW5hZ2VyKTsKICAgICBzZXNzaW9uU3RvcmFnZVF1
b3RhTWFuYWdlci0+c2V0SURCUm9vdFBhdGgoaWRiUm9vdFBhdGgpOwpAQCAtMjM5Myw3ICsyMzkz
LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c3luY0xvY2FsU3RvcmFnZShDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmQKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVz
ZXRRdW90YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3Nlc3Np
b25TdG9yYWdlUXVvdGFNYW5hZ2Vyc0xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX3Nlc3Np
b25TdG9yYWdlUXVvdGFNYW5hZ2Vyc0xvY2sgfTsKICAgICBpZiAoYXV0byogc2Vzc2lvblN0b3Jh
Z2VRdW90YU1hbmFnZXIgPSBtX3Nlc3Npb25TdG9yYWdlUXVvdGFNYW5hZ2Vycy5nZXQoc2Vzc2lv
bklEKSkgewogICAgICAgICBmb3IgKGF1dG8gc3RvcmFnZVF1b3RhTWFuYWdlciA6IHNlc3Npb25T
dG9yYWdlUXVvdGFNYW5hZ2VyLT5leGlzdGluZ1N0b3JhZ2VRdW90YU1hbmFnZXJzKCkpCiAgICAg
ICAgICAgICBzdG9yYWdlUXVvdGFNYW5hZ2VyLT5yZXNldFF1b3RhRm9yVGVzdGluZygpOwpAQCAt
MjQ5OCw3ICsyNDk4LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVxdWVzdFN0b3JhZ2VTcGFj
ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IENsaWVudE8KIAogUmVmUHRyPFN0b3Jh
Z2VRdW90YU1hbmFnZXI+IE5ldHdvcmtQcm9jZXNzOjpzdG9yYWdlUXVvdGFNYW5hZ2VyKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4pCiB7Ci0gICAg
TG9ja0hvbGRlciBsb2NrZXIobV9zZXNzaW9uU3RvcmFnZVF1b3RhTWFuYWdlcnNMb2NrKTsKKyAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9zZXNzaW9uU3RvcmFnZVF1b3RhTWFuYWdlcnNMb2NrIH07CiAg
ICAgYXV0byogc2Vzc2lvblN0b3JhZ2VRdW90YU1hbmFnZXIgPSBtX3Nlc3Npb25TdG9yYWdlUXVv
dGFNYW5hZ2Vycy5nZXQoc2Vzc2lvbklEKTsKICAgICBpZiAoIXNlc3Npb25TdG9yYWdlUXVvdGFN
YW5hZ2VyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCAyY2Q1ZDBhN2Q3NTIzOTE0NzMxODcyYzkx
MzcxMzU2ODc1NTJmZTIzLi5iNGZlMmM4ZTNmNjY0MjE2ZjFhNzU2ZGNlNTdmZWVkOGNkZjQxNGY4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBA
IC01MSw2ICs1MSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VySWRlbnRpZmll
ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlclR5cGVzLmg+CiAjaW5jbHVkZSA8
bWVtb3J5PgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9Dcm9z
c1RocmVhZFRhc2suaD4KICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYv
SGFzaFNldC5oPgpAQCAtNTg0LDggKzU4NSw4IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFJUQ0Rh
dGFDaGFubmVsUmVtb3RlTWFuYWdlclByb3h5PiBtX3J0Y0RhdGFDaGFubmVsUHJveHk7CiAjZW5k
aWYKIAotICAgIExvY2sgbV9zZXNzaW9uU3RvcmFnZVF1b3RhTWFuYWdlcnNMb2NrOwotICAgIEhh
c2hNYXA8UEFMOjpTZXNzaW9uSUQsIHN0ZDo6dW5pcXVlX3B0cjxTZXNzaW9uU3RvcmFnZVF1b3Rh
TWFuYWdlcj4+IG1fc2Vzc2lvblN0b3JhZ2VRdW90YU1hbmFnZXJzOworICAgIENoZWNrZWRMb2Nr
IG1fc2Vzc2lvblN0b3JhZ2VRdW90YU1hbmFnZXJzTG9jazsKKyAgICBIYXNoTWFwPFBBTDo6U2Vz
c2lvbklELCBzdGQ6OnVuaXF1ZV9wdHI8U2Vzc2lvblN0b3JhZ2VRdW90YU1hbmFnZXI+PiBtX3Nl
c3Npb25TdG9yYWdlUXVvdGFNYW5hZ2VycyBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fc2Vzc2lvblN0
b3JhZ2VRdW90YU1hbmFnZXJzTG9jayk7CiAgICAgYm9vbCBtX3F1b3RhTG9nZ2luZ0VuYWJsZWQg
eyBmYWxzZSB9OwogCiAgICAgT3B0aW9uU2V0PE5ldHdvcmtDYWNoZTo6Q2FjaGVPcHRpb24+IG1f
Y2FjaGVPcHRpb25zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9X
ZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlclNldC5jcHAKaW5kZXggN2M0Y2Q4YTVjMzNl
MmFkNjlmZmZkYzVmN2ZlNTFjMWJlNmYwMzQ4Ni4uZjllODQzZGUzNzMxOWRkNmM1YzEwNjNhM2Nk
Y2Y1YzFkNGJiYTE5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9X
ZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQuY3BwCkBAIC0xNjMsMTMgKzE2
MywxMyBAQCB2b2lkIFN0b3JhZ2VNYW5hZ2VyU2V0OjpzdXNwZW5kKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWlu
KCkpOwogCiAgICAgQ29tcGxldGlvbkhhbmRsZXJDYWxsaW5nU2NvcGUgY29tcGxldGlvbkhhbmRs
ZXJDYWxsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAgIExvY2tlcjxMb2NrPiBz
dGF0ZUxvY2tlcihtX3N0YXRlTG9jayk7CisgICAgTG9ja2VyIHN0YXRlTG9ja2VyIHsgbV9zdGF0
ZUxvY2sgfTsKICAgICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6UnVubmluZykKICAgICAgICAgcmV0
dXJuOwogICAgIG1fc3RhdGUgPSBTdGF0ZTo6V2lsbFN1c3BlbmQ7CiAKICAgICBtX3F1ZXVlLT5k
aXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9u
SGFuZGxlciA9IGNvbXBsZXRpb25IYW5kbGVyQ2FsbGVyLnJlbGVhc2UoKV0gKCkgbXV0YWJsZSB7
Ci0gICAgICAgIExvY2tlcjxMb2NrPiBzdGF0ZUxvY2tlcihtX3N0YXRlTG9jayk7CisgICAgICAg
IExvY2tlciBzdGF0ZUxvY2tlciB7IG1fc3RhdGVMb2NrIH07CiAgICAgICAgIEFTU0VSVChtX3N0
YXRlICE9IFN0YXRlOjpTdXNwZW5kZWQpOwogCiAgICAgICAgIGlmIChtX3N0YXRlICE9IFN0YXRl
OjpXaWxsU3VzcGVuZCkgewpAQCAtMTkwLDcgKzE5MCw3IEBAIHZvaWQgU3RvcmFnZU1hbmFnZXJT
ZXQ6OnJlc3VtZSgpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIExv
Y2tlcjxMb2NrPiBzdGF0ZUxvY2tlcihtX3N0YXRlTG9jayk7CisgICAgTG9ja2VyIHN0YXRlTG9j
a2VyIHsgbV9zdGF0ZUxvY2sgfTsKICAgICBhdXRvIHByZXZpb3VzU3RhdGUgPSBtX3N0YXRlOwog
ICAgIG1fc3RhdGUgPSBTdGF0ZTo6UnVubmluZzsKICAgICBpZiAocHJldmlvdXNTdGF0ZSA9PSBT
dGF0ZTo6U3VzcGVuZGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQuaAppbmRleCAwYzcyNDljM2M4NDUx
NzM2Y2Y2N2I4MDJhMDNjYzkxODEwODk2NTgzLi40MzBmOTZkYTVjNjg4ODU5ZDYwZGM3ODFhZTAw
MWUwNTUxMjNhYTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dl
YlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQuaApAQCAtMzEsNiArMzEsOCBAQAog
I2luY2x1ZGUgIlN0b3JhZ2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9y
aWdpbkRhdGEuaD4KICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CisjaW5jbHVkZSA8d3RmL0No
ZWNrZWRDb25kaXRpb24uaD4KKyNpbmNsdWRlIDx3dGYvQ2hlY2tlZExvY2suaD4KICNpbmNsdWRl
IDx3dGYvV2Vha1B0ci5oPgogCiB1c2luZyBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE7CkBA
IC0xMDIsOCArMTA0LDggQEAgcHJpdmF0ZToKICAgICAgICAgU3VzcGVuZGVkCiAgICAgfTsKICAg
ICBTdGF0ZSBtX3N0YXRlIHsgU3RhdGU6OlJ1bm5pbmcgfTsKLSAgICBMb2NrIG1fc3RhdGVMb2Nr
OwotICAgIENvbmRpdGlvbiBtX3N0YXRlQ2hhbmdlQ29uZGl0aW9uOworICAgIENoZWNrZWRMb2Nr
IG1fc3RhdGVMb2NrOworICAgIENoZWNrZWRDb25kaXRpb24gbV9zdGF0ZUNoYW5nZUNvbmRpdGlv
bjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIuaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFz
ZU9ic2VydmVyLmgKaW5kZXggN2QyZWY4ZjQ1YzE0ZDk4YTQyMzBhZWI0YzdkZTdhNjFkY2MwZmUy
Ny4uODRkZjI4MWMxNzhjYTAyYWY3ZjVhZGQ0NTU2M2I0MDBjMjA2ODRmZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNl
T2JzZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL0xhdW5j
aFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlci5oCkBAIC0yOCw3ICsyOCw3IEBACiAjaW5jbHVkZSAi
TmV0d29ya1Byb2Nlc3MuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc1N1cHBsZW1lbnQuaCIK
ICNpbmNsdWRlICJYUENFbmRwb2ludC5oIgotI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CisjaW5jbHVk
ZSA8d3RmL0NoZWNrZWRMb2NrLmg+CiAjaW5jbHVkZSA8d3RmL09TT2JqZWN0UHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1JldGFpblB0ci5oPgogCkBAIC01NSw4ICs1NSw4IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBpbml0aWFsaXplQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb24qKSBmaW5hbDsKIAogICAg
IFJldGFpblB0cjxpZD4gbV9vYnNlcnZlcjsKLSAgICBWZWN0b3I8T1NPYmplY3RQdHI8eHBjX2Nv
bm5lY3Rpb25fdD4+IG1fY29ubmVjdGlvbnM7Ci0gICAgTG9jayBtX2Nvbm5lY3Rpb25zTG9jazsK
KyAgICBDaGVja2VkTG9jayBtX2Nvbm5lY3Rpb25zTG9jazsKKyAgICBWZWN0b3I8T1NPYmplY3RQ
dHI8eHBjX2Nvbm5lY3Rpb25fdD4+IG1fY29ubmVjdGlvbnMgV1RGX0dVQVJERURfQllfTE9DSyht
X2Nvbm5lY3Rpb25zTG9jayk7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NvY29hL0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlci5tbSBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU9i
c2VydmVyLm1tCmluZGV4IDY4MGNiNDBhMGY1ZmYyMjBjOGE4MjhlNTY0NmJhNzQ0NTY4MGU3MTcu
LjQzMjJlNDRlOGVhMDYzYzNkYWE4ZTJjNmRlN2E1YTA4NWY1YTgxZTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU9i
c2VydmVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTGF1bmNo
U2VydmljZXNEYXRhYmFzZU9ic2VydmVyLm1tCkBAIC01Niw3ICs1Niw3IEBAIExhdW5jaFNlcnZp
Y2VzRGF0YWJhc2VPYnNlcnZlcjo6TGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyKE5ldHdv
cmtQcm9jZXNzJikKICAgICAgICAgeHBjX2RpY3Rpb25hcnlfc2V0X3N0cmluZyhtZXNzYWdlLmdl
dCgpLCBYUENFbmRwb2ludDo6eHBjTWVzc2FnZU5hbWVLZXksIExhdW5jaFNlcnZpY2VzRGF0YWJh
c2VYUENDb25zdGFudHM6OnhwY1VwZGF0ZUxhdW5jaFNlcnZpY2VzRGF0YWJhc2VNZXNzYWdlTmFt
ZSk7CiAgICAgICAgIHhwY19kaWN0aW9uYXJ5X3NldF92YWx1ZShtZXNzYWdlLmdldCgpLCBMYXVu
Y2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29uc3RhbnRzOjp4cGNMYXVuY2hTZXJ2aWNlc0RhdGFiYXNl
S2V5LCBjaGFuZ2UpOwogCi0gICAgICAgIExvY2tIb2xkZXIgaG9sZGVyKG1fY29ubmVjdGlvbnNM
b2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fY29ubmVjdGlvbnNMb2NrIH07CiAgICAg
ICAgIGZvciAoYXV0byYgY29ubmVjdGlvbiA6IG1fY29ubmVjdGlvbnMpIHsKICAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKHhwY19nZXRfdHlwZShjb25uZWN0aW9uLmdldCgpKSA9PSBYUENfVFlQ
RV9DT05ORUNUSU9OKTsKICAgICAgICAgICAgIHhwY19jb25uZWN0aW9uX3NlbmRfbWVzc2FnZShj
b25uZWN0aW9uLmdldCgpLCBtZXNzYWdlLmdldCgpKTsKQEAgLTczLDcgKzczLDcgQEAgY29uc3Qg
Y2hhciogTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyOjpzdXBwbGVtZW50TmFtZSgpCiB2
b2lkIExhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlcjo6c3RhcnRPYnNlcnZpbmcoT1NPYmpl
Y3RQdHI8eHBjX2Nvbm5lY3Rpb25fdD4gY29ubmVjdGlvbikKIHsKICAgICB7Ci0gICAgICAgIExv
Y2tIb2xkZXIgaG9sZGVyKG1fY29ubmVjdGlvbnNMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tl
ciB7IG1fY29ubmVjdGlvbnNMb2NrIH07CiAgICAgICAgIG1fY29ubmVjdGlvbnMuYXBwZW5kKGNv
bm5lY3Rpb24pOwogICAgIH0KIApAQCAtMTMyLDcgKzEzMiw3IEBAIHZvaWQgTGF1bmNoU2Vydmlj
ZXNEYXRhYmFzZU9ic2VydmVyOjpoYW5kbGVFdmVudCh4cGNfY29ubmVjdGlvbl90IGNvbm5lY3Rp
b24sIHhwCiAgICAgICAgIGlmIChldmVudCAhPSBYUENfRVJST1JfQ09OTkVDVElPTl9JTlZBTElE
ICYmIGV2ZW50ICE9IFhQQ19FUlJPUl9URVJNSU5BVElPTl9JTU1JTkVOVCkKICAgICAgICAgICAg
IHJldHVybjsKIAotICAgICAgICBMb2NrSG9sZGVyIGhvbGRlcihtX2Nvbm5lY3Rpb25zTG9jayk7
CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2Nvbm5lY3Rpb25zTG9jayB9OwogICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG1fY29ubmVjdGlvbnMuc2l6ZSgpOyBpKyspIHsKICAgICAg
ICAgICAgIGlmIChtX2Nvbm5lY3Rpb25zW2ldLmdldCgpID09IGNvbm5lY3Rpb24pIHsKICAgICAg
ICAgICAgICAgICBtX2Nvbm5lY3Rpb25zLnJlbW92ZShpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0Jsb2NraW5nUmVzcG9uc2VNYXAuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0Jsb2NraW5nUmVzcG9uc2VNYXAuaAppbmRleCA1MmY3OGZjMzYyMTY0NzRhOWY1ZDZkMzhhN2Zi
ODcxZjc0MTUyOTY2Li44OGIwNjM5MmZmYjg0NTI5NTAwZjFmMDRjYmNkNjU5N2YxNDE5OWNjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9CbG9ja2luZ1Jlc3BvbnNlTWFwLmgKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvQmxvY2tpbmdSZXNwb25zZU1hcC5oCkBAIC0yNiw5ICsy
Niw5IEBACiAjaWZuZGVmIEJsb2NraW5nUmVzcG9uc2VNYXBfaAogI2RlZmluZSBCbG9ja2luZ1Jl
c3BvbnNlTWFwX2gKIAotI2luY2x1ZGUgPHd0Zi9Db25kaXRpb24uaD4KKyNpbmNsdWRlIDx3dGYv
Q2hlY2tlZENvbmRpdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkTG9jay5oPgogI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYv
Tm9uY29weWFibGUuaD4KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KQEAgLTQxLDcgKzQxLDcgQEAg
cHVibGljOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxUPiB3YWl0Rm9yUmVzcG9uc2UodWludDY0X3Qg
cmVxdWVzdElEKQogICAgIHsKICAgICAgICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8TG9jaz4gbG9jayhtX211dGV4KTsKKyAgICAgICAgICAgIExvY2tlciBs
b2NrZXIgeyBtX3Jlc3BvbnNlc0xvY2sgfTsKIAogICAgICAgICAgICAgaWYgKG1fY2FuY2VsZWQp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC00OSw3ICs0OSw3IEBAIHB1Ymxp
YzoKICAgICAgICAgICAgIGlmIChzdGQ6OnVuaXF1ZV9wdHI8VD4gcmVzcG9uc2UgPSBtX3Jlc3Bv
bnNlcy50YWtlKHJlcXVlc3RJRCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlOwog
Ci0gICAgICAgICAgICBtX2NvbmRpdGlvbi53YWl0KGxvY2spOworICAgICAgICAgICAgbV9jb25k
aXRpb24ud2FpdChtX3Jlc3BvbnNlc0xvY2spOwogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGlkUmVjZWl2
ZVJlc3BvbnNlKHVpbnQ2NF90IHJlcXVlc3RJRCwgc3RkOjp1bmlxdWVfcHRyPFQ+IHJlc3BvbnNl
KQogICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX211dGV4KTsKKyAgICAg
ICAgTG9ja2VyIGxvY2tlciB7IG1fcmVzcG9uc2VzTG9jayB9OwogICAgICAgICBBU1NFUlQoIW1f
cmVzcG9uc2VzLmNvbnRhaW5zKHJlcXVlc3RJRCkpOwogCiAgICAgICAgIG1fcmVzcG9uc2VzLnNl
dChyZXF1ZXN0SUQsIFdURk1vdmUocmVzcG9uc2UpKTsKQEAgLTc1LDEwICs3NSwxMCBAQCBwdWJs
aWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIExvY2sgbV9tdXRleDsKLSAgICBDb25kaXRpb24g
bV9jb25kaXRpb247CisgICAgQ2hlY2tlZExvY2sgbV9yZXNwb25zZXNMb2NrOworICAgIENoZWNr
ZWRDb25kaXRpb24gbV9jb25kaXRpb247CiAKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBzdGQ6OnVu
aXF1ZV9wdHI8VD4+IG1fcmVzcG9uc2VzOworICAgIEhhc2hNYXA8dWludDY0X3QsIHN0ZDo6dW5p
cXVlX3B0cjxUPj4gbV9yZXNwb25zZXMgV1RGX0dVQVJERURfQllfTE9DSyhtX3Jlc3BvbnNlc0xv
Y2spOwogICAgIGJvb2wgbV9jYW5jZWxlZDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0NvY29hL1hQQ0VuZHBvaW50Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Db2NvYS9YUENFbmRwb2ludENsaWVudC5oCmluZGV4IGQ3ZTQzNWQyYjljN2M2MmExMjgwMDlh
NTgzZTg3YWMwZjg2NTFiZTkuLjViODI5YmM2OWFhZTE5ZmJmOWJiYzE5NTExNjk1NjA2MGUxMGQ0
NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hQQ0VuZHBvaW50Q2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvWFBDRW5kcG9pbnRDbGllbnQu
aApAQCAtMjYsNyArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJXS0RlY2xhcmF0
aW9uU3BlY2lmaWVycy5oIgotI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CisjaW5jbHVkZSA8d3RmL0No
ZWNrZWRMb2NrLmg+CiAjaW5jbHVkZSA8d3RmL09TT2JqZWN0UHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L3NwaS9kYXJ3aW4vWFBDU1BJLmg+CiAKQEAgLTQ1LDggKzQ1LDggQEAgcHJpdmF0ZToKICAgICB2
aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQoeHBjX29iamVjdF90KSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGRpZENvbm5lY3QoKSA9IDA7CiAKLSAgICBPU09iamVjdFB0cjx4cGNfY29ubmVjdGlvbl90
PiBtX2Nvbm5lY3Rpb247Ci0gICAgTG9jayBtX2xvY2s7CisgICAgQ2hlY2tlZExvY2sgbV9jb25u
ZWN0aW9uTG9jazsKKyAgICBPU09iamVjdFB0cjx4cGNfY29ubmVjdGlvbl90PiBtX2Nvbm5lY3Rp
b24gV1RGX0dVQVJERURfQllfTE9DSyhtX2Nvbm5lY3Rpb25Mb2NrKTsKIH07CiAKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hQQ0VuZHBvaW50Q2xpZW50Lm1tIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvWFBDRW5kcG9pbnRDbGllbnQubW0KaW5kZXggZWUx
NzgxYjIzM2I1OGI0OWM4YTZjYjczNGM3MTY3ZTMyN2M5MTZmNy4uMDAyZGUzN2VkZDE2ODlkNjc4
MzRjMjE4Y2Y0NDViNGE4YzM4NTZmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
Q29jb2EvWFBDRW5kcG9pbnRDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29j
b2EvWFBDRW5kcG9pbnRDbGllbnQubW0KQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYktp
dCB7CiB2b2lkIFhQQ0VuZHBvaW50Q2xpZW50OjpzZXRFbmRwb2ludCh4cGNfZW5kcG9pbnRfdCBl
bmRwb2ludCkKIHsKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7Cisg
ICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2Nvbm5lY3Rpb25Mb2NrIH07CiAKICAgICAgICAgaWYg
KG1fY29ubmVjdGlvbikKICAgICAgICAgICAgIHJldHVybjsKQEAgLTQ1LDcgKzQ1LDcgQEAgdm9p
ZCBYUENFbmRwb2ludENsaWVudDo6c2V0RW5kcG9pbnQoeHBjX2VuZHBvaW50X3QgZW5kcG9pbnQp
CiAgICAgICAgICAgICB4cGNfdHlwZV90IHR5cGUgPSB4cGNfZ2V0X3R5cGUobWVzc2FnZSk7CiAg
ICAgICAgICAgICBpZiAodHlwZSA9PSBYUENfVFlQRV9FUlJPUikgewogICAgICAgICAgICAgICAg
IGlmIChtZXNzYWdlID09IFhQQ19FUlJPUl9DT05ORUNUSU9OX0lOVkFMSUQgfHwgbWVzc2FnZSA9
PSBYUENfRVJST1JfVEVSTUlOQVRJT05fSU1NSU5FTlQpIHsKLSAgICAgICAgICAgICAgICAgICAg
TG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgTG9ja2VyIGxv
Y2tlciB7IG1fY29ubmVjdGlvbkxvY2sgfTsKICAgICAgICAgICAgICAgICAgICAgbV9jb25uZWN0
aW9uID0gbnVsbHB0cjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgcmV0dXJu
OwpAQCAtNzQsNyArNzQsNyBAQCB2b2lkIFhQQ0VuZHBvaW50Q2xpZW50OjpzZXRFbmRwb2ludCh4
cGNfZW5kcG9pbnRfdCBlbmRwb2ludCkKIAogT1NPYmplY3RQdHI8eHBjX2Nvbm5lY3Rpb25fdD4g
WFBDRW5kcG9pbnRDbGllbnQ6OmNvbm5lY3Rpb24oKQogewotICAgIExvY2tIb2xkZXIgbG9ja2Vy
KG1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fY29ubmVjdGlvbkxvY2sgfTsKICAgICBy
ZXR1cm4gbV9jb25uZWN0aW9uOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVS
TFNjaGVtZVRhc2suY3BwCmluZGV4IDE2ZDJjY2I5Y2Q3ZjcyMzZlMThlNmU2ODIzMTBjYzM3ZDhm
YWY0MzcuLjk3NmNmYjVkNjM4MGU3ZjhkMzYyZjYyYjVlMWJkMTVlNWJkNWE2YzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCkBAIC02MCw2ICs2MCwx
MyBAQCBXZWJVUkxTY2hlbWVUYXNrOjp+V2ViVVJMU2NoZW1lVGFzaygpCiAgICAgQVNTRVJUKFJ1
bkxvb3A6OmlzTWFpbigpKTsKIH0KIAorUmVzb3VyY2VSZXF1ZXN0IFdlYlVSTFNjaGVtZVRhc2s6
OnJlcXVlc3QoKSBjb25zdAoreworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAg
TG9ja2VyIGxvY2tlciB7IG1fcmVxdWVzdExvY2sgfTsKKyAgICByZXR1cm4gbV9yZXF1ZXN0Owor
fQorCiBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OndpbGxQZXJmb3JtUmVkaXJlY3Rpb24oUmVzb3Vy
Y2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCAgRnVuY3Rp
b248dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIC0+IEV4Y2Vw
dGlvblR5cGUKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwpAQCAtODMsNyArOTAs
NyBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OndpbGxQZXJmb3JtUmVkaXJlY3Rpb24oUmVzb3Vy
Y2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZXNvdQogICAgICAgICBtX3N5bmNSZXNwb25zZSA9IHJl
c3BvbnNlOwogCiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3JlcXVlc3RMb2Nr
KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fcmVxdWVzdExvY2sgfTsKICAgICAgICAgbV9y
ZXF1ZXN0ID0gcmVxdWVzdDsKICAgICB9CiAKQEAgLTEyNyw3ICsxMzQsNyBAQCBhdXRvIFdlYlVS
TFNjaGVtZVRhc2s6OmRpZFBlcmZvcm1SZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiYgcmVzcG9ucwogICAgICAgICBtX3N5bmNSZXNwb25zZSA9IHJlc3BvbnNlOwogCiAgICAg
ewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3JlcXVlc3RMb2NrKTsKKyAgICAgICAgTG9j
a2VyIGxvY2tlciB7IG1fcmVxdWVzdExvY2sgfTsKICAgICAgICAgbV9yZXF1ZXN0ID0gcmVxdWVz
dDsKICAgICB9CiAKQEAgLTIzOCw3ICsyNDUsNyBAQCB2b2lkIFdlYlVSTFNjaGVtZVRhc2s6OnBh
Z2VEZXN0cm95ZWQoKQogICAgIG1fc3RvcHBlZCA9IHRydWU7CiAgICAgCiAgICAgaWYgKGlzU3lu
YygpKSB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fcmVxdWVzdExvY2spOworICAgICAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9yZXF1ZXN0TG9jayB9OwogICAgICAgICBtX3N5bmNDb21wbGV0
aW9uSGFuZGxlcih7IH0sIGZhaWxlZEN1c3RvbVByb3RvY29sU3luY0xvYWQobV9yZXF1ZXN0KSwg
eyB9KTsKICAgICB9CiB9CkBAIC0yNTEsNyArMjU4LDcgQEAgdm9pZCBXZWJVUkxTY2hlbWVUYXNr
OjpzdG9wKCkKICAgICBtX3N0b3BwZWQgPSB0cnVlOwogCiAgICAgaWYgKGlzU3luYygpKSB7Ci0g
ICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fcmVxdWVzdExvY2spOworICAgICAgICBMb2NrZXIg
bG9ja2VyIHsgbV9yZXF1ZXN0TG9jayB9OwogICAgICAgICBtX3N5bmNDb21wbGV0aW9uSGFuZGxl
cih7IH0sIGZhaWxlZEN1c3RvbVByb3RvY29sU3luY0xvYWQobV9yZXF1ZXN0KSwgeyB9KTsKICAg
ICB9CiB9CkBAIC0yNTksNyArMjY2LDcgQEAgdm9pZCBXZWJVUkxTY2hlbWVUYXNrOjpzdG9wKCkK
ICNpZiBQTEFURk9STShDT0NPQSkKIE5TVVJMUmVxdWVzdCAqV2ViVVJMU2NoZW1lVGFzazo6bnNS
ZXF1ZXN0KCkgY29uc3QKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3JlcXVlc3RMb2NrKTsK
KyAgICBMb2NrZXIgbG9ja2VyIHsgbV9yZXF1ZXN0TG9jayB9OwogICAgIHJldHVybiBtX3JlcXVl
c3QubnNVUkxSZXF1ZXN0KFdlYkNvcmU6OkhUVFBCb2R5VXBkYXRlUG9saWN5OjpVcGRhdGVIVFRQ
Qm9keSk7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlVSTFNjaGVtZVRhc2suaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRh
c2suaAppbmRleCBmZTNjNTI5OTU4ZGQ5OWEzNWQ4N2E0OTRkM2ZkNDE0MjNjNGU4OTI0Li5iOTI5
Mjg5NGZhNWMzNGE5ZjVkOGJmMzFjZjZhMzIwYTFkYWZmMzhkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSA8
V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVz
cG9uc2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgorI2luY2x1ZGUgPHd0
Zi9DaGVja2VkTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2lu
Y2x1ZGUgPHd0Zi9JbnN0YW5jZUNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgpAQCAtNjQsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgV2ViUGFnZVByb3h5SWRlbnRpZmllciBw
YWdlUHJveHlJRCgpIGNvbnN0IHsgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsgcmV0dXJuIG1f
cGFnZVByb3h5SUQ7IH0KICAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQoKSBj
b25zdCB7IEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7IHJldHVybiBtX3dlYlBhZ2VJRDsgfQog
ICAgIFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcygpIHsgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigp
KTsgcmV0dXJuIG1fcHJvY2Vzcy5nZXQoKTsgfQotICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCgpIGNvbnN0IHsgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsgcmV0
dXJuIG1fcmVxdWVzdDsgfQorICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0KCkg
Y29uc3Q7CiAgICAgQVBJOjpGcmFtZUluZm8mIGZyYW1lSW5mbygpIGNvbnN0IHsgcmV0dXJuIG1f
ZnJhbWVJbmZvLmdldCgpOyB9CiAKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTEwMyw5ICsxMDQs
OSBAQCBwcml2YXRlOgogICAgIHVpbnQ2NF90IG1faWRlbnRpZmllcjsKICAgICBXZWJQYWdlUHJv
eHlJZGVudGlmaWVyIG1fcGFnZVByb3h5SUQ7CiAgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIg
bV93ZWJQYWdlSUQ7Ci0gICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IG1fcmVxdWVzdDsKKyAg
ICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgbV9yZXF1ZXN0IFdURl9HVUFSREVEX0JZX0xPQ0so
bV9yZXF1ZXN0TG9jayk7CiAgICAgUmVmPEFQSTo6RnJhbWVJbmZvPiBtX2ZyYW1lSW5mbzsKLSAg
ICBtdXRhYmxlIExvY2sgbV9yZXF1ZXN0TG9jazsKKyAgICBtdXRhYmxlIENoZWNrZWRMb2NrIG1f
cmVxdWVzdExvY2s7CiAgICAgYm9vbCBtX3N0b3BwZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9y
ZXNwb25zZVNlbnQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9kYXRhU2VudCB7IGZhbHNlIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvRGlzcGxheUxpbmsuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL0Rpc3BsYXlMaW5rLmNwcAppbmRleCA0NWJlZDY0
OGIzNjYzNzQ2M2NjNGNhMTJjZjllNTE5NmY4Nzg5YWQzLi41YjAwZWM1ODJkMTQyZWJlMzMyMTkx
YTFmYmY2MWFiODhlODlhZWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9t
YWMvRGlzcGxheUxpbmsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9EaXNw
bGF5TGluay5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgdm9pZCBEaXNwbGF5TGluazo6YWRkT2JzZXJ2
ZXIoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBEaXNwbGF5TGlua09ic2VydmVySUQKICAg
ICBMT0dfV0lUSF9TVFJFQU0oRGlzcGxheUxpbmssIHN0cmVhbSA8PCAiW1VJIF0gRGlzcGxheUxp
bmsgIiA8PCB0aGlzIDw8ICIgZm9yIGRpc3BsYXkgZGlzcGxheSAiIDw8IG1fZGlzcGxheUlEIDw8
ICIgYWRkIG9ic2VydmVyICIgPDwgb2JzZXJ2ZXJJRCA8PCAiIGZwcyAiIDw8IHByZWZlcnJlZEZy
YW1lc1BlclNlY29uZCk7CiAKICAgICB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2so
bV9vYnNlcnZlcnNMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fb2JzZXJ2ZXJzTG9j
ayB9OwogICAgICAgICBtX29ic2VydmVycy5lbnN1cmUoJmNvbm5lY3Rpb24sIFtdIHsKICAgICAg
ICAgICAgIHJldHVybiBDb25uZWN0aW9uQ2xpZW50SW5mbyB7IH07CiAgICAgICAgIH0pLml0ZXJh
dG9yLT52YWx1ZS5vYnNlcnZlcnMuYXBwZW5kKHsgb2JzZXJ2ZXJJRCwgcHJlZmVycmVkRnJhbWVz
UGVyU2Vjb25kIH0pOwpAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgRGlzcGxheUxpbms6OnJlbW92
ZU9ic2VydmVyKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgRGlzcGxheUxpbmtPYnNlcnZl
CiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIGF1dG8gbG9ja2VyID0g
aG9sZExvY2sobV9vYnNlcnZlcnNMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9vYnNlcnZl
cnNMb2NrIH07CiAKICAgICBhdXRvIGl0ID0gbV9vYnNlcnZlcnMuZmluZCgmY29ubmVjdGlvbik7
CiAgICAgaWYgKGl0ID09IG1fb2JzZXJ2ZXJzLmVuZCgpKQpAQCAtMTM1LDcgKzEzNSw3IEBAIHZv
aWQgRGlzcGxheUxpbms6OnJlbW92ZU9ic2VydmVycyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24pCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIGF1dG8gbG9ja2Vy
ID0gaG9sZExvY2sobV9vYnNlcnZlcnNMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9vYnNl
cnZlcnNMb2NrIH07CiAgICAgbV9vYnNlcnZlcnMucmVtb3ZlKCZjb25uZWN0aW9uKTsKIAogICAg
IC8vIFdlIGRvIG5vdCBzdG9wIHRoZSBkaXNwbGF5IGxpbmsgcmlnaHQgYXdheSB3aGVuIHxtX29i
c2VydmVyc3wgYmVjb21lcyBlbXB0eS4gSW5zdGVhZCwgd2UKQEAgLTE1Niw3ICsxNTYsNyBAQCB2
b2lkIERpc3BsYXlMaW5rOjpyZW1vdmVJbmZvRm9yQ29ubmVjdGlvbklmUG9zc2libGUoSVBDOjpD
b25uZWN0aW9uJiBjb25uZWN0aW9uKQogCiB2b2lkIERpc3BsYXlMaW5rOjppbmNyZW1lbnRGdWxs
U3BlZWRSZXF1ZXN0Q2xpZW50Q291bnQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogewot
ICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9vYnNlcnZlcnNMb2NrKTsKKyAgICBMb2NrZXIg
bG9ja2VyIHsgbV9vYnNlcnZlcnNMb2NrIH07CiAKICAgICBhdXRvJiBjb25uZWN0aW9uSW5mbyA9
IG1fb2JzZXJ2ZXJzLmVuc3VyZSgmY29ubmVjdGlvbiwgW10gewogICAgICAgICByZXR1cm4gQ29u
bmVjdGlvbkNsaWVudEluZm8geyB9OwpAQCAtMTY3LDcgKzE2Nyw3IEBAIHZvaWQgRGlzcGxheUxp
bms6OmluY3JlbWVudEZ1bGxTcGVlZFJlcXVlc3RDbGllbnRDb3VudChJUEM6OkNvbm5lY3Rpb24m
IGNvbm5lY3RpCiAKIHZvaWQgRGlzcGxheUxpbms6OmRlY3JlbWVudEZ1bGxTcGVlZFJlcXVlc3RD
bGllbnRDb3VudChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiB7Ci0gICAgYXV0byBsb2Nr
ZXIgPSBob2xkTG9jayhtX29ic2VydmVyc0xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX29i
c2VydmVyc0xvY2sgfTsKIAogICAgIGF1dG8gaXQgPSBtX29ic2VydmVycy5maW5kKCZjb25uZWN0
aW9uKTsKICAgICBpZiAoaXQgPT0gbV9vYnNlcnZlcnMuZW5kKCkpCkBAIC0xODMsNyArMTgzLDcg
QEAgdm9pZCBEaXNwbGF5TGluazo6c2V0UHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kKElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgRGlzcGwKIHsKICAgICBMT0dfV0lUSF9TVFJFQU0oRGlzcGxh
eUxpbmssIHN0cmVhbSA8PCAiW1VJIF0gRGlzcGxheUxpbmsgIiA8PCB0aGlzIDw8ICIgc2V0UHJl
ZmVycmVkRnJhbWVzUGVyU2Vjb25kIC0gZGlzcGxheSAiIDw8IG1fZGlzcGxheUlEIDw8ICIgb2Jz
ZXJ2ZXIgIiA8PCBvYnNlcnZlcklEIDw8ICIgZnBzICIgPDwgcHJlZmVycmVkRnJhbWVzUGVyU2Vj
b25kKTsKIAotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9vYnNlcnZlcnNMb2NrKTsKKyAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9vYnNlcnZlcnNMb2NrIH07CiAKICAgICBhdXRvIGl0ID0gbV9v
YnNlcnZlcnMuZmluZCgmY29ubmVjdGlvbik7CiAgICAgaWYgKGl0ID09IG1fb2JzZXJ2ZXJzLmVu
ZCgpKQpAQCAtMjA4LDcgKzIwOCw3IEBAIHZvaWQgRGlzcGxheUxpbms6Om5vdGlmeU9ic2VydmVy
c0Rpc3BsYXlXYXNSZWZyZXNoZWQoKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkp
OwogCi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX29ic2VydmVyc0xvY2spOworICAgIExv
Y2tlciBsb2NrZXIgeyBtX29ic2VydmVyc0xvY2sgfTsKIAogICAgIGF1dG8gbWF4RnJhbWVzUGVy
U2Vjb25kID0gW10oY29uc3QgVmVjdG9yPE9ic2VydmVySW5mbz4mIG9ic2VydmVycykgewogICAg
ICAgICBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZXNQZXJTZWNvbmQ+IG9ic2VydmVyc01heEZyYW1l
c1BlclNlY29uZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9EaXNw
bGF5TGluay5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL0Rpc3BsYXlMaW5rLmgKaW5k
ZXggNjdkMTRlMTE0ZjhmYTk1NzE4OTZhZDc4NjdkOGI1OWM4Y2NiMDE0Yy4uNDI4N2EwOTdmNjli
NTE1ZTIxNjkyZmRmNWM3ZTYyOGUyOTUxYzY2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvbWFjL0Rpc3BsYXlMaW5rLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL0Rpc3BsYXlMaW5rLmgKQEAgLTMyLDggKzMyLDggQEAKICNpbmNsdWRlIDxXZWJDb3JlL0Fu
aW1hdGlvbkZyYW1lUmF0ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheVVwZGF0ZS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1TY3JlZW4uaD4KKyNpbmNsdWRlIDx3dGYvQ2hlY2tl
ZExvY2suaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+
CiAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgQ29ubmVjdGlvbjsKQEAgLTY4LDcgKzY4LDcgQEAg
cHJpdmF0ZToKICAgICBzdGF0aWMgQ1ZSZXR1cm4gZGlzcGxheUxpbmtDYWxsYmFjayhDVkRpc3Bs
YXlMaW5rUmVmLCBjb25zdCBDVlRpbWVTdGFtcCosIGNvbnN0IENWVGltZVN0YW1wKiwgQ1ZPcHRp
b25GbGFncywgQ1ZPcHRpb25GbGFncyosIHZvaWQqIGRhdGEpOwogICAgIHZvaWQgbm90aWZ5T2Jz
ZXJ2ZXJzRGlzcGxheVdhc1JlZnJlc2hlZCgpOwogCi0gICAgdm9pZCByZW1vdmVJbmZvRm9yQ29u
bmVjdGlvbklmUG9zc2libGUoSVBDOjpDb25uZWN0aW9uJik7CisgICAgdm9pZCByZW1vdmVJbmZv
Rm9yQ29ubmVjdGlvbklmUG9zc2libGUoSVBDOjpDb25uZWN0aW9uJikgV1RGX1JFUVVJUkVTX0xP
Q0sobV9vYnNlcnZlcnNMb2NrKTsKIAogICAgIHN0YXRpYyBXZWJDb3JlOjpGcmFtZXNQZXJTZWNv
bmQgbm9taW5hbEZyYW1lc1BlclNlY29uZEZyb21EaXNwbGF5TGluayhDVkRpc3BsYXlMaW5rUmVm
KTsKIApAQCAtODMsOCArODMsOCBAQCBwcml2YXRlOgogICAgIH07CiAKICAgICBDVkRpc3BsYXlM
aW5rUmVmIG1fZGlzcGxheUxpbmsgeyBudWxscHRyIH07Ci0gICAgTG9jayBtX29ic2VydmVyc0xv
Y2s7Ci0gICAgSGFzaE1hcDxSZWZQdHI8SVBDOjpDb25uZWN0aW9uPiwgQ29ubmVjdGlvbkNsaWVu
dEluZm8+IG1fb2JzZXJ2ZXJzOworICAgIENoZWNrZWRMb2NrIG1fb2JzZXJ2ZXJzTG9jazsKKyAg
ICBIYXNoTWFwPFJlZlB0cjxJUEM6OkNvbm5lY3Rpb24+LCBDb25uZWN0aW9uQ2xpZW50SW5mbz4g
bV9vYnNlcnZlcnMgV1RGX0dVQVJERURfQllfTE9DSyhtX29ic2VydmVyc0xvY2spOwogICAgIFdl
YkNvcmU6OlBsYXRmb3JtRGlzcGxheUlEIG1fZGlzcGxheUlEOwogICAgIFdlYkNvcmU6OkZyYW1l
c1BlclNlY29uZCBtX2Rpc3BsYXlOb21pbmFsRnJhbWVzUGVyU2Vjb25kIHsgMCB9OwogICAgIFdl
YkNvcmU6OkRpc3BsYXlVcGRhdGUgbV9jdXJyZW50VXBkYXRlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5jcHAKaW5kZXgg
YmY3MTJhZWI1MzNlY2Q1ZDliMGJmYTVlY2E4NTA1OTJlNmIxMjhjOC4uZThmNDFiZTllOGM3MDdm
YzZhN2QzMWFjZmM0MTlmZDQwMjkwMTM2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuY3BwCkBAIC0xNzQsNyArMTc0
LDcgQEAgTGliV2ViUlRDQ29kZWNzOjpMaWJXZWJSVENDb2RlY3MoKQogewogfQogCi12b2lkIExp
YldlYlJUQ0NvZGVjczo6ZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb25Pbk1haW5UaHJlYWQoTG9j
a2VyPExvY2s+JiBsb2NrZXIpCit2b2lkIExpYldlYlJUQ0NvZGVjczo6ZW5zdXJlR1BVUHJvY2Vz
c0Nvbm5lY3Rpb25Pbk1haW5UaHJlYWQoTG9ja2VyPENoZWNrZWRMb2NrPiYgbG9ja2VyKQogewog
ICAgIEFTU0VSVChpc01haW5SdW5Mb29wKCkpOwogICAgIEFTU0VSVF9VTlVTRUQobG9ja2VyLCBs
b2NrZXIubG9ja2FibGUoKSA9PSAmbV9jb25uZWN0aW9uTG9jayk7CkBAIC0xOTUsNyArMTk1LDcg
QEAgdm9pZCBMaWJXZWJSVENDb2RlY3M6OmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uQW5kRGlz
cGF0Y2hUb1RocmVhZChGdW5jdGlvbjx2b2kKIHsKICAgICBtX25lZWRzR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb24gPSB0cnVlOwogCi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2Nvbm5lY3Rpb25M
b2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9jb25uZWN0aW9uTG9jayB9OwogCiAgICAgLy8g
RmFzdCBwYXRoIHdoZW4gd2UgYWxyZWFkeSBoYXZlIGEgY29ubmVjdGlvbi4KICAgICBpZiAobV9j
b25uZWN0aW9uKSB7CkBAIC0yMDksNyArMjA5LDcgQEAgdm9pZCBMaWJXZWJSVENDb2RlY3M6OmVu
c3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uQW5kRGlzcGF0Y2hUb1RocmVhZChGdW5jdGlvbjx2b2kK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgY2FsbE9uTWFpblJ1bkxvb3AoW3RoaXNdIHsKLSAgICAg
ICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2Nvbm5lY3Rpb25Mb2NrKTsKKyAgICAgICAgTG9j
a2VyIGxvY2tlciB7IG1fY29ubmVjdGlvbkxvY2sgfTsKICAgICAgICAgZW5zdXJlR1BVUHJvY2Vz
c0Nvbm5lY3Rpb25Pbk1haW5UaHJlYWQobG9ja2VyKTsKICAgICAgICAgZm9yIChhdXRvJiB0YXNr
IDogc3RkOjpleGNoYW5nZShtX3Rhc2tzVG9EaXNwYXRjaEFmdGVyRXN0YWJsaXNoaW5nQ29ubmVj
dGlvbiwgeyB9KSkKICAgICAgICAgICAgIGRpc3BhdGNoVG9UaHJlYWQoV1RGTW92ZSh0YXNrKSk7
CkBAIC0yNTgsNyArMjU4LDcgQEAgTGliV2ViUlRDQ29kZWNzOjpEZWNvZGVyKiBMaWJXZWJSVEND
b2RlY3M6OmNyZWF0ZURlY29kZXIoVHlwZSB0eXBlKQogICAgIGRlY29kZXItPnR5cGUgPSB0eXBl
OwogCiAgICAgZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb25BbmREaXNwYXRjaFRvVGhyZWFkKFt0
aGlzLCBkZWNvZGVyID0gV1RGTW92ZShkZWNvZGVyKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgYXV0
byBsb2NrZXIgPSBob2xkTG9jayhtX2Nvbm5lY3Rpb25Mb2NrKTsKKyAgICAgICAgTG9ja2VyIGxv
Y2tlciB7IG1fY29ubmVjdGlvbkxvY2sgfTsKICAgICAgICAgZGVjb2Rlci0+Y29ubmVjdGlvbiA9
IG1fY29ubmVjdGlvbjsKICAgICAgICAgY3JlYXRlUmVtb3RlRGVjb2RlcigqZGVjb2RlciwgKm1f
Y29ubmVjdGlvbik7CiAKQEAgLTI4NCw3ICsyODQsNyBAQCBpbnQzMl90IExpYldlYlJUQ0NvZGVj
czo6cmVsZWFzZURlY29kZXIoRGVjb2RlciYgZGVjb2RlcikKIAogaW50MzJfdCBMaWJXZWJSVEND
b2RlY3M6OmRlY29kZUZyYW1lKERlY29kZXImIGRlY29kZXIsIHVpbnQzMl90IHRpbWVTdGFtcCwg
Y29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUsIHVpbnQxNl90IHdpZHRoLCB1aW50MTZf
dCBoZWlnaHQpCiB7Ci0gICAgTG9ja0hvbGRlciBob2xkZXIobV9jb25uZWN0aW9uTG9jayk7Cisg
ICAgTG9ja2VyIGxvY2tlciB7IG1fY29ubmVjdGlvbkxvY2sgfTsKICAgICBpZiAoIWRlY29kZXIu
Y29ubmVjdGlvbiB8fCBkZWNvZGVyLmhhc0Vycm9yKSB7CiAgICAgICAgIGRlY29kZXIuaGFzRXJy
b3IgPSBmYWxzZTsKICAgICAgICAgcmV0dXJuIFdFQlJUQ19WSURFT19DT0RFQ19FUlJPUjsKQEAg
LTM4MCw3ICszODAsNyBAQCBMaWJXZWJSVENDb2RlY3M6OkVuY29kZXIqIExpYldlYlJUQ0NvZGVj
czo6Y3JlYXRlRW5jb2RlcihUeXBlIHR5cGUsIGNvbnN0IHN0ZDo6bQogICAgICAgICBwYXJhbWV0
ZXJzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihTdHJpbmc6OmZyb21VVEY4KGtleVZhbHVlLmZpcnN0
LmRhdGEoKSwga2V5VmFsdWUuZmlyc3QubGVuZ3RoKCkpLCBTdHJpbmc6OmZyb21VVEY4KGtleVZh
bHVlLnNlY29uZC5kYXRhKCksIGtleVZhbHVlLnNlY29uZC5sZW5ndGgoKSkpKTsKIAogICAgIGVu
c3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uQW5kRGlzcGF0Y2hUb1RocmVhZChbdGhpcywgZW5jb2Rl
ciA9IFdURk1vdmUoZW5jb2RlciksIHR5cGUsIHBhcmFtZXRlcnMgPSBXVEZNb3ZlKHBhcmFtZXRl
cnMpXSgpIG11dGFibGUgewotICAgICAgICBMb2NrSG9sZGVyIGhvbGRlcihtX2Nvbm5lY3Rpb25M
b2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fY29ubmVjdGlvbkxvY2sgfTsKICAgICAg
ICAgZW5jb2Rlci0+Y29ubmVjdGlvbiA9IG1fY29ubmVjdGlvbjsKICAgICAgICAgZW5jb2Rlci0+
Y29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6TGliV2ViUlRDQ29kZWNzUHJveHk6OkNyZWF0ZUVu
Y29kZXIgeyBlbmNvZGVyLT5pZGVudGlmaWVyLCBmb3JtYXROYW1lRnJvbUNvZGVjVHlwZSh0eXBl
KSwgcGFyYW1ldGVycywgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS53
ZWJSVENIMjY0TG93TGF0ZW5jeUVuY29kZXJFbmFibGVkKCkgfSwgMCk7CiAgICAgICAgIGVuY29k
ZXItPnBhcmFtZXRlcnMgPSBXVEZNb3ZlKHBhcmFtZXRlcnMpOwpAQCAtNDE2LDcgKzQxNiw3IEBA
IGludDMyX3QgTGliV2ViUlRDQ29kZWNzOjppbml0aWFsaXplRW5jb2RlcihFbmNvZGVyJiBlbmNv
ZGVyLCB1aW50MTZfdCB3aWR0aCwgdWluCiAKIGludDMyX3QgTGliV2ViUlRDQ29kZWNzOjplbmNv
ZGVGcmFtZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCB3ZWJydGM6OlZpZGVvRnJhbWUmIGZyYW1l
LCBib29sIHNob3VsZEVuY29kZUFzS2V5RnJhbWUpCiB7Ci0gICAgTG9ja0hvbGRlciBob2xkZXIo
bV9jb25uZWN0aW9uTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fY29ubmVjdGlvbkxvY2sg
fTsKIAogICAgIGlmICghZW5jb2Rlci5jb25uZWN0aW9uKQogICAgICAgICByZXR1cm4gV0VCUlRD
X1ZJREVPX0NPREVDX0VSUk9SOwpAQCAtNDYyLDcgKzQ2Miw3IEBAIHZvaWQgTGliV2ViUlRDQ29k
ZWNzOjpyZWdpc3RlckVuY29kZUZyYW1lQ2FsbGJhY2soRW5jb2RlciYgZW5jb2Rlciwgdm9pZCog
ZW5jb2RlCiAKIHZvaWQgTGliV2ViUlRDQ29kZWNzOjpzZXRFbmNvZGVSYXRlcyhFbmNvZGVyJiBl
bmNvZGVyLCB1aW50MzJfdCBiaXRSYXRlLCB1aW50MzJfdCBmcmFtZVJhdGUpCiB7Ci0gICAgTG9j
a0hvbGRlciBob2xkZXIobV9jb25uZWN0aW9uTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1f
Y29ubmVjdGlvbkxvY2sgfTsKIAogICAgIGlmICghZW5jb2Rlci5jb25uZWN0aW9uKSB7CiAgICAg
ICAgIGNhbGxPbk1haW5SdW5Mb29wKFtlbmNvZGVySWRlbnRpZmllciA9IGVuY29kZXIuaWRlbnRp
ZmllciwgYml0UmF0ZSwgZnJhbWVSYXRlXSB7CkBAIC01MTAsNyArNTEwLDcgQEAgdm9pZCBMaWJX
ZWJSVENDb2RlY3M6OmRpc3BhdGNoVG9UaHJlYWQoRnVuY3Rpb248dm9pZCgpPiYmIGNhbGxiYWNr
KQogdm9pZCBMaWJXZWJSVENDb2RlY3M6OmdwdVByb2Nlc3NDb25uZWN0aW9uRGlkQ2xvc2UoR1BV
UHJvY2Vzc0Nvbm5lY3Rpb24mKQogewogICAgIEFTU0VSVChpc01haW5SdW5Mb29wKCkpOwotICAg
IGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9jb25uZWN0aW9uTG9jayk7CisgICAgTG9ja2VyIGxv
Y2tlciB7IG1fY29ubmVjdGlvbkxvY2sgfTsKICAgICBzdGQ6OmV4Y2hhbmdlKG1fY29ubmVjdGlv
biwgbnVsbHB0ciktPnJlbW92ZVRocmVhZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6TGliV2Vi
UlRDQ29kZWNzOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpOwogICAgIGlmICghbV9uZWVkc0dQVVBy
b2Nlc3NDb25uZWN0aW9uKQogICAgICAgICByZXR1cm47CkBAIC01MTgsNyArNTE4LDcgQEAgdm9p
ZCBMaWJXZWJSVENDb2RlY3M6OmdwdVByb2Nlc3NDb25uZWN0aW9uRGlkQ2xvc2UoR1BVUHJvY2Vz
c0Nvbm5lY3Rpb24mKQogICAgIGVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uT25NYWluVGhyZWFk
KGxvY2tlcik7CiAgICAgZGlzcGF0Y2hUb1RocmVhZChbdGhpc10oKSB7CiAgICAgICAgIC8vIExv
Y2sgZXZlcnl0aGluZyBzbyB0aGF0IHdlIGNhbiB1cGRhdGUgZW5jb2Rlci9kZWNvZGVyIGNvbm5l
Y3Rpb24uCi0gICAgICAgIExvY2tIb2xkZXIgaG9sZGVyKG1fY29ubmVjdGlvbkxvY2spOworICAg
ICAgICBMb2NrZXIgbG9ja2VyIHsgbV9jb25uZWN0aW9uTG9jayB9OwogICAgICAgICAvLyBSZWNy
ZWF0ZSBlbmNvZGVycyBhbmQgaW5pdGlhbGl6ZSB0aGVtLCByZWNyZWF0ZSBkZWNvZGVycy4KICAg
ICAgICAgZm9yIChhdXRvJiBlbmNvZGVyIDogbV9lbmNvZGVycy52YWx1ZXMoKSkgewogICAgICAg
ICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpMaWJXZWJSVENDb2RlY3NQcm94eTo6
Q3JlYXRlRW5jb2RlciB7IGVuY29kZXItPmlkZW50aWZpZXIsIGZvcm1hdE5hbWVGcm9tV2ViUlRD
Q29kZWNUeXBlKGVuY29kZXItPmNvZGVjVHlwZSksIGVuY29kZXItPnBhcmFtZXRlcnMsIFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2ViUlRDSDI2NExvd0xhdGVuY3lF
bmNvZGVyRW5hYmxlZCgpIH0sIDApOwpAQCAtNTM2LDYgKzUzNiw4IEBAIHZvaWQgTGliV2ViUlRD
Q29kZWNzOjpncHVQcm9jZXNzQ29ubmVjdGlvbkRpZENsb3NlKEdQVVByb2Nlc3NDb25uZWN0aW9u
JikKIHZvaWQgTGliV2ViUlRDQ29kZWNzOjpzZXRMb2dnaW5nTGV2ZWwoV1RGTG9nTGV2ZWwgbGV2
ZWwpCiB7CiAgICAgbV9sb2dnaW5nTGV2ZWwgPSBsZXZlbDsKKworICAgIExvY2tlciBsb2NrZXIg
eyBtX2Nvbm5lY3Rpb25Mb2NrIH07CiAgICAgaWYgKG1fY29ubmVjdGlvbikKICAgICAgICAgbV9j
b25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpMaWJXZWJSVENDb2RlY3NQcm94eTo6U2V0UlRDTG9n
Z2luZ0xldmVsKGxldmVsKSwgMCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5oCmluZGV4IDcwYzk4YmNhMzVhNjdlNzZh
MjQyNGZmZDQ3ZDg5YWYyNGUxYzZjZTMuLjBhMmM2NGY3MzQ3MGQ5MzljYjg5MDNjY2ZjMmZlNDAw
MGI2NjVhNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRj
L0xpYldlYlJUQ0NvZGVjcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2Vi
cnRjL0xpYldlYlJUQ0NvZGVjcy5oCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSA8V2ViQ29y
ZS9QaXhlbEJ1ZmZlckNvbmZvcm1lckNWLmg+CiAjaW5jbHVkZSA8bWFwPgogI2luY2x1ZGUgPHdl
YnJ0Yy9hcGkvdmlkZW8vdmlkZW9fY29kZWNfdHlwZS5oPgorI2luY2x1ZGUgPHd0Zi9DaGVja2Vk
TG9jay5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQu
aD4KICNpbmNsdWRlIDx3dGYvTG9jay5oPgpAQCAtMTIyLDcgKzEyMyw3IEBAIHB1YmxpYzoKIHBy
aXZhdGU6CiAgICAgTGliV2ViUlRDQ29kZWNzKCk7CiAgICAgdm9pZCBlbnN1cmVHUFVQcm9jZXNz
Q29ubmVjdGlvbkFuZERpc3BhdGNoVG9UaHJlYWQoRnVuY3Rpb248dm9pZCgpPiYmKTsKLSAgICB2
b2lkIGVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uT25NYWluVGhyZWFkKExvY2tlcjxMb2NrPiYp
OworICAgIHZvaWQgZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb25Pbk1haW5UaHJlYWQoTG9ja2Vy
PENoZWNrZWRMb2NrPiYpIFdURl9SRVFVSVJFU19MT0NLKG1fY29ubmVjdGlvbkxvY2spOwogICAg
IHZvaWQgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb25NYXlOb0xvbmdlckJlTmVlZGVkKCk7CiAKICAgICB2
b2lkIGZhaWxlZERlY29kaW5nKFJUQ0RlY29kZXJJZGVudGlmaWVyKTsKQEAgLTE0NCw4ICsxNDUs
OCBAQCBwcml2YXRlOgogCiAgICAgc3RkOjphdG9taWM8Ym9vbD4gbV9uZWVkc0dQVVByb2Nlc3ND
b25uZWN0aW9uOwogCi0gICAgTG9jayBtX2Nvbm5lY3Rpb25Mb2NrOwotICAgIFJlZlB0cjxJUEM6
OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKKyAgICBDaGVja2VkTG9jayBtX2Nvbm5lY3Rpb25M
b2NrOworICAgIFJlZlB0cjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbiBXVEZfR1VBUkRF
RF9CWV9MT0NLKG1fY29ubmVjdGlvbkxvY2spOwogICAgIFZlY3RvcjxGdW5jdGlvbjx2b2lkKCk+
PiBtX3Rhc2tzVG9EaXNwYXRjaEFmdGVyRXN0YWJsaXNoaW5nQ29ubmVjdGlvbjsKIAogICAgIFJl
ZjxXb3JrUXVldWU+IG1fcXVldWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmNw
cAppbmRleCA5MjFkNjI3MjJjMWE2YjVlMjNkMjUyMjU2ZTdkNmY3ZjQwNzFkN2EyLi4xZjMyODRj
Njg3YWMzMTM3Y2Y5YTdhOTRhYTMyZmFlMTMyZGY2ZjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25u
ZWN0aW9uTWFuYWdlci5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rp
b24qIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6Z2V0UGx1Z2luUHJvY2Vzc0Nvbm5l
Y3QKICAgICBtX3BsdWdpblByb2Nlc3NDb25uZWN0aW9ucy5hcHBlbmQocGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb24uY29weVJlZigpKTsKIAogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIo
bV90b2tlbnNBbmRDb25uZWN0aW9uc011dGV4KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1f
dG9rZW5zQW5kQ29ubmVjdGlvbnNMb2NrIH07CiAgICAgICAgIEFTU0VSVCghbV90b2tlbnNBbmRD
b25uZWN0aW9ucy5jb250YWlucyhwbHVnaW5Qcm9jZXNzVG9rZW4pKTsKIAogICAgICAgICBtX3Rv
a2Vuc0FuZENvbm5lY3Rpb25zLnNldChwbHVnaW5Qcm9jZXNzVG9rZW4sIHBsdWdpblByb2Nlc3ND
b25uZWN0aW9uLT5jb25uZWN0aW9uKCkpOwpAQCAtMTA0LDcgKzEwNCw3IEBAIHZvaWQgUGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyOjpyZW1vdmVQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihQ
bHVnaW5Qcm9jZXNzCiAgICAgQVNTRVJUKHZlY3RvckluZGV4ICE9IG5vdEZvdW5kKTsKIAogICAg
IHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV90b2tlbnNBbmRDb25uZWN0aW9uc011dGV4
KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fdG9rZW5zQW5kQ29ubmVjdGlvbnNMb2NrIH07
CiAgICAgICAgIEFTU0VSVChtX3Rva2Vuc0FuZENvbm5lY3Rpb25zLmNvbnRhaW5zKHBsdWdpblBy
b2Nlc3NDb25uZWN0aW9uLT5wbHVnaW5Qcm9jZXNzVG9rZW4oKSkpOwogICAgICAgICAKICAgICAg
ICAgbV90b2tlbnNBbmRDb25uZWN0aW9ucy5yZW1vdmUocGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24t
PnBsdWdpblByb2Nlc3NUb2tlbigpKTsKQEAgLTExNSw3ICsxMTUsNyBAQCB2b2lkIFBsdWdpblBy
b2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6cmVtb3ZlUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oUGx1
Z2luUHJvY2VzcwogCiB2b2lkIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6cGx1Z2lu
UHJvY2Vzc0NyYXNoZWQodWludDY0X3QgcGx1Z2luUHJvY2Vzc1Rva2VuKQogewotICAgIExvY2tI
b2xkZXIgbG9ja2VyKG1fdG9rZW5zQW5kQ29ubmVjdGlvbnNNdXRleCk7CisgICAgTG9ja2VyIGxv
Y2tlciB7IG1fdG9rZW5zQW5kQ29ubmVjdGlvbnNMb2NrIH07CiAgICAgSVBDOjpDb25uZWN0aW9u
KiBjb25uZWN0aW9uID0gbV90b2tlbnNBbmRDb25uZWN0aW9ucy5nZXQocGx1Z2luUHJvY2Vzc1Rv
a2VuKTsKIAogICAgIC8vIEl0J3MgT0sgZm9yIGNvbm5lY3Rpb24gdG8gYmUgbnVsbCBoZXJlOyBp
dCB3aWxsIGhhcHBlbiBpZiB0aGlzIHdlYiBwcm9jZXNzIGRvZXNuJ3Qga25vdwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rp
b25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9j
ZXNzQ29ubmVjdGlvbk1hbmFnZXIuaAppbmRleCA0ZjEzN2I4NWRkMDE3NjEzZWJkMWY4YWYyMTJl
N2M3Yzg2MzBjZjhjLi5hMDBhOWRlNDUwN2IxOTExNGE3M2YzMTkxMjgxZmE2YTFlODdjODY1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNz
Q29ubmVjdGlvbk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuaApAQCAtMjksNiArMjksNyBAQAogI2lm
IEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogCiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzcy5o
IgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4K
QEAgLTY0LDggKzY1LDggQEAgcHJpdmF0ZToKIAogICAgIFZlY3RvcjxSZWZQdHI8UGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb24+PiBtX3BsdWdpblByb2Nlc3NDb25uZWN0aW9uczsKIAotICAgIExvY2sg
bV90b2tlbnNBbmRDb25uZWN0aW9uc011dGV4OwotICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0
cjxJUEM6OkNvbm5lY3Rpb24+PiBtX3Rva2Vuc0FuZENvbm5lY3Rpb25zOworICAgIENoZWNrZWRM
b2NrIG1fdG9rZW5zQW5kQ29ubmVjdGlvbnNMb2NrOworICAgIEhhc2hNYXA8dWludDY0X3QsIFJl
ZlB0cjxJUEM6OkNvbm5lY3Rpb24+PiBtX3Rva2Vuc0FuZENvbm5lY3Rpb25zIFdURl9HVUFSREVE
X0JZX0xPQ0sobV90b2tlbnNBbmRDb25uZWN0aW9uc0xvY2spOwogfTsKIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5jcHAKaW5k
ZXggN2IzZjA4NWQ5MGI3NGFmODczNGFjNjRkYTg5ZWRhNmVjZTQwYTZhMi4uMWJkYWY4MjEyOTFk
MzY2NWE5MWE0YjhmMTUyMGVkODEwODBkMmU4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIuY3BwCkBAIC03Myw3ICs3Myw3IEBA
IEV2ZW50RGlzcGF0Y2hlcjo6fkV2ZW50RGlzcGF0Y2hlcigpCiAjaWYgRU5BQkxFKFNDUk9MTElO
R19USFJFQUQpCiB2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6YWRkU2Nyb2xsaW5nVHJlZUZvclBhZ2Uo
V2ViUGFnZSogd2ViUGFnZSkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3Njcm9sbGluZ1Ry
ZWVzTXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX3Njcm9sbGluZ1RyZWVzTG9jayB9Owog
CiAgICAgQVNTRVJUKHdlYlBhZ2UtPmNvcmVQYWdlKCktPnNjcm9sbGluZ0Nvb3JkaW5hdG9yKCkp
OwogICAgIEFTU0VSVCghbV9zY3JvbGxpbmdUcmVlcy5jb250YWlucyh3ZWJQYWdlLT5pZGVudGlm
aWVyKCkpKTsKQEAgLTg0LDcgKzg0LDcgQEAgdm9pZCBFdmVudERpc3BhdGNoZXI6OmFkZFNjcm9s
bGluZ1RyZWVGb3JQYWdlKFdlYlBhZ2UqIHdlYlBhZ2UpCiAKIHZvaWQgRXZlbnREaXNwYXRjaGVy
OjpyZW1vdmVTY3JvbGxpbmdUcmVlRm9yUGFnZShXZWJQYWdlKiB3ZWJQYWdlKQogewotICAgIExv
Y2tIb2xkZXIgbG9ja2VyKG1fc2Nyb2xsaW5nVHJlZXNNdXRleCk7CisgICAgTG9ja2VyIGxvY2tl
ciB7IG1fc2Nyb2xsaW5nVHJlZXNMb2NrIH07CiAgICAgQVNTRVJUKG1fc2Nyb2xsaW5nVHJlZXMu
Y29udGFpbnMod2ViUGFnZS0+aWRlbnRpZmllcigpKSk7CiAKICAgICBtX3Njcm9sbGluZ1RyZWVz
LnJlbW92ZSh3ZWJQYWdlLT5pZGVudGlmaWVyKCkpOwpAQCAtMTI0LDcgKzEyNCw3IEBAIHZvaWQg
RXZlbnREaXNwYXRjaGVyOjp3aGVlbEV2ZW50KFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3Qg
V2ViV2hlZWxFdmVudCYgd2hlCiAgICAgYXV0byBwcm9jZXNzaW5nU3RlcHMgPSBPcHRpb25TZXQ8
V2ViQ29yZTo6V2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwcz4geyBXaGVlbEV2ZW50UHJvY2Vzc2lu
Z1N0ZXBzOjpNYWluVGhyZWFkRm9yU2Nyb2xsaW5nLCBXaGVlbEV2ZW50UHJvY2Vzc2luZ1N0ZXBz
OjpNYWluVGhyZWFkRm9yQmxvY2tpbmdET01FdmVudERpc3BhdGNoIH07CiAjaWYgRU5BQkxFKFND
Uk9MTElOR19USFJFQUQpCiAgICAgZG8gewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3Nj
cm9sbGluZ1RyZWVzTXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9zY3JvbGxpbmdU
cmVlc0xvY2sgfTsKIAogICAgICAgICBhdXRvIHNjcm9sbGluZ1RyZWUgPSBtX3Njcm9sbGluZ1Ry
ZWVzLmdldChwYWdlSUQpOwogICAgICAgICBpZiAoIXNjcm9sbGluZ1RyZWUpIHsKQEAgLTE4Niw3
ICsxODYsNyBAQCB2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6Z2VzdHVyZUV2ZW50KFBhZ2VJZGVudGlm
aWVyIHBhZ2VJRCwgY29uc3QgV2ViS2l0OjpXZWJHZXN0dQogI2lmIEVOQUJMRShJT1NfVE9VQ0hf
RVZFTlRTKQogdm9pZCBFdmVudERpc3BhdGNoZXI6OnRha2VRdWV1ZWRUb3VjaEV2ZW50c0ZvclBh
Z2UoY29uc3QgV2ViUGFnZSYgd2ViUGFnZSwgVG91Y2hFdmVudFF1ZXVlJiBkZXN0aW5hdGlvblF1
ZXVlKQogewotICAgIExvY2tIb2xkZXIgbG9ja2VyKCZtX3RvdWNoRXZlbnRzTG9jayk7CisgICAg
TG9ja2VyIGxvY2tlciB7IG1fdG91Y2hFdmVudHNMb2NrIH07CiAgICAgZGVzdGluYXRpb25RdWV1
ZSA9IG1fdG91Y2hFdmVudHMudGFrZSh3ZWJQYWdlLmlkZW50aWZpZXIoKSk7CiB9CiAKQEAgLTE5
OSw3ICsxOTksNyBAQCB2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6dG91Y2hFdmVudChQYWdlSWRlbnRp
ZmllciBwYWdlSUQsIGNvbnN0IFdlYlRvdWNoRXZlbnQmIHRvdQogewogICAgIGJvb2wgdXBkYXRl
TGlzdFdhc0VtcHR5OwogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIoJm1fdG91Y2hF
dmVudHNMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fdG91Y2hFdmVudHNMb2NrIH07
CiAgICAgICAgIHVwZGF0ZUxpc3RXYXNFbXB0eSA9IG1fdG91Y2hFdmVudHMuaXNFbXB0eSgpOwog
ICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fdG91Y2hFdmVudHMuYWRkKHBhZ2VJRCwgVG91Y2hF
dmVudFF1ZXVlKCkpOwogICAgICAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpCkBAIC0yMjks
NyArMjI5LDcgQEAgdm9pZCBFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoVG91Y2hFdmVudHMoKQog
CiAgICAgSGFzaE1hcDxQYWdlSWRlbnRpZmllciwgVG91Y2hFdmVudFF1ZXVlPiBsb2NhbENvcHk7
CiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcigmbV90b3VjaEV2ZW50c0xvY2spOwor
ICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV90b3VjaEV2ZW50c0xvY2sgfTsKICAgICAgICAgbG9j
YWxDb3B5LnN3YXAobV90b3VjaEV2ZW50cyk7CiAgICAgfQogCkBAIC0yODIsNyArMjgyLDcgQEAg
dm9pZCBFdmVudERpc3BhdGNoZXI6OnNlbmREaWRSZWNlaXZlRXZlbnQoUGFnZUlkZW50aWZpZXIg
cGFnZUlELCBXZWJFdmVudDo6VHlwZQogdm9pZCBFdmVudERpc3BhdGNoZXI6Om5vdGlmeVNjcm9s
bGluZ1RyZWVzRGlzcGxheVdhc1JlZnJlc2hlZChQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQp
CiB7CiAjaWYgRU5BQkxFKFNDUk9MTElOR19USFJFQUQpCi0gICAgTG9ja0hvbGRlciBsb2NrZXIo
bV9zY3JvbGxpbmdUcmVlc011dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9zY3JvbGxpbmdU
cmVlc0xvY2sgfTsKICAgICBmb3IgKGF1dG8ga2V5VmFsdWVQYWlyIDogbV9zY3JvbGxpbmdUcmVl
cykKICAgICAgICAga2V5VmFsdWVQYWlyLnZhbHVlLT5kaXNwbGF5RGlkUmVmcmVzaChkaXNwbGF5
SUQpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9FdmVudERpc3BhdGNoZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0V2
ZW50RGlzcGF0Y2hlci5oCmluZGV4IGIyY2NiODQ0YWFjNTU3YzMxYmY2MTMxMDU4YjYxZjJlZTE4
YTBjYzUuLmZjMjZjNDRlNzhhYjRjODgyMDNmMjU2Yjc1Yjc3ZTk1ZWM0NDE1NTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5oCkBA
IC0zMiw4ICszMiw4IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVdoZWVsRXZlbnQuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1doZWVsRXZlbnREZWx0YUZpbHRlci5oPgogI2luY2x1ZGUgPG1l
bW9yeT4KKyNpbmNsdWRlIDx3dGYvQ2hlY2tlZExvY2suaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgotI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmdQcmltaXRp
dmVzLmg+CkBAIC0xMTgsMTMgKzExOCwxMyBAQCBwcml2YXRlOgogICAgIFJlZjxXb3JrUXVldWU+
IG1fcXVldWU7CiAKICNpZiBFTkFCTEUoU0NST0xMSU5HX1RIUkVBRCkKLSAgICBMb2NrIG1fc2Ny
b2xsaW5nVHJlZXNNdXRleDsKLSAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBS
ZWZQdHI8V2ViQ29yZTo6VGhyZWFkZWRTY3JvbGxpbmdUcmVlPj4gbV9zY3JvbGxpbmdUcmVlczsK
KyAgICBDaGVja2VkTG9jayBtX3Njcm9sbGluZ1RyZWVzTG9jazsKKyAgICBIYXNoTWFwPFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyLCBSZWZQdHI8V2ViQ29yZTo6VGhyZWFkZWRTY3JvbGxpbmdUcmVl
Pj4gbV9zY3JvbGxpbmdUcmVlcyBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fc2Nyb2xsaW5nVHJlZXNM
b2NrKTsKICNlbmRpZgogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpXaGVlbEV2ZW50RGVs
dGFGaWx0ZXI+IG1fcmVjZW50V2hlZWxFdmVudERlbHRhRmlsdGVyOwogI2lmIEVOQUJMRShJT1Nf
VE9VQ0hfRVZFTlRTKQotICAgIExvY2sgbV90b3VjaEV2ZW50c0xvY2s7Ci0gICAgSGFzaE1hcDxX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgVG91Y2hFdmVudFF1ZXVlPiBtX3RvdWNoRXZlbnRzOwor
ICAgIENoZWNrZWRMb2NrIG1fdG91Y2hFdmVudHNMb2NrOworICAgIEhhc2hNYXA8V2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIsIFRvdWNoRXZlbnRRdWV1ZT4gbV90b3VjaEV2ZW50cyBXVEZfR1VBUkRF
RF9CWV9MT0NLKG1fdG91Y2hFdmVudHNMb2NrKTsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld1VwZGF0ZURpc3BhdGNoZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld1VwZGF0ZURpc3BhdGNoZXIu
Y3BwCmluZGV4IGU5YTEzOTQ4M2RjYzQ1NGE2MmQ4ZmE5MzUxNzBkZGE3ODE4NWFlMGUuLjQ0Njdl
NDg4OGM1NjgzZWZjMjFjNTk2ZTQ0YmE4NDhmNjlkNzU1MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdVcGRhdGVEaXNwYXRjaGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3VXBkYXRlRGlzcGF0Y2hlci5jcHAK
QEAgLTYwLDcgKzYwLDcgQEAgdm9pZCBWaWV3VXBkYXRlRGlzcGF0Y2hlcjo6dmlzaWJsZUNvbnRl
bnRSZWN0VXBkYXRlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2UKIHsKICAgICBib29sIHVw
ZGF0ZUxpc3RXYXNFbXB0eTsKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKCZtX2Rh
dGFNdXRleCk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2xhdGVzdFVwZGF0ZUxvY2sgfTsK
ICAgICAgICAgdXBkYXRlTGlzdFdhc0VtcHR5ID0gbV9sYXRlc3RVcGRhdGUuaXNFbXB0eSgpOwog
ICAgICAgICBhdXRvIGl0ZXJhdG9yID0gbV9sYXRlc3RVcGRhdGUuZmluZChwYWdlSUQpOwogICAg
ICAgICBpZiAoaXRlcmF0b3IgPT0gbV9sYXRlc3RVcGRhdGUuZW5kKCkpCkBAIC03OSw3ICs3OSw3
IEBAIHZvaWQgVmlld1VwZGF0ZURpc3BhdGNoZXI6OmRpc3BhdGNoVmlzaWJsZUNvbnRlbnRSZWN0
VXBkYXRlKCkKIHsKICAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBVbmlxdWVS
ZWY8VXBkYXRlRGF0YT4+IHVwZGF0ZTsKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2Vy
KCZtX2RhdGFNdXRleCk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2xhdGVzdFVwZGF0ZUxv
Y2sgfTsKICAgICAgICAgdXBkYXRlID0gc3RkOjpleGNoYW5nZShtX2xhdGVzdFVwZGF0ZSwgeyB9
KTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1ZpZXdVcGRhdGVEaXNwYXRjaGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9WaWV3VXBkYXRlRGlzcGF0Y2hlci5oCmluZGV4IDA1NmU1Mzc4NDNiYzc1NTkzNjZhZGIzZmIx
YTAyNTU3MDAzYmZkMTMuLjE4YjAzMWQ2MjJiMDc5YzFmZGM3NTE0ODllOTc4YzFiNGFjM2RkZWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdVcGRhdGVE
aXNwYXRjaGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld1Vw
ZGF0ZURpc3BhdGNoZXIuaApAQCAtMzEsOCArMzEsOCBAQAogCiAjaW5jbHVkZSAiVmlzaWJsZUNv
bnRlbnRSZWN0VXBkYXRlSW5mby5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIu
aD4KKyNpbmNsdWRlIDx3dGYvQ2hlY2tlZExvY2suaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgotI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKQEAgLTY0LDggKzY0LDggQEAgcHJpdmF0ZToKICAgICB9OwogCiAgICAgUmVm
PFdvcmtRdWV1ZT4gbV9xdWV1ZTsKLSAgICBMb2NrIG1fZGF0YU11dGV4OwotICAgIEhhc2hNYXA8
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFVuaXF1ZVJlZjxVcGRhdGVEYXRhPj4gbV9sYXRlc3RV
cGRhdGU7CisgICAgQ2hlY2tlZExvY2sgbV9sYXRlc3RVcGRhdGVMb2NrOworICAgIEhhc2hNYXA8
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFVuaXF1ZVJlZjxVcGRhdGVEYXRhPj4gbV9sYXRlc3RV
cGRhdGUgV1RGX0dVQVJERURfQllfTE9DSyhtX2xhdGVzdFVwZGF0ZUxvY2spOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdC9YUENFbmRwb2ludC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
L1hQQ0VuZHBvaW50Lm1tCmluZGV4IGRmYmM0MTYyOGYwMWNkYTc5MjRhYWE3ZjYzODcwZmQ5Njgz
ZGI3M2MuLmFmOWEyM2U1YmY0NjFkYjIwZWQ3ZWJjM2MzZjFmN2JkM2U3MzhiZDUgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1hQQ0VuZHBvaW50Lm1tCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1hQQ0VuZHBvaW50Lm1tCkBAIC0zNywy
MSArMzcsMjEgQEAgc3RhdGljIGJvb2wgY2xpZW50UmVjZWl2ZWRNZXNzYWdlRnJvbUVuZHBvaW50
ID0gZmFsc2U7CiBzdGF0aWMgY29uc3RleHByIGF1dG8gdGVzdE1lc3NhZ2VGcm9tRW5kcG9pbnQg
PSAidGVzdC1tZXNzYWdlLWZyb20tZW5kcG9pbnQiOwogc3RhdGljIGNvbnN0ZXhwciBhdXRvIHRl
c3RNZXNzYWdlRnJvbUNsaWVudCA9ICJ0ZXN0LW1lc3NhZ2UtZnJvbS1jbGllbnQiOwogCi1jbGFz
cyBYUENFbmRwb2ludCA6IHB1YmxpYyBXZWJLaXQ6OlhQQ0VuZHBvaW50IHsKK2NsYXNzIFhQQ0Vu
ZHBvaW50IGZpbmFsIDogcHVibGljIFdlYktpdDo6WFBDRW5kcG9pbnQgewogcHJpdmF0ZToKLSAg
ICBjb25zdCBjaGFyKiB4cGNFbmRwb2ludE1lc3NhZ2VOYW1lS2V5KCkgY29uc3Qgb3ZlcnJpZGUK
KyAgICBjb25zdCBjaGFyKiB4cGNFbmRwb2ludE1lc3NhZ2VOYW1lS2V5KCkgY29uc3QgZmluYWwK
ICAgICB7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICBjb25zdCBjaGFyKiB4
cGNFbmRwb2ludE1lc3NhZ2VOYW1lKCkgY29uc3Qgb3ZlcnJpZGUKKyAgICBjb25zdCBjaGFyKiB4
cGNFbmRwb2ludE1lc3NhZ2VOYW1lKCkgY29uc3QgZmluYWwKICAgICB7CiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIH0KLSAgICBjb25zdCBjaGFyKiB4cGNFbmRwb2ludE5hbWVLZXkoKSBj
b25zdCBvdmVycmlkZQorICAgIGNvbnN0IGNoYXIqIHhwY0VuZHBvaW50TmFtZUtleSgpIGNvbnN0
IGZpbmFsCiAgICAgewogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgdm9pZCBo
YW5kbGVFdmVudCh4cGNfY29ubmVjdGlvbl90IGNvbm5lY3Rpb24sIHhwY19vYmplY3RfdCBldmVu
dCkgb3ZlcnJpZGUKKyAgICB2b2lkIGhhbmRsZUV2ZW50KHhwY19jb25uZWN0aW9uX3QgY29ubmVj
dGlvbiwgeHBjX29iamVjdF90IGV2ZW50KSBmaW5hbAogICAgIHsKICAgICAgICAgU3RyaW5nIG1l
c3NhZ2VOYW1lID0geHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhldmVudCwgWFBDRW5kcG9pbnQ6
OnhwY01lc3NhZ2VOYW1lS2V5KTsKICAgICAgICAgaWYgKG1lc3NhZ2VOYW1lID09IHRlc3RNZXNz
YWdlRnJvbUNsaWVudCkgewpAQCAtNjQsMTUgKzY0LDE1IEBAIHByaXZhdGU6CiAgICAgfQogfTsK
IAotY2xhc3MgWFBDRW5kcG9pbnRDbGllbnQgOiBwdWJsaWMgV2ViS2l0OjpYUENFbmRwb2ludENs
aWVudCB7CitjbGFzcyBYUENFbmRwb2ludENsaWVudCBmaW5hbCA6IHB1YmxpYyBXZWJLaXQ6OlhQ
Q0VuZHBvaW50Q2xpZW50IHsKIHByaXZhdGU6Ci0gICAgdm9pZCBoYW5kbGVFdmVudCh4cGNfb2Jq
ZWN0X3QgZXZlbnQpIG92ZXJyaWRlCisgICAgdm9pZCBoYW5kbGVFdmVudCh4cGNfb2JqZWN0X3Qg
ZXZlbnQpIGZpbmFsCiAgICAgewogICAgICAgICBTdHJpbmcgbWVzc2FnZU5hbWUgPSB4cGNfZGlj
dGlvbmFyeV9nZXRfc3RyaW5nKGV2ZW50LCBYUENFbmRwb2ludDo6eHBjTWVzc2FnZU5hbWVLZXkp
OwogICAgICAgICBpZiAobWVzc2FnZU5hbWUgPT0gdGVzdE1lc3NhZ2VGcm9tRW5kcG9pbnQpCiAg
ICAgICAgICAgICBjbGllbnRSZWNlaXZlZE1lc3NhZ2VGcm9tRW5kcG9pbnQgPSB0cnVlOwogICAg
IH0KLSAgICB2b2lkIGRpZENvbm5lY3QoKSBvdmVycmlkZQorICAgIHZvaWQgZGlkQ29ubmVjdCgp
IGZpbmFsCiAgICAgewogICAgICAgICBhdXRvIG1lc3NhZ2UgPSBhZG9wdE9TT2JqZWN0KHhwY19k
aWN0aW9uYXJ5X2NyZWF0ZShudWxscHRyLCBudWxscHRyLCAwKSk7CiAgICAgICAgIHhwY19kaWN0
aW9uYXJ5X3NldF9zdHJpbmcobWVzc2FnZS5nZXQoKSwgWFBDRW5kcG9pbnQ6OnhwY01lc3NhZ2VO
YW1lS2V5LCB0ZXN0TWVzc2FnZUZyb21DbGllbnQpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429171</attachid>
            <date>2021-05-20 07:37:17 -0700</date>
            <delta_ts>2021-05-20 09:11:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226001-20210520073716.patch</filename>
            <type>text/plain</type>
            <size>50229</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3NzYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDM0YjNkNGU5ODcxOWMxZjhh
MTNlMzM2N2U3OWU5YTQ5YzMzODgzOTQuLmYwYTM4YzE3MjE5NDRlZDRjYjMyNDc2YzRlMTJkYzdj
MTNiMTE3N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTIgQEAKKzIwMjEtMDUtMTkgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgQ2hlY2tlZExvY2sgbW9yZSBp
biBXZWJLaXQyIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyNjAwMQorCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisK
KyAgICAgICAgVXNlIENoZWNrZWRMb2NrIG1vcmUgaW4gV2ViS2l0MiBjb2RlIHRvIGJlbmVmaXQg
ZnJvbSBDbGFuZyBUaHJlYWQgU2FmZXR5IEFuYWx5c2lzLgorCisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0NvY29hL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNv
Y29hLm1tOgorICAgICAgICAoTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpuZXR3b3JrUHJv
Y2Vzc0NyZWF0ZWQpOgorICAgICAgICAoV2ViS2l0OjpMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFn
ZXI6OnJlZ2lzdGVyU2NoZW1lKToKKyAgICAgICAgKFdlYktpdDo6TGVnYWN5Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyOjp1bnJlZ2lzdGVyU2NoZW1lKToKKyAgICAgICAgKFdlYktpdDo6TGVnYWN5Q3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyOjpzdXBwb3J0c1NjaGVtZSk6CisgICAgICAgIChXZWJLaXQ6Okxl
Z2FjeUN1c3RvbVByb3RvY29sTWFuYWdlcjo6cHJvdG9jb2xGb3JJRCk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkxlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlcjo6YWRkQ3Vz
dG9tUHJvdG9jb2wpOgorICAgICAgICAoV2ViS2l0OjpMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFn
ZXI6OnJlbW92ZUN1c3RvbVByb3RvY29sKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DdXN0
b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmg6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzczo6YWRkU2Vzc2lvblN0b3JhZ2VRdW90YU1hbmFnZXIpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzczo6cmVtb3ZlU2Vzc2lvblN0b3JhZ2VRdW90YU1hbmFnZXIpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0U2Vzc2lvblN0b3JhZ2VRdW90YU1hbmFn
ZXJJREJSb290UGF0aCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZXNldFF1
b3RhKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnN0b3JhZ2VRdW90YU1hbmFn
ZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlclNldC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyU2V0OjpzdXNwZW5kKToKKyAgICAgICAgKFdlYktp
dDo6U3RvcmFnZU1hbmFnZXJTZXQ6OnJlc3VtZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
V2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlclNldC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L2NvY29hL0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlci5oOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL2NvY29hL0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlci5tbToKKyAgICAg
ICAgKFdlYktpdDo6TGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyOjpMYXVuY2hTZXJ2aWNl
c0RhdGFiYXNlT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViS2l0OjpMYXVuY2hTZXJ2aWNlc0RhdGFi
YXNlT2JzZXJ2ZXI6OnN0YXJ0T2JzZXJ2aW5nKToKKyAgICAgICAgKFdlYktpdDo6TGF1bmNoU2Vy
dmljZXNEYXRhYmFzZU9ic2VydmVyOjpoYW5kbGVFdmVudCk6CisgICAgICAgICogU2hhcmVkL0Js
b2NraW5nUmVzcG9uc2VNYXAuaDoKKyAgICAgICAgKEJsb2NraW5nUmVzcG9uc2VNYXA6OndhaXRG
b3JSZXNwb25zZSk6CisgICAgICAgIChCbG9ja2luZ1Jlc3BvbnNlTWFwOjpkaWRSZWNlaXZlUmVz
cG9uc2UpOgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9YUENFbmRwb2ludENsaWVudC5oOgorICAg
ICAgICAqIFNoYXJlZC9Db2NvYS9YUENFbmRwb2ludENsaWVudC5tbToKKyAgICAgICAgKFdlYktp
dDo6WFBDRW5kcG9pbnRDbGllbnQ6OnNldEVuZHBvaW50KToKKyAgICAgICAgKFdlYktpdDo6WFBD
RW5kcG9pbnRDbGllbnQ6OmNvbm5lY3Rpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxT
Y2hlbWVUYXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lVGFzazo6cmVxdWVz
dCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OndpbGxQZXJmb3Jt
UmVkaXJlY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpkaWRQZXJm
b3JtUmVkaXJlY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpwYWdl
RGVzdHJveWVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lVGFzazo6c3RvcCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6Om5zUmVxdWVzdCBjb25zdCk6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
bWFjL0Rpc3BsYXlMaW5rLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RGlzcGxheUxpbms6OmFkZE9i
c2VydmVyKToKKyAgICAgICAgKFdlYktpdDo6RGlzcGxheUxpbms6OnJlbW92ZU9ic2VydmVyKToK
KyAgICAgICAgKFdlYktpdDo6RGlzcGxheUxpbms6OnJlbW92ZU9ic2VydmVycyk6CisgICAgICAg
IChXZWJLaXQ6OkRpc3BsYXlMaW5rOjppbmNyZW1lbnRGdWxsU3BlZWRSZXF1ZXN0Q2xpZW50Q291
bnQpOgorICAgICAgICAoV2ViS2l0OjpEaXNwbGF5TGluazo6ZGVjcmVtZW50RnVsbFNwZWVkUmVx
dWVzdENsaWVudENvdW50KToKKyAgICAgICAgKFdlYktpdDo6RGlzcGxheUxpbms6OnNldFByZWZl
cnJlZEZyYW1lc1BlclNlY29uZCk6CisgICAgICAgIChXZWJLaXQ6OkRpc3BsYXlMaW5rOjpub3Rp
ZnlPYnNlcnZlcnNEaXNwbGF5V2FzUmVmcmVzaGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFj
L0Rpc3BsYXlMaW5rLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJU
Q0NvZGVjcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjczo6ZW5zdXJlR1BV
UHJvY2Vzc0Nvbm5lY3Rpb25Pbk1haW5UaHJlYWQpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJS
VENDb2RlY3M6OmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uQW5kRGlzcGF0Y2hUb1RocmVhZCk6
CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjczo6Y3JlYXRlRGVjb2Rlcik6CisgICAg
ICAgIChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVjczo6ZGVjb2RlRnJhbWUpOgorICAgICAgICAoV2Vi
S2l0OjpMaWJXZWJSVENDb2RlY3M6OmNyZWF0ZUVuY29kZXIpOgorICAgICAgICAoV2ViS2l0OjpM
aWJXZWJSVENDb2RlY3M6OmVuY29kZUZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRD
Q29kZWNzOjpzZXRFbmNvZGVSYXRlcyk6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ0NvZGVj
czo6Z3B1UHJvY2Vzc0Nvbm5lY3Rpb25EaWRDbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OkxpYldl
YlJUQ0NvZGVjczo6c2V0TG9nZ2luZ0xldmVsKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93
ZWJydGMvTGliV2ViUlRDQ29kZWNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdp
blByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6Z2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24pOgor
ICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXI6OnJlbW92ZVBs
dWdpblByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb25NYW5hZ2VyOjpwbHVnaW5Qcm9jZXNzQ3Jhc2hlZCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpFdmVudERpc3BhdGNoZXI6OmFkZFNjcm9sbGluZ1RyZWVGb3JQYWdlKToKKyAgICAgICAgKFdl
YktpdDo6RXZlbnREaXNwYXRjaGVyOjpyZW1vdmVTY3JvbGxpbmdUcmVlRm9yUGFnZSk6CisgICAg
ICAgIChXZWJLaXQ6OkV2ZW50RGlzcGF0Y2hlcjo6d2hlZWxFdmVudCk6CisgICAgICAgIChXZWJL
aXQ6OkV2ZW50RGlzcGF0Y2hlcjo6dGFrZVF1ZXVlZFRvdWNoRXZlbnRzRm9yUGFnZSk6CisgICAg
ICAgIChXZWJLaXQ6OkV2ZW50RGlzcGF0Y2hlcjo6dG91Y2hFdmVudCk6CisgICAgICAgIChXZWJL
aXQ6OkV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hUb3VjaEV2ZW50cyk6CisgICAgICAgIChXZWJL
aXQ6OkV2ZW50RGlzcGF0Y2hlcjo6bm90aWZ5U2Nyb2xsaW5nVHJlZXNEaXNwbGF5V2FzUmVmcmVz
aGVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdVcGRhdGVEaXNwYXRjaGVyLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6Vmlld1VwZGF0ZURpc3BhdGNoZXI6OnZpc2libGVDb250ZW50UmVjdFVw
ZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdVcGRhdGVEaXNwYXRjaGVyOjpkaXNwYXRjaFZp
c2libGVDb250ZW50UmVjdFVwZGF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1Zp
ZXdVcGRhdGVEaXNwYXRjaGVyLmg6CisKIDIwMjEtMDUtMTkgIFNhbSBXZWluaWcgIDx3ZWluaWdA
YXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBJbWFnZUJ1ZmZlcjo6dG9CR1JBKCkgYW5kIHJl
cGxhY2UgaXRzIHVzZXMgd2l0aCB0aGUgbW9yZSBnZW5lcmFsIEltYWdlQnVmZmVyOjpnZXRQaXhl
bEJ1ZmZlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3Rv
bVByb3RvY29scy9Db2NvYS9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDb2NvYS5tbSBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0NvY29hL0xlZ2FjeUN1
c3RvbVByb3RvY29sTWFuYWdlckNvY29hLm1tCmluZGV4IDFhYTUzY2MyZmI3N2JhZjllMzI2NTA3
MjEwODA5ZmQ3NmNmYmJmMjcuLmI2NTQ5OGMyNWM0NmYxNzUzODA4ODJhYWIxNGE1YThiYjBkZDdl
ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9j
b2xzL0NvY29hL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0NvY29hL0xlZ2FjeUN1c3Rv
bVByb3RvY29sTWFuYWdlckNvY29hLm1tCkBAIC00OSw3ICs0OSw3IEBAIHZvaWQgTGVnYWN5Q3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyOjpuZXR3b3JrUHJvY2Vzc0NyZWF0ZWQoTmV0d29ya1Byb2Nlc3Mm
IG5ldHdvcmtQCiAgICAgYXV0byBoYXNSZWdpc3RlcmVkU2NoZW1lcyA9IFtdIChhdXRvKiBsZWdh
Y3lDdXN0b21Qcm90b2NvbE1hbmFnZXIpIHsKICAgICAgICAgaWYgKCFsZWdhY3lDdXN0b21Qcm90
b2NvbE1hbmFnZXIpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIExvY2tIb2xk
ZXIgbG9ja2VyKGxlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlci0+bV9yZWdpc3RlcmVkU2NoZW1l
c011dGV4KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IGxlZ2FjeUN1c3RvbVByb3RvY29sTWFu
YWdlci0+bV9yZWdpc3RlcmVkU2NoZW1lc0xvY2sgfTsKICAgICAgICAgcmV0dXJuICFsZWdhY3lD
dXN0b21Qcm90b2NvbE1hbmFnZXItPm1fcmVnaXN0ZXJlZFNjaGVtZXMuaXNFbXB0eSgpOwogICAg
IH07CiAKQEAgLTEzNSwxNCArMTM1LDE0IEBAIHZvaWQgTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5h
Z2VyOjpyZWdpc3RlclByb3RvY29sQ2xhc3MoTlNVUkxTZXNzaW9uQ29uZmlndXJhdGlvCiB2b2lk
IExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlcjo6cmVnaXN0ZXJTY2hlbWUoY29uc3QgU3RyaW5n
JiBzY2hlbWUpCiB7CiAgICAgQVNTRVJUKCFzY2hlbWUuaXNOdWxsKCkpOwotICAgIExvY2tIb2xk
ZXIgbG9ja2VyKG1fcmVnaXN0ZXJlZFNjaGVtZXNNdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7
IG1fcmVnaXN0ZXJlZFNjaGVtZXNMb2NrIH07CiAgICAgbV9yZWdpc3RlcmVkU2NoZW1lcy5hZGQo
c2NoZW1lKTsKIH0KIAogdm9pZCBMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXI6OnVucmVnaXN0
ZXJTY2hlbWUoY29uc3QgU3RyaW5nJiBzY2hlbWUpCiB7CiAgICAgQVNTRVJUKCFzY2hlbWUuaXNO
dWxsKCkpOwotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fcmVnaXN0ZXJlZFNjaGVtZXNNdXRleCk7
CisgICAgTG9ja2VyIGxvY2tlciB7IG1fcmVnaXN0ZXJlZFNjaGVtZXNMb2NrIH07CiAgICAgbV9y
ZWdpc3RlcmVkU2NoZW1lcy5yZW1vdmUoc2NoZW1lKTsKIH0KIApAQCAtMTUxLDcgKzE1MSw3IEBA
IGJvb2wgTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpzdXBwb3J0c1NjaGVtZShjb25zdCBT
dHJpbmcmIHNjaGVtZSkKICAgICBpZiAoc2NoZW1lLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3JlZ2lzdGVyZWRTY2hlbWVzTXV0ZXgp
OworICAgIExvY2tlciBsb2NrZXIgeyBtX3JlZ2lzdGVyZWRTY2hlbWVzTG9jayB9OwogICAgIHJl
dHVybiBtX3JlZ2lzdGVyZWRTY2hlbWVzLmNvbnRhaW5zKHNjaGVtZSk7CiB9CiAKQEAgLTIzMiw3
ICsyMzIsNyBAQCB2b2lkIExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlcjo6d2FzUmVkaXJlY3Rl
ZFRvUmVxdWVzdChMZWdhY3lDdXN0b21Qcm90b2NvbElECiAKIFJldGFpblB0cjxXS0N1c3RvbVBy
b3RvY29sPiBMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXI6OnByb3RvY29sRm9ySUQoTGVnYWN5
Q3VzdG9tUHJvdG9jb2xJRCBjdXN0b21Qcm90b2NvbElEKQogewotICAgIExvY2tIb2xkZXIgbG9j
a2VyKG1fY3VzdG9tUHJvdG9jb2xNYXBNdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fY3Vz
dG9tUHJvdG9jb2xNYXBMb2NrIH07CiAKICAgICBDdXN0b21Qcm90b2NvbE1hcDo6Y29uc3RfaXRl
cmF0b3IgaXQgPSBtX2N1c3RvbVByb3RvY29sTWFwLmZpbmQoY3VzdG9tUHJvdG9jb2xJRCk7CiAg
ICAgaWYgKGl0ID09IG1fY3VzdG9tUHJvdG9jb2xNYXAuZW5kKCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9MZWdhY3lDdXN0b21Qcm90
b2NvbE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90
b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmNwcAppbmRleCBmZGE2NGIzMjIxOGVi
MWQyZDg1OTdkZDE1Yjc5YjlkYzI1MWRhODRkLi5mNGM0Nzg5Nzk5Y2M3NzVhYjRkM2JlZTVlNWRi
MzEzZDZjMDY4NzRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1
c3RvbVByb3RvY29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3RvbVByb3Rv
Y29sTWFuYWdlci5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgdm9pZCBMZWdhY3lDdXN0b21Qcm90b2Nv
bE1hbmFnZXI6OmluaXRpYWxpemUoY29uc3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXQK
IAogTGVnYWN5Q3VzdG9tUHJvdG9jb2xJRCBMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXI6OmFk
ZEN1c3RvbVByb3RvY29sKEN1c3RvbVByb3RvY29sJiYgY3VzdG9tUHJvdG9jb2wpCiB7Ci0gICAg
TG9ja0hvbGRlciBsb2NrZXIobV9jdXN0b21Qcm90b2NvbE1hcE11dGV4KTsKKyAgICBMb2NrZXIg
bG9ja2VyIHsgbV9jdXN0b21Qcm90b2NvbE1hcExvY2sgfTsKICAgICBhdXRvIGN1c3RvbVByb3Rv
Y29sSUQgPSBMZWdhY3lDdXN0b21Qcm90b2NvbElEOjpnZW5lcmF0ZSgpOwogICAgIG1fY3VzdG9t
UHJvdG9jb2xNYXAuYWRkKGN1c3RvbVByb3RvY29sSUQsIFdURk1vdmUoY3VzdG9tUHJvdG9jb2wp
KTsKICAgICByZXR1cm4gY3VzdG9tUHJvdG9jb2xJRDsKQEAgLTY1LDcgKzY1LDcgQEAgTGVnYWN5
Q3VzdG9tUHJvdG9jb2xJRCBMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXI6OmFkZEN1c3RvbVBy
b3RvY29sKEN1c3RvbVByb3QKIAogdm9pZCBMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXI6OnJl
bW92ZUN1c3RvbVByb3RvY29sKExlZ2FjeUN1c3RvbVByb3RvY29sSUQgY3VzdG9tUHJvdG9jb2xJ
RCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2N1c3RvbVByb3RvY29sTWFwTXV0ZXgpOwor
ICAgIExvY2tlciBsb2NrZXIgeyBtX2N1c3RvbVByb3RvY29sTWFwTG9jayB9OwogICAgIG1fY3Vz
dG9tUHJvdG9jb2xNYXAucmVtb3ZlKGN1c3RvbVByb3RvY29sSUQpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9MZWdhY3lDdXN0
b21Qcm90b2NvbE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9t
UHJvdG9jb2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlci5oCmluZGV4IDBiY2Q1NjczYzkz
NDZhZGExMWQ2NTZjM2FkZDUxYmU0ZWRiYzI3MzAuLjc4NTJmOTdhNWQ5NDFhMDc2NjE5ZTRmYjc2
NTA5NTVkZWQ2NGU5OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3RvbVByb3Rv
Y29sTWFuYWdlci5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiTGVnYWN5Q3VzdG9tUHJv
dG9jb2xJRC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIk5ldHdv
cmtQcm9jZXNzU3VwcGxlbWVudC5oIgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkTG9jay5oPgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CkBAIC05NSwxMiArOTYsMTIgQEAgcHJpdmF0ZToKICAg
ICBOZXR3b3JrUHJvY2VzcyYgbV9uZXR3b3JrUHJvY2VzczsKIAogICAgIHR5cGVkZWYgSGFzaE1h
cDxMZWdhY3lDdXN0b21Qcm90b2NvbElELCBDdXN0b21Qcm90b2NvbD4gQ3VzdG9tUHJvdG9jb2xN
YXA7Ci0gICAgQ3VzdG9tUHJvdG9jb2xNYXAgbV9jdXN0b21Qcm90b2NvbE1hcDsKLSAgICBMb2Nr
IG1fY3VzdG9tUHJvdG9jb2xNYXBNdXRleDsKKyAgICBDdXN0b21Qcm90b2NvbE1hcCBtX2N1c3Rv
bVByb3RvY29sTWFwIFdURl9HVUFSREVEX0JZX0xPQ0sobV9jdXN0b21Qcm90b2NvbE1hcExvY2sp
OworICAgIENoZWNrZWRMb2NrIG1fY3VzdG9tUHJvdG9jb2xNYXBMb2NrOwogCiAjaWYgUExBVEZP
Uk0oQ09DT0EpCi0gICAgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4g
bV9yZWdpc3RlcmVkU2NoZW1lczsKLSAgICBMb2NrIG1fcmVnaXN0ZXJlZFNjaGVtZXNNdXRleDsK
KyAgICBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiBtX3JlZ2lzdGVy
ZWRTY2hlbWVzIFdURl9HVUFSREVEX0JZX0xPQ0sobV9yZWdpc3RlcmVkU2NoZW1lc0xvY2spOwor
ICAgIENoZWNrZWRMb2NrIG1fcmVnaXN0ZXJlZFNjaGVtZXNMb2NrOwogCiAgICAgLy8gV0tDdXN0
b21Qcm90b2NvbCBvYmplY3RzIGNhbiBiZSByZW1vdmVkIGZyb20gdGhlIG1fY3VzdG9tUHJvdG9j
b2xNYXAgZnJvbSBtdWx0aXBsZSB0aHJlYWRzLgogICAgIC8vIFdlIHJldHVybiBhIFJldGFpblB0
ciBoZXJlIGJlY2F1c2UgaXQgaXMgdW5zYWZlIHRvIHJldHVybiBhIHJhdyBwb2ludGVyIHNpbmNl
IHRoZSBvYmplY3QgbWlnaHQgaW1tZWRpYXRlbHkgYmUgZGVzdHJveWVkIGZyb20gYSBkaWZmZXJl
bnQgdGhyZWFkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcAppbmRleCBiODQ4MTQ1ZmU2YzUxZGE4NWFlYzI0MTRjNmU1MjdiM2MxZTc1OGY1Li5j
MmM1M2FiZjVlZWIwYjc0YTFlMTUzNjU3OGMwNzdjMmIzZjE1OTljIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtNDI4LDcgKzQyOCw3
IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmFkZFdlYnNpdGVEYXRhU3RvcmUoV2Vic2l0ZURhdGFT
dG9yZVBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzCiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmFkZFNl
c3Npb25TdG9yYWdlUXVvdGFNYW5hZ2VyKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0
X3QgZGVmYXVsdFF1b3RhLCB1aW50NjRfdCBkZWZhdWx0VGhpcmRQYXJ0eVF1b3RhLCBjb25zdCBT
dHJpbmcmIGNhY2hlUm9vdFBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgY2FjaGVSb290
UGF0aEhhbmRsZSkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3Nlc3Npb25TdG9yYWdlUXVv
dGFNYW5hZ2Vyc0xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX3Nlc3Npb25TdG9yYWdlUXVv
dGFNYW5hZ2Vyc0xvY2sgfTsKICAgICBhdXRvIGlzTmV3RW50cnkgPSBtX3Nlc3Npb25TdG9yYWdl
UXVvdGFNYW5hZ2Vycy5lbnN1cmUoc2Vzc2lvbklELCBbZGVmYXVsdFF1b3RhLCBkZWZhdWx0VGhp
cmRQYXJ0eVF1b3RhLCAmY2FjaGVSb290UGF0aF0gewogICAgICAgICByZXR1cm4gbWFrZVVuaXF1
ZTxTZXNzaW9uU3RvcmFnZVF1b3RhTWFuYWdlcj4oY2FjaGVSb290UGF0aCwgZGVmYXVsdFF1b3Rh
LCBkZWZhdWx0VGhpcmRQYXJ0eVF1b3RhKTsKICAgICB9KS5pc05ld0VudHJ5OwpAQCAtNDQwLDcg
KzQ0MCw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmFkZFNlc3Npb25TdG9yYWdlUXVvdGFNYW5h
Z2VyKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWluCiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OnJlbW92ZVNlc3Npb25TdG9yYWdlUXVvdGFNYW5hZ2VyKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3Nlc3Npb25TdG9yYWdlUXVvdGFNYW5hZ2Vy
c0xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX3Nlc3Npb25TdG9yYWdlUXVvdGFNYW5hZ2Vy
c0xvY2sgfTsKICAgICBBU1NFUlQobV9zZXNzaW9uU3RvcmFnZVF1b3RhTWFuYWdlcnMuY29udGFp
bnMoc2Vzc2lvbklEKSk7CiAgICAgbV9zZXNzaW9uU3RvcmFnZVF1b3RhTWFuYWdlcnMucmVtb3Zl
KHNlc3Npb25JRCk7CiB9CkBAIC0yMzc5LDcgKzIzNzksNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNz
OjphZGRJbmRleGVkRGF0YWJhc2VTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3Ry
aW5nJgogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRTZXNzaW9uU3RvcmFnZVF1b3RhTWFuYWdl
cklEQlJvb3RQYXRoKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBpZGJS
b290UGF0aCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3Nlc3Npb25TdG9yYWdlUXVvdGFN
YW5hZ2Vyc0xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX3Nlc3Npb25TdG9yYWdlUXVvdGFN
YW5hZ2Vyc0xvY2sgfTsKICAgICBhdXRvKiBzZXNzaW9uU3RvcmFnZVF1b3RhTWFuYWdlciA9IG1f
c2Vzc2lvblN0b3JhZ2VRdW90YU1hbmFnZXJzLmdldChzZXNzaW9uSUQpOwogICAgIEFTU0VSVChz
ZXNzaW9uU3RvcmFnZVF1b3RhTWFuYWdlcik7CiAgICAgc2Vzc2lvblN0b3JhZ2VRdW90YU1hbmFn
ZXItPnNldElEQlJvb3RQYXRoKGlkYlJvb3RQYXRoKTsKQEAgLTIzOTMsNyArMjM5Myw3IEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OnN5bmNMb2NhbFN0b3JhZ2UoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kCiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlc2V0UXVvdGEo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9zZXNzaW9uU3RvcmFn
ZVF1b3RhTWFuYWdlcnNMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9zZXNzaW9uU3RvcmFn
ZVF1b3RhTWFuYWdlcnNMb2NrIH07CiAgICAgaWYgKGF1dG8qIHNlc3Npb25TdG9yYWdlUXVvdGFN
YW5hZ2VyID0gbV9zZXNzaW9uU3RvcmFnZVF1b3RhTWFuYWdlcnMuZ2V0KHNlc3Npb25JRCkpIHsK
ICAgICAgICAgZm9yIChhdXRvIHN0b3JhZ2VRdW90YU1hbmFnZXIgOiBzZXNzaW9uU3RvcmFnZVF1
b3RhTWFuYWdlci0+ZXhpc3RpbmdTdG9yYWdlUXVvdGFNYW5hZ2VycygpKQogICAgICAgICAgICAg
c3RvcmFnZVF1b3RhTWFuYWdlci0+cmVzZXRRdW90YUZvclRlc3RpbmcoKTsKQEAgLTI0OTgsNyAr
MjQ5OCw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlcXVlc3RTdG9yYWdlU3BhY2UoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBDbGllbnRPCiAKIFJlZlB0cjxTdG9yYWdlUXVvdGFN
YW5hZ2VyPiBOZXR3b3JrUHJvY2Vzczo6c3RvcmFnZVF1b3RhTWFuYWdlcihQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIGNvbnN0IENsaWVudE9yaWdpbiYgb3JpZ2luKQogewotICAgIExvY2tIb2xk
ZXIgbG9ja2VyKG1fc2Vzc2lvblN0b3JhZ2VRdW90YU1hbmFnZXJzTG9jayk7CisgICAgTG9ja2Vy
IGxvY2tlciB7IG1fc2Vzc2lvblN0b3JhZ2VRdW90YU1hbmFnZXJzTG9jayB9OwogICAgIGF1dG8q
IHNlc3Npb25TdG9yYWdlUXVvdGFNYW5hZ2VyID0gbV9zZXNzaW9uU3RvcmFnZVF1b3RhTWFuYWdl
cnMuZ2V0KHNlc3Npb25JRCk7CiAgICAgaWYgKCFzZXNzaW9uU3RvcmFnZVF1b3RhTWFuYWdlcikK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmgKaW5kZXggMmNkNWQwYTdkNzUyMzkxNDczMTg3MmM5MTM3MTM1Njg3
NTUyZmUyMy4uYjRmZTJjOGUzZjY2NDIxNmYxYTc1NmRjZTU3ZmVlZDhjZGY0MTRmOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAtNTEsNiAr
NTEsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlcklkZW50aWZpZXIuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJUeXBlcy5oPgogI2luY2x1ZGUgPG1lbW9yeT4K
KyNpbmNsdWRlIDx3dGYvQ2hlY2tlZExvY2suaD4KICNpbmNsdWRlIDx3dGYvQ3Jvc3NUaHJlYWRU
YXNrLmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQu
aD4KQEAgLTU4NCw4ICs1ODUsOCBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxSVENEYXRhQ2hhbm5l
bFJlbW90ZU1hbmFnZXJQcm94eT4gbV9ydGNEYXRhQ2hhbm5lbFByb3h5OwogI2VuZGlmCiAKLSAg
ICBMb2NrIG1fc2Vzc2lvblN0b3JhZ2VRdW90YU1hbmFnZXJzTG9jazsKLSAgICBIYXNoTWFwPFBB
TDo6U2Vzc2lvbklELCBzdGQ6OnVuaXF1ZV9wdHI8U2Vzc2lvblN0b3JhZ2VRdW90YU1hbmFnZXI+
PiBtX3Nlc3Npb25TdG9yYWdlUXVvdGFNYW5hZ2VyczsKKyAgICBDaGVja2VkTG9jayBtX3Nlc3Np
b25TdG9yYWdlUXVvdGFNYW5hZ2Vyc0xvY2s7CisgICAgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwg
c3RkOjp1bmlxdWVfcHRyPFNlc3Npb25TdG9yYWdlUXVvdGFNYW5hZ2VyPj4gbV9zZXNzaW9uU3Rv
cmFnZVF1b3RhTWFuYWdlcnMgV1RGX0dVQVJERURfQllfTE9DSyhtX3Nlc3Npb25TdG9yYWdlUXVv
dGFNYW5hZ2Vyc0xvY2spOwogICAgIGJvb2wgbV9xdW90YUxvZ2dpbmdFbmFibGVkIHsgZmFsc2Ug
fTsKIAogICAgIE9wdGlvblNldDxOZXR3b3JrQ2FjaGU6OkNhY2hlT3B0aW9uPiBtX2NhY2hlT3B0
aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFn
ZS9TdG9yYWdlTWFuYWdlclNldC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dl
YlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQuY3BwCmluZGV4IDdjNGNkOGE1YzMzZTJhZDY5ZmZm
ZGM1ZjdmZTUxYzFiZTZmMDM0ODYuLmY5ZTg0M2RlMzczMTlkZDZjNWMxMDYzYTNjZGNmNWMxZDRi
YmExOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFn
ZS9TdG9yYWdlTWFuYWdlclNldC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0LmNwcApAQCAtMTYzLDEzICsxNjMsMTMgQEAg
dm9pZCBTdG9yYWdlTWFuYWdlclNldDo6c3VzcGVuZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAog
ICAgIENvbXBsZXRpb25IYW5kbGVyQ2FsbGluZ1Njb3BlIGNvbXBsZXRpb25IYW5kbGVyQ2FsbGVy
KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICBMb2NrZXI8TG9jaz4gc3RhdGVMb2Nr
ZXIobV9zdGF0ZUxvY2spOworICAgIExvY2tlciBzdGF0ZUxvY2tlciB7IG1fc3RhdGVMb2NrIH07
CiAgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OlJ1bm5pbmcpCiAgICAgICAgIHJldHVybjsKICAg
ICBtX3N0YXRlID0gU3RhdGU6OldpbGxTdXNwZW5kOwogCiAgICAgbV9xdWV1ZS0+ZGlzcGF0Y2go
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIg
PSBjb21wbGV0aW9uSGFuZGxlckNhbGxlci5yZWxlYXNlKCldICgpIG11dGFibGUgewotICAgICAg
ICBMb2NrZXI8TG9jaz4gc3RhdGVMb2NrZXIobV9zdGF0ZUxvY2spOworICAgICAgICBMb2NrZXIg
c3RhdGVMb2NrZXIgeyBtX3N0YXRlTG9jayB9OwogICAgICAgICBBU1NFUlQobV9zdGF0ZSAhPSBT
dGF0ZTo6U3VzcGVuZGVkKTsKIAogICAgICAgICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6V2lsbFN1
c3BlbmQpIHsKQEAgLTE5MCw3ICsxOTAsNyBAQCB2b2lkIFN0b3JhZ2VNYW5hZ2VyU2V0OjpyZXN1
bWUoKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBMb2NrZXI8TG9j
az4gc3RhdGVMb2NrZXIobV9zdGF0ZUxvY2spOworICAgIExvY2tlciBzdGF0ZUxvY2tlciB7IG1f
c3RhdGVMb2NrIH07CiAgICAgYXV0byBwcmV2aW91c1N0YXRlID0gbV9zdGF0ZTsKICAgICBtX3N0
YXRlID0gU3RhdGU6OlJ1bm5pbmc7CiAgICAgaWYgKHByZXZpb3VzU3RhdGUgPT0gU3RhdGU6OlN1
c3BlbmRlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3Rv
cmFnZS9TdG9yYWdlTWFuYWdlclNldC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9X
ZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0LmgKaW5kZXggMGM3MjQ5YzNjODQ1MTczNmNmNjdi
ODAyYTAzY2M5MTgxMDg5NjU4My4uNDMwZjk2ZGE1YzY4ODg1OWQ2MGRjNzgxYWUwMDFlMDU1MTIz
YWEwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdl
L1N0b3JhZ2VNYW5hZ2VyU2V0LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9X
ZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0LmgKQEAgLTMxLDYgKzMxLDggQEAKICNpbmNsdWRl
ICJTdG9yYWdlTWFuYWdlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5EYXRh
Lmg+CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkQ29u
ZGl0aW9uLmg+CisjaW5jbHVkZSA8d3RmL0NoZWNrZWRMb2NrLmg+CiAjaW5jbHVkZSA8d3RmL1dl
YWtQdHIuaD4KIAogdXNpbmcgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhOwpAQCAtMTAyLDgg
KzEwNCw4IEBAIHByaXZhdGU6CiAgICAgICAgIFN1c3BlbmRlZAogICAgIH07CiAgICAgU3RhdGUg
bV9zdGF0ZSB7IFN0YXRlOjpSdW5uaW5nIH07Ci0gICAgTG9jayBtX3N0YXRlTG9jazsKLSAgICBD
b25kaXRpb24gbV9zdGF0ZUNoYW5nZUNvbmRpdGlvbjsKKyAgICBDaGVja2VkTG9jayBtX3N0YXRl
TG9jazsKKyAgICBDaGVja2VkQ29uZGl0aW9uIG1fc3RhdGVDaGFuZ2VDb25kaXRpb247CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVyLmggYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZl
ci5oCmluZGV4IDdkMmVmOGY0NWMxNGQ5OGE0MjMwYWViNGM3ZGU3YTYxZGNjMGZlMjcuLjg0ZGYy
ODFjMTc4Y2EwMmFmN2Y1YWRkNDU1NjNiNDAwYzIwNjg0ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTGF1bmNoU2VydmljZXNEYXRhYmFzZU9ic2VydmVy
LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNl
c0RhdGFiYXNlT2JzZXJ2ZXIuaApAQCAtMjgsNyArMjgsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtQ
cm9jZXNzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NTdXBwbGVtZW50LmgiCiAjaW5jbHVk
ZSAiWFBDRW5kcG9pbnQuaCIKLSNpbmNsdWRlIDx3dGYvTG9jay5oPgorI2luY2x1ZGUgPHd0Zi9D
aGVja2VkTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9PU09iamVjdFB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9SZXRhaW5QdHIuaD4KIApAQCAtNTUsOCArNTUsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgaW5p
dGlhbGl6ZUNvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uKikgZmluYWw7CiAKICAgICBSZXRhaW5Q
dHI8aWQ+IG1fb2JzZXJ2ZXI7Ci0gICAgVmVjdG9yPE9TT2JqZWN0UHRyPHhwY19jb25uZWN0aW9u
X3Q+PiBtX2Nvbm5lY3Rpb25zOwotICAgIExvY2sgbV9jb25uZWN0aW9uc0xvY2s7CisgICAgQ2hl
Y2tlZExvY2sgbV9jb25uZWN0aW9uc0xvY2s7CisgICAgVmVjdG9yPE9TT2JqZWN0UHRyPHhwY19j
b25uZWN0aW9uX3Q+PiBtX2Nvbm5lY3Rpb25zIFdURl9HVUFSREVEX0JZX0xPQ0sobV9jb25uZWN0
aW9uc0xvY2spOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jb2NvYS9MYXVuY2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXIubW0gYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlci5t
bQppbmRleCA2ODBjYjQwYTBmNWZmMjIwYzhhODI4ZTU2NDZiYTc0NDU2ODBlNzE3Li40MzIyZTQ0
ZThlYTA2M2MzZGFhOGUyYzZkZTdhNWEwODVmNWE4MWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL0xhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlci5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL0xhdW5jaFNlcnZpY2Vz
RGF0YWJhc2VPYnNlcnZlci5tbQpAQCAtNTYsNyArNTYsNyBAQCBMYXVuY2hTZXJ2aWNlc0RhdGFi
YXNlT2JzZXJ2ZXI6OkxhdW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlcihOZXR3b3JrUHJvY2Vz
cyYpCiAgICAgICAgIHhwY19kaWN0aW9uYXJ5X3NldF9zdHJpbmcobWVzc2FnZS5nZXQoKSwgWFBD
RW5kcG9pbnQ6OnhwY01lc3NhZ2VOYW1lS2V5LCBMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlWFBDQ29u
c3RhbnRzOjp4cGNVcGRhdGVMYXVuY2hTZXJ2aWNlc0RhdGFiYXNlTWVzc2FnZU5hbWUpOwogICAg
ICAgICB4cGNfZGljdGlvbmFyeV9zZXRfdmFsdWUobWVzc2FnZS5nZXQoKSwgTGF1bmNoU2Vydmlj
ZXNEYXRhYmFzZVhQQ0NvbnN0YW50czo6eHBjTGF1bmNoU2VydmljZXNEYXRhYmFzZUtleSwgY2hh
bmdlKTsKIAotICAgICAgICBMb2NrSG9sZGVyIGhvbGRlcihtX2Nvbm5lY3Rpb25zTG9jayk7Cisg
ICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2Nvbm5lY3Rpb25zTG9jayB9OwogICAgICAgICBmb3Ig
KGF1dG8mIGNvbm5lY3Rpb24gOiBtX2Nvbm5lY3Rpb25zKSB7CiAgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVCh4cGNfZ2V0X3R5cGUoY29ubmVjdGlvbi5nZXQoKSkgPT0gWFBDX1RZUEVfQ09OTkVD
VElPTik7CiAgICAgICAgICAgICB4cGNfY29ubmVjdGlvbl9zZW5kX21lc3NhZ2UoY29ubmVjdGlv
bi5nZXQoKSwgbWVzc2FnZS5nZXQoKSk7CkBAIC03Myw3ICs3Myw3IEBAIGNvbnN0IGNoYXIqIExh
dW5jaFNlcnZpY2VzRGF0YWJhc2VPYnNlcnZlcjo6c3VwcGxlbWVudE5hbWUoKQogdm9pZCBMYXVu
Y2hTZXJ2aWNlc0RhdGFiYXNlT2JzZXJ2ZXI6OnN0YXJ0T2JzZXJ2aW5nKE9TT2JqZWN0UHRyPHhw
Y19jb25uZWN0aW9uX3Q+IGNvbm5lY3Rpb24pCiB7CiAgICAgewotICAgICAgICBMb2NrSG9sZGVy
IGhvbGRlcihtX2Nvbm5lY3Rpb25zTG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2Nv
bm5lY3Rpb25zTG9jayB9OwogICAgICAgICBtX2Nvbm5lY3Rpb25zLmFwcGVuZChjb25uZWN0aW9u
KTsKICAgICB9CiAKQEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIExhdW5jaFNlcnZpY2VzRGF0YWJh
c2VPYnNlcnZlcjo6aGFuZGxlRXZlbnQoeHBjX2Nvbm5lY3Rpb25fdCBjb25uZWN0aW9uLCB4cAog
ICAgICAgICBpZiAoZXZlbnQgIT0gWFBDX0VSUk9SX0NPTk5FQ1RJT05fSU5WQUxJRCAmJiBldmVu
dCAhPSBYUENfRVJST1JfVEVSTUlOQVRJT05fSU1NSU5FTlQpCiAgICAgICAgICAgICByZXR1cm47
CiAKLSAgICAgICAgTG9ja0hvbGRlciBob2xkZXIobV9jb25uZWN0aW9uc0xvY2spOworICAgICAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9jb25uZWN0aW9uc0xvY2sgfTsKICAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBtX2Nvbm5lY3Rpb25zLnNpemUoKTsgaSsrKSB7CiAgICAgICAgICAgICBp
ZiAobV9jb25uZWN0aW9uc1tpXS5nZXQoKSA9PSBjb25uZWN0aW9uKSB7CiAgICAgICAgICAgICAg
ICAgbV9jb25uZWN0aW9ucy5yZW1vdmUoaSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9CbG9ja2luZ1Jlc3BvbnNlTWFwLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9CbG9ja2lu
Z1Jlc3BvbnNlTWFwLmgKaW5kZXggNTJmNzhmYzM2MjE2NDc0YTlmNWQ2ZDM4YTdmYjg3MWY3NDE1
Mjk2Ni4uODhiMDYzOTJmZmI4NDUyOTUwMGYxZjA0Y2JjZDY1OTdmMTQxOTljYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQmxvY2tpbmdSZXNwb25zZU1hcC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0Jsb2NraW5nUmVzcG9uc2VNYXAuaApAQCAtMjYsOSArMjYsOSBAQAog
I2lmbmRlZiBCbG9ja2luZ1Jlc3BvbnNlTWFwX2gKICNkZWZpbmUgQmxvY2tpbmdSZXNwb25zZU1h
cF9oCiAKLSNpbmNsdWRlIDx3dGYvQ29uZGl0aW9uLmg+CisjaW5jbHVkZSA8d3RmL0NoZWNrZWRD
b25kaXRpb24uaD4KKyNpbmNsdWRlIDx3dGYvQ2hlY2tlZExvY2suaD4KICNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlh
YmxlLmg+CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8VD4gd2FpdEZvclJlc3BvbnNlKHVpbnQ2NF90IHJlcXVlc3RJ
RCkKICAgICB7CiAgICAgICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPExvY2s+IGxvY2sobV9tdXRleCk7CisgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsg
bV9yZXNwb25zZXNMb2NrIH07CiAKICAgICAgICAgICAgIGlmIChtX2NhbmNlbGVkKQogICAgICAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICBpZiAoc3RkOjp1bmlxdWVfcHRyPFQ+IHJlc3BvbnNlID0gbV9yZXNwb25zZXMudGFr
ZShyZXF1ZXN0SUQpKQogICAgICAgICAgICAgICAgIHJldHVybiByZXNwb25zZTsKIAotICAgICAg
ICAgICAgbV9jb25kaXRpb24ud2FpdChsb2NrKTsKKyAgICAgICAgICAgIG1fY29uZGl0aW9uLndh
aXQobV9yZXNwb25zZXNMb2NrKTsKICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiBudWxscHRy
OwpAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25z
ZSh1aW50NjRfdCByZXF1ZXN0SUQsIHN0ZDo6dW5pcXVlX3B0cjxUPiByZXNwb25zZSkKICAgICB7
Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9tdXRleCk7CisgICAgICAgIExvY2tl
ciBsb2NrZXIgeyBtX3Jlc3BvbnNlc0xvY2sgfTsKICAgICAgICAgQVNTRVJUKCFtX3Jlc3BvbnNl
cy5jb250YWlucyhyZXF1ZXN0SUQpKTsKIAogICAgICAgICBtX3Jlc3BvbnNlcy5zZXQocmVxdWVz
dElELCBXVEZNb3ZlKHJlc3BvbnNlKSk7CkBAIC03NSwxMCArNzUsMTAgQEAgcHVibGljOgogICAg
IH0KIAogcHJpdmF0ZToKLSAgICBMb2NrIG1fbXV0ZXg7Ci0gICAgQ29uZGl0aW9uIG1fY29uZGl0
aW9uOworICAgIENoZWNrZWRMb2NrIG1fcmVzcG9uc2VzTG9jazsKKyAgICBDaGVja2VkQ29uZGl0
aW9uIG1fY29uZGl0aW9uOwogCi0gICAgSGFzaE1hcDx1aW50NjRfdCwgc3RkOjp1bmlxdWVfcHRy
PFQ+PiBtX3Jlc3BvbnNlczsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBzdGQ6OnVuaXF1ZV9wdHI8
VD4+IG1fcmVzcG9uc2VzIFdURl9HVUFSREVEX0JZX0xPQ0sobV9yZXNwb25zZXNMb2NrKTsKICAg
ICBib29sIG1fY2FuY2VsZWQ7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Db2NvYS9YUENFbmRwb2ludENsaWVudC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2Ev
WFBDRW5kcG9pbnRDbGllbnQuaAppbmRleCBkN2U0MzVkMmI5YzdjNjJhMTI4MDA5YTU4M2U4N2Fj
MGY4NjUxYmU5Li41YjgyOWJjNjlhYWUxOWZiZjliYmMxOTUxMTY5NTYwNjBlMTBkNDU2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9YUENFbmRwb2ludENsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hQQ0VuZHBvaW50Q2xpZW50LmgKQEAgLTI2
LDcgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiV0tEZWNsYXJhdGlvblNwZWNp
ZmllcnMuaCIKLSNpbmNsdWRlIDx3dGYvTG9jay5oPgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkTG9j
ay5oPgogI2luY2x1ZGUgPHd0Zi9PU09iamVjdFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9zcGkvZGFy
d2luL1hQQ1NQSS5oPgogCkBAIC00NSw4ICs0NSw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2
b2lkIGhhbmRsZUV2ZW50KHhwY19vYmplY3RfdCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRD
b25uZWN0KCkgPSAwOwogCi0gICAgT1NPYmplY3RQdHI8eHBjX2Nvbm5lY3Rpb25fdD4gbV9jb25u
ZWN0aW9uOwotICAgIExvY2sgbV9sb2NrOworICAgIENoZWNrZWRMb2NrIG1fY29ubmVjdGlvbkxv
Y2s7CisgICAgT1NPYmplY3RQdHI8eHBjX2Nvbm5lY3Rpb25fdD4gbV9jb25uZWN0aW9uIFdURl9H
VUFSREVEX0JZX0xPQ0sobV9jb25uZWN0aW9uTG9jayk7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9YUENFbmRwb2ludENsaWVudC5tbSBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0NvY29hL1hQQ0VuZHBvaW50Q2xpZW50Lm1tCmluZGV4IGVlMTc4MWIyMzNi
NThiNDljOGE2Y2I3MzRjNzE2N2UzMjdjOTE2ZjcuLjAwMmRlMzdlZGQxNjg5ZDY3ODM0YzIxOGNm
NDQ1YjRhOGMzODU2ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hQ
Q0VuZHBvaW50Q2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hQQ0Vu
ZHBvaW50Q2xpZW50Lm1tCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogdm9p
ZCBYUENFbmRwb2ludENsaWVudDo6c2V0RW5kcG9pbnQoeHBjX2VuZHBvaW50X3QgZW5kcG9pbnQp
CiB7CiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworICAgICAgICBM
b2NrZXIgbG9ja2VyIHsgbV9jb25uZWN0aW9uTG9jayB9OwogCiAgICAgICAgIGlmIChtX2Nvbm5l
Y3Rpb24pCiAgICAgICAgICAgICByZXR1cm47CkBAIC00NSw3ICs0NSw3IEBAIHZvaWQgWFBDRW5k
cG9pbnRDbGllbnQ6OnNldEVuZHBvaW50KHhwY19lbmRwb2ludF90IGVuZHBvaW50KQogICAgICAg
ICAgICAgeHBjX3R5cGVfdCB0eXBlID0geHBjX2dldF90eXBlKG1lc3NhZ2UpOwogICAgICAgICAg
ICAgaWYgKHR5cGUgPT0gWFBDX1RZUEVfRVJST1IpIHsKICAgICAgICAgICAgICAgICBpZiAobWVz
c2FnZSA9PSBYUENfRVJST1JfQ09OTkVDVElPTl9JTlZBTElEIHx8IG1lc3NhZ2UgPT0gWFBDX0VS
Uk9SX1RFUk1JTkFUSU9OX0lNTUlORU5UKSB7Ci0gICAgICAgICAgICAgICAgICAgIExvY2tIb2xk
ZXIgbG9ja2VyKG1fbG9jayk7CisgICAgICAgICAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBt
X2Nvbm5lY3Rpb25Mb2NrIH07CiAgICAgICAgICAgICAgICAgICAgIG1fY29ubmVjdGlvbiA9IG51
bGxwdHI7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTc0
LDcgKzc0LDcgQEAgdm9pZCBYUENFbmRwb2ludENsaWVudDo6c2V0RW5kcG9pbnQoeHBjX2VuZHBv
aW50X3QgZW5kcG9pbnQpCiAKIE9TT2JqZWN0UHRyPHhwY19jb25uZWN0aW9uX3Q+IFhQQ0VuZHBv
aW50Q2xpZW50Ojpjb25uZWN0aW9uKCkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2sp
OworICAgIExvY2tlciBsb2NrZXIgeyBtX2Nvbm5lY3Rpb25Mb2NrIH07CiAgICAgcmV0dXJuIG1f
Y29ubmVjdGlvbjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
VVJMU2NoZW1lVGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVU
YXNrLmNwcAppbmRleCAxNmQyY2NiOWNkN2Y3MjM2ZTE4ZTZlNjgyMzEwY2MzN2Q4ZmFmNDM3Li45
NzZjZmI1ZDYzODBlN2Y4ZDM2MmY2MmI1ZTFiZDE1ZTViZDVhNmMzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcApAQCAtNjAsNiArNjAsMTMgQEAgV2Vi
VVJMU2NoZW1lVGFzazo6fldlYlVSTFNjaGVtZVRhc2soKQogICAgIEFTU0VSVChSdW5Mb29wOjpp
c01haW4oKSk7CiB9CiAKK1Jlc291cmNlUmVxdWVzdCBXZWJVUkxTY2hlbWVUYXNrOjpyZXF1ZXN0
KCkgY29uc3QKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgIExvY2tlciBs
b2NrZXIgeyBtX3JlcXVlc3RMb2NrIH07CisgICAgcmV0dXJuIG1fcmVxdWVzdDsKK30KKwogYXV0
byBXZWJVUkxTY2hlbWVUYXNrOjp3aWxsUGVyZm9ybVJlZGlyZWN0aW9uKFJlc291cmNlUmVzcG9u
c2UmJiByZXNwb25zZSwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgIEZ1bmN0aW9uPHZvaWQo
UmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSAtPiBFeGNlcHRpb25UeXBl
CiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKQEAgLTgzLDcgKzkwLDcgQEAgYXV0
byBXZWJVUkxTY2hlbWVUYXNrOjp3aWxsUGVyZm9ybVJlZGlyZWN0aW9uKFJlc291cmNlUmVzcG9u
c2UmJiByZXNwb25zZSwgUmVzb3UKICAgICAgICAgbV9zeW5jUmVzcG9uc2UgPSByZXNwb25zZTsK
IAogICAgIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9yZXF1ZXN0TG9jayk7CisgICAg
ICAgIExvY2tlciBsb2NrZXIgeyBtX3JlcXVlc3RMb2NrIH07CiAgICAgICAgIG1fcmVxdWVzdCA9
IHJlcXVlc3Q7CiAgICAgfQogCkBAIC0xMjcsNyArMTM0LDcgQEAgYXV0byBXZWJVUkxTY2hlbWVU
YXNrOjpkaWRQZXJmb3JtUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJl
c3BvbnMKICAgICAgICAgbV9zeW5jUmVzcG9uc2UgPSByZXNwb25zZTsKIAogICAgIHsKLSAgICAg
ICAgTG9ja0hvbGRlciBsb2NrZXIobV9yZXF1ZXN0TG9jayk7CisgICAgICAgIExvY2tlciBsb2Nr
ZXIgeyBtX3JlcXVlc3RMb2NrIH07CiAgICAgICAgIG1fcmVxdWVzdCA9IHJlcXVlc3Q7CiAgICAg
fQogCkBAIC0yMzgsNyArMjQ1LDcgQEAgdm9pZCBXZWJVUkxTY2hlbWVUYXNrOjpwYWdlRGVzdHJv
eWVkKCkKICAgICBtX3N0b3BwZWQgPSB0cnVlOwogICAgIAogICAgIGlmIChpc1N5bmMoKSkgewot
ICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3JlcXVlc3RMb2NrKTsKKyAgICAgICAgTG9ja2Vy
IGxvY2tlciB7IG1fcmVxdWVzdExvY2sgfTsKICAgICAgICAgbV9zeW5jQ29tcGxldGlvbkhhbmRs
ZXIoeyB9LCBmYWlsZWRDdXN0b21Qcm90b2NvbFN5bmNMb2FkKG1fcmVxdWVzdCksIHsgfSk7CiAg
ICAgfQogfQpAQCAtMjUxLDcgKzI1OCw3IEBAIHZvaWQgV2ViVVJMU2NoZW1lVGFzazo6c3RvcCgp
CiAgICAgbV9zdG9wcGVkID0gdHJ1ZTsKIAogICAgIGlmIChpc1N5bmMoKSkgewotICAgICAgICBM
b2NrSG9sZGVyIGxvY2tlcihtX3JlcXVlc3RMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7
IG1fcmVxdWVzdExvY2sgfTsKICAgICAgICAgbV9zeW5jQ29tcGxldGlvbkhhbmRsZXIoeyB9LCBm
YWlsZWRDdXN0b21Qcm90b2NvbFN5bmNMb2FkKG1fcmVxdWVzdCksIHsgfSk7CiAgICAgfQogfQpA
QCAtMjU5LDcgKzI2Niw3IEBAIHZvaWQgV2ViVVJMU2NoZW1lVGFzazo6c3RvcCgpCiAjaWYgUExB
VEZPUk0oQ09DT0EpCiBOU1VSTFJlcXVlc3QgKldlYlVSTFNjaGVtZVRhc2s6Om5zUmVxdWVzdCgp
IGNvbnN0CiB7Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9yZXF1ZXN0TG9jayk7CisgICAgTG9j
a2VyIGxvY2tlciB7IG1fcmVxdWVzdExvY2sgfTsKICAgICByZXR1cm4gbV9yZXF1ZXN0Lm5zVVJM
UmVxdWVzdChXZWJDb3JlOjpIVFRQQm9keVVwZGF0ZVBvbGljeTo6VXBkYXRlSFRUUEJvZHkpOwog
fQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hl
bWVUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKaW5k
ZXggZmUzYzUyOTk1OGRkOTlhMzVkODdhNDk0ZDNmZDQxNDIzYzRlODkyNC4uYjkyOTI4OTRmYTVj
MzRhOWY1ZDhiZjMxY2Y2YTMyMGExZGFmZjM4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlVSTFNjaGVtZVRhc2suaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUv
UmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KKyNpbmNsdWRlIDx3dGYvQ2hlY2tl
ZExvY2suaD4KICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3
dGYvSW5zdGFuY2VDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTY0
LDcgKzY1LDcgQEAgcHVibGljOgogICAgIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZVByb3h5
SUQoKSBjb25zdCB7IEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7IHJldHVybiBtX3BhZ2VQcm94
eUlEOyB9CiAgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlEKCkgY29uc3QgeyBB
U1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOyByZXR1cm4gbV93ZWJQYWdlSUQ7IH0KICAgICBXZWJQ
cm9jZXNzUHJveHkqIHByb2Nlc3MoKSB7IEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7IHJldHVy
biBtX3Byb2Nlc3MuZ2V0KCk7IH0KLSAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QoKSBjb25zdCB7IEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7IHJldHVybiBtX3Jl
cXVlc3Q7IH0KKyAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCgpIGNvbnN0Owog
ICAgIEFQSTo6RnJhbWVJbmZvJiBmcmFtZUluZm8oKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lSW5m
by5nZXQoKTsgfQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCkBAIC0xMDMsOSArMTA0LDkgQEAgcHJp
dmF0ZToKICAgICB1aW50NjRfdCBtX2lkZW50aWZpZXI7CiAgICAgV2ViUGFnZVByb3h5SWRlbnRp
ZmllciBtX3BhZ2VQcm94eUlEOwogICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fd2ViUGFn
ZUlEOwotICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBtX3JlcXVlc3Q7CisgICAgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0IG1fcmVxdWVzdCBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fcmVxdWVz
dExvY2spOwogICAgIFJlZjxBUEk6OkZyYW1lSW5mbz4gbV9mcmFtZUluZm87Ci0gICAgbXV0YWJs
ZSBMb2NrIG1fcmVxdWVzdExvY2s7CisgICAgbXV0YWJsZSBDaGVja2VkTG9jayBtX3JlcXVlc3RM
b2NrOwogICAgIGJvb2wgbV9zdG9wcGVkIHsgZmFsc2UgfTsKICAgICBib29sIG1fcmVzcG9uc2VT
ZW50IHsgZmFsc2UgfTsKICAgICBib29sIG1fZGF0YVNlbnQgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL0Rpc3BsYXlMaW5rLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL21hYy9EaXNwbGF5TGluay5jcHAKaW5kZXggNDViZWQ2NDhiMzY2Mzc0
NjNjYzRjYTEyY2Y5ZTUxOTZmODc4OWFkMy4uNWIwMGVjNTgyZDE0MmViZTMzMjE5MWExZmJmNjFh
Yjg4ZTg5YWVhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL0Rpc3Bs
YXlMaW5rLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvRGlzcGxheUxpbmsu
Y3BwCkBAIC04OSw3ICs4OSw3IEBAIHZvaWQgRGlzcGxheUxpbms6OmFkZE9ic2VydmVyKElQQzo6
Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgRGlzcGxheUxpbmtPYnNlcnZlcklECiAgICAgTE9HX1dJ
VEhfU1RSRUFNKERpc3BsYXlMaW5rLCBzdHJlYW0gPDwgIltVSSBdIERpc3BsYXlMaW5rICIgPDwg
dGhpcyA8PCAiIGZvciBkaXNwbGF5IGRpc3BsYXkgIiA8PCBtX2Rpc3BsYXlJRCA8PCAiIGFkZCBv
YnNlcnZlciAiIDw8IG9ic2VydmVySUQgPDwgIiBmcHMgIiA8PCBwcmVmZXJyZWRGcmFtZXNQZXJT
ZWNvbmQpOwogCiAgICAgewotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fb2JzZXJ2
ZXJzTG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX29ic2VydmVyc0xvY2sgfTsKICAg
ICAgICAgbV9vYnNlcnZlcnMuZW5zdXJlKCZjb25uZWN0aW9uLCBbXSB7CiAgICAgICAgICAgICBy
ZXR1cm4gQ29ubmVjdGlvbkNsaWVudEluZm8geyB9OwogICAgICAgICB9KS5pdGVyYXRvci0+dmFs
dWUub2JzZXJ2ZXJzLmFwcGVuZCh7IG9ic2VydmVySUQsIHByZWZlcnJlZEZyYW1lc1BlclNlY29u
ZCB9KTsKQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIERpc3BsYXlMaW5rOjpyZW1vdmVPYnNlcnZl
cihJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIERpc3BsYXlMaW5rT2JzZXJ2ZQogewogICAg
IEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2Nr
KG1fb2JzZXJ2ZXJzTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fb2JzZXJ2ZXJzTG9jayB9
OwogCiAgICAgYXV0byBpdCA9IG1fb2JzZXJ2ZXJzLmZpbmQoJmNvbm5lY3Rpb24pOwogICAgIGlm
IChpdCA9PSBtX29ic2VydmVycy5lbmQoKSkKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIERpc3Bs
YXlMaW5rOjpyZW1vdmVPYnNlcnZlcnMoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogewog
ICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRM
b2NrKG1fb2JzZXJ2ZXJzTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fb2JzZXJ2ZXJzTG9j
ayB9OwogICAgIG1fb2JzZXJ2ZXJzLnJlbW92ZSgmY29ubmVjdGlvbik7CiAKICAgICAvLyBXZSBk
byBub3Qgc3RvcCB0aGUgZGlzcGxheSBsaW5rIHJpZ2h0IGF3YXkgd2hlbiB8bV9vYnNlcnZlcnN8
IGJlY29tZXMgZW1wdHkuIEluc3RlYWQsIHdlCkBAIC0xNTYsNyArMTU2LDcgQEAgdm9pZCBEaXNw
bGF5TGluazo6cmVtb3ZlSW5mb0ZvckNvbm5lY3Rpb25JZlBvc3NpYmxlKElQQzo6Q29ubmVjdGlv
biYgY29ubmVjdGlvbikKIAogdm9pZCBEaXNwbGF5TGluazo6aW5jcmVtZW50RnVsbFNwZWVkUmVx
dWVzdENsaWVudENvdW50KElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKIHsKLSAgICBhdXRv
IGxvY2tlciA9IGhvbGRMb2NrKG1fb2JzZXJ2ZXJzTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7
IG1fb2JzZXJ2ZXJzTG9jayB9OwogCiAgICAgYXV0byYgY29ubmVjdGlvbkluZm8gPSBtX29ic2Vy
dmVycy5lbnN1cmUoJmNvbm5lY3Rpb24sIFtdIHsKICAgICAgICAgcmV0dXJuIENvbm5lY3Rpb25D
bGllbnRJbmZvIHsgfTsKQEAgLTE2Nyw3ICsxNjcsNyBAQCB2b2lkIERpc3BsYXlMaW5rOjppbmNy
ZW1lbnRGdWxsU3BlZWRSZXF1ZXN0Q2xpZW50Q291bnQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aQogCiB2b2lkIERpc3BsYXlMaW5rOjpkZWNyZW1lbnRGdWxsU3BlZWRSZXF1ZXN0Q2xpZW50Q291
bnQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogewotICAgIGF1dG8gbG9ja2VyID0gaG9s
ZExvY2sobV9vYnNlcnZlcnNMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9vYnNlcnZlcnNM
b2NrIH07CiAKICAgICBhdXRvIGl0ID0gbV9vYnNlcnZlcnMuZmluZCgmY29ubmVjdGlvbik7CiAg
ICAgaWYgKGl0ID09IG1fb2JzZXJ2ZXJzLmVuZCgpKQpAQCAtMTgzLDcgKzE4Myw3IEBAIHZvaWQg
RGlzcGxheUxpbms6OnNldFByZWZlcnJlZEZyYW1lc1BlclNlY29uZChJUEM6OkNvbm5lY3Rpb24m
IGNvbm5lY3Rpb24sIERpc3BsCiB7CiAgICAgTE9HX1dJVEhfU1RSRUFNKERpc3BsYXlMaW5rLCBz
dHJlYW0gPDwgIltVSSBdIERpc3BsYXlMaW5rICIgPDwgdGhpcyA8PCAiIHNldFByZWZlcnJlZEZy
YW1lc1BlclNlY29uZCAtIGRpc3BsYXkgIiA8PCBtX2Rpc3BsYXlJRCA8PCAiIG9ic2VydmVyICIg
PDwgb2JzZXJ2ZXJJRCA8PCAiIGZwcyAiIDw8IHByZWZlcnJlZEZyYW1lc1BlclNlY29uZCk7CiAK
LSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fb2JzZXJ2ZXJzTG9jayk7CisgICAgTG9ja2Vy
IGxvY2tlciB7IG1fb2JzZXJ2ZXJzTG9jayB9OwogCiAgICAgYXV0byBpdCA9IG1fb2JzZXJ2ZXJz
LmZpbmQoJmNvbm5lY3Rpb24pOwogICAgIGlmIChpdCA9PSBtX29ic2VydmVycy5lbmQoKSkKQEAg
LTIwOCw3ICsyMDgsNyBAQCB2b2lkIERpc3BsYXlMaW5rOjpub3RpZnlPYnNlcnZlcnNEaXNwbGF5
V2FzUmVmcmVzaGVkKCkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAg
IGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9vYnNlcnZlcnNMb2NrKTsKKyAgICBMb2NrZXIgbG9j
a2VyIHsgbV9vYnNlcnZlcnNMb2NrIH07CiAKICAgICBhdXRvIG1heEZyYW1lc1BlclNlY29uZCA9
IFtdKGNvbnN0IFZlY3RvcjxPYnNlcnZlckluZm8+JiBvYnNlcnZlcnMpIHsKICAgICAgICAgT3B0
aW9uYWw8V2ViQ29yZTo6RnJhbWVzUGVyU2Vjb25kPiBvYnNlcnZlcnNNYXhGcmFtZXNQZXJTZWNv
bmQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvRGlzcGxheUxpbmsu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9EaXNwbGF5TGluay5oCmluZGV4IDY3ZDE0
ZTExNGY4ZmE5NTcxODk2YWQ3ODY3ZDhiNTljOGNjYjAxNGMuLjQyODdhMDk3ZjY5YjUxNWUyMTY5
MmZkZjVjN2U2MjhlMjk1MWM2NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L21hYy9EaXNwbGF5TGluay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9EaXNw
bGF5TGluay5oCkBAIC0zMiw4ICszMiw4IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9BbmltYXRpb25G
cmFtZVJhdGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlVcGRhdGUuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1BsYXRmb3JtU2NyZWVuLmg+CisjaW5jbHVkZSA8d3RmL0NoZWNrZWRMb2NrLmg+
CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvTG9jay5oPgogCiBuYW1l
c3BhY2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rpb247CkBAIC02OCw3ICs2OCw3IEBAIHByaXZhdGU6
CiAgICAgc3RhdGljIENWUmV0dXJuIGRpc3BsYXlMaW5rQ2FsbGJhY2soQ1ZEaXNwbGF5TGlua1Jl
ZiwgY29uc3QgQ1ZUaW1lU3RhbXAqLCBjb25zdCBDVlRpbWVTdGFtcCosIENWT3B0aW9uRmxhZ3Ms
IENWT3B0aW9uRmxhZ3MqLCB2b2lkKiBkYXRhKTsKICAgICB2b2lkIG5vdGlmeU9ic2VydmVyc0Rp
c3BsYXlXYXNSZWZyZXNoZWQoKTsKIAotICAgIHZvaWQgcmVtb3ZlSW5mb0ZvckNvbm5lY3Rpb25J
ZlBvc3NpYmxlKElQQzo6Q29ubmVjdGlvbiYpOworICAgIHZvaWQgcmVtb3ZlSW5mb0ZvckNvbm5l
Y3Rpb25JZlBvc3NpYmxlKElQQzo6Q29ubmVjdGlvbiYpIFdURl9SRVFVSVJFU19MT0NLKG1fb2Jz
ZXJ2ZXJzTG9jayk7CiAKICAgICBzdGF0aWMgV2ViQ29yZTo6RnJhbWVzUGVyU2Vjb25kIG5vbWlu
YWxGcmFtZXNQZXJTZWNvbmRGcm9tRGlzcGxheUxpbmsoQ1ZEaXNwbGF5TGlua1JlZik7CiAKQEAg
LTgzLDggKzgzLDggQEAgcHJpdmF0ZToKICAgICB9OwogCiAgICAgQ1ZEaXNwbGF5TGlua1JlZiBt
X2Rpc3BsYXlMaW5rIHsgbnVsbHB0ciB9OwotICAgIExvY2sgbV9vYnNlcnZlcnNMb2NrOwotICAg
IEhhc2hNYXA8UmVmUHRyPElQQzo6Q29ubmVjdGlvbj4sIENvbm5lY3Rpb25DbGllbnRJbmZvPiBt
X29ic2VydmVyczsKKyAgICBDaGVja2VkTG9jayBtX29ic2VydmVyc0xvY2s7CisgICAgSGFzaE1h
cDxSZWZQdHI8SVBDOjpDb25uZWN0aW9uPiwgQ29ubmVjdGlvbkNsaWVudEluZm8+IG1fb2JzZXJ2
ZXJzIFdURl9HVUFSREVEX0JZX0xPQ0sobV9vYnNlcnZlcnNMb2NrKTsKICAgICBXZWJDb3JlOjpQ
bGF0Zm9ybURpc3BsYXlJRCBtX2Rpc3BsYXlJRDsKICAgICBXZWJDb3JlOjpGcmFtZXNQZXJTZWNv
bmQgbV9kaXNwbGF5Tm9taW5hbEZyYW1lc1BlclNlY29uZCB7IDAgfTsKICAgICBXZWJDb3JlOjpE
aXNwbGF5VXBkYXRlIG1fY3VycmVudFVwZGF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuY3BwCmluZGV4IGJmNzEyYWVi
NTMzZWNkNWQ5YjBiZmE1ZWNhODUwNTkyZTZiMTI4YzguLmQ1YjRkNDY1ZjYyMWNhMDg2M2FjOTIw
MTNmZjAzOWFjODhiZGRjZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNwcApAQCAtMTc0LDEwICsxNzQsOSBAQCBM
aWJXZWJSVENDb2RlY3M6OkxpYldlYlJUQ0NvZGVjcygpCiB7CiB9CiAKLXZvaWQgTGliV2ViUlRD
Q29kZWNzOjplbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbk9uTWFpblRocmVhZChMb2NrZXI8TG9j
az4mIGxvY2tlcikKK3ZvaWQgTGliV2ViUlRDQ29kZWNzOjplbnN1cmVHUFVQcm9jZXNzQ29ubmVj
dGlvbk9uTWFpblRocmVhZFdpdGhMb2NrKCkKIHsKICAgICBBU1NFUlQoaXNNYWluUnVuTG9vcCgp
KTsKLSAgICBBU1NFUlRfVU5VU0VEKGxvY2tlciwgbG9ja2VyLmxvY2thYmxlKCkgPT0gJm1fY29u
bmVjdGlvbkxvY2spOwogICAgIGlmIChtX2Nvbm5lY3Rpb24pCiAgICAgICAgIHJldHVybjsKIApA
QCAtMTk1LDcgKzE5NCw3IEBAIHZvaWQgTGliV2ViUlRDQ29kZWNzOjplbnN1cmVHUFVQcm9jZXNz
Q29ubmVjdGlvbkFuZERpc3BhdGNoVG9UaHJlYWQoRnVuY3Rpb248dm9pCiB7CiAgICAgbV9uZWVk
c0dQVVByb2Nlc3NDb25uZWN0aW9uID0gdHJ1ZTsKIAotICAgIGF1dG8gbG9ja2VyID0gaG9sZExv
Y2sobV9jb25uZWN0aW9uTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fY29ubmVjdGlvbkxv
Y2sgfTsKIAogICAgIC8vIEZhc3QgcGF0aCB3aGVuIHdlIGFscmVhZHkgaGF2ZSBhIGNvbm5lY3Rp
b24uCiAgICAgaWYgKG1fY29ubmVjdGlvbikgewpAQCAtMjA5LDggKzIwOCw4IEBAIHZvaWQgTGli
V2ViUlRDQ29kZWNzOjplbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbkFuZERpc3BhdGNoVG9UaHJl
YWQoRnVuY3Rpb248dm9pCiAgICAgICAgIHJldHVybjsKIAogICAgIGNhbGxPbk1haW5SdW5Mb29w
KFt0aGlzXSB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9jb25uZWN0aW9uTG9j
ayk7Ci0gICAgICAgIGVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uT25NYWluVGhyZWFkKGxvY2tl
cik7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2Nvbm5lY3Rpb25Mb2NrIH07CisgICAgICAg
IGVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uT25NYWluVGhyZWFkV2l0aExvY2soKTsKICAgICAg
ICAgZm9yIChhdXRvJiB0YXNrIDogc3RkOjpleGNoYW5nZShtX3Rhc2tzVG9EaXNwYXRjaEFmdGVy
RXN0YWJsaXNoaW5nQ29ubmVjdGlvbiwgeyB9KSkKICAgICAgICAgICAgIGRpc3BhdGNoVG9UaHJl
YWQoV1RGTW92ZSh0YXNrKSk7CiAgICAgfSk7CkBAIC0yNTgsNyArMjU3LDcgQEAgTGliV2ViUlRD
Q29kZWNzOjpEZWNvZGVyKiBMaWJXZWJSVENDb2RlY3M6OmNyZWF0ZURlY29kZXIoVHlwZSB0eXBl
KQogICAgIGRlY29kZXItPnR5cGUgPSB0eXBlOwogCiAgICAgZW5zdXJlR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb25BbmREaXNwYXRjaFRvVGhyZWFkKFt0aGlzLCBkZWNvZGVyID0gV1RGTW92ZShkZWNvZGVy
KV0oKSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2Nvbm5lY3Rp
b25Mb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fY29ubmVjdGlvbkxvY2sgfTsKICAg
ICAgICAgZGVjb2Rlci0+Y29ubmVjdGlvbiA9IG1fY29ubmVjdGlvbjsKICAgICAgICAgY3JlYXRl
UmVtb3RlRGVjb2RlcigqZGVjb2RlciwgKm1fY29ubmVjdGlvbik7CiAKQEAgLTI4NCw3ICsyODMs
NyBAQCBpbnQzMl90IExpYldlYlJUQ0NvZGVjczo6cmVsZWFzZURlY29kZXIoRGVjb2RlciYgZGVj
b2RlcikKIAogaW50MzJfdCBMaWJXZWJSVENDb2RlY3M6OmRlY29kZUZyYW1lKERlY29kZXImIGRl
Y29kZXIsIHVpbnQzMl90IHRpbWVTdGFtcCwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNp
emUsIHVpbnQxNl90IHdpZHRoLCB1aW50MTZfdCBoZWlnaHQpCiB7Ci0gICAgTG9ja0hvbGRlciBo
b2xkZXIobV9jb25uZWN0aW9uTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fY29ubmVjdGlv
bkxvY2sgfTsKICAgICBpZiAoIWRlY29kZXIuY29ubmVjdGlvbiB8fCBkZWNvZGVyLmhhc0Vycm9y
KSB7CiAgICAgICAgIGRlY29kZXIuaGFzRXJyb3IgPSBmYWxzZTsKICAgICAgICAgcmV0dXJuIFdF
QlJUQ19WSURFT19DT0RFQ19FUlJPUjsKQEAgLTM4MCw3ICszNzksNyBAQCBMaWJXZWJSVENDb2Rl
Y3M6OkVuY29kZXIqIExpYldlYlJUQ0NvZGVjczo6Y3JlYXRlRW5jb2RlcihUeXBlIHR5cGUsIGNv
bnN0IHN0ZDo6bQogICAgICAgICBwYXJhbWV0ZXJzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihTdHJp
bmc6OmZyb21VVEY4KGtleVZhbHVlLmZpcnN0LmRhdGEoKSwga2V5VmFsdWUuZmlyc3QubGVuZ3Ro
KCkpLCBTdHJpbmc6OmZyb21VVEY4KGtleVZhbHVlLnNlY29uZC5kYXRhKCksIGtleVZhbHVlLnNl
Y29uZC5sZW5ndGgoKSkpKTsKIAogICAgIGVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uQW5kRGlz
cGF0Y2hUb1RocmVhZChbdGhpcywgZW5jb2RlciA9IFdURk1vdmUoZW5jb2RlciksIHR5cGUsIHBh
cmFtZXRlcnMgPSBXVEZNb3ZlKHBhcmFtZXRlcnMpXSgpIG11dGFibGUgewotICAgICAgICBMb2Nr
SG9sZGVyIGhvbGRlcihtX2Nvbm5lY3Rpb25Mb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7
IG1fY29ubmVjdGlvbkxvY2sgfTsKICAgICAgICAgZW5jb2Rlci0+Y29ubmVjdGlvbiA9IG1fY29u
bmVjdGlvbjsKICAgICAgICAgZW5jb2Rlci0+Y29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6TGli
V2ViUlRDQ29kZWNzUHJveHk6OkNyZWF0ZUVuY29kZXIgeyBlbmNvZGVyLT5pZGVudGlmaWVyLCBm
b3JtYXROYW1lRnJvbUNvZGVjVHlwZSh0eXBlKSwgcGFyYW1ldGVycywgUnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS53ZWJSVENIMjY0TG93TGF0ZW5jeUVuY29kZXJFbmFi
bGVkKCkgfSwgMCk7CiAgICAgICAgIGVuY29kZXItPnBhcmFtZXRlcnMgPSBXVEZNb3ZlKHBhcmFt
ZXRlcnMpOwpAQCAtNDE2LDcgKzQxNSw3IEBAIGludDMyX3QgTGliV2ViUlRDQ29kZWNzOjppbml0
aWFsaXplRW5jb2RlcihFbmNvZGVyJiBlbmNvZGVyLCB1aW50MTZfdCB3aWR0aCwgdWluCiAKIGlu
dDMyX3QgTGliV2ViUlRDQ29kZWNzOjplbmNvZGVGcmFtZShFbmNvZGVyJiBlbmNvZGVyLCBjb25z
dCB3ZWJydGM6OlZpZGVvRnJhbWUmIGZyYW1lLCBib29sIHNob3VsZEVuY29kZUFzS2V5RnJhbWUp
CiB7Ci0gICAgTG9ja0hvbGRlciBob2xkZXIobV9jb25uZWN0aW9uTG9jayk7CisgICAgTG9ja2Vy
IGxvY2tlciB7IG1fY29ubmVjdGlvbkxvY2sgfTsKIAogICAgIGlmICghZW5jb2Rlci5jb25uZWN0
aW9uKQogICAgICAgICByZXR1cm4gV0VCUlRDX1ZJREVPX0NPREVDX0VSUk9SOwpAQCAtNDYyLDcg
KzQ2MSw3IEBAIHZvaWQgTGliV2ViUlRDQ29kZWNzOjpyZWdpc3RlckVuY29kZUZyYW1lQ2FsbGJh
Y2soRW5jb2RlciYgZW5jb2Rlciwgdm9pZCogZW5jb2RlCiAKIHZvaWQgTGliV2ViUlRDQ29kZWNz
OjpzZXRFbmNvZGVSYXRlcyhFbmNvZGVyJiBlbmNvZGVyLCB1aW50MzJfdCBiaXRSYXRlLCB1aW50
MzJfdCBmcmFtZVJhdGUpCiB7Ci0gICAgTG9ja0hvbGRlciBob2xkZXIobV9jb25uZWN0aW9uTG9j
ayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fY29ubmVjdGlvbkxvY2sgfTsKIAogICAgIGlmICgh
ZW5jb2Rlci5jb25uZWN0aW9uKSB7CiAgICAgICAgIGNhbGxPbk1haW5SdW5Mb29wKFtlbmNvZGVy
SWRlbnRpZmllciA9IGVuY29kZXIuaWRlbnRpZmllciwgYml0UmF0ZSwgZnJhbWVSYXRlXSB7CkBA
IC01MTAsMTUgKzUwOSwxNSBAQCB2b2lkIExpYldlYlJUQ0NvZGVjczo6ZGlzcGF0Y2hUb1RocmVh
ZChGdW5jdGlvbjx2b2lkKCk+JiYgY2FsbGJhY2spCiB2b2lkIExpYldlYlJUQ0NvZGVjczo6Z3B1
UHJvY2Vzc0Nvbm5lY3Rpb25EaWRDbG9zZShHUFVQcm9jZXNzQ29ubmVjdGlvbiYpCiB7CiAgICAg
QVNTRVJUKGlzTWFpblJ1bkxvb3AoKSk7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2Nv
bm5lY3Rpb25Mb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9jb25uZWN0aW9uTG9jayB9Owog
ICAgIHN0ZDo6ZXhjaGFuZ2UobV9jb25uZWN0aW9uLCBudWxscHRyKS0+cmVtb3ZlVGhyZWFkTWVz
c2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpMaWJXZWJSVENDb2RlY3M6Om1lc3NhZ2VSZWNlaXZlck5h
bWUoKSk7CiAgICAgaWYgKCFtX25lZWRzR1BVUHJvY2Vzc0Nvbm5lY3Rpb24pCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uT25NYWluVGhyZWFkKGxvY2tl
cik7CisgICAgZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb25Pbk1haW5UaHJlYWRXaXRoTG9jaygp
OwogICAgIGRpc3BhdGNoVG9UaHJlYWQoW3RoaXNdKCkgewogICAgICAgICAvLyBMb2NrIGV2ZXJ5
dGhpbmcgc28gdGhhdCB3ZSBjYW4gdXBkYXRlIGVuY29kZXIvZGVjb2RlciBjb25uZWN0aW9uLgot
ICAgICAgICBMb2NrSG9sZGVyIGhvbGRlcihtX2Nvbm5lY3Rpb25Mb2NrKTsKKyAgICAgICAgTG9j
a2VyIGxvY2tlciB7IG1fY29ubmVjdGlvbkxvY2sgfTsKICAgICAgICAgLy8gUmVjcmVhdGUgZW5j
b2RlcnMgYW5kIGluaXRpYWxpemUgdGhlbSwgcmVjcmVhdGUgZGVjb2RlcnMuCiAgICAgICAgIGZv
ciAoYXV0byYgZW5jb2RlciA6IG1fZW5jb2RlcnMudmFsdWVzKCkpIHsKICAgICAgICAgICAgIG1f
Y29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6TGliV2ViUlRDQ29kZWNzUHJveHk6OkNyZWF0ZUVu
Y29kZXIgeyBlbmNvZGVyLT5pZGVudGlmaWVyLCBmb3JtYXROYW1lRnJvbVdlYlJUQ0NvZGVjVHlw
ZShlbmNvZGVyLT5jb2RlY1R5cGUpLCBlbmNvZGVyLT5wYXJhbWV0ZXJzLCBSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYlJUQ0gyNjRMb3dMYXRlbmN5RW5jb2RlckVu
YWJsZWQoKSB9LCAwKTsKQEAgLTUzNiw2ICs1MzUsOCBAQCB2b2lkIExpYldlYlJUQ0NvZGVjczo6
Z3B1UHJvY2Vzc0Nvbm5lY3Rpb25EaWRDbG9zZShHUFVQcm9jZXNzQ29ubmVjdGlvbiYpCiB2b2lk
IExpYldlYlJUQ0NvZGVjczo6c2V0TG9nZ2luZ0xldmVsKFdURkxvZ0xldmVsIGxldmVsKQogewog
ICAgIG1fbG9nZ2luZ0xldmVsID0gbGV2ZWw7CisKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9jb25u
ZWN0aW9uTG9jayB9OwogICAgIGlmIChtX2Nvbm5lY3Rpb24pCiAgICAgICAgIG1fY29ubmVjdGlv
bi0+c2VuZChNZXNzYWdlczo6TGliV2ViUlRDQ29kZWNzUHJveHk6OlNldFJUQ0xvZ2dpbmdMZXZl
bChsZXZlbCksIDApOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuaAppbmRleCA3MGM5OGJjYTM1YTY3ZTc2YTI0MjRmZmQ0
N2Q4OWFmMjRlMWM2Y2UzLi4xY2Q4ZjRlZTYxMThkOGQ0NTZmYTY5YWVlMDYyMmJmNzY1NzU2NThl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJS
VENDb2RlY3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJX
ZWJSVENDb2RlY3MuaApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUGl4ZWxC
dWZmZXJDb25mb3JtZXJDVi5oPgogI2luY2x1ZGUgPG1hcD4KICNpbmNsdWRlIDx3ZWJydGMvYXBp
L3ZpZGVvL3ZpZGVvX2NvZGVjX3R5cGUuaD4KKyNpbmNsdWRlIDx3dGYvQ2hlY2tlZExvY2suaD4K
ICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5j
bHVkZSA8d3RmL0xvY2suaD4KQEAgLTEyMiw3ICsxMjMsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgog
ICAgIExpYldlYlJUQ0NvZGVjcygpOwogICAgIHZvaWQgZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rp
b25BbmREaXNwYXRjaFRvVGhyZWFkKEZ1bmN0aW9uPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBlbnN1
cmVHUFVQcm9jZXNzQ29ubmVjdGlvbk9uTWFpblRocmVhZChMb2NrZXI8TG9jaz4mKTsKKyAgICB2
b2lkIGVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uT25NYWluVGhyZWFkV2l0aExvY2soKSBXVEZf
UkVRVUlSRVNfTE9DSyhtX2Nvbm5lY3Rpb25Mb2NrKTsKICAgICB2b2lkIGdwdVByb2Nlc3NDb25u
ZWN0aW9uTWF5Tm9Mb25nZXJCZU5lZWRlZCgpOwogCiAgICAgdm9pZCBmYWlsZWREZWNvZGluZyhS
VENEZWNvZGVySWRlbnRpZmllcik7CkBAIC0xNDQsOCArMTQ1LDggQEAgcHJpdmF0ZToKIAogICAg
IHN0ZDo6YXRvbWljPGJvb2w+IG1fbmVlZHNHUFVQcm9jZXNzQ29ubmVjdGlvbjsKIAotICAgIExv
Y2sgbV9jb25uZWN0aW9uTG9jazsKLSAgICBSZWZQdHI8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5l
Y3Rpb247CisgICAgQ2hlY2tlZExvY2sgbV9jb25uZWN0aW9uTG9jazsKKyAgICBSZWZQdHI8SVBD
OjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb24gV1RGX0dVQVJERURfQllfTE9DSyhtX2Nvbm5lY3Rp
b25Mb2NrKTsKICAgICBWZWN0b3I8RnVuY3Rpb248dm9pZCgpPj4gbV90YXNrc1RvRGlzcGF0Y2hB
ZnRlckVzdGFibGlzaGluZ0Nvbm5lY3Rpb247CiAKICAgICBSZWY8V29ya1F1ZXVlPiBtX3F1ZXVl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5jcHAKaW5kZXggOTIxZDYyNzIyYzFh
NmI1ZTIzZDI1MjI1NmU3ZDZmN2Y0MDcxZDdhMi4uMWYzMjg0YzY4N2FjMzEzN2NmOWE3YTk0YWEz
MmZhZTEzMmRmNmY2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3BwCkBA
IC04OSw3ICs4OSw3IEBAIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKiBQbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbk1hbmFnZXI6OmdldFBsdWdpblByb2Nlc3NDb25uZWN0CiAgICAgbV9wbHVnaW5Qcm9j
ZXNzQ29ubmVjdGlvbnMuYXBwZW5kKHBsdWdpblByb2Nlc3NDb25uZWN0aW9uLmNvcHlSZWYoKSk7
CiAKICAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fdG9rZW5zQW5kQ29ubmVjdGlv
bnNNdXRleCk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3Rva2Vuc0FuZENvbm5lY3Rpb25z
TG9jayB9OwogICAgICAgICBBU1NFUlQoIW1fdG9rZW5zQW5kQ29ubmVjdGlvbnMuY29udGFpbnMo
cGx1Z2luUHJvY2Vzc1Rva2VuKSk7CiAKICAgICAgICAgbV90b2tlbnNBbmRDb25uZWN0aW9ucy5z
ZXQocGx1Z2luUHJvY2Vzc1Rva2VuLCBwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi0+Y29ubmVjdGlv
bigpKTsKQEAgLTEwNCw3ICsxMDQsNyBAQCB2b2lkIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFu
YWdlcjo6cmVtb3ZlUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oUGx1Z2luUHJvY2VzcwogICAgIEFT
U0VSVCh2ZWN0b3JJbmRleCAhPSBub3RGb3VuZCk7CiAKICAgICB7Ci0gICAgICAgIExvY2tIb2xk
ZXIgbG9ja2VyKG1fdG9rZW5zQW5kQ29ubmVjdGlvbnNNdXRleCk7CisgICAgICAgIExvY2tlciBs
b2NrZXIgeyBtX3Rva2Vuc0FuZENvbm5lY3Rpb25zTG9jayB9OwogICAgICAgICBBU1NFUlQobV90
b2tlbnNBbmRDb25uZWN0aW9ucy5jb250YWlucyhwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi0+cGx1
Z2luUHJvY2Vzc1Rva2VuKCkpKTsKICAgICAgICAgCiAgICAgICAgIG1fdG9rZW5zQW5kQ29ubmVj
dGlvbnMucmVtb3ZlKHBsdWdpblByb2Nlc3NDb25uZWN0aW9uLT5wbHVnaW5Qcm9jZXNzVG9rZW4o
KSk7CkBAIC0xMTUsNyArMTE1LDcgQEAgdm9pZCBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFn
ZXI6OnJlbW92ZVBsdWdpblByb2Nlc3NDb25uZWN0aW9uKFBsdWdpblByb2Nlc3MKIAogdm9pZCBQ
bHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXI6OnBsdWdpblByb2Nlc3NDcmFzaGVkKHVpbnQ2
NF90IHBsdWdpblByb2Nlc3NUb2tlbikKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3Rva2Vu
c0FuZENvbm5lY3Rpb25zTXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX3Rva2Vuc0FuZENv
bm5lY3Rpb25zTG9jayB9OwogICAgIElQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbiA9IG1fdG9r
ZW5zQW5kQ29ubmVjdGlvbnMuZ2V0KHBsdWdpblByb2Nlc3NUb2tlbik7CiAKICAgICAvLyBJdCdz
IE9LIGZvciBjb25uZWN0aW9uIHRvIGJlIG51bGwgaGVyZTsgaXQgd2lsbCBoYXBwZW4gaWYgdGhp
cyB3ZWIgcHJvY2VzcyBkb2Vzbid0IGtub3cKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2Vy
LmgKaW5kZXggNGYxMzdiODVkZDAxNzYxM2ViZDFmOGFmMjEyZTdjN2M4NjMwY2Y4Yy4uYTAwYTlk
ZTQ1MDdiMTkxMTRhNzNmMzE5MTI4MWZhNmExZTg3Yzg2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb25NYW5hZ2VyLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExV
R0lOX0FQSSkKIAogI2luY2x1ZGUgIlBsdWdpblByb2Nlc3MuaCIKKyNpbmNsdWRlIDx3dGYvQ2hl
Y2tlZExvY2suaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CkBAIC02NCw4ICs2NSw4IEBAIHBy
aXZhdGU6CiAKICAgICBWZWN0b3I8UmVmUHRyPFBsdWdpblByb2Nlc3NDb25uZWN0aW9uPj4gbV9w
bHVnaW5Qcm9jZXNzQ29ubmVjdGlvbnM7CiAKLSAgICBMb2NrIG1fdG9rZW5zQW5kQ29ubmVjdGlv
bnNNdXRleDsKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8SVBDOjpDb25uZWN0aW9uPj4g
bV90b2tlbnNBbmRDb25uZWN0aW9uczsKKyAgICBDaGVja2VkTG9jayBtX3Rva2Vuc0FuZENvbm5l
Y3Rpb25zTG9jazsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8SVBDOjpDb25uZWN0aW9u
Pj4gbV90b2tlbnNBbmRDb25uZWN0aW9ucyBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fdG9rZW5zQW5k
Q29ubmVjdGlvbnNMb2NrKTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIuY3BwCmluZGV4IDdiM2YwODVkOTBiNzRhZjg3
MzRhYzY0ZGE4OWVkYTZlY2U0MGE2YTIuLjFiZGFmODIxMjkxZDM2NjVhOTFhNGI4ZjE1MjBlZDgx
MDgwZDJlODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0V2
ZW50RGlzcGF0Y2hlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
RXZlbnREaXNwYXRjaGVyLmNwcApAQCAtNzMsNyArNzMsNyBAQCBFdmVudERpc3BhdGNoZXI6On5F
dmVudERpc3BhdGNoZXIoKQogI2lmIEVOQUJMRShTQ1JPTExJTkdfVEhSRUFEKQogdm9pZCBFdmVu
dERpc3BhdGNoZXI6OmFkZFNjcm9sbGluZ1RyZWVGb3JQYWdlKFdlYlBhZ2UqIHdlYlBhZ2UpCiB7
Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9zY3JvbGxpbmdUcmVlc011dGV4KTsKKyAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV9zY3JvbGxpbmdUcmVlc0xvY2sgfTsKIAogICAgIEFTU0VSVCh3ZWJQYWdl
LT5jb3JlUGFnZSgpLT5zY3JvbGxpbmdDb29yZGluYXRvcigpKTsKICAgICBBU1NFUlQoIW1fc2Ny
b2xsaW5nVHJlZXMuY29udGFpbnMod2ViUGFnZS0+aWRlbnRpZmllcigpKSk7CkBAIC04NCw3ICs4
NCw3IEBAIHZvaWQgRXZlbnREaXNwYXRjaGVyOjphZGRTY3JvbGxpbmdUcmVlRm9yUGFnZShXZWJQ
YWdlKiB3ZWJQYWdlKQogCiB2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6cmVtb3ZlU2Nyb2xsaW5nVHJl
ZUZvclBhZ2UoV2ViUGFnZSogd2ViUGFnZSkKIHsKLSAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3Nj
cm9sbGluZ1RyZWVzTXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX3Njcm9sbGluZ1RyZWVz
TG9jayB9OwogICAgIEFTU0VSVChtX3Njcm9sbGluZ1RyZWVzLmNvbnRhaW5zKHdlYlBhZ2UtPmlk
ZW50aWZpZXIoKSkpOwogCiAgICAgbV9zY3JvbGxpbmdUcmVlcy5yZW1vdmUod2ViUGFnZS0+aWRl
bnRpZmllcigpKTsKQEAgLTEyNCw3ICsxMjQsNyBAQCB2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6d2hl
ZWxFdmVudChQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFdlYldoZWVsRXZlbnQmIHdoZQog
ICAgIGF1dG8gcHJvY2Vzc2luZ1N0ZXBzID0gT3B0aW9uU2V0PFdlYkNvcmU6OldoZWVsRXZlbnRQ
cm9jZXNzaW5nU3RlcHM+IHsgV2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwczo6TWFpblRocmVhZEZv
clNjcm9sbGluZywgV2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwczo6TWFpblRocmVhZEZvckJsb2Nr
aW5nRE9NRXZlbnREaXNwYXRjaCB9OwogI2lmIEVOQUJMRShTQ1JPTExJTkdfVEhSRUFEKQogICAg
IGRvIHsKLSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zY3JvbGxpbmdUcmVlc011dGV4KTsK
KyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fc2Nyb2xsaW5nVHJlZXNMb2NrIH07CiAKICAgICAg
ICAgYXV0byBzY3JvbGxpbmdUcmVlID0gbV9zY3JvbGxpbmdUcmVlcy5nZXQocGFnZUlEKTsKICAg
ICAgICAgaWYgKCFzY3JvbGxpbmdUcmVlKSB7CkBAIC0xODYsNyArMTg2LDcgQEAgdm9pZCBFdmVu
dERpc3BhdGNoZXI6Omdlc3R1cmVFdmVudChQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFdl
YktpdDo6V2ViR2VzdHUKICNpZiBFTkFCTEUoSU9TX1RPVUNIX0VWRU5UUykKIHZvaWQgRXZlbnRE
aXNwYXRjaGVyOjp0YWtlUXVldWVkVG91Y2hFdmVudHNGb3JQYWdlKGNvbnN0IFdlYlBhZ2UmIHdl
YlBhZ2UsIFRvdWNoRXZlbnRRdWV1ZSYgZGVzdGluYXRpb25RdWV1ZSkKIHsKLSAgICBMb2NrSG9s
ZGVyIGxvY2tlcigmbV90b3VjaEV2ZW50c0xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX3Rv
dWNoRXZlbnRzTG9jayB9OwogICAgIGRlc3RpbmF0aW9uUXVldWUgPSBtX3RvdWNoRXZlbnRzLnRh
a2Uod2ViUGFnZS5pZGVudGlmaWVyKCkpOwogfQogCkBAIC0xOTksNyArMTk5LDcgQEAgdm9pZCBF
dmVudERpc3BhdGNoZXI6OnRvdWNoRXZlbnQoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBX
ZWJUb3VjaEV2ZW50JiB0b3UKIHsKICAgICBib29sIHVwZGF0ZUxpc3RXYXNFbXB0eTsKICAgICB7
Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKCZtX3RvdWNoRXZlbnRzTG9jayk7CisgICAgICAg
IExvY2tlciBsb2NrZXIgeyBtX3RvdWNoRXZlbnRzTG9jayB9OwogICAgICAgICB1cGRhdGVMaXN0
V2FzRW1wdHkgPSBtX3RvdWNoRXZlbnRzLmlzRW1wdHkoKTsKICAgICAgICAgYXV0byBhZGRSZXN1
bHQgPSBtX3RvdWNoRXZlbnRzLmFkZChwYWdlSUQsIFRvdWNoRXZlbnRRdWV1ZSgpKTsKICAgICAg
ICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KQpAQCAtMjI5LDcgKzIyOSw3IEBAIHZvaWQgRXZl
bnREaXNwYXRjaGVyOjpkaXNwYXRjaFRvdWNoRXZlbnRzKCkKIAogICAgIEhhc2hNYXA8UGFnZUlk
ZW50aWZpZXIsIFRvdWNoRXZlbnRRdWV1ZT4gbG9jYWxDb3B5OwogICAgIHsKLSAgICAgICAgTG9j
a0hvbGRlciBsb2NrZXIoJm1fdG91Y2hFdmVudHNMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tl
ciB7IG1fdG91Y2hFdmVudHNMb2NrIH07CiAgICAgICAgIGxvY2FsQ29weS5zd2FwKG1fdG91Y2hF
dmVudHMpOwogICAgIH0KIApAQCAtMjgyLDcgKzI4Miw3IEBAIHZvaWQgRXZlbnREaXNwYXRjaGVy
OjpzZW5kRGlkUmVjZWl2ZUV2ZW50KFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViRXZlbnQ6OlR5
cGUKIHZvaWQgRXZlbnREaXNwYXRjaGVyOjpub3RpZnlTY3JvbGxpbmdUcmVlc0Rpc3BsYXlXYXNS
ZWZyZXNoZWQoUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKQogewogI2lmIEVOQUJMRShTQ1JP
TExJTkdfVEhSRUFEKQotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc2Nyb2xsaW5nVHJlZXNNdXRl
eCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fc2Nyb2xsaW5nVHJlZXNMb2NrIH07CiAgICAgZm9y
IChhdXRvIGtleVZhbHVlUGFpciA6IG1fc2Nyb2xsaW5nVHJlZXMpCiAgICAgICAgIGtleVZhbHVl
UGFpci52YWx1ZS0+ZGlzcGxheURpZFJlZnJlc2goZGlzcGxheUlEKTsKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIuaAppbmRl
eCBiMmNjYjg0NGFhYzU1N2MzMWJmNjEzMTA1OGI2MWYyZWUxOGEwY2M1Li5mYzI2YzQ0ZTc4YWI0
Yzg4MjAzZjI1NmI3NWI3N2U5NWVjNDQxNTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIuaApAQCAtMzIsOCArMzIsOCBAQAogI2lu
Y2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1XaGVlbEV2ZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9X
aGVlbEV2ZW50RGVsdGFGaWx0ZXIuaD4KICNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8d3Rm
L0NoZWNrZWRMb2NrLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYv
TG9jay5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oPgpAQCAtMTE4LDEzICsx
MTgsMTMgQEAgcHJpdmF0ZToKICAgICBSZWY8V29ya1F1ZXVlPiBtX3F1ZXVlOwogCiAjaWYgRU5B
QkxFKFNDUk9MTElOR19USFJFQUQpCi0gICAgTG9jayBtX3Njcm9sbGluZ1RyZWVzTXV0ZXg7Ci0g
ICAgSGFzaE1hcDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgUmVmUHRyPFdlYkNvcmU6OlRocmVh
ZGVkU2Nyb2xsaW5nVHJlZT4+IG1fc2Nyb2xsaW5nVHJlZXM7CisgICAgQ2hlY2tlZExvY2sgbV9z
Y3JvbGxpbmdUcmVlc0xvY2s7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwg
UmVmUHRyPFdlYkNvcmU6OlRocmVhZGVkU2Nyb2xsaW5nVHJlZT4+IG1fc2Nyb2xsaW5nVHJlZXMg
V1RGX0dVQVJERURfQllfTE9DSyhtX3Njcm9sbGluZ1RyZWVzTG9jayk7CiAjZW5kaWYKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6V2hlZWxFdmVudERlbHRhRmlsdGVyPiBtX3JlY2VudFdo
ZWVsRXZlbnREZWx0YUZpbHRlcjsKICNpZiBFTkFCTEUoSU9TX1RPVUNIX0VWRU5UUykKLSAgICBM
b2NrIG1fdG91Y2hFdmVudHNMb2NrOwotICAgIEhhc2hNYXA8V2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIsIFRvdWNoRXZlbnRRdWV1ZT4gbV90b3VjaEV2ZW50czsKKyAgICBDaGVja2VkTG9jayBtX3Rv
dWNoRXZlbnRzTG9jazsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBUb3Vj
aEV2ZW50UXVldWU+IG1fdG91Y2hFdmVudHMgV1RGX0dVQVJERURfQllfTE9DSyhtX3RvdWNoRXZl
bnRzTG9jayk7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1ZpZXdVcGRhdGVEaXNwYXRjaGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1ZpZXdVcGRhdGVEaXNwYXRjaGVyLmNwcAppbmRleCBlOWExMzk0ODNk
Y2M0NTRhNjJkOGZhOTM1MTcwZGRhNzgxODVhZTBlLi40NDY3ZTQ4ODhjNTY4M2VmYzIxYzU5NmU0
NGJhODQ4ZjY5ZDc1NTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9WaWV3VXBkYXRlRGlzcGF0Y2hlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvVmlld1VwZGF0ZURpc3BhdGNoZXIuY3BwCkBAIC02MCw3ICs2MCw3IEBAIHZv
aWQgVmlld1VwZGF0ZURpc3BhdGNoZXI6OnZpc2libGVDb250ZW50UmVjdFVwZGF0ZShXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciBwYWdlCiB7CiAgICAgYm9vbCB1cGRhdGVMaXN0V2FzRW1wdHk7CiAg
ICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcigmbV9kYXRhTXV0ZXgpOworICAgICAgICBM
b2NrZXIgbG9ja2VyIHsgbV9sYXRlc3RVcGRhdGVMb2NrIH07CiAgICAgICAgIHVwZGF0ZUxpc3RX
YXNFbXB0eSA9IG1fbGF0ZXN0VXBkYXRlLmlzRW1wdHkoKTsKICAgICAgICAgYXV0byBpdGVyYXRv
ciA9IG1fbGF0ZXN0VXBkYXRlLmZpbmQocGFnZUlEKTsKICAgICAgICAgaWYgKGl0ZXJhdG9yID09
IG1fbGF0ZXN0VXBkYXRlLmVuZCgpKQpAQCAtNzksNyArNzksNyBAQCB2b2lkIFZpZXdVcGRhdGVE
aXNwYXRjaGVyOjpkaXNwYXRjaFZpc2libGVDb250ZW50UmVjdFVwZGF0ZSgpCiB7CiAgICAgSGFz
aE1hcDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgVW5pcXVlUmVmPFVwZGF0ZURhdGE+PiB1cGRh
dGU7CiAgICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcigmbV9kYXRhTXV0ZXgpOworICAg
ICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sYXRlc3RVcGRhdGVMb2NrIH07CiAgICAgICAgIHVwZGF0
ZSA9IHN0ZDo6ZXhjaGFuZ2UobV9sYXRlc3RVcGRhdGUsIHsgfSk7CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3VXBkYXRlRGlzcGF0Y2hl
ci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld1VwZGF0ZURpc3BhdGNo
ZXIuaAppbmRleCAwNTZlNTM3ODQzYmM3NTU5MzY2YWRiM2ZiMWEwMjU1NzAwM2JmZDEzLi4xOGIw
MzFkNjIyYjA3OWMxZmRjNzUxNDg5ZTk3OGMxYjRhYzNkZGVhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3VXBkYXRlRGlzcGF0Y2hlci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdVcGRhdGVEaXNwYXRjaGVyLmgKQEAg
LTMxLDggKzMxLDggQEAKIAogI2luY2x1ZGUgIlZpc2libGVDb250ZW50UmVjdFVwZGF0ZUluZm8u
aCIKICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8d3RmL0No
ZWNrZWRMb2NrLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvTG9j
ay5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC02NCw4
ICs2NCw4IEBAIHByaXZhdGU6CiAgICAgfTsKIAogICAgIFJlZjxXb3JrUXVldWU+IG1fcXVldWU7
Ci0gICAgTG9jayBtX2RhdGFNdXRleDsKLSAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyLCBVbmlxdWVSZWY8VXBkYXRlRGF0YT4+IG1fbGF0ZXN0VXBkYXRlOworICAgIENoZWNrZWRM
b2NrIG1fbGF0ZXN0VXBkYXRlTG9jazsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyLCBVbmlxdWVSZWY8VXBkYXRlRGF0YT4+IG1fbGF0ZXN0VXBkYXRlIFdURl9HVUFSREVEX0JZ
X0xPQ0sobV9sYXRlc3RVcGRhdGVMb2NrKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvWFBDRW5kcG9pbnQu
bW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9YUENFbmRwb2ludC5tbQppbmRl
eCBkZmJjNDE2MjhmMDFjZGE3OTI0YWFhN2Y2Mzg3MGZkOTY4M2RiNzNjLi5hZjlhMjNlNWJmNDYx
ZGIyMGVkN2ViYzNjM2YxZjdiZDNlNzM4YmQ1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdC9YUENFbmRwb2ludC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdC9YUENFbmRwb2ludC5tbQpAQCAtMzcsMjEgKzM3LDIxIEBAIHN0YXRpYyBi
b29sIGNsaWVudFJlY2VpdmVkTWVzc2FnZUZyb21FbmRwb2ludCA9IGZhbHNlOwogc3RhdGljIGNv
bnN0ZXhwciBhdXRvIHRlc3RNZXNzYWdlRnJvbUVuZHBvaW50ID0gInRlc3QtbWVzc2FnZS1mcm9t
LWVuZHBvaW50IjsKIHN0YXRpYyBjb25zdGV4cHIgYXV0byB0ZXN0TWVzc2FnZUZyb21DbGllbnQg
PSAidGVzdC1tZXNzYWdlLWZyb20tY2xpZW50IjsKIAotY2xhc3MgWFBDRW5kcG9pbnQgOiBwdWJs
aWMgV2ViS2l0OjpYUENFbmRwb2ludCB7CitjbGFzcyBYUENFbmRwb2ludCBmaW5hbCA6IHB1Ymxp
YyBXZWJLaXQ6OlhQQ0VuZHBvaW50IHsKIHByaXZhdGU6Ci0gICAgY29uc3QgY2hhciogeHBjRW5k
cG9pbnRNZXNzYWdlTmFtZUtleSgpIGNvbnN0IG92ZXJyaWRlCisgICAgY29uc3QgY2hhciogeHBj
RW5kcG9pbnRNZXNzYWdlTmFtZUtleSgpIGNvbnN0IGZpbmFsCiAgICAgewogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgY29uc3QgY2hhciogeHBjRW5kcG9pbnRNZXNzYWdlTmFt
ZSgpIGNvbnN0IG92ZXJyaWRlCisgICAgY29uc3QgY2hhciogeHBjRW5kcG9pbnRNZXNzYWdlTmFt
ZSgpIGNvbnN0IGZpbmFsCiAgICAgewogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0g
ICAgY29uc3QgY2hhciogeHBjRW5kcG9pbnROYW1lS2V5KCkgY29uc3Qgb3ZlcnJpZGUKKyAgICBj
b25zdCBjaGFyKiB4cGNFbmRwb2ludE5hbWVLZXkoKSBjb25zdCBmaW5hbAogICAgIHsKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIHZvaWQgaGFuZGxlRXZlbnQoeHBjX2Nvbm5l
Y3Rpb25fdCBjb25uZWN0aW9uLCB4cGNfb2JqZWN0X3QgZXZlbnQpIG92ZXJyaWRlCisgICAgdm9p
ZCBoYW5kbGVFdmVudCh4cGNfY29ubmVjdGlvbl90IGNvbm5lY3Rpb24sIHhwY19vYmplY3RfdCBl
dmVudCkgZmluYWwKICAgICB7CiAgICAgICAgIFN0cmluZyBtZXNzYWdlTmFtZSA9IHhwY19kaWN0
aW9uYXJ5X2dldF9zdHJpbmcoZXZlbnQsIFhQQ0VuZHBvaW50Ojp4cGNNZXNzYWdlTmFtZUtleSk7
CiAgICAgICAgIGlmIChtZXNzYWdlTmFtZSA9PSB0ZXN0TWVzc2FnZUZyb21DbGllbnQpIHsKQEAg
LTY0LDE1ICs2NCwxNSBAQCBwcml2YXRlOgogICAgIH0KIH07CiAKLWNsYXNzIFhQQ0VuZHBvaW50
Q2xpZW50IDogcHVibGljIFdlYktpdDo6WFBDRW5kcG9pbnRDbGllbnQgeworY2xhc3MgWFBDRW5k
cG9pbnRDbGllbnQgZmluYWwgOiBwdWJsaWMgV2ViS2l0OjpYUENFbmRwb2ludENsaWVudCB7CiBw
cml2YXRlOgotICAgIHZvaWQgaGFuZGxlRXZlbnQoeHBjX29iamVjdF90IGV2ZW50KSBvdmVycmlk
ZQorICAgIHZvaWQgaGFuZGxlRXZlbnQoeHBjX29iamVjdF90IGV2ZW50KSBmaW5hbAogICAgIHsK
ICAgICAgICAgU3RyaW5nIG1lc3NhZ2VOYW1lID0geHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhl
dmVudCwgWFBDRW5kcG9pbnQ6OnhwY01lc3NhZ2VOYW1lS2V5KTsKICAgICAgICAgaWYgKG1lc3Nh
Z2VOYW1lID09IHRlc3RNZXNzYWdlRnJvbUVuZHBvaW50KQogICAgICAgICAgICAgY2xpZW50UmVj
ZWl2ZWRNZXNzYWdlRnJvbUVuZHBvaW50ID0gdHJ1ZTsKICAgICB9Ci0gICAgdm9pZCBkaWRDb25u
ZWN0KCkgb3ZlcnJpZGUKKyAgICB2b2lkIGRpZENvbm5lY3QoKSBmaW5hbAogICAgIHsKICAgICAg
ICAgYXV0byBtZXNzYWdlID0gYWRvcHRPU09iamVjdCh4cGNfZGljdGlvbmFyeV9jcmVhdGUobnVs
bHB0ciwgbnVsbHB0ciwgMCkpOwogICAgICAgICB4cGNfZGljdGlvbmFyeV9zZXRfc3RyaW5nKG1l
c3NhZ2UuZ2V0KCksIFhQQ0VuZHBvaW50Ojp4cGNNZXNzYWdlTmFtZUtleSwgdGVzdE1lc3NhZ2VG
cm9tQ2xpZW50KTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>