<?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>192765</bug_id>
          
          <creation_ts>2018-12-17 11:18:21 -0800</creation_ts>
          <short_desc>REGRESSION(r239265): unorm_normalize is deprecated, and broke an internal build (Requested by Truitt on #webkit).</short_desc>
          <delta_ts>2018-12-17 11:23:27 -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>New Bugs</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>
          
          <blocked>174816</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>mcatanzaro</cc>
    
    <cc>Ms2ger</cc>
    
    <cc>tsavell</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1488505</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-12-17 11:18:21 -0800</bug_when>
    <thetext>https://trac.webkit.org/changeset/239265 broke the build:
unorm_normalize is deprecated, and broke an internal build (Requested by Truitt on #webkit).

This is an automatic bug report generated by webkitbot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488507</commentid>
    <comment_count>1</comment_count>
      <attachid>357459</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-12-17 11:18:29 -0800</bug_when>
    <thetext>Created attachment 357459
ROLLOUT of r239265

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the rollout will be successful.  This process takes approximately 15 minutes.

If you would like to land the rollout faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488511</commentid>
    <comment_count>2</comment_count>
      <attachid>357459</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-12-17 11:22:28 -0800</bug_when>
    <thetext>Comment on attachment 357459
ROLLOUT of r239265

Clearing flags on attachment: 357459

Committed r239278: &lt;https://trac.webkit.org/changeset/239278&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488512</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-12-17 11:22:29 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488514</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-12-17 11:23:27 -0800</bug_when>
    <thetext>&lt;rdar://problem/46783856&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357459</attachid>
            <date>2018-12-17 11:18:29 -0800</date>
            <delta_ts>2018-12-17 11:22:28 -0800</delta_ts>
            <desc>ROLLOUT of r239265</desc>
            <filename>bug-192765-20181217111829.patch</filename>
            <type>text/plain</type>
            <size>112870</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5Mjc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDljNDgwYTU5NjE4YzIyMDEwMWE3N2M5
YmY2MmY5MTdjZTY5YzZmNGEuLjQ1NzRmMzA2MmY2NDBhYzEzODRkYzU3NzkzZWNmNDU3NDhmNmQ3
MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTgtMTItMTcgIENvbW1pdCBRdWV1ZSAgPGNvbW1p
dC1xdWV1ZUB3ZWJraXQub3JnPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIy
MzkyNjUgYW5kIHIyMzkyNzQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xOTI3NjUKKworICAgICAgICB1bm9ybV9ub3JtYWxpemUgaXMgZGVwcmVjYXRl
ZCwgYW5kIGJyb2tlIGFuIGludGVybmFsIGJ1aWxkCisgICAgICAgIChSZXF1ZXN0ZWQgYnkgVHJ1
aXR0IG9uICN3ZWJraXQpLgorCisgICAgICAgIFJldmVydGVkIGNoYW5nZXNldHM6CisKKyAgICAg
ICAgIltHVEtdW1dQRV0gTmVlZCBhIGZ1bmN0aW9uIHRvIGNvbnZlcnQgaW50ZXJuYWwgVVJJIHRv
IGRpc3BsYXkKKyAgICAgICAgKCJwcmV0dHkiKSBVUkkiCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQ4MTYKKyAgICAgICAgaHR0cHM6Ly90cmFjLndl
YmtpdC5vcmcvY2hhbmdlc2V0LzIzOTI2NQorCisgICAgICAgICJGaXggdGhlIEFwcGxlIEludGVy
bmFsIE1hYyBidWlsZCB3aXRoIGEgbmV3ZXIgU0RLIgorICAgICAgICBodHRwczovL3RyYWMud2Vi
a2l0Lm9yZy9jaGFuZ2VzZXQvMjM5Mjc0CisKIDIwMTgtMTItMTcgIERhbmllbCBCYXRlcyAgPGRh
YmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCB0aGUgQXBwbGUgSW50ZXJuYWwgTWFjIGJ1
aWxkIHdpdGggYSBuZXdlciBTREsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1NzJhZjI4NzkxOWU4M2Y5ZjcxOWZh
ZjkxNGZhNjc0NzcyN2VlMTMwLi5hMTA1NzNmMjZlNmUzNWI3NjUyOGE1MTk4MmYyZmMxZDFlNWU4
MGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTgtMTItMTcgIENvbW1pdCBRdWV1
ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxp
bmcgb3V0IHIyMzkyNjUgYW5kIHIyMzkyNzQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xOTI3NjUKKworICAgICAgICB1bm9ybV9ub3JtYWxpemUgaXMg
ZGVwcmVjYXRlZCwgYW5kIGJyb2tlIGFuIGludGVybmFsIGJ1aWxkCisgICAgICAgIChSZXF1ZXN0
ZWQgYnkgVHJ1aXR0IG9uICN3ZWJraXQpLgorCisgICAgICAgIFJldmVydGVkIGNoYW5nZXNldHM6
CisKKyAgICAgICAgIltHVEtdW1dQRV0gTmVlZCBhIGZ1bmN0aW9uIHRvIGNvbnZlcnQgaW50ZXJu
YWwgVVJJIHRvIGRpc3BsYXkKKyAgICAgICAgKCJwcmV0dHkiKSBVUkkiCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQ4MTYKKyAgICAgICAgaHR0cHM6
Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzIzOTI2NQorCisgICAgICAgICJGaXggdGhlIEFw
cGxlIEludGVybmFsIE1hYyBidWlsZCB3aXRoIGEgbmV3ZXIgU0RLIgorICAgICAgICBodHRwczov
L3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjM5Mjc0CisKIDIwMTgtMTItMTcgIERhbmllbCBC
YXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIFJlbW92ZSAtW1dlYkV2
ZW50IGluaXRXaXRoS2V5RXZlbnRUeXBlOi4uLjpjaGFyYWN0ZXJTZXQ6XQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA0
ZmE5ZWJlYzlmYjI0M2RjNWQ4OTM5OWI2YTEzNzE2MWRjZTM2ZWRlLi5kNDlmMWZkYjUwZjgxMjcx
Y2RjMzRhOWM0MDVlZDcwYjA1M2VkOTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDE4
LTEyLTE3ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KKworICAgICAg
ICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjM5MjY1IGFuZCByMjM5Mjc0LgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyNzY1CisKKyAgICAgICAg
dW5vcm1fbm9ybWFsaXplIGlzIGRlcHJlY2F0ZWQsIGFuZCBicm9rZSBhbiBpbnRlcm5hbCBidWls
ZAorICAgICAgICAoUmVxdWVzdGVkIGJ5IFRydWl0dCBvbiAjd2Via2l0KS4KKworICAgICAgICBS
ZXZlcnRlZCBjaGFuZ2VzZXRzOgorCisgICAgICAgICJbR1RLXVtXUEVdIE5lZWQgYSBmdW5jdGlv
biB0byBjb252ZXJ0IGludGVybmFsIFVSSSB0byBkaXNwbGF5CisgICAgICAgICgicHJldHR5Iikg
VVJJIgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0
ODE2CisgICAgICAgIGh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yMzkyNjUKKwor
ICAgICAgICAiRml4IHRoZSBBcHBsZSBJbnRlcm5hbCBNYWMgYnVpbGQgd2l0aCBhIG5ld2VyIFNE
SyIKKyAgICAgICAgaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzIzOTI3NAorCiAy
MDE4LTEyLTE3ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAg
UkVHUkVTU0lPTiAocjIzOTI2Mik6IEZpeCBicm9rZW4gYnVpbGRzIHByaW9yIHRvIE1vamF2ZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggODA4MmNiZGJhODE1
ZDI5MTNkY2MzODliOWVjZjRjNjM3MzZkOTk2Zi4uYTIyMzk0OTBkMTEyZGNhNDZhNWFhNGJjZGVk
MzVmZGJjYWFlYzllOSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC03OCw3ICs3OCw2IEBACiAJCTVDQzBFRTc2MjE2MjlGMTkwMEExQTg0MiAvKiBVUkwuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNDMEVFNzQy
MTYyOUYxOTAwQTFBODQyIC8qIFVSTC5jcHAgKi87IH07CiAJCTVDQzBFRTg5MjE2MkJDMjIwMEEx
QTg0MiAvKiBVUkxDb2NvYS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDVDQzBFRTg2MjE2MkJDMjIwMEExQTg0MiAvKiBVUkxDb2NvYS5tbSAqLzsgfTsK
IAkJNUNDMEVFOEEyMTYyQkMyMjAwQTFBODQyIC8qIE5TVVJMRXh0cmFzLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNDMEVFODgyMTYyQkMyMjAwQTFB
ODQyIC8qIE5TVVJMRXh0cmFzLm1tICovOyB9OwotCQk1RkFEM0FFMjIxQjk2MzY2MDBCRUUxNzgg
LyogVVJMSGVscGVycy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1RkFEM0FFMTIxQjk2MzY2MDBCRUUxNzggLyogVVJMSGVscGVycy5jcHAgKi87IH07
CiAJCTcwQTk5M0ZFMUFENzE1MTMwMEZBNjE1QiAvKiBTeW1ib2xSZWdpc3RyeS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEE5OTNGQzFBRDcxNTEz
MDBGQTYxNUIgLyogU3ltYm9sUmVnaXN0cnkuY3BwICovOyB9OwogCQk3MEVDQTYwRDFCMDI0MjY4
MDA0NDk3MzkgLyogQXRvbWljU3RyaW5nSW1wbC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEVDQTYwQTFCMDI0MjY4MDA0NDk3MzkgLyogQXRvbWlj
U3RyaW5nSW1wbC5jcHAgKi87IH07CiAJCTdBMDUwOTNGMUZCOURDQzUwMEIzM0ZCOCAvKiBKU09O
VmFsdWVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDdBMDUwOTNFMUZCOURDQzUwMEIzM0ZCOCAvKiBKU09OVmFsdWVzLmNwcCAqLzsgfTsKQEAgLTM4
Myw4ICszODIsNiBAQAogCQk1RDI0N0I2RTE0Njg5QzQ3MDBFNzhCNzYgLyogQmFzZS54Y2NvbmZp
ZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQu
eGNjb25maWc7IHBhdGggPSBCYXNlLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1RDI0N0I3MDE0Njg5QzQ3MDBFNzhCNzYgLyogRGVidWdSZWxlYXNlLnhjY29uZmlnICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2Nv
bmZpZzsgcGF0aCA9IERlYnVnUmVsZWFzZS54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNUQyNDdCNzMxNDY4OUM0NzAwRTc4Qjc2IC8qIFdURi54Y2NvbmZpZyAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7
IHBhdGggPSBXVEYueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTVGQUQz
QUUwMjFCOTYzNjYwMEJFRTE3OCAvKiBVUkxIZWxwZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFVSTEhlbHBlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
NUZBRDNBRTEyMUI5NjM2NjAwQkVFMTc4IC8qIFVSTEhlbHBlcnMuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVVJMSGVscGVycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTY1NDFDQUY0MTYzMERCMjYwMDZEMERFQyAvKiBDb3B5V1RGSGVhZGVycy54
Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBDb3B5V1RGSGVhZGVycy54
Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzBBOTkzRkMxQUQ3MTUxMzAw
RkE2MTVCIC8qIFN5bWJvbFJlZ2lzdHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFN5bWJvbFJlZ2lzdHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNzBBOTkzRkQxQUQ3MTUxMzAwRkE2MTVCIC8qIFN5bWJvbFJlZ2lzdHJ5LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN5bWJvbFJlZ2lzdHJ5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC05ODMsOCArOTgwLDYgQEAKIAkJCQlBOEE0NzJDRTE1MUE4MjVCMDA0
MTIzRkYgLyogTWV0YUFsbG9jYXRvci5oICovLAogCQkJCUE4QTQ3MkNGMTUxQTgyNUIwMDQxMjNG
RiAvKiBNZXRhQWxsb2NhdG9ySGFuZGxlLmggKi8sCiAJCQkJRkU3NDk3RUQyMDkxNjMwNjAwMDM1
NjVCIC8qIE1ldGFBbGxvY2F0b3JQdHIuaCAqLywKLQkJCQk1RkFEM0FFMTIxQjk2MzY2MDBCRUUx
NzggLyogVVJMSGVscGVycy5jcHAgKi8sCi0JCQkJNUZBRDNBRTAyMUI5NjM2NjAwQkVFMTc4IC8q
IFVSTEhlbHBlcnMuaCAqLywKIAkJCQkwRjY2QjI4MjFEQzk3QkFCMDA0QTFEM0YgLyogTW9ub3Rv
bmljVGltZS5jcHAgKi8sCiAJCQkJMEY2NkIyODMxREM5N0JBQjAwNEExRDNGIC8qIE1vbm90b25p
Y1RpbWUuaCAqLywKIAkJCQlGRTgyMjUzMDFCMkExRTVCMDBCQTY4RkQgLyogTmFrZWRQdHIuaCAq
LywKQEAgLTE1MDcsNyArMTUwMiw2IEBACiAJCQkJMEY2NkIyOEMxREM5N0JBQjAwNEExRDNGIC8q
IE1vbm90b25pY1RpbWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNDMEVFOEEyMTYyQkMyMjAw
QTFBODQyIC8qIE5TVVJMRXh0cmFzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDczRjQxNTFB
ODI1QjAwNDEyM0ZGIC8qIE51bWJlck9mQ29yZXMuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNUZB
RDNBRTIyMUI5NjM2NjAwQkVFMTc4IC8qIFVSTEhlbHBlcnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQThBNDczRjcxNTFBODI1QjAwNDEyM0ZGIC8qIE9TQWxsb2NhdG9yUG9zaXguY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQThBNDczRjkxNTFBODI1QjAwNDEyM0ZGIC8qIE9TUmFuZG9tU291cmNl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3NDAyMTUxQTgyNUIwMDQxMjNGRiAvKiBQYWdl
QmxvY2suY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DTWFr
ZUxpc3RzLnR4dCBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CmluZGV4IDEwOWMyNzI3
NzA0OTg1ZTE2OWJiZTIxMjA2NzIyMzQ3Y2E4MDM1MzMuLmNlZTFjY2UxZTU3MTg0ZDEzYmQyY2Q1
MTllZjZhMjBkZmZiMWE5NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMu
dHh0CisrKyBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CkBAIC0yNDEsNyArMjQxLDYg
QEAgc2V0KFdURl9QVUJMSUNfSEVBREVSUwogICAgIFRyaVN0YXRlLmgKICAgICBUeXBlQ2FzdHMu
aAogICAgIFVSTC5oCi0gICAgVVJMSGVscGVycy5oCiAgICAgVVJMSGFzaC5oCiAgICAgVVJMUGFy
c2VyLmgKICAgICBVVUlELmgKQEAgLTM5OSw3ICszOTgsNiBAQCBzZXQoV1RGX1NPVVJDRVMKICAg
ICBUaW1lV2l0aER5bmFtaWNDbG9ja1R5cGUuY3BwCiAgICAgVGltaW5nU2NvcGUuY3BwCiAgICAg
VVJMLmNwcAotICAgIFVSTEhlbHBlcnMuY3BwCiAgICAgVVJMUGFyc2VyLmNwcAogICAgIFVVSUQu
Y3BwCiAgICAgV1RGQXNzZXJ0aW9ucy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VS
TEhlbHBlcnMuY3BwIGIvU291cmNlL1dURi93dGYvVVJMSGVscGVycy5jcHAKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGZkMDg0MDVmMzViNjNhY2QzOWY4NzM3NDhhMWYyMzdmZWIwNjM1
MGIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dURi93dGYvVVJMSGVscGVycy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw4NzAgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggSWdhbGlhIFMuTC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIp
IG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMg
IkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0g
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJVUkxIZWxwZXJzLmgiCi0KLSNpbmNsdWRlICJVUkxQYXJzZXIuaCIKLSNpbmNs
dWRlIDxtdXRleD4KLSNpbmNsdWRlIDx1bmljb2RlL3VpZG5hLmg+Ci0jaW5jbHVkZSA8dW5pY29k
ZS91bm9ybS5oPgotI2luY2x1ZGUgPHVuaWNvZGUvdXNjcmlwdC5oPgotCi1uYW1lc3BhY2UgV1RG
IHsKLW5hbWVzcGFjZSBVUkxIZWxwZXJzIHsKLQotLy8gTmVlZHMgdG8gYmUgYmlnIGVub3VnaCB0
byBob2xkIGFuIElETi1lbmNvZGVkIG5hbWUuCi0vLyBGb3IgaG9zdCBuYW1lcyBiaWdnZXIgdGhh
biB0aGlzLCB3ZSB3b24ndCBkbyBJRE4gZW5jb2RpbmcsIHdoaWNoIGlzIGFsbW9zdCBjZXJ0YWlu
bHkgT0suCi1jb25zdCB1bnNpZ25lZCBob3N0TmFtZUJ1ZmZlckxlbmd0aCA9IDIwNDg7Ci1jb25z
dCB1bnNpZ25lZCB1cmxCeXRlc0J1ZmZlckxlbmd0aCA9IDIwNDg7Ci0KLXN0YXRpYyB1aW50MzJf
dCBJRE5TY3JpcHRXaGl0ZUxpc3RbKFVTQ1JJUFRfQ09ERV9MSU1JVCArIDMxKSAvIDMyXTsKLQot
I2lmICFQTEFURk9STShDT0NPQSkKLQotLy8gQ29jb2EgaGFzIGFuIGltcGxlbWVudGF0aW9uIHRo
YXQgdXNlcyBhIHdoaXRlbGlzdCBpbiAvTGlicmFyeSBvciB+L0xpYnJhcnksCi0vLyBpZiBpdCBl
eGlzdHMuCi12b2lkIGxvYWRJRE5TY3JpcHRXaGl0ZUxpc3QoKQotewotICAgIHN0YXRpYyBzdGQ6
Om9uY2VfZmxhZyBmbGFnOwotICAgIHN0ZDo6Y2FsbF9vbmNlKGZsYWcsIGluaXRpYWxpemVEZWZh
dWx0SUROU2NyaXB0V2hpdGVMaXN0KTsKLX0KLQotI2VuZGlmIC8vICFQTEFURk9STShDT0NPQSkK
LQotc3RhdGljIGJvb2wgaXNBcm1lbmlhbkxvb2thbGlrZUNoYXJhY3RlcihVQ2hhcjMyIGNvZGVQ
b2ludCkKLXsKLSAgICByZXR1cm4gY29kZVBvaW50ID09IDB4MDU0OCB8fCBjb2RlUG9pbnQgPT0g
MHgwNTREIHx8IGNvZGVQb2ludCA9PSAweDA1NzggfHwgY29kZVBvaW50ID09IDB4MDU3RDsKLX0K
LQotc3RhdGljIGJvb2wgaXNBcm1lbmlhblNjcmlwdENoYXJhY3RlcihVQ2hhcjMyIGNvZGVQb2lu
dCkKLXsKLSAgICBVRXJyb3JDb2RlIGVycm9yID0gVV9aRVJPX0VSUk9SOwotICAgIFVTY3JpcHRD
b2RlIHNjcmlwdCA9IHVzY3JpcHRfZ2V0U2NyaXB0KGNvZGVQb2ludCwgJmVycm9yKTsKLSAgICBp
ZiAoZXJyb3IgIT0gVV9aRVJPX0VSUk9SKSB7Ci0gICAgICAgIExPR19FUlJPUigiZ290IElDVSBl
cnJvciB3aGlsZSB0cnlpbmcgdG8gbG9vayBhdCBzY3JpcHRzOiAlZCIsIGVycm9yKTsKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHJldHVybiBzY3JpcHQgPT0gVVNDUklQVF9B
Uk1FTklBTjsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gaW5saW5lIGJv
b2wgaXNBU0NJSURpZ2l0T3JWYWxpZEhvc3RDaGFyYWN0ZXIoQ2hhcmFjdGVyVHlwZSBjaGFyQ29k
ZSkKLXsKLSAgICBpZiAoIWlzQVNDSUlEaWdpdE9yUHVuY3R1YXRpb24oY2hhckNvZGUpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBUaGluZ3MgdGhlIFVSTCBQYXJzZXIgcmVqZWN0
czoKLSAgICBzd2l0Y2ggKGNoYXJDb2RlKSB7Ci0gICAgY2FzZSAnIyc6Ci0gICAgY2FzZSAnJSc6
Ci0gICAgY2FzZSAnLyc6Ci0gICAgY2FzZSAnOic6Ci0gICAgY2FzZSAnPyc6Ci0gICAgY2FzZSAn
QCc6Ci0gICAgY2FzZSAnWyc6Ci0gICAgY2FzZSAnXFwnOgotICAgIGNhc2UgJ10nOgotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
fQotfQotCi1zdGF0aWMgYm9vbCBpc0xvb2thbGlrZUNoYXJhY3Rlcihjb25zdCBzdGQ6Om9wdGlv
bmFsPFVDaGFyMzI+JiBwcmV2aW91c0NvZGVQb2ludCwgVUNoYXIzMiBjaGFyQ29kZSkKLXsKLSAg
ICAvLyBUaGlzIGZ1bmN0aW9uIHRyZWF0cyB0aGUgZm9sbG93aW5nIGFzIHVuc2FmZSwgbG9va2Fs
aWtlIGNoYXJhY3RlcnM6Ci0gICAgLy8gYW55IG5vbi1wcmludGFibGUgY2hhcmFjdGVyLCBhbnkg
Y2hhcmFjdGVyIGNvbnNpZGVyZWQgYXMgd2hpdGVzcGFjZSwKLSAgICAvLyBhbnkgaWdub3JhYmxl
IGNoYXJhY3RlciwgYW5kIGVtb2ppIGNoYXJhY3RlcnMgcmVsYXRlZCB0byBsb2Nrcy4KLSAgICAK
LSAgICAvLyBXZSBhbHNvIGNvbnNpZGVyZWQgdGhlIGNoYXJhY3RlcnMgaW4gTW96aWxsYSdzIGJs
YWNrbGlzdCA8aHR0cDovL2tiLm1vemlsbGF6aW5lLm9yZy9OZXR3b3JrLklETi5ibGFja2xpc3Rf
Y2hhcnM+LgotCi0gICAgLy8gU29tZSBvZiB0aGUgY2hhcmFjdGVycyBoZXJlIHdpbGwgbmV2ZXIg
YXBwZWFyIG9uY2UgSUNVIGhhcyBlbmNvZGVkLgotICAgIC8vIEZvciBleGFtcGxlLCBJQ1UgdHJh
bnNmb3JtcyBtb3N0IHNwYWNlcyBpbnRvIGFuIEFTQ0lJIHNwYWNlIGFuZCBtb3N0Ci0gICAgLy8g
c2xhc2hlcyBpbnRvIGFuIEFTQ0lJIHNvbGlkdXMuIEJ1dCBvbmUgb2YgdGhlIHR3byBjYWxsZXJz
IHVzZXMgdGhpcwotICAgIC8vIG9uIGNoYXJhY3RlcnMgdGhhdCBoYXZlIG5vdCBiZWVuIHByb2Nl
c3NlZCBieSBJQ1UsIHNvIHRoZXkgYXJlIG5lZWRlZCBoZXJlLgotICAgIAotICAgIGlmICghdV9p
c3ByaW50KGNoYXJDb2RlKSB8fCB1X2lzVVdoaXRlU3BhY2UoY2hhckNvZGUpIHx8IHVfaGFzQmlu
YXJ5UHJvcGVydHkoY2hhckNvZGUsIFVDSEFSX0RFRkFVTFRfSUdOT1JBQkxFX0NPREVfUE9JTlQp
KQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAKLSAgICBzd2l0Y2ggKGNoYXJDb2RlKSB7Ci0g
ICAgY2FzZSAweDAwQkM6IC8qIFZVTEdBUiBGUkFDVElPTiBPTkUgUVVBUlRFUiAqLwotICAgIGNh
c2UgMHgwMEJEOiAvKiBWVUxHQVIgRlJBQ1RJT04gT05FIEhBTEYgKi8KLSAgICBjYXNlIDB4MDBC
RTogLyogVlVMR0FSIEZSQUNUSU9OIFRIUkVFIFFVQVJURVJTICovCi0gICAgY2FzZSAweDAwRUQ6
IC8qIExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggQUNVVEUgKi8KLSAgICBjYXNlIDB4MDFDMzog
LyogTEFUSU4gTEVUVEVSIFJFVFJPRkxFWCBDTElDSyAqLwotICAgIGNhc2UgMHgwMjUxOiAvKiBM
QVRJTiBTTUFMTCBMRVRURVIgQUxQSEEgKi8KLSAgICBjYXNlIDB4MDI2MTogLyogTEFUSU4gU01B
TEwgTEVUVEVSIFNDUklQVCBHICovCi0gICAgY2FzZSAweDAyRDA6IC8qIE1PRElGSUVSIExFVFRF
UiBUUklBTkdVTEFSIENPTE9OICovCi0gICAgY2FzZSAweDAzMzU6IC8qIENPTUJJTklORyBTSE9S
VCBTVFJPS0UgT1ZFUkxBWSAqLwotICAgIGNhc2UgMHgwMzM3OiAvKiBDT01CSU5JTkcgU0hPUlQg
U09MSURVUyBPVkVSTEFZICovCi0gICAgY2FzZSAweDAzMzg6IC8qIENPTUJJTklORyBMT05HIFNP
TElEVVMgT1ZFUkxBWSAqLwotICAgIGNhc2UgMHgwNTg5OiAvKiBBUk1FTklBTiBGVUxMIFNUT1Ag
Ki8KLSAgICBjYXNlIDB4MDVCNDogLyogSEVCUkVXIFBPSU5UIEhJUklRICovCi0gICAgY2FzZSAw
eDA1QkM6IC8qIEhFQlJFVyBQT0lOVCBEQUdFU0ggT1IgTUFQSVEgKi8KLSAgICBjYXNlIDB4MDVD
MzogLyogSEVCUkVXIFBVTkNUVUFUSU9OIFNPRiBQQVNVUSAqLwotICAgIGNhc2UgMHgwNUY0OiAv
KiBIRUJSRVcgUFVOQ1RVQVRJT04gR0VSU0hBWUlNICovCi0gICAgY2FzZSAweDA2MDk6IC8qIEFS
QUJJQy1JTkRJQyBQRVIgTUlMTEUgU0lHTiAqLwotICAgIGNhc2UgMHgwNjBBOiAvKiBBUkFCSUMt
SU5ESUMgUEVSIFRFTiBUSE9VU0FORCBTSUdOICovCi0gICAgY2FzZSAweDA2NTA6IC8qIEFSQUJJ
QyBLQVNSQSAqLwotICAgIGNhc2UgMHgwNjYwOiAvKiBBUkFCSUMgSU5ESUMgRElHSVQgWkVSTyAq
LwotICAgIGNhc2UgMHgwNjZBOiAvKiBBUkFCSUMgUEVSQ0VOVCBTSUdOICovCi0gICAgY2FzZSAw
eDA2RDQ6IC8qIEFSQUJJQyBGVUxMIFNUT1AgKi8KLSAgICBjYXNlIDB4MDZGMDogLyogRVhURU5E
RUQgQVJBQklDIElORElDIERJR0lUIFpFUk8gKi8KLSAgICBjYXNlIDB4MDcwMTogLyogU1lSSUFD
IFNVUFJBTElORUFSIEZVTEwgU1RPUCAqLwotICAgIGNhc2UgMHgwNzAyOiAvKiBTWVJJQUMgU1VC
TElORUFSIEZVTEwgU1RPUCAqLwotICAgIGNhc2UgMHgwNzAzOiAvKiBTWVJJQUMgU1VQUkFMSU5F
QVIgQ09MT04gKi8KLSAgICBjYXNlIDB4MDcwNDogLyogU1lSSUFDIFNVQkxJTkVBUiBDT0xPTiAq
LwotICAgIGNhc2UgMHgxNzM1OiAvKiBQSElMSVBQSU5FIFNJTkdMRSBQVU5DVFVBVElPTiAqLwot
ICAgIGNhc2UgMHgxRDA0OiAvKiBMQVRJTiBMRVRURVIgU01BTEwgQ0FQSVRBTCBDICovCi0gICAg
Y2FzZSAweDFEMEY6IC8qIExBVElOIExFVFRFUiBTTUFMTCBDQVBJVEFMIE8gKi8KLSAgICBjYXNl
IDB4MUQxQzogLyogTEFUSU4gTEVUVEVSIFNNQUxMIENBUElUQUwgVSAqLwotICAgIGNhc2UgMHgx
RDIwOiAvKiBMQVRJTiBMRVRURVIgU01BTEwgQ0FQSVRBTCBWICovCi0gICAgY2FzZSAweDFEMjE6
IC8qIExBVElOIExFVFRFUiBTTUFMTCBDQVBJVEFMIFcgKi8KLSAgICBjYXNlIDB4MUQyMjogLyog
TEFUSU4gTEVUVEVSIFNNQUxMIENBUElUQUwgWiAqLwotICAgIGNhc2UgMHgxRUNEOiAvKiBMQVRJ
TiBTTUFMTCBMRVRURVIgTyBXSVRIIERPVCBCRUxPVyAqLwotICAgIGNhc2UgMHgyMDEwOiAvKiBI
WVBIRU4gKi8KLSAgICBjYXNlIDB4MjAxMTogLyogTk9OLUJSRUFLSU5HIEhZUEhFTiAqLwotICAg
IGNhc2UgMHgyMDI0OiAvKiBPTkUgRE9UIExFQURFUiAqLwotICAgIGNhc2UgMHgyMDI3OiAvKiBI
WVBIRU5BVElPTiBQT0lOVCAqLwotICAgIGNhc2UgMHgyMDM5OiAvKiBTSU5HTEUgTEVGVC1QT0lO
VElORyBBTkdMRSBRVU9UQVRJT04gTUFSSyAqLwotICAgIGNhc2UgMHgyMDNBOiAvKiBTSU5HTEUg
UklHSFQtUE9JTlRJTkcgQU5HTEUgUVVPVEFUSU9OIE1BUksgKi8KLSAgICBjYXNlIDB4MjA0MTog
LyogQ0FSRVQgSU5TRVJUSU9OIFBPSU5UICovCi0gICAgY2FzZSAweDIwNDQ6IC8qIEZSQUNUSU9O
IFNMQVNIICovCi0gICAgY2FzZSAweDIwNTI6IC8qIENPTU1FUkNJQUwgTUlOVVMgU0lHTiAqLwot
ICAgIGNhc2UgMHgyMTUzOiAvKiBWVUxHQVIgRlJBQ1RJT04gT05FIFRISVJEICovCi0gICAgY2Fz
ZSAweDIxNTQ6IC8qIFZVTEdBUiBGUkFDVElPTiBUV08gVEhJUkRTICovCi0gICAgY2FzZSAweDIx
NTU6IC8qIFZVTEdBUiBGUkFDVElPTiBPTkUgRklGVEggKi8KLSAgICBjYXNlIDB4MjE1NjogLyog
VlVMR0FSIEZSQUNUSU9OIFRXTyBGSUZUSFMgKi8KLSAgICBjYXNlIDB4MjE1NzogLyogVlVMR0FS
IEZSQUNUSU9OIFRIUkVFIEZJRlRIUyAqLwotICAgIGNhc2UgMHgyMTU4OiAvKiBWVUxHQVIgRlJB
Q1RJT04gRk9VUiBGSUZUSFMgKi8KLSAgICBjYXNlIDB4MjE1OTogLyogVlVMR0FSIEZSQUNUSU9O
IE9ORSBTSVhUSCAqLwotICAgIGNhc2UgMHgyMTVBOiAvKiBWVUxHQVIgRlJBQ1RJT04gRklWRSBT
SVhUSFMgKi8KLSAgICBjYXNlIDB4MjE1QjogLyogVlVMR0FSIEZSQUNUSU9OIE9ORSBFSUdIVCAq
LwotICAgIGNhc2UgMHgyMTVDOiAvKiBWVUxHQVIgRlJBQ1RJT04gVEhSRUUgRUlHSFRIUyAqLwot
ICAgIGNhc2UgMHgyMTVEOiAvKiBWVUxHQVIgRlJBQ1RJT04gRklWRSBFSUdIVEhTICovCi0gICAg
Y2FzZSAweDIxNUU6IC8qIFZVTEdBUiBGUkFDVElPTiBTRVZFTiBFSUdIVEhTICovCi0gICAgY2Fz
ZSAweDIxNUY6IC8qIEZSQUNUSU9OIE5VTUVSQVRPUiBPTkUgKi8KLSAgICBjYXNlIDB4MjIxMjog
LyogTUlOVVMgU0lHTiAqLwotICAgIGNhc2UgMHgyMjE1OiAvKiBESVZJU0lPTiBTTEFTSCAqLwot
ICAgIGNhc2UgMHgyMjE2OiAvKiBTRVQgTUlOVVMgKi8KLSAgICBjYXNlIDB4MjIzNjogLyogUkFU
SU8gKi8KLSAgICBjYXNlIDB4MjMzRjogLyogQVBMIEZVTkNUSU9OQUwgU1lNQk9MIFNMQVNIIEJB
UiAqLwotICAgIGNhc2UgMHgyM0FFOiAvKiBJTlRFR1JBTCBFWFRFTlNJT04gKi8KLSAgICBjYXNl
IDB4MjQ0QTogLyogT0NSIERPVUJMRSBCQUNLU0xBU0ggKi8KLSAgICBjYXNlIDB4MjU3MTogLyog
RGlzcGxheVR5cGU6OkJveCBEUkFXSU5HUyBMSUdIVCBESUFHT05BTCBVUFBFUiBSSUdIVCBUTyBM
T1dFUiBMRUZUICovCi0gICAgY2FzZSAweDI1NzI6IC8qIERpc3BsYXlUeXBlOjpCb3ggRFJBV0lO
R1MgTElHSFQgRElBR09OQUwgVVBQRVIgTEVGVCBUTyBMT1dFUiBSSUdIVCAqLwotICAgIGNhc2Ug
MHgyOUY2OiAvKiBTT0xJRFVTIFdJVEggT1ZFUkJBUiAqLwotICAgIGNhc2UgMHgyOUY4OiAvKiBC
SUcgU09MSURVUyAqLwotICAgIGNhc2UgMHgyQUZCOiAvKiBUUklQTEUgU09MSURVUyBCSU5BUlkg
UkVMQVRJT04gKi8KLSAgICBjYXNlIDB4MkFGRDogLyogRE9VQkxFIFNPTElEVVMgT1BFUkFUT1Ig
Ki8KLSAgICBjYXNlIDB4MkZGMDogLyogSURFT0dSQVBISUMgREVTQ1JJUFRJT04gQ0hBUkFDVEVS
IExFRlQgVE8gUklHSFQgKi8KLSAgICBjYXNlIDB4MkZGMTogLyogSURFT0dSQVBISUMgREVTQ1JJ
UFRJT04gQ0hBUkFDVEVSIEFCT1ZFIFRPIEJFTE9XICovCi0gICAgY2FzZSAweDJGRjI6IC8qIElE
RU9HUkFQSElDIERFU0NSSVBUSU9OIENIQVJBQ1RFUiBMRUZUIFRPIE1JRERMRSBBTkQgUklHSFQg
Ki8KLSAgICBjYXNlIDB4MkZGMzogLyogSURFT0dSQVBISUMgREVTQ1JJUFRJT04gQ0hBUkFDVEVS
IEFCT1ZFIFRPIE1JRERMRSBBTkQgQkVMT1cgKi8KLSAgICBjYXNlIDB4MkZGNDogLyogSURFT0dS
QVBISUMgREVTQ1JJUFRJT04gQ0hBUkFDVEVSIEZVTEwgU1VSUk9VTkQgKi8KLSAgICBjYXNlIDB4
MkZGNTogLyogSURFT0dSQVBISUMgREVTQ1JJUFRJT04gQ0hBUkFDVEVSIFNVUlJPVU5EIEZST00g
QUJPVkUgKi8KLSAgICBjYXNlIDB4MkZGNjogLyogSURFT0dSQVBISUMgREVTQ1JJUFRJT04gQ0hB
UkFDVEVSIFNVUlJPVU5EIEZST00gQkVMT1cgKi8KLSAgICBjYXNlIDB4MkZGNzogLyogSURFT0dS
QVBISUMgREVTQ1JJUFRJT04gQ0hBUkFDVEVSIFNVUlJPVU5EIEZST00gTEVGVCAqLwotICAgIGNh
c2UgMHgyRkY4OiAvKiBJREVPR1JBUEhJQyBERVNDUklQVElPTiBDSEFSQUNURVIgU1VSUk9VTkQg
RlJPTSBVUFBFUiBMRUZUICovCi0gICAgY2FzZSAweDJGRjk6IC8qIElERU9HUkFQSElDIERFU0NS
SVBUSU9OIENIQVJBQ1RFUiBTVVJST1VORCBGUk9NIFVQUEVSIFJJR0hUICovCi0gICAgY2FzZSAw
eDJGRkE6IC8qIElERU9HUkFQSElDIERFU0NSSVBUSU9OIENIQVJBQ1RFUiBTVVJST1VORCBGUk9N
IExPV0VSIExFRlQgKi8KLSAgICBjYXNlIDB4MkZGQjogLyogSURFT0dSQVBISUMgREVTQ1JJUFRJ
T04gQ0hBUkFDVEVSIE9WRVJMQUlEICovCi0gICAgY2FzZSAweDMwMDI6IC8qIElERU9HUkFQSElD
IEZVTEwgU1RPUCAqLwotICAgIGNhc2UgMHgzMDA4OiAvKiBMRUZUIEFOR0xFIEJSQUNLRVQgKi8K
LSAgICBjYXNlIDB4MzAxNDogLyogTEVGVCBUT1JUT0lTRSBTSEVMTCBCUkFDS0VUICovCi0gICAg
Y2FzZSAweDMwMTU6IC8qIFJJR0hUIFRPUlRPSVNFIFNIRUxMIEJSQUNLRVQgKi8KLSAgICBjYXNl
IDB4MzAzMzogLyogVkVSVElDQUwgS0FOQSBSRVBFQVQgTUFSSyBVUFBFUiBIQUxGICovCi0gICAg
Y2FzZSAweDMwMzU6IC8qIFZFUlRJQ0FMIEtBTkEgUkVQRUFUIE1BUksgTE9XRVIgSEFMRiAqLwot
ICAgIGNhc2UgMHgzMjFEOiAvKiBQQVJFTlRIRVNJWkVEIEtPUkVBTiBDSEFSQUNURVIgT0pFT04g
Ki8KLSAgICBjYXNlIDB4MzIxRTogLyogUEFSRU5USEVTSVpFRCBLT1JFQU4gQ0hBUkFDVEVSIE8g
SFUgKi8KLSAgICBjYXNlIDB4MzNBRTogLyogU1FVQVJFIFJBRCBPVkVSIFMgKi8KLSAgICBjYXNl
IDB4MzNBRjogLyogU1FVQVJFIFJBRCBPVkVSIFMgU1FVQVJFRCAqLwotICAgIGNhc2UgMHgzM0M2
OiAvKiBTUVVBUkUgQyBPVkVSIEtHICovCi0gICAgY2FzZSAweDMzREY6IC8qIFNRVUFSRSBBIE9W
RVIgTSAqLwotICAgIGNhc2UgMHgwNUI5OiAvKiBIRUJSRVcgUE9JTlQgSE9MQU0gKi8KLSAgICBj
YXNlIDB4MDVCQTogLyogSEVCUkVXIFBPSU5UIEhPTEFNIEhBU0VSIEZPUiBWQVYgKi8KLSAgICBj
YXNlIDB4MDVDMTogLyogSEVCUkVXIFBPSU5UIFNISU4gRE9UICovCi0gICAgY2FzZSAweDA1QzI6
IC8qIEhFQlJFVyBQT0lOVCBTSU4gRE9UICovCi0gICAgY2FzZSAweDA1QzQ6IC8qIEhFQlJFVyBN
QVJLIFVQUEVSIERPVCAqLwotICAgIGNhc2UgMHhBNzMxOiAvKiBMQVRJTiBMRVRURVIgU01BTEwg
Q0FQSVRBTCBTICovCi0gICAgY2FzZSAweEE3NzE6IC8qIExBVElOIFNNQUxMIExFVFRFUiBEVU0g
Ki8KLSAgICBjYXNlIDB4QTc4OTogLyogTU9ESUZJRVIgTEVUVEVSIENPTE9OICovCi0gICAgY2Fz
ZSAweEZFMTQ6IC8qIFBSRVNFTlRBVElPTiBGT1JNIEZPUiBWRVJUSUNBTCBTRU1JQ09MT04gKi8K
LSAgICBjYXNlIDB4RkUxNTogLyogUFJFU0VOVEFUSU9OIEZPUk0gRk9SIFZFUlRJQ0FMIEVYQ0xB
TUFUSU9OIE1BUksgKi8KLSAgICBjYXNlIDB4RkUzRjogLyogUFJFU0VOVEFUSU9OIEZPUk0gRk9S
IFZFUlRJQ0FMIExFRlQgQU5HTEUgQlJBQ0tFVCAqLwotICAgIGNhc2UgMHhGRTVEOiAvKiBTTUFM
TCBMRUZUIFRPUlRPSVNFIFNIRUxMIEJSQUNLRVQgKi8KLSAgICBjYXNlIDB4RkU1RTogLyogU01B
TEwgUklHSFQgVE9SVE9JU0UgU0hFTEwgQlJBQ0tFVCAqLwotICAgIGNhc2UgMHhGRjBFOiAvKiBG
VUxMV0lEVEggRlVMTCBTVE9QICovCi0gICAgY2FzZSAweEZGMEY6IC8qIEZVTEwgV0lEVEggU09M
SURVUyAqLwotICAgIGNhc2UgMHhGRjYxOiAvKiBIQUxGV0lEVEggSURFT0dSQVBISUMgRlVMTCBT
VE9QICovCi0gICAgY2FzZSAweEZGRkM6IC8qIE9CSkVDVCBSRVBMQUNFTUVOVCBDSEFSQUNURVIg
Ki8KLSAgICBjYXNlIDB4RkZGRDogLyogUkVQTEFDRU1FTlQgQ0hBUkFDVEVSICovCi0gICAgY2Fz
ZSAweDFGNTBGOiAvKiBMT0NLIFdJVEggSU5LIFBFTiAqLwotICAgIGNhc2UgMHgxRjUxMDogLyog
Q0xPU0VEIExPQ0sgV0lUSCBLRVkgKi8KLSAgICBjYXNlIDB4MUY1MTE6IC8qIEtFWSAqLwotICAg
IGNhc2UgMHgxRjUxMjogLyogTE9DSyAqLwotICAgIGNhc2UgMHgxRjUxMzogLyogT1BFTiBMT0NL
ICovCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGNhc2UgMHgwMzA3OiAvKiBDT01CSU5JTkcg
RE9UIEFCT1ZFICovCi0gICAgICAgIHJldHVybiBwcmV2aW91c0NvZGVQb2ludCA9PSAweDAyMzcg
LyogTEFUSU4gU01BTEwgTEVUVEVSIERPVExFU1MgSiAqLwotICAgICAgICAgICAgfHwgcHJldmlv
dXNDb2RlUG9pbnQgPT0gMHgwMTMxIC8qIExBVElOIFNNQUxMIExFVFRFUiBET1RMRVNTIEkgKi8K
LSAgICAgICAgICAgIHx8IHByZXZpb3VzQ29kZVBvaW50ID09IDB4MDVENTsgLyogSEVCUkVXIExF
VFRFUiBWQVYgKi8KLSAgICBjYXNlIDB4MDU0ODogLyogQVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIg
Vk8gKi8KLSAgICBjYXNlIDB4MDU0RDogLyogQVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgU0VIICov
Ci0gICAgY2FzZSAweDA1Nzg6IC8qIEFSTUVOSUFOIFNNQUxMIExFVFRFUiBWTyAqLwotICAgIGNh
c2UgMHgwNTdEOiAvKiBBUk1FTklBTiBTTUFMTCBMRVRURVIgU0VIICovCi0gICAgICAgIHJldHVy
biBwcmV2aW91c0NvZGVQb2ludAotICAgICAgICAgICAgJiYgIWlzQVNDSUlEaWdpdE9yVmFsaWRI
b3N0Q2hhcmFjdGVyKHByZXZpb3VzQ29kZVBvaW50LnZhbHVlKCkpCi0gICAgICAgICAgICAmJiAh
aXNBcm1lbmlhblNjcmlwdENoYXJhY3RlcihwcmV2aW91c0NvZGVQb2ludC52YWx1ZSgpKTsKLSAg
ICBjYXNlICcuJzoKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGRlZmF1bHQ6Ci0gICAgICAg
IHJldHVybiBwcmV2aW91c0NvZGVQb2ludAotICAgICAgICAgICAgJiYgaXNBcm1lbmlhbkxvb2th
bGlrZUNoYXJhY3RlcihwcmV2aW91c0NvZGVQb2ludC52YWx1ZSgpKQotICAgICAgICAgICAgJiYg
IShpc0FybWVuaWFuU2NyaXB0Q2hhcmFjdGVyKGNoYXJDb2RlKSB8fCBpc0FTQ0lJRGlnaXRPclZh
bGlkSG9zdENoYXJhY3RlcihjaGFyQ29kZSkpOwotICAgIH0KLX0KLQotdm9pZCB3aGl0ZUxpc3RJ
RE5TY3JpcHQoY29uc3QgY2hhciogc2NyaXB0TmFtZSkKLXsKLSAgICBpbnQzMl90IHNjcmlwdCA9
IHVfZ2V0UHJvcGVydHlWYWx1ZUVudW0oVUNIQVJfU0NSSVBULCBzY3JpcHROYW1lKTsKLSAgICBp
ZiAoc2NyaXB0ID49IDAgJiYgc2NyaXB0IDwgVVNDUklQVF9DT0RFX0xJTUlUKSB7Ci0gICAgICAg
IHNpemVfdCBpbmRleCA9IHNjcmlwdCAvIDMyOwotICAgICAgICB1aW50MzJfdCBtYXNrID0gMSA8
PCAoc2NyaXB0ICUgMzIpOwotICAgICAgICBJRE5TY3JpcHRXaGl0ZUxpc3RbaW5kZXhdIHw9IG1h
c2s7Ci0gICAgfQotfQotCi12b2lkIGluaXRpYWxpemVEZWZhdWx0SUROU2NyaXB0V2hpdGVMaXN0
KCkKLXsKLSAgICBjb25zdCBjaGFyKiBkZWZhdWx0SUROU2NyaXB0V2hpdGVMaXN0WzIwXSA9IHsK
LSAgICAgICAgIkNvbW1vbiIsCi0gICAgICAgICJJbmhlcml0ZWQiLAotICAgICAgICAiQXJhYmlj
IiwKLSAgICAgICAgIkFybWVuaWFuIiwKLSAgICAgICAgIkJvcG9tb2ZvIiwKLSAgICAgICAgIkNh
bmFkaWFuX0Fib3JpZ2luYWwiLAotICAgICAgICAiRGV2YW5hZ2FyaSIsCi0gICAgICAgICJEZXNl
cmV0IiwKLSAgICAgICAgIkd1amFyYXRpIiwKLSAgICAgICAgIkd1cm11a2hpIiwKLSAgICAgICAg
Ikhhbmd1bCIsCi0gICAgICAgICJIYW4iLAotICAgICAgICAiSGVicmV3IiwKLSAgICAgICAgIkhp
cmFnYW5hIiwKLSAgICAgICAgIkthdGFrYW5hX09yX0hpcmFnYW5hIiwKLSAgICAgICAgIkthdGFr
YW5hIiwKLSAgICAgICAgIkxhdGluIiwKLSAgICAgICAgIlRhbWlsIiwKLSAgICAgICAgIlRoYWki
LAotICAgICAgICAiWWkiLAotICAgIH07Ci0gICAgZm9yIChjb25zdCBjaGFyKiBzY3JpcHROYW1l
IDogZGVmYXVsdElETlNjcmlwdFdoaXRlTGlzdCkKLSAgICAgICAgd2hpdGVMaXN0SUROU2NyaXB0
KHNjcmlwdE5hbWUpOwotfQotCi1zdGF0aWMgYm9vbCBhbGxDaGFyYWN0ZXJzSW5JRE5TY3JpcHRX
aGl0ZUxpc3QoY29uc3QgVUNoYXIqIGJ1ZmZlciwgaW50MzJfdCBsZW5ndGgpCi17Ci0gICAgbG9h
ZElETlNjcmlwdFdoaXRlTGlzdCgpOwotICAgIGludDMyX3QgaSA9IDA7Ci0gICAgc3RkOjpvcHRp
b25hbDxVQ2hhcjMyPiBwcmV2aW91c0NvZGVQb2ludDsKLSAgICB3aGlsZSAoaSA8IGxlbmd0aCkg
ewotICAgICAgICBVQ2hhcjMyIGM7Ci0gICAgICAgIFUxNl9ORVhUKGJ1ZmZlciwgaSwgbGVuZ3Ro
LCBjKQotICAgICAgICBVRXJyb3JDb2RlIGVycm9yID0gVV9aRVJPX0VSUk9SOwotICAgICAgICBV
U2NyaXB0Q29kZSBzY3JpcHQgPSB1c2NyaXB0X2dldFNjcmlwdChjLCAmZXJyb3IpOwotICAgICAg
ICBpZiAoZXJyb3IgIT0gVV9aRVJPX0VSUk9SKSB7Ci0gICAgICAgICAgICBMT0dfRVJST1IoImdv
dCBJQ1UgZXJyb3Igd2hpbGUgdHJ5aW5nIHRvIGxvb2sgYXQgc2NyaXB0czogJWQiLCBlcnJvcik7
Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHNjcmlw
dCA8IDApIHsKLSAgICAgICAgICAgIExPR19FUlJPUigiZ290IG5lZ2F0aXZlIG51bWJlciBmb3Ig
c2NyaXB0IGNvZGUgZnJvbSBJQ1U6ICVkIiwgc2NyaXB0KTsKLSAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgfQotICAgICAgICBpZiAoc2NyaXB0ID49IFVTQ1JJUFRfQ09ERV9MSU1J
VCkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICBzaXplX3QgaW5kZXggPSBz
Y3JpcHQgLyAzMjsKLSAgICAgICAgdWludDMyX3QgbWFzayA9IDEgPDwgKHNjcmlwdCAlIDMyKTsK
LSAgICAgICAgaWYgKCEoSUROU2NyaXB0V2hpdGVMaXN0W2luZGV4XSAmIG1hc2spKQotICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAKLSAgICAgICAgaWYgKGlzTG9va2FsaWtlQ2hh
cmFjdGVyKHByZXZpb3VzQ29kZVBvaW50LCBjKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgcHJldmlvdXNDb2RlUG9pbnQgPSBjOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsK
LX0KLQotc3RhdGljIGJvb2wgaXNTZWNvbmRMZXZlbERvbWFpbk5hbWVBbGxvd2VkQnlUTERSdWxl
cyhjb25zdCBVQ2hhciogYnVmZmVyLCBpbnQzMl90IGxlbmd0aCwgY29uc3QgV1RGOjpGdW5jdGlv
bjxib29sKFVDaGFyKT4mIGNoYXJhY3RlcklzQWxsb3dlZCkKLXsKLSAgICBBU1NFUlQobGVuZ3Ro
ID4gMCk7Ci0KLSAgICBmb3IgKGludDMyX3QgaSA9IGxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7
Ci0gICAgICAgIFVDaGFyIGNoID0gYnVmZmVyW2ldOwotICAgICAgICAKLSAgICAgICAgaWYgKGNo
YXJhY3RlcklzQWxsb3dlZChjaCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgCi0g
ICAgICAgIC8vIE9ubHkgY2hlY2sgdGhlIHNlY29uZCBsZXZlbCBkb21haW4uIExvd2VyIGxldmVs
IHJlZ2lzdHJhcnMgbWF5IGhhdmUgZGlmZmVyZW50IHJ1bGVzLgotICAgICAgICBpZiAoY2ggPT0g
Jy4nKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotfQotCi0jZGVmaW5lIENIRUNLX1JVTEVTX0lGX1NV
RkZJWF9NQVRDSEVTKHN1ZmZpeCwgZnVuY3Rpb24pIFwKLSAgICB7IFwKLSAgICAgICAgc3RhdGlj
IGNvbnN0IGludDMyX3Qgc3VmZml4TGVuZ3RoID0gc2l6ZW9mKHN1ZmZpeCkgLyBzaXplb2Yoc3Vm
Zml4WzBdKTsgXAotICAgICAgICBpZiAobGVuZ3RoID4gc3VmZml4TGVuZ3RoICYmICFtZW1jbXAo
YnVmZmVyICsgbGVuZ3RoIC0gc3VmZml4TGVuZ3RoLCBzdWZmaXgsIHNpemVvZihzdWZmaXgpKSkg
XAotICAgICAgICAgICAgcmV0dXJuIGlzU2Vjb25kTGV2ZWxEb21haW5OYW1lQWxsb3dlZEJ5VExE
UnVsZXMoYnVmZmVyLCBsZW5ndGggLSBzdWZmaXhMZW5ndGgsIGZ1bmN0aW9uKTsgXAotICAgIH0K
LQotc3RhdGljIGJvb2wgaXNSdXNzaWFuRG9tYWluTmFtZUNoYXJhY3RlcihVQ2hhciBjaCkKLXsK
LSAgICAvLyBPbmx5IG1vZGVybiBSdXNzaWFuIGxldHRlcnMsIGRpZ2l0cyBhbmQgZGFzaGVzIGFy
ZSBhbGxvd2VkLgotICAgIHJldHVybiAoY2ggPj0gMHgwNDMwICYmIGNoIDw9IDB4MDQ0ZikgfHwg
Y2ggPT0gMHgwNDUxIHx8IGlzQVNDSUlEaWdpdChjaCkgfHwgY2ggPT0gJy0nOwotfQotCi1zdGF0
aWMgYm9vbCBhbGxDaGFyYWN0ZXJzQWxsb3dlZEJ5VExEUnVsZXMoY29uc3QgVUNoYXIqIGJ1ZmZl
ciwgaW50MzJfdCBsZW5ndGgpCi17Ci0gICAgLy8gU2tpcCB0cmFpbGluZyBkb3QgZm9yIHJvb3Qg
ZG9tYWluLgotICAgIGlmIChidWZmZXJbbGVuZ3RoIC0gMV0gPT0gJy4nKQotICAgICAgICBsZW5n
dGgtLTsKLQotICAgIC8vIGh0dHA6Ly9jY3RsZC5ydS9maWxlcy9wZGYvZG9jcy9ydWxlc19ydS1y
Zi5wZGYKLSAgICBzdGF0aWMgY29uc3QgVUNoYXIgY3lyaWxsaWNSRltdID0gewotICAgICAgICAn
LicsCi0gICAgICAgIDB4MDQ0MCwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVSCi0gICAgICAg
IDB4MDQ0NCwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVGCi0gICAgfTsKLSAgICBDSEVDS19S
VUxFU19JRl9TVUZGSVhfTUFUQ0hFUyhjeXJpbGxpY1JGLCBpc1J1c3NpYW5Eb21haW5OYW1lQ2hh
cmFjdGVyKTsKLQotICAgIC8vIGh0dHA6Ly9ydXNuYW1lcy5ydS9ydWxlcy5wbAotICAgIHN0YXRp
YyBjb25zdCBVQ2hhciBjeXJpbGxpY1JVU1tdID0gewotICAgICAgICAnLicsCi0gICAgICAgIDB4
MDQ0MCwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVSCi0gICAgICAgIDB4MDQ0MywgLy8gQ1lS
SUxMSUMgU01BTEwgTEVUVEVSIFUKLSAgICAgICAgMHgwNDQxLCAvLyBDWVJJTExJQyBTTUFMTCBM
RVRURVIgRVMKLSAgICB9OwotICAgIENIRUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRDSEVTKGN5cmls
bGljUlVTLCBpc1J1c3NpYW5Eb21haW5OYW1lQ2hhcmFjdGVyKTsKLQotICAgIC8vIGh0dHA6Ly9y
dS5mYWl0aWQub3JnL3Byb2plY3RzL21vc2Nvdy9kb2N1bWVudHMvbW9za3ZhL2lkbgotICAgIHN0
YXRpYyBjb25zdCBVQ2hhciBjeXJpbGxpY01PU0tWQVtdID0gewotICAgICAgICAnLicsCi0gICAg
ICAgIDB4MDQzQywgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVNCi0gICAgICAgIDB4MDQzRSwg
Ly8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIE8KLSAgICAgICAgMHgwNDQxLCAvLyBDWVJJTExJQyBT
TUFMTCBMRVRURVIgRVMKLSAgICAgICAgMHgwNDNBLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIg
S0EKLSAgICAgICAgMHgwNDMyLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgVkUKLSAgICAgICAg
MHgwNDMwLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgQQotICAgIH07Ci0gICAgQ0hFQ0tfUlVM
RVNfSUZfU1VGRklYX01BVENIRVMoY3lyaWxsaWNNT1NLVkEsIGlzUnVzc2lhbkRvbWFpbk5hbWVD
aGFyYWN0ZXIpOwotCi0gICAgLy8gaHR0cDovL3d3dy5kb3RkZXRpLnJ1L2ZvcnVzZXIvZG9jcy9y
ZWdydWxlcy5waHAKLSAgICBzdGF0aWMgY29uc3QgVUNoYXIgY3lyaWxsaWNERVRJW10gPSB7Ci0g
ICAgICAgICcuJywKLSAgICAgICAgMHgwNDM0LCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgREUK
LSAgICAgICAgMHgwNDM1LCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgSUUKLSAgICAgICAgMHgw
NDQyLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgVEUKLSAgICAgICAgMHgwNDM4LCAvLyBDWVJJ
TExJQyBTTUFMTCBMRVRURVIgSQotICAgIH07Ci0gICAgQ0hFQ0tfUlVMRVNfSUZfU1VGRklYX01B
VENIRVMoY3lyaWxsaWNERVRJLCBpc1J1c3NpYW5Eb21haW5OYW1lQ2hhcmFjdGVyKTsKLQotICAg
IC8vIGh0dHA6Ly9jb3JlbmljLm9yZyAtIHJ1bGVzIG5vdCBwdWJsaXNoZWQuIFRoZSB3b3JkIGlz
IFJ1c3NpYW4sIHNvIG9ubHkgYWxsb3dpbmcgUnVzc2lhbiBhdCB0aGlzIHRpbWUsCi0gICAgLy8g
YWx0aG91Z2ggd2UgbWF5IG5lZWQgdG8gcmV2aXNlIHRoZSBjaGVja3MgaWYgdGhpcyBlbmRzIHVw
IGJlaW5nIHVzZWQgd2l0aCBvdGhlciBsYW5ndWFnZXMgc3Bva2VuIGluIFJ1c3NpYS4KLSAgICBz
dGF0aWMgY29uc3QgVUNoYXIgY3lyaWxsaWNPTkxBWU5bXSA9IHsKLSAgICAgICAgJy4nLAotICAg
ICAgICAweDA0M0UsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBPCi0gICAgICAgIDB4MDQzRCwg
Ly8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVOCi0gICAgICAgIDB4MDQzQiwgLy8gQ1lSSUxMSUMg
U01BTEwgTEVUVEVSIEVMCi0gICAgICAgIDB4MDQzMCwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVS
IEEKLSAgICAgICAgMHgwNDM5LCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgU0hPUlQgSQotICAg
ICAgICAweDA0M0QsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFTgotICAgIH07Ci0gICAgQ0hF
Q0tfUlVMRVNfSUZfU1VGRklYX01BVENIRVMoY3lyaWxsaWNPTkxBWU4sIGlzUnVzc2lhbkRvbWFp
bk5hbWVDaGFyYWN0ZXIpOwotCi0gICAgLy8gaHR0cDovL2NvcmVuaWMub3JnIC0gc2FtZSBhcyBh
Ym92ZS4KLSAgICBzdGF0aWMgY29uc3QgVUNoYXIgY3lyaWxsaWNTQVlUW10gPSB7Ci0gICAgICAg
ICcuJywKLSAgICAgICAgMHgwNDQxLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRVMKLSAgICAg
ICAgMHgwNDMwLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgQQotICAgICAgICAweDA0MzksIC8v
IENZUklMTElDIFNNQUxMIExFVFRFUiBTSE9SVCBJCi0gICAgICAgIDB4MDQ0MiwgLy8gQ1lSSUxM
SUMgU01BTEwgTEVUVEVSIFRFCi0gICAgfTsKLSAgICBDSEVDS19SVUxFU19JRl9TVUZGSVhfTUFU
Q0hFUyhjeXJpbGxpY1NBWVQsIGlzUnVzc2lhbkRvbWFpbk5hbWVDaGFyYWN0ZXIpOwotCi0gICAg
Ly8gaHR0cDovL3Bpci5vcmcvcHJvZHVjdHMvb3ByLWRvbWFpbi8gLSBydWxlcyBub3QgcHVibGlz
aGVkLiBBY2NvcmRpbmcgdG8gdGhlIHJlZ2lzdHJ5IHNpdGUsCi0gICAgLy8gdGhlIGludGVuZGVk
IGF1ZGllbmNlIGlzICJSdXNzaWFuIGFuZCBvdGhlciBTbGF2aWMtc3BlYWtpbmcgbWFya2V0cyIu
Ci0gICAgLy8gQ2hyb21lIGFwcGVhcnMgdG8gb25seSBhbGxvdyBSdXNzaWFuLCBzbyBzdGlja2lu
ZyB3aXRoIHRoYXQgZm9yIG5vdy4KLSAgICBzdGF0aWMgY29uc3QgVUNoYXIgY3lyaWxsaWNPUkdb
XSA9IHsKLSAgICAgICAgJy4nLAotICAgICAgICAweDA0M0UsIC8vIENZUklMTElDIFNNQUxMIExF
VFRFUiBPCi0gICAgICAgIDB4MDQ0MCwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVSCi0gICAg
ICAgIDB4MDQzMywgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEdIRQotICAgIH07Ci0gICAgQ0hF
Q0tfUlVMRVNfSUZfU1VGRklYX01BVENIRVMoY3lyaWxsaWNPUkcsIGlzUnVzc2lhbkRvbWFpbk5h
bWVDaGFyYWN0ZXIpOwotCi0gICAgLy8gaHR0cDovL2NjdGxkLmJ5L3J1bGVzLmh0bWwKLSAgICBz
dGF0aWMgY29uc3QgVUNoYXIgY3lyaWxsaWNCRUxbXSA9IHsKLSAgICAgICAgJy4nLAotICAgICAg
ICAweDA0MzEsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBCRQotICAgICAgICAweDA0MzUsIC8v
IENZUklMTElDIFNNQUxMIExFVFRFUiBJRQotICAgICAgICAweDA0M0IsIC8vIENZUklMTElDIFNN
QUxMIExFVFRFUiBFTAotICAgIH07Ci0gICAgQ0hFQ0tfUlVMRVNfSUZfU1VGRklYX01BVENIRVMo
Y3lyaWxsaWNCRUwsIFtdKFVDaGFyIGNoKSB7Ci0gICAgICAgIC8vIFJ1c3NpYW4gYW5kIEJ5ZWxv
cnVzc2lhbiBsZXR0ZXJzLCBkaWdpdHMgYW5kIGRhc2hlcyBhcmUgYWxsb3dlZC4KLSAgICAgICAg
cmV0dXJuIChjaCA+PSAweDA0MzAgJiYgY2ggPD0gMHgwNDRmKSB8fCBjaCA9PSAweDA0NTEgfHwg
Y2ggPT0gMHgwNDU2IHx8IGNoID09IDB4MDQ1RSB8fCBjaCA9PSAweDIwMTkgfHwgaXNBU0NJSURp
Z2l0KGNoKSB8fCBjaCA9PSAnLSc7Ci0gICAgfSk7Ci0KLSAgICAvLyBodHRwOi8vd3d3Lm5pYy5r
ei9kb2NzL3BvcnlhZG9rX3ZuZWRyZW5peWFfa2F6X3J1LnBkZgotICAgIHN0YXRpYyBjb25zdCBV
Q2hhciBjeXJpbGxpY0tBWltdID0gewotICAgICAgICAnLicsCi0gICAgICAgIDB4MDQ5QiwgLy8g
Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEtBIFdJVEggREVTQ0VOREVSCi0gICAgICAgIDB4MDQzMCwg
Ly8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEEKLSAgICAgICAgMHgwNDM3LCAvLyBDWVJJTExJQyBT
TUFMTCBMRVRURVIgWkUKLSAgICB9OwotICAgIENIRUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRDSEVT
KGN5cmlsbGljS0FaLCBbXShVQ2hhciBjaCkgewotICAgICAgICAvLyBLYXpha2ggbGV0dGVycywg
ZGlnaXRzIGFuZCBkYXNoZXMgYXJlIGFsbG93ZWQuCi0gICAgICAgIHJldHVybiAoY2ggPj0gMHgw
NDMwICYmIGNoIDw9IDB4MDQ0ZikgfHwgY2ggPT0gMHgwNDUxIHx8IGNoID09IDB4MDREOSB8fCBj
aCA9PSAweDA0OTMgfHwgY2ggPT0gMHgwNDlCIHx8IGNoID09IDB4MDRBMyB8fCBjaCA9PSAweDA0
RTkgfHwgY2ggPT0gMHgwNEIxIHx8IGNoID09IDB4MDRBRiB8fCBjaCA9PSAweDA0QkIgfHwgY2gg
PT0gMHgwNDU2IHx8IGlzQVNDSUlEaWdpdChjaCkgfHwgY2ggPT0gJy0nOwotICAgIH0pOwotCi0g
ICAgLy8gaHR0cDovL3VhbmljLm5ldC9kb2NzL2RvY3VtZW50cy11a3IvUnVsZXMlMjBvZiUyMFVL
Ul92NC4wLnBkZgotICAgIHN0YXRpYyBjb25zdCBVQ2hhciBjeXJpbGxpY1VLUltdID0gewotICAg
ICAgICAnLicsCi0gICAgICAgIDB4MDQ0MywgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFUKLSAg
ICAgICAgMHgwNDNBLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgS0EKLSAgICAgICAgMHgwNDQw
LCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRVIKLSAgICB9OwotICAgIENIRUNLX1JVTEVTX0lG
X1NVRkZJWF9NQVRDSEVTKGN5cmlsbGljVUtSLCBbXShVQ2hhciBjaCkgewotICAgICAgICAvLyBS
dXNzaWFuIGFuZCBVa3JhaW5pYW4gbGV0dGVycywgZGlnaXRzIGFuZCBkYXNoZXMgYXJlIGFsbG93
ZWQuCi0gICAgICAgIHJldHVybiAoY2ggPj0gMHgwNDMwICYmIGNoIDw9IDB4MDQ0ZikgfHwgY2gg
PT0gMHgwNDUxIHx8IGNoID09IDB4MDQ5MSB8fCBjaCA9PSAweDA0MDQgfHwgY2ggPT0gMHgwNDU2
IHx8IGNoID09IDB4MDQ1NyB8fCBpc0FTQ0lJRGlnaXQoY2gpIHx8IGNoID09ICctJzsKLSAgICB9
KTsKLQotICAgIC8vIGh0dHA6Ly93d3cucm5pZHMucnMvZGF0YS9ET0tVTUVOVEkvaWRuLXNyYi1w
b2xpY3ktdGVybXNvZnVzZS12MS40LWVuZy5wZGYKLSAgICBzdGF0aWMgY29uc3QgVUNoYXIgY3ly
aWxsaWNTUkJbXSA9IHsKLSAgICAgICAgJy4nLAotICAgICAgICAweDA0NDEsIC8vIENZUklMTElD
IFNNQUxMIExFVFRFUiBFUwotICAgICAgICAweDA0NDAsIC8vIENZUklMTElDIFNNQUxMIExFVFRF
UiBFUgotICAgICAgICAweDA0MzEsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBCRQotICAgIH07
Ci0gICAgQ0hFQ0tfUlVMRVNfSUZfU1VGRklYX01BVENIRVMoY3lyaWxsaWNTUkIsIFtdKFVDaGFy
IGNoKSB7Ci0gICAgICAgIC8vIFNlcmJpYW4gbGV0dGVycywgZGlnaXRzIGFuZCBkYXNoZXMgYXJl
IGFsbG93ZWQuCi0gICAgICAgIHJldHVybiAoY2ggPj0gMHgwNDMwICYmIGNoIDw9IDB4MDQzOCkg
fHwgKGNoID49IDB4MDQzQSAmJiBjaCA8PSAweDA0NDgpIHx8IGNoID09IDB4MDQ1MiB8fCBjaCA9
PSAweDA0NTggfHwgY2ggPT0gMHgwNDU5IHx8IGNoID09IDB4MDQ1QSB8fCBjaCA9PSAweDA0NUIg
fHwgY2ggPT0gMHgwNDVGIHx8IGlzQVNDSUlEaWdpdChjaCkgfHwgY2ggPT0gJy0nOwotICAgIH0p
OwotCi0gICAgLy8gaHR0cDovL21hcm5ldC5tay9kb2MvcHJhdmlsbmlrLW1rLW1rZC5wZGYKLSAg
ICBzdGF0aWMgY29uc3QgVUNoYXIgY3lyaWxsaWNNS0RbXSA9IHsKLSAgICAgICAgJy4nLAotICAg
ICAgICAweDA0M0MsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFTQotICAgICAgICAweDA0M0Es
IC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBLQQotICAgICAgICAweDA0MzQsIC8vIENZUklMTElD
IFNNQUxMIExFVFRFUiBERQotICAgIH07Ci0gICAgQ0hFQ0tfUlVMRVNfSUZfU1VGRklYX01BVENI
RVMoY3lyaWxsaWNNS0QsIFtdKFVDaGFyIGNoKSB7Ci0gICAgICAgIC8vIE1hY2Vkb25pYW4gbGV0
dGVycywgZGlnaXRzIGFuZCBkYXNoZXMgYXJlIGFsbG93ZWQuCi0gICAgICAgIHJldHVybiAoY2gg
Pj0gMHgwNDMwICYmIGNoIDw9IDB4MDQzOCkgfHwgKGNoID49IDB4MDQzQSAmJiBjaCA8PSAweDA0
NDgpIHx8IGNoID09IDB4MDQ1MyB8fCBjaCA9PSAweDA0NTUgfHwgY2ggPT0gMHgwNDU4IHx8IGNo
ID09IDB4MDQ1OSB8fCBjaCA9PSAweDA0NUEgfHwgY2ggPT0gMHgwNDVDIHx8IGNoID09IDB4MDQ1
RiB8fCBpc0FTQ0lJRGlnaXQoY2gpIHx8IGNoID09ICctJzsKLSAgICB9KTsKLQotICAgIC8vIGh0
dHBzOi8vd3d3Lm1vbi5tbi9jcy8KLSAgICBzdGF0aWMgY29uc3QgVUNoYXIgY3lyaWxsaWNNT05b
XSA9IHsKLSAgICAgICAgJy4nLAotICAgICAgICAweDA0M0MsIC8vIENZUklMTElDIFNNQUxMIExF
VFRFUiBFTQotICAgICAgICAweDA0M0UsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBPCi0gICAg
ICAgIDB4MDQzRCwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVOCi0gICAgfTsKLSAgICBDSEVD
S19SVUxFU19JRl9TVUZGSVhfTUFUQ0hFUyhjeXJpbGxpY01PTiwgW10oVUNoYXIgY2gpIHsKLSAg
ICAgICAgLy8gTW9uZ29saWFuIGxldHRlcnMsIGRpZ2l0cyBhbmQgZGFzaGVzIGFyZSBhbGxvd2Vk
LgotICAgICAgICByZXR1cm4gKGNoID49IDB4MDQzMCAmJiBjaCA8PSAweDA0NGYpIHx8IGNoID09
IDB4MDQ1MSB8fCBjaCA9PSAweDA0RTkgfHwgY2ggPT0gMHgwNEFGIHx8IGlzQVNDSUlEaWdpdChj
aCkgfHwgY2ggPT0gJy0nOwotICAgIH0pOwotCi0gICAgLy8gTm90IGEga25vd24gdG9wIGxldmVs
IGRvbWFpbiB3aXRoIHNwZWNpYWwgcnVsZXMuCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi0vLyBS
ZXR1cm4gdmFsdWUgb2YgbnVsbCBtZWFucyBubyBtYXBwaW5nIGlzIG5lY2Vzc2FyeS4KLXN0ZDo6
b3B0aW9uYWw8U3RyaW5nPiBtYXBIb3N0TmFtZShjb25zdCBTdHJpbmcmIGhvc3ROYW1lLCBjb25z
dCBzdGQ6Om9wdGlvbmFsPFVSTERlY29kZUZ1bmN0aW9uPiYgZGVjb2RlRnVuY3Rpb24pCi17Ci0g
ICAgaWYgKGhvc3ROYW1lLmxlbmd0aCgpID4gaG9zdE5hbWVCdWZmZXJMZW5ndGgpCi0gICAgICAg
IHJldHVybiBTdHJpbmcoKTsKLSAgICAKLSAgICBpZiAoIWhvc3ROYW1lLmxlbmd0aCgpKQotICAg
ICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICBTdHJpbmcgc3RyaW5nOwotICAgIGlmIChkZWNv
ZGVGdW5jdGlvbiAmJiBzdHJpbmcuY29udGFpbnMoJyUnKSkKLSAgICAgICAgc3RyaW5nID0gKCpk
ZWNvZGVGdW5jdGlvbikoaG9zdE5hbWUpOwotICAgIGVsc2UKLSAgICAgICAgc3RyaW5nID0gaG9z
dE5hbWU7Ci0KLSAgICB1bnNpZ25lZCBsZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7Ci0KLSAgICBh
dXRvIHNvdXJjZUJ1ZmZlciA9IHN0cmluZy5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigp
OwotICAgIAotICAgIFVDaGFyIGRlc3RpbmF0aW9uQnVmZmVyW2hvc3ROYW1lQnVmZmVyTGVuZ3Ro
XTsKLSAgICBVRXJyb3JDb2RlIHVlcnJvciA9IFVfWkVST19FUlJPUjsKLSAgICBVSUROQUluZm8g
cHJvY2Vzc2luZ0RldGFpbHMgPSBVSUROQV9JTkZPX0lOSVRJQUxJWkVSOwotICAgIGludDMyX3Qg
bnVtQ2hhcmFjdGVyc0NvbnZlcnRlZCA9IChkZWNvZGVGdW5jdGlvbiA/IHVpZG5hX25hbWVUb0FT
Q0lJIDogdWlkbmFfbmFtZVRvVW5pY29kZSkoJlVSTFBhcnNlcjo6aW50ZXJuYXRpb25hbERvbWFp
bk5hbWVUcmFuc2NvZGVyKCksIHNvdXJjZUJ1ZmZlci5kYXRhKCksIGxlbmd0aCwgZGVzdGluYXRp
b25CdWZmZXIsIGhvc3ROYW1lQnVmZmVyTGVuZ3RoLCAmcHJvY2Vzc2luZ0RldGFpbHMsICZ1ZXJy
b3IpOwotICAgIGlmIChsZW5ndGggJiYgKFVfRkFJTFVSRSh1ZXJyb3IpIHx8IHByb2Nlc3NpbmdE
ZXRhaWxzLmVycm9ycykpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgCi0gICAg
aWYgKG51bUNoYXJhY3RlcnNDb252ZXJ0ZWQgPT0gc3RhdGljX2Nhc3Q8aW50MzJfdD4obGVuZ3Ro
KSAmJiAhbWVtY21wKHNvdXJjZUJ1ZmZlci5kYXRhKCksIGRlc3RpbmF0aW9uQnVmZmVyLCBsZW5n
dGggKiBzaXplb2YoVUNoYXIpKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgaWYg
KCFkZWNvZGVGdW5jdGlvbiAmJiAhYWxsQ2hhcmFjdGVyc0luSUROU2NyaXB0V2hpdGVMaXN0KGRl
c3RpbmF0aW9uQnVmZmVyLCBudW1DaGFyYWN0ZXJzQ29udmVydGVkKSAmJiAhYWxsQ2hhcmFjdGVy
c0FsbG93ZWRCeVRMRFJ1bGVzKGRlc3RpbmF0aW9uQnVmZmVyLCBudW1DaGFyYWN0ZXJzQ29udmVy
dGVkKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgcmV0dXJuIFN0cmluZyhkZXN0
aW5hdGlvbkJ1ZmZlciwgbnVtQ2hhcmFjdGVyc0NvbnZlcnRlZCk7Ci19Ci0KLXVzaW5nIE1hcHBp
bmdSYW5nZXNWZWN0b3IgPSBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxzdGQ6OnR1cGxlPHVuc2lnbmVk
LCB1bnNpZ25lZCwgU3RyaW5nPj4+OwotCi1zdGF0aWMgdm9pZCBjb2xsZWN0UmFuZ2VzVGhhdE5l
ZWRNYXBwaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nLCB1bnNpZ25lZCBsb2NhdGlvbiwgdW5zaWdu
ZWQgbGVuZ3RoLCBNYXBwaW5nUmFuZ2VzVmVjdG9yJiBhcnJheSwgY29uc3Qgc3RkOjpvcHRpb25h
bDxVUkxEZWNvZGVGdW5jdGlvbj4mIGRlY29kZUZ1bmN0aW9uKQotewotICAgIC8vIEdlbmVyYWxs
eSwgd2Ugd2FudCB0byBvcHRpbWl6ZSBmb3IgdGhlIGNhc2Ugd2hlcmUgdGhlcmUgaXMgb25lIGhv
c3QgbmFtZSB0aGF0IGRvZXMgbm90IG5lZWQgbWFwcGluZy4KLSAgICAvLyBUaGVyZWZvcmUsIHdl
IHVzZSBudWxsIHRvIGluZGljYXRlIG5vIG1hcHBpbmcgaGVyZSBhbmQgYW4gZW1wdHkgYXJyYXkg
dG8gaW5kaWNhdGUgZXJyb3IuCi0KLSAgICBTdHJpbmcgc3Vic3RyaW5nID0gc3RyaW5nLnN1YnN0
cmluZ1NoYXJpbmdJbXBsKGxvY2F0aW9uLCBsZW5ndGgpOwotICAgIHN0ZDo6b3B0aW9uYWw8U3Ry
aW5nPiBob3N0ID0gbWFwSG9zdE5hbWUoc3Vic3RyaW5nLCBkZWNvZGVGdW5jdGlvbik7Ci0KLSAg
ICBpZiAoaG9zdCAmJiAhKmhvc3QpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBpZiAoIWFy
cmF5KQotICAgICAgICBhcnJheSA9IFZlY3RvcjxzdGQ6OnR1cGxlPHVuc2lnbmVkLCB1bnNpZ25l
ZCwgU3RyaW5nPj4oKTsKLQotICAgIGlmIChob3N0KQotICAgICAgICBhcnJheS0+Y29uc3RydWN0
QW5kQXBwZW5kKGxvY2F0aW9uLCBsZW5ndGgsICpob3N0KTsKLX0KLQotc3RhdGljIHZvaWQgYXBw
bHlIb3N0TmFtZUZ1bmN0aW9uVG9NYWlsVG9VUkxTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcs
IGNvbnN0IHN0ZDo6b3B0aW9uYWw8VVJMRGVjb2RlRnVuY3Rpb24+JiBkZWNvZGVGdW5jdGlvbiwg
TWFwcGluZ1Jhbmdlc1ZlY3RvciYgYXJyYXkpCi17Ci0gICAgLy8gSW4gYSBtYWlsdG86IFVSTCwg
aG9zdCBuYW1lcyBjb21lIGFmdGVyIGEgJ0AnIGNoYXJhY3RlciBhbmQgZW5kIHdpdGggYSAnPicg
b3IgJywnIG9yICc/JyBjaGFyYWN0ZXIuCi0gICAgLy8gU2tpcCBxdW90ZWQgc3RyaW5ncyBzbyB0
aGF0IGNoYXJhY3RlcnMgaW4gdGhlbSBkb24ndCBjb25mdXNlIHVzLgotICAgIC8vIFdoZW4gd2Ug
ZmluZCBhICc/JyBjaGFyYWN0ZXIsIHdlIGFyZSBwYXN0IHRoZSBwYXJ0IG9mIHRoZSBVUkwgdGhh
dCBjb250YWlucyBob3N0IG5hbWVzLgotICAgIAotICAgIHVuc2lnbmVkIHN0cmluZ0xlbmd0aCA9
IHN0cmluZy5sZW5ndGgoKTsKLSAgICB1bnNpZ25lZCBjdXJyZW50ID0gMDsKLSAgICAKLSAgICB3
aGlsZSAoMSkgewotICAgICAgICAvLyBGaW5kIHN0YXJ0IG9mIGhvc3QgbmFtZSBvciBvZiBxdW90
ZWQgc3RyaW5nLgotICAgICAgICBhdXRvIGhvc3ROYW1lT3JTdHJpbmdTdGFydCA9IHN0cmluZy5m
aW5kKFtdKFVDaGFyIGNoKSB7Ci0gICAgICAgICAgICByZXR1cm4gY2ggPT0gJyInIHx8IGNoID09
ICdAJyB8fCBjaCA9PSAnPyc7Ci0gICAgICAgIH0sIGN1cnJlbnQpOwotICAgICAgICBpZiAoaG9z
dE5hbWVPclN0cmluZ1N0YXJ0ID09IG5vdEZvdW5kKQotICAgICAgICAgICAgcmV0dXJuOwotCi0g
ICAgICAgIFVDaGFyIGMgPSBzdHJpbmdbaG9zdE5hbWVPclN0cmluZ1N0YXJ0XTsKLSAgICAgICAg
Y3VycmVudCA9IGhvc3ROYW1lT3JTdHJpbmdTdGFydCArIDE7Ci0gICAgICAgIAotICAgICAgICBp
ZiAoYyA9PSAnPycpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIAotICAgICAgICBpZiAo
YyA9PSAnQCcpIHsKLSAgICAgICAgICAgIC8vIEZpbmQgZW5kIG9mIGhvc3QgbmFtZS4KLSAgICAg
ICAgICAgIHVuc2lnbmVkIGhvc3ROYW1lU3RhcnQgPSBjdXJyZW50OwotICAgICAgICAgICAgYXV0
byBob3N0TmFtZUVuZCA9IHN0cmluZy5maW5kKFtdKFVDaGFyIGNoKSB7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIGNoID09ICc+JyB8fCBjaCA9PSAnLCcgfHwgY2ggPT0gJz8nOwotICAgICAgICAg
ICAgfSwgY3VycmVudCk7Ci0KLSAgICAgICAgICAgIGJvb2wgZG9uZTsKLSAgICAgICAgICAgIGlm
IChob3N0TmFtZUVuZCA9PSBub3RGb3VuZCkgewotICAgICAgICAgICAgICAgIGhvc3ROYW1lRW5k
ID0gc3RyaW5nTGVuZ3RoOwotICAgICAgICAgICAgICAgIGRvbmUgPSB0cnVlOwotICAgICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBjdXJyZW50ID0gaG9zdE5hbWVFbmQ7Ci0gICAg
ICAgICAgICAgICAgZG9uZSA9IGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0g
ICAgICAgICAgICAvLyBQcm9jZXNzIGhvc3QgbmFtZSByYW5nZS4KLSAgICAgICAgICAgIGNvbGxl
Y3RSYW5nZXNUaGF0TmVlZE1hcHBpbmcoc3RyaW5nLCBob3N0TmFtZVN0YXJ0LCBob3N0TmFtZUVu
ZCAtIGhvc3ROYW1lU3RhcnQsIGFycmF5LCBkZWNvZGVGdW5jdGlvbik7Ci0KLSAgICAgICAgICAg
IGlmIChkb25lKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgIC8vIFNraXAgcXVvdGVkIHN0cmluZy4KLSAgICAgICAgICAgIEFTU0VSVChjID09
ICciJyk7Ci0gICAgICAgICAgICB3aGlsZSAoMSkgewotICAgICAgICAgICAgICAgIGF1dG8gZXNj
YXBlZENoYXJhY3Rlck9yU3RyaW5nRW5kID0gc3RyaW5nLmZpbmQoW10oVUNoYXIgY2gpIHsKLSAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGNoID09ICciJyB8fCBjaCA9PSAnXFwnOwotICAgICAg
ICAgICAgICAgIH0sIGN1cnJlbnQpOwotICAgICAgICAgICAgICAgIGlmIChlc2NhcGVkQ2hhcmFj
dGVyT3JTdHJpbmdFbmQgPT0gbm90Rm91bmQpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybjsK
LQotICAgICAgICAgICAgICAgIGMgPSBzdHJpbmdbZXNjYXBlZENoYXJhY3Rlck9yU3RyaW5nRW5k
XTsKLSAgICAgICAgICAgICAgICBjdXJyZW50ID0gZXNjYXBlZENoYXJhY3Rlck9yU3RyaW5nRW5k
ICsgMTsKLQotICAgICAgICAgICAgICAgIC8vIElmIHdlIGFyZSB0aGUgZW5kIG9mIHRoZSBzdHJp
bmcsIHRoZW4gYnJlYWsgZnJvbSB0aGUgc3RyaW5nIGxvb3AgYmFjayB0byB0aGUgaG9zdCBuYW1l
IGxvb3AuCi0gICAgICAgICAgICAgICAgaWYgKGMgPT0gJyInKQotICAgICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAvLyBTa2lwIGVzY2Fw
ZWQgY2hhcmFjdGVyLgotICAgICAgICAgICAgICAgIEFTU0VSVChjID09ICdcXCcpOwotICAgICAg
ICAgICAgICAgIGlmIChjdXJyZW50ID09IHN0cmluZ0xlbmd0aCkKLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOwotCi0gICAgICAgICAgICAgICAgKytjdXJyZW50OwotICAgICAgICAgICAgfQot
ICAgICAgICB9Ci0gICAgfQotfQotCi1zdGF0aWMgdm9pZCBhcHBseUhvc3ROYW1lRnVuY3Rpb25U
b1VSTFN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZywgY29uc3Qgc3RkOjpvcHRpb25hbDxVUkxE
ZWNvZGVGdW5jdGlvbj4mIGRlY29kZUZ1bmN0aW9uLCBNYXBwaW5nUmFuZ2VzVmVjdG9yJiBhcnJh
eSkKLXsKLSAgICAvLyBGaW5kIGhvc3RuYW1lcy4gVG9vIGJhZCB3ZSBjYW4ndCB1c2UgYW55IHJl
YWwgVVJMLXBhcnNpbmcgY29kZSB0byBkbyB0aGlzLAotICAgIC8vIGJ1dCB3ZSBoYXZlIHRvIGRv
IGl0IGJlZm9yZSBkb2luZyBhbGwgdGhlICUtZXNjYXBpbmcsIGFuZCB0aGlzIGlzIHRoZSBvbmx5
Ci0gICAgLy8gY29kZSB3ZSBoYXZlIHRoYXQgcGFyc2VzIG1haWx0byBVUkxzIGFueXdheS4KLSAg
ICAKLSAgICAvLyBNYXliZSB3ZSBzaG91bGQgaW1wbGVtZW50IHRoaXMgdXNpbmcgYSBjaGFyYWN0
ZXIgYnVmZmVyIGluc3RlYWQ/Ci0gICAgCi0gICAgaWYgKHByb3RvY29sSXMoc3RyaW5nLCAibWFp
bHRvIikpIHsKLSAgICAgICAgYXBwbHlIb3N0TmFtZUZ1bmN0aW9uVG9NYWlsVG9VUkxTdHJpbmco
c3RyaW5nLCBkZWNvZGVGdW5jdGlvbiwgYXJyYXkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
ICAgIAotICAgIC8vIEZpbmQgdGhlIGhvc3QgbmFtZSBpbiBhIGhpZXJhcmNoaWNhbCBVUkwuCi0g
ICAgLy8gSXQgY29tZXMgYWZ0ZXIgYSAiOi8vIiBzZXF1ZW5jZSwgd2l0aCBzY2hlbWUgY2hhcmFj
dGVycyBwcmVjZWRpbmcuCi0gICAgLy8gSWYgZW5kcyB3aXRoIHRoZSBlbmQgb2YgdGhlIHN0cmlu
ZyBvciBhICI6IiwgIi8iLCBvciBhICI/Ii4KLSAgICAvLyBJZiB0aGVyZSBpcyBhICJAIiBjaGFy
YWN0ZXIsIHRoZSBob3N0IHBhcnQgaXMganVzdCB0aGUgcGFydCBhZnRlciB0aGUgIkAiLgotICAg
IHN0YXRpYyBjb25zdCBjaGFyKiBzZXBhcmF0b3IgPSAiOi8vIjsKLSAgICBhdXRvIHNlcGFyYXRv
ckluZGV4ID0gc3RyaW5nLmZpbmQoc2VwYXJhdG9yKTsKLSAgICBpZiAoc2VwYXJhdG9ySW5kZXgg
PT0gbm90Rm91bmQpCi0gICAgICAgIHJldHVybjsKLQotICAgIHVuc2lnbmVkIGF1dGhvcml0eVN0
YXJ0ID0gc2VwYXJhdG9ySW5kZXggKyBzdHJsZW4oc2VwYXJhdG9yKTsKLSAgICAKLSAgICAvLyBD
aGVjayB0aGF0IGFsbCBjaGFyYWN0ZXJzIGJlZm9yZSB0aGUgOi8vIGFyZSB2YWxpZCBzY2hlbWUg
Y2hhcmFjdGVycy4KLSAgICBhdXRvIGludmFsaWRTY2hlbWVDaGFyYWN0ZXIgPSBzdHJpbmcuc3Vi
c3RyaW5nU2hhcmluZ0ltcGwoMCwgc2VwYXJhdG9ySW5kZXgpLmZpbmQoW10oVUNoYXIgY2gpIHsK
LSAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGFsbG93ZWRDaGFyYWN0ZXJzID0gIkFCQ0RFRkdI
SUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky0u
IjsKLSAgICAgICAgc3RhdGljIHNpemVfdCBsZW5ndGggPSBzdHJsZW4oYWxsb3dlZENoYXJhY3Rl
cnMpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAg
ICAgICAgICBpZiAoYWxsb3dlZENoYXJhY3RlcnNbaV0gPT0gY2gpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0pOwot
Ci0gICAgaWYgKGludmFsaWRTY2hlbWVDaGFyYWN0ZXIgIT0gbm90Rm91bmQpCi0gICAgICAgIHJl
dHVybjsKLSAgICAKLSAgICB1bnNpZ25lZCBzdHJpbmdMZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7
Ci0gICAgCi0gICAgLy8gRmluZCB0ZXJtaW5hdGluZyBjaGFyYWN0ZXIuCi0gICAgYXV0byBob3N0
TmFtZVRlcm1pbmF0b3IgPSBzdHJpbmcuZmluZChbXShVQ2hhciBjaCkgewotICAgICAgICBzdGF0
aWMgY29uc3QgY2hhciogdGVybWluYXRpbmdDaGFyYWN0ZXJzID0gIjovPyMiOwotICAgICAgICBz
dGF0aWMgc2l6ZV90IGxlbmd0aCA9IHN0cmxlbih0ZXJtaW5hdGluZ0NoYXJhY3RlcnMpOwotICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICBp
ZiAodGVybWluYXRpbmdDaGFyYWN0ZXJzW2ldID09IGNoKQotICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9LCBhdXRob3Jp
dHlTdGFydCk7Ci0gICAgdW5zaWduZWQgaG9zdE5hbWVFbmQgPSBob3N0TmFtZVRlcm1pbmF0b3Ig
PT0gbm90Rm91bmQgPyBzdHJpbmdMZW5ndGggOiBob3N0TmFtZVRlcm1pbmF0b3I7Ci0gICAgCi0g
ICAgLy8gRmluZCAiQCIgZm9yIHRoZSBzdGFydCBvZiB0aGUgaG9zdCBuYW1lLgotICAgIGF1dG8g
dXNlckluZm9UZXJtaW5hdG9yID0gc3RyaW5nLnN1YnN0cmluZ1NoYXJpbmdJbXBsKDAsIGhvc3RO
YW1lRW5kKS5maW5kKCdAJywgYXV0aG9yaXR5U3RhcnQpOwotICAgIHVuc2lnbmVkIGhvc3ROYW1l
U3RhcnQgPSB1c2VySW5mb1Rlcm1pbmF0b3IgPT0gbm90Rm91bmQgPyBhdXRob3JpdHlTdGFydCA6
IHVzZXJJbmZvVGVybWluYXRvciArIDE7Ci0gICAgCi0gICAgY29sbGVjdFJhbmdlc1RoYXROZWVk
TWFwcGluZyhzdHJpbmcsIGhvc3ROYW1lU3RhcnQsIGhvc3ROYW1lRW5kIC0gaG9zdE5hbWVTdGFy
dCwgYXJyYXksIGRlY29kZUZ1bmN0aW9uKTsKLX0KLQotU3RyaW5nIG1hcEhvc3ROYW1lcyhjb25z
dCBTdHJpbmcmIHN0cmluZywgY29uc3Qgc3RkOjpvcHRpb25hbDxVUkxEZWNvZGVGdW5jdGlvbj4m
IGRlY29kZUZ1bmN0aW9uKQotewotICAgIC8vIEdlbmVyYWxseSwgd2Ugd2FudCB0byBvcHRpbWl6
ZSBmb3IgdGhlIGNhc2Ugd2hlcmUgdGhlcmUgaXMgb25lIGhvc3QgbmFtZSB0aGF0IGRvZXMgbm90
IG5lZWQgbWFwcGluZy4KLSAgICAKLSAgICBpZiAoZGVjb2RlRnVuY3Rpb24gJiYgc3RyaW5nLmlz
QWxsQVNDSUkoKSkKLSAgICAgICAgcmV0dXJuIHN0cmluZzsKLSAgICAKLSAgICAvLyBNYWtlIGEg
bGlzdCBvZiByYW5nZXMgdGhhdCBhY3R1YWxseSBuZWVkIG1hcHBpbmcuCi0gICAgTWFwcGluZ1Jh
bmdlc1ZlY3RvciBob3N0TmFtZVJhbmdlczsKLSAgICBhcHBseUhvc3ROYW1lRnVuY3Rpb25Ub1VS
TFN0cmluZyhzdHJpbmcsIGRlY29kZUZ1bmN0aW9uLCBob3N0TmFtZVJhbmdlcyk7Ci0gICAgaWYg
KCFob3N0TmFtZVJhbmdlcykKLSAgICAgICAgcmV0dXJuIHN0cmluZzsKLQotICAgIGlmIChob3N0
TmFtZVJhbmdlcy0+aXNFbXB0eSgpKQotICAgICAgICByZXR1cm4geyB9OwotCi0gICAgLy8gRG8g
dGhlIG1hcHBpbmcuCi0gICAgU3RyaW5nIHJlc3VsdCA9IHN0cmluZzsKLSAgICB3aGlsZSAoIWhv
c3ROYW1lUmFuZ2VzLT5pc0VtcHR5KCkpIHsKLSAgICAgICAgdW5zaWduZWQgbG9jYXRpb24sIGxl
bmd0aDsKLSAgICAgICAgU3RyaW5nIG1hcHBlZEhvc3ROYW1lOwotICAgICAgICBzdGQ6OnRpZShs
b2NhdGlvbiwgbGVuZ3RoLCBtYXBwZWRIb3N0TmFtZSkgPSBob3N0TmFtZVJhbmdlcy0+dGFrZUxh
c3QoKTsKLSAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnJlcGxhY2UobG9jYXRpb24sIGxlbmd0aCwg
bWFwcGVkSG9zdE5hbWUpOwotICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1zdGF0aWMg
U3RyaW5nIGNyZWF0ZVN0cmluZ1dpdGhFc2NhcGVkVW5zYWZlQ2hhcmFjdGVycyhjb25zdCBWZWN0
b3I8VUNoYXIsIHVybEJ5dGVzQnVmZmVyTGVuZ3RoPiYgc291cmNlQnVmZmVyKQotewotICAgIFZl
Y3RvcjxVQ2hhciwgdXJsQnl0ZXNCdWZmZXJMZW5ndGg+IG91dEJ1ZmZlcjsKLQotICAgIGNvbnN0
IHNpemVfdCBsZW5ndGggPSBzb3VyY2VCdWZmZXIuc2l6ZSgpOwotICAgIAotICAgIHN0ZDo6b3B0
aW9uYWw8VUNoYXIzMj4gcHJldmlvdXNDb2RlUG9pbnQ7Ci0gICAgc2l6ZV90IGkgPSAwOwotICAg
IHdoaWxlIChpIDwgbGVuZ3RoKSB7Ci0gICAgICAgIFVDaGFyMzIgYzsKLSAgICAgICAgVTE2X05F
WFQoc291cmNlQnVmZmVyLCBpLCBsZW5ndGgsIGMpCi0gICAgICAgIAotICAgICAgICBpZiAoaXNM
b29rYWxpa2VDaGFyYWN0ZXIocHJldmlvdXNDb2RlUG9pbnQsIGMpKSB7Ci0gICAgICAgICAgICB1
aW50OF90IHV0ZjhCdWZmZXJbNF07Ci0gICAgICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gMDsKLSAg
ICAgICAgICAgIFVCb29sIGZhaWx1cmUgPSBmYWxzZTsKLSAgICAgICAgICAgIFU4X0FQUEVORCh1
dGY4QnVmZmVyLCBvZmZzZXQsIDQsIGMsIGZhaWx1cmUpCi0gICAgICAgICAgICBBU1NFUlQoIWZh
aWx1cmUpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8
IG9mZnNldDsgKytqKSB7Ci0gICAgICAgICAgICAgICAgb3V0QnVmZmVyLmFwcGVuZCgnJScpOwot
ICAgICAgICAgICAgICAgIG91dEJ1ZmZlci5hcHBlbmQodXBwZXJOaWJibGVUb0FTQ0lJSGV4RGln
aXQodXRmOEJ1ZmZlcltqXSkpOwotICAgICAgICAgICAgICAgIG91dEJ1ZmZlci5hcHBlbmQobG93
ZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQodXRmOEJ1ZmZlcltqXSkpOwotICAgICAgICAgICAgfQot
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgVUNoYXIgdXRmMTZCdWZmZXJbMl07Ci0gICAg
ICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gMDsKLSAgICAgICAgICAgIFVCb29sIGZhaWx1cmUgPSBm
YWxzZTsKLSAgICAgICAgICAgIFUxNl9BUFBFTkQodXRmMTZCdWZmZXIsIG9mZnNldCwgMiwgYywg
ZmFpbHVyZSkKLSAgICAgICAgICAgIEFTU0VSVCghZmFpbHVyZSk7Ci0gICAgICAgICAgICBmb3Ig
KHNpemVfdCBqID0gMDsgaiA8IG9mZnNldDsgKytqKQotICAgICAgICAgICAgICAgIG91dEJ1ZmZl
ci5hcHBlbmQodXRmMTZCdWZmZXJbal0pOwotICAgICAgICB9Ci0gICAgICAgIHByZXZpb3VzQ29k
ZVBvaW50ID0gYzsKLSAgICB9Ci0KLSAgICByZXR1cm4gU3RyaW5nOjphZG9wdChXVEZNb3ZlKG91
dEJ1ZmZlcikpOwotfQotCi1TdHJpbmcgdXNlclZpc2libGVVUkwoY29uc3QgQ1N0cmluZyYgdXJs
KQotewotICAgIGF1dG8qIGJlZm9yZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQg
Y2hhcio+KHVybC5kYXRhKCkpOwotICAgIGludCBsZW5ndGggPSB1cmwubGVuZ3RoKCk7Ci0KLSAg
ICBpZiAoIWxlbmd0aCkKLSAgICAgICAgcmV0dXJuIHsgfTsKLQotICAgIGJvb2wgbWF5TmVlZEhv
c3ROYW1lRGVjb2RpbmcgPSBmYWxzZTsKLQotICAgIC8vIFRoZSBidWZmZXIgc2hvdWxkIGJlIGxh
cmdlIGVub3VnaCB0byAlLWVzY2FwZSBldmVyeSBjaGFyYWN0ZXIuCi0gICAgaW50IGJ1ZmZlckxl
bmd0aCA9IChsZW5ndGggKiAzKSArIDE7Ci0gICAgVmVjdG9yPGNoYXIsIHVybEJ5dGVzQnVmZmVy
TGVuZ3RoPiBhZnRlcihidWZmZXJMZW5ndGgpOwotCi0gICAgY2hhciogcSA9IGFmdGVyLmRhdGEo
KTsKLSAgICB7Ci0gICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIHAgPSBiZWZvcmU7Ci0gICAg
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgIHVuc2ln
bmVkIGNoYXIgYyA9IHBbaV07Ci0gICAgICAgICAgICAvLyB1bmVzY2FwZSBlc2NhcGUgc2VxdWVu
Y2VzIHRoYXQgaW5kaWNhdGUgYnl0ZXMgZ3JlYXRlciB0aGFuIDB4N2YKLSAgICAgICAgICAgIGlm
IChjID09ICclJyAmJiBpICsgMiA8IGxlbmd0aCAmJiBpc0FTQ0lJSGV4RGlnaXQocFtpICsgMV0p
ICYmIGlzQVNDSUlIZXhEaWdpdChwW2kgKyAyXSkpIHsKLSAgICAgICAgICAgICAgICBhdXRvIHUg
PSB0b0FTQ0lJSGV4VmFsdWUocFtpICsgMV0sIHBbaSArIDJdKTsKLSAgICAgICAgICAgICAgICBp
ZiAodSA+IDB4N2YpIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gdW5lc2NhcGUKLSAgICAgICAg
ICAgICAgICAgICAgKnErKyA9IHU7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgICAgICAgICAgLy8gZG8gbm90IHVuZXNjYXBlCi0gICAgICAgICAgICAgICAgICAgICpxKysg
PSBwW2ldOwotICAgICAgICAgICAgICAgICAgICAqcSsrID0gcFtpICsgMV07Ci0gICAgICAgICAg
ICAgICAgICAgICpxKysgPSBwW2kgKyAyXTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgaSArPSAyOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAqcSsr
ID0gYzsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAvLyBDaGVjayBmb3IgInhu
LS0iIGluIGFuIGVmZmljaWVudCwgbm9uLWNhc2Utc2Vuc2l0aXZlLCB3YXkuCi0gICAgICAgICAg
ICAgICAgaWYgKGMgPT0gJy0nICYmIGkgPj0gMyAmJiAhbWF5TmVlZEhvc3ROYW1lRGVjb2Rpbmcg
JiYgKHFbLTRdIHwgMHgyMCkgPT0gJ3gnICYmIChxWy0zXSB8IDB4MjApID09ICduJyAmJiBxWy0y
XSA9PSAnLScpCi0gICAgICAgICAgICAgICAgICAgIG1heU5lZWRIb3N0TmFtZURlY29kaW5nID0g
dHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICAqcSA9ICdcMCc7Ci0gICAg
fQotICAgIAotICAgIC8vIENoZWNrIHN0cmluZyB0byBzZWUgaWYgaXQgY2FuIGJlIGNvbnZlcnRl
ZCB0byBkaXNwbGF5IHVzaW5nIFVURi04ICAKLSAgICBTdHJpbmcgcmVzdWx0ID0gU3RyaW5nOjpm
cm9tVVRGOChhZnRlci5kYXRhKCkpOwotICAgIGlmICghcmVzdWx0KSB7Ci0gICAgICAgIC8vIENv
dWxkIG5vdCBjb252ZXJ0IHRvIFVURi04LgotICAgICAgICAvLyBDb252ZXJ0IGNoYXJhY3RlcnMg
Z3JlYXRlciB0aGFuIDB4N2YgdG8gZXNjYXBlIHNlcXVlbmNlcy4KLSAgICAgICAgLy8gU2hpZnQg
Y3VycmVudCBzdHJpbmcgdG8gdGhlIGVuZCBvZiB0aGUgYnVmZmVyCi0gICAgICAgIC8vIHRoZW4g
d2Ugd2lsbCBjb3B5IGJhY2sgYnl0ZXMgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIgCi0gICAg
ICAgIC8vIGFzIHdlIGNvbnZlcnQuCi0gICAgICAgIGludCBhZnRlcmxlbmd0aCA9IHEgLSBhZnRl
ci5kYXRhKCk7Ci0gICAgICAgIGNoYXIqIHAgPSBhZnRlci5kYXRhKCkgKyBidWZmZXJMZW5ndGgg
LSBhZnRlcmxlbmd0aCAtIDE7Ci0gICAgICAgIG1lbW1vdmUocCwgYWZ0ZXIuZGF0YSgpLCBhZnRl
cmxlbmd0aCArIDEpOyAvLyBjb3BpZXMgdHJhaWxpbmcgJ1wwJwotICAgICAgICBjaGFyKiBxID0g
YWZ0ZXIuZGF0YSgpOwotICAgICAgICB3aGlsZSAoKnApIHsKLSAgICAgICAgICAgIHVuc2lnbmVk
IGNoYXIgYyA9ICpwOwotICAgICAgICAgICAgaWYgKGMgPiAweDdmKSB7Ci0gICAgICAgICAgICAg
ICAgKnErKyA9ICclJzsKLSAgICAgICAgICAgICAgICAqcSsrID0gdXBwZXJOaWJibGVUb0FTQ0lJ
SGV4RGlnaXQoYyk7Ci0gICAgICAgICAgICAgICAgKnErKyA9IGxvd2VyTmliYmxlVG9BU0NJSUhl
eERpZ2l0KGMpOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgKnErKyA9ICpw
OwotICAgICAgICAgICAgcCsrOwotICAgICAgICB9Ci0gICAgICAgICpxID0gJ1wwJzsKLSAgICAg
ICAgLy8gTm90ZTogYWZ0ZXIuZGF0YSgpIHBvaW50cyB0byBhIG51bGwtdGVybWluYXRlZCwgcHVy
ZSBBU0NJSSBzdHJpbmcuCi0gICAgICAgIHJlc3VsdCA9IFN0cmluZzo6ZnJvbVVURjgoYWZ0ZXIu
ZGF0YSgpKTsKLSAgICAgICAgQVNTRVJUKCEhcmVzdWx0KTsKLSAgICB9Ci0KLSAgICAvLyBOb3Rl
OiByZXN1bHQgaXMgVVRG4oCTMTYgc3RyaW5nLCBjcmVhdGVkIGZyb20gZWl0aGVyIGEgdmFsaWQg
VVRGLTggc3RyaW5nLAotICAgIC8vICAgICAgIG9yIGEgcHVyZSBBU0NJSSBzdHJpbmcgKHdoZXJl
IGFsbCBieXRlcyB3aXRoIHRoZSBoaWdoIGJpdCBzZXQgYXJlCi0gICAgLy8gICAgICAgcGVyY2Vu
dC1lbmNvZGVkKS4KLQotICAgIGlmIChtYXlOZWVkSG9zdE5hbWVEZWNvZGluZykgewotICAgICAg
ICAvLyBGSVhNRTogSXMgaXQgZ29vZCB0byBpZ25vcmUgdGhlIGZhaWx1cmUgb2YgbWFwSG9zdE5h
bWVzIGFuZCBrZWVwIHJlc3VsdCBpbnRhY3Q/Ci0gICAgICAgIGF1dG8gbWFwcGVkUmVzdWx0ID0g
bWFwSG9zdE5hbWVzKHJlc3VsdCwgc3RkOjpudWxsb3B0KTsKLSAgICAgICAgaWYgKCEhbWFwcGVk
UmVzdWx0KQotICAgICAgICAgICAgcmVzdWx0ID0gbWFwcGVkUmVzdWx0OwotICAgIH0KLQotICAg
IGF1dG8gc291cmNlQnVmZmVyID0gcmVzdWx0LmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9u
KCk7Ci0gICAgQVNTRVJUKHNvdXJjZUJ1ZmZlci5sYXN0KCkgPT0gJ1wwJyk7Ci0gICAgc291cmNl
QnVmZmVyLnJlbW92ZUxhc3QoKTsKLQotICAgIFZlY3RvcjxVQ2hhciwgdXJsQnl0ZXNCdWZmZXJM
ZW5ndGg+IG5vcm1hbGl6ZWRDaGFyYWN0ZXJzKHNvdXJjZUJ1ZmZlci5zaXplKCkpOwotICAgIFVF
cnJvckNvZGUgdWVycm9yID0gVV9aRVJPX0VSUk9SOwotQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJB
VElPTlNfQkVHSU4KLSAgICBpbnQzMl90IG5vcm1hbGl6ZWRMZW5ndGggPSB1bm9ybV9ub3JtYWxp
emUoc291cmNlQnVmZmVyLmRhdGEoKSwgc291cmNlQnVmZmVyLnNpemUoKSwgVU5PUk1fTkZDLCAw
LCBub3JtYWxpemVkQ2hhcmFjdGVycy5kYXRhKCksIHNvdXJjZUJ1ZmZlci5zaXplKCksICZ1ZXJy
b3IpOwotQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECi0gICAgaWYgKHVlcnJvciA9
PSBVX0JVRkZFUl9PVkVSRkxPV19FUlJPUikgewotICAgICAgICB1ZXJyb3IgPSBVX1pFUk9fRVJS
T1I7Ci0gICAgICAgIG5vcm1hbGl6ZWRDaGFyYWN0ZXJzLnJlc2l6ZShub3JtYWxpemVkTGVuZ3Ro
KTsKLUFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCi0gICAgICAgIG5vcm1hbGl6
ZWRMZW5ndGggPSB1bm9ybV9ub3JtYWxpemUoc291cmNlQnVmZmVyLmRhdGEoKSwgc291cmNlQnVm
ZmVyLnNpemUoKSwgVU5PUk1fTkZDLCAwLCBub3JtYWxpemVkQ2hhcmFjdGVycy5kYXRhKCksIG5v
cm1hbGl6ZWRMZW5ndGgsICZ1ZXJyb3IpOwotQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNf
RU5ECi0gICAgfQotICAgIGlmIChVX0ZBSUxVUkUodWVycm9yKSkKLSAgICAgICAgcmV0dXJuIHsg
fTsKLQotICAgIHJldHVybiBjcmVhdGVTdHJpbmdXaXRoRXNjYXBlZFVuc2FmZUNoYXJhY3RlcnMo
bm9ybWFsaXplZENoYXJhY3RlcnMpOwotfQotCi19IC8vIG5hbWVzcGFjZSBVUkxIZWxwZXJzCi19
IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VSTEhlbHBlcnMu
aCBiL1NvdXJjZS9XVEYvd3RmL1VSTEhlbHBlcnMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggNGQyMDY0YjE4NTE0MDYyNjQ4NjAxY2YwMDhjN2M4ZDUxZDAwZTY3Yy4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9VUkxI
ZWxwZXJzLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDA1LCAyMDA3LCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
IENvcHlyaWdodCAoQykgMjAxOCBJZ2FsaWEgUy5MLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4g
IE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBv
ZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YK
LSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgotI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgotCi1uYW1lc3BhY2UgV1RGIHsKLW5hbWVzcGFjZSBVUkxIZWxwZXJzIHsKLQotdXNp
bmcgVVJMRGVjb2RlRnVuY3Rpb24gPSBTdHJpbmcoJikoY29uc3QgU3RyaW5nJik7Ci0KLVdURl9F
WFBPUlRfUFJJVkFURSBTdHJpbmcgdXNlclZpc2libGVVUkwoY29uc3QgQ1N0cmluZyYgVVJMKTsK
LXZvaWQgbG9hZElETlNjcmlwdFdoaXRlTGlzdCgpOwotdm9pZCB3aGl0ZUxpc3RJRE5TY3JpcHQo
Y29uc3QgY2hhciogc2NyaXB0TmFtZSk7Ci12b2lkIGluaXRpYWxpemVEZWZhdWx0SUROU2NyaXB0
V2hpdGVMaXN0KCk7Ci1zdGQ6Om9wdGlvbmFsPFN0cmluZz4gbWFwSG9zdE5hbWUoY29uc3QgU3Ry
aW5nJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxVUkxEZWNvZGVGdW5jdGlvbj4mKTsKLVN0cmluZyBt
YXBIb3N0TmFtZXMoY29uc3QgU3RyaW5nJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxVUkxEZWNvZGVG
dW5jdGlvbj4mKTsKLQotfSAvLyBuYW1lc3BhY2UgVVJMSGVscGVycwotfSAvLyBuYW1lc3BhY2Ug
V1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9OU1VSTEV4dHJhcy5tbSBiL1Nv
dXJjZS9XVEYvd3RmL2NvY29hL05TVVJMRXh0cmFzLm1tCmluZGV4IGM4Zjg5NTdlZmFlZjJlMjEz
YmFmZDM4YzhkMWIxODc1M2RmZGRhNjcuLjEzNWU0MmRiNWEwZTM0NDRiMjg1N2QzZWYxNjk4MDdj
Mjk1M2VhMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2NvY29hL05TVVJMRXh0cmFzLm1t
CisrKyBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL05TVVJMRXh0cmFzLm1tCkBAIC0zNiwxNCArMzYs
MjI4IEBACiAjaW1wb3J0IDx3dGYvSGV4TnVtYmVyLmg+CiAjaW1wb3J0IDx3dGYvT2JqQ1J1bnRp
bWVFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KLSNpbXBvcnQgPHd0Zi9VUkxI
ZWxwZXJzLmg+CiAjaW1wb3J0IDx3dGYvVmVjdG9yLmg+CisjaW1wb3J0IDx1bmljb2RlL3VjaGFy
Lmg+CisjaW1wb3J0IDx1bmljb2RlL3VpZG5hLmg+CisjaW1wb3J0IDx1bmljb2RlL3VzY3JpcHQu
aD4KIAorLy8gTmVlZHMgdG8gYmUgYmlnIGVub3VnaCB0byBob2xkIGFuIElETi1lbmNvZGVkIG5h
bWUuCisvLyBGb3IgaG9zdCBuYW1lcyBiaWdnZXIgdGhhbiB0aGlzLCB3ZSB3b24ndCBkbyBJRE4g
ZW5jb2RpbmcsIHdoaWNoIGlzIGFsbW9zdCBjZXJ0YWlubHkgT0suCisjZGVmaW5lIEhPU1RfTkFN
RV9CVUZGRVJfTEVOR1RIIDIwNDgKICNkZWZpbmUgVVJMX0JZVEVTX0JVRkZFUl9MRU5HVEggMjA0
OAogCit0eXBlZGVmIHZvaWQgKCogU3RyaW5nUmFuZ2VBcHBsaWVyRnVuY3Rpb24pKE5TU3RyaW5n
ICosIE5TUmFuZ2UsIFJldGFpblB0cjxOU011dGFibGVBcnJheT4mKTsKKworc3RhdGljIHVpbnQz
Ml90IElETlNjcmlwdFdoaXRlTGlzdFsoVVNDUklQVF9DT0RFX0xJTUlUICsgMzEpIC8gMzJdOwor
CiBuYW1lc3BhY2UgV1RGIHsKIAotdXNpbmcgbmFtZXNwYWNlIFVSTEhlbHBlcnM7CitzdGF0aWMg
Ym9vbCBpc0FybWVuaWFuTG9va2FsaWtlQ2hhcmFjdGVyKFVDaGFyMzIgY29kZVBvaW50KQorewor
ICAgIHJldHVybiBjb2RlUG9pbnQgPT0gMHgwNTQ4IHx8IGNvZGVQb2ludCA9PSAweDA1NEQgfHwg
Y29kZVBvaW50ID09IDB4MDU3OCB8fCBjb2RlUG9pbnQgPT0gMHgwNTdEOworfQorCitzdGF0aWMg
Ym9vbCBpc0FybWVuaWFuU2NyaXB0Q2hhcmFjdGVyKFVDaGFyMzIgY29kZVBvaW50KQoreworICAg
IFVFcnJvckNvZGUgZXJyb3IgPSBVX1pFUk9fRVJST1I7CisgICAgVVNjcmlwdENvZGUgc2NyaXB0
ID0gdXNjcmlwdF9nZXRTY3JpcHQoY29kZVBvaW50LCAmZXJyb3IpOworICAgIGlmIChlcnJvciAh
PSBVX1pFUk9fRVJST1IpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJnb3QgSUNVIGVycm9yIHdoaWxl
IHRyeWluZyB0byBsb29rIGF0IHNjcmlwdHM6ICVkIiwgZXJyb3IpOworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHNjcmlwdCA9PSBVU0NSSVBUX0FSTUVOSUFOOwor
fQorCisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGlubGluZSBib29sIGlzQVND
SUlEaWdpdE9yVmFsaWRIb3N0Q2hhcmFjdGVyKENoYXJhY3RlclR5cGUgY2hhckNvZGUpCit7Cisg
ICAgaWYgKCFpc0FTQ0lJRGlnaXRPclB1bmN0dWF0aW9uKGNoYXJDb2RlKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgLy8gVGhpbmdzIHRoZSBVUkwgUGFyc2VyIHJlamVjdHM6CisgICAg
c3dpdGNoIChjaGFyQ29kZSkgeworICAgIGNhc2UgJyMnOgorICAgIGNhc2UgJyUnOgorICAgIGNh
c2UgJy8nOgorICAgIGNhc2UgJzonOgorICAgIGNhc2UgJz8nOgorICAgIGNhc2UgJ0AnOgorICAg
IGNhc2UgJ1snOgorICAgIGNhc2UgJ1xcJzoKKyAgICBjYXNlICddJzoKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KK30KKwor
CisKK3N0YXRpYyBCT09MIGlzTG9va2FsaWtlQ2hhcmFjdGVyKHN0ZDo6b3B0aW9uYWw8VUNoYXIz
Mj4gcHJldmlvdXNDb2RlUG9pbnQsIFVDaGFyMzIgY2hhckNvZGUpCit7CisgICAgLy8gVGhpcyBm
dW5jdGlvbiB0cmVhdHMgdGhlIGZvbGxvd2luZyBhcyB1bnNhZmUsIGxvb2thbGlrZSBjaGFyYWN0
ZXJzOgorICAgIC8vIGFueSBub24tcHJpbnRhYmxlIGNoYXJhY3RlciwgYW55IGNoYXJhY3RlciBj
b25zaWRlcmVkIGFzIHdoaXRlc3BhY2UsCisgICAgLy8gYW55IGlnbm9yYWJsZSBjaGFyYWN0ZXIs
IGFuZCBlbW9qaSBjaGFyYWN0ZXJzIHJlbGF0ZWQgdG8gbG9ja3MuCisgICAgCisgICAgLy8gV2Ug
YWxzbyBjb25zaWRlcmVkIHRoZSBjaGFyYWN0ZXJzIGluIE1vemlsbGEncyBibGFja2xpc3QgPGh0
dHA6Ly9rYi5tb3ppbGxhemluZS5vcmcvTmV0d29yay5JRE4uYmxhY2tsaXN0X2NoYXJzPi4KKwor
ICAgIC8vIFNvbWUgb2YgdGhlIGNoYXJhY3RlcnMgaGVyZSB3aWxsIG5ldmVyIGFwcGVhciBvbmNl
IElDVSBoYXMgZW5jb2RlZC4KKyAgICAvLyBGb3IgZXhhbXBsZSwgSUNVIHRyYW5zZm9ybXMgbW9z
dCBzcGFjZXMgaW50byBhbiBBU0NJSSBzcGFjZSBhbmQgbW9zdAorICAgIC8vIHNsYXNoZXMgaW50
byBhbiBBU0NJSSBzb2xpZHVzLiBCdXQgb25lIG9mIHRoZSB0d28gY2FsbGVycyB1c2VzIHRoaXMK
KyAgICAvLyBvbiBjaGFyYWN0ZXJzIHRoYXQgaGF2ZSBub3QgYmVlbiBwcm9jZXNzZWQgYnkgSUNV
LCBzbyB0aGV5IGFyZSBuZWVkZWQgaGVyZS4KKyAgICAKKyAgICBpZiAoIXVfaXNwcmludChjaGFy
Q29kZSkgfHwgdV9pc1VXaGl0ZVNwYWNlKGNoYXJDb2RlKSB8fCB1X2hhc0JpbmFyeVByb3BlcnR5
KGNoYXJDb2RlLCBVQ0hBUl9ERUZBVUxUX0lHTk9SQUJMRV9DT0RFX1BPSU5UKSkKKyAgICAgICAg
cmV0dXJuIFlFUzsKKyAgICAKKyAgICBzd2l0Y2ggKGNoYXJDb2RlKSB7CisgICAgICAgIGNhc2Ug
MHgwMEJDOiAvKiBWVUxHQVIgRlJBQ1RJT04gT05FIFFVQVJURVIgKi8KKyAgICAgICAgY2FzZSAw
eDAwQkQ6IC8qIFZVTEdBUiBGUkFDVElPTiBPTkUgSEFMRiAqLworICAgICAgICBjYXNlIDB4MDBC
RTogLyogVlVMR0FSIEZSQUNUSU9OIFRIUkVFIFFVQVJURVJTICovCisgICAgICAgIGNhc2UgMHgw
MEVEOiAvKiBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIEFDVVRFICovCisgICAgICAgIGNhc2Ug
MHgwMUMzOiAvKiBMQVRJTiBMRVRURVIgUkVUUk9GTEVYIENMSUNLICovCisgICAgICAgIGNhc2Ug
MHgwMjUxOiAvKiBMQVRJTiBTTUFMTCBMRVRURVIgQUxQSEEgKi8KKyAgICAgICAgY2FzZSAweDAy
NjE6IC8qIExBVElOIFNNQUxMIExFVFRFUiBTQ1JJUFQgRyAqLworICAgICAgICBjYXNlIDB4MDJE
MDogLyogTU9ESUZJRVIgTEVUVEVSIFRSSUFOR1VMQVIgQ09MT04gKi8KKyAgICAgICAgY2FzZSAw
eDAzMzU6IC8qIENPTUJJTklORyBTSE9SVCBTVFJPS0UgT1ZFUkxBWSAqLworICAgICAgICBjYXNl
IDB4MDMzNzogLyogQ09NQklOSU5HIFNIT1JUIFNPTElEVVMgT1ZFUkxBWSAqLworICAgICAgICBj
YXNlIDB4MDMzODogLyogQ09NQklOSU5HIExPTkcgU09MSURVUyBPVkVSTEFZICovCisgICAgICAg
IGNhc2UgMHgwNTg5OiAvKiBBUk1FTklBTiBGVUxMIFNUT1AgKi8KKyAgICAgICAgY2FzZSAweDA1
QjQ6IC8qIEhFQlJFVyBQT0lOVCBISVJJUSAqLworICAgICAgICBjYXNlIDB4MDVCQzogLyogSEVC
UkVXIFBPSU5UIERBR0VTSCBPUiBNQVBJUSAqLworICAgICAgICBjYXNlIDB4MDVDMzogLyogSEVC
UkVXIFBVTkNUVUFUSU9OIFNPRiBQQVNVUSAqLworICAgICAgICBjYXNlIDB4MDVGNDogLyogSEVC
UkVXIFBVTkNUVUFUSU9OIEdFUlNIQVlJTSAqLworICAgICAgICBjYXNlIDB4MDYwOTogLyogQVJB
QklDLUlORElDIFBFUiBNSUxMRSBTSUdOICovCisgICAgICAgIGNhc2UgMHgwNjBBOiAvKiBBUkFC
SUMtSU5ESUMgUEVSIFRFTiBUSE9VU0FORCBTSUdOICovCisgICAgICAgIGNhc2UgMHgwNjUwOiAv
KiBBUkFCSUMgS0FTUkEgKi8KKyAgICAgICAgY2FzZSAweDA2NjA6IC8qIEFSQUJJQyBJTkRJQyBE
SUdJVCBaRVJPICovCisgICAgICAgIGNhc2UgMHgwNjZBOiAvKiBBUkFCSUMgUEVSQ0VOVCBTSUdO
ICovCisgICAgICAgIGNhc2UgMHgwNkQ0OiAvKiBBUkFCSUMgRlVMTCBTVE9QICovCisgICAgICAg
IGNhc2UgMHgwNkYwOiAvKiBFWFRFTkRFRCBBUkFCSUMgSU5ESUMgRElHSVQgWkVSTyAqLworICAg
ICAgICBjYXNlIDB4MDcwMTogLyogU1lSSUFDIFNVUFJBTElORUFSIEZVTEwgU1RPUCAqLworICAg
ICAgICBjYXNlIDB4MDcwMjogLyogU1lSSUFDIFNVQkxJTkVBUiBGVUxMIFNUT1AgKi8KKyAgICAg
ICAgY2FzZSAweDA3MDM6IC8qIFNZUklBQyBTVVBSQUxJTkVBUiBDT0xPTiAqLworICAgICAgICBj
YXNlIDB4MDcwNDogLyogU1lSSUFDIFNVQkxJTkVBUiBDT0xPTiAqLworICAgICAgICBjYXNlIDB4
MTczNTogLyogUEhJTElQUElORSBTSU5HTEUgUFVOQ1RVQVRJT04gKi8KKyAgICAgICAgY2FzZSAw
eDFEMDQ6IC8qIExBVElOIExFVFRFUiBTTUFMTCBDQVBJVEFMIEMgKi8KKyAgICAgICAgY2FzZSAw
eDFEMEY6IC8qIExBVElOIExFVFRFUiBTTUFMTCBDQVBJVEFMIE8gKi8KKyAgICAgICAgY2FzZSAw
eDFEMUM6IC8qIExBVElOIExFVFRFUiBTTUFMTCBDQVBJVEFMIFUgKi8KKyAgICAgICAgY2FzZSAw
eDFEMjA6IC8qIExBVElOIExFVFRFUiBTTUFMTCBDQVBJVEFMIFYgKi8KKyAgICAgICAgY2FzZSAw
eDFEMjE6IC8qIExBVElOIExFVFRFUiBTTUFMTCBDQVBJVEFMIFcgKi8KKyAgICAgICAgY2FzZSAw
eDFEMjI6IC8qIExBVElOIExFVFRFUiBTTUFMTCBDQVBJVEFMIFogKi8KKyAgICAgICAgY2FzZSAw
eDFFQ0Q6IC8qIExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggRE9UIEJFTE9XICovCisgICAgICAg
IGNhc2UgMHgyMDEwOiAvKiBIWVBIRU4gKi8KKyAgICAgICAgY2FzZSAweDIwMTE6IC8qIE5PTi1C
UkVBS0lORyBIWVBIRU4gKi8KKyAgICAgICAgY2FzZSAweDIwMjQ6IC8qIE9ORSBET1QgTEVBREVS
ICovCisgICAgICAgIGNhc2UgMHgyMDI3OiAvKiBIWVBIRU5BVElPTiBQT0lOVCAqLworICAgICAg
ICBjYXNlIDB4MjAzOTogLyogU0lOR0xFIExFRlQtUE9JTlRJTkcgQU5HTEUgUVVPVEFUSU9OIE1B
UksgKi8KKyAgICAgICAgY2FzZSAweDIwM0E6IC8qIFNJTkdMRSBSSUdIVC1QT0lOVElORyBBTkdM
RSBRVU9UQVRJT04gTUFSSyAqLworICAgICAgICBjYXNlIDB4MjA0MTogLyogQ0FSRVQgSU5TRVJU
SU9OIFBPSU5UICovCisgICAgICAgIGNhc2UgMHgyMDQ0OiAvKiBGUkFDVElPTiBTTEFTSCAqLwor
ICAgICAgICBjYXNlIDB4MjA1MjogLyogQ09NTUVSQ0lBTCBNSU5VUyBTSUdOICovCisgICAgICAg
IGNhc2UgMHgyMTUzOiAvKiBWVUxHQVIgRlJBQ1RJT04gT05FIFRISVJEICovCisgICAgICAgIGNh
c2UgMHgyMTU0OiAvKiBWVUxHQVIgRlJBQ1RJT04gVFdPIFRISVJEUyAqLworICAgICAgICBjYXNl
IDB4MjE1NTogLyogVlVMR0FSIEZSQUNUSU9OIE9ORSBGSUZUSCAqLworICAgICAgICBjYXNlIDB4
MjE1NjogLyogVlVMR0FSIEZSQUNUSU9OIFRXTyBGSUZUSFMgKi8KKyAgICAgICAgY2FzZSAweDIx
NTc6IC8qIFZVTEdBUiBGUkFDVElPTiBUSFJFRSBGSUZUSFMgKi8KKyAgICAgICAgY2FzZSAweDIx
NTg6IC8qIFZVTEdBUiBGUkFDVElPTiBGT1VSIEZJRlRIUyAqLworICAgICAgICBjYXNlIDB4MjE1
OTogLyogVlVMR0FSIEZSQUNUSU9OIE9ORSBTSVhUSCAqLworICAgICAgICBjYXNlIDB4MjE1QTog
LyogVlVMR0FSIEZSQUNUSU9OIEZJVkUgU0lYVEhTICovCisgICAgICAgIGNhc2UgMHgyMTVCOiAv
KiBWVUxHQVIgRlJBQ1RJT04gT05FIEVJR0hUICovCisgICAgICAgIGNhc2UgMHgyMTVDOiAvKiBW
VUxHQVIgRlJBQ1RJT04gVEhSRUUgRUlHSFRIUyAqLworICAgICAgICBjYXNlIDB4MjE1RDogLyog
VlVMR0FSIEZSQUNUSU9OIEZJVkUgRUlHSFRIUyAqLworICAgICAgICBjYXNlIDB4MjE1RTogLyog
VlVMR0FSIEZSQUNUSU9OIFNFVkVOIEVJR0hUSFMgKi8KKyAgICAgICAgY2FzZSAweDIxNUY6IC8q
IEZSQUNUSU9OIE5VTUVSQVRPUiBPTkUgKi8KKyAgICAgICAgY2FzZSAweDIyMTI6IC8qIE1JTlVT
IFNJR04gKi8KKyAgICAgICAgY2FzZSAweDIyMTU6IC8qIERJVklTSU9OIFNMQVNIICovCisgICAg
ICAgIGNhc2UgMHgyMjE2OiAvKiBTRVQgTUlOVVMgKi8KKyAgICAgICAgY2FzZSAweDIyMzY6IC8q
IFJBVElPICovCisgICAgICAgIGNhc2UgMHgyMzNGOiAvKiBBUEwgRlVOQ1RJT05BTCBTWU1CT0wg
U0xBU0ggQkFSICovCisgICAgICAgIGNhc2UgMHgyM0FFOiAvKiBJTlRFR1JBTCBFWFRFTlNJT04g
Ki8KKyAgICAgICAgY2FzZSAweDI0NEE6IC8qIE9DUiBET1VCTEUgQkFDS1NMQVNIICovCisgICAg
ICAgIGNhc2UgMHgyNTcxOiAvKiBEaXNwbGF5VHlwZTo6Qm94IERSQVdJTkdTIExJR0hUIERJQUdP
TkFMIFVQUEVSIFJJR0hUIFRPIExPV0VSIExFRlQgKi8KKyAgICAgICAgY2FzZSAweDI1NzI6IC8q
IERpc3BsYXlUeXBlOjpCb3ggRFJBV0lOR1MgTElHSFQgRElBR09OQUwgVVBQRVIgTEVGVCBUTyBM
T1dFUiBSSUdIVCAqLworICAgICAgICBjYXNlIDB4MjlGNjogLyogU09MSURVUyBXSVRIIE9WRVJC
QVIgKi8KKyAgICAgICAgY2FzZSAweDI5Rjg6IC8qIEJJRyBTT0xJRFVTICovCisgICAgICAgIGNh
c2UgMHgyQUZCOiAvKiBUUklQTEUgU09MSURVUyBCSU5BUlkgUkVMQVRJT04gKi8KKyAgICAgICAg
Y2FzZSAweDJBRkQ6IC8qIERPVUJMRSBTT0xJRFVTIE9QRVJBVE9SICovCisgICAgICAgIGNhc2Ug
MHgyRkYwOiAvKiBJREVPR1JBUEhJQyBERVNDUklQVElPTiBDSEFSQUNURVIgTEVGVCBUTyBSSUdI
VCAqLworICAgICAgICBjYXNlIDB4MkZGMTogLyogSURFT0dSQVBISUMgREVTQ1JJUFRJT04gQ0hB
UkFDVEVSIEFCT1ZFIFRPIEJFTE9XICovCisgICAgICAgIGNhc2UgMHgyRkYyOiAvKiBJREVPR1JB
UEhJQyBERVNDUklQVElPTiBDSEFSQUNURVIgTEVGVCBUTyBNSURETEUgQU5EIFJJR0hUICovCisg
ICAgICAgIGNhc2UgMHgyRkYzOiAvKiBJREVPR1JBUEhJQyBERVNDUklQVElPTiBDSEFSQUNURVIg
QUJPVkUgVE8gTUlERExFIEFORCBCRUxPVyAqLworICAgICAgICBjYXNlIDB4MkZGNDogLyogSURF
T0dSQVBISUMgREVTQ1JJUFRJT04gQ0hBUkFDVEVSIEZVTEwgU1VSUk9VTkQgKi8KKyAgICAgICAg
Y2FzZSAweDJGRjU6IC8qIElERU9HUkFQSElDIERFU0NSSVBUSU9OIENIQVJBQ1RFUiBTVVJST1VO
RCBGUk9NIEFCT1ZFICovCisgICAgICAgIGNhc2UgMHgyRkY2OiAvKiBJREVPR1JBUEhJQyBERVND
UklQVElPTiBDSEFSQUNURVIgU1VSUk9VTkQgRlJPTSBCRUxPVyAqLworICAgICAgICBjYXNlIDB4
MkZGNzogLyogSURFT0dSQVBISUMgREVTQ1JJUFRJT04gQ0hBUkFDVEVSIFNVUlJPVU5EIEZST00g
TEVGVCAqLworICAgICAgICBjYXNlIDB4MkZGODogLyogSURFT0dSQVBISUMgREVTQ1JJUFRJT04g
Q0hBUkFDVEVSIFNVUlJPVU5EIEZST00gVVBQRVIgTEVGVCAqLworICAgICAgICBjYXNlIDB4MkZG
OTogLyogSURFT0dSQVBISUMgREVTQ1JJUFRJT04gQ0hBUkFDVEVSIFNVUlJPVU5EIEZST00gVVBQ
RVIgUklHSFQgKi8KKyAgICAgICAgY2FzZSAweDJGRkE6IC8qIElERU9HUkFQSElDIERFU0NSSVBU
SU9OIENIQVJBQ1RFUiBTVVJST1VORCBGUk9NIExPV0VSIExFRlQgKi8KKyAgICAgICAgY2FzZSAw
eDJGRkI6IC8qIElERU9HUkFQSElDIERFU0NSSVBUSU9OIENIQVJBQ1RFUiBPVkVSTEFJRCAqLwor
ICAgICAgICBjYXNlIDB4MzAwMjogLyogSURFT0dSQVBISUMgRlVMTCBTVE9QICovCisgICAgICAg
IGNhc2UgMHgzMDA4OiAvKiBMRUZUIEFOR0xFIEJSQUNLRVQgKi8KKyAgICAgICAgY2FzZSAweDMw
MTQ6IC8qIExFRlQgVE9SVE9JU0UgU0hFTEwgQlJBQ0tFVCAqLworICAgICAgICBjYXNlIDB4MzAx
NTogLyogUklHSFQgVE9SVE9JU0UgU0hFTEwgQlJBQ0tFVCAqLworICAgICAgICBjYXNlIDB4MzAz
MzogLyogVkVSVElDQUwgS0FOQSBSRVBFQVQgTUFSSyBVUFBFUiBIQUxGICovCisgICAgICAgIGNh
c2UgMHgzMDM1OiAvKiBWRVJUSUNBTCBLQU5BIFJFUEVBVCBNQVJLIExPV0VSIEhBTEYgKi8KKyAg
ICAgICAgY2FzZSAweDMyMUQ6IC8qIFBBUkVOVEhFU0laRUQgS09SRUFOIENIQVJBQ1RFUiBPSkVP
TiAqLworICAgICAgICBjYXNlIDB4MzIxRTogLyogUEFSRU5USEVTSVpFRCBLT1JFQU4gQ0hBUkFD
VEVSIE8gSFUgKi8KKyAgICAgICAgY2FzZSAweDMzQUU6IC8qIFNRVUFSRSBSQUQgT1ZFUiBTICov
CisgICAgICAgIGNhc2UgMHgzM0FGOiAvKiBTUVVBUkUgUkFEIE9WRVIgUyBTUVVBUkVEICovCisg
ICAgICAgIGNhc2UgMHgzM0M2OiAvKiBTUVVBUkUgQyBPVkVSIEtHICovCisgICAgICAgIGNhc2Ug
MHgzM0RGOiAvKiBTUVVBUkUgQSBPVkVSIE0gKi8KKyAgICAgICAgY2FzZSAweDA1Qjk6IC8qIEhF
QlJFVyBQT0lOVCBIT0xBTSAqLworICAgICAgICBjYXNlIDB4MDVCQTogLyogSEVCUkVXIFBPSU5U
IEhPTEFNIEhBU0VSIEZPUiBWQVYgKi8KKyAgICAgICAgY2FzZSAweDA1QzE6IC8qIEhFQlJFVyBQ
T0lOVCBTSElOIERPVCAqLworICAgICAgICBjYXNlIDB4MDVDMjogLyogSEVCUkVXIFBPSU5UIFNJ
TiBET1QgKi8KKyAgICAgICAgY2FzZSAweDA1QzQ6IC8qIEhFQlJFVyBNQVJLIFVQUEVSIERPVCAq
LworICAgICAgICBjYXNlIDB4QTczMTogLyogTEFUSU4gTEVUVEVSIFNNQUxMIENBUElUQUwgUyAq
LworICAgICAgICBjYXNlIDB4QTc3MTogLyogTEFUSU4gU01BTEwgTEVUVEVSIERVTSAqLworICAg
ICAgICBjYXNlIDB4QTc4OTogLyogTU9ESUZJRVIgTEVUVEVSIENPTE9OICovCisgICAgICAgIGNh
c2UgMHhGRTE0OiAvKiBQUkVTRU5UQVRJT04gRk9STSBGT1IgVkVSVElDQUwgU0VNSUNPTE9OICov
CisgICAgICAgIGNhc2UgMHhGRTE1OiAvKiBQUkVTRU5UQVRJT04gRk9STSBGT1IgVkVSVElDQUwg
RVhDTEFNQVRJT04gTUFSSyAqLworICAgICAgICBjYXNlIDB4RkUzRjogLyogUFJFU0VOVEFUSU9O
IEZPUk0gRk9SIFZFUlRJQ0FMIExFRlQgQU5HTEUgQlJBQ0tFVCAqLworICAgICAgICBjYXNlIDB4
RkU1RDogLyogU01BTEwgTEVGVCBUT1JUT0lTRSBTSEVMTCBCUkFDS0VUICovCisgICAgICAgIGNh
c2UgMHhGRTVFOiAvKiBTTUFMTCBSSUdIVCBUT1JUT0lTRSBTSEVMTCBCUkFDS0VUICovCisgICAg
ICAgIGNhc2UgMHhGRjBFOiAvKiBGVUxMV0lEVEggRlVMTCBTVE9QICovCisgICAgICAgIGNhc2Ug
MHhGRjBGOiAvKiBGVUxMIFdJRFRIIFNPTElEVVMgKi8KKyAgICAgICAgY2FzZSAweEZGNjE6IC8q
IEhBTEZXSURUSCBJREVPR1JBUEhJQyBGVUxMIFNUT1AgKi8KKyAgICAgICAgY2FzZSAweEZGRkM6
IC8qIE9CSkVDVCBSRVBMQUNFTUVOVCBDSEFSQUNURVIgKi8KKyAgICAgICAgY2FzZSAweEZGRkQ6
IC8qIFJFUExBQ0VNRU5UIENIQVJBQ1RFUiAqLworICAgICAgICBjYXNlIDB4MUY1MEY6IC8qIExP
Q0sgV0lUSCBJTksgUEVOICovCisgICAgICAgIGNhc2UgMHgxRjUxMDogLyogQ0xPU0VEIExPQ0sg
V0lUSCBLRVkgKi8KKyAgICAgICAgY2FzZSAweDFGNTExOiAvKiBLRVkgKi8KKyAgICAgICAgY2Fz
ZSAweDFGNTEyOiAvKiBMT0NLICovCisgICAgICAgIGNhc2UgMHgxRjUxMzogLyogT1BFTiBMT0NL
ICovCisgICAgICAgICAgICByZXR1cm4gWUVTOworICAgICAgICBjYXNlIDB4MDMwNzogLyogQ09N
QklOSU5HIERPVCBBQk9WRSAqLworICAgICAgICAgICAgcmV0dXJuIHByZXZpb3VzQ29kZVBvaW50
ID09IDB4MDIzNyAvKiBMQVRJTiBTTUFMTCBMRVRURVIgRE9UTEVTUyBKICovCisgICAgICAgICAg
ICAgICAgfHwgcHJldmlvdXNDb2RlUG9pbnQgPT0gMHgwMTMxIC8qIExBVElOIFNNQUxMIExFVFRF
UiBET1RMRVNTIEkgKi8KKyAgICAgICAgICAgICAgICB8fCBwcmV2aW91c0NvZGVQb2ludCA9PSAw
eDA1RDU7IC8qIEhFQlJFVyBMRVRURVIgVkFWICovCisgICAgICAgIGNhc2UgMHgwNTQ4OiAvKiBB
Uk1FTklBTiBDQVBJVEFMIExFVFRFUiBWTyAqLworICAgICAgICBjYXNlIDB4MDU0RDogLyogQVJN
RU5JQU4gQ0FQSVRBTCBMRVRURVIgU0VIICovCisgICAgICAgIGNhc2UgMHgwNTc4OiAvKiBBUk1F
TklBTiBTTUFMTCBMRVRURVIgVk8gKi8KKyAgICAgICAgY2FzZSAweDA1N0Q6IC8qIEFSTUVOSUFO
IFNNQUxMIExFVFRFUiBTRUggKi8KKyAgICAgICAgICAgIHJldHVybiBwcmV2aW91c0NvZGVQb2lu
dAorICAgICAgICAgICAgICAgICYmICFpc0FTQ0lJRGlnaXRPclZhbGlkSG9zdENoYXJhY3Rlcihw
cmV2aW91c0NvZGVQb2ludC52YWx1ZSgpKQorICAgICAgICAgICAgICAgICYmICFpc0FybWVuaWFu
U2NyaXB0Q2hhcmFjdGVyKHByZXZpb3VzQ29kZVBvaW50LnZhbHVlKCkpOworICAgICAgICBjYXNl
ICcuJzoKKyAgICAgICAgICAgIHJldHVybiBOTzsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgIHJldHVybiBwcmV2aW91c0NvZGVQb2ludAorICAgICAgICAgICAgICAgICYmIGlzQXJtZW5p
YW5Mb29rYWxpa2VDaGFyYWN0ZXIocHJldmlvdXNDb2RlUG9pbnQudmFsdWUoKSkKKyAgICAgICAg
ICAgICAgICAmJiAhKGlzQXJtZW5pYW5TY3JpcHRDaGFyYWN0ZXIoY2hhckNvZGUpIHx8IGlzQVND
SUlEaWdpdE9yVmFsaWRIb3N0Q2hhcmFjdGVyKGNoYXJDb2RlKSk7CisgICAgfQorfQorCitzdGF0
aWMgdm9pZCB3aGl0ZUxpc3RJRE5TY3JpcHQoY29uc3QgY2hhciogc2NyaXB0TmFtZSkKK3sKKyAg
ICBpbnQzMl90IHNjcmlwdCA9IHVfZ2V0UHJvcGVydHlWYWx1ZUVudW0oVUNIQVJfU0NSSVBULCBz
Y3JpcHROYW1lKTsKKyAgICBpZiAoc2NyaXB0ID49IDAgJiYgc2NyaXB0IDwgVVNDUklQVF9DT0RF
X0xJTUlUKSB7CisgICAgICAgIHNpemVfdCBpbmRleCA9IHNjcmlwdCAvIDMyOworICAgICAgICB1
aW50MzJfdCBtYXNrID0gMSA8PCAoc2NyaXB0ICUgMzIpOworICAgICAgICBJRE5TY3JpcHRXaGl0
ZUxpc3RbaW5kZXhdIHw9IG1hc2s7CisgICAgfQorfQogCiBzdGF0aWMgQk9PTCByZWFkSUROU2Ny
aXB0V2hpdGVMaXN0RmlsZShOU1N0cmluZyAqZmlsZW5hbWUpCiB7CkBAIC03Niw5ICsyOTAsNyBA
QCBzdGF0aWMgQk9PTCByZWFkSUROU2NyaXB0V2hpdGVMaXN0RmlsZShOU1N0cmluZyAqZmlsZW5h
bWUpCiAgICAgcmV0dXJuIFlFUzsKIH0KIAotbmFtZXNwYWNlIFVSTEhlbHBlcnMgewotCi12b2lk
IGxvYWRJRE5TY3JpcHRXaGl0ZUxpc3QoKQorc3RhdGljIEJPT0wgYWxsQ2hhcmFjdGVyc0luSURO
U2NyaXB0V2hpdGVMaXN0KGNvbnN0IFVDaGFyICpidWZmZXIsIGludDMyX3QgbGVuZ3RoKQogewog
ICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3QgZmxhZzsKICAgICBkaXNwYXRjaF9vbmNlKCZmbGFn
LCBeewpAQCAtODksMzcgKzMwMSw1MDggQEAgdm9pZCBsb2FkSUROU2NyaXB0V2hpdGVMaXN0KCkK
ICAgICAgICAgICAgIGlmIChyZWFkSUROU2NyaXB0V2hpdGVMaXN0RmlsZShbW2RpcnMgb2JqZWN0
QXRJbmRleDppXSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJJRE5TY3JpcHRXaGl0
ZUxpc3QudHh0Il0pKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAg
ICBpbml0aWFsaXplRGVmYXVsdElETlNjcmlwdFdoaXRlTGlzdCgpOworICAgICAgICBjb25zdCBj
aGFyKiBkZWZhdWx0SUROU2NyaXB0V2hpdGVMaXN0WzIwXSA9IHsKKyAgICAgICAgICAgICJDb21t
b24iLAorICAgICAgICAgICAgIkluaGVyaXRlZCIsCisgICAgICAgICAgICAiQXJhYmljIiwKKyAg
ICAgICAgICAgICJBcm1lbmlhbiIsCisgICAgICAgICAgICAiQm9wb21vZm8iLAorICAgICAgICAg
ICAgIkNhbmFkaWFuX0Fib3JpZ2luYWwiLAorICAgICAgICAgICAgIkRldmFuYWdhcmkiLAorICAg
ICAgICAgICAgIkRlc2VyZXQiLAorICAgICAgICAgICAgIkd1amFyYXRpIiwKKyAgICAgICAgICAg
ICJHdXJtdWtoaSIsCisgICAgICAgICAgICAiSGFuZ3VsIiwKKyAgICAgICAgICAgICJIYW4iLAor
ICAgICAgICAgICAgIkhlYnJldyIsCisgICAgICAgICAgICAiSGlyYWdhbmEiLAorICAgICAgICAg
ICAgIkthdGFrYW5hX09yX0hpcmFnYW5hIiwKKyAgICAgICAgICAgICJLYXRha2FuYSIsCisgICAg
ICAgICAgICAiTGF0aW4iLAorICAgICAgICAgICAgIlRhbWlsIiwKKyAgICAgICAgICAgICJUaGFp
IiwKKyAgICAgICAgICAgICJZaSIsCisgICAgICAgIH07CisgICAgICAgIGZvciAoY29uc3QgY2hh
ciogc2NyaXB0TmFtZSA6IGRlZmF1bHRJRE5TY3JpcHRXaGl0ZUxpc3QpCisgICAgICAgICAgICB3
aGl0ZUxpc3RJRE5TY3JpcHQoc2NyaXB0TmFtZSk7CiAgICAgfSk7CisgICAgCisgICAgaW50MzJf
dCBpID0gMDsKKyAgICBzdGQ6Om9wdGlvbmFsPFVDaGFyMzI+IHByZXZpb3VzQ29kZVBvaW50Owor
ICAgIHdoaWxlIChpIDwgbGVuZ3RoKSB7CisgICAgICAgIFVDaGFyMzIgYzsKKyAgICAgICAgVTE2
X05FWFQoYnVmZmVyLCBpLCBsZW5ndGgsIGMpCisgICAgICAgIFVFcnJvckNvZGUgZXJyb3IgPSBV
X1pFUk9fRVJST1I7CisgICAgICAgIFVTY3JpcHRDb2RlIHNjcmlwdCA9IHVzY3JpcHRfZ2V0U2Ny
aXB0KGMsICZlcnJvcik7CisgICAgICAgIGlmIChlcnJvciAhPSBVX1pFUk9fRVJST1IpIHsKKyAg
ICAgICAgICAgIExPR19FUlJPUigiZ290IElDVSBlcnJvciB3aGlsZSB0cnlpbmcgdG8gbG9vayBh
dCBzY3JpcHRzOiAlZCIsIGVycm9yKTsKKyAgICAgICAgICAgIHJldHVybiBOTzsKKyAgICAgICAg
fQorICAgICAgICBpZiAoc2NyaXB0IDwgMCkgeworICAgICAgICAgICAgTE9HX0VSUk9SKCJnb3Qg
bmVnYXRpdmUgbnVtYmVyIGZvciBzY3JpcHQgY29kZSBmcm9tIElDVTogJWQiLCBzY3JpcHQpOwor
ICAgICAgICAgICAgcmV0dXJuIE5POworICAgICAgICB9CisgICAgICAgIGlmIChzY3JpcHQgPj0g
VVNDUklQVF9DT0RFX0xJTUlUKQorICAgICAgICAgICAgcmV0dXJuIE5POworCisgICAgICAgIHNp
emVfdCBpbmRleCA9IHNjcmlwdCAvIDMyOworICAgICAgICB1aW50MzJfdCBtYXNrID0gMSA8PCAo
c2NyaXB0ICUgMzIpOworICAgICAgICBpZiAoIShJRE5TY3JpcHRXaGl0ZUxpc3RbaW5kZXhdICYg
bWFzaykpCisgICAgICAgICAgICByZXR1cm4gTk87CisgICAgICAgIAorICAgICAgICBpZiAoaXNM
b29rYWxpa2VDaGFyYWN0ZXIocHJldmlvdXNDb2RlUG9pbnQsIGMpKQorICAgICAgICAgICAgcmV0
dXJuIE5POworICAgICAgICBwcmV2aW91c0NvZGVQb2ludCA9IGM7CisgICAgfQorICAgIHJldHVy
biBZRVM7Cit9CisKK3N0YXRpYyBib29sIGlzU2Vjb25kTGV2ZWxEb21haW5OYW1lQWxsb3dlZEJ5
VExEUnVsZXMoY29uc3QgVUNoYXIqIGJ1ZmZlciwgaW50MzJfdCBsZW5ndGgsIGNvbnN0IFdURjo6
RnVuY3Rpb248Ym9vbChVQ2hhcik+JiBjaGFyYWN0ZXJJc0FsbG93ZWQpCit7CisgICAgQVNTRVJU
KGxlbmd0aCA+IDApOworCisgICAgZm9yIChpbnQzMl90IGkgPSBsZW5ndGggLSAxOyBpID49IDA7
IC0taSkgeworICAgICAgICBVQ2hhciBjaCA9IGJ1ZmZlcltpXTsKKyAgICAgICAgCisgICAgICAg
IGlmIChjaGFyYWN0ZXJJc0FsbG93ZWQoY2gpKQorICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgIAorICAgICAgICAvLyBPbmx5IGNoZWNrIHRoZSBzZWNvbmQgbGV2ZWwgZG9tYWluLiBMb3dl
ciBsZXZlbCByZWdpc3RyYXJzIG1heSBoYXZlIGRpZmZlcmVudCBydWxlcy4KKyAgICAgICAgaWYg
KGNoID09ICcuJykKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAotfSAvLyBuYW1lc3BhY2UgVVJM
SGVscGVycworI2RlZmluZSBDSEVDS19SVUxFU19JRl9TVUZGSVhfTUFUQ0hFUyhzdWZmaXgsIGZ1
bmN0aW9uKSBcCisgICAgeyBcCisgICAgICAgIHN0YXRpYyBjb25zdCBpbnQzMl90IHN1ZmZpeExl
bmd0aCA9IHNpemVvZihzdWZmaXgpIC8gc2l6ZW9mKHN1ZmZpeFswXSk7IFwKKyAgICAgICAgaWYg
KGxlbmd0aCA+IHN1ZmZpeExlbmd0aCAmJiAwID09IG1lbWNtcChidWZmZXIgKyBsZW5ndGggLSBz
dWZmaXhMZW5ndGgsIHN1ZmZpeCwgc2l6ZW9mKHN1ZmZpeCkpKSBcCisgICAgICAgICAgICByZXR1
cm4gaXNTZWNvbmRMZXZlbERvbWFpbk5hbWVBbGxvd2VkQnlUTERSdWxlcyhidWZmZXIsIGxlbmd0
aCAtIHN1ZmZpeExlbmd0aCwgZnVuY3Rpb24pOyBcCisgICAgfQorCitzdGF0aWMgYm9vbCBpc1J1
c3NpYW5Eb21haW5OYW1lQ2hhcmFjdGVyKFVDaGFyIGNoKQoreworICAgIC8vIE9ubHkgbW9kZXJu
IFJ1c3NpYW4gbGV0dGVycywgZGlnaXRzIGFuZCBkYXNoZXMgYXJlIGFsbG93ZWQuCisgICAgcmV0
dXJuIChjaCA+PSAweDA0MzAgJiYgY2ggPD0gMHgwNDRmKSB8fCBjaCA9PSAweDA0NTEgfHwgaXNB
U0NJSURpZ2l0KGNoKSB8fCBjaCA9PSAnLSc7Cit9CisKK3N0YXRpYyBCT09MIGFsbENoYXJhY3Rl
cnNBbGxvd2VkQnlUTERSdWxlcyhjb25zdCBVQ2hhciogYnVmZmVyLCBpbnQzMl90IGxlbmd0aCkK
K3sKKyAgICAvLyBTa2lwIHRyYWlsaW5nIGRvdCBmb3Igcm9vdCBkb21haW4uCisgICAgaWYgKGJ1
ZmZlcltsZW5ndGggLSAxXSA9PSAnLicpCisgICAgICAgIGxlbmd0aC0tOworCisgICAgLy8gaHR0
cDovL2NjdGxkLnJ1L2ZpbGVzL3BkZi9kb2NzL3J1bGVzX3J1LXJmLnBkZgorICAgIHN0YXRpYyBj
b25zdCBVQ2hhciBjeXJpbGxpY1JGW10gPSB7CisgICAgICAgICcuJywKKyAgICAgICAgMHgwNDQw
LCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRVIKKyAgICAgICAgMHgwNDQ0ICAvLyBDWVJJTExJ
QyBTTUFMTCBMRVRURVIgRUYKKyAgICB9OworICAgIENIRUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRD
SEVTKGN5cmlsbGljUkYsIGlzUnVzc2lhbkRvbWFpbk5hbWVDaGFyYWN0ZXIpOworCisgICAgLy8g
aHR0cDovL3J1c25hbWVzLnJ1L3J1bGVzLnBsCisgICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmls
bGljUlVTW10gPSB7CisgICAgICAgICcuJywKKyAgICAgICAgMHgwNDQwLCAvLyBDWVJJTExJQyBT
TUFMTCBMRVRURVIgRVIKKyAgICAgICAgMHgwNDQzLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIg
VQorICAgICAgICAweDA0NDEgIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFUworICAgIH07Cisg
ICAgQ0hFQ0tfUlVMRVNfSUZfU1VGRklYX01BVENIRVMoY3lyaWxsaWNSVVMsIGlzUnVzc2lhbkRv
bWFpbk5hbWVDaGFyYWN0ZXIpOworCisgICAgLy8gaHR0cDovL3J1LmZhaXRpZC5vcmcvcHJvamVj
dHMvbW9zY293L2RvY3VtZW50cy9tb3NrdmEvaWRuCisgICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5
cmlsbGljTU9TS1ZBW10gPSB7CisgICAgICAgICcuJywKKyAgICAgICAgMHgwNDNDLCAvLyBDWVJJ
TExJQyBTTUFMTCBMRVRURVIgRU0KKyAgICAgICAgMHgwNDNFLCAvLyBDWVJJTExJQyBTTUFMTCBM
RVRURVIgTworICAgICAgICAweDA0NDEsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFUworICAg
ICAgICAweDA0M0EsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBLQQorICAgICAgICAweDA0MzIs
IC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBWRQorICAgICAgICAweDA0MzAgIC8vIENZUklMTElD
IFNNQUxMIExFVFRFUiBBCisgICAgfTsKKyAgICBDSEVDS19SVUxFU19JRl9TVUZGSVhfTUFUQ0hF
UyhjeXJpbGxpY01PU0tWQSwgaXNSdXNzaWFuRG9tYWluTmFtZUNoYXJhY3Rlcik7CisKKyAgICAv
LyBodHRwOi8vd3d3LmRvdGRldGkucnUvZm9ydXNlci9kb2NzL3JlZ3J1bGVzLnBocAorICAgIHN0
YXRpYyBjb25zdCBVQ2hhciBjeXJpbGxpY0RFVElbXSA9IHsKKyAgICAgICAgJy4nLAorICAgICAg
ICAweDA0MzQsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBERQorICAgICAgICAweDA0MzUsIC8v
IENZUklMTElDIFNNQUxMIExFVFRFUiBJRQorICAgICAgICAweDA0NDIsIC8vIENZUklMTElDIFNN
QUxMIExFVFRFUiBURQorICAgICAgICAweDA0MzggIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBJ
CisgICAgfTsKKyAgICBDSEVDS19SVUxFU19JRl9TVUZGSVhfTUFUQ0hFUyhjeXJpbGxpY0RFVEks
IGlzUnVzc2lhbkRvbWFpbk5hbWVDaGFyYWN0ZXIpOworCisgICAgLy8gaHR0cDovL2NvcmVuaWMu
b3JnIC0gcnVsZXMgbm90IHB1Ymxpc2hlZC4gVGhlIHdvcmQgaXMgUnVzc2lhbiwgc28gb25seSBh
bGxvd2luZyBSdXNzaWFuIGF0IHRoaXMgdGltZSwKKyAgICAvLyBhbHRob3VnaCB3ZSBtYXkgbmVl
ZCB0byByZXZpc2UgdGhlIGNoZWNrcyBpZiB0aGlzIGVuZHMgdXAgYmVpbmcgdXNlZCB3aXRoIG90
aGVyIGxhbmd1YWdlcyBzcG9rZW4gaW4gUnVzc2lhLgorICAgIHN0YXRpYyBjb25zdCBVQ2hhciBj
eXJpbGxpY09OTEFZTltdID0geworICAgICAgICAnLicsCisgICAgICAgIDB4MDQzRSwgLy8gQ1lS
SUxMSUMgU01BTEwgTEVUVEVSIE8KKyAgICAgICAgMHgwNDNELCAvLyBDWVJJTExJQyBTTUFMTCBM
RVRURVIgRU4KKyAgICAgICAgMHgwNDNCLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRUwKKyAg
ICAgICAgMHgwNDMwLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgQQorICAgICAgICAweDA0Mzks
IC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBTSE9SVCBJCisgICAgICAgIDB4MDQzRCAgLy8gQ1lS
SUxMSUMgU01BTEwgTEVUVEVSIEVOCisgICAgfTsKKyAgICBDSEVDS19SVUxFU19JRl9TVUZGSVhf
TUFUQ0hFUyhjeXJpbGxpY09OTEFZTiwgaXNSdXNzaWFuRG9tYWluTmFtZUNoYXJhY3Rlcik7CisK
KyAgICAvLyBodHRwOi8vY29yZW5pYy5vcmcgLSBzYW1lIGFzIGFib3ZlLgorICAgIHN0YXRpYyBj
b25zdCBVQ2hhciBjeXJpbGxpY1NBWVRbXSA9IHsKKyAgICAgICAgJy4nLAorICAgICAgICAweDA0
NDEsIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBFUworICAgICAgICAweDA0MzAsIC8vIENZUklM
TElDIFNNQUxMIExFVFRFUiBBCisgICAgICAgIDB4MDQzOSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVU
VEVSIFNIT1JUIEkKKyAgICAgICAgMHgwNDQyICAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgVEUK
KyAgICB9OworICAgIENIRUNLX1JVTEVTX0lGX1NVRkZJWF9NQVRDSEVTKGN5cmlsbGljU0FZVCwg
aXNSdXNzaWFuRG9tYWluTmFtZUNoYXJhY3Rlcik7CisKKyAgICAvLyBodHRwOi8vcGlyLm9yZy9w
cm9kdWN0cy9vcHItZG9tYWluLyAtIHJ1bGVzIG5vdCBwdWJsaXNoZWQuIEFjY29yZGluZyB0byB0
aGUgcmVnaXN0cnkgc2l0ZSwKKyAgICAvLyB0aGUgaW50ZW5kZWQgYXVkaWVuY2UgaXMgIlJ1c3Np
YW4gYW5kIG90aGVyIFNsYXZpYy1zcGVha2luZyBtYXJrZXRzIi4KKyAgICAvLyBDaHJvbWUgYXBw
ZWFycyB0byBvbmx5IGFsbG93IFJ1c3NpYW4sIHNvIHN0aWNraW5nIHdpdGggdGhhdCBmb3Igbm93
LgorICAgIHN0YXRpYyBjb25zdCBVQ2hhciBjeXJpbGxpY09SR1tdID0geworICAgICAgICAnLics
CisgICAgICAgIDB4MDQzRSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIE8KKyAgICAgICAgMHgw
NDQwLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRVIKKyAgICAgICAgMHgwNDMzICAvLyBDWVJJ
TExJQyBTTUFMTCBMRVRURVIgR0hFCisgICAgfTsKKyAgICBDSEVDS19SVUxFU19JRl9TVUZGSVhf
TUFUQ0hFUyhjeXJpbGxpY09SRywgaXNSdXNzaWFuRG9tYWluTmFtZUNoYXJhY3Rlcik7CisKKyAg
ICAvLyBodHRwOi8vY2N0bGQuYnkvcnVsZXMuaHRtbAorICAgIHN0YXRpYyBjb25zdCBVQ2hhciBj
eXJpbGxpY0JFTFtdID0geworICAgICAgICAnLicsCisgICAgICAgIDB4MDQzMSwgLy8gQ1lSSUxM
SUMgU01BTEwgTEVUVEVSIEJFCisgICAgICAgIDB4MDQzNSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVU
VEVSIElFCisgICAgICAgIDB4MDQzQiAgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVMCisgICAg
fTsKKyAgICBDSEVDS19SVUxFU19JRl9TVUZGSVhfTUFUQ0hFUyhjeXJpbGxpY0JFTCwgW10oVUNo
YXIgY2gpIHsKKyAgICAgICAgLy8gUnVzc2lhbiBhbmQgQnllbG9ydXNzaWFuIGxldHRlcnMsIGRp
Z2l0cyBhbmQgZGFzaGVzIGFyZSBhbGxvd2VkLgorICAgICAgICByZXR1cm4gKGNoID49IDB4MDQz
MCAmJiBjaCA8PSAweDA0NGYpIHx8IGNoID09IDB4MDQ1MSB8fCBjaCA9PSAweDA0NTYgfHwgY2gg
PT0gMHgwNDVFIHx8IGNoID09IDB4MjAxOSB8fCBpc0FTQ0lJRGlnaXQoY2gpIHx8IGNoID09ICct
JzsKKyAgICB9KTsKKworICAgIC8vIGh0dHA6Ly93d3cubmljLmt6L2RvY3MvcG9yeWFkb2tfdm5l
ZHJlbml5YV9rYXpfcnUucGRmCisgICAgc3RhdGljIGNvbnN0IFVDaGFyIGN5cmlsbGljS0FaW10g
PSB7CisgICAgICAgICcuJywKKyAgICAgICAgMHgwNDlCLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRU
RVIgS0EgV0lUSCBERVNDRU5ERVIKKyAgICAgICAgMHgwNDMwLCAvLyBDWVJJTExJQyBTTUFMTCBM
RVRURVIgQQorICAgICAgICAweDA0MzcgIC8vIENZUklMTElDIFNNQUxMIExFVFRFUiBaRQorICAg
IH07CisgICAgQ0hFQ0tfUlVMRVNfSUZfU1VGRklYX01BVENIRVMoY3lyaWxsaWNLQVosIFtdKFVD
aGFyIGNoKSB7CisgICAgICAgIC8vIEthemFraCBsZXR0ZXJzLCBkaWdpdHMgYW5kIGRhc2hlcyBh
cmUgYWxsb3dlZC4KKyAgICAgICAgcmV0dXJuIChjaCA+PSAweDA0MzAgJiYgY2ggPD0gMHgwNDRm
KSB8fCBjaCA9PSAweDA0NTEgfHwgY2ggPT0gMHgwNEQ5IHx8IGNoID09IDB4MDQ5MyB8fCBjaCA9
PSAweDA0OUIgfHwgY2ggPT0gMHgwNEEzIHx8IGNoID09IDB4MDRFOSB8fCBjaCA9PSAweDA0QjEg
fHwgY2ggPT0gMHgwNEFGIHx8IGNoID09IDB4MDRCQiB8fCBjaCA9PSAweDA0NTYgfHwgaXNBU0NJ
SURpZ2l0KGNoKSB8fCBjaCA9PSAnLSc7CisgICAgfSk7CisKKyAgICAvLyBodHRwOi8vdWFuaWMu
bmV0L2RvY3MvZG9jdW1lbnRzLXVrci9SdWxlcyUyMG9mJTIwVUtSX3Y0LjAucGRmCisgICAgc3Rh
dGljIGNvbnN0IFVDaGFyIGN5cmlsbGljVUtSW10gPSB7CisgICAgICAgICcuJywKKyAgICAgICAg
MHgwNDQzLCAvLyBDWVJJTExJQyBTTUFMTCBMRVRURVIgVQorICAgICAgICAweDA0M0EsIC8vIENZ
UklMTElDIFNNQUxMIExFVFRFUiBLQQorICAgICAgICAweDA0NDAgIC8vIENZUklMTElDIFNNQUxM
IExFVFRFUiBFUgorICAgIH07CisgICAgQ0hFQ0tfUlVMRVNfSUZfU1VGRklYX01BVENIRVMoY3ly
aWxsaWNVS1IsIFtdKFVDaGFyIGNoKSB7CisgICAgICAgIC8vIFJ1c3NpYW4gYW5kIFVrcmFpbmlh
biBsZXR0ZXJzLCBkaWdpdHMgYW5kIGRhc2hlcyBhcmUgYWxsb3dlZC4KKyAgICAgICAgcmV0dXJu
IChjaCA+PSAweDA0MzAgJiYgY2ggPD0gMHgwNDRmKSB8fCBjaCA9PSAweDA0NTEgfHwgY2ggPT0g
MHgwNDkxIHx8IGNoID09IDB4MDQwNCB8fCBjaCA9PSAweDA0NTYgfHwgY2ggPT0gMHgwNDU3IHx8
IGlzQVNDSUlEaWdpdChjaCkgfHwgY2ggPT0gJy0nOworICAgIH0pOworCisgICAgLy8gaHR0cDov
L3d3dy5ybmlkcy5ycy9kYXRhL0RPS1VNRU5USS9pZG4tc3JiLXBvbGljeS10ZXJtc29mdXNlLXYx
LjQtZW5nLnBkZgorICAgIHN0YXRpYyBjb25zdCBVQ2hhciBjeXJpbGxpY1NSQltdID0geworICAg
ICAgICAnLicsCisgICAgICAgIDB4MDQ0MSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVTCisg
ICAgICAgIDB4MDQ0MCwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVSCisgICAgICAgIDB4MDQz
MSAgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEJFCisgICAgfTsKKyAgICBDSEVDS19SVUxFU19J
Rl9TVUZGSVhfTUFUQ0hFUyhjeXJpbGxpY1NSQiwgW10oVUNoYXIgY2gpIHsKKyAgICAgICAgLy8g
U2VyYmlhbiBsZXR0ZXJzLCBkaWdpdHMgYW5kIGRhc2hlcyBhcmUgYWxsb3dlZC4KKyAgICAgICAg
cmV0dXJuIChjaCA+PSAweDA0MzAgJiYgY2ggPD0gMHgwNDM4KSB8fCAoY2ggPj0gMHgwNDNBICYm
IGNoIDw9IDB4MDQ0OCkgfHwgY2ggPT0gMHgwNDUyIHx8IGNoID09IDB4MDQ1OCB8fCBjaCA9PSAw
eDA0NTkgfHwgY2ggPT0gMHgwNDVBIHx8IGNoID09IDB4MDQ1QiB8fCBjaCA9PSAweDA0NUYgfHwg
aXNBU0NJSURpZ2l0KGNoKSB8fCBjaCA9PSAnLSc7CisgICAgfSk7CisKKyAgICAvLyBodHRwOi8v
bWFybmV0Lm1rL2RvYy9wcmF2aWxuaWstbWstbWtkLnBkZgorICAgIHN0YXRpYyBjb25zdCBVQ2hh
ciBjeXJpbGxpY01LRFtdID0geworICAgICAgICAnLicsCisgICAgICAgIDB4MDQzQywgLy8gQ1lS
SUxMSUMgU01BTEwgTEVUVEVSIEVNCisgICAgICAgIDB4MDQzQSwgLy8gQ1lSSUxMSUMgU01BTEwg
TEVUVEVSIEtBCisgICAgICAgIDB4MDQzNCAgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIERFCisg
ICAgfTsKKyAgICBDSEVDS19SVUxFU19JRl9TVUZGSVhfTUFUQ0hFUyhjeXJpbGxpY01LRCwgW10o
VUNoYXIgY2gpIHsKKyAgICAgICAgLy8gTWFjZWRvbmlhbiBsZXR0ZXJzLCBkaWdpdHMgYW5kIGRh
c2hlcyBhcmUgYWxsb3dlZC4KKyAgICAgICAgcmV0dXJuIChjaCA+PSAweDA0MzAgJiYgY2ggPD0g
MHgwNDM4KSB8fCAoY2ggPj0gMHgwNDNBICYmIGNoIDw9IDB4MDQ0OCkgfHwgY2ggPT0gMHgwNDUz
IHx8IGNoID09IDB4MDQ1NSB8fCBjaCA9PSAweDA0NTggfHwgY2ggPT0gMHgwNDU5IHx8IGNoID09
IDB4MDQ1QSB8fCBjaCA9PSAweDA0NUMgfHwgY2ggPT0gMHgwNDVGIHx8IGlzQVNDSUlEaWdpdChj
aCkgfHwgY2ggPT0gJy0nOworICAgIH0pOworCisgICAgLy8gaHR0cHM6Ly93d3cubW9uLm1uL2Nz
LworICAgIHN0YXRpYyBjb25zdCBVQ2hhciBjeXJpbGxpY01PTltdID0geworICAgICAgICAnLics
CisgICAgICAgIDB4MDQzQywgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVNCisgICAgICAgIDB4
MDQzRSwgLy8gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIE8KKyAgICAgICAgMHgwNDNEICAvLyBDWVJJ
TExJQyBTTUFMTCBMRVRURVIgRU4KKyAgICB9OworICAgIENIRUNLX1JVTEVTX0lGX1NVRkZJWF9N
QVRDSEVTKGN5cmlsbGljTU9OLCBbXShVQ2hhciBjaCkgeworICAgICAgICAvLyBNb25nb2xpYW4g
bGV0dGVycywgZGlnaXRzIGFuZCBkYXNoZXMgYXJlIGFsbG93ZWQuCisgICAgICAgIHJldHVybiAo
Y2ggPj0gMHgwNDMwICYmIGNoIDw9IDB4MDQ0ZikgfHwgY2ggPT0gMHgwNDUxIHx8IGNoID09IDB4
MDRFOSB8fCBjaCA9PSAweDA0QUYgfHwgaXNBU0NJSURpZ2l0KGNoKSB8fCBjaCA9PSAnLSc7Cisg
ICAgfSk7CisKKyAgICAvLyBOb3QgYSBrbm93biB0b3AgbGV2ZWwgZG9tYWluIHdpdGggc3BlY2lh
bCBydWxlcy4KKyAgICByZXR1cm4gTk87Cit9CisKKy8vIFJldHVybiB2YWx1ZSBvZiBuaWwgbWVh
bnMgbm8gbWFwcGluZyBpcyBuZWNlc3NhcnkuCisvLyBJZiBtYWtlU3RyaW5nIGlzIE5PLCB0aGVu
IHJldHVybiB2YWx1ZSBpcyBlaXRoZXIgbmlsIG9yIHNlbGYgdG8gaW5kaWNhdGUgbWFwcGluZyBp
cyBuZWNlc3NhcnkuCisvLyBJZiBtYWtlU3RyaW5nIGlzIFlFUywgdGhlbiByZXR1cm4gdmFsdWUg
aXMgZWl0aGVyIG5pbCBvciB0aGUgbWFwcGVkIHN0cmluZy4KK3N0YXRpYyBOU1N0cmluZyAqbWFw
SG9zdE5hbWVXaXRoUmFuZ2UoTlNTdHJpbmcgKnN0cmluZywgTlNSYW5nZSByYW5nZSwgQk9PTCBl
bmNvZGUsIEJPT0wgbWFrZVN0cmluZywgQk9PTCAqZXJyb3IpCit7CisgICAgaWYgKHJhbmdlLmxl
bmd0aCA+IEhPU1RfTkFNRV9CVUZGRVJfTEVOR1RIKQorICAgICAgICByZXR1cm4gbmlsOworICAg
IAorICAgIGlmICghW3N0cmluZyBsZW5ndGhdKQorICAgICAgICByZXR1cm4gbmlsOworICAgIAor
ICAgIFVDaGFyIHNvdXJjZUJ1ZmZlcltIT1NUX05BTUVfQlVGRkVSX0xFTkdUSF07CisgICAgVUNo
YXIgZGVzdGluYXRpb25CdWZmZXJbSE9TVF9OQU1FX0JVRkZFUl9MRU5HVEhdOworICAgIAorICAg
IGlmIChlbmNvZGUgJiYgW3N0cmluZyByYW5nZU9mU3RyaW5nOkAiJSIgb3B0aW9uczpOU0xpdGVy
YWxTZWFyY2ggcmFuZ2U6cmFuZ2VdLmxvY2F0aW9uICE9IE5TTm90Rm91bmQpIHsKKyAgICAgICAg
TlNTdHJpbmcgKnN1YnN0cmluZyA9IFtzdHJpbmcgc3Vic3RyaW5nV2l0aFJhbmdlOnJhbmdlXTsK
KyAgICAgICAgc3Vic3RyaW5nID0gQ0ZCcmlkZ2luZ1JlbGVhc2UoQ0ZVUkxDcmVhdGVTdHJpbmdC
eVJlcGxhY2luZ1BlcmNlbnRFc2NhcGVzKG51bGxwdHIsIChDRlN0cmluZ1JlZilzdWJzdHJpbmcs
IENGU1RSKCIiKSkpOworICAgICAgICBpZiAoc3Vic3RyaW5nKSB7CisgICAgICAgICAgICBzdHJp
bmcgPSBzdWJzdHJpbmc7CisgICAgICAgICAgICByYW5nZSA9IE5TTWFrZVJhbmdlKDAsIFtzdHJp
bmcgbGVuZ3RoXSk7CisgICAgICAgIH0KKyAgICB9CiAgICAgCi1zdGF0aWMgU3RyaW5nIGRlY29k
ZVBlcmNlbnRFc2NhcGVzKGNvbnN0IFN0cmluZyYgc3RyaW5nKQorICAgIGludCBsZW5ndGggPSBy
YW5nZS5sZW5ndGg7CisgICAgW3N0cmluZyBnZXRDaGFyYWN0ZXJzOnNvdXJjZUJ1ZmZlciByYW5n
ZTpyYW5nZV07CisgICAgCisgICAgVUVycm9yQ29kZSB1ZXJyb3IgPSBVX1pFUk9fRVJST1I7Cisg
ICAgVUlETkFJbmZvIHByb2Nlc3NpbmdEZXRhaWxzID0gVUlETkFfSU5GT19JTklUSUFMSVpFUjsK
KyAgICBpbnQzMl90IG51bUNoYXJhY3RlcnNDb252ZXJ0ZWQgPSAoZW5jb2RlID8gdWlkbmFfbmFt
ZVRvQVNDSUkgOiB1aWRuYV9uYW1lVG9Vbmljb2RlKSgmVVJMUGFyc2VyOjppbnRlcm5hdGlvbmFs
RG9tYWluTmFtZVRyYW5zY29kZXIoKSwgc291cmNlQnVmZmVyLCBsZW5ndGgsIGRlc3RpbmF0aW9u
QnVmZmVyLCBIT1NUX05BTUVfQlVGRkVSX0xFTkdUSCwgJnByb2Nlc3NpbmdEZXRhaWxzLCAmdWVy
cm9yKTsKKyAgICBpZiAobGVuZ3RoICYmIChVX0ZBSUxVUkUodWVycm9yKSB8fCBwcm9jZXNzaW5n
RGV0YWlscy5lcnJvcnMpKSB7CisgICAgICAgICplcnJvciA9IFlFUzsKKyAgICAgICAgcmV0dXJu
IG5pbDsKKyAgICB9CisgICAgCisgICAgaWYgKG51bUNoYXJhY3RlcnNDb252ZXJ0ZWQgPT0gbGVu
Z3RoICYmICFtZW1jbXAoc291cmNlQnVmZmVyLCBkZXN0aW5hdGlvbkJ1ZmZlciwgbGVuZ3RoICog
c2l6ZW9mKFVDaGFyKSkpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgCisgICAgaWYgKCFlbmNv
ZGUgJiYgIWFsbENoYXJhY3RlcnNJbklETlNjcmlwdFdoaXRlTGlzdChkZXN0aW5hdGlvbkJ1ZmZl
ciwgbnVtQ2hhcmFjdGVyc0NvbnZlcnRlZCkgJiYgIWFsbENoYXJhY3RlcnNBbGxvd2VkQnlUTERS
dWxlcyhkZXN0aW5hdGlvbkJ1ZmZlciwgbnVtQ2hhcmFjdGVyc0NvbnZlcnRlZCkpCisgICAgICAg
IHJldHVybiBuaWw7CisgICAgCisgICAgcmV0dXJuIG1ha2VTdHJpbmcgPyBbTlNTdHJpbmcgc3Ry
aW5nV2l0aENoYXJhY3RlcnM6ZGVzdGluYXRpb25CdWZmZXIgbGVuZ3RoOm51bUNoYXJhY3RlcnND
b252ZXJ0ZWRdIDogc3RyaW5nOworfQorCitzdGF0aWMgQk9PTCBob3N0TmFtZU5lZWRzRGVjb2Rp
bmdXaXRoUmFuZ2UoTlNTdHJpbmcgKnN0cmluZywgTlNSYW5nZSByYW5nZSwgQk9PTCAqZXJyb3Ip
Cit7CisgICAgcmV0dXJuIG1hcEhvc3ROYW1lV2l0aFJhbmdlKHN0cmluZywgcmFuZ2UsIE5PLCBO
TywgZXJyb3IpICE9IG5pbDsKK30KKyAKK3N0YXRpYyBCT09MIGhvc3ROYW1lTmVlZHNFbmNvZGlu
Z1dpdGhSYW5nZShOU1N0cmluZyAqc3RyaW5nLCBOU1JhbmdlIHJhbmdlLCBCT09MICplcnJvcikK
IHsKLSAgICBOU1N0cmluZyAqc3Vic3RyaW5nID0gKE5TU3RyaW5nICopc3RyaW5nOwotICAgIHN1
YnN0cmluZyA9IENGQnJpZGdpbmdSZWxlYXNlKENGVVJMQ3JlYXRlU3RyaW5nQnlSZXBsYWNpbmdQ
ZXJjZW50RXNjYXBlcyhudWxscHRyLCAoQ0ZTdHJpbmdSZWYpc3Vic3RyaW5nLCBDRlNUUigiIikp
KTsKKyAgICByZXR1cm4gbWFwSG9zdE5hbWVXaXRoUmFuZ2Uoc3RyaW5nLCByYW5nZSwgWUVTLCAg
Tk8sIGVycm9yKSAhPSBuaWw7Cit9CiAKLSAgICBpZiAoIXN1YnN0cmluZykKLSAgICAgICAgcmV0
dXJuIHN0cmluZzsKK3N0YXRpYyBOU1N0cmluZyAqZGVjb2RlSG9zdE5hbWVXaXRoUmFuZ2UoTlNT
dHJpbmcgKnN0cmluZywgTlNSYW5nZSByYW5nZSkKK3sKKyAgICBCT09MIGVycm9yID0gTk87Cisg
ICAgTlNTdHJpbmcgKmhvc3QgPSBtYXBIb3N0TmFtZVdpdGhSYW5nZShzdHJpbmcsIHJhbmdlLCBO
TywgWUVTLCAmZXJyb3IpOworICAgIGlmIChlcnJvcikKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAg
ICByZXR1cm4gIWhvc3QgPyBzdHJpbmcgOiBob3N0OworfQogCi0gICAgcmV0dXJuIChTdHJpbmcp
c3Vic3RyaW5nOworc3RhdGljIE5TU3RyaW5nICplbmNvZGVIb3N0TmFtZVdpdGhSYW5nZShOU1N0
cmluZyAqc3RyaW5nLCBOU1JhbmdlIHJhbmdlKQoreworICAgIEJPT0wgZXJyb3IgPSBOTzsKKyAg
ICBOU1N0cmluZyAqaG9zdCA9IG1hcEhvc3ROYW1lV2l0aFJhbmdlKHN0cmluZywgcmFuZ2UsIFlF
UywgWUVTLCAmZXJyb3IpOworICAgIGlmIChlcnJvcikKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAg
ICByZXR1cm4gIWhvc3QgPyBzdHJpbmcgOiBob3N0OwogfQogCiBOU1N0cmluZyAqZGVjb2RlSG9z
dE5hbWUoTlNTdHJpbmcgKnN0cmluZykKIHsKLSAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gaG9z
dCA9IG1hcEhvc3ROYW1lKHN0cmluZywgc3RkOjpudWxsb3B0KTsKLSAgICBpZiAoIWhvc3QpCisg
ICAgQk9PTCBlcnJvciA9IE5POworICAgIE5TU3RyaW5nICpob3N0ID0gbWFwSG9zdE5hbWVXaXRo
UmFuZ2Uoc3RyaW5nLCBOU01ha2VSYW5nZSgwLCBbc3RyaW5nIGxlbmd0aF0pLCBOTywgWUVTLCAm
ZXJyb3IpOworICAgIGlmIChlcnJvcikKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4g
ISpob3N0ID8gc3RyaW5nIDogKE5TU3RyaW5nICopKmhvc3Q7CisgICAgcmV0dXJuICFob3N0ID8g
c3RyaW5nIDogaG9zdDsKIH0KIAogTlNTdHJpbmcgKmVuY29kZUhvc3ROYW1lKE5TU3RyaW5nICpz
dHJpbmcpCiB7Ci0gICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGhvc3QgPSBtYXBIb3N0TmFtZShz
dHJpbmcsIGRlY29kZVBlcmNlbnRFc2NhcGVzKTsKLSAgICBpZiAoIWhvc3QpCisgICAgQk9PTCBl
cnJvciA9IE5POworICAgIE5TU3RyaW5nICpob3N0ID0gbWFwSG9zdE5hbWVXaXRoUmFuZ2Uoc3Ry
aW5nLCBOU01ha2VSYW5nZSgwLCBbc3RyaW5nIGxlbmd0aF0pLCBZRVMsIFlFUywgJmVycm9yKTsK
KyAgICBpZiAoZXJyb3IpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuICEqaG9zdCA/
IHN0cmluZyA6IChOU1N0cmluZyAqKSpob3N0OworICAgIHJldHVybiAhaG9zdCA/IHN0cmluZyA6
IGhvc3Q7Cit9CisKK3N0YXRpYyB2b2lkIGNvbGxlY3RSYW5nZXNUaGF0TmVlZE1hcHBpbmcoTlNT
dHJpbmcgKnN0cmluZywgTlNSYW5nZSByYW5nZSwgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiYg
YXJyYXksIEJPT0wgZW5jb2RlKQoreworICAgIC8vIEdlbmVyYWxseSwgd2Ugd2FudCB0byBvcHRp
bWl6ZSBmb3IgdGhlIGNhc2Ugd2hlcmUgdGhlcmUgaXMgb25lIGhvc3QgbmFtZSB0aGF0IGRvZXMg
bm90IG5lZWQgbWFwcGluZy4KKyAgICAvLyBUaGVyZWZvcmUsIHdlIHVzZSBuaWwgdG8gaW5kaWNh
dGUgbm8gbWFwcGluZyBoZXJlIGFuZCBhbiBlbXB0eSBhcnJheSB0byBpbmRpY2F0ZSBlcnJvci4K
KworICAgIEJPT0wgZXJyb3IgPSBOTzsKKyAgICBCT09MIG5lZWRzTWFwcGluZyA9IGVuY29kZSA/
IGhvc3ROYW1lTmVlZHNFbmNvZGluZ1dpdGhSYW5nZShzdHJpbmcsIHJhbmdlLCAmZXJyb3IpIDog
aG9zdE5hbWVOZWVkc0RlY29kaW5nV2l0aFJhbmdlKHN0cmluZywgcmFuZ2UsICZlcnJvcik7Cisg
ICAgaWYgKCFlcnJvciAmJiAhbmVlZHNNYXBwaW5nKQorICAgICAgICByZXR1cm47CisgICAgCisg
ICAgaWYgKCFhcnJheSkKKyAgICAgICAgYXJyYXkgPSBhZG9wdE5TKFtOU011dGFibGVBcnJheSBu
ZXddKTsKKworICAgIGlmICghZXJyb3IpCisgICAgICAgIFthcnJheSBhZGRPYmplY3Q6W05TVmFs
dWUgdmFsdWVXaXRoUmFuZ2U6cmFuZ2VdXTsKK30KKworc3RhdGljIHZvaWQgY29sbGVjdFJhbmdl
c1RoYXROZWVkRW5jb2RpbmcoTlNTdHJpbmcgKnN0cmluZywgTlNSYW5nZSByYW5nZSwgUmV0YWlu
UHRyPE5TTXV0YWJsZUFycmF5PiYgYXJyYXkpCit7CisgICAgcmV0dXJuIGNvbGxlY3RSYW5nZXNU
aGF0TmVlZE1hcHBpbmcoc3RyaW5nLCByYW5nZSwgYXJyYXksIFlFUyk7Cit9CisKK3N0YXRpYyB2
b2lkIGNvbGxlY3RSYW5nZXNUaGF0TmVlZERlY29kaW5nKE5TU3RyaW5nICpzdHJpbmcsIE5TUmFu
Z2UgcmFuZ2UsIFJldGFpblB0cjxOU011dGFibGVBcnJheT4mIGFycmF5KQoreworICAgIHJldHVy
biBjb2xsZWN0UmFuZ2VzVGhhdE5lZWRNYXBwaW5nKHN0cmluZywgcmFuZ2UsIGFycmF5LCBOTyk7
Cit9CisKK3N0YXRpYyB2b2lkIGFwcGx5SG9zdE5hbWVGdW5jdGlvblRvTWFpbFRvVVJMU3RyaW5n
KE5TU3RyaW5nICpzdHJpbmcsIFN0cmluZ1JhbmdlQXBwbGllckZ1bmN0aW9uIGYsIFJldGFpblB0
cjxOU011dGFibGVBcnJheT4mIGFycmF5KQoreworICAgIC8vIEluIGEgbWFpbHRvOiBVUkwsIGhv
c3QgbmFtZXMgY29tZSBhZnRlciBhICdAJyBjaGFyYWN0ZXIgYW5kIGVuZCB3aXRoIGEgJz4nIG9y
ICcsJyBvciAnPycgY2hhcmFjdGVyLgorICAgIC8vIFNraXAgcXVvdGVkIHN0cmluZ3Mgc28gdGhh
dCBjaGFyYWN0ZXJzIGluIHRoZW0gZG9uJ3QgY29uZnVzZSB1cy4KKyAgICAvLyBXaGVuIHdlIGZp
bmQgYSAnPycgY2hhcmFjdGVyLCB3ZSBhcmUgcGFzdCB0aGUgcGFydCBvZiB0aGUgVVJMIHRoYXQg
Y29udGFpbnMgaG9zdCBuYW1lcy4KKyAgICAKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0
YWluUHRyPE5TQ2hhcmFjdGVyU2V0Pj4gaG9zdE5hbWVPclN0cmluZ1N0YXJ0Q2hhcmFjdGVycyA9
IFtOU0NoYXJhY3RlclNldCBjaGFyYWN0ZXJTZXRXaXRoQ2hhcmFjdGVyc0luU3RyaW5nOkAiXCJA
PyJdOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNDaGFyYWN0ZXJTZXQ+
PiBob3N0TmFtZUVuZENoYXJhY3RlcnMgPSBbTlNDaGFyYWN0ZXJTZXQgY2hhcmFjdGVyU2V0V2l0
aENoYXJhY3RlcnNJblN0cmluZzpAIj4sPyJdOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxS
ZXRhaW5QdHI8TlNDaGFyYWN0ZXJTZXQ+PiBxdW90ZWRTdHJpbmdDaGFyYWN0ZXJzID0gW05TQ2hh
cmFjdGVyU2V0IGNoYXJhY3RlclNldFdpdGhDaGFyYWN0ZXJzSW5TdHJpbmc6QCJcIlxcIl07Cisg
ICAgCisgICAgdW5zaWduZWQgc3RyaW5nTGVuZ3RoID0gW3N0cmluZyBsZW5ndGhdOworICAgIE5T
UmFuZ2UgcmVtYWluaW5nID0gTlNNYWtlUmFuZ2UoMCwgc3RyaW5nTGVuZ3RoKTsKKyAgICAKKyAg
ICB3aGlsZSAoMSkgeworICAgICAgICAvLyBGaW5kIHN0YXJ0IG9mIGhvc3QgbmFtZSBvciBvZiBx
dW90ZWQgc3RyaW5nLgorICAgICAgICBOU1JhbmdlIGhvc3ROYW1lT3JTdHJpbmdTdGFydCA9IFtz
dHJpbmcgcmFuZ2VPZkNoYXJhY3RlckZyb21TZXQ6aG9zdE5hbWVPclN0cmluZ1N0YXJ0Q2hhcmFj
dGVycy5nZXQoKS5nZXQoKSBvcHRpb25zOjAgcmFuZ2U6cmVtYWluaW5nXTsKKyAgICAgICAgaWYg
KGhvc3ROYW1lT3JTdHJpbmdTdGFydC5sb2NhdGlvbiA9PSBOU05vdEZvdW5kKQorICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgIHVuaWNoYXIgYyA9IFtzdHJpbmcgY2hhcmFjdGVyQXRJbmRl
eDpob3N0TmFtZU9yU3RyaW5nU3RhcnQubG9jYXRpb25dOworICAgICAgICByZW1haW5pbmcubG9j
YXRpb24gPSBOU01heFJhbmdlKGhvc3ROYW1lT3JTdHJpbmdTdGFydCk7CisgICAgICAgIHJlbWFp
bmluZy5sZW5ndGggPSBzdHJpbmdMZW5ndGggLSByZW1haW5pbmcubG9jYXRpb247CisgICAgICAg
IAorICAgICAgICBpZiAoYyA9PSAnPycpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIAor
ICAgICAgICBpZiAoYyA9PSAnQCcpIHsKKyAgICAgICAgICAgIC8vIEZpbmQgZW5kIG9mIGhvc3Qg
bmFtZS4KKyAgICAgICAgICAgIHVuc2lnbmVkIGhvc3ROYW1lU3RhcnQgPSByZW1haW5pbmcubG9j
YXRpb247CisgICAgICAgICAgICBOU1JhbmdlIGhvc3ROYW1lRW5kID0gW3N0cmluZyByYW5nZU9m
Q2hhcmFjdGVyRnJvbVNldDpob3N0TmFtZUVuZENoYXJhY3RlcnMuZ2V0KCkuZ2V0KCkgb3B0aW9u
czowIHJhbmdlOnJlbWFpbmluZ107CisgICAgICAgICAgICBCT09MIGRvbmU7CisgICAgICAgICAg
ICBpZiAoaG9zdE5hbWVFbmQubG9jYXRpb24gPT0gTlNOb3RGb3VuZCkgeworICAgICAgICAgICAg
ICAgIGhvc3ROYW1lRW5kLmxvY2F0aW9uID0gc3RyaW5nTGVuZ3RoOworICAgICAgICAgICAgICAg
IGRvbmUgPSBZRVM7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHJlbWFp
bmluZy5sb2NhdGlvbiA9IGhvc3ROYW1lRW5kLmxvY2F0aW9uOworICAgICAgICAgICAgICAgIHJl
bWFpbmluZy5sZW5ndGggPSBzdHJpbmdMZW5ndGggLSByZW1haW5pbmcubG9jYXRpb247CisgICAg
ICAgICAgICAgICAgZG9uZSA9IE5POworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAg
ICAgICAgICAvLyBQcm9jZXNzIGhvc3QgbmFtZSByYW5nZS4KKyAgICAgICAgICAgIGYoc3RyaW5n
LCBOU01ha2VSYW5nZShob3N0TmFtZVN0YXJ0LCBob3N0TmFtZUVuZC5sb2NhdGlvbiAtIGhvc3RO
YW1lU3RhcnQpLCBhcnJheSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChkb25lKQor
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8v
IFNraXAgcXVvdGVkIHN0cmluZy4KKyAgICAgICAgICAgIEFTU0VSVChjID09ICciJyk7CisgICAg
ICAgICAgICB3aGlsZSAoMSkgeworICAgICAgICAgICAgICAgIE5TUmFuZ2UgZXNjYXBlZENoYXJh
Y3Rlck9yU3RyaW5nRW5kID0gW3N0cmluZyByYW5nZU9mQ2hhcmFjdGVyRnJvbVNldDpxdW90ZWRT
dHJpbmdDaGFyYWN0ZXJzLmdldCgpLmdldCgpIG9wdGlvbnM6MCByYW5nZTpyZW1haW5pbmddOwor
ICAgICAgICAgICAgICAgIGlmIChlc2NhcGVkQ2hhcmFjdGVyT3JTdHJpbmdFbmQubG9jYXRpb24g
PT0gTlNOb3RGb3VuZCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAg
ICAgICAgYyA9IFtzdHJpbmcgY2hhcmFjdGVyQXRJbmRleDplc2NhcGVkQ2hhcmFjdGVyT3JTdHJp
bmdFbmQubG9jYXRpb25dOworICAgICAgICAgICAgICAgIHJlbWFpbmluZy5sb2NhdGlvbiA9IE5T
TWF4UmFuZ2UoZXNjYXBlZENoYXJhY3Rlck9yU3RyaW5nRW5kKTsKKyAgICAgICAgICAgICAgICBy
ZW1haW5pbmcubGVuZ3RoID0gc3RyaW5nTGVuZ3RoIC0gcmVtYWluaW5nLmxvY2F0aW9uOworICAg
ICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vIElmIHdlIGFyZSB0aGUgZW5kIG9mIHRo
ZSBzdHJpbmcsIHRoZW4gYnJlYWsgZnJvbSB0aGUgc3RyaW5nIGxvb3AgYmFjayB0byB0aGUgaG9z
dCBuYW1lIGxvb3AuCisgICAgICAgICAgICAgICAgaWYgKGMgPT0gJyInKQorICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAvLyBTa2lw
IGVzY2FwZWQgY2hhcmFjdGVyLgorICAgICAgICAgICAgICAgIEFTU0VSVChjID09ICdcXCcpOwor
ICAgICAgICAgICAgICAgIGlmICghcmVtYWluaW5nLmxlbmd0aCkKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgICAgICAgICAgcmVtYWluaW5nLmxvY2F0aW9uICs9IDE7Cisg
ICAgICAgICAgICAgICAgcmVtYWluaW5nLmxlbmd0aCAtPSAxOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgfQorfQorCitzdGF0aWMgdm9pZCBhcHBseUhvc3ROYW1lRnVuY3Rpb25Ub1VS
TFN0cmluZyhOU1N0cmluZyAqc3RyaW5nLCBTdHJpbmdSYW5nZUFwcGxpZXJGdW5jdGlvbiBmLCBS
ZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+JiBhcnJheSkKK3sKKyAgICAvLyBGaW5kIGhvc3RuYW1l
cy4gVG9vIGJhZCB3ZSBjYW4ndCB1c2UgYW55IHJlYWwgVVJMLXBhcnNpbmcgY29kZSB0byBkbyB0
aGlzLAorICAgIC8vIGJ1dCB3ZSBoYXZlIHRvIGRvIGl0IGJlZm9yZSBkb2luZyBhbGwgdGhlICUt
ZXNjYXBpbmcsIGFuZCB0aGlzIGlzIHRoZSBvbmx5CisgICAgLy8gY29kZSB3ZSBoYXZlIHRoYXQg
cGFyc2VzIG1haWx0byBVUkxzIGFueXdheS4KKyAgICAKKyAgICAvLyBNYXliZSB3ZSBzaG91bGQg
aW1wbGVtZW50IHRoaXMgdXNpbmcgYSBjaGFyYWN0ZXIgYnVmZmVyIGluc3RlYWQ/CisgICAgCisg
ICAgaWYgKHByb3RvY29sSXMoc3RyaW5nLCAibWFpbHRvIikpIHsKKyAgICAgICAgYXBwbHlIb3N0
TmFtZUZ1bmN0aW9uVG9NYWlsVG9VUkxTdHJpbmcoc3RyaW5nLCBmLCBhcnJheSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgCisgICAgLy8gRmluZCB0aGUgaG9zdCBuYW1lIGluIGEgaGll
cmFyY2hpY2FsIFVSTC4KKyAgICAvLyBJdCBjb21lcyBhZnRlciBhICI6Ly8iIHNlcXVlbmNlLCB3
aXRoIHNjaGVtZSBjaGFyYWN0ZXJzIHByZWNlZGluZy4KKyAgICAvLyBJZiBlbmRzIHdpdGggdGhl
IGVuZCBvZiB0aGUgc3RyaW5nIG9yIGEgIjoiLCAiLyIsIG9yIGEgIj8iLgorICAgIC8vIElmIHRo
ZXJlIGlzIGEgIkAiIGNoYXJhY3RlciwgdGhlIGhvc3QgcGFydCBpcyBqdXN0IHRoZSBwYXJ0IGFm
dGVyIHRoZSAiQCIuCisgICAgTlNSYW5nZSBzZXBhcmF0b3JSYW5nZSA9IFtzdHJpbmcgcmFuZ2VP
ZlN0cmluZzpAIjovLyJdOworICAgIGlmIChzZXBhcmF0b3JSYW5nZS5sb2NhdGlvbiA9PSBOU05v
dEZvdW5kKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgLy8gQ2hlY2sgdGhhdCBhbGwgY2hh
cmFjdGVycyBiZWZvcmUgdGhlIDovLyBhcmUgdmFsaWQgc2NoZW1lIGNoYXJhY3RlcnMuCisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0NoYXJhY3RlclNldD4+IG5vblNjaGVt
ZUNoYXJhY3RlcnMgPSBbW05TQ2hhcmFjdGVyU2V0IGNoYXJhY3RlclNldFdpdGhDaGFyYWN0ZXJz
SW5TdHJpbmc6QCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0
dXZ3eHl6MDEyMzQ1Njc4OSstLiJdIGludmVydGVkU2V0XTsKKyAgICBpZiAoW3N0cmluZyByYW5n
ZU9mQ2hhcmFjdGVyRnJvbVNldDpub25TY2hlbWVDaGFyYWN0ZXJzLmdldCgpLmdldCgpIG9wdGlv
bnM6MCByYW5nZTpOU01ha2VSYW5nZSgwLCBzZXBhcmF0b3JSYW5nZS5sb2NhdGlvbildLmxvY2F0
aW9uICE9IE5TTm90Rm91bmQpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICB1bnNpZ25lZCBz
dHJpbmdMZW5ndGggPSBbc3RyaW5nIGxlbmd0aF07CisgICAgCisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPFJldGFpblB0cjxOU0NoYXJhY3RlclNldD4+IGhvc3RUZXJtaW5hdG9ycyA9IFtOU0No
YXJhY3RlclNldCBjaGFyYWN0ZXJTZXRXaXRoQ2hhcmFjdGVyc0luU3RyaW5nOkAiOi8/IyJdOwor
ICAgIAorICAgIC8vIFN0YXJ0IGFmdGVyIHRoZSBzZXBhcmF0b3IuCisgICAgdW5zaWduZWQgYXV0
aG9yaXR5U3RhcnQgPSBOU01heFJhbmdlKHNlcGFyYXRvclJhbmdlKTsKKyAgICAKKyAgICAvLyBG
aW5kIHRlcm1pbmF0aW5nIGNoYXJhY3Rlci4KKyAgICBOU1JhbmdlIGhvc3ROYW1lVGVybWluYXRv
ciA9IFtzdHJpbmcgcmFuZ2VPZkNoYXJhY3RlckZyb21TZXQ6aG9zdFRlcm1pbmF0b3JzLmdldCgp
LmdldCgpIG9wdGlvbnM6MCByYW5nZTpOU01ha2VSYW5nZShhdXRob3JpdHlTdGFydCwgc3RyaW5n
TGVuZ3RoIC0gYXV0aG9yaXR5U3RhcnQpXTsKKyAgICB1bnNpZ25lZCBob3N0TmFtZUVuZCA9IGhv
c3ROYW1lVGVybWluYXRvci5sb2NhdGlvbiA9PSBOU05vdEZvdW5kID8gc3RyaW5nTGVuZ3RoIDog
aG9zdE5hbWVUZXJtaW5hdG9yLmxvY2F0aW9uOworICAgIAorICAgIC8vIEZpbmQgIkAiIGZvciB0
aGUgc3RhcnQgb2YgdGhlIGhvc3QgbmFtZS4KKyAgICBOU1JhbmdlIHVzZXJJbmZvVGVybWluYXRv
ciA9IFtzdHJpbmcgcmFuZ2VPZlN0cmluZzpAIkAiIG9wdGlvbnM6MCByYW5nZTpOU01ha2VSYW5n
ZShhdXRob3JpdHlTdGFydCwgaG9zdE5hbWVFbmQgLSBhdXRob3JpdHlTdGFydCldOworICAgIHVu
c2lnbmVkIGhvc3ROYW1lU3RhcnQgPSB1c2VySW5mb1Rlcm1pbmF0b3IubG9jYXRpb24gPT0gTlNO
b3RGb3VuZCA/IGF1dGhvcml0eVN0YXJ0IDogTlNNYXhSYW5nZSh1c2VySW5mb1Rlcm1pbmF0b3Ip
OworICAgIAorICAgIHJldHVybiBmKHN0cmluZywgTlNNYWtlUmFuZ2UoaG9zdE5hbWVTdGFydCwg
aG9zdE5hbWVFbmQgLSBob3N0TmFtZVN0YXJ0KSwgYXJyYXkpOworfQorCitzdGF0aWMgUmV0YWlu
UHRyPE5TU3RyaW5nPiBtYXBIb3N0TmFtZXMoTlNTdHJpbmcgKnN0cmluZywgQk9PTCBlbmNvZGUp
Cit7CisgICAgLy8gR2VuZXJhbGx5LCB3ZSB3YW50IHRvIG9wdGltaXplIGZvciB0aGUgY2FzZSB3
aGVyZSB0aGVyZSBpcyBvbmUgaG9zdCBuYW1lIHRoYXQgZG9lcyBub3QgbmVlZCBtYXBwaW5nLgor
ICAgIAorICAgIGlmIChlbmNvZGUgJiYgW3N0cmluZyBjYW5CZUNvbnZlcnRlZFRvRW5jb2Rpbmc6
TlNBU0NJSVN0cmluZ0VuY29kaW5nXSkKKyAgICAgICAgcmV0dXJuIHN0cmluZzsKKyAgICAKKyAg
ICAvLyBNYWtlIGEgbGlzdCBvZiByYW5nZXMgdGhhdCBhY3R1YWxseSBuZWVkIG1hcHBpbmcuCisg
ICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBob3N0TmFtZVJhbmdlczsKKyAgICBTdHJpbmdS
YW5nZUFwcGxpZXJGdW5jdGlvbiBmID0gZW5jb2RlID8gY29sbGVjdFJhbmdlc1RoYXROZWVkRW5j
b2RpbmcgOiBjb2xsZWN0UmFuZ2VzVGhhdE5lZWREZWNvZGluZzsKKyAgICBhcHBseUhvc3ROYW1l
RnVuY3Rpb25Ub1VSTFN0cmluZyhzdHJpbmcsIGYsIGhvc3ROYW1lUmFuZ2VzKTsKKyAgICBpZiAo
IWhvc3ROYW1lUmFuZ2VzKQorICAgICAgICByZXR1cm4gc3RyaW5nOworCisgICAgaWYgKCFbaG9z
dE5hbWVSYW5nZXMgY291bnRdKQorICAgICAgICByZXR1cm4gbmlsOworICAgIAorICAgIC8vIERv
IHRoZSBtYXBwaW5nLgorICAgIGF1dG8gbXV0YWJsZUNvcHkgPSBhZG9wdE5TKFtzdHJpbmcgbXV0
YWJsZUNvcHldKTsKKyAgICB1bnNpZ25lZCBpID0gW2hvc3ROYW1lUmFuZ2VzIGNvdW50XTsKKyAg
ICB3aGlsZSAoaS0tKSB7CisgICAgICAgIE5TUmFuZ2UgaG9zdE5hbWVSYW5nZSA9IFtbaG9zdE5h
bWVSYW5nZXMgb2JqZWN0QXRJbmRleDppXSByYW5nZVZhbHVlXTsKKyAgICAgICAgTlNTdHJpbmcg
Km1hcHBlZEhvc3ROYW1lID0gZW5jb2RlID8gZW5jb2RlSG9zdE5hbWVXaXRoUmFuZ2Uoc3RyaW5n
LCBob3N0TmFtZVJhbmdlKSA6IGRlY29kZUhvc3ROYW1lV2l0aFJhbmdlKHN0cmluZywgaG9zdE5h
bWVSYW5nZSk7CisgICAgICAgIFttdXRhYmxlQ29weSByZXBsYWNlQ2hhcmFjdGVyc0luUmFuZ2U6
aG9zdE5hbWVSYW5nZSB3aXRoU3RyaW5nOm1hcHBlZEhvc3ROYW1lXTsKKyAgICB9CisgICAgcmV0
dXJuIG11dGFibGVDb3B5OwogfQogCiBzdGF0aWMgUmV0YWluUHRyPE5TU3RyaW5nPiBzdHJpbmdC
eVRyaW1taW5nV2hpdGVzcGFjZShOU1N0cmluZyAqc3RyaW5nKQpAQCAtMjIxLDE4ICs5MDQsMTgg
QEAgTlNVUkwgKlVSTFdpdGhVc2VyVHlwZWRTdHJpbmcoTlNTdHJpbmcgKnN0cmluZywgTlNVUkwg
Km5zVVJMKQogICAgIGlmICghc3RyaW5nKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgYXV0
byBtYXBwZWRTdHJpbmcgPSBtYXBIb3N0TmFtZXMoc3RyaW5nQnlUcmltbWluZ1doaXRlc3BhY2Uo
c3RyaW5nKS5nZXQoKSwgZGVjb2RlUGVyY2VudEVzY2FwZXMpOworICAgIGF1dG8gbWFwcGVkU3Ry
aW5nID0gbWFwSG9zdE5hbWVzKHN0cmluZ0J5VHJpbW1pbmdXaGl0ZXNwYWNlKHN0cmluZykuZ2V0
KCksIFlFUyk7CiAgICAgaWYgKCFtYXBwZWRTdHJpbmcpCiAgICAgICAgIHJldHVybiBuaWw7CiAK
ICAgICAvLyBMZXQncyBjaGVjayB3aGV0aGVyIHRoZSBVUkwgaXMgYm9ndXMuCi0gICAgVVJMIHVy
bCB7IFVSTCB7IG5zVVJMIH0sIG1hcHBlZFN0cmluZyB9OworICAgIFVSTCB1cmwgeyBVUkwgeyBu
c1VSTCB9LCBtYXBwZWRTdHJpbmcuZ2V0KCkgfTsKICAgICBpZiAoIXVybC5jcmVhdGVDRlVSTCgp
KQogICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODYwNTcKICAgICAvLyBXZSBzaG91bGQgYmUgYWJsZSB0
byB1c2UgdXJsLmNyZWF0ZUNGVVJMIGluc3RlYWQgb2YgdXNpbmcgZGlyZWN0bHkgQ0ZVUkwgcGFy
c2luZyByb3V0aW5lcy4KLSAgICBOU0RhdGEgKmRhdGEgPSBkYXRhV2l0aFVzZXJUeXBlZFN0cmlu
ZyhtYXBwZWRTdHJpbmcpOworICAgIE5TRGF0YSAqZGF0YSA9IGRhdGFXaXRoVXNlclR5cGVkU3Ry
aW5nKG1hcHBlZFN0cmluZy5nZXQoKSk7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4g
W05TVVJMIFVSTFdpdGhTdHJpbmc6QCIiXTsKIApAQCAtMzcxLDExICsxMDU0LDExOSBAQCBOU0Rh
dGEgKm9yaWdpbmFsVVJMRGF0YShOU1VSTCAqVVJMKQogICAgIHJldHVybiBkYXRhOwogfQogCitz
dGF0aWMgQ0ZTdHJpbmdSZWYgY3JlYXRlU3RyaW5nV2l0aEVzY2FwZWRVbnNhZmVDaGFyYWN0ZXJz
KENGU3RyaW5nUmVmIHN0cmluZykKK3sKKyAgICBDRkluZGV4IGxlbmd0aCA9IENGU3RyaW5nR2V0
TGVuZ3RoKHN0cmluZyk7CisgICAgVmVjdG9yPFVDaGFyLCBVUkxfQllURVNfQlVGRkVSX0xFTkdU
SD4gc291cmNlQnVmZmVyKGxlbmd0aCk7CisgICAgQ0ZTdHJpbmdHZXRDaGFyYWN0ZXJzKHN0cmlu
ZywgQ0ZSYW5nZU1ha2UoMCwgbGVuZ3RoKSwgc291cmNlQnVmZmVyLmRhdGEoKSk7CisgICAgCisg
ICAgVmVjdG9yPFVDaGFyLCBVUkxfQllURVNfQlVGRkVSX0xFTkdUSD4gb3V0QnVmZmVyOworICAg
IAorICAgIHN0ZDo6b3B0aW9uYWw8VUNoYXIzMj4gcHJldmlvdXNDb2RlUG9pbnQ7CisgICAgQ0ZJ
bmRleCBpID0gMDsKKyAgICB3aGlsZSAoaSA8IGxlbmd0aCkgeworICAgICAgICBVQ2hhcjMyIGM7
CisgICAgICAgIFUxNl9ORVhUKHNvdXJjZUJ1ZmZlciwgaSwgbGVuZ3RoLCBjKQorICAgICAgICAK
KyAgICAgICAgaWYgKGlzTG9va2FsaWtlQ2hhcmFjdGVyKHByZXZpb3VzQ29kZVBvaW50LCBjKSkg
eworICAgICAgICAgICAgdWludDhfdCB1dGY4QnVmZmVyWzRdOworICAgICAgICAgICAgQ0ZJbmRl
eCBvZmZzZXQgPSAwOworICAgICAgICAgICAgVUJvb2wgZmFpbHVyZSA9IGZhbHNlOworICAgICAg
ICAgICAgVThfQVBQRU5EKHV0ZjhCdWZmZXIsIG9mZnNldCwgNCwgYywgZmFpbHVyZSkKKyAgICAg
ICAgICAgIEFTU0VSVCghZmFpbHVyZSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZvciAo
Q0ZJbmRleCBqID0gMDsgaiA8IG9mZnNldDsgKytqKSB7CisgICAgICAgICAgICAgICAgb3V0QnVm
ZmVyLmFwcGVuZCgnJScpOworICAgICAgICAgICAgICAgIG91dEJ1ZmZlci5hcHBlbmQodXBwZXJO
aWJibGVUb0FTQ0lJSGV4RGlnaXQodXRmOEJ1ZmZlcltqXSkpOworICAgICAgICAgICAgICAgIG91
dEJ1ZmZlci5hcHBlbmQobG93ZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQodXRmOEJ1ZmZlcltqXSkp
OworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgVUNoYXIgdXRm
MTZCdWZmZXJbMl07CisgICAgICAgICAgICBDRkluZGV4IG9mZnNldCA9IDA7CisgICAgICAgICAg
ICBVQm9vbCBmYWlsdXJlID0gZmFsc2U7CisgICAgICAgICAgICBVMTZfQVBQRU5EKHV0ZjE2QnVm
ZmVyLCBvZmZzZXQsIDIsIGMsIGZhaWx1cmUpCisgICAgICAgICAgICBBU1NFUlQoIWZhaWx1cmUp
OworICAgICAgICAgICAgZm9yIChDRkluZGV4IGogPSAwOyBqIDwgb2Zmc2V0OyArK2opCisgICAg
ICAgICAgICAgICAgb3V0QnVmZmVyLmFwcGVuZCh1dGYxNkJ1ZmZlcltqXSk7CisgICAgICAgIH0K
KyAgICAgICAgcHJldmlvdXNDb2RlUG9pbnQgPSBjOworICAgIH0KKyAgICAKKyAgICByZXR1cm4g
Q0ZTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycyhudWxscHRyLCBvdXRCdWZmZXIuZGF0YSgpLCBv
dXRCdWZmZXIuc2l6ZSgpKTsKK30KKwogTlNTdHJpbmcgKnVzZXJWaXNpYmxlU3RyaW5nKE5TVVJM
ICpVUkwpCiB7CiAgICAgTlNEYXRhICpkYXRhID0gb3JpZ2luYWxVUkxEYXRhKFVSTCk7Ci0gICAg
Q1N0cmluZyBzdHJpbmcoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KFtkYXRhIGJ5dGVzXSksIFtk
YXRhIGxlbmd0aF0pOwotICAgIHJldHVybiB1c2VyVmlzaWJsZVVSTChzdHJpbmcpOworICAgIGNv
bnN0IHVuc2lnbmVkIGNoYXIgKmJlZm9yZSA9IHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNo
YXIqPihbZGF0YSBieXRlc10pOworICAgIGludCBsZW5ndGggPSBbZGF0YSBsZW5ndGhdOworICAg
IAorICAgIGJvb2wgbWF5TmVlZEhvc3ROYW1lRGVjb2RpbmcgPSBmYWxzZTsKKyAgICAKKyAgICBj
b25zdCB1bnNpZ25lZCBjaGFyICpwID0gYmVmb3JlOworICAgIGludCBidWZmZXJMZW5ndGggPSAo
bGVuZ3RoICogMykgKyAxOworICAgIFZlY3RvcjxjaGFyLCBVUkxfQllURVNfQlVGRkVSX0xFTkdU
SD4gYWZ0ZXIoYnVmZmVyTGVuZ3RoKTsgLy8gbGFyZ2UgZW5vdWdoIHRvICUtZXNjYXBlIGV2ZXJ5
IGNoYXJhY3RlcgorICAgIGNoYXIgKnEgPSBhZnRlci5kYXRhKCk7CisgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICB1bnNpZ25lZCBjaGFyIGMgPSBwW2ldOwor
ICAgICAgICAvLyB1bmVzY2FwZSBlc2NhcGUgc2VxdWVuY2VzIHRoYXQgaW5kaWNhdGUgYnl0ZXMg
Z3JlYXRlciB0aGFuIDB4N2YKKyAgICAgICAgaWYgKGMgPT0gJyUnICYmIChpICsgMSA8IGxlbmd0
aCAmJiBpc0FTQ0lJSGV4RGlnaXQocFtpICsgMV0pKSAmJiBpICsgMiA8IGxlbmd0aCAmJiBpc0FT
Q0lJSGV4RGlnaXQocFtpICsgMl0pKSB7CisgICAgICAgICAgICBhdXRvIHUgPSB0b0FTQ0lJSGV4
VmFsdWUocFtpICsgMV0sIHBbaSArIDJdKTsKKyAgICAgICAgICAgIGlmICh1ID4gMHg3Zikgewor
ICAgICAgICAgICAgICAgIC8vIHVuZXNjYXBlCisgICAgICAgICAgICAgICAgKnErKyA9IHU7Cisg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIGRvIG5vdCB1bmVzY2FwZQor
ICAgICAgICAgICAgICAgICpxKysgPSBwW2ldOworICAgICAgICAgICAgICAgICpxKysgPSBwW2kg
KyAxXTsKKyAgICAgICAgICAgICAgICAqcSsrID0gcFtpICsgMl07CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBpICs9IDI7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAqcSsrID0g
YzsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gQ2hlY2sgZm9yICJ4bi0tIiBpbiBhbiBl
ZmZpY2llbnQsIG5vbi1jYXNlLXNlbnNpdGl2ZSwgd2F5LgorICAgICAgICAgICAgaWYgKGMgPT0g
Jy0nICYmIGkgPj0gMyAmJiAhbWF5TmVlZEhvc3ROYW1lRGVjb2RpbmcgJiYgKHFbLTRdIHwgMHgy
MCkgPT0gJ3gnICYmIChxWy0zXSB8IDB4MjApID09ICduJyAmJiBxWy0yXSA9PSAnLScpCisgICAg
ICAgICAgICAgICAgbWF5TmVlZEhvc3ROYW1lRGVjb2RpbmcgPSB0cnVlOworICAgICAgICB9Cisg
ICAgfQorICAgICpxID0gJ1wwJzsKKyAgICAKKyAgICAvLyBDaGVjayBzdHJpbmcgdG8gc2VlIGlm
IGl0IGNhbiBiZSBjb252ZXJ0ZWQgdG8gZGlzcGxheSB1c2luZyBVVEYtOCAgCisgICAgUmV0YWlu
UHRyPE5TU3RyaW5nPiByZXN1bHQgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aFVURjhTdHJpbmc6YWZ0
ZXIuZGF0YSgpXTsKKyAgICBpZiAoIXJlc3VsdCkgeworICAgICAgICAvLyBDb3VsZCBub3QgY29u
dmVydCB0byBVVEYtOC4KKyAgICAgICAgLy8gQ29udmVydCBjaGFyYWN0ZXJzIGdyZWF0ZXIgdGhh
biAweDdmIHRvIGVzY2FwZSBzZXF1ZW5jZXMuCisgICAgICAgIC8vIFNoaWZ0IGN1cnJlbnQgc3Ry
aW5nIHRvIHRoZSBlbmQgb2YgdGhlIGJ1ZmZlcgorICAgICAgICAvLyB0aGVuIHdlIHdpbGwgY29w
eSBiYWNrIGJ5dGVzIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyIAorICAgICAgICAvLyBhcyB3
ZSBjb252ZXJ0LgorICAgICAgICBpbnQgYWZ0ZXJsZW5ndGggPSBxIC0gYWZ0ZXIuZGF0YSgpOwor
ICAgICAgICBjaGFyICpwID0gYWZ0ZXIuZGF0YSgpICsgYnVmZmVyTGVuZ3RoIC0gYWZ0ZXJsZW5n
dGggLSAxOworICAgICAgICBtZW1tb3ZlKHAsIGFmdGVyLmRhdGEoKSwgYWZ0ZXJsZW5ndGggKyAx
KTsgLy8gY29waWVzIHRyYWlsaW5nICdcMCcKKyAgICAgICAgY2hhciAqcSA9IGFmdGVyLmRhdGEo
KTsKKyAgICAgICAgd2hpbGUgKCpwKSB7CisgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGMgPSAq
cDsKKyAgICAgICAgICAgIGlmIChjID4gMHg3ZikgeworICAgICAgICAgICAgICAgICpxKysgPSAn
JSc7CisgICAgICAgICAgICAgICAgKnErKyA9IHVwcGVyTmliYmxlVG9BU0NJSUhleERpZ2l0KGMp
OworICAgICAgICAgICAgICAgICpxKysgPSBsb3dlck5pYmJsZVRvQVNDSUlIZXhEaWdpdChjKTsK
KyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICpxKysgPSAqcDsKKyAgICAgICAg
ICAgIHArKzsKKyAgICAgICAgfQorICAgICAgICAqcSA9ICdcMCc7CisgICAgICAgIHJlc3VsdCA9
IFtOU1N0cmluZyBzdHJpbmdXaXRoVVRGOFN0cmluZzphZnRlci5kYXRhKCldOworICAgIH0KKyAg
ICAKKyAgICBpZiAobWF5TmVlZEhvc3ROYW1lRGVjb2RpbmcpIHsKKyAgICAgICAgLy8gRklYTUU6
IElzIGl0IGdvb2QgdG8gaWdub3JlIHRoZSBmYWlsdXJlIG9mIG1hcEhvc3ROYW1lcyBhbmQga2Vl
cCByZXN1bHQgaW50YWN0PworICAgICAgICBhdXRvIG1hcHBlZFJlc3VsdCA9IG1hcEhvc3ROYW1l
cyhyZXN1bHQuZ2V0KCksIE5PKTsKKyAgICAgICAgaWYgKG1hcHBlZFJlc3VsdCkKKyAgICAgICAg
ICAgIHJlc3VsdCA9IG1hcHBlZFJlc3VsdDsKKyAgICB9CisKKyAgICByZXN1bHQgPSBbcmVzdWx0
IHByZWNvbXBvc2VkU3RyaW5nV2l0aENhbm9uaWNhbE1hcHBpbmddOworICAgIHJldHVybiBDRkJy
aWRnaW5nUmVsZWFzZShjcmVhdGVTdHJpbmdXaXRoRXNjYXBlZFVuc2FmZUNoYXJhY3RlcnMoKF9f
YnJpZGdlIENGU3RyaW5nUmVmKXJlc3VsdC5nZXQoKSkpOwogfQogCiBCT09MIGlzVXNlclZpc2li
bGVVUkwoTlNTdHJpbmcgKnN0cmluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApp
bmRleCA2ZWIwMGQ1NmI3ODA2NDYxY2I0N2Y1MDNiZWViZDIxZjYyOTVlZjFiLi44ODljMTM4YzAx
NGJiNzE2NTkyNTkwZjYxZTQ5Y2Y1NzU4OTExMmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuY3BwCkBAIC0xODUsNyArMTg1LDYgQEAKICNpbmNsdWRlIDx3dGYvTGFuZ3VhZ2UuaD4K
ICNpbmNsdWRlIDx3dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL01v
bm90b25pY1RpbWUuaD4KLSNpbmNsdWRlIDx3dGYvVVJMSGVscGVycy5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ0J1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJlcnMuaD4KQEAgLTQy
MTAsOSArNDIwOSwxMCBAQCBTdHJpbmcgSW50ZXJuYWxzOjpnZXRDdXJyZW50TWVkaWFDb250cm9s
c1N0YXR1c0ZvckVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCYgbWVkaQogCiAjaWYgIVBMQVRGT1JN
KENPQ09BKQogCi1TdHJpbmcgSW50ZXJuYWxzOjp1c2VyVmlzaWJsZVN0cmluZyhjb25zdCBET01V
UkwmIHVybCkKK1N0cmluZyBJbnRlcm5hbHM6OnVzZXJWaXNpYmxlU3RyaW5nKGNvbnN0IERPTVVS
TCYpCiB7Ci0gICAgcmV0dXJuIFdURjo6VVJMSGVscGVyczo6dXNlclZpc2libGVVUkwodXJsLmhy
ZWYoKS5zdHJpbmcoKS51dGY4KCkpOworICAgIC8vIENvY29hLXNwZWNpZmljIGZ1bmN0aW9uLiBD
b3VsZCBBU1NFUlRfTk9UX1JFQUNIRUQsIGJ1dCB0aGF0J3MgcHJvYmFibHkgb3ZlcmtpbGwuCisg
ICAgcmV0dXJuIFN0cmluZygpOwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtR1RLLmNtYWtlCmlu
ZGV4IDE3Mjk3MDk0MWUzYjg5NWVjNzgyMTZkMDAzYzkzZWY5OWU5MzIzMGQuLjIyODEyNzRjZjBj
MjUyYWNlNGFjZTJmOTE2N2U3Mjk1ODViZTZhOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm1HVEsuY21ha2UKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybUdUSy5jbWFrZQpA
QCAtMTAzLDcgKzEwMyw2IEBAIHNldChXZWJLaXQyR1RLX0lOU1RBTExFRF9IRUFERVJTCiAgICAg
JHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklSZXF1ZXN0LmgKICAgICAk
e1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVSSVJlc3BvbnNlLmgKICAgICAk
e1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuaAot
ICAgICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJVXRpbGl0aWVzLmgK
ICAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJDb250ZW50LmgK
ICAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJDb250ZW50TWFu
YWdlci5oCiAgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdC5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
V1BFLmNtYWtlIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdQRS5jbWFrZQppbmRleCBjMzljMWMz
NzllZjlkY2E5MDhkYzBlNGZhNWE3ODllNjVhZWU4YzE3Li4xZjY3NWM0NGU0Yzc0NTljMDA1ZGQ2
NzgxYWRiNzYyYTU2YTdhYzM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtV1BF
LmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1XUEUuY21ha2UKQEAgLTEzMiw3ICsx
MzIsNiBAQCBzZXQoV1BFX0FQSV9JTlNUQUxMRURfSEVBREVSUwogICAgICR7V0VCS0lUX0RJUn0v
VUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0VVJJUmVxdWVzdC5oCiAgICAgJHtXRUJLSVRfRElSfS9V
SVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRVUklSZXNwb25zZS5oCiAgICAgJHtXRUJLSVRfRElSfS9V
SVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmgKLSAgICAke1dFQktJVF9E
SVJ9L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFVSSVV0aWxpdGllcy5oCiAgICAgJHtXRUJLSVRf
RElSfS9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRVc2VyQ29udGVudC5oCiAgICAgJHtXRUJLSVRf
RElSfS9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuaAogICAgICR7
V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3QuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzR1RLLnR4dCBiL1NvdXJj
ZS9XZWJLaXQvU291cmNlc0dUSy50eHQKaW5kZXggNTliMDgxNDBjYjgzMjIwOGIxZWE5M2YwZDU1
YzU0NjdjNjFhZWJmZC4uMjY1Mzg0YjY0MTg4NzUzNzg5NWQwN2YzYWQ1ODMyOTQ0YzAxZDI5MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzR1RLLnR4dAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXNHVEsudHh0CkBAIC0xNjcsNyArMTY3LDYgQEAgVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdFNlY3VyaXR5T3JpZ2luLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRTZXR0aW5ncy5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VUlD
bGllbnQuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVSSVNjaGVtZVJl
cXVlc3QuY3BwIEBuby11bmlmeQotVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVSSVV0aWxpdGll
cy5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VXNlckNvbnRlbnQuY3Bw
IEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVzZXJDb250ZW50TWFuYWdlci5j
cHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3QuY3BwIEBuby11bmlmeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2Vz
V1BFLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc1dQRS50eHQKaW5kZXggYjlhMDhiYzBiN2Ey
NTJmZDc3ZGZlNjFjM2Q4MTdlNGU2Nzk5YWM0My4uOGVlMmZlZjQyYTY2NDc4NTlmMzVmOGQzNDc5
M2FmOTRhMDI5MzkzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzV1BFLnR4dAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNXUEUudHh0CkBAIC0xNTIsNyArMTUyLDYgQEAgVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdFNlY3VyaXR5T3JpZ2luLmNwcCBAbm8tdW5pZnkKIFVJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRTZXR0aW5ncy5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0VUlDbGllbnQuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdFVSSVNjaGVtZVJlcXVlc3QuY3BwIEBuby11bmlmeQotVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdFVSSVV0aWxpdGllcy5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
VXNlckNvbnRlbnQuY3BwIEBuby11bmlmeQogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVzZXJD
b250ZW50TWFuYWdlci5jcHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3QuY3BwIEBuby11bmlmeQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VVJJVXRpbGl0aWVzLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVSSVV0aWxpdGllcy5jcHAKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ5NDBmZTg5YjFkNDAzZDE4MGVhYmYzNGM2YzI5OGFm
OGRhMzk2YWQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VVJJVXRpbGl0aWVzLmNwcAor
KysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTgg
SWdhbGlhIFMuTC4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgot
ICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAq
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBu
b3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBV
U0EuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYktpdFVSSVV0aWxp
dGllcy5oIgotCi0jaW5jbHVkZSA8d3RmL1VSTEhlbHBlcnMuaD4KLSNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLS8qKgotICog
U0VDVElPTjogV2ViS2l0VVJJVXRpbGl0aWVzCi0gKiBAU2hvcnRfZGVzY3JpcHRpb246IFV0aWxp
dHkgZnVuY3Rpb25zIHRvIG1hbmlwdWxhdGUgVVJJcwotICogQFRpdGxlOiBXZWJLaXRVUklVdGls
aXRpZXMKLSAqLwotCi0vKioKLSAqIHdlYmtpdF91cmlfZm9yX2Rpc3BsYXk6Ci0gKiBAdXJpOiB0
aGUgVVJJIHRvIGJlIGNvbnZlcnRlZAotICoKLSAqIFVzZSB0aGlzIGZ1bmN0aW9uIHRvIGZvcm1h
dCBhIFVSSSBmb3IgZGlzcGxheS4gVGhlIFVSSXMgdXNlZCBpbnRlcm5hbGx5IGJ5Ci0gKiBXZWJL
aXQgbWF5IGNvbnRhaW4gcGVyY2VudC1lbmNvZGVkIGNoYXJhY3RlcnMgb3IgUHVueWNvZGUsIHdo
aWNoIGFyZSBub3QKLSAqIGdlbmVyYWxseSBzdWl0YWJsZSB0byBkaXNwbGF5IHRvIHVzZXJzLiBU
aGlzIGZ1bmN0aW9uIHByb3ZpZGVzIHByb3RlY3Rpb24KLSAqIGFnYWluc3QgSUROIGhvbW9ncmFw
aCBhdHRhY2tzLCBzbyBpbiBzb21lIGNhc2VzIHRoZSBob3N0IHBhcnQgb2YgdGhlIHJldHVybmVk
Ci0gKiBVUkkgbWF5IGJlIGluIFB1bnljb2RlIGlmIHRoZSBzYWZldHkgY2hlY2sgZmFpbHMuCi0g
KgotICogUmV0dXJuczogKG51bGxhYmxlKSAodHJhbnNmZXIgZnVsbCk6IEB1cmkgc3VpdGFibGUg
Zm9yIGRpc3BsYXksIG9yICVOVUxMIGluCi0gKiAgICBjYXNlIG9mIGVycm9yLgotICoKLSAqIFNp
bmNlOiAyLjI0Ci0gKi8KLWdjaGFyKiB3ZWJraXRfdXJpX2Zvcl9kaXNwbGF5KGNvbnN0IGdjaGFy
KiB1cmkpCi17Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwodXJpLCBudWxscHRyKTsKLQotICAg
IFN0cmluZyByZXN1bHQgPSBXVEY6OlVSTEhlbHBlcnM6OnVzZXJWaXNpYmxlVVJMKHVyaSk7Ci0g
ICAgaWYgKCFyZXN1bHQpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgcmV0dXJuIGdf
c3RyZHVwKHJlc3VsdC51dGY4KCkuZGF0YSgpKTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVSSVV0aWxpdGllcy5oCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAzYTMwNzc2NjEzNzYzNDQxYjBkZjlkOGZiYTNhZGNiNTcwMzI2YjJlLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJVXRpbGl0aWVzLmgKKysrIC9kZXYvbnVsbApA
QCAtMSwzNyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IElnYWxpYSBTLkwuCi0g
KgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICog
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwot
ICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNp
ZiAhZGVmaW5lZChfX1dFQktJVDJfSF9JTlNJREVfXykgJiYgIWRlZmluZWQoV0VCS0lUMl9DT01Q
SUxBVElPTikKLSNlcnJvciAiT25seSA8d2Via2l0Mi93ZWJraXQyLmg+IGNhbiBiZSBpbmNsdWRl
ZCBkaXJlY3RseS4iCi0jZW5kaWYKLQotI2lmbmRlZiBXZWJLaXRVUklVdGlsaXRpZXNfaAotI2Rl
ZmluZSBXZWJLaXRVUklVdGlsaXRpZXNfaAotCi0jaW5jbHVkZSA8Z2xpYi5oPgotI2luY2x1ZGUg
PHdlYmtpdDIvV2ViS2l0RGVmaW5lcy5oPgotCi1HX0JFR0lOX0RFQ0xTCi0KLVdFQktJVF9BUEkg
Z2NoYXIgKgotd2Via2l0X3VyaV9mb3JfZGlzcGxheSAoY29uc3QgZ2NoYXIgKnVyaSk7Ci0KLUdf
RU5EX0RFQ0xTCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQKaW5kZXgg
NjQyMTg1OWJkMGQzOGJmYjM0NzYyMmIwYzc2NGE5ZTA3NGIyMjZkNS4uNzU2YWFhNGRlNzJkYTVi
YjczYzcwZmZhMGNlODQ2YWZlZTQ5MzNlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMu
dHh0CkBAIC0xNjQ1LDggKzE2NDUsMyBAQCBXRUJLSVRfUFJJTlRfQ1VTVE9NX1dJREdFVF9HRVRf
Q0xBU1MKIFdlYktpdFByaW50Q3VzdG9tV2lkZ2V0UHJpdmF0ZQogd2Via2l0X3ByaW50X2N1c3Rv
bV93aWRnZXRfZ2V0X3R5cGUKIDwvU0VDVElPTj4KLQotPFNFQ1RJT04+Ci08RklMRT5XZWJLaXRV
UklVdGlsaXRpZXM8L0ZJTEU+Ci13ZWJraXRfdXJpX2Zvcl9kaXNwbGF5Ci08L1NFQ1RJT04+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0
ay1kb2NzLnNnbWwgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0
Mmd0ay1kb2NzLnNnbWwKaW5kZXggZjE4YjNmZDhjM2FhYTI4YTE1YTkxMDk4MjhmOGI2NTFmZmY5
ZmMyYS4uOGQxMWZiZGI5ZmQyNGMxNmNhZmJhNTNjNTFhMjg4YzNmODJlZDAzYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5z
Z21sCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3Rr
LWRvY3Muc2dtbApAQCAtNzQsMTEgKzc0LDYgQEAKICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwv
V2ViS2l0Q29uc29sZU1lc3NhZ2UueG1sIi8+CiAgIDwvY2hhcHRlcj4KIAotICA8Y2hhcHRlcj4K
LSAgICA8dGl0bGU+VXRpbGl0aWVzPC90aXRsZT4KLSAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwv
V2ViS2l0VVJJVXRpbGl0aWVzLnhtbCIvPgotICA8L2NoYXB0ZXI+Ci0KICAgPGluZGV4IGlkPSJp
bmRleC1hbGwiPgogICAgIDx0aXRsZT5JbmRleDwvdGl0bGU+CiAgIDwvaW5kZXg+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oCmluZGV4IDVjNmU0Y2NlYzVhYmExYTI5
YmFlMTU1NjFhYzA2MTAyYTZmMDA3OWUuLmI5YzAwMDk3MGEwNGRjZjNhN2ZmMzAxNGVhMzllNTAy
YWY4NGYxYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvd2Vi
a2l0Mi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oCkBA
IC03Myw3ICs3Myw2IEBACiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRVUklSZXF1ZXN0Lmg+CiAj
aW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRVUklSZXNwb25zZS5oPgogI2luY2x1ZGUgPHdlYmtpdDIv
V2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5oPgotI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0VVJJVXRp
bGl0aWVzLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRVc2VyQ29udGVudC5oPgogI2luY2x1
ZGUgPHdlYmtpdDIvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmg+CiAjaW5jbHVkZSA8d2Via2l0
Mi9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5oPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRVUklVdGlsaXRpZXMuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0VVJJVXRpbGl0aWVzLmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGNiMDVmMDAwYWQ1MzBmNjFlZThiMzkyNzhkMDlmMDYzOWRlZTA2
ODguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRVUklVdGlsaXRpZXMuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDM3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggSWdhbGlhIFMu
TC4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBs
aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
Ci0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRl
IHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8K
LQotI2lmICFkZWZpbmVkKF9fV0VCS0lUX0hfSU5TSURFX18pICYmICFkZWZpbmVkKFdFQktJVDJf
Q09NUElMQVRJT04pCi0jZXJyb3IgIk9ubHkgPHdwZS93ZWJraXQuaD4gY2FuIGJlIGluY2x1ZGVk
IGRpcmVjdGx5LiIKLSNlbmRpZgotCi0jaWZuZGVmIFdlYktpdFVSSVV0aWxpdGllc19oCi0jZGVm
aW5lIFdlYktpdFVSSVV0aWxpdGllc19oCi0KLSNpbmNsdWRlIDxnbGliLmg+Ci0jaW5jbHVkZSA8
d3BlL1dlYktpdERlZmluZXMuaD4KLQotR19CRUdJTl9ERUNMUwotCi1XRUJLSVRfQVBJIGdjaGFy
ICoKLXdlYmtpdF91cmlfZm9yX2Rpc3BsYXkgKGNvbnN0IGdjaGFyICp1cmkpOwotCi1HX0VORF9E
RUNMUwotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93
cGUvZG9jcy93cGUtMC4xLXNlY3Rpb25zLnR4dCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS93cGUvZG9jcy93cGUtMC4xLXNlY3Rpb25zLnR4dAppbmRleCA2MzVkZTdhOWVlMTMwM2ZkYmJj
OWZmNTM2YmY0ZTg1MmQxYjA2YzFmLi42MjhkYjQyNTJhNGQyYmY0OGY0OTBkYTU0MDg3YWM0YzJj
OTViYzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mv
d3BlLTAuMS1zZWN0aW9ucy50eHQKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dw
ZS9kb2NzL3dwZS0wLjEtc2VjdGlvbnMudHh0CkBAIC0xMzA4LDggKzEzMDgsMyBAQCB3ZWJraXRf
YXBwbGljYXRpb25faW5mb19nZXRfdHlwZQogPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CiBXRUJLSVRf
VFlQRV9BUFBMSUNBVElPTl9JTkZPCiA8L1NFQ1RJT04+Ci0KLTxTRUNUSU9OPgotPEZJTEU+V2Vi
S2l0VVJJVXRpbGl0aWVzPC9GSUxFPgotd2Via2l0X3VyaV9mb3JfZGlzcGxheQotPC9TRUNUSU9O
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9kb2NzL3dwZS1k
b2NzLnNnbWwgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLWRvY3Mu
c2dtbAppbmRleCBjOGY5ZTNiMzZlYTEwMGQzYmM1ZDg3NjY0ZjE0OTFhZTAyMmRiZjUyLi5kMTUy
NTY2ZjYxYTI0YjQ4YWIyZjQ3ZTE3ZTM5NDI1ODE1YWI3MjI2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLWRvY3Muc2dtbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLWRvY3Muc2dtbApAQCAtNTYsMTEgKzU2
LDYgQEAKICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0QXBwbGljYXRpb25JbmZvLnht
bCIvPgogICA8L2NoYXB0ZXI+CiAKLSAgPGNoYXB0ZXI+Ci0gICAgPHRpdGxlPlV0aWxpdGllczwv
dGl0bGU+Ci0gICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL1dlYktpdFVSSVV0aWxpdGllcy54bWwi
Lz4KLSAgPC9jaGFwdGVyPgotCiAgIDxpbmRleCBpZD0iaW5kZXgtYWxsIj4KICAgICA8dGl0bGU+
SW5kZXg8L3RpdGxlPgogICA8L2luZGV4PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL3dwZS93ZWJraXQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUv
d2Via2l0LmgKaW5kZXggOTk1NWE0MGY4ZmU1NmRkYWFhY2MwN2Q5MjkyNTcyMDYzNTI3NGM5OC4u
MGYyNzE5MWY2NjlkODNiODVhOThiNWYyZjExM2U5Mjc5ZjRmZjk2OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS93ZWJraXQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvd3BlL3dlYmtpdC5oCkBAIC02Nyw3ICs2Nyw2IEBACiAjaW5jbHVkZSA8
d3BlL1dlYktpdFVSSVJlcXVlc3QuaD4KICNpbmNsdWRlIDx3cGUvV2ViS2l0VVJJUmVzcG9uc2Uu
aD4KICNpbmNsdWRlIDx3cGUvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5oPgotI2luY2x1ZGUgPHdw
ZS9XZWJLaXRVUklVdGlsaXRpZXMuaD4KICNpbmNsdWRlIDx3cGUvV2ViS2l0VXNlckNvbnRlbnQu
aD4KICNpbmNsdWRlIDx3cGUvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmg+CiAjaW5jbHVkZSA8
d3BlL1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0Lmg+CmRpZmYgLS1naXQgYS9Ub29s
cy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZTQ1NmYyN2MyYTI5NTdhM2ZhZTlm
Yjc0NDI2NjM0YWUxMDZhNzNiMC4uZWUxNDY4NDY5N2QyMzkzM2E5MzkwNDVmMzY5NjM3NGVlNmI0
NjE3MiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDIxIEBACisyMDE4LTEyLTE3ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVA
d2Via2l0Lm9yZz4KKworICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjM5MjY1IGFu
ZCByMjM5Mjc0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTkyNzY1CisKKyAgICAgICAgdW5vcm1fbm9ybWFsaXplIGlzIGRlcHJlY2F0ZWQsIGFuZCBi
cm9rZSBhbiBpbnRlcm5hbCBidWlsZAorICAgICAgICAoUmVxdWVzdGVkIGJ5IFRydWl0dCBvbiAj
d2Via2l0KS4KKworICAgICAgICBSZXZlcnRlZCBjaGFuZ2VzZXRzOgorCisgICAgICAgICJbR1RL
XVtXUEVdIE5lZWQgYSBmdW5jdGlvbiB0byBjb252ZXJ0IGludGVybmFsIFVSSSB0byBkaXNwbGF5
CisgICAgICAgICgicHJldHR5IikgVVJJIgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTc0ODE2CisgICAgICAgIGh0dHBzOi8vdHJhYy53ZWJraXQub3Jn
L2NoYW5nZXNldC8yMzkyNjUKKworICAgICAgICAiRml4IHRoZSBBcHBsZSBJbnRlcm5hbCBNYWMg
YnVpbGQgd2l0aCBhIG5ld2VyIFNESyIKKyAgICAgICAgaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcv
Y2hhbmdlc2V0LzIzOTI3NAorCiAyMDE4LTEyLTE3ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFw
cGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBSZW1vdmUgLVtXZWJFdmVudCBpbml0V2l0aEtleUV2
ZW50VHlwZTouLi46Y2hhcmFjdGVyU2V0Ol0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvQ01ha2VMaXN0cy50eHQgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0Cmlu
ZGV4IDFhZjFkNDg1NTNiOGNjMTY0NTE2YjQ5MzdlNDZjYTc1MTlhZDU0YTEuLmIyNDkwMDg5OGIz
ZmM1YWY4OWM0OTAzMzgwYzNmZDdjMWRjMGQ3MDUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvQ01ha2VMaXN0cy50eHQKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3Rz
LnR4dApAQCAtMTc3LDcgKzE3Nyw2IEBAIHNldChUZXN0V1RGX1NPVVJDRVMKICAgICAke1RFU1RX
RUJLSVRBUElfRElSfS9UZXN0cy9XVEYvVGhyZWFkaW5nLmNwcAogICAgICR7VEVTVFdFQktJVEFQ
SV9ESVJ9L1Rlc3RzL1dURi9UaW1lLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3Rz
L1dURi9VUkwuY3BwCi0gICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL1VSTEhlbHBl
cnMuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL1VSTFBhcnNlci5jcHAK
ICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvVW5pcXVlQXJyYXkuY3BwCiAgICAg
JHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL1VuaXF1ZVJlZi5jcHAKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggZWE2MTIwN2RjNzZiOGUxNDZiNTkyNThlMTgxNDA4Y2NmNGFjOGExYi4u
N2U4ZWQzYmU1MTQ4NDMwOGUwZDhhMWE5Yjc4YmEzNThlZmY1NTRhNSAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTMxNSw3ICszMTUsNiBAQAogCQk1Q0UzNTREOTFFNzBEQTVDMDBCRUZFM0Ig
LyogV0tDb250ZW50RXh0ZW5zaW9uU3RvcmUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0UzNTREODFFNzBEOUMzMDBCRUZFM0IgLyogV0tDb250ZW50
RXh0ZW5zaW9uU3RvcmUubW0gKi87IH07CiAJCTVDRUFCNUUxMUZBOTM5RjQwMEE3N0ZBQSAvKiBf
V0tJbnB1dERlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNUNFQUI1REYxRkE5MzdDQjAwQTc3RkFBIC8qIF9XS0lucHV0RGVsZWdhdGUubW0g
Ki87IH07CiAJCTVFNEIxRDJFMUQ0MDRDNjEwMDA1MzYyMSAvKiBXS1Njcm9sbFZpZXdEZWxlZ2F0
ZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVFNEIx
RDJDMUQ0MDRDNjEwMDA1MzYyMSAvKiBXS1Njcm9sbFZpZXdEZWxlZ2F0ZS5tbSAqLzsgfTsKLQkJ
NUZBRDNBRTQyMUI5N0VFRTAwQkVFMTc4IC8qIFVSTEhlbHBlcnMuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUZBRDNBRTMyMUI5N0M1MDAwQkVFMTc4
IC8qIFVSTEhlbHBlcnMuY3BwICovOyB9OwogCQk2MzFFRkZGNjFFN0I1RThEMDBEMkVCQjggLyog
R2VvbG9jYXRpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA2MzFFRkZGNTFFN0I1RThEMDBEMkVCQjggLyogR2VvbG9jYXRpb24ubW0gKi87IH07CiAJ
CTYzNDkxMEUwMUU5RDNGRjMwMDg4MDMwOSAvKiBDb3JlTG9jYXRpb24uZnJhbWV3b3JrIGluIEZy
YW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjM0OTEwREYxRTlE
M0ZGMzAwODgwMzA5IC8qIENvcmVMb2NhdGlvbi5mcmFtZXdvcmsgKi87IH07CiAJCTYzNTRGNEQx
MUY3QzNBQjUwMEQ4OURGMyAvKiBBcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYzNTRGNEQwMUY3QzNBQjUw
MEQ4OURGMyAvKiBBcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyLmNwcCAqLzsgfTsKQEAgLTE2NjMs
NyArMTY2Miw2IEBACiAJCTVDRTM1NEQ4MUU3MEQ5QzMwMEJFRkUzQiAvKiBXS0NvbnRlbnRFeHRl
bnNpb25TdG9yZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdL
Q29udGVudEV4dGVuc2lvblN0b3JlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
Q0VBQjVERjFGQTkzN0NCMDBBNzdGQUEgLyogX1dLSW5wdXREZWxlZ2F0ZS5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IF9XS0lucHV0RGVsZWdhdGUubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVFNEIxRDJDMUQ0MDRDNjEwMDA1MzYyMSAvKiBXS1Nj
cm9sbFZpZXdEZWxlZ2F0ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFt
ZSA9IFdLU2Nyb2xsVmlld0RlbGVnYXRlLm1tOyBwYXRoID0gLi4vaW9zL1dLU2Nyb2xsVmlld0Rl
bGVnYXRlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1RkFEM0FFMzIxQjk3QzUw
MDBCRUUxNzggLyogVVJMSGVscGVycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBVUkxIZWxwZXJzLmNwcDsgcGF0aCA9IFRlc3RzL1dURi9VUkxIZWxwZXJzLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjMxRUZGRjUxRTdCNUU4RDAwRDJFQkI4IC8q
IEdlb2xvY2F0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
R2VvbG9jYXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTYzNDkxMERGMUU5
RDNGRjMwMDg4MDMwOSAvKiBDb3JlTG9jYXRpb24uZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUg
PSBDb3JlTG9jYXRpb24uZnJhbWV3b3JrOyBwYXRoID0gU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9Db3JlTG9jYXRpb24uZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gU0RLUk9PVDsgfTsKIAkJNjM1
NEY0RDAxRjdDM0FCNTAwRDg5REYzIC8qIEFwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQXBwbGljYXRpb25NYW5pZmVzdFBhcnNlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMjg4LDcgKzIyODYsNiBAQAogCQkwOEZCNzc5NEZFODQx
NTVEQzAyQUFDMDcgLyogVGVzdFdlYktpdEFQSSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwog
CQkJY2hpbGRyZW4gPSAoCi0JCQkJNUZBRDNBRTMyMUI5N0M1MDAwQkVFMTc4IC8qIFVSTEhlbHBl
cnMuY3BwICovLAogCQkJCTA4RkI3Nzk1RkU4NDE1NURDMDJBQUMwNyAvKiBTb3VyY2UgKi8sCiAJ
CQkJQkNCOUVCNjYxMTIzNjZEODAwQTEzN0UwIC8qIFRlc3RzICovLAogCQkJCUJDOTA5NTdEMTI1
NTRDRUEwMDA4Mzc1NiAvKiBDb25maWd1cmF0aW9ucyAqLywKQEAgLTM4MTcsNyArMzgxNCw2IEBA
CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCiAJCQkJN0M4
M0RGQTIxRDBBNUFFNDAwRkVCQ0YzIC8qIG1haW5JT1MubW0gaW4gU291cmNlcyAqLywKLQkJCQk1
RkFEM0FFNDIxQjk3RUVFMDBCRUUxNzggLyogVVJMSGVscGVycy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk3QzgzREZBRDFEMEE1QUU0MDBGRUJDRjMgLyogbWFpbk1hYy5tbSBpbiBTb3VyY2VzICov
LAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVVJMSGVscGVycy5jcHAgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9VUkxIZWxwZXJzLmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggYmY0ZGQyYzhmYWRhZjY5ZGNlMjA2MzY4ZGU5NTg4ZDYwM2UwZGVl
Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9VUkxIZWxwZXJzLmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDExNiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxOCBJZ2FsaWEgUy5MLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSA8d3RmL1VSTEhlbHBlcnMu
aD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKLQotdXNpbmcgbmFtZXNwYWNl
IFdURjsKLXVzaW5nIG5hbWVzcGFjZSBXVEY6OlVSTEhlbHBlcnM7Ci0KLVRFU1QoV1RGLCBVc2Vy
VmlzaWJsZVVSTFVuYWZmZWN0ZWQpCi17Ci0gICAgY29uc3QgY2hhciogY29uc3QgaXRlbXNbXSA9
IHsKLSAgICAgICAgImh0dHA6Ly9zaXRlLmNvbSIsCi0gICAgICAgICJodHRwOi8vJTc3ZWJzaXRl
LmNvbSIsCi0gICAgICAgICJodHRwOi8veG4tLWNmYTQ1Zy8iLCAvLyBVKzAxMzEsIFUrMDMwNwot
ICAgICAgICAiaHR0cDovL3huLS10bWEwM2IvIiwgLy8gVSswMjM3LCBVKzAzMDcKLSAgICAgICAg
Imh0dHA6Ly94bi0tdG1hMDNieGdhLyIsIC8vIFUrMDIzNywgVSswMzRGLCBVKzAzNEYsIFUrMDMw
NwotICAgICAgICAiaHR0cDovL3huLS10bWEwM2JsMDFlLyIsIC8vIFUrMDIzNywgVSsyMDBCLCBV
KzAzMDcKLSAgICAgICAgImh0dHA6Ly94bi0tYS1lZ2IvIiwgLy8gYSwgVSswMzRGCi0gICAgICAg
ICJodHRwOi8veG4tLWEtcWduLyIsIC8vIGEsIFUrMjAwQgotICAgICAgICAiaHR0cDovL3huLS1h
LW1nbi8iLCAvLyBhLCBVKzIwMDkKLSAgICAgICAgImh0dHA6Ly94bi0tdTdmLyIsIC8vIFUrMUQw
NAotICAgICAgICAiaHR0cDovL3huLS01N2YvIiwgLy8gVSsxRDBGCi0gICAgICAgICJodHRwOi8v
eG4tLWkzOGEvIiwgLy8gVStBNzMxCi0gICAgICAgICJodHRwOi8veG4tLWo4Zi8iLCAvLyBVKzFE
MUMKLSAgICAgICAgImh0dHA6Ly94bi0tbjhmLyIsIC8vIFUrMUQyMAotICAgICAgICAiaHR0cDov
L3huLS1vOGYvIiwgLy8gVSsxRDIxCi0gICAgICAgICJodHRwOi8veG4tLXA4Zi8iLCAvLyBVKzFE
MjIKLSAgICAgICAgImh0dHA6Ly94bi0tMG5hLyIsIC8vIFUrMDI2MQotICAgICAgICAiaHR0cDov
L3huLS1jbi1kZWQvIiwgLy8gVSswNTRECi0gICAgICAgICJodHRwOi8veG4tLWV3cy1uZmUub3Jn
LyIsIC8vIFUrMDU0RAotICAgICAgICAiaHR0cDovL3huLS15b3R1YmUtcWtoLyIsIC8vIFUrMDU3
OAotICAgICAgICAiaHR0cDovL3huLS1jbGEtN2ZlLmVkdS8iLCAvLyBVKzA1NzgKLSAgICAgICAg
Imh0dHA6Ly94bi0tcnNhOTRsLyIsIC8vIFUrMDVENSBVKzAzMDcKLSAgICAgICAgImh0dHA6Ly94
bi0taGRiOWMvIiwgLy8gVSswNUQ1IFUrMDVCOQotICAgICAgICAiaHR0cDovL3huLS1pZGI3Yy8i
LCAvLyBVKzA1RDUgVSswNUJBCi0gICAgICAgICJodHRwOi8veG4tLXBkYjNiLyIsIC8vIFUrMDVE
NSBVKzA1QzEKLSAgICAgICAgImh0dHA6Ly94bi0tcWRiMWIvIiwgLy8gVSswNUQ1IFUrMDVDMgot
ICAgICAgICAiaHR0cDovL3huLS1zZGI3YS8iLCAvLyBVKzA1RDUgVSswNUM0Ci0gICAgICAgICJo
dHRwOi8veG4tLTItemljLyIsIC8vIFUrMDAzMiBVKzA1RTEKLQotICAgICAgICAvLyBWYWxpZCBt
aXh0dXJlcyBvZiBBcm1lbmlhbiBhbmQgb3RoZXIgc2NyaXB0cwotICAgICAgICAiaHR0cHM6Ly9l
bi53aWtpcGVkaWEub3JnL3dpa2kvLlx1MDU3MFx1MDU2MVx1MDU3NSIsCi0gICAgICAgICJodHRw
czovL1x1MDU3M1x1MDU3NFx1MDU3OC5cdTA1NzBcdTA1NjFcdTA1NzUiLAotICAgICAgICAiaHR0
cHM6Ly9cdTA1NzMtMS1cdTA1NzRcdTA1NzguXHUwNTcwXHUwNTYxXHUwNTc1IiwKLSAgICAgICAg
Imh0dHBzOi8vMlx1MDU3M19cdTA1NzRcdTA1NzguXHUwNTcwXHUwNTYxXHUwNTc1IiwKLSAgICAg
ICAgImh0dHBzOi8vXHUwNTczX1x1MDU3NFx1MDU3ODMuXHUwNTcwXHUwNTYxXHUwNTc1IiwKLSAg
ICAgICAgImh0dHBzOi8vZ290XHUwNTUxXHUwNTM1XHUwNTQzLmNvbSIsCi0gICAgICAgICJodHRw
czovL1x1MDU1MVx1MDUzNVx1MDU0M2ZhbnMubmV0IiwKLSAgICAgICAgImh0dHBzOi8vXHUwNTUx
XHUwNTM1b3JcdTA1NzVcdTA1NDMuYml6IiwKLSAgICAgICAgImh0dHBzOi8vXHUwNTUxXHUwNTM1
YW5kISReJiooKS1+Kz17fW9yPD4sLj9cdTA1NzVcdTA1NDMuYml6IiwKLSAgICB9OwotCi0gICAg
Zm9yIChhdXRvJiBpdGVtIDogaXRlbXMpIHsKLSAgICAgICAgQ1N0cmluZyBpbnB1dChpdGVtKTsK
LSAgICAgICAgU3RyaW5nIHJlc3VsdCA9IHVzZXJWaXNpYmxlVVJMKGlucHV0KTsKLSAgICAgICAg
RVhQRUNUX0VRKHJlc3VsdC51dGY4KCksIGl0ZW0pOwotICAgIH0KLX0KLQotVEVTVChXVEYsIFVz
ZXJWaXNpYmxlVVJMQWZmZWN0ZWQpCi17Ci0gICAgc3RydWN0IHsKLSAgICAgICAgY29uc3QgY2hh
ciogaW5wdXQ7Ci0gICAgICAgIGNvbnN0IGNoYXIqIG91dHB1dDsKLSAgICB9IGNvbnN0IGl0ZW1z
W10gPSB7Ci0gICAgICAgIC8vIERpdmlzaW9uIHNpZ246IGFuIGFsbG93ZWQgbm9uLUFTQ0lJIGNo
YXJhY3Rlciwgc2luY2UgaXQncyBub3QgYQotICAgICAgICAvLyBsb29rYWxpa2UgY2hhcmFjdGVy
LgotICAgICAgICB7ICJodHRwOi8vc2l0ZS5jb21ceEMzXHhCN290aGVyc2l0ZS5vcmciLCAiaHR0
cDovL3NpdGUuY29tXHhDM1x4QjdvdGhlcnNpdGUub3JnIiB9LAotICAgICAgICB7ICJodHRwOi8v
c2l0ZS5jb20lQzMlQjdvdGhlcnNpdGUub3JnIiwgImh0dHA6Ly9zaXRlLmNvbVx4QzNceEI3b3Ro
ZXJzaXRlLm9yZyIgfSwKLQotICAgICAgICAvLyBGdWxsIHdpZHRoIHNvbGlkdXM6IGRpc2FsbG93
ZWQgYmVjYXVzZSBpdCBsb29rcyBsaWtlIHRoZSBzb2xpZHVzLAotICAgICAgICAvLyB3aGljaCBp
cyB0aGUgY2hhcmFjdGVyIHRoYXQgaW5kaWNhdGVzIHRoZSBlbmQgb2YgdGhlIGhvc3QgbmFtZS4K
LSAgICAgICAgeyAiaHR0cDovL3NpdGUuY29tXHhFRlx4QkNceDhGb3RoZXJzaXRlLm9yZyIsICJo
dHRwOi8vc2l0ZS5jb20lRUYlQkMlOEZvdGhlcnNpdGUub3JnIiB9LAotICAgICAgICB7ICJodHRw
Oi8vc2l0ZS5jb20lRUYlQkMlOEZvdGhlcnNpdGUub3JnIiwgImh0dHA6Ly9zaXRlLmNvbSVFRiVC
QyU4Rm90aGVyc2l0ZS5vcmciIH0sCi0KLSAgICAgICAgLy8gSWRlb2dyYXBoaWMgc3BhY2U6IGRp
c2FsbG93ZWQgYmVjYXVzZSBpdCBsb29rcyBsaWtlIHRoZSBBU0NJSSBzcGFjZS4KLSAgICAgICAg
eyAiaHR0cDovL3NpdGUuY29tXHhFM1x4ODBceDgwb3RoZXJzaXRlLm9yZyIsICJodHRwOi8vc2l0
ZS5jb20lRTMlODAlODBvdGhlcnNpdGUub3JnIiB9LAotICAgICAgICB7ICJodHRwOi8vc2l0ZS5j
b20lRTMlODAlODBvdGhlcnNpdGUub3JnIiwgImh0dHA6Ly9zaXRlLmNvbSVFMyU4MCU4MG90aGVy
c2l0ZS5vcmciIH0sCi0gICAgfTsKLQotICAgIGZvciAoYXV0byYgaXRlbSA6IGl0ZW1zKSB7Ci0g
ICAgICAgIENTdHJpbmcgaW5wdXQoaXRlbS5pbnB1dCk7Ci0gICAgICAgIFN0cmluZyByZXN1bHQg
PSB1c2VyVmlzaWJsZVVSTChpbnB1dCk7Ci0gICAgICAgIEVYUEVDVF9FUShyZXN1bHQudXRmOCgp
LCBpdGVtLm91dHB1dCk7Ci0gICAgfQotfQotCi19IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJ
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdl
YktpdFVSSVV0aWxpdGllcy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdM
aWIvVGVzdFdlYktpdFVSSVV0aWxpdGllcy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAyNTBlZGExNDZkZWY2OWVlNjI4ZDg4OWQ1YThjMzJlYjM5NmRlMzIuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRVUklVdGlsaXRpZXMuY3BwCisrKyAvZGV2L251bGwK
QEAgLTEsNTEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggSWdhbGlhIFMu
TC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaW5jbHVkZSAiVGVzdE1haW4u
aCIKLQotc3RhdGljIHZvaWQgdGVzdFVSSUZvckRpc3BsYXlVbmFmZmVjdGVkKFRlc3QqLCBnY29u
c3Rwb2ludGVyKQotewotICAgIEdVbmlxdWVQdHI8Y2hhcj4gZGlzcGxheVVSSSh3ZWJraXRfdXJp
X2Zvcl9kaXNwbGF5KCJodHRwOi8vc2l0ZS5jb21ceEMzXHhCN290aGVyc2l0ZS5vcmciKSk7Ci0g
ICAgZ19hc3NlcnRfY21wc3RyKGRpc3BsYXlVUkkuZ2V0KCksID09LCAiaHR0cDovL3NpdGUuY29t
XHhDM1x4QjdvdGhlcnNpdGUub3JnIik7Ci19Ci0KLXN0YXRpYyB2b2lkIHRlc3RVUklGb3JEaXNw
bGF5QWZmZWN0ZWQoVGVzdCosIGdjb25zdHBvaW50ZXIpCi17Ci0gICAgR1VuaXF1ZVB0cjxjaGFy
PiBkaXNwbGF5VVJJKHdlYmtpdF91cmlfZm9yX2Rpc3BsYXkoImh0dHA6Ly9zaXRlLmNvbSVDMyVC
N290aGVyc2l0ZS5vcmciKSk7Ci0gICAgZ19hc3NlcnRfY21wc3RyKGRpc3BsYXlVUkkuZ2V0KCks
ID09LCAiaHR0cDovL3NpdGUuY29tXHhDM1x4QjdvdGhlcnNpdGUub3JnIik7Ci19Ci0KLXZvaWQg
YmVmb3JlQWxsKCkKLXsKLSAgICBUZXN0OjphZGQoIldlYktpdFVSSVV0aWxpdGllcyIsICJ1cmkt
Zm9yLWRpc3BsYXktdW5hZmZlY3RlZCIsIHRlc3RVUklGb3JEaXNwbGF5VW5hZmZlY3RlZCk7Ci0g
ICAgVGVzdDo6YWRkKCJXZWJLaXRVUklVdGlsaXRpZXMiLCAidXJpLWZvci1kaXNwbGF5LWFmZmVj
dGVkIiwgdGVzdFVSSUZvckRpc3BsYXlBZmZlY3RlZCk7Ci19Ci0KLXZvaWQgYWZ0ZXJBbGwoKQot
ewotfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL0NNYWtlTGlzdHMudHh0
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL0NNYWtlTGlzdHMudHh0CmluZGV4IDVmZWU2YTUy
NWU1ZWZmNWY5OTZiMTZlYWVmNDE2Y2JkMzViODlkYzYuLmY0YzFlNjk2NjNiYTI3ODJjZGVhZGE3
ODE3YjMwYWQyNmJhOTk3N2UgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9D
TWFrZUxpc3RzLnR4dAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvQ01ha2VMaXN0cy50
eHQKQEAgLTEzNCw3ICsxMzQsNiBAQCBBRERfV0syX1RFU1QoVGVzdFdlYkV4dGVuc2lvbnMgJHtU
T09MU19ESVJ9L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0VwogQUREX1dLMl9U
RVNUKFRlc3RXZWJLaXRQb2xpY3lDbGllbnQgJHtUT09MU19ESVJ9L1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0UG9saWN5Q2xpZW50LmNwcCkKIEFERF9XSzJfVEVTVChU
ZXN0V2ViS2l0U2VjdXJpdHlPcmlnaW4gJHtUT09MU19ESVJ9L1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0R0xpYi9UZXN0V2ViS2l0U2VjdXJpdHlPcmlnaW4uY3BwKQogQUREX1dLMl9URVNUKFRl
c3RXZWJLaXRTZXR0aW5ncyAke1RPT0xTX0RJUn0vVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRH
TGliL1Rlc3RXZWJLaXRTZXR0aW5ncy5jcHApCi1BRERfV0syX1RFU1QoVGVzdFdlYktpdFVSSVV0
aWxpdGllcyAke1RPT0xTX0RJUn0vVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RX
ZWJLaXRVUklVdGlsaXRpZXMuY3BwKQogQUREX1dLMl9URVNUKFRlc3RXZWJLaXRXZWJDb250ZXh0
ICR7VE9PTFNfRElSfS9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFdl
YkNvbnRleHQuY3BwKQogQUREX1dLMl9URVNUKFRlc3RXZWJLaXRXZWJWaWV3ICR7VE9PTFNfRElS
fS9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFdlYlZpZXcuY3BwKQog
QUREX1dLMl9URVNUKFRlc3RXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIgJHtUT09MU19ESVJ9L1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0VXNlckNvbnRlbnRNYW5hZ2Vy
LmNwcCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwppbmRleCA3NTRhYjM0ZGNmMmE0ZDMxYzc5OTZlYjYzNDRlZGVhOGU1ZGIyMDQ4Li4z
MTlhNWRhYTQyZGFmYzAyY2RiNzUzY2JmMTNkNDVmNTE4NTk0ZGI5IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjEgQEAKKzIwMTgtMTItMTcgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3Jn
PgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMzkyNjUgYW5kIHIyMzkyNzQu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTI3NjUK
KworICAgICAgICB1bm9ybV9ub3JtYWxpemUgaXMgZGVwcmVjYXRlZCwgYW5kIGJyb2tlIGFuIGlu
dGVybmFsIGJ1aWxkCisgICAgICAgIChSZXF1ZXN0ZWQgYnkgVHJ1aXR0IG9uICN3ZWJraXQpLgor
CisgICAgICAgIFJldmVydGVkIGNoYW5nZXNldHM6CisKKyAgICAgICAgIltHVEtdW1dQRV0gTmVl
ZCBhIGZ1bmN0aW9uIHRvIGNvbnZlcnQgaW50ZXJuYWwgVVJJIHRvIGRpc3BsYXkKKyAgICAgICAg
KCJwcmV0dHkiKSBVUkkiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNzQ4MTYKKyAgICAgICAgaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0
LzIzOTI2NQorCisgICAgICAgICJGaXggdGhlIEFwcGxlIEludGVybmFsIE1hYyBidWlsZCB3aXRo
IGEgbmV3ZXIgU0RLIgorICAgICAgICBodHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQv
MjM5Mjc0CisKIDIwMTgtMTItMTcgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5j
b20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjIzMzI2OCk6IEVsZW1lbnRzIGFuaW1hdGVkIGlu
IGZyb20gb2Zmc2NyZWVuIHNvbWV0aW1lcyBkb24ndCBkaXNwbGF5CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwpp
bmRleCA3ZGI3NzdmNzIwNmE4YTEyNTk4ZTMzOTA0NDM2ZTk0YzZmYzk2N2VhLi5kNzViMGU5Nzkx
M2M2OWM4NDFjZjk1MDhmMjViZTEyYWY1ZjU2ZmZkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9U
ZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTY4
LDYgKzY4LDcgQEAgZmFzdC9mb3Jtcy9zZWFyY2gvc2VhcmNoLXBhZGRpbmctY2FuY2VsLXJlc3Vs
dHMtYnV0dG9ucy5odG1sIFsgU2tpcCBdCiBmYXN0L2Zvcm1zL3NlYXJjaC9zZWFyY2gtcmVzdWx0
cy1oaWRkZW4tY3Jhc2guaHRtbCBbIFNraXAgXQogCiAjIFRoZXNlIHRlc3RzIGRvbid0IGhhdmUg
dG8gYmUgcGxhdGZvcm0tc3BlY2lmaWMsIGJ1dCB0aGV5IGFyZSBvbmx5IGltcGxlbWVudGVkIG9u
IE1hYyBub3cuCitmYXN0L3VybC91c2VyLXZpc2libGUgWyBTa2lwIF0KIGZhc3QvaW1hZ2VzL2Vw
cy1hcy1pbWFnZS5odG1sIFsgU2tpcCBdCiAKICMgT25seSBNYWMgc3VwcG9ydHMgRGFzaGJvYXJk
IHdpZGdldHMuCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>