<?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>235752</bug_id>
          
          <creation_ts>2022-01-27 19:12:02 -0800</creation_ts>
          <short_desc>Enhance sanitizeStackForVM() to assist with crash analysis.</short_desc>
          <delta_ts>2022-02-01 09:35:19 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1834802</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2022-01-27 19:12:02 -0800</bug_when>
    <thetext>rdar://81014601</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834809</commentid>
    <comment_count>1</comment_count>
      <attachid>450202</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2022-01-27 20:08:43 -0800</bug_when>
    <thetext>Created attachment 450202
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834812</commentid>
    <comment_count>2</comment_count>
      <attachid>450203</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2022-01-27 21:23:51 -0800</bug_when>
    <thetext>Created attachment 450203
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835411</commentid>
    <comment_count>3</comment_count>
      <attachid>450371</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2022-01-30 18:52:32 -0800</bug_when>
    <thetext>Created attachment 450371
test patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835412</commentid>
    <comment_count>4</comment_count>
      <attachid>450372</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2022-01-30 18:57:16 -0800</bug_when>
    <thetext>Created attachment 450372
testing on EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835422</commentid>
    <comment_count>5</comment_count>
      <attachid>450376</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2022-01-30 21:08:25 -0800</bug_when>
    <thetext>Created attachment 450376
test2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835435</commentid>
    <comment_count>6</comment_count>
      <attachid>450381</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2022-01-30 22:43:08 -0800</bug_when>
    <thetext>Created attachment 450381
test3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835443</commentid>
    <comment_count>7</comment_count>
      <attachid>450384</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2022-01-30 23:44:40 -0800</bug_when>
    <thetext>Created attachment 450384
test4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835444</commentid>
    <comment_count>8</comment_count>
      <attachid>450385</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2022-01-31 00:03:42 -0800</bug_when>
    <thetext>Created attachment 450385
test5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835763</commentid>
    <comment_count>9</comment_count>
      <attachid>450474</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2022-01-31 16:46:22 -0800</bug_when>
    <thetext>Created attachment 450474
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835796</commentid>
    <comment_count>10</comment_count>
      <attachid>450485</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2022-01-31 17:43:21 -0800</bug_when>
    <thetext>Created attachment 450485
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835825</commentid>
    <comment_count>11</comment_count>
      <attachid>450485</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2022-01-31 20:31:09 -0800</bug_when>
    <thetext>Comment on attachment 450485
proposed patch.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836022</commentid>
    <comment_count>12</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-01 09:35:15 -0800</bug_when>
    <thetext>Committed r288885 (246637@main): &lt;https://commits.webkit.org/246637@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 450485.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450202</attachid>
            <date>2022-01-27 20:08:43 -0800</date>
            <delta_ts>2022-01-27 21:23:51 -0800</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-235752.patch</filename>
            <type>text/plain</type>
            <size>20608</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjg4NjQ1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3IEBA
CisyMDIyLTAxLTI3ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBF
bmhhbmNlIHNhbml0aXplU3RhY2tGb3JWTSgpIHRvIGFzc2lzdCB3aXRoIGNyYXNoIGFuYWx5c2lz
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1NzUy
CisgICAgICAgIHJkYXI6Ly84MTAxNDYwMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIDEuIFJlbW92ZSB0aGUgQXNzZW1ibHlIZWxwZXJzIHZlcnNpb24g
b2Ygc2FuaXRpemVTdGFjay4gIEluc3RlYWQsIG1ha2UgdGhlIDMKKyAgICAgICAgICAgSklUIG9w
ZXJhdGlvbiBmdW5jdGlvbnMgY2FsbCBzYW5pdGl6ZVN0YWNrRm9yVk0oKSBpbnN0ZWFkLiAgVGhp
cyBlbnN1cmVzCisgICAgICAgICAgIHRoYXQgc2FuaXRpemVTdGFjayBjcmFzaGVzIGFyZSBub3Qg
b2JzY3VyZWQgYXMgZ2VuZXJpYyBKSVQgY3Jhc2hlcy4KKworICAgICAgICAyLiBBZGQgc2FuaXR5
IGNoZWNrIFJFTEVBU0VfQVNTRVJUcyB0byBWTTo6c2V0TGFzdFN0YWNrVG9wKCkgd2l0aCBhIGNh
cHR1cmUgb2YKKyAgICAgICAgICAgdGhlIHJlbGV2YW50IHZhcmlhYmxlcyBmb3IgY3Jhc2ggYW5h
bHlzaXMuCisKKyAgICAgICAgMy4gRml4IGxvZ1Nhbml0aXplU3RhY2soKSBzbyB0aGF0IGl0IG5v
IGxvbmdlciByZWxpZXMgb24gdm0udG9wQ2FsbEZyYW1lLgorICAgICAgICAgICB2bS50b3BDYWxs
RnJhbWUgbWF5IG5vdCBiZSBwcm9wZXJseSBpbml0aWFsaXplZCBhdCBhbGwgdGhlIHBsYWNlcyB0
aGF0CisgICAgICAgICAgIHNhbml0aXplU3RhY2tGb3JWTSgpIGlzIGNhbGxlZC4KKworICAgICAg
ICA0LiBBZGQgYSBKU0xvY2sgY2hlY2sgdG8gc2FuaXRpemVTdGFja0ZvclZNKCksIGFuZCByZXR1
cm4gZWFybHkgaWYgbm90IG93bmVkIGJ5CisgICAgICAgICAgIHRoZSBjdXJyZW50IHRocmVhZC4g
IElmIHRoZSBKU0xvY2sgaXMgbm90IG93bmVkIGJ5IHRoZSBjdXJyZW50IHRocmVhZCwgd2UgY2Fu
J3QKKyAgICAgICAgICAgcmVseSBvbiB2bS5sYXN0U3RhY2tUb3AoKSBiZWluZyBhIHNhbmUgdmFs
dWUuICBIZW5jZSwgaXQncyBub3QgcG9zc2libGUgdG8KKyAgICAgICAgICAgZG8gc3RhY2sgc2Fu
aXRpemF0aW9uIGNvcnJlY3RseS4KKworICAgICAgICAgICBBZGQgc2FuaXR5IGNoZWNrIFJFTEVB
U0VfQVNTRVJUcyB0byBzYW5pdGl6ZVN0YWNrRm9yVk0oKSB3aXRoIGEgY2FwdHVyZSBvZgorICAg
ICAgICAgICB0aGUgcmVsZXZhbnQgdmFyaWFibGVzIGZvciBjcmFzaCBhbmFseXNpcy4KKworICAg
ICAgICAqIGppdC9Bc3NlbWJseUhlbHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhl
bHBlcnM6OnNhbml0aXplU3RhY2tJbmxpbmUpOiBEZWxldGVkLgorICAgICAgICAqIGppdC9Bc3Nl
bWJseUhlbHBlcnMuaDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAg
IChKU0M6OkpTQ19ERUZJTkVfSklUX09QRVJBVElPTik6CisgICAgICAgICogaml0L1RodW5rR2Vu
ZXJhdG9ycy5jcHA6CisgICAgICAgIChKU0M6OnNsb3dQYXRoRm9yKToKKyAgICAgICAgKiBydW50
aW1lL0pTTG9jay5jcHA6CisgICAgICAgIChKU0M6OkpTTG9jazo6ZGlkQWNxdWlyZUxvY2spOgor
ICAgICAgICAoSlNDOjpKU0xvY2s6OmdyYWJBbGxMb2Nrcyk6CisgICAgICAgICogcnVudGltZS9W
TS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAgICAgIChKU0M6OlZNOjpzZXRMYXN0
U3RhY2tUb3ApOgorICAgICAgICAoSlNDOjpsb2dTYW5pdGl6ZVN0YWNrKToKKyAgICAgICAgKEpT
Qzo6c2FuaXRpemVTdGFja0ZvclZNKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisKIDIwMjIt
MDEtMjYgIEFsZXhleSBTaHZheWthICA8YXNodmF5a2FAYXBwbGUuY29tPgogCiAgICAgICAgIGds
b2JhbFRoaXMucXVldWVNaWNyb3Rhc2soKSBzaG91bGQgcmVwb3J0IHRocm93biBleGNlcHRpb25z
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3Bw
CShyZXZpc2lvbiAyODg2NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5
SGVscGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDExLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDExLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMTI4LDE5ICsxMTI4LDYgQEAgdm9pZCBB
c3NlbWJseUhlbHBlcnM6OmNvcHlDYWxsZWVTYXZlc1RvRQogI2VuZGlmCiB9CiAKLXZvaWQgQXNz
ZW1ibHlIZWxwZXJzOjpzYW5pdGl6ZVN0YWNrSW5saW5lKFZNJiB2bSwgR1BSUmVnIHNjcmF0Y2gp
Ci17Ci0gICAgbG9hZFB0cih2bS5hZGRyZXNzT2ZMYXN0U3RhY2tUb3AoKSwgc2NyYXRjaCk7Ci0g
ICAgSnVtcCBkb25lID0gYnJhbmNoUHRyKEJlbG93T3JFcXVhbCwgc3RhY2tQb2ludGVyUmVnaXN0
ZXIsIHNjcmF0Y2gpOwotICAgIExhYmVsIGxvb3AgPSBsYWJlbCgpOwotICAgIHN0b3JlUHRyKFRy
dXN0ZWRJbW1QdHIobnVsbHB0ciksIEFkZHJlc3Moc2NyYXRjaCkpOwotICAgIGFkZFB0cihUcnVz
dGVkSW1tUHRyKHNpemVvZih2b2lkKikpLCBzY3JhdGNoKTsKLSAgICBicmFuY2hQdHIoQWJvdmUs
IHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBzY3JhdGNoKS5saW5rVG8obG9vcCwgdGhpcyk7Ci0gICAg
ZG9uZS5saW5rKHRoaXMpOwotICAgIG1vdmUoc3RhY2tQb2ludGVyUmVnaXN0ZXIsIHNjcmF0Y2gp
OwotICAgIHN0b3JlUHRyKHNjcmF0Y2gsIHZtLmFkZHJlc3NPZkxhc3RTdGFja1RvcCgpKTsKLX0K
LQogdm9pZCBBc3NlbWJseUhlbHBlcnM6OmNhZ2VXaXRob3V0VW50YWdnaW5nKEdpZ2FjYWdlOjpL
aW5kIGtpbmQsIEdQUlJlZyBzdG9yYWdlKQogewogI2lmIEdJR0FDQUdFX0VOQUJMRUQKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAkocmV2aXNpb24g
Mjg4NjQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTE3MDksOCArMTcwOSw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIGJyYW5jaFRlc3Q4KFplcm8sIEFic29sdXRlQWRkcmVzcyh2bS5oZWFwLmFkZHJlc3NPZk11
dGF0b3JTaG91bGRCZUZlbmNlZCgpKSk7CiAgICAgfQogICAgIAotICAgIHZvaWQgc2FuaXRpemVT
dGFja0lubGluZShWTSYsIEdQUlJlZyBzY3JhdGNoKTsKLSAgICAKICAgICAvLyBFbWl0cyB0aGUg
YnJhbmNoIHN0cnVjdHVyZSBmb3IgdHlwZW9mLiBUaGUgY29kZSBlbWl0dGVkIGJ5IHRoaXMgZG9l
c24ndCBmYWxsIHRocm91Z2guIFRoZQogICAgIC8vIGZ1bmN0b3IgaXMgY2FsbGVkIGF0IHRob3Nl
IHBvaW50cyB3aGVyZSB3ZSBoYXZlIHBpbnBvaW50ZWQgYSB0eXBlLiBPbmUgd2F5IHRvIHVzZSB0
aGlzIGlzIHRvCiAgICAgLy8gaGF2ZSB0aGUgZnVuY3RvciBlbWl0IHRoZSBjb2RlIHRvIHB1dCB0
aGUgdHlwZSBzdHJpbmcgaW50byBhbiBhcHByb3ByaWF0ZSByZWdpc3RlciBhbmQgdGhlbgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCShyZXZpc2lv
biAyODg2NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
My0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMy0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMTQ0OCwxMSArMTQ0OCwxMyBAQCBKU0NfREVGSU5FX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uQ2FsbEV2CiAKIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVy
YXRpb25MaW5rQ2FsbCwgU2xvd1BhdGhSZXR1cm5UeXBlLCAoQ2FsbEZyYW1lKiBjYWxsZWVGcmFt
ZSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0lu
Zm8pKQogeworICAgIHNhbml0aXplU3RhY2tGb3JWTShnbG9iYWxPYmplY3QtPnZtKCkpOwogICAg
IHJldHVybiBsaW5rRm9yKGNhbGxlZUZyYW1lLCBnbG9iYWxPYmplY3QsIGNhbGxMaW5rSW5mbyk7
CiB9CiAKIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25MaW5rUG9seW1vcnBoaWND
YWxsLCBTbG93UGF0aFJldHVyblR5cGUsIChDYWxsRnJhbWUqIGNhbGxlZUZyYW1lLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbykpCiB7Cisg
ICAgc2FuaXRpemVTdGFja0ZvclZNKGdsb2JhbE9iamVjdC0+dm0oKSk7CiAgICAgQVNTRVJUKGNh
bGxMaW5rSW5mby0+c3BlY2lhbGl6YXRpb25LaW5kKCkgPT0gQ29kZUZvckNhbGwpOwogICAgIEpT
Q2VsbCogY2FsbGVlQXNGdW5jdGlvbkNlbGw7CiAgICAgU2xvd1BhdGhSZXR1cm5UeXBlIHJlc3Vs
dCA9IHZpcnR1YWxGb3JXaXRoRnVuY3Rpb24oZ2xvYmFsT2JqZWN0LCBjYWxsZWVGcmFtZSwgY2Fs
bExpbmtJbmZvLCBjYWxsZWVBc0Z1bmN0aW9uQ2VsbCk7CkBAIC0xNDY0LDYgKzE0NjYsNyBAQCBK
U0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTGlua1BvCiAKIEpTQ19ERUZJTkVfSklU
X09QRVJBVElPTihvcGVyYXRpb25WaXJ0dWFsQ2FsbCwgU2xvd1BhdGhSZXR1cm5UeXBlLCAoQ2Fs
bEZyYW1lKiBjYWxsZWVGcmFtZSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbExp
bmtJbmZvKiBjYWxsTGlua0luZm8pKQogeworICAgIHNhbml0aXplU3RhY2tGb3JWTShnbG9iYWxP
YmplY3QtPnZtKCkpOwogICAgIEpTQ2VsbCogY2FsbGVlQXNGdW5jdGlvbkNlbGxJZ25vcmVkOwog
ICAgIHJldHVybiB2aXJ0dWFsRm9yV2l0aEZ1bmN0aW9uKGdsb2JhbE9iamVjdCwgY2FsbGVlRnJh
bWUsIGNhbGxMaW5rSW5mbywgY2FsbGVlQXNGdW5jdGlvbkNlbGxJZ25vcmVkKTsKIH0KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAJKHJldmlz
aW9uIDI4ODY0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3Jz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE5Miw3ICsxOTIsNiBAQCBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SklUVGh1bmtQdHJUYWc+IHRoCiAKIHN0YXRpYyB2b2lkIHNsb3dQYXRoRm9yKENDYWxs
SGVscGVycyYgaml0LCBWTSYgdm0sIFNwcnRfSklUT3BlcmF0aW9uX0VHQ2xpIHNsb3dQYXRoRnVu
Y3Rpb24pCiB7Ci0gICAgaml0LnNhbml0aXplU3RhY2tJbmxpbmUodm0sIEdQUkluZm86Om5vbkFy
Z0dQUjApOwogICAgIGppdC5lbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOwogICAgIGppdC5zdG9yZVB0
cihHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgJnZtLnRvcENhbGxGcmFtZSk7CiAjaWYgT1Mo
V0lORE9XUykgJiYgQ1BVKFg4Nl82NCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTTG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNMb2NrLmNwcAkocmV2aXNpb24gMjg4NjQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNMb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDUtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDUtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTEzOCw4ICsxMzgsNyBAQCB2b2lkIEpTTG9jazo6
ZGlkQWNxdWlyZUxvY2soKQogICAgIG1fZW50cnlBdG9tU3RyaW5nVGFibGUgPSB0aHJlYWQuc2V0
Q3VycmVudEF0b21TdHJpbmdUYWJsZShtX3ZtLT5hdG9tU3RyaW5nVGFibGUoKSk7CiAgICAgQVNT
RVJUKG1fZW50cnlBdG9tU3RyaW5nVGFibGUpOwogCi0gICAgbV92bS0+c2V0TGFzdFN0YWNrVG9w
KHRocmVhZC5zYXZlZExhc3RTdGFja1RvcCgpKTsKLSAgICBBU1NFUlQodGhyZWFkLnN0YWNrKCku
Y29udGFpbnMobV92bS0+bGFzdFN0YWNrVG9wKCkpKTsKKyAgICBtX3ZtLT5zZXRMYXN0U3RhY2tU
b3AodGhyZWFkKTsKIAogICAgIGlmIChtX3ZtLT5oZWFwLmhhc0FjY2VzcygpKQogICAgICAgICBt
X3Nob3VsZFJlbGVhc2VIZWFwQWNjZXNzID0gZmFsc2U7CkBAIC0yNzcsNyArMjc2LDcgQEAgdm9p
ZCBKU0xvY2s6OmdyYWJBbGxMb2NrcyhEcm9wQWxsTG9ja3MqIAogCiAgICAgVGhyZWFkJiB0aHJl
YWQgPSBUaHJlYWQ6OmN1cnJlbnQoKTsKICAgICBtX3ZtLT5zZXRTdGFja1BvaW50ZXJBdFZNRW50
cnkodGhyZWFkLnNhdmVkU3RhY2tQb2ludGVyQXRWTUVudHJ5KCkpOwotICAgIG1fdm0tPnNldExh
c3RTdGFja1RvcCh0aHJlYWQuc2F2ZWRMYXN0U3RhY2tUb3AoKSk7CisgICAgbV92bS0+c2V0TGFz
dFN0YWNrVG9wKHRocmVhZCk7CiB9CiAKIEpTTG9jazo6RHJvcEFsbExvY2tzOjpEcm9wQWxsTG9j
a3MoVk0qIHZtKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkocmV2aXNp
b24gMjg4NjQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOC0yMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0y
MDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMjQyLDkgKzI0Miw4IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFw
VHlwZSBoZWFwVHlwZSwKICAgICAgICAgQ1JBU0hfV0lUSF9JTkZPKDB4NDI0MjQyNDIyMDIwMjAy
MCwgMHhiYWRiZWVmMGJhZGJlZWYsIDB4MTIzNDEyMzQxMjM0MTIzNCwgMHgxMzM3MTMzNzEzMzcx
MzM3KTsKIAogICAgIGludGVycHJldGVyID0gbmV3IEludGVycHJldGVyKCp0aGlzKTsKLSAgICBT
dGFja0JvdW5kcyBzdGFjayA9IFRocmVhZDo6Y3VycmVudCgpLnN0YWNrKCk7CiAgICAgdXBkYXRl
U29mdFJlc2VydmVkWm9uZVNpemUoT3B0aW9uczo6c29mdFJlc2VydmVkWm9uZVNpemUoKSk7Ci0g
ICAgc2V0TGFzdFN0YWNrVG9wKHN0YWNrLm9yaWdpbigpKTsKKyAgICBzZXRMYXN0U3RhY2tUb3Ao
VGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgSlNSdW5Mb29wVGltZXI6Ok1hbmFnZXI6OnNoYXJl
ZCgpLnJlZ2lzdGVyVk0oKnRoaXMpOwogCkBAIC01MDMsOSArNTAyLDE0IEBAIHZvaWQgVk06OnBy
aW1pdGl2ZUdpZ2FjYWdlRGlzYWJsZWQoKQogICAgIG1fbmVlZFRvRmlyZVByaW1pdGl2ZUdpZ2Fj
YWdlRW5hYmxlZCA9IHRydWU7CiB9CiAKLXZvaWQgVk06OnNldExhc3RTdGFja1RvcCh2b2lkKiBs
YXN0U3RhY2tUb3ApCi17IAotICAgIG1fbGFzdFN0YWNrVG9wID0gbGFzdFN0YWNrVG9wOwordm9p
ZCBWTTo6c2V0TGFzdFN0YWNrVG9wKGNvbnN0IFRocmVhZCYgdGhyZWFkKQoreworICAgIG1fbGFz
dFN0YWNrVG9wID0gdGhyZWFkLnNhdmVkTGFzdFN0YWNrVG9wKCk7CisgICAgYXV0byYgc3RhY2sg
PSB0aHJlYWQuc3RhY2soKTsKKyAgICBSRUxFQVNFX0FTU0VSVChzdGFjay5jb250YWlucyhtX2xh
c3RTdGFja1RvcCksIDB4NTUxMCwgbV9sYXN0U3RhY2tUb3AsIHN0YWNrLm9yaWdpbigpLCBzdGFj
ay5lbmQoKSk7CisjaWYgT1MoREFSV0lOKSAmJiBDUFUoQVJNNjQpCisgICAgUkVMRUFTRV9BU1NF
UlQodGhyZWFkLmlkKCkgPT0gVGhyZWFkOjpjdXJyZW50SUQoKSwgMHg1NTIwLCB0aHJlYWQuaWQo
KSwgVGhyZWFkOjpjdXJyZW50SUQoKSk7CisjZW5kaWYKIH0KIAogUmVmPFZNPiBWTTo6Y3JlYXRl
Q29udGV4dEdyb3VwKEhlYXBUeXBlIGhlYXBUeXBlKQpAQCAtMTA1MCwxNiArMTA1NCwxMSBAQCB2
b2lkIFZNOjpwb3BBbGxDaGVja3BvaW50T1NSU2lkZVN0YXRlVW50CiAgICAgbV9jaGVja3BvaW50
U2lkZVN0YXRlLnNocmlua1RvRml0KCk7CiB9CiAKLXZvaWQgbG9nU2FuaXRpemVTdGFjayhWTSYg
dm0pCitzdGF0aWMgdm9pZCBsb2dTYW5pdGl6ZVN0YWNrKFZNJiB2bSkKIHsKLSAgICBpZiAoT3B0
aW9uczo6dmVyYm9zZVNhbml0aXplU3RhY2soKSAmJiB2bS50b3BDYWxsRnJhbWUpIHsKLSAgICAg
ICAgaW50IGR1bW15OworICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjp2ZXJib3NlU2FuaXRpemVT
dGFjaygpKSkgewogICAgICAgICBhdXRvJiBzdGFja0JvdW5kcyA9IFRocmVhZDo6Y3VycmVudCgp
LnN0YWNrKCk7Ci0gICAgICAgIGRhdGFMb2coCi0gICAgICAgICAgICAiU2FuaXRpemluZyBzdGFj
ayBmb3IgVk0gPSAiLCBSYXdQb2ludGVyKCZ2bSksICIgd2l0aCB0b3AgY2FsbCBmcmFtZSBhdCAi
LCBSYXdQb2ludGVyKHZtLnRvcENhbGxGcmFtZSksCi0gICAgICAgICAgICAiLCBjdXJyZW50IHN0
YWNrIHBvaW50ZXIgYXQgIiwgUmF3UG9pbnRlcigmZHVtbXkpLCAiLCBpbiAiLAotICAgICAgICAg
ICAgcG9pbnRlckR1bXAodm0udG9wQ2FsbEZyYW1lLT5jb2RlQmxvY2soKSksICIsIGxhc3QgY29k
ZSBvcmlnaW4gPSAiLAotICAgICAgICAgICAgdm0udG9wQ2FsbEZyYW1lLT5jb2RlT3JpZ2luKCks
ICIsIGxhc3Qgc3RhY2sgdG9wID0gIiwgUmF3UG9pbnRlcih2bS5sYXN0U3RhY2tUb3AoKSksICIs
IGluIHN0YWNrIHJhbmdlIFsiLCBSYXdQb2ludGVyKHN0YWNrQm91bmRzLm9yaWdpbigpKSwgIiwg
IiwgUmF3UG9pbnRlcihzdGFja0JvdW5kcy5lbmQoKSksICJdXG4iKTsKKyAgICAgICAgZGF0YUxv
Z0xuKCJTYW5pdGl6aW5nIHN0YWNrIGZvciBWTSA9ICIsIFJhd1BvaW50ZXIoJnZtKSwgIiwgY3Vy
cmVudCBzdGFjayBwb2ludGVyIGF0ICIsIFJhd1BvaW50ZXIoY3VycmVudFN0YWNrUG9pbnRlcigp
KSwgIiwgbGFzdCBzdGFjayB0b3AgPSAiLCBSYXdQb2ludGVyKHZtLmxhc3RTdGFja1RvcCgpKSwg
IiwgaW4gc3RhY2sgcmFuZ2UgKCIsIFJhd1BvaW50ZXIoc3RhY2tCb3VuZHMuZW5kKCkpLCAiLCAi
LCBSYXdQb2ludGVyKHN0YWNrQm91bmRzLm9yaWdpbigpKSwgIl0iKTsKICAgICB9CiB9CiAKQEAg
LTEyNzAsMTcgKzEyNjksMjMgQEAgdm9pZCBRdWV1ZWRUYXNrOjpydW4oKQogCiB2b2lkIHNhbml0
aXplU3RhY2tGb3JWTShWTSYgdm0pCiB7CisgICAgYXV0byYgdGhyZWFkID0gVGhyZWFkOjpjdXJy
ZW50KCk7CisjaWYgT1MoREFSV0lOKSAmJiBDUFUoQVJNNjQpCisgICAgUkVMRUFTRV9BU1NFUlQo
dGhyZWFkLmlkKCkgPT0gVGhyZWFkOjpjdXJyZW50SUQoKSwgMHhhYTEwLCB0aHJlYWQuaWQoKSwg
VGhyZWFkOjpjdXJyZW50SUQoKSk7CisjZW5kaWYKKyAgICBhdXRvJiBzdGFjayA9IHRocmVhZC5z
dGFjaygpOworICAgIGlmICghdm0uY3VycmVudFRocmVhZElzSG9sZGluZ0FQSUxvY2soKSkKKyAg
ICAgICAgcmV0dXJuOyAvLyB2bS5sYXN0U3RhY2tUb3AoKSBtYXkgbm90IGJlIHNldCB1cCBjb3Jy
ZWN0bHkgaWYgSlNMb2NrIGlzIG5vdCBoZWxkLgorCiAgICAgbG9nU2FuaXRpemVTdGFjayh2bSk7
Ci0gICAgaWYgKHZtLnRvcENhbGxGcmFtZSkgewotICAgICAgICBhdXRvJiBzdGFja0JvdW5kcyA9
IFRocmVhZDo6Y3VycmVudCgpLnN0YWNrKCk7Ci0gICAgICAgIEFTU0VSVCh2bS5jdXJyZW50VGhy
ZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChzdGFja0JvdW5k
cywgc3RhY2tCb3VuZHMuY29udGFpbnModm0ubGFzdFN0YWNrVG9wKCkpKTsKLSAgICB9CisKKyAg
ICBSRUxFQVNFX0FTU0VSVChzdGFjay5jb250YWlucyh2bS5sYXN0U3RhY2tUb3AoKSksIDB4YWEy
MCwgdm0ubGFzdFN0YWNrVG9wKCksIHN0YWNrLm9yaWdpbigpLCBzdGFjay5lbmQoKSk7CiAjaWYg
RU5BQkxFKENfTE9PUCkKICAgICB2bS5pbnRlcnByZXRlci0+Y2xvb3BTdGFjaygpLnNhbml0aXpl
U3RhY2soKTsKICNlbHNlCiAgICAgc2FuaXRpemVTdGFja0ZvclZNSW1wbCgmdm0pOwogI2VuZGlm
CisgICAgUkVMRUFTRV9BU1NFUlQoc3RhY2suY29udGFpbnModm0ubGFzdFN0YWNrVG9wKCkpLCAw
eGFhMzAsIHZtLmxhc3RTdGFja1RvcCgpLCBzdGFjay5vcmlnaW4oKSwgc3RhY2suZW5kKCkpOwog
fQogCiBzaXplX3QgVk06OmNvbW1pdHRlZFN0YWNrQnl0ZUNvdW50KCkKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uaAkocmV2aXNpb24gMjg4NjQ1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTc4NSw3ICs3ODUsNyBAQCBw
dWJsaWM6CiAKICAgICB2b2lkKiogYWRkcmVzc09mTGFzdFN0YWNrVG9wKCkgeyByZXR1cm4gJm1f
bGFzdFN0YWNrVG9wOyB9CiAgICAgdm9pZCogbGFzdFN0YWNrVG9wKCkgeyByZXR1cm4gbV9sYXN0
U3RhY2tUb3A7IH0KLSAgICB2b2lkIHNldExhc3RTdGFja1RvcCh2b2lkKik7CisgICAgdm9pZCBz
ZXRMYXN0U3RhY2tUb3AoY29uc3QgVGhyZWFkJik7CiAgICAgCiAgICAgdm9pZCBmaXJlUHJpbWl0
aXZlR2lnYWNhZ2VFbmFibGVkSWZOZWNlc3NhcnkoKQogICAgIHsKQEAgLTExNzMsNiArMTE3Myw1
IEBAIGV4dGVybiAiQyIgdm9pZCBzYW5pdGl6ZVN0YWNrRm9yVk1JbXBsKFYKICNlbmRpZgogCiBK
U19FWFBPUlRfUFJJVkFURSB2b2lkIHNhbml0aXplU3RhY2tGb3JWTShWTSYpOwotdm9pZCBsb2dT
YW5pdGl6ZVN0YWNrKFZNJik7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL1dU
Ri9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9DaGFuZ2VMb2cJKHJldmlzaW9u
IDI4ODY0NSkKKysrIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMzAgQEAKKzIwMjItMDEtMjcgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisg
ICAgICAgIEVuaGFuY2Ugc2FuaXRpemVTdGFja0ZvclZNKCkgdG8gYXNzaXN0IHdpdGggY3Jhc2gg
YW5hbHlzaXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzU3NTIKKyAgICAgICAgcmRhcjovLzgxMDE0NjAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIFRocmVhZElkZW50aWZp
ZXIgYW5kIFRocmVhZDo6Y3VycmVudElEKCkgb24gT1MoREFSV0lOKS4gIFRoaXMgY2FuCisgICAg
ICAgIGJlIHVzZWQgdG8gZGV0ZWN0IFRMUyBjb3JydXB0aW9uIC8gYnVncy4KKworICAgICAgICAq
IHd0Zi9UaHJlYWRpbmcuY3BwOgorICAgICAgICAoV1RGOjpUaHJlYWQ6OmluaXRpYWxpemVJblRo
cmVhZCk6CisgICAgICAgICogd3RmL1RocmVhZGluZy5oOgorICAgICAgICAoV1RGOjpUaHJlYWQ6
OnNhdmVkU3RhY2tQb2ludGVyQXRWTUVudHJ5IGNvbnN0KToKKyAgICAgICAgKFdURjo6VGhyZWFk
OjpzYXZlZExhc3RTdGFja1RvcCBjb25zdCk6CisgICAgICAgIChXVEY6OlRocmVhZDo6Y3VycmVu
dElEKToKKyAgICAgICAgKFdURjo6VGhyZWFkOjpzYXZlZFN0YWNrUG9pbnRlckF0Vk1FbnRyeSk6
IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlRocmVhZDo6c2F2ZWRMYXN0U3RhY2tUb3ApOiBEZWxl
dGVkLgorICAgICAgICAqIHd0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmg6CisgICAgICAgICogd3Rm
L3Bvc2l4L1RocmVhZGluZ1BPU0lYLmNwcDoKKyAgICAgICAgKFdURjo6VGhyZWFkOjpjdXJyZW50
SUQpOgorICAgICAgICAqIHd0Zi93aW4vVGhyZWFkaW5nV2luLmNwcDoKKyAgICAgICAgKFdURjo6
VGhyZWFkOjppbml0aWFsaXplQ3VycmVudFRMUyk6CisgICAgICAgIChXVEY6OlRocmVhZDo6Y3Vy
cmVudElEKToKKyAgICAgICAgKFdURjo6VGhyZWFkOjplc3RhYmxpc2hQbGF0Zm9ybVNwZWNpZmlj
SGFuZGxlKToKKwogMjAyMi0wMS0yNSAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxl
LmNvbT4KIAogICAgICAgICBbbWFjT1NdIEFkZCBuZXcgc2NyZWVuIGFuZCB3aW5kb3cgY2FwdHVy
ZSBiYWNrZW5kCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5jcHAJKHJldmlzaW9uIDI4ODY0NSkKKysrIFNv
dXJjZS9XVEYvd3RmL1RocmVhZGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1OSw5ICsxNTks
NyBAQCB2b2lkIFRocmVhZDo6aW5pdGlhbGl6ZUluVGhyZWFkKCkKICAgICB9CiAjZW5kaWYKIAot
I2lmIE9TKExJTlVYKQogICAgIG1faWQgPSBjdXJyZW50SUQoKTsKLSNlbmRpZgogfQogCiB2b2lk
IFRocmVhZDo6ZW50cnlQb2ludChOZXdUaHJlYWRDb250ZXh0KiBuZXdUaHJlYWRDb250ZXh0KQpJ
bmRleDogU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dU
Ri93dGYvVGhyZWFkaW5nLmgJKHJldmlzaW9uIDI4ODY0NSkKKysrIFNvdXJjZS9XVEYvd3RmL1Ro
cmVhZGluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwNy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAwNy0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENv
cHlyaWdodCAoQykgMjAwNyBKdXN0aW4gSGF5Z29vZCA8amhheWdvb2RAcmVha3RpeC5jb20+CiAg
KiBDb3B5cmlnaHQgKEMpIDIwMTcgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29t
PgogICoKQEAgLTEzMCwxNSArMTMwLDE0IEBAIHB1YmxpYzoKIAogICAgIHVpbnQzMl90IHVpZCgp
IGNvbnN0IHsgcmV0dXJuIG1fdWlkOyB9CiAKLSNpZiBPUyhXSU5ET1dTKQogICAgIC8vIFJldHVy
bnMgVGhyZWFkSWRlbnRpZmllciBkaXJlY3RseS4gSXQgaXMgdXNlZnVsIGlmIHRoZSB1c2VyIG9u
bHkgY2FyZXMgYWJvdXQgaWRlbnRpdHkKICAgICAvLyBvZiB0aHJlYWRzLiBBdCB0aGF0IHRpbWUs
IHVzZXJzIHNob3VsZCBrbm93IHRoYXQgaG9sZGluZyB0aGlzIFRocmVhZElkZW50aWZpZXIgZG9l
cyBub3QgZW5zdXJlCiAgICAgLy8gdGhhdCB0aGUgdGhyZWFkIGluZm9ybWF0aW9uIGlzIGFsaXZl
LiBXaGlsZSBUaHJlYWQ6OmN1cnJlbnQoKSBpcyBub3Qgc2FmZSBpZiBpdCBpcyBjYWxsZWQKICAg
ICAvLyBmcm9tIHRoZSBkZXN0cnVjdG9yIG9mIHRoZSBvdGhlciBUTFMgZGF0YSwgY3VycmVudElE
KCkgYWx3YXlzIHJldHVybnMgbWVhbmluZ2Z1bCB0aHJlYWQgSUQuCi0gICAgV1RGX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBUaHJlYWRJZGVudGlmaWVyIGN1cnJlbnRJRCgpOwotCisgICAgc3RhdGlj
IFRocmVhZElkZW50aWZpZXIgY3VycmVudElEKCk7CiAgICAgVGhyZWFkSWRlbnRpZmllciBpZCgp
IGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KIAorI2lmIE9TKFdJTkRPV1MpCiAgICAgY2xhc3MgU3Bl
Y2lmaWNTdG9yYWdlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHVzaW5nIERlc3Ryb3lGdW5jdGlv
biA9IHZvaWQgKCopKHZvaWQqKTsKQEAgLTE3NiwxMCArMTc1LDYgQEAgcHVibGljOgogICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBzaXplX3QgZ2V0UmVnaXN0ZXJzKFBsYXRmb3JtUmVnaXN0ZXJzJik7
CiAKICNpZiBVU0UoUFRIUkVBRFMpCi0jaWYgT1MoTElOVVgpCi0gICAgV1RGX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyBUaHJlYWRJZGVudGlmaWVyIGN1cnJlbnRJRCgpOwotICAgIFRocmVhZElkZW50
aWZpZXIgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9Ci0jZW5kaWYKICAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgYm9vbCBzaWduYWwoaW50IHNpZ25hbE51bWJlcik7CiAjZW5kaWYKIApAQCAtMjMx
LDcgKzIyNiw3IEBAIHB1YmxpYzoKICAgICB9CiAjZW5kaWYKIAotICAgIHZvaWQqIHNhdmVkU3Rh
Y2tQb2ludGVyQXRWTUVudHJ5KCkKKyAgICB2b2lkKiBzYXZlZFN0YWNrUG9pbnRlckF0Vk1FbnRy
eSgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV9zYXZlZFN0YWNrUG9pbnRlckF0Vk1F
bnRyeTsKICAgICB9CkBAIC0yNDEsNyArMjM2LDcgQEAgcHVibGljOgogICAgICAgICBtX3NhdmVk
U3RhY2tQb2ludGVyQXRWTUVudHJ5ID0gc3RhY2tQb2ludGVyQXRWTUVudHJ5OwogICAgIH0KIAot
ICAgIHZvaWQqIHNhdmVkTGFzdFN0YWNrVG9wKCkKKyAgICB2b2lkKiBzYXZlZExhc3RTdGFja1Rv
cCgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV9zYXZlZExhc3RTdGFja1RvcDsKICAg
ICB9CkBAIC0zNTMsMTQgKzM0OCwxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgSGFzaE1hcDxUaHJlYWRH
cm91cCosIHN0ZDo6d2Vha19wdHI8VGhyZWFkR3JvdXA+PiBtX3RocmVhZEdyb3VwTWFwOwogICAg
IFBsYXRmb3JtVGhyZWFkSGFuZGxlIG1faGFuZGxlOwogICAgIHVpbnQzMl90IG1fdWlkOwotI2lm
IE9TKFdJTkRPV1MpCiAgICAgVGhyZWFkSWRlbnRpZmllciBtX2lkIHsgMCB9OwotI2VsaWYgT1Mo
REFSV0lOKQorI2lmIE9TKERBUldJTikKICAgICBtYWNoX3BvcnRfdCBtX3BsYXRmb3JtVGhyZWFk
IHsgTUFDSF9QT1JUX05VTEwgfTsKICNlbGlmIFVTRShQVEhSRUFEUykKLSNpZiBPUyhMSU5VWCkK
LSAgICBUaHJlYWRJZGVudGlmaWVyIG1faWQgeyAwIH07Ci0jZW5kaWYKICAgICBQbGF0Zm9ybVJl
Z2lzdGVycyogbV9wbGF0Zm9ybVJlZ2lzdGVycyB7IG51bGxwdHIgfTsKICAgICB1bnNpZ25lZCBt
X3N1c3BlbmRDb3VudCB7IDAgfTsKICNlbmRpZgpAQCAtNDIwLDYgKzQxMSwyNSBAQCBpbmxpbmUg
VGhyZWFkJiBUaHJlYWQ6OmN1cnJlbnQoKQogICAgIHJldHVybiBpbml0aWFsaXplQ3VycmVudFRM
UygpOwogfQogCisjaWYgT1MoREFSV0lOKQorQUxXQVlTX0lOTElORSBUaHJlYWRJZGVudGlmaWVy
IFRocmVhZDo6Y3VycmVudElEKCkKK3sKKyAgICBUaHJlYWRJZGVudGlmaWVyIHJlc3VsdDsKKyNp
ZiBDUFUoQVJNNjQpCisgICAgIGFzbSAoCisgICAgICAgICJtcnMgJXhbcmVzdWx0XSwgVFBJRFJS
T19FTDAiCisgICAgICAgIDogW3Jlc3VsdF0gIj1yIiAocmVzdWx0KQorICAgICAgICA6CisgICAg
ICAgIDoKKyAgICApOworI2Vsc2UKKyAgICByZXN1bHQgPSBiaXR3aXNlX2Nhc3Q8VGhyZWFkSWRl
bnRpZmllcj4ocHRocmVhZF9zZWxmKCkpOworI2VuZGlmCisgICAgQVNTRVJUKHJlc3VsdCk7Cisg
ICAgcmV0dXJuIHJlc3VsdDsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogdXNp
bmcgV1RGOjpUaHJlYWQ7CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdQcmltaXRpdmVz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oCShy
ZXZpc2lvbiAyODg2NDUpCisrKyBTb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTU3LDcgKzU3LDkgQEAgdXNpbmcgUGxhdGZvcm1UaHJlYWRIYW5k
bGUgPSBwdGhyZWFkX3Q7CiB1c2luZyBQbGF0Zm9ybU11dGV4ID0gcHRocmVhZF9tdXRleF90Owog
dXNpbmcgUGxhdGZvcm1Db25kaXRpb24gPSBwdGhyZWFkX2NvbmRfdDsKIHVzaW5nIFRocmVhZFNw
ZWNpZmljS2V5ID0gcHRocmVhZF9rZXlfdDsKLSNpZiBPUyhMSU5VWCkKKyNpZiBPUyhEQVJXSU4p
Cit1c2luZyBUaHJlYWRJZGVudGlmaWVyID0gdWludHB0cl90OworI2VsaWYgT1MoTElOVVgpCiB1
c2luZyBUaHJlYWRJZGVudGlmaWVyID0gcGlkX3Q7CiAjZW5kaWYKICNlbGlmIE9TKFdJTkRPV1Mp
CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9wb3NpeC9UaHJlYWRpbmdQT1NJWC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dURi93dGYvcG9zaXgvVGhyZWFkaW5nUE9TSVguY3BwCShyZXZpc2lvbiAy
ODg2NDUpCisrKyBTb3VyY2UvV1RGL3d0Zi9wb3NpeC9UaHJlYWRpbmdQT1NJWC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA5
LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAwNy0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAo
QykgMjAwNyBKdXN0aW4gSGF5Z29vZCA8amhheWdvb2RAcmVha3RpeC5jb20+CiAgKiBDb3B5cmln
aHQgKEMpIDIwMTEgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTcgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21h
aWwuY29tPgpAQCAtMjIyLDcgKzIyMiw3IEBAIHZvaWQgVGhyZWFkOjppbml0aWFsaXplUGxhdGZv
cm1UaHJlYWRpbmcKIH0KIAogI2lmIE9TKExJTlVYKQotVGhyZWFkSWRlbnRpZmllciBUaHJlYWQ6
OmN1cnJlbnRJRCgpCitXVEZfRVhQT1JUX1BSSVZBVEUgVGhyZWFkSWRlbnRpZmllciBUaHJlYWQ6
OmN1cnJlbnRJRCgpCiB7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFRocmVhZElkZW50aWZpZXI+
KHN5c2NhbGwoU1lTX2dldHRpZCkpOwogfQpJbmRleDogU291cmNlL1dURi93dGYvd2luL1RocmVh
ZGluZ1dpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvd2luL1RocmVhZGluZ1dp
bi5jcHAJKHJldmlzaW9uIDI4ODY0NSkKKysrIFNvdXJjZS9XVEYvd3RmL3dpbi9UaHJlYWRpbmdX
aW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwNywgMjAwOCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDctMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
IENvcHlyaWdodCAoQykgMjAwOSBUb3JjaCBNb2JpbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCkBAIC0yNDYsMjMgKzI0NiwyMiBAQCBUaHJlYWQmIFRocmVhZDo6aW5pdGlhbGl6ZUN1
cnJlbnRUTFMoKQogICAgIGJvb2wgaXNTdWNjZXNzZnVsID0gRHVwbGljYXRlSGFuZGxlKEdldEN1
cnJlbnRQcm9jZXNzKCksIEdldEN1cnJlbnRUaHJlYWQoKSwgR2V0Q3VycmVudFByb2Nlc3MoKSwg
JmhhbmRsZSwgMCwgRkFMU0UsIERVUExJQ0FURV9TQU1FX0FDQ0VTUyk7CiAgICAgUkVMRUFTRV9B
U1NFUlQoaXNTdWNjZXNzZnVsKTsKIAotICAgIHRocmVhZC0+ZXN0YWJsaXNoUGxhdGZvcm1TcGVj
aWZpY0hhbmRsZShoYW5kbGUsIGN1cnJlbnRJRCgpKTsKKyAgICB0aHJlYWQtPmVzdGFibGlzaFBs
YXRmb3JtU3BlY2lmaWNIYW5kbGUoaGFuZGxlKTsKICAgICB0aHJlYWQtPmluaXRpYWxpemVJblRo
cmVhZCgpOwogICAgIGluaXRpYWxpemVDdXJyZW50VGhyZWFkRXZlbklmTm9uV1RGQ3JlYXRlZCgp
OwogCiAgICAgcmV0dXJuIGluaXRpYWxpemVUTFMoV1RGTW92ZSh0aHJlYWQpKTsKIH0KIAotVGhy
ZWFkSWRlbnRpZmllciBUaHJlYWQ6OmN1cnJlbnRJRCgpCitXVEZfRVhQT1JUX1BSSVZBVEUgVGhy
ZWFkSWRlbnRpZmllciBUaHJlYWQ6OmN1cnJlbnRJRCgpCiB7CiAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PFRocmVhZElkZW50aWZpZXI+KEdldEN1cnJlbnRUaHJlYWRJZCgpKTsKIH0KIAotdm9pZCBU
aHJlYWQ6OmVzdGFibGlzaFBsYXRmb3JtU3BlY2lmaWNIYW5kbGUoSEFORExFIGhhbmRsZSwgVGhy
ZWFkSWRlbnRpZmllciB0aHJlYWRJRCkKK3ZvaWQgVGhyZWFkOjplc3RhYmxpc2hQbGF0Zm9ybVNw
ZWNpZmljSGFuZGxlKEhBTkRMRSBoYW5kbGUpCiB7CiAgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0
ZXggfTsKICAgICBtX2hhbmRsZSA9IGhhbmRsZTsKLSAgICBtX2lkID0gdGhyZWFkSUQ7CiB9CiAK
IHN0cnVjdCBUaHJlYWQ6OlRocmVhZEhvbGRlciB7Cg==
</data>
<flag name="commit-queue"
          id="476543"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450203</attachid>
            <date>2022-01-27 21:23:51 -0800</date>
            <delta_ts>2022-01-31 16:46:22 -0800</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-235752.patch</filename>
            <type>text/plain</type>
            <size>18166</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjg4NzIxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3IEBA
CisyMDIyLTAxLTI3ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBF
bmhhbmNlIHNhbml0aXplU3RhY2tGb3JWTSgpIHRvIGFzc2lzdCB3aXRoIGNyYXNoIGFuYWx5c2lz
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1NzUy
CisgICAgICAgIHJkYXI6Ly84MTAxNDYwMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIDEuIFJlbW92ZSB0aGUgQXNzZW1ibHlIZWxwZXJzIHZlcnNpb24g
b2Ygc2FuaXRpemVTdGFjay4gIEluc3RlYWQsIG1ha2UgdGhlIDMKKyAgICAgICAgICAgSklUIG9w
ZXJhdGlvbiBmdW5jdGlvbnMgY2FsbCBzYW5pdGl6ZVN0YWNrRm9yVk0oKSBpbnN0ZWFkLiAgVGhp
cyBlbnN1cmVzCisgICAgICAgICAgIHRoYXQgc2FuaXRpemVTdGFjayBjcmFzaGVzIGFyZSBub3Qg
b2JzY3VyZWQgYXMgZ2VuZXJpYyBKSVQgY3Jhc2hlcy4KKworICAgICAgICAyLiBBZGQgc2FuaXR5
IGNoZWNrIFJFTEVBU0VfQVNTRVJUcyB0byBWTTo6c2V0TGFzdFN0YWNrVG9wKCkgd2l0aCBhIGNh
cHR1cmUgb2YKKyAgICAgICAgICAgdGhlIHJlbGV2YW50IHZhcmlhYmxlcyBmb3IgY3Jhc2ggYW5h
bHlzaXMuCisKKyAgICAgICAgMy4gRml4IGxvZ1Nhbml0aXplU3RhY2soKSBzbyB0aGF0IGl0IG5v
IGxvbmdlciByZWxpZXMgb24gdm0udG9wQ2FsbEZyYW1lLgorICAgICAgICAgICB2bS50b3BDYWxs
RnJhbWUgbWF5IG5vdCBiZSBwcm9wZXJseSBpbml0aWFsaXplZCBhdCBhbGwgdGhlIHBsYWNlcyB0
aGF0CisgICAgICAgICAgIHNhbml0aXplU3RhY2tGb3JWTSgpIGlzIGNhbGxlZC4KKworICAgICAg
ICA0LiBBZGQgYSBKU0xvY2sgY2hlY2sgdG8gc2FuaXRpemVTdGFja0ZvclZNKCksIGFuZCByZXR1
cm4gZWFybHkgaWYgbm90IG93bmVkIGJ5CisgICAgICAgICAgIHRoZSBjdXJyZW50IHRocmVhZC4g
IElmIHRoZSBKU0xvY2sgaXMgbm90IG93bmVkIGJ5IHRoZSBjdXJyZW50IHRocmVhZCwgd2UgY2Fu
J3QKKyAgICAgICAgICAgcmVseSBvbiB2bS5sYXN0U3RhY2tUb3AoKSBiZWluZyBhIHNhbmUgdmFs
dWUuICBIZW5jZSwgaXQncyBub3QgcG9zc2libGUgdG8KKyAgICAgICAgICAgZG8gc3RhY2sgc2Fu
aXRpemF0aW9uIGNvcnJlY3RseS4KKworICAgICAgICAgICBBZGQgc2FuaXR5IGNoZWNrIFJFTEVB
U0VfQVNTRVJUcyB0byBzYW5pdGl6ZVN0YWNrRm9yVk0oKSB3aXRoIGEgY2FwdHVyZSBvZgorICAg
ICAgICAgICB0aGUgcmVsZXZhbnQgdmFyaWFibGVzIGZvciBjcmFzaCBhbmFseXNpcy4KKworICAg
ICAgICAqIGppdC9Bc3NlbWJseUhlbHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhl
bHBlcnM6OnNhbml0aXplU3RhY2tJbmxpbmUpOiBEZWxldGVkLgorICAgICAgICAqIGppdC9Bc3Nl
bWJseUhlbHBlcnMuaDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAg
IChKU0M6OkpTQ19ERUZJTkVfSklUX09QRVJBVElPTik6CisgICAgICAgICogaml0L1RodW5rR2Vu
ZXJhdG9ycy5jcHA6CisgICAgICAgIChKU0M6OnNsb3dQYXRoRm9yKToKKyAgICAgICAgKiBydW50
aW1lL0pTTG9jay5jcHA6CisgICAgICAgIChKU0M6OkpTTG9jazo6ZGlkQWNxdWlyZUxvY2spOgor
ICAgICAgICAoSlNDOjpKU0xvY2s6OmdyYWJBbGxMb2Nrcyk6CisgICAgICAgICogcnVudGltZS9W
TS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAgICAgIChKU0M6OlZNOjpzZXRMYXN0
U3RhY2tUb3ApOgorICAgICAgICAoSlNDOjpsb2dTYW5pdGl6ZVN0YWNrKToKKyAgICAgICAgKEpT
Qzo6c2FuaXRpemVTdGFja0ZvclZNKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisKIDIwMjIt
MDEtMjcgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CiAKICAgICAgICAgY29t
LmFwcGxlLldlYktpdC5XZWJBdXRobi54cGMgZmFpbHMgdG8gYnVpbGQgd2l0aCBzeXN0ZW0gY29u
dGVudCBwYXRoCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVy
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhl
bHBlcnMuY3BwCShyZXZpc2lvbiAyODg2NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0Fzc2VtYmx5SGVscGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMTI4LDE5ICsxMTI4LDYg
QEAgdm9pZCBBc3NlbWJseUhlbHBlcnM6OmNvcHlDYWxsZWVTYXZlc1RvRQogI2VuZGlmCiB9CiAK
LXZvaWQgQXNzZW1ibHlIZWxwZXJzOjpzYW5pdGl6ZVN0YWNrSW5saW5lKFZNJiB2bSwgR1BSUmVn
IHNjcmF0Y2gpCi17Ci0gICAgbG9hZFB0cih2bS5hZGRyZXNzT2ZMYXN0U3RhY2tUb3AoKSwgc2Ny
YXRjaCk7Ci0gICAgSnVtcCBkb25lID0gYnJhbmNoUHRyKEJlbG93T3JFcXVhbCwgc3RhY2tQb2lu
dGVyUmVnaXN0ZXIsIHNjcmF0Y2gpOwotICAgIExhYmVsIGxvb3AgPSBsYWJlbCgpOwotICAgIHN0
b3JlUHRyKFRydXN0ZWRJbW1QdHIobnVsbHB0ciksIEFkZHJlc3Moc2NyYXRjaCkpOwotICAgIGFk
ZFB0cihUcnVzdGVkSW1tUHRyKHNpemVvZih2b2lkKikpLCBzY3JhdGNoKTsKLSAgICBicmFuY2hQ
dHIoQWJvdmUsIHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBzY3JhdGNoKS5saW5rVG8obG9vcCwgdGhp
cyk7Ci0gICAgZG9uZS5saW5rKHRoaXMpOwotICAgIG1vdmUoc3RhY2tQb2ludGVyUmVnaXN0ZXIs
IHNjcmF0Y2gpOwotICAgIHN0b3JlUHRyKHNjcmF0Y2gsIHZtLmFkZHJlc3NPZkxhc3RTdGFja1Rv
cCgpKTsKLX0KLQogdm9pZCBBc3NlbWJseUhlbHBlcnM6OmNhZ2VXaXRob3V0VW50YWdnaW5nKEdp
Z2FjYWdlOjpLaW5kIGtpbmQsIEdQUlJlZyBzdG9yYWdlKQogewogI2lmIEdJR0FDQUdFX0VOQUJM
RUQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAko
cmV2aXNpb24gMjg4NjQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhl
bHBlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTEtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE3MDksOCArMTcwOSw2IEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIGJyYW5jaFRlc3Q4KFplcm8sIEFic29sdXRlQWRkcmVzcyh2bS5oZWFwLmFk
ZHJlc3NPZk11dGF0b3JTaG91bGRCZUZlbmNlZCgpKSk7CiAgICAgfQogICAgIAotICAgIHZvaWQg
c2FuaXRpemVTdGFja0lubGluZShWTSYsIEdQUlJlZyBzY3JhdGNoKTsKLSAgICAKICAgICAvLyBF
bWl0cyB0aGUgYnJhbmNoIHN0cnVjdHVyZSBmb3IgdHlwZW9mLiBUaGUgY29kZSBlbWl0dGVkIGJ5
IHRoaXMgZG9lc24ndCBmYWxsIHRocm91Z2guIFRoZQogICAgIC8vIGZ1bmN0b3IgaXMgY2FsbGVk
IGF0IHRob3NlIHBvaW50cyB3aGVyZSB3ZSBoYXZlIHBpbnBvaW50ZWQgYSB0eXBlLiBPbmUgd2F5
IHRvIHVzZSB0aGlzIGlzIHRvCiAgICAgLy8gaGF2ZSB0aGUgZnVuY3RvciBlbWl0IHRoZSBjb2Rl
IHRvIHB1dCB0aGUgdHlwZSBzdHJpbmcgaW50byBhbiBhcHByb3ByaWF0ZSByZWdpc3RlciBhbmQg
dGhlbgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3Bw
CShyZXZpc2lvbiAyODg2NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMy0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTQ0OCwxMSArMTQ0OCwxMyBAQCBKU0NfREVG
SU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uQ2FsbEV2CiAKIEpTQ19ERUZJTkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25MaW5rQ2FsbCwgU2xvd1BhdGhSZXR1cm5UeXBlLCAoQ2FsbEZyYW1lKiBj
YWxsZWVGcmFtZSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbExpbmtJbmZvKiBj
YWxsTGlua0luZm8pKQogeworICAgIHNhbml0aXplU3RhY2tGb3JWTShnbG9iYWxPYmplY3QtPnZt
KCkpOwogICAgIHJldHVybiBsaW5rRm9yKGNhbGxlZUZyYW1lLCBnbG9iYWxPYmplY3QsIGNhbGxM
aW5rSW5mbyk7CiB9CiAKIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25MaW5rUG9s
eW1vcnBoaWNDYWxsLCBTbG93UGF0aFJldHVyblR5cGUsIChDYWxsRnJhbWUqIGNhbGxlZUZyYW1l
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5m
bykpCiB7CisgICAgc2FuaXRpemVTdGFja0ZvclZNKGdsb2JhbE9iamVjdC0+dm0oKSk7CiAgICAg
QVNTRVJUKGNhbGxMaW5rSW5mby0+c3BlY2lhbGl6YXRpb25LaW5kKCkgPT0gQ29kZUZvckNhbGwp
OwogICAgIEpTQ2VsbCogY2FsbGVlQXNGdW5jdGlvbkNlbGw7CiAgICAgU2xvd1BhdGhSZXR1cm5U
eXBlIHJlc3VsdCA9IHZpcnR1YWxGb3JXaXRoRnVuY3Rpb24oZ2xvYmFsT2JqZWN0LCBjYWxsZWVG
cmFtZSwgY2FsbExpbmtJbmZvLCBjYWxsZWVBc0Z1bmN0aW9uQ2VsbCk7CkBAIC0xNDY0LDYgKzE0
NjYsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTGlua1BvCiAKIEpTQ19E
RUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25WaXJ0dWFsQ2FsbCwgU2xvd1BhdGhSZXR1cm5U
eXBlLCAoQ2FsbEZyYW1lKiBjYWxsZWVGcmFtZSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8pKQogeworICAgIHNhbml0aXplU3RhY2tGb3JW
TShnbG9iYWxPYmplY3QtPnZtKCkpOwogICAgIEpTQ2VsbCogY2FsbGVlQXNGdW5jdGlvbkNlbGxJ
Z25vcmVkOwogICAgIHJldHVybiB2aXJ0dWFsRm9yV2l0aEZ1bmN0aW9uKGdsb2JhbE9iamVjdCwg
Y2FsbGVlRnJhbWUsIGNhbGxMaW5rSW5mbywgY2FsbGVlQXNGdW5jdGlvbkNlbGxJZ25vcmVkKTsK
IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5j
cHAJKHJldmlzaW9uIDI4ODY0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtH
ZW5lcmF0b3JzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE5Miw3ICsxOTIsNiBAQCBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHRoCiAKIHN0YXRpYyB2b2lkIHNsb3dQYXRo
Rm9yKENDYWxsSGVscGVycyYgaml0LCBWTSYgdm0sIFNwcnRfSklUT3BlcmF0aW9uX0VHQ2xpIHNs
b3dQYXRoRnVuY3Rpb24pCiB7Ci0gICAgaml0LnNhbml0aXplU3RhY2tJbmxpbmUodm0sIEdQUklu
Zm86Om5vbkFyZ0dQUjApOwogICAgIGppdC5lbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOwogICAgIGpp
dC5zdG9yZVB0cihHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgJnZtLnRvcENhbGxGcmFtZSk7
CiAjaWYgT1MoV0lORE9XUykgJiYgQ1BVKFg4Nl82NCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTTG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNMb2NrLmNwcAkocmV2aXNpb24gMjg4NjQ1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTEzOCw4ICsxMzgsNyBAQCB2b2lk
IEpTTG9jazo6ZGlkQWNxdWlyZUxvY2soKQogICAgIG1fZW50cnlBdG9tU3RyaW5nVGFibGUgPSB0
aHJlYWQuc2V0Q3VycmVudEF0b21TdHJpbmdUYWJsZShtX3ZtLT5hdG9tU3RyaW5nVGFibGUoKSk7
CiAgICAgQVNTRVJUKG1fZW50cnlBdG9tU3RyaW5nVGFibGUpOwogCi0gICAgbV92bS0+c2V0TGFz
dFN0YWNrVG9wKHRocmVhZC5zYXZlZExhc3RTdGFja1RvcCgpKTsKLSAgICBBU1NFUlQodGhyZWFk
LnN0YWNrKCkuY29udGFpbnMobV92bS0+bGFzdFN0YWNrVG9wKCkpKTsKKyAgICBtX3ZtLT5zZXRM
YXN0U3RhY2tUb3AodGhyZWFkKTsKIAogICAgIGlmIChtX3ZtLT5oZWFwLmhhc0FjY2VzcygpKQog
ICAgICAgICBtX3Nob3VsZFJlbGVhc2VIZWFwQWNjZXNzID0gZmFsc2U7CkBAIC0yNzcsNyArMjc2
LDcgQEAgdm9pZCBKU0xvY2s6OmdyYWJBbGxMb2NrcyhEcm9wQWxsTG9ja3MqIAogCiAgICAgVGhy
ZWFkJiB0aHJlYWQgPSBUaHJlYWQ6OmN1cnJlbnQoKTsKICAgICBtX3ZtLT5zZXRTdGFja1BvaW50
ZXJBdFZNRW50cnkodGhyZWFkLnNhdmVkU3RhY2tQb2ludGVyQXRWTUVudHJ5KCkpOwotICAgIG1f
dm0tPnNldExhc3RTdGFja1RvcCh0aHJlYWQuc2F2ZWRMYXN0U3RhY2tUb3AoKSk7CisgICAgbV92
bS0+c2V0TGFzdFN0YWNrVG9wKHRocmVhZCk7CiB9CiAKIEpTTG9jazo6RHJvcEFsbExvY2tzOjpE
cm9wQWxsTG9ja3MoVk0qIHZtKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNw
cAkocmV2aXNpb24gMjg4NjQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwOC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwOC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjQyLDkgKzI0Miw4IEBAIFZNOjpWTShWTVR5cGUgdm1U
eXBlLCBIZWFwVHlwZSBoZWFwVHlwZSwKICAgICAgICAgQ1JBU0hfV0lUSF9JTkZPKDB4NDI0MjQy
NDIyMDIwMjAyMCwgMHhiYWRiZWVmMGJhZGJlZWYsIDB4MTIzNDEyMzQxMjM0MTIzNCwgMHgxMzM3
MTMzNzEzMzcxMzM3KTsKIAogICAgIGludGVycHJldGVyID0gbmV3IEludGVycHJldGVyKCp0aGlz
KTsKLSAgICBTdGFja0JvdW5kcyBzdGFjayA9IFRocmVhZDo6Y3VycmVudCgpLnN0YWNrKCk7CiAg
ICAgdXBkYXRlU29mdFJlc2VydmVkWm9uZVNpemUoT3B0aW9uczo6c29mdFJlc2VydmVkWm9uZVNp
emUoKSk7Ci0gICAgc2V0TGFzdFN0YWNrVG9wKHN0YWNrLm9yaWdpbigpKTsKKyAgICBzZXRMYXN0
U3RhY2tUb3AoVGhyZWFkOjpjdXJyZW50KCkpOwogCiAgICAgSlNSdW5Mb29wVGltZXI6Ok1hbmFn
ZXI6OnNoYXJlZCgpLnJlZ2lzdGVyVk0oKnRoaXMpOwogCkBAIC01MDMsOSArNTAyLDE0IEBAIHZv
aWQgVk06OnByaW1pdGl2ZUdpZ2FjYWdlRGlzYWJsZWQoKQogICAgIG1fbmVlZFRvRmlyZVByaW1p
dGl2ZUdpZ2FjYWdlRW5hYmxlZCA9IHRydWU7CiB9CiAKLXZvaWQgVk06OnNldExhc3RTdGFja1Rv
cCh2b2lkKiBsYXN0U3RhY2tUb3ApCi17IAotICAgIG1fbGFzdFN0YWNrVG9wID0gbGFzdFN0YWNr
VG9wOwordm9pZCBWTTo6c2V0TGFzdFN0YWNrVG9wKGNvbnN0IFRocmVhZCYgdGhyZWFkKQorewor
ICAgIG1fbGFzdFN0YWNrVG9wID0gdGhyZWFkLnNhdmVkTGFzdFN0YWNrVG9wKCk7CisgICAgYXV0
byYgc3RhY2sgPSB0aHJlYWQuc3RhY2soKTsKKyAgICBSRUxFQVNFX0FTU0VSVChzdGFjay5jb250
YWlucyhtX2xhc3RTdGFja1RvcCksIDB4NTUxMCwgbV9sYXN0U3RhY2tUb3AsIHN0YWNrLm9yaWdp
bigpLCBzdGFjay5lbmQoKSk7CisjaWYgT1MoREFSV0lOKSAmJiBDUFUoQVJNNjQpCisgICAgUkVM
RUFTRV9BU1NFUlQodGhyZWFkLmlkKCkgPT0gVGhyZWFkOjpjdXJyZW50SUQoKSwgMHg1NTIwLCB0
aHJlYWQuaWQoKSwgVGhyZWFkOjpjdXJyZW50SUQoKSk7CisjZW5kaWYKIH0KIAogUmVmPFZNPiBW
TTo6Y3JlYXRlQ29udGV4dEdyb3VwKEhlYXBUeXBlIGhlYXBUeXBlKQpAQCAtMTA1MCwxNiArMTA1
NCwxMSBAQCB2b2lkIFZNOjpwb3BBbGxDaGVja3BvaW50T1NSU2lkZVN0YXRlVW50CiAgICAgbV9j
aGVja3BvaW50U2lkZVN0YXRlLnNocmlua1RvRml0KCk7CiB9CiAKLXZvaWQgbG9nU2FuaXRpemVT
dGFjayhWTSYgdm0pCitzdGF0aWMgdm9pZCBsb2dTYW5pdGl6ZVN0YWNrKFZNJiB2bSkKIHsKLSAg
ICBpZiAoT3B0aW9uczo6dmVyYm9zZVNhbml0aXplU3RhY2soKSAmJiB2bS50b3BDYWxsRnJhbWUp
IHsKLSAgICAgICAgaW50IGR1bW15OworICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjp2ZXJib3Nl
U2FuaXRpemVTdGFjaygpKSkgewogICAgICAgICBhdXRvJiBzdGFja0JvdW5kcyA9IFRocmVhZDo6
Y3VycmVudCgpLnN0YWNrKCk7Ci0gICAgICAgIGRhdGFMb2coCi0gICAgICAgICAgICAiU2FuaXRp
emluZyBzdGFjayBmb3IgVk0gPSAiLCBSYXdQb2ludGVyKCZ2bSksICIgd2l0aCB0b3AgY2FsbCBm
cmFtZSBhdCAiLCBSYXdQb2ludGVyKHZtLnRvcENhbGxGcmFtZSksCi0gICAgICAgICAgICAiLCBj
dXJyZW50IHN0YWNrIHBvaW50ZXIgYXQgIiwgUmF3UG9pbnRlcigmZHVtbXkpLCAiLCBpbiAiLAot
ICAgICAgICAgICAgcG9pbnRlckR1bXAodm0udG9wQ2FsbEZyYW1lLT5jb2RlQmxvY2soKSksICIs
IGxhc3QgY29kZSBvcmlnaW4gPSAiLAotICAgICAgICAgICAgdm0udG9wQ2FsbEZyYW1lLT5jb2Rl
T3JpZ2luKCksICIsIGxhc3Qgc3RhY2sgdG9wID0gIiwgUmF3UG9pbnRlcih2bS5sYXN0U3RhY2tU
b3AoKSksICIsIGluIHN0YWNrIHJhbmdlIFsiLCBSYXdQb2ludGVyKHN0YWNrQm91bmRzLm9yaWdp
bigpKSwgIiwgIiwgUmF3UG9pbnRlcihzdGFja0JvdW5kcy5lbmQoKSksICJdXG4iKTsKKyAgICAg
ICAgZGF0YUxvZ0xuKCJTYW5pdGl6aW5nIHN0YWNrIGZvciBWTSA9ICIsIFJhd1BvaW50ZXIoJnZt
KSwgIiwgY3VycmVudCBzdGFjayBwb2ludGVyIGF0ICIsIFJhd1BvaW50ZXIoY3VycmVudFN0YWNr
UG9pbnRlcigpKSwgIiwgbGFzdCBzdGFjayB0b3AgPSAiLCBSYXdQb2ludGVyKHZtLmxhc3RTdGFj
a1RvcCgpKSwgIiwgaW4gc3RhY2sgcmFuZ2UgKCIsIFJhd1BvaW50ZXIoc3RhY2tCb3VuZHMuZW5k
KCkpLCAiLCAiLCBSYXdQb2ludGVyKHN0YWNrQm91bmRzLm9yaWdpbigpKSwgIl0iKTsKICAgICB9
CiB9CiAKQEAgLTEyNzAsMTcgKzEyNjksMjMgQEAgdm9pZCBRdWV1ZWRUYXNrOjpydW4oKQogCiB2
b2lkIHNhbml0aXplU3RhY2tGb3JWTShWTSYgdm0pCiB7CisgICAgYXV0byYgdGhyZWFkID0gVGhy
ZWFkOjpjdXJyZW50KCk7CisjaWYgT1MoREFSV0lOKSAmJiBDUFUoQVJNNjQpCisgICAgUkVMRUFT
RV9BU1NFUlQodGhyZWFkLmlkKCkgPT0gVGhyZWFkOjpjdXJyZW50SUQoKSwgMHhhYTEwLCB0aHJl
YWQuaWQoKSwgVGhyZWFkOjpjdXJyZW50SUQoKSk7CisjZW5kaWYKKyAgICBhdXRvJiBzdGFjayA9
IHRocmVhZC5zdGFjaygpOworICAgIGlmICghdm0uY3VycmVudFRocmVhZElzSG9sZGluZ0FQSUxv
Y2soKSkKKyAgICAgICAgcmV0dXJuOyAvLyB2bS5sYXN0U3RhY2tUb3AoKSBtYXkgbm90IGJlIHNl
dCB1cCBjb3JyZWN0bHkgaWYgSlNMb2NrIGlzIG5vdCBoZWxkLgorCiAgICAgbG9nU2FuaXRpemVT
dGFjayh2bSk7Ci0gICAgaWYgKHZtLnRvcENhbGxGcmFtZSkgewotICAgICAgICBhdXRvJiBzdGFj
a0JvdW5kcyA9IFRocmVhZDo6Y3VycmVudCgpLnN0YWNrKCk7Ci0gICAgICAgIEFTU0VSVCh2bS5j
dXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChz
dGFja0JvdW5kcywgc3RhY2tCb3VuZHMuY29udGFpbnModm0ubGFzdFN0YWNrVG9wKCkpKTsKLSAg
ICB9CisKKyAgICBSRUxFQVNFX0FTU0VSVChzdGFjay5jb250YWlucyh2bS5sYXN0U3RhY2tUb3Ao
KSksIDB4YWEyMCwgdm0ubGFzdFN0YWNrVG9wKCksIHN0YWNrLm9yaWdpbigpLCBzdGFjay5lbmQo
KSk7CiAjaWYgRU5BQkxFKENfTE9PUCkKICAgICB2bS5pbnRlcnByZXRlci0+Y2xvb3BTdGFjaygp
LnNhbml0aXplU3RhY2soKTsKICNlbHNlCiAgICAgc2FuaXRpemVTdGFja0ZvclZNSW1wbCgmdm0p
OwogI2VuZGlmCisgICAgUkVMRUFTRV9BU1NFUlQoc3RhY2suY29udGFpbnModm0ubGFzdFN0YWNr
VG9wKCkpLCAweGFhMzAsIHZtLmxhc3RTdGFja1RvcCgpLCBzdGFjay5vcmlnaW4oKSwgc3RhY2su
ZW5kKCkpOwogfQogCiBzaXplX3QgVk06OmNvbW1pdHRlZFN0YWNrQnl0ZUNvdW50KCkKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkocmV2aXNpb24gMjg4NjQ1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTc4NSw3ICs3
ODUsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkKiogYWRkcmVzc09mTGFzdFN0YWNrVG9wKCkgeyBy
ZXR1cm4gJm1fbGFzdFN0YWNrVG9wOyB9CiAgICAgdm9pZCogbGFzdFN0YWNrVG9wKCkgeyByZXR1
cm4gbV9sYXN0U3RhY2tUb3A7IH0KLSAgICB2b2lkIHNldExhc3RTdGFja1RvcCh2b2lkKik7Cisg
ICAgdm9pZCBzZXRMYXN0U3RhY2tUb3AoY29uc3QgVGhyZWFkJik7CiAgICAgCiAgICAgdm9pZCBm
aXJlUHJpbWl0aXZlR2lnYWNhZ2VFbmFibGVkSWZOZWNlc3NhcnkoKQogICAgIHsKQEAgLTExNzMs
NiArMTE3Myw1IEBAIGV4dGVybiAiQyIgdm9pZCBzYW5pdGl6ZVN0YWNrRm9yVk1JbXBsKFYKICNl
bmRpZgogCiBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHNhbml0aXplU3RhY2tGb3JWTShWTSYpOwot
dm9pZCBsb2dTYW5pdGl6ZVN0YWNrKFZNJik7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDog
U291cmNlL1dURi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDI4ODY0NSkKKysrIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMjQgQEAKKzIwMjItMDEtMjcgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUu
Y29tPgorCisgICAgICAgIEVuaGFuY2Ugc2FuaXRpemVTdGFja0ZvclZNKCkgdG8gYXNzaXN0IHdp
dGggY3Jhc2ggYW5hbHlzaXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzU3NTIKKyAgICAgICAgcmRhcjovLzgxMDE0NjAxCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIFRocmVh
ZElkZW50aWZpZXIgYW5kIFRocmVhZDo6Y3VycmVudElEKCkgb24gT1MoREFSV0lOKS4gIFRoaXMg
Y2FuCisgICAgICAgIGJlIHVzZWQgdG8gZGV0ZWN0IFRMUyBjb3JydXB0aW9uIC8gYnVncy4KKwor
ICAgICAgICAqIHd0Zi9UaHJlYWRpbmcuY3BwOgorICAgICAgICAoV1RGOjpUaHJlYWQ6OmluaXRp
YWxpemVJblRocmVhZCk6CisgICAgICAgICogd3RmL1RocmVhZGluZy5oOgorICAgICAgICAoV1RG
OjpUaHJlYWQ6OnNhdmVkU3RhY2tQb2ludGVyQXRWTUVudHJ5IGNvbnN0KToKKyAgICAgICAgKFdU
Rjo6VGhyZWFkOjpzYXZlZExhc3RTdGFja1RvcCBjb25zdCk6CisgICAgICAgIChXVEY6OlRocmVh
ZDo6Y3VycmVudElEKToKKyAgICAgICAgKFdURjo6VGhyZWFkOjpzYXZlZFN0YWNrUG9pbnRlckF0
Vk1FbnRyeSk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlRocmVhZDo6c2F2ZWRMYXN0U3RhY2tU
b3ApOiBEZWxldGVkLgorICAgICAgICAqIHd0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmg6CisKIDIw
MjItMDEtMjUgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgW21hY09TXSBBZGQgbmV3IHNjcmVlbiBhbmQgd2luZG93IGNhcHR1cmUgYmFja2VuZApJbmRl
eDogU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RG
L3d0Zi9UaHJlYWRpbmcuY3BwCShyZXZpc2lvbiAyODg2NDUpCisrKyBTb3VyY2UvV1RGL3d0Zi9U
aHJlYWRpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTksOCArMTU5LDEwIEBAIHZvaWQgVGhy
ZWFkOjppbml0aWFsaXplSW5UaHJlYWQoKQogICAgIH0KICNlbmRpZgogCi0jaWYgT1MoTElOVVgp
CisjaWYgVVNFKFBUSFJFQURTKQogICAgIG1faWQgPSBjdXJyZW50SUQoKTsKKyNlbHNlCisgICAg
UkVMRUFTRV9BU1NFUlQobV9pZCA9PSBjdXJyZW50SUQoKSk7CiAjZW5kaWYKIH0KIApJbmRleDog
U291cmNlL1dURi93dGYvVGhyZWFkaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYv
VGhyZWFkaW5nLmgJKHJldmlzaW9uIDI4ODY0NSkKKysrIFNvdXJjZS9XVEYvd3RmL1RocmVhZGlu
Zy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwNy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwNy0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdo
dCAoQykgMjAwNyBKdXN0aW4gSGF5Z29vZCA8amhheWdvb2RAcmVha3RpeC5jb20+CiAgKiBDb3B5
cmlnaHQgKEMpIDIwMTcgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogICoK
QEAgLTEzMCwxNSArMTMwLDE4IEBAIHB1YmxpYzoKIAogICAgIHVpbnQzMl90IHVpZCgpIGNvbnN0
IHsgcmV0dXJuIG1fdWlkOyB9CiAKLSNpZiBPUyhXSU5ET1dTKQogICAgIC8vIFJldHVybnMgVGhy
ZWFkSWRlbnRpZmllciBkaXJlY3RseS4gSXQgaXMgdXNlZnVsIGlmIHRoZSB1c2VyIG9ubHkgY2Fy
ZXMgYWJvdXQgaWRlbnRpdHkKICAgICAvLyBvZiB0aHJlYWRzLiBBdCB0aGF0IHRpbWUsIHVzZXJz
IHNob3VsZCBrbm93IHRoYXQgaG9sZGluZyB0aGlzIFRocmVhZElkZW50aWZpZXIgZG9lcyBub3Qg
ZW5zdXJlCiAgICAgLy8gdGhhdCB0aGUgdGhyZWFkIGluZm9ybWF0aW9uIGlzIGFsaXZlLiBXaGls
ZSBUaHJlYWQ6OmN1cnJlbnQoKSBpcyBub3Qgc2FmZSBpZiBpdCBpcyBjYWxsZWQKICAgICAvLyBm
cm9tIHRoZSBkZXN0cnVjdG9yIG9mIHRoZSBvdGhlciBUTFMgZGF0YSwgY3VycmVudElEKCkgYWx3
YXlzIHJldHVybnMgbWVhbmluZ2Z1bCB0aHJlYWQgSUQuCisjaWYgT1MoREFSV0lOKQorICAgIEFM
V0FZU19JTkxJTkUgc3RhdGljIFRocmVhZElkZW50aWZpZXIgY3VycmVudElEKCk7CisjZWxzZQog
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgVGhyZWFkSWRlbnRpZmllciBjdXJyZW50SUQo
KTsKLQorI2VuZGlmCiAgICAgVGhyZWFkSWRlbnRpZmllciBpZCgpIGNvbnN0IHsgcmV0dXJuIG1f
aWQ7IH0KIAorI2lmIE9TKFdJTkRPV1MpCiAgICAgY2xhc3MgU3BlY2lmaWNTdG9yYWdlIHsKICAg
ICBwdWJsaWM6CiAgICAgICAgIHVzaW5nIERlc3Ryb3lGdW5jdGlvbiA9IHZvaWQgKCopKHZvaWQq
KTsKQEAgLTE3NiwxMCArMTc5LDYgQEAgcHVibGljOgogICAgIFdURl9FWFBPUlRfUFJJVkFURSBz
aXplX3QgZ2V0UmVnaXN0ZXJzKFBsYXRmb3JtUmVnaXN0ZXJzJik7CiAKICNpZiBVU0UoUFRIUkVB
RFMpCi0jaWYgT1MoTElOVVgpCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBUaHJlYWRJ
ZGVudGlmaWVyIGN1cnJlbnRJRCgpOwotICAgIFRocmVhZElkZW50aWZpZXIgaWQoKSBjb25zdCB7
IHJldHVybiBtX2lkOyB9Ci0jZW5kaWYKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBzaWdu
YWwoaW50IHNpZ25hbE51bWJlcik7CiAjZW5kaWYKIApAQCAtMjMxLDcgKzIzMCw3IEBAIHB1Ymxp
YzoKICAgICB9CiAjZW5kaWYKIAotICAgIHZvaWQqIHNhdmVkU3RhY2tQb2ludGVyQXRWTUVudHJ5
KCkKKyAgICB2b2lkKiBzYXZlZFN0YWNrUG9pbnRlckF0Vk1FbnRyeSgpIGNvbnN0CiAgICAgewog
ICAgICAgICByZXR1cm4gbV9zYXZlZFN0YWNrUG9pbnRlckF0Vk1FbnRyeTsKICAgICB9CkBAIC0y
NDEsNyArMjQwLDcgQEAgcHVibGljOgogICAgICAgICBtX3NhdmVkU3RhY2tQb2ludGVyQXRWTUVu
dHJ5ID0gc3RhY2tQb2ludGVyQXRWTUVudHJ5OwogICAgIH0KIAotICAgIHZvaWQqIHNhdmVkTGFz
dFN0YWNrVG9wKCkKKyAgICB2b2lkKiBzYXZlZExhc3RTdGFja1RvcCgpIGNvbnN0CiAgICAgewog
ICAgICAgICByZXR1cm4gbV9zYXZlZExhc3RTdGFja1RvcDsKICAgICB9CkBAIC0zNTMsMTQgKzM1
MiwxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgSGFzaE1hcDxUaHJlYWRHcm91cCosIHN0ZDo6d2Vha19w
dHI8VGhyZWFkR3JvdXA+PiBtX3RocmVhZEdyb3VwTWFwOwogICAgIFBsYXRmb3JtVGhyZWFkSGFu
ZGxlIG1faGFuZGxlOwogICAgIHVpbnQzMl90IG1fdWlkOwotI2lmIE9TKFdJTkRPV1MpCiAgICAg
VGhyZWFkSWRlbnRpZmllciBtX2lkIHsgMCB9OwotI2VsaWYgT1MoREFSV0lOKQorI2lmIE9TKERB
UldJTikKICAgICBtYWNoX3BvcnRfdCBtX3BsYXRmb3JtVGhyZWFkIHsgTUFDSF9QT1JUX05VTEwg
fTsKICNlbGlmIFVTRShQVEhSRUFEUykKLSNpZiBPUyhMSU5VWCkKLSAgICBUaHJlYWRJZGVudGlm
aWVyIG1faWQgeyAwIH07Ci0jZW5kaWYKICAgICBQbGF0Zm9ybVJlZ2lzdGVycyogbV9wbGF0Zm9y
bVJlZ2lzdGVycyB7IG51bGxwdHIgfTsKICAgICB1bnNpZ25lZCBtX3N1c3BlbmRDb3VudCB7IDAg
fTsKICNlbmRpZgpAQCAtNDIwLDYgKzQxNSwyNSBAQCBpbmxpbmUgVGhyZWFkJiBUaHJlYWQ6OmN1
cnJlbnQoKQogICAgIHJldHVybiBpbml0aWFsaXplQ3VycmVudFRMUygpOwogfQogCisjaWYgT1Mo
REFSV0lOKQorQUxXQVlTX0lOTElORSBUaHJlYWRJZGVudGlmaWVyIFRocmVhZDo6Y3VycmVudElE
KCkKK3sKKyAgICBUaHJlYWRJZGVudGlmaWVyIHJlc3VsdDsKKyNpZiBDUFUoQVJNNjQpCisgICAg
IGFzbSAoCisgICAgICAgICJtcnMgJXhbcmVzdWx0XSwgVFBJRFJST19FTDAiCisgICAgICAgIDog
W3Jlc3VsdF0gIj1yIiAocmVzdWx0KQorICAgICAgICA6CisgICAgICAgIDoKKyAgICApOworI2Vs
c2UKKyAgICByZXN1bHQgPSBiaXR3aXNlX2Nhc3Q8VGhyZWFkSWRlbnRpZmllcj4ocHRocmVhZF9z
ZWxmKCkpOworI2VuZGlmCisgICAgQVNTRVJUKHJlc3VsdCk7CisgICAgcmV0dXJuIHJlc3VsdDsK
K30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogdXNpbmcgV1RGOjpUaHJlYWQ7Cklu
ZGV4OiBTb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dURi93dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oCShyZXZpc2lvbiAyODg2NDUpCisr
KyBTb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTU3LDcgKzU3LDkgQEAgdXNpbmcgUGxhdGZvcm1UaHJlYWRIYW5kbGUgPSBwdGhyZWFkX3Q7CiB1
c2luZyBQbGF0Zm9ybU11dGV4ID0gcHRocmVhZF9tdXRleF90OwogdXNpbmcgUGxhdGZvcm1Db25k
aXRpb24gPSBwdGhyZWFkX2NvbmRfdDsKIHVzaW5nIFRocmVhZFNwZWNpZmljS2V5ID0gcHRocmVh
ZF9rZXlfdDsKLSNpZiBPUyhMSU5VWCkKKyNpZiBPUyhEQVJXSU4pCit1c2luZyBUaHJlYWRJZGVu
dGlmaWVyID0gdWludHB0cl90OworI2VsaWYgT1MoTElOVVgpCiB1c2luZyBUaHJlYWRJZGVudGlm
aWVyID0gcGlkX3Q7CiAjZW5kaWYKICNlbGlmIE9TKFdJTkRPV1MpCg==
</data>
<flag name="commit-queue"
          id="476553"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450371</attachid>
            <date>2022-01-30 18:52:32 -0800</date>
            <delta_ts>2022-01-30 19:12:18 -0800</delta_ts>
            <desc>test patch.</desc>
            <filename>test-threadID.patch</filename>
            <type>text/plain</type>
            <size>24219</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjg4NzIxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3IEBA
CisyMDIyLTAxLTI3ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBF
bmhhbmNlIHNhbml0aXplU3RhY2tGb3JWTSgpIHRvIGFzc2lzdCB3aXRoIGNyYXNoIGFuYWx5c2lz
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1NzUy
CisgICAgICAgIHJkYXI6Ly84MTAxNDYwMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIDEuIFJlbW92ZSB0aGUgQXNzZW1ibHlIZWxwZXJzIHZlcnNpb24g
b2Ygc2FuaXRpemVTdGFjay4gIEluc3RlYWQsIG1ha2UgdGhlIDMKKyAgICAgICAgICAgSklUIG9w
ZXJhdGlvbiBmdW5jdGlvbnMgY2FsbCBzYW5pdGl6ZVN0YWNrRm9yVk0oKSBpbnN0ZWFkLiAgVGhp
cyBlbnN1cmVzCisgICAgICAgICAgIHRoYXQgc2FuaXRpemVTdGFjayBjcmFzaGVzIGFyZSBub3Qg
b2JzY3VyZWQgYXMgZ2VuZXJpYyBKSVQgY3Jhc2hlcy4KKworICAgICAgICAyLiBBZGQgc2FuaXR5
IGNoZWNrIFJFTEVBU0VfQVNTRVJUcyB0byBWTTo6c2V0TGFzdFN0YWNrVG9wKCkgd2l0aCBhIGNh
cHR1cmUgb2YKKyAgICAgICAgICAgdGhlIHJlbGV2YW50IHZhcmlhYmxlcyBmb3IgY3Jhc2ggYW5h
bHlzaXMuCisKKyAgICAgICAgMy4gRml4IGxvZ1Nhbml0aXplU3RhY2soKSBzbyB0aGF0IGl0IG5v
IGxvbmdlciByZWxpZXMgb24gdm0udG9wQ2FsbEZyYW1lLgorICAgICAgICAgICB2bS50b3BDYWxs
RnJhbWUgbWF5IG5vdCBiZSBwcm9wZXJseSBpbml0aWFsaXplZCBhdCBhbGwgdGhlIHBsYWNlcyB0
aGF0CisgICAgICAgICAgIHNhbml0aXplU3RhY2tGb3JWTSgpIGlzIGNhbGxlZC4KKworICAgICAg
ICA0LiBBZGQgYSBKU0xvY2sgY2hlY2sgdG8gc2FuaXRpemVTdGFja0ZvclZNKCksIGFuZCByZXR1
cm4gZWFybHkgaWYgbm90IG93bmVkIGJ5CisgICAgICAgICAgIHRoZSBjdXJyZW50IHRocmVhZC4g
IElmIHRoZSBKU0xvY2sgaXMgbm90IG93bmVkIGJ5IHRoZSBjdXJyZW50IHRocmVhZCwgd2UgY2Fu
J3QKKyAgICAgICAgICAgcmVseSBvbiB2bS5sYXN0U3RhY2tUb3AoKSBiZWluZyBhIHNhbmUgdmFs
dWUuICBIZW5jZSwgaXQncyBub3QgcG9zc2libGUgdG8KKyAgICAgICAgICAgZG8gc3RhY2sgc2Fu
aXRpemF0aW9uIGNvcnJlY3RseS4KKworICAgICAgICAgICBBZGQgc2FuaXR5IGNoZWNrIFJFTEVB
U0VfQVNTRVJUcyB0byBzYW5pdGl6ZVN0YWNrRm9yVk0oKSB3aXRoIGEgY2FwdHVyZSBvZgorICAg
ICAgICAgICB0aGUgcmVsZXZhbnQgdmFyaWFibGVzIGZvciBjcmFzaCBhbmFseXNpcy4KKworICAg
ICAgICAqIGppdC9Bc3NlbWJseUhlbHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhl
bHBlcnM6OnNhbml0aXplU3RhY2tJbmxpbmUpOiBEZWxldGVkLgorICAgICAgICAqIGppdC9Bc3Nl
bWJseUhlbHBlcnMuaDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAg
IChKU0M6OkpTQ19ERUZJTkVfSklUX09QRVJBVElPTik6CisgICAgICAgICogaml0L1RodW5rR2Vu
ZXJhdG9ycy5jcHA6CisgICAgICAgIChKU0M6OnNsb3dQYXRoRm9yKToKKyAgICAgICAgKiBydW50
aW1lL0pTTG9jay5jcHA6CisgICAgICAgIChKU0M6OkpTTG9jazo6ZGlkQWNxdWlyZUxvY2spOgor
ICAgICAgICAoSlNDOjpKU0xvY2s6OmdyYWJBbGxMb2Nrcyk6CisgICAgICAgICogcnVudGltZS9W
TS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAgICAgIChKU0M6OlZNOjpzZXRMYXN0
U3RhY2tUb3ApOgorICAgICAgICAoSlNDOjpsb2dTYW5pdGl6ZVN0YWNrKToKKyAgICAgICAgKEpT
Qzo6c2FuaXRpemVTdGFja0ZvclZNKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisKIDIwMjIt
MDEtMjcgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CiAKICAgICAgICAgY29t
LmFwcGxlLldlYktpdC5XZWJBdXRobi54cGMgZmFpbHMgdG8gYnVpbGQgd2l0aCBzeXN0ZW0gY29u
dGVudCBwYXRoCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJw
cmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9JbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDI4ODY0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgyLDYg
KzgyLDggQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK05FVkVSX0lOTElORSB2b2lkIG1sYW1UZXN0
KGludCBjb2RlKTsKKwogSlNWYWx1ZSBldmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lLCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKICAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CkBAIC03MTAsNiArNzEyLDggQEAgdm9pZCBJbnRlcnByZXRl
cjo6bm90aWZ5RGVidWdnZXJPZkV4Y2VwdAogCiBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRl
UHJvZ3JhbShjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEpTR2xvYmFsT2JqZWN0KiwgSlNPYmpl
Y3QqIHRoaXNPYmopCiB7CisgICAgbWxhbVRlc3QoMHgxMDExKTsKKwogICAgIEpTU2NvcGUqIHNj
b3BlID0gdGhpc09iai0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbFNjb3BlKCk7CiAgICAgVk0mIHZt
ID0gc2NvcGUtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CkBAIC05MDQsNiArOTA4LDggQEAgZmFpbGVkSlNPTlA6CiAKIEpTVmFsdWUgSW50ZXJw
cmV0ZXI6OmV4ZWN1dGVDYWxsKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U09iamVjdCogZnVuY3Rpb24sIGNvbnN0IENhbGxEYXRhJiBjYWxsRGF0YSwgSlNWYWx1ZSB0aGlz
VmFsdWUsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCiB7CisgICAgbWxhbVRlc3QoMHgxMTExKTsKKwog
ICAgIFZNJiB2bSA9IGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKQEAgLTk3NCw2ICs5ODAsOCBAQCBKU1Zh
bHVlIEludGVycHJldGVyOjpleGVjdXRlQ2FsbChKU0dsb2JhCiAKIEpTT2JqZWN0KiBJbnRlcnBy
ZXRlcjo6ZXhlY3V0ZUNvbnN0cnVjdChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNPYmplY3QqIGNvbnN0cnVjdG9yLCBjb25zdCBDYWxsRGF0YSYgY29uc3RydWN0RGF0YSwg
Y29uc3QgQXJnTGlzdCYgYXJncywgSlNWYWx1ZSBuZXdUYXJnZXQpCiB7CisgICAgbWxhbVRlc3Qo
MHgxMjExKTsKKwogICAgIFZNJiB2bSA9IGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKQEAgLTEwNzgsNiAr
MTA4Niw4IEBAIENhbGxGcmFtZUNsb3N1cmUgSW50ZXJwcmV0ZXI6OnByZXBhcmVGb3IKIAogSlNW
YWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShFdmFsRXhlY3V0YWJsZSogZXZhbCwgSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVmFsdWUgdGhpc1ZhbHVlLCBKU1Njb3BlKiBz
Y29wZSkKIHsKKyAgICBtbGFtVGVzdCgweDEzMTEpOworCiAgICAgVk0mIHZtID0gc2NvcGUtPnZt
KCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKQEAg
LTEyNTEsNiArMTI2MSw4IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoRXZhbEV4ZWN1
dGEKIAogSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZU1vZHVsZVByb2dyYW0oSlNNb2R1bGVS
ZWNvcmQqIHJlY29yZCwgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU01vZHVsZUVudmlyb25tZW50KiBzY29w
ZSwgSlNWYWx1ZSBzZW50VmFsdWUsIEpTVmFsdWUgcmVzdW1lTW9kZSkKIHsKKyAgICBtbGFtVGVz
dCgweDE0MTEpOworCiAgICAgVk0mIHZtID0gc2NvcGUtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlcklubGluZXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHJldmlz
aW9uIDI4ODY0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnBy
ZXRlcklubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsOCBAQAogCiBuYW1lc3Bh
Y2UgSlNDIHsKIAorTkVWRVJfSU5MSU5FIHZvaWQgbWxhbVRlc3QoaW50IGNvZGUpOworCiBpbmxp
bmUgT3Bjb2RlIEludGVycHJldGVyOjpnZXRPcGNvZGUoT3Bjb2RlSUQgaWQpCiB7CiAgICAgcmV0
dXJuIExMSW50OjpnZXRPcGNvZGUoaWQpOwpAQCAtNzIsNiArNzQsOCBAQCBpbmxpbmUgT3Bjb2Rl
SUQgSW50ZXJwcmV0ZXI6OmdldE9wY29kZUlECiAKIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBJbnRl
cnByZXRlcjo6ZXhlY3V0ZShDYWxsRnJhbWVDbG9zdXJlJiBjbG9zdXJlKQogeworICAgIG1sYW1U
ZXN0KDB4MTcxMSk7CisKICAgICBWTSYgdm0gPSAqY2xvc3VyZS52bTsKICAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAkocmV2aXNpb24gMjg4NjQ1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMTEyOCwxOSArMTEyOCw2IEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjpjb3B5Q2Fs
bGVlU2F2ZXNUb0UKICNlbmRpZgogfQogCi12b2lkIEFzc2VtYmx5SGVscGVyczo6c2FuaXRpemVT
dGFja0lubGluZShWTSYgdm0sIEdQUlJlZyBzY3JhdGNoKQotewotICAgIGxvYWRQdHIodm0uYWRk
cmVzc09mTGFzdFN0YWNrVG9wKCksIHNjcmF0Y2gpOwotICAgIEp1bXAgZG9uZSA9IGJyYW5jaFB0
cihCZWxvd09yRXF1YWwsIHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBzY3JhdGNoKTsKLSAgICBMYWJl
bCBsb29wID0gbGFiZWwoKTsKLSAgICBzdG9yZVB0cihUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCBB
ZGRyZXNzKHNjcmF0Y2gpKTsKLSAgICBhZGRQdHIoVHJ1c3RlZEltbVB0cihzaXplb2Yodm9pZCop
KSwgc2NyYXRjaCk7Ci0gICAgYnJhbmNoUHRyKEFib3ZlLCBzdGFja1BvaW50ZXJSZWdpc3Rlciwg
c2NyYXRjaCkubGlua1RvKGxvb3AsIHRoaXMpOwotICAgIGRvbmUubGluayh0aGlzKTsKLSAgICBt
b3ZlKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBzY3JhdGNoKTsKLSAgICBzdG9yZVB0cihzY3JhdGNo
LCB2bS5hZGRyZXNzT2ZMYXN0U3RhY2tUb3AoKSk7Ci19Ci0KIHZvaWQgQXNzZW1ibHlIZWxwZXJz
OjpjYWdlV2l0aG91dFVudGFnZ2luZyhHaWdhY2FnZTo6S2luZCBraW5kLCBHUFJSZWcgc3RvcmFn
ZSkKIHsKICNpZiBHSUdBQ0FHRV9FTkFCTEVECkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0Fzc2VtYmx5SGVscGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgJKHJldmlzaW9uIDI4ODY0NSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNzA5
LDggKzE3MDksNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBicmFuY2hUZXN0OChaZXJvLCBB
YnNvbHV0ZUFkZHJlc3Modm0uaGVhcC5hZGRyZXNzT2ZNdXRhdG9yU2hvdWxkQmVGZW5jZWQoKSkp
OwogICAgIH0KICAgICAKLSAgICB2b2lkIHNhbml0aXplU3RhY2tJbmxpbmUoVk0mLCBHUFJSZWcg
c2NyYXRjaCk7Ci0gICAgCiAgICAgLy8gRW1pdHMgdGhlIGJyYW5jaCBzdHJ1Y3R1cmUgZm9yIHR5
cGVvZi4gVGhlIGNvZGUgZW1pdHRlZCBieSB0aGlzIGRvZXNuJ3QgZmFsbCB0aHJvdWdoLiBUaGUK
ICAgICAvLyBmdW5jdG9yIGlzIGNhbGxlZCBhdCB0aG9zZSBwb2ludHMgd2hlcmUgd2UgaGF2ZSBw
aW5wb2ludGVkIGEgdHlwZS4gT25lIHdheSB0byB1c2UgdGhpcyBpcyB0bwogICAgIC8vIGhhdmUg
dGhlIGZ1bmN0b3IgZW1pdCB0aGUgY29kZSB0byBwdXQgdGhlIHR5cGUgc3RyaW5nIGludG8gYW4g
YXBwcm9wcmlhdGUgcmVnaXN0ZXIgYW5kIHRoZW4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMjg4NjQ1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE0
NDgsMTEgKzE0NDgsMTMgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkNhbGxF
dgogCiBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTGlua0NhbGwsIFNsb3dQYXRo
UmV0dXJuVHlwZSwgKENhbGxGcmFtZSogY2FsbGVlRnJhbWUsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvKSkKIHsKKyAgICBzYW5pdGl6ZVN0
YWNrRm9yVk0oZ2xvYmFsT2JqZWN0LT52bSgpKTsKICAgICByZXR1cm4gbGlua0ZvcihjYWxsZWVG
cmFtZSwgZ2xvYmFsT2JqZWN0LCBjYWxsTGlua0luZm8pOwogfQogCiBKU0NfREVGSU5FX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uTGlua1BvbHltb3JwaGljQ2FsbCwgU2xvd1BhdGhSZXR1cm5UeXBl
LCAoQ2FsbEZyYW1lKiBjYWxsZWVGcmFtZSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8pKQogeworICAgIHNhbml0aXplU3RhY2tGb3JWTShn
bG9iYWxPYmplY3QtPnZtKCkpOwogICAgIEFTU0VSVChjYWxsTGlua0luZm8tPnNwZWNpYWxpemF0
aW9uS2luZCgpID09IENvZGVGb3JDYWxsKTsKICAgICBKU0NlbGwqIGNhbGxlZUFzRnVuY3Rpb25D
ZWxsOwogICAgIFNsb3dQYXRoUmV0dXJuVHlwZSByZXN1bHQgPSB2aXJ0dWFsRm9yV2l0aEZ1bmN0
aW9uKGdsb2JhbE9iamVjdCwgY2FsbGVlRnJhbWUsIGNhbGxMaW5rSW5mbywgY2FsbGVlQXNGdW5j
dGlvbkNlbGwpOwpAQCAtMTQ2NCw2ICsxNDY2LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbkxpbmtQbwogCiBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uVmly
dHVhbENhbGwsIFNsb3dQYXRoUmV0dXJuVHlwZSwgKENhbGxGcmFtZSogY2FsbGVlRnJhbWUsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvKSkK
IHsKKyAgICBzYW5pdGl6ZVN0YWNrRm9yVk0oZ2xvYmFsT2JqZWN0LT52bSgpKTsKICAgICBKU0Nl
bGwqIGNhbGxlZUFzRnVuY3Rpb25DZWxsSWdub3JlZDsKICAgICByZXR1cm4gdmlydHVhbEZvcldp
dGhGdW5jdGlvbihnbG9iYWxPYmplY3QsIGNhbGxlZUZyYW1lLCBjYWxsTGlua0luZm8sIGNhbGxl
ZUFzRnVuY3Rpb25DZWxsSWdub3JlZCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1RodW5rR2VuZXJhdG9ycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCShyZXZpc2lvbiAyODg2NDUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0xOTIsNyArMTkyLDYgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiB0
aAogCiBzdGF0aWMgdm9pZCBzbG93UGF0aEZvcihDQ2FsbEhlbHBlcnMmIGppdCwgVk0mIHZtLCBT
cHJ0X0pJVE9wZXJhdGlvbl9FR0NsaSBzbG93UGF0aEZ1bmN0aW9uKQogewotICAgIGppdC5zYW5p
dGl6ZVN0YWNrSW5saW5lKHZtLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKICAgICBqaXQuZW1pdEZ1
bmN0aW9uUHJvbG9ndWUoKTsKICAgICBqaXQuc3RvcmVQdHIoR1BSSW5mbzo6Y2FsbEZyYW1lUmVn
aXN0ZXIsICZ2bS50b3BDYWxsRnJhbWUpOwogI2lmIE9TKFdJTkRPV1MpICYmIENQVShYODZfNjQp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5n
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFs
aXplVGhyZWFkaW5nLmNwcAkocmV2aXNpb24gMjg4NjQ1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUw
LDYgKzUwLDE5IEBAIG5hbWVzcGFjZSBKU0MgewogCiBzdGF0aWNfYXNzZXJ0KHNpemVvZihib29s
KSA9PSAxLCAiTExJbnQgYW5kIEpJVCBhc3N1bWUgc2l6ZW9mKGJvb2wpIGlzIGFsd2F5cyAxIHdo
ZW4gdG91Y2hpbmcgaXQgZGlyZWN0bHkgZnJvbSBhc3NlbWJseSBjb2RlLiIpOwogCitORVZFUl9J
TkxJTkUgdm9pZCBtbGFtVGVzdChpbnQgY29kZSk7CisKK05FVkVSX0lOTElORSB2b2lkIG1sYW1U
ZXN0KGludCBjb2RlKSB7CisjaWYgT1MoREFSV0lOKSAmJiBDUFUoQVJNNjQpCisgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCAxMDAwOyArK2kpIHsKKyAgICAgICAgYXV0byYgdGhyZWFkID0gVGhyZWFk
OjpjdXJyZW50KCk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGNvbnRleHQtPnRocmVhZC0+aWQo
KSA9PSBUaHJlYWQ6OmN1cnJlbnRJRCgpLCBjb2RlLCBjb250ZXh0LT50aHJlYWQuaWQoKSwgVGhy
ZWFkOjpjdXJyZW50SUQoKSwgaSk7IC8vIG1sYW0gVEVTVAorICAgIH0KKyNlbHNlCisgICAgVU5V
U0VEX1BBUkFNKGNvZGUpOworI2VuZGlmCit9CisKIHZvaWQgaW5pdGlhbGl6ZSgpCiB7CiAgICAg
c3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwpAQCAtOTAsNiArMTAzLDggQEAgdm9pZCBp
bml0aWFsaXplKCkKICAgICAgICAgaW5pdGlhbGl6ZVN1cGVyU2FtcGxlcigpOwogICAgICAgICBU
aHJlYWQmIHRocmVhZCA9IFRocmVhZDo6Y3VycmVudCgpOwogICAgICAgICB0aHJlYWQuc2V0U2F2
ZWRMYXN0U3RhY2tUb3AodGhyZWFkLnN0YWNrKCkub3JpZ2luKCkpOworICAgICAgICBSRUxFQVNF
X0FTU0VSVCh0aHJlYWQuaWQoKSA9PSBUaHJlYWQ6OmN1cnJlbnRJRCgpLCAweDExMSwgdGhyZWFk
LmlkKCksIFRocmVhZDo6Y3VycmVudElEKCkpOyAvLyBtbGFtIFRFU1QKKyAgICAgICAgbWxhbVRl
c3QoMHgzMTEpOwogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgICAgICBpZiAoV2FzbTo6
aXNTdXBwb3J0ZWQoKSkgewpAQCAtMTEzLDcgKzEyOCw5IEBAIHZvaWQgaW5pdGlhbGl6ZSgpCiAg
ICAgICAgIFdURjo6Y29tcGlsZXJGZW5jZSgpOwogICAgICAgICBSRUxFQVNFX0FTU0VSVCghZ19q
c2NDb25maWcuaW5pdGlhbGl6ZUhhc0JlZW5DYWxsZWQpOwogICAgICAgICBnX2pzY0NvbmZpZy5p
bml0aWFsaXplSGFzQmVlbkNhbGxlZCA9IHRydWU7CisgICAgICAgIG1sYW1UZXN0KDB4NDExKTsK
ICAgICB9KTsKKyAgICBtbGFtVGVzdCgweDUxMSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suY3BwCShyZXZpc2lvbiAy
ODg2NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNS0yMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNS0y
MDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpA
QCAtMzksNiArMzksOCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorTkVWRVJfSU5MSU5FIHZvaWQg
bWxhbVRlc3QoaW50IGNvZGUpOworCiBMb2NrIEdsb2JhbEpTTG9jazo6c19zaGFyZWRJbnN0YW5j
ZU11dGV4OwogCiBHbG9iYWxKU0xvY2s6Okdsb2JhbEpTTG9jaygpCkBAIC0xMDksNiArMTExLDcg
QEAgdm9pZCBKU0xvY2s6OmxvY2soaW50cHRyX3QgbG9ja0NvdW50KSBXVAogICAgIH0KICNlbmRp
ZgogCisgICAgbWxhbVRlc3QoMHg2MTEpOwogICAgIGJvb2wgc3VjY2VzcyA9IG1fbG9jay50cnlM
b2NrKCk7CiAgICAgaWYgKFVOTElLRUxZKCFzdWNjZXNzKSkgewogICAgICAgICBpZiAoY3VycmVu
dFRocmVhZElzSG9sZGluZ0xvY2soKSkgewpAQCAtMTI1LDYgKzEyOCw3IEBAIHZvaWQgSlNMb2Nr
Ojpsb2NrKGludHB0cl90IGxvY2tDb3VudCkgV1QKICAgICBtX2xvY2tDb3VudCA9IGxvY2tDb3Vu
dDsKIAogICAgIGRpZEFjcXVpcmVMb2NrKCk7CisgICAgbWxhbVRlc3QoMHg3MTEpOwogfQogCiB2
b2lkIEpTTG9jazo6ZGlkQWNxdWlyZUxvY2soKQpAQCAtMTM4LDggKzE0Miw3IEBAIHZvaWQgSlNM
b2NrOjpkaWRBY3F1aXJlTG9jaygpCiAgICAgbV9lbnRyeUF0b21TdHJpbmdUYWJsZSA9IHRocmVh
ZC5zZXRDdXJyZW50QXRvbVN0cmluZ1RhYmxlKG1fdm0tPmF0b21TdHJpbmdUYWJsZSgpKTsKICAg
ICBBU1NFUlQobV9lbnRyeUF0b21TdHJpbmdUYWJsZSk7CiAKLSAgICBtX3ZtLT5zZXRMYXN0U3Rh
Y2tUb3AodGhyZWFkLnNhdmVkTGFzdFN0YWNrVG9wKCkpOwotICAgIEFTU0VSVCh0aHJlYWQuc3Rh
Y2soKS5jb250YWlucyhtX3ZtLT5sYXN0U3RhY2tUb3AoKSkpOworICAgIG1fdm0tPnNldExhc3RT
dGFja1RvcCh0aHJlYWQpOwogCiAgICAgaWYgKG1fdm0tPmhlYXAuaGFzQWNjZXNzKCkpCiAgICAg
ICAgIG1fc2hvdWxkUmVsZWFzZUhlYXBBY2Nlc3MgPSBmYWxzZTsKQEAgLTE4NCw2ICsxODcsNyBA
QCB2b2lkIEpTTG9jazo6dW5sb2NrKGludHB0cl90IHVubG9ja0NvdW50CiAgICAgUkVMRUFTRV9B
U1NFUlQoY3VycmVudFRocmVhZElzSG9sZGluZ0xvY2soKSk7CiAgICAgQVNTRVJUKG1fbG9ja0Nv
dW50ID49IHVubG9ja0NvdW50KTsKIAorICAgIG1sYW1UZXN0KDB4ODExKTsKICAgICAvLyBNYWlu
dGFpbiBtX2xvY2tDb3VudCB3aGlsZSBjYWxsaW5nIHdpbGxSZWxlYXNlTG9jaygpIHNvIHRoYXQg
aXRzIGNhbGxlZXMga25vdyB0aGF0CiAgICAgLy8gdGhleSBzdGlsbCBoYXZlIHRoZSBsb2NrLgog
ICAgIGlmICh1bmxvY2tDb3VudCA9PSBtX2xvY2tDb3VudCkKQEAgLTE5NSw2ICsxOTksNyBAQCB2
b2lkIEpTTG9jazo6dW5sb2NrKGludHB0cl90IHVubG9ja0NvdW50CiAgICAgICAgIG1faGFzT3du
ZXJUaHJlYWQgPSBmYWxzZTsKICAgICAgICAgbV9sb2NrLnVubG9jaygpOwogICAgIH0KKyAgICBt
bGFtVGVzdCgweDkxMSk7CiB9CiAKIHZvaWQgSlNMb2NrOjp3aWxsUmVsZWFzZUxvY2soKQpAQCAt
Mjc3LDcgKzI4Miw3IEBAIHZvaWQgSlNMb2NrOjpncmFiQWxsTG9ja3MoRHJvcEFsbExvY2tzKiAK
IAogICAgIFRocmVhZCYgdGhyZWFkID0gVGhyZWFkOjpjdXJyZW50KCk7CiAgICAgbV92bS0+c2V0
U3RhY2tQb2ludGVyQXRWTUVudHJ5KHRocmVhZC5zYXZlZFN0YWNrUG9pbnRlckF0Vk1FbnRyeSgp
KTsKLSAgICBtX3ZtLT5zZXRMYXN0U3RhY2tUb3AodGhyZWFkLnNhdmVkTGFzdFN0YWNrVG9wKCkp
OworICAgIG1fdm0tPnNldExhc3RTdGFja1RvcCh0aHJlYWQpOwogfQogCiBKU0xvY2s6OkRyb3BB
bGxMb2Nrczo6RHJvcEFsbExvY2tzKFZNKiB2bSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5jcHAJKHJldmlzaW9uIDI4ODY0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDgtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDgtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEzNSw2ICsxMzUsOCBAQAogCiBuYW1l
c3BhY2UgSlNDIHsKIAorTkVWRVJfSU5MSU5FIHZvaWQgbWxhbVRlc3QoaW50IGNvZGUpOworCiBB
dG9taWM8dW5zaWduZWQ+IFZNOjpzX251bWJlck9mSURzOwogCiBERUZJTkVfQUxMT0NBVE9SX1dJ
VEhfSEVBUF9JREVOVElGSUVSKFZNKTsKQEAgLTI0Miw5ICsyNDQsOCBAQCBWTTo6Vk0oVk1UeXBl
IHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUsCiAgICAgICAgIENSQVNIX1dJVEhfSU5GTygweDQy
NDI0MjQyMjAyMDIwMjAsIDB4YmFkYmVlZjBiYWRiZWVmLCAweDEyMzQxMjM0MTIzNDEyMzQsIDB4
MTMzNzEzMzcxMzM3MTMzNyk7CiAKICAgICBpbnRlcnByZXRlciA9IG5ldyBJbnRlcnByZXRlcigq
dGhpcyk7Ci0gICAgU3RhY2tCb3VuZHMgc3RhY2sgPSBUaHJlYWQ6OmN1cnJlbnQoKS5zdGFjaygp
OwogICAgIHVwZGF0ZVNvZnRSZXNlcnZlZFpvbmVTaXplKE9wdGlvbnM6OnNvZnRSZXNlcnZlZFpv
bmVTaXplKCkpOwotICAgIHNldExhc3RTdGFja1RvcChzdGFjay5vcmlnaW4oKSk7CisgICAgc2V0
TGFzdFN0YWNrVG9wKFRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIEpTUnVuTG9vcFRpbWVyOjpN
YW5hZ2VyOjpzaGFyZWQoKS5yZWdpc3RlclZNKCp0aGlzKTsKIApAQCAtNTAzLDkgKzUwNCwxNSBA
QCB2b2lkIFZNOjpwcmltaXRpdmVHaWdhY2FnZURpc2FibGVkKCkKICAgICBtX25lZWRUb0ZpcmVQ
cmltaXRpdmVHaWdhY2FnZUVuYWJsZWQgPSB0cnVlOwogfQogCi12b2lkIFZNOjpzZXRMYXN0U3Rh
Y2tUb3Aodm9pZCogbGFzdFN0YWNrVG9wKQoteyAKLSAgICBtX2xhc3RTdGFja1RvcCA9IGxhc3RT
dGFja1RvcDsKK3ZvaWQgVk06OnNldExhc3RTdGFja1RvcChjb25zdCBUaHJlYWQmIHRocmVhZCkK
K3sKKyAgICBtX2xhc3RTdGFja1RvcCA9IHRocmVhZC5zYXZlZExhc3RTdGFja1RvcCgpOworICAg
IGF1dG8mIHN0YWNrID0gdGhyZWFkLnN0YWNrKCk7CisgICAgUkVMRUFTRV9BU1NFUlQoc3RhY2su
Y29udGFpbnMobV9sYXN0U3RhY2tUb3ApLCAweDU1MTAsIG1fbGFzdFN0YWNrVG9wLCBzdGFjay5v
cmlnaW4oKSwgc3RhY2suZW5kKCkpOworI2lmIE9TKERBUldJTikgJiYgQ1BVKEFSTTY0KQorICAg
IFJFTEVBU0VfQVNTRVJUKHRocmVhZC5pZCgpID09IFRocmVhZDo6Y3VycmVudElEKCksIDB4NTUy
MCwgdGhyZWFkLmlkKCksIFRocmVhZDo6Y3VycmVudElEKCkpOworI2VuZGlmCisgICAgbWxhbVRl
c3QoMHgxNjExKTsKIH0KIAogUmVmPFZNPiBWTTo6Y3JlYXRlQ29udGV4dEdyb3VwKEhlYXBUeXBl
IGhlYXBUeXBlKQpAQCAtMTA1MCwxNiArMTA1NywxMSBAQCB2b2lkIFZNOjpwb3BBbGxDaGVja3Bv
aW50T1NSU2lkZVN0YXRlVW50CiAgICAgbV9jaGVja3BvaW50U2lkZVN0YXRlLnNocmlua1RvRml0
KCk7CiB9CiAKLXZvaWQgbG9nU2FuaXRpemVTdGFjayhWTSYgdm0pCitzdGF0aWMgdm9pZCBsb2dT
YW5pdGl6ZVN0YWNrKFZNJiB2bSkKIHsKLSAgICBpZiAoT3B0aW9uczo6dmVyYm9zZVNhbml0aXpl
U3RhY2soKSAmJiB2bS50b3BDYWxsRnJhbWUpIHsKLSAgICAgICAgaW50IGR1bW15OworICAgIGlm
IChVTkxJS0VMWShPcHRpb25zOjp2ZXJib3NlU2FuaXRpemVTdGFjaygpKSkgewogICAgICAgICBh
dXRvJiBzdGFja0JvdW5kcyA9IFRocmVhZDo6Y3VycmVudCgpLnN0YWNrKCk7Ci0gICAgICAgIGRh
dGFMb2coCi0gICAgICAgICAgICAiU2FuaXRpemluZyBzdGFjayBmb3IgVk0gPSAiLCBSYXdQb2lu
dGVyKCZ2bSksICIgd2l0aCB0b3AgY2FsbCBmcmFtZSBhdCAiLCBSYXdQb2ludGVyKHZtLnRvcENh
bGxGcmFtZSksCi0gICAgICAgICAgICAiLCBjdXJyZW50IHN0YWNrIHBvaW50ZXIgYXQgIiwgUmF3
UG9pbnRlcigmZHVtbXkpLCAiLCBpbiAiLAotICAgICAgICAgICAgcG9pbnRlckR1bXAodm0udG9w
Q2FsbEZyYW1lLT5jb2RlQmxvY2soKSksICIsIGxhc3QgY29kZSBvcmlnaW4gPSAiLAotICAgICAg
ICAgICAgdm0udG9wQ2FsbEZyYW1lLT5jb2RlT3JpZ2luKCksICIsIGxhc3Qgc3RhY2sgdG9wID0g
IiwgUmF3UG9pbnRlcih2bS5sYXN0U3RhY2tUb3AoKSksICIsIGluIHN0YWNrIHJhbmdlIFsiLCBS
YXdQb2ludGVyKHN0YWNrQm91bmRzLm9yaWdpbigpKSwgIiwgIiwgUmF3UG9pbnRlcihzdGFja0Jv
dW5kcy5lbmQoKSksICJdXG4iKTsKKyAgICAgICAgZGF0YUxvZ0xuKCJTYW5pdGl6aW5nIHN0YWNr
IGZvciBWTSA9ICIsIFJhd1BvaW50ZXIoJnZtKSwgIiwgY3VycmVudCBzdGFjayBwb2ludGVyIGF0
ICIsIFJhd1BvaW50ZXIoY3VycmVudFN0YWNrUG9pbnRlcigpKSwgIiwgbGFzdCBzdGFjayB0b3Ag
PSAiLCBSYXdQb2ludGVyKHZtLmxhc3RTdGFja1RvcCgpKSwgIiwgaW4gc3RhY2sgcmFuZ2UgKCIs
IFJhd1BvaW50ZXIoc3RhY2tCb3VuZHMuZW5kKCkpLCAiLCAiLCBSYXdQb2ludGVyKHN0YWNrQm91
bmRzLm9yaWdpbigpKSwgIl0iKTsKICAgICB9CiB9CiAKQEAgLTEyNzAsMTcgKzEyNzIsMjUgQEAg
dm9pZCBRdWV1ZWRUYXNrOjpydW4oKQogCiB2b2lkIHNhbml0aXplU3RhY2tGb3JWTShWTSYgdm0p
CiB7CisgICAgYXV0byYgdGhyZWFkID0gVGhyZWFkOjpjdXJyZW50KCk7CisjaWYgT1MoREFSV0lO
KSAmJiBDUFUoQVJNNjQpCisgICAgUkVMRUFTRV9BU1NFUlQodGhyZWFkLmlkKCkgPT0gVGhyZWFk
OjpjdXJyZW50SUQoKSwgMHhhYTEwLCB0aHJlYWQuaWQoKSwgVGhyZWFkOjpjdXJyZW50SUQoKSk7
CisjZW5kaWYKKyAgICBhdXRvJiBzdGFjayA9IHRocmVhZC5zdGFjaygpOworICAgIGlmICghdm0u
Y3VycmVudFRocmVhZElzSG9sZGluZ0FQSUxvY2soKSkKKyAgICAgICAgcmV0dXJuOyAvLyB2bS5s
YXN0U3RhY2tUb3AoKSBtYXkgbm90IGJlIHNldCB1cCBjb3JyZWN0bHkgaWYgSlNMb2NrIGlzIG5v
dCBoZWxkLgorCiAgICAgbG9nU2FuaXRpemVTdGFjayh2bSk7Ci0gICAgaWYgKHZtLnRvcENhbGxG
cmFtZSkgewotICAgICAgICBhdXRvJiBzdGFja0JvdW5kcyA9IFRocmVhZDo6Y3VycmVudCgpLnN0
YWNrKCk7Ci0gICAgICAgIEFTU0VSVCh2bS5jdXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygp
KTsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChzdGFja0JvdW5kcywgc3RhY2tCb3VuZHMuY29udGFp
bnModm0ubGFzdFN0YWNrVG9wKCkpKTsKLSAgICB9CisKKyAgICBSRUxFQVNFX0FTU0VSVChzdGFj
ay5jb250YWlucyh2bS5sYXN0U3RhY2tUb3AoKSksIDB4YWEyMCwgdm0ubGFzdFN0YWNrVG9wKCks
IHN0YWNrLm9yaWdpbigpLCBzdGFjay5lbmQoKSk7CiAjaWYgRU5BQkxFKENfTE9PUCkKICAgICB2
bS5pbnRlcnByZXRlci0+Y2xvb3BTdGFjaygpLnNhbml0aXplU3RhY2soKTsKICNlbHNlCiAgICAg
c2FuaXRpemVTdGFja0ZvclZNSW1wbCgmdm0pOwogI2VuZGlmCisgICAgUkVMRUFTRV9BU1NFUlQo
c3RhY2suY29udGFpbnModm0ubGFzdFN0YWNrVG9wKCkpLCAweGFhMzAsIHZtLmxhc3RTdGFja1Rv
cCgpLCBzdGFjay5vcmlnaW4oKSwgc3RhY2suZW5kKCkpOworCisgICAgbWxhbVRlc3QoMHgxNTEx
KTsKIH0KIAogc2l6ZV90IFZNOjpjb21taXR0ZWRTdGFja0J5dGVDb3VudCgpCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHJldmlzaW9uIDI4ODY0NSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03ODUsNyArNzg1LDcg
QEAgcHVibGljOgogCiAgICAgdm9pZCoqIGFkZHJlc3NPZkxhc3RTdGFja1RvcCgpIHsgcmV0dXJu
ICZtX2xhc3RTdGFja1RvcDsgfQogICAgIHZvaWQqIGxhc3RTdGFja1RvcCgpIHsgcmV0dXJuIG1f
bGFzdFN0YWNrVG9wOyB9Ci0gICAgdm9pZCBzZXRMYXN0U3RhY2tUb3Aodm9pZCopOworICAgIHZv
aWQgc2V0TGFzdFN0YWNrVG9wKGNvbnN0IFRocmVhZCYpOwogICAgIAogICAgIHZvaWQgZmlyZVBy
aW1pdGl2ZUdpZ2FjYWdlRW5hYmxlZElmTmVjZXNzYXJ5KCkKICAgICB7CkBAIC0xMTczLDYgKzEx
NzMsNSBAQCBleHRlcm4gIkMiIHZvaWQgc2FuaXRpemVTdGFja0ZvclZNSW1wbChWCiAjZW5kaWYK
IAogSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzYW5pdGl6ZVN0YWNrRm9yVk0oVk0mKTsKLXZvaWQg
bG9nU2FuaXRpemVTdGFjayhWTSYpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJj
ZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyODg2NDUpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDI0IEBACisyMDIyLTAxLTI3ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4K
KworICAgICAgICBFbmhhbmNlIHNhbml0aXplU3RhY2tGb3JWTSgpIHRvIGFzc2lzdCB3aXRoIGNy
YXNoIGFuYWx5c2lzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjM1NzUyCisgICAgICAgIHJkYXI6Ly84MTAxNDYwMQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBUaHJlYWRJZGVu
dGlmaWVyIGFuZCBUaHJlYWQ6OmN1cnJlbnRJRCgpIG9uIE9TKERBUldJTikuICBUaGlzIGNhbgor
ICAgICAgICBiZSB1c2VkIHRvIGRldGVjdCBUTFMgY29ycnVwdGlvbiAvIGJ1Z3MuCisKKyAgICAg
ICAgKiB3dGYvVGhyZWFkaW5nLmNwcDoKKyAgICAgICAgKFdURjo6VGhyZWFkOjppbml0aWFsaXpl
SW5UaHJlYWQpOgorICAgICAgICAqIHd0Zi9UaHJlYWRpbmcuaDoKKyAgICAgICAgKFdURjo6VGhy
ZWFkOjpzYXZlZFN0YWNrUG9pbnRlckF0Vk1FbnRyeSBjb25zdCk6CisgICAgICAgIChXVEY6OlRo
cmVhZDo6c2F2ZWRMYXN0U3RhY2tUb3AgY29uc3QpOgorICAgICAgICAoV1RGOjpUaHJlYWQ6OmN1
cnJlbnRJRCk6CisgICAgICAgIChXVEY6OlRocmVhZDo6c2F2ZWRTdGFja1BvaW50ZXJBdFZNRW50
cnkpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpUaHJlYWQ6OnNhdmVkTGFzdFN0YWNrVG9wKTog
RGVsZXRlZC4KKyAgICAgICAgKiB3dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oOgorCiAyMDIyLTAx
LTI1ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFtt
YWNPU10gQWRkIG5ldyBzY3JlZW4gYW5kIHdpbmRvdyBjYXB0dXJlIGJhY2tlbmQKSW5kZXg6IFNv
dXJjZS9XVEYvd3RmL1RocmVhZGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYv
VGhyZWFkaW5nLmNwcAkocmV2aXNpb24gMjg4NjQ1KQorKysgU291cmNlL1dURi93dGYvVGhyZWFk
aW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU5LDggKzE1OSwxMCBAQCB2b2lkIFRocmVhZDo6
aW5pdGlhbGl6ZUluVGhyZWFkKCkKICAgICB9CiAjZW5kaWYKIAotI2lmIE9TKExJTlVYKQorI2lm
IFVTRShQVEhSRUFEUykKICAgICBtX2lkID0gY3VycmVudElEKCk7CisjZWxzZQorICAgIFJFTEVB
U0VfQVNTRVJUKG1faWQgPT0gY3VycmVudElEKCkpOwogI2VuZGlmCiB9CiAKQEAgLTE3OSw2ICsx
ODEsNyBAQCB2b2lkIFRocmVhZDo6ZW50cnlQb2ludChOZXdUaHJlYWRDb250ZXh0CiAgICAgICAg
IGNvbnRleHQtPnRocmVhZC0+aW5pdGlhbGl6ZUluVGhyZWFkKCk7CiAKICAgICAgICAgVGhyZWFk
Ojppbml0aWFsaXplVExTKFdURk1vdmUoY29udGV4dC0+dGhyZWFkKSk7CisgICAgICAgIFJFTEVB
U0VfQVNTRVJUKGNvbnRleHQtPnRocmVhZC0+aWQoKSA9PSBUaHJlYWQ6OmN1cnJlbnRJRCgpLCAw
eDIxMSwgY29udGV4dC0+dGhyZWFkLT5pZCgpLCBUaHJlYWQ6OmN1cnJlbnRJRCgpKTsgLy8gbWxh
bSBURVNUCiAKICNpZiAhSEFWRShTVEFDS19CT1VORFNfRk9SX05FV19USFJFQUQpCiAgICAgICAg
IC8vIEFjayBjb21wbGV0aW9uIG9mIGluaXRpYWxpemF0aW9uIHRvIHRoZSBjcmVhdGluZyB0aHJl
YWQuCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV1RGL3d0Zi9UaHJlYWRpbmcuaAkocmV2aXNpb24gMjg4NjQ1KQorKysgU291cmNlL1dURi93
dGYvVGhyZWFkaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDA3LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDA3LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICogQ29weXJpZ2h0IChDKSAyMDA3IEp1c3RpbiBIYXlnb29kIDxqaGF5Z29vZEByZWFrdGl4LmNv
bT4KICAqIENvcHlyaWdodCAoQykgMjAxNyBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CiAgKgpAQCAtMTMwLDE1ICsxMzAsMTggQEAgcHVibGljOgogCiAgICAgdWludDMyX3Qg
dWlkKCkgY29uc3QgeyByZXR1cm4gbV91aWQ7IH0KIAotI2lmIE9TKFdJTkRPV1MpCiAgICAgLy8g
UmV0dXJucyBUaHJlYWRJZGVudGlmaWVyIGRpcmVjdGx5LiBJdCBpcyB1c2VmdWwgaWYgdGhlIHVz
ZXIgb25seSBjYXJlcyBhYm91dCBpZGVudGl0eQogICAgIC8vIG9mIHRocmVhZHMuIEF0IHRoYXQg
dGltZSwgdXNlcnMgc2hvdWxkIGtub3cgdGhhdCBob2xkaW5nIHRoaXMgVGhyZWFkSWRlbnRpZmll
ciBkb2VzIG5vdCBlbnN1cmUKICAgICAvLyB0aGF0IHRoZSB0aHJlYWQgaW5mb3JtYXRpb24gaXMg
YWxpdmUuIFdoaWxlIFRocmVhZDo6Y3VycmVudCgpIGlzIG5vdCBzYWZlIGlmIGl0IGlzIGNhbGxl
ZAogICAgIC8vIGZyb20gdGhlIGRlc3RydWN0b3Igb2YgdGhlIG90aGVyIFRMUyBkYXRhLCBjdXJy
ZW50SUQoKSBhbHdheXMgcmV0dXJucyBtZWFuaW5nZnVsIHRocmVhZCBJRC4KKyNpZiBPUyhEQVJX
SU4pCisgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgVGhyZWFkSWRlbnRpZmllciBjdXJyZW50SUQo
KTsKKyNlbHNlCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBUaHJlYWRJZGVudGlmaWVy
IGN1cnJlbnRJRCgpOwotCisjZW5kaWYKICAgICBUaHJlYWRJZGVudGlmaWVyIGlkKCkgY29uc3Qg
eyByZXR1cm4gbV9pZDsgfQogCisjaWYgT1MoV0lORE9XUykKICAgICBjbGFzcyBTcGVjaWZpY1N0
b3JhZ2UgewogICAgIHB1YmxpYzoKICAgICAgICAgdXNpbmcgRGVzdHJveUZ1bmN0aW9uID0gdm9p
ZCAoKikodm9pZCopOwpAQCAtMTc2LDEwICsxNzksNiBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9S
VF9QUklWQVRFIHNpemVfdCBnZXRSZWdpc3RlcnMoUGxhdGZvcm1SZWdpc3RlcnMmKTsKIAogI2lm
IFVTRShQVEhSRUFEUykKLSNpZiBPUyhMSU5VWCkKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIFRocmVhZElkZW50aWZpZXIgY3VycmVudElEKCk7Ci0gICAgVGhyZWFkSWRlbnRpZmllciBp
ZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KLSNlbmRpZgogICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBib29sIHNpZ25hbChpbnQgc2lnbmFsTnVtYmVyKTsKICNlbmRpZgogCkBAIC0yMzEsNyArMjMw
LDcgQEAgcHVibGljOgogICAgIH0KICNlbmRpZgogCi0gICAgdm9pZCogc2F2ZWRTdGFja1BvaW50
ZXJBdFZNRW50cnkoKQorICAgIHZvaWQqIHNhdmVkU3RhY2tQb2ludGVyQXRWTUVudHJ5KCkgY29u
c3QKICAgICB7CiAgICAgICAgIHJldHVybiBtX3NhdmVkU3RhY2tQb2ludGVyQXRWTUVudHJ5Owog
ICAgIH0KQEAgLTI0MSw3ICsyNDAsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fc2F2ZWRTdGFja1Bv
aW50ZXJBdFZNRW50cnkgPSBzdGFja1BvaW50ZXJBdFZNRW50cnk7CiAgICAgfQogCi0gICAgdm9p
ZCogc2F2ZWRMYXN0U3RhY2tUb3AoKQorICAgIHZvaWQqIHNhdmVkTGFzdFN0YWNrVG9wKCkgY29u
c3QKICAgICB7CiAgICAgICAgIHJldHVybiBtX3NhdmVkTGFzdFN0YWNrVG9wOwogICAgIH0KQEAg
LTM1MywxNCArMzUyLDEwIEBAIHByb3RlY3RlZDoKICAgICBIYXNoTWFwPFRocmVhZEdyb3VwKiwg
c3RkOjp3ZWFrX3B0cjxUaHJlYWRHcm91cD4+IG1fdGhyZWFkR3JvdXBNYXA7CiAgICAgUGxhdGZv
cm1UaHJlYWRIYW5kbGUgbV9oYW5kbGU7CiAgICAgdWludDMyX3QgbV91aWQ7Ci0jaWYgT1MoV0lO
RE9XUykKICAgICBUaHJlYWRJZGVudGlmaWVyIG1faWQgeyAwIH07Ci0jZWxpZiBPUyhEQVJXSU4p
CisjaWYgT1MoREFSV0lOKQogICAgIG1hY2hfcG9ydF90IG1fcGxhdGZvcm1UaHJlYWQgeyBNQUNI
X1BPUlRfTlVMTCB9OwogI2VsaWYgVVNFKFBUSFJFQURTKQotI2lmIE9TKExJTlVYKQotICAgIFRo
cmVhZElkZW50aWZpZXIgbV9pZCB7IDAgfTsKLSNlbmRpZgogICAgIFBsYXRmb3JtUmVnaXN0ZXJz
KiBtX3BsYXRmb3JtUmVnaXN0ZXJzIHsgbnVsbHB0ciB9OwogICAgIHVuc2lnbmVkIG1fc3VzcGVu
ZENvdW50IHsgMCB9OwogI2VuZGlmCkBAIC00MjAsNiArNDE1LDI1IEBAIGlubGluZSBUaHJlYWQm
IFRocmVhZDo6Y3VycmVudCgpCiAgICAgcmV0dXJuIGluaXRpYWxpemVDdXJyZW50VExTKCk7CiB9
CiAKKyNpZiBPUyhEQVJXSU4pCitBTFdBWVNfSU5MSU5FIFRocmVhZElkZW50aWZpZXIgVGhyZWFk
OjpjdXJyZW50SUQoKQoreworICAgIFRocmVhZElkZW50aWZpZXIgcmVzdWx0OworI2lmIENQVShB
Uk02NCkKKyAgICAgYXNtICgKKyAgICAgICAgIm1ycyAleFtyZXN1bHRdLCBUUElEUlJPX0VMMCIK
KyAgICAgICAgOiBbcmVzdWx0XSAiPXIiIChyZXN1bHQpCisgICAgICAgIDoKKyAgICAgICAgOgor
ICAgICk7CisjZWxzZQorICAgIHJlc3VsdCA9IGJpdHdpc2VfY2FzdDxUaHJlYWRJZGVudGlmaWVy
PihwdGhyZWFkX3NlbGYoKSk7CisjZW5kaWYKKyAgICBBU1NFUlQocmVzdWx0KTsKKyAgICByZXR1
cm4gcmVzdWx0OworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdURgogCiB1c2luZyBXVEY6
OlRocmVhZDsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmgJKHJldmlzaW9u
IDI4ODY0NSkKKysrIFNvdXJjZS9XVEYvd3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTcsNyArNTcsOSBAQCB1c2luZyBQbGF0Zm9ybVRocmVhZEhhbmRsZSA9IHB0
aHJlYWRfdDsKIHVzaW5nIFBsYXRmb3JtTXV0ZXggPSBwdGhyZWFkX211dGV4X3Q7CiB1c2luZyBQ
bGF0Zm9ybUNvbmRpdGlvbiA9IHB0aHJlYWRfY29uZF90OwogdXNpbmcgVGhyZWFkU3BlY2lmaWNL
ZXkgPSBwdGhyZWFkX2tleV90OwotI2lmIE9TKExJTlVYKQorI2lmIE9TKERBUldJTikKK3VzaW5n
IFRocmVhZElkZW50aWZpZXIgPSB1aW50cHRyX3Q7CisjZWxpZiBPUyhMSU5VWCkKIHVzaW5nIFRo
cmVhZElkZW50aWZpZXIgPSBwaWRfdDsKICNlbmRpZgogI2VsaWYgT1MoV0lORE9XUykK
</data>
<flag name="commit-queue"
          id="476774"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450372</attachid>
            <date>2022-01-30 18:57:16 -0800</date>
            <delta_ts>2022-01-31 00:03:42 -0800</delta_ts>
            <desc>testing on EWS.</desc>
            <filename>test-threadID.patch</filename>
            <type>text/plain</type>
            <size>24200</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjg4NzIxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3IEBA
CisyMDIyLTAxLTI3ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBF
bmhhbmNlIHNhbml0aXplU3RhY2tGb3JWTSgpIHRvIGFzc2lzdCB3aXRoIGNyYXNoIGFuYWx5c2lz
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1NzUy
CisgICAgICAgIHJkYXI6Ly84MTAxNDYwMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIDEuIFJlbW92ZSB0aGUgQXNzZW1ibHlIZWxwZXJzIHZlcnNpb24g
b2Ygc2FuaXRpemVTdGFjay4gIEluc3RlYWQsIG1ha2UgdGhlIDMKKyAgICAgICAgICAgSklUIG9w
ZXJhdGlvbiBmdW5jdGlvbnMgY2FsbCBzYW5pdGl6ZVN0YWNrRm9yVk0oKSBpbnN0ZWFkLiAgVGhp
cyBlbnN1cmVzCisgICAgICAgICAgIHRoYXQgc2FuaXRpemVTdGFjayBjcmFzaGVzIGFyZSBub3Qg
b2JzY3VyZWQgYXMgZ2VuZXJpYyBKSVQgY3Jhc2hlcy4KKworICAgICAgICAyLiBBZGQgc2FuaXR5
IGNoZWNrIFJFTEVBU0VfQVNTRVJUcyB0byBWTTo6c2V0TGFzdFN0YWNrVG9wKCkgd2l0aCBhIGNh
cHR1cmUgb2YKKyAgICAgICAgICAgdGhlIHJlbGV2YW50IHZhcmlhYmxlcyBmb3IgY3Jhc2ggYW5h
bHlzaXMuCisKKyAgICAgICAgMy4gRml4IGxvZ1Nhbml0aXplU3RhY2soKSBzbyB0aGF0IGl0IG5v
IGxvbmdlciByZWxpZXMgb24gdm0udG9wQ2FsbEZyYW1lLgorICAgICAgICAgICB2bS50b3BDYWxs
RnJhbWUgbWF5IG5vdCBiZSBwcm9wZXJseSBpbml0aWFsaXplZCBhdCBhbGwgdGhlIHBsYWNlcyB0
aGF0CisgICAgICAgICAgIHNhbml0aXplU3RhY2tGb3JWTSgpIGlzIGNhbGxlZC4KKworICAgICAg
ICA0LiBBZGQgYSBKU0xvY2sgY2hlY2sgdG8gc2FuaXRpemVTdGFja0ZvclZNKCksIGFuZCByZXR1
cm4gZWFybHkgaWYgbm90IG93bmVkIGJ5CisgICAgICAgICAgIHRoZSBjdXJyZW50IHRocmVhZC4g
IElmIHRoZSBKU0xvY2sgaXMgbm90IG93bmVkIGJ5IHRoZSBjdXJyZW50IHRocmVhZCwgd2UgY2Fu
J3QKKyAgICAgICAgICAgcmVseSBvbiB2bS5sYXN0U3RhY2tUb3AoKSBiZWluZyBhIHNhbmUgdmFs
dWUuICBIZW5jZSwgaXQncyBub3QgcG9zc2libGUgdG8KKyAgICAgICAgICAgZG8gc3RhY2sgc2Fu
aXRpemF0aW9uIGNvcnJlY3RseS4KKworICAgICAgICAgICBBZGQgc2FuaXR5IGNoZWNrIFJFTEVB
U0VfQVNTRVJUcyB0byBzYW5pdGl6ZVN0YWNrRm9yVk0oKSB3aXRoIGEgY2FwdHVyZSBvZgorICAg
ICAgICAgICB0aGUgcmVsZXZhbnQgdmFyaWFibGVzIGZvciBjcmFzaCBhbmFseXNpcy4KKworICAg
ICAgICAqIGppdC9Bc3NlbWJseUhlbHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhl
bHBlcnM6OnNhbml0aXplU3RhY2tJbmxpbmUpOiBEZWxldGVkLgorICAgICAgICAqIGppdC9Bc3Nl
bWJseUhlbHBlcnMuaDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAg
IChKU0M6OkpTQ19ERUZJTkVfSklUX09QRVJBVElPTik6CisgICAgICAgICogaml0L1RodW5rR2Vu
ZXJhdG9ycy5jcHA6CisgICAgICAgIChKU0M6OnNsb3dQYXRoRm9yKToKKyAgICAgICAgKiBydW50
aW1lL0pTTG9jay5jcHA6CisgICAgICAgIChKU0M6OkpTTG9jazo6ZGlkQWNxdWlyZUxvY2spOgor
ICAgICAgICAoSlNDOjpKU0xvY2s6OmdyYWJBbGxMb2Nrcyk6CisgICAgICAgICogcnVudGltZS9W
TS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAgICAgIChKU0M6OlZNOjpzZXRMYXN0
U3RhY2tUb3ApOgorICAgICAgICAoSlNDOjpsb2dTYW5pdGl6ZVN0YWNrKToKKyAgICAgICAgKEpT
Qzo6c2FuaXRpemVTdGFja0ZvclZNKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisKIDIwMjIt
MDEtMjcgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CiAKICAgICAgICAgY29t
LmFwcGxlLldlYktpdC5XZWJBdXRobi54cGMgZmFpbHMgdG8gYnVpbGQgd2l0aCBzeXN0ZW0gY29u
dGVudCBwYXRoCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJw
cmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9JbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDI4ODY0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgyLDYg
KzgyLDggQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK05FVkVSX0lOTElORSB2b2lkIG1sYW1UZXN0
KGludCBjb2RlKTsKKwogSlNWYWx1ZSBldmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lLCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKICAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CkBAIC03MTAsNiArNzEyLDggQEAgdm9pZCBJbnRlcnByZXRl
cjo6bm90aWZ5RGVidWdnZXJPZkV4Y2VwdAogCiBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRl
UHJvZ3JhbShjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEpTR2xvYmFsT2JqZWN0KiwgSlNPYmpl
Y3QqIHRoaXNPYmopCiB7CisgICAgbWxhbVRlc3QoMHgxMDExKTsKKwogICAgIEpTU2NvcGUqIHNj
b3BlID0gdGhpc09iai0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbFNjb3BlKCk7CiAgICAgVk0mIHZt
ID0gc2NvcGUtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CkBAIC05MDQsNiArOTA4LDggQEAgZmFpbGVkSlNPTlA6CiAKIEpTVmFsdWUgSW50ZXJw
cmV0ZXI6OmV4ZWN1dGVDYWxsKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U09iamVjdCogZnVuY3Rpb24sIGNvbnN0IENhbGxEYXRhJiBjYWxsRGF0YSwgSlNWYWx1ZSB0aGlz
VmFsdWUsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCiB7CisgICAgbWxhbVRlc3QoMHgxMTExKTsKKwog
ICAgIFZNJiB2bSA9IGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKQEAgLTk3NCw2ICs5ODAsOCBAQCBKU1Zh
bHVlIEludGVycHJldGVyOjpleGVjdXRlQ2FsbChKU0dsb2JhCiAKIEpTT2JqZWN0KiBJbnRlcnBy
ZXRlcjo6ZXhlY3V0ZUNvbnN0cnVjdChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNPYmplY3QqIGNvbnN0cnVjdG9yLCBjb25zdCBDYWxsRGF0YSYgY29uc3RydWN0RGF0YSwg
Y29uc3QgQXJnTGlzdCYgYXJncywgSlNWYWx1ZSBuZXdUYXJnZXQpCiB7CisgICAgbWxhbVRlc3Qo
MHgxMjExKTsKKwogICAgIFZNJiB2bSA9IGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKQEAgLTEwNzgsNiAr
MTA4Niw4IEBAIENhbGxGcmFtZUNsb3N1cmUgSW50ZXJwcmV0ZXI6OnByZXBhcmVGb3IKIAogSlNW
YWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShFdmFsRXhlY3V0YWJsZSogZXZhbCwgSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVmFsdWUgdGhpc1ZhbHVlLCBKU1Njb3BlKiBz
Y29wZSkKIHsKKyAgICBtbGFtVGVzdCgweDEzMTEpOworCiAgICAgVk0mIHZtID0gc2NvcGUtPnZt
KCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKQEAg
LTEyNTEsNiArMTI2MSw4IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoRXZhbEV4ZWN1
dGEKIAogSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZU1vZHVsZVByb2dyYW0oSlNNb2R1bGVS
ZWNvcmQqIHJlY29yZCwgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU01vZHVsZUVudmlyb25tZW50KiBzY29w
ZSwgSlNWYWx1ZSBzZW50VmFsdWUsIEpTVmFsdWUgcmVzdW1lTW9kZSkKIHsKKyAgICBtbGFtVGVz
dCgweDE0MTEpOworCiAgICAgVk0mIHZtID0gc2NvcGUtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlcklubGluZXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHJldmlz
aW9uIDI4ODY0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnBy
ZXRlcklubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsOCBAQAogCiBuYW1lc3Bh
Y2UgSlNDIHsKIAorTkVWRVJfSU5MSU5FIHZvaWQgbWxhbVRlc3QoaW50IGNvZGUpOworCiBpbmxp
bmUgT3Bjb2RlIEludGVycHJldGVyOjpnZXRPcGNvZGUoT3Bjb2RlSUQgaWQpCiB7CiAgICAgcmV0
dXJuIExMSW50OjpnZXRPcGNvZGUoaWQpOwpAQCAtNzIsNiArNzQsOCBAQCBpbmxpbmUgT3Bjb2Rl
SUQgSW50ZXJwcmV0ZXI6OmdldE9wY29kZUlECiAKIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBJbnRl
cnByZXRlcjo6ZXhlY3V0ZShDYWxsRnJhbWVDbG9zdXJlJiBjbG9zdXJlKQogeworICAgIG1sYW1U
ZXN0KDB4MTcxMSk7CisKICAgICBWTSYgdm0gPSAqY2xvc3VyZS52bTsKICAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAkocmV2aXNpb24gMjg4NjQ1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMTEyOCwxOSArMTEyOCw2IEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjpjb3B5Q2Fs
bGVlU2F2ZXNUb0UKICNlbmRpZgogfQogCi12b2lkIEFzc2VtYmx5SGVscGVyczo6c2FuaXRpemVT
dGFja0lubGluZShWTSYgdm0sIEdQUlJlZyBzY3JhdGNoKQotewotICAgIGxvYWRQdHIodm0uYWRk
cmVzc09mTGFzdFN0YWNrVG9wKCksIHNjcmF0Y2gpOwotICAgIEp1bXAgZG9uZSA9IGJyYW5jaFB0
cihCZWxvd09yRXF1YWwsIHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBzY3JhdGNoKTsKLSAgICBMYWJl
bCBsb29wID0gbGFiZWwoKTsKLSAgICBzdG9yZVB0cihUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCBB
ZGRyZXNzKHNjcmF0Y2gpKTsKLSAgICBhZGRQdHIoVHJ1c3RlZEltbVB0cihzaXplb2Yodm9pZCop
KSwgc2NyYXRjaCk7Ci0gICAgYnJhbmNoUHRyKEFib3ZlLCBzdGFja1BvaW50ZXJSZWdpc3Rlciwg
c2NyYXRjaCkubGlua1RvKGxvb3AsIHRoaXMpOwotICAgIGRvbmUubGluayh0aGlzKTsKLSAgICBt
b3ZlKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBzY3JhdGNoKTsKLSAgICBzdG9yZVB0cihzY3JhdGNo
LCB2bS5hZGRyZXNzT2ZMYXN0U3RhY2tUb3AoKSk7Ci19Ci0KIHZvaWQgQXNzZW1ibHlIZWxwZXJz
OjpjYWdlV2l0aG91dFVudGFnZ2luZyhHaWdhY2FnZTo6S2luZCBraW5kLCBHUFJSZWcgc3RvcmFn
ZSkKIHsKICNpZiBHSUdBQ0FHRV9FTkFCTEVECkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0Fzc2VtYmx5SGVscGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgJKHJldmlzaW9uIDI4ODY0NSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNzA5
LDggKzE3MDksNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBicmFuY2hUZXN0OChaZXJvLCBB
YnNvbHV0ZUFkZHJlc3Modm0uaGVhcC5hZGRyZXNzT2ZNdXRhdG9yU2hvdWxkQmVGZW5jZWQoKSkp
OwogICAgIH0KICAgICAKLSAgICB2b2lkIHNhbml0aXplU3RhY2tJbmxpbmUoVk0mLCBHUFJSZWcg
c2NyYXRjaCk7Ci0gICAgCiAgICAgLy8gRW1pdHMgdGhlIGJyYW5jaCBzdHJ1Y3R1cmUgZm9yIHR5
cGVvZi4gVGhlIGNvZGUgZW1pdHRlZCBieSB0aGlzIGRvZXNuJ3QgZmFsbCB0aHJvdWdoLiBUaGUK
ICAgICAvLyBmdW5jdG9yIGlzIGNhbGxlZCBhdCB0aG9zZSBwb2ludHMgd2hlcmUgd2UgaGF2ZSBw
aW5wb2ludGVkIGEgdHlwZS4gT25lIHdheSB0byB1c2UgdGhpcyBpcyB0bwogICAgIC8vIGhhdmUg
dGhlIGZ1bmN0b3IgZW1pdCB0aGUgY29kZSB0byBwdXQgdGhlIHR5cGUgc3RyaW5nIGludG8gYW4g
YXBwcm9wcmlhdGUgcmVnaXN0ZXIgYW5kIHRoZW4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMjg4NjQ1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE0
NDgsMTEgKzE0NDgsMTMgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkNhbGxF
dgogCiBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTGlua0NhbGwsIFNsb3dQYXRo
UmV0dXJuVHlwZSwgKENhbGxGcmFtZSogY2FsbGVlRnJhbWUsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvKSkKIHsKKyAgICBzYW5pdGl6ZVN0
YWNrRm9yVk0oZ2xvYmFsT2JqZWN0LT52bSgpKTsKICAgICByZXR1cm4gbGlua0ZvcihjYWxsZWVG
cmFtZSwgZ2xvYmFsT2JqZWN0LCBjYWxsTGlua0luZm8pOwogfQogCiBKU0NfREVGSU5FX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uTGlua1BvbHltb3JwaGljQ2FsbCwgU2xvd1BhdGhSZXR1cm5UeXBl
LCAoQ2FsbEZyYW1lKiBjYWxsZWVGcmFtZSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8pKQogeworICAgIHNhbml0aXplU3RhY2tGb3JWTShn
bG9iYWxPYmplY3QtPnZtKCkpOwogICAgIEFTU0VSVChjYWxsTGlua0luZm8tPnNwZWNpYWxpemF0
aW9uS2luZCgpID09IENvZGVGb3JDYWxsKTsKICAgICBKU0NlbGwqIGNhbGxlZUFzRnVuY3Rpb25D
ZWxsOwogICAgIFNsb3dQYXRoUmV0dXJuVHlwZSByZXN1bHQgPSB2aXJ0dWFsRm9yV2l0aEZ1bmN0
aW9uKGdsb2JhbE9iamVjdCwgY2FsbGVlRnJhbWUsIGNhbGxMaW5rSW5mbywgY2FsbGVlQXNGdW5j
dGlvbkNlbGwpOwpAQCAtMTQ2NCw2ICsxNDY2LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbkxpbmtQbwogCiBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uVmly
dHVhbENhbGwsIFNsb3dQYXRoUmV0dXJuVHlwZSwgKENhbGxGcmFtZSogY2FsbGVlRnJhbWUsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvKSkK
IHsKKyAgICBzYW5pdGl6ZVN0YWNrRm9yVk0oZ2xvYmFsT2JqZWN0LT52bSgpKTsKICAgICBKU0Nl
bGwqIGNhbGxlZUFzRnVuY3Rpb25DZWxsSWdub3JlZDsKICAgICByZXR1cm4gdmlydHVhbEZvcldp
dGhGdW5jdGlvbihnbG9iYWxPYmplY3QsIGNhbGxlZUZyYW1lLCBjYWxsTGlua0luZm8sIGNhbGxl
ZUFzRnVuY3Rpb25DZWxsSWdub3JlZCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1RodW5rR2VuZXJhdG9ycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCShyZXZpc2lvbiAyODg2NDUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0xOTIsNyArMTkyLDYgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiB0
aAogCiBzdGF0aWMgdm9pZCBzbG93UGF0aEZvcihDQ2FsbEhlbHBlcnMmIGppdCwgVk0mIHZtLCBT
cHJ0X0pJVE9wZXJhdGlvbl9FR0NsaSBzbG93UGF0aEZ1bmN0aW9uKQogewotICAgIGppdC5zYW5p
dGl6ZVN0YWNrSW5saW5lKHZtLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKICAgICBqaXQuZW1pdEZ1
bmN0aW9uUHJvbG9ndWUoKTsKICAgICBqaXQuc3RvcmVQdHIoR1BSSW5mbzo6Y2FsbEZyYW1lUmVn
aXN0ZXIsICZ2bS50b3BDYWxsRnJhbWUpOwogI2lmIE9TKFdJTkRPV1MpICYmIENQVShYODZfNjQp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5n
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFs
aXplVGhyZWFkaW5nLmNwcAkocmV2aXNpb24gMjg4NjQ1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUw
LDYgKzUwLDE5IEBAIG5hbWVzcGFjZSBKU0MgewogCiBzdGF0aWNfYXNzZXJ0KHNpemVvZihib29s
KSA9PSAxLCAiTExJbnQgYW5kIEpJVCBhc3N1bWUgc2l6ZW9mKGJvb2wpIGlzIGFsd2F5cyAxIHdo
ZW4gdG91Y2hpbmcgaXQgZGlyZWN0bHkgZnJvbSBhc3NlbWJseSBjb2RlLiIpOwogCitORVZFUl9J
TkxJTkUgdm9pZCBtbGFtVGVzdChpbnQgY29kZSk7CisKK05FVkVSX0lOTElORSB2b2lkIG1sYW1U
ZXN0KGludCBjb2RlKSB7CisjaWYgT1MoREFSV0lOKSAmJiBDUFUoQVJNNjQpCisgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCAxMDAwOyArK2kpIHsKKyAgICAgICAgYXV0byYgdGhyZWFkID0gVGhyZWFk
OjpjdXJyZW50KCk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKHRocmVhZC5pZCgpID09IFRocmVh
ZDo6Y3VycmVudElEKCksIGNvZGUsIHRocmVhZC5pZCgpLCBUaHJlYWQ6OmN1cnJlbnRJRCgpLCBp
KTsgLy8gbWxhbSBURVNUCisgICAgfQorI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oY29kZSk7Cisj
ZW5kaWYKK30KKwogdm9pZCBpbml0aWFsaXplKCkKIHsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2Zs
YWcgb25jZUZsYWc7CkBAIC05MCw2ICsxMDMsOCBAQCB2b2lkIGluaXRpYWxpemUoKQogICAgICAg
ICBpbml0aWFsaXplU3VwZXJTYW1wbGVyKCk7CiAgICAgICAgIFRocmVhZCYgdGhyZWFkID0gVGhy
ZWFkOjpjdXJyZW50KCk7CiAgICAgICAgIHRocmVhZC5zZXRTYXZlZExhc3RTdGFja1RvcCh0aHJl
YWQuc3RhY2soKS5vcmlnaW4oKSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKHRocmVhZC5pZCgp
ID09IFRocmVhZDo6Y3VycmVudElEKCksIDB4MTExLCB0aHJlYWQuaWQoKSwgVGhyZWFkOjpjdXJy
ZW50SUQoKSk7IC8vIG1sYW0gVEVTVAorICAgICAgICBtbGFtVGVzdCgweDMxMSk7CiAKICNpZiBF
TkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgICAgIGlmIChXYXNtOjppc1N1cHBvcnRlZCgpKSB7CkBA
IC0xMTMsNyArMTI4LDkgQEAgdm9pZCBpbml0aWFsaXplKCkKICAgICAgICAgV1RGOjpjb21waWxl
ckZlbmNlKCk7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFnX2pzY0NvbmZpZy5pbml0aWFsaXpl
SGFzQmVlbkNhbGxlZCk7CiAgICAgICAgIGdfanNjQ29uZmlnLmluaXRpYWxpemVIYXNCZWVuQ2Fs
bGVkID0gdHJ1ZTsKKyAgICAgICAgbWxhbVRlc3QoMHg0MTEpOwogICAgIH0pOworICAgIG1sYW1U
ZXN0KDB4NTExKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0xvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTTG9jay5jcHAJKHJldmlzaW9uIDI4ODY0NSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMjIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0zOSw2ICszOSw4IEBACiAK
IG5hbWVzcGFjZSBKU0MgewogCitORVZFUl9JTkxJTkUgdm9pZCBtbGFtVGVzdChpbnQgY29kZSk7
CisKIExvY2sgR2xvYmFsSlNMb2NrOjpzX3NoYXJlZEluc3RhbmNlTXV0ZXg7CiAKIEdsb2JhbEpT
TG9jazo6R2xvYmFsSlNMb2NrKCkKQEAgLTEwOSw2ICsxMTEsNyBAQCB2b2lkIEpTTG9jazo6bG9j
ayhpbnRwdHJfdCBsb2NrQ291bnQpIFdUCiAgICAgfQogI2VuZGlmCiAKKyAgICBtbGFtVGVzdCgw
eDYxMSk7CiAgICAgYm9vbCBzdWNjZXNzID0gbV9sb2NrLnRyeUxvY2soKTsKICAgICBpZiAoVU5M
SUtFTFkoIXN1Y2Nlc3MpKSB7CiAgICAgICAgIGlmIChjdXJyZW50VGhyZWFkSXNIb2xkaW5nTG9j
aygpKSB7CkBAIC0xMjUsNiArMTI4LDcgQEAgdm9pZCBKU0xvY2s6OmxvY2soaW50cHRyX3QgbG9j
a0NvdW50KSBXVAogICAgIG1fbG9ja0NvdW50ID0gbG9ja0NvdW50OwogCiAgICAgZGlkQWNxdWly
ZUxvY2soKTsKKyAgICBtbGFtVGVzdCgweDcxMSk7CiB9CiAKIHZvaWQgSlNMb2NrOjpkaWRBY3F1
aXJlTG9jaygpCkBAIC0xMzgsOCArMTQyLDcgQEAgdm9pZCBKU0xvY2s6OmRpZEFjcXVpcmVMb2Nr
KCkKICAgICBtX2VudHJ5QXRvbVN0cmluZ1RhYmxlID0gdGhyZWFkLnNldEN1cnJlbnRBdG9tU3Ry
aW5nVGFibGUobV92bS0+YXRvbVN0cmluZ1RhYmxlKCkpOwogICAgIEFTU0VSVChtX2VudHJ5QXRv
bVN0cmluZ1RhYmxlKTsKIAotICAgIG1fdm0tPnNldExhc3RTdGFja1RvcCh0aHJlYWQuc2F2ZWRM
YXN0U3RhY2tUb3AoKSk7Ci0gICAgQVNTRVJUKHRocmVhZC5zdGFjaygpLmNvbnRhaW5zKG1fdm0t
Pmxhc3RTdGFja1RvcCgpKSk7CisgICAgbV92bS0+c2V0TGFzdFN0YWNrVG9wKHRocmVhZCk7CiAK
ICAgICBpZiAobV92bS0+aGVhcC5oYXNBY2Nlc3MoKSkKICAgICAgICAgbV9zaG91bGRSZWxlYXNl
SGVhcEFjY2VzcyA9IGZhbHNlOwpAQCAtMTg0LDYgKzE4Nyw3IEBAIHZvaWQgSlNMb2NrOjp1bmxv
Y2soaW50cHRyX3QgdW5sb2NrQ291bnQKICAgICBSRUxFQVNFX0FTU0VSVChjdXJyZW50VGhyZWFk
SXNIb2xkaW5nTG9jaygpKTsKICAgICBBU1NFUlQobV9sb2NrQ291bnQgPj0gdW5sb2NrQ291bnQp
OwogCisgICAgbWxhbVRlc3QoMHg4MTEpOwogICAgIC8vIE1haW50YWluIG1fbG9ja0NvdW50IHdo
aWxlIGNhbGxpbmcgd2lsbFJlbGVhc2VMb2NrKCkgc28gdGhhdCBpdHMgY2FsbGVlcyBrbm93IHRo
YXQKICAgICAvLyB0aGV5IHN0aWxsIGhhdmUgdGhlIGxvY2suCiAgICAgaWYgKHVubG9ja0NvdW50
ID09IG1fbG9ja0NvdW50KQpAQCAtMTk1LDYgKzE5OSw3IEBAIHZvaWQgSlNMb2NrOjp1bmxvY2so
aW50cHRyX3QgdW5sb2NrQ291bnQKICAgICAgICAgbV9oYXNPd25lclRocmVhZCA9IGZhbHNlOwog
ICAgICAgICBtX2xvY2sudW5sb2NrKCk7CiAgICAgfQorICAgIG1sYW1UZXN0KDB4OTExKTsKIH0K
IAogdm9pZCBKU0xvY2s6OndpbGxSZWxlYXNlTG9jaygpCkBAIC0yNzcsNyArMjgyLDcgQEAgdm9p
ZCBKU0xvY2s6OmdyYWJBbGxMb2NrcyhEcm9wQWxsTG9ja3MqIAogCiAgICAgVGhyZWFkJiB0aHJl
YWQgPSBUaHJlYWQ6OmN1cnJlbnQoKTsKICAgICBtX3ZtLT5zZXRTdGFja1BvaW50ZXJBdFZNRW50
cnkodGhyZWFkLnNhdmVkU3RhY2tQb2ludGVyQXRWTUVudHJ5KCkpOwotICAgIG1fdm0tPnNldExh
c3RTdGFja1RvcCh0aHJlYWQuc2F2ZWRMYXN0U3RhY2tUb3AoKSk7CisgICAgbV92bS0+c2V0TGFz
dFN0YWNrVG9wKHRocmVhZCk7CiB9CiAKIEpTTG9jazo6RHJvcEFsbExvY2tzOjpEcm9wQWxsTG9j
a3MoVk0qIHZtKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkocmV2aXNp
b24gMjg4NjQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOC0yMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0y
MDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMTM1LDYgKzEzNSw4IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitORVZF
Ul9JTkxJTkUgdm9pZCBtbGFtVGVzdChpbnQgY29kZSk7CisKIEF0b21pYzx1bnNpZ25lZD4gVk06
OnNfbnVtYmVyT2ZJRHM7CiAKIERFRklORV9BTExPQ0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIo
Vk0pOwpAQCAtMjQyLDkgKzI0NCw4IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBo
ZWFwVHlwZSwKICAgICAgICAgQ1JBU0hfV0lUSF9JTkZPKDB4NDI0MjQyNDIyMDIwMjAyMCwgMHhi
YWRiZWVmMGJhZGJlZWYsIDB4MTIzNDEyMzQxMjM0MTIzNCwgMHgxMzM3MTMzNzEzMzcxMzM3KTsK
IAogICAgIGludGVycHJldGVyID0gbmV3IEludGVycHJldGVyKCp0aGlzKTsKLSAgICBTdGFja0Jv
dW5kcyBzdGFjayA9IFRocmVhZDo6Y3VycmVudCgpLnN0YWNrKCk7CiAgICAgdXBkYXRlU29mdFJl
c2VydmVkWm9uZVNpemUoT3B0aW9uczo6c29mdFJlc2VydmVkWm9uZVNpemUoKSk7Ci0gICAgc2V0
TGFzdFN0YWNrVG9wKHN0YWNrLm9yaWdpbigpKTsKKyAgICBzZXRMYXN0U3RhY2tUb3AoVGhyZWFk
OjpjdXJyZW50KCkpOwogCiAgICAgSlNSdW5Mb29wVGltZXI6Ok1hbmFnZXI6OnNoYXJlZCgpLnJl
Z2lzdGVyVk0oKnRoaXMpOwogCkBAIC01MDMsOSArNTA0LDE1IEBAIHZvaWQgVk06OnByaW1pdGl2
ZUdpZ2FjYWdlRGlzYWJsZWQoKQogICAgIG1fbmVlZFRvRmlyZVByaW1pdGl2ZUdpZ2FjYWdlRW5h
YmxlZCA9IHRydWU7CiB9CiAKLXZvaWQgVk06OnNldExhc3RTdGFja1RvcCh2b2lkKiBsYXN0U3Rh
Y2tUb3ApCi17IAotICAgIG1fbGFzdFN0YWNrVG9wID0gbGFzdFN0YWNrVG9wOwordm9pZCBWTTo6
c2V0TGFzdFN0YWNrVG9wKGNvbnN0IFRocmVhZCYgdGhyZWFkKQoreworICAgIG1fbGFzdFN0YWNr
VG9wID0gdGhyZWFkLnNhdmVkTGFzdFN0YWNrVG9wKCk7CisgICAgYXV0byYgc3RhY2sgPSB0aHJl
YWQuc3RhY2soKTsKKyAgICBSRUxFQVNFX0FTU0VSVChzdGFjay5jb250YWlucyhtX2xhc3RTdGFj
a1RvcCksIDB4NTUxMCwgbV9sYXN0U3RhY2tUb3AsIHN0YWNrLm9yaWdpbigpLCBzdGFjay5lbmQo
KSk7CisjaWYgT1MoREFSV0lOKSAmJiBDUFUoQVJNNjQpCisgICAgUkVMRUFTRV9BU1NFUlQodGhy
ZWFkLmlkKCkgPT0gVGhyZWFkOjpjdXJyZW50SUQoKSwgMHg1NTIwLCB0aHJlYWQuaWQoKSwgVGhy
ZWFkOjpjdXJyZW50SUQoKSk7CisjZW5kaWYKKyAgICBtbGFtVGVzdCgweDE2MTEpOwogfQogCiBS
ZWY8Vk0+IFZNOjpjcmVhdGVDb250ZXh0R3JvdXAoSGVhcFR5cGUgaGVhcFR5cGUpCkBAIC0xMDUw
LDE2ICsxMDU3LDExIEBAIHZvaWQgVk06OnBvcEFsbENoZWNrcG9pbnRPU1JTaWRlU3RhdGVVbnQK
ICAgICBtX2NoZWNrcG9pbnRTaWRlU3RhdGUuc2hyaW5rVG9GaXQoKTsKIH0KIAotdm9pZCBsb2dT
YW5pdGl6ZVN0YWNrKFZNJiB2bSkKK3N0YXRpYyB2b2lkIGxvZ1Nhbml0aXplU3RhY2soVk0mIHZt
KQogewotICAgIGlmIChPcHRpb25zOjp2ZXJib3NlU2FuaXRpemVTdGFjaygpICYmIHZtLnRvcENh
bGxGcmFtZSkgewotICAgICAgICBpbnQgZHVtbXk7CisgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6
OnZlcmJvc2VTYW5pdGl6ZVN0YWNrKCkpKSB7CiAgICAgICAgIGF1dG8mIHN0YWNrQm91bmRzID0g
VGhyZWFkOjpjdXJyZW50KCkuc3RhY2soKTsKLSAgICAgICAgZGF0YUxvZygKLSAgICAgICAgICAg
ICJTYW5pdGl6aW5nIHN0YWNrIGZvciBWTSA9ICIsIFJhd1BvaW50ZXIoJnZtKSwgIiB3aXRoIHRv
cCBjYWxsIGZyYW1lIGF0ICIsIFJhd1BvaW50ZXIodm0udG9wQ2FsbEZyYW1lKSwKLSAgICAgICAg
ICAgICIsIGN1cnJlbnQgc3RhY2sgcG9pbnRlciBhdCAiLCBSYXdQb2ludGVyKCZkdW1teSksICIs
IGluICIsCi0gICAgICAgICAgICBwb2ludGVyRHVtcCh2bS50b3BDYWxsRnJhbWUtPmNvZGVCbG9j
aygpKSwgIiwgbGFzdCBjb2RlIG9yaWdpbiA9ICIsCi0gICAgICAgICAgICB2bS50b3BDYWxsRnJh
bWUtPmNvZGVPcmlnaW4oKSwgIiwgbGFzdCBzdGFjayB0b3AgPSAiLCBSYXdQb2ludGVyKHZtLmxh
c3RTdGFja1RvcCgpKSwgIiwgaW4gc3RhY2sgcmFuZ2UgWyIsIFJhd1BvaW50ZXIoc3RhY2tCb3Vu
ZHMub3JpZ2luKCkpLCAiLCAiLCBSYXdQb2ludGVyKHN0YWNrQm91bmRzLmVuZCgpKSwgIl1cbiIp
OworICAgICAgICBkYXRhTG9nTG4oIlNhbml0aXppbmcgc3RhY2sgZm9yIFZNID0gIiwgUmF3UG9p
bnRlcigmdm0pLCAiLCBjdXJyZW50IHN0YWNrIHBvaW50ZXIgYXQgIiwgUmF3UG9pbnRlcihjdXJy
ZW50U3RhY2tQb2ludGVyKCkpLCAiLCBsYXN0IHN0YWNrIHRvcCA9ICIsIFJhd1BvaW50ZXIodm0u
bGFzdFN0YWNrVG9wKCkpLCAiLCBpbiBzdGFjayByYW5nZSAoIiwgUmF3UG9pbnRlcihzdGFja0Jv
dW5kcy5lbmQoKSksICIsICIsIFJhd1BvaW50ZXIoc3RhY2tCb3VuZHMub3JpZ2luKCkpLCAiXSIp
OwogICAgIH0KIH0KIApAQCAtMTI3MCwxNyArMTI3MiwyNSBAQCB2b2lkIFF1ZXVlZFRhc2s6OnJ1
bigpCiAKIHZvaWQgc2FuaXRpemVTdGFja0ZvclZNKFZNJiB2bSkKIHsKKyAgICBhdXRvJiB0aHJl
YWQgPSBUaHJlYWQ6OmN1cnJlbnQoKTsKKyNpZiBPUyhEQVJXSU4pICYmIENQVShBUk02NCkKKyAg
ICBSRUxFQVNFX0FTU0VSVCh0aHJlYWQuaWQoKSA9PSBUaHJlYWQ6OmN1cnJlbnRJRCgpLCAweGFh
MTAsIHRocmVhZC5pZCgpLCBUaHJlYWQ6OmN1cnJlbnRJRCgpKTsKKyNlbmRpZgorICAgIGF1dG8m
IHN0YWNrID0gdGhyZWFkLnN0YWNrKCk7CisgICAgaWYgKCF2bS5jdXJyZW50VGhyZWFkSXNIb2xk
aW5nQVBJTG9jaygpKQorICAgICAgICByZXR1cm47IC8vIHZtLmxhc3RTdGFja1RvcCgpIG1heSBu
b3QgYmUgc2V0IHVwIGNvcnJlY3RseSBpZiBKU0xvY2sgaXMgbm90IGhlbGQuCisKICAgICBsb2dT
YW5pdGl6ZVN0YWNrKHZtKTsKLSAgICBpZiAodm0udG9wQ2FsbEZyYW1lKSB7Ci0gICAgICAgIGF1
dG8mIHN0YWNrQm91bmRzID0gVGhyZWFkOjpjdXJyZW50KCkuc3RhY2soKTsKLSAgICAgICAgQVNT
RVJUKHZtLmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpOwotICAgICAgICBBU1NFUlRf
VU5VU0VEKHN0YWNrQm91bmRzLCBzdGFja0JvdW5kcy5jb250YWlucyh2bS5sYXN0U3RhY2tUb3Ao
KSkpOwotICAgIH0KKworICAgIFJFTEVBU0VfQVNTRVJUKHN0YWNrLmNvbnRhaW5zKHZtLmxhc3RT
dGFja1RvcCgpKSwgMHhhYTIwLCB2bS5sYXN0U3RhY2tUb3AoKSwgc3RhY2sub3JpZ2luKCksIHN0
YWNrLmVuZCgpKTsKICNpZiBFTkFCTEUoQ19MT09QKQogICAgIHZtLmludGVycHJldGVyLT5jbG9v
cFN0YWNrKCkuc2FuaXRpemVTdGFjaygpOwogI2Vsc2UKICAgICBzYW5pdGl6ZVN0YWNrRm9yVk1J
bXBsKCZ2bSk7CiAjZW5kaWYKKyAgICBSRUxFQVNFX0FTU0VSVChzdGFjay5jb250YWlucyh2bS5s
YXN0U3RhY2tUb3AoKSksIDB4YWEzMCwgdm0ubGFzdFN0YWNrVG9wKCksIHN0YWNrLm9yaWdpbigp
LCBzdGFjay5lbmQoKSk7CisKKyAgICBtbGFtVGVzdCgweDE1MTEpOwogfQogCiBzaXplX3QgVk06
OmNvbW1pdHRlZFN0YWNrQnl0ZUNvdW50KCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uaAkocmV2aXNpb24gMjg4NjQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDgtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDgtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTc4NSw3ICs3ODUsNyBAQCBwdWJsaWM6CiAKICAgICB2
b2lkKiogYWRkcmVzc09mTGFzdFN0YWNrVG9wKCkgeyByZXR1cm4gJm1fbGFzdFN0YWNrVG9wOyB9
CiAgICAgdm9pZCogbGFzdFN0YWNrVG9wKCkgeyByZXR1cm4gbV9sYXN0U3RhY2tUb3A7IH0KLSAg
ICB2b2lkIHNldExhc3RTdGFja1RvcCh2b2lkKik7CisgICAgdm9pZCBzZXRMYXN0U3RhY2tUb3Ao
Y29uc3QgVGhyZWFkJik7CiAgICAgCiAgICAgdm9pZCBmaXJlUHJpbWl0aXZlR2lnYWNhZ2VFbmFi
bGVkSWZOZWNlc3NhcnkoKQogICAgIHsKQEAgLTExNzMsNiArMTE3Myw1IEBAIGV4dGVybiAiQyIg
dm9pZCBzYW5pdGl6ZVN0YWNrRm9yVk1JbXBsKFYKICNlbmRpZgogCiBKU19FWFBPUlRfUFJJVkFU
RSB2b2lkIHNhbml0aXplU3RhY2tGb3JWTShWTSYpOwotdm9pZCBsb2dTYW5pdGl6ZVN0YWNrKFZN
Jik7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL1dURi9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dURi9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4ODY0NSkKKysrIFNv
dXJjZS9XVEYvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAKKzIwMjIt
MDEtMjcgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAgICAgIEVuaGFuY2Ug
c2FuaXRpemVTdGFja0ZvclZNKCkgdG8gYXNzaXN0IHdpdGggY3Jhc2ggYW5hbHlzaXMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzU3NTIKKyAgICAg
ICAgcmRhcjovLzgxMDE0NjAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIFRocmVhZElkZW50aWZpZXIgYW5kIFRocmVhZDo6
Y3VycmVudElEKCkgb24gT1MoREFSV0lOKS4gIFRoaXMgY2FuCisgICAgICAgIGJlIHVzZWQgdG8g
ZGV0ZWN0IFRMUyBjb3JydXB0aW9uIC8gYnVncy4KKworICAgICAgICAqIHd0Zi9UaHJlYWRpbmcu
Y3BwOgorICAgICAgICAoV1RGOjpUaHJlYWQ6OmluaXRpYWxpemVJblRocmVhZCk6CisgICAgICAg
ICogd3RmL1RocmVhZGluZy5oOgorICAgICAgICAoV1RGOjpUaHJlYWQ6OnNhdmVkU3RhY2tQb2lu
dGVyQXRWTUVudHJ5IGNvbnN0KToKKyAgICAgICAgKFdURjo6VGhyZWFkOjpzYXZlZExhc3RTdGFj
a1RvcCBjb25zdCk6CisgICAgICAgIChXVEY6OlRocmVhZDo6Y3VycmVudElEKToKKyAgICAgICAg
KFdURjo6VGhyZWFkOjpzYXZlZFN0YWNrUG9pbnRlckF0Vk1FbnRyeSk6IERlbGV0ZWQuCisgICAg
ICAgIChXVEY6OlRocmVhZDo6c2F2ZWRMYXN0U3RhY2tUb3ApOiBEZWxldGVkLgorICAgICAgICAq
IHd0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmg6CisKIDIwMjItMDEtMjUgIEVyaWMgQ2FybHNvbiAg
PGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgW21hY09TXSBBZGQgbmV3IHNjcmVl
biBhbmQgd2luZG93IGNhcHR1cmUgYmFja2VuZApJbmRleDogU291cmNlL1dURi93dGYvVGhyZWFk
aW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuY3BwCShyZXZp
c2lvbiAyODg2NDUpCisrKyBTb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNTksOCArMTU5LDEwIEBAIHZvaWQgVGhyZWFkOjppbml0aWFsaXplSW5UaHJlYWQo
KQogICAgIH0KICNlbmRpZgogCi0jaWYgT1MoTElOVVgpCisjaWYgVVNFKFBUSFJFQURTKQogICAg
IG1faWQgPSBjdXJyZW50SUQoKTsKKyNlbHNlCisgICAgUkVMRUFTRV9BU1NFUlQobV9pZCA9PSBj
dXJyZW50SUQoKSk7CiAjZW5kaWYKIH0KIApAQCAtMTc5LDYgKzE4MSw3IEBAIHZvaWQgVGhyZWFk
OjplbnRyeVBvaW50KE5ld1RocmVhZENvbnRleHQKICAgICAgICAgY29udGV4dC0+dGhyZWFkLT5p
bml0aWFsaXplSW5UaHJlYWQoKTsKIAogICAgICAgICBUaHJlYWQ6OmluaXRpYWxpemVUTFMoV1RG
TW92ZShjb250ZXh0LT50aHJlYWQpKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoY29udGV4dC0+
dGhyZWFkLT5pZCgpID09IFRocmVhZDo6Y3VycmVudElEKCksIDB4MjExLCBjb250ZXh0LT50aHJl
YWQtPmlkKCksIFRocmVhZDo6Y3VycmVudElEKCkpOyAvLyBtbGFtIFRFU1QKIAogI2lmICFIQVZF
KFNUQUNLX0JPVU5EU19GT1JfTkVXX1RIUkVBRCkKICAgICAgICAgLy8gQWNrIGNvbXBsZXRpb24g
b2YgaW5pdGlhbGl6YXRpb24gdG8gdGhlIGNyZWF0aW5nIHRocmVhZC4KSW5kZXg6IFNvdXJjZS9X
VEYvd3RmL1RocmVhZGluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1RocmVhZGlu
Zy5oCShyZXZpc2lvbiAyODg2NDUpCisrKyBTb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuaAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDct
MjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MDcgSnVzdGluIEhheWdvb2QgPGpoYXlnb29kQHJlYWt0aXguY29tPgogICogQ29weXJpZ2h0IChD
KSAyMDE3IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KICAqCkBAIC0xMzAs
MTUgKzEzMCwxOCBAQCBwdWJsaWM6CiAKICAgICB1aW50MzJfdCB1aWQoKSBjb25zdCB7IHJldHVy
biBtX3VpZDsgfQogCi0jaWYgT1MoV0lORE9XUykKICAgICAvLyBSZXR1cm5zIFRocmVhZElkZW50
aWZpZXIgZGlyZWN0bHkuIEl0IGlzIHVzZWZ1bCBpZiB0aGUgdXNlciBvbmx5IGNhcmVzIGFib3V0
IGlkZW50aXR5CiAgICAgLy8gb2YgdGhyZWFkcy4gQXQgdGhhdCB0aW1lLCB1c2VycyBzaG91bGQg
a25vdyB0aGF0IGhvbGRpbmcgdGhpcyBUaHJlYWRJZGVudGlmaWVyIGRvZXMgbm90IGVuc3VyZQog
ICAgIC8vIHRoYXQgdGhlIHRocmVhZCBpbmZvcm1hdGlvbiBpcyBhbGl2ZS4gV2hpbGUgVGhyZWFk
OjpjdXJyZW50KCkgaXMgbm90IHNhZmUgaWYgaXQgaXMgY2FsbGVkCiAgICAgLy8gZnJvbSB0aGUg
ZGVzdHJ1Y3RvciBvZiB0aGUgb3RoZXIgVExTIGRhdGEsIGN1cnJlbnRJRCgpIGFsd2F5cyByZXR1
cm5zIG1lYW5pbmdmdWwgdGhyZWFkIElELgorI2lmIE9TKERBUldJTikKKyAgICBBTFdBWVNfSU5M
SU5FIHN0YXRpYyBUaHJlYWRJZGVudGlmaWVyIGN1cnJlbnRJRCgpOworI2Vsc2UKICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIFRocmVhZElkZW50aWZpZXIgY3VycmVudElEKCk7Ci0KKyNl
bmRpZgogICAgIFRocmVhZElkZW50aWZpZXIgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CiAK
KyNpZiBPUyhXSU5ET1dTKQogICAgIGNsYXNzIFNwZWNpZmljU3RvcmFnZSB7CiAgICAgcHVibGlj
OgogICAgICAgICB1c2luZyBEZXN0cm95RnVuY3Rpb24gPSB2b2lkICgqKSh2b2lkKik7CkBAIC0x
NzYsMTAgKzE3OSw2IEBAIHB1YmxpYzoKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGdl
dFJlZ2lzdGVycyhQbGF0Zm9ybVJlZ2lzdGVycyYpOwogCiAjaWYgVVNFKFBUSFJFQURTKQotI2lm
IE9TKExJTlVYKQotICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgVGhyZWFkSWRlbnRpZmll
ciBjdXJyZW50SUQoKTsKLSAgICBUaHJlYWRJZGVudGlmaWVyIGlkKCkgY29uc3QgeyByZXR1cm4g
bV9pZDsgfQotI2VuZGlmCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgc2lnbmFsKGludCBz
aWduYWxOdW1iZXIpOwogI2VuZGlmCiAKQEAgLTIzMSw3ICsyMzAsNyBAQCBwdWJsaWM6CiAgICAg
fQogI2VuZGlmCiAKLSAgICB2b2lkKiBzYXZlZFN0YWNrUG9pbnRlckF0Vk1FbnRyeSgpCisgICAg
dm9pZCogc2F2ZWRTdGFja1BvaW50ZXJBdFZNRW50cnkoKSBjb25zdAogICAgIHsKICAgICAgICAg
cmV0dXJuIG1fc2F2ZWRTdGFja1BvaW50ZXJBdFZNRW50cnk7CiAgICAgfQpAQCAtMjQxLDcgKzI0
MCw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9zYXZlZFN0YWNrUG9pbnRlckF0Vk1FbnRyeSA9IHN0
YWNrUG9pbnRlckF0Vk1FbnRyeTsKICAgICB9CiAKLSAgICB2b2lkKiBzYXZlZExhc3RTdGFja1Rv
cCgpCisgICAgdm9pZCogc2F2ZWRMYXN0U3RhY2tUb3AoKSBjb25zdAogICAgIHsKICAgICAgICAg
cmV0dXJuIG1fc2F2ZWRMYXN0U3RhY2tUb3A7CiAgICAgfQpAQCAtMzUzLDE0ICszNTIsMTAgQEAg
cHJvdGVjdGVkOgogICAgIEhhc2hNYXA8VGhyZWFkR3JvdXAqLCBzdGQ6OndlYWtfcHRyPFRocmVh
ZEdyb3VwPj4gbV90aHJlYWRHcm91cE1hcDsKICAgICBQbGF0Zm9ybVRocmVhZEhhbmRsZSBtX2hh
bmRsZTsKICAgICB1aW50MzJfdCBtX3VpZDsKLSNpZiBPUyhXSU5ET1dTKQogICAgIFRocmVhZElk
ZW50aWZpZXIgbV9pZCB7IDAgfTsKLSNlbGlmIE9TKERBUldJTikKKyNpZiBPUyhEQVJXSU4pCiAg
ICAgbWFjaF9wb3J0X3QgbV9wbGF0Zm9ybVRocmVhZCB7IE1BQ0hfUE9SVF9OVUxMIH07CiAjZWxp
ZiBVU0UoUFRIUkVBRFMpCi0jaWYgT1MoTElOVVgpCi0gICAgVGhyZWFkSWRlbnRpZmllciBtX2lk
IHsgMCB9OwotI2VuZGlmCiAgICAgUGxhdGZvcm1SZWdpc3RlcnMqIG1fcGxhdGZvcm1SZWdpc3Rl
cnMgeyBudWxscHRyIH07CiAgICAgdW5zaWduZWQgbV9zdXNwZW5kQ291bnQgeyAwIH07CiAjZW5k
aWYKQEAgLTQyMCw2ICs0MTUsMjUgQEAgaW5saW5lIFRocmVhZCYgVGhyZWFkOjpjdXJyZW50KCkK
ICAgICByZXR1cm4gaW5pdGlhbGl6ZUN1cnJlbnRUTFMoKTsKIH0KIAorI2lmIE9TKERBUldJTikK
K0FMV0FZU19JTkxJTkUgVGhyZWFkSWRlbnRpZmllciBUaHJlYWQ6OmN1cnJlbnRJRCgpCit7Cisg
ICAgVGhyZWFkSWRlbnRpZmllciByZXN1bHQ7CisjaWYgQ1BVKEFSTTY0KQorICAgICBhc20gKAor
ICAgICAgICAibXJzICV4W3Jlc3VsdF0sIFRQSURSUk9fRUwwIgorICAgICAgICA6IFtyZXN1bHRd
ICI9ciIgKHJlc3VsdCkKKyAgICAgICAgOgorICAgICAgICA6CisgICAgKTsKKyNlbHNlCisgICAg
cmVzdWx0ID0gYml0d2lzZV9jYXN0PFRocmVhZElkZW50aWZpZXI+KHB0aHJlYWRfc2VsZigpKTsK
KyNlbmRpZgorICAgIEFTU0VSVChyZXN1bHQpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisjZW5k
aWYKKwogfSAvLyBuYW1lc3BhY2UgV1RGCiAKIHVzaW5nIFdURjo6VGhyZWFkOwpJbmRleDogU291
cmNlL1dURi93dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
VEYvd3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaAkocmV2aXNpb24gMjg4NjQ1KQorKysgU291cmNl
L1dURi93dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw3ICs1
Nyw5IEBAIHVzaW5nIFBsYXRmb3JtVGhyZWFkSGFuZGxlID0gcHRocmVhZF90OwogdXNpbmcgUGxh
dGZvcm1NdXRleCA9IHB0aHJlYWRfbXV0ZXhfdDsKIHVzaW5nIFBsYXRmb3JtQ29uZGl0aW9uID0g
cHRocmVhZF9jb25kX3Q7CiB1c2luZyBUaHJlYWRTcGVjaWZpY0tleSA9IHB0aHJlYWRfa2V5X3Q7
Ci0jaWYgT1MoTElOVVgpCisjaWYgT1MoREFSV0lOKQordXNpbmcgVGhyZWFkSWRlbnRpZmllciA9
IHVpbnRwdHJfdDsKKyNlbGlmIE9TKExJTlVYKQogdXNpbmcgVGhyZWFkSWRlbnRpZmllciA9IHBp
ZF90OwogI2VuZGlmCiAjZWxpZiBPUyhXSU5ET1dTKQo=
</data>
<flag name="commit-queue"
          id="476778"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450376</attachid>
            <date>2022-01-30 21:08:25 -0800</date>
            <delta_ts>2022-01-31 00:03:42 -0800</delta_ts>
            <desc>test2</desc>
            <filename>test-threadID.patch</filename>
            <type>text/plain</type>
            <size>25180</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjg4NzIxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3IEBA
CisyMDIyLTAxLTI3ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBF
bmhhbmNlIHNhbml0aXplU3RhY2tGb3JWTSgpIHRvIGFzc2lzdCB3aXRoIGNyYXNoIGFuYWx5c2lz
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1NzUy
CisgICAgICAgIHJkYXI6Ly84MTAxNDYwMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIDEuIFJlbW92ZSB0aGUgQXNzZW1ibHlIZWxwZXJzIHZlcnNpb24g
b2Ygc2FuaXRpemVTdGFjay4gIEluc3RlYWQsIG1ha2UgdGhlIDMKKyAgICAgICAgICAgSklUIG9w
ZXJhdGlvbiBmdW5jdGlvbnMgY2FsbCBzYW5pdGl6ZVN0YWNrRm9yVk0oKSBpbnN0ZWFkLiAgVGhp
cyBlbnN1cmVzCisgICAgICAgICAgIHRoYXQgc2FuaXRpemVTdGFjayBjcmFzaGVzIGFyZSBub3Qg
b2JzY3VyZWQgYXMgZ2VuZXJpYyBKSVQgY3Jhc2hlcy4KKworICAgICAgICAyLiBBZGQgc2FuaXR5
IGNoZWNrIFJFTEVBU0VfQVNTRVJUcyB0byBWTTo6c2V0TGFzdFN0YWNrVG9wKCkgd2l0aCBhIGNh
cHR1cmUgb2YKKyAgICAgICAgICAgdGhlIHJlbGV2YW50IHZhcmlhYmxlcyBmb3IgY3Jhc2ggYW5h
bHlzaXMuCisKKyAgICAgICAgMy4gRml4IGxvZ1Nhbml0aXplU3RhY2soKSBzbyB0aGF0IGl0IG5v
IGxvbmdlciByZWxpZXMgb24gdm0udG9wQ2FsbEZyYW1lLgorICAgICAgICAgICB2bS50b3BDYWxs
RnJhbWUgbWF5IG5vdCBiZSBwcm9wZXJseSBpbml0aWFsaXplZCBhdCBhbGwgdGhlIHBsYWNlcyB0
aGF0CisgICAgICAgICAgIHNhbml0aXplU3RhY2tGb3JWTSgpIGlzIGNhbGxlZC4KKworICAgICAg
ICA0LiBBZGQgYSBKU0xvY2sgY2hlY2sgdG8gc2FuaXRpemVTdGFja0ZvclZNKCksIGFuZCByZXR1
cm4gZWFybHkgaWYgbm90IG93bmVkIGJ5CisgICAgICAgICAgIHRoZSBjdXJyZW50IHRocmVhZC4g
IElmIHRoZSBKU0xvY2sgaXMgbm90IG93bmVkIGJ5IHRoZSBjdXJyZW50IHRocmVhZCwgd2UgY2Fu
J3QKKyAgICAgICAgICAgcmVseSBvbiB2bS5sYXN0U3RhY2tUb3AoKSBiZWluZyBhIHNhbmUgdmFs
dWUuICBIZW5jZSwgaXQncyBub3QgcG9zc2libGUgdG8KKyAgICAgICAgICAgZG8gc3RhY2sgc2Fu
aXRpemF0aW9uIGNvcnJlY3RseS4KKworICAgICAgICAgICBBZGQgc2FuaXR5IGNoZWNrIFJFTEVB
U0VfQVNTRVJUcyB0byBzYW5pdGl6ZVN0YWNrRm9yVk0oKSB3aXRoIGEgY2FwdHVyZSBvZgorICAg
ICAgICAgICB0aGUgcmVsZXZhbnQgdmFyaWFibGVzIGZvciBjcmFzaCBhbmFseXNpcy4KKworICAg
ICAgICAqIGppdC9Bc3NlbWJseUhlbHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhl
bHBlcnM6OnNhbml0aXplU3RhY2tJbmxpbmUpOiBEZWxldGVkLgorICAgICAgICAqIGppdC9Bc3Nl
bWJseUhlbHBlcnMuaDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAg
IChKU0M6OkpTQ19ERUZJTkVfSklUX09QRVJBVElPTik6CisgICAgICAgICogaml0L1RodW5rR2Vu
ZXJhdG9ycy5jcHA6CisgICAgICAgIChKU0M6OnNsb3dQYXRoRm9yKToKKyAgICAgICAgKiBydW50
aW1lL0pTTG9jay5jcHA6CisgICAgICAgIChKU0M6OkpTTG9jazo6ZGlkQWNxdWlyZUxvY2spOgor
ICAgICAgICAoSlNDOjpKU0xvY2s6OmdyYWJBbGxMb2Nrcyk6CisgICAgICAgICogcnVudGltZS9W
TS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAgICAgIChKU0M6OlZNOjpzZXRMYXN0
U3RhY2tUb3ApOgorICAgICAgICAoSlNDOjpsb2dTYW5pdGl6ZVN0YWNrKToKKyAgICAgICAgKEpT
Qzo6c2FuaXRpemVTdGFja0ZvclZNKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisKIDIwMjIt
MDEtMjcgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CiAKICAgICAgICAgY29t
LmFwcGxlLldlYktpdC5XZWJBdXRobi54cGMgZmFpbHMgdG8gYnVpbGQgd2l0aCBzeXN0ZW0gY29u
dGVudCBwYXRoCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJw
cmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9JbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDI4ODY0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgyLDYg
KzgyLDggQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK05FVkVSX0lOTElORSB2b2lkIG1sYW1UZXN0
KGludCBjb2RlKTsKKwogSlNWYWx1ZSBldmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lLCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKICAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CkBAIC03MTAsNiArNzEyLDggQEAgdm9pZCBJbnRlcnByZXRl
cjo6bm90aWZ5RGVidWdnZXJPZkV4Y2VwdAogCiBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRl
UHJvZ3JhbShjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEpTR2xvYmFsT2JqZWN0KiwgSlNPYmpl
Y3QqIHRoaXNPYmopCiB7CisgICAgbWxhbVRlc3QoMHgxMDExKTsKKwogICAgIEpTU2NvcGUqIHNj
b3BlID0gdGhpc09iai0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbFNjb3BlKCk7CiAgICAgVk0mIHZt
ID0gc2NvcGUtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CkBAIC05MDQsNiArOTA4LDggQEAgZmFpbGVkSlNPTlA6CiAKIEpTVmFsdWUgSW50ZXJw
cmV0ZXI6OmV4ZWN1dGVDYWxsKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U09iamVjdCogZnVuY3Rpb24sIGNvbnN0IENhbGxEYXRhJiBjYWxsRGF0YSwgSlNWYWx1ZSB0aGlz
VmFsdWUsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCiB7CisgICAgbWxhbVRlc3QoMHgxMTExKTsKKwog
ICAgIFZNJiB2bSA9IGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKQEAgLTk3NCw2ICs5ODAsOCBAQCBKU1Zh
bHVlIEludGVycHJldGVyOjpleGVjdXRlQ2FsbChKU0dsb2JhCiAKIEpTT2JqZWN0KiBJbnRlcnBy
ZXRlcjo6ZXhlY3V0ZUNvbnN0cnVjdChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNPYmplY3QqIGNvbnN0cnVjdG9yLCBjb25zdCBDYWxsRGF0YSYgY29uc3RydWN0RGF0YSwg
Y29uc3QgQXJnTGlzdCYgYXJncywgSlNWYWx1ZSBuZXdUYXJnZXQpCiB7CisgICAgbWxhbVRlc3Qo
MHgxMjExKTsKKwogICAgIFZNJiB2bSA9IGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKQEAgLTEwNzgsNiAr
MTA4Niw4IEBAIENhbGxGcmFtZUNsb3N1cmUgSW50ZXJwcmV0ZXI6OnByZXBhcmVGb3IKIAogSlNW
YWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShFdmFsRXhlY3V0YWJsZSogZXZhbCwgSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVmFsdWUgdGhpc1ZhbHVlLCBKU1Njb3BlKiBz
Y29wZSkKIHsKKyAgICBtbGFtVGVzdCgweDEzMTEpOworCiAgICAgVk0mIHZtID0gc2NvcGUtPnZt
KCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKQEAg
LTEyNTEsNiArMTI2MSw4IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoRXZhbEV4ZWN1
dGEKIAogSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZU1vZHVsZVByb2dyYW0oSlNNb2R1bGVS
ZWNvcmQqIHJlY29yZCwgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU01vZHVsZUVudmlyb25tZW50KiBzY29w
ZSwgSlNWYWx1ZSBzZW50VmFsdWUsIEpTVmFsdWUgcmVzdW1lTW9kZSkKIHsKKyAgICBtbGFtVGVz
dCgweDE0MTEpOworCiAgICAgVk0mIHZtID0gc2NvcGUtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlcklubGluZXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHJldmlz
aW9uIDI4ODY0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnBy
ZXRlcklubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsOCBAQAogCiBuYW1lc3Bh
Y2UgSlNDIHsKIAorTkVWRVJfSU5MSU5FIHZvaWQgbWxhbVRlc3QoaW50IGNvZGUpOworCiBpbmxp
bmUgT3Bjb2RlIEludGVycHJldGVyOjpnZXRPcGNvZGUoT3Bjb2RlSUQgaWQpCiB7CiAgICAgcmV0
dXJuIExMSW50OjpnZXRPcGNvZGUoaWQpOwpAQCAtNzIsNiArNzQsOCBAQCBpbmxpbmUgT3Bjb2Rl
SUQgSW50ZXJwcmV0ZXI6OmdldE9wY29kZUlECiAKIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBJbnRl
cnByZXRlcjo6ZXhlY3V0ZShDYWxsRnJhbWVDbG9zdXJlJiBjbG9zdXJlKQogeworICAgIG1sYW1U
ZXN0KDB4MTcxMSk7CisKICAgICBWTSYgdm0gPSAqY2xvc3VyZS52bTsKICAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAkocmV2aXNpb24gMjg4NjQ1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMTEyOCwxOSArMTEyOCw2IEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjpjb3B5Q2Fs
bGVlU2F2ZXNUb0UKICNlbmRpZgogfQogCi12b2lkIEFzc2VtYmx5SGVscGVyczo6c2FuaXRpemVT
dGFja0lubGluZShWTSYgdm0sIEdQUlJlZyBzY3JhdGNoKQotewotICAgIGxvYWRQdHIodm0uYWRk
cmVzc09mTGFzdFN0YWNrVG9wKCksIHNjcmF0Y2gpOwotICAgIEp1bXAgZG9uZSA9IGJyYW5jaFB0
cihCZWxvd09yRXF1YWwsIHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBzY3JhdGNoKTsKLSAgICBMYWJl
bCBsb29wID0gbGFiZWwoKTsKLSAgICBzdG9yZVB0cihUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCBB
ZGRyZXNzKHNjcmF0Y2gpKTsKLSAgICBhZGRQdHIoVHJ1c3RlZEltbVB0cihzaXplb2Yodm9pZCop
KSwgc2NyYXRjaCk7Ci0gICAgYnJhbmNoUHRyKEFib3ZlLCBzdGFja1BvaW50ZXJSZWdpc3Rlciwg
c2NyYXRjaCkubGlua1RvKGxvb3AsIHRoaXMpOwotICAgIGRvbmUubGluayh0aGlzKTsKLSAgICBt
b3ZlKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBzY3JhdGNoKTsKLSAgICBzdG9yZVB0cihzY3JhdGNo
LCB2bS5hZGRyZXNzT2ZMYXN0U3RhY2tUb3AoKSk7Ci19Ci0KIHZvaWQgQXNzZW1ibHlIZWxwZXJz
OjpjYWdlV2l0aG91dFVudGFnZ2luZyhHaWdhY2FnZTo6S2luZCBraW5kLCBHUFJSZWcgc3RvcmFn
ZSkKIHsKICNpZiBHSUdBQ0FHRV9FTkFCTEVECkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0Fzc2VtYmx5SGVscGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgJKHJldmlzaW9uIDI4ODY0NSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNzA5
LDggKzE3MDksNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBicmFuY2hUZXN0OChaZXJvLCBB
YnNvbHV0ZUFkZHJlc3Modm0uaGVhcC5hZGRyZXNzT2ZNdXRhdG9yU2hvdWxkQmVGZW5jZWQoKSkp
OwogICAgIH0KICAgICAKLSAgICB2b2lkIHNhbml0aXplU3RhY2tJbmxpbmUoVk0mLCBHUFJSZWcg
c2NyYXRjaCk7Ci0gICAgCiAgICAgLy8gRW1pdHMgdGhlIGJyYW5jaCBzdHJ1Y3R1cmUgZm9yIHR5
cGVvZi4gVGhlIGNvZGUgZW1pdHRlZCBieSB0aGlzIGRvZXNuJ3QgZmFsbCB0aHJvdWdoLiBUaGUK
ICAgICAvLyBmdW5jdG9yIGlzIGNhbGxlZCBhdCB0aG9zZSBwb2ludHMgd2hlcmUgd2UgaGF2ZSBw
aW5wb2ludGVkIGEgdHlwZS4gT25lIHdheSB0byB1c2UgdGhpcyBpcyB0bwogICAgIC8vIGhhdmUg
dGhlIGZ1bmN0b3IgZW1pdCB0aGUgY29kZSB0byBwdXQgdGhlIHR5cGUgc3RyaW5nIGludG8gYW4g
YXBwcm9wcmlhdGUgcmVnaXN0ZXIgYW5kIHRoZW4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMjg4NjQ1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE0
NDgsMTEgKzE0NDgsMTMgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkNhbGxF
dgogCiBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTGlua0NhbGwsIFNsb3dQYXRo
UmV0dXJuVHlwZSwgKENhbGxGcmFtZSogY2FsbGVlRnJhbWUsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvKSkKIHsKKyAgICBzYW5pdGl6ZVN0
YWNrRm9yVk0oZ2xvYmFsT2JqZWN0LT52bSgpKTsKICAgICByZXR1cm4gbGlua0ZvcihjYWxsZWVG
cmFtZSwgZ2xvYmFsT2JqZWN0LCBjYWxsTGlua0luZm8pOwogfQogCiBKU0NfREVGSU5FX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uTGlua1BvbHltb3JwaGljQ2FsbCwgU2xvd1BhdGhSZXR1cm5UeXBl
LCAoQ2FsbEZyYW1lKiBjYWxsZWVGcmFtZSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8pKQogeworICAgIHNhbml0aXplU3RhY2tGb3JWTShn
bG9iYWxPYmplY3QtPnZtKCkpOwogICAgIEFTU0VSVChjYWxsTGlua0luZm8tPnNwZWNpYWxpemF0
aW9uS2luZCgpID09IENvZGVGb3JDYWxsKTsKICAgICBKU0NlbGwqIGNhbGxlZUFzRnVuY3Rpb25D
ZWxsOwogICAgIFNsb3dQYXRoUmV0dXJuVHlwZSByZXN1bHQgPSB2aXJ0dWFsRm9yV2l0aEZ1bmN0
aW9uKGdsb2JhbE9iamVjdCwgY2FsbGVlRnJhbWUsIGNhbGxMaW5rSW5mbywgY2FsbGVlQXNGdW5j
dGlvbkNlbGwpOwpAQCAtMTQ2NCw2ICsxNDY2LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbkxpbmtQbwogCiBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uVmly
dHVhbENhbGwsIFNsb3dQYXRoUmV0dXJuVHlwZSwgKENhbGxGcmFtZSogY2FsbGVlRnJhbWUsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvKSkK
IHsKKyAgICBzYW5pdGl6ZVN0YWNrRm9yVk0oZ2xvYmFsT2JqZWN0LT52bSgpKTsKICAgICBKU0Nl
bGwqIGNhbGxlZUFzRnVuY3Rpb25DZWxsSWdub3JlZDsKICAgICByZXR1cm4gdmlydHVhbEZvcldp
dGhGdW5jdGlvbihnbG9iYWxPYmplY3QsIGNhbGxlZUZyYW1lLCBjYWxsTGlua0luZm8sIGNhbGxl
ZUFzRnVuY3Rpb25DZWxsSWdub3JlZCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1RodW5rR2VuZXJhdG9ycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCShyZXZpc2lvbiAyODg2NDUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0xOTIsNyArMTkyLDYgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiB0
aAogCiBzdGF0aWMgdm9pZCBzbG93UGF0aEZvcihDQ2FsbEhlbHBlcnMmIGppdCwgVk0mIHZtLCBT
cHJ0X0pJVE9wZXJhdGlvbl9FR0NsaSBzbG93UGF0aEZ1bmN0aW9uKQogewotICAgIGppdC5zYW5p
dGl6ZVN0YWNrSW5saW5lKHZtLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKICAgICBqaXQuZW1pdEZ1
bmN0aW9uUHJvbG9ndWUoKTsKICAgICBqaXQuc3RvcmVQdHIoR1BSSW5mbzo6Y2FsbEZyYW1lUmVn
aXN0ZXIsICZ2bS50b3BDYWxsRnJhbWUpOwogI2lmIE9TKFdJTkRPV1MpICYmIENQVShYODZfNjQp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5n
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFs
aXplVGhyZWFkaW5nLmNwcAkocmV2aXNpb24gMjg4NjQ1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUw
LDYgKzUwLDM1IEBAIG5hbWVzcGFjZSBKU0MgewogCiBzdGF0aWNfYXNzZXJ0KHNpemVvZihib29s
KSA9PSAxLCAiTExJbnQgYW5kIEpJVCBhc3N1bWUgc2l6ZW9mKGJvb2wpIGlzIGFsd2F5cyAxIHdo
ZW4gdG91Y2hpbmcgaXQgZGlyZWN0bHkgZnJvbSBhc3NlbWJseSBjb2RlLiIpOwogCitORVZFUl9J
TkxJTkUgdm9pZCBtbGFtVGVzdChpbnQgY29kZSk7CisKK05FVkVSX0lOTElORSB2b2lkIG1sYW1U
ZXN0KGludCBjb2RlKSB7CisjaWYgT1MoREFSV0lOKSAmJiBDUFUoQVJNNjQpCisgICAgV1RGOjpU
aHJlYWRJZGVudGlmaWVyIGFbMTAwMF07CisgICAgV1RGOjpUaHJlYWRJZGVudGlmaWVyIGJbMTAw
MF07CisgICAgaW50IG51bUZhaWx1cmVzID0gMDsKKyAgICBpbnQgZmlyc3RGYWlsdXJlID0gMDsK
KyAgICBpbnQgbGFzdEZhaWx1cmUgPSAwOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMTAwMDsg
KytpKSB7CisgICAgICAgIGF1dG8mIHRocmVhZCA9IFRocmVhZDo6Y3VycmVudCgpOworLy8gICAg
ICAgIFJFTEVBU0VfQVNTRVJUKHRocmVhZC5pZCgpID09IFRocmVhZDo6Y3VycmVudElEKCksIGNv
ZGUsIHRocmVhZC5pZCgpLCBUaHJlYWQ6OmN1cnJlbnRJRCgpLCBpKTsgLy8gbWxhbSBURVNUCisg
ICAgICAgIGF1dG8gaWRBID0gdGhyZWFkLmlkKCk7CisgICAgICAgIGF1dG8gaWRCID0gVGhyZWFk
OjpjdXJyZW50SUQoKTsKKyAgICAgICAgaWYgKGlkQSAhPSBpZEIpIHsKKyAgICAgICAgICAgIGFb
aV0gPSBpZEE7CisgICAgICAgICAgICBiW2ldID0gaWRCOworICAgICAgICAgICAgaWYgKCFudW1G
YWlsdXJlcykKKyAgICAgICAgICAgICAgICBmaXJzdEZhaWx1cmUgPSBpOworICAgICAgICAgICAg
bnVtRmFpbHVyZXMrKzsKKyAgICAgICAgICAgIGxhc3RGYWlsdXJlID0gaTsKKyAgICAgICAgfQor
ICAgIH0KKyAgICBSRUxFQVNFX0FTU0VSVChudW1GYWlsdXJlcyA9PSAwLCBjb2RlLCBhW2ZpcnN0
RmFpbHVyZV0sIGJbZmlyc3RGYWlsdXJlXSwgZmlyc3RGYWlsdXJlLCBhW2xhc3RGYWlsdXJlXSwg
YltsYXN0RmFpbHVyZV0sIGxhc3RGYWlsdXJlKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGNv
ZGUpOworI2VuZGlmCit9CisKIHZvaWQgaW5pdGlhbGl6ZSgpCiB7CiAgICAgc3RhdGljIHN0ZDo6
b25jZV9mbGFnIG9uY2VGbGFnOwpAQCAtOTAsNiArMTE5LDggQEAgdm9pZCBpbml0aWFsaXplKCkK
ICAgICAgICAgaW5pdGlhbGl6ZVN1cGVyU2FtcGxlcigpOwogICAgICAgICBUaHJlYWQmIHRocmVh
ZCA9IFRocmVhZDo6Y3VycmVudCgpOwogICAgICAgICB0aHJlYWQuc2V0U2F2ZWRMYXN0U3RhY2tU
b3AodGhyZWFkLnN0YWNrKCkub3JpZ2luKCkpOworICAgICAgICBSRUxFQVNFX0FTU0VSVCh0aHJl
YWQuaWQoKSA9PSBUaHJlYWQ6OmN1cnJlbnRJRCgpLCAweDExMSwgdGhyZWFkLmlkKCksIFRocmVh
ZDo6Y3VycmVudElEKCkpOyAvLyBtbGFtIFRFU1QKKyAgICAgICAgbWxhbVRlc3QoMHgzMTEpOwog
CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgICAgICBpZiAoV2FzbTo6aXNTdXBwb3J0ZWQo
KSkgewpAQCAtMTEzLDcgKzE0NCw5IEBAIHZvaWQgaW5pdGlhbGl6ZSgpCiAgICAgICAgIFdURjo6
Y29tcGlsZXJGZW5jZSgpOwogICAgICAgICBSRUxFQVNFX0FTU0VSVCghZ19qc2NDb25maWcuaW5p
dGlhbGl6ZUhhc0JlZW5DYWxsZWQpOwogICAgICAgICBnX2pzY0NvbmZpZy5pbml0aWFsaXplSGFz
QmVlbkNhbGxlZCA9IHRydWU7CisgICAgICAgIG1sYW1UZXN0KDB4NDExKTsKICAgICB9KTsKKyAg
ICBtbGFtVGVzdCgweDUxMSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suY3BwCShyZXZpc2lvbiAyODg2NDUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNS0yMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNS0yMDIyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMzksNiArMzks
OCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorTkVWRVJfSU5MSU5FIHZvaWQgbWxhbVRlc3QoaW50
IGNvZGUpOworCiBMb2NrIEdsb2JhbEpTTG9jazo6c19zaGFyZWRJbnN0YW5jZU11dGV4OwogCiBH
bG9iYWxKU0xvY2s6Okdsb2JhbEpTTG9jaygpCkBAIC0xMDksNiArMTExLDcgQEAgdm9pZCBKU0xv
Y2s6OmxvY2soaW50cHRyX3QgbG9ja0NvdW50KSBXVAogICAgIH0KICNlbmRpZgogCisgICAgbWxh
bVRlc3QoMHg2MTEpOwogICAgIGJvb2wgc3VjY2VzcyA9IG1fbG9jay50cnlMb2NrKCk7CiAgICAg
aWYgKFVOTElLRUxZKCFzdWNjZXNzKSkgewogICAgICAgICBpZiAoY3VycmVudFRocmVhZElzSG9s
ZGluZ0xvY2soKSkgewpAQCAtMTI1LDYgKzEyOCw3IEBAIHZvaWQgSlNMb2NrOjpsb2NrKGludHB0
cl90IGxvY2tDb3VudCkgV1QKICAgICBtX2xvY2tDb3VudCA9IGxvY2tDb3VudDsKIAogICAgIGRp
ZEFjcXVpcmVMb2NrKCk7CisgICAgbWxhbVRlc3QoMHg3MTEpOwogfQogCiB2b2lkIEpTTG9jazo6
ZGlkQWNxdWlyZUxvY2soKQpAQCAtMTM4LDggKzE0Miw3IEBAIHZvaWQgSlNMb2NrOjpkaWRBY3F1
aXJlTG9jaygpCiAgICAgbV9lbnRyeUF0b21TdHJpbmdUYWJsZSA9IHRocmVhZC5zZXRDdXJyZW50
QXRvbVN0cmluZ1RhYmxlKG1fdm0tPmF0b21TdHJpbmdUYWJsZSgpKTsKICAgICBBU1NFUlQobV9l
bnRyeUF0b21TdHJpbmdUYWJsZSk7CiAKLSAgICBtX3ZtLT5zZXRMYXN0U3RhY2tUb3AodGhyZWFk
LnNhdmVkTGFzdFN0YWNrVG9wKCkpOwotICAgIEFTU0VSVCh0aHJlYWQuc3RhY2soKS5jb250YWlu
cyhtX3ZtLT5sYXN0U3RhY2tUb3AoKSkpOworICAgIG1fdm0tPnNldExhc3RTdGFja1RvcCh0aHJl
YWQpOwogCiAgICAgaWYgKG1fdm0tPmhlYXAuaGFzQWNjZXNzKCkpCiAgICAgICAgIG1fc2hvdWxk
UmVsZWFzZUhlYXBBY2Nlc3MgPSBmYWxzZTsKQEAgLTE4NCw2ICsxODcsNyBAQCB2b2lkIEpTTG9j
azo6dW5sb2NrKGludHB0cl90IHVubG9ja0NvdW50CiAgICAgUkVMRUFTRV9BU1NFUlQoY3VycmVu
dFRocmVhZElzSG9sZGluZ0xvY2soKSk7CiAgICAgQVNTRVJUKG1fbG9ja0NvdW50ID49IHVubG9j
a0NvdW50KTsKIAorICAgIG1sYW1UZXN0KDB4ODExKTsKICAgICAvLyBNYWludGFpbiBtX2xvY2tD
b3VudCB3aGlsZSBjYWxsaW5nIHdpbGxSZWxlYXNlTG9jaygpIHNvIHRoYXQgaXRzIGNhbGxlZXMg
a25vdyB0aGF0CiAgICAgLy8gdGhleSBzdGlsbCBoYXZlIHRoZSBsb2NrLgogICAgIGlmICh1bmxv
Y2tDb3VudCA9PSBtX2xvY2tDb3VudCkKQEAgLTE5NSw2ICsxOTksNyBAQCB2b2lkIEpTTG9jazo6
dW5sb2NrKGludHB0cl90IHVubG9ja0NvdW50CiAgICAgICAgIG1faGFzT3duZXJUaHJlYWQgPSBm
YWxzZTsKICAgICAgICAgbV9sb2NrLnVubG9jaygpOwogICAgIH0KKyAgICBtbGFtVGVzdCgweDkx
MSk7CiB9CiAKIHZvaWQgSlNMb2NrOjp3aWxsUmVsZWFzZUxvY2soKQpAQCAtMjc3LDcgKzI4Miw3
IEBAIHZvaWQgSlNMb2NrOjpncmFiQWxsTG9ja3MoRHJvcEFsbExvY2tzKiAKIAogICAgIFRocmVh
ZCYgdGhyZWFkID0gVGhyZWFkOjpjdXJyZW50KCk7CiAgICAgbV92bS0+c2V0U3RhY2tQb2ludGVy
QXRWTUVudHJ5KHRocmVhZC5zYXZlZFN0YWNrUG9pbnRlckF0Vk1FbnRyeSgpKTsKLSAgICBtX3Zt
LT5zZXRMYXN0U3RhY2tUb3AodGhyZWFkLnNhdmVkTGFzdFN0YWNrVG9wKCkpOworICAgIG1fdm0t
PnNldExhc3RTdGFja1RvcCh0aHJlYWQpOwogfQogCiBKU0xvY2s6OkRyb3BBbGxMb2Nrczo6RHJv
cEFsbExvY2tzKFZNKiB2bSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAJ
KHJldmlzaW9uIDI4ODY0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDgtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDgtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTEzNSw2ICsxMzUsOCBAQAogCiBuYW1lc3BhY2UgSlNDIHsK
IAorTkVWRVJfSU5MSU5FIHZvaWQgbWxhbVRlc3QoaW50IGNvZGUpOworCiBBdG9taWM8dW5zaWdu
ZWQ+IFZNOjpzX251bWJlck9mSURzOwogCiBERUZJTkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9JREVO
VElGSUVSKFZNKTsKQEAgLTI0Miw5ICsyNDQsOCBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVh
cFR5cGUgaGVhcFR5cGUsCiAgICAgICAgIENSQVNIX1dJVEhfSU5GTygweDQyNDI0MjQyMjAyMDIw
MjAsIDB4YmFkYmVlZjBiYWRiZWVmLCAweDEyMzQxMjM0MTIzNDEyMzQsIDB4MTMzNzEzMzcxMzM3
MTMzNyk7CiAKICAgICBpbnRlcnByZXRlciA9IG5ldyBJbnRlcnByZXRlcigqdGhpcyk7Ci0gICAg
U3RhY2tCb3VuZHMgc3RhY2sgPSBUaHJlYWQ6OmN1cnJlbnQoKS5zdGFjaygpOwogICAgIHVwZGF0
ZVNvZnRSZXNlcnZlZFpvbmVTaXplKE9wdGlvbnM6OnNvZnRSZXNlcnZlZFpvbmVTaXplKCkpOwot
ICAgIHNldExhc3RTdGFja1RvcChzdGFjay5vcmlnaW4oKSk7CisgICAgc2V0TGFzdFN0YWNrVG9w
KFRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIEpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjpzaGFy
ZWQoKS5yZWdpc3RlclZNKCp0aGlzKTsKIApAQCAtNTAzLDkgKzUwNCwxNSBAQCB2b2lkIFZNOjpw
cmltaXRpdmVHaWdhY2FnZURpc2FibGVkKCkKICAgICBtX25lZWRUb0ZpcmVQcmltaXRpdmVHaWdh
Y2FnZUVuYWJsZWQgPSB0cnVlOwogfQogCi12b2lkIFZNOjpzZXRMYXN0U3RhY2tUb3Aodm9pZCog
bGFzdFN0YWNrVG9wKQoteyAKLSAgICBtX2xhc3RTdGFja1RvcCA9IGxhc3RTdGFja1RvcDsKK3Zv
aWQgVk06OnNldExhc3RTdGFja1RvcChjb25zdCBUaHJlYWQmIHRocmVhZCkKK3sKKyAgICBtX2xh
c3RTdGFja1RvcCA9IHRocmVhZC5zYXZlZExhc3RTdGFja1RvcCgpOworICAgIGF1dG8mIHN0YWNr
ID0gdGhyZWFkLnN0YWNrKCk7CisgICAgUkVMRUFTRV9BU1NFUlQoc3RhY2suY29udGFpbnMobV9s
YXN0U3RhY2tUb3ApLCAweDU1MTAsIG1fbGFzdFN0YWNrVG9wLCBzdGFjay5vcmlnaW4oKSwgc3Rh
Y2suZW5kKCkpOworI2lmIE9TKERBUldJTikgJiYgQ1BVKEFSTTY0KQorICAgIFJFTEVBU0VfQVNT
RVJUKHRocmVhZC5pZCgpID09IFRocmVhZDo6Y3VycmVudElEKCksIDB4NTUyMCwgdGhyZWFkLmlk
KCksIFRocmVhZDo6Y3VycmVudElEKCkpOworI2VuZGlmCisgICAgbWxhbVRlc3QoMHgxNjExKTsK
IH0KIAogUmVmPFZNPiBWTTo6Y3JlYXRlQ29udGV4dEdyb3VwKEhlYXBUeXBlIGhlYXBUeXBlKQpA
QCAtMTA1MCwxNiArMTA1NywxMSBAQCB2b2lkIFZNOjpwb3BBbGxDaGVja3BvaW50T1NSU2lkZVN0
YXRlVW50CiAgICAgbV9jaGVja3BvaW50U2lkZVN0YXRlLnNocmlua1RvRml0KCk7CiB9CiAKLXZv
aWQgbG9nU2FuaXRpemVTdGFjayhWTSYgdm0pCitzdGF0aWMgdm9pZCBsb2dTYW5pdGl6ZVN0YWNr
KFZNJiB2bSkKIHsKLSAgICBpZiAoT3B0aW9uczo6dmVyYm9zZVNhbml0aXplU3RhY2soKSAmJiB2
bS50b3BDYWxsRnJhbWUpIHsKLSAgICAgICAgaW50IGR1bW15OworICAgIGlmIChVTkxJS0VMWShP
cHRpb25zOjp2ZXJib3NlU2FuaXRpemVTdGFjaygpKSkgewogICAgICAgICBhdXRvJiBzdGFja0Jv
dW5kcyA9IFRocmVhZDo6Y3VycmVudCgpLnN0YWNrKCk7Ci0gICAgICAgIGRhdGFMb2coCi0gICAg
ICAgICAgICAiU2FuaXRpemluZyBzdGFjayBmb3IgVk0gPSAiLCBSYXdQb2ludGVyKCZ2bSksICIg
d2l0aCB0b3AgY2FsbCBmcmFtZSBhdCAiLCBSYXdQb2ludGVyKHZtLnRvcENhbGxGcmFtZSksCi0g
ICAgICAgICAgICAiLCBjdXJyZW50IHN0YWNrIHBvaW50ZXIgYXQgIiwgUmF3UG9pbnRlcigmZHVt
bXkpLCAiLCBpbiAiLAotICAgICAgICAgICAgcG9pbnRlckR1bXAodm0udG9wQ2FsbEZyYW1lLT5j
b2RlQmxvY2soKSksICIsIGxhc3QgY29kZSBvcmlnaW4gPSAiLAotICAgICAgICAgICAgdm0udG9w
Q2FsbEZyYW1lLT5jb2RlT3JpZ2luKCksICIsIGxhc3Qgc3RhY2sgdG9wID0gIiwgUmF3UG9pbnRl
cih2bS5sYXN0U3RhY2tUb3AoKSksICIsIGluIHN0YWNrIHJhbmdlIFsiLCBSYXdQb2ludGVyKHN0
YWNrQm91bmRzLm9yaWdpbigpKSwgIiwgIiwgUmF3UG9pbnRlcihzdGFja0JvdW5kcy5lbmQoKSks
ICJdXG4iKTsKKyAgICAgICAgZGF0YUxvZ0xuKCJTYW5pdGl6aW5nIHN0YWNrIGZvciBWTSA9ICIs
IFJhd1BvaW50ZXIoJnZtKSwgIiwgY3VycmVudCBzdGFjayBwb2ludGVyIGF0ICIsIFJhd1BvaW50
ZXIoY3VycmVudFN0YWNrUG9pbnRlcigpKSwgIiwgbGFzdCBzdGFjayB0b3AgPSAiLCBSYXdQb2lu
dGVyKHZtLmxhc3RTdGFja1RvcCgpKSwgIiwgaW4gc3RhY2sgcmFuZ2UgKCIsIFJhd1BvaW50ZXIo
c3RhY2tCb3VuZHMuZW5kKCkpLCAiLCAiLCBSYXdQb2ludGVyKHN0YWNrQm91bmRzLm9yaWdpbigp
KSwgIl0iKTsKICAgICB9CiB9CiAKQEAgLTEyNzAsMTcgKzEyNzIsMjUgQEAgdm9pZCBRdWV1ZWRU
YXNrOjpydW4oKQogCiB2b2lkIHNhbml0aXplU3RhY2tGb3JWTShWTSYgdm0pCiB7CisgICAgYXV0
byYgdGhyZWFkID0gVGhyZWFkOjpjdXJyZW50KCk7CisjaWYgT1MoREFSV0lOKSAmJiBDUFUoQVJN
NjQpCisgICAgUkVMRUFTRV9BU1NFUlQodGhyZWFkLmlkKCkgPT0gVGhyZWFkOjpjdXJyZW50SUQo
KSwgMHhhYTEwLCB0aHJlYWQuaWQoKSwgVGhyZWFkOjpjdXJyZW50SUQoKSk7CisjZW5kaWYKKyAg
ICBhdXRvJiBzdGFjayA9IHRocmVhZC5zdGFjaygpOworICAgIGlmICghdm0uY3VycmVudFRocmVh
ZElzSG9sZGluZ0FQSUxvY2soKSkKKyAgICAgICAgcmV0dXJuOyAvLyB2bS5sYXN0U3RhY2tUb3Ao
KSBtYXkgbm90IGJlIHNldCB1cCBjb3JyZWN0bHkgaWYgSlNMb2NrIGlzIG5vdCBoZWxkLgorCiAg
ICAgbG9nU2FuaXRpemVTdGFjayh2bSk7Ci0gICAgaWYgKHZtLnRvcENhbGxGcmFtZSkgewotICAg
ICAgICBhdXRvJiBzdGFja0JvdW5kcyA9IFRocmVhZDo6Y3VycmVudCgpLnN0YWNrKCk7Ci0gICAg
ICAgIEFTU0VSVCh2bS5jdXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKLSAgICAgICAg
QVNTRVJUX1VOVVNFRChzdGFja0JvdW5kcywgc3RhY2tCb3VuZHMuY29udGFpbnModm0ubGFzdFN0
YWNrVG9wKCkpKTsKLSAgICB9CisKKyAgICBSRUxFQVNFX0FTU0VSVChzdGFjay5jb250YWlucyh2
bS5sYXN0U3RhY2tUb3AoKSksIDB4YWEyMCwgdm0ubGFzdFN0YWNrVG9wKCksIHN0YWNrLm9yaWdp
bigpLCBzdGFjay5lbmQoKSk7CiAjaWYgRU5BQkxFKENfTE9PUCkKICAgICB2bS5pbnRlcnByZXRl
ci0+Y2xvb3BTdGFjaygpLnNhbml0aXplU3RhY2soKTsKICNlbHNlCiAgICAgc2FuaXRpemVTdGFj
a0ZvclZNSW1wbCgmdm0pOwogI2VuZGlmCisgICAgUkVMRUFTRV9BU1NFUlQoc3RhY2suY29udGFp
bnModm0ubGFzdFN0YWNrVG9wKCkpLCAweGFhMzAsIHZtLmxhc3RTdGFja1RvcCgpLCBzdGFjay5v
cmlnaW4oKSwgc3RhY2suZW5kKCkpOworCisgICAgbWxhbVRlc3QoMHgxNTExKTsKIH0KIAogc2l6
ZV90IFZNOjpjb21taXR0ZWRTdGFja0J5dGVDb3VudCgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmgJKHJldmlzaW9uIDI4ODY0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDA4LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDA4LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03ODUsNyArNzg1LDcgQEAgcHVibGljOgog
CiAgICAgdm9pZCoqIGFkZHJlc3NPZkxhc3RTdGFja1RvcCgpIHsgcmV0dXJuICZtX2xhc3RTdGFj
a1RvcDsgfQogICAgIHZvaWQqIGxhc3RTdGFja1RvcCgpIHsgcmV0dXJuIG1fbGFzdFN0YWNrVG9w
OyB9Ci0gICAgdm9pZCBzZXRMYXN0U3RhY2tUb3Aodm9pZCopOworICAgIHZvaWQgc2V0TGFzdFN0
YWNrVG9wKGNvbnN0IFRocmVhZCYpOwogICAgIAogICAgIHZvaWQgZmlyZVByaW1pdGl2ZUdpZ2Fj
YWdlRW5hYmxlZElmTmVjZXNzYXJ5KCkKICAgICB7CkBAIC0xMTczLDYgKzExNzMsNSBAQCBleHRl
cm4gIkMiIHZvaWQgc2FuaXRpemVTdGFja0ZvclZNSW1wbChWCiAjZW5kaWYKIAogSlNfRVhQT1JU
X1BSSVZBVEUgdm9pZCBzYW5pdGl6ZVN0YWNrRm9yVk0oVk0mKTsKLXZvaWQgbG9nU2FuaXRpemVT
dGFjayhWTSYpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZpc2lvbiAyODg2NDUp
CisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBA
CisyMDIyLTAxLTI3ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBF
bmhhbmNlIHNhbml0aXplU3RhY2tGb3JWTSgpIHRvIGFzc2lzdCB3aXRoIGNyYXNoIGFuYWx5c2lz
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1NzUy
CisgICAgICAgIHJkYXI6Ly84MTAxNDYwMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBUaHJlYWRJZGVudGlmaWVyIGFuZCBU
aHJlYWQ6OmN1cnJlbnRJRCgpIG9uIE9TKERBUldJTikuICBUaGlzIGNhbgorICAgICAgICBiZSB1
c2VkIHRvIGRldGVjdCBUTFMgY29ycnVwdGlvbiAvIGJ1Z3MuCisKKyAgICAgICAgKiB3dGYvVGhy
ZWFkaW5nLmNwcDoKKyAgICAgICAgKFdURjo6VGhyZWFkOjppbml0aWFsaXplSW5UaHJlYWQpOgor
ICAgICAgICAqIHd0Zi9UaHJlYWRpbmcuaDoKKyAgICAgICAgKFdURjo6VGhyZWFkOjpzYXZlZFN0
YWNrUG9pbnRlckF0Vk1FbnRyeSBjb25zdCk6CisgICAgICAgIChXVEY6OlRocmVhZDo6c2F2ZWRM
YXN0U3RhY2tUb3AgY29uc3QpOgorICAgICAgICAoV1RGOjpUaHJlYWQ6OmN1cnJlbnRJRCk6Cisg
ICAgICAgIChXVEY6OlRocmVhZDo6c2F2ZWRTdGFja1BvaW50ZXJBdFZNRW50cnkpOiBEZWxldGVk
LgorICAgICAgICAoV1RGOjpUaHJlYWQ6OnNhdmVkTGFzdFN0YWNrVG9wKTogRGVsZXRlZC4KKyAg
ICAgICAgKiB3dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oOgorCiAyMDIyLTAxLTI1ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFttYWNPU10gQWRkIG5l
dyBzY3JlZW4gYW5kIHdpbmRvdyBjYXB0dXJlIGJhY2tlbmQKSW5kZXg6IFNvdXJjZS9XVEYvd3Rm
L1RocmVhZGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmNw
cAkocmV2aXNpb24gMjg4NjQ1KQorKysgU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTU5LDggKzE1OSwxNiBAQCB2b2lkIFRocmVhZDo6aW5pdGlhbGl6ZUlu
VGhyZWFkKCkKICAgICB9CiAjZW5kaWYKIAotI2lmIE9TKExJTlVYKQotICAgIG1faWQgPSBjdXJy
ZW50SUQoKTsKKyNpZiBVU0UoUFRIUkVBRFMpCisvLyAgICBtX2lkID0gY3VycmVudElEKCk7Cisg
ICAgVGhyZWFkSWRlbnRpZmllciBpZCA9IGN1cnJlbnRJRCgpOworICAgIFJFTEVBU0VfQVNTRVJU
KChpZCAmIDB4NykgPT0gMCwgMHgzMjMsIGlkKTsKKyAgICBtX2lkID0gaWQ7CisgICAgUkVMRUFT
RV9BU1NFUlQoaWQgPT0gVGhyZWFkOjpjdXJyZW50SUQoKSwgMHg0MjMsIGlkLCBUaHJlYWQ6OmN1
cnJlbnRJRCgpKTsgLy8gbWxhbSBURVNUCisgICAgUkVMRUFTRV9BU1NFUlQobV9pZCA9PSBjdXJy
ZW50SUQoKSwgMHgxMjMsIG1faWQsIGN1cnJlbnRJRCgpKTsgLy8gbWxhbSBURVNUCisgICAgUkVM
RUFTRV9BU1NFUlQobV9pZCA9PSBUaHJlYWQ6OmN1cnJlbnRJRCgpLCAweDIyMywgbV9pZCwgVGhy
ZWFkOjpjdXJyZW50SUQoKSk7IC8vIG1sYW0gVEVTVAorI2Vsc2UKKyAgICBSRUxFQVNFX0FTU0VS
VChtX2lkID09IGN1cnJlbnRJRCgpKTsKICNlbmRpZgogfQogCkBAIC0xNzksNiArMTg3LDcgQEAg
dm9pZCBUaHJlYWQ6OmVudHJ5UG9pbnQoTmV3VGhyZWFkQ29udGV4dAogICAgICAgICBjb250ZXh0
LT50aHJlYWQtPmluaXRpYWxpemVJblRocmVhZCgpOwogCiAgICAgICAgIFRocmVhZDo6aW5pdGlh
bGl6ZVRMUyhXVEZNb3ZlKGNvbnRleHQtPnRocmVhZCkpOworICAgICAgICBSRUxFQVNFX0FTU0VS
VChjb250ZXh0LT50aHJlYWQtPmlkKCkgPT0gVGhyZWFkOjpjdXJyZW50SUQoKSwgMHgyMTEsIGNv
bnRleHQtPnRocmVhZC0+aWQoKSwgVGhyZWFkOjpjdXJyZW50SUQoKSk7IC8vIG1sYW0gVEVTVAog
CiAjaWYgIUhBVkUoU1RBQ0tfQk9VTkRTX0ZPUl9ORVdfVEhSRUFEKQogICAgICAgICAvLyBBY2sg
Y29tcGxldGlvbiBvZiBpbml0aWFsaXphdGlvbiB0byB0aGUgY3JlYXRpbmcgdGhyZWFkLgpJbmRl
eDogU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93
dGYvVGhyZWFkaW5nLmgJKHJldmlzaW9uIDI4ODY0NSkKKysrIFNvdXJjZS9XVEYvd3RmL1RocmVh
ZGluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwNy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAwNy0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHly
aWdodCAoQykgMjAwNyBKdXN0aW4gSGF5Z29vZCA8amhheWdvb2RAcmVha3RpeC5jb20+CiAgKiBD
b3B5cmlnaHQgKEMpIDIwMTcgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgog
ICoKQEAgLTEzMCwxNSArMTMwLDE4IEBAIHB1YmxpYzoKIAogICAgIHVpbnQzMl90IHVpZCgpIGNv
bnN0IHsgcmV0dXJuIG1fdWlkOyB9CiAKLSNpZiBPUyhXSU5ET1dTKQogICAgIC8vIFJldHVybnMg
VGhyZWFkSWRlbnRpZmllciBkaXJlY3RseS4gSXQgaXMgdXNlZnVsIGlmIHRoZSB1c2VyIG9ubHkg
Y2FyZXMgYWJvdXQgaWRlbnRpdHkKICAgICAvLyBvZiB0aHJlYWRzLiBBdCB0aGF0IHRpbWUsIHVz
ZXJzIHNob3VsZCBrbm93IHRoYXQgaG9sZGluZyB0aGlzIFRocmVhZElkZW50aWZpZXIgZG9lcyBu
b3QgZW5zdXJlCiAgICAgLy8gdGhhdCB0aGUgdGhyZWFkIGluZm9ybWF0aW9uIGlzIGFsaXZlLiBX
aGlsZSBUaHJlYWQ6OmN1cnJlbnQoKSBpcyBub3Qgc2FmZSBpZiBpdCBpcyBjYWxsZWQKICAgICAv
LyBmcm9tIHRoZSBkZXN0cnVjdG9yIG9mIHRoZSBvdGhlciBUTFMgZGF0YSwgY3VycmVudElEKCkg
YWx3YXlzIHJldHVybnMgbWVhbmluZ2Z1bCB0aHJlYWQgSUQuCisjaWYgT1MoREFSV0lOKQorICAg
IEFMV0FZU19JTkxJTkUgc3RhdGljIFRocmVhZElkZW50aWZpZXIgY3VycmVudElEKCk7CisjZWxz
ZQogICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgVGhyZWFkSWRlbnRpZmllciBjdXJyZW50
SUQoKTsKLQorI2VuZGlmCiAgICAgVGhyZWFkSWRlbnRpZmllciBpZCgpIGNvbnN0IHsgcmV0dXJu
IG1faWQ7IH0KIAorI2lmIE9TKFdJTkRPV1MpCiAgICAgY2xhc3MgU3BlY2lmaWNTdG9yYWdlIHsK
ICAgICBwdWJsaWM6CiAgICAgICAgIHVzaW5nIERlc3Ryb3lGdW5jdGlvbiA9IHZvaWQgKCopKHZv
aWQqKTsKQEAgLTE3NiwxMCArMTc5LDYgQEAgcHVibGljOgogICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBzaXplX3QgZ2V0UmVnaXN0ZXJzKFBsYXRmb3JtUmVnaXN0ZXJzJik7CiAKICNpZiBVU0UoUFRI
UkVBRFMpCi0jaWYgT1MoTElOVVgpCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBUaHJl
YWRJZGVudGlmaWVyIGN1cnJlbnRJRCgpOwotICAgIFRocmVhZElkZW50aWZpZXIgaWQoKSBjb25z
dCB7IHJldHVybiBtX2lkOyB9Ci0jZW5kaWYKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBz
aWduYWwoaW50IHNpZ25hbE51bWJlcik7CiAjZW5kaWYKIApAQCAtMjMxLDcgKzIzMCw3IEBAIHB1
YmxpYzoKICAgICB9CiAjZW5kaWYKIAotICAgIHZvaWQqIHNhdmVkU3RhY2tQb2ludGVyQXRWTUVu
dHJ5KCkKKyAgICB2b2lkKiBzYXZlZFN0YWNrUG9pbnRlckF0Vk1FbnRyeSgpIGNvbnN0CiAgICAg
ewogICAgICAgICByZXR1cm4gbV9zYXZlZFN0YWNrUG9pbnRlckF0Vk1FbnRyeTsKICAgICB9CkBA
IC0yNDEsNyArMjQwLDcgQEAgcHVibGljOgogICAgICAgICBtX3NhdmVkU3RhY2tQb2ludGVyQXRW
TUVudHJ5ID0gc3RhY2tQb2ludGVyQXRWTUVudHJ5OwogICAgIH0KIAotICAgIHZvaWQqIHNhdmVk
TGFzdFN0YWNrVG9wKCkKKyAgICB2b2lkKiBzYXZlZExhc3RTdGFja1RvcCgpIGNvbnN0CiAgICAg
ewogICAgICAgICByZXR1cm4gbV9zYXZlZExhc3RTdGFja1RvcDsKICAgICB9CkBAIC0zNTMsMTQg
KzM1MiwxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgSGFzaE1hcDxUaHJlYWRHcm91cCosIHN0ZDo6d2Vh
a19wdHI8VGhyZWFkR3JvdXA+PiBtX3RocmVhZEdyb3VwTWFwOwogICAgIFBsYXRmb3JtVGhyZWFk
SGFuZGxlIG1faGFuZGxlOwogICAgIHVpbnQzMl90IG1fdWlkOwotI2lmIE9TKFdJTkRPV1MpCiAg
ICAgVGhyZWFkSWRlbnRpZmllciBtX2lkIHsgMCB9OwotI2VsaWYgT1MoREFSV0lOKQorI2lmIE9T
KERBUldJTikKICAgICBtYWNoX3BvcnRfdCBtX3BsYXRmb3JtVGhyZWFkIHsgTUFDSF9QT1JUX05V
TEwgfTsKICNlbGlmIFVTRShQVEhSRUFEUykKLSNpZiBPUyhMSU5VWCkKLSAgICBUaHJlYWRJZGVu
dGlmaWVyIG1faWQgeyAwIH07Ci0jZW5kaWYKICAgICBQbGF0Zm9ybVJlZ2lzdGVycyogbV9wbGF0
Zm9ybVJlZ2lzdGVycyB7IG51bGxwdHIgfTsKICAgICB1bnNpZ25lZCBtX3N1c3BlbmRDb3VudCB7
IDAgfTsKICNlbmRpZgpAQCAtNDIwLDYgKzQxNSwyNSBAQCBpbmxpbmUgVGhyZWFkJiBUaHJlYWQ6
OmN1cnJlbnQoKQogICAgIHJldHVybiBpbml0aWFsaXplQ3VycmVudFRMUygpOwogfQogCisjaWYg
T1MoREFSV0lOKQorQUxXQVlTX0lOTElORSBUaHJlYWRJZGVudGlmaWVyIFRocmVhZDo6Y3VycmVu
dElEKCkKK3sKKyAgICBUaHJlYWRJZGVudGlmaWVyIHJlc3VsdDsKKyNpZiBDUFUoQVJNNjQpCisg
ICAgIGFzbSAoCisgICAgICAgICJtcnMgJXhbcmVzdWx0XSwgVFBJRFJST19FTDAiCisgICAgICAg
IDogW3Jlc3VsdF0gIj1yIiAocmVzdWx0KQorICAgICAgICA6CisgICAgICAgIDoKKyAgICApOwor
I2Vsc2UKKyAgICByZXN1bHQgPSBiaXR3aXNlX2Nhc3Q8VGhyZWFkSWRlbnRpZmllcj4ocHRocmVh
ZF9zZWxmKCkpOworI2VuZGlmCisgICAgQVNTRVJUKHJlc3VsdCk7CisgICAgcmV0dXJuIHJlc3Vs
dDsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogdXNpbmcgV1RGOjpUaHJlYWQ7
CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dURi93dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oCShyZXZpc2lvbiAyODg2NDUp
CisrKyBTb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTU3LDcgKzU3LDkgQEAgdXNpbmcgUGxhdGZvcm1UaHJlYWRIYW5kbGUgPSBwdGhyZWFkX3Q7
CiB1c2luZyBQbGF0Zm9ybU11dGV4ID0gcHRocmVhZF9tdXRleF90OwogdXNpbmcgUGxhdGZvcm1D
b25kaXRpb24gPSBwdGhyZWFkX2NvbmRfdDsKIHVzaW5nIFRocmVhZFNwZWNpZmljS2V5ID0gcHRo
cmVhZF9rZXlfdDsKLSNpZiBPUyhMSU5VWCkKKyNpZiBPUyhEQVJXSU4pCit1c2luZyBUaHJlYWRJ
ZGVudGlmaWVyID0gdWludHB0cl90OworI2VsaWYgT1MoTElOVVgpCiB1c2luZyBUaHJlYWRJZGVu
dGlmaWVyID0gcGlkX3Q7CiAjZW5kaWYKICNlbGlmIE9TKFdJTkRPV1MpCg==
</data>
<flag name="commit-queue"
          id="476782"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450381</attachid>
            <date>2022-01-30 22:43:08 -0800</date>
            <delta_ts>2022-01-31 00:48:00 -0800</delta_ts>
            <desc>test3</desc>
            <filename>test-threadID.patch</filename>
            <type>text/plain</type>
            <size>25966</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjg4NzIxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3IEBA
CisyMDIyLTAxLTI3ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBF
bmhhbmNlIHNhbml0aXplU3RhY2tGb3JWTSgpIHRvIGFzc2lzdCB3aXRoIGNyYXNoIGFuYWx5c2lz
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1NzUy
CisgICAgICAgIHJkYXI6Ly84MTAxNDYwMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIDEuIFJlbW92ZSB0aGUgQXNzZW1ibHlIZWxwZXJzIHZlcnNpb24g
b2Ygc2FuaXRpemVTdGFjay4gIEluc3RlYWQsIG1ha2UgdGhlIDMKKyAgICAgICAgICAgSklUIG9w
ZXJhdGlvbiBmdW5jdGlvbnMgY2FsbCBzYW5pdGl6ZVN0YWNrRm9yVk0oKSBpbnN0ZWFkLiAgVGhp
cyBlbnN1cmVzCisgICAgICAgICAgIHRoYXQgc2FuaXRpemVTdGFjayBjcmFzaGVzIGFyZSBub3Qg
b2JzY3VyZWQgYXMgZ2VuZXJpYyBKSVQgY3Jhc2hlcy4KKworICAgICAgICAyLiBBZGQgc2FuaXR5
IGNoZWNrIFJFTEVBU0VfQVNTRVJUcyB0byBWTTo6c2V0TGFzdFN0YWNrVG9wKCkgd2l0aCBhIGNh
cHR1cmUgb2YKKyAgICAgICAgICAgdGhlIHJlbGV2YW50IHZhcmlhYmxlcyBmb3IgY3Jhc2ggYW5h
bHlzaXMuCisKKyAgICAgICAgMy4gRml4IGxvZ1Nhbml0aXplU3RhY2soKSBzbyB0aGF0IGl0IG5v
IGxvbmdlciByZWxpZXMgb24gdm0udG9wQ2FsbEZyYW1lLgorICAgICAgICAgICB2bS50b3BDYWxs
RnJhbWUgbWF5IG5vdCBiZSBwcm9wZXJseSBpbml0aWFsaXplZCBhdCBhbGwgdGhlIHBsYWNlcyB0
aGF0CisgICAgICAgICAgIHNhbml0aXplU3RhY2tGb3JWTSgpIGlzIGNhbGxlZC4KKworICAgICAg
ICA0LiBBZGQgYSBKU0xvY2sgY2hlY2sgdG8gc2FuaXRpemVTdGFja0ZvclZNKCksIGFuZCByZXR1
cm4gZWFybHkgaWYgbm90IG93bmVkIGJ5CisgICAgICAgICAgIHRoZSBjdXJyZW50IHRocmVhZC4g
IElmIHRoZSBKU0xvY2sgaXMgbm90IG93bmVkIGJ5IHRoZSBjdXJyZW50IHRocmVhZCwgd2UgY2Fu
J3QKKyAgICAgICAgICAgcmVseSBvbiB2bS5sYXN0U3RhY2tUb3AoKSBiZWluZyBhIHNhbmUgdmFs
dWUuICBIZW5jZSwgaXQncyBub3QgcG9zc2libGUgdG8KKyAgICAgICAgICAgZG8gc3RhY2sgc2Fu
aXRpemF0aW9uIGNvcnJlY3RseS4KKworICAgICAgICAgICBBZGQgc2FuaXR5IGNoZWNrIFJFTEVB
U0VfQVNTRVJUcyB0byBzYW5pdGl6ZVN0YWNrRm9yVk0oKSB3aXRoIGEgY2FwdHVyZSBvZgorICAg
ICAgICAgICB0aGUgcmVsZXZhbnQgdmFyaWFibGVzIGZvciBjcmFzaCBhbmFseXNpcy4KKworICAg
ICAgICAqIGppdC9Bc3NlbWJseUhlbHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhl
bHBlcnM6OnNhbml0aXplU3RhY2tJbmxpbmUpOiBEZWxldGVkLgorICAgICAgICAqIGppdC9Bc3Nl
bWJseUhlbHBlcnMuaDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAg
IChKU0M6OkpTQ19ERUZJTkVfSklUX09QRVJBVElPTik6CisgICAgICAgICogaml0L1RodW5rR2Vu
ZXJhdG9ycy5jcHA6CisgICAgICAgIChKU0M6OnNsb3dQYXRoRm9yKToKKyAgICAgICAgKiBydW50
aW1lL0pTTG9jay5jcHA6CisgICAgICAgIChKU0M6OkpTTG9jazo6ZGlkQWNxdWlyZUxvY2spOgor
ICAgICAgICAoSlNDOjpKU0xvY2s6OmdyYWJBbGxMb2Nrcyk6CisgICAgICAgICogcnVudGltZS9W
TS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAgICAgIChKU0M6OlZNOjpzZXRMYXN0
U3RhY2tUb3ApOgorICAgICAgICAoSlNDOjpsb2dTYW5pdGl6ZVN0YWNrKToKKyAgICAgICAgKEpT
Qzo6c2FuaXRpemVTdGFja0ZvclZNKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisKIDIwMjIt
MDEtMjcgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CiAKICAgICAgICAgY29t
LmFwcGxlLldlYktpdC5XZWJBdXRobi54cGMgZmFpbHMgdG8gYnVpbGQgd2l0aCBzeXN0ZW0gY29u
dGVudCBwYXRoCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJw
cmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9JbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDI4ODY0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgyLDYg
KzgyLDggQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK05FVkVSX0lOTElORSB2b2lkIG1sYW1UZXN0
KGludCBjb2RlKTsKKwogSlNWYWx1ZSBldmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lLCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKICAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CkBAIC03MTAsNiArNzEyLDggQEAgdm9pZCBJbnRlcnByZXRl
cjo6bm90aWZ5RGVidWdnZXJPZkV4Y2VwdAogCiBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRl
UHJvZ3JhbShjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEpTR2xvYmFsT2JqZWN0KiwgSlNPYmpl
Y3QqIHRoaXNPYmopCiB7CisgICAgbWxhbVRlc3QoMHgxMDExKTsKKwogICAgIEpTU2NvcGUqIHNj
b3BlID0gdGhpc09iai0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbFNjb3BlKCk7CiAgICAgVk0mIHZt
ID0gc2NvcGUtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CkBAIC05MDQsNiArOTA4LDggQEAgZmFpbGVkSlNPTlA6CiAKIEpTVmFsdWUgSW50ZXJw
cmV0ZXI6OmV4ZWN1dGVDYWxsKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U09iamVjdCogZnVuY3Rpb24sIGNvbnN0IENhbGxEYXRhJiBjYWxsRGF0YSwgSlNWYWx1ZSB0aGlz
VmFsdWUsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCiB7CisgICAgbWxhbVRlc3QoMHgxMTExKTsKKwog
ICAgIFZNJiB2bSA9IGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKQEAgLTk3NCw2ICs5ODAsOCBAQCBKU1Zh
bHVlIEludGVycHJldGVyOjpleGVjdXRlQ2FsbChKU0dsb2JhCiAKIEpTT2JqZWN0KiBJbnRlcnBy
ZXRlcjo6ZXhlY3V0ZUNvbnN0cnVjdChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNPYmplY3QqIGNvbnN0cnVjdG9yLCBjb25zdCBDYWxsRGF0YSYgY29uc3RydWN0RGF0YSwg
Y29uc3QgQXJnTGlzdCYgYXJncywgSlNWYWx1ZSBuZXdUYXJnZXQpCiB7CisgICAgbWxhbVRlc3Qo
MHgxMjExKTsKKwogICAgIFZNJiB2bSA9IGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKQEAgLTEwNzgsNiAr
MTA4Niw4IEBAIENhbGxGcmFtZUNsb3N1cmUgSW50ZXJwcmV0ZXI6OnByZXBhcmVGb3IKIAogSlNW
YWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShFdmFsRXhlY3V0YWJsZSogZXZhbCwgSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVmFsdWUgdGhpc1ZhbHVlLCBKU1Njb3BlKiBz
Y29wZSkKIHsKKyAgICBtbGFtVGVzdCgweDEzMTEpOworCiAgICAgVk0mIHZtID0gc2NvcGUtPnZt
KCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKQEAg
LTEyNTEsNiArMTI2MSw4IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoRXZhbEV4ZWN1
dGEKIAogSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZU1vZHVsZVByb2dyYW0oSlNNb2R1bGVS
ZWNvcmQqIHJlY29yZCwgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU01vZHVsZUVudmlyb25tZW50KiBzY29w
ZSwgSlNWYWx1ZSBzZW50VmFsdWUsIEpTVmFsdWUgcmVzdW1lTW9kZSkKIHsKKyAgICBtbGFtVGVz
dCgweDE0MTEpOworCiAgICAgVk0mIHZtID0gc2NvcGUtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlcklubGluZXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHJldmlz
aW9uIDI4ODY0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnBy
ZXRlcklubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsOCBAQAogCiBuYW1lc3Bh
Y2UgSlNDIHsKIAorTkVWRVJfSU5MSU5FIHZvaWQgbWxhbVRlc3QoaW50IGNvZGUpOworCiBpbmxp
bmUgT3Bjb2RlIEludGVycHJldGVyOjpnZXRPcGNvZGUoT3Bjb2RlSUQgaWQpCiB7CiAgICAgcmV0
dXJuIExMSW50OjpnZXRPcGNvZGUoaWQpOwpAQCAtNzIsNiArNzQsOCBAQCBpbmxpbmUgT3Bjb2Rl
SUQgSW50ZXJwcmV0ZXI6OmdldE9wY29kZUlECiAKIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBJbnRl
cnByZXRlcjo6ZXhlY3V0ZShDYWxsRnJhbWVDbG9zdXJlJiBjbG9zdXJlKQogeworICAgIG1sYW1U
ZXN0KDB4MTcxMSk7CisKICAgICBWTSYgdm0gPSAqY2xvc3VyZS52bTsKICAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAkocmV2aXNpb24gMjg4NjQ1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMTEyOCwxOSArMTEyOCw2IEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjpjb3B5Q2Fs
bGVlU2F2ZXNUb0UKICNlbmRpZgogfQogCi12b2lkIEFzc2VtYmx5SGVscGVyczo6c2FuaXRpemVT
dGFja0lubGluZShWTSYgdm0sIEdQUlJlZyBzY3JhdGNoKQotewotICAgIGxvYWRQdHIodm0uYWRk
cmVzc09mTGFzdFN0YWNrVG9wKCksIHNjcmF0Y2gpOwotICAgIEp1bXAgZG9uZSA9IGJyYW5jaFB0
cihCZWxvd09yRXF1YWwsIHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBzY3JhdGNoKTsKLSAgICBMYWJl
bCBsb29wID0gbGFiZWwoKTsKLSAgICBzdG9yZVB0cihUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCBB
ZGRyZXNzKHNjcmF0Y2gpKTsKLSAgICBhZGRQdHIoVHJ1c3RlZEltbVB0cihzaXplb2Yodm9pZCop
KSwgc2NyYXRjaCk7Ci0gICAgYnJhbmNoUHRyKEFib3ZlLCBzdGFja1BvaW50ZXJSZWdpc3Rlciwg
c2NyYXRjaCkubGlua1RvKGxvb3AsIHRoaXMpOwotICAgIGRvbmUubGluayh0aGlzKTsKLSAgICBt
b3ZlKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBzY3JhdGNoKTsKLSAgICBzdG9yZVB0cihzY3JhdGNo
LCB2bS5hZGRyZXNzT2ZMYXN0U3RhY2tUb3AoKSk7Ci19Ci0KIHZvaWQgQXNzZW1ibHlIZWxwZXJz
OjpjYWdlV2l0aG91dFVudGFnZ2luZyhHaWdhY2FnZTo6S2luZCBraW5kLCBHUFJSZWcgc3RvcmFn
ZSkKIHsKICNpZiBHSUdBQ0FHRV9FTkFCTEVECkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0Fzc2VtYmx5SGVscGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgJKHJldmlzaW9uIDI4ODY0NSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNzA5
LDggKzE3MDksNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBicmFuY2hUZXN0OChaZXJvLCBB
YnNvbHV0ZUFkZHJlc3Modm0uaGVhcC5hZGRyZXNzT2ZNdXRhdG9yU2hvdWxkQmVGZW5jZWQoKSkp
OwogICAgIH0KICAgICAKLSAgICB2b2lkIHNhbml0aXplU3RhY2tJbmxpbmUoVk0mLCBHUFJSZWcg
c2NyYXRjaCk7Ci0gICAgCiAgICAgLy8gRW1pdHMgdGhlIGJyYW5jaCBzdHJ1Y3R1cmUgZm9yIHR5
cGVvZi4gVGhlIGNvZGUgZW1pdHRlZCBieSB0aGlzIGRvZXNuJ3QgZmFsbCB0aHJvdWdoLiBUaGUK
ICAgICAvLyBmdW5jdG9yIGlzIGNhbGxlZCBhdCB0aG9zZSBwb2ludHMgd2hlcmUgd2UgaGF2ZSBw
aW5wb2ludGVkIGEgdHlwZS4gT25lIHdheSB0byB1c2UgdGhpcyBpcyB0bwogICAgIC8vIGhhdmUg
dGhlIGZ1bmN0b3IgZW1pdCB0aGUgY29kZSB0byBwdXQgdGhlIHR5cGUgc3RyaW5nIGludG8gYW4g
YXBwcm9wcmlhdGUgcmVnaXN0ZXIgYW5kIHRoZW4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMjg4NjQ1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE0
NDgsMTEgKzE0NDgsMTMgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkNhbGxF
dgogCiBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTGlua0NhbGwsIFNsb3dQYXRo
UmV0dXJuVHlwZSwgKENhbGxGcmFtZSogY2FsbGVlRnJhbWUsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvKSkKIHsKKyAgICBzYW5pdGl6ZVN0
YWNrRm9yVk0oZ2xvYmFsT2JqZWN0LT52bSgpKTsKICAgICByZXR1cm4gbGlua0ZvcihjYWxsZWVG
cmFtZSwgZ2xvYmFsT2JqZWN0LCBjYWxsTGlua0luZm8pOwogfQogCiBKU0NfREVGSU5FX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uTGlua1BvbHltb3JwaGljQ2FsbCwgU2xvd1BhdGhSZXR1cm5UeXBl
LCAoQ2FsbEZyYW1lKiBjYWxsZWVGcmFtZSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8pKQogeworICAgIHNhbml0aXplU3RhY2tGb3JWTShn
bG9iYWxPYmplY3QtPnZtKCkpOwogICAgIEFTU0VSVChjYWxsTGlua0luZm8tPnNwZWNpYWxpemF0
aW9uS2luZCgpID09IENvZGVGb3JDYWxsKTsKICAgICBKU0NlbGwqIGNhbGxlZUFzRnVuY3Rpb25D
ZWxsOwogICAgIFNsb3dQYXRoUmV0dXJuVHlwZSByZXN1bHQgPSB2aXJ0dWFsRm9yV2l0aEZ1bmN0
aW9uKGdsb2JhbE9iamVjdCwgY2FsbGVlRnJhbWUsIGNhbGxMaW5rSW5mbywgY2FsbGVlQXNGdW5j
dGlvbkNlbGwpOwpAQCAtMTQ2NCw2ICsxNDY2LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbkxpbmtQbwogCiBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uVmly
dHVhbENhbGwsIFNsb3dQYXRoUmV0dXJuVHlwZSwgKENhbGxGcmFtZSogY2FsbGVlRnJhbWUsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvKSkK
IHsKKyAgICBzYW5pdGl6ZVN0YWNrRm9yVk0oZ2xvYmFsT2JqZWN0LT52bSgpKTsKICAgICBKU0Nl
bGwqIGNhbGxlZUFzRnVuY3Rpb25DZWxsSWdub3JlZDsKICAgICByZXR1cm4gdmlydHVhbEZvcldp
dGhGdW5jdGlvbihnbG9iYWxPYmplY3QsIGNhbGxlZUZyYW1lLCBjYWxsTGlua0luZm8sIGNhbGxl
ZUFzRnVuY3Rpb25DZWxsSWdub3JlZCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1RodW5rR2VuZXJhdG9ycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCShyZXZpc2lvbiAyODg2NDUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0xOTIsNyArMTkyLDYgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiB0
aAogCiBzdGF0aWMgdm9pZCBzbG93UGF0aEZvcihDQ2FsbEhlbHBlcnMmIGppdCwgVk0mIHZtLCBT
cHJ0X0pJVE9wZXJhdGlvbl9FR0NsaSBzbG93UGF0aEZ1bmN0aW9uKQogewotICAgIGppdC5zYW5p
dGl6ZVN0YWNrSW5saW5lKHZtLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKICAgICBqaXQuZW1pdEZ1
bmN0aW9uUHJvbG9ndWUoKTsKICAgICBqaXQuc3RvcmVQdHIoR1BSSW5mbzo6Y2FsbEZyYW1lUmVn
aXN0ZXIsICZ2bS50b3BDYWxsRnJhbWUpOwogI2lmIE9TKFdJTkRPV1MpICYmIENQVShYODZfNjQp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5n
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFs
aXplVGhyZWFkaW5nLmNwcAkocmV2aXNpb24gMjg4NjQ1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUw
LDYgKzUwLDM1IEBAIG5hbWVzcGFjZSBKU0MgewogCiBzdGF0aWNfYXNzZXJ0KHNpemVvZihib29s
KSA9PSAxLCAiTExJbnQgYW5kIEpJVCBhc3N1bWUgc2l6ZW9mKGJvb2wpIGlzIGFsd2F5cyAxIHdo
ZW4gdG91Y2hpbmcgaXQgZGlyZWN0bHkgZnJvbSBhc3NlbWJseSBjb2RlLiIpOwogCitORVZFUl9J
TkxJTkUgdm9pZCBtbGFtVGVzdChpbnQgY29kZSk7CisKK05FVkVSX0lOTElORSB2b2lkIG1sYW1U
ZXN0KGludCBjb2RlKSB7CisjaWYgT1MoREFSV0lOKSAmJiBDUFUoQVJNNjQpCisgICAgV1RGOjpU
aHJlYWRJZGVudGlmaWVyIGFbMTAwMF07CisgICAgV1RGOjpUaHJlYWRJZGVudGlmaWVyIGJbMTAw
MF07CisgICAgaW50IG51bUZhaWx1cmVzID0gMDsKKyAgICBpbnQgZmlyc3RGYWlsdXJlID0gMDsK
KyAgICBpbnQgbGFzdEZhaWx1cmUgPSAwOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMTAwMDsg
KytpKSB7CisgICAgICAgIGF1dG8mIHRocmVhZCA9IFRocmVhZDo6Y3VycmVudCgpOworLy8gICAg
ICAgIFJFTEVBU0VfQVNTRVJUKHRocmVhZC5pZCgpID09IFRocmVhZDo6Y3VycmVudElEKCksIGNv
ZGUsIHRocmVhZC5pZCgpLCBUaHJlYWQ6OmN1cnJlbnRJRCgpLCBpKTsgLy8gbWxhbSBURVNUCisg
ICAgICAgIGF1dG8gaWRBID0gdGhyZWFkLmlkKCk7CisgICAgICAgIGF1dG8gaWRCID0gVGhyZWFk
OjpjdXJyZW50SUQoKTsKKyAgICAgICAgaWYgKGlkQSAhPSBpZEIpIHsKKyAgICAgICAgICAgIGFb
aV0gPSBpZEE7CisgICAgICAgICAgICBiW2ldID0gaWRCOworICAgICAgICAgICAgaWYgKCFudW1G
YWlsdXJlcykKKyAgICAgICAgICAgICAgICBmaXJzdEZhaWx1cmUgPSBpOworICAgICAgICAgICAg
bnVtRmFpbHVyZXMrKzsKKyAgICAgICAgICAgIGxhc3RGYWlsdXJlID0gaTsKKyAgICAgICAgfQor
ICAgIH0KKyAgICBSRUxFQVNFX0FTU0VSVChudW1GYWlsdXJlcyA9PSAwLCBjb2RlLCBudW1GYWls
dXJlcywgYVtmaXJzdEZhaWx1cmVdLCBiW2ZpcnN0RmFpbHVyZV0sIChmaXJzdEZhaWx1cmUgPDwg
MTYgfCBsYXN0RmFpbHVyZSksIGFbbGFzdEZhaWx1cmVdLCBiW2xhc3RGYWlsdXJlXSk7CisjZWxz
ZQorICAgIFVOVVNFRF9QQVJBTShjb2RlKTsKKyNlbmRpZgorfQorCiB2b2lkIGluaXRpYWxpemUo
KQogewogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKQEAgLTkwLDYgKzExOSw4
IEBAIHZvaWQgaW5pdGlhbGl6ZSgpCiAgICAgICAgIGluaXRpYWxpemVTdXBlclNhbXBsZXIoKTsK
ICAgICAgICAgVGhyZWFkJiB0aHJlYWQgPSBUaHJlYWQ6OmN1cnJlbnQoKTsKICAgICAgICAgdGhy
ZWFkLnNldFNhdmVkTGFzdFN0YWNrVG9wKHRocmVhZC5zdGFjaygpLm9yaWdpbigpKTsKKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlQodGhyZWFkLmlkKCkgPT0gVGhyZWFkOjpjdXJyZW50SUQoKSwgMHgx
MTEsIHRocmVhZC5pZCgpLCBUaHJlYWQ6OmN1cnJlbnRJRCgpKTsgLy8gbWxhbSBURVNUCisgICAg
ICAgIG1sYW1UZXN0KDB4MzExKTsKIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICAgICAg
aWYgKFdhc206OmlzU3VwcG9ydGVkKCkpIHsKQEAgLTExMyw3ICsxNDQsOSBAQCB2b2lkIGluaXRp
YWxpemUoKQogICAgICAgICBXVEY6OmNvbXBpbGVyRmVuY2UoKTsKICAgICAgICAgUkVMRUFTRV9B
U1NFUlQoIWdfanNjQ29uZmlnLmluaXRpYWxpemVIYXNCZWVuQ2FsbGVkKTsKICAgICAgICAgZ19q
c2NDb25maWcuaW5pdGlhbGl6ZUhhc0JlZW5DYWxsZWQgPSB0cnVlOworICAgICAgICBtbGFtVGVz
dCgweDQxMSk7CiAgICAgfSk7CisgICAgbWxhbVRlc3QoMHg1MTEpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmNwcAko
cmV2aXNpb24gMjg4NjQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2Nr
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDUtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDUtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKQEAgLTM5LDYgKzM5LDggQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK05FVkVSX0lO
TElORSB2b2lkIG1sYW1UZXN0KGludCBjb2RlKTsKKwogTG9jayBHbG9iYWxKU0xvY2s6OnNfc2hh
cmVkSW5zdGFuY2VNdXRleDsKIAogR2xvYmFsSlNMb2NrOjpHbG9iYWxKU0xvY2soKQpAQCAtMTA5
LDYgKzExMSw3IEBAIHZvaWQgSlNMb2NrOjpsb2NrKGludHB0cl90IGxvY2tDb3VudCkgV1QKICAg
ICB9CiAjZW5kaWYKIAorICAgIG1sYW1UZXN0KDB4NjExKTsKICAgICBib29sIHN1Y2Nlc3MgPSBt
X2xvY2sudHJ5TG9jaygpOwogICAgIGlmIChVTkxJS0VMWSghc3VjY2VzcykpIHsKICAgICAgICAg
aWYgKGN1cnJlbnRUaHJlYWRJc0hvbGRpbmdMb2NrKCkpIHsKQEAgLTEyNSw2ICsxMjgsNyBAQCB2
b2lkIEpTTG9jazo6bG9jayhpbnRwdHJfdCBsb2NrQ291bnQpIFdUCiAgICAgbV9sb2NrQ291bnQg
PSBsb2NrQ291bnQ7CiAKICAgICBkaWRBY3F1aXJlTG9jaygpOworICAgIG1sYW1UZXN0KDB4NzEx
KTsKIH0KIAogdm9pZCBKU0xvY2s6OmRpZEFjcXVpcmVMb2NrKCkKQEAgLTEzOCw4ICsxNDIsNyBA
QCB2b2lkIEpTTG9jazo6ZGlkQWNxdWlyZUxvY2soKQogICAgIG1fZW50cnlBdG9tU3RyaW5nVGFi
bGUgPSB0aHJlYWQuc2V0Q3VycmVudEF0b21TdHJpbmdUYWJsZShtX3ZtLT5hdG9tU3RyaW5nVGFi
bGUoKSk7CiAgICAgQVNTRVJUKG1fZW50cnlBdG9tU3RyaW5nVGFibGUpOwogCi0gICAgbV92bS0+
c2V0TGFzdFN0YWNrVG9wKHRocmVhZC5zYXZlZExhc3RTdGFja1RvcCgpKTsKLSAgICBBU1NFUlQo
dGhyZWFkLnN0YWNrKCkuY29udGFpbnMobV92bS0+bGFzdFN0YWNrVG9wKCkpKTsKKyAgICBtX3Zt
LT5zZXRMYXN0U3RhY2tUb3AodGhyZWFkKTsKIAogICAgIGlmIChtX3ZtLT5oZWFwLmhhc0FjY2Vz
cygpKQogICAgICAgICBtX3Nob3VsZFJlbGVhc2VIZWFwQWNjZXNzID0gZmFsc2U7CkBAIC0xODQs
NiArMTg3LDcgQEAgdm9pZCBKU0xvY2s6OnVubG9jayhpbnRwdHJfdCB1bmxvY2tDb3VudAogICAg
IFJFTEVBU0VfQVNTRVJUKGN1cnJlbnRUaHJlYWRJc0hvbGRpbmdMb2NrKCkpOwogICAgIEFTU0VS
VChtX2xvY2tDb3VudCA+PSB1bmxvY2tDb3VudCk7CiAKKyAgICBtbGFtVGVzdCgweDgxMSk7CiAg
ICAgLy8gTWFpbnRhaW4gbV9sb2NrQ291bnQgd2hpbGUgY2FsbGluZyB3aWxsUmVsZWFzZUxvY2so
KSBzbyB0aGF0IGl0cyBjYWxsZWVzIGtub3cgdGhhdAogICAgIC8vIHRoZXkgc3RpbGwgaGF2ZSB0
aGUgbG9jay4KICAgICBpZiAodW5sb2NrQ291bnQgPT0gbV9sb2NrQ291bnQpCkBAIC0xOTUsNiAr
MTk5LDcgQEAgdm9pZCBKU0xvY2s6OnVubG9jayhpbnRwdHJfdCB1bmxvY2tDb3VudAogICAgICAg
ICBtX2hhc093bmVyVGhyZWFkID0gZmFsc2U7CiAgICAgICAgIG1fbG9jay51bmxvY2soKTsKICAg
ICB9CisgICAgbWxhbVRlc3QoMHg5MTEpOwogfQogCiB2b2lkIEpTTG9jazo6d2lsbFJlbGVhc2VM
b2NrKCkKQEAgLTI3Nyw3ICsyODIsNyBAQCB2b2lkIEpTTG9jazo6Z3JhYkFsbExvY2tzKERyb3BB
bGxMb2NrcyogCiAKICAgICBUaHJlYWQmIHRocmVhZCA9IFRocmVhZDo6Y3VycmVudCgpOwogICAg
IG1fdm0tPnNldFN0YWNrUG9pbnRlckF0Vk1FbnRyeSh0aHJlYWQuc2F2ZWRTdGFja1BvaW50ZXJB
dFZNRW50cnkoKSk7Ci0gICAgbV92bS0+c2V0TGFzdFN0YWNrVG9wKHRocmVhZC5zYXZlZExhc3RT
dGFja1RvcCgpKTsKKyAgICBtX3ZtLT5zZXRMYXN0U3RhY2tUb3AodGhyZWFkKTsKIH0KIAogSlNM
b2NrOjpEcm9wQWxsTG9ja3M6OkRyb3BBbGxMb2NrcyhWTSogdm0pCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uY3BwCShyZXZpc2lvbiAyODg2NDUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMzUsNiArMTM1LDgg
QEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK05FVkVSX0lOTElORSB2b2lkIG1sYW1UZXN0KGludCBj
b2RlKTsKKwogQXRvbWljPHVuc2lnbmVkPiBWTTo6c19udW1iZXJPZklEczsKIAogREVGSU5FX0FM
TE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihWTSk7CkBAIC0yNDIsOSArMjQ0LDggQEAgVk06
OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlLAogICAgICAgICBDUkFTSF9XSVRI
X0lORk8oMHg0MjQyNDI0MjIwMjAyMDIwLCAweGJhZGJlZWYwYmFkYmVlZiwgMHgxMjM0MTIzNDEy
MzQxMjM0LCAweDEzMzcxMzM3MTMzNzEzMzcpOwogCiAgICAgaW50ZXJwcmV0ZXIgPSBuZXcgSW50
ZXJwcmV0ZXIoKnRoaXMpOwotICAgIFN0YWNrQm91bmRzIHN0YWNrID0gVGhyZWFkOjpjdXJyZW50
KCkuc3RhY2soKTsKICAgICB1cGRhdGVTb2Z0UmVzZXJ2ZWRab25lU2l6ZShPcHRpb25zOjpzb2Z0
UmVzZXJ2ZWRab25lU2l6ZSgpKTsKLSAgICBzZXRMYXN0U3RhY2tUb3Aoc3RhY2sub3JpZ2luKCkp
OworICAgIHNldExhc3RTdGFja1RvcChUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICBKU1J1bkxv
b3BUaW1lcjo6TWFuYWdlcjo6c2hhcmVkKCkucmVnaXN0ZXJWTSgqdGhpcyk7CiAKQEAgLTUwMyw5
ICs1MDQsMTUgQEAgdm9pZCBWTTo6cHJpbWl0aXZlR2lnYWNhZ2VEaXNhYmxlZCgpCiAgICAgbV9u
ZWVkVG9GaXJlUHJpbWl0aXZlR2lnYWNhZ2VFbmFibGVkID0gdHJ1ZTsKIH0KIAotdm9pZCBWTTo6
c2V0TGFzdFN0YWNrVG9wKHZvaWQqIGxhc3RTdGFja1RvcCkKLXsgCi0gICAgbV9sYXN0U3RhY2tU
b3AgPSBsYXN0U3RhY2tUb3A7Cit2b2lkIFZNOjpzZXRMYXN0U3RhY2tUb3AoY29uc3QgVGhyZWFk
JiB0aHJlYWQpCit7CisgICAgbV9sYXN0U3RhY2tUb3AgPSB0aHJlYWQuc2F2ZWRMYXN0U3RhY2tU
b3AoKTsKKyAgICBhdXRvJiBzdGFjayA9IHRocmVhZC5zdGFjaygpOworICAgIFJFTEVBU0VfQVNT
RVJUKHN0YWNrLmNvbnRhaW5zKG1fbGFzdFN0YWNrVG9wKSwgMHg1NTEwLCBtX2xhc3RTdGFja1Rv
cCwgc3RhY2sub3JpZ2luKCksIHN0YWNrLmVuZCgpKTsKKyNpZiBPUyhEQVJXSU4pICYmIENQVShB
Uk02NCkKKyAgICBSRUxFQVNFX0FTU0VSVCh0aHJlYWQuaWQoKSA9PSBUaHJlYWQ6OmN1cnJlbnRJ
RCgpLCAweDU1MjAsIHRocmVhZC5pZCgpLCBUaHJlYWQ6OmN1cnJlbnRJRCgpKTsKKyNlbmRpZgor
ICAgIG1sYW1UZXN0KDB4MTYxMSk7CiB9CiAKIFJlZjxWTT4gVk06OmNyZWF0ZUNvbnRleHRHcm91
cChIZWFwVHlwZSBoZWFwVHlwZSkKQEAgLTEwNTAsMTYgKzEwNTcsMTEgQEAgdm9pZCBWTTo6cG9w
QWxsQ2hlY2twb2ludE9TUlNpZGVTdGF0ZVVudAogICAgIG1fY2hlY2twb2ludFNpZGVTdGF0ZS5z
aHJpbmtUb0ZpdCgpOwogfQogCi12b2lkIGxvZ1Nhbml0aXplU3RhY2soVk0mIHZtKQorc3RhdGlj
IHZvaWQgbG9nU2FuaXRpemVTdGFjayhWTSYgdm0pCiB7Ci0gICAgaWYgKE9wdGlvbnM6OnZlcmJv
c2VTYW5pdGl6ZVN0YWNrKCkgJiYgdm0udG9wQ2FsbEZyYW1lKSB7Ci0gICAgICAgIGludCBkdW1t
eTsKKyAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6dmVyYm9zZVNhbml0aXplU3RhY2soKSkpIHsK
ICAgICAgICAgYXV0byYgc3RhY2tCb3VuZHMgPSBUaHJlYWQ6OmN1cnJlbnQoKS5zdGFjaygpOwot
ICAgICAgICBkYXRhTG9nKAotICAgICAgICAgICAgIlNhbml0aXppbmcgc3RhY2sgZm9yIFZNID0g
IiwgUmF3UG9pbnRlcigmdm0pLCAiIHdpdGggdG9wIGNhbGwgZnJhbWUgYXQgIiwgUmF3UG9pbnRl
cih2bS50b3BDYWxsRnJhbWUpLAotICAgICAgICAgICAgIiwgY3VycmVudCBzdGFjayBwb2ludGVy
IGF0ICIsIFJhd1BvaW50ZXIoJmR1bW15KSwgIiwgaW4gIiwKLSAgICAgICAgICAgIHBvaW50ZXJE
dW1wKHZtLnRvcENhbGxGcmFtZS0+Y29kZUJsb2NrKCkpLCAiLCBsYXN0IGNvZGUgb3JpZ2luID0g
IiwKLSAgICAgICAgICAgIHZtLnRvcENhbGxGcmFtZS0+Y29kZU9yaWdpbigpLCAiLCBsYXN0IHN0
YWNrIHRvcCA9ICIsIFJhd1BvaW50ZXIodm0ubGFzdFN0YWNrVG9wKCkpLCAiLCBpbiBzdGFjayBy
YW5nZSBbIiwgUmF3UG9pbnRlcihzdGFja0JvdW5kcy5vcmlnaW4oKSksICIsICIsIFJhd1BvaW50
ZXIoc3RhY2tCb3VuZHMuZW5kKCkpLCAiXVxuIik7CisgICAgICAgIGRhdGFMb2dMbigiU2FuaXRp
emluZyBzdGFjayBmb3IgVk0gPSAiLCBSYXdQb2ludGVyKCZ2bSksICIsIGN1cnJlbnQgc3RhY2sg
cG9pbnRlciBhdCAiLCBSYXdQb2ludGVyKGN1cnJlbnRTdGFja1BvaW50ZXIoKSksICIsIGxhc3Qg
c3RhY2sgdG9wID0gIiwgUmF3UG9pbnRlcih2bS5sYXN0U3RhY2tUb3AoKSksICIsIGluIHN0YWNr
IHJhbmdlICgiLCBSYXdQb2ludGVyKHN0YWNrQm91bmRzLmVuZCgpKSwgIiwgIiwgUmF3UG9pbnRl
cihzdGFja0JvdW5kcy5vcmlnaW4oKSksICJdIik7CiAgICAgfQogfQogCkBAIC0xMjcwLDE3ICsx
MjcyLDI1IEBAIHZvaWQgUXVldWVkVGFzazo6cnVuKCkKIAogdm9pZCBzYW5pdGl6ZVN0YWNrRm9y
Vk0oVk0mIHZtKQogeworICAgIGF1dG8mIHRocmVhZCA9IFRocmVhZDo6Y3VycmVudCgpOworI2lm
IE9TKERBUldJTikgJiYgQ1BVKEFSTTY0KQorICAgIFJFTEVBU0VfQVNTRVJUKHRocmVhZC5pZCgp
ID09IFRocmVhZDo6Y3VycmVudElEKCksIDB4YWExMCwgdGhyZWFkLmlkKCksIFRocmVhZDo6Y3Vy
cmVudElEKCkpOworI2VuZGlmCisgICAgYXV0byYgc3RhY2sgPSB0aHJlYWQuc3RhY2soKTsKKyAg
ICBpZiAoIXZtLmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpCisgICAgICAgIHJldHVy
bjsgLy8gdm0ubGFzdFN0YWNrVG9wKCkgbWF5IG5vdCBiZSBzZXQgdXAgY29ycmVjdGx5IGlmIEpT
TG9jayBpcyBub3QgaGVsZC4KKwogICAgIGxvZ1Nhbml0aXplU3RhY2sodm0pOwotICAgIGlmICh2
bS50b3BDYWxsRnJhbWUpIHsKLSAgICAgICAgYXV0byYgc3RhY2tCb3VuZHMgPSBUaHJlYWQ6OmN1
cnJlbnQoKS5zdGFjaygpOwotICAgICAgICBBU1NFUlQodm0uY3VycmVudFRocmVhZElzSG9sZGlu
Z0FQSUxvY2soKSk7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQoc3RhY2tCb3VuZHMsIHN0YWNrQm91
bmRzLmNvbnRhaW5zKHZtLmxhc3RTdGFja1RvcCgpKSk7Ci0gICAgfQorCisgICAgUkVMRUFTRV9B
U1NFUlQoc3RhY2suY29udGFpbnModm0ubGFzdFN0YWNrVG9wKCkpLCAweGFhMjAsIHZtLmxhc3RT
dGFja1RvcCgpLCBzdGFjay5vcmlnaW4oKSwgc3RhY2suZW5kKCkpOwogI2lmIEVOQUJMRShDX0xP
T1ApCiAgICAgdm0uaW50ZXJwcmV0ZXItPmNsb29wU3RhY2soKS5zYW5pdGl6ZVN0YWNrKCk7CiAj
ZWxzZQogICAgIHNhbml0aXplU3RhY2tGb3JWTUltcGwoJnZtKTsKICNlbmRpZgorICAgIFJFTEVB
U0VfQVNTRVJUKHN0YWNrLmNvbnRhaW5zKHZtLmxhc3RTdGFja1RvcCgpKSwgMHhhYTMwLCB2bS5s
YXN0U3RhY2tUb3AoKSwgc3RhY2sub3JpZ2luKCksIHN0YWNrLmVuZCgpKTsKKworICAgIG1sYW1U
ZXN0KDB4MTUxMSk7CiB9CiAKIHNpemVfdCBWTTo6Y29tbWl0dGVkU3RhY2tCeXRlQ291bnQoKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCShyZXZpc2lvbiAyODg2NDUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOC0yMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDIyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNzg1
LDcgKzc4NSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQqKiBhZGRyZXNzT2ZMYXN0U3RhY2tUb3Ao
KSB7IHJldHVybiAmbV9sYXN0U3RhY2tUb3A7IH0KICAgICB2b2lkKiBsYXN0U3RhY2tUb3AoKSB7
IHJldHVybiBtX2xhc3RTdGFja1RvcDsgfQotICAgIHZvaWQgc2V0TGFzdFN0YWNrVG9wKHZvaWQq
KTsKKyAgICB2b2lkIHNldExhc3RTdGFja1RvcChjb25zdCBUaHJlYWQmKTsKICAgICAKICAgICB2
b2lkIGZpcmVQcmltaXRpdmVHaWdhY2FnZUVuYWJsZWRJZk5lY2Vzc2FyeSgpCiAgICAgewpAQCAt
MTE3Myw2ICsxMTczLDUgQEAgZXh0ZXJuICJDIiB2b2lkIHNhbml0aXplU3RhY2tGb3JWTUltcGwo
VgogI2VuZGlmCiAKIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc2FuaXRpemVTdGFja0ZvclZNKFZN
Jik7Ci12b2lkIGxvZ1Nhbml0aXplU3RhY2soVk0mKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCklu
ZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5n
ZUxvZwkocmV2aXNpb24gMjg4NjQ1KQorKysgU291cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwyNCBAQAorMjAyMi0wMS0yNyAgTWFyayBMYW0gIDxtYXJrLmxhbUBh
cHBsZS5jb20+CisKKyAgICAgICAgRW5oYW5jZSBzYW5pdGl6ZVN0YWNrRm9yVk0oKSB0byBhc3Np
c3Qgd2l0aCBjcmFzaCBhbmFseXNpcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzNTc1MgorICAgICAgICByZGFyOi8vODEwMTQ2MDEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3Ig
VGhyZWFkSWRlbnRpZmllciBhbmQgVGhyZWFkOjpjdXJyZW50SUQoKSBvbiBPUyhEQVJXSU4pLiAg
VGhpcyBjYW4KKyAgICAgICAgYmUgdXNlZCB0byBkZXRlY3QgVExTIGNvcnJ1cHRpb24gLyBidWdz
LgorCisgICAgICAgICogd3RmL1RocmVhZGluZy5jcHA6CisgICAgICAgIChXVEY6OlRocmVhZDo6
aW5pdGlhbGl6ZUluVGhyZWFkKToKKyAgICAgICAgKiB3dGYvVGhyZWFkaW5nLmg6CisgICAgICAg
IChXVEY6OlRocmVhZDo6c2F2ZWRTdGFja1BvaW50ZXJBdFZNRW50cnkgY29uc3QpOgorICAgICAg
ICAoV1RGOjpUaHJlYWQ6OnNhdmVkTGFzdFN0YWNrVG9wIGNvbnN0KToKKyAgICAgICAgKFdURjo6
VGhyZWFkOjpjdXJyZW50SUQpOgorICAgICAgICAoV1RGOjpUaHJlYWQ6OnNhdmVkU3RhY2tQb2lu
dGVyQXRWTUVudHJ5KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6VGhyZWFkOjpzYXZlZExhc3RT
dGFja1RvcCk6IERlbGV0ZWQuCisgICAgICAgICogd3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaDoK
KwogMjAyMi0wMS0yNSAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbbWFjT1NdIEFkZCBuZXcgc2NyZWVuIGFuZCB3aW5kb3cgY2FwdHVyZSBiYWNrZW5k
CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XVEYvd3RmL1RocmVhZGluZy5jcHAJKHJldmlzaW9uIDI4ODY0NSkKKysrIFNvdXJjZS9XVEYv
d3RmL1RocmVhZGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1OSw4ICsxNTksMzkgQEAgdm9p
ZCBUaHJlYWQ6OmluaXRpYWxpemVJblRocmVhZCgpCiAgICAgfQogI2VuZGlmCiAKLSNpZiBPUyhM
SU5VWCkKLSAgICBtX2lkID0gY3VycmVudElEKCk7CisjaWYgVVNFKFBUSFJFQURTKQorLy8gICAg
bV9pZCA9IGN1cnJlbnRJRCgpOworICAgIFRocmVhZElkZW50aWZpZXIgaWQgPSBjdXJyZW50SUQo
KTsKKy8vICAgIFJFTEVBU0VfQVNTRVJUKChpZCAmIDB4NykgPT0gMCwgMHgzMjMsIGlkKTsKKyNp
ZiBPUyhEQVJXSU4pICYmIENQVShBUk02NCkKKyAgICBpZiAoaWQgJiAweDcpIHsKKyAgICAgICAg
V1RGOjpUaHJlYWRJZGVudGlmaWVyIGFbMTAwMF07CisgICAgICAgIGludCBudW1GYWlsdXJlcyA9
IDA7CisgICAgICAgIGludCBmaXJzdEZhaWx1cmUgPSAwOworICAgICAgICBpbnQgbGFzdEZhaWx1
cmUgPSAwOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDEwMDA7ICsraSkgeworICAgICAg
ICAgICAgV1RGOjpUaHJlYWRJZGVudGlmaWVyIGlkMiA9IDA7CisgICAgICAgICAgICBhc20gKAor
ICAgICAgICAgICAgICAgICJtcnMgJXhbaWQyXSwgVFBJRFJST19FTDAiCisgICAgICAgICAgICAg
ICAgOiBbaWQyXSAiPXIiIChpZDIpIDogOgorICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIGFb
aV0gPSBpZDI7CisgICAgICAgICAgICBpZiAoaWQyICE9IGlkKSB7CisgICAgICAgICAgICAgICAg
aWYgKG51bUZhaWx1cmVzID09IDApCisgICAgICAgICAgICAgICAgICAgIGZpcnN0RmFpbHVyZSA9
IGk7CisgICAgICAgICAgICAgICAgbnVtRmFpbHVyZXMrKzsKKyAgICAgICAgICAgICAgICBsYXN0
RmFpbHVyZSA9IGk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgUkVMRUFTRV9B
U1NFUlQoKGlkICYgMHg3KSA9PSAwLCAweDMyMywgaWQsIG51bUZhaWx1cmVzLCBmaXJzdEZhaWx1
cmUsIGFbZmlyc3RGYWlsdXJlXSwgbGFzdEZhaWx1cmUsIGFbbGFzdEZhaWx1cmVdKTsKKyAgICB9
CisjZW5kaWYgLy8gT1MoREFSV0lOKSAmJiBDUFUoQVJNNjQpCisgICAgbV9pZCA9IGlkOworICAg
IFJFTEVBU0VfQVNTRVJUKGlkID09IFRocmVhZDo6Y3VycmVudElEKCksIDB4NDIzLCBpZCwgVGhy
ZWFkOjpjdXJyZW50SUQoKSk7IC8vIG1sYW0gVEVTVAorICAgIFJFTEVBU0VfQVNTRVJUKG1faWQg
PT0gY3VycmVudElEKCksIDB4MTIzLCBtX2lkLCBjdXJyZW50SUQoKSk7IC8vIG1sYW0gVEVTVAor
ICAgIFJFTEVBU0VfQVNTRVJUKG1faWQgPT0gVGhyZWFkOjpjdXJyZW50SUQoKSwgMHgyMjMsIG1f
aWQsIFRocmVhZDo6Y3VycmVudElEKCkpOyAvLyBtbGFtIFRFU1QKKyNlbHNlCisgICAgUkVMRUFT
RV9BU1NFUlQobV9pZCA9PSBjdXJyZW50SUQoKSk7CiAjZW5kaWYKIH0KIApAQCAtMTc5LDYgKzIx
MCw3IEBAIHZvaWQgVGhyZWFkOjplbnRyeVBvaW50KE5ld1RocmVhZENvbnRleHQKICAgICAgICAg
Y29udGV4dC0+dGhyZWFkLT5pbml0aWFsaXplSW5UaHJlYWQoKTsKIAogICAgICAgICBUaHJlYWQ6
OmluaXRpYWxpemVUTFMoV1RGTW92ZShjb250ZXh0LT50aHJlYWQpKTsKKyAgICAgICAgUkVMRUFT
RV9BU1NFUlQoY29udGV4dC0+dGhyZWFkLT5pZCgpID09IFRocmVhZDo6Y3VycmVudElEKCksIDB4
MjExLCBjb250ZXh0LT50aHJlYWQtPmlkKCksIFRocmVhZDo6Y3VycmVudElEKCkpOyAvLyBtbGFt
IFRFU1QKIAogI2lmICFIQVZFKFNUQUNLX0JPVU5EU19GT1JfTkVXX1RIUkVBRCkKICAgICAgICAg
Ly8gQWNrIGNvbXBsZXRpb24gb2YgaW5pdGlhbGl6YXRpb24gdG8gdGhlIGNyZWF0aW5nIHRocmVh
ZC4KSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XVEYvd3RmL1RocmVhZGluZy5oCShyZXZpc2lvbiAyODg2NDUpCisrKyBTb3VyY2UvV1RGL3d0
Zi9UaHJlYWRpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDctMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDctMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMDcgSnVzdGluIEhheWdvb2QgPGpoYXlnb29kQHJlYWt0aXguY29t
PgogICogQ29weXJpZ2h0IChDKSAyMDE3IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KICAqCkBAIC0xMzAsMTUgKzEzMCwxOCBAQCBwdWJsaWM6CiAKICAgICB1aW50MzJfdCB1
aWQoKSBjb25zdCB7IHJldHVybiBtX3VpZDsgfQogCi0jaWYgT1MoV0lORE9XUykKICAgICAvLyBS
ZXR1cm5zIFRocmVhZElkZW50aWZpZXIgZGlyZWN0bHkuIEl0IGlzIHVzZWZ1bCBpZiB0aGUgdXNl
ciBvbmx5IGNhcmVzIGFib3V0IGlkZW50aXR5CiAgICAgLy8gb2YgdGhyZWFkcy4gQXQgdGhhdCB0
aW1lLCB1c2VycyBzaG91bGQga25vdyB0aGF0IGhvbGRpbmcgdGhpcyBUaHJlYWRJZGVudGlmaWVy
IGRvZXMgbm90IGVuc3VyZQogICAgIC8vIHRoYXQgdGhlIHRocmVhZCBpbmZvcm1hdGlvbiBpcyBh
bGl2ZS4gV2hpbGUgVGhyZWFkOjpjdXJyZW50KCkgaXMgbm90IHNhZmUgaWYgaXQgaXMgY2FsbGVk
CiAgICAgLy8gZnJvbSB0aGUgZGVzdHJ1Y3RvciBvZiB0aGUgb3RoZXIgVExTIGRhdGEsIGN1cnJl
bnRJRCgpIGFsd2F5cyByZXR1cm5zIG1lYW5pbmdmdWwgdGhyZWFkIElELgorI2lmIE9TKERBUldJ
TikKKyAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBUaHJlYWRJZGVudGlmaWVyIGN1cnJlbnRJRCgp
OworI2Vsc2UKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFRocmVhZElkZW50aWZpZXIg
Y3VycmVudElEKCk7Ci0KKyNlbmRpZgogICAgIFRocmVhZElkZW50aWZpZXIgaWQoKSBjb25zdCB7
IHJldHVybiBtX2lkOyB9CiAKKyNpZiBPUyhXSU5ET1dTKQogICAgIGNsYXNzIFNwZWNpZmljU3Rv
cmFnZSB7CiAgICAgcHVibGljOgogICAgICAgICB1c2luZyBEZXN0cm95RnVuY3Rpb24gPSB2b2lk
ICgqKSh2b2lkKik7CkBAIC0xNzYsMTAgKzE3OSw2IEBAIHB1YmxpYzoKICAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgc2l6ZV90IGdldFJlZ2lzdGVycyhQbGF0Zm9ybVJlZ2lzdGVycyYpOwogCiAjaWYg
VVNFKFBUSFJFQURTKQotI2lmIE9TKExJTlVYKQotICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0
aWMgVGhyZWFkSWRlbnRpZmllciBjdXJyZW50SUQoKTsKLSAgICBUaHJlYWRJZGVudGlmaWVyIGlk
KCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQotI2VuZGlmCiAgICAgV1RGX0VYUE9SVF9QUklWQVRF
IGJvb2wgc2lnbmFsKGludCBzaWduYWxOdW1iZXIpOwogI2VuZGlmCiAKQEAgLTIzMSw3ICsyMzAs
NyBAQCBwdWJsaWM6CiAgICAgfQogI2VuZGlmCiAKLSAgICB2b2lkKiBzYXZlZFN0YWNrUG9pbnRl
ckF0Vk1FbnRyeSgpCisgICAgdm9pZCogc2F2ZWRTdGFja1BvaW50ZXJBdFZNRW50cnkoKSBjb25z
dAogICAgIHsKICAgICAgICAgcmV0dXJuIG1fc2F2ZWRTdGFja1BvaW50ZXJBdFZNRW50cnk7CiAg
ICAgfQpAQCAtMjQxLDcgKzI0MCw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9zYXZlZFN0YWNrUG9p
bnRlckF0Vk1FbnRyeSA9IHN0YWNrUG9pbnRlckF0Vk1FbnRyeTsKICAgICB9CiAKLSAgICB2b2lk
KiBzYXZlZExhc3RTdGFja1RvcCgpCisgICAgdm9pZCogc2F2ZWRMYXN0U3RhY2tUb3AoKSBjb25z
dAogICAgIHsKICAgICAgICAgcmV0dXJuIG1fc2F2ZWRMYXN0U3RhY2tUb3A7CiAgICAgfQpAQCAt
MzUzLDE0ICszNTIsMTAgQEAgcHJvdGVjdGVkOgogICAgIEhhc2hNYXA8VGhyZWFkR3JvdXAqLCBz
dGQ6OndlYWtfcHRyPFRocmVhZEdyb3VwPj4gbV90aHJlYWRHcm91cE1hcDsKICAgICBQbGF0Zm9y
bVRocmVhZEhhbmRsZSBtX2hhbmRsZTsKICAgICB1aW50MzJfdCBtX3VpZDsKLSNpZiBPUyhXSU5E
T1dTKQogICAgIFRocmVhZElkZW50aWZpZXIgbV9pZCB7IDAgfTsKLSNlbGlmIE9TKERBUldJTikK
KyNpZiBPUyhEQVJXSU4pCiAgICAgbWFjaF9wb3J0X3QgbV9wbGF0Zm9ybVRocmVhZCB7IE1BQ0hf
UE9SVF9OVUxMIH07CiAjZWxpZiBVU0UoUFRIUkVBRFMpCi0jaWYgT1MoTElOVVgpCi0gICAgVGhy
ZWFkSWRlbnRpZmllciBtX2lkIHsgMCB9OwotI2VuZGlmCiAgICAgUGxhdGZvcm1SZWdpc3RlcnMq
IG1fcGxhdGZvcm1SZWdpc3RlcnMgeyBudWxscHRyIH07CiAgICAgdW5zaWduZWQgbV9zdXNwZW5k
Q291bnQgeyAwIH07CiAjZW5kaWYKQEAgLTQyMCw2ICs0MTUsMjMgQEAgaW5saW5lIFRocmVhZCYg
VGhyZWFkOjpjdXJyZW50KCkKICAgICByZXR1cm4gaW5pdGlhbGl6ZUN1cnJlbnRUTFMoKTsKIH0K
IAorI2lmIE9TKERBUldJTikKK0FMV0FZU19JTkxJTkUgVGhyZWFkSWRlbnRpZmllciBUaHJlYWQ6
OmN1cnJlbnRJRCgpCit7CisgICAgVGhyZWFkSWRlbnRpZmllciByZXN1bHQ7CisjaWYgQ1BVKEFS
TTY0KQorICAgIGFzbSAoCisgICAgICAgICJtcnMgJXhbcmVzdWx0XSwgVFBJRFJST19FTDAiCisg
ICAgICAgIDogW3Jlc3VsdF0gIj1yIiAocmVzdWx0KSA6IDoKKyAgICApOworI2Vsc2UKKyAgICBy
ZXN1bHQgPSBiaXR3aXNlX2Nhc3Q8VGhyZWFkSWRlbnRpZmllcj4ocHRocmVhZF9zZWxmKCkpOwor
I2VuZGlmCisgICAgQVNTRVJUKHJlc3VsdCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKyNlbmRp
ZgorCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogdXNpbmcgV1RGOjpUaHJlYWQ7CkluZGV4OiBTb3Vy
Y2UvV1RGL3d0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dU
Ri93dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oCShyZXZpc2lvbiAyODg2NDUpCisrKyBTb3VyY2Uv
V1RGL3d0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTU3LDcgKzU3
LDkgQEAgdXNpbmcgUGxhdGZvcm1UaHJlYWRIYW5kbGUgPSBwdGhyZWFkX3Q7CiB1c2luZyBQbGF0
Zm9ybU11dGV4ID0gcHRocmVhZF9tdXRleF90OwogdXNpbmcgUGxhdGZvcm1Db25kaXRpb24gPSBw
dGhyZWFkX2NvbmRfdDsKIHVzaW5nIFRocmVhZFNwZWNpZmljS2V5ID0gcHRocmVhZF9rZXlfdDsK
LSNpZiBPUyhMSU5VWCkKKyNpZiBPUyhEQVJXSU4pCit1c2luZyBUaHJlYWRJZGVudGlmaWVyID0g
dWludHB0cl90OworI2VsaWYgT1MoTElOVVgpCiB1c2luZyBUaHJlYWRJZGVudGlmaWVyID0gcGlk
X3Q7CiAjZW5kaWYKICNlbGlmIE9TKFdJTkRPV1MpCg==
</data>
<flag name="commit-queue"
          id="476786"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450384</attachid>
            <date>2022-01-30 23:44:40 -0800</date>
            <delta_ts>2022-01-30 23:48:52 -0800</delta_ts>
            <desc>test4</desc>
            <filename>test-threadID.patch</filename>
            <type>text/plain</type>
            <size>26129</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjg4NzIxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3IEBA
CisyMDIyLTAxLTI3ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBF
bmhhbmNlIHNhbml0aXplU3RhY2tGb3JWTSgpIHRvIGFzc2lzdCB3aXRoIGNyYXNoIGFuYWx5c2lz
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1NzUy
CisgICAgICAgIHJkYXI6Ly84MTAxNDYwMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIDEuIFJlbW92ZSB0aGUgQXNzZW1ibHlIZWxwZXJzIHZlcnNpb24g
b2Ygc2FuaXRpemVTdGFjay4gIEluc3RlYWQsIG1ha2UgdGhlIDMKKyAgICAgICAgICAgSklUIG9w
ZXJhdGlvbiBmdW5jdGlvbnMgY2FsbCBzYW5pdGl6ZVN0YWNrRm9yVk0oKSBpbnN0ZWFkLiAgVGhp
cyBlbnN1cmVzCisgICAgICAgICAgIHRoYXQgc2FuaXRpemVTdGFjayBjcmFzaGVzIGFyZSBub3Qg
b2JzY3VyZWQgYXMgZ2VuZXJpYyBKSVQgY3Jhc2hlcy4KKworICAgICAgICAyLiBBZGQgc2FuaXR5
IGNoZWNrIFJFTEVBU0VfQVNTRVJUcyB0byBWTTo6c2V0TGFzdFN0YWNrVG9wKCkgd2l0aCBhIGNh
cHR1cmUgb2YKKyAgICAgICAgICAgdGhlIHJlbGV2YW50IHZhcmlhYmxlcyBmb3IgY3Jhc2ggYW5h
bHlzaXMuCisKKyAgICAgICAgMy4gRml4IGxvZ1Nhbml0aXplU3RhY2soKSBzbyB0aGF0IGl0IG5v
IGxvbmdlciByZWxpZXMgb24gdm0udG9wQ2FsbEZyYW1lLgorICAgICAgICAgICB2bS50b3BDYWxs
RnJhbWUgbWF5IG5vdCBiZSBwcm9wZXJseSBpbml0aWFsaXplZCBhdCBhbGwgdGhlIHBsYWNlcyB0
aGF0CisgICAgICAgICAgIHNhbml0aXplU3RhY2tGb3JWTSgpIGlzIGNhbGxlZC4KKworICAgICAg
ICA0LiBBZGQgYSBKU0xvY2sgY2hlY2sgdG8gc2FuaXRpemVTdGFja0ZvclZNKCksIGFuZCByZXR1
cm4gZWFybHkgaWYgbm90IG93bmVkIGJ5CisgICAgICAgICAgIHRoZSBjdXJyZW50IHRocmVhZC4g
IElmIHRoZSBKU0xvY2sgaXMgbm90IG93bmVkIGJ5IHRoZSBjdXJyZW50IHRocmVhZCwgd2UgY2Fu
J3QKKyAgICAgICAgICAgcmVseSBvbiB2bS5sYXN0U3RhY2tUb3AoKSBiZWluZyBhIHNhbmUgdmFs
dWUuICBIZW5jZSwgaXQncyBub3QgcG9zc2libGUgdG8KKyAgICAgICAgICAgZG8gc3RhY2sgc2Fu
aXRpemF0aW9uIGNvcnJlY3RseS4KKworICAgICAgICAgICBBZGQgc2FuaXR5IGNoZWNrIFJFTEVB
U0VfQVNTRVJUcyB0byBzYW5pdGl6ZVN0YWNrRm9yVk0oKSB3aXRoIGEgY2FwdHVyZSBvZgorICAg
ICAgICAgICB0aGUgcmVsZXZhbnQgdmFyaWFibGVzIGZvciBjcmFzaCBhbmFseXNpcy4KKworICAg
ICAgICAqIGppdC9Bc3NlbWJseUhlbHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhl
bHBlcnM6OnNhbml0aXplU3RhY2tJbmxpbmUpOiBEZWxldGVkLgorICAgICAgICAqIGppdC9Bc3Nl
bWJseUhlbHBlcnMuaDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAg
IChKU0M6OkpTQ19ERUZJTkVfSklUX09QRVJBVElPTik6CisgICAgICAgICogaml0L1RodW5rR2Vu
ZXJhdG9ycy5jcHA6CisgICAgICAgIChKU0M6OnNsb3dQYXRoRm9yKToKKyAgICAgICAgKiBydW50
aW1lL0pTTG9jay5jcHA6CisgICAgICAgIChKU0M6OkpTTG9jazo6ZGlkQWNxdWlyZUxvY2spOgor
ICAgICAgICAoSlNDOjpKU0xvY2s6OmdyYWJBbGxMb2Nrcyk6CisgICAgICAgICogcnVudGltZS9W
TS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAgICAgIChKU0M6OlZNOjpzZXRMYXN0
U3RhY2tUb3ApOgorICAgICAgICAoSlNDOjpsb2dTYW5pdGl6ZVN0YWNrKToKKyAgICAgICAgKEpT
Qzo6c2FuaXRpemVTdGFja0ZvclZNKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisKIDIwMjIt
MDEtMjcgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CiAKICAgICAgICAgY29t
LmFwcGxlLldlYktpdC5XZWJBdXRobi54cGMgZmFpbHMgdG8gYnVpbGQgd2l0aCBzeXN0ZW0gY29u
dGVudCBwYXRoCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJw
cmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9JbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDI4ODY0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgyLDYg
KzgyLDggQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK05FVkVSX0lOTElORSB2b2lkIG1sYW1UZXN0
KGludCBjb2RlKTsKKwogSlNWYWx1ZSBldmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lLCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKICAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CkBAIC03MTAsNiArNzEyLDggQEAgdm9pZCBJbnRlcnByZXRl
cjo6bm90aWZ5RGVidWdnZXJPZkV4Y2VwdAogCiBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRl
UHJvZ3JhbShjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEpTR2xvYmFsT2JqZWN0KiwgSlNPYmpl
Y3QqIHRoaXNPYmopCiB7CisgICAgbWxhbVRlc3QoMHgxMDExKTsKKwogICAgIEpTU2NvcGUqIHNj
b3BlID0gdGhpc09iai0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbFNjb3BlKCk7CiAgICAgVk0mIHZt
ID0gc2NvcGUtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CkBAIC05MDQsNiArOTA4LDggQEAgZmFpbGVkSlNPTlA6CiAKIEpTVmFsdWUgSW50ZXJw
cmV0ZXI6OmV4ZWN1dGVDYWxsKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U09iamVjdCogZnVuY3Rpb24sIGNvbnN0IENhbGxEYXRhJiBjYWxsRGF0YSwgSlNWYWx1ZSB0aGlz
VmFsdWUsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCiB7CisgICAgbWxhbVRlc3QoMHgxMTExKTsKKwog
ICAgIFZNJiB2bSA9IGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKQEAgLTk3NCw2ICs5ODAsOCBAQCBKU1Zh
bHVlIEludGVycHJldGVyOjpleGVjdXRlQ2FsbChKU0dsb2JhCiAKIEpTT2JqZWN0KiBJbnRlcnBy
ZXRlcjo6ZXhlY3V0ZUNvbnN0cnVjdChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNPYmplY3QqIGNvbnN0cnVjdG9yLCBjb25zdCBDYWxsRGF0YSYgY29uc3RydWN0RGF0YSwg
Y29uc3QgQXJnTGlzdCYgYXJncywgSlNWYWx1ZSBuZXdUYXJnZXQpCiB7CisgICAgbWxhbVRlc3Qo
MHgxMjExKTsKKwogICAgIFZNJiB2bSA9IGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKQEAgLTEwNzgsNiAr
MTA4Niw4IEBAIENhbGxGcmFtZUNsb3N1cmUgSW50ZXJwcmV0ZXI6OnByZXBhcmVGb3IKIAogSlNW
YWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShFdmFsRXhlY3V0YWJsZSogZXZhbCwgSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVmFsdWUgdGhpc1ZhbHVlLCBKU1Njb3BlKiBz
Y29wZSkKIHsKKyAgICBtbGFtVGVzdCgweDEzMTEpOworCiAgICAgVk0mIHZtID0gc2NvcGUtPnZt
KCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKQEAg
LTEyNTEsNiArMTI2MSw4IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoRXZhbEV4ZWN1
dGEKIAogSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZU1vZHVsZVByb2dyYW0oSlNNb2R1bGVS
ZWNvcmQqIHJlY29yZCwgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU01vZHVsZUVudmlyb25tZW50KiBzY29w
ZSwgSlNWYWx1ZSBzZW50VmFsdWUsIEpTVmFsdWUgcmVzdW1lTW9kZSkKIHsKKyAgICBtbGFtVGVz
dCgweDE0MTEpOworCiAgICAgVk0mIHZtID0gc2NvcGUtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlcklubGluZXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHJldmlz
aW9uIDI4ODY0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnBy
ZXRlcklubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsOCBAQAogCiBuYW1lc3Bh
Y2UgSlNDIHsKIAorTkVWRVJfSU5MSU5FIHZvaWQgbWxhbVRlc3QoaW50IGNvZGUpOworCiBpbmxp
bmUgT3Bjb2RlIEludGVycHJldGVyOjpnZXRPcGNvZGUoT3Bjb2RlSUQgaWQpCiB7CiAgICAgcmV0
dXJuIExMSW50OjpnZXRPcGNvZGUoaWQpOwpAQCAtNzIsNiArNzQsOCBAQCBpbmxpbmUgT3Bjb2Rl
SUQgSW50ZXJwcmV0ZXI6OmdldE9wY29kZUlECiAKIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBJbnRl
cnByZXRlcjo6ZXhlY3V0ZShDYWxsRnJhbWVDbG9zdXJlJiBjbG9zdXJlKQogeworICAgIG1sYW1U
ZXN0KDB4MTcxMSk7CisKICAgICBWTSYgdm0gPSAqY2xvc3VyZS52bTsKICAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAkocmV2aXNpb24gMjg4NjQ1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMTEyOCwxOSArMTEyOCw2IEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjpjb3B5Q2Fs
bGVlU2F2ZXNUb0UKICNlbmRpZgogfQogCi12b2lkIEFzc2VtYmx5SGVscGVyczo6c2FuaXRpemVT
dGFja0lubGluZShWTSYgdm0sIEdQUlJlZyBzY3JhdGNoKQotewotICAgIGxvYWRQdHIodm0uYWRk
cmVzc09mTGFzdFN0YWNrVG9wKCksIHNjcmF0Y2gpOwotICAgIEp1bXAgZG9uZSA9IGJyYW5jaFB0
cihCZWxvd09yRXF1YWwsIHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBzY3JhdGNoKTsKLSAgICBMYWJl
bCBsb29wID0gbGFiZWwoKTsKLSAgICBzdG9yZVB0cihUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCBB
ZGRyZXNzKHNjcmF0Y2gpKTsKLSAgICBhZGRQdHIoVHJ1c3RlZEltbVB0cihzaXplb2Yodm9pZCop
KSwgc2NyYXRjaCk7Ci0gICAgYnJhbmNoUHRyKEFib3ZlLCBzdGFja1BvaW50ZXJSZWdpc3Rlciwg
c2NyYXRjaCkubGlua1RvKGxvb3AsIHRoaXMpOwotICAgIGRvbmUubGluayh0aGlzKTsKLSAgICBt
b3ZlKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBzY3JhdGNoKTsKLSAgICBzdG9yZVB0cihzY3JhdGNo
LCB2bS5hZGRyZXNzT2ZMYXN0U3RhY2tUb3AoKSk7Ci19Ci0KIHZvaWQgQXNzZW1ibHlIZWxwZXJz
OjpjYWdlV2l0aG91dFVudGFnZ2luZyhHaWdhY2FnZTo6S2luZCBraW5kLCBHUFJSZWcgc3RvcmFn
ZSkKIHsKICNpZiBHSUdBQ0FHRV9FTkFCTEVECkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0Fzc2VtYmx5SGVscGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgJKHJldmlzaW9uIDI4ODY0NSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNzA5
LDggKzE3MDksNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBicmFuY2hUZXN0OChaZXJvLCBB
YnNvbHV0ZUFkZHJlc3Modm0uaGVhcC5hZGRyZXNzT2ZNdXRhdG9yU2hvdWxkQmVGZW5jZWQoKSkp
OwogICAgIH0KICAgICAKLSAgICB2b2lkIHNhbml0aXplU3RhY2tJbmxpbmUoVk0mLCBHUFJSZWcg
c2NyYXRjaCk7Ci0gICAgCiAgICAgLy8gRW1pdHMgdGhlIGJyYW5jaCBzdHJ1Y3R1cmUgZm9yIHR5
cGVvZi4gVGhlIGNvZGUgZW1pdHRlZCBieSB0aGlzIGRvZXNuJ3QgZmFsbCB0aHJvdWdoLiBUaGUK
ICAgICAvLyBmdW5jdG9yIGlzIGNhbGxlZCBhdCB0aG9zZSBwb2ludHMgd2hlcmUgd2UgaGF2ZSBw
aW5wb2ludGVkIGEgdHlwZS4gT25lIHdheSB0byB1c2UgdGhpcyBpcyB0bwogICAgIC8vIGhhdmUg
dGhlIGZ1bmN0b3IgZW1pdCB0aGUgY29kZSB0byBwdXQgdGhlIHR5cGUgc3RyaW5nIGludG8gYW4g
YXBwcm9wcmlhdGUgcmVnaXN0ZXIgYW5kIHRoZW4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMjg4NjQ1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE0
NDgsMTEgKzE0NDgsMTMgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkNhbGxF
dgogCiBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTGlua0NhbGwsIFNsb3dQYXRo
UmV0dXJuVHlwZSwgKENhbGxGcmFtZSogY2FsbGVlRnJhbWUsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvKSkKIHsKKyAgICBzYW5pdGl6ZVN0
YWNrRm9yVk0oZ2xvYmFsT2JqZWN0LT52bSgpKTsKICAgICByZXR1cm4gbGlua0ZvcihjYWxsZWVG
cmFtZSwgZ2xvYmFsT2JqZWN0LCBjYWxsTGlua0luZm8pOwogfQogCiBKU0NfREVGSU5FX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uTGlua1BvbHltb3JwaGljQ2FsbCwgU2xvd1BhdGhSZXR1cm5UeXBl
LCAoQ2FsbEZyYW1lKiBjYWxsZWVGcmFtZSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8pKQogeworICAgIHNhbml0aXplU3RhY2tGb3JWTShn
bG9iYWxPYmplY3QtPnZtKCkpOwogICAgIEFTU0VSVChjYWxsTGlua0luZm8tPnNwZWNpYWxpemF0
aW9uS2luZCgpID09IENvZGVGb3JDYWxsKTsKICAgICBKU0NlbGwqIGNhbGxlZUFzRnVuY3Rpb25D
ZWxsOwogICAgIFNsb3dQYXRoUmV0dXJuVHlwZSByZXN1bHQgPSB2aXJ0dWFsRm9yV2l0aEZ1bmN0
aW9uKGdsb2JhbE9iamVjdCwgY2FsbGVlRnJhbWUsIGNhbGxMaW5rSW5mbywgY2FsbGVlQXNGdW5j
dGlvbkNlbGwpOwpAQCAtMTQ2NCw2ICsxNDY2LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbkxpbmtQbwogCiBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uVmly
dHVhbENhbGwsIFNsb3dQYXRoUmV0dXJuVHlwZSwgKENhbGxGcmFtZSogY2FsbGVlRnJhbWUsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvKSkK
IHsKKyAgICBzYW5pdGl6ZVN0YWNrRm9yVk0oZ2xvYmFsT2JqZWN0LT52bSgpKTsKICAgICBKU0Nl
bGwqIGNhbGxlZUFzRnVuY3Rpb25DZWxsSWdub3JlZDsKICAgICByZXR1cm4gdmlydHVhbEZvcldp
dGhGdW5jdGlvbihnbG9iYWxPYmplY3QsIGNhbGxlZUZyYW1lLCBjYWxsTGlua0luZm8sIGNhbGxl
ZUFzRnVuY3Rpb25DZWxsSWdub3JlZCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1RodW5rR2VuZXJhdG9ycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCShyZXZpc2lvbiAyODg2NDUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0xOTIsNyArMTkyLDYgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiB0
aAogCiBzdGF0aWMgdm9pZCBzbG93UGF0aEZvcihDQ2FsbEhlbHBlcnMmIGppdCwgVk0mIHZtLCBT
cHJ0X0pJVE9wZXJhdGlvbl9FR0NsaSBzbG93UGF0aEZ1bmN0aW9uKQogewotICAgIGppdC5zYW5p
dGl6ZVN0YWNrSW5saW5lKHZtLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKICAgICBqaXQuZW1pdEZ1
bmN0aW9uUHJvbG9ndWUoKTsKICAgICBqaXQuc3RvcmVQdHIoR1BSSW5mbzo6Y2FsbEZyYW1lUmVn
aXN0ZXIsICZ2bS50b3BDYWxsRnJhbWUpOwogI2lmIE9TKFdJTkRPV1MpICYmIENQVShYODZfNjQp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5n
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFs
aXplVGhyZWFkaW5nLmNwcAkocmV2aXNpb24gMjg4NjQ1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUw
LDYgKzUwLDM1IEBAIG5hbWVzcGFjZSBKU0MgewogCiBzdGF0aWNfYXNzZXJ0KHNpemVvZihib29s
KSA9PSAxLCAiTExJbnQgYW5kIEpJVCBhc3N1bWUgc2l6ZW9mKGJvb2wpIGlzIGFsd2F5cyAxIHdo
ZW4gdG91Y2hpbmcgaXQgZGlyZWN0bHkgZnJvbSBhc3NlbWJseSBjb2RlLiIpOwogCitORVZFUl9J
TkxJTkUgdm9pZCBtbGFtVGVzdChpbnQgY29kZSk7CisKK05FVkVSX0lOTElORSB2b2lkIG1sYW1U
ZXN0KGludCBjb2RlKSB7CisjaWYgT1MoREFSV0lOKSAmJiBDUFUoQVJNNjQpCisgICAgV1RGOjpU
aHJlYWRJZGVudGlmaWVyIGFbMTAwMF07CisgICAgV1RGOjpUaHJlYWRJZGVudGlmaWVyIGJbMTAw
MF07CisgICAgaW50IG51bUZhaWx1cmVzID0gMDsKKyAgICBpbnQgZmlyc3RGYWlsdXJlID0gMDsK
KyAgICBpbnQgbGFzdEZhaWx1cmUgPSAwOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMTAwMDsg
KytpKSB7CisgICAgICAgIGF1dG8mIHRocmVhZCA9IFRocmVhZDo6Y3VycmVudCgpOworLy8gICAg
ICAgIFJFTEVBU0VfQVNTRVJUKHRocmVhZC5pZCgpID09IFRocmVhZDo6Y3VycmVudElEKCksIGNv
ZGUsIHRocmVhZC5pZCgpLCBUaHJlYWQ6OmN1cnJlbnRJRCgpLCBpKTsgLy8gbWxhbSBURVNUCisg
ICAgICAgIGF1dG8gaWRBID0gdGhyZWFkLmlkKCk7CisgICAgICAgIGF1dG8gaWRCID0gVGhyZWFk
OjpjdXJyZW50SUQoKTsKKyAgICAgICAgaWYgKGlkQSAhPSBpZEIpIHsKKyAgICAgICAgICAgIGFb
aV0gPSBpZEE7CisgICAgICAgICAgICBiW2ldID0gaWRCOworICAgICAgICAgICAgaWYgKCFudW1G
YWlsdXJlcykKKyAgICAgICAgICAgICAgICBmaXJzdEZhaWx1cmUgPSBpOworICAgICAgICAgICAg
bnVtRmFpbHVyZXMrKzsKKyAgICAgICAgICAgIGxhc3RGYWlsdXJlID0gaTsKKyAgICAgICAgfQor
ICAgIH0KKyAgICBSRUxFQVNFX0FTU0VSVChudW1GYWlsdXJlcyA9PSAwLCBjb2RlLCBudW1GYWls
dXJlcywgYVtmaXJzdEZhaWx1cmVdLCBiW2ZpcnN0RmFpbHVyZV0sIChmaXJzdEZhaWx1cmUgPDwg
MTYgfCBsYXN0RmFpbHVyZSksIGFbbGFzdEZhaWx1cmVdLCBiW2xhc3RGYWlsdXJlXSk7CisjZWxz
ZQorICAgIFVOVVNFRF9QQVJBTShjb2RlKTsKKyNlbmRpZgorfQorCiB2b2lkIGluaXRpYWxpemUo
KQogewogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKQEAgLTkwLDYgKzExOSw4
IEBAIHZvaWQgaW5pdGlhbGl6ZSgpCiAgICAgICAgIGluaXRpYWxpemVTdXBlclNhbXBsZXIoKTsK
ICAgICAgICAgVGhyZWFkJiB0aHJlYWQgPSBUaHJlYWQ6OmN1cnJlbnQoKTsKICAgICAgICAgdGhy
ZWFkLnNldFNhdmVkTGFzdFN0YWNrVG9wKHRocmVhZC5zdGFjaygpLm9yaWdpbigpKTsKKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlQodGhyZWFkLmlkKCkgPT0gVGhyZWFkOjpjdXJyZW50SUQoKSwgMHgx
MTEsIHRocmVhZC5pZCgpLCBUaHJlYWQ6OmN1cnJlbnRJRCgpKTsgLy8gbWxhbSBURVNUCisgICAg
ICAgIG1sYW1UZXN0KDB4MzExKTsKIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICAgICAg
aWYgKFdhc206OmlzU3VwcG9ydGVkKCkpIHsKQEAgLTExMyw3ICsxNDQsOSBAQCB2b2lkIGluaXRp
YWxpemUoKQogICAgICAgICBXVEY6OmNvbXBpbGVyRmVuY2UoKTsKICAgICAgICAgUkVMRUFTRV9B
U1NFUlQoIWdfanNjQ29uZmlnLmluaXRpYWxpemVIYXNCZWVuQ2FsbGVkKTsKICAgICAgICAgZ19q
c2NDb25maWcuaW5pdGlhbGl6ZUhhc0JlZW5DYWxsZWQgPSB0cnVlOworICAgICAgICBtbGFtVGVz
dCgweDQxMSk7CiAgICAgfSk7CisgICAgbWxhbVRlc3QoMHg1MTEpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmNwcAko
cmV2aXNpb24gMjg4NjQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2Nr
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDUtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDUtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKQEAgLTM5LDYgKzM5LDggQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK05FVkVSX0lO
TElORSB2b2lkIG1sYW1UZXN0KGludCBjb2RlKTsKKwogTG9jayBHbG9iYWxKU0xvY2s6OnNfc2hh
cmVkSW5zdGFuY2VNdXRleDsKIAogR2xvYmFsSlNMb2NrOjpHbG9iYWxKU0xvY2soKQpAQCAtMTA5
LDYgKzExMSw3IEBAIHZvaWQgSlNMb2NrOjpsb2NrKGludHB0cl90IGxvY2tDb3VudCkgV1QKICAg
ICB9CiAjZW5kaWYKIAorICAgIG1sYW1UZXN0KDB4NjExKTsKICAgICBib29sIHN1Y2Nlc3MgPSBt
X2xvY2sudHJ5TG9jaygpOwogICAgIGlmIChVTkxJS0VMWSghc3VjY2VzcykpIHsKICAgICAgICAg
aWYgKGN1cnJlbnRUaHJlYWRJc0hvbGRpbmdMb2NrKCkpIHsKQEAgLTEyNSw2ICsxMjgsNyBAQCB2
b2lkIEpTTG9jazo6bG9jayhpbnRwdHJfdCBsb2NrQ291bnQpIFdUCiAgICAgbV9sb2NrQ291bnQg
PSBsb2NrQ291bnQ7CiAKICAgICBkaWRBY3F1aXJlTG9jaygpOworICAgIG1sYW1UZXN0KDB4NzEx
KTsKIH0KIAogdm9pZCBKU0xvY2s6OmRpZEFjcXVpcmVMb2NrKCkKQEAgLTEzOCw4ICsxNDIsNyBA
QCB2b2lkIEpTTG9jazo6ZGlkQWNxdWlyZUxvY2soKQogICAgIG1fZW50cnlBdG9tU3RyaW5nVGFi
bGUgPSB0aHJlYWQuc2V0Q3VycmVudEF0b21TdHJpbmdUYWJsZShtX3ZtLT5hdG9tU3RyaW5nVGFi
bGUoKSk7CiAgICAgQVNTRVJUKG1fZW50cnlBdG9tU3RyaW5nVGFibGUpOwogCi0gICAgbV92bS0+
c2V0TGFzdFN0YWNrVG9wKHRocmVhZC5zYXZlZExhc3RTdGFja1RvcCgpKTsKLSAgICBBU1NFUlQo
dGhyZWFkLnN0YWNrKCkuY29udGFpbnMobV92bS0+bGFzdFN0YWNrVG9wKCkpKTsKKyAgICBtX3Zt
LT5zZXRMYXN0U3RhY2tUb3AodGhyZWFkKTsKIAogICAgIGlmIChtX3ZtLT5oZWFwLmhhc0FjY2Vz
cygpKQogICAgICAgICBtX3Nob3VsZFJlbGVhc2VIZWFwQWNjZXNzID0gZmFsc2U7CkBAIC0xODQs
NiArMTg3LDcgQEAgdm9pZCBKU0xvY2s6OnVubG9jayhpbnRwdHJfdCB1bmxvY2tDb3VudAogICAg
IFJFTEVBU0VfQVNTRVJUKGN1cnJlbnRUaHJlYWRJc0hvbGRpbmdMb2NrKCkpOwogICAgIEFTU0VS
VChtX2xvY2tDb3VudCA+PSB1bmxvY2tDb3VudCk7CiAKKyAgICBtbGFtVGVzdCgweDgxMSk7CiAg
ICAgLy8gTWFpbnRhaW4gbV9sb2NrQ291bnQgd2hpbGUgY2FsbGluZyB3aWxsUmVsZWFzZUxvY2so
KSBzbyB0aGF0IGl0cyBjYWxsZWVzIGtub3cgdGhhdAogICAgIC8vIHRoZXkgc3RpbGwgaGF2ZSB0
aGUgbG9jay4KICAgICBpZiAodW5sb2NrQ291bnQgPT0gbV9sb2NrQ291bnQpCkBAIC0xOTUsNiAr
MTk5LDcgQEAgdm9pZCBKU0xvY2s6OnVubG9jayhpbnRwdHJfdCB1bmxvY2tDb3VudAogICAgICAg
ICBtX2hhc093bmVyVGhyZWFkID0gZmFsc2U7CiAgICAgICAgIG1fbG9jay51bmxvY2soKTsKICAg
ICB9CisgICAgbWxhbVRlc3QoMHg5MTEpOwogfQogCiB2b2lkIEpTTG9jazo6d2lsbFJlbGVhc2VM
b2NrKCkKQEAgLTI3Nyw3ICsyODIsNyBAQCB2b2lkIEpTTG9jazo6Z3JhYkFsbExvY2tzKERyb3BB
bGxMb2NrcyogCiAKICAgICBUaHJlYWQmIHRocmVhZCA9IFRocmVhZDo6Y3VycmVudCgpOwogICAg
IG1fdm0tPnNldFN0YWNrUG9pbnRlckF0Vk1FbnRyeSh0aHJlYWQuc2F2ZWRTdGFja1BvaW50ZXJB
dFZNRW50cnkoKSk7Ci0gICAgbV92bS0+c2V0TGFzdFN0YWNrVG9wKHRocmVhZC5zYXZlZExhc3RT
dGFja1RvcCgpKTsKKyAgICBtX3ZtLT5zZXRMYXN0U3RhY2tUb3AodGhyZWFkKTsKIH0KIAogSlNM
b2NrOjpEcm9wQWxsTG9ja3M6OkRyb3BBbGxMb2NrcyhWTSogdm0pCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uY3BwCShyZXZpc2lvbiAyODg2NDUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMzUsNiArMTM1LDgg
QEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK05FVkVSX0lOTElORSB2b2lkIG1sYW1UZXN0KGludCBj
b2RlKTsKKwogQXRvbWljPHVuc2lnbmVkPiBWTTo6c19udW1iZXJPZklEczsKIAogREVGSU5FX0FM
TE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihWTSk7CkBAIC0yNDIsOSArMjQ0LDggQEAgVk06
OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlLAogICAgICAgICBDUkFTSF9XSVRI
X0lORk8oMHg0MjQyNDI0MjIwMjAyMDIwLCAweGJhZGJlZWYwYmFkYmVlZiwgMHgxMjM0MTIzNDEy
MzQxMjM0LCAweDEzMzcxMzM3MTMzNzEzMzcpOwogCiAgICAgaW50ZXJwcmV0ZXIgPSBuZXcgSW50
ZXJwcmV0ZXIoKnRoaXMpOwotICAgIFN0YWNrQm91bmRzIHN0YWNrID0gVGhyZWFkOjpjdXJyZW50
KCkuc3RhY2soKTsKICAgICB1cGRhdGVTb2Z0UmVzZXJ2ZWRab25lU2l6ZShPcHRpb25zOjpzb2Z0
UmVzZXJ2ZWRab25lU2l6ZSgpKTsKLSAgICBzZXRMYXN0U3RhY2tUb3Aoc3RhY2sub3JpZ2luKCkp
OworICAgIHNldExhc3RTdGFja1RvcChUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICBKU1J1bkxv
b3BUaW1lcjo6TWFuYWdlcjo6c2hhcmVkKCkucmVnaXN0ZXJWTSgqdGhpcyk7CiAKQEAgLTUwMyw5
ICs1MDQsMTUgQEAgdm9pZCBWTTo6cHJpbWl0aXZlR2lnYWNhZ2VEaXNhYmxlZCgpCiAgICAgbV9u
ZWVkVG9GaXJlUHJpbWl0aXZlR2lnYWNhZ2VFbmFibGVkID0gdHJ1ZTsKIH0KIAotdm9pZCBWTTo6
c2V0TGFzdFN0YWNrVG9wKHZvaWQqIGxhc3RTdGFja1RvcCkKLXsgCi0gICAgbV9sYXN0U3RhY2tU
b3AgPSBsYXN0U3RhY2tUb3A7Cit2b2lkIFZNOjpzZXRMYXN0U3RhY2tUb3AoY29uc3QgVGhyZWFk
JiB0aHJlYWQpCit7CisgICAgbV9sYXN0U3RhY2tUb3AgPSB0aHJlYWQuc2F2ZWRMYXN0U3RhY2tU
b3AoKTsKKyAgICBhdXRvJiBzdGFjayA9IHRocmVhZC5zdGFjaygpOworICAgIFJFTEVBU0VfQVNT
RVJUKHN0YWNrLmNvbnRhaW5zKG1fbGFzdFN0YWNrVG9wKSwgMHg1NTEwLCBtX2xhc3RTdGFja1Rv
cCwgc3RhY2sub3JpZ2luKCksIHN0YWNrLmVuZCgpKTsKKyNpZiBPUyhEQVJXSU4pICYmIENQVShB
Uk02NCkKKyAgICBSRUxFQVNFX0FTU0VSVCh0aHJlYWQuaWQoKSA9PSBUaHJlYWQ6OmN1cnJlbnRJ
RCgpLCAweDU1MjAsIHRocmVhZC5pZCgpLCBUaHJlYWQ6OmN1cnJlbnRJRCgpKTsKKyNlbmRpZgor
ICAgIG1sYW1UZXN0KDB4MTYxMSk7CiB9CiAKIFJlZjxWTT4gVk06OmNyZWF0ZUNvbnRleHRHcm91
cChIZWFwVHlwZSBoZWFwVHlwZSkKQEAgLTEwNTAsMTYgKzEwNTcsMTEgQEAgdm9pZCBWTTo6cG9w
QWxsQ2hlY2twb2ludE9TUlNpZGVTdGF0ZVVudAogICAgIG1fY2hlY2twb2ludFNpZGVTdGF0ZS5z
aHJpbmtUb0ZpdCgpOwogfQogCi12b2lkIGxvZ1Nhbml0aXplU3RhY2soVk0mIHZtKQorc3RhdGlj
IHZvaWQgbG9nU2FuaXRpemVTdGFjayhWTSYgdm0pCiB7Ci0gICAgaWYgKE9wdGlvbnM6OnZlcmJv
c2VTYW5pdGl6ZVN0YWNrKCkgJiYgdm0udG9wQ2FsbEZyYW1lKSB7Ci0gICAgICAgIGludCBkdW1t
eTsKKyAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6dmVyYm9zZVNhbml0aXplU3RhY2soKSkpIHsK
ICAgICAgICAgYXV0byYgc3RhY2tCb3VuZHMgPSBUaHJlYWQ6OmN1cnJlbnQoKS5zdGFjaygpOwot
ICAgICAgICBkYXRhTG9nKAotICAgICAgICAgICAgIlNhbml0aXppbmcgc3RhY2sgZm9yIFZNID0g
IiwgUmF3UG9pbnRlcigmdm0pLCAiIHdpdGggdG9wIGNhbGwgZnJhbWUgYXQgIiwgUmF3UG9pbnRl
cih2bS50b3BDYWxsRnJhbWUpLAotICAgICAgICAgICAgIiwgY3VycmVudCBzdGFjayBwb2ludGVy
IGF0ICIsIFJhd1BvaW50ZXIoJmR1bW15KSwgIiwgaW4gIiwKLSAgICAgICAgICAgIHBvaW50ZXJE
dW1wKHZtLnRvcENhbGxGcmFtZS0+Y29kZUJsb2NrKCkpLCAiLCBsYXN0IGNvZGUgb3JpZ2luID0g
IiwKLSAgICAgICAgICAgIHZtLnRvcENhbGxGcmFtZS0+Y29kZU9yaWdpbigpLCAiLCBsYXN0IHN0
YWNrIHRvcCA9ICIsIFJhd1BvaW50ZXIodm0ubGFzdFN0YWNrVG9wKCkpLCAiLCBpbiBzdGFjayBy
YW5nZSBbIiwgUmF3UG9pbnRlcihzdGFja0JvdW5kcy5vcmlnaW4oKSksICIsICIsIFJhd1BvaW50
ZXIoc3RhY2tCb3VuZHMuZW5kKCkpLCAiXVxuIik7CisgICAgICAgIGRhdGFMb2dMbigiU2FuaXRp
emluZyBzdGFjayBmb3IgVk0gPSAiLCBSYXdQb2ludGVyKCZ2bSksICIsIGN1cnJlbnQgc3RhY2sg
cG9pbnRlciBhdCAiLCBSYXdQb2ludGVyKGN1cnJlbnRTdGFja1BvaW50ZXIoKSksICIsIGxhc3Qg
c3RhY2sgdG9wID0gIiwgUmF3UG9pbnRlcih2bS5sYXN0U3RhY2tUb3AoKSksICIsIGluIHN0YWNr
IHJhbmdlICgiLCBSYXdQb2ludGVyKHN0YWNrQm91bmRzLmVuZCgpKSwgIiwgIiwgUmF3UG9pbnRl
cihzdGFja0JvdW5kcy5vcmlnaW4oKSksICJdIik7CiAgICAgfQogfQogCkBAIC0xMjcwLDE3ICsx
MjcyLDI1IEBAIHZvaWQgUXVldWVkVGFzazo6cnVuKCkKIAogdm9pZCBzYW5pdGl6ZVN0YWNrRm9y
Vk0oVk0mIHZtKQogeworICAgIGF1dG8mIHRocmVhZCA9IFRocmVhZDo6Y3VycmVudCgpOworI2lm
IE9TKERBUldJTikgJiYgQ1BVKEFSTTY0KQorICAgIFJFTEVBU0VfQVNTRVJUKHRocmVhZC5pZCgp
ID09IFRocmVhZDo6Y3VycmVudElEKCksIDB4YWExMCwgdGhyZWFkLmlkKCksIFRocmVhZDo6Y3Vy
cmVudElEKCkpOworI2VuZGlmCisgICAgYXV0byYgc3RhY2sgPSB0aHJlYWQuc3RhY2soKTsKKyAg
ICBpZiAoIXZtLmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpCisgICAgICAgIHJldHVy
bjsgLy8gdm0ubGFzdFN0YWNrVG9wKCkgbWF5IG5vdCBiZSBzZXQgdXAgY29ycmVjdGx5IGlmIEpT
TG9jayBpcyBub3QgaGVsZC4KKwogICAgIGxvZ1Nhbml0aXplU3RhY2sodm0pOwotICAgIGlmICh2
bS50b3BDYWxsRnJhbWUpIHsKLSAgICAgICAgYXV0byYgc3RhY2tCb3VuZHMgPSBUaHJlYWQ6OmN1
cnJlbnQoKS5zdGFjaygpOwotICAgICAgICBBU1NFUlQodm0uY3VycmVudFRocmVhZElzSG9sZGlu
Z0FQSUxvY2soKSk7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQoc3RhY2tCb3VuZHMsIHN0YWNrQm91
bmRzLmNvbnRhaW5zKHZtLmxhc3RTdGFja1RvcCgpKSk7Ci0gICAgfQorCisgICAgUkVMRUFTRV9B
U1NFUlQoc3RhY2suY29udGFpbnModm0ubGFzdFN0YWNrVG9wKCkpLCAweGFhMjAsIHZtLmxhc3RT
dGFja1RvcCgpLCBzdGFjay5vcmlnaW4oKSwgc3RhY2suZW5kKCkpOwogI2lmIEVOQUJMRShDX0xP
T1ApCiAgICAgdm0uaW50ZXJwcmV0ZXItPmNsb29wU3RhY2soKS5zYW5pdGl6ZVN0YWNrKCk7CiAj
ZWxzZQogICAgIHNhbml0aXplU3RhY2tGb3JWTUltcGwoJnZtKTsKICNlbmRpZgorICAgIFJFTEVB
U0VfQVNTRVJUKHN0YWNrLmNvbnRhaW5zKHZtLmxhc3RTdGFja1RvcCgpKSwgMHhhYTMwLCB2bS5s
YXN0U3RhY2tUb3AoKSwgc3RhY2sub3JpZ2luKCksIHN0YWNrLmVuZCgpKTsKKworICAgIG1sYW1U
ZXN0KDB4MTUxMSk7CiB9CiAKIHNpemVfdCBWTTo6Y29tbWl0dGVkU3RhY2tCeXRlQ291bnQoKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCShyZXZpc2lvbiAyODg2NDUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOC0yMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDIyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNzg1
LDcgKzc4NSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQqKiBhZGRyZXNzT2ZMYXN0U3RhY2tUb3Ao
KSB7IHJldHVybiAmbV9sYXN0U3RhY2tUb3A7IH0KICAgICB2b2lkKiBsYXN0U3RhY2tUb3AoKSB7
IHJldHVybiBtX2xhc3RTdGFja1RvcDsgfQotICAgIHZvaWQgc2V0TGFzdFN0YWNrVG9wKHZvaWQq
KTsKKyAgICB2b2lkIHNldExhc3RTdGFja1RvcChjb25zdCBUaHJlYWQmKTsKICAgICAKICAgICB2
b2lkIGZpcmVQcmltaXRpdmVHaWdhY2FnZUVuYWJsZWRJZk5lY2Vzc2FyeSgpCiAgICAgewpAQCAt
MTE3Myw2ICsxMTczLDUgQEAgZXh0ZXJuICJDIiB2b2lkIHNhbml0aXplU3RhY2tGb3JWTUltcGwo
VgogI2VuZGlmCiAKIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc2FuaXRpemVTdGFja0ZvclZNKFZN
Jik7Ci12b2lkIGxvZ1Nhbml0aXplU3RhY2soVk0mKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCklu
ZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5n
ZUxvZwkocmV2aXNpb24gMjg4NjQ1KQorKysgU291cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwyNCBAQAorMjAyMi0wMS0yNyAgTWFyayBMYW0gIDxtYXJrLmxhbUBh
cHBsZS5jb20+CisKKyAgICAgICAgRW5oYW5jZSBzYW5pdGl6ZVN0YWNrRm9yVk0oKSB0byBhc3Np
c3Qgd2l0aCBjcmFzaCBhbmFseXNpcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzNTc1MgorICAgICAgICByZGFyOi8vODEwMTQ2MDEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3Ig
VGhyZWFkSWRlbnRpZmllciBhbmQgVGhyZWFkOjpjdXJyZW50SUQoKSBvbiBPUyhEQVJXSU4pLiAg
VGhpcyBjYW4KKyAgICAgICAgYmUgdXNlZCB0byBkZXRlY3QgVExTIGNvcnJ1cHRpb24gLyBidWdz
LgorCisgICAgICAgICogd3RmL1RocmVhZGluZy5jcHA6CisgICAgICAgIChXVEY6OlRocmVhZDo6
aW5pdGlhbGl6ZUluVGhyZWFkKToKKyAgICAgICAgKiB3dGYvVGhyZWFkaW5nLmg6CisgICAgICAg
IChXVEY6OlRocmVhZDo6c2F2ZWRTdGFja1BvaW50ZXJBdFZNRW50cnkgY29uc3QpOgorICAgICAg
ICAoV1RGOjpUaHJlYWQ6OnNhdmVkTGFzdFN0YWNrVG9wIGNvbnN0KToKKyAgICAgICAgKFdURjo6
VGhyZWFkOjpjdXJyZW50SUQpOgorICAgICAgICAoV1RGOjpUaHJlYWQ6OnNhdmVkU3RhY2tQb2lu
dGVyQXRWTUVudHJ5KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6VGhyZWFkOjpzYXZlZExhc3RT
dGFja1RvcCk6IERlbGV0ZWQuCisgICAgICAgICogd3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaDoK
KwogMjAyMi0wMS0yNSAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbbWFjT1NdIEFkZCBuZXcgc2NyZWVuIGFuZCB3aW5kb3cgY2FwdHVyZSBiYWNrZW5k
CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XVEYvd3RmL1RocmVhZGluZy5jcHAJKHJldmlzaW9uIDI4ODY0NSkKKysrIFNvdXJjZS9XVEYv
d3RmL1RocmVhZGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1OSw4ICsxNTksMzkgQEAgdm9p
ZCBUaHJlYWQ6OmluaXRpYWxpemVJblRocmVhZCgpCiAgICAgfQogI2VuZGlmCiAKLSNpZiBPUyhM
SU5VWCkKLSAgICBtX2lkID0gY3VycmVudElEKCk7CisjaWYgVVNFKFBUSFJFQURTKQorLy8gICAg
bV9pZCA9IGN1cnJlbnRJRCgpOworICAgIFRocmVhZElkZW50aWZpZXIgaWQgPSBjdXJyZW50SUQo
KTsKKy8vICAgIFJFTEVBU0VfQVNTRVJUKChpZCAmIDB4NykgPT0gMCwgMHgzMjMsIGlkKTsKKyNp
ZiBPUyhEQVJXSU4pICYmIENQVShBUk02NCkKKyAgICBpZiAoaWQgJiAweDcpIHsKKyAgICAgICAg
V1RGOjpUaHJlYWRJZGVudGlmaWVyIGFbMTAwMF07CisgICAgICAgIGludCBudW1GYWlsdXJlcyA9
IDA7CisgICAgICAgIGludCBmaXJzdEZhaWx1cmUgPSAwOworICAgICAgICBpbnQgbGFzdEZhaWx1
cmUgPSAwOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDEwMDA7ICsraSkgeworICAgICAg
ICAgICAgV1RGOjpUaHJlYWRJZGVudGlmaWVyIGlkMiA9IDA7CisgICAgICAgICAgICBhc20gKAor
ICAgICAgICAgICAgICAgICJtcnMgJXhbaWQyXSwgVFBJRFJST19FTDAiCisgICAgICAgICAgICAg
ICAgOiBbaWQyXSAiPXIiIChpZDIpIDogOgorICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIGFb
aV0gPSBpZDI7CisgICAgICAgICAgICBpZiAoaWQyICE9IGlkKSB7CisgICAgICAgICAgICAgICAg
aWYgKG51bUZhaWx1cmVzID09IDApCisgICAgICAgICAgICAgICAgICAgIGZpcnN0RmFpbHVyZSA9
IGk7CisgICAgICAgICAgICAgICAgbnVtRmFpbHVyZXMrKzsKKyAgICAgICAgICAgICAgICBsYXN0
RmFpbHVyZSA9IGk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgUkVMRUFTRV9B
U1NFUlQoKGlkICYgMHg3KSA9PSAwLCAweDMyMywgaWQsIG51bUZhaWx1cmVzLCBmaXJzdEZhaWx1
cmUsIGFbZmlyc3RGYWlsdXJlXSwgbGFzdEZhaWx1cmUsIGFbbGFzdEZhaWx1cmVdKTsKKyAgICB9
CisjZW5kaWYgLy8gT1MoREFSV0lOKSAmJiBDUFUoQVJNNjQpCisgICAgbV9pZCA9IGlkOworICAg
IFJFTEVBU0VfQVNTRVJUKGlkID09IFRocmVhZDo6Y3VycmVudElEKCksIDB4NDIzLCBpZCwgVGhy
ZWFkOjpjdXJyZW50SUQoKSk7IC8vIG1sYW0gVEVTVAorICAgIFJFTEVBU0VfQVNTRVJUKG1faWQg
PT0gY3VycmVudElEKCksIDB4MTIzLCBtX2lkLCBjdXJyZW50SUQoKSk7IC8vIG1sYW0gVEVTVAor
ICAgIFJFTEVBU0VfQVNTRVJUKG1faWQgPT0gVGhyZWFkOjpjdXJyZW50SUQoKSwgMHgyMjMsIG1f
aWQsIFRocmVhZDo6Y3VycmVudElEKCkpOyAvLyBtbGFtIFRFU1QKKyNlbHNlCisgICAgUkVMRUFT
RV9BU1NFUlQobV9pZCA9PSBjdXJyZW50SUQoKSk7CiAjZW5kaWYKIH0KIApJbmRleDogU291cmNl
L1dURi93dGYvVGhyZWFkaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvVGhyZWFk
aW5nLmgJKHJldmlzaW9uIDI4ODY0NSkKKysrIFNvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNy0y
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
Ny0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykg
MjAwNyBKdXN0aW4gSGF5Z29vZCA8amhheWdvb2RAcmVha3RpeC5jb20+CiAgKiBDb3B5cmlnaHQg
KEMpIDIwMTcgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogICoKQEAgLTEz
MCwxNSArMTMwLDE4IEBAIHB1YmxpYzoKIAogICAgIHVpbnQzMl90IHVpZCgpIGNvbnN0IHsgcmV0
dXJuIG1fdWlkOyB9CiAKLSNpZiBPUyhXSU5ET1dTKQogICAgIC8vIFJldHVybnMgVGhyZWFkSWRl
bnRpZmllciBkaXJlY3RseS4gSXQgaXMgdXNlZnVsIGlmIHRoZSB1c2VyIG9ubHkgY2FyZXMgYWJv
dXQgaWRlbnRpdHkKICAgICAvLyBvZiB0aHJlYWRzLiBBdCB0aGF0IHRpbWUsIHVzZXJzIHNob3Vs
ZCBrbm93IHRoYXQgaG9sZGluZyB0aGlzIFRocmVhZElkZW50aWZpZXIgZG9lcyBub3QgZW5zdXJl
CiAgICAgLy8gdGhhdCB0aGUgdGhyZWFkIGluZm9ybWF0aW9uIGlzIGFsaXZlLiBXaGlsZSBUaHJl
YWQ6OmN1cnJlbnQoKSBpcyBub3Qgc2FmZSBpZiBpdCBpcyBjYWxsZWQKICAgICAvLyBmcm9tIHRo
ZSBkZXN0cnVjdG9yIG9mIHRoZSBvdGhlciBUTFMgZGF0YSwgY3VycmVudElEKCkgYWx3YXlzIHJl
dHVybnMgbWVhbmluZ2Z1bCB0aHJlYWQgSUQuCisjaWYgT1MoREFSV0lOKQorICAgIEFMV0FZU19J
TkxJTkUgc3RhdGljIFRocmVhZElkZW50aWZpZXIgY3VycmVudElEKCk7CisjZWxzZQogICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgVGhyZWFkSWRlbnRpZmllciBjdXJyZW50SUQoKTsKLQor
I2VuZGlmCiAgICAgVGhyZWFkSWRlbnRpZmllciBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0K
IAorI2lmIE9TKFdJTkRPV1MpCiAgICAgY2xhc3MgU3BlY2lmaWNTdG9yYWdlIHsKICAgICBwdWJs
aWM6CiAgICAgICAgIHVzaW5nIERlc3Ryb3lGdW5jdGlvbiA9IHZvaWQgKCopKHZvaWQqKTsKQEAg
LTE3NiwxMCArMTc5LDYgQEAgcHVibGljOgogICAgIFdURl9FWFBPUlRfUFJJVkFURSBzaXplX3Qg
Z2V0UmVnaXN0ZXJzKFBsYXRmb3JtUmVnaXN0ZXJzJik7CiAKICNpZiBVU0UoUFRIUkVBRFMpCi0j
aWYgT1MoTElOVVgpCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBUaHJlYWRJZGVudGlm
aWVyIGN1cnJlbnRJRCgpOwotICAgIFRocmVhZElkZW50aWZpZXIgaWQoKSBjb25zdCB7IHJldHVy
biBtX2lkOyB9Ci0jZW5kaWYKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBzaWduYWwoaW50
IHNpZ25hbE51bWJlcik7CiAjZW5kaWYKIApAQCAtMjMxLDcgKzIzMCw3IEBAIHB1YmxpYzoKICAg
ICB9CiAjZW5kaWYKIAotICAgIHZvaWQqIHNhdmVkU3RhY2tQb2ludGVyQXRWTUVudHJ5KCkKKyAg
ICB2b2lkKiBzYXZlZFN0YWNrUG9pbnRlckF0Vk1FbnRyeSgpIGNvbnN0CiAgICAgewogICAgICAg
ICByZXR1cm4gbV9zYXZlZFN0YWNrUG9pbnRlckF0Vk1FbnRyeTsKICAgICB9CkBAIC0yNDEsNyAr
MjQwLDcgQEAgcHVibGljOgogICAgICAgICBtX3NhdmVkU3RhY2tQb2ludGVyQXRWTUVudHJ5ID0g
c3RhY2tQb2ludGVyQXRWTUVudHJ5OwogICAgIH0KIAotICAgIHZvaWQqIHNhdmVkTGFzdFN0YWNr
VG9wKCkKKyAgICB2b2lkKiBzYXZlZExhc3RTdGFja1RvcCgpIGNvbnN0CiAgICAgewogICAgICAg
ICByZXR1cm4gbV9zYXZlZExhc3RTdGFja1RvcDsKICAgICB9CkBAIC0zNTMsMTQgKzM1MiwxMCBA
QCBwcm90ZWN0ZWQ6CiAgICAgSGFzaE1hcDxUaHJlYWRHcm91cCosIHN0ZDo6d2Vha19wdHI8VGhy
ZWFkR3JvdXA+PiBtX3RocmVhZEdyb3VwTWFwOwogICAgIFBsYXRmb3JtVGhyZWFkSGFuZGxlIG1f
aGFuZGxlOwogICAgIHVpbnQzMl90IG1fdWlkOwotI2lmIE9TKFdJTkRPV1MpCiAgICAgVGhyZWFk
SWRlbnRpZmllciBtX2lkIHsgMCB9OwotI2VsaWYgT1MoREFSV0lOKQorI2lmIE9TKERBUldJTikK
ICAgICBtYWNoX3BvcnRfdCBtX3BsYXRmb3JtVGhyZWFkIHsgTUFDSF9QT1JUX05VTEwgfTsKICNl
bGlmIFVTRShQVEhSRUFEUykKLSNpZiBPUyhMSU5VWCkKLSAgICBUaHJlYWRJZGVudGlmaWVyIG1f
aWQgeyAwIH07Ci0jZW5kaWYKICAgICBQbGF0Zm9ybVJlZ2lzdGVycyogbV9wbGF0Zm9ybVJlZ2lz
dGVycyB7IG51bGxwdHIgfTsKICAgICB1bnNpZ25lZCBtX3N1c3BlbmRDb3VudCB7IDAgfTsKICNl
bmRpZgpAQCAtNDIwLDYgKzQxNSwyMyBAQCBpbmxpbmUgVGhyZWFkJiBUaHJlYWQ6OmN1cnJlbnQo
KQogICAgIHJldHVybiBpbml0aWFsaXplQ3VycmVudFRMUygpOwogfQogCisjaWYgT1MoREFSV0lO
KQorQUxXQVlTX0lOTElORSBUaHJlYWRJZGVudGlmaWVyIFRocmVhZDo6Y3VycmVudElEKCkKK3sK
KyAgICBUaHJlYWRJZGVudGlmaWVyIHJlc3VsdDsKKyNpZiBDUFUoQVJNNjQpCisgICAgYXNtICgK
KyAgICAgICAgIm1ycyAleFtyZXN1bHRdLCBUUElEUlJPX0VMMCIKKyAgICAgICAgOiBbcmVzdWx0
XSAiPXIiIChyZXN1bHQpIDogOgorICAgICk7CisjZWxzZQorICAgIHJlc3VsdCA9IGJpdHdpc2Vf
Y2FzdDxUaHJlYWRJZGVudGlmaWVyPihwdGhyZWFkX3NlbGYoKSk7CisjZW5kaWYKKyAgICBBU1NF
UlQocmVzdWx0KTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNw
YWNlIFdURgogCiB1c2luZyBXVEY6OlRocmVhZDsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1RocmVh
ZGluZ1ByaW1pdGl2ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdQ
cmltaXRpdmVzLmgJKHJldmlzaW9uIDI4ODY0NSkKKysrIFNvdXJjZS9XVEYvd3RmL1RocmVhZGlu
Z1ByaW1pdGl2ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNTcsNyArNTcsOSBAQCB1c2luZyBQbGF0
Zm9ybVRocmVhZEhhbmRsZSA9IHB0aHJlYWRfdDsKIHVzaW5nIFBsYXRmb3JtTXV0ZXggPSBwdGhy
ZWFkX211dGV4X3Q7CiB1c2luZyBQbGF0Zm9ybUNvbmRpdGlvbiA9IHB0aHJlYWRfY29uZF90Owog
dXNpbmcgVGhyZWFkU3BlY2lmaWNLZXkgPSBwdGhyZWFkX2tleV90OwotI2lmIE9TKExJTlVYKQor
I2lmIE9TKERBUldJTikKK3VzaW5nIFRocmVhZElkZW50aWZpZXIgPSB1aW50cHRyX3Q7CisjZWxp
ZiBPUyhMSU5VWCkKIHVzaW5nIFRocmVhZElkZW50aWZpZXIgPSBwaWRfdDsKICNlbmRpZgogI2Vs
aWYgT1MoV0lORE9XUykKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL3Bvc2l4L1RocmVhZGluZ1BPU0lY
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9wb3NpeC9UaHJlYWRpbmdQT1NJWC5j
cHAJKHJldmlzaW9uIDI4ODY0NSkKKysrIFNvdXJjZS9XVEYvd3RmL3Bvc2l4L1RocmVhZGluZ1BP
U0lYLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUwLDYgKzU1MCw3IEBAIFRocmVhZCYgVGhyZWFk
Ojppbml0aWFsaXplVExTKFJlZjxUaHJlYWQKICAgICBfcHRocmVhZF9zZXRzcGVjaWZpY19kaXJl
Y3QoV1RGX1RIUkVBRF9EQVRBX0tFWSwgJnRocmVhZEluVExTKTsKICAgICBwdGhyZWFkX2tleV9p
bml0X25wKFdURl9USFJFQURfREFUQV9LRVksICZkZXN0cnVjdFRMUyk7CiAjZW5kaWYKKyAgICBS
RUxFQVNFX0FTU0VSVCh0aHJlYWQtPmlkKCkgPT0gVGhyZWFkOjpjdXJyZW50SUQoKSwgMHgyMTEs
IHRocmVhZC0+aWQoKSwgVGhyZWFkOjpjdXJyZW50SUQoKSk7IC8vIG1sYW0gVEVTVAogICAgIHJl
dHVybiB0aHJlYWRJblRMUzsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450385</attachid>
            <date>2022-01-31 00:03:42 -0800</date>
            <delta_ts>2022-01-31 16:46:22 -0800</delta_ts>
            <desc>test5</desc>
            <filename>test-threadID.patch</filename>
            <type>text/plain</type>
            <size>26137</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjg4NzIxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3IEBA
CisyMDIyLTAxLTI3ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBF
bmhhbmNlIHNhbml0aXplU3RhY2tGb3JWTSgpIHRvIGFzc2lzdCB3aXRoIGNyYXNoIGFuYWx5c2lz
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1NzUy
CisgICAgICAgIHJkYXI6Ly84MTAxNDYwMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIDEuIFJlbW92ZSB0aGUgQXNzZW1ibHlIZWxwZXJzIHZlcnNpb24g
b2Ygc2FuaXRpemVTdGFjay4gIEluc3RlYWQsIG1ha2UgdGhlIDMKKyAgICAgICAgICAgSklUIG9w
ZXJhdGlvbiBmdW5jdGlvbnMgY2FsbCBzYW5pdGl6ZVN0YWNrRm9yVk0oKSBpbnN0ZWFkLiAgVGhp
cyBlbnN1cmVzCisgICAgICAgICAgIHRoYXQgc2FuaXRpemVTdGFjayBjcmFzaGVzIGFyZSBub3Qg
b2JzY3VyZWQgYXMgZ2VuZXJpYyBKSVQgY3Jhc2hlcy4KKworICAgICAgICAyLiBBZGQgc2FuaXR5
IGNoZWNrIFJFTEVBU0VfQVNTRVJUcyB0byBWTTo6c2V0TGFzdFN0YWNrVG9wKCkgd2l0aCBhIGNh
cHR1cmUgb2YKKyAgICAgICAgICAgdGhlIHJlbGV2YW50IHZhcmlhYmxlcyBmb3IgY3Jhc2ggYW5h
bHlzaXMuCisKKyAgICAgICAgMy4gRml4IGxvZ1Nhbml0aXplU3RhY2soKSBzbyB0aGF0IGl0IG5v
IGxvbmdlciByZWxpZXMgb24gdm0udG9wQ2FsbEZyYW1lLgorICAgICAgICAgICB2bS50b3BDYWxs
RnJhbWUgbWF5IG5vdCBiZSBwcm9wZXJseSBpbml0aWFsaXplZCBhdCBhbGwgdGhlIHBsYWNlcyB0
aGF0CisgICAgICAgICAgIHNhbml0aXplU3RhY2tGb3JWTSgpIGlzIGNhbGxlZC4KKworICAgICAg
ICA0LiBBZGQgYSBKU0xvY2sgY2hlY2sgdG8gc2FuaXRpemVTdGFja0ZvclZNKCksIGFuZCByZXR1
cm4gZWFybHkgaWYgbm90IG93bmVkIGJ5CisgICAgICAgICAgIHRoZSBjdXJyZW50IHRocmVhZC4g
IElmIHRoZSBKU0xvY2sgaXMgbm90IG93bmVkIGJ5IHRoZSBjdXJyZW50IHRocmVhZCwgd2UgY2Fu
J3QKKyAgICAgICAgICAgcmVseSBvbiB2bS5sYXN0U3RhY2tUb3AoKSBiZWluZyBhIHNhbmUgdmFs
dWUuICBIZW5jZSwgaXQncyBub3QgcG9zc2libGUgdG8KKyAgICAgICAgICAgZG8gc3RhY2sgc2Fu
aXRpemF0aW9uIGNvcnJlY3RseS4KKworICAgICAgICAgICBBZGQgc2FuaXR5IGNoZWNrIFJFTEVB
U0VfQVNTRVJUcyB0byBzYW5pdGl6ZVN0YWNrRm9yVk0oKSB3aXRoIGEgY2FwdHVyZSBvZgorICAg
ICAgICAgICB0aGUgcmVsZXZhbnQgdmFyaWFibGVzIGZvciBjcmFzaCBhbmFseXNpcy4KKworICAg
ICAgICAqIGppdC9Bc3NlbWJseUhlbHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhl
bHBlcnM6OnNhbml0aXplU3RhY2tJbmxpbmUpOiBEZWxldGVkLgorICAgICAgICAqIGppdC9Bc3Nl
bWJseUhlbHBlcnMuaDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAg
IChKU0M6OkpTQ19ERUZJTkVfSklUX09QRVJBVElPTik6CisgICAgICAgICogaml0L1RodW5rR2Vu
ZXJhdG9ycy5jcHA6CisgICAgICAgIChKU0M6OnNsb3dQYXRoRm9yKToKKyAgICAgICAgKiBydW50
aW1lL0pTTG9jay5jcHA6CisgICAgICAgIChKU0M6OkpTTG9jazo6ZGlkQWNxdWlyZUxvY2spOgor
ICAgICAgICAoSlNDOjpKU0xvY2s6OmdyYWJBbGxMb2Nrcyk6CisgICAgICAgICogcnVudGltZS9W
TS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAgICAgIChKU0M6OlZNOjpzZXRMYXN0
U3RhY2tUb3ApOgorICAgICAgICAoSlNDOjpsb2dTYW5pdGl6ZVN0YWNrKToKKyAgICAgICAgKEpT
Qzo6c2FuaXRpemVTdGFja0ZvclZNKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisKIDIwMjIt
MDEtMjcgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CiAKICAgICAgICAgY29t
LmFwcGxlLldlYktpdC5XZWJBdXRobi54cGMgZmFpbHMgdG8gYnVpbGQgd2l0aCBzeXN0ZW0gY29u
dGVudCBwYXRoCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJw
cmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9JbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDI4ODY0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgyLDYg
KzgyLDggQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK05FVkVSX0lOTElORSB2b2lkIG1sYW1UZXN0
KGludCBjb2RlKTsKKwogSlNWYWx1ZSBldmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lLCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKICAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CkBAIC03MTAsNiArNzEyLDggQEAgdm9pZCBJbnRlcnByZXRl
cjo6bm90aWZ5RGVidWdnZXJPZkV4Y2VwdAogCiBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRl
UHJvZ3JhbShjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEpTR2xvYmFsT2JqZWN0KiwgSlNPYmpl
Y3QqIHRoaXNPYmopCiB7CisgICAgbWxhbVRlc3QoMHgxMDExKTsKKwogICAgIEpTU2NvcGUqIHNj
b3BlID0gdGhpc09iai0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbFNjb3BlKCk7CiAgICAgVk0mIHZt
ID0gc2NvcGUtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CkBAIC05MDQsNiArOTA4LDggQEAgZmFpbGVkSlNPTlA6CiAKIEpTVmFsdWUgSW50ZXJw
cmV0ZXI6OmV4ZWN1dGVDYWxsKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U09iamVjdCogZnVuY3Rpb24sIGNvbnN0IENhbGxEYXRhJiBjYWxsRGF0YSwgSlNWYWx1ZSB0aGlz
VmFsdWUsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCiB7CisgICAgbWxhbVRlc3QoMHgxMTExKTsKKwog
ICAgIFZNJiB2bSA9IGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKQEAgLTk3NCw2ICs5ODAsOCBAQCBKU1Zh
bHVlIEludGVycHJldGVyOjpleGVjdXRlQ2FsbChKU0dsb2JhCiAKIEpTT2JqZWN0KiBJbnRlcnBy
ZXRlcjo6ZXhlY3V0ZUNvbnN0cnVjdChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNPYmplY3QqIGNvbnN0cnVjdG9yLCBjb25zdCBDYWxsRGF0YSYgY29uc3RydWN0RGF0YSwg
Y29uc3QgQXJnTGlzdCYgYXJncywgSlNWYWx1ZSBuZXdUYXJnZXQpCiB7CisgICAgbWxhbVRlc3Qo
MHgxMjExKTsKKwogICAgIFZNJiB2bSA9IGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKQEAgLTEwNzgsNiAr
MTA4Niw4IEBAIENhbGxGcmFtZUNsb3N1cmUgSW50ZXJwcmV0ZXI6OnByZXBhcmVGb3IKIAogSlNW
YWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShFdmFsRXhlY3V0YWJsZSogZXZhbCwgSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVmFsdWUgdGhpc1ZhbHVlLCBKU1Njb3BlKiBz
Y29wZSkKIHsKKyAgICBtbGFtVGVzdCgweDEzMTEpOworCiAgICAgVk0mIHZtID0gc2NvcGUtPnZt
KCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKQEAg
LTEyNTEsNiArMTI2MSw4IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoRXZhbEV4ZWN1
dGEKIAogSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZU1vZHVsZVByb2dyYW0oSlNNb2R1bGVS
ZWNvcmQqIHJlY29yZCwgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU01vZHVsZUVudmlyb25tZW50KiBzY29w
ZSwgSlNWYWx1ZSBzZW50VmFsdWUsIEpTVmFsdWUgcmVzdW1lTW9kZSkKIHsKKyAgICBtbGFtVGVz
dCgweDE0MTEpOworCiAgICAgVk0mIHZtID0gc2NvcGUtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlcklubGluZXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHJldmlz
aW9uIDI4ODY0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnBy
ZXRlcklubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsOCBAQAogCiBuYW1lc3Bh
Y2UgSlNDIHsKIAorTkVWRVJfSU5MSU5FIHZvaWQgbWxhbVRlc3QoaW50IGNvZGUpOworCiBpbmxp
bmUgT3Bjb2RlIEludGVycHJldGVyOjpnZXRPcGNvZGUoT3Bjb2RlSUQgaWQpCiB7CiAgICAgcmV0
dXJuIExMSW50OjpnZXRPcGNvZGUoaWQpOwpAQCAtNzIsNiArNzQsOCBAQCBpbmxpbmUgT3Bjb2Rl
SUQgSW50ZXJwcmV0ZXI6OmdldE9wY29kZUlECiAKIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBJbnRl
cnByZXRlcjo6ZXhlY3V0ZShDYWxsRnJhbWVDbG9zdXJlJiBjbG9zdXJlKQogeworICAgIG1sYW1U
ZXN0KDB4MTcxMSk7CisKICAgICBWTSYgdm0gPSAqY2xvc3VyZS52bTsKICAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAkocmV2aXNpb24gMjg4NjQ1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMTEyOCwxOSArMTEyOCw2IEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjpjb3B5Q2Fs
bGVlU2F2ZXNUb0UKICNlbmRpZgogfQogCi12b2lkIEFzc2VtYmx5SGVscGVyczo6c2FuaXRpemVT
dGFja0lubGluZShWTSYgdm0sIEdQUlJlZyBzY3JhdGNoKQotewotICAgIGxvYWRQdHIodm0uYWRk
cmVzc09mTGFzdFN0YWNrVG9wKCksIHNjcmF0Y2gpOwotICAgIEp1bXAgZG9uZSA9IGJyYW5jaFB0
cihCZWxvd09yRXF1YWwsIHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBzY3JhdGNoKTsKLSAgICBMYWJl
bCBsb29wID0gbGFiZWwoKTsKLSAgICBzdG9yZVB0cihUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCBB
ZGRyZXNzKHNjcmF0Y2gpKTsKLSAgICBhZGRQdHIoVHJ1c3RlZEltbVB0cihzaXplb2Yodm9pZCop
KSwgc2NyYXRjaCk7Ci0gICAgYnJhbmNoUHRyKEFib3ZlLCBzdGFja1BvaW50ZXJSZWdpc3Rlciwg
c2NyYXRjaCkubGlua1RvKGxvb3AsIHRoaXMpOwotICAgIGRvbmUubGluayh0aGlzKTsKLSAgICBt
b3ZlKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBzY3JhdGNoKTsKLSAgICBzdG9yZVB0cihzY3JhdGNo
LCB2bS5hZGRyZXNzT2ZMYXN0U3RhY2tUb3AoKSk7Ci19Ci0KIHZvaWQgQXNzZW1ibHlIZWxwZXJz
OjpjYWdlV2l0aG91dFVudGFnZ2luZyhHaWdhY2FnZTo6S2luZCBraW5kLCBHUFJSZWcgc3RvcmFn
ZSkKIHsKICNpZiBHSUdBQ0FHRV9FTkFCTEVECkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0Fzc2VtYmx5SGVscGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgJKHJldmlzaW9uIDI4ODY0NSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNzA5
LDggKzE3MDksNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBicmFuY2hUZXN0OChaZXJvLCBB
YnNvbHV0ZUFkZHJlc3Modm0uaGVhcC5hZGRyZXNzT2ZNdXRhdG9yU2hvdWxkQmVGZW5jZWQoKSkp
OwogICAgIH0KICAgICAKLSAgICB2b2lkIHNhbml0aXplU3RhY2tJbmxpbmUoVk0mLCBHUFJSZWcg
c2NyYXRjaCk7Ci0gICAgCiAgICAgLy8gRW1pdHMgdGhlIGJyYW5jaCBzdHJ1Y3R1cmUgZm9yIHR5
cGVvZi4gVGhlIGNvZGUgZW1pdHRlZCBieSB0aGlzIGRvZXNuJ3QgZmFsbCB0aHJvdWdoLiBUaGUK
ICAgICAvLyBmdW5jdG9yIGlzIGNhbGxlZCBhdCB0aG9zZSBwb2ludHMgd2hlcmUgd2UgaGF2ZSBw
aW5wb2ludGVkIGEgdHlwZS4gT25lIHdheSB0byB1c2UgdGhpcyBpcyB0bwogICAgIC8vIGhhdmUg
dGhlIGZ1bmN0b3IgZW1pdCB0aGUgY29kZSB0byBwdXQgdGhlIHR5cGUgc3RyaW5nIGludG8gYW4g
YXBwcm9wcmlhdGUgcmVnaXN0ZXIgYW5kIHRoZW4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMjg4NjQ1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE0
NDgsMTEgKzE0NDgsMTMgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkNhbGxF
dgogCiBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTGlua0NhbGwsIFNsb3dQYXRo
UmV0dXJuVHlwZSwgKENhbGxGcmFtZSogY2FsbGVlRnJhbWUsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvKSkKIHsKKyAgICBzYW5pdGl6ZVN0
YWNrRm9yVk0oZ2xvYmFsT2JqZWN0LT52bSgpKTsKICAgICByZXR1cm4gbGlua0ZvcihjYWxsZWVG
cmFtZSwgZ2xvYmFsT2JqZWN0LCBjYWxsTGlua0luZm8pOwogfQogCiBKU0NfREVGSU5FX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uTGlua1BvbHltb3JwaGljQ2FsbCwgU2xvd1BhdGhSZXR1cm5UeXBl
LCAoQ2FsbEZyYW1lKiBjYWxsZWVGcmFtZSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8pKQogeworICAgIHNhbml0aXplU3RhY2tGb3JWTShn
bG9iYWxPYmplY3QtPnZtKCkpOwogICAgIEFTU0VSVChjYWxsTGlua0luZm8tPnNwZWNpYWxpemF0
aW9uS2luZCgpID09IENvZGVGb3JDYWxsKTsKICAgICBKU0NlbGwqIGNhbGxlZUFzRnVuY3Rpb25D
ZWxsOwogICAgIFNsb3dQYXRoUmV0dXJuVHlwZSByZXN1bHQgPSB2aXJ0dWFsRm9yV2l0aEZ1bmN0
aW9uKGdsb2JhbE9iamVjdCwgY2FsbGVlRnJhbWUsIGNhbGxMaW5rSW5mbywgY2FsbGVlQXNGdW5j
dGlvbkNlbGwpOwpAQCAtMTQ2NCw2ICsxNDY2LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbkxpbmtQbwogCiBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uVmly
dHVhbENhbGwsIFNsb3dQYXRoUmV0dXJuVHlwZSwgKENhbGxGcmFtZSogY2FsbGVlRnJhbWUsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvKSkK
IHsKKyAgICBzYW5pdGl6ZVN0YWNrRm9yVk0oZ2xvYmFsT2JqZWN0LT52bSgpKTsKICAgICBKU0Nl
bGwqIGNhbGxlZUFzRnVuY3Rpb25DZWxsSWdub3JlZDsKICAgICByZXR1cm4gdmlydHVhbEZvcldp
dGhGdW5jdGlvbihnbG9iYWxPYmplY3QsIGNhbGxlZUZyYW1lLCBjYWxsTGlua0luZm8sIGNhbGxl
ZUFzRnVuY3Rpb25DZWxsSWdub3JlZCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1RodW5rR2VuZXJhdG9ycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCShyZXZpc2lvbiAyODg2NDUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0xOTIsNyArMTkyLDYgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiB0
aAogCiBzdGF0aWMgdm9pZCBzbG93UGF0aEZvcihDQ2FsbEhlbHBlcnMmIGppdCwgVk0mIHZtLCBT
cHJ0X0pJVE9wZXJhdGlvbl9FR0NsaSBzbG93UGF0aEZ1bmN0aW9uKQogewotICAgIGppdC5zYW5p
dGl6ZVN0YWNrSW5saW5lKHZtLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKICAgICBqaXQuZW1pdEZ1
bmN0aW9uUHJvbG9ndWUoKTsKICAgICBqaXQuc3RvcmVQdHIoR1BSSW5mbzo6Y2FsbEZyYW1lUmVn
aXN0ZXIsICZ2bS50b3BDYWxsRnJhbWUpOwogI2lmIE9TKFdJTkRPV1MpICYmIENQVShYODZfNjQp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5n
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFs
aXplVGhyZWFkaW5nLmNwcAkocmV2aXNpb24gMjg4NjQ1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUw
LDYgKzUwLDM1IEBAIG5hbWVzcGFjZSBKU0MgewogCiBzdGF0aWNfYXNzZXJ0KHNpemVvZihib29s
KSA9PSAxLCAiTExJbnQgYW5kIEpJVCBhc3N1bWUgc2l6ZW9mKGJvb2wpIGlzIGFsd2F5cyAxIHdo
ZW4gdG91Y2hpbmcgaXQgZGlyZWN0bHkgZnJvbSBhc3NlbWJseSBjb2RlLiIpOwogCitORVZFUl9J
TkxJTkUgdm9pZCBtbGFtVGVzdChpbnQgY29kZSk7CisKK05FVkVSX0lOTElORSB2b2lkIG1sYW1U
ZXN0KGludCBjb2RlKSB7CisjaWYgT1MoREFSV0lOKSAmJiBDUFUoQVJNNjQpCisgICAgV1RGOjpU
aHJlYWRJZGVudGlmaWVyIGFbMTAwMF07CisgICAgV1RGOjpUaHJlYWRJZGVudGlmaWVyIGJbMTAw
MF07CisgICAgaW50IG51bUZhaWx1cmVzID0gMDsKKyAgICBpbnQgZmlyc3RGYWlsdXJlID0gMDsK
KyAgICBpbnQgbGFzdEZhaWx1cmUgPSAwOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMTAwMDsg
KytpKSB7CisgICAgICAgIGF1dG8mIHRocmVhZCA9IFRocmVhZDo6Y3VycmVudCgpOworLy8gICAg
ICAgIFJFTEVBU0VfQVNTRVJUKHRocmVhZC5pZCgpID09IFRocmVhZDo6Y3VycmVudElEKCksIGNv
ZGUsIHRocmVhZC5pZCgpLCBUaHJlYWQ6OmN1cnJlbnRJRCgpLCBpKTsgLy8gbWxhbSBURVNUCisg
ICAgICAgIGF1dG8gaWRBID0gdGhyZWFkLmlkKCk7CisgICAgICAgIGF1dG8gaWRCID0gVGhyZWFk
OjpjdXJyZW50SUQoKTsKKyAgICAgICAgaWYgKGlkQSAhPSBpZEIpIHsKKyAgICAgICAgICAgIGFb
aV0gPSBpZEE7CisgICAgICAgICAgICBiW2ldID0gaWRCOworICAgICAgICAgICAgaWYgKCFudW1G
YWlsdXJlcykKKyAgICAgICAgICAgICAgICBmaXJzdEZhaWx1cmUgPSBpOworICAgICAgICAgICAg
bnVtRmFpbHVyZXMrKzsKKyAgICAgICAgICAgIGxhc3RGYWlsdXJlID0gaTsKKyAgICAgICAgfQor
ICAgIH0KKyAgICBSRUxFQVNFX0FTU0VSVChudW1GYWlsdXJlcyA9PSAwLCBjb2RlLCBudW1GYWls
dXJlcywgYVtmaXJzdEZhaWx1cmVdLCBiW2ZpcnN0RmFpbHVyZV0sIChmaXJzdEZhaWx1cmUgPDwg
MTYgfCBsYXN0RmFpbHVyZSksIGFbbGFzdEZhaWx1cmVdLCBiW2xhc3RGYWlsdXJlXSk7CisjZWxz
ZQorICAgIFVOVVNFRF9QQVJBTShjb2RlKTsKKyNlbmRpZgorfQorCiB2b2lkIGluaXRpYWxpemUo
KQogewogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKQEAgLTkwLDYgKzExOSw4
IEBAIHZvaWQgaW5pdGlhbGl6ZSgpCiAgICAgICAgIGluaXRpYWxpemVTdXBlclNhbXBsZXIoKTsK
ICAgICAgICAgVGhyZWFkJiB0aHJlYWQgPSBUaHJlYWQ6OmN1cnJlbnQoKTsKICAgICAgICAgdGhy
ZWFkLnNldFNhdmVkTGFzdFN0YWNrVG9wKHRocmVhZC5zdGFjaygpLm9yaWdpbigpKTsKKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlQodGhyZWFkLmlkKCkgPT0gVGhyZWFkOjpjdXJyZW50SUQoKSwgMHgx
MTEsIHRocmVhZC5pZCgpLCBUaHJlYWQ6OmN1cnJlbnRJRCgpKTsgLy8gbWxhbSBURVNUCisgICAg
ICAgIG1sYW1UZXN0KDB4MzExKTsKIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICAgICAg
aWYgKFdhc206OmlzU3VwcG9ydGVkKCkpIHsKQEAgLTExMyw3ICsxNDQsOSBAQCB2b2lkIGluaXRp
YWxpemUoKQogICAgICAgICBXVEY6OmNvbXBpbGVyRmVuY2UoKTsKICAgICAgICAgUkVMRUFTRV9B
U1NFUlQoIWdfanNjQ29uZmlnLmluaXRpYWxpemVIYXNCZWVuQ2FsbGVkKTsKICAgICAgICAgZ19q
c2NDb25maWcuaW5pdGlhbGl6ZUhhc0JlZW5DYWxsZWQgPSB0cnVlOworICAgICAgICBtbGFtVGVz
dCgweDQxMSk7CiAgICAgfSk7CisgICAgbWxhbVRlc3QoMHg1MTEpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmNwcAko
cmV2aXNpb24gMjg4NjQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2Nr
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDUtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDUtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKQEAgLTM5LDYgKzM5LDggQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK05FVkVSX0lO
TElORSB2b2lkIG1sYW1UZXN0KGludCBjb2RlKTsKKwogTG9jayBHbG9iYWxKU0xvY2s6OnNfc2hh
cmVkSW5zdGFuY2VNdXRleDsKIAogR2xvYmFsSlNMb2NrOjpHbG9iYWxKU0xvY2soKQpAQCAtMTA5
LDYgKzExMSw3IEBAIHZvaWQgSlNMb2NrOjpsb2NrKGludHB0cl90IGxvY2tDb3VudCkgV1QKICAg
ICB9CiAjZW5kaWYKIAorICAgIG1sYW1UZXN0KDB4NjExKTsKICAgICBib29sIHN1Y2Nlc3MgPSBt
X2xvY2sudHJ5TG9jaygpOwogICAgIGlmIChVTkxJS0VMWSghc3VjY2VzcykpIHsKICAgICAgICAg
aWYgKGN1cnJlbnRUaHJlYWRJc0hvbGRpbmdMb2NrKCkpIHsKQEAgLTEyNSw2ICsxMjgsNyBAQCB2
b2lkIEpTTG9jazo6bG9jayhpbnRwdHJfdCBsb2NrQ291bnQpIFdUCiAgICAgbV9sb2NrQ291bnQg
PSBsb2NrQ291bnQ7CiAKICAgICBkaWRBY3F1aXJlTG9jaygpOworICAgIG1sYW1UZXN0KDB4NzEx
KTsKIH0KIAogdm9pZCBKU0xvY2s6OmRpZEFjcXVpcmVMb2NrKCkKQEAgLTEzOCw4ICsxNDIsNyBA
QCB2b2lkIEpTTG9jazo6ZGlkQWNxdWlyZUxvY2soKQogICAgIG1fZW50cnlBdG9tU3RyaW5nVGFi
bGUgPSB0aHJlYWQuc2V0Q3VycmVudEF0b21TdHJpbmdUYWJsZShtX3ZtLT5hdG9tU3RyaW5nVGFi
bGUoKSk7CiAgICAgQVNTRVJUKG1fZW50cnlBdG9tU3RyaW5nVGFibGUpOwogCi0gICAgbV92bS0+
c2V0TGFzdFN0YWNrVG9wKHRocmVhZC5zYXZlZExhc3RTdGFja1RvcCgpKTsKLSAgICBBU1NFUlQo
dGhyZWFkLnN0YWNrKCkuY29udGFpbnMobV92bS0+bGFzdFN0YWNrVG9wKCkpKTsKKyAgICBtX3Zt
LT5zZXRMYXN0U3RhY2tUb3AodGhyZWFkKTsKIAogICAgIGlmIChtX3ZtLT5oZWFwLmhhc0FjY2Vz
cygpKQogICAgICAgICBtX3Nob3VsZFJlbGVhc2VIZWFwQWNjZXNzID0gZmFsc2U7CkBAIC0xODQs
NiArMTg3LDcgQEAgdm9pZCBKU0xvY2s6OnVubG9jayhpbnRwdHJfdCB1bmxvY2tDb3VudAogICAg
IFJFTEVBU0VfQVNTRVJUKGN1cnJlbnRUaHJlYWRJc0hvbGRpbmdMb2NrKCkpOwogICAgIEFTU0VS
VChtX2xvY2tDb3VudCA+PSB1bmxvY2tDb3VudCk7CiAKKyAgICBtbGFtVGVzdCgweDgxMSk7CiAg
ICAgLy8gTWFpbnRhaW4gbV9sb2NrQ291bnQgd2hpbGUgY2FsbGluZyB3aWxsUmVsZWFzZUxvY2so
KSBzbyB0aGF0IGl0cyBjYWxsZWVzIGtub3cgdGhhdAogICAgIC8vIHRoZXkgc3RpbGwgaGF2ZSB0
aGUgbG9jay4KICAgICBpZiAodW5sb2NrQ291bnQgPT0gbV9sb2NrQ291bnQpCkBAIC0xOTUsNiAr
MTk5LDcgQEAgdm9pZCBKU0xvY2s6OnVubG9jayhpbnRwdHJfdCB1bmxvY2tDb3VudAogICAgICAg
ICBtX2hhc093bmVyVGhyZWFkID0gZmFsc2U7CiAgICAgICAgIG1fbG9jay51bmxvY2soKTsKICAg
ICB9CisgICAgbWxhbVRlc3QoMHg5MTEpOwogfQogCiB2b2lkIEpTTG9jazo6d2lsbFJlbGVhc2VM
b2NrKCkKQEAgLTI3Nyw3ICsyODIsNyBAQCB2b2lkIEpTTG9jazo6Z3JhYkFsbExvY2tzKERyb3BB
bGxMb2NrcyogCiAKICAgICBUaHJlYWQmIHRocmVhZCA9IFRocmVhZDo6Y3VycmVudCgpOwogICAg
IG1fdm0tPnNldFN0YWNrUG9pbnRlckF0Vk1FbnRyeSh0aHJlYWQuc2F2ZWRTdGFja1BvaW50ZXJB
dFZNRW50cnkoKSk7Ci0gICAgbV92bS0+c2V0TGFzdFN0YWNrVG9wKHRocmVhZC5zYXZlZExhc3RT
dGFja1RvcCgpKTsKKyAgICBtX3ZtLT5zZXRMYXN0U3RhY2tUb3AodGhyZWFkKTsKIH0KIAogSlNM
b2NrOjpEcm9wQWxsTG9ja3M6OkRyb3BBbGxMb2NrcyhWTSogdm0pCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uY3BwCShyZXZpc2lvbiAyODg2NDUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMzUsNiArMTM1LDgg
QEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK05FVkVSX0lOTElORSB2b2lkIG1sYW1UZXN0KGludCBj
b2RlKTsKKwogQXRvbWljPHVuc2lnbmVkPiBWTTo6c19udW1iZXJPZklEczsKIAogREVGSU5FX0FM
TE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihWTSk7CkBAIC0yNDIsOSArMjQ0LDggQEAgVk06
OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlLAogICAgICAgICBDUkFTSF9XSVRI
X0lORk8oMHg0MjQyNDI0MjIwMjAyMDIwLCAweGJhZGJlZWYwYmFkYmVlZiwgMHgxMjM0MTIzNDEy
MzQxMjM0LCAweDEzMzcxMzM3MTMzNzEzMzcpOwogCiAgICAgaW50ZXJwcmV0ZXIgPSBuZXcgSW50
ZXJwcmV0ZXIoKnRoaXMpOwotICAgIFN0YWNrQm91bmRzIHN0YWNrID0gVGhyZWFkOjpjdXJyZW50
KCkuc3RhY2soKTsKICAgICB1cGRhdGVTb2Z0UmVzZXJ2ZWRab25lU2l6ZShPcHRpb25zOjpzb2Z0
UmVzZXJ2ZWRab25lU2l6ZSgpKTsKLSAgICBzZXRMYXN0U3RhY2tUb3Aoc3RhY2sub3JpZ2luKCkp
OworICAgIHNldExhc3RTdGFja1RvcChUaHJlYWQ6OmN1cnJlbnQoKSk7CiAKICAgICBKU1J1bkxv
b3BUaW1lcjo6TWFuYWdlcjo6c2hhcmVkKCkucmVnaXN0ZXJWTSgqdGhpcyk7CiAKQEAgLTUwMyw5
ICs1MDQsMTUgQEAgdm9pZCBWTTo6cHJpbWl0aXZlR2lnYWNhZ2VEaXNhYmxlZCgpCiAgICAgbV9u
ZWVkVG9GaXJlUHJpbWl0aXZlR2lnYWNhZ2VFbmFibGVkID0gdHJ1ZTsKIH0KIAotdm9pZCBWTTo6
c2V0TGFzdFN0YWNrVG9wKHZvaWQqIGxhc3RTdGFja1RvcCkKLXsgCi0gICAgbV9sYXN0U3RhY2tU
b3AgPSBsYXN0U3RhY2tUb3A7Cit2b2lkIFZNOjpzZXRMYXN0U3RhY2tUb3AoY29uc3QgVGhyZWFk
JiB0aHJlYWQpCit7CisgICAgbV9sYXN0U3RhY2tUb3AgPSB0aHJlYWQuc2F2ZWRMYXN0U3RhY2tU
b3AoKTsKKyAgICBhdXRvJiBzdGFjayA9IHRocmVhZC5zdGFjaygpOworICAgIFJFTEVBU0VfQVNT
RVJUKHN0YWNrLmNvbnRhaW5zKG1fbGFzdFN0YWNrVG9wKSwgMHg1NTEwLCBtX2xhc3RTdGFja1Rv
cCwgc3RhY2sub3JpZ2luKCksIHN0YWNrLmVuZCgpKTsKKyNpZiBPUyhEQVJXSU4pICYmIENQVShB
Uk02NCkKKyAgICBSRUxFQVNFX0FTU0VSVCh0aHJlYWQuaWQoKSA9PSBUaHJlYWQ6OmN1cnJlbnRJ
RCgpLCAweDU1MjAsIHRocmVhZC5pZCgpLCBUaHJlYWQ6OmN1cnJlbnRJRCgpKTsKKyNlbmRpZgor
ICAgIG1sYW1UZXN0KDB4MTYxMSk7CiB9CiAKIFJlZjxWTT4gVk06OmNyZWF0ZUNvbnRleHRHcm91
cChIZWFwVHlwZSBoZWFwVHlwZSkKQEAgLTEwNTAsMTYgKzEwNTcsMTEgQEAgdm9pZCBWTTo6cG9w
QWxsQ2hlY2twb2ludE9TUlNpZGVTdGF0ZVVudAogICAgIG1fY2hlY2twb2ludFNpZGVTdGF0ZS5z
aHJpbmtUb0ZpdCgpOwogfQogCi12b2lkIGxvZ1Nhbml0aXplU3RhY2soVk0mIHZtKQorc3RhdGlj
IHZvaWQgbG9nU2FuaXRpemVTdGFjayhWTSYgdm0pCiB7Ci0gICAgaWYgKE9wdGlvbnM6OnZlcmJv
c2VTYW5pdGl6ZVN0YWNrKCkgJiYgdm0udG9wQ2FsbEZyYW1lKSB7Ci0gICAgICAgIGludCBkdW1t
eTsKKyAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6dmVyYm9zZVNhbml0aXplU3RhY2soKSkpIHsK
ICAgICAgICAgYXV0byYgc3RhY2tCb3VuZHMgPSBUaHJlYWQ6OmN1cnJlbnQoKS5zdGFjaygpOwot
ICAgICAgICBkYXRhTG9nKAotICAgICAgICAgICAgIlNhbml0aXppbmcgc3RhY2sgZm9yIFZNID0g
IiwgUmF3UG9pbnRlcigmdm0pLCAiIHdpdGggdG9wIGNhbGwgZnJhbWUgYXQgIiwgUmF3UG9pbnRl
cih2bS50b3BDYWxsRnJhbWUpLAotICAgICAgICAgICAgIiwgY3VycmVudCBzdGFjayBwb2ludGVy
IGF0ICIsIFJhd1BvaW50ZXIoJmR1bW15KSwgIiwgaW4gIiwKLSAgICAgICAgICAgIHBvaW50ZXJE
dW1wKHZtLnRvcENhbGxGcmFtZS0+Y29kZUJsb2NrKCkpLCAiLCBsYXN0IGNvZGUgb3JpZ2luID0g
IiwKLSAgICAgICAgICAgIHZtLnRvcENhbGxGcmFtZS0+Y29kZU9yaWdpbigpLCAiLCBsYXN0IHN0
YWNrIHRvcCA9ICIsIFJhd1BvaW50ZXIodm0ubGFzdFN0YWNrVG9wKCkpLCAiLCBpbiBzdGFjayBy
YW5nZSBbIiwgUmF3UG9pbnRlcihzdGFja0JvdW5kcy5vcmlnaW4oKSksICIsICIsIFJhd1BvaW50
ZXIoc3RhY2tCb3VuZHMuZW5kKCkpLCAiXVxuIik7CisgICAgICAgIGRhdGFMb2dMbigiU2FuaXRp
emluZyBzdGFjayBmb3IgVk0gPSAiLCBSYXdQb2ludGVyKCZ2bSksICIsIGN1cnJlbnQgc3RhY2sg
cG9pbnRlciBhdCAiLCBSYXdQb2ludGVyKGN1cnJlbnRTdGFja1BvaW50ZXIoKSksICIsIGxhc3Qg
c3RhY2sgdG9wID0gIiwgUmF3UG9pbnRlcih2bS5sYXN0U3RhY2tUb3AoKSksICIsIGluIHN0YWNr
IHJhbmdlICgiLCBSYXdQb2ludGVyKHN0YWNrQm91bmRzLmVuZCgpKSwgIiwgIiwgUmF3UG9pbnRl
cihzdGFja0JvdW5kcy5vcmlnaW4oKSksICJdIik7CiAgICAgfQogfQogCkBAIC0xMjcwLDE3ICsx
MjcyLDI1IEBAIHZvaWQgUXVldWVkVGFzazo6cnVuKCkKIAogdm9pZCBzYW5pdGl6ZVN0YWNrRm9y
Vk0oVk0mIHZtKQogeworICAgIGF1dG8mIHRocmVhZCA9IFRocmVhZDo6Y3VycmVudCgpOworI2lm
IE9TKERBUldJTikgJiYgQ1BVKEFSTTY0KQorICAgIFJFTEVBU0VfQVNTRVJUKHRocmVhZC5pZCgp
ID09IFRocmVhZDo6Y3VycmVudElEKCksIDB4YWExMCwgdGhyZWFkLmlkKCksIFRocmVhZDo6Y3Vy
cmVudElEKCkpOworI2VuZGlmCisgICAgYXV0byYgc3RhY2sgPSB0aHJlYWQuc3RhY2soKTsKKyAg
ICBpZiAoIXZtLmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpCisgICAgICAgIHJldHVy
bjsgLy8gdm0ubGFzdFN0YWNrVG9wKCkgbWF5IG5vdCBiZSBzZXQgdXAgY29ycmVjdGx5IGlmIEpT
TG9jayBpcyBub3QgaGVsZC4KKwogICAgIGxvZ1Nhbml0aXplU3RhY2sodm0pOwotICAgIGlmICh2
bS50b3BDYWxsRnJhbWUpIHsKLSAgICAgICAgYXV0byYgc3RhY2tCb3VuZHMgPSBUaHJlYWQ6OmN1
cnJlbnQoKS5zdGFjaygpOwotICAgICAgICBBU1NFUlQodm0uY3VycmVudFRocmVhZElzSG9sZGlu
Z0FQSUxvY2soKSk7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQoc3RhY2tCb3VuZHMsIHN0YWNrQm91
bmRzLmNvbnRhaW5zKHZtLmxhc3RTdGFja1RvcCgpKSk7Ci0gICAgfQorCisgICAgUkVMRUFTRV9B
U1NFUlQoc3RhY2suY29udGFpbnModm0ubGFzdFN0YWNrVG9wKCkpLCAweGFhMjAsIHZtLmxhc3RT
dGFja1RvcCgpLCBzdGFjay5vcmlnaW4oKSwgc3RhY2suZW5kKCkpOwogI2lmIEVOQUJMRShDX0xP
T1ApCiAgICAgdm0uaW50ZXJwcmV0ZXItPmNsb29wU3RhY2soKS5zYW5pdGl6ZVN0YWNrKCk7CiAj
ZWxzZQogICAgIHNhbml0aXplU3RhY2tGb3JWTUltcGwoJnZtKTsKICNlbmRpZgorICAgIFJFTEVB
U0VfQVNTRVJUKHN0YWNrLmNvbnRhaW5zKHZtLmxhc3RTdGFja1RvcCgpKSwgMHhhYTMwLCB2bS5s
YXN0U3RhY2tUb3AoKSwgc3RhY2sub3JpZ2luKCksIHN0YWNrLmVuZCgpKTsKKworICAgIG1sYW1U
ZXN0KDB4MTUxMSk7CiB9CiAKIHNpemVfdCBWTTo6Y29tbWl0dGVkU3RhY2tCeXRlQ291bnQoKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCShyZXZpc2lvbiAyODg2NDUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOC0yMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDIyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNzg1
LDcgKzc4NSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQqKiBhZGRyZXNzT2ZMYXN0U3RhY2tUb3Ao
KSB7IHJldHVybiAmbV9sYXN0U3RhY2tUb3A7IH0KICAgICB2b2lkKiBsYXN0U3RhY2tUb3AoKSB7
IHJldHVybiBtX2xhc3RTdGFja1RvcDsgfQotICAgIHZvaWQgc2V0TGFzdFN0YWNrVG9wKHZvaWQq
KTsKKyAgICB2b2lkIHNldExhc3RTdGFja1RvcChjb25zdCBUaHJlYWQmKTsKICAgICAKICAgICB2
b2lkIGZpcmVQcmltaXRpdmVHaWdhY2FnZUVuYWJsZWRJZk5lY2Vzc2FyeSgpCiAgICAgewpAQCAt
MTE3Myw2ICsxMTczLDUgQEAgZXh0ZXJuICJDIiB2b2lkIHNhbml0aXplU3RhY2tGb3JWTUltcGwo
VgogI2VuZGlmCiAKIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc2FuaXRpemVTdGFja0ZvclZNKFZN
Jik7Ci12b2lkIGxvZ1Nhbml0aXplU3RhY2soVk0mKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCklu
ZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5n
ZUxvZwkocmV2aXNpb24gMjg4NjQ1KQorKysgU291cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwyNCBAQAorMjAyMi0wMS0yNyAgTWFyayBMYW0gIDxtYXJrLmxhbUBh
cHBsZS5jb20+CisKKyAgICAgICAgRW5oYW5jZSBzYW5pdGl6ZVN0YWNrRm9yVk0oKSB0byBhc3Np
c3Qgd2l0aCBjcmFzaCBhbmFseXNpcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzNTc1MgorICAgICAgICByZGFyOi8vODEwMTQ2MDEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3Ig
VGhyZWFkSWRlbnRpZmllciBhbmQgVGhyZWFkOjpjdXJyZW50SUQoKSBvbiBPUyhEQVJXSU4pLiAg
VGhpcyBjYW4KKyAgICAgICAgYmUgdXNlZCB0byBkZXRlY3QgVExTIGNvcnJ1cHRpb24gLyBidWdz
LgorCisgICAgICAgICogd3RmL1RocmVhZGluZy5jcHA6CisgICAgICAgIChXVEY6OlRocmVhZDo6
aW5pdGlhbGl6ZUluVGhyZWFkKToKKyAgICAgICAgKiB3dGYvVGhyZWFkaW5nLmg6CisgICAgICAg
IChXVEY6OlRocmVhZDo6c2F2ZWRTdGFja1BvaW50ZXJBdFZNRW50cnkgY29uc3QpOgorICAgICAg
ICAoV1RGOjpUaHJlYWQ6OnNhdmVkTGFzdFN0YWNrVG9wIGNvbnN0KToKKyAgICAgICAgKFdURjo6
VGhyZWFkOjpjdXJyZW50SUQpOgorICAgICAgICAoV1RGOjpUaHJlYWQ6OnNhdmVkU3RhY2tQb2lu
dGVyQXRWTUVudHJ5KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6VGhyZWFkOjpzYXZlZExhc3RT
dGFja1RvcCk6IERlbGV0ZWQuCisgICAgICAgICogd3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaDoK
KwogMjAyMi0wMS0yNSAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbbWFjT1NdIEFkZCBuZXcgc2NyZWVuIGFuZCB3aW5kb3cgY2FwdHVyZSBiYWNrZW5k
CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XVEYvd3RmL1RocmVhZGluZy5jcHAJKHJldmlzaW9uIDI4ODY0NSkKKysrIFNvdXJjZS9XVEYv
d3RmL1RocmVhZGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1OSw4ICsxNTksMzkgQEAgdm9p
ZCBUaHJlYWQ6OmluaXRpYWxpemVJblRocmVhZCgpCiAgICAgfQogI2VuZGlmCiAKLSNpZiBPUyhM
SU5VWCkKLSAgICBtX2lkID0gY3VycmVudElEKCk7CisjaWYgVVNFKFBUSFJFQURTKQorLy8gICAg
bV9pZCA9IGN1cnJlbnRJRCgpOworICAgIFRocmVhZElkZW50aWZpZXIgaWQgPSBjdXJyZW50SUQo
KTsKKy8vICAgIFJFTEVBU0VfQVNTRVJUKChpZCAmIDB4NykgPT0gMCwgMHgzMjMsIGlkKTsKKyNp
ZiBPUyhEQVJXSU4pICYmIENQVShBUk02NCkKKyAgICBpZiAoaWQgJiAweDcpIHsKKyAgICAgICAg
V1RGOjpUaHJlYWRJZGVudGlmaWVyIGFbMTAwMF07CisgICAgICAgIGludCBudW1GYWlsdXJlcyA9
IDA7CisgICAgICAgIGludCBmaXJzdEZhaWx1cmUgPSAwOworICAgICAgICBpbnQgbGFzdEZhaWx1
cmUgPSAwOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDEwMDA7ICsraSkgeworICAgICAg
ICAgICAgV1RGOjpUaHJlYWRJZGVudGlmaWVyIGlkMiA9IDA7CisgICAgICAgICAgICBhc20gKAor
ICAgICAgICAgICAgICAgICJtcnMgJXhbaWQyXSwgVFBJRFJST19FTDAiCisgICAgICAgICAgICAg
ICAgOiBbaWQyXSAiPXIiIChpZDIpIDogOgorICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIGFb
aV0gPSBpZDI7CisgICAgICAgICAgICBpZiAoaWQyICE9IGlkKSB7CisgICAgICAgICAgICAgICAg
aWYgKG51bUZhaWx1cmVzID09IDApCisgICAgICAgICAgICAgICAgICAgIGZpcnN0RmFpbHVyZSA9
IGk7CisgICAgICAgICAgICAgICAgbnVtRmFpbHVyZXMrKzsKKyAgICAgICAgICAgICAgICBsYXN0
RmFpbHVyZSA9IGk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgUkVMRUFTRV9B
U1NFUlQoKGlkICYgMHg3KSA9PSAwLCAweDMyMywgaWQsIG51bUZhaWx1cmVzLCBmaXJzdEZhaWx1
cmUsIGFbZmlyc3RGYWlsdXJlXSwgbGFzdEZhaWx1cmUsIGFbbGFzdEZhaWx1cmVdKTsKKyAgICB9
CisjZW5kaWYgLy8gT1MoREFSV0lOKSAmJiBDUFUoQVJNNjQpCisgICAgbV9pZCA9IGlkOworICAg
IFJFTEVBU0VfQVNTRVJUKGlkID09IFRocmVhZDo6Y3VycmVudElEKCksIDB4NDIzLCBpZCwgVGhy
ZWFkOjpjdXJyZW50SUQoKSk7IC8vIG1sYW0gVEVTVAorICAgIFJFTEVBU0VfQVNTRVJUKG1faWQg
PT0gY3VycmVudElEKCksIDB4MTIzLCBtX2lkLCBjdXJyZW50SUQoKSk7IC8vIG1sYW0gVEVTVAor
ICAgIFJFTEVBU0VfQVNTRVJUKG1faWQgPT0gVGhyZWFkOjpjdXJyZW50SUQoKSwgMHgyMjMsIG1f
aWQsIFRocmVhZDo6Y3VycmVudElEKCkpOyAvLyBtbGFtIFRFU1QKKyNlbHNlCisgICAgUkVMRUFT
RV9BU1NFUlQobV9pZCA9PSBjdXJyZW50SUQoKSk7CiAjZW5kaWYKIH0KIApJbmRleDogU291cmNl
L1dURi93dGYvVGhyZWFkaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvVGhyZWFk
aW5nLmgJKHJldmlzaW9uIDI4ODY0NSkKKysrIFNvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNy0y
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
Ny0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykg
MjAwNyBKdXN0aW4gSGF5Z29vZCA8amhheWdvb2RAcmVha3RpeC5jb20+CiAgKiBDb3B5cmlnaHQg
KEMpIDIwMTcgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogICoKQEAgLTEz
MCwxNSArMTMwLDE4IEBAIHB1YmxpYzoKIAogICAgIHVpbnQzMl90IHVpZCgpIGNvbnN0IHsgcmV0
dXJuIG1fdWlkOyB9CiAKLSNpZiBPUyhXSU5ET1dTKQogICAgIC8vIFJldHVybnMgVGhyZWFkSWRl
bnRpZmllciBkaXJlY3RseS4gSXQgaXMgdXNlZnVsIGlmIHRoZSB1c2VyIG9ubHkgY2FyZXMgYWJv
dXQgaWRlbnRpdHkKICAgICAvLyBvZiB0aHJlYWRzLiBBdCB0aGF0IHRpbWUsIHVzZXJzIHNob3Vs
ZCBrbm93IHRoYXQgaG9sZGluZyB0aGlzIFRocmVhZElkZW50aWZpZXIgZG9lcyBub3QgZW5zdXJl
CiAgICAgLy8gdGhhdCB0aGUgdGhyZWFkIGluZm9ybWF0aW9uIGlzIGFsaXZlLiBXaGlsZSBUaHJl
YWQ6OmN1cnJlbnQoKSBpcyBub3Qgc2FmZSBpZiBpdCBpcyBjYWxsZWQKICAgICAvLyBmcm9tIHRo
ZSBkZXN0cnVjdG9yIG9mIHRoZSBvdGhlciBUTFMgZGF0YSwgY3VycmVudElEKCkgYWx3YXlzIHJl
dHVybnMgbWVhbmluZ2Z1bCB0aHJlYWQgSUQuCisjaWYgT1MoREFSV0lOKQorICAgIEFMV0FZU19J
TkxJTkUgc3RhdGljIFRocmVhZElkZW50aWZpZXIgY3VycmVudElEKCk7CisjZWxzZQogICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgVGhyZWFkSWRlbnRpZmllciBjdXJyZW50SUQoKTsKLQor
I2VuZGlmCiAgICAgVGhyZWFkSWRlbnRpZmllciBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0K
IAorI2lmIE9TKFdJTkRPV1MpCiAgICAgY2xhc3MgU3BlY2lmaWNTdG9yYWdlIHsKICAgICBwdWJs
aWM6CiAgICAgICAgIHVzaW5nIERlc3Ryb3lGdW5jdGlvbiA9IHZvaWQgKCopKHZvaWQqKTsKQEAg
LTE3NiwxMCArMTc5LDYgQEAgcHVibGljOgogICAgIFdURl9FWFBPUlRfUFJJVkFURSBzaXplX3Qg
Z2V0UmVnaXN0ZXJzKFBsYXRmb3JtUmVnaXN0ZXJzJik7CiAKICNpZiBVU0UoUFRIUkVBRFMpCi0j
aWYgT1MoTElOVVgpCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBUaHJlYWRJZGVudGlm
aWVyIGN1cnJlbnRJRCgpOwotICAgIFRocmVhZElkZW50aWZpZXIgaWQoKSBjb25zdCB7IHJldHVy
biBtX2lkOyB9Ci0jZW5kaWYKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBzaWduYWwoaW50
IHNpZ25hbE51bWJlcik7CiAjZW5kaWYKIApAQCAtMjMxLDcgKzIzMCw3IEBAIHB1YmxpYzoKICAg
ICB9CiAjZW5kaWYKIAotICAgIHZvaWQqIHNhdmVkU3RhY2tQb2ludGVyQXRWTUVudHJ5KCkKKyAg
ICB2b2lkKiBzYXZlZFN0YWNrUG9pbnRlckF0Vk1FbnRyeSgpIGNvbnN0CiAgICAgewogICAgICAg
ICByZXR1cm4gbV9zYXZlZFN0YWNrUG9pbnRlckF0Vk1FbnRyeTsKICAgICB9CkBAIC0yNDEsNyAr
MjQwLDcgQEAgcHVibGljOgogICAgICAgICBtX3NhdmVkU3RhY2tQb2ludGVyQXRWTUVudHJ5ID0g
c3RhY2tQb2ludGVyQXRWTUVudHJ5OwogICAgIH0KIAotICAgIHZvaWQqIHNhdmVkTGFzdFN0YWNr
VG9wKCkKKyAgICB2b2lkKiBzYXZlZExhc3RTdGFja1RvcCgpIGNvbnN0CiAgICAgewogICAgICAg
ICByZXR1cm4gbV9zYXZlZExhc3RTdGFja1RvcDsKICAgICB9CkBAIC0zNTMsMTQgKzM1MiwxMCBA
QCBwcm90ZWN0ZWQ6CiAgICAgSGFzaE1hcDxUaHJlYWRHcm91cCosIHN0ZDo6d2Vha19wdHI8VGhy
ZWFkR3JvdXA+PiBtX3RocmVhZEdyb3VwTWFwOwogICAgIFBsYXRmb3JtVGhyZWFkSGFuZGxlIG1f
aGFuZGxlOwogICAgIHVpbnQzMl90IG1fdWlkOwotI2lmIE9TKFdJTkRPV1MpCiAgICAgVGhyZWFk
SWRlbnRpZmllciBtX2lkIHsgMCB9OwotI2VsaWYgT1MoREFSV0lOKQorI2lmIE9TKERBUldJTikK
ICAgICBtYWNoX3BvcnRfdCBtX3BsYXRmb3JtVGhyZWFkIHsgTUFDSF9QT1JUX05VTEwgfTsKICNl
bGlmIFVTRShQVEhSRUFEUykKLSNpZiBPUyhMSU5VWCkKLSAgICBUaHJlYWRJZGVudGlmaWVyIG1f
aWQgeyAwIH07Ci0jZW5kaWYKICAgICBQbGF0Zm9ybVJlZ2lzdGVycyogbV9wbGF0Zm9ybVJlZ2lz
dGVycyB7IG51bGxwdHIgfTsKICAgICB1bnNpZ25lZCBtX3N1c3BlbmRDb3VudCB7IDAgfTsKICNl
bmRpZgpAQCAtNDIwLDYgKzQxNSwyMyBAQCBpbmxpbmUgVGhyZWFkJiBUaHJlYWQ6OmN1cnJlbnQo
KQogICAgIHJldHVybiBpbml0aWFsaXplQ3VycmVudFRMUygpOwogfQogCisjaWYgT1MoREFSV0lO
KQorQUxXQVlTX0lOTElORSBUaHJlYWRJZGVudGlmaWVyIFRocmVhZDo6Y3VycmVudElEKCkKK3sK
KyAgICBUaHJlYWRJZGVudGlmaWVyIHJlc3VsdDsKKyNpZiBDUFUoQVJNNjQpCisgICAgYXNtICgK
KyAgICAgICAgIm1ycyAleFtyZXN1bHRdLCBUUElEUlJPX0VMMCIKKyAgICAgICAgOiBbcmVzdWx0
XSAiPXIiIChyZXN1bHQpIDogOgorICAgICk7CisjZWxzZQorICAgIHJlc3VsdCA9IGJpdHdpc2Vf
Y2FzdDxUaHJlYWRJZGVudGlmaWVyPihwdGhyZWFkX3NlbGYoKSk7CisjZW5kaWYKKyAgICBBU1NF
UlQocmVzdWx0KTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNw
YWNlIFdURgogCiB1c2luZyBXVEY6OlRocmVhZDsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1RocmVh
ZGluZ1ByaW1pdGl2ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdQ
cmltaXRpdmVzLmgJKHJldmlzaW9uIDI4ODY0NSkKKysrIFNvdXJjZS9XVEYvd3RmL1RocmVhZGlu
Z1ByaW1pdGl2ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNTcsNyArNTcsOSBAQCB1c2luZyBQbGF0
Zm9ybVRocmVhZEhhbmRsZSA9IHB0aHJlYWRfdDsKIHVzaW5nIFBsYXRmb3JtTXV0ZXggPSBwdGhy
ZWFkX211dGV4X3Q7CiB1c2luZyBQbGF0Zm9ybUNvbmRpdGlvbiA9IHB0aHJlYWRfY29uZF90Owog
dXNpbmcgVGhyZWFkU3BlY2lmaWNLZXkgPSBwdGhyZWFkX2tleV90OwotI2lmIE9TKExJTlVYKQor
I2lmIE9TKERBUldJTikKK3VzaW5nIFRocmVhZElkZW50aWZpZXIgPSB1aW50cHRyX3Q7CisjZWxp
ZiBPUyhMSU5VWCkKIHVzaW5nIFRocmVhZElkZW50aWZpZXIgPSBwaWRfdDsKICNlbmRpZgogI2Vs
aWYgT1MoV0lORE9XUykKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL3Bvc2l4L1RocmVhZGluZ1BPU0lY
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9wb3NpeC9UaHJlYWRpbmdQT1NJWC5j
cHAJKHJldmlzaW9uIDI4ODY0NSkKKysrIFNvdXJjZS9XVEYvd3RmL3Bvc2l4L1RocmVhZGluZ1BP
U0lYLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUwLDYgKzU1MCw3IEBAIFRocmVhZCYgVGhyZWFk
Ojppbml0aWFsaXplVExTKFJlZjxUaHJlYWQKICAgICBfcHRocmVhZF9zZXRzcGVjaWZpY19kaXJl
Y3QoV1RGX1RIUkVBRF9EQVRBX0tFWSwgJnRocmVhZEluVExTKTsKICAgICBwdGhyZWFkX2tleV9p
bml0X25wKFdURl9USFJFQURfREFUQV9LRVksICZkZXN0cnVjdFRMUyk7CiAjZW5kaWYKKyAgICBS
RUxFQVNFX0FTU0VSVCh0aHJlYWRJblRMUy5pZCgpID09IFRocmVhZDo6Y3VycmVudElEKCksIDB4
MjExLCB0aHJlYWRJblRMUy5pZCgpLCBUaHJlYWQ6OmN1cnJlbnRJRCgpKTsgLy8gbWxhbSBURVNU
CiAgICAgcmV0dXJuIHRocmVhZEluVExTOwogfQogCg==
</data>
<flag name="commit-queue"
          id="476790"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450474</attachid>
            <date>2022-01-31 16:46:22 -0800</date>
            <delta_ts>2022-01-31 17:43:21 -0800</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-235752.patch</filename>
            <type>text/plain</type>
            <size>18300</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjg4ODU4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3IEBA
CisyMDIyLTAxLTMxICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBF
bmhhbmNlIHNhbml0aXplU3RhY2tGb3JWTSgpIHRvIGFzc2lzdCB3aXRoIGNyYXNoIGFuYWx5c2lz
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1NzUy
CisgICAgICAgIHJkYXI6Ly84MTAxNDYwMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIDEuIFJlbW92ZSB0aGUgQXNzZW1ibHlIZWxwZXJzIHZlcnNpb24g
b2Ygc2FuaXRpemVTdGFjay4gIEluc3RlYWQsIG1ha2UgdGhlIDMKKyAgICAgICAgICAgSklUIG9w
ZXJhdGlvbiBmdW5jdGlvbnMgY2FsbCBzYW5pdGl6ZVN0YWNrRm9yVk0oKSBpbnN0ZWFkLiAgVGhp
cyBlbnN1cmVzCisgICAgICAgICAgIHRoYXQgc2FuaXRpemVTdGFjayBjcmFzaGVzIGFyZSBub3Qg
b2JzY3VyZWQgYXMgZ2VuZXJpYyBKSVQgY3Jhc2hlcy4KKworICAgICAgICAyLiBBZGQgc2FuaXR5
IGNoZWNrIFJFTEVBU0VfQVNTRVJUcyB0byBWTTo6c2V0TGFzdFN0YWNrVG9wKCkgd2l0aCBhIGNh
cHR1cmUgb2YKKyAgICAgICAgICAgdGhlIHJlbGV2YW50IHZhcmlhYmxlcyBmb3IgY3Jhc2ggYW5h
bHlzaXMuCisKKyAgICAgICAgMy4gRml4IGxvZ1Nhbml0aXplU3RhY2soKSBzbyB0aGF0IGl0IG5v
IGxvbmdlciByZWxpZXMgb24gdm0udG9wQ2FsbEZyYW1lLgorICAgICAgICAgICB2bS50b3BDYWxs
RnJhbWUgbWF5IG5vdCBiZSBwcm9wZXJseSBpbml0aWFsaXplZCBhdCBhbGwgdGhlIHBsYWNlcyB0
aGF0CisgICAgICAgICAgIHNhbml0aXplU3RhY2tGb3JWTSgpIGlzIGNhbGxlZC4KKworICAgICAg
ICA0LiBBZGQgYSBKU0xvY2sgY2hlY2sgdG8gc2FuaXRpemVTdGFja0ZvclZNKCksIGFuZCByZXR1
cm4gZWFybHkgaWYgbm90IG93bmVkIGJ5CisgICAgICAgICAgIHRoZSBjdXJyZW50IHRocmVhZC4g
IElmIHRoZSBKU0xvY2sgaXMgbm90IG93bmVkIGJ5IHRoZSBjdXJyZW50IHRocmVhZCwgd2UgY2Fu
J3QKKyAgICAgICAgICAgcmVseSBvbiB2bS5sYXN0U3RhY2tUb3AoKSBiZWluZyBhIHNhbmUgdmFs
dWUuICBIZW5jZSwgaXQncyBub3QgcG9zc2libGUgdG8KKyAgICAgICAgICAgZG8gc3RhY2sgc2Fu
aXRpemF0aW9uIGNvcnJlY3RseS4KKworICAgICAgICAgICBBZGQgc2FuaXR5IGNoZWNrIFJFTEVB
U0VfQVNTRVJUcyB0byBzYW5pdGl6ZVN0YWNrRm9yVk0oKSB3aXRoIGEgY2FwdHVyZSBvZgorICAg
ICAgICAgICB0aGUgcmVsZXZhbnQgdmFyaWFibGVzIGZvciBjcmFzaCBhbmFseXNpcy4KKworICAg
ICAgICAqIGppdC9Bc3NlbWJseUhlbHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhl
bHBlcnM6OnNhbml0aXplU3RhY2tJbmxpbmUpOiBEZWxldGVkLgorICAgICAgICAqIGppdC9Bc3Nl
bWJseUhlbHBlcnMuaDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAg
IChKU0M6OkpTQ19ERUZJTkVfSklUX09QRVJBVElPTik6CisgICAgICAgICogaml0L1RodW5rR2Vu
ZXJhdG9ycy5jcHA6CisgICAgICAgIChKU0M6OnNsb3dQYXRoRm9yKToKKyAgICAgICAgKiBydW50
aW1lL0pTTG9jay5jcHA6CisgICAgICAgIChKU0M6OkpTTG9jazo6ZGlkQWNxdWlyZUxvY2spOgor
ICAgICAgICAoSlNDOjpKU0xvY2s6OmdyYWJBbGxMb2Nrcyk6CisgICAgICAgICogcnVudGltZS9W
TS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAgICAgIChKU0M6OlZNOjpzZXRMYXN0
U3RhY2tUb3ApOgorICAgICAgICAoSlNDOjpsb2dTYW5pdGl6ZVN0YWNrKToKKyAgICAgICAgKEpT
Qzo6c2FuaXRpemVTdGFja0ZvclZNKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisKIDIwMjIt
MDEtMzEgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtS
SVNDVjY0XSBBZGQgcmVtYWluaW5nIE1hY3JvQXNzZW1ibGVyUklTQ1Y2NCBicmFuY2hpbmcgb3Bl
cmF0aW9ucwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxw
ZXJzLmNwcAkocmV2aXNpb24gMjg4ODU4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9B
c3NlbWJseUhlbHBlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTExMywxOSArMTExMyw2IEBA
IHZvaWQgQXNzZW1ibHlIZWxwZXJzOjpjb3B5Q2FsbGVlU2F2ZXNUb0UKICNlbmRpZgogfQogCi12
b2lkIEFzc2VtYmx5SGVscGVyczo6c2FuaXRpemVTdGFja0lubGluZShWTSYgdm0sIEdQUlJlZyBz
Y3JhdGNoKQotewotICAgIGxvYWRQdHIodm0uYWRkcmVzc09mTGFzdFN0YWNrVG9wKCksIHNjcmF0
Y2gpOwotICAgIEp1bXAgZG9uZSA9IGJyYW5jaFB0cihCZWxvd09yRXF1YWwsIHN0YWNrUG9pbnRl
clJlZ2lzdGVyLCBzY3JhdGNoKTsKLSAgICBMYWJlbCBsb29wID0gbGFiZWwoKTsKLSAgICBzdG9y
ZVB0cihUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCBBZGRyZXNzKHNjcmF0Y2gpKTsKLSAgICBhZGRQ
dHIoVHJ1c3RlZEltbVB0cihzaXplb2Yodm9pZCopKSwgc2NyYXRjaCk7Ci0gICAgYnJhbmNoUHRy
KEFib3ZlLCBzdGFja1BvaW50ZXJSZWdpc3Rlciwgc2NyYXRjaCkubGlua1RvKGxvb3AsIHRoaXMp
OwotICAgIGRvbmUubGluayh0aGlzKTsKLSAgICBtb3ZlKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBz
Y3JhdGNoKTsKLSAgICBzdG9yZVB0cihzY3JhdGNoLCB2bS5hZGRyZXNzT2ZMYXN0U3RhY2tUb3Ao
KSk7Ci19Ci0KIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjpjYWdlV2l0aG91dFVudGFnZ2luZyhHaWdh
Y2FnZTo6S2luZCBraW5kLCBHUFJSZWcgc3RvcmFnZSkKIHsKICNpZiBHSUdBQ0FHRV9FTkFCTEVE
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgJKHJl
dmlzaW9uIDI4ODg1OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxw
ZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDExLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDExLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNzEwLDggKzE3MTAsNiBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBicmFuY2hUZXN0OChaZXJvLCBBYnNvbHV0ZUFkZHJlc3Modm0uaGVhcC5hZGRy
ZXNzT2ZNdXRhdG9yU2hvdWxkQmVGZW5jZWQoKSkpOwogICAgIH0KICAgICAKLSAgICB2b2lkIHNh
bml0aXplU3RhY2tJbmxpbmUoVk0mLCBHUFJSZWcgc2NyYXRjaCk7Ci0gICAgCiAgICAgLy8gRW1p
dHMgdGhlIGJyYW5jaCBzdHJ1Y3R1cmUgZm9yIHR5cGVvZi4gVGhlIGNvZGUgZW1pdHRlZCBieSB0
aGlzIGRvZXNuJ3QgZmFsbCB0aHJvdWdoLiBUaGUKICAgICAvLyBmdW5jdG9yIGlzIGNhbGxlZCBh
dCB0aG9zZSBwb2ludHMgd2hlcmUgd2UgaGF2ZSBwaW5wb2ludGVkIGEgdHlwZS4gT25lIHdheSB0
byB1c2UgdGhpcyBpcyB0bwogICAgIC8vIGhhdmUgdGhlIGZ1bmN0b3IgZW1pdCB0aGUgY29kZSB0
byBwdXQgdGhlIHR5cGUgc3RyaW5nIGludG8gYW4gYXBwcm9wcmlhdGUgcmVnaXN0ZXIgYW5kIHRo
ZW4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAko
cmV2aXNpb24gMjg4ODU4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE0NDgsMTEgKzE0NDgsMTMgQEAgSlNDX0RFRklO
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkNhbGxFdgogCiBKU0NfREVGSU5FX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uTGlua0NhbGwsIFNsb3dQYXRoUmV0dXJuVHlwZSwgKENhbGxGcmFtZSogY2Fs
bGVlRnJhbWUsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxMaW5rSW5mbyogY2Fs
bExpbmtJbmZvKSkKIHsKKyAgICBzYW5pdGl6ZVN0YWNrRm9yVk0oZ2xvYmFsT2JqZWN0LT52bSgp
KTsKICAgICByZXR1cm4gbGlua0ZvcihjYWxsZWVGcmFtZSwgZ2xvYmFsT2JqZWN0LCBjYWxsTGlu
a0luZm8pOwogfQogCiBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTGlua1BvbHlt
b3JwaGljQ2FsbCwgU2xvd1BhdGhSZXR1cm5UeXBlLCAoQ2FsbEZyYW1lKiBjYWxsZWVGcmFtZSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8p
KQogeworICAgIHNhbml0aXplU3RhY2tGb3JWTShnbG9iYWxPYmplY3QtPnZtKCkpOwogICAgIEFT
U0VSVChjYWxsTGlua0luZm8tPnNwZWNpYWxpemF0aW9uS2luZCgpID09IENvZGVGb3JDYWxsKTsK
ICAgICBKU0NlbGwqIGNhbGxlZUFzRnVuY3Rpb25DZWxsOwogICAgIFNsb3dQYXRoUmV0dXJuVHlw
ZSByZXN1bHQgPSB2aXJ0dWFsRm9yV2l0aEZ1bmN0aW9uKGdsb2JhbE9iamVjdCwgY2FsbGVlRnJh
bWUsIGNhbGxMaW5rSW5mbywgY2FsbGVlQXNGdW5jdGlvbkNlbGwpOwpAQCAtMTQ2NCw2ICsxNDY2
LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkxpbmtQbwogCiBKU0NfREVG
SU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uVmlydHVhbENhbGwsIFNsb3dQYXRoUmV0dXJuVHlw
ZSwgKENhbGxGcmFtZSogY2FsbGVlRnJhbWUsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvKSkKIHsKKyAgICBzYW5pdGl6ZVN0YWNrRm9yVk0o
Z2xvYmFsT2JqZWN0LT52bSgpKTsKICAgICBKU0NlbGwqIGNhbGxlZUFzRnVuY3Rpb25DZWxsSWdu
b3JlZDsKICAgICByZXR1cm4gdmlydHVhbEZvcldpdGhGdW5jdGlvbihnbG9iYWxPYmplY3QsIGNh
bGxlZUZyYW1lLCBjYWxsTGlua0luZm8sIGNhbGxlZUFzRnVuY3Rpb25DZWxsSWdub3JlZCk7CiB9
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3Bw
CShyZXZpc2lvbiAyODg4NTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2Vu
ZXJhdG9ycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDEwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEwLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xOTIsNyArMTkyLDYgQEAgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiB0aAogCiBzdGF0aWMgdm9pZCBzbG93UGF0aEZv
cihDQ2FsbEhlbHBlcnMmIGppdCwgVk0mIHZtLCBTcHJ0X0pJVE9wZXJhdGlvbl9FR0NsaSBzbG93
UGF0aEZ1bmN0aW9uKQogewotICAgIGppdC5zYW5pdGl6ZVN0YWNrSW5saW5lKHZtLCBHUFJJbmZv
Ojpub25BcmdHUFIwKTsKICAgICBqaXQuZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKICAgICBqaXQu
c3RvcmVQdHIoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsICZ2bS50b3BDYWxsRnJhbWUpOwog
I2lmIE9TKFdJTkRPV1MpICYmIENQVShYODZfNjQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0xvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTTG9jay5jcHAJKHJldmlzaW9uIDI4ODg1OCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTTG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0xMzgsOCArMTM4LDcgQEAgdm9pZCBK
U0xvY2s6OmRpZEFjcXVpcmVMb2NrKCkKICAgICBtX2VudHJ5QXRvbVN0cmluZ1RhYmxlID0gdGhy
ZWFkLnNldEN1cnJlbnRBdG9tU3RyaW5nVGFibGUobV92bS0+YXRvbVN0cmluZ1RhYmxlKCkpOwog
ICAgIEFTU0VSVChtX2VudHJ5QXRvbVN0cmluZ1RhYmxlKTsKIAotICAgIG1fdm0tPnNldExhc3RT
dGFja1RvcCh0aHJlYWQuc2F2ZWRMYXN0U3RhY2tUb3AoKSk7Ci0gICAgQVNTRVJUKHRocmVhZC5z
dGFjaygpLmNvbnRhaW5zKG1fdm0tPmxhc3RTdGFja1RvcCgpKSk7CisgICAgbV92bS0+c2V0TGFz
dFN0YWNrVG9wKHRocmVhZCk7CiAKICAgICBpZiAobV92bS0+aGVhcC5oYXNBY2Nlc3MoKSkKICAg
ICAgICAgbV9zaG91bGRSZWxlYXNlSGVhcEFjY2VzcyA9IGZhbHNlOwpAQCAtMjc3LDcgKzI3Niw3
IEBAIHZvaWQgSlNMb2NrOjpncmFiQWxsTG9ja3MoRHJvcEFsbExvY2tzKiAKIAogICAgIFRocmVh
ZCYgdGhyZWFkID0gVGhyZWFkOjpjdXJyZW50KCk7CiAgICAgbV92bS0+c2V0U3RhY2tQb2ludGVy
QXRWTUVudHJ5KHRocmVhZC5zYXZlZFN0YWNrUG9pbnRlckF0Vk1FbnRyeSgpKTsKLSAgICBtX3Zt
LT5zZXRMYXN0U3RhY2tUb3AodGhyZWFkLnNhdmVkTGFzdFN0YWNrVG9wKCkpOworICAgIG1fdm0t
PnNldExhc3RTdGFja1RvcCh0aHJlYWQpOwogfQogCiBKU0xvY2s6OkRyb3BBbGxMb2Nrczo6RHJv
cEFsbExvY2tzKFZNKiB2bSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAJ
KHJldmlzaW9uIDI4ODg1OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDgtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDgtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTI0Miw5ICsyNDIsOCBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlw
ZSwgSGVhcFR5cGUgaGVhcFR5cGUsCiAgICAgICAgIENSQVNIX1dJVEhfSU5GTygweDQyNDI0MjQy
MjAyMDIwMjAsIDB4YmFkYmVlZjBiYWRiZWVmLCAweDEyMzQxMjM0MTIzNDEyMzQsIDB4MTMzNzEz
MzcxMzM3MTMzNyk7CiAKICAgICBpbnRlcnByZXRlciA9IG5ldyBJbnRlcnByZXRlcigqdGhpcyk7
Ci0gICAgU3RhY2tCb3VuZHMgc3RhY2sgPSBUaHJlYWQ6OmN1cnJlbnQoKS5zdGFjaygpOwogICAg
IHVwZGF0ZVNvZnRSZXNlcnZlZFpvbmVTaXplKE9wdGlvbnM6OnNvZnRSZXNlcnZlZFpvbmVTaXpl
KCkpOwotICAgIHNldExhc3RTdGFja1RvcChzdGFjay5vcmlnaW4oKSk7CisgICAgc2V0TGFzdFN0
YWNrVG9wKFRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIEpTUnVuTG9vcFRpbWVyOjpNYW5hZ2Vy
OjpzaGFyZWQoKS5yZWdpc3RlclZNKCp0aGlzKTsKIApAQCAtNTAzLDkgKzUwMiwxNCBAQCB2b2lk
IFZNOjpwcmltaXRpdmVHaWdhY2FnZURpc2FibGVkKCkKICAgICBtX25lZWRUb0ZpcmVQcmltaXRp
dmVHaWdhY2FnZUVuYWJsZWQgPSB0cnVlOwogfQogCi12b2lkIFZNOjpzZXRMYXN0U3RhY2tUb3Ao
dm9pZCogbGFzdFN0YWNrVG9wKQoteyAKLSAgICBtX2xhc3RTdGFja1RvcCA9IGxhc3RTdGFja1Rv
cDsKK3ZvaWQgVk06OnNldExhc3RTdGFja1RvcChjb25zdCBUaHJlYWQmIHRocmVhZCkKK3sKKyAg
ICBtX2xhc3RTdGFja1RvcCA9IHRocmVhZC5zYXZlZExhc3RTdGFja1RvcCgpOworICAgIGF1dG8m
IHN0YWNrID0gdGhyZWFkLnN0YWNrKCk7CisgICAgUkVMRUFTRV9BU1NFUlQoc3RhY2suY29udGFp
bnMobV9sYXN0U3RhY2tUb3ApLCAweDU1MTAsIG1fbGFzdFN0YWNrVG9wLCBzdGFjay5vcmlnaW4o
KSwgc3RhY2suZW5kKCkpOworI2lmIE9TKERBUldJTikgJiYgQ1BVKEFSTTY0KQorICAgIFJFTEVB
U0VfQVNTRVJUKHRocmVhZC5pZCgpID09IFRocmVhZDo6Y3VycmVudElEKCksIDB4NTUyMCwgdGhy
ZWFkLmlkKCksIFRocmVhZDo6Y3VycmVudElEKCkpOworI2VuZGlmCiB9CiAKIFJlZjxWTT4gVk06
OmNyZWF0ZUNvbnRleHRHcm91cChIZWFwVHlwZSBoZWFwVHlwZSkKQEAgLTEwNTAsMTYgKzEwNTQs
MTEgQEAgdm9pZCBWTTo6cG9wQWxsQ2hlY2twb2ludE9TUlNpZGVTdGF0ZVVudAogICAgIG1fY2hl
Y2twb2ludFNpZGVTdGF0ZS5zaHJpbmtUb0ZpdCgpOwogfQogCi12b2lkIGxvZ1Nhbml0aXplU3Rh
Y2soVk0mIHZtKQorc3RhdGljIHZvaWQgbG9nU2FuaXRpemVTdGFjayhWTSYgdm0pCiB7Ci0gICAg
aWYgKE9wdGlvbnM6OnZlcmJvc2VTYW5pdGl6ZVN0YWNrKCkgJiYgdm0udG9wQ2FsbEZyYW1lKSB7
Ci0gICAgICAgIGludCBkdW1teTsKKyAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6dmVyYm9zZVNh
bml0aXplU3RhY2soKSkpIHsKICAgICAgICAgYXV0byYgc3RhY2tCb3VuZHMgPSBUaHJlYWQ6OmN1
cnJlbnQoKS5zdGFjaygpOwotICAgICAgICBkYXRhTG9nKAotICAgICAgICAgICAgIlNhbml0aXpp
bmcgc3RhY2sgZm9yIFZNID0gIiwgUmF3UG9pbnRlcigmdm0pLCAiIHdpdGggdG9wIGNhbGwgZnJh
bWUgYXQgIiwgUmF3UG9pbnRlcih2bS50b3BDYWxsRnJhbWUpLAotICAgICAgICAgICAgIiwgY3Vy
cmVudCBzdGFjayBwb2ludGVyIGF0ICIsIFJhd1BvaW50ZXIoJmR1bW15KSwgIiwgaW4gIiwKLSAg
ICAgICAgICAgIHBvaW50ZXJEdW1wKHZtLnRvcENhbGxGcmFtZS0+Y29kZUJsb2NrKCkpLCAiLCBs
YXN0IGNvZGUgb3JpZ2luID0gIiwKLSAgICAgICAgICAgIHZtLnRvcENhbGxGcmFtZS0+Y29kZU9y
aWdpbigpLCAiLCBsYXN0IHN0YWNrIHRvcCA9ICIsIFJhd1BvaW50ZXIodm0ubGFzdFN0YWNrVG9w
KCkpLCAiLCBpbiBzdGFjayByYW5nZSBbIiwgUmF3UG9pbnRlcihzdGFja0JvdW5kcy5vcmlnaW4o
KSksICIsICIsIFJhd1BvaW50ZXIoc3RhY2tCb3VuZHMuZW5kKCkpLCAiXVxuIik7CisgICAgICAg
IGRhdGFMb2dMbigiU2FuaXRpemluZyBzdGFjayBmb3IgVk0gPSAiLCBSYXdQb2ludGVyKCZ2bSks
ICIsIGN1cnJlbnQgc3RhY2sgcG9pbnRlciBhdCAiLCBSYXdQb2ludGVyKGN1cnJlbnRTdGFja1Bv
aW50ZXIoKSksICIsIGxhc3Qgc3RhY2sgdG9wID0gIiwgUmF3UG9pbnRlcih2bS5sYXN0U3RhY2tU
b3AoKSksICIsIGluIHN0YWNrIHJhbmdlICgiLCBSYXdQb2ludGVyKHN0YWNrQm91bmRzLmVuZCgp
KSwgIiwgIiwgUmF3UG9pbnRlcihzdGFja0JvdW5kcy5vcmlnaW4oKSksICJdIik7CiAgICAgfQog
fQogCkBAIC0xMjcwLDE3ICsxMjY5LDIzIEBAIHZvaWQgUXVldWVkVGFzazo6cnVuKCkKIAogdm9p
ZCBzYW5pdGl6ZVN0YWNrRm9yVk0oVk0mIHZtKQogeworICAgIGF1dG8mIHRocmVhZCA9IFRocmVh
ZDo6Y3VycmVudCgpOworI2lmIE9TKERBUldJTikgJiYgQ1BVKEFSTTY0KQorICAgIFJFTEVBU0Vf
QVNTRVJUKHRocmVhZC5pZCgpID09IFRocmVhZDo6Y3VycmVudElEKCksIDB4YWExMCwgdGhyZWFk
LmlkKCksIFRocmVhZDo6Y3VycmVudElEKCkpOworI2VuZGlmCisgICAgYXV0byYgc3RhY2sgPSB0
aHJlYWQuc3RhY2soKTsKKyAgICBpZiAoIXZtLmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2Nr
KCkpCisgICAgICAgIHJldHVybjsgLy8gdm0ubGFzdFN0YWNrVG9wKCkgbWF5IG5vdCBiZSBzZXQg
dXAgY29ycmVjdGx5IGlmIEpTTG9jayBpcyBub3QgaGVsZC4KKwogICAgIGxvZ1Nhbml0aXplU3Rh
Y2sodm0pOwotICAgIGlmICh2bS50b3BDYWxsRnJhbWUpIHsKLSAgICAgICAgYXV0byYgc3RhY2tC
b3VuZHMgPSBUaHJlYWQ6OmN1cnJlbnQoKS5zdGFjaygpOwotICAgICAgICBBU1NFUlQodm0uY3Vy
cmVudFRocmVhZElzSG9sZGluZ0FQSUxvY2soKSk7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQoc3Rh
Y2tCb3VuZHMsIHN0YWNrQm91bmRzLmNvbnRhaW5zKHZtLmxhc3RTdGFja1RvcCgpKSk7Ci0gICAg
fQorCisgICAgUkVMRUFTRV9BU1NFUlQoc3RhY2suY29udGFpbnModm0ubGFzdFN0YWNrVG9wKCkp
LCAweGFhMjAsIHZtLmxhc3RTdGFja1RvcCgpLCBzdGFjay5vcmlnaW4oKSwgc3RhY2suZW5kKCkp
OwogI2lmIEVOQUJMRShDX0xPT1ApCiAgICAgdm0uaW50ZXJwcmV0ZXItPmNsb29wU3RhY2soKS5z
YW5pdGl6ZVN0YWNrKCk7CiAjZWxzZQogICAgIHNhbml0aXplU3RhY2tGb3JWTUltcGwoJnZtKTsK
ICNlbmRpZgorICAgIFJFTEVBU0VfQVNTRVJUKHN0YWNrLmNvbnRhaW5zKHZtLmxhc3RTdGFja1Rv
cCgpKSwgMHhhYTMwLCB2bS5sYXN0U3RhY2tUb3AoKSwgc3RhY2sub3JpZ2luKCksIHN0YWNrLmVu
ZCgpKTsKIH0KIAogc2l6ZV90IFZNOjpjb21taXR0ZWRTdGFja0J5dGVDb3VudCgpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHJldmlzaW9uIDI4ODg1OCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03NzQsNyArNzc0
LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCoqIGFkZHJlc3NPZkxhc3RTdGFja1RvcCgpIHsgcmV0
dXJuICZtX2xhc3RTdGFja1RvcDsgfQogICAgIHZvaWQqIGxhc3RTdGFja1RvcCgpIHsgcmV0dXJu
IG1fbGFzdFN0YWNrVG9wOyB9Ci0gICAgdm9pZCBzZXRMYXN0U3RhY2tUb3Aodm9pZCopOworICAg
IHZvaWQgc2V0TGFzdFN0YWNrVG9wKGNvbnN0IFRocmVhZCYpOwogICAgIAogICAgIHZvaWQgZmly
ZVByaW1pdGl2ZUdpZ2FjYWdlRW5hYmxlZElmTmVjZXNzYXJ5KCkKICAgICB7CkBAIC0xMTYyLDYg
KzExNjIsNSBAQCBleHRlcm4gIkMiIHZvaWQgc2FuaXRpemVTdGFja0ZvclZNSW1wbChWCiAjZW5k
aWYKIAogSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzYW5pdGl6ZVN0YWNrRm9yVk0oVk0mKTsKLXZv
aWQgbG9nU2FuaXRpemVTdGFjayhWTSYpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNv
dXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAyODg4NTgpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDI0IEBACisyMDIyLTAxLTMxICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNv
bT4KKworICAgICAgICBFbmhhbmNlIHNhbml0aXplU3RhY2tGb3JWTSgpIHRvIGFzc2lzdCB3aXRo
IGNyYXNoIGFuYWx5c2lzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjM1NzUyCisgICAgICAgIHJkYXI6Ly84MTAxNDYwMQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBUaHJlYWRJ
ZGVudGlmaWVyIGFuZCBUaHJlYWQ6OmN1cnJlbnRJRCgpIG9uIE9TKERBUldJTikuICBUaGlzIGNh
bgorICAgICAgICBiZSB1c2VkIHRvIGRldGVjdCBUTFMgY29ycnVwdGlvbiAvIGJ1Z3MuCisKKyAg
ICAgICAgKiB3dGYvVGhyZWFkaW5nLmNwcDoKKyAgICAgICAgKFdURjo6VGhyZWFkOjppbml0aWFs
aXplSW5UaHJlYWQpOgorICAgICAgICAqIHd0Zi9UaHJlYWRpbmcuaDoKKyAgICAgICAgKFdURjo6
VGhyZWFkOjpzYXZlZFN0YWNrUG9pbnRlckF0Vk1FbnRyeSBjb25zdCk6CisgICAgICAgIChXVEY6
OlRocmVhZDo6c2F2ZWRMYXN0U3RhY2tUb3AgY29uc3QpOgorICAgICAgICAoV1RGOjpUaHJlYWQ6
OmN1cnJlbnRJRCk6CisgICAgICAgIChXVEY6OlRocmVhZDo6c2F2ZWRTdGFja1BvaW50ZXJBdFZN
RW50cnkpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpUaHJlYWQ6OnNhdmVkTGFzdFN0YWNrVG9w
KTogRGVsZXRlZC4KKyAgICAgICAgKiB3dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oOgorCiAyMDIy
LTAxLTMxICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIERlbGV0
ZSBydW50aW1lIGZsYWcgZm9yIHN1YnJlc291cmNlIGludGVncml0eQpJbmRleDogU291cmNlL1dU
Ri93dGYvVGhyZWFkaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9UaHJlYWRp
bmcuY3BwCShyZXZpc2lvbiAyODg4NTgpCisrKyBTb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNTksOCArMTU5LDEwIEBAIHZvaWQgVGhyZWFkOjppbml0aWFs
aXplSW5UaHJlYWQoKQogICAgIH0KICNlbmRpZgogCi0jaWYgT1MoTElOVVgpCisjaWYgVVNFKFBU
SFJFQURTKQogICAgIG1faWQgPSBjdXJyZW50SUQoKTsKKyNlbHNlCisgICAgUkVMRUFTRV9BU1NF
UlQobV9pZCA9PSBjdXJyZW50SUQoKSk7CiAjZW5kaWYKIH0KIApJbmRleDogU291cmNlL1dURi93
dGYvVGhyZWFkaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmgJ
KHJldmlzaW9uIDI4ODg1OCkKKysrIFNvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNy0yMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDIy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNyBK
dXN0aW4gSGF5Z29vZCA8amhheWdvb2RAcmVha3RpeC5jb20+CiAgKiBDb3B5cmlnaHQgKEMpIDIw
MTcgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogICoKQEAgLTEzMCwxNSAr
MTMwLDE4IEBAIHB1YmxpYzoKIAogICAgIHVpbnQzMl90IHVpZCgpIGNvbnN0IHsgcmV0dXJuIG1f
dWlkOyB9CiAKLSNpZiBPUyhXSU5ET1dTKQogICAgIC8vIFJldHVybnMgVGhyZWFkSWRlbnRpZmll
ciBkaXJlY3RseS4gSXQgaXMgdXNlZnVsIGlmIHRoZSB1c2VyIG9ubHkgY2FyZXMgYWJvdXQgaWRl
bnRpdHkKICAgICAvLyBvZiB0aHJlYWRzLiBBdCB0aGF0IHRpbWUsIHVzZXJzIHNob3VsZCBrbm93
IHRoYXQgaG9sZGluZyB0aGlzIFRocmVhZElkZW50aWZpZXIgZG9lcyBub3QgZW5zdXJlCiAgICAg
Ly8gdGhhdCB0aGUgdGhyZWFkIGluZm9ybWF0aW9uIGlzIGFsaXZlLiBXaGlsZSBUaHJlYWQ6OmN1
cnJlbnQoKSBpcyBub3Qgc2FmZSBpZiBpdCBpcyBjYWxsZWQKICAgICAvLyBmcm9tIHRoZSBkZXN0
cnVjdG9yIG9mIHRoZSBvdGhlciBUTFMgZGF0YSwgY3VycmVudElEKCkgYWx3YXlzIHJldHVybnMg
bWVhbmluZ2Z1bCB0aHJlYWQgSUQuCisjaWYgT1MoREFSV0lOKQorICAgIEFMV0FZU19JTkxJTkUg
c3RhdGljIFRocmVhZElkZW50aWZpZXIgY3VycmVudElEKCk7CisjZWxzZQogICAgIFdURl9FWFBP
UlRfUFJJVkFURSBzdGF0aWMgVGhyZWFkSWRlbnRpZmllciBjdXJyZW50SUQoKTsKLQorI2VuZGlm
CiAgICAgVGhyZWFkSWRlbnRpZmllciBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KIAorI2lm
IE9TKFdJTkRPV1MpCiAgICAgY2xhc3MgU3BlY2lmaWNTdG9yYWdlIHsKICAgICBwdWJsaWM6CiAg
ICAgICAgIHVzaW5nIERlc3Ryb3lGdW5jdGlvbiA9IHZvaWQgKCopKHZvaWQqKTsKQEAgLTE3Niwx
MCArMTc5LDYgQEAgcHVibGljOgogICAgIFdURl9FWFBPUlRfUFJJVkFURSBzaXplX3QgZ2V0UmVn
aXN0ZXJzKFBsYXRmb3JtUmVnaXN0ZXJzJik7CiAKICNpZiBVU0UoUFRIUkVBRFMpCi0jaWYgT1Mo
TElOVVgpCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBUaHJlYWRJZGVudGlmaWVyIGN1
cnJlbnRJRCgpOwotICAgIFRocmVhZElkZW50aWZpZXIgaWQoKSBjb25zdCB7IHJldHVybiBtX2lk
OyB9Ci0jZW5kaWYKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBzaWduYWwoaW50IHNpZ25h
bE51bWJlcik7CiAjZW5kaWYKIApAQCAtMjMxLDcgKzIzMCw3IEBAIHB1YmxpYzoKICAgICB9CiAj
ZW5kaWYKIAotICAgIHZvaWQqIHNhdmVkU3RhY2tQb2ludGVyQXRWTUVudHJ5KCkKKyAgICB2b2lk
KiBzYXZlZFN0YWNrUG9pbnRlckF0Vk1FbnRyeSgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1
cm4gbV9zYXZlZFN0YWNrUG9pbnRlckF0Vk1FbnRyeTsKICAgICB9CkBAIC0yNDEsNyArMjQwLDcg
QEAgcHVibGljOgogICAgICAgICBtX3NhdmVkU3RhY2tQb2ludGVyQXRWTUVudHJ5ID0gc3RhY2tQ
b2ludGVyQXRWTUVudHJ5OwogICAgIH0KIAotICAgIHZvaWQqIHNhdmVkTGFzdFN0YWNrVG9wKCkK
KyAgICB2b2lkKiBzYXZlZExhc3RTdGFja1RvcCgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1
cm4gbV9zYXZlZExhc3RTdGFja1RvcDsKICAgICB9CkBAIC0zNTMsMTQgKzM1MiwxMCBAQCBwcm90
ZWN0ZWQ6CiAgICAgSGFzaE1hcDxUaHJlYWRHcm91cCosIHN0ZDo6d2Vha19wdHI8VGhyZWFkR3Jv
dXA+PiBtX3RocmVhZEdyb3VwTWFwOwogICAgIFBsYXRmb3JtVGhyZWFkSGFuZGxlIG1faGFuZGxl
OwogICAgIHVpbnQzMl90IG1fdWlkOwotI2lmIE9TKFdJTkRPV1MpCiAgICAgVGhyZWFkSWRlbnRp
ZmllciBtX2lkIHsgMCB9OwotI2VsaWYgT1MoREFSV0lOKQorI2lmIE9TKERBUldJTikKICAgICBt
YWNoX3BvcnRfdCBtX3BsYXRmb3JtVGhyZWFkIHsgTUFDSF9QT1JUX05VTEwgfTsKICNlbGlmIFVT
RShQVEhSRUFEUykKLSNpZiBPUyhMSU5VWCkKLSAgICBUaHJlYWRJZGVudGlmaWVyIG1faWQgeyAw
IH07Ci0jZW5kaWYKICAgICBQbGF0Zm9ybVJlZ2lzdGVycyogbV9wbGF0Zm9ybVJlZ2lzdGVycyB7
IG51bGxwdHIgfTsKICAgICB1bnNpZ25lZCBtX3N1c3BlbmRDb3VudCB7IDAgfTsKICNlbmRpZgpA
QCAtNDIwLDYgKzQxNSwyNiBAQCBpbmxpbmUgVGhyZWFkJiBUaHJlYWQ6OmN1cnJlbnQoKQogICAg
IHJldHVybiBpbml0aWFsaXplQ3VycmVudFRMUygpOwogfQogCisjaWYgT1MoREFSV0lOKQorQUxX
QVlTX0lOTElORSBUaHJlYWRJZGVudGlmaWVyIFRocmVhZDo6Y3VycmVudElEKCkKK3sKKyAgICBU
aHJlYWRJZGVudGlmaWVyIHJlc3VsdDsKKyNpZiBDUFUoQVJNNjQpCisgICAgYXNtICgKKyAgICAg
ICAgIm1ycyAleFtyZXN1bHRdLCBUUElEUlJPX0VMMCIKKyAgICAgICAgOiBbcmVzdWx0XSAiPXIi
IChyZXN1bHQpIDogOgorICAgICk7CisjaWYgIShQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTIwMDAwKSAmJiAhKFBMQVRGT1JNKElPUykgJiYgX19J
UEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTUwMDAwKQorICAgIHJlc3VsdCAmPSB+
MHg3dWxsOworI2VuZGlmCisjZWxzZQorICAgIHJlc3VsdCA9IGJpdHdpc2VfY2FzdDxUaHJlYWRJ
ZGVudGlmaWVyPihwdGhyZWFkX3NlbGYoKSk7CisjZW5kaWYKKyAgICBBU1NFUlQocmVzdWx0KTsK
KyAgICByZXR1cm4gcmVzdWx0OworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdURgogCiB1
c2luZyBXVEY6OlRocmVhZDsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1RocmVhZGluZ1ByaW1pdGl2
ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmgJ
KHJldmlzaW9uIDI4ODg1OCkKKysrIFNvdXJjZS9XVEYvd3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMu
aAkod29ya2luZyBjb3B5KQpAQCAtNTcsNyArNTcsOSBAQCB1c2luZyBQbGF0Zm9ybVRocmVhZEhh
bmRsZSA9IHB0aHJlYWRfdDsKIHVzaW5nIFBsYXRmb3JtTXV0ZXggPSBwdGhyZWFkX211dGV4X3Q7
CiB1c2luZyBQbGF0Zm9ybUNvbmRpdGlvbiA9IHB0aHJlYWRfY29uZF90OwogdXNpbmcgVGhyZWFk
U3BlY2lmaWNLZXkgPSBwdGhyZWFkX2tleV90OwotI2lmIE9TKExJTlVYKQorI2lmIE9TKERBUldJ
TikKK3VzaW5nIFRocmVhZElkZW50aWZpZXIgPSB1aW50cHRyX3Q7CisjZWxpZiBPUyhMSU5VWCkK
IHVzaW5nIFRocmVhZElkZW50aWZpZXIgPSBwaWRfdDsKICNlbmRpZgogI2VsaWYgT1MoV0lORE9X
UykK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450485</attachid>
            <date>2022-01-31 17:43:21 -0800</date>
            <delta_ts>2022-02-01 09:35:17 -0800</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-235752.patch</filename>
            <type>text/plain</type>
            <size>14277</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjg4ODYxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3IEBA
CisyMDIyLTAxLTMxICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBF
bmhhbmNlIHNhbml0aXplU3RhY2tGb3JWTSgpIHRvIGFzc2lzdCB3aXRoIGNyYXNoIGFuYWx5c2lz
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1NzUy
CisgICAgICAgIHJkYXI6Ly84MTAxNDYwMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIDEuIFJlbW92ZSB0aGUgQXNzZW1ibHlIZWxwZXJzIHZlcnNpb24g
b2Ygc2FuaXRpemVTdGFjay4gIEluc3RlYWQsIG1ha2UgdGhlIDMKKyAgICAgICAgICAgSklUIG9w
ZXJhdGlvbiBmdW5jdGlvbnMgY2FsbCBzYW5pdGl6ZVN0YWNrRm9yVk0oKSBpbnN0ZWFkLiAgVGhp
cyBlbnN1cmVzCisgICAgICAgICAgIHRoYXQgc2FuaXRpemVTdGFjayBjcmFzaGVzIGFyZSBub3Qg
b2JzY3VyZWQgYXMgZ2VuZXJpYyBKSVQgY3Jhc2hlcy4KKworICAgICAgICAyLiBBZGQgc2FuaXR5
IGNoZWNrIFJFTEVBU0VfQVNTRVJUcyB0byBWTTo6c2V0TGFzdFN0YWNrVG9wKCkgd2l0aCBhIGNh
cHR1cmUgb2YKKyAgICAgICAgICAgdGhlIHJlbGV2YW50IHZhcmlhYmxlcyBmb3IgY3Jhc2ggYW5h
bHlzaXMuCisKKyAgICAgICAgMy4gRml4IGxvZ1Nhbml0aXplU3RhY2soKSBzbyB0aGF0IGl0IG5v
IGxvbmdlciByZWxpZXMgb24gdm0udG9wQ2FsbEZyYW1lLgorICAgICAgICAgICB2bS50b3BDYWxs
RnJhbWUgbWF5IG5vdCBiZSBwcm9wZXJseSBpbml0aWFsaXplZCBhdCBhbGwgdGhlIHBsYWNlcyB0
aGF0CisgICAgICAgICAgIHNhbml0aXplU3RhY2tGb3JWTSgpIGlzIGNhbGxlZC4KKworICAgICAg
ICA0LiBBZGQgYSBKU0xvY2sgY2hlY2sgdG8gc2FuaXRpemVTdGFja0ZvclZNKCksIGFuZCByZXR1
cm4gZWFybHkgaWYgbm90IG93bmVkIGJ5CisgICAgICAgICAgIHRoZSBjdXJyZW50IHRocmVhZC4g
IElmIHRoZSBKU0xvY2sgaXMgbm90IG93bmVkIGJ5IHRoZSBjdXJyZW50IHRocmVhZCwgd2UgY2Fu
J3QKKyAgICAgICAgICAgcmVseSBvbiB2bS5sYXN0U3RhY2tUb3AoKSBiZWluZyBhIHNhbmUgdmFs
dWUuICBIZW5jZSwgaXQncyBub3QgcG9zc2libGUgdG8KKyAgICAgICAgICAgZG8gc3RhY2sgc2Fu
aXRpemF0aW9uIGNvcnJlY3RseS4KKworICAgICAgICAgICBBZGQgc2FuaXR5IGNoZWNrIFJFTEVB
U0VfQVNTRVJUcyB0byBzYW5pdGl6ZVN0YWNrRm9yVk0oKSB3aXRoIGEgY2FwdHVyZSBvZgorICAg
ICAgICAgICB0aGUgcmVsZXZhbnQgdmFyaWFibGVzIGZvciBjcmFzaCBhbmFseXNpcy4KKworICAg
ICAgICAqIGppdC9Bc3NlbWJseUhlbHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhl
bHBlcnM6OnNhbml0aXplU3RhY2tJbmxpbmUpOiBEZWxldGVkLgorICAgICAgICAqIGppdC9Bc3Nl
bWJseUhlbHBlcnMuaDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAg
IChKU0M6OkpTQ19ERUZJTkVfSklUX09QRVJBVElPTik6CisgICAgICAgICogaml0L1RodW5rR2Vu
ZXJhdG9ycy5jcHA6CisgICAgICAgIChKU0M6OnNsb3dQYXRoRm9yKToKKyAgICAgICAgKiBydW50
aW1lL0pTTG9jay5jcHA6CisgICAgICAgIChKU0M6OkpTTG9jazo6ZGlkQWNxdWlyZUxvY2spOgor
ICAgICAgICAoSlNDOjpKU0xvY2s6OmdyYWJBbGxMb2Nrcyk6CisgICAgICAgICogcnVudGltZS9W
TS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAgICAgIChKU0M6OlZNOjpzZXRMYXN0
U3RhY2tUb3ApOgorICAgICAgICAoSlNDOjpsb2dTYW5pdGl6ZVN0YWNrKToKKyAgICAgICAgKEpT
Qzo6c2FuaXRpemVTdGFja0ZvclZNKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisKIDIwMjIt
MDEtMzEgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtS
SVNDVjY0XSBBZGQgcmVtYWluaW5nIE1hY3JvQXNzZW1ibGVyUklTQ1Y2NCBicmFuY2hpbmcgb3Bl
cmF0aW9ucwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxw
ZXJzLmNwcAkocmV2aXNpb24gMjg4ODU4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9B
c3NlbWJseUhlbHBlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTExMywxOSArMTExMyw2IEBA
IHZvaWQgQXNzZW1ibHlIZWxwZXJzOjpjb3B5Q2FsbGVlU2F2ZXNUb0UKICNlbmRpZgogfQogCi12
b2lkIEFzc2VtYmx5SGVscGVyczo6c2FuaXRpemVTdGFja0lubGluZShWTSYgdm0sIEdQUlJlZyBz
Y3JhdGNoKQotewotICAgIGxvYWRQdHIodm0uYWRkcmVzc09mTGFzdFN0YWNrVG9wKCksIHNjcmF0
Y2gpOwotICAgIEp1bXAgZG9uZSA9IGJyYW5jaFB0cihCZWxvd09yRXF1YWwsIHN0YWNrUG9pbnRl
clJlZ2lzdGVyLCBzY3JhdGNoKTsKLSAgICBMYWJlbCBsb29wID0gbGFiZWwoKTsKLSAgICBzdG9y
ZVB0cihUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCBBZGRyZXNzKHNjcmF0Y2gpKTsKLSAgICBhZGRQ
dHIoVHJ1c3RlZEltbVB0cihzaXplb2Yodm9pZCopKSwgc2NyYXRjaCk7Ci0gICAgYnJhbmNoUHRy
KEFib3ZlLCBzdGFja1BvaW50ZXJSZWdpc3Rlciwgc2NyYXRjaCkubGlua1RvKGxvb3AsIHRoaXMp
OwotICAgIGRvbmUubGluayh0aGlzKTsKLSAgICBtb3ZlKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBz
Y3JhdGNoKTsKLSAgICBzdG9yZVB0cihzY3JhdGNoLCB2bS5hZGRyZXNzT2ZMYXN0U3RhY2tUb3Ao
KSk7Ci19Ci0KIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjpjYWdlV2l0aG91dFVudGFnZ2luZyhHaWdh
Y2FnZTo6S2luZCBraW5kLCBHUFJSZWcgc3RvcmFnZSkKIHsKICNpZiBHSUdBQ0FHRV9FTkFCTEVE
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgJKHJl
dmlzaW9uIDI4ODg1OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxw
ZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDExLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDExLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNzEwLDggKzE3MTAsNiBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBicmFuY2hUZXN0OChaZXJvLCBBYnNvbHV0ZUFkZHJlc3Modm0uaGVhcC5hZGRy
ZXNzT2ZNdXRhdG9yU2hvdWxkQmVGZW5jZWQoKSkpOwogICAgIH0KICAgICAKLSAgICB2b2lkIHNh
bml0aXplU3RhY2tJbmxpbmUoVk0mLCBHUFJSZWcgc2NyYXRjaCk7Ci0gICAgCiAgICAgLy8gRW1p
dHMgdGhlIGJyYW5jaCBzdHJ1Y3R1cmUgZm9yIHR5cGVvZi4gVGhlIGNvZGUgZW1pdHRlZCBieSB0
aGlzIGRvZXNuJ3QgZmFsbCB0aHJvdWdoLiBUaGUKICAgICAvLyBmdW5jdG9yIGlzIGNhbGxlZCBh
dCB0aG9zZSBwb2ludHMgd2hlcmUgd2UgaGF2ZSBwaW5wb2ludGVkIGEgdHlwZS4gT25lIHdheSB0
byB1c2UgdGhpcyBpcyB0bwogICAgIC8vIGhhdmUgdGhlIGZ1bmN0b3IgZW1pdCB0aGUgY29kZSB0
byBwdXQgdGhlIHR5cGUgc3RyaW5nIGludG8gYW4gYXBwcm9wcmlhdGUgcmVnaXN0ZXIgYW5kIHRo
ZW4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAko
cmV2aXNpb24gMjg4ODU4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE0NDgsMTEgKzE0NDgsMTMgQEAgSlNDX0RFRklO
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkNhbGxFdgogCiBKU0NfREVGSU5FX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uTGlua0NhbGwsIFNsb3dQYXRoUmV0dXJuVHlwZSwgKENhbGxGcmFtZSogY2Fs
bGVlRnJhbWUsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxMaW5rSW5mbyogY2Fs
bExpbmtJbmZvKSkKIHsKKyAgICBzYW5pdGl6ZVN0YWNrRm9yVk0oZ2xvYmFsT2JqZWN0LT52bSgp
KTsKICAgICByZXR1cm4gbGlua0ZvcihjYWxsZWVGcmFtZSwgZ2xvYmFsT2JqZWN0LCBjYWxsTGlu
a0luZm8pOwogfQogCiBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTGlua1BvbHlt
b3JwaGljQ2FsbCwgU2xvd1BhdGhSZXR1cm5UeXBlLCAoQ2FsbEZyYW1lKiBjYWxsZWVGcmFtZSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8p
KQogeworICAgIHNhbml0aXplU3RhY2tGb3JWTShnbG9iYWxPYmplY3QtPnZtKCkpOwogICAgIEFT
U0VSVChjYWxsTGlua0luZm8tPnNwZWNpYWxpemF0aW9uS2luZCgpID09IENvZGVGb3JDYWxsKTsK
ICAgICBKU0NlbGwqIGNhbGxlZUFzRnVuY3Rpb25DZWxsOwogICAgIFNsb3dQYXRoUmV0dXJuVHlw
ZSByZXN1bHQgPSB2aXJ0dWFsRm9yV2l0aEZ1bmN0aW9uKGdsb2JhbE9iamVjdCwgY2FsbGVlRnJh
bWUsIGNhbGxMaW5rSW5mbywgY2FsbGVlQXNGdW5jdGlvbkNlbGwpOwpAQCAtMTQ2NCw2ICsxNDY2
LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkxpbmtQbwogCiBKU0NfREVG
SU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uVmlydHVhbENhbGwsIFNsb3dQYXRoUmV0dXJuVHlw
ZSwgKENhbGxGcmFtZSogY2FsbGVlRnJhbWUsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvKSkKIHsKKyAgICBzYW5pdGl6ZVN0YWNrRm9yVk0o
Z2xvYmFsT2JqZWN0LT52bSgpKTsKICAgICBKU0NlbGwqIGNhbGxlZUFzRnVuY3Rpb25DZWxsSWdu
b3JlZDsKICAgICByZXR1cm4gdmlydHVhbEZvcldpdGhGdW5jdGlvbihnbG9iYWxPYmplY3QsIGNh
bGxlZUZyYW1lLCBjYWxsTGlua0luZm8sIGNhbGxlZUFzRnVuY3Rpb25DZWxsSWdub3JlZCk7CiB9
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3Bw
CShyZXZpc2lvbiAyODg4NTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2Vu
ZXJhdG9ycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDEwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEwLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xOTIsNyArMTkyLDYgQEAgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiB0aAogCiBzdGF0aWMgdm9pZCBzbG93UGF0aEZv
cihDQ2FsbEhlbHBlcnMmIGppdCwgVk0mIHZtLCBTcHJ0X0pJVE9wZXJhdGlvbl9FR0NsaSBzbG93
UGF0aEZ1bmN0aW9uKQogewotICAgIGppdC5zYW5pdGl6ZVN0YWNrSW5saW5lKHZtLCBHUFJJbmZv
Ojpub25BcmdHUFIwKTsKICAgICBqaXQuZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKICAgICBqaXQu
c3RvcmVQdHIoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsICZ2bS50b3BDYWxsRnJhbWUpOwog
I2lmIE9TKFdJTkRPV1MpICYmIENQVShYODZfNjQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0xvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTTG9jay5jcHAJKHJldmlzaW9uIDI4ODg1OCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTTG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0xMzgsOCArMTM4LDcgQEAgdm9pZCBK
U0xvY2s6OmRpZEFjcXVpcmVMb2NrKCkKICAgICBtX2VudHJ5QXRvbVN0cmluZ1RhYmxlID0gdGhy
ZWFkLnNldEN1cnJlbnRBdG9tU3RyaW5nVGFibGUobV92bS0+YXRvbVN0cmluZ1RhYmxlKCkpOwog
ICAgIEFTU0VSVChtX2VudHJ5QXRvbVN0cmluZ1RhYmxlKTsKIAotICAgIG1fdm0tPnNldExhc3RT
dGFja1RvcCh0aHJlYWQuc2F2ZWRMYXN0U3RhY2tUb3AoKSk7Ci0gICAgQVNTRVJUKHRocmVhZC5z
dGFjaygpLmNvbnRhaW5zKG1fdm0tPmxhc3RTdGFja1RvcCgpKSk7CisgICAgbV92bS0+c2V0TGFz
dFN0YWNrVG9wKHRocmVhZCk7CiAKICAgICBpZiAobV92bS0+aGVhcC5oYXNBY2Nlc3MoKSkKICAg
ICAgICAgbV9zaG91bGRSZWxlYXNlSGVhcEFjY2VzcyA9IGZhbHNlOwpAQCAtMjc3LDcgKzI3Niw3
IEBAIHZvaWQgSlNMb2NrOjpncmFiQWxsTG9ja3MoRHJvcEFsbExvY2tzKiAKIAogICAgIFRocmVh
ZCYgdGhyZWFkID0gVGhyZWFkOjpjdXJyZW50KCk7CiAgICAgbV92bS0+c2V0U3RhY2tQb2ludGVy
QXRWTUVudHJ5KHRocmVhZC5zYXZlZFN0YWNrUG9pbnRlckF0Vk1FbnRyeSgpKTsKLSAgICBtX3Zt
LT5zZXRMYXN0U3RhY2tUb3AodGhyZWFkLnNhdmVkTGFzdFN0YWNrVG9wKCkpOworICAgIG1fdm0t
PnNldExhc3RTdGFja1RvcCh0aHJlYWQpOwogfQogCiBKU0xvY2s6OkRyb3BBbGxMb2Nrczo6RHJv
cEFsbExvY2tzKFZNKiB2bSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAJ
KHJldmlzaW9uIDI4ODg1OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDgtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDgtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTI0Miw5ICsyNDIsOCBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlw
ZSwgSGVhcFR5cGUgaGVhcFR5cGUsCiAgICAgICAgIENSQVNIX1dJVEhfSU5GTygweDQyNDI0MjQy
MjAyMDIwMjAsIDB4YmFkYmVlZjBiYWRiZWVmLCAweDEyMzQxMjM0MTIzNDEyMzQsIDB4MTMzNzEz
MzcxMzM3MTMzNyk7CiAKICAgICBpbnRlcnByZXRlciA9IG5ldyBJbnRlcnByZXRlcigqdGhpcyk7
Ci0gICAgU3RhY2tCb3VuZHMgc3RhY2sgPSBUaHJlYWQ6OmN1cnJlbnQoKS5zdGFjaygpOwogICAg
IHVwZGF0ZVNvZnRSZXNlcnZlZFpvbmVTaXplKE9wdGlvbnM6OnNvZnRSZXNlcnZlZFpvbmVTaXpl
KCkpOwotICAgIHNldExhc3RTdGFja1RvcChzdGFjay5vcmlnaW4oKSk7CisgICAgc2V0TGFzdFN0
YWNrVG9wKFRocmVhZDo6Y3VycmVudCgpKTsKIAogICAgIEpTUnVuTG9vcFRpbWVyOjpNYW5hZ2Vy
OjpzaGFyZWQoKS5yZWdpc3RlclZNKCp0aGlzKTsKIApAQCAtNTAzLDkgKzUwMiwxMSBAQCB2b2lk
IFZNOjpwcmltaXRpdmVHaWdhY2FnZURpc2FibGVkKCkKICAgICBtX25lZWRUb0ZpcmVQcmltaXRp
dmVHaWdhY2FnZUVuYWJsZWQgPSB0cnVlOwogfQogCi12b2lkIFZNOjpzZXRMYXN0U3RhY2tUb3Ao
dm9pZCogbGFzdFN0YWNrVG9wKQoteyAKLSAgICBtX2xhc3RTdGFja1RvcCA9IGxhc3RTdGFja1Rv
cDsKK3ZvaWQgVk06OnNldExhc3RTdGFja1RvcChjb25zdCBUaHJlYWQmIHRocmVhZCkKK3sKKyAg
ICBtX2xhc3RTdGFja1RvcCA9IHRocmVhZC5zYXZlZExhc3RTdGFja1RvcCgpOworICAgIGF1dG8m
IHN0YWNrID0gdGhyZWFkLnN0YWNrKCk7CisgICAgUkVMRUFTRV9BU1NFUlQoc3RhY2suY29udGFp
bnMobV9sYXN0U3RhY2tUb3ApLCAweDU1MTAsIG1fbGFzdFN0YWNrVG9wLCBzdGFjay5vcmlnaW4o
KSwgc3RhY2suZW5kKCkpOwogfQogCiBSZWY8Vk0+IFZNOjpjcmVhdGVDb250ZXh0R3JvdXAoSGVh
cFR5cGUgaGVhcFR5cGUpCkBAIC0xMDUwLDE2ICsxMDUxLDExIEBAIHZvaWQgVk06OnBvcEFsbENo
ZWNrcG9pbnRPU1JTaWRlU3RhdGVVbnQKICAgICBtX2NoZWNrcG9pbnRTaWRlU3RhdGUuc2hyaW5r
VG9GaXQoKTsKIH0KIAotdm9pZCBsb2dTYW5pdGl6ZVN0YWNrKFZNJiB2bSkKK3N0YXRpYyB2b2lk
IGxvZ1Nhbml0aXplU3RhY2soVk0mIHZtKQogewotICAgIGlmIChPcHRpb25zOjp2ZXJib3NlU2Fu
aXRpemVTdGFjaygpICYmIHZtLnRvcENhbGxGcmFtZSkgewotICAgICAgICBpbnQgZHVtbXk7Cisg
ICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OnZlcmJvc2VTYW5pdGl6ZVN0YWNrKCkpKSB7CiAgICAg
ICAgIGF1dG8mIHN0YWNrQm91bmRzID0gVGhyZWFkOjpjdXJyZW50KCkuc3RhY2soKTsKLSAgICAg
ICAgZGF0YUxvZygKLSAgICAgICAgICAgICJTYW5pdGl6aW5nIHN0YWNrIGZvciBWTSA9ICIsIFJh
d1BvaW50ZXIoJnZtKSwgIiB3aXRoIHRvcCBjYWxsIGZyYW1lIGF0ICIsIFJhd1BvaW50ZXIodm0u
dG9wQ2FsbEZyYW1lKSwKLSAgICAgICAgICAgICIsIGN1cnJlbnQgc3RhY2sgcG9pbnRlciBhdCAi
LCBSYXdQb2ludGVyKCZkdW1teSksICIsIGluICIsCi0gICAgICAgICAgICBwb2ludGVyRHVtcCh2
bS50b3BDYWxsRnJhbWUtPmNvZGVCbG9jaygpKSwgIiwgbGFzdCBjb2RlIG9yaWdpbiA9ICIsCi0g
ICAgICAgICAgICB2bS50b3BDYWxsRnJhbWUtPmNvZGVPcmlnaW4oKSwgIiwgbGFzdCBzdGFjayB0
b3AgPSAiLCBSYXdQb2ludGVyKHZtLmxhc3RTdGFja1RvcCgpKSwgIiwgaW4gc3RhY2sgcmFuZ2Ug
WyIsIFJhd1BvaW50ZXIoc3RhY2tCb3VuZHMub3JpZ2luKCkpLCAiLCAiLCBSYXdQb2ludGVyKHN0
YWNrQm91bmRzLmVuZCgpKSwgIl1cbiIpOworICAgICAgICBkYXRhTG9nTG4oIlNhbml0aXppbmcg
c3RhY2sgZm9yIFZNID0gIiwgUmF3UG9pbnRlcigmdm0pLCAiLCBjdXJyZW50IHN0YWNrIHBvaW50
ZXIgYXQgIiwgUmF3UG9pbnRlcihjdXJyZW50U3RhY2tQb2ludGVyKCkpLCAiLCBsYXN0IHN0YWNr
IHRvcCA9ICIsIFJhd1BvaW50ZXIodm0ubGFzdFN0YWNrVG9wKCkpLCAiLCBpbiBzdGFjayByYW5n
ZSAoIiwgUmF3UG9pbnRlcihzdGFja0JvdW5kcy5lbmQoKSksICIsICIsIFJhd1BvaW50ZXIoc3Rh
Y2tCb3VuZHMub3JpZ2luKCkpLCAiXSIpOwogICAgIH0KIH0KIApAQCAtMTI3MCwxNyArMTI2Niwy
MCBAQCB2b2lkIFF1ZXVlZFRhc2s6OnJ1bigpCiAKIHZvaWQgc2FuaXRpemVTdGFja0ZvclZNKFZN
JiB2bSkKIHsKKyAgICBhdXRvJiB0aHJlYWQgPSBUaHJlYWQ6OmN1cnJlbnQoKTsKKyAgICBhdXRv
JiBzdGFjayA9IHRocmVhZC5zdGFjaygpOworICAgIGlmICghdm0uY3VycmVudFRocmVhZElzSG9s
ZGluZ0FQSUxvY2soKSkKKyAgICAgICAgcmV0dXJuOyAvLyB2bS5sYXN0U3RhY2tUb3AoKSBtYXkg
bm90IGJlIHNldCB1cCBjb3JyZWN0bHkgaWYgSlNMb2NrIGlzIG5vdCBoZWxkLgorCiAgICAgbG9n
U2FuaXRpemVTdGFjayh2bSk7Ci0gICAgaWYgKHZtLnRvcENhbGxGcmFtZSkgewotICAgICAgICBh
dXRvJiBzdGFja0JvdW5kcyA9IFRocmVhZDo6Y3VycmVudCgpLnN0YWNrKCk7Ci0gICAgICAgIEFT
U0VSVCh2bS5jdXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKLSAgICAgICAgQVNTRVJU
X1VOVVNFRChzdGFja0JvdW5kcywgc3RhY2tCb3VuZHMuY29udGFpbnModm0ubGFzdFN0YWNrVG9w
KCkpKTsKLSAgICB9CisKKyAgICBSRUxFQVNFX0FTU0VSVChzdGFjay5jb250YWlucyh2bS5sYXN0
U3RhY2tUb3AoKSksIDB4YWExMCwgdm0ubGFzdFN0YWNrVG9wKCksIHN0YWNrLm9yaWdpbigpLCBz
dGFjay5lbmQoKSk7CiAjaWYgRU5BQkxFKENfTE9PUCkKICAgICB2bS5pbnRlcnByZXRlci0+Y2xv
b3BTdGFjaygpLnNhbml0aXplU3RhY2soKTsKICNlbHNlCiAgICAgc2FuaXRpemVTdGFja0ZvclZN
SW1wbCgmdm0pOwogI2VuZGlmCisgICAgUkVMRUFTRV9BU1NFUlQoc3RhY2suY29udGFpbnModm0u
bGFzdFN0YWNrVG9wKCkpLCAweGFhMjAsIHZtLmxhc3RTdGFja1RvcCgpLCBzdGFjay5vcmlnaW4o
KSwgc3RhY2suZW5kKCkpOwogfQogCiBzaXplX3QgVk06OmNvbW1pdHRlZFN0YWNrQnl0ZUNvdW50
KCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkocmV2aXNpb24gMjg4ODU4KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAyMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTc3NCw3ICs3NzQsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkKiogYWRkcmVzc09mTGFzdFN0YWNr
VG9wKCkgeyByZXR1cm4gJm1fbGFzdFN0YWNrVG9wOyB9CiAgICAgdm9pZCogbGFzdFN0YWNrVG9w
KCkgeyByZXR1cm4gbV9sYXN0U3RhY2tUb3A7IH0KLSAgICB2b2lkIHNldExhc3RTdGFja1RvcCh2
b2lkKik7CisgICAgdm9pZCBzZXRMYXN0U3RhY2tUb3AoY29uc3QgVGhyZWFkJik7CiAgICAgCiAg
ICAgdm9pZCBmaXJlUHJpbWl0aXZlR2lnYWNhZ2VFbmFibGVkSWZOZWNlc3NhcnkoKQogICAgIHsK
QEAgLTExNjIsNiArMTE2Miw1IEBAIGV4dGVybiAiQyIgdm9pZCBzYW5pdGl6ZVN0YWNrRm9yVk1J
bXBsKFYKICNlbmRpZgogCiBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHNhbml0aXplU3RhY2tGb3JW
TShWTSYpOwotdm9pZCBsb2dTYW5pdGl6ZVN0YWNrKFZNJik7CiAKIH0gLy8gbmFtZXNwYWNlIEpT
QwpJbmRleDogU291cmNlL1dURi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9D
aGFuZ2VMb2cJKHJldmlzaW9uIDI4ODg1OCkKKysrIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjItMDEtMzEgIE1hcmsgTGFtICA8bWFyay5s
YW1AYXBwbGUuY29tPgorCisgICAgICAgIEVuaGFuY2Ugc2FuaXRpemVTdGFja0ZvclZNKCkgdG8g
YXNzaXN0IHdpdGggY3Jhc2ggYW5hbHlzaXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzU3NTIKKyAgICAgICAgcmRhcjovLzgxMDE0NjAxCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvVGhyZWFk
aW5nLmg6CisgICAgICAgIChXVEY6OlRocmVhZDo6c2F2ZWRTdGFja1BvaW50ZXJBdFZNRW50cnkg
Y29uc3QpOgorICAgICAgICAoV1RGOjpUaHJlYWQ6OnNhdmVkTGFzdFN0YWNrVG9wIGNvbnN0KToK
KyAgICAgICAgKFdURjo6VGhyZWFkOjpzYXZlZFN0YWNrUG9pbnRlckF0Vk1FbnRyeSk6IERlbGV0
ZWQuCisgICAgICAgIChXVEY6OlRocmVhZDo6c2F2ZWRMYXN0U3RhY2tUb3ApOiBEZWxldGVkLgor
CiAyMDIyLTAxLTMxICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAg
IERlbGV0ZSBydW50aW1lIGZsYWcgZm9yIHN1YnJlc291cmNlIGludGVncml0eQpJbmRleDogU291
cmNlL1dURi93dGYvVGhyZWFkaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvVGhy
ZWFkaW5nLmgJKHJldmlzaW9uIDI4ODg1OCkKKysrIFNvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yMzEsNyArMjMxLDcgQEAgcHVibGljOgogICAgIH0KICNlbmRp
ZgogCi0gICAgdm9pZCogc2F2ZWRTdGFja1BvaW50ZXJBdFZNRW50cnkoKQorICAgIHZvaWQqIHNh
dmVkU3RhY2tQb2ludGVyQXRWTUVudHJ5KCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBt
X3NhdmVkU3RhY2tQb2ludGVyQXRWTUVudHJ5OwogICAgIH0KQEAgLTI0MSw3ICsyNDEsNyBAQCBw
dWJsaWM6CiAgICAgICAgIG1fc2F2ZWRTdGFja1BvaW50ZXJBdFZNRW50cnkgPSBzdGFja1BvaW50
ZXJBdFZNRW50cnk7CiAgICAgfQogCi0gICAgdm9pZCogc2F2ZWRMYXN0U3RhY2tUb3AoKQorICAg
IHZvaWQqIHNhdmVkTGFzdFN0YWNrVG9wKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBt
X3NhdmVkTGFzdFN0YWNrVG9wOwogICAgIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>