<?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>143798</bug_id>
          
          <creation_ts>2015-04-15 14:54:32 -0700</creation_ts>
          <short_desc>Remove obsolete VMInspector debugging tool</short_desc>
          <delta_ts>2015-04-15 17:12:41 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1085697</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-04-15 14:54:32 -0700</bug_when>
    <thetext>I added the VMInspector tool 3 years ago to aid in VM hacking work.  Some of it has bit rotted, and the VM also now has better ways achieve its functionality.  Hence this code is now obsolete and should be removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1085701</commentid>
    <comment_count>1</comment_count>
      <attachid>250866</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-04-15 15:02:23 -0700</bug_when>
    <thetext>Created attachment 250866
the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1085710</commentid>
    <comment_count>2</comment_count>
      <attachid>250869</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-04-15 15:15:17 -0700</bug_when>
    <thetext>Created attachment 250869
patch 2: more deletion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1085716</commentid>
    <comment_count>3</comment_count>
      <attachid>250871</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-04-15 15:19:06 -0700</bug_when>
    <thetext>Created attachment 250871
patch 3: removed an unneeded newline change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1085767</commentid>
    <comment_count>4</comment_count>
      <attachid>250871</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-04-15 17:07:47 -0700</bug_when>
    <thetext>Comment on attachment 250871
patch 3: removed an unneeded newline change.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1085770</commentid>
    <comment_count>5</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-04-15 17:12:41 -0700</bug_when>
    <thetext>Thanks for the review.  Landed in r182871: &lt;http://trac.webkit.org/r182871&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>250866</attachid>
            <date>2015-04-15 15:02:23 -0700</date>
            <delta_ts>2015-04-15 15:15:17 -0700</delta_ts>
            <desc>the patch.</desc>
            <filename>bug-143798.patch</filename>
            <type>text/plain</type>
            <size>30536</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTgyODYzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBA
CisyMDE1LTA0LTE1ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZW1vdmUgb2Jzb2xldGUgVk1JbnNwZWN0b3IgZGVidWdnaW5nIHRvb2wuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDM3OTgKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJIGFkZGVkIHRoZSBWTUluc3BlY3Rv
ciB0b29sIDMgeWVhcnMgYWdvIHRvIGFpZCBpbiBWTSBoYWNraW5nIHdvcmsuICBTb21lIG9mIGl0
CisgICAgICAgIGhhcyBiaXQgcm90dGVkLCBhbmQgbm93IHRoZSBWTSBhbHNvIGhhcyBiZXR0ZXIg
d2F5cyB0byBhY2hpZXZlIGl0cyBmdW5jdGlvbmFsaXR5LgorICAgICAgICBIZW5jZSB0aGlzIGNv
ZGUgaXMgbm93IG9ic29sZXRlIGFuZCBzaG91bGQgYmUgcmVtb3ZlZC4KKworICAgICAgICAqIENN
YWtlTGlzdHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlw
dENvcmUudmN4cHJvajoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2ouZmlsdGVyczoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGludGVycHJldGVyL1ZNSW5zcGVjdG9yLmNw
cDogUmVtb3ZlZC4KKyAgICAgICAgKiBpbnRlcnByZXRlci9WTUluc3BlY3Rvci5oOiBSZW1vdmVk
LgorCiAyMDE1LTA0LTE1ICBKb3JkYW4gSGFyYmFuZCAgPGxqaGFyYkBnbWFpbC5jb20+CiAKICAg
ICAgICAgTnVtYmVyLnBhcnNlSW50IGluIG5pZ2h0bHkgcjE4MjY3MyBoYXMgd3JvbmcgbGVuZ3Ro
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxODI4NjEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTMyMiw3ICszMjIsNiBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGludGVy
cHJldGVyL0pTU3RhY2suY3BwCiAgICAgaW50ZXJwcmV0ZXIvUHJvdG9DYWxsRnJhbWUuY3BwCiAg
ICAgaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcAotICAgIGludGVycHJldGVyL1ZNSW5zcGVj
dG9yLmNwcAogCiAgICAgaml0L0FjY2Vzc29yQ2FsbEpJVFN0dWJSb3V0aW5lLmNwcAogICAgIGpp
dC9Bc3NlbWJseUhlbHBlcnMuY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2oJKHJldmlzaW9uIDE4Mjg2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oJKHdvcmtpbmcgY29weSkK
QEAgLTU5NSw3ICs1OTUsNiBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW50ZXJwcmV0
ZXJcSlNTdGFjay5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnRlcnByZXRl
clxQcm90b0NhbGxGcmFtZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnRl
cnByZXRlclxTdGFja1Zpc2l0b3IuY3BwIiAvPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
aW50ZXJwcmV0ZXJcVk1JbnNwZWN0b3IuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5caml0XEFjY2Vzc29yQ2FsbEpJVFN0dWJSb3V0aW5lLmNwcCIgLz4KICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXGppdFxBcml0eUNoZWNrRmFpbFJldHVyblRodW5rcy5jcHAiIC8+CiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxqaXRcQXNzZW1ibHlIZWxwZXJzLmNwcCIgLz4KQEAgLTEz
NDksNyArMTM0OCw2IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnRlcnByZXRlclxQ
cm90b0NhbGxGcmFtZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW50ZXJwcmV0
ZXJcUmVnaXN0ZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGludGVycHJldGVy
XFN0YWNrVmlzaXRvci5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW50ZXJwcmV0
ZXJcVk1JbnNwZWN0b3IuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGppdFxBY2Nl
c3NvckNhbGxKSVRTdHViUm91dGluZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
aml0XEFyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxqaXRcQXNzZW1ibHlIZWxwZXJzLmgiIC8+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRl
cnMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
eHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCShyZXZpc2lvbiAxODI4NjEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qLmZpbHRlcnMJKHdvcmtpbmcgY29weSkKQEAgLTM2Myw5ICszNjMsNiBAQAog
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW50ZXJwcmV0ZXJcU3RhY2tWaXNpdG9yLmNwcCI+
CiAgICAgICA8RmlsdGVyPmludGVycHJldGVyPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+Ci0g
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnRlcnByZXRlclxWTUluc3BlY3Rvci5jcHAiPgot
ICAgICAgPEZpbHRlcj5pbnRlcnByZXRlcjwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgogICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caml0XEV4ZWN1dGFibGVBbGxvY2F0b3IuY3BwIj4KICAg
ICAgIDxGaWx0ZXI+aml0PC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC0yMzE4LDkgKzIz
MTUsNiBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW50ZXJwcmV0ZXJcU3RhY2tWaXNp
dG9yLmgiPgogICAgICAgPEZpbHRlcj5pbnRlcnByZXRlcjwvRmlsdGVyPgogICAgIDwvQ2xJbmNs
dWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW50ZXJwcmV0ZXJcVk1JbnNwZWN0b3Iu
aCI+Ci0gICAgICA8RmlsdGVyPmludGVycHJldGVyPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxqaXRcQ29tcGFjdEpJVENvZGVNYXAuaCI+CiAg
ICAgICA8RmlsdGVyPmppdDwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE4Mjg2MSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC0xNjQ2LDggKzE2NDYsNiBAQAogCQlGRTBENEEwOTFBQkEyNDM3MDAyRjU0QkYg
LyogR2xvYmFsQ29udGV4dFdpdGhGaW5hbGl6ZXJUZXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMEQ0QTA3MUFCQTI0MzcwMDJGNTRCRiAvKiBH
bG9iYWxDb250ZXh0V2l0aEZpbmFsaXplclRlc3QuY3BwICovOyB9OwogCQlGRTIwQ0U5RDE1RjA0
QTk1MDBERjM0MzAgLyogTExJbnRDTG9vcC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGRTIwQ0U5QjE1RjA0QTk1MDBERjM0MzAgLyogTExJbnRDTG9v
cC5jcHAgKi87IH07CiAJCUZFMjBDRTlFMTVGMDRBOTUwMERGMzQzMCAvKiBMTEludENMb29wLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTIwQ0U5QzE1
RjA0QTk1MDBERjM0MzAgLyogTExJbnRDTG9vcC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUZFNEEzMzFGMTVCRDJFMDcwMDZGNTRGMyAvKiBWTUlu
c3BlY3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGRTRBMzMxRDE1QkQyRTA3MDA2RjU0RjMgLyogVk1JbnNwZWN0b3IuY3BwICovOyB9OwotCQlG
RTRBMzMyMDE1QkQyRTA3MDA2RjU0RjMgLyogVk1JbnNwZWN0b3IuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFNEEzMzFFMTVCRDJFMDcwMDZGNTRGMyAv
KiBWTUluc3BlY3Rvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUZFNTkzMkE3MTgzQzVBMjYwMEExRUNDQyAvKiBWTUVudHJ5U2NvcGUuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU1OTMyQTUxODND
NUEyNjAwQTFFQ0NDIC8qIFZNRW50cnlTY29wZS5jcHAgKi87IH07CiAJCUZFNTkzMkE4MTgzQzVB
MjYwMEExRUNDQyAvKiBWTUVudHJ5U2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEZFNTkzMkE2MTgzQzVBMjYwMEExRUNDQyAvKiBWTUVudHJ5U2Nv
cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlG
RTdCQTYwRjFBMUE3Q0VDMDBGMUY3QjQgLyogSGVhcFZlcmlmaWVyLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFN0JBNjBEMUExQTdDRUMwMEYxRjdC
NCAvKiBIZWFwVmVyaWZpZXIuY3BwICovOyB9OwpAQCAtMzQyNiw4ICszNDI0LDYgQEAKIAkJRkUw
RDRBMDgxQUJBMjQzNzAwMkY1NEJGIC8qIEdsb2JhbENvbnRleHRXaXRoRmluYWxpemVyVGVzdC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBHbG9iYWxDb250ZXh0V2l0aEZpbmFs
aXplclRlc3QuaDsgcGF0aCA9IEFQSS90ZXN0cy9HbG9iYWxDb250ZXh0V2l0aEZpbmFsaXplclRl
c3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUyMENFOUIxNUYwNEE5NTAwREYz
NDMwIC8qIExMSW50Q0xvb3AuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gTExJbnRDTG9vcC5jcHA7IHBhdGggPSBsbGludC9MTEludENMb29wLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUyMENFOUMxNUYwNEE5NTAwREYzNDMwIC8qIExMSW50Q0xv
b3AuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTExJbnRDTG9vcC5oOyBwYXRo
ID0gbGxpbnQvTExJbnRDTG9vcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlGRTRB
MzMxRDE1QkQyRTA3MDA2RjU0RjMgLyogVk1JbnNwZWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gVk1JbnNwZWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlGRTRBMzMxRTE1QkQyRTA3MDA2RjU0RjMgLyogVk1JbnNwZWN0b3IuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVk1JbnNwZWN0b3IuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRkU1OTMyQTUxODNDNUEyNjAwQTFFQ0NDIC8qIFZNRW50cnlTY29w
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWTUVudHJ5U2NvcGUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTU5MzJBNjE4M0M1QTI2MDBBMUVD
Q0MgLyogVk1FbnRyeVNjb3BlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZN
RW50cnlTY29wZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTdCQTYwRDFBMUE3
Q0VDMDBGMUY3QjQgLyogSGVhcFZlcmlmaWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEhlYXBWZXJpZmllci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0zODUwLDggKzM4NDYsNiBAQAogCQkJCTE0OUIyNEZGMEQ4QUY2RDEwMDlDQjhDNyAvKiBS
ZWdpc3Rlci5oICovLAogCQkJCUE3QzFFQUVDMTc5ODdBQjYwMDI5OURCMiAvKiBTdGFja1Zpc2l0
b3IuY3BwICovLAogCQkJCUE3QzFFQUVEMTc5ODdBQjYwMDI5OURCMiAvKiBTdGFja1Zpc2l0b3Iu
aCAqLywKLQkJCQlGRTRBMzMxRDE1QkQyRTA3MDA2RjU0RjMgLyogVk1JbnNwZWN0b3IuY3BwICov
LAotCQkJCUZFNEEzMzFFMTVCRDJFMDcwMDZGNTRGMyAvKiBWTUluc3BlY3Rvci5oICovLAogCQkJ
KTsKIAkJCXBhdGggPSBpbnRlcnByZXRlcjsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBA
IC02NDM2LDcgKzY0MzAsNiBAQAogCQkJCTBGNDI2QTQ5MTQ2MENCQjcwMDEzMUY4RiAvKiBWaXJ0
dWFsUmVnaXN0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDIwMEUxNkY1Q0QwMEIzNDQ2
MCAvKiBWTS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkU1OTMyQTgxODNDNUEyNjAwQTFFQ0NDIC8q
IFZNRW50cnlTY29wZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRkU0QTMzMjAxNUJEMkUwNzAwNkY1
NEYzIC8qIFZNSW5zcGVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRUQ5NEYyRjE3MUUzRTIz
MDBCRTc3QTQgLyogV2F0Y2hkb2cuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTE5RDI2MTU4NTND
RTMwMDRBNEU3RCAvKiBXYXRjaHBvaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDJFMzEzQzEz
NEZGMEE2MDBBRkFEQjUgLyogV2Vhay5oIGluIEhlYWRlcnMgKi8sCkBAIC03NTE2LDcgKzc1MDks
NiBAQAogCQkJCTBGMjRFNTU4MTdGNzRFREIwMEFCQjIxNyAvKiBWYWx1ZVJlY292ZXJ5LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUUxOEUzQTU5MERGOTI3OEMwMEQ5MEIzNCAvKiBWTS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlGRTU5MzJBNzE4M0M1QTI2MDBBMUVDQ0MgLyogVk1FbnRyeVNjb3Bl
LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUZFNEEzMzFGMTVCRDJFMDcwMDZGNTRGMyAvKiBWTUlu
c3BlY3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRUQ5NEYyRTE3MUUzRTIzMDBCRTc3QTQg
LyogV2F0Y2hkb2cuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkVEOTRGMzAxNzFFM0UyMzAwQkU3
N0E0IC8qIFdhdGNoZG9nTWFjLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGOTE5RDI1MTU4NTND
RTAwMDRBNEU3RCAvKiBXYXRjaHBvaW50LmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1ZNSW5zcGVjdG9yLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvVk1JbnNwZWN0b3IuY3BwCShyZXZp
c2lvbiAxODI4NjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvVk1JbnNw
ZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDU4OCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlICJWTUluc3BlY3Rvci5oIgotCi0jaWYgRU5BQkxFKFZNSU5TUEVDVE9SKQotCi0jaW5j
bHVkZSAiSlNDSW5saW5lcy5oIgotI2luY2x1ZGUgIlN0YWNrVmlzaXRvci5oIgotI2luY2x1ZGUg
PHd0Zi9BU0NJSUNUeXBlLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5h
bWVzcGFjZSBKU0MgewotCi1jb25zdCBjaGFyKiBWTUluc3BlY3Rvcjo6Z2V0VHlwZU5hbWUoSlNW
YWx1ZSB2YWx1ZSkKLXsKLSAgICBpZiAodmFsdWUuaXNJbnQzMigpKQotICAgICAgICByZXR1cm4g
IjxJbnQzMj4iOwotICAgIGlmICh2YWx1ZS5pc0Jvb2xlYW4oKSkKLSAgICAgICAgcmV0dXJuICI8
Qm9vbGVhbj4iOwotICAgIGlmICh2YWx1ZS5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuICI8RW1w
dHk+IjsKLSAgICBpZiAodmFsdWUuaXNVbmRlZmluZWQoKSkKLSAgICAgICAgcmV0dXJuICI8VW5k
ZWZpbmVkPiI7Ci0gICAgaWYgKHZhbHVlLmlzQ2VsbCgpKQotICAgICAgICByZXR1cm4gIjxDZWxs
PiI7Ci0gICAgaWYgKHZhbHVlLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuICI8RW1wdHk+IjsK
LSAgICByZXR1cm4gIiI7Ci19Ci0KLXZvaWQgVk1JbnNwZWN0b3I6OmR1bXBGcmFtZTAoQ2FsbEZy
YW1lKiBmcmFtZSkKLXsKLSAgICBkdW1wRnJhbWUoZnJhbWUsIDAsIDAsIDAsIDApOwotfQotCi12
b2lkIFZNSW5zcGVjdG9yOjpkdW1wRnJhbWUoQ2FsbEZyYW1lKiBmcmFtZSwgY29uc3QgY2hhciog
cHJlZml4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGZ1bmNOYW1l
LCBjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSkKLXsKLSAgICBpbnQgZnJhbWVDb3VudCA9IFZN
SW5zcGVjdG9yOjpjb3VudEZyYW1lcyhmcmFtZSk7Ci0gICAgaWYgKGZyYW1lQ291bnQgPCAwKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBJbnN0cnVjdGlvbiogdlBDID0gMDsKLSAgICBpZiAoZnJh
bWUtPmNvZGVCbG9jaygpKQotICAgICAgICB2UEMgPSBmcmFtZS0+Y3VycmVudFZQQygpOwotCi0g
ICAgI2RlZmluZSBDQVNUIHJlaW50ZXJwcmV0X2Nhc3QKLQotICAgIGlmIChwcmVmaXgpCi0gICAg
ICAgIHByaW50ZigiJXMgIiwgcHJlZml4KTsKLQotICAgIHByaW50ZigiZnJhbWUgWyVkXSAlcCB7
IGNiICVwOiVzLCByZXRQQyAlcDolcywgY2FsbGVlICVwOiVzLCBjYWxsZXJGcmFtZSAlcDolcywg
YXJnYyAlZCwgdlBDICVwIH0iLAotICAgICAgICBmcmFtZUNvdW50LCBmcmFtZSwKLSAgICAgICAg
Q0FTVDx2b2lkKj4oZnJhbWVbSlNTdGFjazo6Q29kZUJsb2NrXS5wYXlsb2FkKCkpLAotICAgICAg
ICBnZXRUeXBlTmFtZShmcmFtZVtKU1N0YWNrOjpDb2RlQmxvY2tdLmpzVmFsdWUoKSksCi0gICAg
ICAgIENBU1Q8dm9pZCo+KGZyYW1lW0pTU3RhY2s6OlJldHVyblBDXS5wYXlsb2FkKCkpLAotICAg
ICAgICBnZXRUeXBlTmFtZShmcmFtZVtKU1N0YWNrOjpSZXR1cm5QQ10uanNWYWx1ZSgpKSwKLSAg
ICAgICAgQ0FTVDx2b2lkKj4oZnJhbWVbSlNTdGFjazo6Q2FsbGVlXS5wYXlsb2FkKCkpLAotICAg
ICAgICBnZXRUeXBlTmFtZShmcmFtZVtKU1N0YWNrOjpDYWxsZWVdLmpzVmFsdWUoKSksCi0gICAg
ICAgIENBU1Q8dm9pZCo+KGZyYW1lW0pTU3RhY2s6OkNhbGxlckZyYW1lXS5jYWxsRnJhbWUoKSks
Ci0gICAgICAgIGdldFR5cGVOYW1lKGZyYW1lW0pTU3RhY2s6OkNhbGxlckZyYW1lXS5qc1ZhbHVl
KCkpLAotICAgICAgICBmcmFtZVtKU1N0YWNrOjpBcmd1bWVudENvdW50XS5wYXlsb2FkKCksCi0g
ICAgICAgIHZQQyk7Ci0KLSAgICBpZiAoZnVuY05hbWUgfHwgZmlsZSB8fCAobGluZSA+PSAwKSkg
ewotICAgICAgICBwcmludGYoIiBAIik7Ci0gICAgICAgIGlmIChmdW5jTmFtZSkKLSAgICAgICAg
ICAgIHByaW50ZigiICVzIiwgZnVuY05hbWUpOwotICAgICAgICBpZiAoZmlsZSkKLSAgICAgICAg
ICAgIHByaW50ZigiICVzIiwgZmlsZSk7Ci0gICAgICAgIGlmIChsaW5lID49IDApCi0gICAgICAg
ICAgICBwcmludGYoIjolZCIsIGxpbmUpOwotICAgIH0KLSAgICBwcmludGYoIlxuIik7Ci19Ci0K
LWNsYXNzIENvdW50RnJhbWVzRnVuY3RvciB7Ci1wdWJsaWM6Ci0gICAgQ291bnRGcmFtZXNGdW5j
dG9yKCkKLSAgICAgICAgOiBtX2NvdW50KC0xKQotICAgIHsgfQotCi0gICAgU3RhY2tWaXNpdG9y
OjpTdGF0dXMgb3BlcmF0b3IoKShTdGFja1Zpc2l0b3ImIHZpc2l0b3IpCi0gICAgewotICAgICAg
ICBtX2NvdW50Kys7Ci0gICAgICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OkNvbnRpbnVlOwotICAg
IH0KLQotICAgIGludCBjb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fY291bnQ7IH0KLQotcHJpdmF0
ZToKLSAgICB1bnNpZ25lZCBtX2NvdW50OwotfTsKLQotaW50IFZNSW5zcGVjdG9yOjpjb3VudEZy
YW1lcyhDYWxsRnJhbWUqIGZyYW1lKQotewotICAgIENvdW50RnJhbWVzRnVuY3RvciBmdW5jdG9y
KCk7Ci0gICAgU3RhY2tWaXNpdG9yOjp2aXNpdChmcmFtZSwgZnVuY3Rvcik7Ci0KLSAgICByZXR1
cm4gZnVuY3Rvci5jb3VudCgpOwotfQotCi0KLS8vPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLy8gIGNs
YXNzIEZvcm1hdFByaW50ZXIKLS8vICAgIC0gaW1wbGVtZW50cyBmdW5jdGlvbmFsaXR5IHRvIHN1
cHBvcnQgZnByaW50Zi4KLS8vCi0vLyAgICBUaGUgRm9ybWF0UHJpbnRlciBjbGFzc2VzIGRvIHRo
ZSByZWFsIGZvcm1hdHRpbmcgYW5kIHByaW50aW5nLgotLy8gICAgQnkgZGVmYXVsdCwgdGhlIHN1
cGVyY2xhc3MgRm9ybWF0UHJpbnRlciB3aWxsIHByaW50IHRvIHN0ZG91dCAocHJpbnRmKS4KLS8v
ICAgIEVhY2ggb2YgdGhlIHN1YmNsYXNzIHdpbGwgaW1wbGVtZW50IHRoZSBvdGhlciAuLi5wcmlu
dGYoKSBvcHRpb25zLgotLy8gICAgVGhlIHN1YmNsYXNzZXMgYXJlOgotLy8KLS8vICAgICAgICBG
aWxlRm9ybWF0UHJpbnRlciAgICAgLSBmcHJpbnRmCi0vLyAgICAgICAgU3RyaW5nRm9ybWF0UHJp
bnRlciAgIC0gc3ByaW50ZgotLy8gICAgICAgIFN0cmluZ05Gb3JtYXRQcmludGVyICAtIHNucHJp
bnRmCi0KLWNsYXNzIEZvcm1hdFByaW50ZXIgewotcHVibGljOgotICAgIHZpcnR1YWwgfkZvcm1h
dFByaW50ZXIoKSB7IH0KLQotICAgIHZvaWQgcHJpbnQoY29uc3QgY2hhciogZm9ybWF0LCB2YV9s
aXN0IGFyZ3MpOwotCi1wcm90ZWN0ZWQ6Ci0gICAgLy8gTG93IGxldmVsIHByaW50ZXJzOgotICAg
IGJvb2wgcHJpbnRBcmcoY29uc3QgY2hhciogZm9ybWF0LCAuLi4pOwotICAgIHZpcnR1YWwgYm9v
bCBwcmludEFyZyhjb25zdCBjaGFyKiBmb3JtYXQsIHZhX2xpc3QgYXJncyk7Ci0KLSAgICAvLyBK
UyB0eXBlIHNwZWNpZmljIHByaW50ZXJzOgotICAgIHZvaWQgcHJpbnRXVEZTdHJpbmcodmFfbGlz
dCBhcmdzLCBib29sIHZlcmJvc2UpOwotfTsKLQotCi0vLyBUaGUgcHVibGljIHByaW50KCkgZnVu
Y3Rpb24gaXMgdGhlIHJlYWwgd29ya2hvcnNlIGJlaGluZCB0aGUgcHJpbnRmCi0vLyBmYW1pbHkg
b2YgZnVuY3Rpb25zLiBwcmludCgpIGRlY2lwaGVycyB0aGUgJSBmb3JtYXR0aW5nLCB0cmFuc2xh
dGUgdGhlbQotLy8gdG8gcHJpbWl0aXZlIGZvcm1hdHMsIGFuZCBkaXNwYXRjaGVzIHRvIHVuZGVy
bHlpbmcgcHJpbnRBcmcoKSBmdW5jdGlvbnMKLS8vIHRvIGRvIHRoZSBwcmludGluZy4KLS8vIAot
Ly8gVGhlIG5vbi1wdWJsaWMgaW50ZXJuYWwgcHJpbnRBcmcoKSBmdW5jdGlvbiBpcyB2aXJ0dWFs
IGFuZCBpcyByZXNwb25zaWJsZQotLy8gZm9yIGhhbmRsaW5nIHRoZSB2YXJpYXRpb25zIGJldHdl
ZW4gcHJpbnRmLCBmcHJpbnRmLCBzcHJpbnRmLCBhbmQgc25wcmludGYuCi0KLXZvaWQgRm9ybWF0
UHJpbnRlcjo6cHJpbnQoY29uc3QgY2hhciogZm9ybWF0LCB2YV9saXN0IGFyZ3MpCi17Ci0gICAg
Y29uc3QgY2hhciogcCA9IGZvcm1hdDsKLSAgICBjb25zdCBjaGFyKiBlcnJvclN0cjsKLQotICAg
IC8vIGJ1ZmZlciBpcyBvbmx5IHVzZWQgZm9yIDIgcHVycG9zZXM6Ci0gICAgLy8gMS4gVG8gdGVt
cG9yYXJpbHkgaG9sZCBhIGNvcHkgb2Ygbm9ybWFsIGNoYXJzIChub3QgbmVlZGluZyBmb3JtYXR0
aW5nKQotICAgIC8vICAgIHRvIGJlIHBhc3NlZCB0byBwcmludEFyZygpIGFuZCBwcmludGVkLgot
ICAgIC8vCi0gICAgLy8gICAgVGhlIGluY29taW5nIGZvcm1hdCBzdHJpbmcgbWF5IGNvbnRhaW4g
YSBzdHJpbmcgb2Ygbm9ybWFsIGNoYXJzIG11Y2gKLSAgICAvLyAgICBsb25nZXIgdGhhbiAxMjgs
IGJ1dCB3ZSBoYW5kbGUgdGhpcyBieSBicmVha2luZyB0aGVtIG91dCB0byAxMjggY2hhcnMKLSAg
ICAvLyAgICBmcmFnbWVudHMgYW5kIHByaW50aW5nIGVhY2ggZnJhZ21lbnQgYmVmb3JlIHJlLXVz
aW5nIHRoZSBidWZmZXIgdG8KLSAgICAvLyAgICBsb2FkIHVwIHRoZSBuZXh0IGZyYWdtZW50Lgot
ICAgIC8vCi0gICAgLy8gMi4gVG8gaG9sZCBhIHNpbmdsZSAiJS4uLiIgZm9ybWF0IHRvIGJlIHBh
c3NlZCB0byBwcmludEFyZygpIHRvIHByb2Nlc3MKLSAgICAvLyAgICBhIHNpbmdsZSB2YV9hcmcu
Ci0KLSAgICBjaGFyIGJ1ZmZlclsxMjldOyAvLyAxMjggY2hhcnMgKyBudWxsIHRlcm1pbmF0b3Iu
Ci0gICAgY2hhciogZW5kID0gJmJ1ZmZlcltzaXplb2YoYnVmZmVyKSAtIDFdOwotICAgIGNvbnN0
IGNoYXIqIHN0YXJ0T2ZGb3JtYXRTcGVjaWZpZXIgPSAwOwotCi0gICAgd2hpbGUgKHRydWUpIHsK
LSAgICAgICAgY2hhciBjID0gKnArKzsKLSAgICAgICAgY2hhciogY3VyciA9IGJ1ZmZlcjsKLQot
ICAgICAgICAvLyBQcmludCBsZWFkaW5nIG5vcm1hbCBjaGFyczoKLSAgICAgICAgd2hpbGUgKGMg
IT0gJ1wwJyAmJiBjICE9ICclJykgewotICAgICAgICAgICAgKmN1cnIrKyA9IGM7Ci0gICAgICAg
ICAgICBpZiAoY3VyciA9PSBlbmQpIHsKLSAgICAgICAgICAgICAgICAvLyBPdXQgb2YgYnVmZmVy
IHNwYWNlLiBGbHVzaCB0aGUgZnJhZ21lbnQsIGFuZCBzdGFydCBvdmVyLgotICAgICAgICAgICAg
ICAgICpjdXJyID0gJ1wwJzsKLSAgICAgICAgICAgICAgICBib29sIHN1Y2Nlc3MgPSBwcmludEFy
ZygiJXMiLCBidWZmZXIpOwotICAgICAgICAgICAgICAgIGlmICghc3VjY2VzcykgewotICAgICAg
ICAgICAgICAgICAgICBlcnJvclN0ciA9IGJ1ZmZlcjsKLSAgICAgICAgICAgICAgICAgICAgZ290
byBoYW5kbGVFcnJvcjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgY3VyciA9
IGJ1ZmZlcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGMgPSAqcCsrOwotICAgICAgICB9
Ci0gICAgICAgIC8vIElmIHdlIGhhdmUgc3R1ZmYgaW4gdGhlIGJ1ZmZlciwgZmx1c2ggdGhlIGZy
YWdtZW50OgotICAgICAgICBpZiAoY3VyciAhPSBidWZmZXIpIHsKLSAgICAgICAgICAgIEFTU0VS
VChjdXJyIDwgZW5kICsgMSk7Ci0gICAgICAgICAgICAqY3VyciA9ICdcMCc7Ci0gICAgICAgICAg
ICBib29sIHN1Y2Nlc3MgPSBwcmludEFyZygiJXMiLCBidWZmZXIpOwotICAgICAgICAgICAgaWYg
KCFzdWNjZXNzKSB7Ci0gICAgICAgICAgICAgICAgZXJyb3JTdHIgPSBidWZmZXI7Ci0gICAgICAg
ICAgICAgICAgZ290byBoYW5kbGVFcnJvcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0g
ICAgICAgIC8vIEVuZCBpZiB0aGVyZSBhcmUgbm90IG1vcmUgY2hhcnMgdG8gcHJpbnQ6Ci0gICAg
ICAgIGlmIChjID09ICdcMCcpCi0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICAvLyBJZiB3
ZSBnZXQgaGVyZSwgd2UndmUgbXVzdCBoYXZlIHNlZW4gYSAnJSc6Ci0gICAgICAgIHN0YXJ0T2ZG
b3JtYXRTcGVjaWZpZXIgPSBwIC0gMTsKLSAgICAgICAgQVNTRVJUKCpzdGFydE9mRm9ybWF0U3Bl
Y2lmaWVyID09ICclJyk7Ci0gICAgICAgIGMgPSAqcCsrOwotCi0gICAgICAgIC8vIENoZWNrIGZv
ciAiJSUiIGNhc2U6Ci0gICAgICAgIGlmIChjID09ICclJykgewotICAgICAgICAgICAgYm9vbCBz
dWNjZXNzID0gcHJpbnRBcmcoIiVjIiwgJyUnKTsKLSAgICAgICAgICAgIGlmICghc3VjY2Vzcykg
ewotICAgICAgICAgICAgICAgIGVycm9yU3RyID0gcCAtIDI7Ci0gICAgICAgICAgICAgICAgZ290
byBoYW5kbGVFcnJvcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAg
ICAgICB9Ci0KLSAgICAgICAgLy8gQ2hlY2sgZm9yIEpTICglSjx4PikgZm9ybWF0dGluZyBleHRl
bnNpb25zOgotICAgICAgICBpZiAoYyA9PSAnSicpIHsKLSAgICAgICAgICAgIGJvb2wgdmVyYm9z
ZSA9IGZhbHNlOwotCi0gICAgICAgICAgICBjID0gKnArKzsKLSAgICAgICAgICAgIGlmIChVTkxJ
S0VMWShjID09ICdcMCcpKSB7Ci0gICAgICAgICAgICAgICAgZXJyb3JTdHIgPSBwIC0gMjsgLy8g
UmV3aW5kIHRvICUgaW4gIiVKXDAiCi0gICAgICAgICAgICAgICAgZ290byBoYW5kbGVFcnJvcjsK
LSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKGMgPT0gJysnKSB7Ci0gICAgICAgICAg
ICAgICAgdmVyYm9zZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgYz0gKnArKzsKLSAgICAgICAg
ICAgICAgICBpZiAoVU5MSUtFTFkoYyA9PSAnXDAnKSkgewotICAgICAgICAgICAgICAgICAgICBl
cnJvclN0ciA9IHAgLSAzOyAvLyBSZXdpbmQgdG8gJSBpbiAiJUorXDAiCi0gICAgICAgICAgICAg
ICAgICAgIGdvdG8gaGFuZGxlRXJyb3I7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
fQotCi0gICAgICAgICAgICBzd2l0Y2ggKGMpIHsKLSAgICAgICAgICAgIC8vICVKcyAtIFdURjo6
U3RyaW5nKgotICAgICAgICAgICAgY2FzZSAncyc6IHsKLSAgICAgICAgICAgICAgICBwcmludFdU
RlN0cmluZyhhcmdzLCB2ZXJib3NlKTsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIH0gLy8gRU5EIHN3aXRjaC4KLQotICAgICAgICAvLyBDaGVj
ayBmb3Igbm9uLUpTIGV4dGVuc2lvbnM6Ci0gICAgICAgIH0gZWxzZSBpZiAoYyA9PSAnYicpIHsK
LSAgICAgICAgICAgIGludCB2YWx1ZSA9IHZhX2FyZyhhcmdzLCBpbnQpOwotICAgICAgICAgICAg
cHJpbnRBcmcoIiVzIiwgdmFsdWUgPyAiVFJVRSIgOiAiRkFMU0UiKTsKLSAgICAgICAgICAgIGNv
bnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gSWYgd2UgZGlkbid0IGhhbmRsZSB0aGUg
Zm9ybWF0IGluIG9uZSBvZiB0aGUgYWJvdmUgY2FzZXMsCi0gICAgICAgIC8vIHJld2luZCBwIGFu
ZCBsZXQgdGhlIHN0YW5kYXJkIGZvcm1hdHRpbmcgY2hlY2sgaGFuZGxlIGl0Ci0gICAgICAgIC8v
IGlmIHBvc3NpYmxlOgotICAgICAgICBwID0gc3RhcnRPZkZvcm1hdFNwZWNpZmllcjsKLSAgICAg
ICAgQVNTRVJUKCpwID09ICclJyk7Ci0KLSAgICAgICAgLy8gQ2hlY2sgZm9yIHN0YW5kYXJkIGZv
cm1hdHRpbmc6Ci0gICAgICAgIC8vIEEgZm9ybWF0IHNwZWNpZmllciBhbHdheXMgc3RhcnRzIHdp
dGggYSAlIGFuZCBlbmRzIHdpdGggc29tZQotICAgICAgICAvLyBhbHBoYWJldC4gV2UnbGwgZG8g
dGhlIHNpbXBsZSB0aGluZyBhbmQgc2NhbiB1bnRpbCB0aGUgbmV4dAotICAgICAgICAvLyBhbHBo
YWJldCwgb3IgdGhlIGVuZCBvZiBzdHJpbmcuCi0KLSAgICAgICAgLy8gSW4gdGhlIGZvbGxvd2lu
Zywgd2UncmUgZ29pbmcgdG8gdXNlIGJ1ZmZlciBhcyBzdG9yYWdlIGZvciBhIGNvcHkKLSAgICAg
ICAgLy8gb2YgYSBzaW5nbGUgZm9ybWF0IHNwZWNpZmllci4gSGVuY2UsIGNvbmNlcHR1YWxseSwg
d2UgY2FuIHRoaW5rIG9mCi0gICAgICAgIC8vICdidWZmZXInIGFzIHN5bm9ueW1vdXMgd2l0aCAn
YXJnRm9ybWF0JyBoZXJlOgotCi0jZGVmaW5lIEFCT1JUX0lGX0ZPUk1BVF9UT09fTE9ORyhjdXJy
KSBcCi0gICAgICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAg
ICBpZiAoVU5MSUtFTFkoY3VyciA+PSBlbmQpKSBcCi0gICAgICAgICAgICAgICAgZ290byBmb3Jt
YXRUb29Mb25nOyAgICBcCi0gICAgICAgIH0gd2hpbGUgKGZhbHNlKQotICAgICAgICAKLSAgICAg
ICAgY3VyciA9IGJ1ZmZlcjsKLSAgICAgICAgKmN1cnIrKyA9ICpwKys7IC8vIE91dHB1dCB0aGUg
Zmlyc3QgJSBpbiB0aGUgZm9ybWF0IHNwZWNpZmllci4KLSAgICAgICAgYyA9ICpwKys7IC8vIEdy
YWIgdGhlIG5leHQgY2hhciBpbiB0aGUgZm9ybWF0IHNwZWNpZmllci4KLQotICAgICAgICAvLyBD
aGVja3MgZm9yIGxlYWRpbmcgbW9kaWZpZXJzIGUuZy4gIiUtZCI6Ci0gICAgICAgIC8vICAgICAw
LCAtLCAnICcsICssICdcJycKLSAgICAgICAgaWYgKGMgPT0gJzAnIHx8IGMgPT0gJy0nIHx8IGMg
PT0gJyAnIHx8IGMgPT0gJysnIHx8IGMgPT0gJ1wnJyB8fCBjID09ICcjJykgewotICAgICAgICAg
ICAgQUJPUlRfSUZfRk9STUFUX1RPT19MT05HKGN1cnIpOwotICAgICAgICAgICAgKmN1cnIrKyA9
IGM7Ci0gICAgICAgICAgICBjID0gKnArKzsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIENoZWNr
cyBmb3IgZGVjaW1hbCBkaWdpdCBmaWVsZCB3aWR0aCBtb2RpZmllcnMgZS5nLiAiJTJmIjoKLSAg
ICAgICAgd2hpbGUgKGMgPj0gJzAnICYmIGMgPD0gJzknKSB7Ci0gICAgICAgICAgICBBQk9SVF9J
Rl9GT1JNQVRfVE9PX0xPTkcoY3Vycik7Ci0gICAgICAgICAgICAqY3VycisrID0gYzsKLSAgICAg
ICAgICAgIGMgPSAqcCsrOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gQ2hlY2tzIGZvciAnLicg
ZS5nLiAiJTIuZiI6Ci0gICAgICAgIGlmIChjID09ICcuJykgewotICAgICAgICAgICAgQUJPUlRf
SUZfRk9STUFUX1RPT19MT05HKGN1cnIpOwotICAgICAgICAgICAgKmN1cnIrKyA9IGM7Ci0gICAg
ICAgICAgICBjID0gKnArKzsKLQotICAgICAgICAgICAgLy8gQ2hlY2tzIGZvciBkZWNpbWFsIGRp
Z2l0IHByZWNpc2lvbiBtb2RpZmllcnMgIGUuZy4gIiUuMmYiOgotICAgICAgICAgICAgd2hpbGUg
KGMgPj0gJzAnICYmIGMgPD0gJzknKSB7Ci0gICAgICAgICAgICAgICAgQUJPUlRfSUZfRk9STUFU
X1RPT19MT05HKGN1cnIpOwotICAgICAgICAgICAgICAgICpjdXJyKysgPSBjOwotICAgICAgICAg
ICAgICAgIGMgPSAqcCsrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgLy8g
Q2hlY2tzIGZvciB0aGUgbW9kaWZpZXIgPG0+IHdoZXJlIDxtPiBjYW4gYmU6Ci0gICAgICAgIC8v
ICAgICBsLCBoLCBqLCB0LCB6Ci0gICAgICAgIC8vIGUuZy4gIiVsZCIKLSAgICAgICAgaWYgKGMg
PT0gJ2wnIHx8IGMgPT0gJ2gnIHx8IGMgPT0gJ2onIHx8IGMgPT0gJ3QnIHx8IGMgPT0gJ3onIHx8
IGMgPT0gJ0wnKSB7Ci0gICAgICAgICAgICBBQk9SVF9JRl9GT1JNQVRfVE9PX0xPTkcoY3Vycik7
Ci0gICAgICAgICAgICAqY3VycisrID0gYzsKLSAgICAgICAgICAgIGNoYXIgcHJldkNoYXIgPSBj
OwotICAgICAgICAgICAgYyA9ICpwKys7Ci0KLSAgICAgICAgICAgIC8vIENoZWNrcyBmb3IgdGhl
IG1vZGlmaWVyIGxsIG9yIGhoIGluICU8eD48bT46Ci0gICAgICAgICAgICBpZiAoKHByZXZDaGFy
ID09ICdsJyB8fCBwcmV2Q2hhciA9PSAnaCcpICYmIGMgPT0gcHJldkNoYXIpIHsKLSAgICAgICAg
ICAgICAgICBBQk9SVF9JRl9GT1JNQVRfVE9PX0xPTkcoY3Vycik7Ci0gICAgICAgICAgICAgICAg
KmN1cnIrKyA9IGM7Ci0gICAgICAgICAgICAgICAgYyA9ICpwKys7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0KLQotICAgICAgICAvLyBDaGVja3MgZm9yICU8eD4gd2hlcmUgPHg+IGNhbiBiZToK
LSAgICAgICAgLy8gICAgIGQsIGksIG4sIG8sIHUsIHgsIFgKLSAgICAgICAgLy8gQnV0IGhleSwg
d2UncmUganVzdCBnb2luZyB0byBkbyB0aGUgc2ltcGxlIHRoaW5nIGFuZCBhbGxvdyBhbnkKLSAg
ICAgICAgLy8gYWxwaGFiZXQuIFRoZSB1c2VyIGlzIGV4cGVjdGVkIHRvIHBhc3MgY29ycmVjdCBm
b3JtYXQgc3BlY2lmaWVycy4KLSAgICAgICAgLy8gV2Ugd29uJ3QgZG8gYW55IGZvcm1hdCBjaGVj
a2luZyBoZXJlLiBXZSdsbCBqdXN0IHBhc3MgaXQgb24sIGFuZCB0aGUKLSAgICAgICAgLy8gdW5k
ZXJseWluZyAuLi5wcmludGYoKSBpbXBsZW1lbnRhdGlvbiBtYXkgZG8gdGhlIG5lZWRlZCBjaGVj
a2luZwotICAgICAgICAvLyBhdCBpdHMgZGlzY3JldGlvbi4KLSAgICAgICAgd2hpbGUgKGMgIT0g
J1wwJyAmJiAhaXNBU0NJSUFscGhhKGMpKSB7Ci0gICAgICAgICAgICBBQk9SVF9JRl9GT1JNQVRf
VE9PX0xPTkcoY3Vycik7Ci0gICAgICAgICAgICAqY3VycisrID0gYzsKLSAgICAgICAgICAgIGMg
PSAqcCsrOwotICAgICAgICB9Ci0KLSAgICAgICAgQUJPUlRfSUZfRk9STUFUX1RPT19MT05HKGN1
cnIpOwotICAgICAgICAqY3VycisrID0gYzsKLSAgICAgICAgaWYgKGMgPT0gJ1wwJykgewotICAg
ICAgICAgICAgLy8gVWggb2guIEJhZCBmb3JtYXQuIFdlIHNob3VsZCBoYXZlIGdvdHRlbiBhbiBh
bHBoYWJldCBpbnN0ZWFkLgotICAgICAgICAgICAgLy8gUHJpbnQgdGhlIHN1cHBvc2VkIGZvcm1h
dCBhcyBhIHN0cmluZyBpbnN0ZWFkOgotICAgICAgICAgICAgZXJyb3JTdHIgPSBidWZmZXI7Ci0g
ICAgICAgICAgICBnb3RvIGhhbmRsZUVycm9yOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gT3Ro
ZXJ3aXNlLCB3ZSBoYXZlIHRoZSBhbHBoYSB0aGF0IHRlcm1pbmF0ZXMgdGhlIGZvcm1hdC4KLSAg
ICAgICAgLy8gVGVybWluYXRlIHRoZSBidWZmZXIgKGkuZS4gYXJnRm9ybWF0KSBzdHJpbmc6Ci0g
ICAgICAgIEFTU0VSVChpc0FTQ0lJQWxwaGEoYykpOwotICAgICAgICBBQk9SVF9JRl9GT1JNQVRf
VE9PX0xPTkcoY3Vycik7Ci0gICAgICAgICpjdXJyID0gJ1wwJzsKLQotICAgICAgICBib29sIHN1
Y2Nlc3MgPSBwcmludEFyZyhidWZmZXIsIGFyZ3MpOwotICAgICAgICBpZiAoIXN1Y2Nlc3MpIHsK
LSAgICAgICAgICAgIGVycm9yU3RyID0gYnVmZmVyOwotICAgICAgICAgICAgZ290byBoYW5kbGVF
cnJvcjsKLSAgICAgICAgfQotICAgIH0KLSN1bmRlZiBBQk9SVF9JRl9GT1JNQVRfVE9PX0xPTkcK
LQotICAgIHJldHVybjsKLQotZm9ybWF0VG9vTG9uZzoKLSAgICAvLyBQcmludCB0aGUgZXJyb3Ig
c3RyaW5nOgotICAgIEFTU0VSVCghIXN0YXJ0T2ZGb3JtYXRTcGVjaWZpZXIpOwotICAgIHAgPSBz
dGFydE9mRm9ybWF0U3BlY2lmaWVyOwotICAgIEFTU0VSVChwID49IGZvcm1hdCk7Ci0gICAgcHJp
bnRBcmcoIkVSUk9SIEAgRm9ybWF0IHRvbyBsb25nIGF0IFwiJXNcIlxuIiwgcCk7Ci0gICAgcmV0
dXJuOwotCi1oYW5kbGVFcnJvcjoKLSAgICAvLyBXZSd2ZSBnb3QgYW4gZXJyb3IuIENhbid0IGRv
IGFueSBtb3JlIHdvcmsuIFByaW50IGFuIGVycm9yIG1lc3NhZ2UgaWYKLSAgICAvLyBwb3NzaWJs
ZSBhbmQgdGhlbiBqdXN0IHJldHVybi4KLQotICAgIC8vIFRoZSBlcnJvclN0ciBtYXkgYmUgcG9p
bnRpbmcgaW50byB0aGUgbWlkZGxlIG9mIGJ1ZmZlciwgb3IgdGhlIG9yaWdpbmFsCi0gICAgLy8g
Zm9ybWF0IHN0cmluZy4gTW92ZSB0aGUgc3RyaW5nIHRvIGJ1ZmZlciBmb3IgY29uc2lzdGVuY3ks
IGFuZCBhbHNvIHNvCi0gICAgLy8gdGhhdCB3ZSBjYW4gc3RyaXAgaXQgb2YgbmV3bGluZXMgYmVs
b3cuCi0gICAgaWYgKGVycm9yU3RyICE9IGJ1ZmZlcikgewotICAgICAgICBzaXplX3QgbGVuZ3Ro
ID0gc3RybGVuKGVycm9yU3RyKTsKLSAgICAgICAgaWYgKGxlbmd0aCA+IHNpemVvZihidWZmZXIp
IC0gMSkKLSAgICAgICAgICAgIGxlbmd0aCA9IHNpemVvZihidWZmZXIpIC0gMTsKLSAgICAgICAg
bWVtbW92ZShidWZmZXIsIGVycm9yU3RyLCBsZW5ndGgpOwotICAgICAgICBidWZmZXJbbGVuZ3Ro
XSA9ICdcMCc7IC8vIFRlcm1pbmF0ZSB0aGUgbW92ZWQgZXJyb3Igc3RyaW5nLgotICAgIH0KLSAg
ICAvLyBTdHJpcCB0aGUgbmV3bGluZXM6Ci0gICAgY2hhciogY3AgPSBidWZmZXI7Ci0gICAgd2hp
bGUgKCpjcCkgewotICAgICAgICBpZiAoKmNwID09ICdcbicgfHwgKmNwID09ICdccicpCi0gICAg
ICAgICAgICAqY3AgPSAnICc7Ci0gICAgICAgIGNwKys7Ci0gICAgfQotICAgIC8vIFByaW50IHRo
ZSBlcnJvciBzdHJpbmc6Ci0gICAgcHJpbnRBcmcoIkVSUk9SIEAgXCIlc1wiXG4iLCBidWZmZXIp
OwotfQotCi0KLWJvb2wgRm9ybWF0UHJpbnRlcjo6cHJpbnRBcmcoY29uc3QgY2hhciogZm9ybWF0
LCAuLi4pCi17Ci0gICAgdmFfbGlzdCBhcmdzOwotICAgIHZhX3N0YXJ0KGFyZ3MsIGZvcm1hdCk7
Ci0gICAgYm9vbCBzdWNjZXNzID0gcHJpbnRBcmcoZm9ybWF0LCBhcmdzKTsKLSAgICB2YV9lbmQo
YXJncyk7Ci0gICAgcmV0dXJuIHN1Y2Nlc3M7Ci19Ci0KLWJvb2wgRm9ybWF0UHJpbnRlcjo6cHJp
bnRBcmcoY29uc3QgY2hhciogZm9ybWF0LCB2YV9saXN0IGFyZ3MpCi17Ci0gICAgaW50IGNvdW50
ID0gOjp2cHJpbnRmKGZvcm1hdCwgYXJncyk7Ci0gICAgcmV0dXJuIChjb3VudCA+PSAwKTsgLy8g
RmFpbCBpZiBsZXNzIHRoYW4gMCBjaGFycyBwcmludGVkLgotfQotCi0KLS8vICVKcyAtIFdURjo6
U3RyaW5nKgotLy8gdmVyYm9zZSBtb2RlIHByaW50czogV1RGOjpTdHJpbmcgIjx5b3VyIHN0cmlu
Zz4iCi12b2lkIEZvcm1hdFByaW50ZXI6OnByaW50V1RGU3RyaW5nKHZhX2xpc3QgYXJncywgYm9v
bCB2ZXJib3NlKQotewotICAgIGNvbnN0IFN0cmluZyogc3RyID0gdmFfYXJnKGFyZ3MsIGNvbnN0
IFN0cmluZyopOwotCi0gICAgLy8gUHJpbnQgdmVyYm9zZSBoZWFkZXIgaWYgYXBwcm9wcmlhdGU6
Ci0gICAgaWYgKHZlcmJvc2UpCi0gICAgICAgIHByaW50QXJnKCJXVEY6OlN0cmluZyBcIiIpOwot
Ci0gICAgLy8gUHJpbnQgdGhlIHN0cmluZyBpdHNlbGY6Ci0gICAgaWYgKCFzdHItPmlzRW1wdHko
KSkgewotICAgICAgICBpZiAoc3RyLT5pczhCaXQoKSkgewotICAgICAgICAgICAgY29uc3QgTENo
YXIqIGNoYXJzID0gc3RyLT5jaGFyYWN0ZXJzOCgpOwotICAgICAgICAgICAgcHJpbnRBcmcoIiVz
IiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oY2hhcnMpKTsKLSAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgIGNvbnN0IFVDaGFyKiBjaGFycyA9IHN0ci0+Y2hhcmFjdGVyczE2KCk7
Ci0gICAgICAgICAgICBwcmludEFyZygiJVMiLCByZWludGVycHJldF9jYXN0PGNvbnN0IHdjaGFy
X3QqPihjaGFycykpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gUHJpbnQgdmVyYm9zZSBm
b290ZXIgaWYgYXBwcm9wcmlhdGU6Ci0gICAgaWYgKHZlcmJvc2UpCi0gICAgICAgIHByaW50QXJn
KCJcIiIpOwotfQotCi0KLS8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLy8gIGNsYXNzIEZpbGVGb3Jt
YXRQcmludGVyCi0vLyAgICAtIGltcGxlbWVudHMgZnVuY3Rpb25hbGl0eSB0byBzdXBwb3J0IGZw
cmludGYuCi0KLWNsYXNzIEZpbGVGb3JtYXRQcmludGVyOiBwdWJsaWMgRm9ybWF0UHJpbnRlciB7
Ci1wdWJsaWM6Ci0gICAgRmlsZUZvcm1hdFByaW50ZXIoRklMRSopOwotcHJpdmF0ZToKLSAgICB2
aXJ0dWFsIGJvb2wgcHJpbnRBcmcoY29uc3QgY2hhciogZm9ybWF0LCB2YV9saXN0IGFyZ3MpOwot
Ci0gICAgRklMRSogbV9maWxlOwotfTsKLQotRmlsZUZvcm1hdFByaW50ZXI6OkZpbGVGb3JtYXRQ
cmludGVyKEZJTEUqIGZpbGUpCi0gICAgOiBtX2ZpbGUoZmlsZSkKLXsgCi19Ci0KLWJvb2wgRmls
ZUZvcm1hdFByaW50ZXI6OnByaW50QXJnKGNvbnN0IGNoYXIqIGZvcm1hdCwgdmFfbGlzdCBhcmdz
KQotewotICAgIGludCBjb3VudCA9IDo6dmZwcmludGYobV9maWxlLCBmb3JtYXQsIGFyZ3MpOwot
ICAgIHJldHVybiAoY291bnQgPj0gMCk7IC8vIEZhaWwgaWYgbGVzcyB0aGFuIDAgY2hhcnMgcHJp
bnRlZC4KLX0KLQotCi0vLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS8vICBjbGFzcyBTdHJpbmdGb3Jt
YXRQcmludGVyCi0vLyAgICAtIGltcGxlbWVudHMgZnVuY3Rpb25hbGl0eSB0byBzdXBwb3J0IHNw
cmludGYuCi0KLWNsYXNzIFN0cmluZ0Zvcm1hdFByaW50ZXI6IHB1YmxpYyBGb3JtYXRQcmludGVy
IHsKLXB1YmxpYzoKLSAgICBTdHJpbmdGb3JtYXRQcmludGVyKGNoYXIqIGJ1ZmZlcik7Ci1wcml2
YXRlOgotICAgIHZpcnR1YWwgYm9vbCBwcmludEFyZyhjb25zdCBjaGFyKiBmb3JtYXQsIHZhX2xp
c3QgYXJncyk7Ci0KLSAgICBjaGFyKiBtX2J1ZmZlcjsKLX07Ci0KLVN0cmluZ0Zvcm1hdFByaW50
ZXI6OlN0cmluZ0Zvcm1hdFByaW50ZXIoY2hhciogYnVmZmVyKQotICAgIDogbV9idWZmZXIoYnVm
ZmVyKQoteyAKLX0KLQotYm9vbCBTdHJpbmdGb3JtYXRQcmludGVyOjpwcmludEFyZyhjb25zdCBj
aGFyKiBmb3JtYXQsIHZhX2xpc3QgYXJncykKLXsKLSAgICBpbnQgY291bnQgPSA6OnZzcHJpbnRm
KG1fYnVmZmVyLCBmb3JtYXQsIGFyZ3MpOwotICAgIG1fYnVmZmVyICs9IGNvdW50OwotICAgIHJl
dHVybiAoY291bnQgPj0gMCk7IC8vIEZhaWwgaWYgbGVzcyB0aGFuIDAgY2hhcnMgcHJpbnRlZC4K
LX0KLQotCi0vLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS8vICBjbGFzcyBTdHJpbmdORm9ybWF0UHJp
bnRlcgotLy8gICAgLSBpbXBsZW1lbnRzIGZ1bmN0aW9uYWxpdHkgdG8gc3VwcG9ydCBzbnByaW50
Zi4KLQotY2xhc3MgU3RyaW5nTkZvcm1hdFByaW50ZXI6IHB1YmxpYyBGb3JtYXRQcmludGVyIHsK
LXB1YmxpYzoKLSAgICBTdHJpbmdORm9ybWF0UHJpbnRlcihjaGFyKiBidWZmZXIsIHNpemVfdCk7
Ci1wcml2YXRlOgotICAgIHZpcnR1YWwgYm9vbCBwcmludEFyZyhjb25zdCBjaGFyKiBmb3JtYXQs
IHZhX2xpc3QgYXJncyk7Ci0KLSAgICBjaGFyKiBtX2J1ZmZlcjsKLSAgICBzaXplX3QgbV9zaXpl
OwotfTsKLQotCi1TdHJpbmdORm9ybWF0UHJpbnRlcjo6U3RyaW5nTkZvcm1hdFByaW50ZXIoY2hh
ciogYnVmZmVyLCBzaXplX3Qgc2l6ZSkKLSAgICA6IG1fYnVmZmVyKGJ1ZmZlcikKLSAgICAsIG1f
c2l6ZShzaXplKQotewotfQotCi1ib29sIFN0cmluZ05Gb3JtYXRQcmludGVyOjpwcmludEFyZyhj
b25zdCBjaGFyKiBmb3JtYXQsIHZhX2xpc3QgYXJncykKLXsKLSAgICBpZiAobV9zaXplID4gMCkg
ewotICAgICAgICBpbnQgY291bnQgPSA6OnZzbnByaW50ZihtX2J1ZmZlciwgbV9zaXplLCBmb3Jt
YXQsIGFyZ3MpOwotCi0gICAgICAgIC8vIEFjY29yZGluZyB0byB2c25wcmludGYgc3BlY3MsIC4u
LgotICAgICAgICBib29sIHN1Y2Nlc3MgPSAoY291bnQgPj0gMCk7Ci0gICAgICAgIGlmIChzdGF0
aWNfY2FzdDxzaXplX3Q+KGNvdW50KSA+PSBtX3NpemUpIHsKLSAgICAgICAgICAgIC8vIElmIGNv
dW50ID4gc2l6ZSwgdGhlbiB3ZSBkaWRuJ3QgaGF2ZSBlbm91Z2ggYnVmZmVyIHNwYWNlLgotICAg
ICAgICAgICAgY291bnQgPSBtX3NpemU7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBBZGp1c3Qg
dGhlIGJ1ZmZlciB0byB3aGF0J3MgbGVmdCBpZiBhcHByb3ByaWF0ZToKLSAgICAgICAgaWYgKHN1
Y2Nlc3MpIHsKLSAgICAgICAgICAgIG1fYnVmZmVyICs9IGNvdW50OwotICAgICAgICAgICAgbV9z
aXplIC09IGNvdW50OwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBzdWNjZXNzOwotICAgIH0K
LSAgICAvLyBObyBtb3JlIHJvb20gdG8gcHJpbnQuIERlY2xhcmUgaXQgYSBmYWlsOgotICAgIHJl
dHVybiBmYWxzZTsKLX0KLQotCi0vLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS8vICBWTUluc3BlY3Rv
ciBwcmludGYgZmFtaWx5IG9mIG1ldGhvZHM6Ci0KLXZvaWQgVk1JbnNwZWN0b3I6OmZwcmludGYo
RklMRSogZmlsZSwgY29uc3QgY2hhciogZm9ybWF0LCAuLi4pCi17Ci0gICAgdmFfbGlzdCBhcmdz
OwotICAgIHZhX3N0YXJ0KGFyZ3MsIGZvcm1hdCk7Ci0gICAgRmlsZUZvcm1hdFByaW50ZXIoZmls
ZSkucHJpbnQoZm9ybWF0LCBhcmdzKTsKLSAgICB2YV9lbmQoYXJncyk7Ci19Ci0KLXZvaWQgVk1J
bnNwZWN0b3I6OnByaW50Zihjb25zdCBjaGFyKiBmb3JtYXQsIC4uLikKLXsKLSAgICB2YV9saXN0
IGFyZ3M7Ci0gICAgdmFfc3RhcnQoYXJncywgZm9ybWF0KTsKLSAgICBGb3JtYXRQcmludGVyKCku
cHJpbnQoZm9ybWF0LCBhcmdzKTsKLSAgICB2YV9lbmQoYXJncyk7Ci19Ci0KLXZvaWQgVk1JbnNw
ZWN0b3I6OnNwcmludGYoY2hhciogYnVmZmVyLCBjb25zdCBjaGFyKiBmb3JtYXQsIC4uLikKLXsK
LSAgICB2YV9saXN0IGFyZ3M7Ci0gICAgdmFfc3RhcnQoYXJncywgZm9ybWF0KTsKLSAgICBTdHJp
bmdGb3JtYXRQcmludGVyKGJ1ZmZlcikucHJpbnQoZm9ybWF0LCBhcmdzKTsKLSAgICB2YV9lbmQo
YXJncyk7Ci19Ci0KLXZvaWQgVk1JbnNwZWN0b3I6OnNucHJpbnRmKGNoYXIqIGJ1ZmZlciwgc2l6
ZV90IHNpemUsIGNvbnN0IGNoYXIqIGZvcm1hdCwgLi4uKQotewotICAgIHZhX2xpc3QgYXJnczsK
LSAgICB2YV9zdGFydChhcmdzLCBmb3JtYXQpOwotICAgIFN0cmluZ05Gb3JtYXRQcmludGVyKGJ1
ZmZlciwgc2l6ZSkucHJpbnQoZm9ybWF0LCBhcmdzKTsKLSAgICB2YV9lbmQoYXJncyk7Ci19Ci0K
LX0gLy8gbmFtZXNwYWNlIEpTQwotCi0jZW5kaWYgLy8gRU5BQkxFKFZNSU5TUEVDVE9SKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1ZNSW5zcGVjdG9yLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1ZNSW5zcGVjdG9yLmgJ
KHJldmlzaW9uIDE4Mjg2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9W
TUluc3BlY3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDg5ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAot
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBWTUluc3BlY3Rvcl9o
Ci0jZGVmaW5lIFZNSW5zcGVjdG9yX2gKLQotI2RlZmluZSBFTkFCTEVfVk1JTlNQRUNUT1IgMAot
Ci0jaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCi0jaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgotI2luY2x1
ZGUgPHN0ZGFyZy5oPgotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBKU0MgewotCi0jaWYgRU5BQkxFKFZNSU5TUEVDVE9SKQot
Ci1jbGFzcyBWTUluc3BlY3RvciB7Ci1wdWJsaWM6ICAgIAotICAgIHN0YXRpYyBKU19FWFBPUlRf
UFJJVkFURSBjb25zdCBjaGFyKiBnZXRUeXBlTmFtZShKU1ZhbHVlKTsKLSAgICBzdGF0aWMgSlNf
RVhQT1JUX1BSSVZBVEUgdm9pZCBkdW1wRnJhbWUwKENhbGxGcmFtZSopOwotICAgIHN0YXRpYyBK
U19FWFBPUlRfUFJJVkFURSB2b2lkIGR1bXBGcmFtZShDYWxsRnJhbWUqLCBjb25zdCBjaGFyKiBw
cmVmaXggPSAwLCBjb25zdCBjaGFyKiBmdW5jTmFtZSA9IDAsIGNvbnN0IGNoYXIqIGZpbGUgPSAw
LCBpbnQgbGluZSA9IC0xKTsKLSAgICBzdGF0aWMgSlNfRVhQT1JUX1BSSVZBVEUgaW50IGNvdW50
RnJhbWVzKENhbGxGcmFtZSopOwotCi0gICAgLy8gU3BlY2lhbCBmYW1pbHkgb2YgLi4ucHJpbnRm
KCkgZnVuY3Rpb25zIHRoYXQgc3VwcG9ydCwgaW4gYWRkaXRpb24gdG8gdGhlCi0gICAgLy8gc3Rh
bmRhcmQgJSBmb3JtYXRzIChlLmcuICVkLCAlcywgZXRjKSwgdGhlIGZvbGxvd2luZyBleHRyYSBK
U0MgZm9ybWF0dGluZwotICAgIC8vIG9wdGlvbnMsICVKPHg+LCB3aGVyZSA8eD4gY29uc2lzdHMg
b2Y6Ci0gICAgLy8KLSAgICAvLyAgICsgICAgLSB2ZXJib3NlIG1vZGUgbW9kaWZpZXIuCi0gICAg
Ly8gICAgICAgICAgVXNlZCBpbiBjb21iaW5hdGlvbiB3aXRoIG90aGVyIG9wdGlvbnMuIE11c3Qg
Y29tZSBhZnRlciB0aGUgJUouCi0gICAgLy8gICBzICAgIC0gV1RGOjpTdHJpbmcqCi0gICAgLy8K
LSAgICAvLyBFeGFtcGxlcyBvZiB1c2FnZToKLSAgICAvLwotICAgIC8vICAgIFdURjo6U3RyaW5n
IHN0cigiTXkgV1RGIFN0cmluZyIpOwotICAgIC8vCi0gICAgLy8gICAgLy8gUHJpbnRpbmcgdGhl
IHN0cmluZy4gV2lsbCBwcmludDoKLSAgICAvLyAgICAvLyBUaGUgd3RmIHN0cmluZyBzYXlzOiAi
TXkgV1RGIFN0cmluZyIgYW5kIGlzIE5PVCBFTVBUWS4KLSAgICAvLwotICAgIC8vICAgIFZNSW5z
cGVjdG9yOjpwcmludGYoIlRoZSB3dGYgc3RyaW5nIHNheXM6IFwiJUpzXCIgYW5kIGlzICVzXG4i
LAotICAgIC8vICAgICAgICAmc3RyLCBzdHIuaXNFbXB0eSgpPyJFTVBUWSI6Ik5PVCBFTVBUWSIp
OwotICAgIC8vCi0gICAgLy8gICAgLy8gUHJpbnRpbmcgdGhlIHN0cmluZyB3aXRoIHZlcmJvc2Ug
bW9kZS4gV2lsbCBwcmludDoKLSAgICAvLyAgICAvLyA8V1RGOjpTdHJpbmcgIk15IFdURiBTdHJp
bmciPgotICAgIC8vCi0gICAgLy8gICAgVk1JbnNwZWN0b3I6OnByaW50ZigiPCVKK3M+XG4iLCAm
c3RyKTsKLSAgICAvLwotICAgIC8vIEFsc28gYWRkZWQgc29tZSBjb252ZW5pZW5jZSBub24tSlMg
Zm9ybWF0czoKLSAgICAvLwotICAgIC8vICAgJWIgICAgLSBib29sZWFuICh2YV9hcmdzIHdpbGwg
bG9vayBmb3IgYW4gaW50KS4KLSAgICAvLyAgICAgICAgICAgUHJpbnRzIFRSVUUgaWYgbm9uLXpl
cm8sIGVsc2UgcHJpbnRzIEZBTFNFLgotICAgIC8vCi0gICAgLy8gQ2F1dGlvbjogdGhlIHVzZXIg
aXMgZXhwZWN0ZWQgdG8gcGFzcyB0aGUgY29ycmVjdGx5IG1hdGNoZWQgYXJndW1lbnRzCi0gICAg
Ly8gdG8gcGFpciB3aXRoIHRoZSBjb3JyZXNwb25kaW5nICUgZm9tYXR0aW5nLgotCi0gICAgc3Rh
dGljIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZnByaW50ZihGSUxFKiwgY29uc3QgY2hhciogZm9y
bWF0LCAuLi4pOwotICAgIHN0YXRpYyBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHByaW50Zihjb25z
dCBjaGFyKiBmb3JtYXQsIC4uLik7Ci0gICAgc3RhdGljIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQg
c3ByaW50ZihjaGFyKiwgY29uc3QgY2hhciogZm9ybWF0LCAuLi4pOwotICAgIHN0YXRpYyBKU19F
WFBPUlRfUFJJVkFURSB2b2lkIHNucHJpbnRmKGNoYXIqLCBzaXplX3QsIGNvbnN0IGNoYXIqIGZv
cm1hdCwgLi4uKTsKLX07Ci0KLSNlbmRpZiAvLyBFTkFCTEUoVk1JTlNQRUNUT1IpCi0KLX0gLy8g
bmFtZXNwYWNlIEpTQwotCi0jZW5kaWYgLy8gVk1JbnNwZWN0b3IuaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>250869</attachid>
            <date>2015-04-15 15:15:17 -0700</date>
            <delta_ts>2015-04-15 15:19:06 -0700</delta_ts>
            <desc>patch 2: more deletion.</desc>
            <filename>bug-143798.patch</filename>
            <type>text/plain</type>
            <size>70651</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTgyODYzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBA
CisyMDE1LTA0LTE1ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZW1vdmUgb2Jzb2xldGUgVk1JbnNwZWN0b3IgZGVidWdnaW5nIHRvb2wuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDM3OTgKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJIGFkZGVkIHRoZSBWTUluc3BlY3Rv
ciB0b29sIDMgeWVhcnMgYWdvIHRvIGFpZCBpbiBWTSBoYWNraW5nIHdvcmsuICBTb21lIG9mIGl0
CisgICAgICAgIGhhcyBiaXQgcm90dGVkLCBhbmQgbm93IHRoZSBWTSBhbHNvIGhhcyBiZXR0ZXIg
d2F5cyB0byBhY2hpZXZlIGl0cyBmdW5jdGlvbmFsaXR5LgorICAgICAgICBIZW5jZSB0aGlzIGNv
ZGUgaXMgbm93IG9ic29sZXRlIGFuZCBzaG91bGQgYmUgcmVtb3ZlZC4KKworICAgICAgICAqIENN
YWtlTGlzdHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlw
dENvcmUudmN4cHJvajoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2ouZmlsdGVyczoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGludGVycHJldGVyL0NhbGxGcmFtZS5oOgor
ICAgICAgICAqIGludGVycHJldGVyL1ZNSW5zcGVjdG9yLmNwcDogUmVtb3ZlZC4KKyAgICAgICAg
KiBpbnRlcnByZXRlci9WTUluc3BlY3Rvci5oOiBSZW1vdmVkLgorICAgICAgICAqIGxsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIuY3BwOgorCiAyMDE1LTA0LTE1ICBKb3JkYW4gSGFyYmFuZCAgPGxq
aGFyYkBnbWFpbC5jb20+CiAKICAgICAgICAgTnVtYmVyLnBhcnNlSW50IGluIG5pZ2h0bHkgcjE4
MjY3MyBoYXMgd3JvbmcgbGVuZ3RoCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VM
aXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMu
dHh0CShyZXZpc2lvbiAxODI4NjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTMyMiw3ICszMjIsNiBAQCBzZXQoSmF2YVNjcmlwdENv
cmVfU09VUkNFUwogICAgIGludGVycHJldGVyL0pTU3RhY2suY3BwCiAgICAgaW50ZXJwcmV0ZXIv
UHJvdG9DYWxsRnJhbWUuY3BwCiAgICAgaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcAotICAg
IGludGVycHJldGVyL1ZNSW5zcGVjdG9yLmNwcAogCiAgICAgaml0L0FjY2Vzc29yQ2FsbEpJVFN0
dWJSb3V0aW5lLmNwcAogICAgIGppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52
Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oJKHJldmlzaW9uIDE4Mjg2MSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZj
eHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTU5NSw3ICs1OTUsNiBAQAogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5caW50ZXJwcmV0ZXJcSlNTdGFjay5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxpbnRlcnByZXRlclxQcm90b0NhbGxGcmFtZS5jcHAiIC8+CiAgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxpbnRlcnByZXRlclxTdGFja1Zpc2l0b3IuY3BwIiAvPgotICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5caW50ZXJwcmV0ZXJcVk1JbnNwZWN0b3IuY3BwIiAvPgogICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caml0XEFjY2Vzc29yQ2FsbEpJVFN0dWJSb3V0aW5lLmNw
cCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGppdFxBcml0eUNoZWNrRmFpbFJldHVy
blRodW5rcy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxqaXRcQXNzZW1ibHlI
ZWxwZXJzLmNwcCIgLz4KQEAgLTEzNDksNyArMTM0OCw2IEBACiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxpbnRlcnByZXRlclxQcm90b0NhbGxGcmFtZS5oIiAvPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5caW50ZXJwcmV0ZXJcUmVnaXN0ZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXGludGVycHJldGVyXFN0YWNrVmlzaXRvci5oIiAvPgotICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5caW50ZXJwcmV0ZXJcVk1JbnNwZWN0b3IuaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXGppdFxBY2Nlc3NvckNhbGxKSVRTdHViUm91dGluZS5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5caml0XEFyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtzLmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxqaXRcQXNzZW1ibHlIZWxwZXJzLmgiIC8+Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJz
CShyZXZpc2lvbiAxODI4NjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMJKHdvcmtpbmcgY29weSkK
QEAgLTM2Myw5ICszNjMsNiBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW50ZXJwcmV0
ZXJcU3RhY2tWaXNpdG9yLmNwcCI+CiAgICAgICA8RmlsdGVyPmludGVycHJldGVyPC9GaWx0ZXI+
CiAgICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnRlcnByZXRl
clxWTUluc3BlY3Rvci5jcHAiPgotICAgICAgPEZpbHRlcj5pbnRlcnByZXRlcjwvRmlsdGVyPgot
ICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caml0XEV4ZWN1dGFi
bGVBbGxvY2F0b3IuY3BwIj4KICAgICAgIDxGaWx0ZXI+aml0PC9GaWx0ZXI+CiAgICAgPC9DbENv
bXBpbGU+CkBAIC0yMzE4LDkgKzIzMTUsNiBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
aW50ZXJwcmV0ZXJcU3RhY2tWaXNpdG9yLmgiPgogICAgICAgPEZpbHRlcj5pbnRlcnByZXRlcjwv
RmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW50
ZXJwcmV0ZXJcVk1JbnNwZWN0b3IuaCI+Ci0gICAgICA8RmlsdGVyPmludGVycHJldGVyPC9GaWx0
ZXI+Ci0gICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxqaXRcQ29t
cGFjdEpJVENvZGVNYXAuaCI+CiAgICAgICA8RmlsdGVyPmppdDwvRmlsdGVyPgogICAgIDwvQ2xJ
bmNsdWRlPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE4Mjg2
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNjQ2LDggKzE2NDYsNiBAQAogCQlGRTBE
NEEwOTFBQkEyNDM3MDAyRjU0QkYgLyogR2xvYmFsQ29udGV4dFdpdGhGaW5hbGl6ZXJUZXN0LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMEQ0QTA3
MUFCQTI0MzcwMDJGNTRCRiAvKiBHbG9iYWxDb250ZXh0V2l0aEZpbmFsaXplclRlc3QuY3BwICov
OyB9OwogCQlGRTIwQ0U5RDE1RjA0QTk1MDBERjM0MzAgLyogTExJbnRDTG9vcC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTIwQ0U5QjE1RjA0QTk1
MDBERjM0MzAgLyogTExJbnRDTG9vcC5jcHAgKi87IH07CiAJCUZFMjBDRTlFMTVGMDRBOTUwMERG
MzQzMCAvKiBMTEludENMb29wLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGRTIwQ0U5QzE1RjA0QTk1MDBERjM0MzAgLyogTExJbnRDTG9vcC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUZFNEEzMzFGMTVC
RDJFMDcwMDZGNTRGMyAvKiBWTUluc3BlY3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTRBMzMxRDE1QkQyRTA3MDA2RjU0RjMgLyogVk1JbnNw
ZWN0b3IuY3BwICovOyB9OwotCQlGRTRBMzMyMDE1QkQyRTA3MDA2RjU0RjMgLyogVk1JbnNwZWN0
b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFNEEz
MzFFMTVCRDJFMDcwMDZGNTRGMyAvKiBWTUluc3BlY3Rvci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFNTkzMkE3MTgzQzVBMjYwMEExRUNDQyAv
KiBWTUVudHJ5U2NvcGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRkU1OTMyQTUxODNDNUEyNjAwQTFFQ0NDIC8qIFZNRW50cnlTY29wZS5jcHAgKi87
IH07CiAJCUZFNTkzMkE4MTgzQzVBMjYwMEExRUNDQyAvKiBWTUVudHJ5U2NvcGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFNTkzMkE2MTgzQzVBMjYw
MEExRUNDQyAvKiBWTUVudHJ5U2NvcGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlGRTdCQTYwRjFBMUE3Q0VDMDBGMUY3QjQgLyogSGVhcFZlcmlm
aWVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZF
N0JBNjBEMUExQTdDRUMwMEYxRjdCNCAvKiBIZWFwVmVyaWZpZXIuY3BwICovOyB9OwpAQCAtMzQy
Niw4ICszNDI0LDYgQEAKIAkJRkUwRDRBMDgxQUJBMjQzNzAwMkY1NEJGIC8qIEdsb2JhbENvbnRl
eHRXaXRoRmluYWxpemVyVGVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBH
bG9iYWxDb250ZXh0V2l0aEZpbmFsaXplclRlc3QuaDsgcGF0aCA9IEFQSS90ZXN0cy9HbG9iYWxD
b250ZXh0V2l0aEZpbmFsaXplclRlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RkUyMENFOUIxNUYwNEE5NTAwREYzNDMwIC8qIExMSW50Q0xvb3AuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTExJbnRDTG9vcC5jcHA7IHBhdGggPSBsbGludC9MTElu
dENMb29wLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUyMENFOUMxNUYwNEE5
NTAwREYzNDMwIC8qIExMSW50Q0xvb3AuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gTExJbnRDTG9vcC5oOyBwYXRoID0gbGxpbnQvTExJbnRDTG9vcC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlGRTRBMzMxRDE1QkQyRTA3MDA2RjU0RjMgLyogVk1JbnNwZWN0b3Iu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVk1JbnNwZWN0b3IuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlGRTRBMzMxRTE1QkQyRTA3MDA2RjU0RjMg
LyogVk1JbnNwZWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVk1JbnNw
ZWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU1OTMyQTUxODNDNUEyNjAw
QTFFQ0NDIC8qIFZNRW50cnlTY29wZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBWTUVudHJ5U2NvcGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlG
RTU5MzJBNjE4M0M1QTI2MDBBMUVDQ0MgLyogVk1FbnRyeVNjb3BlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFZNRW50cnlTY29wZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlGRTdCQTYwRDFBMUE3Q0VDMDBGMUY3QjQgLyogSGVhcFZlcmlmaWVyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhlYXBWZXJpZmllci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zODUwLDggKzM4NDYsNiBAQAogCQkJCTE0OUIyNEZG
MEQ4QUY2RDEwMDlDQjhDNyAvKiBSZWdpc3Rlci5oICovLAogCQkJCUE3QzFFQUVDMTc5ODdBQjYw
MDI5OURCMiAvKiBTdGFja1Zpc2l0b3IuY3BwICovLAogCQkJCUE3QzFFQUVEMTc5ODdBQjYwMDI5
OURCMiAvKiBTdGFja1Zpc2l0b3IuaCAqLywKLQkJCQlGRTRBMzMxRDE1QkQyRTA3MDA2RjU0RjMg
LyogVk1JbnNwZWN0b3IuY3BwICovLAotCQkJCUZFNEEzMzFFMTVCRDJFMDcwMDZGNTRGMyAvKiBW
TUluc3BlY3Rvci5oICovLAogCQkJKTsKIAkJCXBhdGggPSBpbnRlcnByZXRlcjsKIAkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC02NDM2LDcgKzY0MzAsNiBAQAogCQkJCTBGNDI2QTQ5MTQ2
MENCQjcwMDEzMUY4RiAvKiBWaXJ0dWFsUmVnaXN0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
MThDNDIwMEUxNkY1Q0QwMEIzNDQ2MCAvKiBWTS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkU1OTMy
QTgxODNDNUEyNjAwQTFFQ0NDIC8qIFZNRW50cnlTY29wZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
RkU0QTMzMjAxNUJEMkUwNzAwNkY1NEYzIC8qIFZNSW5zcGVjdG9yLmggaW4gSGVhZGVycyAqLywK
IAkJCQlGRUQ5NEYyRjE3MUUzRTIzMDBCRTc3QTQgLyogV2F0Y2hkb2cuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGOTE5RDI2MTU4NTNDRTMwMDRBNEU3RCAvKiBXYXRjaHBvaW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxNDJFMzEzQzEzNEZGMEE2MDBBRkFEQjUgLyogV2Vhay5oIGluIEhlYWRlcnMg
Ki8sCkBAIC03NTE2LDcgKzc1MDksNiBAQAogCQkJCTBGMjRFNTU4MTdGNzRFREIwMEFCQjIxNyAv
KiBWYWx1ZVJlY292ZXJ5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxOEUzQTU5MERGOTI3OEMw
MEQ5MEIzNCAvKiBWTS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRTU5MzJBNzE4M0M1QTI2MDBB
MUVDQ0MgLyogVk1FbnRyeVNjb3BlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUZFNEEzMzFGMTVC
RDJFMDcwMDZGNTRGMyAvKiBWTUluc3BlY3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRUQ5
NEYyRTE3MUUzRTIzMDBCRTc3QTQgLyogV2F0Y2hkb2cuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
RkVEOTRGMzAxNzFFM0UyMzAwQkU3N0E0IC8qIFdhdGNoZG9nTWFjLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGOTE5RDI1MTU4NTNDRTAwMDRBNEU3RCAvKiBXYXRjaHBvaW50LmNwcCBpbiBTb3Vy
Y2VzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFt
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxs
RnJhbWUuaAkocmV2aXNpb24gMTgyODYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0NhbGxGcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMTAsNyArMzEwLDYgQEAgbmFt
ZXNwYWNlIEpTQyAgewogICAgICAgICBjb25zdCBDYWxsZXJGcmFtZUFuZFBDJiBjYWxsZXJGcmFt
ZUFuZFBDKCkgY29uc3QgeyByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgQ2FsbGVyRnJh
bWVBbmRQQyo+KHRoaXMpOyB9CiAKICAgICAgICAgZnJpZW5kIGNsYXNzIEpTU3RhY2s7Ci0gICAg
ICAgIGZyaWVuZCBjbGFzcyBWTUluc3BlY3RvcjsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBK
U0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9WTUluc3BlY3Rvci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1ZNSW5z
cGVjdG9yLmNwcAkocmV2aXNpb24gMTgyODYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL1ZNSW5zcGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ODggKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
LSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiVk1JbnNwZWN0b3IuaCIKLQotI2lmIEVOQUJMRShWTUlO
U1BFQ1RPUikKLQotI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKLSNpbmNsdWRlICJTdGFja1Zpc2l0
b3IuaCIKLSNpbmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgotCi1uYW1lc3BhY2UgSlNDIHsKLQotY29uc3QgY2hhciogVk1JbnNwZWN0b3I6
OmdldFR5cGVOYW1lKEpTVmFsdWUgdmFsdWUpCi17Ci0gICAgaWYgKHZhbHVlLmlzSW50MzIoKSkK
LSAgICAgICAgcmV0dXJuICI8SW50MzI+IjsKLSAgICBpZiAodmFsdWUuaXNCb29sZWFuKCkpCi0g
ICAgICAgIHJldHVybiAiPEJvb2xlYW4+IjsKLSAgICBpZiAodmFsdWUuaXNOdWxsKCkpCi0gICAg
ICAgIHJldHVybiAiPEVtcHR5PiI7Ci0gICAgaWYgKHZhbHVlLmlzVW5kZWZpbmVkKCkpCi0gICAg
ICAgIHJldHVybiAiPFVuZGVmaW5lZD4iOwotICAgIGlmICh2YWx1ZS5pc0NlbGwoKSkKLSAgICAg
ICAgcmV0dXJuICI8Q2VsbD4iOwotICAgIGlmICh2YWx1ZS5pc0VtcHR5KCkpCi0gICAgICAgIHJl
dHVybiAiPEVtcHR5PiI7Ci0gICAgcmV0dXJuICIiOwotfQotCi12b2lkIFZNSW5zcGVjdG9yOjpk
dW1wRnJhbWUwKENhbGxGcmFtZSogZnJhbWUpCi17Ci0gICAgZHVtcEZyYW1lKGZyYW1lLCAwLCAw
LCAwLCAwKTsKLX0KLQotdm9pZCBWTUluc3BlY3Rvcjo6ZHVtcEZyYW1lKENhbGxGcmFtZSogZnJh
bWUsIGNvbnN0IGNoYXIqIHByZWZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBjaGFyKiBmdW5jTmFtZSwgY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUpCi17Ci0gICAgaW50
IGZyYW1lQ291bnQgPSBWTUluc3BlY3Rvcjo6Y291bnRGcmFtZXMoZnJhbWUpOwotICAgIGlmIChm
cmFtZUNvdW50IDwgMCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgSW5zdHJ1Y3Rpb24qIHZQQyA9
IDA7Ci0gICAgaWYgKGZyYW1lLT5jb2RlQmxvY2soKSkKLSAgICAgICAgdlBDID0gZnJhbWUtPmN1
cnJlbnRWUEMoKTsKLQotICAgICNkZWZpbmUgQ0FTVCByZWludGVycHJldF9jYXN0Ci0KLSAgICBp
ZiAocHJlZml4KQotICAgICAgICBwcmludGYoIiVzICIsIHByZWZpeCk7Ci0KLSAgICBwcmludGYo
ImZyYW1lIFslZF0gJXAgeyBjYiAlcDolcywgcmV0UEMgJXA6JXMsIGNhbGxlZSAlcDolcywgY2Fs
bGVyRnJhbWUgJXA6JXMsIGFyZ2MgJWQsIHZQQyAlcCB9IiwKLSAgICAgICAgZnJhbWVDb3VudCwg
ZnJhbWUsCi0gICAgICAgIENBU1Q8dm9pZCo+KGZyYW1lW0pTU3RhY2s6OkNvZGVCbG9ja10ucGF5
bG9hZCgpKSwKLSAgICAgICAgZ2V0VHlwZU5hbWUoZnJhbWVbSlNTdGFjazo6Q29kZUJsb2NrXS5q
c1ZhbHVlKCkpLAotICAgICAgICBDQVNUPHZvaWQqPihmcmFtZVtKU1N0YWNrOjpSZXR1cm5QQ10u
cGF5bG9hZCgpKSwKLSAgICAgICAgZ2V0VHlwZU5hbWUoZnJhbWVbSlNTdGFjazo6UmV0dXJuUENd
LmpzVmFsdWUoKSksCi0gICAgICAgIENBU1Q8dm9pZCo+KGZyYW1lW0pTU3RhY2s6OkNhbGxlZV0u
cGF5bG9hZCgpKSwKLSAgICAgICAgZ2V0VHlwZU5hbWUoZnJhbWVbSlNTdGFjazo6Q2FsbGVlXS5q
c1ZhbHVlKCkpLAotICAgICAgICBDQVNUPHZvaWQqPihmcmFtZVtKU1N0YWNrOjpDYWxsZXJGcmFt
ZV0uY2FsbEZyYW1lKCkpLAotICAgICAgICBnZXRUeXBlTmFtZShmcmFtZVtKU1N0YWNrOjpDYWxs
ZXJGcmFtZV0uanNWYWx1ZSgpKSwKLSAgICAgICAgZnJhbWVbSlNTdGFjazo6QXJndW1lbnRDb3Vu
dF0ucGF5bG9hZCgpLAotICAgICAgICB2UEMpOwotCi0gICAgaWYgKGZ1bmNOYW1lIHx8IGZpbGUg
fHwgKGxpbmUgPj0gMCkpIHsKLSAgICAgICAgcHJpbnRmKCIgQCIpOwotICAgICAgICBpZiAoZnVu
Y05hbWUpCi0gICAgICAgICAgICBwcmludGYoIiAlcyIsIGZ1bmNOYW1lKTsKLSAgICAgICAgaWYg
KGZpbGUpCi0gICAgICAgICAgICBwcmludGYoIiAlcyIsIGZpbGUpOwotICAgICAgICBpZiAobGlu
ZSA+PSAwKQotICAgICAgICAgICAgcHJpbnRmKCI6JWQiLCBsaW5lKTsKLSAgICB9Ci0gICAgcHJp
bnRmKCJcbiIpOwotfQotCi1jbGFzcyBDb3VudEZyYW1lc0Z1bmN0b3IgewotcHVibGljOgotICAg
IENvdW50RnJhbWVzRnVuY3RvcigpCi0gICAgICAgIDogbV9jb3VudCgtMSkKLSAgICB7IH0KLQot
ICAgIFN0YWNrVmlzaXRvcjo6U3RhdHVzIG9wZXJhdG9yKCkoU3RhY2tWaXNpdG9yJiB2aXNpdG9y
KQotICAgIHsKLSAgICAgICAgbV9jb3VudCsrOwotICAgICAgICByZXR1cm4gU3RhY2tWaXNpdG9y
OjpDb250aW51ZTsKLSAgICB9Ci0KLSAgICBpbnQgY291bnQoKSBjb25zdCB7IHJldHVybiBtX2Nv
dW50OyB9Ci0KLXByaXZhdGU6Ci0gICAgdW5zaWduZWQgbV9jb3VudDsKLX07Ci0KLWludCBWTUlu
c3BlY3Rvcjo6Y291bnRGcmFtZXMoQ2FsbEZyYW1lKiBmcmFtZSkKLXsKLSAgICBDb3VudEZyYW1l
c0Z1bmN0b3IgZnVuY3RvcigpOwotICAgIFN0YWNrVmlzaXRvcjo6dmlzaXQoZnJhbWUsIGZ1bmN0
b3IpOwotCi0gICAgcmV0dXJuIGZ1bmN0b3IuY291bnQoKTsKLX0KLQotCi0vLz09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS8vICBjbGFzcyBGb3JtYXRQcmludGVyCi0vLyAgICAtIGltcGxlbWVudHMgZnVu
Y3Rpb25hbGl0eSB0byBzdXBwb3J0IGZwcmludGYuCi0vLwotLy8gICAgVGhlIEZvcm1hdFByaW50
ZXIgY2xhc3NlcyBkbyB0aGUgcmVhbCBmb3JtYXR0aW5nIGFuZCBwcmludGluZy4KLS8vICAgIEJ5
IGRlZmF1bHQsIHRoZSBzdXBlcmNsYXNzIEZvcm1hdFByaW50ZXIgd2lsbCBwcmludCB0byBzdGRv
dXQgKHByaW50ZikuCi0vLyAgICBFYWNoIG9mIHRoZSBzdWJjbGFzcyB3aWxsIGltcGxlbWVudCB0
aGUgb3RoZXIgLi4ucHJpbnRmKCkgb3B0aW9ucy4KLS8vICAgIFRoZSBzdWJjbGFzc2VzIGFyZToK
LS8vCi0vLyAgICAgICAgRmlsZUZvcm1hdFByaW50ZXIgICAgIC0gZnByaW50ZgotLy8gICAgICAg
IFN0cmluZ0Zvcm1hdFByaW50ZXIgICAtIHNwcmludGYKLS8vICAgICAgICBTdHJpbmdORm9ybWF0
UHJpbnRlciAgLSBzbnByaW50ZgotCi1jbGFzcyBGb3JtYXRQcmludGVyIHsKLXB1YmxpYzoKLSAg
ICB2aXJ0dWFsIH5Gb3JtYXRQcmludGVyKCkgeyB9Ci0KLSAgICB2b2lkIHByaW50KGNvbnN0IGNo
YXIqIGZvcm1hdCwgdmFfbGlzdCBhcmdzKTsKLQotcHJvdGVjdGVkOgotICAgIC8vIExvdyBsZXZl
bCBwcmludGVyczoKLSAgICBib29sIHByaW50QXJnKGNvbnN0IGNoYXIqIGZvcm1hdCwgLi4uKTsK
LSAgICB2aXJ0dWFsIGJvb2wgcHJpbnRBcmcoY29uc3QgY2hhciogZm9ybWF0LCB2YV9saXN0IGFy
Z3MpOwotCi0gICAgLy8gSlMgdHlwZSBzcGVjaWZpYyBwcmludGVyczoKLSAgICB2b2lkIHByaW50
V1RGU3RyaW5nKHZhX2xpc3QgYXJncywgYm9vbCB2ZXJib3NlKTsKLX07Ci0KLQotLy8gVGhlIHB1
YmxpYyBwcmludCgpIGZ1bmN0aW9uIGlzIHRoZSByZWFsIHdvcmtob3JzZSBiZWhpbmQgdGhlIHBy
aW50ZgotLy8gZmFtaWx5IG9mIGZ1bmN0aW9ucy4gcHJpbnQoKSBkZWNpcGhlcnMgdGhlICUgZm9y
bWF0dGluZywgdHJhbnNsYXRlIHRoZW0KLS8vIHRvIHByaW1pdGl2ZSBmb3JtYXRzLCBhbmQgZGlz
cGF0Y2hlcyB0byB1bmRlcmx5aW5nIHByaW50QXJnKCkgZnVuY3Rpb25zCi0vLyB0byBkbyB0aGUg
cHJpbnRpbmcuCi0vLyAKLS8vIFRoZSBub24tcHVibGljIGludGVybmFsIHByaW50QXJnKCkgZnVu
Y3Rpb24gaXMgdmlydHVhbCBhbmQgaXMgcmVzcG9uc2libGUKLS8vIGZvciBoYW5kbGluZyB0aGUg
dmFyaWF0aW9ucyBiZXR3ZWVuIHByaW50ZiwgZnByaW50Ziwgc3ByaW50ZiwgYW5kIHNucHJpbnRm
LgotCi12b2lkIEZvcm1hdFByaW50ZXI6OnByaW50KGNvbnN0IGNoYXIqIGZvcm1hdCwgdmFfbGlz
dCBhcmdzKQotewotICAgIGNvbnN0IGNoYXIqIHAgPSBmb3JtYXQ7Ci0gICAgY29uc3QgY2hhciog
ZXJyb3JTdHI7Ci0KLSAgICAvLyBidWZmZXIgaXMgb25seSB1c2VkIGZvciAyIHB1cnBvc2VzOgot
ICAgIC8vIDEuIFRvIHRlbXBvcmFyaWx5IGhvbGQgYSBjb3B5IG9mIG5vcm1hbCBjaGFycyAobm90
IG5lZWRpbmcgZm9ybWF0dGluZykKLSAgICAvLyAgICB0byBiZSBwYXNzZWQgdG8gcHJpbnRBcmco
KSBhbmQgcHJpbnRlZC4KLSAgICAvLwotICAgIC8vICAgIFRoZSBpbmNvbWluZyBmb3JtYXQgc3Ry
aW5nIG1heSBjb250YWluIGEgc3RyaW5nIG9mIG5vcm1hbCBjaGFycyBtdWNoCi0gICAgLy8gICAg
bG9uZ2VyIHRoYW4gMTI4LCBidXQgd2UgaGFuZGxlIHRoaXMgYnkgYnJlYWtpbmcgdGhlbSBvdXQg
dG8gMTI4IGNoYXJzCi0gICAgLy8gICAgZnJhZ21lbnRzIGFuZCBwcmludGluZyBlYWNoIGZyYWdt
ZW50IGJlZm9yZSByZS11c2luZyB0aGUgYnVmZmVyIHRvCi0gICAgLy8gICAgbG9hZCB1cCB0aGUg
bmV4dCBmcmFnbWVudC4KLSAgICAvLwotICAgIC8vIDIuIFRvIGhvbGQgYSBzaW5nbGUgIiUuLi4i
IGZvcm1hdCB0byBiZSBwYXNzZWQgdG8gcHJpbnRBcmcoKSB0byBwcm9jZXNzCi0gICAgLy8gICAg
YSBzaW5nbGUgdmFfYXJnLgotCi0gICAgY2hhciBidWZmZXJbMTI5XTsgLy8gMTI4IGNoYXJzICsg
bnVsbCB0ZXJtaW5hdG9yLgotICAgIGNoYXIqIGVuZCA9ICZidWZmZXJbc2l6ZW9mKGJ1ZmZlcikg
LSAxXTsKLSAgICBjb25zdCBjaGFyKiBzdGFydE9mRm9ybWF0U3BlY2lmaWVyID0gMDsKLQotICAg
IHdoaWxlICh0cnVlKSB7Ci0gICAgICAgIGNoYXIgYyA9ICpwKys7Ci0gICAgICAgIGNoYXIqIGN1
cnIgPSBidWZmZXI7Ci0KLSAgICAgICAgLy8gUHJpbnQgbGVhZGluZyBub3JtYWwgY2hhcnM6Ci0g
ICAgICAgIHdoaWxlIChjICE9ICdcMCcgJiYgYyAhPSAnJScpIHsKLSAgICAgICAgICAgICpjdXJy
KysgPSBjOwotICAgICAgICAgICAgaWYgKGN1cnIgPT0gZW5kKSB7Ci0gICAgICAgICAgICAgICAg
Ly8gT3V0IG9mIGJ1ZmZlciBzcGFjZS4gRmx1c2ggdGhlIGZyYWdtZW50LCBhbmQgc3RhcnQgb3Zl
ci4KLSAgICAgICAgICAgICAgICAqY3VyciA9ICdcMCc7Ci0gICAgICAgICAgICAgICAgYm9vbCBz
dWNjZXNzID0gcHJpbnRBcmcoIiVzIiwgYnVmZmVyKTsKLSAgICAgICAgICAgICAgICBpZiAoIXN1
Y2Nlc3MpIHsKLSAgICAgICAgICAgICAgICAgICAgZXJyb3JTdHIgPSBidWZmZXI7Ci0gICAgICAg
ICAgICAgICAgICAgIGdvdG8gaGFuZGxlRXJyb3I7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgIGN1cnIgPSBidWZmZXI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBjID0g
KnArKzsKLSAgICAgICAgfQotICAgICAgICAvLyBJZiB3ZSBoYXZlIHN0dWZmIGluIHRoZSBidWZm
ZXIsIGZsdXNoIHRoZSBmcmFnbWVudDoKLSAgICAgICAgaWYgKGN1cnIgIT0gYnVmZmVyKSB7Ci0g
ICAgICAgICAgICBBU1NFUlQoY3VyciA8IGVuZCArIDEpOwotICAgICAgICAgICAgKmN1cnIgPSAn
XDAnOwotICAgICAgICAgICAgYm9vbCBzdWNjZXNzID0gcHJpbnRBcmcoIiVzIiwgYnVmZmVyKTsK
LSAgICAgICAgICAgIGlmICghc3VjY2VzcykgewotICAgICAgICAgICAgICAgIGVycm9yU3RyID0g
YnVmZmVyOwotICAgICAgICAgICAgICAgIGdvdG8gaGFuZGxlRXJyb3I7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBFbmQgaWYgdGhlcmUgYXJlIG5vdCBtb3JlIGNoYXJz
IHRvIHByaW50OgotICAgICAgICBpZiAoYyA9PSAnXDAnKQotICAgICAgICAgICAgYnJlYWs7Ci0K
LSAgICAgICAgLy8gSWYgd2UgZ2V0IGhlcmUsIHdlJ3ZlIG11c3QgaGF2ZSBzZWVuIGEgJyUnOgot
ICAgICAgICBzdGFydE9mRm9ybWF0U3BlY2lmaWVyID0gcCAtIDE7Ci0gICAgICAgIEFTU0VSVCgq
c3RhcnRPZkZvcm1hdFNwZWNpZmllciA9PSAnJScpOwotICAgICAgICBjID0gKnArKzsKLQotICAg
ICAgICAvLyBDaGVjayBmb3IgIiUlIiBjYXNlOgotICAgICAgICBpZiAoYyA9PSAnJScpIHsKLSAg
ICAgICAgICAgIGJvb2wgc3VjY2VzcyA9IHByaW50QXJnKCIlYyIsICclJyk7Ci0gICAgICAgICAg
ICBpZiAoIXN1Y2Nlc3MpIHsKLSAgICAgICAgICAgICAgICBlcnJvclN0ciA9IHAgLSAyOwotICAg
ICAgICAgICAgICAgIGdvdG8gaGFuZGxlRXJyb3I7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIENoZWNrIGZvciBKUyAoJUo8eD4p
IGZvcm1hdHRpbmcgZXh0ZW5zaW9uczoKLSAgICAgICAgaWYgKGMgPT0gJ0onKSB7Ci0gICAgICAg
ICAgICBib29sIHZlcmJvc2UgPSBmYWxzZTsKLQotICAgICAgICAgICAgYyA9ICpwKys7Ci0gICAg
ICAgICAgICBpZiAoVU5MSUtFTFkoYyA9PSAnXDAnKSkgewotICAgICAgICAgICAgICAgIGVycm9y
U3RyID0gcCAtIDI7IC8vIFJld2luZCB0byAlIGluICIlSlwwIgotICAgICAgICAgICAgICAgIGdv
dG8gaGFuZGxlRXJyb3I7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChjID09ICcr
JykgewotICAgICAgICAgICAgICAgIHZlcmJvc2UgPSB0cnVlOwotICAgICAgICAgICAgICAgIGM9
ICpwKys7Ci0gICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKGMgPT0gJ1wwJykpIHsKLSAgICAg
ICAgICAgICAgICAgICAgZXJyb3JTdHIgPSBwIC0gMzsgLy8gUmV3aW5kIHRvICUgaW4gIiVKK1ww
IgotICAgICAgICAgICAgICAgICAgICBnb3RvIGhhbmRsZUVycm9yOwotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgc3dpdGNoIChjKSB7Ci0gICAgICAgICAg
ICAvLyAlSnMgLSBXVEY6OlN0cmluZyoKLSAgICAgICAgICAgIGNhc2UgJ3MnOiB7Ci0gICAgICAg
ICAgICAgICAgcHJpbnRXVEZTdHJpbmcoYXJncywgdmVyYm9zZSk7Ci0gICAgICAgICAgICAgICAg
Y29udGludWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IC8vIEVORCBzd2l0Y2guCi0K
LSAgICAgICAgLy8gQ2hlY2sgZm9yIG5vbi1KUyBleHRlbnNpb25zOgotICAgICAgICB9IGVsc2Ug
aWYgKGMgPT0gJ2InKSB7Ci0gICAgICAgICAgICBpbnQgdmFsdWUgPSB2YV9hcmcoYXJncywgaW50
KTsKLSAgICAgICAgICAgIHByaW50QXJnKCIlcyIsIHZhbHVlID8gIlRSVUUiIDogIkZBTFNFIik7
Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIElmIHdlIGRp
ZG4ndCBoYW5kbGUgdGhlIGZvcm1hdCBpbiBvbmUgb2YgdGhlIGFib3ZlIGNhc2VzLAotICAgICAg
ICAvLyByZXdpbmQgcCBhbmQgbGV0IHRoZSBzdGFuZGFyZCBmb3JtYXR0aW5nIGNoZWNrIGhhbmRs
ZSBpdAotICAgICAgICAvLyBpZiBwb3NzaWJsZToKLSAgICAgICAgcCA9IHN0YXJ0T2ZGb3JtYXRT
cGVjaWZpZXI7Ci0gICAgICAgIEFTU0VSVCgqcCA9PSAnJScpOwotCi0gICAgICAgIC8vIENoZWNr
IGZvciBzdGFuZGFyZCBmb3JtYXR0aW5nOgotICAgICAgICAvLyBBIGZvcm1hdCBzcGVjaWZpZXIg
YWx3YXlzIHN0YXJ0cyB3aXRoIGEgJSBhbmQgZW5kcyB3aXRoIHNvbWUKLSAgICAgICAgLy8gYWxw
aGFiZXQuIFdlJ2xsIGRvIHRoZSBzaW1wbGUgdGhpbmcgYW5kIHNjYW4gdW50aWwgdGhlIG5leHQK
LSAgICAgICAgLy8gYWxwaGFiZXQsIG9yIHRoZSBlbmQgb2Ygc3RyaW5nLgotCi0gICAgICAgIC8v
IEluIHRoZSBmb2xsb3dpbmcsIHdlJ3JlIGdvaW5nIHRvIHVzZSBidWZmZXIgYXMgc3RvcmFnZSBm
b3IgYSBjb3B5Ci0gICAgICAgIC8vIG9mIGEgc2luZ2xlIGZvcm1hdCBzcGVjaWZpZXIuIEhlbmNl
LCBjb25jZXB0dWFsbHksIHdlIGNhbiB0aGluayBvZgotICAgICAgICAvLyAnYnVmZmVyJyBhcyBz
eW5vbnltb3VzIHdpdGggJ2FyZ0Zvcm1hdCcgaGVyZToKLQotI2RlZmluZSBBQk9SVF9JRl9GT1JN
QVRfVE9PX0xPTkcoY3VycikgXAotICAgICAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAotICAgICAgICAgICAgaWYgKFVOTElLRUxZKGN1cnIgPj0gZW5kKSkgXAotICAgICAgICAg
ICAgICAgIGdvdG8gZm9ybWF0VG9vTG9uZzsgICAgXAotICAgICAgICB9IHdoaWxlIChmYWxzZSkK
LSAgICAgICAgCi0gICAgICAgIGN1cnIgPSBidWZmZXI7Ci0gICAgICAgICpjdXJyKysgPSAqcCsr
OyAvLyBPdXRwdXQgdGhlIGZpcnN0ICUgaW4gdGhlIGZvcm1hdCBzcGVjaWZpZXIuCi0gICAgICAg
IGMgPSAqcCsrOyAvLyBHcmFiIHRoZSBuZXh0IGNoYXIgaW4gdGhlIGZvcm1hdCBzcGVjaWZpZXIu
Ci0KLSAgICAgICAgLy8gQ2hlY2tzIGZvciBsZWFkaW5nIG1vZGlmaWVycyBlLmcuICIlLWQiOgot
ICAgICAgICAvLyAgICAgMCwgLSwgJyAnLCArLCAnXCcnCi0gICAgICAgIGlmIChjID09ICcwJyB8
fCBjID09ICctJyB8fCBjID09ICcgJyB8fCBjID09ICcrJyB8fCBjID09ICdcJycgfHwgYyA9PSAn
IycpIHsKLSAgICAgICAgICAgIEFCT1JUX0lGX0ZPUk1BVF9UT09fTE9ORyhjdXJyKTsKLSAgICAg
ICAgICAgICpjdXJyKysgPSBjOwotICAgICAgICAgICAgYyA9ICpwKys7Ci0gICAgICAgIH0KLQot
ICAgICAgICAvLyBDaGVja3MgZm9yIGRlY2ltYWwgZGlnaXQgZmllbGQgd2lkdGggbW9kaWZpZXJz
IGUuZy4gIiUyZiI6Ci0gICAgICAgIHdoaWxlIChjID49ICcwJyAmJiBjIDw9ICc5JykgewotICAg
ICAgICAgICAgQUJPUlRfSUZfRk9STUFUX1RPT19MT05HKGN1cnIpOwotICAgICAgICAgICAgKmN1
cnIrKyA9IGM7Ci0gICAgICAgICAgICBjID0gKnArKzsKLSAgICAgICAgfQotCi0gICAgICAgIC8v
IENoZWNrcyBmb3IgJy4nIGUuZy4gIiUyLmYiOgotICAgICAgICBpZiAoYyA9PSAnLicpIHsKLSAg
ICAgICAgICAgIEFCT1JUX0lGX0ZPUk1BVF9UT09fTE9ORyhjdXJyKTsKLSAgICAgICAgICAgICpj
dXJyKysgPSBjOwotICAgICAgICAgICAgYyA9ICpwKys7Ci0KLSAgICAgICAgICAgIC8vIENoZWNr
cyBmb3IgZGVjaW1hbCBkaWdpdCBwcmVjaXNpb24gbW9kaWZpZXJzICBlLmcuICIlLjJmIjoKLSAg
ICAgICAgICAgIHdoaWxlIChjID49ICcwJyAmJiBjIDw9ICc5JykgewotICAgICAgICAgICAgICAg
IEFCT1JUX0lGX0ZPUk1BVF9UT09fTE9ORyhjdXJyKTsKLSAgICAgICAgICAgICAgICAqY3Vycisr
ID0gYzsKLSAgICAgICAgICAgICAgICBjID0gKnArKzsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fQotCi0gICAgICAgIC8vIENoZWNrcyBmb3IgdGhlIG1vZGlmaWVyIDxtPiB3aGVyZSA8bT4gY2Fu
IGJlOgotICAgICAgICAvLyAgICAgbCwgaCwgaiwgdCwgegotICAgICAgICAvLyBlLmcuICIlbGQi
Ci0gICAgICAgIGlmIChjID09ICdsJyB8fCBjID09ICdoJyB8fCBjID09ICdqJyB8fCBjID09ICd0
JyB8fCBjID09ICd6JyB8fCBjID09ICdMJykgewotICAgICAgICAgICAgQUJPUlRfSUZfRk9STUFU
X1RPT19MT05HKGN1cnIpOwotICAgICAgICAgICAgKmN1cnIrKyA9IGM7Ci0gICAgICAgICAgICBj
aGFyIHByZXZDaGFyID0gYzsKLSAgICAgICAgICAgIGMgPSAqcCsrOwotCi0gICAgICAgICAgICAv
LyBDaGVja3MgZm9yIHRoZSBtb2RpZmllciBsbCBvciBoaCBpbiAlPHg+PG0+OgotICAgICAgICAg
ICAgaWYgKChwcmV2Q2hhciA9PSAnbCcgfHwgcHJldkNoYXIgPT0gJ2gnKSAmJiBjID09IHByZXZD
aGFyKSB7Ci0gICAgICAgICAgICAgICAgQUJPUlRfSUZfRk9STUFUX1RPT19MT05HKGN1cnIpOwot
ICAgICAgICAgICAgICAgICpjdXJyKysgPSBjOwotICAgICAgICAgICAgICAgIGMgPSAqcCsrOwot
ICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgLy8gQ2hlY2tzIGZvciAlPHg+IHdo
ZXJlIDx4PiBjYW4gYmU6Ci0gICAgICAgIC8vICAgICBkLCBpLCBuLCBvLCB1LCB4LCBYCi0gICAg
ICAgIC8vIEJ1dCBoZXksIHdlJ3JlIGp1c3QgZ29pbmcgdG8gZG8gdGhlIHNpbXBsZSB0aGluZyBh
bmQgYWxsb3cgYW55Ci0gICAgICAgIC8vIGFscGhhYmV0LiBUaGUgdXNlciBpcyBleHBlY3RlZCB0
byBwYXNzIGNvcnJlY3QgZm9ybWF0IHNwZWNpZmllcnMuCi0gICAgICAgIC8vIFdlIHdvbid0IGRv
IGFueSBmb3JtYXQgY2hlY2tpbmcgaGVyZS4gV2UnbGwganVzdCBwYXNzIGl0IG9uLCBhbmQgdGhl
Ci0gICAgICAgIC8vIHVuZGVybHlpbmcgLi4ucHJpbnRmKCkgaW1wbGVtZW50YXRpb24gbWF5IGRv
IHRoZSBuZWVkZWQgY2hlY2tpbmcKLSAgICAgICAgLy8gYXQgaXRzIGRpc2NyZXRpb24uCi0gICAg
ICAgIHdoaWxlIChjICE9ICdcMCcgJiYgIWlzQVNDSUlBbHBoYShjKSkgewotICAgICAgICAgICAg
QUJPUlRfSUZfRk9STUFUX1RPT19MT05HKGN1cnIpOwotICAgICAgICAgICAgKmN1cnIrKyA9IGM7
Ci0gICAgICAgICAgICBjID0gKnArKzsKLSAgICAgICAgfQotCi0gICAgICAgIEFCT1JUX0lGX0ZP
Uk1BVF9UT09fTE9ORyhjdXJyKTsKLSAgICAgICAgKmN1cnIrKyA9IGM7Ci0gICAgICAgIGlmIChj
ID09ICdcMCcpIHsKLSAgICAgICAgICAgIC8vIFVoIG9oLiBCYWQgZm9ybWF0LiBXZSBzaG91bGQg
aGF2ZSBnb3R0ZW4gYW4gYWxwaGFiZXQgaW5zdGVhZC4KLSAgICAgICAgICAgIC8vIFByaW50IHRo
ZSBzdXBwb3NlZCBmb3JtYXQgYXMgYSBzdHJpbmcgaW5zdGVhZDoKLSAgICAgICAgICAgIGVycm9y
U3RyID0gYnVmZmVyOwotICAgICAgICAgICAgZ290byBoYW5kbGVFcnJvcjsKLSAgICAgICAgfQot
Ci0gICAgICAgIC8vIE90aGVyd2lzZSwgd2UgaGF2ZSB0aGUgYWxwaGEgdGhhdCB0ZXJtaW5hdGVz
IHRoZSBmb3JtYXQuCi0gICAgICAgIC8vIFRlcm1pbmF0ZSB0aGUgYnVmZmVyIChpLmUuIGFyZ0Zv
cm1hdCkgc3RyaW5nOgotICAgICAgICBBU1NFUlQoaXNBU0NJSUFscGhhKGMpKTsKLSAgICAgICAg
QUJPUlRfSUZfRk9STUFUX1RPT19MT05HKGN1cnIpOwotICAgICAgICAqY3VyciA9ICdcMCc7Ci0K
LSAgICAgICAgYm9vbCBzdWNjZXNzID0gcHJpbnRBcmcoYnVmZmVyLCBhcmdzKTsKLSAgICAgICAg
aWYgKCFzdWNjZXNzKSB7Ci0gICAgICAgICAgICBlcnJvclN0ciA9IGJ1ZmZlcjsKLSAgICAgICAg
ICAgIGdvdG8gaGFuZGxlRXJyb3I7Ci0gICAgICAgIH0KLSAgICB9Ci0jdW5kZWYgQUJPUlRfSUZf
Rk9STUFUX1RPT19MT05HCi0KLSAgICByZXR1cm47Ci0KLWZvcm1hdFRvb0xvbmc6Ci0gICAgLy8g
UHJpbnQgdGhlIGVycm9yIHN0cmluZzoKLSAgICBBU1NFUlQoISFzdGFydE9mRm9ybWF0U3BlY2lm
aWVyKTsKLSAgICBwID0gc3RhcnRPZkZvcm1hdFNwZWNpZmllcjsKLSAgICBBU1NFUlQocCA+PSBm
b3JtYXQpOwotICAgIHByaW50QXJnKCJFUlJPUiBAIEZvcm1hdCB0b28gbG9uZyBhdCBcIiVzXCJc
biIsIHApOwotICAgIHJldHVybjsKLQotaGFuZGxlRXJyb3I6Ci0gICAgLy8gV2UndmUgZ290IGFu
IGVycm9yLiBDYW4ndCBkbyBhbnkgbW9yZSB3b3JrLiBQcmludCBhbiBlcnJvciBtZXNzYWdlIGlm
Ci0gICAgLy8gcG9zc2libGUgYW5kIHRoZW4ganVzdCByZXR1cm4uCi0KLSAgICAvLyBUaGUgZXJy
b3JTdHIgbWF5IGJlIHBvaW50aW5nIGludG8gdGhlIG1pZGRsZSBvZiBidWZmZXIsIG9yIHRoZSBv
cmlnaW5hbAotICAgIC8vIGZvcm1hdCBzdHJpbmcuIE1vdmUgdGhlIHN0cmluZyB0byBidWZmZXIg
Zm9yIGNvbnNpc3RlbmN5LCBhbmQgYWxzbyBzbwotICAgIC8vIHRoYXQgd2UgY2FuIHN0cmlwIGl0
IG9mIG5ld2xpbmVzIGJlbG93LgotICAgIGlmIChlcnJvclN0ciAhPSBidWZmZXIpIHsKLSAgICAg
ICAgc2l6ZV90IGxlbmd0aCA9IHN0cmxlbihlcnJvclN0cik7Ci0gICAgICAgIGlmIChsZW5ndGgg
PiBzaXplb2YoYnVmZmVyKSAtIDEpCi0gICAgICAgICAgICBsZW5ndGggPSBzaXplb2YoYnVmZmVy
KSAtIDE7Ci0gICAgICAgIG1lbW1vdmUoYnVmZmVyLCBlcnJvclN0ciwgbGVuZ3RoKTsKLSAgICAg
ICAgYnVmZmVyW2xlbmd0aF0gPSAnXDAnOyAvLyBUZXJtaW5hdGUgdGhlIG1vdmVkIGVycm9yIHN0
cmluZy4KLSAgICB9Ci0gICAgLy8gU3RyaXAgdGhlIG5ld2xpbmVzOgotICAgIGNoYXIqIGNwID0g
YnVmZmVyOwotICAgIHdoaWxlICgqY3ApIHsKLSAgICAgICAgaWYgKCpjcCA9PSAnXG4nIHx8ICpj
cCA9PSAnXHInKQotICAgICAgICAgICAgKmNwID0gJyAnOwotICAgICAgICBjcCsrOwotICAgIH0K
LSAgICAvLyBQcmludCB0aGUgZXJyb3Igc3RyaW5nOgotICAgIHByaW50QXJnKCJFUlJPUiBAIFwi
JXNcIlxuIiwgYnVmZmVyKTsKLX0KLQotCi1ib29sIEZvcm1hdFByaW50ZXI6OnByaW50QXJnKGNv
bnN0IGNoYXIqIGZvcm1hdCwgLi4uKQotewotICAgIHZhX2xpc3QgYXJnczsKLSAgICB2YV9zdGFy
dChhcmdzLCBmb3JtYXQpOwotICAgIGJvb2wgc3VjY2VzcyA9IHByaW50QXJnKGZvcm1hdCwgYXJn
cyk7Ci0gICAgdmFfZW5kKGFyZ3MpOwotICAgIHJldHVybiBzdWNjZXNzOwotfQotCi1ib29sIEZv
cm1hdFByaW50ZXI6OnByaW50QXJnKGNvbnN0IGNoYXIqIGZvcm1hdCwgdmFfbGlzdCBhcmdzKQot
ewotICAgIGludCBjb3VudCA9IDo6dnByaW50Zihmb3JtYXQsIGFyZ3MpOwotICAgIHJldHVybiAo
Y291bnQgPj0gMCk7IC8vIEZhaWwgaWYgbGVzcyB0aGFuIDAgY2hhcnMgcHJpbnRlZC4KLX0KLQot
Ci0vLyAlSnMgLSBXVEY6OlN0cmluZyoKLS8vIHZlcmJvc2UgbW9kZSBwcmludHM6IFdURjo6U3Ry
aW5nICI8eW91ciBzdHJpbmc+Igotdm9pZCBGb3JtYXRQcmludGVyOjpwcmludFdURlN0cmluZyh2
YV9saXN0IGFyZ3MsIGJvb2wgdmVyYm9zZSkKLXsKLSAgICBjb25zdCBTdHJpbmcqIHN0ciA9IHZh
X2FyZyhhcmdzLCBjb25zdCBTdHJpbmcqKTsKLQotICAgIC8vIFByaW50IHZlcmJvc2UgaGVhZGVy
IGlmIGFwcHJvcHJpYXRlOgotICAgIGlmICh2ZXJib3NlKQotICAgICAgICBwcmludEFyZygiV1RG
OjpTdHJpbmcgXCIiKTsKLQotICAgIC8vIFByaW50IHRoZSBzdHJpbmcgaXRzZWxmOgotICAgIGlm
ICghc3RyLT5pc0VtcHR5KCkpIHsKLSAgICAgICAgaWYgKHN0ci0+aXM4Qml0KCkpIHsKLSAgICAg
ICAgICAgIGNvbnN0IExDaGFyKiBjaGFycyA9IHN0ci0+Y2hhcmFjdGVyczgoKTsKLSAgICAgICAg
ICAgIHByaW50QXJnKCIlcyIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGNoYXJzKSk7
Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBjb25zdCBVQ2hhciogY2hhcnMgPSBzdHIt
PmNoYXJhY3RlcnMxNigpOwotICAgICAgICAgICAgcHJpbnRBcmcoIiVTIiwgcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB3Y2hhcl90Kj4oY2hhcnMpKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8v
IFByaW50IHZlcmJvc2UgZm9vdGVyIGlmIGFwcHJvcHJpYXRlOgotICAgIGlmICh2ZXJib3NlKQot
ICAgICAgICBwcmludEFyZygiXCIiKTsKLX0KLQotCi0vLz09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS8v
ICBjbGFzcyBGaWxlRm9ybWF0UHJpbnRlcgotLy8gICAgLSBpbXBsZW1lbnRzIGZ1bmN0aW9uYWxp
dHkgdG8gc3VwcG9ydCBmcHJpbnRmLgotCi1jbGFzcyBGaWxlRm9ybWF0UHJpbnRlcjogcHVibGlj
IEZvcm1hdFByaW50ZXIgewotcHVibGljOgotICAgIEZpbGVGb3JtYXRQcmludGVyKEZJTEUqKTsK
LXByaXZhdGU6Ci0gICAgdmlydHVhbCBib29sIHByaW50QXJnKGNvbnN0IGNoYXIqIGZvcm1hdCwg
dmFfbGlzdCBhcmdzKTsKLQotICAgIEZJTEUqIG1fZmlsZTsKLX07Ci0KLUZpbGVGb3JtYXRQcmlu
dGVyOjpGaWxlRm9ybWF0UHJpbnRlcihGSUxFKiBmaWxlKQotICAgIDogbV9maWxlKGZpbGUpCi17
IAotfQotCi1ib29sIEZpbGVGb3JtYXRQcmludGVyOjpwcmludEFyZyhjb25zdCBjaGFyKiBmb3Jt
YXQsIHZhX2xpc3QgYXJncykKLXsKLSAgICBpbnQgY291bnQgPSA6OnZmcHJpbnRmKG1fZmlsZSwg
Zm9ybWF0LCBhcmdzKTsKLSAgICByZXR1cm4gKGNvdW50ID49IDApOyAvLyBGYWlsIGlmIGxlc3Mg
dGhhbiAwIGNoYXJzIHByaW50ZWQuCi19Ci0KLQotLy89PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0vLyAg
Y2xhc3MgU3RyaW5nRm9ybWF0UHJpbnRlcgotLy8gICAgLSBpbXBsZW1lbnRzIGZ1bmN0aW9uYWxp
dHkgdG8gc3VwcG9ydCBzcHJpbnRmLgotCi1jbGFzcyBTdHJpbmdGb3JtYXRQcmludGVyOiBwdWJs
aWMgRm9ybWF0UHJpbnRlciB7Ci1wdWJsaWM6Ci0gICAgU3RyaW5nRm9ybWF0UHJpbnRlcihjaGFy
KiBidWZmZXIpOwotcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGJvb2wgcHJpbnRBcmcoY29uc3QgY2hh
ciogZm9ybWF0LCB2YV9saXN0IGFyZ3MpOwotCi0gICAgY2hhciogbV9idWZmZXI7Ci19OwotCi1T
dHJpbmdGb3JtYXRQcmludGVyOjpTdHJpbmdGb3JtYXRQcmludGVyKGNoYXIqIGJ1ZmZlcikKLSAg
ICA6IG1fYnVmZmVyKGJ1ZmZlcikKLXsgCi19Ci0KLWJvb2wgU3RyaW5nRm9ybWF0UHJpbnRlcjo6
cHJpbnRBcmcoY29uc3QgY2hhciogZm9ybWF0LCB2YV9saXN0IGFyZ3MpCi17Ci0gICAgaW50IGNv
dW50ID0gOjp2c3ByaW50ZihtX2J1ZmZlciwgZm9ybWF0LCBhcmdzKTsKLSAgICBtX2J1ZmZlciAr
PSBjb3VudDsKLSAgICByZXR1cm4gKGNvdW50ID49IDApOyAvLyBGYWlsIGlmIGxlc3MgdGhhbiAw
IGNoYXJzIHByaW50ZWQuCi19Ci0KLQotLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0vLyAgY2xhc3Mg
U3RyaW5nTkZvcm1hdFByaW50ZXIKLS8vICAgIC0gaW1wbGVtZW50cyBmdW5jdGlvbmFsaXR5IHRv
IHN1cHBvcnQgc25wcmludGYuCi0KLWNsYXNzIFN0cmluZ05Gb3JtYXRQcmludGVyOiBwdWJsaWMg
Rm9ybWF0UHJpbnRlciB7Ci1wdWJsaWM6Ci0gICAgU3RyaW5nTkZvcm1hdFByaW50ZXIoY2hhciog
YnVmZmVyLCBzaXplX3QpOwotcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGJvb2wgcHJpbnRBcmcoY29u
c3QgY2hhciogZm9ybWF0LCB2YV9saXN0IGFyZ3MpOwotCi0gICAgY2hhciogbV9idWZmZXI7Ci0g
ICAgc2l6ZV90IG1fc2l6ZTsKLX07Ci0KLQotU3RyaW5nTkZvcm1hdFByaW50ZXI6OlN0cmluZ05G
b3JtYXRQcmludGVyKGNoYXIqIGJ1ZmZlciwgc2l6ZV90IHNpemUpCi0gICAgOiBtX2J1ZmZlcihi
dWZmZXIpCi0gICAgLCBtX3NpemUoc2l6ZSkKLXsKLX0KLQotYm9vbCBTdHJpbmdORm9ybWF0UHJp
bnRlcjo6cHJpbnRBcmcoY29uc3QgY2hhciogZm9ybWF0LCB2YV9saXN0IGFyZ3MpCi17Ci0gICAg
aWYgKG1fc2l6ZSA+IDApIHsKLSAgICAgICAgaW50IGNvdW50ID0gOjp2c25wcmludGYobV9idWZm
ZXIsIG1fc2l6ZSwgZm9ybWF0LCBhcmdzKTsKLQotICAgICAgICAvLyBBY2NvcmRpbmcgdG8gdnNu
cHJpbnRmIHNwZWNzLCAuLi4KLSAgICAgICAgYm9vbCBzdWNjZXNzID0gKGNvdW50ID49IDApOwot
ICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8c2l6ZV90Pihjb3VudCkgPj0gbV9zaXplKSB7Ci0gICAg
ICAgICAgICAvLyBJZiBjb3VudCA+IHNpemUsIHRoZW4gd2UgZGlkbid0IGhhdmUgZW5vdWdoIGJ1
ZmZlciBzcGFjZS4KLSAgICAgICAgICAgIGNvdW50ID0gbV9zaXplOwotICAgICAgICB9Ci0KLSAg
ICAgICAgLy8gQWRqdXN0IHRoZSBidWZmZXIgdG8gd2hhdCdzIGxlZnQgaWYgYXBwcm9wcmlhdGU6
Ci0gICAgICAgIGlmIChzdWNjZXNzKSB7Ci0gICAgICAgICAgICBtX2J1ZmZlciArPSBjb3VudDsK
LSAgICAgICAgICAgIG1fc2l6ZSAtPSBjb3VudDsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4g
c3VjY2VzczsKLSAgICB9Ci0gICAgLy8gTm8gbW9yZSByb29tIHRvIHByaW50LiBEZWNsYXJlIGl0
IGEgZmFpbDoKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLQotLy89PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0vLyAgVk1JbnNwZWN0b3IgcHJpbnRmIGZhbWlseSBvZiBtZXRob2RzOgotCi12b2lkIFZNSW5z
cGVjdG9yOjpmcHJpbnRmKEZJTEUqIGZpbGUsIGNvbnN0IGNoYXIqIGZvcm1hdCwgLi4uKQotewot
ICAgIHZhX2xpc3QgYXJnczsKLSAgICB2YV9zdGFydChhcmdzLCBmb3JtYXQpOwotICAgIEZpbGVG
b3JtYXRQcmludGVyKGZpbGUpLnByaW50KGZvcm1hdCwgYXJncyk7Ci0gICAgdmFfZW5kKGFyZ3Mp
OwotfQotCi12b2lkIFZNSW5zcGVjdG9yOjpwcmludGYoY29uc3QgY2hhciogZm9ybWF0LCAuLi4p
Ci17Ci0gICAgdmFfbGlzdCBhcmdzOwotICAgIHZhX3N0YXJ0KGFyZ3MsIGZvcm1hdCk7Ci0gICAg
Rm9ybWF0UHJpbnRlcigpLnByaW50KGZvcm1hdCwgYXJncyk7Ci0gICAgdmFfZW5kKGFyZ3MpOwot
fQotCi12b2lkIFZNSW5zcGVjdG9yOjpzcHJpbnRmKGNoYXIqIGJ1ZmZlciwgY29uc3QgY2hhciog
Zm9ybWF0LCAuLi4pCi17Ci0gICAgdmFfbGlzdCBhcmdzOwotICAgIHZhX3N0YXJ0KGFyZ3MsIGZv
cm1hdCk7Ci0gICAgU3RyaW5nRm9ybWF0UHJpbnRlcihidWZmZXIpLnByaW50KGZvcm1hdCwgYXJn
cyk7Ci0gICAgdmFfZW5kKGFyZ3MpOwotfQotCi12b2lkIFZNSW5zcGVjdG9yOjpzbnByaW50Zihj
aGFyKiBidWZmZXIsIHNpemVfdCBzaXplLCBjb25zdCBjaGFyKiBmb3JtYXQsIC4uLikKLXsKLSAg
ICB2YV9saXN0IGFyZ3M7Ci0gICAgdmFfc3RhcnQoYXJncywgZm9ybWF0KTsKLSAgICBTdHJpbmdO
Rm9ybWF0UHJpbnRlcihidWZmZXIsIHNpemUpLnByaW50KGZvcm1hdCwgYXJncyk7Ci0gICAgdmFf
ZW5kKGFyZ3MpOwotfQotCi19IC8vIG5hbWVzcGFjZSBKU0MKLQotI2VuZGlmIC8vIEVOQUJMRShW
TUlOU1BFQ1RPUikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9WTUlu
c3BlY3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9WTUluc3BlY3Rvci5oCShyZXZpc2lvbiAxODI4NjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvVk1JbnNwZWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMSw4OSArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0g
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpZm5k
ZWYgVk1JbnNwZWN0b3JfaAotI2RlZmluZSBWTUluc3BlY3Rvcl9oCi0KLSNkZWZpbmUgRU5BQkxF
X1ZNSU5TUEVDVE9SIDAKLQotI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgotI2luY2x1ZGUgIkpTQ0pT
VmFsdWUuaCIKLSNpbmNsdWRlIDxzdGRhcmcuaD4KLSNpbmNsdWRlIDxzdGRpby5oPgotI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgSlNDIHsKLQotI2lmIEVOQUJM
RShWTUlOU1BFQ1RPUikKLQotY2xhc3MgVk1JbnNwZWN0b3IgewotcHVibGljOiAgICAKLSAgICBz
dGF0aWMgSlNfRVhQT1JUX1BSSVZBVEUgY29uc3QgY2hhciogZ2V0VHlwZU5hbWUoSlNWYWx1ZSk7
Ci0gICAgc3RhdGljIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZHVtcEZyYW1lMChDYWxsRnJhbWUq
KTsKLSAgICBzdGF0aWMgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBkdW1wRnJhbWUoQ2FsbEZyYW1l
KiwgY29uc3QgY2hhciogcHJlZml4ID0gMCwgY29uc3QgY2hhciogZnVuY05hbWUgPSAwLCBjb25z
dCBjaGFyKiBmaWxlID0gMCwgaW50IGxpbmUgPSAtMSk7Ci0gICAgc3RhdGljIEpTX0VYUE9SVF9Q
UklWQVRFIGludCBjb3VudEZyYW1lcyhDYWxsRnJhbWUqKTsKLQotICAgIC8vIFNwZWNpYWwgZmFt
aWx5IG9mIC4uLnByaW50ZigpIGZ1bmN0aW9ucyB0aGF0IHN1cHBvcnQsIGluIGFkZGl0aW9uIHRv
IHRoZQotICAgIC8vIHN0YW5kYXJkICUgZm9ybWF0cyAoZS5nLiAlZCwgJXMsIGV0YyksIHRoZSBm
b2xsb3dpbmcgZXh0cmEgSlNDIGZvcm1hdHRpbmcKLSAgICAvLyBvcHRpb25zLCAlSjx4Piwgd2hl
cmUgPHg+IGNvbnNpc3RzIG9mOgotICAgIC8vCi0gICAgLy8gICArICAgIC0gdmVyYm9zZSBtb2Rl
IG1vZGlmaWVyLgotICAgIC8vICAgICAgICAgIFVzZWQgaW4gY29tYmluYXRpb24gd2l0aCBvdGhl
ciBvcHRpb25zLiBNdXN0IGNvbWUgYWZ0ZXIgdGhlICVKLgotICAgIC8vICAgcyAgICAtIFdURjo6
U3RyaW5nKgotICAgIC8vCi0gICAgLy8gRXhhbXBsZXMgb2YgdXNhZ2U6Ci0gICAgLy8KLSAgICAv
LyAgICBXVEY6OlN0cmluZyBzdHIoIk15IFdURiBTdHJpbmciKTsKLSAgICAvLwotICAgIC8vICAg
IC8vIFByaW50aW5nIHRoZSBzdHJpbmcuIFdpbGwgcHJpbnQ6Ci0gICAgLy8gICAgLy8gVGhlIHd0
ZiBzdHJpbmcgc2F5czogIk15IFdURiBTdHJpbmciIGFuZCBpcyBOT1QgRU1QVFkuCi0gICAgLy8K
LSAgICAvLyAgICBWTUluc3BlY3Rvcjo6cHJpbnRmKCJUaGUgd3RmIHN0cmluZyBzYXlzOiBcIiVK
c1wiIGFuZCBpcyAlc1xuIiwKLSAgICAvLyAgICAgICAgJnN0ciwgc3RyLmlzRW1wdHkoKT8iRU1Q
VFkiOiJOT1QgRU1QVFkiKTsKLSAgICAvLwotICAgIC8vICAgIC8vIFByaW50aW5nIHRoZSBzdHJp
bmcgd2l0aCB2ZXJib3NlIG1vZGUuIFdpbGwgcHJpbnQ6Ci0gICAgLy8gICAgLy8gPFdURjo6U3Ry
aW5nICJNeSBXVEYgU3RyaW5nIj4KLSAgICAvLwotICAgIC8vICAgIFZNSW5zcGVjdG9yOjpwcmlu
dGYoIjwlSitzPlxuIiwgJnN0cik7Ci0gICAgLy8KLSAgICAvLyBBbHNvIGFkZGVkIHNvbWUgY29u
dmVuaWVuY2Ugbm9uLUpTIGZvcm1hdHM6Ci0gICAgLy8KLSAgICAvLyAgICViICAgIC0gYm9vbGVh
biAodmFfYXJncyB3aWxsIGxvb2sgZm9yIGFuIGludCkuCi0gICAgLy8gICAgICAgICAgIFByaW50
cyBUUlVFIGlmIG5vbi16ZXJvLCBlbHNlIHByaW50cyBGQUxTRS4KLSAgICAvLwotICAgIC8vIENh
dXRpb246IHRoZSB1c2VyIGlzIGV4cGVjdGVkIHRvIHBhc3MgdGhlIGNvcnJlY3RseSBtYXRjaGVk
IGFyZ3VtZW50cwotICAgIC8vIHRvIHBhaXIgd2l0aCB0aGUgY29ycmVzcG9uZGluZyAlIGZvbWF0
dGluZy4KLQotICAgIHN0YXRpYyBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGZwcmludGYoRklMRSos
IGNvbnN0IGNoYXIqIGZvcm1hdCwgLi4uKTsKLSAgICBzdGF0aWMgSlNfRVhQT1JUX1BSSVZBVEUg
dm9pZCBwcmludGYoY29uc3QgY2hhciogZm9ybWF0LCAuLi4pOwotICAgIHN0YXRpYyBKU19FWFBP
UlRfUFJJVkFURSB2b2lkIHNwcmludGYoY2hhciosIGNvbnN0IGNoYXIqIGZvcm1hdCwgLi4uKTsK
LSAgICBzdGF0aWMgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzbnByaW50ZihjaGFyKiwgc2l6ZV90
LCBjb25zdCBjaGFyKiBmb3JtYXQsIC4uLik7Ci19OwotCi0jZW5kaWYgLy8gRU5BQkxFKFZNSU5T
UEVDVE9SKQotCi19IC8vIG5hbWVzcGFjZSBKU0MKLQotI2VuZGlmIC8vIFZNSW5zcGVjdG9yLmgK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlci5jcHAJKHJldmlzaW9uIDE4Mjg2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQs
NiBAQAogI2luY2x1ZGUgIkxMSW50Q0xvb3AuaCIKICNpbmNsdWRlICJMTEludFNsb3dQYXRocy5o
IgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKLSNpbmNsdWRlICJWTUluc3BlY3Rvci5oIgogI2lu
Y2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KIApJ
bmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTgyODYzKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTUtMDQtMTUgIE1hcmsgTGFt
ICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBvYnNvbGV0ZSBWTUluc3Bl
Y3RvciBkZWJ1Z2dpbmcgdG9vbC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE0Mzc5OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBuZWVkZWQuICBKdXN0IHJlbW92aW5nIG9ic29sZXRl
IGNvZGUuCisKKyAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy9pbnRlcnByZXRlci9WTUluc3Bl
Y3Rvci5oOiBSZW1vdmVkLgorCiAyMDE1LTA0LTEzICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBw
bGUuY29tPgogCiAgICAgICAgIFtGdWxsc2NyZWVuXSBDaHJvbWVDbGllbnQ6OmV4aXRWaWRlb0Z1
bGxzY3JlZW4oKSBzaG91bGQgdGFrZSBhIHBvaW50ZXIgdG8gYSBIVE1MVmlkZW9FbGVtZW50LgpJ
bmRleDogU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvaW50ZXJwcmV0ZXIvVk1JbnNw
ZWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9p
bnRlcnByZXRlci9WTUluc3BlY3Rvci5oCShyZXZpc2lvbiAxODI4NjEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9Gb3J3YXJkaW5nSGVhZGVycy9pbnRlcnByZXRlci9WTUluc3BlY3Rvci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDI5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
LSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCi0gKi8KLQotI2lmbmRlZiBXZWJDb3JlX0ZXRF9WTUluc3BlY3Rvcl9oCi0jZGVmaW5l
IFdlYkNvcmVfRldEX1ZNSW5zcGVjdG9yX2gKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9WTUlu
c3BlY3Rvci5oPgotI2VuZGlmCkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxODI4NjMpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxNS0wNC0xNSAgTWFyayBMYW0gIDxtYXJr
LmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIG9ic29sZXRlIFZNSW5zcGVjdG9yIGRl
YnVnZ2luZyB0b29sLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTQzNzk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdFdlYktpdEFQSS52Y3hwcm9qL1Rlc3RXZWJLaXRBUEkudmN4cHJvajoKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkudmN4cHJvai9UZXN0V2ViS2l0QVBJLnZj
eHByb2ouZmlsdGVyczoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL0ph
dmFTY3JpcHRDb3JlL1ZNSW5zcGVjdG9yLmNwcDogUmVtb3ZlZC4KKwogMjAxNS0wNC0xNSAgSmVy
IE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIGdhcmRl
bmluZzsgTWFrZSB0aGUgcHJldmlvdXMgY29tbWl0IGFwcGx5IG9ubHkgX3Bvc3RfIFlvc2VtaXRl
LgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxODI4NjEpCisr
KyBUb29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0x
NjksNyArMTY5LDYgQEAgc2V0X3Rlc3RzX3Byb3BlcnRpZXMoVGVzdFdURiBQUk9QRVJUSUVTIAog
YWRkX2V4ZWN1dGFibGUoVGVzdEphdmFTY3JpcHRDb3JlCiAgICAgJHt0ZXN0X21haW5fU09VUkNF
U30KICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0c0NvbnRyb2xsZXIuY3BwCi0gICAgJHtU
RVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvSmF2YVNjcmlwdENvcmUvVk1JbnNwZWN0b3IuY3BwCiAp
CiAKIHRhcmdldF9saW5rX2xpYnJhcmllcyhUZXN0SmF2YVNjcmlwdENvcmUgJHtUZXN0SmF2YVNj
cmlwdENvcmVfTElCUkFSSUVTfSkKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktp
dEFQSS52Y3hwcm9qL1Rlc3RXZWJLaXRBUEkudmN4cHJvago9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkudmN4cHJvai9UZXN0V2ViS2l0QVBJLnZjeHByb2oJ
KHJldmlzaW9uIDE4Mjg2MSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS52
Y3hwcm9qL1Rlc3RXZWJLaXRBUEkudmN4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjkxLDcgKzI5
MSw2IEBACiAgIDxJdGVtR3JvdXA+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxDb3VudGVy
cy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxUZXN0c0NvbnRyb2xsZXIuY3Bw
IiAvPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cVGVzdHNcSmF2YVNjcmlwdENvcmVcVk1J
bnNwZWN0b3IuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cVGVzdHNcV2ViQ29y
ZVxDYWxjdWxhdGlvblZhbHVlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFRl
c3RzXFdlYkNvcmVcQ1NTUGFyc2VyLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XFRlc3RzXFdlYkNvcmVcTGF5b3V0VW5pdC5jcHAiIC8+CkBAIC0zNjUsNCArMzY0LDQgQEAKICAg
PEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIg
Lz4KICAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KICAgPC9JbXBvcnRH
cm91cD4KLTwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCis8L1Byb2plY3Q+
CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkudmN4cHJvai9UZXN0V2Vi
S2l0QVBJLnZjeHByb2ouZmlsdGVycwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RXZWJLaXRBUEkudmN4cHJvai9UZXN0V2ViS2l0QVBJLnZjeHByb2ouZmlsdGVycwkocmV2
aXNpb24gMTgyODYxKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnZjeHBy
b2ovVGVzdFdlYktpdEFQSS52Y3hwcm9qLmZpbHRlcnMJKHdvcmtpbmcgY29weSkKQEAgLTE2Myw5
ICsxNjMsNiBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cVGVzdHNcV2ViQ29yZVxDU1NQ
YXJzZXIuY3BwIj4KICAgICAgIDxGaWx0ZXI+VGVzdHNcV2ViQ29yZTwvRmlsdGVyPgogICAgIDwv
Q2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cVGVzdHNcSmF2YVNjcmlwdENv
cmVcVk1JbnNwZWN0b3IuY3BwIj4KLSAgICAgIDxGaWx0ZXI+VGVzdHNcSmF2YVNjcmlwdENvcmU8
L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFRl
c3RzXFdURlxXb3JrUXVldWUuY3BwIj4KICAgICAgIDxGaWx0ZXI+VGVzdHNcV1RGPC9GaWx0ZXI+
CiAgICAgPC9DbENvbXBpbGU+CkBAIC0xNzcsNCArMTc0LDQgQEAKICAgICA8Tm9uZSBJbmNsdWRl
PSJUZXN0V2ViS2l0QVBJUG9zdEJ1aWxkLmNtZCIgLz4KICAgICA8Tm9uZSBJbmNsdWRlPSJUZXN0
V2ViS2l0QVBJUHJlQnVpbGQuY21kIiAvPgogICA8L0l0ZW1Hcm91cD4KLTwvUHJvamVjdD4KXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCis8L1Byb2plY3Q+CkluZGV4OiBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkocmV2aXNpb24gMTgyODYxKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2Vi
S2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTgyLDcg
KzgyLDYgQEAKIAkJN0NDRTdFQUUxQTQxMUEzNDAwNDQ3QzRDIC8qIFRlc3RzQ29udHJvbGxlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzEzMUFB
ODExNzEzMUZDMDBCNjk3MjcgLyogVGVzdHNDb250cm9sbGVyLmNwcCAqLzsgfTsKIAkJN0NDRTdF
QUYxQTQxMUEzODAwNDQ3QzRDIC8qIFBsYXRmb3JtVXRpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNTc1QkJGMTI2RjU3NTIwMDZGMEYx
MiAvKiBQbGF0Zm9ybVV0aWxpdGllcy5jcHAgKi87IH07CiAJCTdDQ0U3RUIwMUE0MTFBNDQwMDQ0
N0M0QyAvKiBVUkxFeHRyYXMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5M0E3RUIzQzE4RkE2M0E0MDA5RTc2NzAgLyogVVJMRXh0cmFzLm1tICovOyB9
OwotCQk3Q0NFN0VCMTFBNDExQTRCMDA0NDdDNEMgLyogVk1JbnNwZWN0b3IuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUyMTdFQ0MxNjQwQTU0QTAw
NTI5ODhCIC8qIFZNSW5zcGVjdG9yLmNwcCAqLzsgfTsKIAkJN0NDRTdFQjIxQTQxMUE1MTAwNDQ3
QzRDIC8qIE1lbW9yeUNhY2hlQWRkSW1hZ2VUb0NhY2hlSU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzU2MDkxNzcxOTI1OUM1OTAwOUVGMDZFIC8q
IE1lbW9yeUNhY2hlQWRkSW1hZ2VUb0NhY2hlSU9TLm1tICovOyB9OwogCQk3Q0NFN0VCMzFBNDEx
QTdFMDA0NDdDNEMgLyogQWNjZXB0c0ZpcnN0TW91c2UubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzkwMjhCNTE0RkFCRDkyMDA3RTZCNDMgLyogQWNj
ZXB0c0ZpcnN0TW91c2UubW0gKi87IH07CiAJCTdDQ0U3RUI0MUE0MTFBN0UwMDQ0N0M0QyAvKiBB
dHRyaWJ1dGVkU3RyaW5nLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQjU1RjExOUYxNTE2ODM0RjAwOTE1OTE2IC8qIEF0dHJpYnV0ZWRTdHJpbmcubW0g
Ki87IH07CkBAIC03MTUsNyArNzE0LDYgQEAKIAkJRjZGNDlDNjcxNTU0NUM4RDAwMDdGMzlEIC8q
IERPTVdpbmRvd0V4dGVuc2lvbk5vQ2FjaGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gRE9NV2luZG93RXh0ZW5zaW9uTm9DYWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUY2RkREREQyMTQyNDFBRDQwMDRGMTcyOSAvKiBQcml2YXRlQnJvd3Np
bmdQdXNoU3RhdGVOb0hpc3RvcnlDYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBQcml2YXRlQnJvd3NpbmdQdXNoU3RhdGVOb0hpc3RvcnlDYWxsYmFjay5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY2RkREREQ1MTQyNDFDNDgwMDRGMTcy
OSAvKiBwdXNoLXN0YXRlLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAicHVzaC1z
dGF0ZS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRkUyMTdFQ0MxNjQwQTU0
QTAwNTI5ODhCIC8qIFZNSW5zcGVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFZNSW5zcGVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIC8q
IEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYRnJhbWV3b3Jr
c0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwpAQCAtMTI4MCw3ICsxMjc4LDYgQEAKIAkJRkUyMTdFQ0Ix
NjQwQTU0QTAwNTI5ODhCIC8qIEphdmFTY3JpcHRDb3JlICovID0gewogCQkJaXNhID0gUEJYR3Jv
dXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQlGRTIxN0VDQzE2NDBBNTRBMDA1Mjk4OEIgLyogVk1J
bnNwZWN0b3IuY3BwICovLAogCQkJKTsKIAkJCXBhdGggPSBKYXZhU2NyaXB0Q29yZTsKIAkJCXNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xNTQ4LDcgKzE1NDUsNiBAQAogCQkJCTdDQ0U3RjE3
MUE0MTFBRTYwMDQ0N0M0QyAvKiBVc2VyTWVkaWEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0ND
RTdGMTgxQTQxMUFFNjAwNDQ3QzRDIC8qIFVzZXJNZXNzYWdlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTdDQ0U3RjRBMUE0MTFCOEUwMDQ0N0M0QyAvKiBWZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8s
Ci0JCQkJN0NDRTdFQjExQTQxMUE0QjAwNDQ3QzRDIC8qIFZNSW5zcGVjdG9yLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGMTM5RTc3MUE0MjNBNUIwMEY1OTBGNSAvKiBXZWFrT2JqQ1B0ci5tbSBp
biBTb3VyY2VzICovLAogCQkJCTdDQ0U3RjE5MUE0MTFBRTYwMDQ0N0M0QyAvKiBXZWJBcmNoaXZl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RjFBMUE0MTFBRTYwMDQ0N0M0QyAvKiBXZWJD
b3JlU3RhdGlzdGljc1dpdGhOb1dlYlByb2Nlc3MuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBU
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL0phdmFTY3JpcHRDb3JlL1ZNSW5zcGVjdG9yLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL0phdmFTY3JpcHRDb3JlL1ZN
SW5zcGVjdG9yLmNwcAkocmV2aXNpb24gMTgyODYxKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9KYXZhU2NyaXB0Q29yZS9WTUluc3BlY3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
Njg5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpbmNsdWRl
IDxpbnRlcnByZXRlci9WTUluc3BlY3Rvci5oPgotI2luY2x1ZGUgPHN0ZGFyZy5oPgotI2luY2x1
ZGUgPHN0ZGlvLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBKU0M7Ci0KLS8vIFRoZXJlJ3Mgbm90IG11
Y2ggd2UgY2FuIHRlc3QgZm9yIHRoZSBWTUluc3BlY3Rvcjo6cHJpbnRmKCkgY2FzZSBleGNlcHQg
dG8KLS8vIG1ha2Ugc3VyZSBpdCBkb2VzIG5vdCBjcmFzaC4gVW5mb3J0dW5hdGVseSwgd2UgYWxz
byBkb24ndCB3YW50IGFsbCB0aGUKLS8vIHRlc3Qgc3RyaW5ncyBjcm93ZGluZyBvdXQgc3Rkb3V0
LiBTbywgd2UgZm9yZWdvIHRoZSBwcmludGYgdGVzdHMuCi0vLyBOT1RFIHRoYXQgdGhlIG1vc3Qg
aW50ZXJlc3RpbmcgcGFydCBvZiBWTUluc3BlY3Rvcjo6cHJpbnRmKCkgaXMgdGhlCi0vLyBmb3Jt
YXR0aW5nIGZ1bmN0aW9uYWxpdHksIGFuZCBpdCBpcyBhcmUgYWxyZWFkeSBiZWluZyB0ZXN0ZWQg
YnkgdGhlCi0vLyBmcHJpbnRmKCkgYW5kIHNwcmludGYoKSBjYXNlcy4KLQotCi0vLyBUaGUgVk1J
bnNwZWN0b3I6OmZwcmludGYoKSB0ZXN0IHdvcmtzIGJ5IHByaW50aW5nIHRoZSBzdHJpbmcgdG8g
YSB0ZW1wIGZpbGUsCi0vLyBhbmQgdGhlbiByZWFkaW5nIHRoZSBmaWxlIGNvbnRlbnQgYmFjayBp
bnRvIGEgYnVmZmVyLCB3aGljaCB3ZSwgaW4gdHVybiwKLS8vIGNvbXBhcmUgYWdhaW5zdCB0aGUg
ZXhwZWN0ZWQgc3RyaW5nLgotCi1URVNUKEpTQywgVk1JbnNwZWN0b3JGcHJpbnRmKQotewotI2lm
IEVOQUJMRShWTUlOU1BFQ1RPUikKLSAgICBjaGFyIGFjdHVhbFsxMDI0XTsKLSAgICBjaGFyIGV4
cGVjdGVkWzEwMjRdOwotICAgIGNvbnN0IGNoYXIqIGZvcm1hdDsKLSAgICBjb25zdCBjaGFyKiBl
eHBlY3RlZExpdGVyYWw7Ci0gICAgRklMRSogZmlsZTsKLSAgICBjb25zdCBjaGFyKiBmaWxlbmFt
ZSA9ICIvdG1wL1ZNSW5zcGVjdG9yRnByaW50ZlRlc3QudHh0IjsKLSAgICBzaXplX3Qgc2l6ZTsK
LQotI2RlZmluZSBPUEVOX0ZJTEUoZmlsZSkgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAg
IGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBm
aWxlID0gZm9wZW4oZmlsZW5hbWUsICJ3Iik7ICAgICAgICAgICAgXAotICAgIH0gd2hpbGUgKGZh
bHNlKQotCi0jZGVmaW5lIFJFQURfQU5EX0NMT1NFX0ZJTEUoZmlsZSwgYWN0dWFsKSAgICAgICBc
Ci0gICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAg
ICAgIGZjbG9zZShmaWxlKTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGZp
bGUgPSBmb3BlbihmaWxlbmFtZSwgInIiKTsgICAgICAgICAgICBcCi0gICAgICAgIGZzZWVrKGZp
bGUsIDAsIFNFRUtfRU5EKTsgICAgICAgICAgICAgICBcCi0gICAgICAgIHNpemUgPSBmdGVsbChm
aWxlKTsgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHJld2luZChmaWxlKTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGZyZWFkKGFjdHVhbCwgMSwgc2l6ZSwgZmls
ZSk7ICAgICAgICAgICBcCi0gICAgICAgIGFjdHVhbFtzaXplXSA9ICdcMCc7ICAgICAgICAgICAg
ICAgICAgICBcCi0gICAgICAgIGZjbG9zZShmaWxlKTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCi0gICAgfSB3aGlsZSAoZmFsc2UpCi0KLSAgICAvLyBUZXN0aW5nIHN0YW5kYXJkIGRlZmF1
bHQgZm9ybWF0IHNwZWNpZmllcnM6Ci0gICAgLy8gTm90ZTogc2hvdWxkIHdvcmsganVzdCBsaWtl
IHNwcmludGYuIFNvLCB3ZSBqdXN0IGNvbXBhcmUgYWdhaW5zdCB0aGF0LgotICAgIG1lbXNldChh
Y3R1YWwsICd6Jywgc2l6ZW9mKGFjdHVhbCkpOwotICAgIC8vIFRoZSBjb21waWxlciB3YXJuaW5n
IGZsYWdzIGFyZSBjb25maWd1cmVkIHRvIGV4cGVjdCBhIGxpdGVyYWwgc3RyaW5nIGZvcgotICAg
IC8vIDo6c3ByaW50ZiBiZWxvdy4gU28sIHVzZSBhICNkZWZpbmUgZm9yIHRoaXMgb25lIGNhc2Ug
dG8ga2VlcCB0aGUKLSAgICAvLyBjb21waWxlciBoYXBweS4KLSN1bmRlZiBMSVRFUkFMX0ZPUk1B
VAotI2RlZmluZSBMSVRFUkFMX0ZPUk1BVCAiJyUlJSUnICAgICAgICAgICAgICAgICAgICAgICAg
ID09PiAnJSUnXG4iCi0KLSAgICBPUEVOX0ZJTEUoZmlsZSk7Ci0gICAgVk1JbnNwZWN0b3I6OmZw
cmludGYoZmlsZSwgTElURVJBTF9GT1JNQVQpOwotICAgIFJFQURfQU5EX0NMT1NFX0ZJTEUoZmls
ZSwgYWN0dWFsKTsKLSAgICA6OnNwcmludGYoZXhwZWN0ZWQsIExJVEVSQUxfRk9STUFUKTsKLQot
I3VuZGVmIExJVEVSQUxfRk9STUFUCi0gICAgQVNTRVJUX0VRKHN0cmNtcChhY3R1YWwsIGV4cGVj
dGVkKSwgMCk7Ci0KLSAgICBtZW1zZXQoYWN0dWFsLCAneicsIHNpemVvZihhY3R1YWwpKTsKLSAg
ICBmb3JtYXQgPSAiJyUlYycsICd4JyAgICAgICAgICAgICAgICAgICAgPT0+ICclYydcbiI7Ci0g
ICAgT1BFTl9GSUxFKGZpbGUpOwotICAgIFZNSW5zcGVjdG9yOjpmcHJpbnRmKGZpbGUsIGZvcm1h
dCwgJ3gnKTsKLSAgICBSRUFEX0FORF9DTE9TRV9GSUxFKGZpbGUsIGFjdHVhbCk7Ci0gICAgOjpz
cHJpbnRmKGV4cGVjdGVkLCBmb3JtYXQsICd4Jyk7Ci0gICAgQVNTRVJUX0VRKHN0cmNtcChhY3R1
YWwsIGV4cGVjdGVkKSwgMCk7Ci0KLSAgICBtZW1zZXQoYWN0dWFsLCAneicsIHNpemVvZihhY3R1
YWwpKTsKLSAgICBmb3JtYXQgPSAiJyUlKmMnLCA4LCAneCcgICAgICAgICAgICAgICAgPT0+ICcl
KmMnXG4iOwotICAgIE9QRU5fRklMRShmaWxlKTsKLSAgICBWTUluc3BlY3Rvcjo6ZnByaW50Zihm
aWxlLCBmb3JtYXQsIDgsICd4Jyk7Ci0gICAgUkVBRF9BTkRfQ0xPU0VfRklMRShmaWxlLCBhY3R1
YWwpOwotICAgIDo6c3ByaW50ZihleHBlY3RlZCwgZm9ybWF0LCA4LCAneCcpOwotICAgIEFTU0VS
VF9FUShzdHJjbXAoYWN0dWFsLCBleHBlY3RlZCksIDApOwotCi0gICAgbWVtc2V0KGFjdHVhbCwg
J3onLCBzaXplb2YoYWN0dWFsKSk7Ci0gICAgZm9ybWF0ID0gIiclJXMnLCBcImhlbGxvIHdvcmxk
XCIgICAgICAgICAgPT0+ICclcydcbiI7Ci0gICAgT1BFTl9GSUxFKGZpbGUpOwotICAgIFZNSW5z
cGVjdG9yOjpmcHJpbnRmKGZpbGUsIGZvcm1hdCwgImhlbGxvIHdvcmxkIik7Ci0gICAgUkVBRF9B
TkRfQ0xPU0VfRklMRShmaWxlLCBhY3R1YWwpOwotICAgIDo6c3ByaW50ZihleHBlY3RlZCwgZm9y
bWF0LCAiaGVsbG8gd29ybGQiKTsKLSAgICBBU1NFUlRfRVEoc3RyY21wKGFjdHVhbCwgZXhwZWN0
ZWQpLCAwKTsKLQotICAgIG1lbXNldChhY3R1YWwsICd6Jywgc2l6ZW9mKGFjdHVhbCkpOwotICAg
IGZvcm1hdCA9ICInJSUqcycsIDgsIFwiaGVsbG8gd29ybGRcIiAgICAgID09PiAnJSpzJ1xuIjsK
LSAgICBPUEVOX0ZJTEUoZmlsZSk7Ci0gICAgVk1JbnNwZWN0b3I6OmZwcmludGYoZmlsZSwgZm9y
bWF0LCA4LCAiaGVsbG8gd29ybGQiKTsKLSAgICBSRUFEX0FORF9DTE9TRV9GSUxFKGZpbGUsIGFj
dHVhbCk7Ci0gICAgOjpzcHJpbnRmKGV4cGVjdGVkLCBmb3JtYXQsIDgsICJoZWxsbyB3b3JsZCIp
OwotICAgIEFTU0VSVF9FUShzdHJjbXAoYWN0dWFsLCBleHBlY3RlZCksIDApOwotCi0gICAgbWVt
c2V0KGFjdHVhbCwgJ3onLCBzaXplb2YoYWN0dWFsKSk7Ci0gICAgZm9ybWF0ID0gIiclJSpzJywg
OCwgXCJoZWxsb1wiICAgICAgICAgICAgPT0+ICclKnMnXG4iOwotICAgIE9QRU5fRklMRShmaWxl
KTsKLSAgICBWTUluc3BlY3Rvcjo6ZnByaW50ZihmaWxlLCBmb3JtYXQsIDgsICJoZWxsbyIpOwot
ICAgIFJFQURfQU5EX0NMT1NFX0ZJTEUoZmlsZSwgYWN0dWFsKTsKLSAgICA6OnNwcmludGYoZXhw
ZWN0ZWQsIGZvcm1hdCwgOCwgImhlbGxvIik7Ci0gICAgQVNTRVJUX0VRKHN0cmNtcChhY3R1YWws
IGV4cGVjdGVkKSwgMCk7Ci0KLSAgICBtZW1zZXQoYWN0dWFsLCAneicsIHNpemVvZihhY3R1YWwp
KTsKLSAgICBmb3JtYXQgPSAiJyUlZCcsIDk4NzY1NDMyMSAgICAgICAgICAgICAgPT0+ICclZCdc
biI7Ci0gICAgT1BFTl9GSUxFKGZpbGUpOwotICAgIFZNSW5zcGVjdG9yOjpmcHJpbnRmKGZpbGUs
IGZvcm1hdCwgOTg3NjU0MzIxKTsKLSAgICBSRUFEX0FORF9DTE9TRV9GSUxFKGZpbGUsIGFjdHVh
bCk7Ci0gICAgOjpzcHJpbnRmKGV4cGVjdGVkLCBmb3JtYXQsIDk4NzY1NDMyMSk7Ci0gICAgQVNT
RVJUX0VRKHN0cmNtcChhY3R1YWwsIGV4cGVjdGVkKSwgMCk7Ci0KLSAgICBtZW1zZXQoYWN0dWFs
LCAneicsIHNpemVvZihhY3R1YWwpKTsKLSAgICBmb3JtYXQgPSAiJyUldScsIDQyNzY1NDMyMTB1
ICAgICAgICAgICAgPT0+ICcldSdcbiI7Ci0gICAgT1BFTl9GSUxFKGZpbGUpOwotICAgIFZNSW5z
cGVjdG9yOjpmcHJpbnRmKGZpbGUsIGZvcm1hdCwgNDI3NjU0MzIxMHUpOwotICAgIFJFQURfQU5E
X0NMT1NFX0ZJTEUoZmlsZSwgYWN0dWFsKTsKLSAgICA6OnNwcmludGYoZXhwZWN0ZWQsIGZvcm1h
dCwgNDI3NjU0MzIxMHUpOwotICAgIEFTU0VSVF9FUShzdHJjbXAoYWN0dWFsLCBleHBlY3RlZCks
IDApOwotCi0gICAgbWVtc2V0KGFjdHVhbCwgJ3onLCBzaXplb2YoYWN0dWFsKSk7Ci0gICAgZm9y
bWF0ID0gIiclJXUnLCAweGZmZmZmZmZmICAgICAgICAgICAgID09PiAnJXUnXG4iOwotICAgIE9Q
RU5fRklMRShmaWxlKTsKLSAgICBWTUluc3BlY3Rvcjo6ZnByaW50ZihmaWxlLCBmb3JtYXQsIDB4
ZmZmZmZmZmYpOwotICAgIFJFQURfQU5EX0NMT1NFX0ZJTEUoZmlsZSwgYWN0dWFsKTsKLSAgICA6
OnNwcmludGYoZXhwZWN0ZWQsIGZvcm1hdCwgMHhmZmZmZmZmZik7Ci0gICAgQVNTRVJUX0VRKHN0
cmNtcChhY3R1YWwsIGV4cGVjdGVkKSwgMCk7Ci0KLSAgICBtZW1zZXQoYWN0dWFsLCAneicsIHNp
emVvZihhY3R1YWwpKTsKLSAgICBmb3JtYXQgPSAiJyUleCcsIDB4ZmZmZmZmZmYgICAgICAgICAg
ICAgPT0+ICcleCdcbiI7Ci0gICAgT1BFTl9GSUxFKGZpbGUpOwotICAgIFZNSW5zcGVjdG9yOjpm
cHJpbnRmKGZpbGUsIGZvcm1hdCwgMHhmZmZmZmZmZik7Ci0gICAgUkVBRF9BTkRfQ0xPU0VfRklM
RShmaWxlLCBhY3R1YWwpOwotICAgIDo6c3ByaW50ZihleHBlY3RlZCwgZm9ybWF0LCAweGZmZmZm
ZmZmKTsKLSAgICBBU1NFUlRfRVEoc3RyY21wKGFjdHVhbCwgZXhwZWN0ZWQpLCAwKTsKLQotICAg
IG1lbXNldChhY3R1YWwsICd6Jywgc2l6ZW9mKGFjdHVhbCkpOwotICAgIGZvcm1hdCA9ICInJSVw
JywgKHZvaWQqKTB4YWJjZGJhYmUgICAgICA9PT4gJyVwJ1xuIjsKLSAgICBPUEVOX0ZJTEUoZmls
ZSk7Ci0gICAgVk1JbnNwZWN0b3I6OmZwcmludGYoZmlsZSwgZm9ybWF0LCAodm9pZCopMHhhYmNk
YmFiZSk7Ci0gICAgUkVBRF9BTkRfQ0xPU0VfRklMRShmaWxlLCBhY3R1YWwpOwotICAgIDo6c3By
aW50ZihleHBlY3RlZCwgZm9ybWF0LCAodm9pZCopMHhhYmNkYmFiZSk7Ci0gICAgQVNTRVJUX0VR
KHN0cmNtcChhY3R1YWwsIGV4cGVjdGVkKSwgMCk7Ci0KLSAgICBtZW1zZXQoYWN0dWFsLCAneics
IHNpemVvZihhY3R1YWwpKTsKLSAgICBmb3JtYXQgPSAiJyUlbHUnLCAxMjM0NTY3ODkwOTg3NjU0
MzIxdWwgPT0+ICclbHUnXG4iOwotICAgIE9QRU5fRklMRShmaWxlKTsKLSAgICBWTUluc3BlY3Rv
cjo6ZnByaW50ZihmaWxlLCBmb3JtYXQsIDEyMzQ1Njc4OTA5ODc2NTQzMjF1bCk7Ci0gICAgUkVB
RF9BTkRfQ0xPU0VfRklMRShmaWxlLCBhY3R1YWwpOwotICAgIDo6c3ByaW50ZihleHBlY3RlZCwg
Zm9ybWF0LCAxMjM0NTY3ODkwOTg3NjU0MzIxdWwpOwotICAgIEFTU0VSVF9FUShzdHJjbXAoYWN0
dWFsLCBleHBlY3RlZCksIDApOwotCi0gICAgbWVtc2V0KGFjdHVhbCwgJ3onLCBzaXplb2YoYWN0
dWFsKSk7Ci0gICAgZm9ybWF0ID0gIiclJWYnLCAxMjM0LjU2NyAgICAgICAgICAgICAgID09PiAn
JWYnXG4iOwotICAgIE9QRU5fRklMRShmaWxlKTsKLSAgICBWTUluc3BlY3Rvcjo6ZnByaW50Zihm
aWxlLCBmb3JtYXQsIDEyMzQuNTY3KTsKLSAgICBSRUFEX0FORF9DTE9TRV9GSUxFKGZpbGUsIGFj
dHVhbCk7Ci0gICAgOjpzcHJpbnRmKGV4cGVjdGVkLCBmb3JtYXQsIDEyMzQuNTY3KTsKLSAgICBB
U1NFUlRfRVEoc3RyY21wKGFjdHVhbCwgZXhwZWN0ZWQpLCAwKTsKLQotICAgIG1lbXNldChhY3R1
YWwsICd6Jywgc2l6ZW9mKGFjdHVhbCkpOwotICAgIGZvcm1hdCA9ICInJSUuMmYnLCAxMjM0LjU2
NyAgICAgICAgICAgICA9PT4gJyUuMmYnXG4iOwotICAgIE9QRU5fRklMRShmaWxlKTsKLSAgICBW
TUluc3BlY3Rvcjo6ZnByaW50ZihmaWxlLCBmb3JtYXQsIDEyMzQuNTY3KTsKLSAgICBSRUFEX0FO
RF9DTE9TRV9GSUxFKGZpbGUsIGFjdHVhbCk7Ci0gICAgOjpzcHJpbnRmKGV4cGVjdGVkLCBmb3Jt
YXQsIDEyMzQuNTY3KTsKLSAgICBBU1NFUlRfRVEoc3RyY21wKGFjdHVhbCwgZXhwZWN0ZWQpLCAw
KTsKLQotICAgIG1lbXNldChhY3R1YWwsICd6Jywgc2l6ZW9mKGFjdHVhbCkpOwotICAgIGZvcm1h
dCA9ICInJSUxMC4yZicsIDEyMzQuNTY3ICAgICAgICAgICA9PT4gJyUxMC4yZidcbiI7Ci0gICAg
T1BFTl9GSUxFKGZpbGUpOwotICAgIFZNSW5zcGVjdG9yOjpmcHJpbnRmKGZpbGUsIGZvcm1hdCwg
MTIzNC41NjcpOwotICAgIFJFQURfQU5EX0NMT1NFX0ZJTEUoZmlsZSwgYWN0dWFsKTsKLSAgICA6
OnNwcmludGYoZXhwZWN0ZWQsIGZvcm1hdCwgMTIzNC41NjcpOwotICAgIEFTU0VSVF9FUShzdHJj
bXAoYWN0dWFsLCBleHBlY3RlZCksIDApOwotCi0gICAgbWVtc2V0KGFjdHVhbCwgJ3onLCBzaXpl
b2YoYWN0dWFsKSk7Ci0gICAgZm9ybWF0ID0gIiclJTAxMC4yZicsIDEyMzQuNTY3ICAgICAgICAg
ID09PiAnJTAxMC4yZidcbiI7Ci0gICAgT1BFTl9GSUxFKGZpbGUpOwotICAgIFZNSW5zcGVjdG9y
OjpmcHJpbnRmKGZpbGUsIGZvcm1hdCwgMTIzNC41NjcpOwotICAgIFJFQURfQU5EX0NMT1NFX0ZJ
TEUoZmlsZSwgYWN0dWFsKTsKLSAgICA6OnNwcmludGYoZXhwZWN0ZWQsIGZvcm1hdCwgMTIzNC41
NjcpOwotICAgIEFTU0VSVF9FUShzdHJjbXAoYWN0dWFsLCBleHBlY3RlZCksIDApOwotCi0gICAg
Ly8gQmFkIC8gd2VpcmQgZm9ybWF0czoKLSAgICBtZW1zZXQoYWN0dWFsLCAneicsIHNpemVvZihh
Y3R1YWwpKTsKLSAgICBmb3JtYXQgPSAiJyUlNS40JywgOTg3NjU0MzIxICAgICAgICAgICAgPT0+
ICclNS40J1xuIjsKLSAgICBPUEVOX0ZJTEUoZmlsZSk7Ci0gICAgVk1JbnNwZWN0b3I6OmZwcmlu
dGYoZmlsZSwgZm9ybWF0LCA5ODc2NTQzMjEpOwotICAgIFJFQURfQU5EX0NMT1NFX0ZJTEUoZmls
ZSwgYWN0dWFsKTsKLSAgICBleHBlY3RlZExpdGVyYWwgPSAiJyU1LjQnLCA5ODc2NTQzMjEgICAg
ICAgICAgICA9PT4gJ0VSUk9SIEAgXCIlNS40JyBcIlxuIjsKLSAgICBBU1NFUlRfRVEoc3RyY21w
KGFjdHVhbCwgZXhwZWN0ZWRMaXRlcmFsKSwgMCk7Ci0KLSAgICBtZW1zZXQoYWN0dWFsLCAneics
IHNpemVvZihhY3R1YWwpKTsKLSAgICBmb3JtYXQgPSAiJyUlNS40JyAnJSVkJywgOTg3NjU0MzIx
LCA0ICAgID09PiAnJTUuNCcgJyVkJ1xuIjsKLSAgICBPUEVOX0ZJTEUoZmlsZSk7Ci0gICAgVk1J
bnNwZWN0b3I6OmZwcmludGYoZmlsZSwgZm9ybWF0LCA5ODc2NTQzMjEsIDQpOwotICAgIFJFQURf
QU5EX0NMT1NFX0ZJTEUoZmlsZSwgYWN0dWFsKTsKLSAgICA6OnNwcmludGYoZXhwZWN0ZWQsIGZv
cm1hdCwgOTg3NjU0MzIxLCA0KTsKLSAgICBBU1NFUlRfRVEoc3RyY21wKGFjdHVhbCwgZXhwZWN0
ZWQpLCAwKTsKLQotICAgIG1lbXNldChhY3R1YWwsICd6Jywgc2l6ZW9mKGFjdHVhbCkpOwotICAg
IGZvcm1hdCA9ICInJSV3JyAnJSVkJywgOTg3NjU0MzIxLCA2ICAgICAgPT0+ICcldycgJyVkJ1xu
IjsKLSAgICBPUEVOX0ZJTEUoZmlsZSk7Ci0gICAgVk1JbnNwZWN0b3I6OmZwcmludGYoZmlsZSwg
Zm9ybWF0LCA5ODc2NTQzMjEsIDYpOwotICAgIFJFQURfQU5EX0NMT1NFX0ZJTEUoZmlsZSwgYWN0
dWFsKTsKLSAgICA6OnNwcmludGYoZXhwZWN0ZWQsIGZvcm1hdCwgOTg3NjU0MzIxLCA2KTsKLSAg
ICBBU1NFUlRfRVEoc3RyY21wKGFjdHVhbCwgZXhwZWN0ZWQpLCAwKTsKLQotCi0gICAgLy8gVGVz
dGluZyB0aGUgJWIgZXh0ZW5zaW9uOgotICAgIG1lbXNldChhY3R1YWwsICd6Jywgc2l6ZW9mKGFj
dHVhbCkpOwotICAgIE9QRU5fRklMRShmaWxlKTsKLSAgICBWTUluc3BlY3Rvcjo6ZnByaW50Zihm
aWxlLCAiJyUlYicsIDAgICAgICAgICAgPT0+ICclYidcbiIsIDApOwotICAgIFJFQURfQU5EX0NM
T1NFX0ZJTEUoZmlsZSwgYWN0dWFsKTsKLSAgICBBU1NFUlRfRVEoc3RyY21wKGFjdHVhbCwgIicl
YicsIDAgICAgICAgICAgPT0+ICdGQUxTRSdcbiIpLCAwKTsKLQotICAgIG1lbXNldChhY3R1YWws
ICd6Jywgc2l6ZW9mKGFjdHVhbCkpOwotICAgIE9QRU5fRklMRShmaWxlKTsKLSAgICBWTUluc3Bl
Y3Rvcjo6ZnByaW50ZihmaWxlLCAiJyUlYicsIDEgICAgICAgICAgPT0+ICclYidcbiIsIDEpOwot
ICAgIFJFQURfQU5EX0NMT1NFX0ZJTEUoZmlsZSwgYWN0dWFsKTsKLSAgICBBU1NFUlRfRVEoc3Ry
Y21wKGFjdHVhbCwgIiclYicsIDEgICAgICAgICAgPT0+ICdUUlVFJ1xuIiksIDApOwotCi0gICAg
bWVtc2V0KGFjdHVhbCwgJ3onLCBzaXplb2YoYWN0dWFsKSk7Ci0gICAgT1BFTl9GSUxFKGZpbGUp
OwotICAgIFZNSW5zcGVjdG9yOjpmcHJpbnRmKGZpbGUsICInJSViJywgLTEyMzQ1Njc4OSA9PT4g
JyViJ1xuIiwgLTEyMzQ1Njc4OSk7Ci0gICAgUkVBRF9BTkRfQ0xPU0VfRklMRShmaWxlLCBhY3R1
YWwpOwotICAgIEFTU0VSVF9FUShzdHJjbXAoYWN0dWFsLCAiJyViJywgLTEyMzQ1Njc4OSA9PT4g
J1RSVUUnXG4iKSwgMCk7Ci0KLSAgICBtZW1zZXQoYWN0dWFsLCAneicsIHNpemVvZihhY3R1YWwp
KTsKLSAgICBPUEVOX0ZJTEUoZmlsZSk7Ci0gICAgVk1JbnNwZWN0b3I6OmZwcmludGYoZmlsZSwg
IiclJWInLCAxMjM0NTY3ODkgID09PiAnJWInXG4iLCAxMjM0NTY3ODkpOwotICAgIFJFQURfQU5E
X0NMT1NFX0ZJTEUoZmlsZSwgYWN0dWFsKTsKLSAgICBBU1NFUlRfRVEoc3RyY21wKGFjdHVhbCwg
IiclYicsIDEyMzQ1Njc4OSAgPT0+ICdUUlVFJ1xuIiksIDApOwotCi0KLSAgICAvLyBUZXN0aW5n
IHRoZSAlSjx4PiBleHRlbnNpb25zOgotICAgIFN0cmluZyBzdHIxKCJUZXN0IFdURiBTdHJpbmci
KTsKLSAgICBTdHJpbmcgc3RyMigiIik7Ci0KLSAgICBtZW1zZXQoYWN0dWFsLCAneicsIHNpemVv
ZihhY3R1YWwpKTsKLSAgICBPUEVOX0ZJTEUoZmlsZSk7Ci0gICAgVk1JbnNwZWN0b3I6OmZwcmlu
dGYoZmlsZSwgIiclJUpzJyBpcyAlJXMsICZzdHIxLCBzdHIxLmlzRW1wdHkoKT9cIkVNUFRZXCI6
XCJOT1QgRU1QVFlcIiAgPT0+ICclSnMnIGlzICVzXG4iLAotICAgICAgICAmc3RyMSwgc3RyMS5p
c0VtcHR5KCkgPyAiRU1QVFkiIDogIk5PVCBFTVBUWSIpOwotICAgIFJFQURfQU5EX0NMT1NFX0ZJ
TEUoZmlsZSwgYWN0dWFsKTsKLSAgICBleHBlY3RlZExpdGVyYWwgPSAiJyVKcycgaXMgJXMsICZz
dHIxLCBzdHIxLmlzRW1wdHkoKT9cIkVNUFRZXCI6XCJOT1QgRU1QVFlcIiAgPT0+ICdUZXN0IFdU
RiBTdHJpbmcnIGlzIE5PVCBFTVBUWVxuIjsKLSAgICBBU1NFUlRfRVEoc3RyY21wKGFjdHVhbCwg
ZXhwZWN0ZWRMaXRlcmFsKSwgMCk7Ci0KLSAgICBtZW1zZXQoYWN0dWFsLCAneicsIHNpemVvZihh
Y3R1YWwpKTsKLSAgICBPUEVOX0ZJTEUoZmlsZSk7Ci0gICAgVk1JbnNwZWN0b3I6OmZwcmludGYo
ZmlsZSwgIiclJUpzJyBpcyAlJXMsICZzdHIyLCBzdHIyLmlzRW1wdHkoKT9cIkVNUFRZXCI6XCJO
T1QgRU1QVFlcIiAgPT0+ICclSnMnIGlzICVzXG4iLAotICAgICAgICAmc3RyMiwgc3RyMi5pc0Vt
cHR5KCkgPyAiRU1QVFkiIDogIk5PVCBFTVBUWSIpOwotICAgIFJFQURfQU5EX0NMT1NFX0ZJTEUo
ZmlsZSwgYWN0dWFsKTsKLSAgICBleHBlY3RlZExpdGVyYWwgPSAiJyVKcycgaXMgJXMsICZzdHIy
LCBzdHIyLmlzRW1wdHkoKT9cIkVNUFRZXCI6XCJOT1QgRU1QVFlcIiAgPT0+ICcnIGlzIEVNUFRZ
XG4iOwotICAgIEFTU0VSVF9FUShzdHJjbXAoYWN0dWFsLCBleHBlY3RlZExpdGVyYWwpLCAwKTsK
LQotICAgIG1lbXNldChhY3R1YWwsICd6Jywgc2l6ZW9mKGFjdHVhbCkpOwotICAgIE9QRU5fRklM
RShmaWxlKTsKLSAgICBWTUluc3BlY3Rvcjo6ZnByaW50ZihmaWxlLCAiJyUlSitzJyBpcyAlJXMs
ICZzdHIxLCBzdHIxLmlzRW1wdHkoKT9cIkVNUFRZXCI6XCJOT1QgRU1QVFlcIiA9PT4gJyVKK3Mn
IGlzICVzXG4iLAotICAgICAgICAmc3RyMSwgc3RyMS5pc0VtcHR5KCkgPyAiRU1QVFkiIDogIk5P
VCBFTVBUWSIpOwotICAgIFJFQURfQU5EX0NMT1NFX0ZJTEUoZmlsZSwgYWN0dWFsKTsKLSAgICBl
eHBlY3RlZExpdGVyYWwgPSAiJyVKK3MnIGlzICVzLCAmc3RyMSwgc3RyMS5pc0VtcHR5KCk/XCJF
TVBUWVwiOlwiTk9UIEVNUFRZXCIgPT0+ICdXVEY6OlN0cmluZyBcIlRlc3QgV1RGIFN0cmluZ1wi
JyBpcyBOT1QgRU1QVFlcbiI7Ci0gICAgQVNTRVJUX0VRKHN0cmNtcChhY3R1YWwsIGV4cGVjdGVk
TGl0ZXJhbCksIDApOwotCi0gICAgbWVtc2V0KGFjdHVhbCwgJ3onLCBzaXplb2YoYWN0dWFsKSk7
Ci0gICAgT1BFTl9GSUxFKGZpbGUpOwotICAgIFZNSW5zcGVjdG9yOjpmcHJpbnRmKGZpbGUsICIn
JSVKK3MnIGlzICUlcywgJnN0cjIsIHN0cjIuaXNFbXB0eSgpP1wiRU1QVFlcIjpcIk5PVCBFTVBU
WVwiID09PiAnJUorcycgaXMgJXNcbiIsCi0gICAgICAgICZzdHIyLCBzdHIyLmlzRW1wdHkoKSA/
ICJFTVBUWSIgOiAiTk9UIEVNUFRZIik7Ci0gICAgUkVBRF9BTkRfQ0xPU0VfRklMRShmaWxlLCBh
Y3R1YWwpOwotICAgIGV4cGVjdGVkTGl0ZXJhbCA9ICInJUorcycgaXMgJXMsICZzdHIyLCBzdHIy
LmlzRW1wdHkoKT9cIkVNUFRZXCI6XCJOT1QgRU1QVFlcIiA9PT4gJ1dURjo6U3RyaW5nIFwiXCIn
IGlzIEVNUFRZXG4iOwotICAgIEFTU0VSVF9FUShzdHJjbXAoYWN0dWFsLCBleHBlY3RlZExpdGVy
YWwpLCAwKTsKLQotI3VuZGVmIE9QRU5fRklMRQotI3VuZGVmIFJFQURfQU5EX0NMT1NFX0ZJTEUK
LQotI2VuZGlmCi19Ci0KLQotVEVTVChKU0MsIFZNSW5zcGVjdG9yU3ByaW50ZikKLXsKLSNpZiBF
TkFCTEUoVk1JTlNQRUNUT1IpCi0gICAgY2hhciBhY3R1YWxbMTAyNF07Ci0gICAgY2hhciBleHBl
Y3RlZFsxMDI0XTsKLSAgICBjb25zdCBjaGFyKiBmb3JtYXQ7Ci0gICAgY29uc3QgY2hhciogZXhw
ZWN0ZWRMaXRlcmFsOwotCi0gICAgLy8gVGVzdGluZyBzdGFuZGFyZCBkZWZhdWx0IGZvcm1hdCBz
cGVjaWZpZXJzOgotICAgIC8vIE5vdGU6IHNob3VsZCB3b3JrIGp1c3QgbGlrZSBzcHJpbnRmLiBT
bywgd2UganVzdCBjb21wYXJlIGFnYWluc3QgdGhhdC4KLSAgICBtZW1zZXQoYWN0dWFsLCAneics
IHNpemVvZihhY3R1YWwpKTsKLSAgICAvLyBUaGUgY29tcGlsZXIgd2FybmluZyBmbGFncyBhcmUg
Y29uZmlndXJlZCB0byBleHBlY3QgYSBsaXRlcmFsIHN0cmluZyBmb3IKLSAgICAvLyA6OnNwcmlu
dGYgYmVsb3cuIFNvLCB1c2UgYSAjZGVmaW5lIGZvciB0aGlzIG9uZSBjYXNlIHRvIGtlZXAgdGhl
Ci0gICAgLy8gY29tcGlsZXIgaGFwcHkuCi0jdW5kZWYgTElURVJBTF9GT1JNQVQKLSNkZWZpbmUg
TElURVJBTF9GT1JNQVQgIiclJSUlJyAgICAgICAgICAgICAgICAgICAgICAgICA9PT4gJyUlJ1xu
IgotICAgIFZNSW5zcGVjdG9yOjpzcHJpbnRmKGFjdHVhbCwgTElURVJBTF9GT1JNQVQpOwotICAg
IDo6c3ByaW50ZihleHBlY3RlZCwgTElURVJBTF9GT1JNQVQpOwotI3VuZGVmIExJVEVSQUxfRk9S
TUFUCi0gICAgQVNTRVJUX0VRKHN0cmNtcChhY3R1YWwsIGV4cGVjdGVkKSwgMCk7Ci0KLSAgICBt
ZW1zZXQoYWN0dWFsLCAneicsIHNpemVvZihhY3R1YWwpKTsKLSAgICBmb3JtYXQgPSAiJyUlYycs
ICd4JyAgICAgICAgICAgICAgICAgICAgPT0+ICclYydcbiI7Ci0gICAgVk1JbnNwZWN0b3I6OnNw
cmludGYoYWN0dWFsLCBmb3JtYXQsICd4Jyk7Ci0gICAgOjpzcHJpbnRmKGV4cGVjdGVkLCBmb3Jt
YXQsICd4Jyk7Ci0gICAgQVNTRVJUX0VRKHN0cmNtcChhY3R1YWwsIGV4cGVjdGVkKSwgMCk7Ci0K
LSAgICBtZW1zZXQoYWN0dWFsLCAneicsIHNpemVvZihhY3R1YWwpKTsKLSAgICBmb3JtYXQgPSAi
JyUlKmMnLCA4LCAneCcgICAgICAgICAgICAgICAgPT0+ICclKmMnXG4iOwotICAgIFZNSW5zcGVj
dG9yOjpzcHJpbnRmKGFjdHVhbCwgZm9ybWF0LCA4LCAneCcpOwotICAgIDo6c3ByaW50ZihleHBl
Y3RlZCwgZm9ybWF0LCA4LCAneCcpOwotICAgIEFTU0VSVF9FUShzdHJjbXAoYWN0dWFsLCBleHBl
Y3RlZCksIDApOwotCi0gICAgbWVtc2V0KGFjdHVhbCwgJ3onLCBzaXplb2YoYWN0dWFsKSk7Ci0g
ICAgZm9ybWF0ID0gIiclJXMnLCBcImhlbGxvIHdvcmxkXCIgICAgICAgICAgPT0+ICclcydcbiI7
Ci0gICAgVk1JbnNwZWN0b3I6OnNwcmludGYoYWN0dWFsLCBmb3JtYXQsICJoZWxsbyB3b3JsZCIp
OwotICAgIDo6c3ByaW50ZihleHBlY3RlZCwgZm9ybWF0LCAiaGVsbG8gd29ybGQiKTsKLSAgICBB
U1NFUlRfRVEoc3RyY21wKGFjdHVhbCwgZXhwZWN0ZWQpLCAwKTsKLQotICAgIG1lbXNldChhY3R1
YWwsICd6Jywgc2l6ZW9mKGFjdHVhbCkpOwotICAgIGZvcm1hdCA9ICInJSUqcycsIDgsIFwiaGVs
bG8gd29ybGRcIiAgICAgID09PiAnJSpzJ1xuIjsKLSAgICBWTUluc3BlY3Rvcjo6c3ByaW50Zihh
Y3R1YWwsIGZvcm1hdCwgOCwgImhlbGxvIHdvcmxkIik7Ci0gICAgOjpzcHJpbnRmKGV4cGVjdGVk
LCBmb3JtYXQsIDgsICJoZWxsbyB3b3JsZCIpOwotICAgIEFTU0VSVF9FUShzdHJjbXAoYWN0dWFs
LCBleHBlY3RlZCksIDApOwotCi0gICAgbWVtc2V0KGFjdHVhbCwgJ3onLCBzaXplb2YoYWN0dWFs
KSk7Ci0gICAgZm9ybWF0ID0gIiclJSpzJywgOCwgXCJoZWxsb1wiICAgICAgICAgICAgPT0+ICcl
KnMnXG4iOwotICAgIFZNSW5zcGVjdG9yOjpzcHJpbnRmKGFjdHVhbCwgZm9ybWF0LCA4LCAiaGVs
bG8iKTsKLSAgICA6OnNwcmludGYoZXhwZWN0ZWQsIGZvcm1hdCwgOCwgImhlbGxvIik7Ci0gICAg
QVNTRVJUX0VRKHN0cmNtcChhY3R1YWwsIGV4cGVjdGVkKSwgMCk7Ci0KLSAgICBtZW1zZXQoYWN0
dWFsLCAneicsIHNpemVvZihhY3R1YWwpKTsKLSAgICBmb3JtYXQgPSAiJyUlZCcsIDk4NzY1NDMy
MSAgICAgICAgICAgICAgPT0+ICclZCdcbiI7Ci0gICAgVk1JbnNwZWN0b3I6OnNwcmludGYoYWN0
dWFsLCBmb3JtYXQsIDk4NzY1NDMyMSk7Ci0gICAgOjpzcHJpbnRmKGV4cGVjdGVkLCBmb3JtYXQs
IDk4NzY1NDMyMSk7Ci0gICAgQVNTRVJUX0VRKHN0cmNtcChhY3R1YWwsIGV4cGVjdGVkKSwgMCk7
Ci0KLSAgICBtZW1zZXQoYWN0dWFsLCAneicsIHNpemVvZihhY3R1YWwpKTsKLSAgICBmb3JtYXQg
PSAiJyUldScsIDQyNzY1NDMyMTB1ICAgICAgICAgICAgPT0+ICcldSdcbiI7Ci0gICAgVk1JbnNw
ZWN0b3I6OnNwcmludGYoYWN0dWFsLCBmb3JtYXQsIDQyNzY1NDMyMTB1KTsKLSAgICA6OnNwcmlu
dGYoZXhwZWN0ZWQsIGZvcm1hdCwgNDI3NjU0MzIxMHUpOwotICAgIEFTU0VSVF9FUShzdHJjbXAo
YWN0dWFsLCBleHBlY3RlZCksIDApOwotCi0gICAgbWVtc2V0KGFjdHVhbCwgJ3onLCBzaXplb2Yo
YWN0dWFsKSk7Ci0gICAgZm9ybWF0ID0gIiclJXUnLCAweGZmZmZmZmZmICAgICAgICAgICAgID09
PiAnJXUnXG4iOwotICAgIFZNSW5zcGVjdG9yOjpzcHJpbnRmKGFjdHVhbCwgZm9ybWF0LCAweGZm
ZmZmZmZmKTsKLSAgICA6OnNwcmludGYoZXhwZWN0ZWQsIGZvcm1hdCwgMHhmZmZmZmZmZik7Ci0g
ICAgQVNTRVJUX0VRKHN0cmNtcChhY3R1YWwsIGV4cGVjdGVkKSwgMCk7Ci0KLSAgICBtZW1zZXQo
YWN0dWFsLCAneicsIHNpemVvZihhY3R1YWwpKTsKLSAgICBmb3JtYXQgPSAiJyUleCcsIDB4ZmZm
ZmZmZmYgICAgICAgICAgICAgPT0+ICcleCdcbiI7Ci0gICAgVk1JbnNwZWN0b3I6OnNwcmludGYo
YWN0dWFsLCBmb3JtYXQsIDB4ZmZmZmZmZmYpOwotICAgIDo6c3ByaW50ZihleHBlY3RlZCwgZm9y
bWF0LCAweGZmZmZmZmZmKTsKLSAgICBBU1NFUlRfRVEoc3RyY21wKGFjdHVhbCwgZXhwZWN0ZWQp
LCAwKTsKLQotICAgIG1lbXNldChhY3R1YWwsICd6Jywgc2l6ZW9mKGFjdHVhbCkpOwotICAgIGZv
cm1hdCA9ICInJSVwJywgKHZvaWQqKTB4YWJjZGJhYmUgICAgICA9PT4gJyVwJ1xuIjsKLSAgICBW
TUluc3BlY3Rvcjo6c3ByaW50ZihhY3R1YWwsIGZvcm1hdCwgKHZvaWQqKTB4YWJjZGJhYmUpOwot
ICAgIDo6c3ByaW50ZihleHBlY3RlZCwgZm9ybWF0LCAodm9pZCopMHhhYmNkYmFiZSk7Ci0gICAg
QVNTRVJUX0VRKHN0cmNtcChhY3R1YWwsIGV4cGVjdGVkKSwgMCk7Ci0KLSAgICBtZW1zZXQoYWN0
dWFsLCAneicsIHNpemVvZihhY3R1YWwpKTsKLSAgICBmb3JtYXQgPSAiJyUlbHUnLCAxMjM0NTY3
ODkwOTg3NjU0MzIxdWwgPT0+ICclbHUnXG4iOwotICAgIFZNSW5zcGVjdG9yOjpzcHJpbnRmKGFj
dHVhbCwgZm9ybWF0LCAxMjM0NTY3ODkwOTg3NjU0MzIxdWwpOwotICAgIDo6c3ByaW50ZihleHBl
Y3RlZCwgZm9ybWF0LCAxMjM0NTY3ODkwOTg3NjU0MzIxdWwpOwotICAgIEFTU0VSVF9FUShzdHJj
bXAoYWN0dWFsLCBleHBlY3RlZCksIDApOwotCi0gICAgbWVtc2V0KGFjdHVhbCwgJ3onLCBzaXpl
b2YoYWN0dWFsKSk7Ci0gICAgZm9ybWF0ID0gIiclJWYnLCAxMjM0LjU2NyAgICAgICAgICAgICAg
ID09PiAnJWYnXG4iOwotICAgIFZNSW5zcGVjdG9yOjpzcHJpbnRmKGFjdHVhbCwgZm9ybWF0LCAx
MjM0LjU2Nyk7Ci0gICAgOjpzcHJpbnRmKGV4cGVjdGVkLCBmb3JtYXQsIDEyMzQuNTY3KTsKLSAg
ICBBU1NFUlRfRVEoc3RyY21wKGFjdHVhbCwgZXhwZWN0ZWQpLCAwKTsKLQotICAgIG1lbXNldChh
Y3R1YWwsICd6Jywgc2l6ZW9mKGFjdHVhbCkpOwotICAgIGZvcm1hdCA9ICInJSUuMmYnLCAxMjM0
LjU2NyAgICAgICAgICAgICA9PT4gJyUuMmYnXG4iOwotICAgIFZNSW5zcGVjdG9yOjpzcHJpbnRm
KGFjdHVhbCwgZm9ybWF0LCAxMjM0LjU2Nyk7Ci0gICAgOjpzcHJpbnRmKGV4cGVjdGVkLCBmb3Jt
YXQsIDEyMzQuNTY3KTsKLSAgICBBU1NFUlRfRVEoc3RyY21wKGFjdHVhbCwgZXhwZWN0ZWQpLCAw
KTsKLQotICAgIG1lbXNldChhY3R1YWwsICd6Jywgc2l6ZW9mKGFjdHVhbCkpOwotICAgIGZvcm1h
dCA9ICInJSUxMC4yZicsIDEyMzQuNTY3ICAgICAgICAgICA9PT4gJyUxMC4yZidcbiI7Ci0gICAg
Vk1JbnNwZWN0b3I6OnNwcmludGYoYWN0dWFsLCBmb3JtYXQsIDEyMzQuNTY3KTsKLSAgICA6OnNw
cmludGYoZXhwZWN0ZWQsIGZvcm1hdCwgMTIzNC41NjcpOwotICAgIEFTU0VSVF9FUShzdHJjbXAo
YWN0dWFsLCBleHBlY3RlZCksIDApOwotCi0gICAgbWVtc2V0KGFjdHVhbCwgJ3onLCBzaXplb2Yo
YWN0dWFsKSk7Ci0gICAgZm9ybWF0ID0gIiclJTAxMC4yZicsIDEyMzQuNTY3ICAgICAgICAgID09
PiAnJTAxMC4yZidcbiI7Ci0gICAgVk1JbnNwZWN0b3I6OnNwcmludGYoYWN0dWFsLCBmb3JtYXQs
IDEyMzQuNTY3KTsKLSAgICA6OnNwcmludGYoZXhwZWN0ZWQsIGZvcm1hdCwgMTIzNC41NjcpOwot
ICAgIEFTU0VSVF9FUShzdHJjbXAoYWN0dWFsLCBleHBlY3RlZCksIDApOwotCi0gICAgLy8gQmFk
IC8gd2VpcmQgZm9ybWF0czoKLSAgICBtZW1zZXQoYWN0dWFsLCAneicsIHNpemVvZihhY3R1YWwp
KTsKLSAgICBmb3JtYXQgPSAiJyUlNS40JywgOTg3NjU0MzIxICAgICAgICAgICAgPT0+ICclNS40
J1xuIjsKLSAgICBWTUluc3BlY3Rvcjo6c3ByaW50ZihhY3R1YWwsIGZvcm1hdCwgOTg3NjU0MzIx
KTsKLSAgICBleHBlY3RlZExpdGVyYWwgPSAiJyU1LjQnLCA5ODc2NTQzMjEgICAgICAgICAgICA9
PT4gJ0VSUk9SIEAgXCIlNS40JyBcIlxuIjsKLSAgICBBU1NFUlRfRVEoc3RyY21wKGFjdHVhbCwg
ZXhwZWN0ZWRMaXRlcmFsKSwgMCk7Ci0KLSAgICBtZW1zZXQoYWN0dWFsLCAneicsIHNpemVvZihh
Y3R1YWwpKTsKLSAgICBmb3JtYXQgPSAiJyUlNS40JyAnJSVkJywgOTg3NjU0MzIxLCA0ICAgID09
PiAnJTUuNCcgJyVkJ1xuIjsKLSAgICBWTUluc3BlY3Rvcjo6c3ByaW50ZihhY3R1YWwsIGZvcm1h
dCwgOTg3NjU0MzIxLCA0KTsKLSAgICA6OnNwcmludGYoZXhwZWN0ZWQsIGZvcm1hdCwgOTg3NjU0
MzIxLCA0KTsKLSAgICBBU1NFUlRfRVEoc3RyY21wKGFjdHVhbCwgZXhwZWN0ZWQpLCAwKTsKLQot
ICAgIG1lbXNldChhY3R1YWwsICd6Jywgc2l6ZW9mKGFjdHVhbCkpOwotICAgIGZvcm1hdCA9ICIn
JSV3JyAnJSVkJywgOTg3NjU0MzIxLCA2ICAgICAgPT0+ICcldycgJyVkJ1xuIjsKLSAgICBWTUlu
c3BlY3Rvcjo6c3ByaW50ZihhY3R1YWwsIGZvcm1hdCwgOTg3NjU0MzIxLCA2KTsKLSAgICA6OnNw
cmludGYoZXhwZWN0ZWQsIGZvcm1hdCwgOTg3NjU0MzIxLCA2KTsKLSAgICBBU1NFUlRfRVEoc3Ry
Y21wKGFjdHVhbCwgZXhwZWN0ZWQpLCAwKTsKLQotCi0gICAgLy8gVGVzdGluZyB0aGUgJWIgZXh0
ZW5zaW9uOgotICAgIG1lbXNldChhY3R1YWwsICd6Jywgc2l6ZW9mKGFjdHVhbCkpOwotICAgIFZN
SW5zcGVjdG9yOjpzcHJpbnRmKGFjdHVhbCwgIiclJWInLCAwICAgICAgICAgID09PiAnJWInXG4i
LCAwKTsKLSAgICBBU1NFUlRfRVEoc3RyY21wKGFjdHVhbCwgIiclYicsIDAgICAgICAgICAgPT0+
ICdGQUxTRSdcbiIpLCAwKTsKLQotICAgIG1lbXNldChhY3R1YWwsICd6Jywgc2l6ZW9mKGFjdHVh
bCkpOwotICAgIFZNSW5zcGVjdG9yOjpzcHJpbnRmKGFjdHVhbCwgIiclJWInLCAxICAgICAgICAg
ID09PiAnJWInXG4iLCAxKTsKLSAgICBBU1NFUlRfRVEoc3RyY21wKGFjdHVhbCwgIiclYicsIDEg
ICAgICAgICAgPT0+ICdUUlVFJ1xuIiksIDApOwotCi0gICAgbWVtc2V0KGFjdHVhbCwgJ3onLCBz
aXplb2YoYWN0dWFsKSk7Ci0gICAgVk1JbnNwZWN0b3I6OnNwcmludGYoYWN0dWFsLCAiJyUlYics
IC0xMjM0NTY3ODkgPT0+ICclYidcbiIsIC0xMjM0NTY3ODkpOwotICAgIEFTU0VSVF9FUShzdHJj
bXAoYWN0dWFsLCAiJyViJywgLTEyMzQ1Njc4OSA9PT4gJ1RSVUUnXG4iKSwgMCk7Ci0KLSAgICBt
ZW1zZXQoYWN0dWFsLCAneicsIHNpemVvZihhY3R1YWwpKTsKLSAgICBWTUluc3BlY3Rvcjo6c3By
aW50ZihhY3R1YWwsICInJSViJywgMTIzNDU2Nzg5ICA9PT4gJyViJ1xuIiwgMTIzNDU2Nzg5KTsK
LSAgICBBU1NFUlRfRVEoc3RyY21wKGFjdHVhbCwgIiclYicsIDEyMzQ1Njc4OSAgPT0+ICdUUlVF
J1xuIiksIDApOwotCi0KLSAgICAvLyBUZXN0aW5nIHRoZSAlSjx4PiBleHRlbnNpb25zOgotICAg
IFN0cmluZyBzdHIxKCJUZXN0IFdURiBTdHJpbmciKTsKLSAgICBTdHJpbmcgc3RyMigiIik7Ci0K
LSAgICBtZW1zZXQoYWN0dWFsLCAneicsIHNpemVvZihhY3R1YWwpKTsKLSAgICBWTUluc3BlY3Rv
cjo6c3ByaW50ZihhY3R1YWwsICInJSVKcycgaXMgJSVzLCAmc3RyMSwgc3RyMS5pc0VtcHR5KCk/
XCJFTVBUWVwiOlwiTk9UIEVNUFRZXCIgID09PiAnJUpzJyBpcyAlc1xuIiwKLSAgICAgICAgJnN0
cjEsIHN0cjEuaXNFbXB0eSgpID8gIkVNUFRZIiA6ICJOT1QgRU1QVFkiKTsKLSAgICBleHBlY3Rl
ZExpdGVyYWwgPSAiJyVKcycgaXMgJXMsICZzdHIxLCBzdHIxLmlzRW1wdHkoKT9cIkVNUFRZXCI6
XCJOT1QgRU1QVFlcIiAgPT0+ICdUZXN0IFdURiBTdHJpbmcnIGlzIE5PVCBFTVBUWVxuIjsKLSAg
ICBBU1NFUlRfRVEoc3RyY21wKGFjdHVhbCwgZXhwZWN0ZWRMaXRlcmFsKSwgMCk7Ci0KLSAgICBt
ZW1zZXQoYWN0dWFsLCAneicsIHNpemVvZihhY3R1YWwpKTsKLSAgICBWTUluc3BlY3Rvcjo6c3By
aW50ZihhY3R1YWwsICInJSVKcycgaXMgJSVzLCAmc3RyMiwgc3RyMi5pc0VtcHR5KCk/XCJFTVBU
WVwiOlwiTk9UIEVNUFRZXCIgID09PiAnJUpzJyBpcyAlc1xuIiwKLSAgICAgICAgJnN0cjIsIHN0
cjIuaXNFbXB0eSgpID8gIkVNUFRZIiA6ICJOT1QgRU1QVFkiKTsKLSAgICBleHBlY3RlZExpdGVy
YWwgPSAiJyVKcycgaXMgJXMsICZzdHIyLCBzdHIyLmlzRW1wdHkoKT9cIkVNUFRZXCI6XCJOT1Qg
RU1QVFlcIiAgPT0+ICcnIGlzIEVNUFRZXG4iOwotICAgIEFTU0VSVF9FUShzdHJjbXAoYWN0dWFs
LCBleHBlY3RlZExpdGVyYWwpLCAwKTsKLQotICAgIG1lbXNldChhY3R1YWwsICd6Jywgc2l6ZW9m
KGFjdHVhbCkpOwotICAgIFZNSW5zcGVjdG9yOjpzcHJpbnRmKGFjdHVhbCwgIiclJUorcycgaXMg
JSVzLCAmc3RyMSwgc3RyMS5pc0VtcHR5KCk/XCJFTVBUWVwiOlwiTk9UIEVNUFRZXCIgPT0+ICcl
SitzJyBpcyAlc1xuIiwKLSAgICAgICAgJnN0cjEsIHN0cjEuaXNFbXB0eSgpID8gIkVNUFRZIiA6
ICJOT1QgRU1QVFkiKTsKLSAgICBleHBlY3RlZExpdGVyYWwgPSAiJyVKK3MnIGlzICVzLCAmc3Ry
MSwgc3RyMS5pc0VtcHR5KCk/XCJFTVBUWVwiOlwiTk9UIEVNUFRZXCIgPT0+ICdXVEY6OlN0cmlu
ZyBcIlRlc3QgV1RGIFN0cmluZ1wiJyBpcyBOT1QgRU1QVFlcbiI7Ci0gICAgQVNTRVJUX0VRKHN0
cmNtcChhY3R1YWwsIGV4cGVjdGVkTGl0ZXJhbCksIDApOwotCi0gICAgbWVtc2V0KGFjdHVhbCwg
J3onLCBzaXplb2YoYWN0dWFsKSk7Ci0gICAgVk1JbnNwZWN0b3I6OnNwcmludGYoYWN0dWFsLCAi
JyUlSitzJyBpcyAlJXMsICZzdHIyLCBzdHIyLmlzRW1wdHkoKT9cIkVNUFRZXCI6XCJOT1QgRU1Q
VFlcIiA9PT4gJyVKK3MnIGlzICVzXG4iLAotICAgICAgICAmc3RyMiwgc3RyMi5pc0VtcHR5KCkg
PyAiRU1QVFkiIDogIk5PVCBFTVBUWSIpOwotICAgIGV4cGVjdGVkTGl0ZXJhbCA9ICInJUorcycg
aXMgJXMsICZzdHIyLCBzdHIyLmlzRW1wdHkoKT9cIkVNUFRZXCI6XCJOT1QgRU1QVFlcIiA9PT4g
J1dURjo6U3RyaW5nIFwiXCInIGlzIEVNUFRZXG4iOwotICAgIEFTU0VSVF9FUShzdHJjbXAoYWN0
dWFsLCBleHBlY3RlZExpdGVyYWwpLCAwKTsKLSNlbmRpZgotfQotCi0KLVRFU1QoSlNDLCBWTUlu
c3BlY3RvclNucHJpbnRmKQotewotI2lmIEVOQUJMRShWTUlOU1BFQ1RPUikKLSAgICBjaGFyIGFj
dHVhbFsxMDI0XTsKLSAgICBjaGFyIGV4cGVjdGVkWzEwMjRdOwotICAgIGNvbnN0IGNoYXIqIGZv
cm1hdDsKLSAgICBjb25zdCBjaGFyKiBleHBlY3RlZExpdGVyYWw7Ci0KLSAgICBzaXplX3Qgc2l6
ZSA9IDE7Ci0gICAgd2hpbGUgKHNpemUgPD0gMTAwKSB7Ci0KLSAgICAgICAgLy8gVGVzdGluZyBz
dGFuZGFyZCBkZWZhdWx0IGZvcm1hdCBzcGVjaWZpZXJzOgotICAgICAgICAvLyBOb3RlOiBzaG91
bGQgd29yayBqdXN0IGxpa2Ugc25wcmludGYuIFNvLCB3ZSBqdXN0IGNvbXBhcmUgYWdhaW5zdCB0
aGF0LgotICAgICAgICBtZW1zZXQoYWN0dWFsLCAneicsIHNpemVvZihhY3R1YWwpKTsKLSAgICAg
ICAgLy8gVGhlIGNvbXBpbGVyIHdhcm5pbmcgZmxhZ3MgYXJlIGNvbmZpZ3VyZWQgdG8gZXhwZWN0
IGEgbGl0ZXJhbCBzdHJpbmcgZm9yCi0gICAgICAgIC8vIDo6c25wcmludGYgYmVsb3cuIFNvLCB1
c2UgYSAjZGVmaW5lIGZvciB0aGlzIG9uZSBjYXNlIHRvIGtlZXAgdGhlCi0gICAgICAgIC8vIGNv
bXBpbGVyIGhhcHB5LgotI3VuZGVmIExJVEVSQUxfRk9STUFUCi0jZGVmaW5lIExJVEVSQUxfRk9S
TUFUICInJSUlJScgICAgICAgICAgICAgICAgICAgICAgICAgPT0+ICclJSdcbiIKLSAgICAgICAg
Vk1JbnNwZWN0b3I6OnNucHJpbnRmKGFjdHVhbCwgc2l6ZSwgTElURVJBTF9GT1JNQVQpOwotICAg
ICAgICA6OnNucHJpbnRmKGV4cGVjdGVkLCBzaXplLCBMSVRFUkFMX0ZPUk1BVCk7Ci0jdW5kZWYg
TElURVJBTF9GT1JNQVQKLSAgICAgICAgQVNTRVJUX0VRKHN0cmNtcChhY3R1YWwsIGV4cGVjdGVk
KSwgMCk7Ci0KLSAgICAgICAgbWVtc2V0KGFjdHVhbCwgJ3onLCBzaXplb2YoYWN0dWFsKSk7Ci0g
ICAgICAgIGZvcm1hdCA9ICInJSVjJywgJ3gnICAgICAgICAgICAgICAgICAgICA9PT4gJyVjJ1xu
IjsKLSAgICAgICAgVk1JbnNwZWN0b3I6OnNucHJpbnRmKGFjdHVhbCwgc2l6ZSwgZm9ybWF0LCAn
eCcpOwotICAgICAgICA6OnNucHJpbnRmKGV4cGVjdGVkLCBzaXplLCBmb3JtYXQsICd4Jyk7Ci0g
ICAgICAgIEFTU0VSVF9FUShzdHJjbXAoYWN0dWFsLCBleHBlY3RlZCksIDApOwotCi0gICAgICAg
IG1lbXNldChhY3R1YWwsICd6Jywgc2l6ZW9mKGFjdHVhbCkpOwotICAgICAgICBmb3JtYXQgPSAi
JyUlKmMnLCA4LCAneCcgICAgICAgICAgICAgICAgPT0+ICclKmMnXG4iOwotICAgICAgICBWTUlu
c3BlY3Rvcjo6c25wcmludGYoYWN0dWFsLCBzaXplLCBmb3JtYXQsIDgsICd4Jyk7Ci0gICAgICAg
IDo6c25wcmludGYoZXhwZWN0ZWQsIHNpemUsIGZvcm1hdCwgOCwgJ3gnKTsKLSAgICAgICAgQVNT
RVJUX0VRKHN0cmNtcChhY3R1YWwsIGV4cGVjdGVkKSwgMCk7Ci0KLSAgICAgICAgbWVtc2V0KGFj
dHVhbCwgJ3onLCBzaXplb2YoYWN0dWFsKSk7Ci0gICAgICAgIGZvcm1hdCA9ICInJSVzJywgXCJo
ZWxsbyB3b3JsZFwiICAgICAgICAgID09PiAnJXMnXG4iOwotICAgICAgICBWTUluc3BlY3Rvcjo6
c25wcmludGYoYWN0dWFsLCBzaXplLCBmb3JtYXQsICJoZWxsbyB3b3JsZCIpOwotICAgICAgICA6
OnNucHJpbnRmKGV4cGVjdGVkLCBzaXplLCBmb3JtYXQsICJoZWxsbyB3b3JsZCIpOwotICAgICAg
ICBBU1NFUlRfRVEoc3RyY21wKGFjdHVhbCwgZXhwZWN0ZWQpLCAwKTsKLQotICAgICAgICBtZW1z
ZXQoYWN0dWFsLCAneicsIHNpemVvZihhY3R1YWwpKTsKLSAgICAgICAgZm9ybWF0ID0gIiclJSpz
JywgOCwgXCJoZWxsbyB3b3JsZFwiICAgICAgPT0+ICclKnMnXG4iOwotICAgICAgICBWTUluc3Bl
Y3Rvcjo6c25wcmludGYoYWN0dWFsLCBzaXplLCBmb3JtYXQsIDgsICJoZWxsbyB3b3JsZCIpOwot
ICAgICAgICA6OnNucHJpbnRmKGV4cGVjdGVkLCBzaXplLCBmb3JtYXQsIDgsICJoZWxsbyB3b3Js
ZCIpOwotICAgICAgICBBU1NFUlRfRVEoc3RyY21wKGFjdHVhbCwgZXhwZWN0ZWQpLCAwKTsKLQot
ICAgICAgICBtZW1zZXQoYWN0dWFsLCAneicsIHNpemVvZihhY3R1YWwpKTsKLSAgICAgICAgZm9y
bWF0ID0gIiclJSpzJywgOCwgXCJoZWxsb1wiICAgICAgICAgICAgPT0+ICclKnMnXG4iOwotICAg
ICAgICBWTUluc3BlY3Rvcjo6c25wcmludGYoYWN0dWFsLCBzaXplLCBmb3JtYXQsIDgsICJoZWxs
byIpOwotICAgICAgICA6OnNucHJpbnRmKGV4cGVjdGVkLCBzaXplLCBmb3JtYXQsIDgsICJoZWxs
byIpOwotICAgICAgICBBU1NFUlRfRVEoc3RyY21wKGFjdHVhbCwgZXhwZWN0ZWQpLCAwKTsKLQot
ICAgICAgICBtZW1zZXQoYWN0dWFsLCAneicsIHNpemVvZihhY3R1YWwpKTsKLSAgICAgICAgZm9y
bWF0ID0gIiclJWQnLCA5ODc2NTQzMjEgICAgICAgICAgICAgID09PiAnJWQnXG4iOwotICAgICAg
ICBWTUluc3BlY3Rvcjo6c25wcmludGYoYWN0dWFsLCBzaXplLCBmb3JtYXQsIDk4NzY1NDMyMSk7
Ci0gICAgICAgIDo6c25wcmludGYoZXhwZWN0ZWQsIHNpemUsIGZvcm1hdCwgOTg3NjU0MzIxKTsK
LSAgICAgICAgQVNTRVJUX0VRKHN0cmNtcChhY3R1YWwsIGV4cGVjdGVkKSwgMCk7Ci0KLSAgICAg
ICAgbWVtc2V0KGFjdHVhbCwgJ3onLCBzaXplb2YoYWN0dWFsKSk7Ci0gICAgICAgIGZvcm1hdCA9
ICInJSV1JywgNDI3NjU0MzIxMHUgICAgICAgICAgICA9PT4gJyV1J1xuIjsKLSAgICAgICAgVk1J
bnNwZWN0b3I6OnNucHJpbnRmKGFjdHVhbCwgc2l6ZSwgZm9ybWF0LCA0Mjc2NTQzMjEwdSk7Ci0g
ICAgICAgIDo6c25wcmludGYoZXhwZWN0ZWQsIHNpemUsIGZvcm1hdCwgNDI3NjU0MzIxMHUpOwot
ICAgICAgICBBU1NFUlRfRVEoc3RyY21wKGFjdHVhbCwgZXhwZWN0ZWQpLCAwKTsKLQotICAgICAg
ICBtZW1zZXQoYWN0dWFsLCAneicsIHNpemVvZihhY3R1YWwpKTsKLSAgICAgICAgZm9ybWF0ID0g
IiclJXUnLCAweGZmZmZmZmZmICAgICAgICAgICAgID09PiAnJXUnXG4iOwotICAgICAgICBWTUlu
c3BlY3Rvcjo6c25wcmludGYoYWN0dWFsLCBzaXplLCBmb3JtYXQsIDB4ZmZmZmZmZmYpOwotICAg
ICAgICA6OnNucHJpbnRmKGV4cGVjdGVkLCBzaXplLCBmb3JtYXQsIDB4ZmZmZmZmZmYpOwotICAg
ICAgICBBU1NFUlRfRVEoc3RyY21wKGFjdHVhbCwgZXhwZWN0ZWQpLCAwKTsKLQotICAgICAgICBt
ZW1zZXQoYWN0dWFsLCAneicsIHNpemVvZihhY3R1YWwpKTsKLSAgICAgICAgZm9ybWF0ID0gIicl
JXgnLCAweGZmZmZmZmZmICAgICAgICAgICAgID09PiAnJXgnXG4iOwotICAgICAgICBWTUluc3Bl
Y3Rvcjo6c25wcmludGYoYWN0dWFsLCBzaXplLCBmb3JtYXQsIDB4ZmZmZmZmZmYpOwotICAgICAg
ICA6OnNucHJpbnRmKGV4cGVjdGVkLCBzaXplLCBmb3JtYXQsIDB4ZmZmZmZmZmYpOwotICAgICAg
ICBBU1NFUlRfRVEoc3RyY21wKGFjdHVhbCwgZXhwZWN0ZWQpLCAwKTsKLQotICAgICAgICBtZW1z
ZXQoYWN0dWFsLCAneicsIHNpemVvZihhY3R1YWwpKTsKLSAgICAgICAgZm9ybWF0ID0gIiclJXAn
LCAodm9pZCopMHhhYmNkYmFiZSAgICAgID09PiAnJXAnXG4iOwotICAgICAgICBWTUluc3BlY3Rv
cjo6c25wcmludGYoYWN0dWFsLCBzaXplLCBmb3JtYXQsICh2b2lkKikweGFiY2RiYWJlKTsKLSAg
ICAgICAgOjpzbnByaW50ZihleHBlY3RlZCwgc2l6ZSwgZm9ybWF0LCAodm9pZCopMHhhYmNkYmFi
ZSk7Ci0gICAgICAgIEFTU0VSVF9FUShzdHJjbXAoYWN0dWFsLCBleHBlY3RlZCksIDApOwotCi0g
ICAgICAgIG1lbXNldChhY3R1YWwsICd6Jywgc2l6ZW9mKGFjdHVhbCkpOwotICAgICAgICBmb3Jt
YXQgPSAiJyUlbHUnLCAxMjM0NTY3ODkwOTg3NjU0MzIxdWwgPT0+ICclbHUnXG4iOwotICAgICAg
ICBWTUluc3BlY3Rvcjo6c25wcmludGYoYWN0dWFsLCBzaXplLCBmb3JtYXQsIDEyMzQ1Njc4OTA5
ODc2NTQzMjF1bCk7Ci0gICAgICAgIDo6c25wcmludGYoZXhwZWN0ZWQsIHNpemUsIGZvcm1hdCwg
MTIzNDU2Nzg5MDk4NzY1NDMyMXVsKTsKLSAgICAgICAgQVNTRVJUX0VRKHN0cmNtcChhY3R1YWws
IGV4cGVjdGVkKSwgMCk7Ci0KLSAgICAgICAgbWVtc2V0KGFjdHVhbCwgJ3onLCBzaXplb2YoYWN0
dWFsKSk7Ci0gICAgICAgIGZvcm1hdCA9ICInJSVmJywgMTIzNC41NjcgICAgICAgICAgICAgICA9
PT4gJyVmJ1xuIjsKLSAgICAgICAgVk1JbnNwZWN0b3I6OnNucHJpbnRmKGFjdHVhbCwgc2l6ZSwg
Zm9ybWF0LCAxMjM0LjU2Nyk7Ci0gICAgICAgIDo6c25wcmludGYoZXhwZWN0ZWQsIHNpemUsIGZv
cm1hdCwgMTIzNC41NjcpOwotICAgICAgICBBU1NFUlRfRVEoc3RyY21wKGFjdHVhbCwgZXhwZWN0
ZWQpLCAwKTsKLQotICAgICAgICBtZW1zZXQoYWN0dWFsLCAneicsIHNpemVvZihhY3R1YWwpKTsK
LSAgICAgICAgZm9ybWF0ID0gIiclJS4yZicsIDEyMzQuNTY3ICAgICAgICAgICAgID09PiAnJS4y
ZidcbiI7Ci0gICAgICAgIFZNSW5zcGVjdG9yOjpzbnByaW50ZihhY3R1YWwsIHNpemUsIGZvcm1h
dCwgMTIzNC41NjcpOwotICAgICAgICA6OnNucHJpbnRmKGV4cGVjdGVkLCBzaXplLCBmb3JtYXQs
IDEyMzQuNTY3KTsKLSAgICAgICAgQVNTRVJUX0VRKHN0cmNtcChhY3R1YWwsIGV4cGVjdGVkKSwg
MCk7Ci0KLSAgICAgICAgbWVtc2V0KGFjdHVhbCwgJ3onLCBzaXplb2YoYWN0dWFsKSk7Ci0gICAg
ICAgIGZvcm1hdCA9ICInJSUxMC4yZicsIDEyMzQuNTY3ICAgICAgICAgICA9PT4gJyUxMC4yZidc
biI7Ci0gICAgICAgIFZNSW5zcGVjdG9yOjpzbnByaW50ZihhY3R1YWwsIHNpemUsIGZvcm1hdCwg
MTIzNC41NjcpOwotICAgICAgICA6OnNucHJpbnRmKGV4cGVjdGVkLCBzaXplLCBmb3JtYXQsIDEy
MzQuNTY3KTsKLSAgICAgICAgQVNTRVJUX0VRKHN0cmNtcChhY3R1YWwsIGV4cGVjdGVkKSwgMCk7
Ci0KLSAgICAgICAgbWVtc2V0KGFjdHVhbCwgJ3onLCBzaXplb2YoYWN0dWFsKSk7Ci0gICAgICAg
IGZvcm1hdCA9ICInJSUwMTAuMmYnLCAxMjM0LjU2NyAgICAgICAgICA9PT4gJyUwMTAuMmYnXG4i
OwotICAgICAgICBWTUluc3BlY3Rvcjo6c25wcmludGYoYWN0dWFsLCBzaXplLCBmb3JtYXQsIDEy
MzQuNTY3KTsKLSAgICAgICAgOjpzbnByaW50ZihleHBlY3RlZCwgc2l6ZSwgZm9ybWF0LCAxMjM0
LjU2Nyk7Ci0gICAgICAgIEFTU0VSVF9FUShzdHJjbXAoYWN0dWFsLCBleHBlY3RlZCksIDApOwot
Ci0gICAgICAgIC8vIEJhZCAvIHdlaXJkIGZvcm1hdHM6Ci0gICAgICAgIG1lbXNldChhY3R1YWws
ICd6Jywgc2l6ZW9mKGFjdHVhbCkpOwotICAgICAgICBmb3JtYXQgPSAiJyUlNS40JywgOTg3NjU0
MzIxICAgICAgICAgICAgPT0+ICclNS40J1xuIjsKLSAgICAgICAgVk1JbnNwZWN0b3I6OnNucHJp
bnRmKGFjdHVhbCwgc2l6ZSwgZm9ybWF0LCA5ODc2NTQzMjEpOwotICAgICAgICBleHBlY3RlZExp
dGVyYWwgPSAiJyU1LjQnLCA5ODc2NTQzMjEgICAgICAgICAgICA9PT4gJ0VSUk9SIEAgXCIlNS40
JyBcIlxuIjsKLSAgICAgICAgOjpzbnByaW50ZihleHBlY3RlZCwgc2l6ZSwgIiVzIiwgZXhwZWN0
ZWRMaXRlcmFsKTsKLSAgICAgICAgQVNTRVJUX0VRKHN0cmNtcChhY3R1YWwsIGV4cGVjdGVkKSwg
MCk7Ci0KLSAgICAgICAgbWVtc2V0KGFjdHVhbCwgJ3onLCBzaXplb2YoYWN0dWFsKSk7Ci0gICAg
ICAgIGZvcm1hdCA9ICInJSU1LjQnICclJWQnLCA5ODc2NTQzMjEsIDQgICAgPT0+ICclNS40JyAn
JWQnXG4iOwotICAgICAgICBWTUluc3BlY3Rvcjo6c25wcmludGYoYWN0dWFsLCBzaXplLCBmb3Jt
YXQsIDk4NzY1NDMyMSwgNCk7Ci0gICAgICAgIDo6c25wcmludGYoZXhwZWN0ZWQsIHNpemUsIGZv
cm1hdCwgOTg3NjU0MzIxLCA0KTsKLSAgICAgICAgQVNTRVJUX0VRKHN0cmNtcChhY3R1YWwsIGV4
cGVjdGVkKSwgMCk7Ci0KLSAgICAgICAgbWVtc2V0KGFjdHVhbCwgJ3onLCBzaXplb2YoYWN0dWFs
KSk7Ci0gICAgICAgIGZvcm1hdCA9ICInJSV3JyAnJSVkJywgOTg3NjU0MzIxLCA2ICAgICAgPT0+
ICcldycgJyVkJ1xuIjsKLSAgICAgICAgVk1JbnNwZWN0b3I6OnNucHJpbnRmKGFjdHVhbCwgc2l6
ZSwgZm9ybWF0LCA5ODc2NTQzMjEsIDYpOwotICAgICAgICA6OnNucHJpbnRmKGV4cGVjdGVkLCBz
aXplLCBmb3JtYXQsIDk4NzY1NDMyMSwgNik7Ci0gICAgICAgIEFTU0VSVF9FUShzdHJjbXAoYWN0
dWFsLCBleHBlY3RlZCksIDApOwotCi0KLSAgICAgICAgLy8gVGVzdGluZyB0aGUgJWIgZXh0ZW5z
aW9uOgotICAgICAgICBtZW1zZXQoYWN0dWFsLCAneicsIHNpemVvZihhY3R1YWwpKTsKLSAgICAg
ICAgVk1JbnNwZWN0b3I6OnNucHJpbnRmKGFjdHVhbCwgc2l6ZSwgIiclJWInLCAwICAgICAgICAg
ID09PiAnJWInXG4iLCAwKTsKLSAgICAgICAgZXhwZWN0ZWRMaXRlcmFsID0gIiclYicsIDAgICAg
ICAgICAgPT0+ICdGQUxTRSdcbiI7Ci0gICAgICAgIDo6c25wcmludGYoZXhwZWN0ZWQsIHNpemUs
ICIlcyIsIGV4cGVjdGVkTGl0ZXJhbCk7Ci0gICAgICAgIEFTU0VSVF9FUShzdHJjbXAoYWN0dWFs
LCBleHBlY3RlZCksIDApOwotCi0gICAgICAgIG1lbXNldChhY3R1YWwsICd6Jywgc2l6ZW9mKGFj
dHVhbCkpOwotICAgICAgICBWTUluc3BlY3Rvcjo6c25wcmludGYoYWN0dWFsLCBzaXplLCAiJyUl
YicsIDEgICAgICAgICAgPT0+ICclYidcbiIsIDEpOwotICAgICAgICBleHBlY3RlZExpdGVyYWwg
PSAiJyViJywgMSAgICAgICAgICA9PT4gJ1RSVUUnXG4iOwotICAgICAgICA6OnNucHJpbnRmKGV4
cGVjdGVkLCBzaXplLCAiJXMiLCBleHBlY3RlZExpdGVyYWwpOwotICAgICAgICBBU1NFUlRfRVEo
c3RyY21wKGFjdHVhbCwgZXhwZWN0ZWQpLCAwKTsKLQotICAgICAgICBtZW1zZXQoYWN0dWFsLCAn
eicsIHNpemVvZihhY3R1YWwpKTsKLSAgICAgICAgVk1JbnNwZWN0b3I6OnNucHJpbnRmKGFjdHVh
bCwgc2l6ZSwgIiclJWInLCAtMTIzNDU2Nzg5ID09PiAnJWInXG4iLCAtMTIzNDU2Nzg5KTsKLSAg
ICAgICAgZXhwZWN0ZWRMaXRlcmFsID0gIiclYicsIC0xMjM0NTY3ODkgPT0+ICdUUlVFJ1xuIjsK
LSAgICAgICAgOjpzbnByaW50ZihleHBlY3RlZCwgc2l6ZSwgIiVzIiwgZXhwZWN0ZWRMaXRlcmFs
KTsKLSAgICAgICAgQVNTRVJUX0VRKHN0cmNtcChhY3R1YWwsIGV4cGVjdGVkKSwgMCk7Ci0KLSAg
ICAgICAgbWVtc2V0KGFjdHVhbCwgJ3onLCBzaXplb2YoYWN0dWFsKSk7Ci0gICAgICAgIFZNSW5z
cGVjdG9yOjpzbnByaW50ZihhY3R1YWwsIHNpemUsICInJSViJywgMTIzNDU2Nzg5ICA9PT4gJyVi
J1xuIiwgMTIzNDU2Nzg5KTsKLSAgICAgICAgZXhwZWN0ZWRMaXRlcmFsID0gIiclYicsIDEyMzQ1
Njc4OSAgPT0+ICdUUlVFJ1xuIjsKLSAgICAgICAgOjpzbnByaW50ZihleHBlY3RlZCwgc2l6ZSwg
IiVzIiwgZXhwZWN0ZWRMaXRlcmFsKTsKLSAgICAgICAgQVNTRVJUX0VRKHN0cmNtcChhY3R1YWws
IGV4cGVjdGVkKSwgMCk7Ci0KLSAgICAgICAgLy8gVGVzdGluZyB0aGUgJUo8eD4gZXh0ZW5zaW9u
czoKLSAgICAgICAgU3RyaW5nIHN0cjEoIlRlc3QgV1RGIFN0cmluZyIpOwotICAgICAgICBTdHJp
bmcgc3RyMigiIik7Ci0KLSAgICAgICAgbWVtc2V0KGFjdHVhbCwgJ3onLCBzaXplb2YoYWN0dWFs
KSk7Ci0gICAgICAgIFZNSW5zcGVjdG9yOjpzbnByaW50ZihhY3R1YWwsIHNpemUsICInJSVKcycg
aXMgJSVzLCAmc3RyMSwgc3RyMS5pc0VtcHR5KCk/XCJFTVBUWVwiOlwiTk9UIEVNUFRZXCIgID09
PiAnJUpzJyBpcyAlc1xuIiwKLSAgICAgICAgICAgICZzdHIxLCBzdHIxLmlzRW1wdHkoKSA/ICJF
TVBUWSIgOiAiTk9UIEVNUFRZIik7Ci0gICAgICAgIGV4cGVjdGVkTGl0ZXJhbCA9ICInJUpzJyBp
cyAlcywgJnN0cjEsIHN0cjEuaXNFbXB0eSgpP1wiRU1QVFlcIjpcIk5PVCBFTVBUWVwiICA9PT4g
J1Rlc3QgV1RGIFN0cmluZycgaXMgTk9UIEVNUFRZXG4iOwotICAgICAgICA6OnNucHJpbnRmKGV4
cGVjdGVkLCBzaXplLCAiJXMiLCBleHBlY3RlZExpdGVyYWwpOwotICAgICAgICBBU1NFUlRfRVEo
c3RyY21wKGFjdHVhbCwgZXhwZWN0ZWQpLCAwKTsKLQotICAgICAgICBtZW1zZXQoYWN0dWFsLCAn
eicsIHNpemVvZihhY3R1YWwpKTsKLSAgICAgICAgVk1JbnNwZWN0b3I6OnNucHJpbnRmKGFjdHVh
bCwgc2l6ZSwgIiclJUpzJyBpcyAlJXMsICZzdHIyLCBzdHIyLmlzRW1wdHkoKT9cIkVNUFRZXCI6
XCJOT1QgRU1QVFlcIiAgPT0+ICclSnMnIGlzICVzXG4iLAotICAgICAgICAgICAgJnN0cjIsIHN0
cjIuaXNFbXB0eSgpID8gIkVNUFRZIiA6ICJOT1QgRU1QVFkiKTsKLSAgICAgICAgZXhwZWN0ZWRM
aXRlcmFsID0gIiclSnMnIGlzICVzLCAmc3RyMiwgc3RyMi5pc0VtcHR5KCk/XCJFTVBUWVwiOlwi
Tk9UIEVNUFRZXCIgID09PiAnJyBpcyBFTVBUWVxuIjsKLSAgICAgICAgOjpzbnByaW50ZihleHBl
Y3RlZCwgc2l6ZSwgIiVzIiwgZXhwZWN0ZWRMaXRlcmFsKTsKLSAgICAgICAgQVNTRVJUX0VRKHN0
cmNtcChhY3R1YWwsIGV4cGVjdGVkKSwgMCk7Ci0KLSAgICAgICAgbWVtc2V0KGFjdHVhbCwgJ3on
LCBzaXplb2YoYWN0dWFsKSk7Ci0gICAgICAgIFZNSW5zcGVjdG9yOjpzbnByaW50ZihhY3R1YWws
IHNpemUsICInJSVKK3MnIGlzICUlcywgJnN0cjEsIHN0cjEuaXNFbXB0eSgpP1wiRU1QVFlcIjpc
Ik5PVCBFTVBUWVwiID09PiAnJUorcycgaXMgJXNcbiIsCi0gICAgICAgICAgICAmc3RyMSwgc3Ry
MS5pc0VtcHR5KCkgPyAiRU1QVFkiIDogIk5PVCBFTVBUWSIpOwotICAgICAgICBleHBlY3RlZExp
dGVyYWwgPSAiJyVKK3MnIGlzICVzLCAmc3RyMSwgc3RyMS5pc0VtcHR5KCk/XCJFTVBUWVwiOlwi
Tk9UIEVNUFRZXCIgPT0+ICdXVEY6OlN0cmluZyBcIlRlc3QgV1RGIFN0cmluZ1wiJyBpcyBOT1Qg
RU1QVFlcbiI7Ci0gICAgICAgIDo6c25wcmludGYoZXhwZWN0ZWQsIHNpemUsICIlcyIsIGV4cGVj
dGVkTGl0ZXJhbCk7Ci0gICAgICAgIEFTU0VSVF9FUShzdHJjbXAoYWN0dWFsLCBleHBlY3RlZCks
IDApOwotCi0gICAgICAgIG1lbXNldChhY3R1YWwsICd6Jywgc2l6ZW9mKGFjdHVhbCkpOwotICAg
ICAgICBWTUluc3BlY3Rvcjo6c25wcmludGYoYWN0dWFsLCBzaXplLCAiJyUlSitzJyBpcyAlJXMs
ICZzdHIyLCBzdHIyLmlzRW1wdHkoKT9cIkVNUFRZXCI6XCJOT1QgRU1QVFlcIiA9PT4gJyVKK3Mn
IGlzICVzXG4iLAotICAgICAgICAgICAgJnN0cjIsIHN0cjIuaXNFbXB0eSgpID8gIkVNUFRZIiA6
ICJOT1QgRU1QVFkiKTsKLSAgICAgICAgZXhwZWN0ZWRMaXRlcmFsID0gIiclSitzJyBpcyAlcywg
JnN0cjIsIHN0cjIuaXNFbXB0eSgpP1wiRU1QVFlcIjpcIk5PVCBFTVBUWVwiID09PiAnV1RGOjpT
dHJpbmcgXCJcIicgaXMgRU1QVFlcbiI7Ci0gICAgICAgIDo6c25wcmludGYoZXhwZWN0ZWQsIHNp
emUsICIlcyIsIGV4cGVjdGVkTGl0ZXJhbCk7Ci0gICAgICAgIEFTU0VSVF9FUShzdHJjbXAoYWN0
dWFsLCBleHBlY3RlZCksIDApOwotCi0gICAgICAgIC8vIFRlc3QgbG93ZXIgc2l6ZXMgbW9yZSBk
ZW5zZWx5LCBhbmQgdGhlbiBzcGFjZSBvdXQgdG8gbGFyZ2VyIHNpemVzLgotICAgICAgICAvLyBX
ZSdyZSBkb2luZyB0aGlzIGJlY2F1c2UgdGhlIGxvd2VyIHNpemVzIG1pZ2h0IGJlIGludGVyZXN0
aW5nLCBidXQKLSAgICAgICAgLy8gZm9yIGV4cGVkaWVuY3ksIHdlIGRvbid0IHdhbnQgdG8gdGVz
dCBhdCB0aGlzIGZpbmUgZ3JhaW4gcmVzb2x1dGlvbgotICAgICAgICAvLyBmb3IgYWxsIHBvc3Np
YmxlIHNpemVzLiBIZW5jZSwgd2UgYWNjZWxlcmF0ZSB0aGUgcmF0ZSBvbmNlIHdlJ3JlCi0gICAg
ICAgIC8vIHBhc3MgdGhlIGludGVyZXN0aW5nIHNtYWxsIHNpemVzLgotICAgICAgICBpZiAoc2l6
ZSA8PSA1KQotICAgICAgICAgICAgc2l6ZSsrOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBz
aXplICs9IDQ7Ci0gICAgfQotI2VuZGlmCi19Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>250871</attachid>
            <date>2015-04-15 15:19:06 -0700</date>
            <delta_ts>2015-04-15 17:07:47 -0700</delta_ts>
            <desc>patch 3: removed an unneeded newline change.</desc>
            <filename>bug-143798.patch</filename>
            <type>text/plain</type>
            <size>70267</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTgyODYzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBA
CisyMDE1LTA0LTE1ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZW1vdmUgb2Jzb2xldGUgVk1JbnNwZWN0b3IgZGVidWdnaW5nIHRvb2wuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDM3OTgKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJIGFkZGVkIHRoZSBWTUluc3BlY3Rv
ciB0b29sIDMgeWVhcnMgYWdvIHRvIGFpZCBpbiBWTSBoYWNraW5nIHdvcmsuICBTb21lIG9mIGl0
CisgICAgICAgIGhhcyBiaXQgcm90dGVkLCBhbmQgbm93IHRoZSBWTSBhbHNvIGhhcyBiZXR0ZXIg
d2F5cyB0byBhY2hpZXZlIGl0cyBmdW5jdGlvbmFsaXR5LgorICAgICAgICBIZW5jZSB0aGlzIGNv
ZGUgaXMgbm93IG9ic29sZXRlIGFuZCBzaG91bGQgYmUgcmVtb3ZlZC4KKworICAgICAgICAqIENN
YWtlTGlzdHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlw
dENvcmUudmN4cHJvajoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2ouZmlsdGVyczoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGludGVycHJldGVyL0NhbGxGcmFtZS5oOgor
ICAgICAgICAqIGludGVycHJldGVyL1ZNSW5zcGVjdG9yLmNwcDogUmVtb3ZlZC4KKyAgICAgICAg
KiBpbnRlcnByZXRlci9WTUluc3BlY3Rvci5oOiBSZW1vdmVkLgorICAgICAgICAqIGxsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIuY3BwOgorCiAyMDE1LTA0LTE1ICBKb3JkYW4gSGFyYmFuZCAgPGxq
aGFyYkBnbWFpbC5jb20+CiAKICAgICAgICAgTnVtYmVyLnBhcnNlSW50IGluIG5pZ2h0bHkgcjE4
MjY3MyBoYXMgd3JvbmcgbGVuZ3RoCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VM
aXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMu
dHh0CShyZXZpc2lvbiAxODI4NjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTMyMiw3ICszMjIsNiBAQCBzZXQoSmF2YVNjcmlwdENv
cmVfU09VUkNFUwogICAgIGludGVycHJldGVyL0pTU3RhY2suY3BwCiAgICAgaW50ZXJwcmV0ZXIv
UHJvdG9DYWxsRnJhbWUuY3BwCiAgICAgaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcAotICAg
IGludGVycHJldGVyL1ZNSW5zcGVjdG9yLmNwcAogCiAgICAgaml0L0FjY2Vzc29yQ2FsbEpJVFN0
dWJSb3V0aW5lLmNwcAogICAgIGppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52
Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oJKHJldmlzaW9uIDE4Mjg2MSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZj
eHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTU5NSw3ICs1OTUsNiBAQAogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5caW50ZXJwcmV0ZXJcSlNTdGFjay5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxpbnRlcnByZXRlclxQcm90b0NhbGxGcmFtZS5jcHAiIC8+CiAgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxpbnRlcnByZXRlclxTdGFja1Zpc2l0b3IuY3BwIiAvPgotICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5caW50ZXJwcmV0ZXJcVk1JbnNwZWN0b3IuY3BwIiAvPgogICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caml0XEFjY2Vzc29yQ2FsbEpJVFN0dWJSb3V0aW5lLmNw
cCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGppdFxBcml0eUNoZWNrRmFpbFJldHVy
blRodW5rcy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxqaXRcQXNzZW1ibHlI
ZWxwZXJzLmNwcCIgLz4KQEAgLTEzNDksNyArMTM0OCw2IEBACiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxpbnRlcnByZXRlclxQcm90b0NhbGxGcmFtZS5oIiAvPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5caW50ZXJwcmV0ZXJcUmVnaXN0ZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXGludGVycHJldGVyXFN0YWNrVmlzaXRvci5oIiAvPgotICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5caW50ZXJwcmV0ZXJcVk1JbnNwZWN0b3IuaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXGppdFxBY2Nlc3NvckNhbGxKSVRTdHViUm91dGluZS5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5caml0XEFyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtzLmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxqaXRcQXNzZW1ibHlIZWxwZXJzLmgiIC8+Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJz
CShyZXZpc2lvbiAxODI4NjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMJKHdvcmtpbmcgY29weSkK
QEAgLTM2Myw5ICszNjMsNiBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW50ZXJwcmV0
ZXJcU3RhY2tWaXNpdG9yLmNwcCI+CiAgICAgICA8RmlsdGVyPmludGVycHJldGVyPC9GaWx0ZXI+
CiAgICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnRlcnByZXRl
clxWTUluc3BlY3Rvci5jcHAiPgotICAgICAgPEZpbHRlcj5pbnRlcnByZXRlcjwvRmlsdGVyPgot
ICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caml0XEV4ZWN1dGFi
bGVBbGxvY2F0b3IuY3BwIj4KICAgICAgIDxGaWx0ZXI+aml0PC9GaWx0ZXI+CiAgICAgPC9DbENv
bXBpbGU+CkBAIC0yMzE4LDkgKzIzMTUsNiBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
aW50ZXJwcmV0ZXJcU3RhY2tWaXNpdG9yLmgiPgogICAgICAgPEZpbHRlcj5pbnRlcnByZXRlcjwv
RmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW50
ZXJwcmV0ZXJcVk1JbnNwZWN0b3IuaCI+Ci0gICAgICA8RmlsdGVyPmludGVycHJldGVyPC9GaWx0
ZXI+Ci0gICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxqaXRcQ29t
cGFjdEpJVENvZGVNYXAuaCI+CiAgICAgICA8RmlsdGVyPmppdDwvRmlsdGVyPgogICAgIDwvQ2xJ
bmNsdWRlPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE4Mjg2
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNjQ2LDggKzE2NDYsNiBAQAogCQlGRTBE
NEEwOTFBQkEyNDM3MDAyRjU0QkYgLyogR2xvYmFsQ29udGV4dFdpdGhGaW5hbGl6ZXJUZXN0LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMEQ0QTA3
MUFCQTI0MzcwMDJGNTRCRiAvKiBHbG9iYWxDb250ZXh0V2l0aEZpbmFsaXplclRlc3QuY3BwICov
OyB9OwogCQlGRTIwQ0U5RDE1RjA0QTk1MDBERjM0MzAgLyogTExJbnRDTG9vcC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTIwQ0U5QjE1RjA0QTk1
MDBERjM0MzAgLyogTExJbnRDTG9vcC5jcHAgKi87IH07CiAJCUZFMjBDRTlFMTVGMDRBOTUwMERG
MzQzMCAvKiBMTEludENMb29wLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGRTIwQ0U5QzE1RjA0QTk1MDBERjM0MzAgLyogTExJbnRDTG9vcC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUZFNEEzMzFGMTVC
RDJFMDcwMDZGNTRGMyAvKiBWTUluc3BlY3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTRBMzMxRDE1QkQyRTA3MDA2RjU0RjMgLyogVk1JbnNw
ZWN0b3IuY3BwICovOyB9OwotCQlGRTRBMzMyMDE1QkQyRTA3MDA2RjU0RjMgLyogVk1JbnNwZWN0
b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFNEEz
MzFFMTVCRDJFMDcwMDZGNTRGMyAvKiBWTUluc3BlY3Rvci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFNTkzMkE3MTgzQzVBMjYwMEExRUNDQyAv
KiBWTUVudHJ5U2NvcGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRkU1OTMyQTUxODNDNUEyNjAwQTFFQ0NDIC8qIFZNRW50cnlTY29wZS5jcHAgKi87
IH07CiAJCUZFNTkzMkE4MTgzQzVBMjYwMEExRUNDQyAvKiBWTUVudHJ5U2NvcGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFNTkzMkE2MTgzQzVBMjYw
MEExRUNDQyAvKiBWTUVudHJ5U2NvcGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlGRTdCQTYwRjFBMUE3Q0VDMDBGMUY3QjQgLyogSGVhcFZlcmlm
aWVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZF
N0JBNjBEMUExQTdDRUMwMEYxRjdCNCAvKiBIZWFwVmVyaWZpZXIuY3BwICovOyB9OwpAQCAtMzQy
Niw4ICszNDI0LDYgQEAKIAkJRkUwRDRBMDgxQUJBMjQzNzAwMkY1NEJGIC8qIEdsb2JhbENvbnRl
eHRXaXRoRmluYWxpemVyVGVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBH
bG9iYWxDb250ZXh0V2l0aEZpbmFsaXplclRlc3QuaDsgcGF0aCA9IEFQSS90ZXN0cy9HbG9iYWxD
b250ZXh0V2l0aEZpbmFsaXplclRlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RkUyMENFOUIxNUYwNEE5NTAwREYzNDMwIC8qIExMSW50Q0xvb3AuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTExJbnRDTG9vcC5jcHA7IHBhdGggPSBsbGludC9MTElu
dENMb29wLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUyMENFOUMxNUYwNEE5
NTAwREYzNDMwIC8qIExMSW50Q0xvb3AuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gTExJbnRDTG9vcC5oOyBwYXRoID0gbGxpbnQvTExJbnRDTG9vcC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlGRTRBMzMxRDE1QkQyRTA3MDA2RjU0RjMgLyogVk1JbnNwZWN0b3Iu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVk1JbnNwZWN0b3IuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlGRTRBMzMxRTE1QkQyRTA3MDA2RjU0RjMg
LyogVk1JbnNwZWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVk1JbnNw
ZWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU1OTMyQTUxODNDNUEyNjAw
QTFFQ0NDIC8qIFZNRW50cnlTY29wZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBWTUVudHJ5U2NvcGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlG
RTU5MzJBNjE4M0M1QTI2MDBBMUVDQ0MgLyogVk1FbnRyeVNjb3BlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFZNRW50cnlTY29wZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlGRTdCQTYwRDFBMUE3Q0VDMDBGMUY3QjQgLyogSGVhcFZlcmlmaWVyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhlYXBWZXJpZmllci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zODUwLDggKzM4NDYsNiBAQAogCQkJCTE0OUIyNEZG
MEQ4QUY2RDEwMDlDQjhDNyAvKiBSZWdpc3Rlci5oICovLAogCQkJCUE3QzFFQUVDMTc5ODdBQjYw
MDI5OURCMiAvKiBTdGFja1Zpc2l0b3IuY3BwICovLAogCQkJCUE3QzFFQUVEMTc5ODdBQjYwMDI5
OURCMiAvKiBTdGFja1Zpc2l0b3IuaCAqLywKLQkJCQlGRTRBMzMxRDE1QkQyRTA3MDA2RjU0RjMg
LyogVk1JbnNwZWN0b3IuY3BwICovLAotCQkJCUZFNEEzMzFFMTVCRDJFMDcwMDZGNTRGMyAvKiBW
TUluc3BlY3Rvci5oICovLAogCQkJKTsKIAkJCXBhdGggPSBpbnRlcnByZXRlcjsKIAkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC02NDM2LDcgKzY0MzAsNiBAQAogCQkJCTBGNDI2QTQ5MTQ2
MENCQjcwMDEzMUY4RiAvKiBWaXJ0dWFsUmVnaXN0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
MThDNDIwMEUxNkY1Q0QwMEIzNDQ2MCAvKiBWTS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkU1OTMy
QTgxODNDNUEyNjAwQTFFQ0NDIC8qIFZNRW50cnlTY29wZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
RkU0QTMzMjAxNUJEMkUwNzAwNkY1NEYzIC8qIFZNSW5zcGVjdG9yLmggaW4gSGVhZGVycyAqLywK
IAkJCQlGRUQ5NEYyRjE3MUUzRTIzMDBCRTc3QTQgLyogV2F0Y2hkb2cuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGOTE5RDI2MTU4NTNDRTMwMDRBNEU3RCAvKiBXYXRjaHBvaW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxNDJFMzEzQzEzNEZGMEE2MDBBRkFEQjUgLyogV2Vhay5oIGluIEhlYWRlcnMg
Ki8sCkBAIC03NTE2LDcgKzc1MDksNiBAQAogCQkJCTBGMjRFNTU4MTdGNzRFREIwMEFCQjIxNyAv
KiBWYWx1ZVJlY292ZXJ5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxOEUzQTU5MERGOTI3OEMw
MEQ5MEIzNCAvKiBWTS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRTU5MzJBNzE4M0M1QTI2MDBB
MUVDQ0MgLyogVk1FbnRyeVNjb3BlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUZFNEEzMzFGMTVC
RDJFMDcwMDZGNTRGMyAvKiBWTUluc3BlY3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRUQ5
NEYyRTE3MUUzRTIzMDBCRTc3QTQgLyogV2F0Y2hkb2cuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
RkVEOTRGMzAxNzFFM0UyMzAwQkU3N0E0IC8qIFdhdGNoZG9nTWFjLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGOTE5RDI1MTU4NTNDRTAwMDRBNEU3RCAvKiBXYXRjaHBvaW50LmNwcCBpbiBTb3Vy
Y2VzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFt
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxs
RnJhbWUuaAkocmV2aXNpb24gMTgyODYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0NhbGxGcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMTAsNyArMzEwLDYgQEAgbmFt
ZXNwYWNlIEpTQyAgewogICAgICAgICBjb25zdCBDYWxsZXJGcmFtZUFuZFBDJiBjYWxsZXJGcmFt
ZUFuZFBDKCkgY29uc3QgeyByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgQ2FsbGVyRnJh
bWVBbmRQQyo+KHRoaXMpOyB9CiAKICAgICAgICAgZnJpZW5kIGNsYXNzIEpTU3RhY2s7Ci0gICAg
ICAgIGZyaWVuZCBjbGFzcyBWTUluc3BlY3RvcjsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBK
U0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9WTUluc3BlY3Rvci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1ZNSW5z
cGVjdG9yLmNwcAkocmV2aXNpb24gMTgyODYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL1ZNSW5zcGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ODggKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
LSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiVk1JbnNwZWN0b3IuaCIKLQotI2lmIEVOQUJMRShWTUlO
U1BFQ1RPUikKLQotI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKLSNpbmNsdWRlICJTdGFja1Zpc2l0
b3IuaCIKLSNpbmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgotCi1uYW1lc3BhY2UgSlNDIHsKLQotY29uc3QgY2hhciogVk1JbnNwZWN0b3I6
OmdldFR5cGVOYW1lKEpTVmFsdWUgdmFsdWUpCi17Ci0gICAgaWYgKHZhbHVlLmlzSW50MzIoKSkK
LSAgICAgICAgcmV0dXJuICI8SW50MzI+IjsKLSAgICBpZiAodmFsdWUuaXNCb29sZWFuKCkpCi0g
ICAgICAgIHJldHVybiAiPEJvb2xlYW4+IjsKLSAgICBpZiAodmFsdWUuaXNOdWxsKCkpCi0gICAg
ICAgIHJldHVybiAiPEVtcHR5PiI7Ci0gICAgaWYgKHZhbHVlLmlzVW5kZWZpbmVkKCkpCi0gICAg
ICAgIHJldHVybiAiPFVuZGVmaW5lZD4iOwotICAgIGlmICh2YWx1ZS5pc0NlbGwoKSkKLSAgICAg
ICAgcmV0dXJuICI8Q2VsbD4iOwotICAgIGlmICh2YWx1ZS5pc0VtcHR5KCkpCi0gICAgICAgIHJl
dHVybiAiPEVtcHR5PiI7Ci0gICAgcmV0dXJuICIiOwotfQotCi12b2lkIFZNSW5zcGVjdG9yOjpk
dW1wRnJhbWUwKENhbGxGcmFtZSogZnJhbWUpCi17Ci0gICAgZHVtcEZyYW1lKGZyYW1lLCAwLCAw
LCAwLCAwKTsKLX0KLQotdm9pZCBWTUluc3BlY3Rvcjo6ZHVtcEZyYW1lKENhbGxGcmFtZSogZnJh
bWUsIGNvbnN0IGNoYXIqIHByZWZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBjaGFyKiBmdW5jTmFtZSwgY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUpCi17Ci0gICAgaW50
IGZyYW1lQ291bnQgPSBWTUluc3BlY3Rvcjo6Y291bnRGcmFtZXMoZnJhbWUpOwotICAgIGlmIChm
cmFtZUNvdW50IDwgMCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgSW5zdHJ1Y3Rpb24qIHZQQyA9
IDA7Ci0gICAgaWYgKGZyYW1lLT5jb2RlQmxvY2soKSkKLSAgICAgICAgdlBDID0gZnJhbWUtPmN1
cnJlbnRWUEMoKTsKLQotICAgICNkZWZpbmUgQ0FTVCByZWludGVycHJldF9jYXN0Ci0KLSAgICBp
ZiAocHJlZml4KQotICAgICAgICBwcmludGYoIiVzICIsIHByZWZpeCk7Ci0KLSAgICBwcmludGYo
ImZyYW1lIFslZF0gJXAgeyBjYiAlcDolcywgcmV0UEMgJXA6JXMsIGNhbGxlZSAlcDolcywgY2Fs
bGVyRnJhbWUgJXA6JXMsIGFyZ2MgJWQsIHZQQyAlcCB9IiwKLSAgICAgICAgZnJhbWVDb3VudCwg
ZnJhbWUsCi0gICAgICAgIENBU1Q8dm9pZCo+KGZyYW1lW0pTU3RhY2s6OkNvZGVCbG9ja10ucGF5
bG9hZCgpKSwKLSAgICAgICAgZ2V0VHlwZU5hbWUoZnJhbWVbSlNTdGFjazo6Q29kZUJsb2NrXS5q
c1ZhbHVlKCkpLAotICAgICAgICBDQVNUPHZvaWQqPihmcmFtZVtKU1N0YWNrOjpSZXR1cm5QQ10u
cGF5bG9hZCgpKSwKLSAgICAgICAgZ2V0VHlwZU5hbWUoZnJhbWVbSlNTdGFjazo6UmV0dXJuUENd
LmpzVmFsdWUoKSksCi0gICAgICAgIENBU1Q8dm9pZCo+KGZyYW1lW0pTU3RhY2s6OkNhbGxlZV0u
cGF5bG9hZCgpKSwKLSAgICAgICAgZ2V0VHlwZU5hbWUoZnJhbWVbSlNTdGFjazo6Q2FsbGVlXS5q
c1ZhbHVlKCkpLAotICAgICAgICBDQVNUPHZvaWQqPihmcmFtZVtKU1N0YWNrOjpDYWxsZXJGcmFt
ZV0uY2FsbEZyYW1lKCkpLAotICAgICAgICBnZXRUeXBlTmFtZShmcmFtZVtKU1N0YWNrOjpDYWxs
ZXJGcmFtZV0uanNWYWx1ZSgpKSwKLSAgICAgICAgZnJhbWVbSlNTdGFjazo6QXJndW1lbnRDb3Vu
dF0ucGF5bG9hZCgpLAotICAgICAgICB2UEMpOwotCi0gICAgaWYgKGZ1bmNOYW1lIHx8IGZpbGUg
fHwgKGxpbmUgPj0gMCkpIHsKLSAgICAgICAgcHJpbnRmKCIgQCIpOwotICAgICAgICBpZiAoZnVu
Y05hbWUpCi0gICAgICAgICAgICBwcmludGYoIiAlcyIsIGZ1bmNOYW1lKTsKLSAgICAgICAgaWYg
KGZpbGUpCi0gICAgICAgICAgICBwcmludGYoIiAlcyIsIGZpbGUpOwotICAgICAgICBpZiAobGlu
ZSA+PSAwKQotICAgICAgICAgICAgcHJpbnRmKCI6JWQiLCBsaW5lKTsKLSAgICB9Ci0gICAgcHJp
bnRmKCJcbiIpOwotfQotCi1jbGFzcyBDb3VudEZyYW1lc0Z1bmN0b3IgewotcHVibGljOgotICAg
IENvdW50RnJhbWVzRnVuY3RvcigpCi0gICAgICAgIDogbV9jb3VudCgtMSkKLSAgICB7IH0KLQot
ICAgIFN0YWNrVmlzaXRvcjo6U3RhdHVzIG9wZXJhdG9yKCkoU3RhY2tWaXNpdG9yJiB2aXNpdG9y
KQotICAgIHsKLSAgICAgICAgbV9jb3VudCsrOwotICAgICAgICByZXR1cm4gU3RhY2tWaXNpdG9y
OjpDb250aW51ZTsKLSAgICB9Ci0KLSAgICBpbnQgY291bnQoKSBjb25zdCB7IHJldHVybiBtX2Nv
dW50OyB9Ci0KLXByaXZhdGU6Ci0gICAgdW5zaWduZWQgbV9jb3VudDsKLX07Ci0KLWludCBWTUlu
c3BlY3Rvcjo6Y291bnRGcmFtZXMoQ2FsbEZyYW1lKiBmcmFtZSkKLXsKLSAgICBDb3VudEZyYW1l
c0Z1bmN0b3IgZnVuY3RvcigpOwotICAgIFN0YWNrVmlzaXRvcjo6dmlzaXQoZnJhbWUsIGZ1bmN0
b3IpOwotCi0gICAgcmV0dXJuIGZ1bmN0b3IuY291bnQoKTsKLX0KLQotCi0vLz09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS8vICBjbGFzcyBGb3JtYXRQcmludGVyCi0vLyAgICAtIGltcGxlbWVudHMgZnVu
Y3Rpb25hbGl0eSB0byBzdXBwb3J0IGZwcmludGYuCi0vLwotLy8gICAgVGhlIEZvcm1hdFByaW50
ZXIgY2xhc3NlcyBkbyB0aGUgcmVhbCBmb3JtYXR0aW5nIGFuZCBwcmludGluZy4KLS8vICAgIEJ5
IGRlZmF1bHQsIHRoZSBzdXBlcmNsYXNzIEZvcm1hdFByaW50ZXIgd2lsbCBwcmludCB0byBzdGRv
dXQgKHByaW50ZikuCi0vLyAgICBFYWNoIG9mIHRoZSBzdWJjbGFzcyB3aWxsIGltcGxlbWVudCB0
aGUgb3RoZXIgLi4ucHJpbnRmKCkgb3B0aW9ucy4KLS8vICAgIFRoZSBzdWJjbGFzc2VzIGFyZToK
LS8vCi0vLyAgICAgICAgRmlsZUZvcm1hdFByaW50ZXIgICAgIC0gZnByaW50ZgotLy8gICAgICAg
IFN0cmluZ0Zvcm1hdFByaW50ZXIgICAtIHNwcmludGYKLS8vICAgICAgICBTdHJpbmdORm9ybWF0
UHJpbnRlciAgLSBzbnByaW50ZgotCi1jbGFzcyBGb3JtYXRQcmludGVyIHsKLXB1YmxpYzoKLSAg
ICB2aXJ0dWFsIH5Gb3JtYXRQcmludGVyKCkgeyB9Ci0KLSAgICB2b2lkIHByaW50KGNvbnN0IGNo
YXIqIGZvcm1hdCwgdmFfbGlzdCBhcmdzKTsKLQotcHJvdGVjdGVkOgotICAgIC8vIExvdyBsZXZl
bCBwcmludGVyczoKLSAgICBib29sIHByaW50QXJnKGNvbnN0IGNoYXIqIGZvcm1hdCwgLi4uKTsK
LSAgICB2aXJ0dWFsIGJvb2wgcHJpbnRBcmcoY29uc3QgY2hhciogZm9ybWF0LCB2YV9saXN0IGFy
Z3MpOwotCi0gICAgLy8gSlMgdHlwZSBzcGVjaWZpYyBwcmludGVyczoKLSAgICB2b2lkIHByaW50
V1RGU3RyaW5nKHZhX2xpc3QgYXJncywgYm9vbCB2ZXJib3NlKTsKLX07Ci0KLQotLy8gVGhlIHB1
YmxpYyBwcmludCgpIGZ1bmN0aW9uIGlzIHRoZSByZWFsIHdvcmtob3JzZSBiZWhpbmQgdGhlIHBy
aW50ZgotLy8gZmFtaWx5IG9mIGZ1bmN0aW9ucy4gcHJpbnQoKSBkZWNpcGhlcnMgdGhlICUgZm9y
bWF0dGluZywgdHJhbnNsYXRlIHRoZW0KLS8vIHRvIHByaW1pdGl2ZSBmb3JtYXRzLCBhbmQgZGlz
cGF0Y2hlcyB0byB1bmRlcmx5aW5nIHByaW50QXJnKCkgZnVuY3Rpb25zCi0vLyB0byBkbyB0aGUg
cHJpbnRpbmcuCi0vLyAKLS8vIFRoZSBub24tcHVibGljIGludGVybmFsIHByaW50QXJnKCkgZnVu
Y3Rpb24gaXMgdmlydHVhbCBhbmQgaXMgcmVzcG9uc2libGUKLS8vIGZvciBoYW5kbGluZyB0aGUg
dmFyaWF0aW9ucyBiZXR3ZWVuIHByaW50ZiwgZnByaW50Ziwgc3ByaW50ZiwgYW5kIHNucHJpbnRm
LgotCi12b2lkIEZvcm1hdFByaW50ZXI6OnByaW50KGNvbnN0IGNoYXIqIGZvcm1hdCwgdmFfbGlz
dCBhcmdzKQotewotICAgIGNvbnN0IGNoYXIqIHAgPSBmb3JtYXQ7Ci0gICAgY29uc3QgY2hhciog
ZXJyb3JTdHI7Ci0KLSAgICAvLyBidWZmZXIgaXMgb25seSB1c2VkIGZvciAyIHB1cnBvc2VzOgot
ICAgIC8vIDEuIFRvIHRlbXBvcmFyaWx5IGhvbGQgYSBjb3B5IG9mIG5vcm1hbCBjaGFycyAobm90
IG5lZWRpbmcgZm9ybWF0dGluZykKLSAgICAvLyAgICB0byBiZSBwYXNzZWQgdG8gcHJpbnRBcmco
KSBhbmQgcHJpbnRlZC4KLSAgICAvLwotICAgIC8vICAgIFRoZSBpbmNvbWluZyBmb3JtYXQgc3Ry
aW5nIG1heSBjb250YWluIGEgc3RyaW5nIG9mIG5vcm1hbCBjaGFycyBtdWNoCi0gICAgLy8gICAg
bG9uZ2VyIHRoYW4gMTI4LCBidXQgd2UgaGFuZGxlIHRoaXMgYnkgYnJlYWtpbmcgdGhlbSBvdXQg
dG8gMTI4IGNoYXJzCi0gICAgLy8gICAgZnJhZ21lbnRzIGFuZCBwcmludGluZyBlYWNoIGZyYWdt
ZW50IGJlZm9yZSByZS11c2luZyB0aGUgYnVmZmVyIHRvCi0gICAgLy8gICAgbG9hZCB1cCB0aGUg
bmV4dCBmcmFnbWVudC4KLSAgICAvLwotICAgIC8vIDIuIFRvIGhvbGQgYSBzaW5nbGUgIiUuLi4i
IGZvcm1hdCB0byBiZSBwYXNzZWQgdG8gcHJpbnRBcmcoKSB0byBwcm9jZXNzCi0gICAgLy8gICAg
YSBzaW5nbGUgdmFfYXJnLgotCi0gICAgY2hhciBidWZmZXJbMTI5XTsgLy8gMTI4IGNoYXJzICsg
bnVsbCB0ZXJtaW5hdG9yLgotICAgIGNoYXIqIGVuZCA9ICZidWZmZXJbc2l6ZW9mKGJ1ZmZlcikg
LSAxXTsKLSAgICBjb25zdCBjaGFyKiBzdGFydE9mRm9ybWF0U3BlY2lmaWVyID0gMDsKLQotICAg
IHdoaWxlICh0cnVlKSB7Ci0gICAgICAgIGNoYXIgYyA9ICpwKys7Ci0gICAgICAgIGNoYXIqIGN1
cnIgPSBidWZmZXI7Ci0KLSAgICAgICAgLy8gUHJpbnQgbGVhZGluZyBub3JtYWwgY2hhcnM6Ci0g
ICAgICAgIHdoaWxlIChjICE9ICdcMCcgJiYgYyAhPSAnJScpIHsKLSAgICAgICAgICAgICpjdXJy
KysgPSBjOwotICAgICAgICAgICAgaWYgKGN1cnIgPT0gZW5kKSB7Ci0gICAgICAgICAgICAgICAg
Ly8gT3V0IG9mIGJ1ZmZlciBzcGFjZS4gRmx1c2ggdGhlIGZyYWdtZW50LCBhbmQgc3RhcnQgb3Zl
ci4KLSAgICAgICAgICAgICAgICAqY3VyciA9ICdcMCc7Ci0gICAgICAgICAgICAgICAgYm9vbCBz
dWNjZXNzID0gcHJpbnRBcmcoIiVzIiwgYnVmZmVyKTsKLSAgICAgICAgICAgICAgICBpZiAoIXN1
Y2Nlc3MpIHsKLSAgICAgICAgICAgICAgICAgICAgZXJyb3JTdHIgPSBidWZmZXI7Ci0gICAgICAg
ICAgICAgICAgICAgIGdvdG8gaGFuZGxlRXJyb3I7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgIGN1cnIgPSBidWZmZXI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBjID0g
KnArKzsKLSAgICAgICAgfQotICAgICAgICAvLyBJZiB3ZSBoYXZlIHN0dWZmIGluIHRoZSBidWZm
ZXIsIGZsdXNoIHRoZSBmcmFnbWVudDoKLSAgICAgICAgaWYgKGN1cnIgIT0gYnVmZmVyKSB7Ci0g
ICAgICAgICAgICBBU1NFUlQoY3VyciA8IGVuZCArIDEpOwotICAgICAgICAgICAgKmN1cnIgPSAn
XDAnOwotICAgICAgICAgICAgYm9vbCBzdWNjZXNzID0gcHJpbnRBcmcoIiVzIiwgYnVmZmVyKTsK
LSAgICAgICAgICAgIGlmICghc3VjY2VzcykgewotICAgICAgICAgICAgICAgIGVycm9yU3RyID0g
YnVmZmVyOwotICAgICAgICAgICAgICAgIGdvdG8gaGFuZGxlRXJyb3I7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBFbmQgaWYgdGhlcmUgYXJlIG5vdCBtb3JlIGNoYXJz
IHRvIHByaW50OgotICAgICAgICBpZiAoYyA9PSAnXDAnKQotICAgICAgICAgICAgYnJlYWs7Ci0K
LSAgICAgICAgLy8gSWYgd2UgZ2V0IGhlcmUsIHdlJ3ZlIG11c3QgaGF2ZSBzZWVuIGEgJyUnOgot
ICAgICAgICBzdGFydE9mRm9ybWF0U3BlY2lmaWVyID0gcCAtIDE7Ci0gICAgICAgIEFTU0VSVCgq
c3RhcnRPZkZvcm1hdFNwZWNpZmllciA9PSAnJScpOwotICAgICAgICBjID0gKnArKzsKLQotICAg
ICAgICAvLyBDaGVjayBmb3IgIiUlIiBjYXNlOgotICAgICAgICBpZiAoYyA9PSAnJScpIHsKLSAg
ICAgICAgICAgIGJvb2wgc3VjY2VzcyA9IHByaW50QXJnKCIlYyIsICclJyk7Ci0gICAgICAgICAg
ICBpZiAoIXN1Y2Nlc3MpIHsKLSAgICAgICAgICAgICAgICBlcnJvclN0ciA9IHAgLSAyOwotICAg
ICAgICAgICAgICAgIGdvdG8gaGFuZGxlRXJyb3I7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIENoZWNrIGZvciBKUyAoJUo8eD4p
IGZvcm1hdHRpbmcgZXh0ZW5zaW9uczoKLSAgICAgICAgaWYgKGMgPT0gJ0onKSB7Ci0gICAgICAg
ICAgICBib29sIHZlcmJvc2UgPSBmYWxzZTsKLQotICAgICAgICAgICAgYyA9ICpwKys7Ci0gICAg
ICAgICAgICBpZiAoVU5MSUtFTFkoYyA9PSAnXDAnKSkgewotICAgICAgICAgICAgICAgIGVycm9y
U3RyID0gcCAtIDI7IC8vIFJld2luZCB0byAlIGluICIlSlwwIgotICAgICAgICAgICAgICAgIGdv
dG8gaGFuZGxlRXJyb3I7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChjID09ICcr
JykgewotICAgICAgICAgICAgICAgIHZlcmJvc2UgPSB0cnVlOwotICAgICAgICAgICAgICAgIGM9
ICpwKys7Ci0gICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKGMgPT0gJ1wwJykpIHsKLSAgICAg
ICAgICAgICAgICAgICAgZXJyb3JTdHIgPSBwIC0gMzsgLy8gUmV3aW5kIHRvICUgaW4gIiVKK1ww
IgotICAgICAgICAgICAgICAgICAgICBnb3RvIGhhbmRsZUVycm9yOwotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgc3dpdGNoIChjKSB7Ci0gICAgICAgICAg
ICAvLyAlSnMgLSBXVEY6OlN0cmluZyoKLSAgICAgICAgICAgIGNhc2UgJ3MnOiB7Ci0gICAgICAg
ICAgICAgICAgcHJpbnRXVEZTdHJpbmcoYXJncywgdmVyYm9zZSk7Ci0gICAgICAgICAgICAgICAg
Y29udGludWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IC8vIEVORCBzd2l0Y2guCi0K
LSAgICAgICAgLy8gQ2hlY2sgZm9yIG5vbi1KUyBleHRlbnNpb25zOgotICAgICAgICB9IGVsc2Ug
aWYgKGMgPT0gJ2InKSB7Ci0gICAgICAgICAgICBpbnQgdmFsdWUgPSB2YV9hcmcoYXJncywgaW50
KTsKLSAgICAgICAgICAgIHByaW50QXJnKCIlcyIsIHZhbHVlID8gIlRSVUUiIDogIkZBTFNFIik7
Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIElmIHdlIGRp
ZG4ndCBoYW5kbGUgdGhlIGZvcm1hdCBpbiBvbmUgb2YgdGhlIGFib3ZlIGNhc2VzLAotICAgICAg
ICAvLyByZXdpbmQgcCBhbmQgbGV0IHRoZSBzdGFuZGFyZCBmb3JtYXR0aW5nIGNoZWNrIGhhbmRs
ZSBpdAotICAgICAgICAvLyBpZiBwb3NzaWJsZToKLSAgICAgICAgcCA9IHN0YXJ0T2ZGb3JtYXRT
cGVjaWZpZXI7Ci0gICAgICAgIEFTU0VSVCgqcCA9PSAnJScpOwotCi0gICAgICAgIC8vIENoZWNr
IGZvciBzdGFuZGFyZCBmb3JtYXR0aW5nOgotICAgICAgICAvLyBBIGZvcm1hdCBzcGVjaWZpZXIg
YWx3YXlzIHN0YXJ0cyB3aXRoIGEgJSBhbmQgZW5kcyB3aXRoIHNvbWUKLSAgICAgICAgLy8gYWxw
aGFiZXQuIFdlJ2xsIGRvIHRoZSBzaW1wbGUgdGhpbmcgYW5kIHNjYW4gdW50aWwgdGhlIG5leHQK
LSAgICAgICAgLy8gYWxwaGFiZXQsIG9yIHRoZSBlbmQgb2Ygc3RyaW5nLgotCi0gICAgICAgIC8v
IEluIHRoZSBmb2xsb3dpbmcsIHdlJ3JlIGdvaW5nIHRvIHVzZSBidWZmZXIgYXMgc3RvcmFnZSBm
b3IgYSBjb3B5Ci0gICAgICAgIC8vIG9mIGEgc2luZ2xlIGZvcm1hdCBzcGVjaWZpZXIuIEhlbmNl
LCBjb25jZXB0dWFsbHksIHdlIGNhbiB0aGluayBvZgotICAgICAgICAvLyAnYnVmZmVyJyBhcyBz
eW5vbnltb3VzIHdpdGggJ2FyZ0Zvcm1hdCcgaGVyZToKLQotI2RlZmluZSBBQk9SVF9JRl9GT1JN
QVRfVE9PX0xPTkcoY3VycikgXAotICAgICAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAotICAgICAgICAgICAgaWYgKFVOTElLRUxZKGN1cnIgPj0gZW5kKSkgXAotICAgICAgICAg
ICAgICAgIGdvdG8gZm9ybWF0VG9vTG9uZzsgICAgXAotICAgICAgICB9IHdoaWxlIChmYWxzZSkK
LSAgICAgICAgCi0gICAgICAgIGN1cnIgPSBidWZmZXI7Ci0gICAgICAgICpjdXJyKysgPSAqcCsr
OyAvLyBPdXRwdXQgdGhlIGZpcnN0ICUgaW4gdGhlIGZvcm1hdCBzcGVjaWZpZXIuCi0gICAgICAg
IGMgPSAqcCsrOyAvLyBHcmFiIHRoZSBuZXh0IGNoYXIgaW4gdGhlIGZvcm1hdCBzcGVjaWZpZXIu
Ci0KLSAgICAgICAgLy8gQ2hlY2tzIGZvciBsZWFkaW5nIG1vZGlmaWVycyBlLmcuICIlLWQiOgot
ICAgICAgICAvLyAgICAgMCwgLSwgJyAnLCArLCAnXCcnCi0gICAgICAgIGlmIChjID09ICcwJyB8
fCBjID09ICctJyB8fCBjID09ICcgJyB8fCBjID09ICcrJyB8fCBjID09ICdcJycgfHwgYyA9PSAn
IycpIHsKLSAgICAgICAgICAgIEFCT1JUX0lGX0ZPUk1BVF9UT09fTE9ORyhjdXJyKTsKLSAgICAg
ICAgICAgICpjdXJyKysgPSBjOwotICAgICAgICAgICAgYyA9ICpwKys7Ci0gICAgICAgIH0KLQot
ICAgICAgICAvLyBDaGVja3MgZm9yIGRlY2ltYWwgZGlnaXQgZmllbGQgd2lkdGggbW9kaWZpZXJz
IGUuZy4gIiUyZiI6Ci0gICAgICAgIHdoaWxlIChjID49ICcwJyAmJiBjIDw9ICc5JykgewotICAg
ICAgICAgICAgQUJPUlRfSUZfRk9STUFUX1RPT19MT05HKGN1cnIpOwotICAgICAgICAgICAgKmN1
cnIrKyA9IGM7Ci0gICAgICAgICAgICBjID0gKnArKzsKLSAgICAgICAgfQotCi0gICAgICAgIC8v
IENoZWNrcyBmb3IgJy4nIGUuZy4gIiUyLmYiOgotICAgICAgICBpZiAoYyA9PSAnLicpIHsKLSAg
ICAgICAgICAgIEFCT1JUX0lGX0ZPUk1BVF9UT09fTE9ORyhjdXJyKTsKLSAgICAgICAgICAgICpj
dXJyKysgPSBjOwotICAgICAgICAgICAgYyA9ICpwKys7Ci0KLSAgICAgICAgICAgIC8vIENoZWNr
cyBmb3IgZGVjaW1hbCBkaWdpdCBwcmVjaXNpb24gbW9kaWZpZXJzICBlLmcuICIlLjJmIjoKLSAg
ICAgICAgICAgIHdoaWxlIChjID49ICcwJyAmJiBjIDw9ICc5JykgewotICAgICAgICAgICAgICAg
IEFCT1JUX0lGX0ZPUk1BVF9UT09fTE9ORyhjdXJyKTsKLSAgICAgICAgICAgICAgICAqY3Vycisr
ID0gYzsKLSAgICAgICAgICAgICAgICBjID0gKnArKzsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fQotCi0gICAgICAgIC8vIENoZWNrcyBmb3IgdGhlIG1vZGlmaWVyIDxtPiB3aGVyZSA8bT4gY2Fu
IGJlOgotICAgICAgICAvLyAgICAgbCwgaCwgaiwgdCwgegotICAgICAgICAvLyBlLmcuICIlbGQi
Ci0gICAgICAgIGlmIChjID09ICdsJyB8fCBjID09ICdoJyB8fCBjID09ICdqJyB8fCBjID09ICd0
JyB8fCBjID09ICd6JyB8fCBjID09ICdMJykgewotICAgICAgICAgICAgQUJPUlRfSUZfRk9STUFU
X1RPT19MT05HKGN1cnIpOwotICAgICAgICAgICAgKmN1cnIrKyA9IGM7Ci0gICAgICAgICAgICBj
aGFyIHByZXZDaGFyID0gYzsKLSAgICAgICAgICAgIGMgPSAqcCsrOwotCi0gICAgICAgICAgICAv
LyBDaGVja3MgZm9yIHRoZSBtb2RpZmllciBsbCBvciBoaCBpbiAlPHg+PG0+OgotICAgICAgICAg
ICAgaWYgKChwcmV2Q2hhciA9PSAnbCcgfHwgcHJldkNoYXIgPT0gJ2gnKSAmJiBjID09IHByZXZD
aGFyKSB7Ci0gICAgICAgICAgICAgICAgQUJPUlRfSUZfRk9STUFUX1RPT19MT05HKGN1cnIpOwot
ICAgICAgICAgICAgICAgICpjdXJyKysgPSBjOwotICAgICAgICAgICAgICAgIGMgPSAqcCsrOwot
ICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgLy8gQ2hlY2tzIGZvciAlPHg+IHdo
ZXJlIDx4PiBjYW4gYmU6Ci0gICAgICAgIC8vICAgICBkLCBpLCBuLCBvLCB1LCB4LCBYCi0gICAg
ICAgIC8vIEJ1dCBoZXksIHdlJ3JlIGp1c3QgZ29pbmcgdG8gZG8gdGhlIHNpbXBsZSB0aGluZyBh
bmQgYWxsb3cgYW55Ci0gICAgICAgIC8vIGFscGhhYmV0LiBUaGUgdXNlciBpcyBleHBlY3RlZCB0
byBwYXNzIGNvcnJlY3QgZm9ybWF0IHNwZWNpZmllcnMuCi0gICAgICAgIC8vIFdlIHdvbid0IGRv
IGFueSBmb3JtYXQgY2hlY2tpbmcgaGVyZS4gV2UnbGwganVzdCBwYXNzIGl0IG9uLCBhbmQgdGhl
Ci0gICAgICAgIC8vIHVuZGVybHlpbmcgLi4ucHJpbnRmKCkgaW1wbGVtZW50YXRpb24gbWF5IGRv
IHRoZSBuZWVkZWQgY2hlY2tpbmcKLSAgICAgICAgLy8gYXQgaXRzIGRpc2NyZXRpb24uCi0gICAg
ICAgIHdoaWxlIChjICE9ICdcMCcgJiYgIWlzQVNDSUlBbHBoYShjKSkgewotICAgICAgICAgICAg
QUJPUlRfSUZfRk9STUFUX1RPT19MT05HKGN1cnIpOwotICAgICAgICAgICAgKmN1cnIrKyA9IGM7
Ci0gICAgICAgICAgICBjID0gKnArKzsKLSAgICAgICAgfQotCi0gICAgICAgIEFCT1JUX0lGX0ZP
Uk1BVF9UT09fTE9ORyhjdXJyKTsKLSAgICAgICAgKmN1cnIrKyA9IGM7Ci0gICAgICAgIGlmIChj
ID09ICdcMCcpIHsKLSAgICAgICAgICAgIC8vIFVoIG9oLiBCYWQgZm9ybWF0LiBXZSBzaG91bGQg
aGF2ZSBnb3R0ZW4gYW4gYWxwaGFiZXQgaW5zdGVhZC4KLSAgICAgICAgICAgIC8vIFByaW50IHRo
ZSBzdXBwb3NlZCBmb3JtYXQgYXMgYSBzdHJpbmcgaW5zdGVhZDoKLSAgICAgICAgICAgIGVycm9y
U3RyID0gYnVmZmVyOwotICAgICAgICAgICAgZ290byBoYW5kbGVFcnJvcjsKLSAgICAgICAgfQot
Ci0gICAgICAgIC8vIE90aGVyd2lzZSwgd2UgaGF2ZSB0aGUgYWxwaGEgdGhhdCB0ZXJtaW5hdGVz
IHRoZSBmb3JtYXQuCi0gICAgICAgIC8vIFRlcm1pbmF0ZSB0aGUgYnVmZmVyIChpLmUuIGFyZ0Zv
cm1hdCkgc3RyaW5nOgotICAgICAgICBBU1NFUlQoaXNBU0NJSUFscGhhKGMpKTsKLSAgICAgICAg
QUJPUlRfSUZfRk9STUFUX1RPT19MT05HKGN1cnIpOwotICAgICAgICAqY3VyciA9ICdcMCc7Ci0K
LSAgICAgICAgYm9vbCBzdWNjZXNzID0gcHJpbnRBcmcoYnVmZmVyLCBhcmdzKTsKLSAgICAgICAg
aWYgKCFzdWNjZXNzKSB7Ci0gICAgICAgICAgICBlcnJvclN0ciA9IGJ1ZmZlcjsKLSAgICAgICAg
ICAgIGdvdG8gaGFuZGxlRXJyb3I7Ci0gICAgICAgIH0KLSAgICB9Ci0jdW5kZWYgQUJPUlRfSUZf
Rk9STUFUX1RPT19MT05HCi0KLSAgICByZXR1cm47Ci0KLWZvcm1hdFRvb0xvbmc6Ci0gICAgLy8g
UHJpbnQgdGhlIGVycm9yIHN0cmluZzoKLSAgICBBU1NFUlQoISFzdGFydE9mRm9ybWF0U3BlY2lm
aWVyKTsKLSAgICBwID0gc3RhcnRPZkZvcm1hdFNwZWNpZmllcjsKLSAgICBBU1NFUlQocCA+PSBm
b3JtYXQpOwotICAgIHByaW50QXJnKCJFUlJPUiBAIEZvcm1hdCB0b28gbG9uZyBhdCBcIiVzXCJc
biIsIHApOwotICAgIHJldHVybjsKLQotaGFuZGxlRXJyb3I6Ci0gICAgLy8gV2UndmUgZ290IGFu
IGVycm9yLiBDYW4ndCBkbyBhbnkgbW9yZSB3b3JrLiBQcmludCBhbiBlcnJvciBtZXNzYWdlIGlm
Ci0gICAgLy8gcG9zc2libGUgYW5kIHRoZW4ganVzdCByZXR1cm4uCi0KLSAgICAvLyBUaGUgZXJy
b3JTdHIgbWF5IGJlIHBvaW50aW5nIGludG8gdGhlIG1pZGRsZSBvZiBidWZmZXIsIG9yIHRoZSBv
cmlnaW5hbAotICAgIC8vIGZvcm1hdCBzdHJpbmcuIE1vdmUgdGhlIHN0cmluZyB0byBidWZmZXIg
Zm9yIGNvbnNpc3RlbmN5LCBhbmQgYWxzbyBzbwotICAgIC8vIHRoYXQgd2UgY2FuIHN0cmlwIGl0
IG9mIG5ld2xpbmVzIGJlbG93LgotICAgIGlmIChlcnJvclN0ciAhPSBidWZmZXIpIHsKLSAgICAg
ICAgc2l6ZV90IGxlbmd0aCA9IHN0cmxlbihlcnJvclN0cik7Ci0gICAgICAgIGlmIChsZW5ndGgg
PiBzaXplb2YoYnVmZmVyKSAtIDEpCi0gICAgICAgICAgICBsZW5ndGggPSBzaXplb2YoYnVmZmVy
KSAtIDE7Ci0gICAgICAgIG1lbW1vdmUoYnVmZmVyLCBlcnJvclN0ciwgbGVuZ3RoKTsKLSAgICAg
ICAgYnVmZmVyW2xlbmd0aF0gPSAnXDAnOyAvLyBUZXJtaW5hdGUgdGhlIG1vdmVkIGVycm9yIHN0
cmluZy4KLSAgICB9Ci0gICAgLy8gU3RyaXAgdGhlIG5ld2xpbmVzOgotICAgIGNoYXIqIGNwID0g
YnVmZmVyOwotICAgIHdoaWxlICgqY3ApIHsKLSAgICAgICAgaWYgKCpjcCA9PSAnXG4nIHx8ICpj
cCA9PSAnXHInKQotICAgICAgICAgICAgKmNwID0gJyAnOwotICAgICAgICBjcCsrOwotICAgIH0K
LSAgICAvLyBQcmludCB0aGUgZXJyb3Igc3RyaW5nOgotICAgIHByaW50QXJnKCJFUlJPUiBAIFwi
JXNcIlxuIiwgYnVmZmVyKTsKLX0KLQotCi1ib29sIEZvcm1hdFByaW50ZXI6OnByaW50QXJnKGNv
bnN0IGNoYXIqIGZvcm1hdCwgLi4uKQotewotICAgIHZhX2xpc3QgYXJnczsKLSAgICB2YV9zdGFy
dChhcmdzLCBmb3JtYXQpOwotICAgIGJvb2wgc3VjY2VzcyA9IHByaW50QXJnKGZvcm1hdCwgYXJn
cyk7Ci0gICAgdmFfZW5kKGFyZ3MpOwotICAgIHJldHVybiBzdWNjZXNzOwotfQotCi1ib29sIEZv
cm1hdFByaW50ZXI6OnByaW50QXJnKGNvbnN0IGNoYXIqIGZvcm1hdCwgdmFfbGlzdCBhcmdzKQot
ewotICAgIGludCBjb3VudCA9IDo6dnByaW50Zihmb3JtYXQsIGFyZ3MpOwotICAgIHJldHVybiAo
Y291bnQgPj0gMCk7IC8vIEZhaWwgaWYgbGVzcyB0aGFuIDAgY2hhcnMgcHJpbnRlZC4KLX0KLQot
Ci0vLyAlSnMgLSBXVEY6OlN0cmluZyoKLS8vIHZlcmJvc2UgbW9kZSBwcmludHM6IFdURjo6U3Ry
aW5nICI8eW91ciBzdHJpbmc+Igotdm9pZCBGb3JtYXRQcmludGVyOjpwcmludFdURlN0cmluZyh2
YV9saXN0IGFyZ3MsIGJvb2wgdmVyYm9zZSkKLXsKLSAgICBjb25zdCBTdHJpbmcqIHN0ciA9IHZh
X2FyZyhhcmdzLCBjb25zdCBTdHJpbmcqKTsKLQotICAgIC8vIFByaW50IHZlcmJvc2UgaGVhZGVy
IGlmIGFwcHJvcHJpYXRlOgotICAgIGlmICh2ZXJib3NlKQotICAgICAgICBwcmludEFyZygiV1RG
OjpTdHJpbmcgXCIiKTsKLQotICAgIC8vIFByaW50IHRoZSBzdHJpbmcgaXRzZWxmOgotICAgIGlm
ICghc3RyLT5pc0VtcHR5KCkpIHsKLSAgICAgICAgaWYgKHN0ci0+aXM4Qml0KCkpIHsKLSAgICAg
ICAgICAgIGNvbnN0IExDaGFyKiBjaGFycyA9IHN0ci0+Y2hhcmFjdGVyczgoKTsKLSAgICAgICAg
ICAgIHByaW50QXJnKCIlcyIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGNoYXJzKSk7
Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBjb25zdCBVQ2hhciogY2hhcnMgPSBzdHIt
PmNoYXJhY3RlcnMxNigpOwotICAgICAgICAgICAgcHJpbnRBcmcoIiVTIiwgcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB3Y2hhcl90Kj4oY2hhcnMpKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8v
IFByaW50IHZlcmJvc2UgZm9vdGVyIGlmIGFwcHJvcHJpYXRlOgotICAgIGlmICh2ZXJib3NlKQot
ICAgICAgICBwcmludEFyZygiXCIiKTsKLX0KLQotCi0vLz09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS8v
ICBjbGFzcyBGaWxlRm9ybWF0UHJpbnRlcgotLy8gICAgLSBpbXBsZW1lbnRzIGZ1bmN0aW9uYWxp
dHkgdG8gc3VwcG9ydCBmcHJpbnRmLgotCi1jbGFzcyBGaWxlRm9ybWF0UHJpbnRlcjogcHVibGlj
IEZvcm1hdFByaW50ZXIgewotcHVibGljOgotICAgIEZpbGVGb3JtYXRQcmludGVyKEZJTEUqKTsK
LXByaXZhdGU6Ci0gICAgdmlydHVhbCBib29sIHByaW50QXJnKGNvbnN0IGNoYXIqIGZvcm1hdCwg
dmFfbGlzdCBhcmdzKTsKLQotICAgIEZJTEUqIG1fZmlsZTsKLX07Ci0KLUZpbGVGb3JtYXRQcmlu
dGVyOjpGaWxlRm9ybWF0UHJpbnRlcihGSUxFKiBmaWxlKQotICAgIDogbV9maWxlKGZpbGUpCi17
IAotfQotCi1ib29sIEZpbGVGb3JtYXRQcmludGVyOjpwcmludEFyZyhjb25zdCBjaGFyKiBmb3Jt
YXQsIHZhX2xpc3QgYXJncykKLXsKLSAgICBpbnQgY291bnQgPSA6OnZmcHJpbnRmKG1fZmlsZSwg
Zm9ybWF0LCBhcmdzKTsKLSAgICByZXR1cm4gKGNvdW50ID49IDApOyAvLyBGYWlsIGlmIGxlc3Mg
dGhhbiAwIGNoYXJzIHByaW50ZWQuCi19Ci0KLQotLy89PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0vLyAg
Y2xhc3MgU3RyaW5nRm9ybWF0UHJpbnRlcgotLy8gICAgLSBpbXBsZW1lbnRzIGZ1bmN0aW9uYWxp
dHkgdG8gc3VwcG9ydCBzcHJpbnRmLgotCi1jbGFzcyBTdHJpbmdGb3JtYXRQcmludGVyOiBwdWJs
aWMgRm9ybWF0UHJpbnRlciB7Ci1wdWJsaWM6Ci0gICAgU3RyaW5nRm9ybWF0UHJpbnRlcihjaGFy
KiBidWZmZXIpOwotcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGJvb2wgcHJpbnRBcmcoY29uc3QgY2hh
ciogZm9ybWF0LCB2YV9saXN0IGFyZ3MpOwotCi0gICAgY2hhciogbV9idWZmZXI7Ci19OwotCi1T
dHJpbmdGb3JtYXRQcmludGVyOjpTdHJpbmdGb3JtYXRQcmludGVyKGNoYXIqIGJ1ZmZlcikKLSAg
ICA6IG1fYnVmZmVyKGJ1ZmZlcikKLXsgCi19Ci0KLWJvb2wgU3RyaW5nRm9ybWF0UHJpbnRlcjo6
cHJpbnRBcmcoY29uc3QgY2hhciogZm9ybWF0LCB2YV9saXN0IGFyZ3MpCi17Ci0gICAgaW50IGNv
dW50ID0gOjp2c3ByaW50ZihtX2J1ZmZlciwgZm9ybWF0LCBhcmdzKTsKLSAgICBtX2J1ZmZlciAr
PSBjb3VudDsKLSAgICByZXR1cm4gKGNvdW50ID49IDApOyAvLyBGYWlsIGlmIGxlc3MgdGhhbiAw
IGNoYXJzIHByaW50ZWQuCi19Ci0KLQotLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0vLyAgY2xhc3Mg
U3RyaW5nTkZvcm1hdFByaW50ZXIKLS8vICAgIC0gaW1wbGVtZW50cyBmdW5jdGlvbmFsaXR5IHRv
IHN1cHBvcnQgc25wcmludGYuCi0KLWNsYXNzIFN0cmluZ05Gb3JtYXRQcmludGVyOiBwdWJsaWMg
Rm9ybWF0UHJpbnRlciB7Ci1wdWJsaWM6Ci0gICAgU3RyaW5nTkZvcm1hdFByaW50ZXIoY2hhciog
YnVmZmVyLCBzaXplX3QpOwotcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGJvb2wgcHJpbnRBcmcoY29u
c3QgY2hhciogZm9ybWF0LCB2YV9saXN0IGFyZ3MpOwotCi0gICAgY2hhciogbV9idWZmZXI7Ci0g
ICAgc2l6ZV90IG1fc2l6ZTsKLX07Ci0KLQotU3RyaW5nTkZvcm1hdFByaW50ZXI6OlN0cmluZ05G
b3JtYXRQcmludGVyKGNoYXIqIGJ1ZmZlciwgc2l6ZV90IHNpemUpCi0gICAgOiBtX2J1ZmZlcihi
dWZmZXIpCi0gICAgLCBtX3NpemUoc2l6ZSkKLXsKLX0KLQotYm9vbCBTdHJpbmdORm9ybWF0UHJp
bnRlcjo6cHJpbnRBcmcoY29uc3QgY2hhciogZm9ybWF0LCB2YV9saXN0IGFyZ3MpCi17Ci0gICAg
aWYgKG1fc2l6ZSA+IDApIHsKLSAgICAgICAgaW50IGNvdW50ID0gOjp2c25wcmludGYobV9idWZm
ZXIsIG1fc2l6ZSwgZm9ybWF0LCBhcmdzKTsKLQotICAgICAgICAvLyBBY2NvcmRpbmcgdG8gdnNu
cHJpbnRmIHNwZWNzLCAuLi4KLSAgICAgICAgYm9vbCBzdWNjZXNzID0gKGNvdW50ID49IDApOwot
ICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8c2l6ZV90Pihjb3VudCkgPj0gbV9zaXplKSB7Ci0gICAg
ICAgICAgICAvLyBJZiBjb3VudCA+IHNpemUsIHRoZW4gd2UgZGlkbid0IGhhdmUgZW5vdWdoIGJ1
ZmZlciBzcGFjZS4KLSAgICAgICAgICAgIGNvdW50ID0gbV9zaXplOwotICAgICAgICB9Ci0KLSAg
ICAgICAgLy8gQWRqdXN0IHRoZSBidWZmZXIgdG8gd2hhdCdzIGxlZnQgaWYgYXBwcm9wcmlhdGU6
Ci0gICAgICAgIGlmIChzdWNjZXNzKSB7Ci0gICAgICAgICAgICBtX2J1ZmZlciArPSBjb3VudDsK
LSAgICAgICAgICAgIG1fc2l6ZSAtPSBjb3VudDsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4g
c3VjY2VzczsKLSAgICB9Ci0gICAgLy8gTm8gbW9yZSByb29tIHRvIHByaW50LiBEZWNsYXJlIGl0
IGEgZmFpbDoKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLQotLy89PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0vLyAgVk1JbnNwZWN0b3IgcHJpbnRmIGZhbWlseSBvZiBtZXRob2RzOgotCi12b2lkIFZNSW5z
cGVjdG9yOjpmcHJpbnRmKEZJTEUqIGZpbGUsIGNvbnN0IGNoYXIqIGZvcm1hdCwgLi4uKQotewot
ICAgIHZhX2xpc3QgYXJnczsKLSAgICB2YV9zdGFydChhcmdzLCBmb3JtYXQpOwotICAgIEZpbGVG
b3JtYXRQcmludGVyKGZpbGUpLnByaW50KGZvcm1hdCwgYXJncyk7Ci0gICAgdmFfZW5kKGFyZ3Mp
OwotfQotCi12b2lkIFZNSW5zcGVjdG9yOjpwcmludGYoY29uc3QgY2hhciogZm9ybWF0LCAuLi4p
Ci17Ci0gICAgdmFfbGlzdCBhcmdzOwotICAgIHZhX3N0YXJ0KGFyZ3MsIGZvcm1hdCk7Ci0gICAg
Rm9ybWF0UHJpbnRlcigpLnByaW50KGZvcm1hdCwgYXJncyk7Ci0gICAgdmFfZW5kKGFyZ3MpOwot
fQotCi12b2lkIFZNSW5zcGVjdG9yOjpzcHJpbnRmKGNoYXIqIGJ1ZmZlciwgY29uc3QgY2hhciog
Zm9ybWF0LCAuLi4pCi17Ci0gICAgdmFfbGlzdCBhcmdzOwotICAgIHZhX3N0YXJ0KGFyZ3MsIGZv
cm1hdCk7Ci0gICAgU3RyaW5nRm9ybWF0UHJpbnRlcihidWZmZXIpLnByaW50KGZvcm1hdCwgYXJn
cyk7Ci0gICAgdmFfZW5kKGFyZ3MpOwotfQotCi12b2lkIFZNSW5zcGVjdG9yOjpzbnByaW50Zihj
aGFyKiBidWZmZXIsIHNpemVfdCBzaXplLCBjb25zdCBjaGFyKiBmb3JtYXQsIC4uLikKLXsKLSAg
ICB2YV9saXN0IGFyZ3M7Ci0gICAgdmFfc3RhcnQoYXJncywgZm9ybWF0KTsKLSAgICBTdHJpbmdO
Rm9ybWF0UHJpbnRlcihidWZmZXIsIHNpemUpLnByaW50KGZvcm1hdCwgYXJncyk7Ci0gICAgdmFf
ZW5kKGFyZ3MpOwotfQotCi19IC8vIG5hbWVzcGFjZSBKU0MKLQotI2VuZGlmIC8vIEVOQUJMRShW
TUlOU1BFQ1RPUikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9WTUlu
c3BlY3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9WTUluc3BlY3Rvci5oCShyZXZpc2lvbiAxODI4NjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvVk1JbnNwZWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMSw4OSArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0g
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpZm5k
ZWYgVk1JbnNwZWN0b3JfaAotI2RlZmluZSBWTUluc3BlY3Rvcl9oCi0KLSNkZWZpbmUgRU5BQkxF
X1ZNSU5TUEVDVE9SIDAKLQotI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgotI2luY2x1ZGUgIkpTQ0pT
VmFsdWUuaCIKLSNpbmNsdWRlIDxzdGRhcmcuaD4KLSNpbmNsdWRlIDxzdGRpby5oPgotI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgSlNDIHsKLQotI2lmIEVOQUJM
RShWTUlOU1BFQ1RPUikKLQotY2xhc3MgVk1JbnNwZWN0b3IgewotcHVibGljOiAgICAKLSAgICBz
dGF0aWMgSlNfRVhQT1JUX1BSSVZBVEUgY29uc3QgY2hhciogZ2V0VHlwZU5hbWUoSlNWYWx1ZSk7
Ci0gICAgc3RhdGljIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZHVtcEZyYW1lMChDYWxsRnJhbWUq
KTsKLSAgICBzdGF0aWMgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBkdW1wRnJhbWUoQ2FsbEZyYW1l
KiwgY29uc3QgY2hhciogcHJlZml4ID0gMCwgY29uc3QgY2hhciogZnVuY05hbWUgPSAwLCBjb25z
dCBjaGFyKiBmaWxlID0gMCwgaW50IGxpbmUgPSAtMSk7Ci0gICAgc3RhdGljIEpTX0VYUE9SVF9Q
UklWQVRFIGludCBjb3VudEZyYW1lcyhDYWxsRnJhbWUqKTsKLQotICAgIC8vIFNwZWNpYWwgZmFt
aWx5IG9mIC4uLnByaW50ZigpIGZ1bmN0aW9ucyB0aGF0IHN1cHBvcnQsIGluIGFkZGl0aW9uIHRv
IHRoZQotICAgIC8vIHN0YW5kYXJkICUgZm9ybWF0cyAoZS5nLiAlZCwgJXMsIGV0YyksIHRoZSBm
b2xsb3dpbmcgZXh0cmEgSlNDIGZvcm1hdHRpbmcKLSAgICAvLyBvcHRpb25zLCAlSjx4Piwgd2hl
cmUgPHg+IGNvbnNpc3RzIG9mOgotICAgIC8vCi0gICAgLy8gICArICAgIC0gdmVyYm9zZSBtb2Rl
IG1vZGlmaWVyLgotICAgIC8vICAgICAgICAgIFVzZWQgaW4gY29tYmluYXRpb24gd2l0aCBvdGhl
ciBvcHRpb25zLiBNdXN0IGNvbWUgYWZ0ZXIgdGhlICVKLgotICAgIC8vICAgcyAgICAtIFdURjo6
U3RyaW5nKgotICAgIC8vCi0gICAgLy8gRXhhbXBsZXMgb2YgdXNhZ2U6Ci0gICAgLy8KLSAgICAv
LyAgICBXVEY6OlN0cmluZyBzdHIoIk15IFdURiBTdHJpbmciKTsKLSAgICAvLwotICAgIC8vICAg
IC8vIFByaW50aW5nIHRoZSBzdHJpbmcuIFdpbGwgcHJpbnQ6Ci0gICAgLy8gICAgLy8gVGhlIHd0
ZiBzdHJpbmcgc2F5czogIk15IFdURiBTdHJpbmciIGFuZCBpcyBOT1QgRU1QVFkuCi0gICAgLy8K
LSAgICAvLyAgICBWTUluc3BlY3Rvcjo6cHJpbnRmKCJUaGUgd3RmIHN0cmluZyBzYXlzOiBcIiVK
c1wiIGFuZCBpcyAlc1xuIiwKLSAgICAvLyAgICAgICAgJnN0ciwgc3RyLmlzRW1wdHkoKT8iRU1Q
VFkiOiJOT1QgRU1QVFkiKTsKLSAgICAvLwotICAgIC8vICAgIC8vIFByaW50aW5nIHRoZSBzdHJp
bmcgd2l0aCB2ZXJib3NlIG1vZGUuIFdpbGwgcHJpbnQ6Ci0gICAgLy8gICAgLy8gPFdURjo6U3Ry
aW5nICJNeSBXVEYgU3RyaW5nIj4KLSAgICAvLwotICAgIC8vICAgIFZNSW5zcGVjdG9yOjpwcmlu
dGYoIjwlSitzPlxuIiwgJnN0cik7Ci0gICAgLy8KLSAgICAvLyBBbHNvIGFkZGVkIHNvbWUgY29u
dmVuaWVuY2Ugbm9uLUpTIGZvcm1hdHM6Ci0gICAgLy8KLSAgICAvLyAgICViICAgIC0gYm9vbGVh
biAodmFfYXJncyB3aWxsIGxvb2sgZm9yIGFuIGludCkuCi0gICAgLy8gICAgICAgICAgIFByaW50
cyBUUlVFIGlmIG5vbi16ZXJvLCBlbHNlIHByaW50cyBGQUxTRS4KLSAgICAvLwotICAgIC8vIENh
dXRpb246IHRoZSB1c2VyIGlzIGV4cGVjdGVkIHRvIHBhc3MgdGhlIGNvcnJlY3RseSBtYXRjaGVk
IGFyZ3VtZW50cwotICAgIC8vIHRvIHBhaXIgd2l0aCB0aGUgY29ycmVzcG9uZGluZyAlIGZvbWF0
dGluZy4KLQotICAgIHN0YXRpYyBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGZwcmludGYoRklMRSos
IGNvbnN0IGNoYXIqIGZvcm1hdCwgLi4uKTsKLSAgICBzdGF0aWMgSlNfRVhQT1JUX1BSSVZBVEUg
dm9pZCBwcmludGYoY29uc3QgY2hhciogZm9ybWF0LCAuLi4pOwotICAgIHN0YXRpYyBKU19FWFBP
UlRfUFJJVkFURSB2b2lkIHNwcmludGYoY2hhciosIGNvbnN0IGNoYXIqIGZvcm1hdCwgLi4uKTsK
LSAgICBzdGF0aWMgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzbnByaW50ZihjaGFyKiwgc2l6ZV90
LCBjb25zdCBjaGFyKiBmb3JtYXQsIC4uLik7Ci19OwotCi0jZW5kaWYgLy8gRU5BQkxFKFZNSU5T
UEVDVE9SKQotCi19IC8vIG5hbWVzcGFjZSBKU0MKLQotI2VuZGlmIC8vIFZNSW5zcGVjdG9yLmgK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlci5jcHAJKHJldmlzaW9uIDE4Mjg2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQs
NiBAQAogI2luY2x1ZGUgIkxMSW50Q0xvb3AuaCIKICNpbmNsdWRlICJMTEludFNsb3dQYXRocy5o
IgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKLSNpbmNsdWRlICJWTUluc3BlY3Rvci5oIgogI2lu
Y2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KIApJ
bmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTgyODYzKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTUtMDQtMTUgIE1hcmsgTGFt
ICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBvYnNvbGV0ZSBWTUluc3Bl
Y3RvciBkZWJ1Z2dpbmcgdG9vbC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE0Mzc5OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBuZWVkZWQuICBKdXN0IHJlbW92aW5nIG9ic29sZXRl
IGNvZGUuCisKKyAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy9pbnRlcnByZXRlci9WTUluc3Bl
Y3Rvci5oOiBSZW1vdmVkLgorCiAyMDE1LTA0LTEzICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBw
bGUuY29tPgogCiAgICAgICAgIFtGdWxsc2NyZWVuXSBDaHJvbWVDbGllbnQ6OmV4aXRWaWRlb0Z1
bGxzY3JlZW4oKSBzaG91bGQgdGFrZSBhIHBvaW50ZXIgdG8gYSBIVE1MVmlkZW9FbGVtZW50LgpJ
bmRleDogU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvaW50ZXJwcmV0ZXIvVk1JbnNw
ZWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9p
bnRlcnByZXRlci9WTUluc3BlY3Rvci5oCShyZXZpc2lvbiAxODI4NjEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9Gb3J3YXJkaW5nSGVhZGVycy9pbnRlcnByZXRlci9WTUluc3BlY3Rvci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDI5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
LSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCi0gKi8KLQotI2lmbmRlZiBXZWJDb3JlX0ZXRF9WTUluc3BlY3Rvcl9oCi0jZGVmaW5l
IFdlYkNvcmVfRldEX1ZNSW5zcGVjdG9yX2gKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9WTUlu
c3BlY3Rvci5oPgotI2VuZGlmCkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxODI4NjMpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxNS0wNC0xNSAgTWFyayBMYW0gIDxtYXJr
LmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIG9ic29sZXRlIFZNSW5zcGVjdG9yIGRl
YnVnZ2luZyB0b29sLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTQzNzk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdFdlYktpdEFQSS52Y3hwcm9qL1Rlc3RXZWJLaXRBUEkudmN4cHJvajoKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkudmN4cHJvai9UZXN0V2ViS2l0QVBJLnZj
eHByb2ouZmlsdGVyczoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL0ph
dmFTY3JpcHRDb3JlL1ZNSW5zcGVjdG9yLmNwcDogUmVtb3ZlZC4KKwogMjAxNS0wNC0xNSAgSmVy
IE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIGdhcmRl
bmluZzsgTWFrZSB0aGUgcHJldmlvdXMgY29tbWl0IGFwcGx5IG9ubHkgX3Bvc3RfIFlvc2VtaXRl
LgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxODI4NjEpCisr
KyBUb29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0x
NjksNyArMTY5LDYgQEAgc2V0X3Rlc3RzX3Byb3BlcnRpZXMoVGVzdFdURiBQUk9QRVJUSUVTIAog
YWRkX2V4ZWN1dGFibGUoVGVzdEphdmFTY3JpcHRDb3JlCiAgICAgJHt0ZXN0X21haW5fU09VUkNF
U30KICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0c0NvbnRyb2xsZXIuY3BwCi0gICAgJHtU
RVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvSmF2YVNjcmlwdENvcmUvVk1JbnNwZWN0b3IuY3BwCiAp
CiAKIHRhcmdldF9saW5rX2xpYnJhcmllcyhUZXN0SmF2YVNjcmlwdENvcmUgJHtUZXN0SmF2YVNj
cmlwdENvcmVfTElCUkFSSUVTfSkKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktp
dEFQSS52Y3hwcm9qL1Rlc3RXZWJLaXRBUEkudmN4cHJvago9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkudmN4cHJvai9UZXN0V2ViS2l0QVBJLnZjeHByb2oJ
KHJldmlzaW9uIDE4Mjg2MSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS52
Y3hwcm9qL1Rlc3RXZWJLaXRBUEkudmN4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjkxLDcgKzI5
MSw2IEBACiAgIDxJdGVtR3JvdXA+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxDb3VudGVy
cy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxUZXN0c0NvbnRyb2xsZXIuY3Bw
IiAvPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cVGVzdHNcSmF2YVNjcmlwdENvcmVcVk1J
bnNwZWN0b3IuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cVGVzdHNcV2ViQ29y
ZVxDYWxjdWxhdGlvblZhbHVlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFRl
c3RzXFdlYkNvcmVcQ1NTUGFyc2VyLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XFRlc3RzXFdlYkNvcmVcTGF5b3V0VW5pdC5jcHAiIC8+CkluZGV4OiBUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkudmN4cHJvai9UZXN0V2ViS2l0QVBJLnZjeHByb2ouZmlsdGVycwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkudmN4cHJvai9U
ZXN0V2ViS2l0QVBJLnZjeHByb2ouZmlsdGVycwkocmV2aXNpb24gMTgyODYxKQorKysgVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnZjeHByb2ovVGVzdFdlYktpdEFQSS52Y3hwcm9q
LmZpbHRlcnMJKHdvcmtpbmcgY29weSkKQEAgLTE2Myw5ICsxNjMsNiBAQAogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5cVGVzdHNcV2ViQ29yZVxDU1NQYXJzZXIuY3BwIj4KICAgICAgIDxGaWx0
ZXI+VGVzdHNcV2ViQ29yZTwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5cVGVzdHNcSmF2YVNjcmlwdENvcmVcVk1JbnNwZWN0b3IuY3BwIj4KLSAg
ICAgIDxGaWx0ZXI+VGVzdHNcSmF2YVNjcmlwdENvcmU8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGls
ZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFRlc3RzXFdURlxXb3JrUXVldWUuY3BwIj4K
ICAgICAgIDxGaWx0ZXI+VGVzdHNcV1RGPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkluZGV4
OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTgyODYxKQorKysgVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTgyLDcgKzgyLDYgQEAKIAkJN0NDRTdFQUUxQTQxMUEzNDAwNDQ3QzRDIC8qIFRl
c3RzQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQzEzMUFBODExNzEzMUZDMDBCNjk3MjcgLyogVGVzdHNDb250cm9sbGVyLmNwcCAq
LzsgfTsKIAkJN0NDRTdFQUYxQTQxMUEzODAwNDQ3QzRDIC8qIFBsYXRmb3JtVXRpbGl0aWVzLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNTc1QkJG
MTI2RjU3NTIwMDZGMEYxMiAvKiBQbGF0Zm9ybVV0aWxpdGllcy5jcHAgKi87IH07CiAJCTdDQ0U3
RUIwMUE0MTFBNDQwMDQ0N0M0QyAvKiBVUkxFeHRyYXMubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0E3RUIzQzE4RkE2M0E0MDA5RTc2NzAgLyogVVJM
RXh0cmFzLm1tICovOyB9OwotCQk3Q0NFN0VCMTFBNDExQTRCMDA0NDdDNEMgLyogVk1JbnNwZWN0
b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUy
MTdFQ0MxNjQwQTU0QTAwNTI5ODhCIC8qIFZNSW5zcGVjdG9yLmNwcCAqLzsgfTsKIAkJN0NDRTdF
QjIxQTQxMUE1MTAwNDQ3QzRDIC8qIE1lbW9yeUNhY2hlQWRkSW1hZ2VUb0NhY2hlSU9TLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzU2MDkxNzcxOTI1
OUM1OTAwOUVGMDZFIC8qIE1lbW9yeUNhY2hlQWRkSW1hZ2VUb0NhY2hlSU9TLm1tICovOyB9Owog
CQk3Q0NFN0VCMzFBNDExQTdFMDA0NDdDNEMgLyogQWNjZXB0c0ZpcnN0TW91c2UubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzkwMjhCNTE0RkFCRDky
MDA3RTZCNDMgLyogQWNjZXB0c0ZpcnN0TW91c2UubW0gKi87IH07CiAJCTdDQ0U3RUI0MUE0MTFB
N0UwMDQ0N0M0QyAvKiBBdHRyaWJ1dGVkU3RyaW5nLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjU1RjExOUYxNTE2ODM0RjAwOTE1OTE2IC8qIEF0dHJp
YnV0ZWRTdHJpbmcubW0gKi87IH07CkBAIC03MTUsNyArNzE0LDYgQEAKIAkJRjZGNDlDNjcxNTU0
NUM4RDAwMDdGMzlEIC8qIERPTVdpbmRvd0V4dGVuc2lvbk5vQ2FjaGUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9NV2luZG93RXh0ZW5zaW9uTm9DYWNoZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY2RkREREQyMTQyNDFBRDQwMDRGMTcyOSAv
KiBQcml2YXRlQnJvd3NpbmdQdXNoU3RhdGVOb0hpc3RvcnlDYWxsYmFjay5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcml2YXRlQnJvd3NpbmdQdXNoU3RhdGVOb0hp
c3RvcnlDYWxsYmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY2RkREREQ1
MTQyNDFDNDgwMDRGMTcyOSAvKiBwdXNoLXN0YXRlLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7
IHBhdGggPSAicHVzaC1zdGF0ZS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
RkUyMTdFQ0MxNjQwQTU0QTAwNTI5ODhCIC8qIFZNSW5zcGVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFZNSW5zcGVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIC8qIEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KIAogLyogQmVn
aW4gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwpAQCAtMTI4MCw3ICsxMjc4LDYg
QEAKIAkJRkUyMTdFQ0IxNjQwQTU0QTAwNTI5ODhCIC8qIEphdmFTY3JpcHRDb3JlICovID0gewog
CQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQlGRTIxN0VDQzE2NDBBNTRB
MDA1Mjk4OEIgLyogVk1JbnNwZWN0b3IuY3BwICovLAogCQkJKTsKIAkJCXBhdGggPSBKYXZhU2Ny
aXB0Q29yZTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xNTQ4LDcgKzE1NDUsNiBA
QAogCQkJCTdDQ0U3RjE3MUE0MTFBRTYwMDQ0N0M0QyAvKiBVc2VyTWVkaWEuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJN0NDRTdGMTgxQTQxMUFFNjAwNDQ3QzRDIC8qIFVzZXJNZXNzYWdlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTdDQ0U3RjRBMUE0MTFCOEUwMDQ0N0M0QyAvKiBWZWN0b3IuY3Bw
IGluIFNvdXJjZXMgKi8sCi0JCQkJN0NDRTdFQjExQTQxMUE0QjAwNDQ3QzRDIC8qIFZNSW5zcGVj
dG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMTM5RTc3MUE0MjNBNUIwMEY1OTBGNSAvKiBX
ZWFrT2JqQ1B0ci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RjE5MUE0MTFBRTYwMDQ0N0M0
QyAvKiBXZWJBcmNoaXZlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RjFBMUE0MTFBRTYw
MDQ0N0M0QyAvKiBXZWJDb3JlU3RhdGlzdGljc1dpdGhOb1dlYlByb2Nlc3MuY3BwIGluIFNvdXJj
ZXMgKi8sCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL0phdmFTY3JpcHRDb3JlL1ZN
SW5zcGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL0ph
dmFTY3JpcHRDb3JlL1ZNSW5zcGVjdG9yLmNwcAkocmV2aXNpb24gMTgyODYxKQorKysgVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9KYXZhU2NyaXB0Q29yZS9WTUluc3BlY3Rvci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNjg5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0KLSNpbmNsdWRlIDxpbnRlcnByZXRlci9WTUluc3BlY3Rvci5oPgotI2luY2x1ZGUgPHN0
ZGFyZy5oPgotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBKU0M7Ci0KLS8v
IFRoZXJlJ3Mgbm90IG11Y2ggd2UgY2FuIHRlc3QgZm9yIHRoZSBWTUluc3BlY3Rvcjo6cHJpbnRm
KCkgY2FzZSBleGNlcHQgdG8KLS8vIG1ha2Ugc3VyZSBpdCBkb2VzIG5vdCBjcmFzaC4gVW5mb3J0
dW5hdGVseSwgd2UgYWxzbyBkb24ndCB3YW50IGFsbCB0aGUKLS8vIHRlc3Qgc3RyaW5ncyBjcm93
ZGluZyBvdXQgc3Rkb3V0LiBTbywgd2UgZm9yZWdvIHRoZSBwcmludGYgdGVzdHMuCi0vLyBOT1RF
IHRoYXQgdGhlIG1vc3QgaW50ZXJlc3RpbmcgcGFydCBvZiBWTUluc3BlY3Rvcjo6cHJpbnRmKCkg
aXMgdGhlCi0vLyBmb3JtYXR0aW5nIGZ1bmN0aW9uYWxpdHksIGFuZCBpdCBpcyBhcmUgYWxyZWFk
eSBiZWluZyB0ZXN0ZWQgYnkgdGhlCi0vLyBmcHJpbnRmKCkgYW5kIHNwcmludGYoKSBjYXNlcy4K
LQotCi0vLyBUaGUgVk1JbnNwZWN0b3I6OmZwcmludGYoKSB0ZXN0IHdvcmtzIGJ5IHByaW50aW5n
IHRoZSBzdHJpbmcgdG8gYSB0ZW1wIGZpbGUsCi0vLyBhbmQgdGhlbiByZWFkaW5nIHRoZSBmaWxl
IGNvbnRlbnQgYmFjayBpbnRvIGEgYnVmZmVyLCB3aGljaCB3ZSwgaW4gdHVybiwKLS8vIGNvbXBh
cmUgYWdhaW5zdCB0aGUgZXhwZWN0ZWQgc3RyaW5nLgotCi1URVNUKEpTQywgVk1JbnNwZWN0b3JG
cHJpbnRmKQotewotI2lmIEVOQUJMRShWTUlOU1BFQ1RPUikKLSAgICBjaGFyIGFjdHVhbFsxMDI0
XTsKLSAgICBjaGFyIGV4cGVjdGVkWzEwMjRdOwotICAgIGNvbnN0IGNoYXIqIGZvcm1hdDsKLSAg
ICBjb25zdCBjaGFyKiBleHBlY3RlZExpdGVyYWw7Ci0gICAgRklMRSogZmlsZTsKLSAgICBjb25z
dCBjaGFyKiBmaWxlbmFtZSA9ICIvdG1wL1ZNSW5zcGVjdG9yRnByaW50ZlRlc3QudHh0IjsKLSAg
ICBzaXplX3Qgc2l6ZTsKLQotI2RlZmluZSBPUEVOX0ZJTEUoZmlsZSkgICAgICAgICAgICAgICAg
ICAgICAgICAgXAotICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAotICAgICAgICBmaWxlID0gZm9wZW4oZmlsZW5hbWUsICJ3Iik7ICAgICAgICAgICAgXAot
ICAgIH0gd2hpbGUgKGZhbHNlKQotCi0jZGVmaW5lIFJFQURfQU5EX0NMT1NFX0ZJTEUoZmlsZSwg
YWN0dWFsKSAgICAgICBcCi0gICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCi0gICAgICAgIGZjbG9zZShmaWxlKTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCi0gICAgICAgIGZpbGUgPSBmb3BlbihmaWxlbmFtZSwgInIiKTsgICAgICAgICAgICBcCi0g
ICAgICAgIGZzZWVrKGZpbGUsIDAsIFNFRUtfRU5EKTsgICAgICAgICAgICAgICBcCi0gICAgICAg
IHNpemUgPSBmdGVsbChmaWxlKTsgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHJld2lu
ZChmaWxlKTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGZyZWFkKGFjdHVh
bCwgMSwgc2l6ZSwgZmlsZSk7ICAgICAgICAgICBcCi0gICAgICAgIGFjdHVhbFtzaXplXSA9ICdc
MCc7ICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGZjbG9zZShmaWxlKTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCi0gICAgfSB3aGlsZSAoZmFsc2UpCi0KLSAgICAvLyBUZXN0aW5n
IHN0YW5kYXJkIGRlZmF1bHQgZm9ybWF0IHNwZWNpZmllcnM6Ci0gICAgLy8gTm90ZTogc2hvdWxk
IHdvcmsganVzdCBsaWtlIHNwcmludGYuIFNvLCB3ZSBqdXN0IGNvbXBhcmUgYWdhaW5zdCB0aGF0
LgotICAgIG1lbXNldChhY3R1YWwsICd6Jywgc2l6ZW9mKGFjdHVhbCkpOwotICAgIC8vIFRoZSBj
b21waWxlciB3YXJuaW5nIGZsYWdzIGFyZSBjb25maWd1cmVkIHRvIGV4cGVjdCBhIGxpdGVyYWwg
c3RyaW5nIGZvcgotICAgIC8vIDo6c3ByaW50ZiBiZWxvdy4gU28sIHVzZSBhICNkZWZpbmUgZm9y
IHRoaXMgb25lIGNhc2UgdG8ga2VlcCB0aGUKLSAgICAvLyBjb21waWxlciBoYXBweS4KLSN1bmRl
ZiBMSVRFUkFMX0ZPUk1BVAotI2RlZmluZSBMSVRFUkFMX0ZPUk1BVCAiJyUlJSUnICAgICAgICAg
ICAgICAgICAgICAgICAgID09PiAnJSUnXG4iCi0KLSAgICBPUEVOX0ZJTEUoZmlsZSk7Ci0gICAg
Vk1JbnNwZWN0b3I6OmZwcmludGYoZmlsZSwgTElURVJBTF9GT1JNQVQpOwotICAgIFJFQURfQU5E
X0NMT1NFX0ZJTEUoZmlsZSwgYWN0dWFsKTsKLSAgICA6OnNwcmludGYoZXhwZWN0ZWQsIExJVEVS
QUxfRk9STUFUKTsKLQotI3VuZGVmIExJVEVSQUxfRk9STUFUCi0gICAgQVNTRVJUX0VRKHN0cmNt
cChhY3R1YWwsIGV4cGVjdGVkKSwgMCk7Ci0KLSAgICBtZW1zZXQoYWN0dWFsLCAneicsIHNpemVv
ZihhY3R1YWwpKTsKLSAgICBmb3JtYXQgPSAiJyUlYycsICd4JyAgICAgICAgICAgICAgICAgICAg
PT0+ICclYydcbiI7Ci0gICAgT1BFTl9GSUxFKGZpbGUpOwotICAgIFZNSW5zcGVjdG9yOjpmcHJp
bnRmKGZpbGUsIGZvcm1hdCwgJ3gnKTsKLSAgICBSRUFEX0FORF9DTE9TRV9GSUxFKGZpbGUsIGFj
dHVhbCk7Ci0gICAgOjpzcHJpbnRmKGV4cGVjdGVkLCBmb3JtYXQsICd4Jyk7Ci0gICAgQVNTRVJU
X0VRKHN0cmNtcChhY3R1YWwsIGV4cGVjdGVkKSwgMCk7Ci0KLSAgICBtZW1zZXQoYWN0dWFsLCAn
eicsIHNpemVvZihhY3R1YWwpKTsKLSAgICBmb3JtYXQgPSAiJyUlKmMnLCA4LCAneCcgICAgICAg
ICAgICAgICAgPT0+ICclKmMnXG4iOwotICAgIE9QRU5fRklMRShmaWxlKTsKLSAgICBWTUluc3Bl
Y3Rvcjo6ZnByaW50ZihmaWxlLCBmb3JtYXQsIDgsICd4Jyk7Ci0gICAgUkVBRF9BTkRfQ0xPU0Vf
RklMRShmaWxlLCBhY3R1YWwpOwotICAgIDo6c3ByaW50ZihleHBlY3RlZCwgZm9ybWF0LCA4LCAn
eCcpOwotICAgIEFTU0VSVF9FUShzdHJjbXAoYWN0dWFsLCBleHBlY3RlZCksIDApOwotCi0gICAg
bWVtc2V0KGFjdHVhbCwgJ3onLCBzaXplb2YoYWN0dWFsKSk7Ci0gICAgZm9ybWF0ID0gIiclJXMn
LCBcImhlbGxvIHdvcmxkXCIgICAgICAgICAgPT0+ICclcydcbiI7Ci0gICAgT1BFTl9GSUxFKGZp
bGUpOwotICAgIFZNSW5zcGVjdG9yOjpmcHJpbnRmKGZpbGUsIGZvcm1hdCwgImhlbGxvIHdvcmxk
Iik7Ci0gICAgUkVBRF9BTkRfQ0xPU0VfRklMRShmaWxlLCBhY3R1YWwpOwotICAgIDo6c3ByaW50
ZihleHBlY3RlZCwgZm9ybWF0LCAiaGVsbG8gd29ybGQiKTsKLSAgICBBU1NFUlRfRVEoc3RyY21w
KGFjdHVhbCwgZXhwZWN0ZWQpLCAwKTsKLQotICAgIG1lbXNldChhY3R1YWwsICd6Jywgc2l6ZW9m
KGFjdHVhbCkpOwotICAgIGZvcm1hdCA9ICInJSUqcycsIDgsIFwiaGVsbG8gd29ybGRcIiAgICAg
ID09PiAnJSpzJ1xuIjsKLSAgICBPUEVOX0ZJTEUoZmlsZSk7Ci0gICAgVk1JbnNwZWN0b3I6OmZw
cmludGYoZmlsZSwgZm9ybWF0LCA4LCAiaGVsbG8gd29ybGQiKTsKLSAgICBSRUFEX0FORF9DTE9T
RV9GSUxFKGZpbGUsIGFjdHVhbCk7Ci0gICAgOjpzcHJpbnRmKGV4cGVjdGVkLCBmb3JtYXQsIDgs
ICJoZWxsbyB3b3JsZCIpOwotICAgIEFTU0VSVF9FUShzdHJjbXAoYWN0dWFsLCBleHBlY3RlZCks
IDApOwotCi0gICAgbWVtc2V0KGFjdHVhbCwgJ3onLCBzaXplb2YoYWN0dWFsKSk7Ci0gICAgZm9y
bWF0ID0gIiclJSpzJywgOCwgXCJoZWxsb1wiICAgICAgICAgICAgPT0+ICclKnMnXG4iOwotICAg
IE9QRU5fRklMRShmaWxlKTsKLSAgICBWTUluc3BlY3Rvcjo6ZnByaW50ZihmaWxlLCBmb3JtYXQs
IDgsICJoZWxsbyIpOwotICAgIFJFQURfQU5EX0NMT1NFX0ZJTEUoZmlsZSwgYWN0dWFsKTsKLSAg
ICA6OnNwcmludGYoZXhwZWN0ZWQsIGZvcm1hdCwgOCwgImhlbGxvIik7Ci0gICAgQVNTRVJUX0VR
KHN0cmNtcChhY3R1YWwsIGV4cGVjdGVkKSwgMCk7Ci0KLSAgICBtZW1zZXQoYWN0dWFsLCAneics
IHNpemVvZihhY3R1YWwpKTsKLSAgICBmb3JtYXQgPSAiJyUlZCcsIDk4NzY1NDMyMSAgICAgICAg
ICAgICAgPT0+ICclZCdcbiI7Ci0gICAgT1BFTl9GSUxFKGZpbGUpOwotICAgIFZNSW5zcGVjdG9y
OjpmcHJpbnRmKGZpbGUsIGZvcm1hdCwgOTg3NjU0MzIxKTsKLSAgICBSRUFEX0FORF9DTE9TRV9G
SUxFKGZpbGUsIGFjdHVhbCk7Ci0gICAgOjpzcHJpbnRmKGV4cGVjdGVkLCBmb3JtYXQsIDk4NzY1
NDMyMSk7Ci0gICAgQVNTRVJUX0VRKHN0cmNtcChhY3R1YWwsIGV4cGVjdGVkKSwgMCk7Ci0KLSAg
ICBtZW1zZXQoYWN0dWFsLCAneicsIHNpemVvZihhY3R1YWwpKTsKLSAgICBmb3JtYXQgPSAiJyUl
dScsIDQyNzY1NDMyMTB1ICAgICAgICAgICAgPT0+ICcldSdcbiI7Ci0gICAgT1BFTl9GSUxFKGZp
bGUpOwotICAgIFZNSW5zcGVjdG9yOjpmcHJpbnRmKGZpbGUsIGZvcm1hdCwgNDI3NjU0MzIxMHUp
OwotICAgIFJFQURfQU5EX0NMT1NFX0ZJTEUoZmlsZSwgYWN0dWFsKTsKLSAgICA6OnNwcmludGYo
ZXhwZWN0ZWQsIGZvcm1hdCwgNDI3NjU0MzIxMHUpOwotICAgIEFTU0VSVF9FUShzdHJjbXAoYWN0
dWFsLCBleHBlY3RlZCksIDApOwotCi0gICAgbWVtc2V0KGFjdHVhbCwgJ3onLCBzaXplb2YoYWN0
dWFsKSk7Ci0gICAgZm9ybWF0ID0gIiclJXUnLCAweGZmZmZmZmZmICAgICAgICAgICAgID09PiAn
JXUnXG4iOwotICAgIE9QRU5fRklMRShmaWxlKTsKLSAgICBWTUluc3BlY3Rvcjo6ZnByaW50Zihm
aWxlLCBmb3JtYXQsIDB4ZmZmZmZmZmYpOwotICAgIFJFQURfQU5EX0NMT1NFX0ZJTEUoZmlsZSwg
YWN0dWFsKTsKLSAgICA6OnNwcmludGYoZXhwZWN0ZWQsIGZvcm1hdCwgMHhmZmZmZmZmZik7Ci0g
ICAgQVNTRVJUX0VRKHN0cmNtcChhY3R1YWwsIGV4cGVjdGVkKSwgMCk7Ci0KLSAgICBtZW1zZXQo
YWN0dWFsLCAneicsIHNpemVvZihhY3R1YWwpKTsKLSAgICBmb3JtYXQgPSAiJyUleCcsIDB4ZmZm
ZmZmZmYgICAgICAgICAgICAgPT0+ICcleCdcbiI7Ci0gICAgT1BFTl9GSUxFKGZpbGUpOwotICAg
IFZNSW5zcGVjdG9yOjpmcHJpbnRmKGZpbGUsIGZvcm1hdCwgMHhmZmZmZmZmZik7Ci0gICAgUkVB
RF9BTkRfQ0xPU0VfRklMRShmaWxlLCBhY3R1YWwpOwotICAgIDo6c3ByaW50ZihleHBlY3RlZCwg
Zm9ybWF0LCAweGZmZmZmZmZmKTsKLSAgICBBU1NFUlRfRVEoc3RyY21wKGFjdHVhbCwgZXhwZWN0
ZWQpLCAwKTsKLQotICAgIG1lbXNldChhY3R1YWwsICd6Jywgc2l6ZW9mKGFjdHVhbCkpOwotICAg
IGZvcm1hdCA9ICInJSVwJywgKHZvaWQqKTB4YWJjZGJhYmUgICAgICA9PT4gJyVwJ1xuIjsKLSAg
ICBPUEVOX0ZJTEUoZmlsZSk7Ci0gICAgVk1JbnNwZWN0b3I6OmZwcmludGYoZmlsZSwgZm9ybWF0
LCAodm9pZCopMHhhYmNkYmFiZSk7Ci0gICAgUkVBRF9BTkRfQ0xPU0VfRklMRShmaWxlLCBhY3R1
YWwpOwotICAgIDo6c3ByaW50ZihleHBlY3RlZCwgZm9ybWF0LCAodm9pZCopMHhhYmNkYmFiZSk7
Ci0gICAgQVNTRVJUX0VRKHN0cmNtcChhY3R1YWwsIGV4cGVjdGVkKSwgMCk7Ci0KLSAgICBtZW1z
ZXQoYWN0dWFsLCAneicsIHNpemVvZihhY3R1YWwpKTsKLSAgICBmb3JtYXQgPSAiJyUlbHUnLCAx
MjM0NTY3ODkwOTg3NjU0MzIxdWwgPT0+ICclbHUnXG4iOwotICAgIE9QRU5fRklMRShmaWxlKTsK
LSAgICBWTUluc3BlY3Rvcjo6ZnByaW50ZihmaWxlLCBmb3JtYXQsIDEyMzQ1Njc4OTA5ODc2NTQz
MjF1bCk7Ci0gICAgUkVBRF9BTkRfQ0xPU0VfRklMRShmaWxlLCBhY3R1YWwpOwotICAgIDo6c3By
aW50ZihleHBlY3RlZCwgZm9ybWF0LCAxMjM0NTY3ODkwOTg3NjU0MzIxdWwpOwotICAgIEFTU0VS
VF9FUShzdHJjbXAoYWN0dWFsLCBleHBlY3RlZCksIDApOwotCi0gICAgbWVtc2V0KGFjdHVhbCwg
J3onLCBzaXplb2YoYWN0dWFsKSk7Ci0gICAgZm9ybWF0ID0gIiclJWYnLCAxMjM0LjU2NyAgICAg
ICAgICAgICAgID09PiAnJWYnXG4iOwotICAgIE9QRU5fRklMRShmaWxlKTsKLSAgICBWTUluc3Bl
Y3Rvcjo6ZnByaW50ZihmaWxlLCBmb3JtYXQsIDEyMzQuNTY3KTsKLSAgICBSRUFEX0FORF9DTE9T
RV9GSUxFKGZpbGUsIGFjdHVhbCk7Ci0gICAgOjpzcHJpbnRmKGV4cGVjdGVkLCBmb3JtYXQsIDEy
MzQuNTY3KTsKLSAgICBBU1NFUlRfRVEoc3RyY21wKGFjdHVhbCwgZXhwZWN0ZWQpLCAwKTsKLQot
ICAgIG1lbXNldChhY3R1YWwsICd6Jywgc2l6ZW9mKGFjdHVhbCkpOwotICAgIGZvcm1hdCA9ICIn
JSUuMmYnLCAxMjM0LjU2NyAgICAgICAgICAgICA9PT4gJyUuMmYnXG4iOwotICAgIE9QRU5fRklM
RShmaWxlKTsKLSAgICBWTUluc3BlY3Rvcjo6ZnByaW50ZihmaWxlLCBmb3JtYXQsIDEyMzQuNTY3
KTsKLSAgICBSRUFEX0FORF9DTE9TRV9GSUxFKGZpbGUsIGFjdHVhbCk7Ci0gICAgOjpzcHJpbnRm
KGV4cGVjdGVkLCBmb3JtYXQsIDEyMzQuNTY3KTsKLSAgICBBU1NFUlRfRVEoc3RyY21wKGFjdHVh
bCwgZXhwZWN0ZWQpLCAwKTsKLQotICAgIG1lbXNldChhY3R1YWwsICd6Jywgc2l6ZW9mKGFjdHVh
bCkpOwotICAgIGZvcm1hdCA9ICInJSUxMC4yZicsIDEyMzQuNTY3ICAgICAgICAgICA9PT4gJyUx
MC4yZidcbiI7Ci0gICAgT1BFTl9GSUxFKGZpbGUpOwotICAgIFZNSW5zcGVjdG9yOjpmcHJpbnRm
KGZpbGUsIGZvcm1hdCwgMTIzNC41NjcpOwotICAgIFJFQURfQU5EX0NMT1NFX0ZJTEUoZmlsZSwg
YWN0dWFsKTsKLSAgICA6OnNwcmludGYoZXhwZWN0ZWQsIGZvcm1hdCwgMTIzNC41NjcpOwotICAg
IEFTU0VSVF9FUShzdHJjbXAoYWN0dWFsLCBleHBlY3RlZCksIDApOwotCi0gICAgbWVtc2V0KGFj
dHVhbCwgJ3onLCBzaXplb2YoYWN0dWFsKSk7Ci0gICAgZm9ybWF0ID0gIiclJTAxMC4yZicsIDEy
MzQuNTY3ICAgICAgICAgID09PiAnJTAxMC4yZidcbiI7Ci0gICAgT1BFTl9GSUxFKGZpbGUpOwot
ICAgIFZNSW5zcGVjdG9yOjpmcHJpbnRmKGZpbGUsIGZvcm1hdCwgMTIzNC41NjcpOwotICAgIFJF
QURfQU5EX0NMT1NFX0ZJTEUoZmlsZSwgYWN0dWFsKTsKLSAgICA6OnNwcmludGYoZXhwZWN0ZWQs
IGZvcm1hdCwgMTIzNC41NjcpOwotICAgIEFTU0VSVF9FUShzdHJjbXAoYWN0dWFsLCBleHBlY3Rl
ZCksIDApOwotCi0gICAgLy8gQmFkIC8gd2VpcmQgZm9ybWF0czoKLSAgICBtZW1zZXQoYWN0dWFs
LCAneicsIHNpemVvZihhY3R1YWwpKTsKLSAgICBmb3JtYXQgPSAiJyUlNS40JywgOTg3NjU0MzIx
ICAgICAgICAgICAgPT0+ICclNS40J1xuIjsKLSAgICBPUEVOX0ZJTEUoZmlsZSk7Ci0gICAgVk1J
bnNwZWN0b3I6OmZwcmludGYoZmlsZSwgZm9ybWF0LCA5ODc2NTQzMjEpOwotICAgIFJFQURfQU5E
X0NMT1NFX0ZJTEUoZmlsZSwgYWN0dWFsKTsKLSAgICBleHBlY3RlZExpdGVyYWwgPSAiJyU1LjQn
LCA5ODc2NTQzMjEgICAgICAgICAgICA9PT4gJ0VSUk9SIEAgXCIlNS40JyBcIlxuIjsKLSAgICBB
U1NFUlRfRVEoc3RyY21wKGFjdHVhbCwgZXhwZWN0ZWRMaXRlcmFsKSwgMCk7Ci0KLSAgICBtZW1z
ZXQoYWN0dWFsLCAneicsIHNpemVvZihhY3R1YWwpKTsKLSAgICBmb3JtYXQgPSAiJyUlNS40JyAn
JSVkJywgOTg3NjU0MzIxLCA0ICAgID09PiAnJTUuNCcgJyVkJ1xuIjsKLSAgICBPUEVOX0ZJTEUo
ZmlsZSk7Ci0gICAgVk1JbnNwZWN0b3I6OmZwcmludGYoZmlsZSwgZm9ybWF0LCA5ODc2NTQzMjEs
IDQpOwotICAgIFJFQURfQU5EX0NMT1NFX0ZJTEUoZmlsZSwgYWN0dWFsKTsKLSAgICA6OnNwcmlu
dGYoZXhwZWN0ZWQsIGZvcm1hdCwgOTg3NjU0MzIxLCA0KTsKLSAgICBBU1NFUlRfRVEoc3RyY21w
KGFjdHVhbCwgZXhwZWN0ZWQpLCAwKTsKLQotICAgIG1lbXNldChhY3R1YWwsICd6Jywgc2l6ZW9m
KGFjdHVhbCkpOwotICAgIGZvcm1hdCA9ICInJSV3JyAnJSVkJywgOTg3NjU0MzIxLCA2ICAgICAg
PT0+ICcldycgJyVkJ1xuIjsKLSAgICBPUEVOX0ZJTEUoZmlsZSk7Ci0gICAgVk1JbnNwZWN0b3I6
OmZwcmludGYoZmlsZSwgZm9ybWF0LCA5ODc2NTQzMjEsIDYpOwotICAgIFJFQURfQU5EX0NMT1NF
X0ZJTEUoZmlsZSwgYWN0dWFsKTsKLSAgICA6OnNwcmludGYoZXhwZWN0ZWQsIGZvcm1hdCwgOTg3
NjU0MzIxLCA2KTsKLSAgICBBU1NFUlRfRVEoc3RyY21wKGFjdHVhbCwgZXhwZWN0ZWQpLCAwKTsK
LQotCi0gICAgLy8gVGVzdGluZyB0aGUgJWIgZXh0ZW5zaW9uOgotICAgIG1lbXNldChhY3R1YWws
ICd6Jywgc2l6ZW9mKGFjdHVhbCkpOwotICAgIE9QRU5fRklMRShmaWxlKTsKLSAgICBWTUluc3Bl
Y3Rvcjo6ZnByaW50ZihmaWxlLCAiJyUlYicsIDAgICAgICAgICAgPT0+ICclYidcbiIsIDApOwot
ICAgIFJFQURfQU5EX0NMT1NFX0ZJTEUoZmlsZSwgYWN0dWFsKTsKLSAgICBBU1NFUlRfRVEoc3Ry
Y21wKGFjdHVhbCwgIiclYicsIDAgICAgICAgICAgPT0+ICdGQUxTRSdcbiIpLCAwKTsKLQotICAg
IG1lbXNldChhY3R1YWwsICd6Jywgc2l6ZW9mKGFjdHVhbCkpOwotICAgIE9QRU5fRklMRShmaWxl
KTsKLSAgICBWTUluc3BlY3Rvcjo6ZnByaW50ZihmaWxlLCAiJyUlYicsIDEgICAgICAgICAgPT0+
ICclYidcbiIsIDEpOwotICAgIFJFQURfQU5EX0NMT1NFX0ZJTEUoZmlsZSwgYWN0dWFsKTsKLSAg
ICBBU1NFUlRfRVEoc3RyY21wKGFjdHVhbCwgIiclYicsIDEgICAgICAgICAgPT0+ICdUUlVFJ1xu
IiksIDApOwotCi0gICAgbWVtc2V0KGFjdHVhbCwgJ3onLCBzaXplb2YoYWN0dWFsKSk7Ci0gICAg
T1BFTl9GSUxFKGZpbGUpOwotICAgIFZNSW5zcGVjdG9yOjpmcHJpbnRmKGZpbGUsICInJSViJywg
LTEyMzQ1Njc4OSA9PT4gJyViJ1xuIiwgLTEyMzQ1Njc4OSk7Ci0gICAgUkVBRF9BTkRfQ0xPU0Vf
RklMRShmaWxlLCBhY3R1YWwpOwotICAgIEFTU0VSVF9FUShzdHJjbXAoYWN0dWFsLCAiJyViJywg
LTEyMzQ1Njc4OSA9PT4gJ1RSVUUnXG4iKSwgMCk7Ci0KLSAgICBtZW1zZXQoYWN0dWFsLCAneics
IHNpemVvZihhY3R1YWwpKTsKLSAgICBPUEVOX0ZJTEUoZmlsZSk7Ci0gICAgVk1JbnNwZWN0b3I6
OmZwcmludGYoZmlsZSwgIiclJWInLCAxMjM0NTY3ODkgID09PiAnJWInXG4iLCAxMjM0NTY3ODkp
OwotICAgIFJFQURfQU5EX0NMT1NFX0ZJTEUoZmlsZSwgYWN0dWFsKTsKLSAgICBBU1NFUlRfRVEo
c3RyY21wKGFjdHVhbCwgIiclYicsIDEyMzQ1Njc4OSAgPT0+ICdUUlVFJ1xuIiksIDApOwotCi0K
LSAgICAvLyBUZXN0aW5nIHRoZSAlSjx4PiBleHRlbnNpb25zOgotICAgIFN0cmluZyBzdHIxKCJU
ZXN0IFdURiBTdHJpbmciKTsKLSAgICBTdHJpbmcgc3RyMigiIik7Ci0KLSAgICBtZW1zZXQoYWN0
dWFsLCAneicsIHNpemVvZihhY3R1YWwpKTsKLSAgICBPUEVOX0ZJTEUoZmlsZSk7Ci0gICAgVk1J
bnNwZWN0b3I6OmZwcmludGYoZmlsZSwgIiclJUpzJyBpcyAlJXMsICZzdHIxLCBzdHIxLmlzRW1w
dHkoKT9cIkVNUFRZXCI6XCJOT1QgRU1QVFlcIiAgPT0+ICclSnMnIGlzICVzXG4iLAotICAgICAg
ICAmc3RyMSwgc3RyMS5pc0VtcHR5KCkgPyAiRU1QVFkiIDogIk5PVCBFTVBUWSIpOwotICAgIFJF
QURfQU5EX0NMT1NFX0ZJTEUoZmlsZSwgYWN0dWFsKTsKLSAgICBleHBlY3RlZExpdGVyYWwgPSAi
JyVKcycgaXMgJXMsICZzdHIxLCBzdHIxLmlzRW1wdHkoKT9cIkVNUFRZXCI6XCJOT1QgRU1QVFlc
IiAgPT0+ICdUZXN0IFdURiBTdHJpbmcnIGlzIE5PVCBFTVBUWVxuIjsKLSAgICBBU1NFUlRfRVEo
c3RyY21wKGFjdHVhbCwgZXhwZWN0ZWRMaXRlcmFsKSwgMCk7Ci0KLSAgICBtZW1zZXQoYWN0dWFs
LCAneicsIHNpemVvZihhY3R1YWwpKTsKLSAgICBPUEVOX0ZJTEUoZmlsZSk7Ci0gICAgVk1JbnNw
ZWN0b3I6OmZwcmludGYoZmlsZSwgIiclJUpzJyBpcyAlJXMsICZzdHIyLCBzdHIyLmlzRW1wdHko
KT9cIkVNUFRZXCI6XCJOT1QgRU1QVFlcIiAgPT0+ICclSnMnIGlzICVzXG4iLAotICAgICAgICAm
c3RyMiwgc3RyMi5pc0VtcHR5KCkgPyAiRU1QVFkiIDogIk5PVCBFTVBUWSIpOwotICAgIFJFQURf
QU5EX0NMT1NFX0ZJTEUoZmlsZSwgYWN0dWFsKTsKLSAgICBleHBlY3RlZExpdGVyYWwgPSAiJyVK
cycgaXMgJXMsICZzdHIyLCBzdHIyLmlzRW1wdHkoKT9cIkVNUFRZXCI6XCJOT1QgRU1QVFlcIiAg
PT0+ICcnIGlzIEVNUFRZXG4iOwotICAgIEFTU0VSVF9FUShzdHJjbXAoYWN0dWFsLCBleHBlY3Rl
ZExpdGVyYWwpLCAwKTsKLQotICAgIG1lbXNldChhY3R1YWwsICd6Jywgc2l6ZW9mKGFjdHVhbCkp
OwotICAgIE9QRU5fRklMRShmaWxlKTsKLSAgICBWTUluc3BlY3Rvcjo6ZnByaW50ZihmaWxlLCAi
JyUlSitzJyBpcyAlJXMsICZzdHIxLCBzdHIxLmlzRW1wdHkoKT9cIkVNUFRZXCI6XCJOT1QgRU1Q
VFlcIiA9PT4gJyVKK3MnIGlzICVzXG4iLAotICAgICAgICAmc3RyMSwgc3RyMS5pc0VtcHR5KCkg
PyAiRU1QVFkiIDogIk5PVCBFTVBUWSIpOwotICAgIFJFQURfQU5EX0NMT1NFX0ZJTEUoZmlsZSwg
YWN0dWFsKTsKLSAgICBleHBlY3RlZExpdGVyYWwgPSAiJyVKK3MnIGlzICVzLCAmc3RyMSwgc3Ry
MS5pc0VtcHR5KCk/XCJFTVBUWVwiOlwiTk9UIEVNUFRZXCIgPT0+ICdXVEY6OlN0cmluZyBcIlRl
c3QgV1RGIFN0cmluZ1wiJyBpcyBOT1QgRU1QVFlcbiI7Ci0gICAgQVNTRVJUX0VRKHN0cmNtcChh
Y3R1YWwsIGV4cGVjdGVkTGl0ZXJhbCksIDApOwotCi0gICAgbWVtc2V0KGFjdHVhbCwgJ3onLCBz
aXplb2YoYWN0dWFsKSk7Ci0gICAgT1BFTl9GSUxFKGZpbGUpOwotICAgIFZNSW5zcGVjdG9yOjpm
cHJpbnRmKGZpbGUsICInJSVKK3MnIGlzICUlcywgJnN0cjIsIHN0cjIuaXNFbXB0eSgpP1wiRU1Q
VFlcIjpcIk5PVCBFTVBUWVwiID09PiAnJUorcycgaXMgJXNcbiIsCi0gICAgICAgICZzdHIyLCBz
dHIyLmlzRW1wdHkoKSA/ICJFTVBUWSIgOiAiTk9UIEVNUFRZIik7Ci0gICAgUkVBRF9BTkRfQ0xP
U0VfRklMRShmaWxlLCBhY3R1YWwpOwotICAgIGV4cGVjdGVkTGl0ZXJhbCA9ICInJUorcycgaXMg
JXMsICZzdHIyLCBzdHIyLmlzRW1wdHkoKT9cIkVNUFRZXCI6XCJOT1QgRU1QVFlcIiA9PT4gJ1dU
Rjo6U3RyaW5nIFwiXCInIGlzIEVNUFRZXG4iOwotICAgIEFTU0VSVF9FUShzdHJjbXAoYWN0dWFs
LCBleHBlY3RlZExpdGVyYWwpLCAwKTsKLQotI3VuZGVmIE9QRU5fRklMRQotI3VuZGVmIFJFQURf
QU5EX0NMT1NFX0ZJTEUKLQotI2VuZGlmCi19Ci0KLQotVEVTVChKU0MsIFZNSW5zcGVjdG9yU3By
aW50ZikKLXsKLSNpZiBFTkFCTEUoVk1JTlNQRUNUT1IpCi0gICAgY2hhciBhY3R1YWxbMTAyNF07
Ci0gICAgY2hhciBleHBlY3RlZFsxMDI0XTsKLSAgICBjb25zdCBjaGFyKiBmb3JtYXQ7Ci0gICAg
Y29uc3QgY2hhciogZXhwZWN0ZWRMaXRlcmFsOwotCi0gICAgLy8gVGVzdGluZyBzdGFuZGFyZCBk
ZWZhdWx0IGZvcm1hdCBzcGVjaWZpZXJzOgotICAgIC8vIE5vdGU6IHNob3VsZCB3b3JrIGp1c3Qg
bGlrZSBzcHJpbnRmLiBTbywgd2UganVzdCBjb21wYXJlIGFnYWluc3QgdGhhdC4KLSAgICBtZW1z
ZXQoYWN0dWFsLCAneicsIHNpemVvZihhY3R1YWwpKTsKLSAgICAvLyBUaGUgY29tcGlsZXIgd2Fy
bmluZyBmbGFncyBhcmUgY29uZmlndXJlZCB0byBleHBlY3QgYSBsaXRlcmFsIHN0cmluZyBmb3IK
LSAgICAvLyA6OnNwcmludGYgYmVsb3cuIFNvLCB1c2UgYSAjZGVmaW5lIGZvciB0aGlzIG9uZSBj
YXNlIHRvIGtlZXAgdGhlCi0gICAgLy8gY29tcGlsZXIgaGFwcHkuCi0jdW5kZWYgTElURVJBTF9G
T1JNQVQKLSNkZWZpbmUgTElURVJBTF9GT1JNQVQgIiclJSUlJyAgICAgICAgICAgICAgICAgICAg
ICAgICA9PT4gJyUlJ1xuIgotICAgIFZNSW5zcGVjdG9yOjpzcHJpbnRmKGFjdHVhbCwgTElURVJB
TF9GT1JNQVQpOwotICAgIDo6c3ByaW50ZihleHBlY3RlZCwgTElURVJBTF9GT1JNQVQpOwotI3Vu
ZGVmIExJVEVSQUxfRk9STUFUCi0gICAgQVNTRVJUX0VRKHN0cmNtcChhY3R1YWwsIGV4cGVjdGVk
KSwgMCk7Ci0KLSAgICBtZW1zZXQoYWN0dWFsLCAneicsIHNpemVvZihhY3R1YWwpKTsKLSAgICBm
b3JtYXQgPSAiJyUlYycsICd4JyAgICAgICAgICAgICAgICAgICAgPT0+ICclYydcbiI7Ci0gICAg
Vk1JbnNwZWN0b3I6OnNwcmludGYoYWN0dWFsLCBmb3JtYXQsICd4Jyk7Ci0gICAgOjpzcHJpbnRm
KGV4cGVjdGVkLCBmb3JtYXQsICd4Jyk7Ci0gICAgQVNTRVJUX0VRKHN0cmNtcChhY3R1YWwsIGV4
cGVjdGVkKSwgMCk7Ci0KLSAgICBtZW1zZXQoYWN0dWFsLCAneicsIHNpemVvZihhY3R1YWwpKTsK
LSAgICBmb3JtYXQgPSAiJyUlKmMnLCA4LCAneCcgICAgICAgICAgICAgICAgPT0+ICclKmMnXG4i
OwotICAgIFZNSW5zcGVjdG9yOjpzcHJpbnRmKGFjdHVhbCwgZm9ybWF0LCA4LCAneCcpOwotICAg
IDo6c3ByaW50ZihleHBlY3RlZCwgZm9ybWF0LCA4LCAneCcpOwotICAgIEFTU0VSVF9FUShzdHJj
bXAoYWN0dWFsLCBleHBlY3RlZCksIDApOwotCi0gICAgbWVtc2V0KGFjdHVhbCwgJ3onLCBzaXpl
b2YoYWN0dWFsKSk7Ci0gICAgZm9ybWF0ID0gIiclJXMnLCBcImhlbGxvIHdvcmxkXCIgICAgICAg
ICAgPT0+ICclcydcbiI7Ci0gICAgVk1JbnNwZWN0b3I6OnNwcmludGYoYWN0dWFsLCBmb3JtYXQs
ICJoZWxsbyB3b3JsZCIpOwotICAgIDo6c3ByaW50ZihleHBlY3RlZCwgZm9ybWF0LCAiaGVsbG8g
d29ybGQiKTsKLSAgICBBU1NFUlRfRVEoc3RyY21wKGFjdHVhbCwgZXhwZWN0ZWQpLCAwKTsKLQot
ICAgIG1lbXNldChhY3R1YWwsICd6Jywgc2l6ZW9mKGFjdHVhbCkpOwotICAgIGZvcm1hdCA9ICIn
JSUqcycsIDgsIFwiaGVsbG8gd29ybGRcIiAgICAgID09PiAnJSpzJ1xuIjsKLSAgICBWTUluc3Bl
Y3Rvcjo6c3ByaW50ZihhY3R1YWwsIGZvcm1hdCwgOCwgImhlbGxvIHdvcmxkIik7Ci0gICAgOjpz
cHJpbnRmKGV4cGVjdGVkLCBmb3JtYXQsIDgsICJoZWxsbyB3b3JsZCIpOwotICAgIEFTU0VSVF9F
UShzdHJjbXAoYWN0dWFsLCBleHBlY3RlZCksIDApOwotCi0gICAgbWVtc2V0KGFjdHVhbCwgJ3on
LCBzaXplb2YoYWN0dWFsKSk7Ci0gICAgZm9ybWF0ID0gIiclJSpzJywgOCwgXCJoZWxsb1wiICAg
ICAgICAgICAgPT0+ICclKnMnXG4iOwotICAgIFZNSW5zcGVjdG9yOjpzcHJpbnRmKGFjdHVhbCwg
Zm9ybWF0LCA4LCAiaGVsbG8iKTsKLSAgICA6OnNwcmludGYoZXhwZWN0ZWQsIGZvcm1hdCwgOCwg
ImhlbGxvIik7Ci0gICAgQVNTRVJUX0VRKHN0cmNtcChhY3R1YWwsIGV4cGVjdGVkKSwgMCk7Ci0K
LSAgICBtZW1zZXQoYWN0dWFsLCAneicsIHNpemVvZihhY3R1YWwpKTsKLSAgICBmb3JtYXQgPSAi
JyUlZCcsIDk4NzY1NDMyMSAgICAgICAgICAgICAgPT0+ICclZCdcbiI7Ci0gICAgVk1JbnNwZWN0
b3I6OnNwcmludGYoYWN0dWFsLCBmb3JtYXQsIDk4NzY1NDMyMSk7Ci0gICAgOjpzcHJpbnRmKGV4
cGVjdGVkLCBmb3JtYXQsIDk4NzY1NDMyMSk7Ci0gICAgQVNTRVJUX0VRKHN0cmNtcChhY3R1YWws
IGV4cGVjdGVkKSwgMCk7Ci0KLSAgICBtZW1zZXQoYWN0dWFsLCAneicsIHNpemVvZihhY3R1YWwp
KTsKLSAgICBmb3JtYXQgPSAiJyUldScsIDQyNzY1NDMyMTB1ICAgICAgICAgICAgPT0+ICcldSdc
biI7Ci0gICAgVk1JbnNwZWN0b3I6OnNwcmludGYoYWN0dWFsLCBmb3JtYXQsIDQyNzY1NDMyMTB1
KTsKLSAgICA6OnNwcmludGYoZXhwZWN0ZWQsIGZvcm1hdCwgNDI3NjU0MzIxMHUpOwotICAgIEFT
U0VSVF9FUShzdHJjbXAoYWN0dWFsLCBleHBlY3RlZCksIDApOwotCi0gICAgbWVtc2V0KGFjdHVh
bCwgJ3onLCBzaXplb2YoYWN0dWFsKSk7Ci0gICAgZm9ybWF0ID0gIiclJXUnLCAweGZmZmZmZmZm
ICAgICAgICAgICAgID09PiAnJXUnXG4iOwotICAgIFZNSW5zcGVjdG9yOjpzcHJpbnRmKGFjdHVh
bCwgZm9ybWF0LCAweGZmZmZmZmZmKTsKLSAgICA6OnNwcmludGYoZXhwZWN0ZWQsIGZvcm1hdCwg
MHhmZmZmZmZmZik7Ci0gICAgQVNTRVJUX0VRKHN0cmNtcChhY3R1YWwsIGV4cGVjdGVkKSwgMCk7
Ci0KLSAgICBtZW1zZXQoYWN0dWFsLCAneicsIHNpemVvZihhY3R1YWwpKTsKLSAgICBmb3JtYXQg
PSAiJyUleCcsIDB4ZmZmZmZmZmYgICAgICAgICAgICAgPT0+ICcleCdcbiI7Ci0gICAgVk1JbnNw
ZWN0b3I6OnNwcmludGYoYWN0dWFsLCBmb3JtYXQsIDB4ZmZmZmZmZmYpOwotICAgIDo6c3ByaW50
ZihleHBlY3RlZCwgZm9ybWF0LCAweGZmZmZmZmZmKTsKLSAgICBBU1NFUlRfRVEoc3RyY21wKGFj
dHVhbCwgZXhwZWN0ZWQpLCAwKTsKLQotICAgIG1lbXNldChhY3R1YWwsICd6Jywgc2l6ZW9mKGFj
dHVhbCkpOwotICAgIGZvcm1hdCA9ICInJSVwJywgKHZvaWQqKTB4YWJjZGJhYmUgICAgICA9PT4g
JyVwJ1xuIjsKLSAgICBWTUluc3BlY3Rvcjo6c3ByaW50ZihhY3R1YWwsIGZvcm1hdCwgKHZvaWQq
KTB4YWJjZGJhYmUpOwotICAgIDo6c3ByaW50ZihleHBlY3RlZCwgZm9ybWF0LCAodm9pZCopMHhh
YmNkYmFiZSk7Ci0gICAgQVNTRVJUX0VRKHN0cmNtcChhY3R1YWwsIGV4cGVjdGVkKSwgMCk7Ci0K
LSAgICBtZW1zZXQoYWN0dWFsLCAneicsIHNpemVvZihhY3R1YWwpKTsKLSAgICBmb3JtYXQgPSAi
JyUlbHUnLCAxMjM0NTY3ODkwOTg3NjU0MzIxdWwgPT0+ICclbHUnXG4iOwotICAgIFZNSW5zcGVj
dG9yOjpzcHJpbnRmKGFjdHVhbCwgZm9ybWF0LCAxMjM0NTY3ODkwOTg3NjU0MzIxdWwpOwotICAg
IDo6c3ByaW50ZihleHBlY3RlZCwgZm9ybWF0LCAxMjM0NTY3ODkwOTg3NjU0MzIxdWwpOwotICAg
IEFTU0VSVF9FUShzdHJjbXAoYWN0dWFsLCBleHBlY3RlZCksIDApOwotCi0gICAgbWVtc2V0KGFj
dHVhbCwgJ3onLCBzaXplb2YoYWN0dWFsKSk7Ci0gICAgZm9ybWF0ID0gIiclJWYnLCAxMjM0LjU2
NyAgICAgICAgICAgICAgID09PiAnJWYnXG4iOwotICAgIFZNSW5zcGVjdG9yOjpzcHJpbnRmKGFj
dHVhbCwgZm9ybWF0LCAxMjM0LjU2Nyk7Ci0gICAgOjpzcHJpbnRmKGV4cGVjdGVkLCBmb3JtYXQs
IDEyMzQuNTY3KTsKLSAgICBBU1NFUlRfRVEoc3RyY21wKGFjdHVhbCwgZXhwZWN0ZWQpLCAwKTsK
LQotICAgIG1lbXNldChhY3R1YWwsICd6Jywgc2l6ZW9mKGFjdHVhbCkpOwotICAgIGZvcm1hdCA9
ICInJSUuMmYnLCAxMjM0LjU2NyAgICAgICAgICAgICA9PT4gJyUuMmYnXG4iOwotICAgIFZNSW5z
cGVjdG9yOjpzcHJpbnRmKGFjdHVhbCwgZm9ybWF0LCAxMjM0LjU2Nyk7Ci0gICAgOjpzcHJpbnRm
KGV4cGVjdGVkLCBmb3JtYXQsIDEyMzQuNTY3KTsKLSAgICBBU1NFUlRfRVEoc3RyY21wKGFjdHVh
bCwgZXhwZWN0ZWQpLCAwKTsKLQotICAgIG1lbXNldChhY3R1YWwsICd6Jywgc2l6ZW9mKGFjdHVh
bCkpOwotICAgIGZvcm1hdCA9ICInJSUxMC4yZicsIDEyMzQuNTY3ICAgICAgICAgICA9PT4gJyUx
MC4yZidcbiI7Ci0gICAgVk1JbnNwZWN0b3I6OnNwcmludGYoYWN0dWFsLCBmb3JtYXQsIDEyMzQu
NTY3KTsKLSAgICA6OnNwcmludGYoZXhwZWN0ZWQsIGZvcm1hdCwgMTIzNC41NjcpOwotICAgIEFT
U0VSVF9FUShzdHJjbXAoYWN0dWFsLCBleHBlY3RlZCksIDApOwotCi0gICAgbWVtc2V0KGFjdHVh
bCwgJ3onLCBzaXplb2YoYWN0dWFsKSk7Ci0gICAgZm9ybWF0ID0gIiclJTAxMC4yZicsIDEyMzQu
NTY3ICAgICAgICAgID09PiAnJTAxMC4yZidcbiI7Ci0gICAgVk1JbnNwZWN0b3I6OnNwcmludGYo
YWN0dWFsLCBmb3JtYXQsIDEyMzQuNTY3KTsKLSAgICA6OnNwcmludGYoZXhwZWN0ZWQsIGZvcm1h
dCwgMTIzNC41NjcpOwotICAgIEFTU0VSVF9FUShzdHJjbXAoYWN0dWFsLCBleHBlY3RlZCksIDAp
OwotCi0gICAgLy8gQmFkIC8gd2VpcmQgZm9ybWF0czoKLSAgICBtZW1zZXQoYWN0dWFsLCAneics
IHNpemVvZihhY3R1YWwpKTsKLSAgICBmb3JtYXQgPSAiJyUlNS40JywgOTg3NjU0MzIxICAgICAg
ICAgICAgPT0+ICclNS40J1xuIjsKLSAgICBWTUluc3BlY3Rvcjo6c3ByaW50ZihhY3R1YWwsIGZv
cm1hdCwgOTg3NjU0MzIxKTsKLSAgICBleHBlY3RlZExpdGVyYWwgPSAiJyU1LjQnLCA5ODc2NTQz
MjEgICAgICAgICAgICA9PT4gJ0VSUk9SIEAgXCIlNS40JyBcIlxuIjsKLSAgICBBU1NFUlRfRVEo
c3RyY21wKGFjdHVhbCwgZXhwZWN0ZWRMaXRlcmFsKSwgMCk7Ci0KLSAgICBtZW1zZXQoYWN0dWFs
LCAneicsIHNpemVvZihhY3R1YWwpKTsKLSAgICBmb3JtYXQgPSAiJyUlNS40JyAnJSVkJywgOTg3
NjU0MzIxLCA0ICAgID09PiAnJTUuNCcgJyVkJ1xuIjsKLSAgICBWTUluc3BlY3Rvcjo6c3ByaW50
ZihhY3R1YWwsIGZvcm1hdCwgOTg3NjU0MzIxLCA0KTsKLSAgICA6OnNwcmludGYoZXhwZWN0ZWQs
IGZvcm1hdCwgOTg3NjU0MzIxLCA0KTsKLSAgICBBU1NFUlRfRVEoc3RyY21wKGFjdHVhbCwgZXhw
ZWN0ZWQpLCAwKTsKLQotICAgIG1lbXNldChhY3R1YWwsICd6Jywgc2l6ZW9mKGFjdHVhbCkpOwot
ICAgIGZvcm1hdCA9ICInJSV3JyAnJSVkJywgOTg3NjU0MzIxLCA2ICAgICAgPT0+ICcldycgJyVk
J1xuIjsKLSAgICBWTUluc3BlY3Rvcjo6c3ByaW50ZihhY3R1YWwsIGZvcm1hdCwgOTg3NjU0MzIx
LCA2KTsKLSAgICA6OnNwcmludGYoZXhwZWN0ZWQsIGZvcm1hdCwgOTg3NjU0MzIxLCA2KTsKLSAg
ICBBU1NFUlRfRVEoc3RyY21wKGFjdHVhbCwgZXhwZWN0ZWQpLCAwKTsKLQotCi0gICAgLy8gVGVz
dGluZyB0aGUgJWIgZXh0ZW5zaW9uOgotICAgIG1lbXNldChhY3R1YWwsICd6Jywgc2l6ZW9mKGFj
dHVhbCkpOwotICAgIFZNSW5zcGVjdG9yOjpzcHJpbnRmKGFjdHVhbCwgIiclJWInLCAwICAgICAg
ICAgID09PiAnJWInXG4iLCAwKTsKLSAgICBBU1NFUlRfRVEoc3RyY21wKGFjdHVhbCwgIiclYics
IDAgICAgICAgICAgPT0+ICdGQUxTRSdcbiIpLCAwKTsKLQotICAgIG1lbXNldChhY3R1YWwsICd6
Jywgc2l6ZW9mKGFjdHVhbCkpOwotICAgIFZNSW5zcGVjdG9yOjpzcHJpbnRmKGFjdHVhbCwgIicl
JWInLCAxICAgICAgICAgID09PiAnJWInXG4iLCAxKTsKLSAgICBBU1NFUlRfRVEoc3RyY21wKGFj
dHVhbCwgIiclYicsIDEgICAgICAgICAgPT0+ICdUUlVFJ1xuIiksIDApOwotCi0gICAgbWVtc2V0
KGFjdHVhbCwgJ3onLCBzaXplb2YoYWN0dWFsKSk7Ci0gICAgVk1JbnNwZWN0b3I6OnNwcmludGYo
YWN0dWFsLCAiJyUlYicsIC0xMjM0NTY3ODkgPT0+ICclYidcbiIsIC0xMjM0NTY3ODkpOwotICAg
IEFTU0VSVF9FUShzdHJjbXAoYWN0dWFsLCAiJyViJywgLTEyMzQ1Njc4OSA9PT4gJ1RSVUUnXG4i
KSwgMCk7Ci0KLSAgICBtZW1zZXQoYWN0dWFsLCAneicsIHNpemVvZihhY3R1YWwpKTsKLSAgICBW
TUluc3BlY3Rvcjo6c3ByaW50ZihhY3R1YWwsICInJSViJywgMTIzNDU2Nzg5ICA9PT4gJyViJ1xu
IiwgMTIzNDU2Nzg5KTsKLSAgICBBU1NFUlRfRVEoc3RyY21wKGFjdHVhbCwgIiclYicsIDEyMzQ1
Njc4OSAgPT0+ICdUUlVFJ1xuIiksIDApOwotCi0KLSAgICAvLyBUZXN0aW5nIHRoZSAlSjx4PiBl
eHRlbnNpb25zOgotICAgIFN0cmluZyBzdHIxKCJUZXN0IFdURiBTdHJpbmciKTsKLSAgICBTdHJp
bmcgc3RyMigiIik7Ci0KLSAgICBtZW1zZXQoYWN0dWFsLCAneicsIHNpemVvZihhY3R1YWwpKTsK
LSAgICBWTUluc3BlY3Rvcjo6c3ByaW50ZihhY3R1YWwsICInJSVKcycgaXMgJSVzLCAmc3RyMSwg
c3RyMS5pc0VtcHR5KCk/XCJFTVBUWVwiOlwiTk9UIEVNUFRZXCIgID09PiAnJUpzJyBpcyAlc1xu
IiwKLSAgICAgICAgJnN0cjEsIHN0cjEuaXNFbXB0eSgpID8gIkVNUFRZIiA6ICJOT1QgRU1QVFki
KTsKLSAgICBleHBlY3RlZExpdGVyYWwgPSAiJyVKcycgaXMgJXMsICZzdHIxLCBzdHIxLmlzRW1w
dHkoKT9cIkVNUFRZXCI6XCJOT1QgRU1QVFlcIiAgPT0+ICdUZXN0IFdURiBTdHJpbmcnIGlzIE5P
VCBFTVBUWVxuIjsKLSAgICBBU1NFUlRfRVEoc3RyY21wKGFjdHVhbCwgZXhwZWN0ZWRMaXRlcmFs
KSwgMCk7Ci0KLSAgICBtZW1zZXQoYWN0dWFsLCAneicsIHNpemVvZihhY3R1YWwpKTsKLSAgICBW
TUluc3BlY3Rvcjo6c3ByaW50ZihhY3R1YWwsICInJSVKcycgaXMgJSVzLCAmc3RyMiwgc3RyMi5p
c0VtcHR5KCk/XCJFTVBUWVwiOlwiTk9UIEVNUFRZXCIgID09PiAnJUpzJyBpcyAlc1xuIiwKLSAg
ICAgICAgJnN0cjIsIHN0cjIuaXNFbXB0eSgpID8gIkVNUFRZIiA6ICJOT1QgRU1QVFkiKTsKLSAg
ICBleHBlY3RlZExpdGVyYWwgPSAiJyVKcycgaXMgJXMsICZzdHIyLCBzdHIyLmlzRW1wdHkoKT9c
IkVNUFRZXCI6XCJOT1QgRU1QVFlcIiAgPT0+ICcnIGlzIEVNUFRZXG4iOwotICAgIEFTU0VSVF9F
UShzdHJjbXAoYWN0dWFsLCBleHBlY3RlZExpdGVyYWwpLCAwKTsKLQotICAgIG1lbXNldChhY3R1
YWwsICd6Jywgc2l6ZW9mKGFjdHVhbCkpOwotICAgIFZNSW5zcGVjdG9yOjpzcHJpbnRmKGFjdHVh
bCwgIiclJUorcycgaXMgJSVzLCAmc3RyMSwgc3RyMS5pc0VtcHR5KCk/XCJFTVBUWVwiOlwiTk9U
IEVNUFRZXCIgPT0+ICclSitzJyBpcyAlc1xuIiwKLSAgICAgICAgJnN0cjEsIHN0cjEuaXNFbXB0
eSgpID8gIkVNUFRZIiA6ICJOT1QgRU1QVFkiKTsKLSAgICBleHBlY3RlZExpdGVyYWwgPSAiJyVK
K3MnIGlzICVzLCAmc3RyMSwgc3RyMS5pc0VtcHR5KCk/XCJFTVBUWVwiOlwiTk9UIEVNUFRZXCIg
PT0+ICdXVEY6OlN0cmluZyBcIlRlc3QgV1RGIFN0cmluZ1wiJyBpcyBOT1QgRU1QVFlcbiI7Ci0g
ICAgQVNTRVJUX0VRKHN0cmNtcChhY3R1YWwsIGV4cGVjdGVkTGl0ZXJhbCksIDApOwotCi0gICAg
bWVtc2V0KGFjdHVhbCwgJ3onLCBzaXplb2YoYWN0dWFsKSk7Ci0gICAgVk1JbnNwZWN0b3I6OnNw
cmludGYoYWN0dWFsLCAiJyUlSitzJyBpcyAlJXMsICZzdHIyLCBzdHIyLmlzRW1wdHkoKT9cIkVN
UFRZXCI6XCJOT1QgRU1QVFlcIiA9PT4gJyVKK3MnIGlzICVzXG4iLAotICAgICAgICAmc3RyMiwg
c3RyMi5pc0VtcHR5KCkgPyAiRU1QVFkiIDogIk5PVCBFTVBUWSIpOwotICAgIGV4cGVjdGVkTGl0
ZXJhbCA9ICInJUorcycgaXMgJXMsICZzdHIyLCBzdHIyLmlzRW1wdHkoKT9cIkVNUFRZXCI6XCJO
T1QgRU1QVFlcIiA9PT4gJ1dURjo6U3RyaW5nIFwiXCInIGlzIEVNUFRZXG4iOwotICAgIEFTU0VS
VF9FUShzdHJjbXAoYWN0dWFsLCBleHBlY3RlZExpdGVyYWwpLCAwKTsKLSNlbmRpZgotfQotCi0K
LVRFU1QoSlNDLCBWTUluc3BlY3RvclNucHJpbnRmKQotewotI2lmIEVOQUJMRShWTUlOU1BFQ1RP
UikKLSAgICBjaGFyIGFjdHVhbFsxMDI0XTsKLSAgICBjaGFyIGV4cGVjdGVkWzEwMjRdOwotICAg
IGNvbnN0IGNoYXIqIGZvcm1hdDsKLSAgICBjb25zdCBjaGFyKiBleHBlY3RlZExpdGVyYWw7Ci0K
LSAgICBzaXplX3Qgc2l6ZSA9IDE7Ci0gICAgd2hpbGUgKHNpemUgPD0gMTAwKSB7Ci0KLSAgICAg
ICAgLy8gVGVzdGluZyBzdGFuZGFyZCBkZWZhdWx0IGZvcm1hdCBzcGVjaWZpZXJzOgotICAgICAg
ICAvLyBOb3RlOiBzaG91bGQgd29yayBqdXN0IGxpa2Ugc25wcmludGYuIFNvLCB3ZSBqdXN0IGNv
bXBhcmUgYWdhaW5zdCB0aGF0LgotICAgICAgICBtZW1zZXQoYWN0dWFsLCAneicsIHNpemVvZihh
Y3R1YWwpKTsKLSAgICAgICAgLy8gVGhlIGNvbXBpbGVyIHdhcm5pbmcgZmxhZ3MgYXJlIGNvbmZp
Z3VyZWQgdG8gZXhwZWN0IGEgbGl0ZXJhbCBzdHJpbmcgZm9yCi0gICAgICAgIC8vIDo6c25wcmlu
dGYgYmVsb3cuIFNvLCB1c2UgYSAjZGVmaW5lIGZvciB0aGlzIG9uZSBjYXNlIHRvIGtlZXAgdGhl
Ci0gICAgICAgIC8vIGNvbXBpbGVyIGhhcHB5LgotI3VuZGVmIExJVEVSQUxfRk9STUFUCi0jZGVm
aW5lIExJVEVSQUxfRk9STUFUICInJSUlJScgICAgICAgICAgICAgICAgICAgICAgICAgPT0+ICcl
JSdcbiIKLSAgICAgICAgVk1JbnNwZWN0b3I6OnNucHJpbnRmKGFjdHVhbCwgc2l6ZSwgTElURVJB
TF9GT1JNQVQpOwotICAgICAgICA6OnNucHJpbnRmKGV4cGVjdGVkLCBzaXplLCBMSVRFUkFMX0ZP
Uk1BVCk7Ci0jdW5kZWYgTElURVJBTF9GT1JNQVQKLSAgICAgICAgQVNTRVJUX0VRKHN0cmNtcChh
Y3R1YWwsIGV4cGVjdGVkKSwgMCk7Ci0KLSAgICAgICAgbWVtc2V0KGFjdHVhbCwgJ3onLCBzaXpl
b2YoYWN0dWFsKSk7Ci0gICAgICAgIGZvcm1hdCA9ICInJSVjJywgJ3gnICAgICAgICAgICAgICAg
ICAgICA9PT4gJyVjJ1xuIjsKLSAgICAgICAgVk1JbnNwZWN0b3I6OnNucHJpbnRmKGFjdHVhbCwg
c2l6ZSwgZm9ybWF0LCAneCcpOwotICAgICAgICA6OnNucHJpbnRmKGV4cGVjdGVkLCBzaXplLCBm
b3JtYXQsICd4Jyk7Ci0gICAgICAgIEFTU0VSVF9FUShzdHJjbXAoYWN0dWFsLCBleHBlY3RlZCks
IDApOwotCi0gICAgICAgIG1lbXNldChhY3R1YWwsICd6Jywgc2l6ZW9mKGFjdHVhbCkpOwotICAg
ICAgICBmb3JtYXQgPSAiJyUlKmMnLCA4LCAneCcgICAgICAgICAgICAgICAgPT0+ICclKmMnXG4i
OwotICAgICAgICBWTUluc3BlY3Rvcjo6c25wcmludGYoYWN0dWFsLCBzaXplLCBmb3JtYXQsIDgs
ICd4Jyk7Ci0gICAgICAgIDo6c25wcmludGYoZXhwZWN0ZWQsIHNpemUsIGZvcm1hdCwgOCwgJ3gn
KTsKLSAgICAgICAgQVNTRVJUX0VRKHN0cmNtcChhY3R1YWwsIGV4cGVjdGVkKSwgMCk7Ci0KLSAg
ICAgICAgbWVtc2V0KGFjdHVhbCwgJ3onLCBzaXplb2YoYWN0dWFsKSk7Ci0gICAgICAgIGZvcm1h
dCA9ICInJSVzJywgXCJoZWxsbyB3b3JsZFwiICAgICAgICAgID09PiAnJXMnXG4iOwotICAgICAg
ICBWTUluc3BlY3Rvcjo6c25wcmludGYoYWN0dWFsLCBzaXplLCBmb3JtYXQsICJoZWxsbyB3b3Js
ZCIpOwotICAgICAgICA6OnNucHJpbnRmKGV4cGVjdGVkLCBzaXplLCBmb3JtYXQsICJoZWxsbyB3
b3JsZCIpOwotICAgICAgICBBU1NFUlRfRVEoc3RyY21wKGFjdHVhbCwgZXhwZWN0ZWQpLCAwKTsK
LQotICAgICAgICBtZW1zZXQoYWN0dWFsLCAneicsIHNpemVvZihhY3R1YWwpKTsKLSAgICAgICAg
Zm9ybWF0ID0gIiclJSpzJywgOCwgXCJoZWxsbyB3b3JsZFwiICAgICAgPT0+ICclKnMnXG4iOwot
ICAgICAgICBWTUluc3BlY3Rvcjo6c25wcmludGYoYWN0dWFsLCBzaXplLCBmb3JtYXQsIDgsICJo
ZWxsbyB3b3JsZCIpOwotICAgICAgICA6OnNucHJpbnRmKGV4cGVjdGVkLCBzaXplLCBmb3JtYXQs
IDgsICJoZWxsbyB3b3JsZCIpOwotICAgICAgICBBU1NFUlRfRVEoc3RyY21wKGFjdHVhbCwgZXhw
ZWN0ZWQpLCAwKTsKLQotICAgICAgICBtZW1zZXQoYWN0dWFsLCAneicsIHNpemVvZihhY3R1YWwp
KTsKLSAgICAgICAgZm9ybWF0ID0gIiclJSpzJywgOCwgXCJoZWxsb1wiICAgICAgICAgICAgPT0+
ICclKnMnXG4iOwotICAgICAgICBWTUluc3BlY3Rvcjo6c25wcmludGYoYWN0dWFsLCBzaXplLCBm
b3JtYXQsIDgsICJoZWxsbyIpOwotICAgICAgICA6OnNucHJpbnRmKGV4cGVjdGVkLCBzaXplLCBm
b3JtYXQsIDgsICJoZWxsbyIpOwotICAgICAgICBBU1NFUlRfRVEoc3RyY21wKGFjdHVhbCwgZXhw
ZWN0ZWQpLCAwKTsKLQotICAgICAgICBtZW1zZXQoYWN0dWFsLCAneicsIHNpemVvZihhY3R1YWwp
KTsKLSAgICAgICAgZm9ybWF0ID0gIiclJWQnLCA5ODc2NTQzMjEgICAgICAgICAgICAgID09PiAn
JWQnXG4iOwotICAgICAgICBWTUluc3BlY3Rvcjo6c25wcmludGYoYWN0dWFsLCBzaXplLCBmb3Jt
YXQsIDk4NzY1NDMyMSk7Ci0gICAgICAgIDo6c25wcmludGYoZXhwZWN0ZWQsIHNpemUsIGZvcm1h
dCwgOTg3NjU0MzIxKTsKLSAgICAgICAgQVNTRVJUX0VRKHN0cmNtcChhY3R1YWwsIGV4cGVjdGVk
KSwgMCk7Ci0KLSAgICAgICAgbWVtc2V0KGFjdHVhbCwgJ3onLCBzaXplb2YoYWN0dWFsKSk7Ci0g
ICAgICAgIGZvcm1hdCA9ICInJSV1JywgNDI3NjU0MzIxMHUgICAgICAgICAgICA9PT4gJyV1J1xu
IjsKLSAgICAgICAgVk1JbnNwZWN0b3I6OnNucHJpbnRmKGFjdHVhbCwgc2l6ZSwgZm9ybWF0LCA0
Mjc2NTQzMjEwdSk7Ci0gICAgICAgIDo6c25wcmludGYoZXhwZWN0ZWQsIHNpemUsIGZvcm1hdCwg
NDI3NjU0MzIxMHUpOwotICAgICAgICBBU1NFUlRfRVEoc3RyY21wKGFjdHVhbCwgZXhwZWN0ZWQp
LCAwKTsKLQotICAgICAgICBtZW1zZXQoYWN0dWFsLCAneicsIHNpemVvZihhY3R1YWwpKTsKLSAg
ICAgICAgZm9ybWF0ID0gIiclJXUnLCAweGZmZmZmZmZmICAgICAgICAgICAgID09PiAnJXUnXG4i
OwotICAgICAgICBWTUluc3BlY3Rvcjo6c25wcmludGYoYWN0dWFsLCBzaXplLCBmb3JtYXQsIDB4
ZmZmZmZmZmYpOwotICAgICAgICA6OnNucHJpbnRmKGV4cGVjdGVkLCBzaXplLCBmb3JtYXQsIDB4
ZmZmZmZmZmYpOwotICAgICAgICBBU1NFUlRfRVEoc3RyY21wKGFjdHVhbCwgZXhwZWN0ZWQpLCAw
KTsKLQotICAgICAgICBtZW1zZXQoYWN0dWFsLCAneicsIHNpemVvZihhY3R1YWwpKTsKLSAgICAg
ICAgZm9ybWF0ID0gIiclJXgnLCAweGZmZmZmZmZmICAgICAgICAgICAgID09PiAnJXgnXG4iOwot
ICAgICAgICBWTUluc3BlY3Rvcjo6c25wcmludGYoYWN0dWFsLCBzaXplLCBmb3JtYXQsIDB4ZmZm
ZmZmZmYpOwotICAgICAgICA6OnNucHJpbnRmKGV4cGVjdGVkLCBzaXplLCBmb3JtYXQsIDB4ZmZm
ZmZmZmYpOwotICAgICAgICBBU1NFUlRfRVEoc3RyY21wKGFjdHVhbCwgZXhwZWN0ZWQpLCAwKTsK
LQotICAgICAgICBtZW1zZXQoYWN0dWFsLCAneicsIHNpemVvZihhY3R1YWwpKTsKLSAgICAgICAg
Zm9ybWF0ID0gIiclJXAnLCAodm9pZCopMHhhYmNkYmFiZSAgICAgID09PiAnJXAnXG4iOwotICAg
ICAgICBWTUluc3BlY3Rvcjo6c25wcmludGYoYWN0dWFsLCBzaXplLCBmb3JtYXQsICh2b2lkKikw
eGFiY2RiYWJlKTsKLSAgICAgICAgOjpzbnByaW50ZihleHBlY3RlZCwgc2l6ZSwgZm9ybWF0LCAo
dm9pZCopMHhhYmNkYmFiZSk7Ci0gICAgICAgIEFTU0VSVF9FUShzdHJjbXAoYWN0dWFsLCBleHBl
Y3RlZCksIDApOwotCi0gICAgICAgIG1lbXNldChhY3R1YWwsICd6Jywgc2l6ZW9mKGFjdHVhbCkp
OwotICAgICAgICBmb3JtYXQgPSAiJyUlbHUnLCAxMjM0NTY3ODkwOTg3NjU0MzIxdWwgPT0+ICcl
bHUnXG4iOwotICAgICAgICBWTUluc3BlY3Rvcjo6c25wcmludGYoYWN0dWFsLCBzaXplLCBmb3Jt
YXQsIDEyMzQ1Njc4OTA5ODc2NTQzMjF1bCk7Ci0gICAgICAgIDo6c25wcmludGYoZXhwZWN0ZWQs
IHNpemUsIGZvcm1hdCwgMTIzNDU2Nzg5MDk4NzY1NDMyMXVsKTsKLSAgICAgICAgQVNTRVJUX0VR
KHN0cmNtcChhY3R1YWwsIGV4cGVjdGVkKSwgMCk7Ci0KLSAgICAgICAgbWVtc2V0KGFjdHVhbCwg
J3onLCBzaXplb2YoYWN0dWFsKSk7Ci0gICAgICAgIGZvcm1hdCA9ICInJSVmJywgMTIzNC41Njcg
ICAgICAgICAgICAgICA9PT4gJyVmJ1xuIjsKLSAgICAgICAgVk1JbnNwZWN0b3I6OnNucHJpbnRm
KGFjdHVhbCwgc2l6ZSwgZm9ybWF0LCAxMjM0LjU2Nyk7Ci0gICAgICAgIDo6c25wcmludGYoZXhw
ZWN0ZWQsIHNpemUsIGZvcm1hdCwgMTIzNC41NjcpOwotICAgICAgICBBU1NFUlRfRVEoc3RyY21w
KGFjdHVhbCwgZXhwZWN0ZWQpLCAwKTsKLQotICAgICAgICBtZW1zZXQoYWN0dWFsLCAneicsIHNp
emVvZihhY3R1YWwpKTsKLSAgICAgICAgZm9ybWF0ID0gIiclJS4yZicsIDEyMzQuNTY3ICAgICAg
ICAgICAgID09PiAnJS4yZidcbiI7Ci0gICAgICAgIFZNSW5zcGVjdG9yOjpzbnByaW50ZihhY3R1
YWwsIHNpemUsIGZvcm1hdCwgMTIzNC41NjcpOwotICAgICAgICA6OnNucHJpbnRmKGV4cGVjdGVk
LCBzaXplLCBmb3JtYXQsIDEyMzQuNTY3KTsKLSAgICAgICAgQVNTRVJUX0VRKHN0cmNtcChhY3R1
YWwsIGV4cGVjdGVkKSwgMCk7Ci0KLSAgICAgICAgbWVtc2V0KGFjdHVhbCwgJ3onLCBzaXplb2Yo
YWN0dWFsKSk7Ci0gICAgICAgIGZvcm1hdCA9ICInJSUxMC4yZicsIDEyMzQuNTY3ICAgICAgICAg
ICA9PT4gJyUxMC4yZidcbiI7Ci0gICAgICAgIFZNSW5zcGVjdG9yOjpzbnByaW50ZihhY3R1YWws
IHNpemUsIGZvcm1hdCwgMTIzNC41NjcpOwotICAgICAgICA6OnNucHJpbnRmKGV4cGVjdGVkLCBz
aXplLCBmb3JtYXQsIDEyMzQuNTY3KTsKLSAgICAgICAgQVNTRVJUX0VRKHN0cmNtcChhY3R1YWws
IGV4cGVjdGVkKSwgMCk7Ci0KLSAgICAgICAgbWVtc2V0KGFjdHVhbCwgJ3onLCBzaXplb2YoYWN0
dWFsKSk7Ci0gICAgICAgIGZvcm1hdCA9ICInJSUwMTAuMmYnLCAxMjM0LjU2NyAgICAgICAgICA9
PT4gJyUwMTAuMmYnXG4iOwotICAgICAgICBWTUluc3BlY3Rvcjo6c25wcmludGYoYWN0dWFsLCBz
aXplLCBmb3JtYXQsIDEyMzQuNTY3KTsKLSAgICAgICAgOjpzbnByaW50ZihleHBlY3RlZCwgc2l6
ZSwgZm9ybWF0LCAxMjM0LjU2Nyk7Ci0gICAgICAgIEFTU0VSVF9FUShzdHJjbXAoYWN0dWFsLCBl
eHBlY3RlZCksIDApOwotCi0gICAgICAgIC8vIEJhZCAvIHdlaXJkIGZvcm1hdHM6Ci0gICAgICAg
IG1lbXNldChhY3R1YWwsICd6Jywgc2l6ZW9mKGFjdHVhbCkpOwotICAgICAgICBmb3JtYXQgPSAi
JyUlNS40JywgOTg3NjU0MzIxICAgICAgICAgICAgPT0+ICclNS40J1xuIjsKLSAgICAgICAgVk1J
bnNwZWN0b3I6OnNucHJpbnRmKGFjdHVhbCwgc2l6ZSwgZm9ybWF0LCA5ODc2NTQzMjEpOwotICAg
ICAgICBleHBlY3RlZExpdGVyYWwgPSAiJyU1LjQnLCA5ODc2NTQzMjEgICAgICAgICAgICA9PT4g
J0VSUk9SIEAgXCIlNS40JyBcIlxuIjsKLSAgICAgICAgOjpzbnByaW50ZihleHBlY3RlZCwgc2l6
ZSwgIiVzIiwgZXhwZWN0ZWRMaXRlcmFsKTsKLSAgICAgICAgQVNTRVJUX0VRKHN0cmNtcChhY3R1
YWwsIGV4cGVjdGVkKSwgMCk7Ci0KLSAgICAgICAgbWVtc2V0KGFjdHVhbCwgJ3onLCBzaXplb2Yo
YWN0dWFsKSk7Ci0gICAgICAgIGZvcm1hdCA9ICInJSU1LjQnICclJWQnLCA5ODc2NTQzMjEsIDQg
ICAgPT0+ICclNS40JyAnJWQnXG4iOwotICAgICAgICBWTUluc3BlY3Rvcjo6c25wcmludGYoYWN0
dWFsLCBzaXplLCBmb3JtYXQsIDk4NzY1NDMyMSwgNCk7Ci0gICAgICAgIDo6c25wcmludGYoZXhw
ZWN0ZWQsIHNpemUsIGZvcm1hdCwgOTg3NjU0MzIxLCA0KTsKLSAgICAgICAgQVNTRVJUX0VRKHN0
cmNtcChhY3R1YWwsIGV4cGVjdGVkKSwgMCk7Ci0KLSAgICAgICAgbWVtc2V0KGFjdHVhbCwgJ3on
LCBzaXplb2YoYWN0dWFsKSk7Ci0gICAgICAgIGZvcm1hdCA9ICInJSV3JyAnJSVkJywgOTg3NjU0
MzIxLCA2ICAgICAgPT0+ICcldycgJyVkJ1xuIjsKLSAgICAgICAgVk1JbnNwZWN0b3I6OnNucHJp
bnRmKGFjdHVhbCwgc2l6ZSwgZm9ybWF0LCA5ODc2NTQzMjEsIDYpOwotICAgICAgICA6OnNucHJp
bnRmKGV4cGVjdGVkLCBzaXplLCBmb3JtYXQsIDk4NzY1NDMyMSwgNik7Ci0gICAgICAgIEFTU0VS
VF9FUShzdHJjbXAoYWN0dWFsLCBleHBlY3RlZCksIDApOwotCi0KLSAgICAgICAgLy8gVGVzdGlu
ZyB0aGUgJWIgZXh0ZW5zaW9uOgotICAgICAgICBtZW1zZXQoYWN0dWFsLCAneicsIHNpemVvZihh
Y3R1YWwpKTsKLSAgICAgICAgVk1JbnNwZWN0b3I6OnNucHJpbnRmKGFjdHVhbCwgc2l6ZSwgIicl
JWInLCAwICAgICAgICAgID09PiAnJWInXG4iLCAwKTsKLSAgICAgICAgZXhwZWN0ZWRMaXRlcmFs
ID0gIiclYicsIDAgICAgICAgICAgPT0+ICdGQUxTRSdcbiI7Ci0gICAgICAgIDo6c25wcmludGYo
ZXhwZWN0ZWQsIHNpemUsICIlcyIsIGV4cGVjdGVkTGl0ZXJhbCk7Ci0gICAgICAgIEFTU0VSVF9F
UShzdHJjbXAoYWN0dWFsLCBleHBlY3RlZCksIDApOwotCi0gICAgICAgIG1lbXNldChhY3R1YWws
ICd6Jywgc2l6ZW9mKGFjdHVhbCkpOwotICAgICAgICBWTUluc3BlY3Rvcjo6c25wcmludGYoYWN0
dWFsLCBzaXplLCAiJyUlYicsIDEgICAgICAgICAgPT0+ICclYidcbiIsIDEpOwotICAgICAgICBl
eHBlY3RlZExpdGVyYWwgPSAiJyViJywgMSAgICAgICAgICA9PT4gJ1RSVUUnXG4iOwotICAgICAg
ICA6OnNucHJpbnRmKGV4cGVjdGVkLCBzaXplLCAiJXMiLCBleHBlY3RlZExpdGVyYWwpOwotICAg
ICAgICBBU1NFUlRfRVEoc3RyY21wKGFjdHVhbCwgZXhwZWN0ZWQpLCAwKTsKLQotICAgICAgICBt
ZW1zZXQoYWN0dWFsLCAneicsIHNpemVvZihhY3R1YWwpKTsKLSAgICAgICAgVk1JbnNwZWN0b3I6
OnNucHJpbnRmKGFjdHVhbCwgc2l6ZSwgIiclJWInLCAtMTIzNDU2Nzg5ID09PiAnJWInXG4iLCAt
MTIzNDU2Nzg5KTsKLSAgICAgICAgZXhwZWN0ZWRMaXRlcmFsID0gIiclYicsIC0xMjM0NTY3ODkg
PT0+ICdUUlVFJ1xuIjsKLSAgICAgICAgOjpzbnByaW50ZihleHBlY3RlZCwgc2l6ZSwgIiVzIiwg
ZXhwZWN0ZWRMaXRlcmFsKTsKLSAgICAgICAgQVNTRVJUX0VRKHN0cmNtcChhY3R1YWwsIGV4cGVj
dGVkKSwgMCk7Ci0KLSAgICAgICAgbWVtc2V0KGFjdHVhbCwgJ3onLCBzaXplb2YoYWN0dWFsKSk7
Ci0gICAgICAgIFZNSW5zcGVjdG9yOjpzbnByaW50ZihhY3R1YWwsIHNpemUsICInJSViJywgMTIz
NDU2Nzg5ICA9PT4gJyViJ1xuIiwgMTIzNDU2Nzg5KTsKLSAgICAgICAgZXhwZWN0ZWRMaXRlcmFs
ID0gIiclYicsIDEyMzQ1Njc4OSAgPT0+ICdUUlVFJ1xuIjsKLSAgICAgICAgOjpzbnByaW50Zihl
eHBlY3RlZCwgc2l6ZSwgIiVzIiwgZXhwZWN0ZWRMaXRlcmFsKTsKLSAgICAgICAgQVNTRVJUX0VR
KHN0cmNtcChhY3R1YWwsIGV4cGVjdGVkKSwgMCk7Ci0KLSAgICAgICAgLy8gVGVzdGluZyB0aGUg
JUo8eD4gZXh0ZW5zaW9uczoKLSAgICAgICAgU3RyaW5nIHN0cjEoIlRlc3QgV1RGIFN0cmluZyIp
OwotICAgICAgICBTdHJpbmcgc3RyMigiIik7Ci0KLSAgICAgICAgbWVtc2V0KGFjdHVhbCwgJ3on
LCBzaXplb2YoYWN0dWFsKSk7Ci0gICAgICAgIFZNSW5zcGVjdG9yOjpzbnByaW50ZihhY3R1YWws
IHNpemUsICInJSVKcycgaXMgJSVzLCAmc3RyMSwgc3RyMS5pc0VtcHR5KCk/XCJFTVBUWVwiOlwi
Tk9UIEVNUFRZXCIgID09PiAnJUpzJyBpcyAlc1xuIiwKLSAgICAgICAgICAgICZzdHIxLCBzdHIx
LmlzRW1wdHkoKSA/ICJFTVBUWSIgOiAiTk9UIEVNUFRZIik7Ci0gICAgICAgIGV4cGVjdGVkTGl0
ZXJhbCA9ICInJUpzJyBpcyAlcywgJnN0cjEsIHN0cjEuaXNFbXB0eSgpP1wiRU1QVFlcIjpcIk5P
VCBFTVBUWVwiICA9PT4gJ1Rlc3QgV1RGIFN0cmluZycgaXMgTk9UIEVNUFRZXG4iOwotICAgICAg
ICA6OnNucHJpbnRmKGV4cGVjdGVkLCBzaXplLCAiJXMiLCBleHBlY3RlZExpdGVyYWwpOwotICAg
ICAgICBBU1NFUlRfRVEoc3RyY21wKGFjdHVhbCwgZXhwZWN0ZWQpLCAwKTsKLQotICAgICAgICBt
ZW1zZXQoYWN0dWFsLCAneicsIHNpemVvZihhY3R1YWwpKTsKLSAgICAgICAgVk1JbnNwZWN0b3I6
OnNucHJpbnRmKGFjdHVhbCwgc2l6ZSwgIiclJUpzJyBpcyAlJXMsICZzdHIyLCBzdHIyLmlzRW1w
dHkoKT9cIkVNUFRZXCI6XCJOT1QgRU1QVFlcIiAgPT0+ICclSnMnIGlzICVzXG4iLAotICAgICAg
ICAgICAgJnN0cjIsIHN0cjIuaXNFbXB0eSgpID8gIkVNUFRZIiA6ICJOT1QgRU1QVFkiKTsKLSAg
ICAgICAgZXhwZWN0ZWRMaXRlcmFsID0gIiclSnMnIGlzICVzLCAmc3RyMiwgc3RyMi5pc0VtcHR5
KCk/XCJFTVBUWVwiOlwiTk9UIEVNUFRZXCIgID09PiAnJyBpcyBFTVBUWVxuIjsKLSAgICAgICAg
OjpzbnByaW50ZihleHBlY3RlZCwgc2l6ZSwgIiVzIiwgZXhwZWN0ZWRMaXRlcmFsKTsKLSAgICAg
ICAgQVNTRVJUX0VRKHN0cmNtcChhY3R1YWwsIGV4cGVjdGVkKSwgMCk7Ci0KLSAgICAgICAgbWVt
c2V0KGFjdHVhbCwgJ3onLCBzaXplb2YoYWN0dWFsKSk7Ci0gICAgICAgIFZNSW5zcGVjdG9yOjpz
bnByaW50ZihhY3R1YWwsIHNpemUsICInJSVKK3MnIGlzICUlcywgJnN0cjEsIHN0cjEuaXNFbXB0
eSgpP1wiRU1QVFlcIjpcIk5PVCBFTVBUWVwiID09PiAnJUorcycgaXMgJXNcbiIsCi0gICAgICAg
ICAgICAmc3RyMSwgc3RyMS5pc0VtcHR5KCkgPyAiRU1QVFkiIDogIk5PVCBFTVBUWSIpOwotICAg
ICAgICBleHBlY3RlZExpdGVyYWwgPSAiJyVKK3MnIGlzICVzLCAmc3RyMSwgc3RyMS5pc0VtcHR5
KCk/XCJFTVBUWVwiOlwiTk9UIEVNUFRZXCIgPT0+ICdXVEY6OlN0cmluZyBcIlRlc3QgV1RGIFN0
cmluZ1wiJyBpcyBOT1QgRU1QVFlcbiI7Ci0gICAgICAgIDo6c25wcmludGYoZXhwZWN0ZWQsIHNp
emUsICIlcyIsIGV4cGVjdGVkTGl0ZXJhbCk7Ci0gICAgICAgIEFTU0VSVF9FUShzdHJjbXAoYWN0
dWFsLCBleHBlY3RlZCksIDApOwotCi0gICAgICAgIG1lbXNldChhY3R1YWwsICd6Jywgc2l6ZW9m
KGFjdHVhbCkpOwotICAgICAgICBWTUluc3BlY3Rvcjo6c25wcmludGYoYWN0dWFsLCBzaXplLCAi
JyUlSitzJyBpcyAlJXMsICZzdHIyLCBzdHIyLmlzRW1wdHkoKT9cIkVNUFRZXCI6XCJOT1QgRU1Q
VFlcIiA9PT4gJyVKK3MnIGlzICVzXG4iLAotICAgICAgICAgICAgJnN0cjIsIHN0cjIuaXNFbXB0
eSgpID8gIkVNUFRZIiA6ICJOT1QgRU1QVFkiKTsKLSAgICAgICAgZXhwZWN0ZWRMaXRlcmFsID0g
IiclSitzJyBpcyAlcywgJnN0cjIsIHN0cjIuaXNFbXB0eSgpP1wiRU1QVFlcIjpcIk5PVCBFTVBU
WVwiID09PiAnV1RGOjpTdHJpbmcgXCJcIicgaXMgRU1QVFlcbiI7Ci0gICAgICAgIDo6c25wcmlu
dGYoZXhwZWN0ZWQsIHNpemUsICIlcyIsIGV4cGVjdGVkTGl0ZXJhbCk7Ci0gICAgICAgIEFTU0VS
VF9FUShzdHJjbXAoYWN0dWFsLCBleHBlY3RlZCksIDApOwotCi0gICAgICAgIC8vIFRlc3QgbG93
ZXIgc2l6ZXMgbW9yZSBkZW5zZWx5LCBhbmQgdGhlbiBzcGFjZSBvdXQgdG8gbGFyZ2VyIHNpemVz
LgotICAgICAgICAvLyBXZSdyZSBkb2luZyB0aGlzIGJlY2F1c2UgdGhlIGxvd2VyIHNpemVzIG1p
Z2h0IGJlIGludGVyZXN0aW5nLCBidXQKLSAgICAgICAgLy8gZm9yIGV4cGVkaWVuY3ksIHdlIGRv
bid0IHdhbnQgdG8gdGVzdCBhdCB0aGlzIGZpbmUgZ3JhaW4gcmVzb2x1dGlvbgotICAgICAgICAv
LyBmb3IgYWxsIHBvc3NpYmxlIHNpemVzLiBIZW5jZSwgd2UgYWNjZWxlcmF0ZSB0aGUgcmF0ZSBv
bmNlIHdlJ3JlCi0gICAgICAgIC8vIHBhc3MgdGhlIGludGVyZXN0aW5nIHNtYWxsIHNpemVzLgot
ICAgICAgICBpZiAoc2l6ZSA8PSA1KQotICAgICAgICAgICAgc2l6ZSsrOwotICAgICAgICBlbHNl
Ci0gICAgICAgICAgICBzaXplICs9IDQ7Ci0gICAgfQotI2VuZGlmCi19Cg==
</data>
<flag name="review"
          id="275676"
          type_id="1"
          status="+"
          setter="msaboff"
    />
          </attachment>
      

    </bug>

</bugzilla>