<?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>219315</bug_id>
          
          <creation_ts>2020-11-27 10:39:37 -0800</creation_ts>
          <short_desc>[LFC Display] Store the display tree as a tree of stacking items</short_desc>
          <delta_ts>2020-12-05 10:54:32 -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>Layout and Rendering</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="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>koivisto</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1710343</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-11-27 10:39:37 -0800</bug_when>
    <thetext>[LFC Display] Store the display tree as a tree of stacking items</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1710344</commentid>
    <comment_count>1</comment_count>
      <attachid>414959</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-11-27 10:39:46 -0800</bug_when>
    <thetext>Created attachment 414959
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1710523</commentid>
    <comment_count>2</comment_count>
      <attachid>415002</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-11-29 20:06:51 -0800</bug_when>
    <thetext>Created attachment 415002
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1710524</commentid>
    <comment_count>3</comment_count>
      <attachid>415003</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-11-29 20:08:58 -0800</bug_when>
    <thetext>Created attachment 415003
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1710525</commentid>
    <comment_count>4</comment_count>
      <attachid>415004</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-11-29 20:16:37 -0800</bug_when>
    <thetext>Created attachment 415004
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1710528</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-11-29 21:23:10 -0800</bug_when>
    <thetext>ChangeLog entry in Source/WebCore/ChangeLog contains OOPS!.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712059</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-12-04 10:40:18 -0800</bug_when>
    <thetext>&lt;rdar://problem/71984765&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712256</commentid>
    <comment_count>7</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-12-05 10:54:32 -0800</bug_when>
    <thetext>https://trac.webkit.org/r270474</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414959</attachid>
            <date>2020-11-27 10:39:46 -0800</date>
            <delta_ts>2020-11-29 20:06:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219315-20201127103945.patch</filename>
            <type>text/plain</type>
            <size>35779</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMTk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWQxMjdjM2NjZTk3MjYz
ZTVlZjZjMTgyZTNjYmNmYTY2MTY5N2IyOC4uYjY5YWFlZmZkZGQ0NzlhZTY5MjE1MDQ3ZGM3NTlm
NjQyODQ1NGIwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2IEBACisyMDIwLTExLTI2ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIFtMRkMgRGlzcGxh
eV0gU3RvcmUgdGhlIGRpc3BsYXkgdHJlZSBhcyBhIHRyZWUgb2Ygc3RhY2tpbmcgaXRlbXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTMxNQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEN1cnJlbnRseSB0
aGUgZGlzcGxheSB0cmVlIGlzIGEgZnVsbCB0cmVlLCBjcm9zc2luZyBzdGFja2luZyBjb250ZXh0
IGJvdW5kYXJpZXMsIGFuZCB0aGUKKyAgICAgICAgei1vcmRlciBsaXN0cyBhcmUgYnVpbHQgYXQg
cGFpbnQgdGltZS4KKworICAgICAgICBDaGFuZ2UgdG8gYSB0cmVlIG9mIFN0YWNraW5nSXRlbXMs
IHdoZXJlIGEgU3RhY2tpbmdJdGVtIGV4aXN0cyBmb3IgZWFjaCBib3ggdGhhdAorICAgICAgICBw
YXJ0aWNpcGF0ZXMgaW4gdGhlIHotb3JkZXIgc29ydGluZyBhbGdvcml0aG0gKGkuZS4gYm94ZXMg
dGhhdCBhcmUgcG9zaXRpb25lZCwgb3IgaGF2ZQorICAgICAgICBzdHlsZXMgdGhhdCBjcmVhdGUg
c3RhY2tpbmcgY29udGV4dCkuIEVhY2ggU3RhY2tpbmdJdGVtIG93bnMgdGhlIHN1YnRyZWUgb2Yg
RGlzcGxheTo6Qm94ZXMKKyAgICAgICAgdGhhdCBpdCBwYWludHMsIGFuZCB0aG9zZSBzdWJ0cmVl
cyBhcmUgbm90IG90aGVyd2lzZSBjb25uZWN0ZWQuCisKKyAgICAgICAgVGhlIERpc3BsYXk6OlRy
ZWUgb3ducyB0aGUgcm9vdCBTdGFja2luZ0l0ZW0sIGFuZCBlYWNoIFN0YWNraW5nSXRlbSBvd25z
IGl0cyBjaGlsZAorICAgICAgICBTdGFja2luZ0l0ZW1zLiBUaGUgU3RhY2tpbmdJdGVtIHRyZWUg
aXMgYnVpbHQgYXQgZGlzcGxheSB0cmVlIGJ1aWxkaW5nIHRpbWUgYnkgc3RvcmluZworICAgICAg
ICBzdGF0ZSBpbiB0aGUgQnVpbGRpbmdTdGF0ZSBzdGFjay4gU3RhY2tpbmdJdGVtcyBhcmUgYWRk
ZWQgdG8gdGhlIHotb3JkZXIgbGlzdHMgb2YKKyAgICAgICAgdGhlaXIgcGFyZW50IGl0ZW0gYXQg
Y3JlYXRpb24gdGltZTsgd2hlbiBkb25lIHByb2Nlc3NpbmcgYm94ZXMgZm9yIGEgU3RhY2tpbmdJ
dGVtLAorICAgICAgICB3ZSB0aGVuIHNvcnQgaXRzIHotb3JkZXIgbGlzdHMuCisKKyAgICAgICAg
KiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogZGlzcGxheS9EaXNwbGF5TGF5ZXJDb250cm9sbGVyLmNwcDoKKyAgICAg
ICAgKiBkaXNwbGF5L0Rpc3BsYXlUcmVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6
OlRyZWU6OlRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6VHJlZTo6cm9vdEJveCBj
b25zdCk6CisgICAgICAgICogZGlzcGxheS9EaXNwbGF5VHJlZS5oOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheTo6VHJlZTo6cm9vdFN0YWNraW5nSXRlbSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5OjpUcmVlOjpyb290Qm94IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBk
aXNwbGF5L0Rpc3BsYXlUcmVlQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
OjpUcmVlQnVpbGRlcjo6YnVpbGQpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6VHJlZUJ1
aWxkZXI6OnB1c2hTdGF0ZUZvckJveERlc2NlbmRhbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXk6OlRyZWVCdWlsZGVyOjpwb3BTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
OjpUcmVlQnVpbGRlcjo6c2V0dXBTdGFja2luZ0l0ZW1Gb3JCb3gpOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheTo6VHJlZUJ1aWxkZXI6OnJlY3Vyc2l2ZUJ1aWxkRGlzcGxheVRyZWUpOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheTo6b3V0cHV0RGlzcGxheUJveCk6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5OjpvdXRwdXREaXNwbGF5VHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5OjpkaXNwbGF5VHJlZUFzVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpvdXRw
dXRTdGFja2luZ1RyZWUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6c2hvd0Rpc3BsYXlU
cmVlKToKKyAgICAgICAgKiBkaXNwbGF5L0Rpc3BsYXlUcmVlQnVpbGRlci5oOgorICAgICAgICAq
IGRpc3BsYXkvY3NzL0Rpc3BsYXlCb3hGYWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXk6OkJveEZhY3Rvcnk6OmRpc3BsYXlCb3hGb3JSb290Qm94IGNvbnN0KToKKyAgICAgICAg
KiBkaXNwbGF5L2Nzcy9EaXNwbGF5Qm94RmFjdG9yeS5oOgorICAgICAgICAqIGRpc3BsYXkvY3Nz
L0Rpc3BsYXlDU1NQYWludGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkNTU1Bh
aW50ZXI6OnBhaW50QXRvbWljYWxseVBhaW50ZWRCb3gpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheTo6Q1NTUGFpbnRlcjo6cGFpbnRTdGFja2luZ0NvbnRleHQpOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheTo6Q1NTUGFpbnRlcjo6aXNTdGFja2luZ0NvbnRleHRQYWludGluZ0JvdW5kYXJ5
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkNTU1BhaW50ZXI6OnBhcnRp
Y2lwYXRlc0luWk9yZGVyU29ydGluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5OjpDU1NQYWludGVyOjpjb2xsZWN0U3RhY2tpbmdDb250ZXh0RGVzY2VuZGFudHMpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Q1NTUGFpbnRlcjo6cmVjdXJzaXZlQ29s
bGVjdExheWVycyk6IERlbGV0ZWQuCisgICAgICAgICogZGlzcGxheS9jc3MvRGlzcGxheUNTU1Bh
aW50ZXIuaDoKKyAgICAgICAgKiBkaXNwbGF5L2Nzcy9EaXNwbGF5U3RhY2tpbmdJdGVtLmNwcDog
Q29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvZGlzcGxheS9EaXNwbGF5VHJlZS5jcHAuCisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5OjpTdGFja2luZ0l0ZW06OlN0YWNraW5nSXRlbSk6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5OjpTdGFja2luZ0l0ZW06OmlzU3RhY2tpbmdDb250ZXh0IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OlN0YWNraW5nSXRlbTo6YWRkQ2hpbGRT
dGFja2luZ0l0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6U3RhY2tpbmdJdGVtOjpz
b3J0TGlzdHMpOgorICAgICAgICAqIGRpc3BsYXkvY3NzL0Rpc3BsYXlTdGFja2luZ0l0ZW0uaDog
Q29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvZGlzcGxheS9EaXNwbGF5VHJlZS5oLgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheTo6U3RhY2tpbmdJdGVtOjpib3ggY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheTo6U3RhY2tpbmdJdGVtOjpuZWdhdGl2ZVpPcmRlckxpc3QgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6U3RhY2tpbmdJdGVtOjpwb3NpdGl2ZVpPcmRl
ckxpc3QgY29uc3QpOgorCiAyMDIwLTExLTI2ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJA
YXBwbGUuY29tPgogCiAgICAgICAgIFtMRkMgRGlzcGxheV0gVXNlIGEgdmVjdG9yIHRvIG1haW50
YWluIHN0YXRlIGR1cmluZyBkaXNwbGF5IHRyZWUgYnVpbGRpbmcKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXgg
YmEwMDRkN2I1MGQ4NTAzZTRlNTFjNjhlOTdkNDU0ZWJiYjY4OTdkZC4uMTlmZDZhZmIwMmQ2Y2Vl
YTkxMDViMWNiYmY4MzU1YWEwYjBjZWI5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTg0Niw2ICs4NDYs
NyBAQCBkaXNwbGF5L2Nzcy9EaXNwbGF5Q1NTUGFpbnRlci5jcHAKIGRpc3BsYXkvY3NzL0Rpc3Bs
YXlGaWxsTGF5ZXJJbWFnZUdlb21ldHJ5LmNwcAogZGlzcGxheS9jc3MvRGlzcGxheUltYWdlQm94
LmNwcAogZGlzcGxheS9jc3MvRGlzcGxheVJlcGxhY2VkQm94LmNwcAorZGlzcGxheS9jc3MvRGlz
cGxheVN0YWNraW5nSXRlbS5jcHAKIGRpc3BsYXkvY3NzL0Rpc3BsYXlTdHlsZS5jcHAKIGRpc3Bs
YXkvY3NzL0Rpc3BsYXlUZXh0Qm94LmNwcAogZGlzcGxheS9EaXNwbGF5TGF5ZXJDb250cm9sbGVy
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IGQzODc2OTMwYjhiNWIwYWNlMTQyNjRkYzJmZWVjYzk2YTllNDZlYTUuLjU4Y2Iz
MTg3MjMxZWIxMjM5ZjIzMmJlMjhhNTYyZTVjNDg0N2M3N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTYwNjYsNiArNjA2Niw4
IEBACiAJCTBGNzkwRjQwMjUxN0NFNkQwMDlCQTAzNCAvKiBEaXNwbGF5TGF5ZXJDb250cm9sbGVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERpc3BsYXlMYXllckNv
bnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjdERjE0NzFFMkJG
MUE2MDA5NTk1MUIgLyogV2ViQ29yZUpTQ2xpZW50RGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXZWJDb3JlSlNDbGllbnREYXRhLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEY4NTBGRTIxRUQ3QzE4MzAwRkI3N0E3IC8qIFBlcmZvcm1hbmNl
TG9nZ2luZ0NsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQZXJmb3Jt
YW5jZUxvZ2dpbmdDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY4Njgy
RkEyNTcwN0Y0NzAwQzA4QkI1IC8qIERpc3BsYXlTdGFja2luZ0l0ZW0uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRGlzcGxheVN0YWNraW5nSXRlbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
Rjg2ODJGQzI1NzA3RjQ3MDBDMDhCQjUgLyogRGlzcGxheVN0YWNraW5nSXRlbS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBEaXNwbGF5U3RhY2tpbmdJdGVtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEY4NzE2NkQxQzg2OUQ4MzAwNEZGMERFIC8qIExlbmd0aFBvaW50LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExlbmd0aFBvaW50LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY4NzE2NkUxQzg2OUQ4MzAwNEZGMERFIC8qIExl
bmd0aFBvaW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExlbmd0aFBvaW50
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOEI0NTZGMURDM0ZCMTAwMDQ0M0Mz
RiAvKiBJbnRlcnNlY3Rpb25PYnNlcnZlckNhbGxiYWNrLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBJbnRlcnNlY3Rpb25PYnNlcnZlckNhbGxiYWNrLmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTE3ODM5LDYgKzE3ODQxLDggQEAKIAkJCQkwRjMyQkE0MTI1NEYzMjE2MDAx
QUMzOEUgLyogRGlzcGxheVBhaW50aW5nQ29udGV4dC5oICovLAogCQkJCTBGRkYxQjdDMjUxQkM2
NTcwMDk4Nzk1QSAvKiBEaXNwbGF5UmVwbGFjZWRCb3guY3BwICovLAogCQkJCTBGRkYxQjc5MjUx
QkM2NTcwMDk4Nzk1QSAvKiBEaXNwbGF5UmVwbGFjZWRCb3guaCAqLywKKwkJCQkwRjg2ODJGQzI1
NzA3RjQ3MDBDMDhCQjUgLyogRGlzcGxheVN0YWNraW5nSXRlbS5jcHAgKi8sCisJCQkJMEY4Njgy
RkEyNTcwN0Y0NzAwQzA4QkI1IC8qIERpc3BsYXlTdGFja2luZ0l0ZW0uaCAqLywKIAkJCQkwRkZG
MUI3NjI1MUJDNjU3MDA5ODc5NUEgLyogRGlzcGxheVN0eWxlLmNwcCAqLywKIAkJCQkwRkZGMUI3
MzI1MUJDNjU3MDA5ODc5NUEgLyogRGlzcGxheVN0eWxlLmggKi8sCiAJCQkJMEZCMDY4OTQyNTI0
M0I5MDAwMUU4RTc1IC8qIERpc3BsYXlUZXh0Qm94LmNwcCAqLywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Rpc3BsYXkvRGlzcGxheUxheWVyQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kaXNwbGF5L0Rpc3BsYXlMYXllckNvbnRyb2xsZXIuY3BwCmluZGV4IDkxZThlMGQzMWNl
M2MwNDdkYTMwY2QyMmYwYzgxZjdhMTZiMWQwY2YuLjc5NDNkMTI0MDIzMjQyNGZiODQ4OWVmOTgz
YWMxMGQzN2ExZmY2NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvRGlzcGxh
eUxheWVyQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZGlzcGxheS9EaXNwbGF5
TGF5ZXJDb250cm9sbGVyLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkNocm9tZS5o
IgogI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgogI2luY2x1ZGUgIkRpc3BsYXlDU1NQYWludGVy
LmgiCisjaW5jbHVkZSAiRGlzcGxheUNvbnRhaW5lckJveC5oIgogI2luY2x1ZGUgIkRpc3BsYXlQ
YWludGluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJEaXNwbGF5VHJlZS5oIgogI2luY2x1ZGUgIkRp
c3BsYXlWaWV3LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L0Rpc3BsYXlU
cmVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvRGlzcGxheVRyZWUuY3BwCmluZGV4IDZl
YTBmYTY3Njg4NTJlZmQ5YmU2ODhlZWNlMDk1YzNmMmU2YjBiNTQuLmJjMzQ5MTkwZTc5OWNkMmFk
YTdlNTJiYTMzZmU0Y2JkYWI0NzAwN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rpc3Bs
YXkvRGlzcGxheVRyZWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvRGlzcGxheVRy
ZWUuY3BwCkBAIC0yOCwxNSArMjgsMjQgQEAKIAogI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElO
R19DT05URVhUKQogCisjaW5jbHVkZSAiRGlzcGxheUNvbnRhaW5lckJveC5oIgorI2luY2x1ZGUg
IkRpc3BsYXlTdGFja2luZ0l0ZW0uaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgRGlzcGxheSB7CiAKLVRyZWU6OlRy
ZWUoc3RkOjp1bmlxdWVfcHRyPENvbnRhaW5lckJveD4mJiByb290Qm94KQotICAgIDogbV9yb290
Qm94KFdURk1vdmUocm9vdEJveCkpCitUcmVlOjpUcmVlKHN0ZDo6dW5pcXVlX3B0cjxTdGFja2lu
Z0l0ZW0+JiYgcm9vdFN0YWNraW5nSXRlbSkKKyAgICA6IG1fcm9vdFN0YWNraW5nSXRlbShXVEZN
b3ZlKHJvb3RTdGFja2luZ0l0ZW0pKQogewotICAgIEFTU0VSVChtX3Jvb3RCb3gpOworICAgIEFT
U0VSVChtX3Jvb3RTdGFja2luZ0l0ZW0pOworfQorCitUcmVlOjp+VHJlZSgpID0gZGVmYXVsdDsK
KworY29uc3QgQ29udGFpbmVyQm94JiBUcmVlOjpyb290Qm94KCkgY29uc3QKK3sKKyAgICByZXR1
cm4gZG93bmNhc3Q8Q29udGFpbmVyQm94PihtX3Jvb3RTdGFja2luZ0l0ZW0tPmJveCgpKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgRGlzcGxheQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZGlz
cGxheS9EaXNwbGF5VHJlZS5oIGIvU291cmNlL1dlYkNvcmUvZGlzcGxheS9EaXNwbGF5VHJlZS5o
CmluZGV4IGZlOGYzNWZjM2NhM2NiMjYxM2MyNWIyYWRkZWMyNjVkMzQ1MzEyODcuLjBmMmVmYjkx
MDY1ZTZmNzUzNTY2NjVhOGI2NWFlOWI0ZDVhNWI1Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Rpc3BsYXkvRGlzcGxheVRyZWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L0Rp
c3BsYXlUcmVlLmgKQEAgLTI3LDIyICsyNywyNSBAQAogCiAjaWYgRU5BQkxFKExBWU9VVF9GT1JN
QVRUSU5HX0NPTlRFWFQpCiAKLSNpbmNsdWRlICJEaXNwbGF5Q29udGFpbmVyQm94LmgiCiAjaW5j
bHVkZSA8d3RmL0lzb01hbGxvYy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2Ug
RGlzcGxheSB7CiAKK2NsYXNzIENvbnRhaW5lckJveDsKK2NsYXNzIFN0YWNraW5nSXRlbTsKKwog
Y2xhc3MgVHJlZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQoVHJlZSk7CiBwdWJsaWM6
Ci0gICAgVHJlZShzdGQ6OnVuaXF1ZV9wdHI8Q29udGFpbmVyQm94PiYmKTsKKyAgICBleHBsaWNp
dCBUcmVlKHN0ZDo6dW5pcXVlX3B0cjxTdGFja2luZ0l0ZW0+JiYpOworICAgIH5UcmVlKCk7CiAK
LSAgICBjb25zdCBDb250YWluZXJCb3gmIHJvb3RCb3goKSBjb25zdCB7IHJldHVybiAqbV9yb290
Qm94OyB9CisgICAgY29uc3QgU3RhY2tpbmdJdGVtJiByb290U3RhY2tpbmdJdGVtKCkgY29uc3Qg
eyByZXR1cm4gKm1fcm9vdFN0YWNraW5nSXRlbTsgfQorICAgIGNvbnN0IENvbnRhaW5lckJveCYg
cm9vdEJveCgpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIC8vIElkZWFsbHkgdGhpcyByb290IGJv
eCB3b3VsZCBiZSBhZ25vc3RpYyB0byBkaXNwbGF5IHR5cGUgKENTUyB2cyBTVkcpLgotICAgIHN0
ZDo6dW5pcXVlX3B0cjxDb250YWluZXJCb3g+IG1fcm9vdEJveDsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8U3RhY2tpbmdJdGVtPiBtX3Jvb3RTdGFja2luZ0l0ZW07CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBEaXNwbGF5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L0Rpc3BsYXlUcmVl
QnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L0Rpc3BsYXlUcmVlQnVpbGRlci5j
cHAKaW5kZXggNzc0YmQ1NmMzZDllYmIzOGYzZTRhZWY4Y2NmNzEzYmUwZDhmMjIxMS4uYWY3Yzk5
Zjg5NTIzYjUwMjBiY2I2MWY2OGQzNzg4N2Q3N2RjNjljOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZGlzcGxheS9EaXNwbGF5VHJlZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Rpc3BsYXkvRGlzcGxheVRyZWVCdWlsZGVyLmNwcApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5j
bHVkZSAiRGlzcGxheUJveEZhY3RvcnkuaCIKICNpbmNsdWRlICJEaXNwbGF5Q29udGFpbmVyQm94
LmgiCisjaW5jbHVkZSAiRGlzcGxheVN0YWNraW5nSXRlbS5oIgogI2luY2x1ZGUgIkRpc3BsYXlT
dHlsZS5oIgogI2luY2x1ZGUgIkRpc3BsYXlUcmVlLmgiCiAjaW5jbHVkZSAiSW5saW5lRm9ybWF0
dGluZ1N0YXRlLmgiCkBAIC05OCw2ICs5OSw3IEBAIHByaXZhdGU6CiAKIHN0cnVjdCBCdWlsZGlu
Z1N0YXRlIHsKICAgICBQb3NpdGlvbmluZ0NvbnRleHQgcG9zaXRpb25pbmdDb250ZXh0OworICAg
IFN0YWNraW5nSXRlbSYgY3VycmVudFN0YWNraW5nQ29udGV4dEl0ZW07CiB9OwogCiBUcmVlQnVp
bGRlcjo6VHJlZUJ1aWxkZXIoZmxvYXQgcGl4ZWxTbmFwcGluZ0ZhY3RvcikKQEAgLTEyMSwzMiAr
MTIzLDM2IEBAIHN0ZDo6dW5pcXVlX3B0cjxUcmVlPiBUcmVlQnVpbGRlcjo6YnVpbGQoY29uc3Qg
TGF5b3V0OjpMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUpCiAKICAgICBhdXRvIGdlb21ldHJ5ID0g
bGF5b3V0U3RhdGUuZ2VvbWV0cnlGb3JCb3gocm9vdExheW91dEJveCk7CiAgICAgYXV0byByb290
RGlzcGxheUJveCA9IG1fYm94RmFjdG9yeS5kaXNwbGF5Qm94Rm9yUm9vdEJveChyb290TGF5b3V0
Qm94LCBnZW9tZXRyeSwgbV9yb290QmFja2dyb3VuZFByb3BnYXRpb24pOwotICAgIGF1dG8gcm9v
dERpc3BsYXlDb250YWluZXJCb3ggPSBzdGQ6OnVuaXF1ZV9wdHI8Q29udGFpbmVyQm94PiB7IGRv
d25jYXN0PENvbnRhaW5lckJveD4ocm9vdERpc3BsYXlCb3gucmVsZWFzZSgpKSB9OwogCi0gICAg
aWYgKCFyb290TGF5b3V0Qm94LmZpcnN0Q2hpbGQoKSkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmlx
dWU8VHJlZT4oV1RGTW92ZShyb290RGlzcGxheUNvbnRhaW5lckJveCkpOworICAgIGF1dG8gaW5z
ZXJ0aW9uUG9zaXRpb24gPSBJbnNlcnRpb25Qb3NpdGlvbiB7ICpyb290RGlzcGxheUJveCB9Owor
ICAgIGF1dG8gcm9vdFN0YWNraW5nSXRlbSA9IG1ha2VVbmlxdWU8U3RhY2tpbmdJdGVtPihXVEZN
b3ZlKHJvb3REaXNwbGF5Qm94KSk7CiAKLSAgICBhdXRvIGluc2VydGlvblBvc2l0aW9uID0gSW5z
ZXJ0aW9uUG9zaXRpb24geyAqcm9vdERpc3BsYXlDb250YWluZXJCb3ggfTsKLQotICAgIG1fc3Rh
dGVTdGFjay0+YXBwZW5kKHsgKnJvb3REaXNwbGF5Q29udGFpbmVyQm94IH0pOwotCi0gICAgcmVj
dXJzaXZlQnVpbGREaXNwbGF5VHJlZShsYXlvdXRTdGF0ZSwgKnJvb3RMYXlvdXRCb3guZmlyc3RD
aGlsZCgpLCBpbnNlcnRpb25Qb3NpdGlvbik7CisgICAgaWYgKHJvb3RMYXlvdXRCb3guZmlyc3RD
aGlsZCgpKSB7CisgICAgICAgIGF1dG8mIHJvb3RDb250YWluZXJCb3ggPSBkb3duY2FzdDxDb250
YWluZXJCb3g+KHJvb3RTdGFja2luZ0l0ZW0tPmJveCgpKTsKKyAgICAgICAgbV9zdGF0ZVN0YWNr
LT5hcHBlbmQoeyByb290Q29udGFpbmVyQm94LCAqcm9vdFN0YWNraW5nSXRlbSB9KTsKKyAgICAg
ICAgcmVjdXJzaXZlQnVpbGREaXNwbGF5VHJlZShsYXlvdXRTdGF0ZSwgKnJvb3RMYXlvdXRCb3gu
Zmlyc3RDaGlsZCgpLCBpbnNlcnRpb25Qb3NpdGlvbik7CisgICAgfQogCiAjaWYgRU5BQkxFKFRS
RUVfREVCVUdHSU5HKQotICAgIExPR19XSVRIX1NUUkVBTShGb3JtYXR0aW5nQ29udGV4dExheW91
dCwgc3RyZWFtIDw8ICJEaXNwbGF5IHRyZWU6XG4iIDw8IGRpc3BsYXlUcmVlQXNUZXh0KCpyb290
RGlzcGxheUNvbnRhaW5lckJveCkpOworICAgIExPR19XSVRIX1NUUkVBTShGb3JtYXR0aW5nQ29u
dGV4dExheW91dCwgc3RyZWFtIDw8ICJEaXNwbGF5IHRyZWU6XG4iIDw8IGRpc3BsYXlUcmVlQXNU
ZXh0KCpyb290U3RhY2tpbmdJdGVtKSk7CiAjZW5kaWYKLQotICAgIHJldHVybiBtYWtlVW5pcXVl
PFRyZWU+KFdURk1vdmUocm9vdERpc3BsYXlDb250YWluZXJCb3gpKTsKKyAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxUcmVlPihXVEZNb3ZlKHJvb3RTdGFja2luZ0l0ZW0pKTsKIH0KIAotdm9pZCBUcmVl
QnVpbGRlcjo6cHVzaFN0YXRlRm9yQm94RGVzY2VuZGFudHMoY29uc3QgTGF5b3V0OjpDb250YWlu
ZXJCb3gmIGxheW91dENvbnRhaW5lckJveCwgY29uc3QgTGF5b3V0OjpCb3hHZW9tZXRyeSYgbGF5
b3V0R2VvbWV0cnksIGNvbnN0IENvbnRhaW5lckJveCYgZGlzcGxheUJveCkKK3ZvaWQgVHJlZUJ1
aWxkZXI6OnB1c2hTdGF0ZUZvckJveERlc2NlbmRhbnRzKGNvbnN0IExheW91dDo6Q29udGFpbmVy
Qm94JiBsYXlvdXRDb250YWluZXJCb3gsIGNvbnN0IExheW91dDo6Qm94R2VvbWV0cnkmIGxheW91
dEdlb21ldHJ5LCBjb25zdCBDb250YWluZXJCb3gmIGRpc3BsYXlCb3gsIFN0YWNraW5nSXRlbSog
Ym94U3RhY2tpbmdJdGVtKQogewogICAgIGF1dG8mIHBvc2l0aW9uaW5nQ29udGV4dCA9IG1fc3Rh
dGVTdGFjay0+bGFzdCgpLnBvc2l0aW9uaW5nQ29udGV4dDsKLSAgICBtX3N0YXRlU3RhY2stPmFw
cGVuZCh7IHBvc2l0aW9uaW5nQ29udGV4dC5jb250ZXh0Rm9yRGVzY2VuZGFudHMobGF5b3V0Q29u
dGFpbmVyQm94LCBsYXlvdXRHZW9tZXRyeSwgZGlzcGxheUJveCkgfSk7CisgICAgYXV0byYgY3Vy
cmVudFN0YWNraW5nQ29udGV4dEl0ZW0gPSAoYm94U3RhY2tpbmdJdGVtICYmIGJveFN0YWNraW5n
SXRlbS0+aXNTdGFja2luZ0NvbnRleHQoKSkgPyAqYm94U3RhY2tpbmdJdGVtIDogbV9zdGF0ZVN0
YWNrLT5sYXN0KCkuY3VycmVudFN0YWNraW5nQ29udGV4dEl0ZW07CisKKyAgICBtX3N0YXRlU3Rh
Y2stPmFwcGVuZCh7IHBvc2l0aW9uaW5nQ29udGV4dC5jb250ZXh0Rm9yRGVzY2VuZGFudHMobGF5
b3V0Q29udGFpbmVyQm94LCBsYXlvdXRHZW9tZXRyeSwgZGlzcGxheUJveCksIGN1cnJlbnRTdGFj
a2luZ0NvbnRleHRJdGVtIH0pOwogfQogCi12b2lkIFRyZWVCdWlsZGVyOjpwb3BTdGF0ZSgpCit2
b2lkIFRyZWVCdWlsZGVyOjpwb3BTdGF0ZShjb25zdCBDb250YWluZXJCb3gmIGN1cnJlbnRCb3gp
CiB7CisgICAgYXV0byYgY3VycmVudFN0YXRlID0gbV9zdGF0ZVN0YWNrLT5sYXN0KCk7CisgICAg
aWYgKCZjdXJyZW50U3RhdGUuY3VycmVudFN0YWNraW5nQ29udGV4dEl0ZW0uYm94KCkgPT0gJmN1
cnJlbnRCb3gpCisgICAgICAgIGN1cnJlbnRTdGF0ZS5jdXJyZW50U3RhY2tpbmdDb250ZXh0SXRl
bS5zb3J0TGlzdHMoKTsKKwogICAgIG1fc3RhdGVTdGFjay0+cmVtb3ZlTGFzdCgpOwogfQogCkBA
IC0xOTYsNiArMjAyLDE4IEBAIHZvaWQgVHJlZUJ1aWxkZXI6OmJ1aWxkSW5saW5lRGlzcGxheVRy
ZWUoY29uc3QgTGF5b3V0OjpMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsCiAgICAgfQogfQogCitT
dGFja2luZ0l0ZW0qIFRyZWVCdWlsZGVyOjpzZXR1cFN0YWNraW5nSXRlbUZvckJveChzdGQ6OnVu
aXF1ZV9wdHI8Qm94PiYmIGJveCkKK3sKKyAgICBBU1NFUlQoYm94LT5zdHlsZSgpLnBhcnRpY2lw
YXRlc0luWk9yZGVyU29ydGluZygpICYmIGlzPEJveE1vZGVsQm94PigqYm94KSk7CisKKyAgICBh
dXRvIGJveE1vZGVsQm94ID0gc3RkOjp1bmlxdWVfcHRyPEJveE1vZGVsQm94PiB7IGRvd25jYXN0
PEJveE1vZGVsQm94Pihib3gucmVsZWFzZSgpKSB9OworICAgIGF1dG8gc3RhY2tpbmdJdGVtID0g
bWFrZVVuaXF1ZTxTdGFja2luZ0l0ZW0+KFdURk1vdmUoYm94TW9kZWxCb3gpKTsKKworICAgIGF1
dG8qIHN0YWNraW5nSXRlbVB0ciA9IHN0YWNraW5nSXRlbS5nZXQoKTsKKyAgICBjdXJyZW50U3Rh
dGUoKS5jdXJyZW50U3RhY2tpbmdDb250ZXh0SXRlbS5hZGRDaGlsZFN0YWNraW5nSXRlbShXVEZN
b3ZlKHN0YWNraW5nSXRlbSkpOworICAgIHJldHVybiBzdGFja2luZ0l0ZW1QdHI7Cit9CisKIHZv
aWQgVHJlZUJ1aWxkZXI6OnJlY3Vyc2l2ZUJ1aWxkRGlzcGxheVRyZWUoY29uc3QgTGF5b3V0OjpM
YXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IExheW91dDo6Qm94JiBsYXlvdXRCb3gsIElu
c2VydGlvblBvc2l0aW9uJiBpbnNlcnRpb25Qb3NpdGlvbikKIHsKICAgICBhdXRvIGdlb21ldHJ5
ID0gbGF5b3V0U3RhdGUuZ2VvbWV0cnlGb3JCb3gobGF5b3V0Qm94KTsKQEAgLTIwNiw4ICsyMjQs
MTQgQEAgdm9pZCBUcmVlQnVpbGRlcjo6cmVjdXJzaXZlQnVpbGREaXNwbGF5VHJlZShjb25zdCBM
YXlvdXQ6OkxheW91dFN0YXRlJiBsYXlvdXRTdGEKICAgICAgICAgZGlzcGxheUJveCA9IG1fYm94
RmFjdG9yeS5kaXNwbGF5Qm94Rm9yQm9keUJveChsYXlvdXRCb3gsIGdlb21ldHJ5LCBjb250YWlu
aW5nQmxvY2tDb250ZXh0LCBtX3Jvb3RCYWNrZ3JvdW5kUHJvcGdhdGlvbik7CiAgICAgZWxzZQog
ICAgICAgICBkaXNwbGF5Qm94ID0gbV9ib3hGYWN0b3J5LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3go
bGF5b3V0Qm94LCBnZW9tZXRyeSwgY29udGFpbmluZ0Jsb2NrQ29udGV4dCk7Ci0gICAgCi0gICAg
aW5zZXJ0KFdURk1vdmUoZGlzcGxheUJveCksIGluc2VydGlvblBvc2l0aW9uKTsKKworICAgIEJv
eCYgY3VycmVudEJveCA9ICpkaXNwbGF5Qm94OworCisgICAgU3RhY2tpbmdJdGVtKiBzdGFja2lu
Z0l0ZW0gPSBudWxscHRyOworICAgIGlmIChkaXNwbGF5Qm94LT5zdHlsZSgpLnBhcnRpY2lwYXRl
c0luWk9yZGVyU29ydGluZygpICYmIGlzPEJveE1vZGVsQm94PigqZGlzcGxheUJveCkpCisgICAg
ICAgIHN0YWNraW5nSXRlbSA9IHNldHVwU3RhY2tpbmdJdGVtRm9yQm94KFdURk1vdmUoZGlzcGxh
eUJveCkpOworICAgIGVsc2UKKyAgICAgICAgaW5zZXJ0KFdURk1vdmUoZGlzcGxheUJveCksIGlu
c2VydGlvblBvc2l0aW9uKTsKIAogICAgIGlmICghaXM8TGF5b3V0OjpDb250YWluZXJCb3g+KGxh
eW91dEJveCkpCiAgICAgICAgIHJldHVybjsKQEAgLTIxNiwxMCArMjQwLDEwIEBAIHZvaWQgVHJl
ZUJ1aWxkZXI6OnJlY3Vyc2l2ZUJ1aWxkRGlzcGxheVRyZWUoY29uc3QgTGF5b3V0OjpMYXlvdXRT
dGF0ZSYgbGF5b3V0U3RhCiAgICAgaWYgKCFsYXlvdXRDb250YWluZXJCb3guaGFzQ2hpbGQoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgQ29udGFpbmVyQm94JiBjdXJyZW50Qm94ID0gZG93bmNh
c3Q8Q29udGFpbmVyQm94PigqaW5zZXJ0aW9uUG9zaXRpb24uY3VycmVudENoaWxkKTsKLSAgICBh
dXRvIGluc2VydGlvblBvc2l0aW9uRm9yQ2hpbGRyZW4gPSBJbnNlcnRpb25Qb3NpdGlvbiB7IGN1
cnJlbnRCb3ggfTsKKyAgICBDb250YWluZXJCb3gmIGN1cnJlbnRDb250YWluZXJCb3ggPSBkb3du
Y2FzdDxDb250YWluZXJCb3g+KGN1cnJlbnRCb3gpOworICAgIHB1c2hTdGF0ZUZvckJveERlc2Nl
bmRhbnRzKGxheW91dENvbnRhaW5lckJveCwgZ2VvbWV0cnksIGN1cnJlbnRDb250YWluZXJCb3gs
IHN0YWNraW5nSXRlbSk7CiAKLSAgICBwdXNoU3RhdGVGb3JCb3hEZXNjZW5kYW50cyhsYXlvdXRD
b250YWluZXJCb3gsIGdlb21ldHJ5LCBjdXJyZW50Qm94KTsKKyAgICBhdXRvIGluc2VydGlvblBv
c2l0aW9uRm9yQ2hpbGRyZW4gPSBJbnNlcnRpb25Qb3NpdGlvbiB7IGN1cnJlbnRDb250YWluZXJC
b3ggfTsKIAogICAgIGVudW0gY2xhc3MgRGVzY2VuZGFudEJveEluY2x1c2lvbiB7IEFsbEJveGVz
LCBPdXRPZkZsb3dPbmx5IH07CiAgICAgYXV0byBib3hJbmNsdXNpb24gPSBEZXNjZW5kYW50Qm94
SW5jbHVzaW9uOjpBbGxCb3hlczsKQEAgLTI0MiwzNCArMjY2LDM1IEBAIHZvaWQgVHJlZUJ1aWxk
ZXI6OnJlY3Vyc2l2ZUJ1aWxkRGlzcGxheVRyZWUoY29uc3QgTGF5b3V0OjpMYXlvdXRTdGF0ZSYg
bGF5b3V0U3RhCiAgICAgICAgICAgICByZWN1cnNpdmVCdWlsZERpc3BsYXlUcmVlKGxheW91dFN0
YXRlLCBjaGlsZCwgaW5zZXJ0aW9uUG9zaXRpb25Gb3JDaGlsZHJlbik7CiAgICAgfQogCi0gICAg
cG9wU3RhdGUoKTsKKyAgICBwb3BTdGF0ZShjdXJyZW50Q29udGFpbmVyQm94KTsKIH0KIAogI2lm
IEVOQUJMRShUUkVFX0RFQlVHR0lORykKIAotc3RhdGljIHZvaWQgb3V0cHV0RGlzcGxheUJveChU
ZXh0U3RyZWFtJiBzdHJlYW0sIGNvbnN0IEJveCYgZGlzcGxheUJveCwgdW5zaWduZWQpCitzdGF0
aWMgdm9pZCBvdXRwdXREaXNwbGF5Qm94KFRleHRTdHJlYW0mIHN0cmVhbSwgY29uc3QgQm94JiBk
aXNwbGF5Qm94LCBib29sIHdyaXRlSW5kZW50ID0gdHJ1ZSkKIHsKLSAgICBzdHJlYW0ud3JpdGVJ
bmRlbnQoKTsKKyAgICBpZiAod3JpdGVJbmRlbnQpCisgICAgICAgIHN0cmVhbS53cml0ZUluZGVu
dCgpOwogCiAgICAgc3RyZWFtIDw8IGRpc3BsYXlCb3guZGVidWdEZXNjcmlwdGlvbigpOwogICAg
IHN0cmVhbSA8PCAiXG4iOwogfQogCi1zdGF0aWMgdm9pZCBvdXRwdXREaXNwbGF5VHJlZShUZXh0
U3RyZWFtJiBzdHJlYW0sIGNvbnN0IEJveCYgZGlzcGxheUJveCwgdW5zaWduZWQgZGVwdGgpCitz
dGF0aWMgdm9pZCBvdXRwdXREaXNwbGF5VHJlZShUZXh0U3RyZWFtJiBzdHJlYW0sIGNvbnN0IEJv
eCYgZGlzcGxheUJveCwgYm9vbCB3cml0ZUZpcnN0SXRlbUluZGVudCA9IHRydWUpCiB7Ci0gICAg
b3V0cHV0RGlzcGxheUJveChzdHJlYW0sIGRpc3BsYXlCb3gsIGRlcHRoKTsKKyAgICBvdXRwdXRE
aXNwbGF5Qm94KHN0cmVhbSwgZGlzcGxheUJveCwgd3JpdGVGaXJzdEl0ZW1JbmRlbnQpOwogCiAg
ICAgaWYgKGlzPENvbnRhaW5lckJveD4oZGlzcGxheUJveCkpIHsKICAgICAgICAgVGV4dFN0cmVh
bTo6SW5kZW50U2NvcGUgaW5kZW50KHN0cmVhbSk7CiAgICAgICAgIGZvciAoYXV0byBjaGlsZCA9
IGRvd25jYXN0PENvbnRhaW5lckJveD4oZGlzcGxheUJveCkuZmlyc3RDaGlsZCgpOyBjaGlsZDsg
Y2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkKLSAgICAgICAgICAgIG91dHB1dERpc3BsYXlU
cmVlKHN0cmVhbSwgKmNoaWxkLCBkZXB0aCArIDEpOworICAgICAgICAgICAgb3V0cHV0RGlzcGxh
eVRyZWUoc3RyZWFtLCAqY2hpbGQpOwogICAgIH0KIH0KIAogU3RyaW5nIGRpc3BsYXlUcmVlQXNU
ZXh0KGNvbnN0IEJveCYgYm94KQogewogICAgIFRleHRTdHJlYW0gc3RyZWFtKFRleHRTdHJlYW06
OkxpbmVNb2RlOjpNdWx0aXBsZUxpbmUsIFRleHRTdHJlYW06OkZvcm1hdHRpbmc6OlNWR1N0eWxl
UmVjdCk7Ci0gICAgb3V0cHV0RGlzcGxheVRyZWUoc3RyZWFtLCBib3gsIDEpOworICAgIG91dHB1
dERpc3BsYXlUcmVlKHN0cmVhbSwgYm94KTsKICAgICByZXR1cm4gc3RyZWFtLnJlbGVhc2UoKTsK
IH0KIApAQCAtMjc5LDYgKzMwNCwzNyBAQCB2b2lkIHNob3dEaXNwbGF5VHJlZShjb25zdCBCb3gm
IGJveCkKICAgICBXVEZMb2dBbHdheXMoIiVzIiwgdHJlZUFzVGV4dC51dGY4KCkuZGF0YSgpKTsK
IH0KIAorc3RhdGljIHZvaWQgb3V0cHV0U3RhY2tpbmdUcmVlKFRleHRTdHJlYW0mIHN0cmVhbSwg
Y29uc3QgY2hhciogcHJlZml4LCBjb25zdCBTdGFja2luZ0l0ZW0mIHN0YWNraW5nSXRlbSkKK3sK
KyAgICBzdHJlYW0ud3JpdGVJbmRlbnQoKTsKKyAgICBzdHJlYW0gPDwgcHJlZml4OworCisgICAg
VGV4dFN0cmVhbTo6SW5kZW50U2NvcGUgaW5kZW50KHN0cmVhbSk7CisgICAgb3V0cHV0RGlzcGxh
eVRyZWUoc3RyZWFtLCBzdGFja2luZ0l0ZW0uYm94KCksIGZhbHNlKTsKKworICAgIHsKKyAgICAg
ICAgVGV4dFN0cmVhbTo6SW5kZW50U2NvcGUgaW5kZW50KHN0cmVhbSk7CisgICAgICAgIGZvciAo
YXV0byYgY2hpbGRTdGFja2luZ0l0ZW0gOiBzdGFja2luZ0l0ZW0ubmVnYXRpdmVaT3JkZXJMaXN0
KCkpCisgICAgICAgICAgICBvdXRwdXRTdGFja2luZ1RyZWUoc3RyZWFtLCAiLSAiLCAqY2hpbGRT
dGFja2luZ0l0ZW0pOworCisgICAgICAgIGZvciAoYXV0byYgY2hpbGRTdGFja2luZ0l0ZW0gOiBz
dGFja2luZ0l0ZW0ucG9zaXRpdmVaT3JkZXJMaXN0KCkpCisgICAgICAgICAgICBvdXRwdXRTdGFj
a2luZ1RyZWUoc3RyZWFtLCBjaGlsZFN0YWNraW5nSXRlbS0+aXNTdGFja2luZ0NvbnRleHQoKSA/
ICIrICIgOiAicCAiLCAqY2hpbGRTdGFja2luZ0l0ZW0pOworICAgIH0KK30KKworU3RyaW5nIGRp
c3BsYXlUcmVlQXNUZXh0KGNvbnN0IFN0YWNraW5nSXRlbSYgc3RhY2tpbmdJdGVtKQoreworICAg
IFRleHRTdHJlYW0gc3RyZWFtKFRleHRTdHJlYW06OkxpbmVNb2RlOjpNdWx0aXBsZUxpbmUsIFRl
eHRTdHJlYW06OkZvcm1hdHRpbmc6OlNWR1N0eWxlUmVjdCk7CisgICAgb3V0cHV0U3RhY2tpbmdU
cmVlKHN0cmVhbSwgIiIsIHN0YWNraW5nSXRlbSk7CisgICAgcmV0dXJuIHN0cmVhbS5yZWxlYXNl
KCk7Cit9CisKK3ZvaWQgc2hvd0Rpc3BsYXlUcmVlKGNvbnN0IFN0YWNraW5nSXRlbSYgc3RhY2tp
bmdJdGVtKQoreworICAgIGF1dG8gdHJlZUFzVGV4dCA9IGRpc3BsYXlUcmVlQXNUZXh0KHN0YWNr
aW5nSXRlbSk7CisgICAgV1RGTG9nQWx3YXlzKCIlcyIsIHRyZWVBc1RleHQudXRmOCgpLmRhdGEo
KSk7Cit9CisKICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBEaXNwbGF5CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kaXNwbGF5L0Rpc3BsYXlUcmVlQnVpbGRlci5oIGIvU291cmNlL1dlYkNv
cmUvZGlzcGxheS9EaXNwbGF5VHJlZUJ1aWxkZXIuaAppbmRleCAyMWRlMTYyMTVjYjQ3Njk0YmNl
NDJlMDAzMjFhNzNmNmU0ZjJhNWU2Li5lNmVkZGZkMGY2MTFlNWY3M2E0OTBkNWFmYWI5MjNhMjZj
ZTRhNmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L0Rpc3BsYXlUcmVlQnVp
bGRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvRGlzcGxheVRyZWVCdWlsZGVyLmgK
QEAgLTUwLDYgKzUwLDcgQEAgbmFtZXNwYWNlIERpc3BsYXkgewogY2xhc3MgQm94OwogY2xhc3Mg
Q29udGFpbmVyQm94OwogY2xhc3MgUG9zaXRpb25pbmdDb250ZXh0OworY2xhc3MgU3RhY2tpbmdJ
dGVtOwogY2xhc3MgVHJlZTsKIHN0cnVjdCBCdWlsZGluZ1N0YXRlOwogCkBAIC02OSwyMiArNzAs
MjYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGJ1aWxkSW5saW5lRGlzcGxheVRyZWUoY29uc3QgTGF5
b3V0OjpMYXlvdXRTdGF0ZSYsIGNvbnN0IExheW91dDo6Q29udGFpbmVyQm94JiwgSW5zZXJ0aW9u
UG9zaXRpb24mKTsKIAogICAgIHZvaWQgaW5zZXJ0KHN0ZDo6dW5pcXVlX3B0cjxCb3g+JiYsIElu
c2VydGlvblBvc2l0aW9uJikgY29uc3Q7CisgICAgU3RhY2tpbmdJdGVtKiBzZXR1cFN0YWNraW5n
SXRlbUZvckJveChzdGQ6OnVuaXF1ZV9wdHI8Qm94PiYmKTsKIAotICAgIHZvaWQgcHVzaFN0YXRl
Rm9yQm94RGVzY2VuZGFudHMoY29uc3QgTGF5b3V0OjpDb250YWluZXJCb3gmLCBjb25zdCBMYXlv
dXQ6OkJveEdlb21ldHJ5JiwgY29uc3QgQ29udGFpbmVyQm94Jik7Ci0gICAgdm9pZCBwb3BTdGF0
ZSgpOworICAgIHZvaWQgcHVzaFN0YXRlRm9yQm94RGVzY2VuZGFudHMoY29uc3QgTGF5b3V0OjpD
b250YWluZXJCb3gmLCBjb25zdCBMYXlvdXQ6OkJveEdlb21ldHJ5JiwgY29uc3QgQ29udGFpbmVy
Qm94JiwgU3RhY2tpbmdJdGVtKik7CisgICAgdm9pZCBwb3BTdGF0ZShjb25zdCBDb250YWluZXJC
b3gmIGN1cnJlbnRCb3gpOwogICAgIAogICAgIGNvbnN0IEJ1aWxkaW5nU3RhdGUmIGN1cnJlbnRT
dGF0ZSgpIGNvbnN0OwogICAgIGNvbnN0IFBvc2l0aW9uaW5nQ29udGV4dCYgcG9zaXRpb25pbmdD
b250ZXh0KCkgY29uc3Q7CiAKICAgICBCb3hGYWN0b3J5IG1fYm94RmFjdG9yeTsKICAgICBSb290
QmFja2dyb3VuZFByb3BhZ2F0aW9uIG1fcm9vdEJhY2tncm91bmRQcm9wZ2F0aW9uIHsgUm9vdEJh
Y2tncm91bmRQcm9wYWdhdGlvbjo6Tm9uZSB9OwotICAgIAorCiAgICAgc3RkOjp1bmlxdWVfcHRy
PFZlY3RvcjxCdWlsZGluZ1N0YXRlPj4gbV9zdGF0ZVN0YWNrOwogfTsKIAogI2lmIEVOQUJMRShU
UkVFX0RFQlVHR0lORykKIFN0cmluZyBkaXNwbGF5VHJlZUFzVGV4dChjb25zdCBCb3gmKTsKIHZv
aWQgc2hvd0Rpc3BsYXlUcmVlKGNvbnN0IEJveCYpOworCitTdHJpbmcgZGlzcGxheVRyZWVBc1Rl
eHQoY29uc3QgU3RhY2tpbmdJdGVtJik7Cit2b2lkIHNob3dEaXNwbGF5VHJlZShjb25zdCBTdGFj
a2luZ0l0ZW0mKTsKICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBEaXNwbGF5CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5Qm94RmFjdG9yeS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5Qm94RmFjdG9yeS5jcHAKaW5kZXggNjM2NmFk
NDVhZmI2Mjc4NTMzOWI1MGU4OTM4ZGI1NzM2ZmFmNTQwZi4uZGUwNGU1YjkxNjZlYTc2N2JmMmRi
OWMwMzIxY2JlMWVkYzk5ZTc0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZGlzcGxheS9j
c3MvRGlzcGxheUJveEZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3Nz
L0Rpc3BsYXlCb3hGYWN0b3J5LmNwcApAQCAtNjYsNyArNjYsNyBAQCBSb290QmFja2dyb3VuZFBy
b3BhZ2F0aW9uIEJveEZhY3Rvcnk6OmRldGVybWluZVJvb3RCYWNrZ3JvdW5kUHJvcGFnYXRpb24o
Y29uc3QgTAogICAgIHJldHVybiBSb290QmFja2dyb3VuZFByb3BhZ2F0aW9uOjpOb25lOwogfQog
Ci1zdGQ6OnVuaXF1ZV9wdHI8Qm94PiBCb3hGYWN0b3J5OjpkaXNwbGF5Qm94Rm9yUm9vdEJveChj
b25zdCBMYXlvdXQ6OkNvbnRhaW5lckJveCYgcm9vdExheW91dEJveCwgY29uc3QgTGF5b3V0OjpC
b3hHZW9tZXRyeSYgZ2VvbWV0cnksIFJvb3RCYWNrZ3JvdW5kUHJvcGFnYXRpb24gcm9vdEJhY2tn
cm91bmRQcm9wYWdhdGlvbikgY29uc3QKK3N0ZDo6dW5pcXVlX3B0cjxDb250YWluZXJCb3g+IEJv
eEZhY3Rvcnk6OmRpc3BsYXlCb3hGb3JSb290Qm94KGNvbnN0IExheW91dDo6Q29udGFpbmVyQm94
JiByb290TGF5b3V0Qm94LCBjb25zdCBMYXlvdXQ6OkJveEdlb21ldHJ5JiBnZW9tZXRyeSwgUm9v
dEJhY2tncm91bmRQcm9wYWdhdGlvbiByb290QmFja2dyb3VuZFByb3BhZ2F0aW9uKSBjb25zdAog
ewogICAgIEFTU0VSVChpczxMYXlvdXQ6OkluaXRpYWxDb250YWluaW5nQmxvY2s+KHJvb3RMYXlv
dXRCb3gpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxh
eUJveEZhY3RvcnkuaCBiL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlCb3hGYWN0
b3J5LmgKaW5kZXggYWM1ZTkxZjk0OTI2ZWVmNTA4ZDZmZTMyMGVmZjUwYjczOTYyNDkyOS4uMDc3
NzBlYTdkYmJiNGJlYTAyNDBiMzkwNzUxNDg4NzRjNGQ2ZTc1ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheUJveEZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5Qm94RmFjdG9yeS5oCkBAIC02OSw3ICs2OSw3IEBAIHB1
YmxpYzoKIAogICAgIHN0YXRpYyBSb290QmFja2dyb3VuZFByb3BhZ2F0aW9uIGRldGVybWluZVJv
b3RCYWNrZ3JvdW5kUHJvcGFnYXRpb24oY29uc3QgTGF5b3V0OjpDb250YWluZXJCb3gmIHJvb3RM
YXlvdXRCb3gpOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEJveD4gZGlzcGxheUJveEZvclJvb3RC
b3goY29uc3QgTGF5b3V0OjpDb250YWluZXJCb3gmLCBjb25zdCBMYXlvdXQ6OkJveEdlb21ldHJ5
JiwgUm9vdEJhY2tncm91bmRQcm9wYWdhdGlvbikgY29uc3Q7CisgICAgc3RkOjp1bmlxdWVfcHRy
PENvbnRhaW5lckJveD4gZGlzcGxheUJveEZvclJvb3RCb3goY29uc3QgTGF5b3V0OjpDb250YWlu
ZXJCb3gmLCBjb25zdCBMYXlvdXQ6OkJveEdlb21ldHJ5JiwgUm9vdEJhY2tncm91bmRQcm9wYWdh
dGlvbikgY29uc3Q7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEJveD4gZGlzcGxheUJveEZvckJvZHlC
b3goY29uc3QgTGF5b3V0OjpCb3gmLCBjb25zdCBMYXlvdXQ6OkJveEdlb21ldHJ5JiwgY29uc3Qg
Q29udGFpbmluZ0Jsb2NrQ29udGV4dCYsIFJvb3RCYWNrZ3JvdW5kUHJvcGFnYXRpb24pIGNvbnN0
OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxCb3g+IGRpc3BsYXlCb3hGb3JMYXlvdXRCb3goY29uc3Qg
TGF5b3V0OjpCb3gmLCBjb25zdCBMYXlvdXQ6OkJveEdlb21ldHJ5JiwgY29uc3QgQ29udGFpbmlu
Z0Jsb2NrQ29udGV4dCYpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kaXNw
bGF5L2Nzcy9EaXNwbGF5Q1NTUGFpbnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nz
cy9EaXNwbGF5Q1NTUGFpbnRlci5jcHAKaW5kZXggZTI5YmJlZjI3NmFlZTNiYzRlZTA2ZWE4ZmY1
OGY4NmNlOTk0MjE5Mi4uYWU2OTQ5YjQwY2NkMTY1OWUzZTQ2ZDZlYTljYTc5OGQyZTBlMzg5MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheUNTU1BhaW50ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlDU1NQYWludGVyLmNw
cApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkRpc3BsYXlCb3hQYWludGVyLmgiCiAjaW5j
bHVkZSAiRGlzcGxheUNvbnRhaW5lckJveC5oIgogI2luY2x1ZGUgIkRpc3BsYXlQYWludGluZ0Nv
bnRleHQuaCIKKyNpbmNsdWRlICJEaXNwbGF5U3RhY2tpbmdJdGVtLmgiCiAjaW5jbHVkZSAiRGlz
cGxheVN0eWxlLmgiCiAjaW5jbHVkZSAiRGlzcGxheVRyZWUuaCIKICNpbmNsdWRlICJHcmFwaGlj
c0NvbnRleHQuaCIKQEAgLTgwLDggKzgxLDcgQEAgdm9pZCBDU1NQYWludGVyOjpyZWN1cnNpdmVQ
YWludERlc2NlbmRhbnRzRm9yUGhhc2UoY29uc3QgQ29udGFpbmVyQm94JiBjb250YWluZXIKIAog
ICAgIGZvciAoY29uc3QgYXV0byogY2hpbGQgPSBjb250YWluZXJCb3guZmlyc3RDaGlsZCgpOyBj
aGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgewogICAgICAgICBhdXRvJiBib3gg
PSAqY2hpbGQ7Ci0gICAgICAgIGlmIChwYXJ0aWNpcGF0ZXNJblpPcmRlclNvcnRpbmcoYm94KSkK
LSAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBBU1NFUlQoIWJveC5zdHlsZSgpLnBhcnRp
Y2lwYXRlc0luWk9yZGVyU29ydGluZygpKTsKIAogICAgICAgICBzd2l0Y2ggKHBhaW50UGhhc2Up
IHsKICAgICAgICAgY2FzZSBQYWludFBoYXNlOjpCbG9ja0JhY2tncm91bmRzOgpAQCAtMTIyLDEw
ICsxMjIsMTIgQEAgdm9pZCBDU1NQYWludGVyOjpyZWN1cnNpdmVQYWludERlc2NlbmRhbnRzKGNv
bnN0IENvbnRhaW5lckJveCYgY29udGFpbmVyQm94LCBQYWkKICAgICByZWN1cnNpdmVQYWludERl
c2NlbmRhbnRzRm9yUGhhc2UoY29udGFpbmVyQm94LCBwYWludGluZ0NvbnRleHQsIFBhaW50UGhh
c2U6OkJsb2NrRm9yZWdyb3VuZHMpOwogfQogCi12b2lkIENTU1BhaW50ZXI6OnBhaW50QXRvbWlj
YWxseVBhaW50ZWRCb3goY29uc3QgQm94JiBib3gsIFBhaW50aW5nQ29udGV4dCYgcGFpbnRpbmdD
b250ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QsIEluY2x1ZGVTdGFja2luZ0NvbnRleHRE
ZXNjZW5kYW50cyBpbmNsdWRlU3RhY2tpbmdDb250ZXh0RGVzY2VuZGFudHMpCit2b2lkIENTU1Bh
aW50ZXI6OnBhaW50QXRvbWljYWxseVBhaW50ZWRCb3goY29uc3QgU3RhY2tpbmdJdGVtJiBzdGFj
a2luZ0l0ZW0sIFBhaW50aW5nQ29udGV4dCYgcGFpbnRpbmdDb250ZXh0LCBjb25zdCBJbnRSZWN0
JiBkaXJ0eVJlY3QsIEluY2x1ZGVTdGFja2luZ0NvbnRleHREZXNjZW5kYW50cyBpbmNsdWRlU3Rh
Y2tpbmdDb250ZXh0RGVzY2VuZGFudHMpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGRpcnR5UmVjdCk7
CiAKKyAgICBhdXRvJiBib3ggPSBzdGFja2luZ0l0ZW0uYm94KCk7CisKICAgICBhdXRvIG5lZWRU
b1NhdmVTdGF0ZSA9IFtdKGNvbnN0IEJveCYgYm94KSB7CiAgICAgICAgIGlmICghaXM8Qm94TW9k
ZWxCb3g+KGJveCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNTksMTggKzE2MSwx
MyBAQCB2b2lkIENTU1BhaW50ZXI6OnBhaW50QXRvbWljYWxseVBhaW50ZWRCb3goY29uc3QgQm94
JiBib3gsIFBhaW50aW5nQ29udGV4dCYgcGFpbgogICAgIGlmICghaXM8Q29udGFpbmVyQm94Pihi
b3gpKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvJiBjb250YWluZXJCb3ggPSBkb3duY2Fz
dDxDb250YWluZXJCb3g+KGJveCk7Ci0KLSAgICBWZWN0b3I8Y29uc3QgQm94TW9kZWxCb3gqPiBu
ZWdhdGl2ZVpPcmRlckxpc3Q7Ci0gICAgVmVjdG9yPGNvbnN0IEJveE1vZGVsQm94Kj4gcG9zaXRp
dmVaT3JkZXJMaXN0OwogICAgIGlmIChpbmNsdWRlU3RhY2tpbmdDb250ZXh0RGVzY2VuZGFudHMg
PT0gSW5jbHVkZVN0YWNraW5nQ29udGV4dERlc2NlbmRhbnRzOjpZZXMpIHsKLSAgICAgICAgY29s
bGVjdFN0YWNraW5nQ29udGV4dERlc2NlbmRhbnRzKGNvbnRhaW5lckJveCwgbmVnYXRpdmVaT3Jk
ZXJMaXN0LCBwb3NpdGl2ZVpPcmRlckxpc3QpOwotCiAgICAgICAgIC8vIFN0YWNraW5nIGNvbnRl
eHRzIGZvcm1lZCBieSBwb3NpdGlvbmVkIGRlc2NlbmRhbnRzIHdpdGggbmVnYXRpdmUgei1pbmRp
Y2VzIChleGNsdWRpbmcgMCkgaW4gei1pbmRleCBvcmRlciAobW9zdCBuZWdhdGl2ZSBmaXJzdCkg
dGhlbiB0cmVlIG9yZGVyLgotICAgICAgICBmb3IgKGF1dG8qIGJveCA6IG5lZ2F0aXZlWk9yZGVy
TGlzdCkKLSAgICAgICAgICAgIHBhaW50U3RhY2tpbmdDb250ZXh0KCpib3gsIHBhaW50aW5nQ29u
dGV4dCwgZGlydHlSZWN0KTsKKyAgICAgICAgZm9yIChhdXRvJiBzdGFja2luZ0l0ZW0gOiBzdGFj
a2luZ0l0ZW0ubmVnYXRpdmVaT3JkZXJMaXN0KCkpCisgICAgICAgICAgICBwYWludFN0YWNraW5n
Q29udGV4dCgqc3RhY2tpbmdJdGVtLCBwYWludGluZ0NvbnRleHQsIGRpcnR5UmVjdCk7CiAgICAg
fQogCisgICAgYXV0byYgY29udGFpbmVyQm94ID0gZG93bmNhc3Q8Q29udGFpbmVyQm94Pihib3gp
OwogICAgIHJlY3Vyc2l2ZVBhaW50RGVzY2VuZGFudHMoY29udGFpbmVyQm94LCBwYWludGluZ0Nv
bnRleHQpOwogCiAgICAgaWYgKGluY2x1ZGVTdGFja2luZ0NvbnRleHREZXNjZW5kYW50cyA9PSBJ
bmNsdWRlU3RhY2tpbmdDb250ZXh0RGVzY2VuZGFudHM6OlllcykgewpAQCAtMTc4LDY2ICsxNzUs
MjMgQEAgdm9pZCBDU1NQYWludGVyOjpwYWludEF0b21pY2FsbHlQYWludGVkQm94KGNvbnN0IEJv
eCYgYm94LCBQYWludGluZ0NvbnRleHQmIHBhaW4KICAgICAgICAgLy8gYXMgaWYgaXQgY3JlYXRl
ZCBhIG5ldyBzdGFja2luZyBjb250ZXh0LCBidXQgYW55IHBvc2l0aW9uZWQgZGVzY2VuZGFudHMg
YW5kIGRlc2NlbmRhbnRzIHdoaWNoIGFjdHVhbGx5IGNyZWF0ZSBhIG5ldyBzdGFja2luZyBjb250
ZXh0CiAgICAgICAgIC8vIHNob3VsZCBiZSBjb25zaWRlcmVkIHBhcnQgb2YgdGhlIHBhcmVudCBz
dGFja2luZyBjb250ZXh0LCBub3QgdGhpcyBuZXcgb25lLiBGb3IgdGhvc2Ugd2l0aCAnei1pbmRl
eDogMCcsIHRyZWF0IHRoZSBzdGFja2luZyBjb250ZXh0CiAgICAgICAgIC8vIGdlbmVyYXRlZCBh
dG9taWNhbGx5LgotICAgICAgICBmb3IgKGF1dG8qIGJveCA6IHBvc2l0aXZlWk9yZGVyTGlzdCkg
ewotICAgICAgICAgICAgaWYgKGJveC0+c3R5bGUoKS5pc1N0YWNraW5nQ29udGV4dCgpKQotICAg
ICAgICAgICAgICAgIHBhaW50U3RhY2tpbmdDb250ZXh0KCpib3gsIHBhaW50aW5nQ29udGV4dCwg
ZGlydHlSZWN0KTsKKyAgICAgICAgZm9yIChhdXRvJiBzdGFja2luZ0l0ZW0gOiBzdGFja2luZ0l0
ZW0ucG9zaXRpdmVaT3JkZXJMaXN0KCkpIHsKKyAgICAgICAgICAgIGlmIChzdGFja2luZ0l0ZW0t
PmlzU3RhY2tpbmdDb250ZXh0KCkpCisgICAgICAgICAgICAgICAgcGFpbnRTdGFja2luZ0NvbnRl
eHQoKnN0YWNraW5nSXRlbSwgcGFpbnRpbmdDb250ZXh0LCBkaXJ0eVJlY3QpOwogICAgICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgICAgIHBhaW50QXRvbWljYWxseVBhaW50ZWRCb3goKmJveCwg
cGFpbnRpbmdDb250ZXh0LCBkaXJ0eVJlY3QpOworICAgICAgICAgICAgICAgIHBhaW50QXRvbWlj
YWxseVBhaW50ZWRCb3goKnN0YWNraW5nSXRlbSwgcGFpbnRpbmdDb250ZXh0LCBkaXJ0eVJlY3Qp
OwogICAgICAgICB9CiAgICAgfQogfQogCi12b2lkIENTU1BhaW50ZXI6OnBhaW50U3RhY2tpbmdD
b250ZXh0KGNvbnN0IEJveE1vZGVsQm94JiBjb250ZXh0Um9vdCwgUGFpbnRpbmdDb250ZXh0JiBw
YWludGluZ0NvbnRleHQsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkKLXsKLSAgICBwYWludEF0
b21pY2FsbHlQYWludGVkQm94KGNvbnRleHRSb290LCBwYWludGluZ0NvbnRleHQsIGRpcnR5UmVj
dCwgSW5jbHVkZVN0YWNraW5nQ29udGV4dERlc2NlbmRhbnRzOjpZZXMpOwotfQotCi1ib29sIENT
U1BhaW50ZXI6OmlzU3RhY2tpbmdDb250ZXh0UGFpbnRpbmdCb3VuZGFyeShjb25zdCBCb3gmIGJv
eCkKLXsKLSAgICByZXR1cm4gYm94LnN0eWxlKCkuaXNTdGFja2luZ0NvbnRleHQoKTsKLX0KLQot
Ym9vbCBDU1NQYWludGVyOjpwYXJ0aWNpcGF0ZXNJblpPcmRlclNvcnRpbmcoY29uc3QgQm94JiBi
b3gpCi17Ci0gICAgcmV0dXJuIGJveC5zdHlsZSgpLnBhcnRpY2lwYXRlc0luWk9yZGVyU29ydGlu
ZygpOwotfQotCi12b2lkIENTU1BhaW50ZXI6OmNvbGxlY3RTdGFja2luZ0NvbnRleHREZXNjZW5k
YW50cyhjb25zdCBDb250YWluZXJCb3gmIGNvbnRhaW5lckJveCwgVmVjdG9yPGNvbnN0IEJveE1v
ZGVsQm94Kj4mIG5lZ2F0aXZlWk9yZGVyTGlzdCwgVmVjdG9yPGNvbnN0IEJveE1vZGVsQm94Kj4m
IHBvc2l0aXZlWk9yZGVyTGlzdCkKK3ZvaWQgQ1NTUGFpbnRlcjo6cGFpbnRTdGFja2luZ0NvbnRl
eHQoY29uc3QgU3RhY2tpbmdJdGVtJiBzdGFja2luZ0l0ZW0sIFBhaW50aW5nQ29udGV4dCYgcGFp
bnRpbmdDb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpCiB7Ci0gICAgcmVjdXJzaXZl
Q29sbGVjdExheWVycyhjb250YWluZXJCb3gsIG5lZ2F0aXZlWk9yZGVyTGlzdCwgcG9zaXRpdmVa
T3JkZXJMaXN0KTsKLQotICAgIGF1dG8gY29tcGFyZVpJbmRleCA9IFtdIChjb25zdCBCb3hNb2Rl
bEJveCogYSwgY29uc3QgQm94TW9kZWxCb3gqIGIpIHsKLSAgICAgICAgcmV0dXJuIGEtPnN0eWxl
KCkuekluZGV4KCkudmFsdWVPcigwKSA8IGItPnN0eWxlKCkuekluZGV4KCkudmFsdWVPcigwKTsK
LSAgICB9OwotCi0gICAgc3RkOjpzdGFibGVfc29ydChwb3NpdGl2ZVpPcmRlckxpc3QuYmVnaW4o
KSwgcG9zaXRpdmVaT3JkZXJMaXN0LmVuZCgpLCBjb21wYXJlWkluZGV4KTsKLSAgICBzdGQ6OnN0
YWJsZV9zb3J0KG5lZ2F0aXZlWk9yZGVyTGlzdC5iZWdpbigpLCBuZWdhdGl2ZVpPcmRlckxpc3Qu
ZW5kKCksIGNvbXBhcmVaSW5kZXgpOwotfQotCi12b2lkIENTU1BhaW50ZXI6OnJlY3Vyc2l2ZUNv
bGxlY3RMYXllcnMoY29uc3QgQ29udGFpbmVyQm94JiBjb250YWluZXJCb3gsIFZlY3Rvcjxjb25z
dCBCb3hNb2RlbEJveCo+JiBuZWdhdGl2ZVpPcmRlckxpc3QsIFZlY3Rvcjxjb25zdCBCb3hNb2Rl
bEJveCo+JiBwb3NpdGl2ZVpPcmRlckxpc3QpCi17Ci0gICAgZm9yIChjb25zdCBhdXRvKiBjaGls
ZCA9IGNvbnRhaW5lckJveC5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0
U2libGluZygpKSB7Ci0gICAgICAgIGlmIChjaGlsZC0+c3R5bGUoKS5wYXJ0aWNpcGF0ZXNJblpP
cmRlclNvcnRpbmcoKSAmJiBpczxCb3hNb2RlbEJveD4oKmNoaWxkKSkgewotICAgICAgICAgICAg
YXV0byYgY2hpbGRCb3ggPSBkb3duY2FzdDxCb3hNb2RlbEJveD4oKmNoaWxkKTsKLQotICAgICAg
ICAgICAgYXV0byB6SW5kZXggPSBjaGlsZEJveC5zdHlsZSgpLnpJbmRleCgpLnZhbHVlT3IoMCk7
Ci0gICAgICAgICAgICBpZiAoekluZGV4IDwgMCkKLSAgICAgICAgICAgICAgICBuZWdhdGl2ZVpP
cmRlckxpc3QuYXBwZW5kKCZjaGlsZEJveCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgcG9zaXRpdmVaT3JkZXJMaXN0LmFwcGVuZCgmY2hpbGRCb3gpOwotICAgICAgICB9Ci0K
LSAgICAgICAgaWYgKGlzU3RhY2tpbmdDb250ZXh0UGFpbnRpbmdCb3VuZGFyeSgqY2hpbGQpKQot
ICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgaWYgKGlzPENvbnRhaW5lckJveD4oKmNo
aWxkKSkKLSAgICAgICAgICAgIHJlY3Vyc2l2ZUNvbGxlY3RMYXllcnMoZG93bmNhc3Q8Q29udGFp
bmVyQm94PigqY2hpbGQpLCBuZWdhdGl2ZVpPcmRlckxpc3QsIHBvc2l0aXZlWk9yZGVyTGlzdCk7
Ci0gICAgfQorICAgIHBhaW50QXRvbWljYWxseVBhaW50ZWRCb3goc3RhY2tpbmdJdGVtLCBwYWlu
dGluZ0NvbnRleHQsIGRpcnR5UmVjdCwgSW5jbHVkZVN0YWNraW5nQ29udGV4dERlc2NlbmRhbnRz
OjpZZXMpOwogfQogCiB2b2lkIENTU1BhaW50ZXI6OnBhaW50VHJlZShjb25zdCBUcmVlJiBkaXNw
bGF5VHJlZSwgUGFpbnRpbmdDb250ZXh0JiBwYWludGluZ0NvbnRleHQsIGNvbnN0IEludFJlY3Qm
IGRpcnR5UmVjdCkKIHsKLSAgICBwYWludFN0YWNraW5nQ29udGV4dChkaXNwbGF5VHJlZS5yb290
Qm94KCksIHBhaW50aW5nQ29udGV4dCwgZGlydHlSZWN0KTsKKyAgICBwYWludFN0YWNraW5nQ29u
dGV4dChkaXNwbGF5VHJlZS5yb290U3RhY2tpbmdJdGVtKCksIHBhaW50aW5nQ29udGV4dCwgZGly
dHlSZWN0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgRGlzcGxheQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheUNTU1BhaW50ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2Rpc3BsYXkvY3NzL0Rpc3BsYXlDU1NQYWludGVyLmgKaW5kZXggMWE0ODEwYmIyYTM3OTc0M2Ex
YmQ4ZWU5ZTdhOGY2Zjg4ZTQ2MDQ4Ny4uOGQwODVjMTlkOGEzZTE5MzU0YjQ1ZDI2ZWZiYmM4ZjM5
M2E5YTJiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheUNT
U1BhaW50ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5Q1NTUGFp
bnRlci5oCkBAIC00Miw2ICs0Miw3IEBAIGNsYXNzIEZpbGxMYXllckltYWdlR2VvbWV0cnk7CiBj
bGFzcyBCb3g7CiBjbGFzcyBCb3hNb2RlbEJveDsKIGNsYXNzIENvbnRhaW5lckJveDsKK2NsYXNz
IFN0YWNraW5nSXRlbTsKIGNsYXNzIFRyZWU7CiAKIHN0cnVjdCBQYWludGluZ0NvbnRleHQ7CkBA
IC02MCwxNSArNjEsOSBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIHJlY3Vyc2l2ZVBhaW50
RGVzY2VuZGFudHNGb3JQaGFzZShjb25zdCBDb250YWluZXJCb3gmLCBQYWludGluZ0NvbnRleHQm
LCBQYWludFBoYXNlKTsKIAogICAgIGVudW0gY2xhc3MgSW5jbHVkZVN0YWNraW5nQ29udGV4dERl
c2NlbmRhbnRzIHsgWWVzLCBObyB9OwotICAgIHN0YXRpYyB2b2lkIHBhaW50QXRvbWljYWxseVBh
aW50ZWRCb3goY29uc3QgQm94JiwgUGFpbnRpbmdDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgZGly
dHlSZWN0LCBJbmNsdWRlU3RhY2tpbmdDb250ZXh0RGVzY2VuZGFudHMgPSBJbmNsdWRlU3RhY2tp
bmdDb250ZXh0RGVzY2VuZGFudHM6Ok5vKTsKKyAgICBzdGF0aWMgdm9pZCBwYWludEF0b21pY2Fs
bHlQYWludGVkQm94KGNvbnN0IFN0YWNraW5nSXRlbSYsIFBhaW50aW5nQ29udGV4dCYsIGNvbnN0
IEludFJlY3QmIGRpcnR5UmVjdCwgSW5jbHVkZVN0YWNraW5nQ29udGV4dERlc2NlbmRhbnRzID0g
SW5jbHVkZVN0YWNraW5nQ29udGV4dERlc2NlbmRhbnRzOjpObyk7CiAKLSAgICBzdGF0aWMgdm9p
ZCBwYWludFN0YWNraW5nQ29udGV4dChjb25zdCBCb3hNb2RlbEJveCYsIFBhaW50aW5nQ29udGV4
dCYsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCk7Ci0KLSAgICBzdGF0aWMgYm9vbCBpc1N0YWNr
aW5nQ29udGV4dFBhaW50aW5nQm91bmRhcnkoY29uc3QgQm94Jik7Ci0gICAgc3RhdGljIGJvb2wg
cGFydGljaXBhdGVzSW5aT3JkZXJTb3J0aW5nKGNvbnN0IEJveCYpOwotCi0gICAgc3RhdGljIHZv
aWQgY29sbGVjdFN0YWNraW5nQ29udGV4dERlc2NlbmRhbnRzKGNvbnN0IENvbnRhaW5lckJveCYs
IFZlY3Rvcjxjb25zdCBCb3hNb2RlbEJveCo+JiBuZWdhdGl2ZVpPcmRlckxpc3QsIFZlY3Rvcjxj
b25zdCBCb3hNb2RlbEJveCo+JiBwb3NpdGl2ZVpPcmRlckxpc3QpOwotICAgIHN0YXRpYyB2b2lk
IHJlY3Vyc2l2ZUNvbGxlY3RMYXllcnMoY29uc3QgQ29udGFpbmVyQm94JiwgVmVjdG9yPGNvbnN0
IEJveE1vZGVsQm94Kj4mIG5lZ2F0aXZlWk9yZGVyTGlzdCwgVmVjdG9yPGNvbnN0IEJveE1vZGVs
Qm94Kj4mIHBvc2l0aXZlWk9yZGVyTGlzdCk7CisgICAgc3RhdGljIHZvaWQgcGFpbnRTdGFja2lu
Z0NvbnRleHQoY29uc3QgU3RhY2tpbmdJdGVtJiwgUGFpbnRpbmdDb250ZXh0JiwgY29uc3QgSW50
UmVjdCYgZGlydHlSZWN0KTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIERpc3BsYXkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlTdGFja2luZ0l0ZW0uY3BwIGIv
U291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheVN0YWNraW5nSXRlbS5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOGFlZTRhNDZjYWNlYmE4YjJlZmNmNjllOGVhNWYwMGM3MDAxOWI2OAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlTdGFja2luZ0l0ZW0u
Y3BwCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiRGlzcGxheVN0YWNraW5nSXRlbS5oIgorCisjaWYgRU5BQkxFKExBWU9VVF9GT1JN
QVRUSU5HX0NPTlRFWFQpCisKKyNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworbmFt
ZXNwYWNlIERpc3BsYXkgeworCitTdGFja2luZ0l0ZW06OlN0YWNraW5nSXRlbShzdGQ6OnVuaXF1
ZV9wdHI8Qm94TW9kZWxCb3g+JiYgYm94KQorICAgIDogbV9ib3goV1RGTW92ZShib3gpKQorewor
ICAgIEFTU0VSVChtX2JveCk7Cit9CisKK2Jvb2wgU3RhY2tpbmdJdGVtOjppc1N0YWNraW5nQ29u
dGV4dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fYm94LT5zdHlsZSgpLmlzU3RhY2tpbmdDb250
ZXh0KCk7Cit9CisKK3ZvaWQgU3RhY2tpbmdJdGVtOjphZGRDaGlsZFN0YWNraW5nSXRlbShzdGQ6
OnVuaXF1ZV9wdHI8U3RhY2tpbmdJdGVtPiYmIGl0ZW0pCit7CisgICAgYXV0byB6SW5kZXggPSBp
dGVtLT5ib3goKS5zdHlsZSgpLnpJbmRleCgpLnZhbHVlT3IoMCk7CisgICAgaWYgKHpJbmRleCA8
IDApCisgICAgICAgIG1fbmVnYXRpdmVaT3JkZXJMaXN0LmFwcGVuZChXVEZNb3ZlKGl0ZW0pKTsK
KyAgICBlbHNlCisgICAgICAgIG1fcG9zaXRpdmVaT3JkZXJMaXN0LmFwcGVuZChXVEZNb3ZlKGl0
ZW0pKTsKK30KKwordm9pZCBTdGFja2luZ0l0ZW06OnNvcnRMaXN0cygpCit7CisgICAgYXV0byBj
b21wYXJlWkluZGV4ID0gW10oY29uc3Qgc3RkOjp1bmlxdWVfcHRyPFN0YWNraW5nSXRlbT4mIGEs
IGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxTdGFja2luZ0l0ZW0+JiBiKSB7CisgICAgICAgIHJldHVy
biBhLT5ib3goKS5zdHlsZSgpLnpJbmRleCgpLnZhbHVlT3IoMCkgPCBiLT5ib3goKS5zdHlsZSgp
LnpJbmRleCgpLnZhbHVlT3IoMCk7CisgICAgfTsKKworICAgIHN0ZDo6c3RhYmxlX3NvcnQobV9w
b3NpdGl2ZVpPcmRlckxpc3QuYmVnaW4oKSwgbV9wb3NpdGl2ZVpPcmRlckxpc3QuZW5kKCksIGNv
bXBhcmVaSW5kZXgpOworICAgIHN0ZDo6c3RhYmxlX3NvcnQobV9uZWdhdGl2ZVpPcmRlckxpc3Qu
YmVnaW4oKSwgbV9uZWdhdGl2ZVpPcmRlckxpc3QuZW5kKCksIGNvbXBhcmVaSW5kZXgpOworfQor
CisKK30gLy8gbmFtZXNwYWNlIERpc3BsYXkKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheVN0YWNraW5nSXRlbS5oIGIvU291cmNlL1dl
YkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheVN0YWNraW5nSXRlbS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY4YjEx
Yjc3MDVlZjIyZGQ1ZWEwZDRhZjgzZjg4NDA3ZDg0NDYwMDQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5U3RhY2tpbmdJdGVtLmgKQEAgLTAsMCAr
MSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKExBWU9VVF9G
T1JNQVRUSU5HX0NPTlRFWFQpCisKKyNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jLmg+CisjaW5jbHVk
ZSA8d3RmL09wdGlvblNldC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworbmFtZXNwYWNlIERpc3BsYXkgeworCitjbGFzcyBCb3hNb2RlbEJveDsKKwor
Ly8gQ29udGFpbmVyIGZvciBhIGRpc3BsYXkgYm94IGFuZCBpdHMgZGVzY2VuZGFudHMsIGZvciBi
b3hlcyB0aGF0IHBhcnRpY2lwYXRlIGluIHRoZSBDU1Mgc3RhY2tpbmcKKy8vIGFsZ29yaXRobSA8
aHR0cHM6Ly93d3cudzMub3JnL1RSL0NTUzIyL3ppbmRleC5odG1sPiwgaS5lLiBwb3NpdGlvbmVk
IGJveGVzLCBhbmQgdGhvc2UgdGhhdCBjcmVhdGUKKy8vIENTUyBzdGFja2luZyBjb250ZXh0Lgor
CitjbGFzcyBTdGFja2luZ0l0ZW0geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAg
IGZyaWVuZCBjbGFzcyBUcmVlQnVpbGRlcjsKK3B1YmxpYzoKKyAgICB1c2luZyBTdGFja2luZ0l0
ZW1MaXN0ID0gVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxTdGFja2luZ0l0ZW0+PjsKKworICAgIGV4
cGxpY2l0IFN0YWNraW5nSXRlbShzdGQ6OnVuaXF1ZV9wdHI8Qm94TW9kZWxCb3g+JiYpOworCisg
ICAgdm9pZCBhZGRDaGlsZFN0YWNraW5nSXRlbShzdGQ6OnVuaXF1ZV9wdHI8U3RhY2tpbmdJdGVt
PiYmKTsKKyAgICBjb25zdCBCb3hNb2RlbEJveCYgYm94KCkgY29uc3QgeyByZXR1cm4gKm1fYm94
OyB9CisgICAgCisgICAgYm9vbCBpc1N0YWNraW5nQ29udGV4dCgpIGNvbnN0OworCisgICAgY29u
c3QgU3RhY2tpbmdJdGVtTGlzdCYgbmVnYXRpdmVaT3JkZXJMaXN0KCkgY29uc3QgeyByZXR1cm4g
bV9uZWdhdGl2ZVpPcmRlckxpc3Q7IH0KKyAgICBjb25zdCBTdGFja2luZ0l0ZW1MaXN0JiBwb3Np
dGl2ZVpPcmRlckxpc3QoKSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aXZlWk9yZGVyTGlzdDsgfQor
Citwcml2YXRlOgorICAgIHZvaWQgc29ydExpc3RzKCk7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
Qm94TW9kZWxCb3g+IG1fYm94OworICAgIFN0YWNraW5nSXRlbUxpc3QgbV9uZWdhdGl2ZVpPcmRl
ckxpc3Q7CisgICAgU3RhY2tpbmdJdGVtTGlzdCBtX3Bvc2l0aXZlWk9yZGVyTGlzdDsKK307CisK
K30gLy8gbmFtZXNwYWNlIERpc3BsYXkKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworCisjZW5k
aWYgLy8gRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415002</attachid>
            <date>2020-11-29 20:06:51 -0800</date>
            <delta_ts>2020-11-29 20:12:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219315-20201129200649.patch</filename>
            <type>text/plain</type>
            <size>33651</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMjMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGM0ZjI5ZTVmOTY3Yjlk
NGU4ODU5ZGYwODJlMWEwMjcwNjYxOGFhMi4uMWMwYWFlN2EyNTNhNzc4OGZlZWU2YTNkZTZmY2E0
ODlkYzNhYzQ1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY5IEBACisyMDIwLTExLTI2ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIFtMRkMgRGlzcGxh
eV0gU3RvcmUgdGhlIGRpc3BsYXkgdHJlZSBhcyBhIHRyZWUgb2Ygc3RhY2tpbmcgaXRlbXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTMxNQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEN1cnJlbnRseSB0
aGUgZGlzcGxheSB0cmVlIGlzIGEgZnVsbCB0cmVlLCBjcm9zc2luZyBzdGFja2luZyBjb250ZXh0
IGJvdW5kYXJpZXMsIGFuZCB0aGUKKyAgICAgICAgei1vcmRlciBsaXN0cyBhcmUgYnVpbHQgYXQg
cGFpbnQgdGltZS4KKworICAgICAgICBDaGFuZ2UgdG8gYSB0cmVlIG9mIFN0YWNraW5nSXRlbXMs
IHdoZXJlIGEgU3RhY2tpbmdJdGVtIGV4aXN0cyBmb3IgZWFjaCBib3ggdGhhdAorICAgICAgICBw
YXJ0aWNpcGF0ZXMgaW4gdGhlIHotb3JkZXIgc29ydGluZyBhbGdvcml0aG0gKGkuZS4gYm94ZXMg
dGhhdCBhcmUgcG9zaXRpb25lZCwgb3IgaGF2ZQorICAgICAgICBzdHlsZXMgdGhhdCBjcmVhdGUg
c3RhY2tpbmcgY29udGV4dCkuIEVhY2ggU3RhY2tpbmdJdGVtIG93bnMgdGhlIHN1YnRyZWUgb2Yg
RGlzcGxheTo6Qm94ZXMKKyAgICAgICAgdGhhdCBpdCBwYWludHMsIGFuZCB0aG9zZSBzdWJ0cmVl
cyBhcmUgbm90IG90aGVyd2lzZSBjb25uZWN0ZWQuCisKKyAgICAgICAgVGhlIERpc3BsYXk6OlRy
ZWUgb3ducyB0aGUgcm9vdCBTdGFja2luZ0l0ZW0sIGFuZCBlYWNoIFN0YWNraW5nSXRlbSBvd25z
IGl0cyBjaGlsZAorICAgICAgICBTdGFja2luZ0l0ZW1zLiBUaGUgU3RhY2tpbmdJdGVtIHRyZWUg
aXMgYnVpbHQgYXQgZGlzcGxheSB0cmVlIGJ1aWxkaW5nIHRpbWUgYnkgc3RvcmluZyBzdGF0ZQor
ICAgICAgICBpbiB0aGUgQnVpbGRpbmdTdGF0ZSBzdGFjay4gU3RhY2tpbmdJdGVtcyBhcmUgYWRk
ZWQgdG8gdGhlIHotb3JkZXIgbGlzdHMgb2YgdGhlaXIgcGFyZW50CisgICAgICAgIGl0ZW0gYXQg
Y3JlYXRpb24gdGltZTsgd2hlbiBkb25lIHByb2Nlc3NpbmcgYm94ZXMgZm9yIGEgU3RhY2tpbmdJ
dGVtLCB3ZSB0aGVuIHNvcnQgaXRzCisgICAgICAgIHotb3JkZXIgbGlzdHMuCisKKyAgICAgICAg
QWRkIEJveDo6cGFydGljaXBhdGVzSW5aT3JkZXJTb3J0aW5nKCkgYW5kIGEgTGluZUJyZWFrQm94
IGZsYWcsIGFuZCBjYWxsIHRoYXQgZnVuY3Rpb24KKyAgICAgICAgaW5zdGVhZCBvZiB0aGUgdmVy
c2lvbiBvbiBEaXNwbGF5OjpTdHlsZSB0byB3b3JrIGFyb3VuZCB3ZWJraXQub3JnL2IvMjE5MzM1
IGZvciBub3cuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZGlzcGxheS9EaXNwbGF5TGF5ZXJD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKiBkaXNwbGF5L0Rpc3BsYXlUcmVlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXk6OlRyZWU6OlRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheTo6VHJlZTo6cm9vdEJveCBjb25zdCk6CisgICAgICAgICogZGlzcGxheS9EaXNwbGF5VHJl
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6VHJlZTo6cm9vdFN0YWNraW5nSXRlbSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpUcmVlOjpyb290Qm94IGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKiBkaXNwbGF5L0Rpc3BsYXlUcmVlQnVpbGRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5OjpUcmVlQnVpbGRlcjo6YnVpbGQpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheTo6VHJlZUJ1aWxkZXI6OnB1c2hTdGF0ZUZvckJveERlc2NlbmRhbnRzKToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OlRyZWVCdWlsZGVyOjpwb3BTdGF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5OjpUcmVlQnVpbGRlcjo6aW5zZXJ0SW50b1RyZWUpOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheTo6VHJlZUJ1aWxkZXI6OmJ1aWxkSW5saW5lRGlzcGxheVRy
ZWUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6VHJlZUJ1aWxkZXI6OnJlY3Vyc2l2ZUJ1
aWxkRGlzcGxheVRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6b3V0cHV0RGlzcGxh
eUJveCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpvdXRwdXREaXNwbGF5VHJlZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpkaXNwbGF5VHJlZUFzVGV4dCk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5OjpvdXRwdXRTdGFja2luZ1RyZWUpOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheTo6c2hvd0Rpc3BsYXlUcmVlKToKKyAgICAgICAgKiBkaXNwbGF5L0Rpc3BsYXlUcmVl
QnVpbGRlci5oOgorICAgICAgICAqIGRpc3BsYXkvY3NzL0Rpc3BsYXlCb3guY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94OjpwYXJ0aWNpcGF0ZXNJblpPcmRlclNvcnRpbmcgY29u
c3QpOgorICAgICAgICAqIGRpc3BsYXkvY3NzL0Rpc3BsYXlCb3guaDoKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXk6OkJveDo6aXNMaW5lQnJlYWtCb3ggY29uc3QpOgorICAgICAgICAqIGRpc3Bs
YXkvY3NzL0Rpc3BsYXlCb3hGYWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6
OkJveEZhY3Rvcnk6OmRpc3BsYXlCb3hGb3JSb290Qm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXk6OkJveEZhY3Rvcnk6OmRpc3BsYXlCb3hGb3JMYXlvdXRCb3ggY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94RmFjdG9yeTo6c2V0dXBCb3hNb2RlbEJveCBj
b25zdCk6CisgICAgICAgICogZGlzcGxheS9jc3MvRGlzcGxheUJveEZhY3RvcnkuaDoKKyAgICAg
ICAgKiBkaXNwbGF5L2Nzcy9EaXNwbGF5Q1NTUGFpbnRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5OjpDU1NQYWludGVyOjpyZWN1cnNpdmVQYWludERlc2NlbmRhbnRzRm9yUGhhc2Up
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Q1NTUGFpbnRlcjo6cGFpbnRBdG9taWNhbGx5
UGFpbnRlZEJveCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpDU1NQYWludGVyOjpwYWlu
dFN0YWNraW5nQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpDU1NQYWludGVy
OjpwYWludFRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Q1NTUGFpbnRlcjo6aXNT
dGFja2luZ0NvbnRleHRQYWludGluZ0JvdW5kYXJ5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXk6OkNTU1BhaW50ZXI6OnBhcnRpY2lwYXRlc0luWk9yZGVyU29ydGluZyk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpDU1NQYWludGVyOjpjb2xsZWN0U3Rh
Y2tpbmdDb250ZXh0RGVzY2VuZGFudHMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheTo6Q1NTUGFpbnRlcjo6cmVjdXJzaXZlQ29sbGVjdExheWVycyk6IERlbGV0ZWQuCisgICAg
ICAgICogZGlzcGxheS9jc3MvRGlzcGxheUNTU1BhaW50ZXIuaDoKKwogMjAyMC0xMS0yOSAgWmFs
YW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW0JGQ10gRG8gbm90
IGFzc3VtZSBmbG9hdCBhdm9pZGVycyBoYXZlIHByZS1jb21wdXRlZCB2ZXJ0aWNhbCBwb3NpdGlv
bnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNv
cmUvU291cmNlcy50eHQKaW5kZXggNDIwMjYyMGViMWYwZTE0MTdjY2NlOTllNTgyMDAxYTg5YTcz
YTc2ZS4uNmU0NzIzYTUyODM2ZTk0MjVhYjEyZjYzMWRhMGQyZTM4ZDdjNTIwNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQKQEAgLTg0Niw2ICs4NDYsNyBAQCBkaXNwbGF5L2Nzcy9EaXNwbGF5Q1NTUGFpbnRlci5j
cHAKIGRpc3BsYXkvY3NzL0Rpc3BsYXlGaWxsTGF5ZXJJbWFnZUdlb21ldHJ5LmNwcAogZGlzcGxh
eS9jc3MvRGlzcGxheUltYWdlQm94LmNwcAogZGlzcGxheS9jc3MvRGlzcGxheVJlcGxhY2VkQm94
LmNwcAorZGlzcGxheS9jc3MvRGlzcGxheVN0YWNraW5nSXRlbS5jcHAKIGRpc3BsYXkvY3NzL0Rp
c3BsYXlTdHlsZS5jcHAKIGRpc3BsYXkvY3NzL0Rpc3BsYXlUZXh0Qm94LmNwcAogZGlzcGxheS9E
aXNwbGF5TGF5ZXJDb250cm9sbGVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDM4NDUzOWM0ZDQ4MTNlNWU2ODg3MjQxODEx
YmI1NDk3MDA0MWI4MTUuLjhhNDZlYzlkYWJiNTFiN2E3MzQ3MjlhMDlmNmRhZGNiZmUxOWExNDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTYwNjcsNiArNjA2Nyw4IEBACiAJCTBGNzkwRjQwMjUxN0NFNkQwMDlCQTAzNCAvKiBE
aXNwbGF5TGF5ZXJDb250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IERpc3BsYXlMYXllckNvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRjdERjE0NzFFMkJGMUE2MDA5NTk1MUIgLyogV2ViQ29yZUpTQ2xpZW50RGF0YS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJDb3JlSlNDbGllbnRE
YXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY4NTBGRTIxRUQ3QzE4MzAw
RkI3N0E3IC8qIFBlcmZvcm1hbmNlTG9nZ2luZ0NsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBQZXJmb3JtYW5jZUxvZ2dpbmdDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMEY4NjgyRkEyNTcwN0Y0NzAwQzA4QkI1IC8qIERpc3BsYXlTdGFja2lu
Z0l0ZW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlzcGxheVN0YWNraW5nSXRlbS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwRjg2ODJGQzI1NzA3RjQ3MDBDMDhCQjUgLyogRGlzcGxheVN0
YWNraW5nSXRlbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaXNwbGF5U3RhY2tpbmdJdGVtLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY4NzE2NkQxQzg2OUQ4MzAwNEZGMERF
IC8qIExlbmd0aFBvaW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IExlbmd0aFBvaW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY4NzE2NkUx
Qzg2OUQ4MzAwNEZGMERFIC8qIExlbmd0aFBvaW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IExlbmd0aFBvaW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBG
OEI0NTZGMURDM0ZCMTAwMDQ0M0MzRiAvKiBJbnRlcnNlY3Rpb25PYnNlcnZlckNhbGxiYWNrLmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBJbnRlcnNlY3Rpb25PYnNlcnZlckNhbGxiYWNrLmlk
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3ODQyLDYgKzE3ODQ0LDggQEAKIAkJ
CQkwRjMyQkE0MTI1NEYzMjE2MDAxQUMzOEUgLyogRGlzcGxheVBhaW50aW5nQ29udGV4dC5oICov
LAogCQkJCTBGRkYxQjdDMjUxQkM2NTcwMDk4Nzk1QSAvKiBEaXNwbGF5UmVwbGFjZWRCb3guY3Bw
ICovLAogCQkJCTBGRkYxQjc5MjUxQkM2NTcwMDk4Nzk1QSAvKiBEaXNwbGF5UmVwbGFjZWRCb3gu
aCAqLywKKwkJCQkwRjg2ODJGQzI1NzA3RjQ3MDBDMDhCQjUgLyogRGlzcGxheVN0YWNraW5nSXRl
bS5jcHAgKi8sCisJCQkJMEY4NjgyRkEyNTcwN0Y0NzAwQzA4QkI1IC8qIERpc3BsYXlTdGFja2lu
Z0l0ZW0uaCAqLywKIAkJCQkwRkZGMUI3NjI1MUJDNjU3MDA5ODc5NUEgLyogRGlzcGxheVN0eWxl
LmNwcCAqLywKIAkJCQkwRkZGMUI3MzI1MUJDNjU3MDA5ODc5NUEgLyogRGlzcGxheVN0eWxlLmgg
Ki8sCiAJCQkJMEZCMDY4OTQyNTI0M0I5MDAwMUU4RTc1IC8qIERpc3BsYXlUZXh0Qm94LmNwcCAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvRGlzcGxheUxheWVyQ29udHJv
bGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L0Rpc3BsYXlMYXllckNvbnRyb2xsZXIu
Y3BwCmluZGV4IDkxZThlMGQzMWNlM2MwNDdkYTMwY2QyMmYwYzgxZjdhMTZiMWQwY2YuLjc5NDNk
MTI0MDIzMjQyNGZiODQ4OWVmOTgzYWMxMGQzN2ExZmY2NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Rpc3BsYXkvRGlzcGxheUxheWVyQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZGlzcGxheS9EaXNwbGF5TGF5ZXJDb250cm9sbGVyLmNwcApAQCAtMzEsNiArMzEsNyBA
QAogI2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgogI2luY2x1
ZGUgIkRpc3BsYXlDU1NQYWludGVyLmgiCisjaW5jbHVkZSAiRGlzcGxheUNvbnRhaW5lckJveC5o
IgogI2luY2x1ZGUgIkRpc3BsYXlQYWludGluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJEaXNwbGF5
VHJlZS5oIgogI2luY2x1ZGUgIkRpc3BsYXlWaWV3LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kaXNwbGF5L0Rpc3BsYXlUcmVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvRGlz
cGxheVRyZWUuY3BwCmluZGV4IDZlYTBmYTY3Njg4NTJlZmQ5YmU2ODhlZWNlMDk1YzNmMmU2YjBi
NTQuLmJjMzQ5MTkwZTc5OWNkMmFkYTdlNTJiYTMzZmU0Y2JkYWI0NzAwN2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvRGlzcGxheVRyZWUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Rpc3BsYXkvRGlzcGxheVRyZWUuY3BwCkBAIC0yOCwxNSArMjgsMjQgQEAKIAogI2lmIEVO
QUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQogCisjaW5jbHVkZSAiRGlzcGxheUNvbnRh
aW5lckJveC5oIgorI2luY2x1ZGUgIkRpc3BsYXlTdGFja2luZ0l0ZW0uaCIKICNpbmNsdWRlIDx3
dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2Ug
RGlzcGxheSB7CiAKLVRyZWU6OlRyZWUoc3RkOjp1bmlxdWVfcHRyPENvbnRhaW5lckJveD4mJiBy
b290Qm94KQotICAgIDogbV9yb290Qm94KFdURk1vdmUocm9vdEJveCkpCitUcmVlOjpUcmVlKHN0
ZDo6dW5pcXVlX3B0cjxTdGFja2luZ0l0ZW0+JiYgcm9vdFN0YWNraW5nSXRlbSkKKyAgICA6IG1f
cm9vdFN0YWNraW5nSXRlbShXVEZNb3ZlKHJvb3RTdGFja2luZ0l0ZW0pKQogewotICAgIEFTU0VS
VChtX3Jvb3RCb3gpOworICAgIEFTU0VSVChtX3Jvb3RTdGFja2luZ0l0ZW0pOworfQorCitUcmVl
Ojp+VHJlZSgpID0gZGVmYXVsdDsKKworY29uc3QgQ29udGFpbmVyQm94JiBUcmVlOjpyb290Qm94
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gZG93bmNhc3Q8Q29udGFpbmVyQm94PihtX3Jvb3RTdGFj
a2luZ0l0ZW0tPmJveCgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgRGlzcGxheQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZGlzcGxheS9EaXNwbGF5VHJlZS5oIGIvU291cmNlL1dlYkNvcmUv
ZGlzcGxheS9EaXNwbGF5VHJlZS5oCmluZGV4IGZlOGYzNWZjM2NhM2NiMjYxM2MyNWIyYWRkZWMy
NjVkMzQ1MzEyODcuLjBmMmVmYjkxMDY1ZTZmNzUzNTY2NjVhOGI2NWFlOWI0ZDVhNWI1Y2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvRGlzcGxheVRyZWUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kaXNwbGF5L0Rpc3BsYXlUcmVlLmgKQEAgLTI3LDIyICsyNywyNSBAQAogCiAj
aWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCiAKLSNpbmNsdWRlICJEaXNwbGF5
Q29udGFpbmVyQm94LmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvYy5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBuYW1lc3BhY2UgRGlzcGxheSB7CiAKK2NsYXNzIENvbnRhaW5lckJveDsKK2Ns
YXNzIFN0YWNraW5nSXRlbTsKKwogY2xhc3MgVHJlZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQoVHJlZSk7CiBwdWJsaWM6Ci0gICAgVHJlZShzdGQ6OnVuaXF1ZV9wdHI8Q29udGFpbmVy
Qm94PiYmKTsKKyAgICBleHBsaWNpdCBUcmVlKHN0ZDo6dW5pcXVlX3B0cjxTdGFja2luZ0l0ZW0+
JiYpOworICAgIH5UcmVlKCk7CiAKLSAgICBjb25zdCBDb250YWluZXJCb3gmIHJvb3RCb3goKSBj
b25zdCB7IHJldHVybiAqbV9yb290Qm94OyB9CisgICAgY29uc3QgU3RhY2tpbmdJdGVtJiByb290
U3RhY2tpbmdJdGVtKCkgY29uc3QgeyByZXR1cm4gKm1fcm9vdFN0YWNraW5nSXRlbTsgfQorICAg
IGNvbnN0IENvbnRhaW5lckJveCYgcm9vdEJveCgpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIC8v
IElkZWFsbHkgdGhpcyByb290IGJveCB3b3VsZCBiZSBhZ25vc3RpYyB0byBkaXNwbGF5IHR5cGUg
KENTUyB2cyBTVkcpLgotICAgIHN0ZDo6dW5pcXVlX3B0cjxDb250YWluZXJCb3g+IG1fcm9vdEJv
eDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U3RhY2tpbmdJdGVtPiBtX3Jvb3RTdGFja2luZ0l0ZW07
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBEaXNwbGF5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kaXNwbGF5L0Rpc3BsYXlUcmVlQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5
L0Rpc3BsYXlUcmVlQnVpbGRlci5jcHAKaW5kZXggZTlmMGEyNTA0ZjE0YTE2NGJjZDFlMzU0ZjQ2
MDA4Mjc0NDdjMWY2MC4uMDkxY2I1ODA0N2UxZGQzY2NmMzY0NmZmYmY2NzAzNDkyODI1NTdhOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZGlzcGxheS9EaXNwbGF5VHJlZUJ1aWxkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvRGlzcGxheVRyZWVCdWlsZGVyLmNwcApAQCAt
MzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiRGlzcGxheUJveEZhY3RvcnkuaCIKICNpbmNsdWRl
ICJEaXNwbGF5Q29udGFpbmVyQm94LmgiCisjaW5jbHVkZSAiRGlzcGxheVN0YWNraW5nSXRlbS5o
IgogI2luY2x1ZGUgIkRpc3BsYXlTdHlsZS5oIgogI2luY2x1ZGUgIkRpc3BsYXlUcmVlLmgiCiAj
aW5jbHVkZSAiSW5saW5lRm9ybWF0dGluZ1N0YXRlLmgiCkBAIC05OCw2ICs5OSw3IEBAIHByaXZh
dGU6CiAKIHN0cnVjdCBCdWlsZGluZ1N0YXRlIHsKICAgICBQb3NpdGlvbmluZ0NvbnRleHQgcG9z
aXRpb25pbmdDb250ZXh0OworICAgIFN0YWNraW5nSXRlbSYgY3VycmVudFN0YWNraW5nQ29udGV4
dEl0ZW07CiB9OwogCiBUcmVlQnVpbGRlcjo6VHJlZUJ1aWxkZXIoZmxvYXQgcGl4ZWxTbmFwcGlu
Z0ZhY3RvcikKQEAgLTEyMSwzMiArMTIzLDM2IEBAIHN0ZDo6dW5pcXVlX3B0cjxUcmVlPiBUcmVl
QnVpbGRlcjo6YnVpbGQoY29uc3QgTGF5b3V0OjpMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUpCiAK
ICAgICBhdXRvIGdlb21ldHJ5ID0gbGF5b3V0U3RhdGUuZ2VvbWV0cnlGb3JCb3gocm9vdExheW91
dEJveCk7CiAgICAgYXV0byByb290RGlzcGxheUJveCA9IG1fYm94RmFjdG9yeS5kaXNwbGF5Qm94
Rm9yUm9vdEJveChyb290TGF5b3V0Qm94LCBnZW9tZXRyeSwgbV9yb290QmFja2dyb3VuZFByb3Bn
YXRpb24pOwotICAgIGF1dG8gcm9vdERpc3BsYXlDb250YWluZXJCb3ggPSBzdGQ6OnVuaXF1ZV9w
dHI8Q29udGFpbmVyQm94PiB7IGRvd25jYXN0PENvbnRhaW5lckJveD4ocm9vdERpc3BsYXlCb3gu
cmVsZWFzZSgpKSB9OwogCi0gICAgaWYgKCFyb290TGF5b3V0Qm94LmZpcnN0Q2hpbGQoKSkKLSAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VHJlZT4oV1RGTW92ZShyb290RGlzcGxheUNvbnRhaW5l
ckJveCkpOworICAgIGF1dG8gaW5zZXJ0aW9uUG9zaXRpb24gPSBJbnNlcnRpb25Qb3NpdGlvbiB7
ICpyb290RGlzcGxheUJveCB9OworICAgIGF1dG8gcm9vdFN0YWNraW5nSXRlbSA9IG1ha2VVbmlx
dWU8U3RhY2tpbmdJdGVtPihXVEZNb3ZlKHJvb3REaXNwbGF5Qm94KSk7CiAKLSAgICBhdXRvIGlu
c2VydGlvblBvc2l0aW9uID0gSW5zZXJ0aW9uUG9zaXRpb24geyAqcm9vdERpc3BsYXlDb250YWlu
ZXJCb3ggfTsKLQotICAgIG1fc3RhdGVTdGFjay0+YXBwZW5kKHsgKnJvb3REaXNwbGF5Q29udGFp
bmVyQm94IH0pOwotCi0gICAgcmVjdXJzaXZlQnVpbGREaXNwbGF5VHJlZShsYXlvdXRTdGF0ZSwg
KnJvb3RMYXlvdXRCb3guZmlyc3RDaGlsZCgpLCBpbnNlcnRpb25Qb3NpdGlvbik7CisgICAgaWYg
KHJvb3RMYXlvdXRCb3guZmlyc3RDaGlsZCgpKSB7CisgICAgICAgIGF1dG8mIHJvb3RDb250YWlu
ZXJCb3ggPSBkb3duY2FzdDxDb250YWluZXJCb3g+KHJvb3RTdGFja2luZ0l0ZW0tPmJveCgpKTsK
KyAgICAgICAgbV9zdGF0ZVN0YWNrLT5hcHBlbmQoeyByb290Q29udGFpbmVyQm94LCAqcm9vdFN0
YWNraW5nSXRlbSB9KTsKKyAgICAgICAgcmVjdXJzaXZlQnVpbGREaXNwbGF5VHJlZShsYXlvdXRT
dGF0ZSwgKnJvb3RMYXlvdXRCb3guZmlyc3RDaGlsZCgpLCBpbnNlcnRpb25Qb3NpdGlvbik7Cisg
ICAgfQogCiAjaWYgRU5BQkxFKFRSRUVfREVCVUdHSU5HKQotICAgIExPR19XSVRIX1NUUkVBTShG
b3JtYXR0aW5nQ29udGV4dExheW91dCwgc3RyZWFtIDw8ICJEaXNwbGF5IHRyZWU6XG4iIDw8IGRp
c3BsYXlUcmVlQXNUZXh0KCpyb290RGlzcGxheUNvbnRhaW5lckJveCkpOworICAgIExPR19XSVRI
X1NUUkVBTShGb3JtYXR0aW5nQ29udGV4dExheW91dCwgc3RyZWFtIDw8ICJEaXNwbGF5IHRyZWU6
XG4iIDw8IGRpc3BsYXlUcmVlQXNUZXh0KCpyb290U3RhY2tpbmdJdGVtKSk7CiAjZW5kaWYKLQot
ICAgIHJldHVybiBtYWtlVW5pcXVlPFRyZWU+KFdURk1vdmUocm9vdERpc3BsYXlDb250YWluZXJC
b3gpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxUcmVlPihXVEZNb3ZlKHJvb3RTdGFja2luZ0l0
ZW0pKTsKIH0KIAotdm9pZCBUcmVlQnVpbGRlcjo6cHVzaFN0YXRlRm9yQm94RGVzY2VuZGFudHMo
Y29uc3QgTGF5b3V0OjpDb250YWluZXJCb3gmIGxheW91dENvbnRhaW5lckJveCwgY29uc3QgTGF5
b3V0OjpCb3hHZW9tZXRyeSYgbGF5b3V0R2VvbWV0cnksIGNvbnN0IENvbnRhaW5lckJveCYgZGlz
cGxheUJveCkKK3ZvaWQgVHJlZUJ1aWxkZXI6OnB1c2hTdGF0ZUZvckJveERlc2NlbmRhbnRzKGNv
bnN0IExheW91dDo6Q29udGFpbmVyQm94JiBsYXlvdXRDb250YWluZXJCb3gsIGNvbnN0IExheW91
dDo6Qm94R2VvbWV0cnkmIGxheW91dEdlb21ldHJ5LCBjb25zdCBDb250YWluZXJCb3gmIGRpc3Bs
YXlCb3gsIFN0YWNraW5nSXRlbSogYm94U3RhY2tpbmdJdGVtKQogewogICAgIGF1dG8mIHBvc2l0
aW9uaW5nQ29udGV4dCA9IG1fc3RhdGVTdGFjay0+bGFzdCgpLnBvc2l0aW9uaW5nQ29udGV4dDsK
LSAgICBtX3N0YXRlU3RhY2stPmFwcGVuZCh7IHBvc2l0aW9uaW5nQ29udGV4dC5jb250ZXh0Rm9y
RGVzY2VuZGFudHMobGF5b3V0Q29udGFpbmVyQm94LCBsYXlvdXRHZW9tZXRyeSwgZGlzcGxheUJv
eCkgfSk7CisgICAgYXV0byYgY3VycmVudFN0YWNraW5nQ29udGV4dEl0ZW0gPSAoYm94U3RhY2tp
bmdJdGVtICYmIGJveFN0YWNraW5nSXRlbS0+aXNTdGFja2luZ0NvbnRleHQoKSkgPyAqYm94U3Rh
Y2tpbmdJdGVtIDogbV9zdGF0ZVN0YWNrLT5sYXN0KCkuY3VycmVudFN0YWNraW5nQ29udGV4dEl0
ZW07CisKKyAgICBtX3N0YXRlU3RhY2stPmFwcGVuZCh7IHBvc2l0aW9uaW5nQ29udGV4dC5jb250
ZXh0Rm9yRGVzY2VuZGFudHMobGF5b3V0Q29udGFpbmVyQm94LCBsYXlvdXRHZW9tZXRyeSwgZGlz
cGxheUJveCksIGN1cnJlbnRTdGFja2luZ0NvbnRleHRJdGVtIH0pOwogfQogCi12b2lkIFRyZWVC
dWlsZGVyOjpwb3BTdGF0ZSgpCit2b2lkIFRyZWVCdWlsZGVyOjpwb3BTdGF0ZShjb25zdCBDb250
YWluZXJCb3gmIGN1cnJlbnRCb3gpCiB7CisgICAgYXV0byYgY3VycmVudFN0YXRlID0gbV9zdGF0
ZVN0YWNrLT5sYXN0KCk7CisgICAgaWYgKCZjdXJyZW50U3RhdGUuY3VycmVudFN0YWNraW5nQ29u
dGV4dEl0ZW0uYm94KCkgPT0gJmN1cnJlbnRCb3gpCisgICAgICAgIGN1cnJlbnRTdGF0ZS5jdXJy
ZW50U3RhY2tpbmdDb250ZXh0SXRlbS5zb3J0TGlzdHMoKTsKKwogICAgIG1fc3RhdGVTdGFjay0+
cmVtb3ZlTGFzdCgpOwogfQogCkBAIC0xNzMsNiArMTc5LDIxIEBAIHZvaWQgVHJlZUJ1aWxkZXI6
Omluc2VydChzdGQ6OnVuaXF1ZV9wdHI8Qm94PiYmIGJveCwgSW5zZXJ0aW9uUG9zaXRpb24mIGlu
c2VydGlvCiAgICAgfQogfQogCitTdGFja2luZ0l0ZW0qIFRyZWVCdWlsZGVyOjppbnNlcnRJbnRv
VHJlZShzdGQ6OnVuaXF1ZV9wdHI8Qm94PiYmIGJveCwgSW5zZXJ0aW9uUG9zaXRpb24mIGluc2Vy
dGlvblBvc2l0aW9uKQoreworICAgIGlmIChib3gtPnBhcnRpY2lwYXRlc0luWk9yZGVyU29ydGlu
ZygpICYmIGlzPEJveE1vZGVsQm94PigqYm94KSkgeworICAgICAgICBhdXRvIGJveE1vZGVsQm94
ID0gc3RkOjp1bmlxdWVfcHRyPEJveE1vZGVsQm94PiB7IGRvd25jYXN0PEJveE1vZGVsQm94Pihi
b3gucmVsZWFzZSgpKSB9OworICAgICAgICBhdXRvIHN0YWNraW5nSXRlbSA9IG1ha2VVbmlxdWU8
U3RhY2tpbmdJdGVtPihXVEZNb3ZlKGJveE1vZGVsQm94KSk7CisKKyAgICAgICAgYXV0byogc3Rh
Y2tpbmdJdGVtUHRyID0gc3RhY2tpbmdJdGVtLmdldCgpOworICAgICAgICBjdXJyZW50U3RhdGUo
KS5jdXJyZW50U3RhY2tpbmdDb250ZXh0SXRlbS5hZGRDaGlsZFN0YWNraW5nSXRlbShXVEZNb3Zl
KHN0YWNraW5nSXRlbSkpOworICAgICAgICByZXR1cm4gc3RhY2tpbmdJdGVtUHRyOworICAgIH0K
KworICAgIGluc2VydChXVEZNb3ZlKGJveCksIGluc2VydGlvblBvc2l0aW9uKTsKKyAgICByZXR1
cm4gbnVsbHB0cjsKK30KKwogdm9pZCBUcmVlQnVpbGRlcjo6YnVpbGRJbmxpbmVEaXNwbGF5VHJl
ZShjb25zdCBMYXlvdXQ6OkxheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgTGF5b3V0OjpD
b250YWluZXJCb3gmIGlubGluZUZvcm1hdHRpbmdSb290LCBJbnNlcnRpb25Qb3NpdGlvbiYgaW5z
ZXJ0aW9uUG9zaXRpb24pCiB7CiAgICAgYXV0byYgaW5saW5lRm9ybWF0dGluZ1N0YXRlID0gbGF5
b3V0U3RhdGUuZXN0YWJsaXNoZWRJbmxpbmVGb3JtYXR0aW5nU3RhdGUoaW5saW5lRm9ybWF0dGlu
Z1Jvb3QpOwpAQCAtMTkwLDkgKzIxMSwxMyBAQCB2b2lkIFRyZWVCdWlsZGVyOjpidWlsZElubGlu
ZURpc3BsYXlUcmVlKGNvbnN0IExheW91dDo6TGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLAogICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAorICAgICAgICAvLyBGSVhNRTogV29ya2Fy
b3VuZCBmb3Igd2Via2l0Lm9yZ2IvYi8yMTkzMzUuCisgICAgICAgIGlmIChydW4ubGF5b3V0Qm94
KCkuaXNMaW5lQnJlYWtCb3goKSAmJiBydW4ubGF5b3V0Qm94KCkuaXNPdXRPZkZsb3dQb3NpdGlv
bmVkKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKwogICAgICAgICBhdXRvIGdlb21ldHJ5ID0g
bGF5b3V0U3RhdGUuZ2VvbWV0cnlGb3JCb3gocnVuLmxheW91dEJveCgpKTsKICAgICAgICAgYXV0
byBkaXNwbGF5Qm94ID0gbV9ib3hGYWN0b3J5LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gocnVuLmxh
eW91dEJveCgpLCBnZW9tZXRyeSwgcG9zaXRpb25pbmdDb250ZXh0KCkuaW5GbG93Q29udGFpbmlu
Z0Jsb2NrQ29udGV4dCgpKTsKLSAgICAgICAgaW5zZXJ0KFdURk1vdmUoZGlzcGxheUJveCksIGlu
c2VydGlvblBvc2l0aW9uKTsKKyAgICAgICAgaW5zZXJ0SW50b1RyZWUoV1RGTW92ZShkaXNwbGF5
Qm94KSwgaW5zZXJ0aW9uUG9zaXRpb24pOwogICAgIH0KIH0KIApAQCAtMjA2LDkgKzIzMSwxMCBA
QCB2b2lkIFRyZWVCdWlsZGVyOjpyZWN1cnNpdmVCdWlsZERpc3BsYXlUcmVlKGNvbnN0IExheW91
dDo6TGF5b3V0U3RhdGUmIGxheW91dFN0YQogICAgICAgICBkaXNwbGF5Qm94ID0gbV9ib3hGYWN0
b3J5LmRpc3BsYXlCb3hGb3JCb2R5Qm94KGxheW91dEJveCwgZ2VvbWV0cnksIGNvbnRhaW5pbmdC
bG9ja0NvbnRleHQsIG1fcm9vdEJhY2tncm91bmRQcm9wZ2F0aW9uKTsKICAgICBlbHNlCiAgICAg
ICAgIGRpc3BsYXlCb3ggPSBtX2JveEZhY3RvcnkuZGlzcGxheUJveEZvckxheW91dEJveChsYXlv
dXRCb3gsIGdlb21ldHJ5LCBjb250YWluaW5nQmxvY2tDb250ZXh0KTsKLSAgICAKLSAgICBpbnNl
cnQoV1RGTW92ZShkaXNwbGF5Qm94KSwgaW5zZXJ0aW9uUG9zaXRpb24pOwogCisgICAgQm94JiBj
dXJyZW50Qm94ID0gKmRpc3BsYXlCb3g7CisKKyAgICBhdXRvKiBzdGFja2luZ0l0ZW0gPSBpbnNl
cnRJbnRvVHJlZShXVEZNb3ZlKGRpc3BsYXlCb3gpLCBpbnNlcnRpb25Qb3NpdGlvbik7CiAgICAg
aWYgKCFpczxMYXlvdXQ6OkNvbnRhaW5lckJveD4obGF5b3V0Qm94KSkKICAgICAgICAgcmV0dXJu
OwogCkBAIC0yMTYsMTAgKzI0MiwxMCBAQCB2b2lkIFRyZWVCdWlsZGVyOjpyZWN1cnNpdmVCdWls
ZERpc3BsYXlUcmVlKGNvbnN0IExheW91dDo6TGF5b3V0U3RhdGUmIGxheW91dFN0YQogICAgIGlm
ICghbGF5b3V0Q29udGFpbmVyQm94Lmhhc0NoaWxkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IENvbnRhaW5lckJveCYgY3VycmVudEJveCA9IGRvd25jYXN0PENvbnRhaW5lckJveD4oKmluc2Vy
dGlvblBvc2l0aW9uLmN1cnJlbnRDaGlsZCk7Ci0gICAgYXV0byBpbnNlcnRpb25Qb3NpdGlvbkZv
ckNoaWxkcmVuID0gSW5zZXJ0aW9uUG9zaXRpb24geyBjdXJyZW50Qm94IH07CisgICAgQ29udGFp
bmVyQm94JiBjdXJyZW50Q29udGFpbmVyQm94ID0gZG93bmNhc3Q8Q29udGFpbmVyQm94PihjdXJy
ZW50Qm94KTsKKyAgICBwdXNoU3RhdGVGb3JCb3hEZXNjZW5kYW50cyhsYXlvdXRDb250YWluZXJC
b3gsIGdlb21ldHJ5LCBjdXJyZW50Q29udGFpbmVyQm94LCBzdGFja2luZ0l0ZW0pOwogCi0gICAg
cHVzaFN0YXRlRm9yQm94RGVzY2VuZGFudHMobGF5b3V0Q29udGFpbmVyQm94LCBnZW9tZXRyeSwg
Y3VycmVudEJveCk7CisgICAgYXV0byBpbnNlcnRpb25Qb3NpdGlvbkZvckNoaWxkcmVuID0gSW5z
ZXJ0aW9uUG9zaXRpb24geyBjdXJyZW50Q29udGFpbmVyQm94IH07CiAKICAgICBlbnVtIGNsYXNz
IERlc2NlbmRhbnRCb3hJbmNsdXNpb24geyBBbGxCb3hlcywgT3V0T2ZGbG93T25seSB9OwogICAg
IGF1dG8gYm94SW5jbHVzaW9uID0gRGVzY2VuZGFudEJveEluY2x1c2lvbjo6QWxsQm94ZXM7CkBA
IC0yNDIsMzQgKzI2OCwzNSBAQCB2b2lkIFRyZWVCdWlsZGVyOjpyZWN1cnNpdmVCdWlsZERpc3Bs
YXlUcmVlKGNvbnN0IExheW91dDo6TGF5b3V0U3RhdGUmIGxheW91dFN0YQogICAgICAgICAgICAg
cmVjdXJzaXZlQnVpbGREaXNwbGF5VHJlZShsYXlvdXRTdGF0ZSwgY2hpbGQsIGluc2VydGlvblBv
c2l0aW9uRm9yQ2hpbGRyZW4pOwogICAgIH0KIAotICAgIHBvcFN0YXRlKCk7CisgICAgcG9wU3Rh
dGUoY3VycmVudENvbnRhaW5lckJveCk7CiB9CiAKICNpZiBFTkFCTEUoVFJFRV9ERUJVR0dJTkcp
CiAKLXN0YXRpYyB2b2lkIG91dHB1dERpc3BsYXlCb3goVGV4dFN0cmVhbSYgc3RyZWFtLCBjb25z
dCBCb3gmIGRpc3BsYXlCb3gsIHVuc2lnbmVkKQorc3RhdGljIHZvaWQgb3V0cHV0RGlzcGxheUJv
eChUZXh0U3RyZWFtJiBzdHJlYW0sIGNvbnN0IEJveCYgZGlzcGxheUJveCwgYm9vbCB3cml0ZUlu
ZGVudCA9IHRydWUpCiB7Ci0gICAgc3RyZWFtLndyaXRlSW5kZW50KCk7CisgICAgaWYgKHdyaXRl
SW5kZW50KQorICAgICAgICBzdHJlYW0ud3JpdGVJbmRlbnQoKTsKIAogICAgIHN0cmVhbSA8PCBk
aXNwbGF5Qm94LmRlYnVnRGVzY3JpcHRpb24oKTsKICAgICBzdHJlYW0gPDwgIlxuIjsKIH0KIAot
c3RhdGljIHZvaWQgb3V0cHV0RGlzcGxheVRyZWUoVGV4dFN0cmVhbSYgc3RyZWFtLCBjb25zdCBC
b3gmIGRpc3BsYXlCb3gsIHVuc2lnbmVkIGRlcHRoKQorc3RhdGljIHZvaWQgb3V0cHV0RGlzcGxh
eVRyZWUoVGV4dFN0cmVhbSYgc3RyZWFtLCBjb25zdCBCb3gmIGRpc3BsYXlCb3gsIGJvb2wgd3Jp
dGVGaXJzdEl0ZW1JbmRlbnQgPSB0cnVlKQogewotICAgIG91dHB1dERpc3BsYXlCb3goc3RyZWFt
LCBkaXNwbGF5Qm94LCBkZXB0aCk7CisgICAgb3V0cHV0RGlzcGxheUJveChzdHJlYW0sIGRpc3Bs
YXlCb3gsIHdyaXRlRmlyc3RJdGVtSW5kZW50KTsKIAogICAgIGlmIChpczxDb250YWluZXJCb3g+
KGRpc3BsYXlCb3gpKSB7CiAgICAgICAgIFRleHRTdHJlYW06OkluZGVudFNjb3BlIGluZGVudChz
dHJlYW0pOwogICAgICAgICBmb3IgKGF1dG8gY2hpbGQgPSBkb3duY2FzdDxDb250YWluZXJCb3g+
KGRpc3BsYXlCb3gpLmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJs
aW5nKCkpCi0gICAgICAgICAgICBvdXRwdXREaXNwbGF5VHJlZShzdHJlYW0sICpjaGlsZCwgZGVw
dGggKyAxKTsKKyAgICAgICAgICAgIG91dHB1dERpc3BsYXlUcmVlKHN0cmVhbSwgKmNoaWxkKTsK
ICAgICB9CiB9CiAKIFN0cmluZyBkaXNwbGF5VHJlZUFzVGV4dChjb25zdCBCb3gmIGJveCkKIHsK
ICAgICBUZXh0U3RyZWFtIHN0cmVhbShUZXh0U3RyZWFtOjpMaW5lTW9kZTo6TXVsdGlwbGVMaW5l
LCBUZXh0U3RyZWFtOjpGb3JtYXR0aW5nOjpTVkdTdHlsZVJlY3QpOwotICAgIG91dHB1dERpc3Bs
YXlUcmVlKHN0cmVhbSwgYm94LCAxKTsKKyAgICBvdXRwdXREaXNwbGF5VHJlZShzdHJlYW0sIGJv
eCk7CiAgICAgcmV0dXJuIHN0cmVhbS5yZWxlYXNlKCk7CiB9CiAKQEAgLTI3OSw2ICszMDYsMzcg
QEAgdm9pZCBzaG93RGlzcGxheVRyZWUoY29uc3QgQm94JiBib3gpCiAgICAgV1RGTG9nQWx3YXlz
KCIlcyIsIHRyZWVBc1RleHQudXRmOCgpLmRhdGEoKSk7CiB9CiAKK3N0YXRpYyB2b2lkIG91dHB1
dFN0YWNraW5nVHJlZShUZXh0U3RyZWFtJiBzdHJlYW0sIGNvbnN0IGNoYXIqIHByZWZpeCwgY29u
c3QgU3RhY2tpbmdJdGVtJiBzdGFja2luZ0l0ZW0pCit7CisgICAgc3RyZWFtLndyaXRlSW5kZW50
KCk7CisgICAgc3RyZWFtIDw8IHByZWZpeDsKKworICAgIFRleHRTdHJlYW06OkluZGVudFNjb3Bl
IGluZGVudChzdHJlYW0pOworICAgIG91dHB1dERpc3BsYXlUcmVlKHN0cmVhbSwgc3RhY2tpbmdJ
dGVtLmJveCgpLCBmYWxzZSk7CisKKyAgICB7CisgICAgICAgIFRleHRTdHJlYW06OkluZGVudFNj
b3BlIGluZGVudChzdHJlYW0pOworICAgICAgICBmb3IgKGF1dG8mIGNoaWxkU3RhY2tpbmdJdGVt
IDogc3RhY2tpbmdJdGVtLm5lZ2F0aXZlWk9yZGVyTGlzdCgpKQorICAgICAgICAgICAgb3V0cHV0
U3RhY2tpbmdUcmVlKHN0cmVhbSwgIi0gIiwgKmNoaWxkU3RhY2tpbmdJdGVtKTsKKworICAgICAg
ICBmb3IgKGF1dG8mIGNoaWxkU3RhY2tpbmdJdGVtIDogc3RhY2tpbmdJdGVtLnBvc2l0aXZlWk9y
ZGVyTGlzdCgpKQorICAgICAgICAgICAgb3V0cHV0U3RhY2tpbmdUcmVlKHN0cmVhbSwgY2hpbGRT
dGFja2luZ0l0ZW0tPmlzU3RhY2tpbmdDb250ZXh0KCkgPyAiKyAiIDogInAgIiwgKmNoaWxkU3Rh
Y2tpbmdJdGVtKTsKKyAgICB9Cit9CisKK1N0cmluZyBkaXNwbGF5VHJlZUFzVGV4dChjb25zdCBT
dGFja2luZ0l0ZW0mIHN0YWNraW5nSXRlbSkKK3sKKyAgICBUZXh0U3RyZWFtIHN0cmVhbShUZXh0
U3RyZWFtOjpMaW5lTW9kZTo6TXVsdGlwbGVMaW5lLCBUZXh0U3RyZWFtOjpGb3JtYXR0aW5nOjpT
VkdTdHlsZVJlY3QpOworICAgIG91dHB1dFN0YWNraW5nVHJlZShzdHJlYW0sICIiLCBzdGFja2lu
Z0l0ZW0pOworICAgIHJldHVybiBzdHJlYW0ucmVsZWFzZSgpOworfQorCit2b2lkIHNob3dEaXNw
bGF5VHJlZShjb25zdCBTdGFja2luZ0l0ZW0mIHN0YWNraW5nSXRlbSkKK3sKKyAgICBhdXRvIHRy
ZWVBc1RleHQgPSBkaXNwbGF5VHJlZUFzVGV4dChzdGFja2luZ0l0ZW0pOworICAgIFdURkxvZ0Fs
d2F5cygiJXMiLCB0cmVlQXNUZXh0LnV0ZjgoKS5kYXRhKCkpOworfQorCiAjZW5kaWYKIAogfSAv
LyBuYW1lc3BhY2UgRGlzcGxheQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZGlzcGxheS9E
aXNwbGF5VHJlZUJ1aWxkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvRGlzcGxheVRyZWVC
dWlsZGVyLmgKaW5kZXggMjFkZTE2MjE1Y2I0NzY5NGJjZTQyZTAwMzIxYTczZjZlNGYyYTVlNi4u
ZDc4OTZjYjhhMjE0NjM2NGViODdlNjE4OWI5NGYzYThkYTIyYjdlNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZGlzcGxheS9EaXNwbGF5VHJlZUJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kaXNwbGF5L0Rpc3BsYXlUcmVlQnVpbGRlci5oCkBAIC01MCw2ICs1MCw3IEBAIG5hbWVz
cGFjZSBEaXNwbGF5IHsKIGNsYXNzIEJveDsKIGNsYXNzIENvbnRhaW5lckJveDsKIGNsYXNzIFBv
c2l0aW9uaW5nQ29udGV4dDsKK2NsYXNzIFN0YWNraW5nSXRlbTsKIGNsYXNzIFRyZWU7CiBzdHJ1
Y3QgQnVpbGRpbmdTdGF0ZTsKIApAQCAtNjgsMjMgKzY5LDI3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCByZWN1cnNpdmVCdWlsZERpc3BsYXlUcmVlKGNvbnN0IExheW91dDo6TGF5b3V0U3RhdGUmLCBj
b25zdCBMYXlvdXQ6OkJveCYsIEluc2VydGlvblBvc2l0aW9uJik7CiAgICAgdm9pZCBidWlsZElu
bGluZURpc3BsYXlUcmVlKGNvbnN0IExheW91dDo6TGF5b3V0U3RhdGUmLCBjb25zdCBMYXlvdXQ6
OkNvbnRhaW5lckJveCYsIEluc2VydGlvblBvc2l0aW9uJik7CiAKKyAgICBTdGFja2luZ0l0ZW0q
IGluc2VydEludG9UcmVlKHN0ZDo6dW5pcXVlX3B0cjxCb3g+JiYsIEluc2VydGlvblBvc2l0aW9u
Jik7CiAgICAgdm9pZCBpbnNlcnQoc3RkOjp1bmlxdWVfcHRyPEJveD4mJiwgSW5zZXJ0aW9uUG9z
aXRpb24mKSBjb25zdDsKIAotICAgIHZvaWQgcHVzaFN0YXRlRm9yQm94RGVzY2VuZGFudHMoY29u
c3QgTGF5b3V0OjpDb250YWluZXJCb3gmLCBjb25zdCBMYXlvdXQ6OkJveEdlb21ldHJ5JiwgY29u
c3QgQ29udGFpbmVyQm94Jik7Ci0gICAgdm9pZCBwb3BTdGF0ZSgpOworICAgIHZvaWQgcHVzaFN0
YXRlRm9yQm94RGVzY2VuZGFudHMoY29uc3QgTGF5b3V0OjpDb250YWluZXJCb3gmLCBjb25zdCBM
YXlvdXQ6OkJveEdlb21ldHJ5JiwgY29uc3QgQ29udGFpbmVyQm94JiwgU3RhY2tpbmdJdGVtKik7
CisgICAgdm9pZCBwb3BTdGF0ZShjb25zdCBDb250YWluZXJCb3gmIGN1cnJlbnRCb3gpOwogICAg
IAogICAgIGNvbnN0IEJ1aWxkaW5nU3RhdGUmIGN1cnJlbnRTdGF0ZSgpIGNvbnN0OwogICAgIGNv
bnN0IFBvc2l0aW9uaW5nQ29udGV4dCYgcG9zaXRpb25pbmdDb250ZXh0KCkgY29uc3Q7CiAKICAg
ICBCb3hGYWN0b3J5IG1fYm94RmFjdG9yeTsKICAgICBSb290QmFja2dyb3VuZFByb3BhZ2F0aW9u
IG1fcm9vdEJhY2tncm91bmRQcm9wZ2F0aW9uIHsgUm9vdEJhY2tncm91bmRQcm9wYWdhdGlvbjo6
Tm9uZSB9OwotICAgIAorCiAgICAgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxCdWlsZGluZ1N0YXRl
Pj4gbV9zdGF0ZVN0YWNrOwogfTsKIAogI2lmIEVOQUJMRShUUkVFX0RFQlVHR0lORykKIFN0cmlu
ZyBkaXNwbGF5VHJlZUFzVGV4dChjb25zdCBCb3gmKTsKIHZvaWQgc2hvd0Rpc3BsYXlUcmVlKGNv
bnN0IEJveCYpOworCitTdHJpbmcgZGlzcGxheVRyZWVBc1RleHQoY29uc3QgU3RhY2tpbmdJdGVt
Jik7Cit2b2lkIHNob3dEaXNwbGF5VHJlZShjb25zdCBTdGFja2luZ0l0ZW0mKTsKICNlbmRpZgog
CiB9IC8vIG5hbWVzcGFjZSBEaXNwbGF5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kaXNw
bGF5L2Nzcy9EaXNwbGF5Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3Bs
YXlCb3guY3BwCmluZGV4IDcxMjllOTM4MDY1ZDdiYTE0ZDIyYTJhYWMzZWMyNzIzOGMzNzEzMTEu
LmUzZGE3Y2ZhMTMyMjZiYzBlZjk4ZTFiY2M5ZmNlZDZmZDkzZTM0MzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlCb3guY3BwCkBAIC01MCw2ICs1MCwxMSBAQCB2b2lkIEJv
eDo6c2V0TmV4dFNpYmxpbmcoc3RkOjp1bmlxdWVfcHRyPEJveD4mJiBib3gpCiAgICAgbV9uZXh0
U2libGluZyA9IFdURk1vdmUoYm94KTsKIH0KIAorYm9vbCBCb3g6OnBhcnRpY2lwYXRlc0luWk9y
ZGVyU29ydGluZygpIGNvbnN0Cit7CisgICAgcmV0dXJuICFpc0xpbmVCcmVha0JveCgpICYmIHN0
eWxlKCkucGFydGljaXBhdGVzSW5aT3JkZXJTb3J0aW5nKCk7Cit9CisKIFN0cmluZyBCb3g6OmRl
YnVnRGVzY3JpcHRpb24oKSBjb25zdAogewogICAgIFRleHRTdHJlYW0gc3RyZWFtOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheUJveC5oIGIvU291cmNlL1dl
YkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheUJveC5oCmluZGV4IDUxOTk0MGI1NTQwNmY1MTIxZDY2
YjBhYWI4MGIwMzZhYTU4ZjJmY2IuLjQ4OTg3ZjBhOGM2NjQxMWZkYjk1NTcxYTliOThlYTc5MDA2
YmE2NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlCb3gu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5Qm94LmgKQEAgLTQ2LDYg
KzQ2LDcgQEAgcHVibGljOgogICAgICAgICBDb250YWluZXJCb3ggICAgPSAxIDw8IDEsCiAgICAg
ICAgIEltYWdlQm94ICAgICAgICA9IDEgPDwgMiwKICAgICAgICAgVGV4dEJveCAgICAgICAgID0g
MSA8PCAzLAorICAgICAgICBMaW5lQnJlYWtCb3ggICAgPSAxIDw8IDQsIC8vIEZJWE1FOiBXb3Jr
YXJvdW5kIGZvciB3ZWJraXQub3JnL2IvMjE5MzM1CiAgICAgfTsKIAogICAgIEJveChBYnNvbHV0
ZUZsb2F0UmVjdCwgU3R5bGUmJiwgT3B0aW9uU2V0PEZsYWdzPiA9IHsgfSk7CkBAIC02MCw2ICs2
MSw5IEBAIHB1YmxpYzoKICAgICBib29sIGlzSW1hZ2VCb3goKSBjb25zdCB7IHJldHVybiBtX2Zs
YWdzLmNvbnRhaW5zKEZsYWdzOjpJbWFnZUJveCk7IH0KICAgICBib29sIGlzUmVwbGFjZWRCb3go
KSBjb25zdCB7IHJldHVybiBtX2ZsYWdzLmNvbnRhaW5zKEZsYWdzOjpJbWFnZUJveCk7IC8qIGFu
ZCBvdGhlciB0eXBlcyBsYXRlci4gKi8gfQogICAgIGJvb2wgaXNUZXh0Qm94KCkgY29uc3QgeyBy
ZXR1cm4gbV9mbGFncy5jb250YWlucyhGbGFnczo6VGV4dEJveCk7IH0KKyAgICBib29sIGlzTGlu
ZUJyZWFrQm94KCkgY29uc3QgeyByZXR1cm4gbV9mbGFncy5jb250YWlucyhGbGFnczo6TGluZUJy
ZWFrQm94KTsgfQorCisgICAgYm9vbCBwYXJ0aWNpcGF0ZXNJblpPcmRlclNvcnRpbmcoKSBjb25z
dDsKIAogICAgIGNvbnN0IEJveCogbmV4dFNpYmxpbmcoKSBjb25zdCB7IHJldHVybiBtX25leHRT
aWJsaW5nLmdldCgpOyB9CiAgICAgdm9pZCBzZXROZXh0U2libGluZyhzdGQ6OnVuaXF1ZV9wdHI8
Qm94PiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlC
b3hGYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlCb3hGYWN0
b3J5LmNwcAppbmRleCAwYWVlZGEwYWVjYzBjOGRmZWQwNjdhZDcxNGViNGUxZGJhZmIyOTk4Li42
NTIwNGJkMGMzMGE4YjcxYjE5MWMxYjA0NDRmOGVjZjFjMGExYTc5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5Qm94RmFjdG9yeS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheUJveEZhY3RvcnkuY3BwCkBAIC02Nyw3ICs2Nyw3
IEBAIFJvb3RCYWNrZ3JvdW5kUHJvcGFnYXRpb24gQm94RmFjdG9yeTo6ZGV0ZXJtaW5lUm9vdEJh
Y2tncm91bmRQcm9wYWdhdGlvbihjb25zdCBMCiAgICAgcmV0dXJuIFJvb3RCYWNrZ3JvdW5kUHJv
cGFnYXRpb246Ok5vbmU7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxCb3g+IEJveEZhY3Rvcnk6OmRp
c3BsYXlCb3hGb3JSb290Qm94KGNvbnN0IExheW91dDo6Q29udGFpbmVyQm94JiByb290TGF5b3V0
Qm94LCBjb25zdCBMYXlvdXQ6OkJveEdlb21ldHJ5JiBnZW9tZXRyeSwgUm9vdEJhY2tncm91bmRQ
cm9wYWdhdGlvbiByb290QmFja2dyb3VuZFByb3BhZ2F0aW9uKSBjb25zdAorc3RkOjp1bmlxdWVf
cHRyPENvbnRhaW5lckJveD4gQm94RmFjdG9yeTo6ZGlzcGxheUJveEZvclJvb3RCb3goY29uc3Qg
TGF5b3V0OjpDb250YWluZXJCb3gmIHJvb3RMYXlvdXRCb3gsIGNvbnN0IExheW91dDo6Qm94R2Vv
bWV0cnkmIGdlb21ldHJ5LCBSb290QmFja2dyb3VuZFByb3BhZ2F0aW9uIHJvb3RCYWNrZ3JvdW5k
UHJvcGFnYXRpb24pIGNvbnN0CiB7CiAgICAgQVNTRVJUKGlzPExheW91dDo6SW5pdGlhbENvbnRh
aW5pbmdCbG9jaz4ocm9vdExheW91dEJveCkpOwogCkBAIC0xMzUsNyArMTM1LDEyIEBAIHN0ZDo6
dW5pcXVlX3B0cjxCb3g+IEJveEZhY3Rvcnk6OmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goY29uc3Qg
TGF5b3V0OjpCb3gmIGxheW91CiAgICAgICAgIHJldHVybiBjb250YWluZXJCb3g7CiAgICAgfQog
Ci0gICAgcmV0dXJuIG1ha2VVbmlxdWU8Qm94PihzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKGJvcmRl
ckJveFJlY3QsIG1fcGl4ZWxTbmFwcGluZ0ZhY3RvciksIFdURk1vdmUoc3R5bGUpKTsKKyAgICBP
cHRpb25TZXQ8Qm94OjpGbGFncz4gZmxhZ3M7CisgICAgLy8gRklYTUU6IFdvcmthcm91bmQgZm9y
IHdlYmtpdC5vcmcvYi8yMTkzMzUuCisgICAgaWYgKGxheW91dEJveC5pc0xpbmVCcmVha0JveCgp
KQorICAgICAgICBmbGFncy5hZGQoQm94OjpGbGFnczo6TGluZUJyZWFrQm94KTsKKworICAgIHJl
dHVybiBtYWtlVW5pcXVlPEJveD4oc25hcFJlY3RUb0RldmljZVBpeGVscyhib3JkZXJCb3hSZWN0
LCBtX3BpeGVsU25hcHBpbmdGYWN0b3IpLCBXVEZNb3ZlKHN0eWxlKSwgZmxhZ3MpOwogfQogCiBz
dGQ6OnVuaXF1ZV9wdHI8Qm94PiBCb3hGYWN0b3J5OjpkaXNwbGF5Qm94Rm9yVGV4dFJ1bihjb25z
dCBMYXlvdXQ6OkxpbmVSdW4mIHJ1biwgY29uc3QgTGF5b3V0OjpJbmxpbmVMaW5lR2VvbWV0cnkm
IGxpbmVHZW9tZXRyeSwgY29uc3QgQ29udGFpbmluZ0Jsb2NrQ29udGV4dCYgY29udGFpbmluZ0Js
b2NrQ29udGV4dCkgY29uc3QKQEAgLTI2NCw3ICsyNjksNyBAQCB2b2lkIEJveEZhY3Rvcnk6OnNl
dHVwQm94TW9kZWxCb3goQm94TW9kZWxCb3gmIGJveCwgY29uc3QgTGF5b3V0OjpCb3gmIGxheW91
dEJveAogICAgIGF1dG8gYm94RGVjb3JhdGlvbkRhdGEgPSBjb25zdHJ1Y3RCb3hEZWNvcmF0aW9u
RGF0YShsYXlvdXRCb3gsIGxheW91dEdlb21ldHJ5LCBzdHlsZUZvckJhY2tncm91bmQsIGNvbnRh
aW5pbmdCbG9ja0NvbnRleHQub2Zmc2V0RnJvbVJvb3QpOwogICAgIGJveC5zZXRCb3hEZWNvcmF0
aW9uRGF0YShXVEZNb3ZlKGJveERlY29yYXRpb25EYXRhKSk7CiAKLSAgICBpZiAoYm94LnN0eWxl
KCkucGFydGljaXBhdGVzSW5aT3JkZXJTb3J0aW5nKCkpIHsKKyAgICBpZiAoYm94LnBhcnRpY2lw
YXRlc0luWk9yZGVyU29ydGluZygpKSB7CiAgICAgICAgIFJlZlB0cjxCb3hDbGlwPiBjbGlwID0g
Y29udGFpbmluZ0Jsb2NrQ29udGV4dC5ib3guY2xpcEZvckRlc2NlbmRhbnRzKCk7CiAgICAgICAg
IGJveC5zZXRBbmNlc3RvckNsaXAoV1RGTW92ZShjbGlwKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheUJveEZhY3RvcnkuaCBiL1NvdXJjZS9X
ZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlCb3hGYWN0b3J5LmgKaW5kZXggYWM1ZTkxZjk0OTI2
ZWVmNTA4ZDZmZTMyMGVmZjUwYjczOTYyNDkyOS4uMDc3NzBlYTdkYmJiNGJlYTAyNDBiMzkwNzUx
NDg4NzRjNGQ2ZTc1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlz
cGxheUJveEZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5
Qm94RmFjdG9yeS5oCkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBSb290
QmFja2dyb3VuZFByb3BhZ2F0aW9uIGRldGVybWluZVJvb3RCYWNrZ3JvdW5kUHJvcGFnYXRpb24o
Y29uc3QgTGF5b3V0OjpDb250YWluZXJCb3gmIHJvb3RMYXlvdXRCb3gpOwogCi0gICAgc3RkOjp1
bmlxdWVfcHRyPEJveD4gZGlzcGxheUJveEZvclJvb3RCb3goY29uc3QgTGF5b3V0OjpDb250YWlu
ZXJCb3gmLCBjb25zdCBMYXlvdXQ6OkJveEdlb21ldHJ5JiwgUm9vdEJhY2tncm91bmRQcm9wYWdh
dGlvbikgY29uc3Q7CisgICAgc3RkOjp1bmlxdWVfcHRyPENvbnRhaW5lckJveD4gZGlzcGxheUJv
eEZvclJvb3RCb3goY29uc3QgTGF5b3V0OjpDb250YWluZXJCb3gmLCBjb25zdCBMYXlvdXQ6OkJv
eEdlb21ldHJ5JiwgUm9vdEJhY2tncm91bmRQcm9wYWdhdGlvbikgY29uc3Q7CiAgICAgc3RkOjp1
bmlxdWVfcHRyPEJveD4gZGlzcGxheUJveEZvckJvZHlCb3goY29uc3QgTGF5b3V0OjpCb3gmLCBj
b25zdCBMYXlvdXQ6OkJveEdlb21ldHJ5JiwgY29uc3QgQ29udGFpbmluZ0Jsb2NrQ29udGV4dCYs
IFJvb3RCYWNrZ3JvdW5kUHJvcGFnYXRpb24pIGNvbnN0OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxC
b3g+IGRpc3BsYXlCb3hGb3JMYXlvdXRCb3goY29uc3QgTGF5b3V0OjpCb3gmLCBjb25zdCBMYXlv
dXQ6OkJveEdlb21ldHJ5JiwgY29uc3QgQ29udGFpbmluZ0Jsb2NrQ29udGV4dCYpIGNvbnN0Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5Q1NTUGFpbnRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5Q1NTUGFpbnRlci5jcHAK
aW5kZXggYzNkMTlkNTZhZDM5YTgyNWVhMjg0NGNiYjIxOGZlZmM0YmY3MDEwZi4uNjdiMTdlNjEz
YzRmMTQ0MzkxMTk1OWVmYWEzMjdlMzY5ODAxNWQ4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZGlzcGxheS9jc3MvRGlzcGxheUNTU1BhaW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Rpc3BsYXkvY3NzL0Rpc3BsYXlDU1NQYWludGVyLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2lu
Y2x1ZGUgIkRpc3BsYXlCb3hSYXJlR2VvbWV0cnkuaCIKICNpbmNsdWRlICJEaXNwbGF5Q29udGFp
bmVyQm94LmgiCiAjaW5jbHVkZSAiRGlzcGxheVBhaW50aW5nQ29udGV4dC5oIgorI2luY2x1ZGUg
IkRpc3BsYXlTdGFja2luZ0l0ZW0uaCIKICNpbmNsdWRlICJEaXNwbGF5U3R5bGUuaCIKICNpbmNs
dWRlICJEaXNwbGF5VHJlZS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgpAQCAtODIs
OCArODMsNyBAQCB2b2lkIENTU1BhaW50ZXI6OnJlY3Vyc2l2ZVBhaW50RGVzY2VuZGFudHNGb3JQ
aGFzZShjb25zdCBDb250YWluZXJCb3gmIGNvbnRhaW5lcgogCiAgICAgZm9yIChjb25zdCBhdXRv
KiBjaGlsZCA9IGNvbnRhaW5lckJveC5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxk
LT5uZXh0U2libGluZygpKSB7CiAgICAgICAgIGF1dG8mIGJveCA9ICpjaGlsZDsKLSAgICAgICAg
aWYgKHBhcnRpY2lwYXRlc0luWk9yZGVyU29ydGluZyhib3gpKQotICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgIEFTU0VSVCghYm94LnBhcnRpY2lwYXRlc0luWk9yZGVyU29ydGluZygpKTsK
IAogICAgICAgICBzd2l0Y2ggKHBhaW50UGhhc2UpIHsKICAgICAgICAgY2FzZSBQYWludFBoYXNl
OjpCbG9ja0JhY2tncm91bmRzOgpAQCAtMTI0LDEwICsxMjQsMTIgQEAgdm9pZCBDU1NQYWludGVy
OjpyZWN1cnNpdmVQYWludERlc2NlbmRhbnRzKGNvbnN0IENvbnRhaW5lckJveCYgY29udGFpbmVy
Qm94LCBQYWkKICAgICByZWN1cnNpdmVQYWludERlc2NlbmRhbnRzRm9yUGhhc2UoY29udGFpbmVy
Qm94LCBwYWludGluZ0NvbnRleHQsIFBhaW50UGhhc2U6OkJsb2NrRm9yZWdyb3VuZHMpOwogfQog
Ci12b2lkIENTU1BhaW50ZXI6OnBhaW50QXRvbWljYWxseVBhaW50ZWRCb3goY29uc3QgQm94JiBi
b3gsIFBhaW50aW5nQ29udGV4dCYgcGFpbnRpbmdDb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0
eVJlY3QsIEluY2x1ZGVTdGFja2luZ0NvbnRleHREZXNjZW5kYW50cyBpbmNsdWRlU3RhY2tpbmdD
b250ZXh0RGVzY2VuZGFudHMpCit2b2lkIENTU1BhaW50ZXI6OnBhaW50QXRvbWljYWxseVBhaW50
ZWRCb3goY29uc3QgU3RhY2tpbmdJdGVtJiBzdGFja2luZ0l0ZW0sIFBhaW50aW5nQ29udGV4dCYg
cGFpbnRpbmdDb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QsIEluY2x1ZGVTdGFja2lu
Z0NvbnRleHREZXNjZW5kYW50cyBpbmNsdWRlU3RhY2tpbmdDb250ZXh0RGVzY2VuZGFudHMpCiB7
CiAgICAgVU5VU0VEX1BBUkFNKGRpcnR5UmVjdCk7CiAKKyAgICBhdXRvJiBib3ggPSBzdGFja2lu
Z0l0ZW0uYm94KCk7CisKICAgICBhdXRvIG5lZWRUb1NhdmVTdGF0ZSA9IFtdKGNvbnN0IEJveCYg
Ym94KSB7CiAgICAgICAgIGlmICghaXM8Qm94TW9kZWxCb3g+KGJveCkpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CkBAIC0xNjEsMTggKzE2MywxMyBAQCB2b2lkIENTU1BhaW50ZXI6OnBhaW50
QXRvbWljYWxseVBhaW50ZWRCb3goY29uc3QgQm94JiBib3gsIFBhaW50aW5nQ29udGV4dCYgcGFp
bgogICAgIGlmICghaXM8Q29udGFpbmVyQm94Pihib3gpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBhdXRvJiBjb250YWluZXJCb3ggPSBkb3duY2FzdDxDb250YWluZXJCb3g+KGJveCk7Ci0KLSAg
ICBWZWN0b3I8Y29uc3QgQm94TW9kZWxCb3gqPiBuZWdhdGl2ZVpPcmRlckxpc3Q7Ci0gICAgVmVj
dG9yPGNvbnN0IEJveE1vZGVsQm94Kj4gcG9zaXRpdmVaT3JkZXJMaXN0OwogICAgIGlmIChpbmNs
dWRlU3RhY2tpbmdDb250ZXh0RGVzY2VuZGFudHMgPT0gSW5jbHVkZVN0YWNraW5nQ29udGV4dERl
c2NlbmRhbnRzOjpZZXMpIHsKLSAgICAgICAgY29sbGVjdFN0YWNraW5nQ29udGV4dERlc2NlbmRh
bnRzKGNvbnRhaW5lckJveCwgbmVnYXRpdmVaT3JkZXJMaXN0LCBwb3NpdGl2ZVpPcmRlckxpc3Qp
OwotCiAgICAgICAgIC8vIFN0YWNraW5nIGNvbnRleHRzIGZvcm1lZCBieSBwb3NpdGlvbmVkIGRl
c2NlbmRhbnRzIHdpdGggbmVnYXRpdmUgei1pbmRpY2VzIChleGNsdWRpbmcgMCkgaW4gei1pbmRl
eCBvcmRlciAobW9zdCBuZWdhdGl2ZSBmaXJzdCkgdGhlbiB0cmVlIG9yZGVyLgotICAgICAgICBm
b3IgKGF1dG8qIGJveCA6IG5lZ2F0aXZlWk9yZGVyTGlzdCkKLSAgICAgICAgICAgIHBhaW50U3Rh
Y2tpbmdDb250ZXh0KCpib3gsIHBhaW50aW5nQ29udGV4dCwgZGlydHlSZWN0KTsKKyAgICAgICAg
Zm9yIChhdXRvJiBzdGFja2luZ0l0ZW0gOiBzdGFja2luZ0l0ZW0ubmVnYXRpdmVaT3JkZXJMaXN0
KCkpCisgICAgICAgICAgICBwYWludFN0YWNraW5nQ29udGV4dCgqc3RhY2tpbmdJdGVtLCBwYWlu
dGluZ0NvbnRleHQsIGRpcnR5UmVjdCk7CiAgICAgfQogCisgICAgYXV0byYgY29udGFpbmVyQm94
ID0gZG93bmNhc3Q8Q29udGFpbmVyQm94Pihib3gpOwogICAgIHJlY3Vyc2l2ZVBhaW50RGVzY2Vu
ZGFudHMoY29udGFpbmVyQm94LCBwYWludGluZ0NvbnRleHQpOwogCiAgICAgaWYgKGluY2x1ZGVT
dGFja2luZ0NvbnRleHREZXNjZW5kYW50cyA9PSBJbmNsdWRlU3RhY2tpbmdDb250ZXh0RGVzY2Vu
ZGFudHM6OlllcykgewpAQCAtMTgwLDY2ICsxNzcsMjMgQEAgdm9pZCBDU1NQYWludGVyOjpwYWlu
dEF0b21pY2FsbHlQYWludGVkQm94KGNvbnN0IEJveCYgYm94LCBQYWludGluZ0NvbnRleHQmIHBh
aW4KICAgICAgICAgLy8gYXMgaWYgaXQgY3JlYXRlZCBhIG5ldyBzdGFja2luZyBjb250ZXh0LCBi
dXQgYW55IHBvc2l0aW9uZWQgZGVzY2VuZGFudHMgYW5kIGRlc2NlbmRhbnRzIHdoaWNoIGFjdHVh
bGx5IGNyZWF0ZSBhIG5ldyBzdGFja2luZyBjb250ZXh0CiAgICAgICAgIC8vIHNob3VsZCBiZSBj
b25zaWRlcmVkIHBhcnQgb2YgdGhlIHBhcmVudCBzdGFja2luZyBjb250ZXh0LCBub3QgdGhpcyBu
ZXcgb25lLiBGb3IgdGhvc2Ugd2l0aCAnei1pbmRleDogMCcsIHRyZWF0IHRoZSBzdGFja2luZyBj
b250ZXh0CiAgICAgICAgIC8vIGdlbmVyYXRlZCBhdG9taWNhbGx5LgotICAgICAgICBmb3IgKGF1
dG8qIGJveCA6IHBvc2l0aXZlWk9yZGVyTGlzdCkgewotICAgICAgICAgICAgaWYgKGJveC0+c3R5
bGUoKS5pc1N0YWNraW5nQ29udGV4dCgpKQotICAgICAgICAgICAgICAgIHBhaW50U3RhY2tpbmdD
b250ZXh0KCpib3gsIHBhaW50aW5nQ29udGV4dCwgZGlydHlSZWN0KTsKKyAgICAgICAgZm9yIChh
dXRvJiBzdGFja2luZ0l0ZW0gOiBzdGFja2luZ0l0ZW0ucG9zaXRpdmVaT3JkZXJMaXN0KCkpIHsK
KyAgICAgICAgICAgIGlmIChzdGFja2luZ0l0ZW0tPmlzU3RhY2tpbmdDb250ZXh0KCkpCisgICAg
ICAgICAgICAgICAgcGFpbnRTdGFja2luZ0NvbnRleHQoKnN0YWNraW5nSXRlbSwgcGFpbnRpbmdD
b250ZXh0LCBkaXJ0eVJlY3QpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHBh
aW50QXRvbWljYWxseVBhaW50ZWRCb3goKmJveCwgcGFpbnRpbmdDb250ZXh0LCBkaXJ0eVJlY3Qp
OworICAgICAgICAgICAgICAgIHBhaW50QXRvbWljYWxseVBhaW50ZWRCb3goKnN0YWNraW5nSXRl
bSwgcGFpbnRpbmdDb250ZXh0LCBkaXJ0eVJlY3QpOwogICAgICAgICB9CiAgICAgfQogfQogCi12
b2lkIENTU1BhaW50ZXI6OnBhaW50U3RhY2tpbmdDb250ZXh0KGNvbnN0IEJveE1vZGVsQm94JiBj
b250ZXh0Um9vdCwgUGFpbnRpbmdDb250ZXh0JiBwYWludGluZ0NvbnRleHQsIGNvbnN0IEludFJl
Y3QmIGRpcnR5UmVjdCkKLXsKLSAgICBwYWludEF0b21pY2FsbHlQYWludGVkQm94KGNvbnRleHRS
b290LCBwYWludGluZ0NvbnRleHQsIGRpcnR5UmVjdCwgSW5jbHVkZVN0YWNraW5nQ29udGV4dERl
c2NlbmRhbnRzOjpZZXMpOwotfQotCi1ib29sIENTU1BhaW50ZXI6OmlzU3RhY2tpbmdDb250ZXh0
UGFpbnRpbmdCb3VuZGFyeShjb25zdCBCb3gmIGJveCkKLXsKLSAgICByZXR1cm4gYm94LnN0eWxl
KCkuaXNTdGFja2luZ0NvbnRleHQoKTsKLX0KLQotYm9vbCBDU1NQYWludGVyOjpwYXJ0aWNpcGF0
ZXNJblpPcmRlclNvcnRpbmcoY29uc3QgQm94JiBib3gpCi17Ci0gICAgcmV0dXJuIGJveC5zdHls
ZSgpLnBhcnRpY2lwYXRlc0luWk9yZGVyU29ydGluZygpOwotfQotCi12b2lkIENTU1BhaW50ZXI6
OmNvbGxlY3RTdGFja2luZ0NvbnRleHREZXNjZW5kYW50cyhjb25zdCBDb250YWluZXJCb3gmIGNv
bnRhaW5lckJveCwgVmVjdG9yPGNvbnN0IEJveE1vZGVsQm94Kj4mIG5lZ2F0aXZlWk9yZGVyTGlz
dCwgVmVjdG9yPGNvbnN0IEJveE1vZGVsQm94Kj4mIHBvc2l0aXZlWk9yZGVyTGlzdCkKK3ZvaWQg
Q1NTUGFpbnRlcjo6cGFpbnRTdGFja2luZ0NvbnRleHQoY29uc3QgU3RhY2tpbmdJdGVtJiBzdGFj
a2luZ0l0ZW0sIFBhaW50aW5nQ29udGV4dCYgcGFpbnRpbmdDb250ZXh0LCBjb25zdCBJbnRSZWN0
JiBkaXJ0eVJlY3QpCiB7Ci0gICAgcmVjdXJzaXZlQ29sbGVjdExheWVycyhjb250YWluZXJCb3gs
IG5lZ2F0aXZlWk9yZGVyTGlzdCwgcG9zaXRpdmVaT3JkZXJMaXN0KTsKLQotICAgIGF1dG8gY29t
cGFyZVpJbmRleCA9IFtdIChjb25zdCBCb3hNb2RlbEJveCogYSwgY29uc3QgQm94TW9kZWxCb3gq
IGIpIHsKLSAgICAgICAgcmV0dXJuIGEtPnN0eWxlKCkuekluZGV4KCkudmFsdWVPcigwKSA8IGIt
PnN0eWxlKCkuekluZGV4KCkudmFsdWVPcigwKTsKLSAgICB9OwotCi0gICAgc3RkOjpzdGFibGVf
c29ydChwb3NpdGl2ZVpPcmRlckxpc3QuYmVnaW4oKSwgcG9zaXRpdmVaT3JkZXJMaXN0LmVuZCgp
LCBjb21wYXJlWkluZGV4KTsKLSAgICBzdGQ6OnN0YWJsZV9zb3J0KG5lZ2F0aXZlWk9yZGVyTGlz
dC5iZWdpbigpLCBuZWdhdGl2ZVpPcmRlckxpc3QuZW5kKCksIGNvbXBhcmVaSW5kZXgpOwotfQot
Ci12b2lkIENTU1BhaW50ZXI6OnJlY3Vyc2l2ZUNvbGxlY3RMYXllcnMoY29uc3QgQ29udGFpbmVy
Qm94JiBjb250YWluZXJCb3gsIFZlY3Rvcjxjb25zdCBCb3hNb2RlbEJveCo+JiBuZWdhdGl2ZVpP
cmRlckxpc3QsIFZlY3Rvcjxjb25zdCBCb3hNb2RlbEJveCo+JiBwb3NpdGl2ZVpPcmRlckxpc3Qp
Ci17Ci0gICAgZm9yIChjb25zdCBhdXRvKiBjaGlsZCA9IGNvbnRhaW5lckJveC5maXJzdENoaWxk
KCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7Ci0gICAgICAgIGlmIChj
aGlsZC0+c3R5bGUoKS5wYXJ0aWNpcGF0ZXNJblpPcmRlclNvcnRpbmcoKSAmJiBpczxCb3hNb2Rl
bEJveD4oKmNoaWxkKSkgewotICAgICAgICAgICAgYXV0byYgY2hpbGRCb3ggPSBkb3duY2FzdDxC
b3hNb2RlbEJveD4oKmNoaWxkKTsKLQotICAgICAgICAgICAgYXV0byB6SW5kZXggPSBjaGlsZEJv
eC5zdHlsZSgpLnpJbmRleCgpLnZhbHVlT3IoMCk7Ci0gICAgICAgICAgICBpZiAoekluZGV4IDwg
MCkKLSAgICAgICAgICAgICAgICBuZWdhdGl2ZVpPcmRlckxpc3QuYXBwZW5kKCZjaGlsZEJveCk7
Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcG9zaXRpdmVaT3JkZXJMaXN0LmFw
cGVuZCgmY2hpbGRCb3gpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGlzU3RhY2tpbmdDb250
ZXh0UGFpbnRpbmdCb3VuZGFyeSgqY2hpbGQpKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAg
ICAgICAgaWYgKGlzPENvbnRhaW5lckJveD4oKmNoaWxkKSkKLSAgICAgICAgICAgIHJlY3Vyc2l2
ZUNvbGxlY3RMYXllcnMoZG93bmNhc3Q8Q29udGFpbmVyQm94PigqY2hpbGQpLCBuZWdhdGl2ZVpP
cmRlckxpc3QsIHBvc2l0aXZlWk9yZGVyTGlzdCk7Ci0gICAgfQorICAgIHBhaW50QXRvbWljYWxs
eVBhaW50ZWRCb3goc3RhY2tpbmdJdGVtLCBwYWludGluZ0NvbnRleHQsIGRpcnR5UmVjdCwgSW5j
bHVkZVN0YWNraW5nQ29udGV4dERlc2NlbmRhbnRzOjpZZXMpOwogfQogCiB2b2lkIENTU1BhaW50
ZXI6OnBhaW50VHJlZShjb25zdCBUcmVlJiBkaXNwbGF5VHJlZSwgUGFpbnRpbmdDb250ZXh0JiBw
YWludGluZ0NvbnRleHQsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkKIHsKLSAgICBwYWludFN0
YWNraW5nQ29udGV4dChkaXNwbGF5VHJlZS5yb290Qm94KCksIHBhaW50aW5nQ29udGV4dCwgZGly
dHlSZWN0KTsKKyAgICBwYWludFN0YWNraW5nQ29udGV4dChkaXNwbGF5VHJlZS5yb290U3RhY2tp
bmdJdGVtKCksIHBhaW50aW5nQ29udGV4dCwgZGlydHlSZWN0KTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgRGlzcGxheQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxh
eUNTU1BhaW50ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlDU1NQYWlu
dGVyLmgKaW5kZXggMWE0ODEwYmIyYTM3OTc0M2ExYmQ4ZWU5ZTdhOGY2Zjg4ZTQ2MDQ4Ny4uOGQw
ODVjMTlkOGEzZTE5MzU0YjQ1ZDI2ZWZiYmM4ZjM5M2E5YTJiYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheUNTU1BhaW50ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5Q1NTUGFpbnRlci5oCkBAIC00Miw2ICs0Miw3IEBAIGNs
YXNzIEZpbGxMYXllckltYWdlR2VvbWV0cnk7CiBjbGFzcyBCb3g7CiBjbGFzcyBCb3hNb2RlbEJv
eDsKIGNsYXNzIENvbnRhaW5lckJveDsKK2NsYXNzIFN0YWNraW5nSXRlbTsKIGNsYXNzIFRyZWU7
CiAKIHN0cnVjdCBQYWludGluZ0NvbnRleHQ7CkBAIC02MCwxNSArNjEsOSBAQCBwcml2YXRlOgog
ICAgIHN0YXRpYyB2b2lkIHJlY3Vyc2l2ZVBhaW50RGVzY2VuZGFudHNGb3JQaGFzZShjb25zdCBD
b250YWluZXJCb3gmLCBQYWludGluZ0NvbnRleHQmLCBQYWludFBoYXNlKTsKIAogICAgIGVudW0g
Y2xhc3MgSW5jbHVkZVN0YWNraW5nQ29udGV4dERlc2NlbmRhbnRzIHsgWWVzLCBObyB9OwotICAg
IHN0YXRpYyB2b2lkIHBhaW50QXRvbWljYWxseVBhaW50ZWRCb3goY29uc3QgQm94JiwgUGFpbnRp
bmdDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBJbmNsdWRlU3RhY2tpbmdDb250
ZXh0RGVzY2VuZGFudHMgPSBJbmNsdWRlU3RhY2tpbmdDb250ZXh0RGVzY2VuZGFudHM6Ok5vKTsK
KyAgICBzdGF0aWMgdm9pZCBwYWludEF0b21pY2FsbHlQYWludGVkQm94KGNvbnN0IFN0YWNraW5n
SXRlbSYsIFBhaW50aW5nQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCwgSW5jbHVk
ZVN0YWNraW5nQ29udGV4dERlc2NlbmRhbnRzID0gSW5jbHVkZVN0YWNraW5nQ29udGV4dERlc2Nl
bmRhbnRzOjpObyk7CiAKLSAgICBzdGF0aWMgdm9pZCBwYWludFN0YWNraW5nQ29udGV4dChjb25z
dCBCb3hNb2RlbEJveCYsIFBhaW50aW5nQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVj
dCk7Ci0KLSAgICBzdGF0aWMgYm9vbCBpc1N0YWNraW5nQ29udGV4dFBhaW50aW5nQm91bmRhcnko
Y29uc3QgQm94Jik7Ci0gICAgc3RhdGljIGJvb2wgcGFydGljaXBhdGVzSW5aT3JkZXJTb3J0aW5n
KGNvbnN0IEJveCYpOwotCi0gICAgc3RhdGljIHZvaWQgY29sbGVjdFN0YWNraW5nQ29udGV4dERl
c2NlbmRhbnRzKGNvbnN0IENvbnRhaW5lckJveCYsIFZlY3Rvcjxjb25zdCBCb3hNb2RlbEJveCo+
JiBuZWdhdGl2ZVpPcmRlckxpc3QsIFZlY3Rvcjxjb25zdCBCb3hNb2RlbEJveCo+JiBwb3NpdGl2
ZVpPcmRlckxpc3QpOwotICAgIHN0YXRpYyB2b2lkIHJlY3Vyc2l2ZUNvbGxlY3RMYXllcnMoY29u
c3QgQ29udGFpbmVyQm94JiwgVmVjdG9yPGNvbnN0IEJveE1vZGVsQm94Kj4mIG5lZ2F0aXZlWk9y
ZGVyTGlzdCwgVmVjdG9yPGNvbnN0IEJveE1vZGVsQm94Kj4mIHBvc2l0aXZlWk9yZGVyTGlzdCk7
CisgICAgc3RhdGljIHZvaWQgcGFpbnRTdGFja2luZ0NvbnRleHQoY29uc3QgU3RhY2tpbmdJdGVt
JiwgUGFpbnRpbmdDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KTsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIERpc3BsYXkK
</data>
<flag name="commit-queue"
          id="432059"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415003</attachid>
            <date>2020-11-29 20:08:58 -0800</date>
            <delta_ts>2020-11-29 20:22:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219315-20201129200856.patch</filename>
            <type>text/plain</type>
            <size>34637</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMjMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGM0ZjI5ZTVmOTY3Yjlk
NGU4ODU5ZGYwODJlMWEwMjcwNjYxOGFhMi4uMDczMDM5ZWJkNTcwNzJkMWZmNDgzMjVlZmE3MTcy
NjA3ODQ0OTgzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY5IEBACisyMDIwLTExLTI2ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIFtMRkMgRGlzcGxh
eV0gU3RvcmUgdGhlIGRpc3BsYXkgdHJlZSBhcyBhIHRyZWUgb2Ygc3RhY2tpbmcgaXRlbXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTMxNQorCisg
ICAgICAgIFJldmlld2VkIGJ5IFphbGFuIEJ1anRhcy4KKworICAgICAgICBDdXJyZW50bHkgdGhl
IGRpc3BsYXkgdHJlZSBpcyBhIGZ1bGwgdHJlZSwgY3Jvc3Npbmcgc3RhY2tpbmcgY29udGV4dCBi
b3VuZGFyaWVzLCBhbmQgdGhlCisgICAgICAgIHotb3JkZXIgbGlzdHMgYXJlIGJ1aWx0IGF0IHBh
aW50IHRpbWUuCisKKyAgICAgICAgQ2hhbmdlIHRvIGEgdHJlZSBvZiBTdGFja2luZ0l0ZW1zLCB3
aGVyZSBhIFN0YWNraW5nSXRlbSBleGlzdHMgZm9yIGVhY2ggYm94IHRoYXQKKyAgICAgICAgcGFy
dGljaXBhdGVzIGluIHRoZSB6LW9yZGVyIHNvcnRpbmcgYWxnb3JpdGhtIChpLmUuIGJveGVzIHRo
YXQgYXJlIHBvc2l0aW9uZWQsIG9yIGhhdmUKKyAgICAgICAgc3R5bGVzIHRoYXQgY3JlYXRlIHN0
YWNraW5nIGNvbnRleHQpLiBFYWNoIFN0YWNraW5nSXRlbSBvd25zIHRoZSBzdWJ0cmVlIG9mIERp
c3BsYXk6OkJveGVzCisgICAgICAgIHRoYXQgaXQgcGFpbnRzLCBhbmQgdGhvc2Ugc3VidHJlZXMg
YXJlIG5vdCBvdGhlcndpc2UgY29ubmVjdGVkLgorCisgICAgICAgIFRoZSBEaXNwbGF5OjpUcmVl
IG93bnMgdGhlIHJvb3QgU3RhY2tpbmdJdGVtLCBhbmQgZWFjaCBTdGFja2luZ0l0ZW0gb3ducyBp
dHMgY2hpbGQKKyAgICAgICAgU3RhY2tpbmdJdGVtcy4gVGhlIFN0YWNraW5nSXRlbSB0cmVlIGlz
IGJ1aWx0IGF0IGRpc3BsYXkgdHJlZSBidWlsZGluZyB0aW1lIGJ5IHN0b3Jpbmcgc3RhdGUKKyAg
ICAgICAgaW4gdGhlIEJ1aWxkaW5nU3RhdGUgc3RhY2suIFN0YWNraW5nSXRlbXMgYXJlIGFkZGVk
IHRvIHRoZSB6LW9yZGVyIGxpc3RzIG9mIHRoZWlyIHBhcmVudAorICAgICAgICBpdGVtIGF0IGNy
ZWF0aW9uIHRpbWU7IHdoZW4gZG9uZSBwcm9jZXNzaW5nIGJveGVzIGZvciBhIFN0YWNraW5nSXRl
bSwgd2UgdGhlbiBzb3J0IGl0cworICAgICAgICB6LW9yZGVyIGxpc3RzLgorCisgICAgICAgIEFk
ZCBCb3g6OnBhcnRpY2lwYXRlc0luWk9yZGVyU29ydGluZygpIGFuZCBhIExpbmVCcmVha0JveCBm
bGFnLCBhbmQgY2FsbCB0aGF0IGZ1bmN0aW9uCisgICAgICAgIGluc3RlYWQgb2YgdGhlIHZlcnNp
b24gb24gRGlzcGxheTo6U3R5bGUgdG8gd29yayBhcm91bmQgd2Via2l0Lm9yZy9iLzIxOTMzNSBm
b3Igbm93LgorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRpc3BsYXkvRGlzcGxheUxheWVyQ29u
dHJvbGxlci5jcHA6CisgICAgICAgICogZGlzcGxheS9EaXNwbGF5VHJlZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5OjpUcmVlOjpUcmVlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXk6OlRyZWU6OnJvb3RCb3ggY29uc3QpOgorICAgICAgICAqIGRpc3BsYXkvRGlzcGxheVRyZWUu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OlRyZWU6OnJvb3RTdGFja2luZ0l0ZW0gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6VHJlZTo6cm9vdEJveCBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgICogZGlzcGxheS9EaXNwbGF5VHJlZUJ1aWxkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheTo6VHJlZUJ1aWxkZXI6OmJ1aWxkKToKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXk6OlRyZWVCdWlsZGVyOjpwdXNoU3RhdGVGb3JCb3hEZXNjZW5kYW50cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpUcmVlQnVpbGRlcjo6cG9wU3RhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheTo6VHJlZUJ1aWxkZXI6Omluc2VydEludG9UcmVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXk6OlRyZWVCdWlsZGVyOjpidWlsZElubGluZURpc3BsYXlUcmVl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OlRyZWVCdWlsZGVyOjpyZWN1cnNpdmVCdWls
ZERpc3BsYXlUcmVlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6Om91dHB1dERpc3BsYXlC
b3gpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6b3V0cHV0RGlzcGxheVRyZWUpOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheTo6ZGlzcGxheVRyZWVBc1RleHQpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheTo6b3V0cHV0U3RhY2tpbmdUcmVlKToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXk6OnNob3dEaXNwbGF5VHJlZSk6CisgICAgICAgICogZGlzcGxheS9EaXNwbGF5VHJlZUJ1
aWxkZXIuaDoKKyAgICAgICAgKiBkaXNwbGF5L2Nzcy9EaXNwbGF5Qm94LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXk6OkJveDo6cGFydGljaXBhdGVzSW5aT3JkZXJTb3J0aW5nIGNvbnN0
KToKKyAgICAgICAgKiBkaXNwbGF5L2Nzcy9EaXNwbGF5Qm94Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5OjpCb3g6OmlzTGluZUJyZWFrQm94IGNvbnN0KToKKyAgICAgICAgKiBkaXNwbGF5
L2Nzcy9EaXNwbGF5Qm94RmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpC
b3hGYWN0b3J5OjpkaXNwbGF5Qm94Rm9yUm9vdEJveCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5OjpCb3hGYWN0b3J5OjpkaXNwbGF5Qm94Rm9yTGF5b3V0Qm94IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkJveEZhY3Rvcnk6OnNldHVwQm94TW9kZWxCb3ggY29u
c3QpOgorICAgICAgICAqIGRpc3BsYXkvY3NzL0Rpc3BsYXlCb3hGYWN0b3J5Lmg6CisgICAgICAg
ICogZGlzcGxheS9jc3MvRGlzcGxheUNTU1BhaW50ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheTo6Q1NTUGFpbnRlcjo6cmVjdXJzaXZlUGFpbnREZXNjZW5kYW50c0ZvclBoYXNlKToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkNTU1BhaW50ZXI6OnBhaW50QXRvbWljYWxseVBh
aW50ZWRCb3gpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Q1NTUGFpbnRlcjo6cGFpbnRT
dGFja2luZ0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Q1NTUGFpbnRlcjo6
cGFpbnRUcmVlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkNTU1BhaW50ZXI6OmlzU3Rh
Y2tpbmdDb250ZXh0UGFpbnRpbmdCb3VuZGFyeSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5OjpDU1NQYWludGVyOjpwYXJ0aWNpcGF0ZXNJblpPcmRlclNvcnRpbmcpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Q1NTUGFpbnRlcjo6Y29sbGVjdFN0YWNr
aW5nQ29udGV4dERlc2NlbmRhbnRzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXk6OkNTU1BhaW50ZXI6OnJlY3Vyc2l2ZUNvbGxlY3RMYXllcnMpOiBEZWxldGVkLgorICAgICAg
ICAqIGRpc3BsYXkvY3NzL0Rpc3BsYXlDU1NQYWludGVyLmg6CisKIDIwMjAtMTEtMjkgIFphbGFu
IEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtCRkNdIERvIG5vdCBh
c3N1bWUgZmxvYXQgYXZvaWRlcnMgaGF2ZSBwcmUtY29tcHV0ZWQgdmVydGljYWwgcG9zaXRpb25z
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXMudHh0CmluZGV4IDQyMDI2MjBlYjFmMGUxNDE3Y2NjZTk5ZTU4MjAwMWE4OWE3M2E3
NmUuLjZlNDcyM2E1MjgzNmU5NDI1YWIxMmY2MzFkYTBkMmUzOGQ3YzUyMDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMu
dHh0CkBAIC04NDYsNiArODQ2LDcgQEAgZGlzcGxheS9jc3MvRGlzcGxheUNTU1BhaW50ZXIuY3Bw
CiBkaXNwbGF5L2Nzcy9EaXNwbGF5RmlsbExheWVySW1hZ2VHZW9tZXRyeS5jcHAKIGRpc3BsYXkv
Y3NzL0Rpc3BsYXlJbWFnZUJveC5jcHAKIGRpc3BsYXkvY3NzL0Rpc3BsYXlSZXBsYWNlZEJveC5j
cHAKK2Rpc3BsYXkvY3NzL0Rpc3BsYXlTdGFja2luZ0l0ZW0uY3BwCiBkaXNwbGF5L2Nzcy9EaXNw
bGF5U3R5bGUuY3BwCiBkaXNwbGF5L2Nzcy9EaXNwbGF5VGV4dEJveC5jcHAKIGRpc3BsYXkvRGlz
cGxheUxheWVyQ29udHJvbGxlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzODQ1MzljNGQ0ODEzZTVlNjg4NzI0MTgxMWJi
NTQ5NzAwNDFiODE1Li5mNWE4Mzk5M2VhNDdkODBlMjJlZjAzNGNmN2ZiZGQ4ZWNmNTJjNzc0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC02MDY3LDYgKzYwNjcsOCBAQAogCQkwRjc5MEY0MDI1MTdDRTZEMDA5QkEwMzQgLyogRGlz
cGxheUxheWVyQ29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBEaXNwbGF5TGF5ZXJDb250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEY3REYxNDcxRTJCRjFBNjAwOTU5NTFCIC8qIFdlYkNvcmVKU0NsaWVudERhdGEuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQ29yZUpTQ2xpZW50RGF0
YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODUwRkUyMUVEN0MxODMwMEZC
NzdBNyAvKiBQZXJmb3JtYW5jZUxvZ2dpbmdDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUGVyZm9ybWFuY2VMb2dnaW5nQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTBGODY4MkZBMjU3MDdGNDcwMEMwOEJCNSAvKiBEaXNwbGF5U3RhY2tpbmdJ
dGVtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc3BsYXlTdGFja2luZ0l0ZW0uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMEY4NjgyRkMyNTcwN0Y0NzAwQzA4QkI1IC8qIERpc3BsYXlTdGFj
a2luZ0l0ZW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGlzcGxheVN0YWNraW5nSXRlbS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODcxNjZEMUM4NjlEODMwMDRGRjBERSAv
KiBMZW5ndGhQb2ludC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBM
ZW5ndGhQb2ludC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODcxNjZFMUM4
NjlEODMwMDRGRjBERSAvKiBMZW5ndGhQb2ludC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBMZW5ndGhQb2ludC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjhC
NDU2RjFEQzNGQjEwMDA0NDNDM0YgLyogSW50ZXJzZWN0aW9uT2JzZXJ2ZXJDYWxsYmFjay5pZGwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gSW50ZXJzZWN0aW9uT2JzZXJ2ZXJDYWxsYmFjay5pZGw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzg0Miw2ICsxNzg0NCw4IEBACiAJCQkJ
MEYzMkJBNDEyNTRGMzIxNjAwMUFDMzhFIC8qIERpc3BsYXlQYWludGluZ0NvbnRleHQuaCAqLywK
IAkJCQkwRkZGMUI3QzI1MUJDNjU3MDA5ODc5NUEgLyogRGlzcGxheVJlcGxhY2VkQm94LmNwcCAq
LywKIAkJCQkwRkZGMUI3OTI1MUJDNjU3MDA5ODc5NUEgLyogRGlzcGxheVJlcGxhY2VkQm94Lmgg
Ki8sCisJCQkJMEY4NjgyRkMyNTcwN0Y0NzAwQzA4QkI1IC8qIERpc3BsYXlTdGFja2luZ0l0ZW0u
Y3BwICovLAorCQkJCTBGODY4MkZBMjU3MDdGNDcwMEMwOEJCNSAvKiBEaXNwbGF5U3RhY2tpbmdJ
dGVtLmggKi8sCiAJCQkJMEZGRjFCNzYyNTFCQzY1NzAwOTg3OTVBIC8qIERpc3BsYXlTdHlsZS5j
cHAgKi8sCiAJCQkJMEZGRjFCNzMyNTFCQzY1NzAwOTg3OTVBIC8qIERpc3BsYXlTdHlsZS5oICov
LAogCQkJCTBGQjA2ODk0MjUyNDNCOTAwMDFFOEU3NSAvKiBEaXNwbGF5VGV4dEJveC5jcHAgKi8s
CkBAIC0zMTIyNCw2ICszMTIyOCw3IEBACiAJCQkJMDc5RDA4NkIxNjJGMjFGOTAwREI4NjU4IC8q
IENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmggaW4gSGVhZGVycyAqLywKIAkJCQkwN0I3
MTE2RDFEODk5RTYzMDA5RjBGRkIgLyogQ2FwdHVyZURldmljZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMDdCNzExNkYxRDg5OUU2MzAwOUYwRkZCIC8qIENhcHR1cmVEZXZpY2VNYW5hZ2VyLmggaW4g
SGVhZGVycyAqLywKKwkJCQlFNEYwQkUzMTI1NzEyRjZFMDA5RTc0MzEgLyogQ2FyZXRSZWN0Q29t
cHV0YXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUNEQzczNDE1MTk3Nzg5NkQwMDQ2QkZDNSAv
KiBDQVJpbmdCdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0QUJBQkY1MjM2OEM2RUYwMEZB
NDM0NSAvKiBDYXNjYWRlTGV2ZWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3MzAzQkJCMjAwNkM2
RUUwMDM1NTk2NSAvKiBDQk9SQmluYXJ5LmggaW4gSGVhZGVycyAqLywKQEAgLTM1MTIxLDcgKzM1
MTI2LDYgQEAKIAkJCQlBMEVFMERGODE0NEY4MjU1MDBGODBCMEQgLyogV2ViR0xEZWJ1Z1NoYWRl
cnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTZFM0ZBRThGMTQ3MzNGREIwMEU0MjMwNyAvKiBXZWJH
TERlcHRoVGV4dHVyZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUIzMDY5NUUxOEIzRDM0NTAwOTlE
NUU4IC8qIFdlYkdMRHJhd0J1ZmZlcnMuaCBpbiBIZWFkZXJzICovLAotCQkJCUU0RjBCRTMxMjU3
MTJGNkUwMDlFNzQzMSAvKiBDYXJldFJlY3RDb21wdXRhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNkVCRjBFNTUxMkE4OTI5ODAwREIxNzA5IC8qIFdlYkdMRXh0ZW5zaW9uLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk0OUM3QjlDRjEwNDJEMzJGMDAwOUQ0NDcgLyogV2ViR0xGcmFtZWJ1ZmZlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNDlGRkJGM0YxMUM5M0VFMzAwNkE3MTE4IC8qIFdlYkdMTGF5
ZXIuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZGlzcGxheS9E
aXNwbGF5TGF5ZXJDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvRGlzcGxh
eUxheWVyQ29udHJvbGxlci5jcHAKaW5kZXggOTFlOGUwZDMxY2UzYzA0N2RhMzBjZDIyZjBjODFm
N2ExNmIxZDBjZi4uNzk0M2QxMjQwMjMyNDI0ZmI4NDg5ZWY5ODNhYzEwZDM3YTFmZjY3MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZGlzcGxheS9EaXNwbGF5TGF5ZXJDb250cm9sbGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L0Rpc3BsYXlMYXllckNvbnRyb2xsZXIuY3Bw
CkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAiQ2hyb21l
Q2xpZW50LmgiCiAjaW5jbHVkZSAiRGlzcGxheUNTU1BhaW50ZXIuaCIKKyNpbmNsdWRlICJEaXNw
bGF5Q29udGFpbmVyQm94LmgiCiAjaW5jbHVkZSAiRGlzcGxheVBhaW50aW5nQ29udGV4dC5oIgog
I2luY2x1ZGUgIkRpc3BsYXlUcmVlLmgiCiAjaW5jbHVkZSAiRGlzcGxheVZpZXcuaCIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvRGlzcGxheVRyZWUuY3BwIGIvU291cmNlL1dl
YkNvcmUvZGlzcGxheS9EaXNwbGF5VHJlZS5jcHAKaW5kZXggNmVhMGZhNjc2ODg1MmVmZDliZTY4
OGVlY2UwOTVjM2YyZTZiMGI1NC4uYmMzNDkxOTBlNzk5Y2QyYWRhN2U1MmJhMzNmZTRjYmRhYjQ3
MDA3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZGlzcGxheS9EaXNwbGF5VHJlZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZGlzcGxheS9EaXNwbGF5VHJlZS5jcHAKQEAgLTI4LDE1ICsy
OCwyNCBAQAogCiAjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCiAKKyNpbmNs
dWRlICJEaXNwbGF5Q29udGFpbmVyQm94LmgiCisjaW5jbHVkZSAiRGlzcGxheVN0YWNraW5nSXRl
bS5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIG5hbWVzcGFjZSBEaXNwbGF5IHsKIAotVHJlZTo6VHJlZShzdGQ6OnVuaXF1ZV9wdHI8
Q29udGFpbmVyQm94PiYmIHJvb3RCb3gpCi0gICAgOiBtX3Jvb3RCb3goV1RGTW92ZShyb290Qm94
KSkKK1RyZWU6OlRyZWUoc3RkOjp1bmlxdWVfcHRyPFN0YWNraW5nSXRlbT4mJiByb290U3RhY2tp
bmdJdGVtKQorICAgIDogbV9yb290U3RhY2tpbmdJdGVtKFdURk1vdmUocm9vdFN0YWNraW5nSXRl
bSkpCiB7Ci0gICAgQVNTRVJUKG1fcm9vdEJveCk7CisgICAgQVNTRVJUKG1fcm9vdFN0YWNraW5n
SXRlbSk7Cit9CisKK1RyZWU6On5UcmVlKCkgPSBkZWZhdWx0OworCitjb25zdCBDb250YWluZXJC
b3gmIFRyZWU6OnJvb3RCb3goKSBjb25zdAoreworICAgIHJldHVybiBkb3duY2FzdDxDb250YWlu
ZXJCb3g+KG1fcm9vdFN0YWNraW5nSXRlbS0+Ym94KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBE
aXNwbGF5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L0Rpc3BsYXlUcmVlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L0Rpc3BsYXlUcmVlLmgKaW5kZXggZmU4ZjM1ZmMzY2Ez
Y2IyNjEzYzI1YjJhZGRlYzI2NWQzNDUzMTI4Ny4uMGYyZWZiOTEwNjVlNmY3NTM1NjY2NWE4YjY1
YWU5YjRkNWE1YjVjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZGlzcGxheS9EaXNwbGF5
VHJlZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvRGlzcGxheVRyZWUuaApAQCAtMjcs
MjIgKzI3LDI1IEBACiAKICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKIAot
I2luY2x1ZGUgIkRpc3BsYXlDb250YWluZXJCb3guaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9j
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBEaXNwbGF5IHsKIAorY2xhc3Mg
Q29udGFpbmVyQm94OworY2xhc3MgU3RhY2tpbmdJdGVtOworCiBjbGFzcyBUcmVlIHsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRChUcmVlKTsKIHB1YmxpYzoKLSAgICBUcmVlKHN0ZDo6dW5p
cXVlX3B0cjxDb250YWluZXJCb3g+JiYpOworICAgIGV4cGxpY2l0IFRyZWUoc3RkOjp1bmlxdWVf
cHRyPFN0YWNraW5nSXRlbT4mJik7CisgICAgflRyZWUoKTsKIAotICAgIGNvbnN0IENvbnRhaW5l
ckJveCYgcm9vdEJveCgpIGNvbnN0IHsgcmV0dXJuICptX3Jvb3RCb3g7IH0KKyAgICBjb25zdCBT
dGFja2luZ0l0ZW0mIHJvb3RTdGFja2luZ0l0ZW0oKSBjb25zdCB7IHJldHVybiAqbV9yb290U3Rh
Y2tpbmdJdGVtOyB9CisgICAgY29uc3QgQ29udGFpbmVyQm94JiByb290Qm94KCkgY29uc3Q7CiAK
IHByaXZhdGU6Ci0gICAgLy8gSWRlYWxseSB0aGlzIHJvb3QgYm94IHdvdWxkIGJlIGFnbm9zdGlj
IHRvIGRpc3BsYXkgdHlwZSAoQ1NTIHZzIFNWRykuCi0gICAgc3RkOjp1bmlxdWVfcHRyPENvbnRh
aW5lckJveD4gbV9yb290Qm94OworICAgIHN0ZDo6dW5pcXVlX3B0cjxTdGFja2luZ0l0ZW0+IG1f
cm9vdFN0YWNraW5nSXRlbTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIERpc3BsYXkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvRGlzcGxheVRyZWVCdWlsZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Rpc3BsYXkvRGlzcGxheVRyZWVCdWlsZGVyLmNwcAppbmRleCBlOWYwYTI1MDRm
MTRhMTY0YmNkMWUzNTRmNDYwMDgyNzQ0N2MxZjYwLi4wOTFjYjU4MDQ3ZTFkZDNjY2YzNjQ2ZmZi
ZjY3MDM0OTI4MjU1N2E4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L0Rpc3Bs
YXlUcmVlQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZGlzcGxheS9EaXNwbGF5VHJl
ZUJ1aWxkZXIuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJEaXNwbGF5Qm94RmFj
dG9yeS5oIgogI2luY2x1ZGUgIkRpc3BsYXlDb250YWluZXJCb3guaCIKKyNpbmNsdWRlICJEaXNw
bGF5U3RhY2tpbmdJdGVtLmgiCiAjaW5jbHVkZSAiRGlzcGxheVN0eWxlLmgiCiAjaW5jbHVkZSAi
RGlzcGxheVRyZWUuaCIKICNpbmNsdWRlICJJbmxpbmVGb3JtYXR0aW5nU3RhdGUuaCIKQEAgLTk4
LDYgKzk5LDcgQEAgcHJpdmF0ZToKIAogc3RydWN0IEJ1aWxkaW5nU3RhdGUgewogICAgIFBvc2l0
aW9uaW5nQ29udGV4dCBwb3NpdGlvbmluZ0NvbnRleHQ7CisgICAgU3RhY2tpbmdJdGVtJiBjdXJy
ZW50U3RhY2tpbmdDb250ZXh0SXRlbTsKIH07CiAKIFRyZWVCdWlsZGVyOjpUcmVlQnVpbGRlcihm
bG9hdCBwaXhlbFNuYXBwaW5nRmFjdG9yKQpAQCAtMTIxLDMyICsxMjMsMzYgQEAgc3RkOjp1bmlx
dWVfcHRyPFRyZWU+IFRyZWVCdWlsZGVyOjpidWlsZChjb25zdCBMYXlvdXQ6OkxheW91dFN0YXRl
JiBsYXlvdXRTdGF0ZSkKIAogICAgIGF1dG8gZ2VvbWV0cnkgPSBsYXlvdXRTdGF0ZS5nZW9tZXRy
eUZvckJveChyb290TGF5b3V0Qm94KTsKICAgICBhdXRvIHJvb3REaXNwbGF5Qm94ID0gbV9ib3hG
YWN0b3J5LmRpc3BsYXlCb3hGb3JSb290Qm94KHJvb3RMYXlvdXRCb3gsIGdlb21ldHJ5LCBtX3Jv
b3RCYWNrZ3JvdW5kUHJvcGdhdGlvbik7Ci0gICAgYXV0byByb290RGlzcGxheUNvbnRhaW5lckJv
eCA9IHN0ZDo6dW5pcXVlX3B0cjxDb250YWluZXJCb3g+IHsgZG93bmNhc3Q8Q29udGFpbmVyQm94
Pihyb290RGlzcGxheUJveC5yZWxlYXNlKCkpIH07CiAKLSAgICBpZiAoIXJvb3RMYXlvdXRCb3gu
Zmlyc3RDaGlsZCgpKQotICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUcmVlPihXVEZNb3ZlKHJv
b3REaXNwbGF5Q29udGFpbmVyQm94KSk7CisgICAgYXV0byBpbnNlcnRpb25Qb3NpdGlvbiA9IElu
c2VydGlvblBvc2l0aW9uIHsgKnJvb3REaXNwbGF5Qm94IH07CisgICAgYXV0byByb290U3RhY2tp
bmdJdGVtID0gbWFrZVVuaXF1ZTxTdGFja2luZ0l0ZW0+KFdURk1vdmUocm9vdERpc3BsYXlCb3gp
KTsKIAotICAgIGF1dG8gaW5zZXJ0aW9uUG9zaXRpb24gPSBJbnNlcnRpb25Qb3NpdGlvbiB7ICpy
b290RGlzcGxheUNvbnRhaW5lckJveCB9OwotCi0gICAgbV9zdGF0ZVN0YWNrLT5hcHBlbmQoeyAq
cm9vdERpc3BsYXlDb250YWluZXJCb3ggfSk7Ci0KLSAgICByZWN1cnNpdmVCdWlsZERpc3BsYXlU
cmVlKGxheW91dFN0YXRlLCAqcm9vdExheW91dEJveC5maXJzdENoaWxkKCksIGluc2VydGlvblBv
c2l0aW9uKTsKKyAgICBpZiAocm9vdExheW91dEJveC5maXJzdENoaWxkKCkpIHsKKyAgICAgICAg
YXV0byYgcm9vdENvbnRhaW5lckJveCA9IGRvd25jYXN0PENvbnRhaW5lckJveD4ocm9vdFN0YWNr
aW5nSXRlbS0+Ym94KCkpOworICAgICAgICBtX3N0YXRlU3RhY2stPmFwcGVuZCh7IHJvb3RDb250
YWluZXJCb3gsICpyb290U3RhY2tpbmdJdGVtIH0pOworICAgICAgICByZWN1cnNpdmVCdWlsZERp
c3BsYXlUcmVlKGxheW91dFN0YXRlLCAqcm9vdExheW91dEJveC5maXJzdENoaWxkKCksIGluc2Vy
dGlvblBvc2l0aW9uKTsKKyAgICB9CiAKICNpZiBFTkFCTEUoVFJFRV9ERUJVR0dJTkcpCi0gICAg
TE9HX1dJVEhfU1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LCBzdHJlYW0gPDwgIkRpc3Bs
YXkgdHJlZTpcbiIgPDwgZGlzcGxheVRyZWVBc1RleHQoKnJvb3REaXNwbGF5Q29udGFpbmVyQm94
KSk7CisgICAgTE9HX1dJVEhfU1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LCBzdHJlYW0g
PDwgIkRpc3BsYXkgdHJlZTpcbiIgPDwgZGlzcGxheVRyZWVBc1RleHQoKnJvb3RTdGFja2luZ0l0
ZW0pKTsKICNlbmRpZgotCi0gICAgcmV0dXJuIG1ha2VVbmlxdWU8VHJlZT4oV1RGTW92ZShyb290
RGlzcGxheUNvbnRhaW5lckJveCkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFRyZWU+KFdURk1v
dmUocm9vdFN0YWNraW5nSXRlbSkpOwogfQogCi12b2lkIFRyZWVCdWlsZGVyOjpwdXNoU3RhdGVG
b3JCb3hEZXNjZW5kYW50cyhjb25zdCBMYXlvdXQ6OkNvbnRhaW5lckJveCYgbGF5b3V0Q29udGFp
bmVyQm94LCBjb25zdCBMYXlvdXQ6OkJveEdlb21ldHJ5JiBsYXlvdXRHZW9tZXRyeSwgY29uc3Qg
Q29udGFpbmVyQm94JiBkaXNwbGF5Qm94KQordm9pZCBUcmVlQnVpbGRlcjo6cHVzaFN0YXRlRm9y
Qm94RGVzY2VuZGFudHMoY29uc3QgTGF5b3V0OjpDb250YWluZXJCb3gmIGxheW91dENvbnRhaW5l
ckJveCwgY29uc3QgTGF5b3V0OjpCb3hHZW9tZXRyeSYgbGF5b3V0R2VvbWV0cnksIGNvbnN0IENv
bnRhaW5lckJveCYgZGlzcGxheUJveCwgU3RhY2tpbmdJdGVtKiBib3hTdGFja2luZ0l0ZW0pCiB7
CiAgICAgYXV0byYgcG9zaXRpb25pbmdDb250ZXh0ID0gbV9zdGF0ZVN0YWNrLT5sYXN0KCkucG9z
aXRpb25pbmdDb250ZXh0OwotICAgIG1fc3RhdGVTdGFjay0+YXBwZW5kKHsgcG9zaXRpb25pbmdD
b250ZXh0LmNvbnRleHRGb3JEZXNjZW5kYW50cyhsYXlvdXRDb250YWluZXJCb3gsIGxheW91dEdl
b21ldHJ5LCBkaXNwbGF5Qm94KSB9KTsKKyAgICBhdXRvJiBjdXJyZW50U3RhY2tpbmdDb250ZXh0
SXRlbSA9IChib3hTdGFja2luZ0l0ZW0gJiYgYm94U3RhY2tpbmdJdGVtLT5pc1N0YWNraW5nQ29u
dGV4dCgpKSA/ICpib3hTdGFja2luZ0l0ZW0gOiBtX3N0YXRlU3RhY2stPmxhc3QoKS5jdXJyZW50
U3RhY2tpbmdDb250ZXh0SXRlbTsKKworICAgIG1fc3RhdGVTdGFjay0+YXBwZW5kKHsgcG9zaXRp
b25pbmdDb250ZXh0LmNvbnRleHRGb3JEZXNjZW5kYW50cyhsYXlvdXRDb250YWluZXJCb3gsIGxh
eW91dEdlb21ldHJ5LCBkaXNwbGF5Qm94KSwgY3VycmVudFN0YWNraW5nQ29udGV4dEl0ZW0gfSk7
CiB9CiAKLXZvaWQgVHJlZUJ1aWxkZXI6OnBvcFN0YXRlKCkKK3ZvaWQgVHJlZUJ1aWxkZXI6OnBv
cFN0YXRlKGNvbnN0IENvbnRhaW5lckJveCYgY3VycmVudEJveCkKIHsKKyAgICBhdXRvJiBjdXJy
ZW50U3RhdGUgPSBtX3N0YXRlU3RhY2stPmxhc3QoKTsKKyAgICBpZiAoJmN1cnJlbnRTdGF0ZS5j
dXJyZW50U3RhY2tpbmdDb250ZXh0SXRlbS5ib3goKSA9PSAmY3VycmVudEJveCkKKyAgICAgICAg
Y3VycmVudFN0YXRlLmN1cnJlbnRTdGFja2luZ0NvbnRleHRJdGVtLnNvcnRMaXN0cygpOworCiAg
ICAgbV9zdGF0ZVN0YWNrLT5yZW1vdmVMYXN0KCk7CiB9CiAKQEAgLTE3Myw2ICsxNzksMjEgQEAg
dm9pZCBUcmVlQnVpbGRlcjo6aW5zZXJ0KHN0ZDo6dW5pcXVlX3B0cjxCb3g+JiYgYm94LCBJbnNl
cnRpb25Qb3NpdGlvbiYgaW5zZXJ0aW8KICAgICB9CiB9CiAKK1N0YWNraW5nSXRlbSogVHJlZUJ1
aWxkZXI6Omluc2VydEludG9UcmVlKHN0ZDo6dW5pcXVlX3B0cjxCb3g+JiYgYm94LCBJbnNlcnRp
b25Qb3NpdGlvbiYgaW5zZXJ0aW9uUG9zaXRpb24pCit7CisgICAgaWYgKGJveC0+cGFydGljaXBh
dGVzSW5aT3JkZXJTb3J0aW5nKCkgJiYgaXM8Qm94TW9kZWxCb3g+KCpib3gpKSB7CisgICAgICAg
IGF1dG8gYm94TW9kZWxCb3ggPSBzdGQ6OnVuaXF1ZV9wdHI8Qm94TW9kZWxCb3g+IHsgZG93bmNh
c3Q8Qm94TW9kZWxCb3g+KGJveC5yZWxlYXNlKCkpIH07CisgICAgICAgIGF1dG8gc3RhY2tpbmdJ
dGVtID0gbWFrZVVuaXF1ZTxTdGFja2luZ0l0ZW0+KFdURk1vdmUoYm94TW9kZWxCb3gpKTsKKwor
ICAgICAgICBhdXRvKiBzdGFja2luZ0l0ZW1QdHIgPSBzdGFja2luZ0l0ZW0uZ2V0KCk7CisgICAg
ICAgIGN1cnJlbnRTdGF0ZSgpLmN1cnJlbnRTdGFja2luZ0NvbnRleHRJdGVtLmFkZENoaWxkU3Rh
Y2tpbmdJdGVtKFdURk1vdmUoc3RhY2tpbmdJdGVtKSk7CisgICAgICAgIHJldHVybiBzdGFja2lu
Z0l0ZW1QdHI7CisgICAgfQorCisgICAgaW5zZXJ0KFdURk1vdmUoYm94KSwgaW5zZXJ0aW9uUG9z
aXRpb24pOworICAgIHJldHVybiBudWxscHRyOworfQorCiB2b2lkIFRyZWVCdWlsZGVyOjpidWls
ZElubGluZURpc3BsYXlUcmVlKGNvbnN0IExheW91dDo6TGF5b3V0U3RhdGUmIGxheW91dFN0YXRl
LCBjb25zdCBMYXlvdXQ6OkNvbnRhaW5lckJveCYgaW5saW5lRm9ybWF0dGluZ1Jvb3QsIEluc2Vy
dGlvblBvc2l0aW9uJiBpbnNlcnRpb25Qb3NpdGlvbikKIHsKICAgICBhdXRvJiBpbmxpbmVGb3Jt
YXR0aW5nU3RhdGUgPSBsYXlvdXRTdGF0ZS5lc3RhYmxpc2hlZElubGluZUZvcm1hdHRpbmdTdGF0
ZShpbmxpbmVGb3JtYXR0aW5nUm9vdCk7CkBAIC0xOTAsOSArMjExLDEzIEBAIHZvaWQgVHJlZUJ1
aWxkZXI6OmJ1aWxkSW5saW5lRGlzcGxheVRyZWUoY29uc3QgTGF5b3V0OjpMYXlvdXRTdGF0ZSYg
bGF5b3V0U3RhdGUsCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCisgICAgICAg
IC8vIEZJWE1FOiBXb3JrYXJvdW5kIGZvciB3ZWJraXQub3JnYi9iLzIxOTMzNS4KKyAgICAgICAg
aWYgKHJ1bi5sYXlvdXRCb3goKS5pc0xpbmVCcmVha0JveCgpICYmIHJ1bi5sYXlvdXRCb3goKS5p
c091dE9mRmxvd1Bvc2l0aW9uZWQoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCiAgICAgICAg
IGF1dG8gZ2VvbWV0cnkgPSBsYXlvdXRTdGF0ZS5nZW9tZXRyeUZvckJveChydW4ubGF5b3V0Qm94
KCkpOwogICAgICAgICBhdXRvIGRpc3BsYXlCb3ggPSBtX2JveEZhY3RvcnkuZGlzcGxheUJveEZv
ckxheW91dEJveChydW4ubGF5b3V0Qm94KCksIGdlb21ldHJ5LCBwb3NpdGlvbmluZ0NvbnRleHQo
KS5pbkZsb3dDb250YWluaW5nQmxvY2tDb250ZXh0KCkpOwotICAgICAgICBpbnNlcnQoV1RGTW92
ZShkaXNwbGF5Qm94KSwgaW5zZXJ0aW9uUG9zaXRpb24pOworICAgICAgICBpbnNlcnRJbnRvVHJl
ZShXVEZNb3ZlKGRpc3BsYXlCb3gpLCBpbnNlcnRpb25Qb3NpdGlvbik7CiAgICAgfQogfQogCkBA
IC0yMDYsOSArMjMxLDEwIEBAIHZvaWQgVHJlZUJ1aWxkZXI6OnJlY3Vyc2l2ZUJ1aWxkRGlzcGxh
eVRyZWUoY29uc3QgTGF5b3V0OjpMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhCiAgICAgICAgIGRpc3Bs
YXlCb3ggPSBtX2JveEZhY3RvcnkuZGlzcGxheUJveEZvckJvZHlCb3gobGF5b3V0Qm94LCBnZW9t
ZXRyeSwgY29udGFpbmluZ0Jsb2NrQ29udGV4dCwgbV9yb290QmFja2dyb3VuZFByb3BnYXRpb24p
OwogICAgIGVsc2UKICAgICAgICAgZGlzcGxheUJveCA9IG1fYm94RmFjdG9yeS5kaXNwbGF5Qm94
Rm9yTGF5b3V0Qm94KGxheW91dEJveCwgZ2VvbWV0cnksIGNvbnRhaW5pbmdCbG9ja0NvbnRleHQp
OwotICAgIAotICAgIGluc2VydChXVEZNb3ZlKGRpc3BsYXlCb3gpLCBpbnNlcnRpb25Qb3NpdGlv
bik7CiAKKyAgICBCb3gmIGN1cnJlbnRCb3ggPSAqZGlzcGxheUJveDsKKworICAgIGF1dG8qIHN0
YWNraW5nSXRlbSA9IGluc2VydEludG9UcmVlKFdURk1vdmUoZGlzcGxheUJveCksIGluc2VydGlv
blBvc2l0aW9uKTsKICAgICBpZiAoIWlzPExheW91dDo6Q29udGFpbmVyQm94PihsYXlvdXRCb3gp
KQogICAgICAgICByZXR1cm47CiAKQEAgLTIxNiwxMCArMjQyLDEwIEBAIHZvaWQgVHJlZUJ1aWxk
ZXI6OnJlY3Vyc2l2ZUJ1aWxkRGlzcGxheVRyZWUoY29uc3QgTGF5b3V0OjpMYXlvdXRTdGF0ZSYg
bGF5b3V0U3RhCiAgICAgaWYgKCFsYXlvdXRDb250YWluZXJCb3guaGFzQ2hpbGQoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgQ29udGFpbmVyQm94JiBjdXJyZW50Qm94ID0gZG93bmNhc3Q8Q29u
dGFpbmVyQm94PigqaW5zZXJ0aW9uUG9zaXRpb24uY3VycmVudENoaWxkKTsKLSAgICBhdXRvIGlu
c2VydGlvblBvc2l0aW9uRm9yQ2hpbGRyZW4gPSBJbnNlcnRpb25Qb3NpdGlvbiB7IGN1cnJlbnRC
b3ggfTsKKyAgICBDb250YWluZXJCb3gmIGN1cnJlbnRDb250YWluZXJCb3ggPSBkb3duY2FzdDxD
b250YWluZXJCb3g+KGN1cnJlbnRCb3gpOworICAgIHB1c2hTdGF0ZUZvckJveERlc2NlbmRhbnRz
KGxheW91dENvbnRhaW5lckJveCwgZ2VvbWV0cnksIGN1cnJlbnRDb250YWluZXJCb3gsIHN0YWNr
aW5nSXRlbSk7CiAKLSAgICBwdXNoU3RhdGVGb3JCb3hEZXNjZW5kYW50cyhsYXlvdXRDb250YWlu
ZXJCb3gsIGdlb21ldHJ5LCBjdXJyZW50Qm94KTsKKyAgICBhdXRvIGluc2VydGlvblBvc2l0aW9u
Rm9yQ2hpbGRyZW4gPSBJbnNlcnRpb25Qb3NpdGlvbiB7IGN1cnJlbnRDb250YWluZXJCb3ggfTsK
IAogICAgIGVudW0gY2xhc3MgRGVzY2VuZGFudEJveEluY2x1c2lvbiB7IEFsbEJveGVzLCBPdXRP
ZkZsb3dPbmx5IH07CiAgICAgYXV0byBib3hJbmNsdXNpb24gPSBEZXNjZW5kYW50Qm94SW5jbHVz
aW9uOjpBbGxCb3hlczsKQEAgLTI0MiwzNCArMjY4LDM1IEBAIHZvaWQgVHJlZUJ1aWxkZXI6OnJl
Y3Vyc2l2ZUJ1aWxkRGlzcGxheVRyZWUoY29uc3QgTGF5b3V0OjpMYXlvdXRTdGF0ZSYgbGF5b3V0
U3RhCiAgICAgICAgICAgICByZWN1cnNpdmVCdWlsZERpc3BsYXlUcmVlKGxheW91dFN0YXRlLCBj
aGlsZCwgaW5zZXJ0aW9uUG9zaXRpb25Gb3JDaGlsZHJlbik7CiAgICAgfQogCi0gICAgcG9wU3Rh
dGUoKTsKKyAgICBwb3BTdGF0ZShjdXJyZW50Q29udGFpbmVyQm94KTsKIH0KIAogI2lmIEVOQUJM
RShUUkVFX0RFQlVHR0lORykKIAotc3RhdGljIHZvaWQgb3V0cHV0RGlzcGxheUJveChUZXh0U3Ry
ZWFtJiBzdHJlYW0sIGNvbnN0IEJveCYgZGlzcGxheUJveCwgdW5zaWduZWQpCitzdGF0aWMgdm9p
ZCBvdXRwdXREaXNwbGF5Qm94KFRleHRTdHJlYW0mIHN0cmVhbSwgY29uc3QgQm94JiBkaXNwbGF5
Qm94LCBib29sIHdyaXRlSW5kZW50ID0gdHJ1ZSkKIHsKLSAgICBzdHJlYW0ud3JpdGVJbmRlbnQo
KTsKKyAgICBpZiAod3JpdGVJbmRlbnQpCisgICAgICAgIHN0cmVhbS53cml0ZUluZGVudCgpOwog
CiAgICAgc3RyZWFtIDw8IGRpc3BsYXlCb3guZGVidWdEZXNjcmlwdGlvbigpOwogICAgIHN0cmVh
bSA8PCAiXG4iOwogfQogCi1zdGF0aWMgdm9pZCBvdXRwdXREaXNwbGF5VHJlZShUZXh0U3RyZWFt
JiBzdHJlYW0sIGNvbnN0IEJveCYgZGlzcGxheUJveCwgdW5zaWduZWQgZGVwdGgpCitzdGF0aWMg
dm9pZCBvdXRwdXREaXNwbGF5VHJlZShUZXh0U3RyZWFtJiBzdHJlYW0sIGNvbnN0IEJveCYgZGlz
cGxheUJveCwgYm9vbCB3cml0ZUZpcnN0SXRlbUluZGVudCA9IHRydWUpCiB7Ci0gICAgb3V0cHV0
RGlzcGxheUJveChzdHJlYW0sIGRpc3BsYXlCb3gsIGRlcHRoKTsKKyAgICBvdXRwdXREaXNwbGF5
Qm94KHN0cmVhbSwgZGlzcGxheUJveCwgd3JpdGVGaXJzdEl0ZW1JbmRlbnQpOwogCiAgICAgaWYg
KGlzPENvbnRhaW5lckJveD4oZGlzcGxheUJveCkpIHsKICAgICAgICAgVGV4dFN0cmVhbTo6SW5k
ZW50U2NvcGUgaW5kZW50KHN0cmVhbSk7CiAgICAgICAgIGZvciAoYXV0byBjaGlsZCA9IGRvd25j
YXN0PENvbnRhaW5lckJveD4oZGlzcGxheUJveCkuZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQg
PSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkKLSAgICAgICAgICAgIG91dHB1dERpc3BsYXlUcmVlKHN0
cmVhbSwgKmNoaWxkLCBkZXB0aCArIDEpOworICAgICAgICAgICAgb3V0cHV0RGlzcGxheVRyZWUo
c3RyZWFtLCAqY2hpbGQpOwogICAgIH0KIH0KIAogU3RyaW5nIGRpc3BsYXlUcmVlQXNUZXh0KGNv
bnN0IEJveCYgYm94KQogewogICAgIFRleHRTdHJlYW0gc3RyZWFtKFRleHRTdHJlYW06OkxpbmVN
b2RlOjpNdWx0aXBsZUxpbmUsIFRleHRTdHJlYW06OkZvcm1hdHRpbmc6OlNWR1N0eWxlUmVjdCk7
Ci0gICAgb3V0cHV0RGlzcGxheVRyZWUoc3RyZWFtLCBib3gsIDEpOworICAgIG91dHB1dERpc3Bs
YXlUcmVlKHN0cmVhbSwgYm94KTsKICAgICByZXR1cm4gc3RyZWFtLnJlbGVhc2UoKTsKIH0KIApA
QCAtMjc5LDYgKzMwNiwzNyBAQCB2b2lkIHNob3dEaXNwbGF5VHJlZShjb25zdCBCb3gmIGJveCkK
ICAgICBXVEZMb2dBbHdheXMoIiVzIiwgdHJlZUFzVGV4dC51dGY4KCkuZGF0YSgpKTsKIH0KIAor
c3RhdGljIHZvaWQgb3V0cHV0U3RhY2tpbmdUcmVlKFRleHRTdHJlYW0mIHN0cmVhbSwgY29uc3Qg
Y2hhciogcHJlZml4LCBjb25zdCBTdGFja2luZ0l0ZW0mIHN0YWNraW5nSXRlbSkKK3sKKyAgICBz
dHJlYW0ud3JpdGVJbmRlbnQoKTsKKyAgICBzdHJlYW0gPDwgcHJlZml4OworCisgICAgVGV4dFN0
cmVhbTo6SW5kZW50U2NvcGUgaW5kZW50KHN0cmVhbSk7CisgICAgb3V0cHV0RGlzcGxheVRyZWUo
c3RyZWFtLCBzdGFja2luZ0l0ZW0uYm94KCksIGZhbHNlKTsKKworICAgIHsKKyAgICAgICAgVGV4
dFN0cmVhbTo6SW5kZW50U2NvcGUgaW5kZW50KHN0cmVhbSk7CisgICAgICAgIGZvciAoYXV0byYg
Y2hpbGRTdGFja2luZ0l0ZW0gOiBzdGFja2luZ0l0ZW0ubmVnYXRpdmVaT3JkZXJMaXN0KCkpCisg
ICAgICAgICAgICBvdXRwdXRTdGFja2luZ1RyZWUoc3RyZWFtLCAiLSAiLCAqY2hpbGRTdGFja2lu
Z0l0ZW0pOworCisgICAgICAgIGZvciAoYXV0byYgY2hpbGRTdGFja2luZ0l0ZW0gOiBzdGFja2lu
Z0l0ZW0ucG9zaXRpdmVaT3JkZXJMaXN0KCkpCisgICAgICAgICAgICBvdXRwdXRTdGFja2luZ1Ry
ZWUoc3RyZWFtLCBjaGlsZFN0YWNraW5nSXRlbS0+aXNTdGFja2luZ0NvbnRleHQoKSA/ICIrICIg
OiAicCAiLCAqY2hpbGRTdGFja2luZ0l0ZW0pOworICAgIH0KK30KKworU3RyaW5nIGRpc3BsYXlU
cmVlQXNUZXh0KGNvbnN0IFN0YWNraW5nSXRlbSYgc3RhY2tpbmdJdGVtKQoreworICAgIFRleHRT
dHJlYW0gc3RyZWFtKFRleHRTdHJlYW06OkxpbmVNb2RlOjpNdWx0aXBsZUxpbmUsIFRleHRTdHJl
YW06OkZvcm1hdHRpbmc6OlNWR1N0eWxlUmVjdCk7CisgICAgb3V0cHV0U3RhY2tpbmdUcmVlKHN0
cmVhbSwgIiIsIHN0YWNraW5nSXRlbSk7CisgICAgcmV0dXJuIHN0cmVhbS5yZWxlYXNlKCk7Cit9
CisKK3ZvaWQgc2hvd0Rpc3BsYXlUcmVlKGNvbnN0IFN0YWNraW5nSXRlbSYgc3RhY2tpbmdJdGVt
KQoreworICAgIGF1dG8gdHJlZUFzVGV4dCA9IGRpc3BsYXlUcmVlQXNUZXh0KHN0YWNraW5nSXRl
bSk7CisgICAgV1RGTG9nQWx3YXlzKCIlcyIsIHRyZWVBc1RleHQudXRmOCgpLmRhdGEoKSk7Cit9
CisKICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBEaXNwbGF5CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kaXNwbGF5L0Rpc3BsYXlUcmVlQnVpbGRlci5oIGIvU291cmNlL1dlYkNvcmUvZGlz
cGxheS9EaXNwbGF5VHJlZUJ1aWxkZXIuaAppbmRleCAyMWRlMTYyMTVjYjQ3Njk0YmNlNDJlMDAz
MjFhNzNmNmU0ZjJhNWU2Li5kNzg5NmNiOGEyMTQ2MzY0ZWI4N2U2MTg5Yjk0ZjNhOGRhMjJiN2U3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L0Rpc3BsYXlUcmVlQnVpbGRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvRGlzcGxheVRyZWVCdWlsZGVyLmgKQEAgLTUw
LDYgKzUwLDcgQEAgbmFtZXNwYWNlIERpc3BsYXkgewogY2xhc3MgQm94OwogY2xhc3MgQ29udGFp
bmVyQm94OwogY2xhc3MgUG9zaXRpb25pbmdDb250ZXh0OworY2xhc3MgU3RhY2tpbmdJdGVtOwog
Y2xhc3MgVHJlZTsKIHN0cnVjdCBCdWlsZGluZ1N0YXRlOwogCkBAIC02OCwyMyArNjksMjcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHJlY3Vyc2l2ZUJ1aWxkRGlzcGxheVRyZWUoY29uc3QgTGF5b3V0
OjpMYXlvdXRTdGF0ZSYsIGNvbnN0IExheW91dDo6Qm94JiwgSW5zZXJ0aW9uUG9zaXRpb24mKTsK
ICAgICB2b2lkIGJ1aWxkSW5saW5lRGlzcGxheVRyZWUoY29uc3QgTGF5b3V0OjpMYXlvdXRTdGF0
ZSYsIGNvbnN0IExheW91dDo6Q29udGFpbmVyQm94JiwgSW5zZXJ0aW9uUG9zaXRpb24mKTsKIAor
ICAgIFN0YWNraW5nSXRlbSogaW5zZXJ0SW50b1RyZWUoc3RkOjp1bmlxdWVfcHRyPEJveD4mJiwg
SW5zZXJ0aW9uUG9zaXRpb24mKTsKICAgICB2b2lkIGluc2VydChzdGQ6OnVuaXF1ZV9wdHI8Qm94
PiYmLCBJbnNlcnRpb25Qb3NpdGlvbiYpIGNvbnN0OwogCi0gICAgdm9pZCBwdXNoU3RhdGVGb3JC
b3hEZXNjZW5kYW50cyhjb25zdCBMYXlvdXQ6OkNvbnRhaW5lckJveCYsIGNvbnN0IExheW91dDo6
Qm94R2VvbWV0cnkmLCBjb25zdCBDb250YWluZXJCb3gmKTsKLSAgICB2b2lkIHBvcFN0YXRlKCk7
CisgICAgdm9pZCBwdXNoU3RhdGVGb3JCb3hEZXNjZW5kYW50cyhjb25zdCBMYXlvdXQ6OkNvbnRh
aW5lckJveCYsIGNvbnN0IExheW91dDo6Qm94R2VvbWV0cnkmLCBjb25zdCBDb250YWluZXJCb3gm
LCBTdGFja2luZ0l0ZW0qKTsKKyAgICB2b2lkIHBvcFN0YXRlKGNvbnN0IENvbnRhaW5lckJveCYg
Y3VycmVudEJveCk7CiAgICAgCiAgICAgY29uc3QgQnVpbGRpbmdTdGF0ZSYgY3VycmVudFN0YXRl
KCkgY29uc3Q7CiAgICAgY29uc3QgUG9zaXRpb25pbmdDb250ZXh0JiBwb3NpdGlvbmluZ0NvbnRl
eHQoKSBjb25zdDsKIAogICAgIEJveEZhY3RvcnkgbV9ib3hGYWN0b3J5OwogICAgIFJvb3RCYWNr
Z3JvdW5kUHJvcGFnYXRpb24gbV9yb290QmFja2dyb3VuZFByb3BnYXRpb24geyBSb290QmFja2dy
b3VuZFByb3BhZ2F0aW9uOjpOb25lIH07Ci0gICAgCisKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VmVj
dG9yPEJ1aWxkaW5nU3RhdGU+PiBtX3N0YXRlU3RhY2s7CiB9OwogCiAjaWYgRU5BQkxFKFRSRUVf
REVCVUdHSU5HKQogU3RyaW5nIGRpc3BsYXlUcmVlQXNUZXh0KGNvbnN0IEJveCYpOwogdm9pZCBz
aG93RGlzcGxheVRyZWUoY29uc3QgQm94Jik7CisKK1N0cmluZyBkaXNwbGF5VHJlZUFzVGV4dChj
b25zdCBTdGFja2luZ0l0ZW0mKTsKK3ZvaWQgc2hvd0Rpc3BsYXlUcmVlKGNvbnN0IFN0YWNraW5n
SXRlbSYpOwogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIERpc3BsYXkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlCb3guY3BwIGIvU291cmNlL1dlYkNvcmUv
ZGlzcGxheS9jc3MvRGlzcGxheUJveC5jcHAKaW5kZXggNzEyOWU5MzgwNjVkN2JhMTRkMjJhMmFh
YzNlYzI3MjM4YzM3MTMxMS4uZTNkYTdjZmExMzIyNmJjMGVmOThlMWJjYzlmY2VkNmZkOTNlMzQz
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheUJveC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheUJveC5jcHAKQEAgLTUwLDYg
KzUwLDExIEBAIHZvaWQgQm94OjpzZXROZXh0U2libGluZyhzdGQ6OnVuaXF1ZV9wdHI8Qm94PiYm
IGJveCkKICAgICBtX25leHRTaWJsaW5nID0gV1RGTW92ZShib3gpOwogfQogCitib29sIEJveDo6
cGFydGljaXBhdGVzSW5aT3JkZXJTb3J0aW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIWlzTGlu
ZUJyZWFrQm94KCkgJiYgc3R5bGUoKS5wYXJ0aWNpcGF0ZXNJblpPcmRlclNvcnRpbmcoKTsKK30K
KwogU3RyaW5nIEJveDo6ZGVidWdEZXNjcmlwdGlvbigpIGNvbnN0CiB7CiAgICAgVGV4dFN0cmVh
bSBzdHJlYW07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5
Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5Qm94LmgKaW5kZXggNTE5
OTQwYjU1NDA2ZjUxMjFkNjZiMGFhYjgwYjAzNmFhNThmMmZjYi4uNDg5ODdmMGE4YzY2NDExZmRi
OTU1NzFhOWI5OGVhNzkwMDZiYTY1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZGlzcGxh
eS9jc3MvRGlzcGxheUJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3Bs
YXlCb3guaApAQCAtNDYsNiArNDYsNyBAQCBwdWJsaWM6CiAgICAgICAgIENvbnRhaW5lckJveCAg
ICA9IDEgPDwgMSwKICAgICAgICAgSW1hZ2VCb3ggICAgICAgID0gMSA8PCAyLAogICAgICAgICBU
ZXh0Qm94ICAgICAgICAgPSAxIDw8IDMsCisgICAgICAgIExpbmVCcmVha0JveCAgICA9IDEgPDwg
NCwgLy8gRklYTUU6IFdvcmthcm91bmQgZm9yIHdlYmtpdC5vcmcvYi8yMTkzMzUKICAgICB9Owog
CiAgICAgQm94KEFic29sdXRlRmxvYXRSZWN0LCBTdHlsZSYmLCBPcHRpb25TZXQ8RmxhZ3M+ID0g
eyB9KTsKQEAgLTYwLDYgKzYxLDkgQEAgcHVibGljOgogICAgIGJvb2wgaXNJbWFnZUJveCgpIGNv
bnN0IHsgcmV0dXJuIG1fZmxhZ3MuY29udGFpbnMoRmxhZ3M6OkltYWdlQm94KTsgfQogICAgIGJv
b2wgaXNSZXBsYWNlZEJveCgpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MuY29udGFpbnMoRmxhZ3M6
OkltYWdlQm94KTsgLyogYW5kIG90aGVyIHR5cGVzIGxhdGVyLiAqLyB9CiAgICAgYm9vbCBpc1Rl
eHRCb3goKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzLmNvbnRhaW5zKEZsYWdzOjpUZXh0Qm94KTsg
fQorICAgIGJvb2wgaXNMaW5lQnJlYWtCb3goKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzLmNvbnRh
aW5zKEZsYWdzOjpMaW5lQnJlYWtCb3gpOyB9CisKKyAgICBib29sIHBhcnRpY2lwYXRlc0luWk9y
ZGVyU29ydGluZygpIGNvbnN0OwogCiAgICAgY29uc3QgQm94KiBuZXh0U2libGluZygpIGNvbnN0
IHsgcmV0dXJuIG1fbmV4dFNpYmxpbmcuZ2V0KCk7IH0KICAgICB2b2lkIHNldE5leHRTaWJsaW5n
KHN0ZDo6dW5pcXVlX3B0cjxCb3g+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZGlz
cGxheS9jc3MvRGlzcGxheUJveEZhY3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvZGlzcGxheS9j
c3MvRGlzcGxheUJveEZhY3RvcnkuY3BwCmluZGV4IDBhZWVkYTBhZWNjMGM4ZGZlZDA2N2FkNzE0
ZWI0ZTFkYmFmYjI5OTguLjY1MjA0YmQwYzMwYThiNzFiMTkxYzFiMDQ0NGY4ZWNmMWMwYTFhNzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlCb3hGYWN0b3J5
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5Qm94RmFjdG9yeS5j
cHAKQEAgLTY3LDcgKzY3LDcgQEAgUm9vdEJhY2tncm91bmRQcm9wYWdhdGlvbiBCb3hGYWN0b3J5
OjpkZXRlcm1pbmVSb290QmFja2dyb3VuZFByb3BhZ2F0aW9uKGNvbnN0IEwKICAgICByZXR1cm4g
Um9vdEJhY2tncm91bmRQcm9wYWdhdGlvbjo6Tm9uZTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEJv
eD4gQm94RmFjdG9yeTo6ZGlzcGxheUJveEZvclJvb3RCb3goY29uc3QgTGF5b3V0OjpDb250YWlu
ZXJCb3gmIHJvb3RMYXlvdXRCb3gsIGNvbnN0IExheW91dDo6Qm94R2VvbWV0cnkmIGdlb21ldHJ5
LCBSb290QmFja2dyb3VuZFByb3BhZ2F0aW9uIHJvb3RCYWNrZ3JvdW5kUHJvcGFnYXRpb24pIGNv
bnN0CitzdGQ6OnVuaXF1ZV9wdHI8Q29udGFpbmVyQm94PiBCb3hGYWN0b3J5OjpkaXNwbGF5Qm94
Rm9yUm9vdEJveChjb25zdCBMYXlvdXQ6OkNvbnRhaW5lckJveCYgcm9vdExheW91dEJveCwgY29u
c3QgTGF5b3V0OjpCb3hHZW9tZXRyeSYgZ2VvbWV0cnksIFJvb3RCYWNrZ3JvdW5kUHJvcGFnYXRp
b24gcm9vdEJhY2tncm91bmRQcm9wYWdhdGlvbikgY29uc3QKIHsKICAgICBBU1NFUlQoaXM8TGF5
b3V0OjpJbml0aWFsQ29udGFpbmluZ0Jsb2NrPihyb290TGF5b3V0Qm94KSk7CiAKQEAgLTEzNSw3
ICsxMzUsMTIgQEAgc3RkOjp1bmlxdWVfcHRyPEJveD4gQm94RmFjdG9yeTo6ZGlzcGxheUJveEZv
ckxheW91dEJveChjb25zdCBMYXlvdXQ6OkJveCYgbGF5b3UKICAgICAgICAgcmV0dXJuIGNvbnRh
aW5lckJveDsKICAgICB9CiAKLSAgICByZXR1cm4gbWFrZVVuaXF1ZTxCb3g+KHNuYXBSZWN0VG9E
ZXZpY2VQaXhlbHMoYm9yZGVyQm94UmVjdCwgbV9waXhlbFNuYXBwaW5nRmFjdG9yKSwgV1RGTW92
ZShzdHlsZSkpOworICAgIE9wdGlvblNldDxCb3g6OkZsYWdzPiBmbGFnczsKKyAgICAvLyBGSVhN
RTogV29ya2Fyb3VuZCBmb3Igd2Via2l0Lm9yZy9iLzIxOTMzNS4KKyAgICBpZiAobGF5b3V0Qm94
LmlzTGluZUJyZWFrQm94KCkpCisgICAgICAgIGZsYWdzLmFkZChCb3g6OkZsYWdzOjpMaW5lQnJl
YWtCb3gpOworCisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Qm94PihzbmFwUmVjdFRvRGV2aWNlUGl4
ZWxzKGJvcmRlckJveFJlY3QsIG1fcGl4ZWxTbmFwcGluZ0ZhY3RvciksIFdURk1vdmUoc3R5bGUp
LCBmbGFncyk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxCb3g+IEJveEZhY3Rvcnk6OmRpc3BsYXlC
b3hGb3JUZXh0UnVuKGNvbnN0IExheW91dDo6TGluZVJ1biYgcnVuLCBjb25zdCBMYXlvdXQ6Oklu
bGluZUxpbmVHZW9tZXRyeSYgbGluZUdlb21ldHJ5LCBjb25zdCBDb250YWluaW5nQmxvY2tDb250
ZXh0JiBjb250YWluaW5nQmxvY2tDb250ZXh0KSBjb25zdApAQCAtMjY0LDcgKzI2OSw3IEBAIHZv
aWQgQm94RmFjdG9yeTo6c2V0dXBCb3hNb2RlbEJveChCb3hNb2RlbEJveCYgYm94LCBjb25zdCBM
YXlvdXQ6OkJveCYgbGF5b3V0Qm94CiAgICAgYXV0byBib3hEZWNvcmF0aW9uRGF0YSA9IGNvbnN0
cnVjdEJveERlY29yYXRpb25EYXRhKGxheW91dEJveCwgbGF5b3V0R2VvbWV0cnksIHN0eWxlRm9y
QmFja2dyb3VuZCwgY29udGFpbmluZ0Jsb2NrQ29udGV4dC5vZmZzZXRGcm9tUm9vdCk7CiAgICAg
Ym94LnNldEJveERlY29yYXRpb25EYXRhKFdURk1vdmUoYm94RGVjb3JhdGlvbkRhdGEpKTsKIAot
ICAgIGlmIChib3guc3R5bGUoKS5wYXJ0aWNpcGF0ZXNJblpPcmRlclNvcnRpbmcoKSkgeworICAg
IGlmIChib3gucGFydGljaXBhdGVzSW5aT3JkZXJTb3J0aW5nKCkpIHsKICAgICAgICAgUmVmUHRy
PEJveENsaXA+IGNsaXAgPSBjb250YWluaW5nQmxvY2tDb250ZXh0LmJveC5jbGlwRm9yRGVzY2Vu
ZGFudHMoKTsKICAgICAgICAgYm94LnNldEFuY2VzdG9yQ2xpcChXVEZNb3ZlKGNsaXApKTsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5Qm94RmFj
dG9yeS5oIGIvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheUJveEZhY3RvcnkuaApp
bmRleCBhYzVlOTFmOTQ5MjZlZWY1MDhkNmZlMzIwZWZmNTBiNzM5NjI0OTI5Li4wNzc3MGVhN2Ri
YmI0YmVhMDI0MGIzOTA3NTE0ODg3NGM0ZDZlNzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kaXNwbGF5L2Nzcy9EaXNwbGF5Qm94RmFjdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rp
c3BsYXkvY3NzL0Rpc3BsYXlCb3hGYWN0b3J5LmgKQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgog
CiAgICAgc3RhdGljIFJvb3RCYWNrZ3JvdW5kUHJvcGFnYXRpb24gZGV0ZXJtaW5lUm9vdEJhY2tn
cm91bmRQcm9wYWdhdGlvbihjb25zdCBMYXlvdXQ6OkNvbnRhaW5lckJveCYgcm9vdExheW91dEJv
eCk7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Qm94PiBkaXNwbGF5Qm94Rm9yUm9vdEJveChjb25z
dCBMYXlvdXQ6OkNvbnRhaW5lckJveCYsIGNvbnN0IExheW91dDo6Qm94R2VvbWV0cnkmLCBSb290
QmFja2dyb3VuZFByb3BhZ2F0aW9uKSBjb25zdDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29udGFp
bmVyQm94PiBkaXNwbGF5Qm94Rm9yUm9vdEJveChjb25zdCBMYXlvdXQ6OkNvbnRhaW5lckJveCYs
IGNvbnN0IExheW91dDo6Qm94R2VvbWV0cnkmLCBSb290QmFja2dyb3VuZFByb3BhZ2F0aW9uKSBj
b25zdDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Qm94PiBkaXNwbGF5Qm94Rm9yQm9keUJveChjb25z
dCBMYXlvdXQ6OkJveCYsIGNvbnN0IExheW91dDo6Qm94R2VvbWV0cnkmLCBjb25zdCBDb250YWlu
aW5nQmxvY2tDb250ZXh0JiwgUm9vdEJhY2tncm91bmRQcm9wYWdhdGlvbikgY29uc3Q7CiAgICAg
c3RkOjp1bmlxdWVfcHRyPEJveD4gZGlzcGxheUJveEZvckxheW91dEJveChjb25zdCBMYXlvdXQ6
OkJveCYsIGNvbnN0IExheW91dDo6Qm94R2VvbWV0cnkmLCBjb25zdCBDb250YWluaW5nQmxvY2tD
b250ZXh0JikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3Nz
L0Rpc3BsYXlDU1NQYWludGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3Bs
YXlDU1NQYWludGVyLmNwcAppbmRleCBjM2QxOWQ1NmFkMzlhODI1ZWEyODQ0Y2JiMjE4ZmVmYzRi
ZjcwMTBmLi42N2IxN2U2MTNjNGYxNDQzOTExOTU5ZWZhYTMyN2UzNjk4MDE1ZDhiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5Q1NTUGFpbnRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheUNTU1BhaW50ZXIuY3BwCkBAIC0z
Myw2ICszMyw3IEBACiAjaW5jbHVkZSAiRGlzcGxheUJveFJhcmVHZW9tZXRyeS5oIgogI2luY2x1
ZGUgIkRpc3BsYXlDb250YWluZXJCb3guaCIKICNpbmNsdWRlICJEaXNwbGF5UGFpbnRpbmdDb250
ZXh0LmgiCisjaW5jbHVkZSAiRGlzcGxheVN0YWNraW5nSXRlbS5oIgogI2luY2x1ZGUgIkRpc3Bs
YXlTdHlsZS5oIgogI2luY2x1ZGUgIkRpc3BsYXlUcmVlLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0LmgiCkBAIC04Miw4ICs4Myw3IEBAIHZvaWQgQ1NTUGFpbnRlcjo6cmVjdXJzaXZlUGFp
bnREZXNjZW5kYW50c0ZvclBoYXNlKGNvbnN0IENvbnRhaW5lckJveCYgY29udGFpbmVyCiAKICAg
ICBmb3IgKGNvbnN0IGF1dG8qIGNoaWxkID0gY29udGFpbmVyQm94LmZpcnN0Q2hpbGQoKTsgY2hp
bGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKICAgICAgICAgYXV0byYgYm94ID0g
KmNoaWxkOwotICAgICAgICBpZiAocGFydGljaXBhdGVzSW5aT3JkZXJTb3J0aW5nKGJveCkpCi0g
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgQVNTRVJUKCFib3gucGFydGljaXBhdGVzSW5a
T3JkZXJTb3J0aW5nKCkpOwogCiAgICAgICAgIHN3aXRjaCAocGFpbnRQaGFzZSkgewogICAgICAg
ICBjYXNlIFBhaW50UGhhc2U6OkJsb2NrQmFja2dyb3VuZHM6CkBAIC0xMjQsMTAgKzEyNCwxMiBA
QCB2b2lkIENTU1BhaW50ZXI6OnJlY3Vyc2l2ZVBhaW50RGVzY2VuZGFudHMoY29uc3QgQ29udGFp
bmVyQm94JiBjb250YWluZXJCb3gsIFBhaQogICAgIHJlY3Vyc2l2ZVBhaW50RGVzY2VuZGFudHNG
b3JQaGFzZShjb250YWluZXJCb3gsIHBhaW50aW5nQ29udGV4dCwgUGFpbnRQaGFzZTo6QmxvY2tG
b3JlZ3JvdW5kcyk7CiB9CiAKLXZvaWQgQ1NTUGFpbnRlcjo6cGFpbnRBdG9taWNhbGx5UGFpbnRl
ZEJveChjb25zdCBCb3gmIGJveCwgUGFpbnRpbmdDb250ZXh0JiBwYWludGluZ0NvbnRleHQsIGNv
bnN0IEludFJlY3QmIGRpcnR5UmVjdCwgSW5jbHVkZVN0YWNraW5nQ29udGV4dERlc2NlbmRhbnRz
IGluY2x1ZGVTdGFja2luZ0NvbnRleHREZXNjZW5kYW50cykKK3ZvaWQgQ1NTUGFpbnRlcjo6cGFp
bnRBdG9taWNhbGx5UGFpbnRlZEJveChjb25zdCBTdGFja2luZ0l0ZW0mIHN0YWNraW5nSXRlbSwg
UGFpbnRpbmdDb250ZXh0JiBwYWludGluZ0NvbnRleHQsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVj
dCwgSW5jbHVkZVN0YWNraW5nQ29udGV4dERlc2NlbmRhbnRzIGluY2x1ZGVTdGFja2luZ0NvbnRl
eHREZXNjZW5kYW50cykKIHsKICAgICBVTlVTRURfUEFSQU0oZGlydHlSZWN0KTsKIAorICAgIGF1
dG8mIGJveCA9IHN0YWNraW5nSXRlbS5ib3goKTsKKwogICAgIGF1dG8gbmVlZFRvU2F2ZVN0YXRl
ID0gW10oY29uc3QgQm94JiBib3gpIHsKICAgICAgICAgaWYgKCFpczxCb3hNb2RlbEJveD4oYm94
KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE2MSwxOCArMTYzLDEzIEBAIHZvaWQg
Q1NTUGFpbnRlcjo6cGFpbnRBdG9taWNhbGx5UGFpbnRlZEJveChjb25zdCBCb3gmIGJveCwgUGFp
bnRpbmdDb250ZXh0JiBwYWluCiAgICAgaWYgKCFpczxDb250YWluZXJCb3g+KGJveCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGF1dG8mIGNvbnRhaW5lckJveCA9IGRvd25jYXN0PENvbnRhaW5l
ckJveD4oYm94KTsKLQotICAgIFZlY3Rvcjxjb25zdCBCb3hNb2RlbEJveCo+IG5lZ2F0aXZlWk9y
ZGVyTGlzdDsKLSAgICBWZWN0b3I8Y29uc3QgQm94TW9kZWxCb3gqPiBwb3NpdGl2ZVpPcmRlckxp
c3Q7CiAgICAgaWYgKGluY2x1ZGVTdGFja2luZ0NvbnRleHREZXNjZW5kYW50cyA9PSBJbmNsdWRl
U3RhY2tpbmdDb250ZXh0RGVzY2VuZGFudHM6OlllcykgewotICAgICAgICBjb2xsZWN0U3RhY2tp
bmdDb250ZXh0RGVzY2VuZGFudHMoY29udGFpbmVyQm94LCBuZWdhdGl2ZVpPcmRlckxpc3QsIHBv
c2l0aXZlWk9yZGVyTGlzdCk7Ci0KICAgICAgICAgLy8gU3RhY2tpbmcgY29udGV4dHMgZm9ybWVk
IGJ5IHBvc2l0aW9uZWQgZGVzY2VuZGFudHMgd2l0aCBuZWdhdGl2ZSB6LWluZGljZXMgKGV4Y2x1
ZGluZyAwKSBpbiB6LWluZGV4IG9yZGVyIChtb3N0IG5lZ2F0aXZlIGZpcnN0KSB0aGVuIHRyZWUg
b3JkZXIuCi0gICAgICAgIGZvciAoYXV0byogYm94IDogbmVnYXRpdmVaT3JkZXJMaXN0KQotICAg
ICAgICAgICAgcGFpbnRTdGFja2luZ0NvbnRleHQoKmJveCwgcGFpbnRpbmdDb250ZXh0LCBkaXJ0
eVJlY3QpOworICAgICAgICBmb3IgKGF1dG8mIHN0YWNraW5nSXRlbSA6IHN0YWNraW5nSXRlbS5u
ZWdhdGl2ZVpPcmRlckxpc3QoKSkKKyAgICAgICAgICAgIHBhaW50U3RhY2tpbmdDb250ZXh0KCpz
dGFja2luZ0l0ZW0sIHBhaW50aW5nQ29udGV4dCwgZGlydHlSZWN0KTsKICAgICB9CiAKKyAgICBh
dXRvJiBjb250YWluZXJCb3ggPSBkb3duY2FzdDxDb250YWluZXJCb3g+KGJveCk7CiAgICAgcmVj
dXJzaXZlUGFpbnREZXNjZW5kYW50cyhjb250YWluZXJCb3gsIHBhaW50aW5nQ29udGV4dCk7CiAK
ICAgICBpZiAoaW5jbHVkZVN0YWNraW5nQ29udGV4dERlc2NlbmRhbnRzID09IEluY2x1ZGVTdGFj
a2luZ0NvbnRleHREZXNjZW5kYW50czo6WWVzKSB7CkBAIC0xODAsNjYgKzE3NywyMyBAQCB2b2lk
IENTU1BhaW50ZXI6OnBhaW50QXRvbWljYWxseVBhaW50ZWRCb3goY29uc3QgQm94JiBib3gsIFBh
aW50aW5nQ29udGV4dCYgcGFpbgogICAgICAgICAvLyBhcyBpZiBpdCBjcmVhdGVkIGEgbmV3IHN0
YWNraW5nIGNvbnRleHQsIGJ1dCBhbnkgcG9zaXRpb25lZCBkZXNjZW5kYW50cyBhbmQgZGVzY2Vu
ZGFudHMgd2hpY2ggYWN0dWFsbHkgY3JlYXRlIGEgbmV3IHN0YWNraW5nIGNvbnRleHQKICAgICAg
ICAgLy8gc2hvdWxkIGJlIGNvbnNpZGVyZWQgcGFydCBvZiB0aGUgcGFyZW50IHN0YWNraW5nIGNv
bnRleHQsIG5vdCB0aGlzIG5ldyBvbmUuIEZvciB0aG9zZSB3aXRoICd6LWluZGV4OiAwJywgdHJl
YXQgdGhlIHN0YWNraW5nIGNvbnRleHQKICAgICAgICAgLy8gZ2VuZXJhdGVkIGF0b21pY2FsbHku
Ci0gICAgICAgIGZvciAoYXV0byogYm94IDogcG9zaXRpdmVaT3JkZXJMaXN0KSB7Ci0gICAgICAg
ICAgICBpZiAoYm94LT5zdHlsZSgpLmlzU3RhY2tpbmdDb250ZXh0KCkpCi0gICAgICAgICAgICAg
ICAgcGFpbnRTdGFja2luZ0NvbnRleHQoKmJveCwgcGFpbnRpbmdDb250ZXh0LCBkaXJ0eVJlY3Qp
OworICAgICAgICBmb3IgKGF1dG8mIHN0YWNraW5nSXRlbSA6IHN0YWNraW5nSXRlbS5wb3NpdGl2
ZVpPcmRlckxpc3QoKSkgeworICAgICAgICAgICAgaWYgKHN0YWNraW5nSXRlbS0+aXNTdGFja2lu
Z0NvbnRleHQoKSkKKyAgICAgICAgICAgICAgICBwYWludFN0YWNraW5nQ29udGV4dCgqc3RhY2tp
bmdJdGVtLCBwYWludGluZ0NvbnRleHQsIGRpcnR5UmVjdCk7CiAgICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgcGFpbnRBdG9taWNhbGx5UGFpbnRlZEJveCgqYm94LCBwYWludGluZ0Nv
bnRleHQsIGRpcnR5UmVjdCk7CisgICAgICAgICAgICAgICAgcGFpbnRBdG9taWNhbGx5UGFpbnRl
ZEJveCgqc3RhY2tpbmdJdGVtLCBwYWludGluZ0NvbnRleHQsIGRpcnR5UmVjdCk7CiAgICAgICAg
IH0KICAgICB9CiB9CiAKLXZvaWQgQ1NTUGFpbnRlcjo6cGFpbnRTdGFja2luZ0NvbnRleHQoY29u
c3QgQm94TW9kZWxCb3gmIGNvbnRleHRSb290LCBQYWludGluZ0NvbnRleHQmIHBhaW50aW5nQ29u
dGV4dCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KQotewotICAgIHBhaW50QXRvbWljYWxseVBh
aW50ZWRCb3goY29udGV4dFJvb3QsIHBhaW50aW5nQ29udGV4dCwgZGlydHlSZWN0LCBJbmNsdWRl
U3RhY2tpbmdDb250ZXh0RGVzY2VuZGFudHM6Olllcyk7Ci19Ci0KLWJvb2wgQ1NTUGFpbnRlcjo6
aXNTdGFja2luZ0NvbnRleHRQYWludGluZ0JvdW5kYXJ5KGNvbnN0IEJveCYgYm94KQotewotICAg
IHJldHVybiBib3guc3R5bGUoKS5pc1N0YWNraW5nQ29udGV4dCgpOwotfQotCi1ib29sIENTU1Bh
aW50ZXI6OnBhcnRpY2lwYXRlc0luWk9yZGVyU29ydGluZyhjb25zdCBCb3gmIGJveCkKLXsKLSAg
ICByZXR1cm4gYm94LnN0eWxlKCkucGFydGljaXBhdGVzSW5aT3JkZXJTb3J0aW5nKCk7Ci19Ci0K
LXZvaWQgQ1NTUGFpbnRlcjo6Y29sbGVjdFN0YWNraW5nQ29udGV4dERlc2NlbmRhbnRzKGNvbnN0
IENvbnRhaW5lckJveCYgY29udGFpbmVyQm94LCBWZWN0b3I8Y29uc3QgQm94TW9kZWxCb3gqPiYg
bmVnYXRpdmVaT3JkZXJMaXN0LCBWZWN0b3I8Y29uc3QgQm94TW9kZWxCb3gqPiYgcG9zaXRpdmVa
T3JkZXJMaXN0KQordm9pZCBDU1NQYWludGVyOjpwYWludFN0YWNraW5nQ29udGV4dChjb25zdCBT
dGFja2luZ0l0ZW0mIHN0YWNraW5nSXRlbSwgUGFpbnRpbmdDb250ZXh0JiBwYWludGluZ0NvbnRl
eHQsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkKIHsKLSAgICByZWN1cnNpdmVDb2xsZWN0TGF5
ZXJzKGNvbnRhaW5lckJveCwgbmVnYXRpdmVaT3JkZXJMaXN0LCBwb3NpdGl2ZVpPcmRlckxpc3Qp
OwotCi0gICAgYXV0byBjb21wYXJlWkluZGV4ID0gW10gKGNvbnN0IEJveE1vZGVsQm94KiBhLCBj
b25zdCBCb3hNb2RlbEJveCogYikgewotICAgICAgICByZXR1cm4gYS0+c3R5bGUoKS56SW5kZXgo
KS52YWx1ZU9yKDApIDwgYi0+c3R5bGUoKS56SW5kZXgoKS52YWx1ZU9yKDApOwotICAgIH07Ci0K
LSAgICBzdGQ6OnN0YWJsZV9zb3J0KHBvc2l0aXZlWk9yZGVyTGlzdC5iZWdpbigpLCBwb3NpdGl2
ZVpPcmRlckxpc3QuZW5kKCksIGNvbXBhcmVaSW5kZXgpOwotICAgIHN0ZDo6c3RhYmxlX3NvcnQo
bmVnYXRpdmVaT3JkZXJMaXN0LmJlZ2luKCksIG5lZ2F0aXZlWk9yZGVyTGlzdC5lbmQoKSwgY29t
cGFyZVpJbmRleCk7Ci19Ci0KLXZvaWQgQ1NTUGFpbnRlcjo6cmVjdXJzaXZlQ29sbGVjdExheWVy
cyhjb25zdCBDb250YWluZXJCb3gmIGNvbnRhaW5lckJveCwgVmVjdG9yPGNvbnN0IEJveE1vZGVs
Qm94Kj4mIG5lZ2F0aXZlWk9yZGVyTGlzdCwgVmVjdG9yPGNvbnN0IEJveE1vZGVsQm94Kj4mIHBv
c2l0aXZlWk9yZGVyTGlzdCkKLXsKLSAgICBmb3IgKGNvbnN0IGF1dG8qIGNoaWxkID0gY29udGFp
bmVyQm94LmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkp
IHsKLSAgICAgICAgaWYgKGNoaWxkLT5zdHlsZSgpLnBhcnRpY2lwYXRlc0luWk9yZGVyU29ydGlu
ZygpICYmIGlzPEJveE1vZGVsQm94PigqY2hpbGQpKSB7Ci0gICAgICAgICAgICBhdXRvJiBjaGls
ZEJveCA9IGRvd25jYXN0PEJveE1vZGVsQm94PigqY2hpbGQpOwotCi0gICAgICAgICAgICBhdXRv
IHpJbmRleCA9IGNoaWxkQm94LnN0eWxlKCkuekluZGV4KCkudmFsdWVPcigwKTsKLSAgICAgICAg
ICAgIGlmICh6SW5kZXggPCAwKQotICAgICAgICAgICAgICAgIG5lZ2F0aXZlWk9yZGVyTGlzdC5h
cHBlbmQoJmNoaWxkQm94KTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBwb3Np
dGl2ZVpPcmRlckxpc3QuYXBwZW5kKCZjaGlsZEJveCk7Ci0gICAgICAgIH0KLQotICAgICAgICBp
ZiAoaXNTdGFja2luZ0NvbnRleHRQYWludGluZ0JvdW5kYXJ5KCpjaGlsZCkpCi0gICAgICAgICAg
ICBjb250aW51ZTsKLQotICAgICAgICBpZiAoaXM8Q29udGFpbmVyQm94PigqY2hpbGQpKQotICAg
ICAgICAgICAgcmVjdXJzaXZlQ29sbGVjdExheWVycyhkb3duY2FzdDxDb250YWluZXJCb3g+KCpj
aGlsZCksIG5lZ2F0aXZlWk9yZGVyTGlzdCwgcG9zaXRpdmVaT3JkZXJMaXN0KTsKLSAgICB9Cisg
ICAgcGFpbnRBdG9taWNhbGx5UGFpbnRlZEJveChzdGFja2luZ0l0ZW0sIHBhaW50aW5nQ29udGV4
dCwgZGlydHlSZWN0LCBJbmNsdWRlU3RhY2tpbmdDb250ZXh0RGVzY2VuZGFudHM6Olllcyk7CiB9
CiAKIHZvaWQgQ1NTUGFpbnRlcjo6cGFpbnRUcmVlKGNvbnN0IFRyZWUmIGRpc3BsYXlUcmVlLCBQ
YWludGluZ0NvbnRleHQmIHBhaW50aW5nQ29udGV4dCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0
KQogewotICAgIHBhaW50U3RhY2tpbmdDb250ZXh0KGRpc3BsYXlUcmVlLnJvb3RCb3goKSwgcGFp
bnRpbmdDb250ZXh0LCBkaXJ0eVJlY3QpOworICAgIHBhaW50U3RhY2tpbmdDb250ZXh0KGRpc3Bs
YXlUcmVlLnJvb3RTdGFja2luZ0l0ZW0oKSwgcGFpbnRpbmdDb250ZXh0LCBkaXJ0eVJlY3QpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBEaXNwbGF5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
aXNwbGF5L2Nzcy9EaXNwbGF5Q1NTUGFpbnRlci5oIGIvU291cmNlL1dlYkNvcmUvZGlzcGxheS9j
c3MvRGlzcGxheUNTU1BhaW50ZXIuaAppbmRleCAxYTQ4MTBiYjJhMzc5NzQzYTFiZDhlZTllN2E4
ZjZmODhlNDYwNDg3Li44ZDA4NWMxOWQ4YTNlMTkzNTRiNDVkMjZlZmJiYzhmMzkzYTlhMmJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5Q1NTUGFpbnRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlDU1NQYWludGVyLmgKQEAg
LTQyLDYgKzQyLDcgQEAgY2xhc3MgRmlsbExheWVySW1hZ2VHZW9tZXRyeTsKIGNsYXNzIEJveDsK
IGNsYXNzIEJveE1vZGVsQm94OwogY2xhc3MgQ29udGFpbmVyQm94OworY2xhc3MgU3RhY2tpbmdJ
dGVtOwogY2xhc3MgVHJlZTsKIAogc3RydWN0IFBhaW50aW5nQ29udGV4dDsKQEAgLTYwLDE1ICs2
MSw5IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgcmVjdXJzaXZlUGFpbnREZXNjZW5kYW50
c0ZvclBoYXNlKGNvbnN0IENvbnRhaW5lckJveCYsIFBhaW50aW5nQ29udGV4dCYsIFBhaW50UGhh
c2UpOwogCiAgICAgZW51bSBjbGFzcyBJbmNsdWRlU3RhY2tpbmdDb250ZXh0RGVzY2VuZGFudHMg
eyBZZXMsIE5vIH07Ci0gICAgc3RhdGljIHZvaWQgcGFpbnRBdG9taWNhbGx5UGFpbnRlZEJveChj
b25zdCBCb3gmLCBQYWludGluZ0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QsIElu
Y2x1ZGVTdGFja2luZ0NvbnRleHREZXNjZW5kYW50cyA9IEluY2x1ZGVTdGFja2luZ0NvbnRleHRE
ZXNjZW5kYW50czo6Tm8pOworICAgIHN0YXRpYyB2b2lkIHBhaW50QXRvbWljYWxseVBhaW50ZWRC
b3goY29uc3QgU3RhY2tpbmdJdGVtJiwgUGFpbnRpbmdDb250ZXh0JiwgY29uc3QgSW50UmVjdCYg
ZGlydHlSZWN0LCBJbmNsdWRlU3RhY2tpbmdDb250ZXh0RGVzY2VuZGFudHMgPSBJbmNsdWRlU3Rh
Y2tpbmdDb250ZXh0RGVzY2VuZGFudHM6Ok5vKTsKIAotICAgIHN0YXRpYyB2b2lkIHBhaW50U3Rh
Y2tpbmdDb250ZXh0KGNvbnN0IEJveE1vZGVsQm94JiwgUGFpbnRpbmdDb250ZXh0JiwgY29uc3Qg
SW50UmVjdCYgZGlydHlSZWN0KTsKLQotICAgIHN0YXRpYyBib29sIGlzU3RhY2tpbmdDb250ZXh0
UGFpbnRpbmdCb3VuZGFyeShjb25zdCBCb3gmKTsKLSAgICBzdGF0aWMgYm9vbCBwYXJ0aWNpcGF0
ZXNJblpPcmRlclNvcnRpbmcoY29uc3QgQm94Jik7Ci0KLSAgICBzdGF0aWMgdm9pZCBjb2xsZWN0
U3RhY2tpbmdDb250ZXh0RGVzY2VuZGFudHMoY29uc3QgQ29udGFpbmVyQm94JiwgVmVjdG9yPGNv
bnN0IEJveE1vZGVsQm94Kj4mIG5lZ2F0aXZlWk9yZGVyTGlzdCwgVmVjdG9yPGNvbnN0IEJveE1v
ZGVsQm94Kj4mIHBvc2l0aXZlWk9yZGVyTGlzdCk7Ci0gICAgc3RhdGljIHZvaWQgcmVjdXJzaXZl
Q29sbGVjdExheWVycyhjb25zdCBDb250YWluZXJCb3gmLCBWZWN0b3I8Y29uc3QgQm94TW9kZWxC
b3gqPiYgbmVnYXRpdmVaT3JkZXJMaXN0LCBWZWN0b3I8Y29uc3QgQm94TW9kZWxCb3gqPiYgcG9z
aXRpdmVaT3JkZXJMaXN0KTsKKyAgICBzdGF0aWMgdm9pZCBwYWludFN0YWNraW5nQ29udGV4dChj
b25zdCBTdGFja2luZ0l0ZW0mLCBQYWludGluZ0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBkaXJ0
eVJlY3QpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgRGlzcGxheQo=
</data>
<flag name="commit-queue"
          id="432062"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415004</attachid>
            <date>2020-11-29 20:16:37 -0800</date>
            <delta_ts>2020-11-29 21:23:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219315-20201129201635.patch</filename>
            <type>text/plain</type>
            <size>39571</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMjMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGM0ZjI5ZTVmOTY3Yjlk
NGU4ODU5ZGYwODJlMWEwMjcwNjYxOGFhMi4uMWMwYWFlN2EyNTNhNzc4OGZlZWU2YTNkZTZmY2E0
ODlkYzNhYzQ1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY5IEBACisyMDIwLTExLTI2ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIFtMRkMgRGlzcGxh
eV0gU3RvcmUgdGhlIGRpc3BsYXkgdHJlZSBhcyBhIHRyZWUgb2Ygc3RhY2tpbmcgaXRlbXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTMxNQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEN1cnJlbnRseSB0
aGUgZGlzcGxheSB0cmVlIGlzIGEgZnVsbCB0cmVlLCBjcm9zc2luZyBzdGFja2luZyBjb250ZXh0
IGJvdW5kYXJpZXMsIGFuZCB0aGUKKyAgICAgICAgei1vcmRlciBsaXN0cyBhcmUgYnVpbHQgYXQg
cGFpbnQgdGltZS4KKworICAgICAgICBDaGFuZ2UgdG8gYSB0cmVlIG9mIFN0YWNraW5nSXRlbXMs
IHdoZXJlIGEgU3RhY2tpbmdJdGVtIGV4aXN0cyBmb3IgZWFjaCBib3ggdGhhdAorICAgICAgICBw
YXJ0aWNpcGF0ZXMgaW4gdGhlIHotb3JkZXIgc29ydGluZyBhbGdvcml0aG0gKGkuZS4gYm94ZXMg
dGhhdCBhcmUgcG9zaXRpb25lZCwgb3IgaGF2ZQorICAgICAgICBzdHlsZXMgdGhhdCBjcmVhdGUg
c3RhY2tpbmcgY29udGV4dCkuIEVhY2ggU3RhY2tpbmdJdGVtIG93bnMgdGhlIHN1YnRyZWUgb2Yg
RGlzcGxheTo6Qm94ZXMKKyAgICAgICAgdGhhdCBpdCBwYWludHMsIGFuZCB0aG9zZSBzdWJ0cmVl
cyBhcmUgbm90IG90aGVyd2lzZSBjb25uZWN0ZWQuCisKKyAgICAgICAgVGhlIERpc3BsYXk6OlRy
ZWUgb3ducyB0aGUgcm9vdCBTdGFja2luZ0l0ZW0sIGFuZCBlYWNoIFN0YWNraW5nSXRlbSBvd25z
IGl0cyBjaGlsZAorICAgICAgICBTdGFja2luZ0l0ZW1zLiBUaGUgU3RhY2tpbmdJdGVtIHRyZWUg
aXMgYnVpbHQgYXQgZGlzcGxheSB0cmVlIGJ1aWxkaW5nIHRpbWUgYnkgc3RvcmluZyBzdGF0ZQor
ICAgICAgICBpbiB0aGUgQnVpbGRpbmdTdGF0ZSBzdGFjay4gU3RhY2tpbmdJdGVtcyBhcmUgYWRk
ZWQgdG8gdGhlIHotb3JkZXIgbGlzdHMgb2YgdGhlaXIgcGFyZW50CisgICAgICAgIGl0ZW0gYXQg
Y3JlYXRpb24gdGltZTsgd2hlbiBkb25lIHByb2Nlc3NpbmcgYm94ZXMgZm9yIGEgU3RhY2tpbmdJ
dGVtLCB3ZSB0aGVuIHNvcnQgaXRzCisgICAgICAgIHotb3JkZXIgbGlzdHMuCisKKyAgICAgICAg
QWRkIEJveDo6cGFydGljaXBhdGVzSW5aT3JkZXJTb3J0aW5nKCkgYW5kIGEgTGluZUJyZWFrQm94
IGZsYWcsIGFuZCBjYWxsIHRoYXQgZnVuY3Rpb24KKyAgICAgICAgaW5zdGVhZCBvZiB0aGUgdmVy
c2lvbiBvbiBEaXNwbGF5OjpTdHlsZSB0byB3b3JrIGFyb3VuZCB3ZWJraXQub3JnL2IvMjE5MzM1
IGZvciBub3cuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZGlzcGxheS9EaXNwbGF5TGF5ZXJD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKiBkaXNwbGF5L0Rpc3BsYXlUcmVlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXk6OlRyZWU6OlRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheTo6VHJlZTo6cm9vdEJveCBjb25zdCk6CisgICAgICAgICogZGlzcGxheS9EaXNwbGF5VHJl
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6VHJlZTo6cm9vdFN0YWNraW5nSXRlbSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpUcmVlOjpyb290Qm94IGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKiBkaXNwbGF5L0Rpc3BsYXlUcmVlQnVpbGRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5OjpUcmVlQnVpbGRlcjo6YnVpbGQpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheTo6VHJlZUJ1aWxkZXI6OnB1c2hTdGF0ZUZvckJveERlc2NlbmRhbnRzKToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OlRyZWVCdWlsZGVyOjpwb3BTdGF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5OjpUcmVlQnVpbGRlcjo6aW5zZXJ0SW50b1RyZWUpOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheTo6VHJlZUJ1aWxkZXI6OmJ1aWxkSW5saW5lRGlzcGxheVRy
ZWUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6VHJlZUJ1aWxkZXI6OnJlY3Vyc2l2ZUJ1
aWxkRGlzcGxheVRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6b3V0cHV0RGlzcGxh
eUJveCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpvdXRwdXREaXNwbGF5VHJlZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpkaXNwbGF5VHJlZUFzVGV4dCk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5OjpvdXRwdXRTdGFja2luZ1RyZWUpOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheTo6c2hvd0Rpc3BsYXlUcmVlKToKKyAgICAgICAgKiBkaXNwbGF5L0Rpc3BsYXlUcmVl
QnVpbGRlci5oOgorICAgICAgICAqIGRpc3BsYXkvY3NzL0Rpc3BsYXlCb3guY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94OjpwYXJ0aWNpcGF0ZXNJblpPcmRlclNvcnRpbmcgY29u
c3QpOgorICAgICAgICAqIGRpc3BsYXkvY3NzL0Rpc3BsYXlCb3guaDoKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXk6OkJveDo6aXNMaW5lQnJlYWtCb3ggY29uc3QpOgorICAgICAgICAqIGRpc3Bs
YXkvY3NzL0Rpc3BsYXlCb3hGYWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6
OkJveEZhY3Rvcnk6OmRpc3BsYXlCb3hGb3JSb290Qm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXk6OkJveEZhY3Rvcnk6OmRpc3BsYXlCb3hGb3JMYXlvdXRCb3ggY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94RmFjdG9yeTo6c2V0dXBCb3hNb2RlbEJveCBj
b25zdCk6CisgICAgICAgICogZGlzcGxheS9jc3MvRGlzcGxheUJveEZhY3RvcnkuaDoKKyAgICAg
ICAgKiBkaXNwbGF5L2Nzcy9EaXNwbGF5Q1NTUGFpbnRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5OjpDU1NQYWludGVyOjpyZWN1cnNpdmVQYWludERlc2NlbmRhbnRzRm9yUGhhc2Up
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Q1NTUGFpbnRlcjo6cGFpbnRBdG9taWNhbGx5
UGFpbnRlZEJveCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpDU1NQYWludGVyOjpwYWlu
dFN0YWNraW5nQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpDU1NQYWludGVy
OjpwYWludFRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Q1NTUGFpbnRlcjo6aXNT
dGFja2luZ0NvbnRleHRQYWludGluZ0JvdW5kYXJ5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXk6OkNTU1BhaW50ZXI6OnBhcnRpY2lwYXRlc0luWk9yZGVyU29ydGluZyk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpDU1NQYWludGVyOjpjb2xsZWN0U3Rh
Y2tpbmdDb250ZXh0RGVzY2VuZGFudHMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheTo6Q1NTUGFpbnRlcjo6cmVjdXJzaXZlQ29sbGVjdExheWVycyk6IERlbGV0ZWQuCisgICAg
ICAgICogZGlzcGxheS9jc3MvRGlzcGxheUNTU1BhaW50ZXIuaDoKKwogMjAyMC0xMS0yOSAgWmFs
YW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW0JGQ10gRG8gbm90
IGFzc3VtZSBmbG9hdCBhdm9pZGVycyBoYXZlIHByZS1jb21wdXRlZCB2ZXJ0aWNhbCBwb3NpdGlv
bnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNv
cmUvU291cmNlcy50eHQKaW5kZXggNDIwMjYyMGViMWYwZTE0MTdjY2NlOTllNTgyMDAxYTg5YTcz
YTc2ZS4uNmU0NzIzYTUyODM2ZTk0MjVhYjEyZjYzMWRhMGQyZTM4ZDdjNTIwNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQKQEAgLTg0Niw2ICs4NDYsNyBAQCBkaXNwbGF5L2Nzcy9EaXNwbGF5Q1NTUGFpbnRlci5j
cHAKIGRpc3BsYXkvY3NzL0Rpc3BsYXlGaWxsTGF5ZXJJbWFnZUdlb21ldHJ5LmNwcAogZGlzcGxh
eS9jc3MvRGlzcGxheUltYWdlQm94LmNwcAogZGlzcGxheS9jc3MvRGlzcGxheVJlcGxhY2VkQm94
LmNwcAorZGlzcGxheS9jc3MvRGlzcGxheVN0YWNraW5nSXRlbS5jcHAKIGRpc3BsYXkvY3NzL0Rp
c3BsYXlTdHlsZS5jcHAKIGRpc3BsYXkvY3NzL0Rpc3BsYXlUZXh0Qm94LmNwcAogZGlzcGxheS9E
aXNwbGF5TGF5ZXJDb250cm9sbGVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDM4NDUzOWM0ZDQ4MTNlNWU2ODg3MjQxODEx
YmI1NDk3MDA0MWI4MTUuLjhhNDZlYzlkYWJiNTFiN2E3MzQ3MjlhMDlmNmRhZGNiZmUxOWExNDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTYwNjcsNiArNjA2Nyw4IEBACiAJCTBGNzkwRjQwMjUxN0NFNkQwMDlCQTAzNCAvKiBE
aXNwbGF5TGF5ZXJDb250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IERpc3BsYXlMYXllckNvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRjdERjE0NzFFMkJGMUE2MDA5NTk1MUIgLyogV2ViQ29yZUpTQ2xpZW50RGF0YS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJDb3JlSlNDbGllbnRE
YXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY4NTBGRTIxRUQ3QzE4MzAw
RkI3N0E3IC8qIFBlcmZvcm1hbmNlTG9nZ2luZ0NsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBQZXJmb3JtYW5jZUxvZ2dpbmdDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMEY4NjgyRkEyNTcwN0Y0NzAwQzA4QkI1IC8qIERpc3BsYXlTdGFja2lu
Z0l0ZW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlzcGxheVN0YWNraW5nSXRlbS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwRjg2ODJGQzI1NzA3RjQ3MDBDMDhCQjUgLyogRGlzcGxheVN0
YWNraW5nSXRlbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaXNwbGF5U3RhY2tpbmdJdGVtLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY4NzE2NkQxQzg2OUQ4MzAwNEZGMERF
IC8qIExlbmd0aFBvaW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IExlbmd0aFBvaW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY4NzE2NkUx
Qzg2OUQ4MzAwNEZGMERFIC8qIExlbmd0aFBvaW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IExlbmd0aFBvaW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBG
OEI0NTZGMURDM0ZCMTAwMDQ0M0MzRiAvKiBJbnRlcnNlY3Rpb25PYnNlcnZlckNhbGxiYWNrLmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBJbnRlcnNlY3Rpb25PYnNlcnZlckNhbGxiYWNrLmlk
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3ODQyLDYgKzE3ODQ0LDggQEAKIAkJ
CQkwRjMyQkE0MTI1NEYzMjE2MDAxQUMzOEUgLyogRGlzcGxheVBhaW50aW5nQ29udGV4dC5oICov
LAogCQkJCTBGRkYxQjdDMjUxQkM2NTcwMDk4Nzk1QSAvKiBEaXNwbGF5UmVwbGFjZWRCb3guY3Bw
ICovLAogCQkJCTBGRkYxQjc5MjUxQkM2NTcwMDk4Nzk1QSAvKiBEaXNwbGF5UmVwbGFjZWRCb3gu
aCAqLywKKwkJCQkwRjg2ODJGQzI1NzA3RjQ3MDBDMDhCQjUgLyogRGlzcGxheVN0YWNraW5nSXRl
bS5jcHAgKi8sCisJCQkJMEY4NjgyRkEyNTcwN0Y0NzAwQzA4QkI1IC8qIERpc3BsYXlTdGFja2lu
Z0l0ZW0uaCAqLywKIAkJCQkwRkZGMUI3NjI1MUJDNjU3MDA5ODc5NUEgLyogRGlzcGxheVN0eWxl
LmNwcCAqLywKIAkJCQkwRkZGMUI3MzI1MUJDNjU3MDA5ODc5NUEgLyogRGlzcGxheVN0eWxlLmgg
Ki8sCiAJCQkJMEZCMDY4OTQyNTI0M0I5MDAwMUU4RTc1IC8qIERpc3BsYXlUZXh0Qm94LmNwcCAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvRGlzcGxheUxheWVyQ29udHJv
bGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L0Rpc3BsYXlMYXllckNvbnRyb2xsZXIu
Y3BwCmluZGV4IDkxZThlMGQzMWNlM2MwNDdkYTMwY2QyMmYwYzgxZjdhMTZiMWQwY2YuLjc5NDNk
MTI0MDIzMjQyNGZiODQ4OWVmOTgzYWMxMGQzN2ExZmY2NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Rpc3BsYXkvRGlzcGxheUxheWVyQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZGlzcGxheS9EaXNwbGF5TGF5ZXJDb250cm9sbGVyLmNwcApAQCAtMzEsNiArMzEsNyBA
QAogI2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgogI2luY2x1
ZGUgIkRpc3BsYXlDU1NQYWludGVyLmgiCisjaW5jbHVkZSAiRGlzcGxheUNvbnRhaW5lckJveC5o
IgogI2luY2x1ZGUgIkRpc3BsYXlQYWludGluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJEaXNwbGF5
VHJlZS5oIgogI2luY2x1ZGUgIkRpc3BsYXlWaWV3LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kaXNwbGF5L0Rpc3BsYXlUcmVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvRGlz
cGxheVRyZWUuY3BwCmluZGV4IDZlYTBmYTY3Njg4NTJlZmQ5YmU2ODhlZWNlMDk1YzNmMmU2YjBi
NTQuLmJjMzQ5MTkwZTc5OWNkMmFkYTdlNTJiYTMzZmU0Y2JkYWI0NzAwN2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvRGlzcGxheVRyZWUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Rpc3BsYXkvRGlzcGxheVRyZWUuY3BwCkBAIC0yOCwxNSArMjgsMjQgQEAKIAogI2lmIEVO
QUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQogCisjaW5jbHVkZSAiRGlzcGxheUNvbnRh
aW5lckJveC5oIgorI2luY2x1ZGUgIkRpc3BsYXlTdGFja2luZ0l0ZW0uaCIKICNpbmNsdWRlIDx3
dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2Ug
RGlzcGxheSB7CiAKLVRyZWU6OlRyZWUoc3RkOjp1bmlxdWVfcHRyPENvbnRhaW5lckJveD4mJiBy
b290Qm94KQotICAgIDogbV9yb290Qm94KFdURk1vdmUocm9vdEJveCkpCitUcmVlOjpUcmVlKHN0
ZDo6dW5pcXVlX3B0cjxTdGFja2luZ0l0ZW0+JiYgcm9vdFN0YWNraW5nSXRlbSkKKyAgICA6IG1f
cm9vdFN0YWNraW5nSXRlbShXVEZNb3ZlKHJvb3RTdGFja2luZ0l0ZW0pKQogewotICAgIEFTU0VS
VChtX3Jvb3RCb3gpOworICAgIEFTU0VSVChtX3Jvb3RTdGFja2luZ0l0ZW0pOworfQorCitUcmVl
Ojp+VHJlZSgpID0gZGVmYXVsdDsKKworY29uc3QgQ29udGFpbmVyQm94JiBUcmVlOjpyb290Qm94
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gZG93bmNhc3Q8Q29udGFpbmVyQm94PihtX3Jvb3RTdGFj
a2luZ0l0ZW0tPmJveCgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgRGlzcGxheQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZGlzcGxheS9EaXNwbGF5VHJlZS5oIGIvU291cmNlL1dlYkNvcmUv
ZGlzcGxheS9EaXNwbGF5VHJlZS5oCmluZGV4IGZlOGYzNWZjM2NhM2NiMjYxM2MyNWIyYWRkZWMy
NjVkMzQ1MzEyODcuLjBmMmVmYjkxMDY1ZTZmNzUzNTY2NjVhOGI2NWFlOWI0ZDVhNWI1Y2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvRGlzcGxheVRyZWUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kaXNwbGF5L0Rpc3BsYXlUcmVlLmgKQEAgLTI3LDIyICsyNywyNSBAQAogCiAj
aWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCiAKLSNpbmNsdWRlICJEaXNwbGF5
Q29udGFpbmVyQm94LmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvYy5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBuYW1lc3BhY2UgRGlzcGxheSB7CiAKK2NsYXNzIENvbnRhaW5lckJveDsKK2Ns
YXNzIFN0YWNraW5nSXRlbTsKKwogY2xhc3MgVHJlZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQoVHJlZSk7CiBwdWJsaWM6Ci0gICAgVHJlZShzdGQ6OnVuaXF1ZV9wdHI8Q29udGFpbmVy
Qm94PiYmKTsKKyAgICBleHBsaWNpdCBUcmVlKHN0ZDo6dW5pcXVlX3B0cjxTdGFja2luZ0l0ZW0+
JiYpOworICAgIH5UcmVlKCk7CiAKLSAgICBjb25zdCBDb250YWluZXJCb3gmIHJvb3RCb3goKSBj
b25zdCB7IHJldHVybiAqbV9yb290Qm94OyB9CisgICAgY29uc3QgU3RhY2tpbmdJdGVtJiByb290
U3RhY2tpbmdJdGVtKCkgY29uc3QgeyByZXR1cm4gKm1fcm9vdFN0YWNraW5nSXRlbTsgfQorICAg
IGNvbnN0IENvbnRhaW5lckJveCYgcm9vdEJveCgpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIC8v
IElkZWFsbHkgdGhpcyByb290IGJveCB3b3VsZCBiZSBhZ25vc3RpYyB0byBkaXNwbGF5IHR5cGUg
KENTUyB2cyBTVkcpLgotICAgIHN0ZDo6dW5pcXVlX3B0cjxDb250YWluZXJCb3g+IG1fcm9vdEJv
eDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U3RhY2tpbmdJdGVtPiBtX3Jvb3RTdGFja2luZ0l0ZW07
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBEaXNwbGF5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kaXNwbGF5L0Rpc3BsYXlUcmVlQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5
L0Rpc3BsYXlUcmVlQnVpbGRlci5jcHAKaW5kZXggZTlmMGEyNTA0ZjE0YTE2NGJjZDFlMzU0ZjQ2
MDA4Mjc0NDdjMWY2MC4uMDkxY2I1ODA0N2UxZGQzY2NmMzY0NmZmYmY2NzAzNDkyODI1NTdhOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZGlzcGxheS9EaXNwbGF5VHJlZUJ1aWxkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvRGlzcGxheVRyZWVCdWlsZGVyLmNwcApAQCAt
MzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiRGlzcGxheUJveEZhY3RvcnkuaCIKICNpbmNsdWRl
ICJEaXNwbGF5Q29udGFpbmVyQm94LmgiCisjaW5jbHVkZSAiRGlzcGxheVN0YWNraW5nSXRlbS5o
IgogI2luY2x1ZGUgIkRpc3BsYXlTdHlsZS5oIgogI2luY2x1ZGUgIkRpc3BsYXlUcmVlLmgiCiAj
aW5jbHVkZSAiSW5saW5lRm9ybWF0dGluZ1N0YXRlLmgiCkBAIC05OCw2ICs5OSw3IEBAIHByaXZh
dGU6CiAKIHN0cnVjdCBCdWlsZGluZ1N0YXRlIHsKICAgICBQb3NpdGlvbmluZ0NvbnRleHQgcG9z
aXRpb25pbmdDb250ZXh0OworICAgIFN0YWNraW5nSXRlbSYgY3VycmVudFN0YWNraW5nQ29udGV4
dEl0ZW07CiB9OwogCiBUcmVlQnVpbGRlcjo6VHJlZUJ1aWxkZXIoZmxvYXQgcGl4ZWxTbmFwcGlu
Z0ZhY3RvcikKQEAgLTEyMSwzMiArMTIzLDM2IEBAIHN0ZDo6dW5pcXVlX3B0cjxUcmVlPiBUcmVl
QnVpbGRlcjo6YnVpbGQoY29uc3QgTGF5b3V0OjpMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUpCiAK
ICAgICBhdXRvIGdlb21ldHJ5ID0gbGF5b3V0U3RhdGUuZ2VvbWV0cnlGb3JCb3gocm9vdExheW91
dEJveCk7CiAgICAgYXV0byByb290RGlzcGxheUJveCA9IG1fYm94RmFjdG9yeS5kaXNwbGF5Qm94
Rm9yUm9vdEJveChyb290TGF5b3V0Qm94LCBnZW9tZXRyeSwgbV9yb290QmFja2dyb3VuZFByb3Bn
YXRpb24pOwotICAgIGF1dG8gcm9vdERpc3BsYXlDb250YWluZXJCb3ggPSBzdGQ6OnVuaXF1ZV9w
dHI8Q29udGFpbmVyQm94PiB7IGRvd25jYXN0PENvbnRhaW5lckJveD4ocm9vdERpc3BsYXlCb3gu
cmVsZWFzZSgpKSB9OwogCi0gICAgaWYgKCFyb290TGF5b3V0Qm94LmZpcnN0Q2hpbGQoKSkKLSAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VHJlZT4oV1RGTW92ZShyb290RGlzcGxheUNvbnRhaW5l
ckJveCkpOworICAgIGF1dG8gaW5zZXJ0aW9uUG9zaXRpb24gPSBJbnNlcnRpb25Qb3NpdGlvbiB7
ICpyb290RGlzcGxheUJveCB9OworICAgIGF1dG8gcm9vdFN0YWNraW5nSXRlbSA9IG1ha2VVbmlx
dWU8U3RhY2tpbmdJdGVtPihXVEZNb3ZlKHJvb3REaXNwbGF5Qm94KSk7CiAKLSAgICBhdXRvIGlu
c2VydGlvblBvc2l0aW9uID0gSW5zZXJ0aW9uUG9zaXRpb24geyAqcm9vdERpc3BsYXlDb250YWlu
ZXJCb3ggfTsKLQotICAgIG1fc3RhdGVTdGFjay0+YXBwZW5kKHsgKnJvb3REaXNwbGF5Q29udGFp
bmVyQm94IH0pOwotCi0gICAgcmVjdXJzaXZlQnVpbGREaXNwbGF5VHJlZShsYXlvdXRTdGF0ZSwg
KnJvb3RMYXlvdXRCb3guZmlyc3RDaGlsZCgpLCBpbnNlcnRpb25Qb3NpdGlvbik7CisgICAgaWYg
KHJvb3RMYXlvdXRCb3guZmlyc3RDaGlsZCgpKSB7CisgICAgICAgIGF1dG8mIHJvb3RDb250YWlu
ZXJCb3ggPSBkb3duY2FzdDxDb250YWluZXJCb3g+KHJvb3RTdGFja2luZ0l0ZW0tPmJveCgpKTsK
KyAgICAgICAgbV9zdGF0ZVN0YWNrLT5hcHBlbmQoeyByb290Q29udGFpbmVyQm94LCAqcm9vdFN0
YWNraW5nSXRlbSB9KTsKKyAgICAgICAgcmVjdXJzaXZlQnVpbGREaXNwbGF5VHJlZShsYXlvdXRT
dGF0ZSwgKnJvb3RMYXlvdXRCb3guZmlyc3RDaGlsZCgpLCBpbnNlcnRpb25Qb3NpdGlvbik7Cisg
ICAgfQogCiAjaWYgRU5BQkxFKFRSRUVfREVCVUdHSU5HKQotICAgIExPR19XSVRIX1NUUkVBTShG
b3JtYXR0aW5nQ29udGV4dExheW91dCwgc3RyZWFtIDw8ICJEaXNwbGF5IHRyZWU6XG4iIDw8IGRp
c3BsYXlUcmVlQXNUZXh0KCpyb290RGlzcGxheUNvbnRhaW5lckJveCkpOworICAgIExPR19XSVRI
X1NUUkVBTShGb3JtYXR0aW5nQ29udGV4dExheW91dCwgc3RyZWFtIDw8ICJEaXNwbGF5IHRyZWU6
XG4iIDw8IGRpc3BsYXlUcmVlQXNUZXh0KCpyb290U3RhY2tpbmdJdGVtKSk7CiAjZW5kaWYKLQot
ICAgIHJldHVybiBtYWtlVW5pcXVlPFRyZWU+KFdURk1vdmUocm9vdERpc3BsYXlDb250YWluZXJC
b3gpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxUcmVlPihXVEZNb3ZlKHJvb3RTdGFja2luZ0l0
ZW0pKTsKIH0KIAotdm9pZCBUcmVlQnVpbGRlcjo6cHVzaFN0YXRlRm9yQm94RGVzY2VuZGFudHMo
Y29uc3QgTGF5b3V0OjpDb250YWluZXJCb3gmIGxheW91dENvbnRhaW5lckJveCwgY29uc3QgTGF5
b3V0OjpCb3hHZW9tZXRyeSYgbGF5b3V0R2VvbWV0cnksIGNvbnN0IENvbnRhaW5lckJveCYgZGlz
cGxheUJveCkKK3ZvaWQgVHJlZUJ1aWxkZXI6OnB1c2hTdGF0ZUZvckJveERlc2NlbmRhbnRzKGNv
bnN0IExheW91dDo6Q29udGFpbmVyQm94JiBsYXlvdXRDb250YWluZXJCb3gsIGNvbnN0IExheW91
dDo6Qm94R2VvbWV0cnkmIGxheW91dEdlb21ldHJ5LCBjb25zdCBDb250YWluZXJCb3gmIGRpc3Bs
YXlCb3gsIFN0YWNraW5nSXRlbSogYm94U3RhY2tpbmdJdGVtKQogewogICAgIGF1dG8mIHBvc2l0
aW9uaW5nQ29udGV4dCA9IG1fc3RhdGVTdGFjay0+bGFzdCgpLnBvc2l0aW9uaW5nQ29udGV4dDsK
LSAgICBtX3N0YXRlU3RhY2stPmFwcGVuZCh7IHBvc2l0aW9uaW5nQ29udGV4dC5jb250ZXh0Rm9y
RGVzY2VuZGFudHMobGF5b3V0Q29udGFpbmVyQm94LCBsYXlvdXRHZW9tZXRyeSwgZGlzcGxheUJv
eCkgfSk7CisgICAgYXV0byYgY3VycmVudFN0YWNraW5nQ29udGV4dEl0ZW0gPSAoYm94U3RhY2tp
bmdJdGVtICYmIGJveFN0YWNraW5nSXRlbS0+aXNTdGFja2luZ0NvbnRleHQoKSkgPyAqYm94U3Rh
Y2tpbmdJdGVtIDogbV9zdGF0ZVN0YWNrLT5sYXN0KCkuY3VycmVudFN0YWNraW5nQ29udGV4dEl0
ZW07CisKKyAgICBtX3N0YXRlU3RhY2stPmFwcGVuZCh7IHBvc2l0aW9uaW5nQ29udGV4dC5jb250
ZXh0Rm9yRGVzY2VuZGFudHMobGF5b3V0Q29udGFpbmVyQm94LCBsYXlvdXRHZW9tZXRyeSwgZGlz
cGxheUJveCksIGN1cnJlbnRTdGFja2luZ0NvbnRleHRJdGVtIH0pOwogfQogCi12b2lkIFRyZWVC
dWlsZGVyOjpwb3BTdGF0ZSgpCit2b2lkIFRyZWVCdWlsZGVyOjpwb3BTdGF0ZShjb25zdCBDb250
YWluZXJCb3gmIGN1cnJlbnRCb3gpCiB7CisgICAgYXV0byYgY3VycmVudFN0YXRlID0gbV9zdGF0
ZVN0YWNrLT5sYXN0KCk7CisgICAgaWYgKCZjdXJyZW50U3RhdGUuY3VycmVudFN0YWNraW5nQ29u
dGV4dEl0ZW0uYm94KCkgPT0gJmN1cnJlbnRCb3gpCisgICAgICAgIGN1cnJlbnRTdGF0ZS5jdXJy
ZW50U3RhY2tpbmdDb250ZXh0SXRlbS5zb3J0TGlzdHMoKTsKKwogICAgIG1fc3RhdGVTdGFjay0+
cmVtb3ZlTGFzdCgpOwogfQogCkBAIC0xNzMsNiArMTc5LDIxIEBAIHZvaWQgVHJlZUJ1aWxkZXI6
Omluc2VydChzdGQ6OnVuaXF1ZV9wdHI8Qm94PiYmIGJveCwgSW5zZXJ0aW9uUG9zaXRpb24mIGlu
c2VydGlvCiAgICAgfQogfQogCitTdGFja2luZ0l0ZW0qIFRyZWVCdWlsZGVyOjppbnNlcnRJbnRv
VHJlZShzdGQ6OnVuaXF1ZV9wdHI8Qm94PiYmIGJveCwgSW5zZXJ0aW9uUG9zaXRpb24mIGluc2Vy
dGlvblBvc2l0aW9uKQoreworICAgIGlmIChib3gtPnBhcnRpY2lwYXRlc0luWk9yZGVyU29ydGlu
ZygpICYmIGlzPEJveE1vZGVsQm94PigqYm94KSkgeworICAgICAgICBhdXRvIGJveE1vZGVsQm94
ID0gc3RkOjp1bmlxdWVfcHRyPEJveE1vZGVsQm94PiB7IGRvd25jYXN0PEJveE1vZGVsQm94Pihi
b3gucmVsZWFzZSgpKSB9OworICAgICAgICBhdXRvIHN0YWNraW5nSXRlbSA9IG1ha2VVbmlxdWU8
U3RhY2tpbmdJdGVtPihXVEZNb3ZlKGJveE1vZGVsQm94KSk7CisKKyAgICAgICAgYXV0byogc3Rh
Y2tpbmdJdGVtUHRyID0gc3RhY2tpbmdJdGVtLmdldCgpOworICAgICAgICBjdXJyZW50U3RhdGUo
KS5jdXJyZW50U3RhY2tpbmdDb250ZXh0SXRlbS5hZGRDaGlsZFN0YWNraW5nSXRlbShXVEZNb3Zl
KHN0YWNraW5nSXRlbSkpOworICAgICAgICByZXR1cm4gc3RhY2tpbmdJdGVtUHRyOworICAgIH0K
KworICAgIGluc2VydChXVEZNb3ZlKGJveCksIGluc2VydGlvblBvc2l0aW9uKTsKKyAgICByZXR1
cm4gbnVsbHB0cjsKK30KKwogdm9pZCBUcmVlQnVpbGRlcjo6YnVpbGRJbmxpbmVEaXNwbGF5VHJl
ZShjb25zdCBMYXlvdXQ6OkxheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgTGF5b3V0OjpD
b250YWluZXJCb3gmIGlubGluZUZvcm1hdHRpbmdSb290LCBJbnNlcnRpb25Qb3NpdGlvbiYgaW5z
ZXJ0aW9uUG9zaXRpb24pCiB7CiAgICAgYXV0byYgaW5saW5lRm9ybWF0dGluZ1N0YXRlID0gbGF5
b3V0U3RhdGUuZXN0YWJsaXNoZWRJbmxpbmVGb3JtYXR0aW5nU3RhdGUoaW5saW5lRm9ybWF0dGlu
Z1Jvb3QpOwpAQCAtMTkwLDkgKzIxMSwxMyBAQCB2b2lkIFRyZWVCdWlsZGVyOjpidWlsZElubGlu
ZURpc3BsYXlUcmVlKGNvbnN0IExheW91dDo6TGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLAogICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAorICAgICAgICAvLyBGSVhNRTogV29ya2Fy
b3VuZCBmb3Igd2Via2l0Lm9yZ2IvYi8yMTkzMzUuCisgICAgICAgIGlmIChydW4ubGF5b3V0Qm94
KCkuaXNMaW5lQnJlYWtCb3goKSAmJiBydW4ubGF5b3V0Qm94KCkuaXNPdXRPZkZsb3dQb3NpdGlv
bmVkKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKwogICAgICAgICBhdXRvIGdlb21ldHJ5ID0g
bGF5b3V0U3RhdGUuZ2VvbWV0cnlGb3JCb3gocnVuLmxheW91dEJveCgpKTsKICAgICAgICAgYXV0
byBkaXNwbGF5Qm94ID0gbV9ib3hGYWN0b3J5LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gocnVuLmxh
eW91dEJveCgpLCBnZW9tZXRyeSwgcG9zaXRpb25pbmdDb250ZXh0KCkuaW5GbG93Q29udGFpbmlu
Z0Jsb2NrQ29udGV4dCgpKTsKLSAgICAgICAgaW5zZXJ0KFdURk1vdmUoZGlzcGxheUJveCksIGlu
c2VydGlvblBvc2l0aW9uKTsKKyAgICAgICAgaW5zZXJ0SW50b1RyZWUoV1RGTW92ZShkaXNwbGF5
Qm94KSwgaW5zZXJ0aW9uUG9zaXRpb24pOwogICAgIH0KIH0KIApAQCAtMjA2LDkgKzIzMSwxMCBA
QCB2b2lkIFRyZWVCdWlsZGVyOjpyZWN1cnNpdmVCdWlsZERpc3BsYXlUcmVlKGNvbnN0IExheW91
dDo6TGF5b3V0U3RhdGUmIGxheW91dFN0YQogICAgICAgICBkaXNwbGF5Qm94ID0gbV9ib3hGYWN0
b3J5LmRpc3BsYXlCb3hGb3JCb2R5Qm94KGxheW91dEJveCwgZ2VvbWV0cnksIGNvbnRhaW5pbmdC
bG9ja0NvbnRleHQsIG1fcm9vdEJhY2tncm91bmRQcm9wZ2F0aW9uKTsKICAgICBlbHNlCiAgICAg
ICAgIGRpc3BsYXlCb3ggPSBtX2JveEZhY3RvcnkuZGlzcGxheUJveEZvckxheW91dEJveChsYXlv
dXRCb3gsIGdlb21ldHJ5LCBjb250YWluaW5nQmxvY2tDb250ZXh0KTsKLSAgICAKLSAgICBpbnNl
cnQoV1RGTW92ZShkaXNwbGF5Qm94KSwgaW5zZXJ0aW9uUG9zaXRpb24pOwogCisgICAgQm94JiBj
dXJyZW50Qm94ID0gKmRpc3BsYXlCb3g7CisKKyAgICBhdXRvKiBzdGFja2luZ0l0ZW0gPSBpbnNl
cnRJbnRvVHJlZShXVEZNb3ZlKGRpc3BsYXlCb3gpLCBpbnNlcnRpb25Qb3NpdGlvbik7CiAgICAg
aWYgKCFpczxMYXlvdXQ6OkNvbnRhaW5lckJveD4obGF5b3V0Qm94KSkKICAgICAgICAgcmV0dXJu
OwogCkBAIC0yMTYsMTAgKzI0MiwxMCBAQCB2b2lkIFRyZWVCdWlsZGVyOjpyZWN1cnNpdmVCdWls
ZERpc3BsYXlUcmVlKGNvbnN0IExheW91dDo6TGF5b3V0U3RhdGUmIGxheW91dFN0YQogICAgIGlm
ICghbGF5b3V0Q29udGFpbmVyQm94Lmhhc0NoaWxkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IENvbnRhaW5lckJveCYgY3VycmVudEJveCA9IGRvd25jYXN0PENvbnRhaW5lckJveD4oKmluc2Vy
dGlvblBvc2l0aW9uLmN1cnJlbnRDaGlsZCk7Ci0gICAgYXV0byBpbnNlcnRpb25Qb3NpdGlvbkZv
ckNoaWxkcmVuID0gSW5zZXJ0aW9uUG9zaXRpb24geyBjdXJyZW50Qm94IH07CisgICAgQ29udGFp
bmVyQm94JiBjdXJyZW50Q29udGFpbmVyQm94ID0gZG93bmNhc3Q8Q29udGFpbmVyQm94PihjdXJy
ZW50Qm94KTsKKyAgICBwdXNoU3RhdGVGb3JCb3hEZXNjZW5kYW50cyhsYXlvdXRDb250YWluZXJC
b3gsIGdlb21ldHJ5LCBjdXJyZW50Q29udGFpbmVyQm94LCBzdGFja2luZ0l0ZW0pOwogCi0gICAg
cHVzaFN0YXRlRm9yQm94RGVzY2VuZGFudHMobGF5b3V0Q29udGFpbmVyQm94LCBnZW9tZXRyeSwg
Y3VycmVudEJveCk7CisgICAgYXV0byBpbnNlcnRpb25Qb3NpdGlvbkZvckNoaWxkcmVuID0gSW5z
ZXJ0aW9uUG9zaXRpb24geyBjdXJyZW50Q29udGFpbmVyQm94IH07CiAKICAgICBlbnVtIGNsYXNz
IERlc2NlbmRhbnRCb3hJbmNsdXNpb24geyBBbGxCb3hlcywgT3V0T2ZGbG93T25seSB9OwogICAg
IGF1dG8gYm94SW5jbHVzaW9uID0gRGVzY2VuZGFudEJveEluY2x1c2lvbjo6QWxsQm94ZXM7CkBA
IC0yNDIsMzQgKzI2OCwzNSBAQCB2b2lkIFRyZWVCdWlsZGVyOjpyZWN1cnNpdmVCdWlsZERpc3Bs
YXlUcmVlKGNvbnN0IExheW91dDo6TGF5b3V0U3RhdGUmIGxheW91dFN0YQogICAgICAgICAgICAg
cmVjdXJzaXZlQnVpbGREaXNwbGF5VHJlZShsYXlvdXRTdGF0ZSwgY2hpbGQsIGluc2VydGlvblBv
c2l0aW9uRm9yQ2hpbGRyZW4pOwogICAgIH0KIAotICAgIHBvcFN0YXRlKCk7CisgICAgcG9wU3Rh
dGUoY3VycmVudENvbnRhaW5lckJveCk7CiB9CiAKICNpZiBFTkFCTEUoVFJFRV9ERUJVR0dJTkcp
CiAKLXN0YXRpYyB2b2lkIG91dHB1dERpc3BsYXlCb3goVGV4dFN0cmVhbSYgc3RyZWFtLCBjb25z
dCBCb3gmIGRpc3BsYXlCb3gsIHVuc2lnbmVkKQorc3RhdGljIHZvaWQgb3V0cHV0RGlzcGxheUJv
eChUZXh0U3RyZWFtJiBzdHJlYW0sIGNvbnN0IEJveCYgZGlzcGxheUJveCwgYm9vbCB3cml0ZUlu
ZGVudCA9IHRydWUpCiB7Ci0gICAgc3RyZWFtLndyaXRlSW5kZW50KCk7CisgICAgaWYgKHdyaXRl
SW5kZW50KQorICAgICAgICBzdHJlYW0ud3JpdGVJbmRlbnQoKTsKIAogICAgIHN0cmVhbSA8PCBk
aXNwbGF5Qm94LmRlYnVnRGVzY3JpcHRpb24oKTsKICAgICBzdHJlYW0gPDwgIlxuIjsKIH0KIAot
c3RhdGljIHZvaWQgb3V0cHV0RGlzcGxheVRyZWUoVGV4dFN0cmVhbSYgc3RyZWFtLCBjb25zdCBC
b3gmIGRpc3BsYXlCb3gsIHVuc2lnbmVkIGRlcHRoKQorc3RhdGljIHZvaWQgb3V0cHV0RGlzcGxh
eVRyZWUoVGV4dFN0cmVhbSYgc3RyZWFtLCBjb25zdCBCb3gmIGRpc3BsYXlCb3gsIGJvb2wgd3Jp
dGVGaXJzdEl0ZW1JbmRlbnQgPSB0cnVlKQogewotICAgIG91dHB1dERpc3BsYXlCb3goc3RyZWFt
LCBkaXNwbGF5Qm94LCBkZXB0aCk7CisgICAgb3V0cHV0RGlzcGxheUJveChzdHJlYW0sIGRpc3Bs
YXlCb3gsIHdyaXRlRmlyc3RJdGVtSW5kZW50KTsKIAogICAgIGlmIChpczxDb250YWluZXJCb3g+
KGRpc3BsYXlCb3gpKSB7CiAgICAgICAgIFRleHRTdHJlYW06OkluZGVudFNjb3BlIGluZGVudChz
dHJlYW0pOwogICAgICAgICBmb3IgKGF1dG8gY2hpbGQgPSBkb3duY2FzdDxDb250YWluZXJCb3g+
KGRpc3BsYXlCb3gpLmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJs
aW5nKCkpCi0gICAgICAgICAgICBvdXRwdXREaXNwbGF5VHJlZShzdHJlYW0sICpjaGlsZCwgZGVw
dGggKyAxKTsKKyAgICAgICAgICAgIG91dHB1dERpc3BsYXlUcmVlKHN0cmVhbSwgKmNoaWxkKTsK
ICAgICB9CiB9CiAKIFN0cmluZyBkaXNwbGF5VHJlZUFzVGV4dChjb25zdCBCb3gmIGJveCkKIHsK
ICAgICBUZXh0U3RyZWFtIHN0cmVhbShUZXh0U3RyZWFtOjpMaW5lTW9kZTo6TXVsdGlwbGVMaW5l
LCBUZXh0U3RyZWFtOjpGb3JtYXR0aW5nOjpTVkdTdHlsZVJlY3QpOwotICAgIG91dHB1dERpc3Bs
YXlUcmVlKHN0cmVhbSwgYm94LCAxKTsKKyAgICBvdXRwdXREaXNwbGF5VHJlZShzdHJlYW0sIGJv
eCk7CiAgICAgcmV0dXJuIHN0cmVhbS5yZWxlYXNlKCk7CiB9CiAKQEAgLTI3OSw2ICszMDYsMzcg
QEAgdm9pZCBzaG93RGlzcGxheVRyZWUoY29uc3QgQm94JiBib3gpCiAgICAgV1RGTG9nQWx3YXlz
KCIlcyIsIHRyZWVBc1RleHQudXRmOCgpLmRhdGEoKSk7CiB9CiAKK3N0YXRpYyB2b2lkIG91dHB1
dFN0YWNraW5nVHJlZShUZXh0U3RyZWFtJiBzdHJlYW0sIGNvbnN0IGNoYXIqIHByZWZpeCwgY29u
c3QgU3RhY2tpbmdJdGVtJiBzdGFja2luZ0l0ZW0pCit7CisgICAgc3RyZWFtLndyaXRlSW5kZW50
KCk7CisgICAgc3RyZWFtIDw8IHByZWZpeDsKKworICAgIFRleHRTdHJlYW06OkluZGVudFNjb3Bl
IGluZGVudChzdHJlYW0pOworICAgIG91dHB1dERpc3BsYXlUcmVlKHN0cmVhbSwgc3RhY2tpbmdJ
dGVtLmJveCgpLCBmYWxzZSk7CisKKyAgICB7CisgICAgICAgIFRleHRTdHJlYW06OkluZGVudFNj
b3BlIGluZGVudChzdHJlYW0pOworICAgICAgICBmb3IgKGF1dG8mIGNoaWxkU3RhY2tpbmdJdGVt
IDogc3RhY2tpbmdJdGVtLm5lZ2F0aXZlWk9yZGVyTGlzdCgpKQorICAgICAgICAgICAgb3V0cHV0
U3RhY2tpbmdUcmVlKHN0cmVhbSwgIi0gIiwgKmNoaWxkU3RhY2tpbmdJdGVtKTsKKworICAgICAg
ICBmb3IgKGF1dG8mIGNoaWxkU3RhY2tpbmdJdGVtIDogc3RhY2tpbmdJdGVtLnBvc2l0aXZlWk9y
ZGVyTGlzdCgpKQorICAgICAgICAgICAgb3V0cHV0U3RhY2tpbmdUcmVlKHN0cmVhbSwgY2hpbGRT
dGFja2luZ0l0ZW0tPmlzU3RhY2tpbmdDb250ZXh0KCkgPyAiKyAiIDogInAgIiwgKmNoaWxkU3Rh
Y2tpbmdJdGVtKTsKKyAgICB9Cit9CisKK1N0cmluZyBkaXNwbGF5VHJlZUFzVGV4dChjb25zdCBT
dGFja2luZ0l0ZW0mIHN0YWNraW5nSXRlbSkKK3sKKyAgICBUZXh0U3RyZWFtIHN0cmVhbShUZXh0
U3RyZWFtOjpMaW5lTW9kZTo6TXVsdGlwbGVMaW5lLCBUZXh0U3RyZWFtOjpGb3JtYXR0aW5nOjpT
VkdTdHlsZVJlY3QpOworICAgIG91dHB1dFN0YWNraW5nVHJlZShzdHJlYW0sICIiLCBzdGFja2lu
Z0l0ZW0pOworICAgIHJldHVybiBzdHJlYW0ucmVsZWFzZSgpOworfQorCit2b2lkIHNob3dEaXNw
bGF5VHJlZShjb25zdCBTdGFja2luZ0l0ZW0mIHN0YWNraW5nSXRlbSkKK3sKKyAgICBhdXRvIHRy
ZWVBc1RleHQgPSBkaXNwbGF5VHJlZUFzVGV4dChzdGFja2luZ0l0ZW0pOworICAgIFdURkxvZ0Fs
d2F5cygiJXMiLCB0cmVlQXNUZXh0LnV0ZjgoKS5kYXRhKCkpOworfQorCiAjZW5kaWYKIAogfSAv
LyBuYW1lc3BhY2UgRGlzcGxheQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZGlzcGxheS9E
aXNwbGF5VHJlZUJ1aWxkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvRGlzcGxheVRyZWVC
dWlsZGVyLmgKaW5kZXggMjFkZTE2MjE1Y2I0NzY5NGJjZTQyZTAwMzIxYTczZjZlNGYyYTVlNi4u
ZDc4OTZjYjhhMjE0NjM2NGViODdlNjE4OWI5NGYzYThkYTIyYjdlNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZGlzcGxheS9EaXNwbGF5VHJlZUJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kaXNwbGF5L0Rpc3BsYXlUcmVlQnVpbGRlci5oCkBAIC01MCw2ICs1MCw3IEBAIG5hbWVz
cGFjZSBEaXNwbGF5IHsKIGNsYXNzIEJveDsKIGNsYXNzIENvbnRhaW5lckJveDsKIGNsYXNzIFBv
c2l0aW9uaW5nQ29udGV4dDsKK2NsYXNzIFN0YWNraW5nSXRlbTsKIGNsYXNzIFRyZWU7CiBzdHJ1
Y3QgQnVpbGRpbmdTdGF0ZTsKIApAQCAtNjgsMjMgKzY5LDI3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCByZWN1cnNpdmVCdWlsZERpc3BsYXlUcmVlKGNvbnN0IExheW91dDo6TGF5b3V0U3RhdGUmLCBj
b25zdCBMYXlvdXQ6OkJveCYsIEluc2VydGlvblBvc2l0aW9uJik7CiAgICAgdm9pZCBidWlsZElu
bGluZURpc3BsYXlUcmVlKGNvbnN0IExheW91dDo6TGF5b3V0U3RhdGUmLCBjb25zdCBMYXlvdXQ6
OkNvbnRhaW5lckJveCYsIEluc2VydGlvblBvc2l0aW9uJik7CiAKKyAgICBTdGFja2luZ0l0ZW0q
IGluc2VydEludG9UcmVlKHN0ZDo6dW5pcXVlX3B0cjxCb3g+JiYsIEluc2VydGlvblBvc2l0aW9u
Jik7CiAgICAgdm9pZCBpbnNlcnQoc3RkOjp1bmlxdWVfcHRyPEJveD4mJiwgSW5zZXJ0aW9uUG9z
aXRpb24mKSBjb25zdDsKIAotICAgIHZvaWQgcHVzaFN0YXRlRm9yQm94RGVzY2VuZGFudHMoY29u
c3QgTGF5b3V0OjpDb250YWluZXJCb3gmLCBjb25zdCBMYXlvdXQ6OkJveEdlb21ldHJ5JiwgY29u
c3QgQ29udGFpbmVyQm94Jik7Ci0gICAgdm9pZCBwb3BTdGF0ZSgpOworICAgIHZvaWQgcHVzaFN0
YXRlRm9yQm94RGVzY2VuZGFudHMoY29uc3QgTGF5b3V0OjpDb250YWluZXJCb3gmLCBjb25zdCBM
YXlvdXQ6OkJveEdlb21ldHJ5JiwgY29uc3QgQ29udGFpbmVyQm94JiwgU3RhY2tpbmdJdGVtKik7
CisgICAgdm9pZCBwb3BTdGF0ZShjb25zdCBDb250YWluZXJCb3gmIGN1cnJlbnRCb3gpOwogICAg
IAogICAgIGNvbnN0IEJ1aWxkaW5nU3RhdGUmIGN1cnJlbnRTdGF0ZSgpIGNvbnN0OwogICAgIGNv
bnN0IFBvc2l0aW9uaW5nQ29udGV4dCYgcG9zaXRpb25pbmdDb250ZXh0KCkgY29uc3Q7CiAKICAg
ICBCb3hGYWN0b3J5IG1fYm94RmFjdG9yeTsKICAgICBSb290QmFja2dyb3VuZFByb3BhZ2F0aW9u
IG1fcm9vdEJhY2tncm91bmRQcm9wZ2F0aW9uIHsgUm9vdEJhY2tncm91bmRQcm9wYWdhdGlvbjo6
Tm9uZSB9OwotICAgIAorCiAgICAgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxCdWlsZGluZ1N0YXRl
Pj4gbV9zdGF0ZVN0YWNrOwogfTsKIAogI2lmIEVOQUJMRShUUkVFX0RFQlVHR0lORykKIFN0cmlu
ZyBkaXNwbGF5VHJlZUFzVGV4dChjb25zdCBCb3gmKTsKIHZvaWQgc2hvd0Rpc3BsYXlUcmVlKGNv
bnN0IEJveCYpOworCitTdHJpbmcgZGlzcGxheVRyZWVBc1RleHQoY29uc3QgU3RhY2tpbmdJdGVt
Jik7Cit2b2lkIHNob3dEaXNwbGF5VHJlZShjb25zdCBTdGFja2luZ0l0ZW0mKTsKICNlbmRpZgog
CiB9IC8vIG5hbWVzcGFjZSBEaXNwbGF5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kaXNw
bGF5L2Nzcy9EaXNwbGF5Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3Bs
YXlCb3guY3BwCmluZGV4IDcxMjllOTM4MDY1ZDdiYTE0ZDIyYTJhYWMzZWMyNzIzOGMzNzEzMTEu
LmUzZGE3Y2ZhMTMyMjZiYzBlZjk4ZTFiY2M5ZmNlZDZmZDkzZTM0MzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlCb3guY3BwCkBAIC01MCw2ICs1MCwxMSBAQCB2b2lkIEJv
eDo6c2V0TmV4dFNpYmxpbmcoc3RkOjp1bmlxdWVfcHRyPEJveD4mJiBib3gpCiAgICAgbV9uZXh0
U2libGluZyA9IFdURk1vdmUoYm94KTsKIH0KIAorYm9vbCBCb3g6OnBhcnRpY2lwYXRlc0luWk9y
ZGVyU29ydGluZygpIGNvbnN0Cit7CisgICAgcmV0dXJuICFpc0xpbmVCcmVha0JveCgpICYmIHN0
eWxlKCkucGFydGljaXBhdGVzSW5aT3JkZXJTb3J0aW5nKCk7Cit9CisKIFN0cmluZyBCb3g6OmRl
YnVnRGVzY3JpcHRpb24oKSBjb25zdAogewogICAgIFRleHRTdHJlYW0gc3RyZWFtOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheUJveC5oIGIvU291cmNlL1dl
YkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheUJveC5oCmluZGV4IDUxOTk0MGI1NTQwNmY1MTIxZDY2
YjBhYWI4MGIwMzZhYTU4ZjJmY2IuLjQ4OTg3ZjBhOGM2NjQxMWZkYjk1NTcxYTliOThlYTc5MDA2
YmE2NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlCb3gu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5Qm94LmgKQEAgLTQ2LDYg
KzQ2LDcgQEAgcHVibGljOgogICAgICAgICBDb250YWluZXJCb3ggICAgPSAxIDw8IDEsCiAgICAg
ICAgIEltYWdlQm94ICAgICAgICA9IDEgPDwgMiwKICAgICAgICAgVGV4dEJveCAgICAgICAgID0g
MSA8PCAzLAorICAgICAgICBMaW5lQnJlYWtCb3ggICAgPSAxIDw8IDQsIC8vIEZJWE1FOiBXb3Jr
YXJvdW5kIGZvciB3ZWJraXQub3JnL2IvMjE5MzM1CiAgICAgfTsKIAogICAgIEJveChBYnNvbHV0
ZUZsb2F0UmVjdCwgU3R5bGUmJiwgT3B0aW9uU2V0PEZsYWdzPiA9IHsgfSk7CkBAIC02MCw2ICs2
MSw5IEBAIHB1YmxpYzoKICAgICBib29sIGlzSW1hZ2VCb3goKSBjb25zdCB7IHJldHVybiBtX2Zs
YWdzLmNvbnRhaW5zKEZsYWdzOjpJbWFnZUJveCk7IH0KICAgICBib29sIGlzUmVwbGFjZWRCb3go
KSBjb25zdCB7IHJldHVybiBtX2ZsYWdzLmNvbnRhaW5zKEZsYWdzOjpJbWFnZUJveCk7IC8qIGFu
ZCBvdGhlciB0eXBlcyBsYXRlci4gKi8gfQogICAgIGJvb2wgaXNUZXh0Qm94KCkgY29uc3QgeyBy
ZXR1cm4gbV9mbGFncy5jb250YWlucyhGbGFnczo6VGV4dEJveCk7IH0KKyAgICBib29sIGlzTGlu
ZUJyZWFrQm94KCkgY29uc3QgeyByZXR1cm4gbV9mbGFncy5jb250YWlucyhGbGFnczo6TGluZUJy
ZWFrQm94KTsgfQorCisgICAgYm9vbCBwYXJ0aWNpcGF0ZXNJblpPcmRlclNvcnRpbmcoKSBjb25z
dDsKIAogICAgIGNvbnN0IEJveCogbmV4dFNpYmxpbmcoKSBjb25zdCB7IHJldHVybiBtX25leHRT
aWJsaW5nLmdldCgpOyB9CiAgICAgdm9pZCBzZXROZXh0U2libGluZyhzdGQ6OnVuaXF1ZV9wdHI8
Qm94PiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlC
b3hGYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlCb3hGYWN0
b3J5LmNwcAppbmRleCAwYWVlZGEwYWVjYzBjOGRmZWQwNjdhZDcxNGViNGUxZGJhZmIyOTk4Li42
NTIwNGJkMGMzMGE4YjcxYjE5MWMxYjA0NDRmOGVjZjFjMGExYTc5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5Qm94RmFjdG9yeS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheUJveEZhY3RvcnkuY3BwCkBAIC02Nyw3ICs2Nyw3
IEBAIFJvb3RCYWNrZ3JvdW5kUHJvcGFnYXRpb24gQm94RmFjdG9yeTo6ZGV0ZXJtaW5lUm9vdEJh
Y2tncm91bmRQcm9wYWdhdGlvbihjb25zdCBMCiAgICAgcmV0dXJuIFJvb3RCYWNrZ3JvdW5kUHJv
cGFnYXRpb246Ok5vbmU7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxCb3g+IEJveEZhY3Rvcnk6OmRp
c3BsYXlCb3hGb3JSb290Qm94KGNvbnN0IExheW91dDo6Q29udGFpbmVyQm94JiByb290TGF5b3V0
Qm94LCBjb25zdCBMYXlvdXQ6OkJveEdlb21ldHJ5JiBnZW9tZXRyeSwgUm9vdEJhY2tncm91bmRQ
cm9wYWdhdGlvbiByb290QmFja2dyb3VuZFByb3BhZ2F0aW9uKSBjb25zdAorc3RkOjp1bmlxdWVf
cHRyPENvbnRhaW5lckJveD4gQm94RmFjdG9yeTo6ZGlzcGxheUJveEZvclJvb3RCb3goY29uc3Qg
TGF5b3V0OjpDb250YWluZXJCb3gmIHJvb3RMYXlvdXRCb3gsIGNvbnN0IExheW91dDo6Qm94R2Vv
bWV0cnkmIGdlb21ldHJ5LCBSb290QmFja2dyb3VuZFByb3BhZ2F0aW9uIHJvb3RCYWNrZ3JvdW5k
UHJvcGFnYXRpb24pIGNvbnN0CiB7CiAgICAgQVNTRVJUKGlzPExheW91dDo6SW5pdGlhbENvbnRh
aW5pbmdCbG9jaz4ocm9vdExheW91dEJveCkpOwogCkBAIC0xMzUsNyArMTM1LDEyIEBAIHN0ZDo6
dW5pcXVlX3B0cjxCb3g+IEJveEZhY3Rvcnk6OmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goY29uc3Qg
TGF5b3V0OjpCb3gmIGxheW91CiAgICAgICAgIHJldHVybiBjb250YWluZXJCb3g7CiAgICAgfQog
Ci0gICAgcmV0dXJuIG1ha2VVbmlxdWU8Qm94PihzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKGJvcmRl
ckJveFJlY3QsIG1fcGl4ZWxTbmFwcGluZ0ZhY3RvciksIFdURk1vdmUoc3R5bGUpKTsKKyAgICBP
cHRpb25TZXQ8Qm94OjpGbGFncz4gZmxhZ3M7CisgICAgLy8gRklYTUU6IFdvcmthcm91bmQgZm9y
IHdlYmtpdC5vcmcvYi8yMTkzMzUuCisgICAgaWYgKGxheW91dEJveC5pc0xpbmVCcmVha0JveCgp
KQorICAgICAgICBmbGFncy5hZGQoQm94OjpGbGFnczo6TGluZUJyZWFrQm94KTsKKworICAgIHJl
dHVybiBtYWtlVW5pcXVlPEJveD4oc25hcFJlY3RUb0RldmljZVBpeGVscyhib3JkZXJCb3hSZWN0
LCBtX3BpeGVsU25hcHBpbmdGYWN0b3IpLCBXVEZNb3ZlKHN0eWxlKSwgZmxhZ3MpOwogfQogCiBz
dGQ6OnVuaXF1ZV9wdHI8Qm94PiBCb3hGYWN0b3J5OjpkaXNwbGF5Qm94Rm9yVGV4dFJ1bihjb25z
dCBMYXlvdXQ6OkxpbmVSdW4mIHJ1biwgY29uc3QgTGF5b3V0OjpJbmxpbmVMaW5lR2VvbWV0cnkm
IGxpbmVHZW9tZXRyeSwgY29uc3QgQ29udGFpbmluZ0Jsb2NrQ29udGV4dCYgY29udGFpbmluZ0Js
b2NrQ29udGV4dCkgY29uc3QKQEAgLTI2NCw3ICsyNjksNyBAQCB2b2lkIEJveEZhY3Rvcnk6OnNl
dHVwQm94TW9kZWxCb3goQm94TW9kZWxCb3gmIGJveCwgY29uc3QgTGF5b3V0OjpCb3gmIGxheW91
dEJveAogICAgIGF1dG8gYm94RGVjb3JhdGlvbkRhdGEgPSBjb25zdHJ1Y3RCb3hEZWNvcmF0aW9u
RGF0YShsYXlvdXRCb3gsIGxheW91dEdlb21ldHJ5LCBzdHlsZUZvckJhY2tncm91bmQsIGNvbnRh
aW5pbmdCbG9ja0NvbnRleHQub2Zmc2V0RnJvbVJvb3QpOwogICAgIGJveC5zZXRCb3hEZWNvcmF0
aW9uRGF0YShXVEZNb3ZlKGJveERlY29yYXRpb25EYXRhKSk7CiAKLSAgICBpZiAoYm94LnN0eWxl
KCkucGFydGljaXBhdGVzSW5aT3JkZXJTb3J0aW5nKCkpIHsKKyAgICBpZiAoYm94LnBhcnRpY2lw
YXRlc0luWk9yZGVyU29ydGluZygpKSB7CiAgICAgICAgIFJlZlB0cjxCb3hDbGlwPiBjbGlwID0g
Y29udGFpbmluZ0Jsb2NrQ29udGV4dC5ib3guY2xpcEZvckRlc2NlbmRhbnRzKCk7CiAgICAgICAg
IGJveC5zZXRBbmNlc3RvckNsaXAoV1RGTW92ZShjbGlwKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheUJveEZhY3RvcnkuaCBiL1NvdXJjZS9X
ZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlCb3hGYWN0b3J5LmgKaW5kZXggYWM1ZTkxZjk0OTI2
ZWVmNTA4ZDZmZTMyMGVmZjUwYjczOTYyNDkyOS4uMDc3NzBlYTdkYmJiNGJlYTAyNDBiMzkwNzUx
NDg4NzRjNGQ2ZTc1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlz
cGxheUJveEZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5
Qm94RmFjdG9yeS5oCkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBSb290
QmFja2dyb3VuZFByb3BhZ2F0aW9uIGRldGVybWluZVJvb3RCYWNrZ3JvdW5kUHJvcGFnYXRpb24o
Y29uc3QgTGF5b3V0OjpDb250YWluZXJCb3gmIHJvb3RMYXlvdXRCb3gpOwogCi0gICAgc3RkOjp1
bmlxdWVfcHRyPEJveD4gZGlzcGxheUJveEZvclJvb3RCb3goY29uc3QgTGF5b3V0OjpDb250YWlu
ZXJCb3gmLCBjb25zdCBMYXlvdXQ6OkJveEdlb21ldHJ5JiwgUm9vdEJhY2tncm91bmRQcm9wYWdh
dGlvbikgY29uc3Q7CisgICAgc3RkOjp1bmlxdWVfcHRyPENvbnRhaW5lckJveD4gZGlzcGxheUJv
eEZvclJvb3RCb3goY29uc3QgTGF5b3V0OjpDb250YWluZXJCb3gmLCBjb25zdCBMYXlvdXQ6OkJv
eEdlb21ldHJ5JiwgUm9vdEJhY2tncm91bmRQcm9wYWdhdGlvbikgY29uc3Q7CiAgICAgc3RkOjp1
bmlxdWVfcHRyPEJveD4gZGlzcGxheUJveEZvckJvZHlCb3goY29uc3QgTGF5b3V0OjpCb3gmLCBj
b25zdCBMYXlvdXQ6OkJveEdlb21ldHJ5JiwgY29uc3QgQ29udGFpbmluZ0Jsb2NrQ29udGV4dCYs
IFJvb3RCYWNrZ3JvdW5kUHJvcGFnYXRpb24pIGNvbnN0OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxC
b3g+IGRpc3BsYXlCb3hGb3JMYXlvdXRCb3goY29uc3QgTGF5b3V0OjpCb3gmLCBjb25zdCBMYXlv
dXQ6OkJveEdlb21ldHJ5JiwgY29uc3QgQ29udGFpbmluZ0Jsb2NrQ29udGV4dCYpIGNvbnN0Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5Q1NTUGFpbnRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5Q1NTUGFpbnRlci5jcHAK
aW5kZXggYzNkMTlkNTZhZDM5YTgyNWVhMjg0NGNiYjIxOGZlZmM0YmY3MDEwZi4uNjdiMTdlNjEz
YzRmMTQ0MzkxMTk1OWVmYWEzMjdlMzY5ODAxNWQ4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZGlzcGxheS9jc3MvRGlzcGxheUNTU1BhaW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Rpc3BsYXkvY3NzL0Rpc3BsYXlDU1NQYWludGVyLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2lu
Y2x1ZGUgIkRpc3BsYXlCb3hSYXJlR2VvbWV0cnkuaCIKICNpbmNsdWRlICJEaXNwbGF5Q29udGFp
bmVyQm94LmgiCiAjaW5jbHVkZSAiRGlzcGxheVBhaW50aW5nQ29udGV4dC5oIgorI2luY2x1ZGUg
IkRpc3BsYXlTdGFja2luZ0l0ZW0uaCIKICNpbmNsdWRlICJEaXNwbGF5U3R5bGUuaCIKICNpbmNs
dWRlICJEaXNwbGF5VHJlZS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgpAQCAtODIs
OCArODMsNyBAQCB2b2lkIENTU1BhaW50ZXI6OnJlY3Vyc2l2ZVBhaW50RGVzY2VuZGFudHNGb3JQ
aGFzZShjb25zdCBDb250YWluZXJCb3gmIGNvbnRhaW5lcgogCiAgICAgZm9yIChjb25zdCBhdXRv
KiBjaGlsZCA9IGNvbnRhaW5lckJveC5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxk
LT5uZXh0U2libGluZygpKSB7CiAgICAgICAgIGF1dG8mIGJveCA9ICpjaGlsZDsKLSAgICAgICAg
aWYgKHBhcnRpY2lwYXRlc0luWk9yZGVyU29ydGluZyhib3gpKQotICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgIEFTU0VSVCghYm94LnBhcnRpY2lwYXRlc0luWk9yZGVyU29ydGluZygpKTsK
IAogICAgICAgICBzd2l0Y2ggKHBhaW50UGhhc2UpIHsKICAgICAgICAgY2FzZSBQYWludFBoYXNl
OjpCbG9ja0JhY2tncm91bmRzOgpAQCAtMTI0LDEwICsxMjQsMTIgQEAgdm9pZCBDU1NQYWludGVy
OjpyZWN1cnNpdmVQYWludERlc2NlbmRhbnRzKGNvbnN0IENvbnRhaW5lckJveCYgY29udGFpbmVy
Qm94LCBQYWkKICAgICByZWN1cnNpdmVQYWludERlc2NlbmRhbnRzRm9yUGhhc2UoY29udGFpbmVy
Qm94LCBwYWludGluZ0NvbnRleHQsIFBhaW50UGhhc2U6OkJsb2NrRm9yZWdyb3VuZHMpOwogfQog
Ci12b2lkIENTU1BhaW50ZXI6OnBhaW50QXRvbWljYWxseVBhaW50ZWRCb3goY29uc3QgQm94JiBi
b3gsIFBhaW50aW5nQ29udGV4dCYgcGFpbnRpbmdDb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0
eVJlY3QsIEluY2x1ZGVTdGFja2luZ0NvbnRleHREZXNjZW5kYW50cyBpbmNsdWRlU3RhY2tpbmdD
b250ZXh0RGVzY2VuZGFudHMpCit2b2lkIENTU1BhaW50ZXI6OnBhaW50QXRvbWljYWxseVBhaW50
ZWRCb3goY29uc3QgU3RhY2tpbmdJdGVtJiBzdGFja2luZ0l0ZW0sIFBhaW50aW5nQ29udGV4dCYg
cGFpbnRpbmdDb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QsIEluY2x1ZGVTdGFja2lu
Z0NvbnRleHREZXNjZW5kYW50cyBpbmNsdWRlU3RhY2tpbmdDb250ZXh0RGVzY2VuZGFudHMpCiB7
CiAgICAgVU5VU0VEX1BBUkFNKGRpcnR5UmVjdCk7CiAKKyAgICBhdXRvJiBib3ggPSBzdGFja2lu
Z0l0ZW0uYm94KCk7CisKICAgICBhdXRvIG5lZWRUb1NhdmVTdGF0ZSA9IFtdKGNvbnN0IEJveCYg
Ym94KSB7CiAgICAgICAgIGlmICghaXM8Qm94TW9kZWxCb3g+KGJveCkpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CkBAIC0xNjEsMTggKzE2MywxMyBAQCB2b2lkIENTU1BhaW50ZXI6OnBhaW50
QXRvbWljYWxseVBhaW50ZWRCb3goY29uc3QgQm94JiBib3gsIFBhaW50aW5nQ29udGV4dCYgcGFp
bgogICAgIGlmICghaXM8Q29udGFpbmVyQm94Pihib3gpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBhdXRvJiBjb250YWluZXJCb3ggPSBkb3duY2FzdDxDb250YWluZXJCb3g+KGJveCk7Ci0KLSAg
ICBWZWN0b3I8Y29uc3QgQm94TW9kZWxCb3gqPiBuZWdhdGl2ZVpPcmRlckxpc3Q7Ci0gICAgVmVj
dG9yPGNvbnN0IEJveE1vZGVsQm94Kj4gcG9zaXRpdmVaT3JkZXJMaXN0OwogICAgIGlmIChpbmNs
dWRlU3RhY2tpbmdDb250ZXh0RGVzY2VuZGFudHMgPT0gSW5jbHVkZVN0YWNraW5nQ29udGV4dERl
c2NlbmRhbnRzOjpZZXMpIHsKLSAgICAgICAgY29sbGVjdFN0YWNraW5nQ29udGV4dERlc2NlbmRh
bnRzKGNvbnRhaW5lckJveCwgbmVnYXRpdmVaT3JkZXJMaXN0LCBwb3NpdGl2ZVpPcmRlckxpc3Qp
OwotCiAgICAgICAgIC8vIFN0YWNraW5nIGNvbnRleHRzIGZvcm1lZCBieSBwb3NpdGlvbmVkIGRl
c2NlbmRhbnRzIHdpdGggbmVnYXRpdmUgei1pbmRpY2VzIChleGNsdWRpbmcgMCkgaW4gei1pbmRl
eCBvcmRlciAobW9zdCBuZWdhdGl2ZSBmaXJzdCkgdGhlbiB0cmVlIG9yZGVyLgotICAgICAgICBm
b3IgKGF1dG8qIGJveCA6IG5lZ2F0aXZlWk9yZGVyTGlzdCkKLSAgICAgICAgICAgIHBhaW50U3Rh
Y2tpbmdDb250ZXh0KCpib3gsIHBhaW50aW5nQ29udGV4dCwgZGlydHlSZWN0KTsKKyAgICAgICAg
Zm9yIChhdXRvJiBzdGFja2luZ0l0ZW0gOiBzdGFja2luZ0l0ZW0ubmVnYXRpdmVaT3JkZXJMaXN0
KCkpCisgICAgICAgICAgICBwYWludFN0YWNraW5nQ29udGV4dCgqc3RhY2tpbmdJdGVtLCBwYWlu
dGluZ0NvbnRleHQsIGRpcnR5UmVjdCk7CiAgICAgfQogCisgICAgYXV0byYgY29udGFpbmVyQm94
ID0gZG93bmNhc3Q8Q29udGFpbmVyQm94Pihib3gpOwogICAgIHJlY3Vyc2l2ZVBhaW50RGVzY2Vu
ZGFudHMoY29udGFpbmVyQm94LCBwYWludGluZ0NvbnRleHQpOwogCiAgICAgaWYgKGluY2x1ZGVT
dGFja2luZ0NvbnRleHREZXNjZW5kYW50cyA9PSBJbmNsdWRlU3RhY2tpbmdDb250ZXh0RGVzY2Vu
ZGFudHM6OlllcykgewpAQCAtMTgwLDY2ICsxNzcsMjMgQEAgdm9pZCBDU1NQYWludGVyOjpwYWlu
dEF0b21pY2FsbHlQYWludGVkQm94KGNvbnN0IEJveCYgYm94LCBQYWludGluZ0NvbnRleHQmIHBh
aW4KICAgICAgICAgLy8gYXMgaWYgaXQgY3JlYXRlZCBhIG5ldyBzdGFja2luZyBjb250ZXh0LCBi
dXQgYW55IHBvc2l0aW9uZWQgZGVzY2VuZGFudHMgYW5kIGRlc2NlbmRhbnRzIHdoaWNoIGFjdHVh
bGx5IGNyZWF0ZSBhIG5ldyBzdGFja2luZyBjb250ZXh0CiAgICAgICAgIC8vIHNob3VsZCBiZSBj
b25zaWRlcmVkIHBhcnQgb2YgdGhlIHBhcmVudCBzdGFja2luZyBjb250ZXh0LCBub3QgdGhpcyBu
ZXcgb25lLiBGb3IgdGhvc2Ugd2l0aCAnei1pbmRleDogMCcsIHRyZWF0IHRoZSBzdGFja2luZyBj
b250ZXh0CiAgICAgICAgIC8vIGdlbmVyYXRlZCBhdG9taWNhbGx5LgotICAgICAgICBmb3IgKGF1
dG8qIGJveCA6IHBvc2l0aXZlWk9yZGVyTGlzdCkgewotICAgICAgICAgICAgaWYgKGJveC0+c3R5
bGUoKS5pc1N0YWNraW5nQ29udGV4dCgpKQotICAgICAgICAgICAgICAgIHBhaW50U3RhY2tpbmdD
b250ZXh0KCpib3gsIHBhaW50aW5nQ29udGV4dCwgZGlydHlSZWN0KTsKKyAgICAgICAgZm9yIChh
dXRvJiBzdGFja2luZ0l0ZW0gOiBzdGFja2luZ0l0ZW0ucG9zaXRpdmVaT3JkZXJMaXN0KCkpIHsK
KyAgICAgICAgICAgIGlmIChzdGFja2luZ0l0ZW0tPmlzU3RhY2tpbmdDb250ZXh0KCkpCisgICAg
ICAgICAgICAgICAgcGFpbnRTdGFja2luZ0NvbnRleHQoKnN0YWNraW5nSXRlbSwgcGFpbnRpbmdD
b250ZXh0LCBkaXJ0eVJlY3QpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHBh
aW50QXRvbWljYWxseVBhaW50ZWRCb3goKmJveCwgcGFpbnRpbmdDb250ZXh0LCBkaXJ0eVJlY3Qp
OworICAgICAgICAgICAgICAgIHBhaW50QXRvbWljYWxseVBhaW50ZWRCb3goKnN0YWNraW5nSXRl
bSwgcGFpbnRpbmdDb250ZXh0LCBkaXJ0eVJlY3QpOwogICAgICAgICB9CiAgICAgfQogfQogCi12
b2lkIENTU1BhaW50ZXI6OnBhaW50U3RhY2tpbmdDb250ZXh0KGNvbnN0IEJveE1vZGVsQm94JiBj
b250ZXh0Um9vdCwgUGFpbnRpbmdDb250ZXh0JiBwYWludGluZ0NvbnRleHQsIGNvbnN0IEludFJl
Y3QmIGRpcnR5UmVjdCkKLXsKLSAgICBwYWludEF0b21pY2FsbHlQYWludGVkQm94KGNvbnRleHRS
b290LCBwYWludGluZ0NvbnRleHQsIGRpcnR5UmVjdCwgSW5jbHVkZVN0YWNraW5nQ29udGV4dERl
c2NlbmRhbnRzOjpZZXMpOwotfQotCi1ib29sIENTU1BhaW50ZXI6OmlzU3RhY2tpbmdDb250ZXh0
UGFpbnRpbmdCb3VuZGFyeShjb25zdCBCb3gmIGJveCkKLXsKLSAgICByZXR1cm4gYm94LnN0eWxl
KCkuaXNTdGFja2luZ0NvbnRleHQoKTsKLX0KLQotYm9vbCBDU1NQYWludGVyOjpwYXJ0aWNpcGF0
ZXNJblpPcmRlclNvcnRpbmcoY29uc3QgQm94JiBib3gpCi17Ci0gICAgcmV0dXJuIGJveC5zdHls
ZSgpLnBhcnRpY2lwYXRlc0luWk9yZGVyU29ydGluZygpOwotfQotCi12b2lkIENTU1BhaW50ZXI6
OmNvbGxlY3RTdGFja2luZ0NvbnRleHREZXNjZW5kYW50cyhjb25zdCBDb250YWluZXJCb3gmIGNv
bnRhaW5lckJveCwgVmVjdG9yPGNvbnN0IEJveE1vZGVsQm94Kj4mIG5lZ2F0aXZlWk9yZGVyTGlz
dCwgVmVjdG9yPGNvbnN0IEJveE1vZGVsQm94Kj4mIHBvc2l0aXZlWk9yZGVyTGlzdCkKK3ZvaWQg
Q1NTUGFpbnRlcjo6cGFpbnRTdGFja2luZ0NvbnRleHQoY29uc3QgU3RhY2tpbmdJdGVtJiBzdGFj
a2luZ0l0ZW0sIFBhaW50aW5nQ29udGV4dCYgcGFpbnRpbmdDb250ZXh0LCBjb25zdCBJbnRSZWN0
JiBkaXJ0eVJlY3QpCiB7Ci0gICAgcmVjdXJzaXZlQ29sbGVjdExheWVycyhjb250YWluZXJCb3gs
IG5lZ2F0aXZlWk9yZGVyTGlzdCwgcG9zaXRpdmVaT3JkZXJMaXN0KTsKLQotICAgIGF1dG8gY29t
cGFyZVpJbmRleCA9IFtdIChjb25zdCBCb3hNb2RlbEJveCogYSwgY29uc3QgQm94TW9kZWxCb3gq
IGIpIHsKLSAgICAgICAgcmV0dXJuIGEtPnN0eWxlKCkuekluZGV4KCkudmFsdWVPcigwKSA8IGIt
PnN0eWxlKCkuekluZGV4KCkudmFsdWVPcigwKTsKLSAgICB9OwotCi0gICAgc3RkOjpzdGFibGVf
c29ydChwb3NpdGl2ZVpPcmRlckxpc3QuYmVnaW4oKSwgcG9zaXRpdmVaT3JkZXJMaXN0LmVuZCgp
LCBjb21wYXJlWkluZGV4KTsKLSAgICBzdGQ6OnN0YWJsZV9zb3J0KG5lZ2F0aXZlWk9yZGVyTGlz
dC5iZWdpbigpLCBuZWdhdGl2ZVpPcmRlckxpc3QuZW5kKCksIGNvbXBhcmVaSW5kZXgpOwotfQot
Ci12b2lkIENTU1BhaW50ZXI6OnJlY3Vyc2l2ZUNvbGxlY3RMYXllcnMoY29uc3QgQ29udGFpbmVy
Qm94JiBjb250YWluZXJCb3gsIFZlY3Rvcjxjb25zdCBCb3hNb2RlbEJveCo+JiBuZWdhdGl2ZVpP
cmRlckxpc3QsIFZlY3Rvcjxjb25zdCBCb3hNb2RlbEJveCo+JiBwb3NpdGl2ZVpPcmRlckxpc3Qp
Ci17Ci0gICAgZm9yIChjb25zdCBhdXRvKiBjaGlsZCA9IGNvbnRhaW5lckJveC5maXJzdENoaWxk
KCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7Ci0gICAgICAgIGlmIChj
aGlsZC0+c3R5bGUoKS5wYXJ0aWNpcGF0ZXNJblpPcmRlclNvcnRpbmcoKSAmJiBpczxCb3hNb2Rl
bEJveD4oKmNoaWxkKSkgewotICAgICAgICAgICAgYXV0byYgY2hpbGRCb3ggPSBkb3duY2FzdDxC
b3hNb2RlbEJveD4oKmNoaWxkKTsKLQotICAgICAgICAgICAgYXV0byB6SW5kZXggPSBjaGlsZEJv
eC5zdHlsZSgpLnpJbmRleCgpLnZhbHVlT3IoMCk7Ci0gICAgICAgICAgICBpZiAoekluZGV4IDwg
MCkKLSAgICAgICAgICAgICAgICBuZWdhdGl2ZVpPcmRlckxpc3QuYXBwZW5kKCZjaGlsZEJveCk7
Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcG9zaXRpdmVaT3JkZXJMaXN0LmFw
cGVuZCgmY2hpbGRCb3gpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGlzU3RhY2tpbmdDb250
ZXh0UGFpbnRpbmdCb3VuZGFyeSgqY2hpbGQpKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAg
ICAgICAgaWYgKGlzPENvbnRhaW5lckJveD4oKmNoaWxkKSkKLSAgICAgICAgICAgIHJlY3Vyc2l2
ZUNvbGxlY3RMYXllcnMoZG93bmNhc3Q8Q29udGFpbmVyQm94PigqY2hpbGQpLCBuZWdhdGl2ZVpP
cmRlckxpc3QsIHBvc2l0aXZlWk9yZGVyTGlzdCk7Ci0gICAgfQorICAgIHBhaW50QXRvbWljYWxs
eVBhaW50ZWRCb3goc3RhY2tpbmdJdGVtLCBwYWludGluZ0NvbnRleHQsIGRpcnR5UmVjdCwgSW5j
bHVkZVN0YWNraW5nQ29udGV4dERlc2NlbmRhbnRzOjpZZXMpOwogfQogCiB2b2lkIENTU1BhaW50
ZXI6OnBhaW50VHJlZShjb25zdCBUcmVlJiBkaXNwbGF5VHJlZSwgUGFpbnRpbmdDb250ZXh0JiBw
YWludGluZ0NvbnRleHQsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkKIHsKLSAgICBwYWludFN0
YWNraW5nQ29udGV4dChkaXNwbGF5VHJlZS5yb290Qm94KCksIHBhaW50aW5nQ29udGV4dCwgZGly
dHlSZWN0KTsKKyAgICBwYWludFN0YWNraW5nQ29udGV4dChkaXNwbGF5VHJlZS5yb290U3RhY2tp
bmdJdGVtKCksIHBhaW50aW5nQ29udGV4dCwgZGlydHlSZWN0KTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgRGlzcGxheQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxh
eUNTU1BhaW50ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlDU1NQYWlu
dGVyLmgKaW5kZXggMWE0ODEwYmIyYTM3OTc0M2ExYmQ4ZWU5ZTdhOGY2Zjg4ZTQ2MDQ4Ny4uOGQw
ODVjMTlkOGEzZTE5MzU0YjQ1ZDI2ZWZiYmM4ZjM5M2E5YTJiYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheUNTU1BhaW50ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5Q1NTUGFpbnRlci5oCkBAIC00Miw2ICs0Miw3IEBAIGNs
YXNzIEZpbGxMYXllckltYWdlR2VvbWV0cnk7CiBjbGFzcyBCb3g7CiBjbGFzcyBCb3hNb2RlbEJv
eDsKIGNsYXNzIENvbnRhaW5lckJveDsKK2NsYXNzIFN0YWNraW5nSXRlbTsKIGNsYXNzIFRyZWU7
CiAKIHN0cnVjdCBQYWludGluZ0NvbnRleHQ7CkBAIC02MCwxNSArNjEsOSBAQCBwcml2YXRlOgog
ICAgIHN0YXRpYyB2b2lkIHJlY3Vyc2l2ZVBhaW50RGVzY2VuZGFudHNGb3JQaGFzZShjb25zdCBD
b250YWluZXJCb3gmLCBQYWludGluZ0NvbnRleHQmLCBQYWludFBoYXNlKTsKIAogICAgIGVudW0g
Y2xhc3MgSW5jbHVkZVN0YWNraW5nQ29udGV4dERlc2NlbmRhbnRzIHsgWWVzLCBObyB9OwotICAg
IHN0YXRpYyB2b2lkIHBhaW50QXRvbWljYWxseVBhaW50ZWRCb3goY29uc3QgQm94JiwgUGFpbnRp
bmdDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBJbmNsdWRlU3RhY2tpbmdDb250
ZXh0RGVzY2VuZGFudHMgPSBJbmNsdWRlU3RhY2tpbmdDb250ZXh0RGVzY2VuZGFudHM6Ok5vKTsK
KyAgICBzdGF0aWMgdm9pZCBwYWludEF0b21pY2FsbHlQYWludGVkQm94KGNvbnN0IFN0YWNraW5n
SXRlbSYsIFBhaW50aW5nQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCwgSW5jbHVk
ZVN0YWNraW5nQ29udGV4dERlc2NlbmRhbnRzID0gSW5jbHVkZVN0YWNraW5nQ29udGV4dERlc2Nl
bmRhbnRzOjpObyk7CiAKLSAgICBzdGF0aWMgdm9pZCBwYWludFN0YWNraW5nQ29udGV4dChjb25z
dCBCb3hNb2RlbEJveCYsIFBhaW50aW5nQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVj
dCk7Ci0KLSAgICBzdGF0aWMgYm9vbCBpc1N0YWNraW5nQ29udGV4dFBhaW50aW5nQm91bmRhcnko
Y29uc3QgQm94Jik7Ci0gICAgc3RhdGljIGJvb2wgcGFydGljaXBhdGVzSW5aT3JkZXJTb3J0aW5n
KGNvbnN0IEJveCYpOwotCi0gICAgc3RhdGljIHZvaWQgY29sbGVjdFN0YWNraW5nQ29udGV4dERl
c2NlbmRhbnRzKGNvbnN0IENvbnRhaW5lckJveCYsIFZlY3Rvcjxjb25zdCBCb3hNb2RlbEJveCo+
JiBuZWdhdGl2ZVpPcmRlckxpc3QsIFZlY3Rvcjxjb25zdCBCb3hNb2RlbEJveCo+JiBwb3NpdGl2
ZVpPcmRlckxpc3QpOwotICAgIHN0YXRpYyB2b2lkIHJlY3Vyc2l2ZUNvbGxlY3RMYXllcnMoY29u
c3QgQ29udGFpbmVyQm94JiwgVmVjdG9yPGNvbnN0IEJveE1vZGVsQm94Kj4mIG5lZ2F0aXZlWk9y
ZGVyTGlzdCwgVmVjdG9yPGNvbnN0IEJveE1vZGVsQm94Kj4mIHBvc2l0aXZlWk9yZGVyTGlzdCk7
CisgICAgc3RhdGljIHZvaWQgcGFpbnRTdGFja2luZ0NvbnRleHQoY29uc3QgU3RhY2tpbmdJdGVt
JiwgUGFpbnRpbmdDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KTsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIERpc3BsYXkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkv
Y3NzL0Rpc3BsYXlTdGFja2luZ0l0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3Mv
RGlzcGxheVN0YWNraW5nSXRlbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGFlZTRhNDZjYWNlYmE4YjJlZmNm
NjllOGVhNWYwMGM3MDAxOWI2OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rp
c3BsYXkvY3NzL0Rpc3BsYXlTdGFja2luZ0l0ZW0uY3BwCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRGlzcGxheVN0YWNraW5nSXRl
bS5oIgorCisjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCisKKyNpbmNsdWRl
IDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0u
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIERpc3BsYXkgeworCitTdGFja2lu
Z0l0ZW06OlN0YWNraW5nSXRlbShzdGQ6OnVuaXF1ZV9wdHI8Qm94TW9kZWxCb3g+JiYgYm94KQor
ICAgIDogbV9ib3goV1RGTW92ZShib3gpKQoreworICAgIEFTU0VSVChtX2JveCk7Cit9CisKK2Jv
b2wgU3RhY2tpbmdJdGVtOjppc1N0YWNraW5nQ29udGV4dCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fYm94LT5zdHlsZSgpLmlzU3RhY2tpbmdDb250ZXh0KCk7Cit9CisKK3ZvaWQgU3RhY2tpbmdJ
dGVtOjphZGRDaGlsZFN0YWNraW5nSXRlbShzdGQ6OnVuaXF1ZV9wdHI8U3RhY2tpbmdJdGVtPiYm
IGl0ZW0pCit7CisgICAgYXV0byB6SW5kZXggPSBpdGVtLT5ib3goKS5zdHlsZSgpLnpJbmRleCgp
LnZhbHVlT3IoMCk7CisgICAgaWYgKHpJbmRleCA8IDApCisgICAgICAgIG1fbmVnYXRpdmVaT3Jk
ZXJMaXN0LmFwcGVuZChXVEZNb3ZlKGl0ZW0pKTsKKyAgICBlbHNlCisgICAgICAgIG1fcG9zaXRp
dmVaT3JkZXJMaXN0LmFwcGVuZChXVEZNb3ZlKGl0ZW0pKTsKK30KKwordm9pZCBTdGFja2luZ0l0
ZW06OnNvcnRMaXN0cygpCit7CisgICAgYXV0byBjb21wYXJlWkluZGV4ID0gW10oY29uc3Qgc3Rk
Ojp1bmlxdWVfcHRyPFN0YWNraW5nSXRlbT4mIGEsIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxTdGFj
a2luZ0l0ZW0+JiBiKSB7CisgICAgICAgIHJldHVybiBhLT5ib3goKS5zdHlsZSgpLnpJbmRleCgp
LnZhbHVlT3IoMCkgPCBiLT5ib3goKS5zdHlsZSgpLnpJbmRleCgpLnZhbHVlT3IoMCk7CisgICAg
fTsKKworICAgIHN0ZDo6c3RhYmxlX3NvcnQobV9wb3NpdGl2ZVpPcmRlckxpc3QuYmVnaW4oKSwg
bV9wb3NpdGl2ZVpPcmRlckxpc3QuZW5kKCksIGNvbXBhcmVaSW5kZXgpOworICAgIHN0ZDo6c3Rh
YmxlX3NvcnQobV9uZWdhdGl2ZVpPcmRlckxpc3QuYmVnaW4oKSwgbV9uZWdhdGl2ZVpPcmRlckxp
c3QuZW5kKCksIGNvbXBhcmVaSW5kZXgpOworfQorCisKK30gLy8gbmFtZXNwYWNlIERpc3BsYXkK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShMQVlPVVRfRk9STUFU
VElOR19DT05URVhUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlz
cGxheVN0YWNraW5nSXRlbS5oIGIvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheVN0
YWNraW5nSXRlbS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY4YjExYjc3MDVlZjIyZGQ1ZWEwZDRhZjgzZjg4NDA3
ZDg0NDYwMDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9E
aXNwbGF5U3RhY2tpbmdJdGVtLmgKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCisKKyNpbmNs
dWRlIDx3dGYvSXNvTWFsbG9jLmg+CisjaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgorI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIERpc3Bs
YXkgeworCitjbGFzcyBCb3hNb2RlbEJveDsKKworLy8gQ29udGFpbmVyIGZvciBhIGRpc3BsYXkg
Ym94IGFuZCBpdHMgZGVzY2VuZGFudHMsIGZvciBib3hlcyB0aGF0IHBhcnRpY2lwYXRlIGluIHRo
ZSBDU1Mgc3RhY2tpbmcKKy8vIGFsZ29yaXRobSA8aHR0cHM6Ly93d3cudzMub3JnL1RSL0NTUzIy
L3ppbmRleC5odG1sPiwgaS5lLiBwb3NpdGlvbmVkIGJveGVzLCBhbmQgdGhvc2UgdGhhdCBjcmVh
dGUKKy8vIENTUyBzdGFja2luZyBjb250ZXh0LgorCitjbGFzcyBTdGFja2luZ0l0ZW0geworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIGZyaWVuZCBjbGFzcyBUcmVlQnVpbGRlcjsK
K3B1YmxpYzoKKyAgICB1c2luZyBTdGFja2luZ0l0ZW1MaXN0ID0gVmVjdG9yPHN0ZDo6dW5pcXVl
X3B0cjxTdGFja2luZ0l0ZW0+PjsKKworICAgIGV4cGxpY2l0IFN0YWNraW5nSXRlbShzdGQ6OnVu
aXF1ZV9wdHI8Qm94TW9kZWxCb3g+JiYpOworCisgICAgdm9pZCBhZGRDaGlsZFN0YWNraW5nSXRl
bShzdGQ6OnVuaXF1ZV9wdHI8U3RhY2tpbmdJdGVtPiYmKTsKKyAgICBjb25zdCBCb3hNb2RlbEJv
eCYgYm94KCkgY29uc3QgeyByZXR1cm4gKm1fYm94OyB9CisgICAgCisgICAgYm9vbCBpc1N0YWNr
aW5nQ29udGV4dCgpIGNvbnN0OworCisgICAgY29uc3QgU3RhY2tpbmdJdGVtTGlzdCYgbmVnYXRp
dmVaT3JkZXJMaXN0KCkgY29uc3QgeyByZXR1cm4gbV9uZWdhdGl2ZVpPcmRlckxpc3Q7IH0KKyAg
ICBjb25zdCBTdGFja2luZ0l0ZW1MaXN0JiBwb3NpdGl2ZVpPcmRlckxpc3QoKSBjb25zdCB7IHJl
dHVybiBtX3Bvc2l0aXZlWk9yZGVyTGlzdDsgfQorCitwcml2YXRlOgorICAgIHZvaWQgc29ydExp
c3RzKCk7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Qm94TW9kZWxCb3g+IG1fYm94OworICAgIFN0
YWNraW5nSXRlbUxpc3QgbV9uZWdhdGl2ZVpPcmRlckxpc3Q7CisgICAgU3RhY2tpbmdJdGVtTGlz
dCBtX3Bvc2l0aXZlWk9yZGVyTGlzdDsKK307CisKK30gLy8gbmFtZXNwYWNlIERpc3BsYXkKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworCisjZW5kaWYgLy8gRU5BQkxFKExBWU9VVF9GT1JNQVRU
SU5HX0NPTlRFWFQpCg==
</data>
<flag name="commit-queue"
          id="432064"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>